LeviLamina
Loading...
Searching...
No Matches
BlockTraitFactory.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/core/sem_ver/SemVersion.h"
7#include "mc/util/Factory.h"
8
9// auto generated forward declare list
10// clang-format off
12namespace BlockTrait { class ITrait; }
13namespace cereal { struct ReflectionCtx; }
14// clang-format on
15
16class BlockTraitFactory : public ::Factory<::BlockTrait::ITrait> {
17public:
18 // BlockTraitFactory inner types declare
19 // clang-format off
20 struct TraitMetadata;
21 // clang-format on
22
23 // BlockTraitFactory inner types define
24 struct TraitMetadata {
25 public:
26 // TraitMetadata inner types define
27 using Ctor = ::std::unique_ptr<::BlockTrait::ITrait> (*)();
28
29 public:
30 // member variables
31 // NOLINTBEGIN
32 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::BlockTrait::ITrait> (*)()> makeUnique;
33 ::ll::TypedStorage<8, 24, ::std::vector<::PackLoadRequirement>> requirements;
34 ::ll::TypedStorage<8, 32, ::std::optional<::SemVersion>> releasedMinFormatVersion;
35 // NOLINTEND
36
37 public:
38 // prevent constructor by default
39 TraitMetadata& operator=(TraitMetadata const&);
40 TraitMetadata(TraitMetadata const&);
41 TraitMetadata();
42
43 public:
44 // member functions
45 // NOLINTBEGIN
46 MCAPI ::BlockTraitFactory::TraitMetadata& operator=(::BlockTraitFactory::TraitMetadata&&);
47
48 MCAPI ~TraitMetadata();
49 // NOLINTEND
50
51 public:
52 // destructor thunk
53 // NOLINTBEGIN
54 MCAPI void $dtor();
55 // NOLINTEND
56 };
57
58 using RegisteredTraitsMap = ::std::unordered_map<::std::string, ::BlockTraitFactory::TraitMetadata>;
59
60public:
61 // member variables
62 // NOLINTBEGIN
63 ::ll::TypedStorage<8, 64, ::std::unordered_map<::std::string, ::BlockTraitFactory::TraitMetadata>>
64 mRegisteredTraits;
65 // NOLINTEND
66
67public:
68 // prevent constructor by default
69 BlockTraitFactory& operator=(BlockTraitFactory const&);
70 BlockTraitFactory(BlockTraitFactory const&);
71
72public:
73 // member functions
74 // NOLINTBEGIN
75 MCAPI BlockTraitFactory();
76
77 MCAPI ::std::unique_ptr<::BlockTrait::ITrait>
78 createTrait(::std::string const& name, ::cereal::ReflectionCtx const& ctx) const;
79
80 MCAPI ::BlockTraitFactory& operator=(::BlockTraitFactory&&);
81
82 MCAPI ~BlockTraitFactory();
83 // NOLINTEND
84
85public:
86 // static functions
87 // NOLINTBEGIN
88 MCAPI static ::BlockTraitFactory* contextInstanceIfAvailable(::cereal::ReflectionCtx const& ctx);
89
90 MCAPI static void registerAllTraits(::cereal::ReflectionCtx& ctx);
91
92 MCAPI static ::BlockTraitFactory& setupContextInstanceIfRequired(::cereal::ReflectionCtx& ctx);
93 // NOLINTEND
94
95public:
96 // constructor thunks
97 // NOLINTBEGIN
98 MCAPI void* $ctor();
99 // NOLINTEND
100
101public:
102 // destructor thunk
103 // NOLINTBEGIN
104 MCAPI void $dtor();
105 // NOLINTEND
106};
Definition ITrait.h:14
Definition Factory.h:6
Definition PackLoadRequirement.h:13
Definition BlockTraitFactory.h:24
Definition ReflectionCtx.h:11
Definition ctx.h:5