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 MCNAPI bool _checkAllOperationsAreValid() const;
56
57 MCNAPI bool _optimize(::MolangVersion const version, ::RenderParams& outRenderParams, int recursionDepth);
58
59 MCNAPI bool _processBinaryExpressions(::brstd::function_ref<bool(::ExpressionOp)> predicate);
60
62
63 MCNAPI bool _validate(::MolangVersion const version, bool inLoop, int inAssignmentLHSDepth) const;
64
65 MCNAPI bool _validateChildrenAreNumerical(::MolangVersion const version) const;
66
67 MCNAPI bool areAllChildrenEqual() const;
68
69 MCNAPI void clear();
70
71 MCNAPI bool findClosingOp(uint64& i, ::ExpressionOp endOp) const;
72
73 MCNAPI uint64 getTreeHash(bool sideEffectsReturnZero) const;
74
75 MCNAPI bool getTreeString(::std::string& dest, bool sideEffectsReturnZero) const;
76
77 MCNAPI bool isValid() const;
78
79 MCNAPI ::nonstd::expected<::Molang::details::Program, ::MolangCompileResult> link(::MolangVersion version);
80
81 MCNAPI void moveConstantChildToValueIfFloatOrHashType(int firstConstChildIndex);
82
83 MCNAPI ::Molang::details::ExpressionNode& operator=(::Molang::details::ExpressionNode&& rhs);
84
85 MCNAPI ::Molang::details::ExpressionNode& operator=(float value);
86
87 MCNAPI bool operator==(::Molang::details::ExpressionNode const& rhs) const;
88
90
91 MCNAPI bool parse(
92 ::std::string_view inputExpression,
93 ::MolangParseConfig const& config,
94 ::brstd::bitset<109, uint64>& usedTokenFlags
95 );
96
97 MCNAPI bool
98 parse(::Json::Value const& value, ::MolangParseConfig const& config, ::brstd::bitset<109, uint64>& usedTokenFlags);
99
100 MCNAPI bool processArrays();
101
102 MCNAPI bool processBinaryExpression(::ExpressionOp op);
103
104 MCNAPI bool processMathFuncs();
105
107
109
110 MCNAPI bool processSections();
111
112 MCNAPI bool processSemicolons();
113
114 MCNAPI bool processUnaryExpression(::ExpressionOp op);
115
116 MCNAPI void replaceArrayVariables(::std::unordered_map<::HashedString, ::Molang::details::ExpressionNode>& dataMap);
117
118#ifdef LL_PLAT_C
119 MCNAPI ::brstd::flat_set<::HashedString, ::std::less<::HashedString>, ::std::vector<::HashedString>>
120 replaceResourceVariables(::std::unordered_map<::HashedString, ::ExpressionNode::ResourceReference>& resourceTable);
121#endif
122
123 MCNAPI void validateArrayVariables() const;
124
126 // NOLINTEND
127
128public:
129 // static functions
130 // NOLINTBEGIN
131 MCNAPI static ::MolangCompileResult _buildProgram(
134 ::MolangVersion molangVersion
135 );
136
137 MCNAPI static ::MolangScriptArg* _getOrCreateReferencedMemberVariableScriptArg(
138 ::MolangEvalParams& state,
139 ::Molang::details::ExpressionNode const& memberAccessorNode
140 );
141
142 MCNAPI static ::MolangScriptArg const* _getScriptArgFromMemberAccessedVariable(
143 ::MolangEvalParams& state,
144 ::Molang::details::ExpressionNode const& memberAccessorNode
145 );
146
148 ::MolangEvalParams& state,
149 ::Molang::details::ExpressionNode const& memberAccessorNode,
150 ::MolangScriptArg const& value
151 );
152 // NOLINTEND
153
154public:
155 // constructor thunks
156 // NOLINTBEGIN
158
159 MCNAPI void* $ctor(::Molang::details::ExpressionNode const& rhs);
160 // NOLINTEND
161
162public:
163 // destructor thunk
164 // NOLINTBEGIN
165 MCNAPI void $dtor();
166 // NOLINTEND
167};
168
169} // namespace Molang::details
Definition HashedString.h:5
Definition Value.h:16
Definition ExpressionNode.h:28
MCAPI bool _validate(::MolangVersion const version, bool inLoop, int inAssignmentLHSDepth) const
MCAPI bool _processTernaryAndConditionalExpressions()
MCAPI bool getTreeString(::std::string &dest, bool sideEffectsReturnZero) const
MCAPI ::nonstd::expected<::Molang::details::Program, ::MolangCompileResult > link(::MolangVersion version)
MCAPI bool _checkAllOperationsAreValid() const
MCAPI bool parse(::Json::Value const &value, ::MolangParseConfig const &config, ::brstd::bitset< 109, uint64 > &usedTokenFlags)
MCAPI bool areAllChildrenEqual() const
MCAPI bool _optimize(::MolangVersion const 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)
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 _validateChildrenAreNumerical(::MolangVersion const version) const
MCAPI::Molang::details::ExpressionNode & operator=(float value)
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::Molang::details::ExpressionNode & operator=(::Molang::details::ExpressionNode &&rhs)
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:29
Definition bitset.h:19
Definition function_ref.h:60
Definition MolangEvalParams.h:17
Definition MolangParseConfig.h:14
Definition MolangScriptArg.h:28
Definition MolangProgramBuildState.h:12
Definition Alias.h:14