LeviLamina
Loading...
Searching...
No Matches
FilterGroup.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/world/filters/FilterTest.h"
7
8// auto generated forward declare list
9// clang-format off
10class FilterInput;
11class FilterTest;
12struct FilterContext;
13struct FilterInputs;
15namespace Json { class Value; }
16namespace SharedTypes::v1_21_20 { struct FilterGroupData; }
17namespace SharedTypes::v1_21_20 { struct FilterTestData; }
18// clang-format on
19
21public:
22 // FilterGroup inner types define
23 enum class CollectionType : int {
24 And = 0,
25 Or = 1,
26 Not = 2,
27 };
28
29 using Ptr = ::std::shared_ptr<::FilterGroup>;
30
31public:
32 // member variables
33 // NOLINTBEGIN
34 ::ll::TypedStorage<4, 4, ::FilterGroup::CollectionType> mCollectionType;
35 ::ll::TypedStorage<8, 24, ::std::vector<::std::shared_ptr<::FilterGroup>>> mChildren;
36 ::ll::TypedStorage<8, 24, ::std::vector<::std::shared_ptr<::FilterTest>>> mMembers;
37 // NOLINTEND
38
39public:
40 // virtual functions
41 // NOLINTBEGIN
42 virtual ~FilterGroup();
43
44 virtual bool parse(::Json::Value const& jsonVal);
45
46 virtual ::std::shared_ptr<::FilterGroup> _createSubgroup(::FilterGroup::CollectionType type) const = 0;
47
48 virtual bool _setupContext(::FilterTest const& test, ::FilterContext& context) const;
49 // NOLINTEND
50
51public:
52 // member functions
53 // NOLINTBEGIN
54 MCAPI bool _parseFilterInputs(
55 ::SharedTypes::v1_21_20::FilterTestData const& filterTestData,
56 ::FilterTest::Definition const& filterDef,
57 ::FilterInputs& inputs
58 );
59
60 MCAPI bool _parseFilterParam(
61 ::std::string const& filter,
62 ::std::string const& member,
63 ::std::optional<::std::variant<bool, int, float, ::std::string>> param,
64 ::FilterParamDefinition const& paramDef,
65 ::FilterInput& input
66 );
67
68 MCAPI bool _parseMemberCollection(
69 ::FilterGroup::CollectionType collectionType,
70 ::SharedTypes::v1_21_20::FilterGroupData const& filterGroupData
71 );
72
73 MCAPI bool _parseTest(::SharedTypes::v1_21_20::FilterTestData const& filterTestData);
74
75 MCAPI bool addFilterTest(::FilterTest::Definition const& filterDef, ::FilterInputs const& inputs);
76
77 MCAPI bool addFilterTest(::std::string const& filterName, ::FilterInputs const& inputs);
78
79 MCAPI bool empty() const;
80
81 MCAPI bool evaluate(::std::array<::FilterContext, 10>& contextSet) const;
82
83 MCAPI void fillFromData(::SharedTypes::v1_21_20::FilterGroupData const& filterGroupData);
84
85 MCFOLD ::std::vector<::std::shared_ptr<::FilterGroup>> const& getChildren() const;
86
87 MCFOLD ::FilterGroup::CollectionType getCollectionType() const;
88
89 MCFOLD ::std::vector<::std::shared_ptr<::FilterTest>> const& getMembers() const;
90
91 MCAPI void serialize(::Json::Value& jsonVal) const;
92 // NOLINTEND
93
94public:
95 // destructor thunk
96 // NOLINTBEGIN
97 MCAPI void $dtor();
98 // NOLINTEND
99
100public:
101 // virtual function thunks
102 // NOLINTBEGIN
103 MCAPI bool $parse(::Json::Value const& jsonVal);
104
105 MCAPI bool $_setupContext(::FilterTest const& test, ::FilterContext& context) const;
106
107
108 // NOLINTEND
109
110public:
111 // vftables
112 // NOLINTBEGIN
113 MCAPI static void** $vftable();
114 // NOLINTEND
115};
Definition FilterGroup.h:20
Definition FilterInput.h:5
Definition FilterTest.h:18
Definition Value.h:16
Definition FilterContext.h:5
Definition FilterInputs.h:14
Definition FilterParamDefinition.h:16
Definition FilterTest.h:26
Definition FilterGroupData.h:16
Definition FilterTestData.h:12
Definition context.h:5