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
38 using RegisteredTraitsMap = ::std::unordered_map<::std::string, ::BlockTraitFactory::TraitMetadata>;
39
40public:
41 // member variables
42 // NOLINTBEGIN
43 ::ll::TypedStorage<8, 64, ::std::unordered_map<::std::string, ::BlockTraitFactory::TraitMetadata>>
44 mRegisteredTraits;
45 // NOLINTEND
46
47public:
48 // member functions
49 // NOLINTBEGIN
50 MCAPI ::std::unique_ptr<::BlockTrait::ITrait>
51 createTrait(::std::string const& name, ::cereal::ReflectionCtx const& ctx) const;
52
53 MCAPI ~BlockTraitFactory();
54 // NOLINTEND
55
56public:
57 // static functions
58 // NOLINTBEGIN
59 MCAPI static void registerAllTraits(::cereal::ReflectionCtx& ctx);
60
61 MCAPI static ::std::unordered_map<::std::string, ::BlockTraitFactory::TraitMetadata> const*
62 registeredTraits(::cereal::ReflectionCtx const& ctx);
63
64 MCAPI static ::BlockTraitFactory& setupContextInstanceIfRequired(::cereal::ReflectionCtx& ctx);
65 // NOLINTEND
66
67public:
68 // destructor thunk
69 // NOLINTBEGIN
70 MCAPI void $dtor();
71 // NOLINTEND
72};
Definition BlockTraitFactory.h:16
Definition ITrait.h:14
Definition Factory.h:6
Definition PackLoadRequirement.h:12
Definition BlockTraitFactory.h:24
Definition ReflectionCtx.h:11
Definition ctx.h:5