LeviLamina
Loading...
Searching...
No Matches
ExpressionNode.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/molang/MolangVersion.h"
7#include "mc/platform/brstd/bitset.h"
8#include "mc/platform/brstd/flat_set.h"
9#include "mc/platform/brstd/function_ref.h"
10#include "mc/util/MolangCompileResult.h"
11#include "mc/util/molang/ExpressionNode.h"
12#include "mc/util/molang/ExpressionOp.h"
13
14// auto generated forward declare list
15// clang-format off
16class HashedString;
17class RenderParams;
18struct MolangEvalParams;
20struct MolangScriptArg;
21namespace Json { class Value; }
22namespace Molang::details { class Program; }
23namespace Molang::details { struct MolangProgramBuildState; }
24// clang-format on
25
26namespace Molang::details {
27
28class ExpressionNode {
29public:
30 // member variables
31 // NOLINTBEGIN
35#ifdef LL_PLAT_S
37#else // LL_PLAT_C
39#endif
41 // NOLINTEND
42
43public:
44 // prevent constructor by default
45 ExpressionNode& operator=(ExpressionNode const&);
46 ExpressionNode();
47
48public:
49 // member functions
50 // NOLINTBEGIN
52
54
55#ifdef LL_PLAT_C
56 MCNAPI explicit ExpressionNode(float value);
57#endif
58
59 MCNAPI ExpressionNode(::MolangScriptArg value, ::ExpressionOp op);
60
61 MCNAPI bool _buildTree(::brstd::bitset<109, uint64> const& usedTokenFlags, ::MolangVersion molangVersion);
62
63 MCNAPI bool _checkAllOperationsAreValid() const;
64
65 MCNAPI bool _optimize(::MolangVersion version, ::RenderParams& outRenderParams, int recursionDepth);
66
67 MCNAPI bool _processBinaryExpressions(::brstd::function_ref<bool(::ExpressionOp)> predicate);
68
70
71 MCNAPI bool _readNextToken(char const*& expression, ::MolangParseConfig const& parseConfig);
72
73 MCNAPI bool _tokenize(
74 char const* expression,
75 ::brstd::bitset<109, uint64>& usedTokenFlags,
76 ::MolangParseConfig const& parseConfig
77 );
78
79 MCNAPI bool _validate(::MolangVersion version, bool inLoop, int inAssignmentLHSDepth) const;
80
81 MCNAPI bool _validateChildrenAreNumerical(::MolangVersion version) const;
82
83 MCNAPI bool areAllChildrenEqual() const;
84
85 MCNAPI void clear();
86
87 MCNAPI bool findClosingOp(uint64& i, ::ExpressionOp endOp) const;
88
89 MCNAPI uint64 getTreeHash(bool sideEffectsReturnZero) const;
90
91 MCNAPI bool getTreeString(::std::string& dest, bool sideEffectsReturnZero) const;
92
93 MCNAPI bool isInitialized() const;
94
95 MCNAPI bool isValid() const;
96
97 MCNAPI ::nonstd::expected<::Molang::details::Program, ::MolangCompileResult> link(::MolangVersion version);
98
99 MCNAPI void moveConstantChildToValueIfFloatOrHashType(int firstConstChildIndex);
100
101 MCNAPI ::Molang::details::ExpressionNode& operator=(::Molang::details::ExpressionNode&& rhs);
102
103 MCNAPI ::Molang::details::ExpressionNode& operator=(float value);
104
105 MCNAPI bool operator==(::Molang::details::ExpressionNode const& rhs) const;
106
108
109 MCNAPI bool parse(
110 ::std::string_view inputExpression,
111 ::MolangParseConfig const& config,
112 ::brstd::bitset<109, uint64>& usedTokenFlags
113 );
114
115 MCNAPI bool
116 parse(::Json::Value const& value, ::MolangParseConfig const& config, ::brstd::bitset<109, uint64>& usedTokenFlags);
117
118 MCNAPI bool processArrays();
119
120 MCNAPI bool processBinaryExpression(::ExpressionOp op);
121
122 MCNAPI bool processMathFuncs();
123
125
127
129
130 MCNAPI bool processSections();
131
132 MCNAPI bool processSemicolons();
133
134 MCNAPI bool processUnaryExpression(::ExpressionOp op);
135
136 MCNAPI void replaceArrayVariables(::std::unordered_map<::HashedString, ::Molang::details::ExpressionNode>& dataMap);
137
138#ifdef LL_PLAT_C
139 MCNAPI ::brstd::flat_set<::HashedString, ::std::less<::HashedString>, ::std::vector<::HashedString>>
140 replaceResourceVariables(::std::unordered_map<::HashedString, ::ExpressionNode::ResourceReference>& resourceTable);
141#endif
142
143 MCNAPI void validateArrayVariables() const;
144
146 // NOLINTEND
147
148public:
149 // static functions
150 // NOLINTBEGIN
151 MCNAPI static ::MolangCompileResult _buildProgram(
154 ::MolangVersion molangVersion
155 );
156
157 MCNAPI static ::MolangScriptArg* _getOrCreateReferencedMemberVariableScriptArg(
158 ::MolangEvalParams& state,
159 ::Molang::details::ExpressionNode const& memberAccessorNode
160 );
161
162 MCNAPI static ::std::optional<::MolangScriptArg>
163 _getQueryFunctionAccessor(::std::string const& functionName, ::MolangParseConfig const& parseConfig);
164
165 MCNAPI static ::MolangScriptArg const* _getReferencedMemberVariableScriptArg(
166 ::MolangEvalParams& state,
167 ::Molang::details::ExpressionNode const& memberAccessorNode
168 );
169
170 MCNAPI static ::MolangScriptArg const* _getScriptArgFromMemberAccessedVariable(
171 ::MolangEvalParams& state,
172 ::Molang::details::ExpressionNode const& memberAccessorNode
173 );
174
176 ::MolangEvalParams& state,
177 ::Molang::details::ExpressionNode const& memberAccessorNode,
178 ::MolangScriptArg const& value
179 );
180
181#ifdef LL_PLAT_C
182 MCNAPI static ::std::string& toLowerInPlaceExceptStrings(::std::string& expression);
183#endif
184 // NOLINTEND
185
186public:
187 // constructor thunks
188 // NOLINTBEGIN
190
191 MCNAPI void* $ctor(::Molang::details::ExpressionNode const& rhs);
192
193#ifdef LL_PLAT_C
194 MCNAPI void* $ctor(float value);
195#endif
196
197 MCNAPI void* $ctor(::MolangScriptArg value, ::ExpressionOp op);
198 // NOLINTEND
199
200public:
201 // destructor thunk
202 // NOLINTBEGIN
203 MCNAPI void $dtor();
204 // NOLINTEND
205};
206
207} // namespace Molang::details
Definition HashedString.h:5
Definition Value.h:16
Definition ExpressionNode.h:28
MCAPI void * $ctor(::MolangScriptArg value, ::ExpressionOp op)
MCAPI bool _processTernaryAndConditionalExpressions()
MCAPI bool isInitialized() const
MCAPI bool getTreeString(::std::string &dest, bool sideEffectsReturnZero) const
MCAPI ::nonstd::expected<::Molang::details::Program, ::MolangCompileResult > link(::MolangVersion version)
static MCAPI ::MolangScriptArg const * _getReferencedMemberVariableScriptArg(::MolangEvalParams &state, ::Molang::details::ExpressionNode const &memberAccessorNode)
MCAPI bool _checkAllOperationsAreValid() const
static MCAPI ::std::optional<::MolangScriptArg > _getQueryFunctionAccessor(::std::string const &functionName, ::MolangParseConfig const &parseConfig)
MCAPI bool parse(::Json::Value const &value, ::MolangParseConfig const &config, ::brstd::bitset< 109, uint64 > &usedTokenFlags)
MCAPI bool _readNextToken(char const *&expression, ::MolangParseConfig const &parseConfig)
MCAPI bool areAllChildrenEqual() const
MCAPI bool _optimize(::MolangVersion version, ::RenderParams &outRenderParams, int recursionDepth)
MCAPI bool _processBinaryExpressions(::brstd::function_ref< bool(::ExpressionOp)> predicate)
static MCAPI void _writeScriptArgToMemberAccessedVariable(::MolangEvalParams &state, ::Molang::details::ExpressionNode const &memberAccessorNode, ::MolangScriptArg const &value)
MCAPI uint64 getTreeHash(bool sideEffectsReturnZero) const
MCAPI void validateArrayVariables() const
MCAPI bool parse(::std::string_view inputExpression, ::MolangParseConfig const &config, ::brstd::bitset< 109, uint64 > &usedTokenFlags)
MCAPI bool operator==(::Molang::details::ExpressionNode const &rhs) const
static MCAPI ::MolangScriptArg * _getOrCreateReferencedMemberVariableScriptArg(::MolangEvalParams &state, ::Molang::details::ExpressionNode const &memberAccessorNode)
MCAPI bool processNegativesAndLogicalNots()
MCAPI void moveConstantChildToValueIfFloatOrHashType(int firstConstChildIndex)
MCAPI bool _validateChildrenAreNumerical(::MolangVersion version) const
static MCAPI ::MolangScriptArg const * _getScriptArgFromMemberAccessedVariable(::MolangEvalParams &state, ::Molang::details::ExpressionNode const &memberAccessorNode)
static MCAPI ::MolangCompileResult _buildProgram(::Molang::details::MolangProgramBuildState &buildState, ::Molang::details::ExpressionNode const *node, ::MolangVersion molangVersion)
MCAPI ExpressionNode(::Molang::details::ExpressionNode &&rhs)
MCAPI bool processUnaryExpression(::ExpressionOp op)
MCAPI bool _tokenize(char const *expression, ::brstd::bitset< 109, uint64 > &usedTokenFlags, ::MolangParseConfig const &parseConfig)
MCAPI::Molang::details::ExpressionNode & operator=(float value)
MCAPI bool _validate(::MolangVersion version, bool inLoop, int inAssignmentLHSDepth) const
MCAPI bool processBinaryExpression(::ExpressionOp op)
MCAPI bool findClosingOp(uint64 &i, ::ExpressionOp endOp) const
MCAPI void * $ctor(::Molang::details::ExpressionNode const &rhs)
MCAPI void * $ctor(::Molang::details::ExpressionNode &&rhs)
MCAPI bool _buildTree(::brstd::bitset< 109, uint64 > const &usedTokenFlags, ::MolangVersion molangVersion)
MCAPI::Molang::details::ExpressionNode & operator=(::Molang::details::ExpressionNode &&rhs)
MCAPI ExpressionNode(::MolangScriptArg value, ::ExpressionOp op)
MCAPI ExpressionNode(::Molang::details::ExpressionNode const &rhs)
MCAPI void replaceArrayVariables(::std::unordered_map<::HashedString, ::Molang::details::ExpressionNode > &dataMap)
Definition Program.h:15
Definition RenderParams.h:30
Definition bitset.h:19
Definition function_ref.h:60
Definition MolangEvalParams.h:18
Definition MolangParseConfig.h:14
Definition MolangScriptArg.h:35
Definition MolangProgramBuildState.h:12
Definition Alias.h:14