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
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&);
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 // member functions
69 // NOLINTBEGIN
70 MCAPI BlockTraitFactory();
71
72 MCAPI ::std::unique_ptr<::BlockTrait::ITrait>
73 createTrait(::std::string const& name, ::cereal::ReflectionCtx const& ctx) const;
74
75 MCAPI ~BlockTraitFactory();
76 // NOLINTEND
77
78public:
79 // static functions
80 // NOLINTBEGIN
81 MCAPI static ::BlockTraitFactory* contextInstanceIfAvailable(::cereal::ReflectionCtx const& ctx);
82
83 MCAPI static void registerAllTraits(::cereal::ReflectionCtx& ctx);
84
85 MCAPI static ::BlockTraitFactory& setupContextInstanceIfRequired(::cereal::ReflectionCtx& ctx);
86 // NOLINTEND
87
88public:
89 // constructor thunks
90 // NOLINTBEGIN
91 MCAPI void* $ctor();
92 // NOLINTEND
93
94public:
95 // destructor thunk
96 // NOLINTBEGIN
97 MCAPI void $dtor();
98 // NOLINTEND
99};
Definition BlockTraitFactory.h:16
Definition Factory.h:6
Definition PackLoadRequirement.h:13
Definition BlockTraitFactory.h:24
Definition ReflectionCtx.h:11
Definition ctx.h:5