LeviLamina
Loading...
Searching...
No Matches
BlockComponentFactory.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/resources/IPackLoadScoped.h"
8#include "mc/util/CerealSchemaUpgradeSet.h"
9#include "mc/util/Factory.h"
10#include "mc/util/json_util/JsonSchemaObjectNode.h"
11
12// auto generated forward declare list
13// clang-format off
16class Experiments;
17class PackLoadContext;
21namespace Json { class Value; }
22namespace JsonUtil { class EmptyClass; }
23namespace cereal { struct ReflectionCtx; }
24// clang-format on
25
26class BlockComponentFactory : public ::IPackLoadScoped, public ::Factory<::BlockComponentDescription> {
27public:
28 // BlockComponentFactory inner types declare
29 // clang-format off
30 struct ComponentMetadata;
31 // clang-format on
32
33 // BlockComponentFactory inner types define
34 struct ComponentMetadata {
35 public:
36 // ComponentMetadata inner types define
37 using Ctor = ::std::unique_ptr<::BlockComponentDescription> (*)();
38
39 using ParseFunction =
40 ::std::function<bool(::Experiments const&, ::Json::Value const&, ::SemVersion const&, bool)>;
41
42 public:
43 // member variables
44 // NOLINTBEGIN
45 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::BlockComponentDescription> (*)()> makeUnique;
46 ::ll::TypedStorage<8, 24, ::std::vector<::PackLoadRequirement>> requirements;
47 ::ll::TypedStorage<8, 32, ::std::optional<::SemVersion>> releasedMinFormatVersion;
48 ::ll::TypedStorage<8, 24, ::CerealSchemaUpgradeSet> versionUpgrades;
49 ::ll::TypedStorage<
50 8,
51 64,
52 ::std::function<bool(::Experiments const&, ::Json::Value const&, ::SemVersion const&, bool)>>
53 onParseCallback;
54 ::ll::TypedStorage<1, 1, bool> mIsCustomComponent;
55 // NOLINTEND
56
57 public:
58 // prevent constructor by default
59 ComponentMetadata& operator=(ComponentMetadata const&);
60 ComponentMetadata(ComponentMetadata const&);
61 ComponentMetadata();
62
63 public:
64 // member functions
65 // NOLINTBEGIN
66 MCAPI ::BlockComponentFactory::ComponentMetadata& operator=(::BlockComponentFactory::ComponentMetadata&&);
67
68 MCAPI ~ComponentMetadata();
69 // NOLINTEND
70
71 public:
72 // destructor thunk
73 // NOLINTBEGIN
74 MCAPI void $dtor();
75 // NOLINTEND
76 };
77
78 using CerealComponentsMap = ::std::unordered_map<::std::string, ::BlockComponentFactory::ComponentMetadata>;
79
80public:
81 // member variables
82 // NOLINTBEGIN
83 ::ll::TypedStorage<
84 8,
85 16,
86 ::std::shared_ptr<::JsonUtil::JsonSchemaObjectNode<::JsonUtil::EmptyClass, ::BlockComponentGroupDescription>>>
87 mBlockComponentsSchema;
88 // NOLINTEND
89
90public:
91 // prevent constructor by default
92 BlockComponentFactory(BlockComponentFactory const&);
93 BlockComponentFactory();
94
95public:
96 // virtual functions
97 // NOLINTBEGIN
98 virtual ~BlockComponentFactory() /*override*/;
99 // NOLINTEND
100
101public:
102 // member functions
103 // NOLINTBEGIN
104 MCAPI explicit BlockComponentFactory(::PackLoadContext const* packLoadContext);
105
106 MCAPI void _buildBlockComponentsSchema();
107
108 MCAPI void _registerLegacyDescriptions(::PackLoadContext const* packLoadContext);
109
110 MCAPI ::std::unique_ptr<::BlockComponentDescription>
111 createDescription(::std::string const& name, ::cereal::ReflectionCtx const& ctx) const;
112
113 MCFOLD ::std::shared_ptr<
115 getSchema() const;
116
117 MCAPI ::BlockComponentFactory& operator=(::BlockComponentFactory const&);
118 // NOLINTEND
119
120public:
121 // static functions
122 // NOLINTBEGIN
123 MCAPI static void
124 addAllComponentUpgrades(::CerealDocumentUpgrader& documentUpgrader, ::cereal::ReflectionCtx const& ctx);
125
126 MCAPI static void addComponentMetadata(
128 ::std::string const& componentName,
130 );
131
132 MCAPI static void registerAllCerealDescriptions(::cereal::ReflectionCtx& ctx);
133
134 MCAPI static void registerComponentUpgrade(
135 ::CerealDocumentUpgrader& documentUpgrader,
136 ::std::shared_ptr<::CerealSchemaUpgrade> upgrade
137 );
138
139 MCAPI static ::std::unordered_map<::std::string, ::BlockComponentFactory::ComponentMetadata> const*
140 registeredCerealComponents(::cereal::ReflectionCtx const& ctx);
141
142 MCAPI static ::std::unordered_map<::std::string, ::BlockComponentFactory::ComponentMetadata>&
143 setupContextInstanceIfRequired(::cereal::ReflectionCtx& ctx);
144 // NOLINTEND
145
146public:
147 // constructor thunks
148 // NOLINTBEGIN
149 MCAPI void* $ctor(::PackLoadContext const* packLoadContext);
150 // NOLINTEND
151
152public:
153 // destructor thunk
154 // NOLINTBEGIN
155 MCAPI void $dtor();
156 // NOLINTEND
157
158public:
159 // vftables
160 // NOLINTBEGIN
161 MCNAPI static void** $vftable();
162 // NOLINTEND
163};
static MCAPI void ** $vftable()
Definition CerealDocumentUpgrader.h:13
Definition CerealSchemaUpgrade.h:10
Definition Experiments.h:14
Definition Factory.h:6
Definition EmptyClass.h:7
Definition JsonSchemaObjectNode.h:8
Definition Value.h:16
Definition PackLoadContext.h:20
Definition PackLoadRequirement.h:13
Definition SemVersion.h:15
Definition BlockComponentDescription.h:20
Definition BlockComponentFactory.h:34
Definition BlockComponentGroupDescription.h:13
Definition IPackLoadScoped.h:5
Definition ReflectionCtx.h:11
Definition ctx.h:5