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();
46
47public:
48 // member functions
49 // NOLINTBEGIN
51
53
54 MCNAPI bool _buildTree(::brstd::bitset<109, uint64> const& usedTokenFlags, ::MolangVersion molangVersion);
55
56 MCNAPI bool _checkAllOperationsAreValid() const;
57
58 MCNAPI bool _optimize(::MolangVersion version, ::RenderParams& outRenderParams, int recursionDepth);
59
60 MCNAPI bool _processBinaryExpressions(::brstd::function_ref<bool(::ExpressionOp)> predicate);
61
63
64 MCNAPI bool _readNextToken(char const*& expression, ::MolangParseConfig const& parseConfig);
65
66 MCNAPI bool _validate(::MolangVersion version, bool inLoop, int inAssignmentLHSDepth) const;
67
68 MCNAPI bool _validateChildrenAreNumerical(::MolangVersion version) const;
69
70 MCNAPI_S bool areAllChildrenEqual() const;
71
72 MCNAPI void clear();
73
74 MCNAPI bool findClosingOp(uint64& i, ::ExpressionOp endOp) const;
75
76 MCNAPI uint64 getTreeHash(bool sideEffectsReturnZero) const;
77
78 MCNAPI bool getTreeString(::std::string& dest, bool sideEffectsReturnZero) const;
79
80 MCNAPI bool hasMadd() const;
81
82 MCNAPI bool isValid() const;
83
84 MCNAPI ::nonstd::expected<::Molang::details::Program, ::MolangCompileResult> link(::MolangVersion version);
85
86 MCNAPI void moveConstantChildToValueIfFloatOrHashType(int firstConstChildIndex);
87
88 MCNAPI ::Molang::details::ExpressionNode& operator=(::Molang::details::ExpressionNode&&);
89
90 MCNAPI ::Molang::details::ExpressionNode& operator=(::Molang::details::ExpressionNode const&);
91
92 MCNAPI ::Molang::details::ExpressionNode& operator=(float value);
93
94 MCNAPI bool operator==(::Molang::details::ExpressionNode const& rhs) const;
95
97
98 MCNAPI bool parse(
99 ::std::string_view inputExpression,
100 ::MolangParseConfig const& config,
101 ::brstd::bitset<109, uint64>& usedTokenFlags
102 );
103
104 MCNAPI bool
105 parse(::Json::Value const& value, ::MolangParseConfig const& config, ::brstd::bitset<109, uint64>& usedTokenFlags);
106
107 MCNAPI bool processArrays();
108
109 MCNAPI bool processBinaryExpression(::ExpressionOp op);
110
111 MCNAPI bool processMathFuncs();
112
114
116
117 MCNAPI bool processSections();
118
119 MCNAPI bool processSemicolons();
120
121 MCNAPI bool processUnaryExpression(::ExpressionOp op);
122
123 MCNAPI void replaceArrayVariables(::std::unordered_map<::HashedString, ::Molang::details::ExpressionNode>& dataMap);
124
125 MCNAPI_C ::brstd::flat_set<::HashedString, ::std::less<::HashedString>, ::std::vector<::HashedString>>
126 replaceResourceVariables(::std::unordered_map<::HashedString, ::ExpressionNode::ResourceReference>& resourceTable);
127
128 MCNAPI void validateArrayVariables() const;
129
131 // NOLINTEND
132
133public:
134 // static functions
135 // NOLINTBEGIN
136 MCNAPI static ::MolangCompileResult _buildProgram(
139 ::MolangVersion molangVersion
140 );
141
142 MCNAPI static ::MolangScriptArg* _getOrCreateReferencedMemberVariableScriptArg(
143 ::MolangEvalParams& state,
144 ::Molang::details::ExpressionNode const& memberAccessorNode
145 );
146
147 MCNAPI static ::std::optional<::MolangScriptArg>
148 _getQueryFunctionAccessor(::std::string const& functionName, ::MolangParseConfig const& parseConfig);
149
150 MCNAPI static ::MolangScriptArg const* _getReferencedMemberVariableScriptArg(
151 ::MolangEvalParams& state,
152 ::Molang::details::ExpressionNode const& memberAccessorNode
153 );
154
155 MCNAPI_C static ::MolangScriptArg const* _getScriptArgFromMemberAccessedVariable(
156 ::MolangEvalParams& state,
157 ::Molang::details::ExpressionNode const& memberAccessorNode
158 );
159
161 ::MolangEvalParams& state,
162 ::Molang::details::ExpressionNode const& memberAccessorNode,
163 ::MolangScriptArg const& value
164 );
165
166 MCNAPI static char const* getOpFriendlyName(::ExpressionOp op);
167 // NOLINTEND
168
169public:
170 // constructor thunks
171 // NOLINTBEGIN
173
175 // NOLINTEND
176
177public:
178 // destructor thunk
179 // NOLINTBEGIN
180 MCNAPI void $dtor();
181 // NOLINTEND
182};
183
184} // namespace Molang::details
Definition HashedString.h:5
Definition Value.h:16
Definition ExpressionNode.h:28
MCAPI ExpressionNode(::Molang::details::ExpressionNode &&)
MCAPI bool _processTernaryAndConditionalExpressions()
MCAPI::Molang::details::ExpressionNode & operator=(::Molang::details::ExpressionNode const &)
MCAPI ExpressionNode(::Molang::details::ExpressionNode const &)
MCAPI bool getTreeString(::std::string &dest, bool sideEffectsReturnZero) const
MCAPI ::nonstd::expected<::Molang::details::Program, ::MolangCompileResult > link(::MolangVersion version)
MCAPI void * $ctor(::Molang::details::ExpressionNode const &)
MCAPI void * $ctor(::Molang::details::ExpressionNode &&)
static MCAPI ::MolangScriptArg const * _getReferencedMemberVariableScriptArg(::MolangEvalParams &state, ::Molang::details::ExpressionNode const &memberAccessorNode)
MCAPI::Molang::details::ExpressionNode & operator=(::Molang::details::ExpressionNode &&)
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 _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 ::MolangCompileResult _buildProgram(::Molang::details::MolangProgramBuildState &buildState, ::Molang::details::ExpressionNode const *node, ::MolangVersion molangVersion)
MCAPI bool processUnaryExpression(::ExpressionOp op)
MCAPI::Molang::details::ExpressionNode & operator=(float value)
MCAPI bool _validate(::MolangVersion version, bool inLoop, int inAssignmentLHSDepth) const
static MCAPI char const * getOpFriendlyName(::ExpressionOp op)
MCAPI bool processBinaryExpression(::ExpressionOp op)
MCAPI bool findClosingOp(uint64 &i, ::ExpressionOp endOp) const
MCAPI bool _buildTree(::brstd::bitset< 109, uint64 > const &usedTokenFlags, ::MolangVersion molangVersion)
MCAPI void replaceArrayVariables(::std::unordered_map<::HashedString, ::Molang::details::ExpressionNode > &dataMap)
Definition Program.h:13
Definition RenderParams.h:30
Definition bitset.h:19
Definition function_ref.h:60
Definition MolangEvalParams.h:18
Definition MolangParseConfig.h:14
Definition MolangScriptArg.h:33
Definition MolangProgramBuildState.h:13
Definition Alias.h:14