LeviLamina
Loading...
Searching...
No Matches
CerealItemComponentFactory.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/platform/string/util/string_hash.h"
8#include "mc/resources/JsonBetaState.h"
9#include "mc/util/CerealSchemaUpgradeSet.h"
10
11// auto generated forward declare list
12// clang-format off
14class Experiments;
15class ItemComponent;
16class PackLoadContext;
18namespace cereal { struct ReflectionCtx; }
19// clang-format on
20
21class CerealItemComponentFactory {
22public:
23 // CerealItemComponentFactory inner types declare
24 // clang-format off
25 struct ComponentMetadata;
26 // clang-format on
27
28 // CerealItemComponentFactory inner types define
29 struct ComponentMetadata {
30 public:
31 // ComponentMetadata inner types define
32 using Ctor = ::std::unique_ptr<::ItemComponent> (*)();
33
34 using ParseFunction = ::std::function<bool(::Experiments const&, ::SemVersion const&)>;
35
36 public:
37 // member variables
38 // NOLINTBEGIN
39 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ItemComponent> (*)()> makeUnique;
40 ::ll::TypedStorage<8, 24, ::std::vector<::PackLoadRequirement>> requirements;
41 ::ll::TypedStorage<8, 32, ::std::optional<::SemVersion>> releasedMinFormatVersion;
42 ::ll::TypedStorage<8, 32, ::std::optional<::SemVersion>> deprecatedVersion;
43 ::ll::TypedStorage<8, 24, ::CerealSchemaUpgradeSet> versionUpgrades;
44 ::ll::TypedStorage<8, 64, ::std::function<bool(::Experiments const&, ::SemVersion const&)>> onParseCallback;
45 // NOLINTEND
46
47 public:
48 // prevent constructor by default
49 ComponentMetadata();
50
51 public:
52 // member functions
53 // NOLINTBEGIN
54 MCAPI ComponentMetadata(::CerealItemComponentFactory::ComponentMetadata const&);
55
56 MCAPI ::CerealItemComponentFactory::ComponentMetadata&
58
59 MCAPI ::CerealItemComponentFactory::ComponentMetadata&
61
62 MCAPI ~ComponentMetadata();
63 // NOLINTEND
64
65 public:
66 // constructor thunks
67 // NOLINTBEGIN
69 // NOLINTEND
70
71 public:
72 // destructor thunk
73 // NOLINTBEGIN
74 MCAPI void $dtor();
75 // NOLINTEND
76 };
77
78public:
79 // member variables
80 // NOLINTBEGIN
81 ::ll::TypedStorage<
82 8,
83 64,
84 ::std::unordered_map<
85 ::std::string,
88 ::std::equal_to<void>>>
89 mRegisteredComponents;
90 ::ll::TypedStorage<8, 24, ::SemVersion> mReleasedMinFormatVersionForAnyComponent;
91 // NOLINTEND
92
93public:
94 // prevent constructor by default
95 CerealItemComponentFactory& operator=(CerealItemComponentFactory const&);
96 CerealItemComponentFactory(CerealItemComponentFactory const&);
97 CerealItemComponentFactory();
98
99public:
100 // member functions
101 // NOLINTBEGIN
102 MCAPI ::CerealItemComponentFactory& operator=(::CerealItemComponentFactory&&);
103 // NOLINTEND
104
105public:
106 // static functions
107 // NOLINTBEGIN
108 MCAPI static void
109 addAllComponentUpgrades(::CerealDocumentUpgrader& documentUpgrader, ::cereal::ReflectionCtx const& ctx);
110
111 MCAPI static void addComponentMetadata(
113 ::std::string const& componentName,
115 ::std::optional<::SemVersion> releasedMinFormatVersion
116 );
117
118 MCAPI static ::std::shared_ptr<::ItemComponent>
119 constructItemComponent(::std::string const& name, ::cereal::ReflectionCtx const& ctx);
120
121 MCAPI static void deprecateComponentStartingFromVersion(
122 ::std::string const& name,
123 ::SemVersion deprecatedVersion,
125 );
126
127 MCAPI static ::std::optional<::SemVersion>
128 getReleasedMinFormatVersionForAnyComponent(::cereal::ReflectionCtx const& ctx);
129
130 MCAPI static bool isComponentBasedItemSchema(
131 ::SemVersion const& formatVersion,
132 ::rapidjson::GenericValue<
133 ::rapidjson::UTF8<char>,
134 ::rapidjson::MemoryPoolAllocator<::rapidjson::CrtAllocator>> const& itemData,
136 );
137
138 MCAPI static ::CerealItemComponentFactory& setupContextInstanceIfRequired(::cereal::ReflectionCtx& ctx);
139
140 MCAPI static void
141 updateReleasedMinFormatVersionForAnyComponentIfLower(::CerealItemComponentFactory& instance, ::SemVersion version);
142
143 MCAPI static bool validateCerealComponent(
144 ::std::string const& componentName,
145 ::SemVersion const& documentVersion,
146 ::PackLoadContext const& packLoadContext,
148 bool forBetaParsing,
149 ::JsonBetaState canUseBeta
150 );
151 // NOLINTEND
152};
Definition CerealDocumentUpgrader.h:13
Definition Experiments.h:14
Definition ItemComponent.h:17
Definition PackLoadContext.h:20
Definition PackLoadRequirement.h:13
Definition SemVersion.h:15
Definition CerealItemComponentFactory.h:29
Definition string_hash.h:7
Definition ReflectionCtx.h:11
Definition ctx.h:5