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/util/CerealSchemaUpgradeSet.h"
9
10// auto generated forward declare list
11// clang-format off
12class Experiments;
13class ItemComponent;
15struct PackLoadInfo;
16namespace cereal { struct ReflectionCtx; }
17// clang-format on
18
20public:
21 // CerealItemComponentFactory inner types declare
22 // clang-format off
23 struct ComponentMetadata;
24 // clang-format on
25
26 // CerealItemComponentFactory inner types define
27 struct ComponentMetadata {
28 public:
29 // ComponentMetadata inner types define
30 using Ctor = ::std::unique_ptr<::ItemComponent> (*)();
31
32 using ParseFunction = ::std::function<bool(::Experiments const&, ::SemVersion const&)>;
33
34 public:
35 // member variables
36 // NOLINTBEGIN
37 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ItemComponent> (*)()> makeUnique;
38 ::ll::TypedStorage<8, 24, ::std::vector<::PackLoadRequirement>> requirements;
39 ::ll::TypedStorage<8, 32, ::std::optional<::SemVersion>> releasedMinFormatVersion;
40 ::ll::TypedStorage<8, 32, ::std::optional<::SemVersion>> deprecatedVersion;
41 ::ll::TypedStorage<8, 24, ::CerealSchemaUpgradeSet> versionUpgrades;
42 ::ll::TypedStorage<8, 64, ::std::function<bool(::Experiments const&, ::SemVersion const&)>> onParseCallback;
43 // NOLINTEND
44
45 public:
46 // prevent constructor by default
47 ComponentMetadata& operator=(ComponentMetadata const&);
48 ComponentMetadata(ComponentMetadata const&);
49 ComponentMetadata();
50
51 public:
52 // member functions
53 // NOLINTBEGIN
54 MCAPI ::CerealItemComponentFactory::ComponentMetadata&
56
57 MCAPI ~ComponentMetadata();
58 // NOLINTEND
59
60 public:
61 // destructor thunk
62 // NOLINTBEGIN
63 MCAPI void $dtor();
64 // NOLINTEND
65 };
66
67public:
68 // member variables
69 // NOLINTBEGIN
70 ::ll::TypedStorage<
71 8,
72 64,
73 ::std::unordered_map<
74 ::std::string,
77 ::std::equal_to<void>>>
78 mRegisteredComponents;
79 ::ll::TypedStorage<8, 24, ::SemVersion> mReleasedMinFormatVersionForAnyComponent;
80 // NOLINTEND
81
82public:
83 // static functions
84 // NOLINTBEGIN
85 MCAPI static void addComponentMetadata(
87 ::std::string const& componentName,
89 ::std::optional<::SemVersion> releasedMinFormatVersion
90 );
91
92 MCAPI static ::std::shared_ptr<::ItemComponent>
93 constructItemComponent(::std::string const& name, ::cereal::ReflectionCtx const& ctx);
94
95 MCAPI static void deprecateComponentStartingFromVersion(
96 ::std::string const& name,
97 ::SemVersion const deprecatedVersion,
99 );
100
101 MCAPI static ::std::optional<::SemVersion>
102 getReleasedMinFormatVersionForAnyComponent(::cereal::ReflectionCtx const& ctx);
103
104 MCAPI static ::CerealItemComponentFactory& setupContextInstanceIfRequired(::cereal::ReflectionCtx& ctx);
105
106 MCAPI static void
107 updateReleasedMinFormatVersionForAnyComponentIfLower(::CerealItemComponentFactory& instance, ::SemVersion version);
108
109#ifdef LL_PLAT_C
110 MCAPI static bool validateCerealComponent(
111 ::std::string const& componentName,
112 ::SemVersion const& documentVersion,
113 ::PackLoadInfo const& packLoadInfo,
115 );
116#endif
117 // NOLINTEND
118};
Definition CerealItemComponentFactory.h:19
Definition Experiments.h:14
Definition ItemComponent.h:16
Definition PackLoadRequirement.h:12
Definition SemVersion.h:15
Definition CerealItemComponentFactory.h:27
Definition PackLoadInfo.h:5
Definition string_hash.h:7
Definition ReflectionCtx.h:11
Definition ctx.h:5