21#define UE_API VERSECOMPILER_API
100#define VISIT_VSTNODE(NodeName, RequiredChildren, SupportsManyChildren, Precedence, ChildDeletionBehavior, IsCAtom) NodeName,
107#define VISIT_VSTNODE(NodeName, RequiredChildren, Precedence, SupportsManyChildren, ChildDeletionBehavior, IsCAtom) {#NodeName, RequiredChildren, Precedence, ESupportsManyChildren::SupportsManyChildren, EChildDeletionBehavior::ChildDeletionBehavior, IsCAtom},
122 static const uint8_t TagNone = 255;
172 ||
in_type == NodeType::Package
174 ||
in_type == NodeType::Snippet,
175 "Invalid use of locus-free Node constructor for node type that requires a locus");
204 template<
typename TNodeType>
207 template<
typename TNodeType>
210 template <
typename TNodeType>
213 template <
typename TNodeType>
216 template<
typename TNodeType>
222 template<
typename OpType>
224 template<
typename OpType=u
int8_t>
233 template<
typename TNodeType>
238 if(Result !=
nullptr)
273 template<
class VisitPolicy,
typename ReturnType =
void >
345 Child->_Parent =
nullptr;
369 if (
CurNode->GetElementType() == Type::StaticType)
407 else if (
Child.IsValid())
425 if (
Child.Get() == &Target)
451 if (NumChildren == 1)
470 child->_Parent =
this;
479 child->_Parent =
this;
488 child->_Parent =
this;
497 Child->_Parent =
this;
524 const auto& Expr = Children[i];
535 const auto& Expr = Children[i];
548 const auto& Expr = Children[i];
564 Child->_Parent =
nullptr;
591 To->AccessChildren().Reserve(To->GetChildCount() +
Last -
First + 1);
595 const auto &
CurChild = From->GetChildren()[i];
682 if (CurPair._Child->GetParent() != CurPair._Parent)
684 return CurPair._Child;
705 Child->AccessParent()->AccessChildren().Remove(
Child);
706 Child->_Parent =
nullptr;
714 child->_Parent =
this;
724 child->_Parent =
this;
1026 const int32_t NumChildren = Children.Num();
1027 if (NumChildren == 0)
1041 Children.RemoveAt(
Index);
1538 , _bCanBeQualified(
true) {}
1558 bool _bCanBeQualified;
2034 template <
class VisitPolicy,
typename ReturnType>
2040#define VISIT_VSTNODE(NodeName, RequiredChildren, SupportsManyChildren, Precedence, ChildDeletionBehavior, IsCAtom) \
2041 case Vst::NodeType::NodeName: \
2042 return visit_policy.visit(node->As<Vst::NodeName>()); \
2047 return ReturnType();
2053#define VISIT_VSTNODE(NodeName, RequiredChildren, SupportsManyChildren, Precedence, ChildDeletionBehavior, IsCAtom) static_assert(NodeName::StaticType == NodeType::NodeName, #NodeName "::StaticType must be Vst::NodeType::" #NodeName);
RAD_F64 F64
Definition egttypes.h:521
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define ULANG_ENUM_BIT_FLAGS(Enum,...)
Definition EnumUtils.h:6
return true
Definition ExternalRpcRegistry.cpp:601
#define VERSE_ENUM_VSTNODES(DECL_NODE)
Definition NodeDecls.inl:4
#define UE_API
Definition SColorGradingComponentViewer.h:12
#define ULANG_ENSUREF(expr, format,...)
Definition Common.h:292
#define ULANG_FORCEINLINE
Definition Common.h:188
#define ULANG_UNREACHABLE()
Definition Common.h:243
#define ULANG_ASSERTF(expr, format,...)
Definition Common.h:290
#define ULANG_COUNTOF(x)
Definition Common.h:226
void Move(T &A, typename TMoveSupportTraits< T >::Copy B)
Definition UnrealTemplate.h:24
#define VISIT_VSTNODE(NodeName, RequiredChildren, SupportsManyChildren, Precedence, ChildDeletionBehavior, IsCAtom)
Definition VstNode.h:100
const CUTF8String & GetSourceText() const
Definition VstNode.h:864
const string & GetStringValue() const
Definition VstNode.h:863
CUTF8String _OriginalCode
Definition VstNode.h:857
CAtom(const uLang::CUTF8StringView &CodeStr, NodeType InType, const SLocus &Whence)
Definition VstNode.h:861
const char * GetSourceCStr() const
Definition VstNode.h:865
Definition Expression.h:297
Definition SharedPointer.h:28
static TSPtrG< ObjectType, false, CHeapRawAllocator > SharedThis(ObjectType *This)
Definition SharedPointer.h:41
Definition UTF8StringView.h:15
ULANG_FORCEINLINE int32_t Emplace(ArgsType &&... Args)
Definition Array.h:1527
ULANG_FORCEINLINE ElementType & Last(int32_t IndexFromTheEnd=0)
Definition Array.h:537
void Empty(int32_t Slack=0)
Definition Array.h:1322
ULANG_FORCEINLINE void RemoveAt(int32_t Index)
Definition Array.h:1188
ULANG_FORCEINLINE ElementType * begin()
Definition Array.h:1948
ULANG_FORCEINLINE void Push(ElementType &&Item)
Definition Array.h:489
void Reset(int32_t NewSize=0)
Definition Array.h:1303
ULANG_FORCEINLINE bool IsEmpty() const
Definition Array.h:430
ULANG_FORCEINLINE bool IsFilled() const
Definition Array.h:441
int32_t Insert(std::initializer_list< ElementType > InitList, const int32_t InIndex)
Definition Array.h:986
ULANG_FORCEINLINE ElementType * end()
Definition Array.h:1950
ULANG_FORCEINLINE ElementType Pop(bool bAllowShrinking=true)
Definition Array.h:476
ULANG_FORCEINLINE void Reserve(int32_t Number)
Definition Array.h:1753
ULANG_FORCEINLINE int32_t Add(ElementType &&Item)
Definition Array.h:1587
ULANG_FORCEINLINE int32_t Num() const
Definition Array.h:402
Definition SharedPointerArray.h:21
Definition SharedPointer.h:77
ULANG_FORCEINLINE const char * AsCString() const
Definition UTF8String.h:50
Definition VerseScope.h:13
Type
Definition VerseScope.h:15
@ PublicUser
Definition VerseScope.h:18
Definition tLang.cpp:1785
ULANG_FORCEINLINE EChildDeletionBehavior GetChildDeletionBehavior(const NodeType TypeOfNode)
Definition VstNode.h:144
ESupportsManyChildren
Definition VstNode.h:94
NodeType
Definition VstNode.h:102
ULANG_FORCEINLINE ESupportsManyChildren GetSupportsManyChildren(const NodeType TypeOfNode)
Definition VstNode.h:139
const char * BinaryCompareOpAsCString(BinaryOpCompare::op Op)
Definition VstNode.h:1345
ULANG_FORCEINLINE int32_t GetNumRequiredChildren(const NodeType TypeOfNode)
Definition VstNode.h:129
ULANG_FORCEINLINE int32_t GetOperatorPrecedence(const NodeType TypeOfNode)
Definition VstNode.h:134
EChildDeletionBehavior
Definition VstNode.h:87
BinaryOpCompare::op BinaryCompareOpFlip(BinaryOpCompare::op Op)
Definition VstNode.h:1359
const char * AssignmentOpAsCString(Assignment::EOp Op)
Definition VstNode.h:1195
ULANG_FORCEINLINE const char * GetNodeTypeName(const NodeType TypeOfNode)
Definition VstNode.h:124
constexpr struct Verse::Vst::NodeInfo NodeInfos[]
EPrettyPrintBehaviour
Definition VstNode.h:2070
@ NewlinesAfterDefinitions
@ NewlinesAfterAttributes
@ NewlinesBetweenModuleMembers
@ UseVerticalFormForEnumerations
uLang::STextRange SLocus
Definition VstNode.h:70
uLang::UTF8Char ChType
Definition VstNode.h:56
void VstAsCodeSourceAppend(const TSRef< Vst::Node > &VstNode, uLang::CUTF8StringBuilder &Source)
Definition tLang.cpp:1626
int32_t GetSignedDistanceBetweenPositionAndLocus(const SLocus &A, const SPosition &B, const uLang::SIndexedSourceText &SourceText)
Definition tLang.cpp:2783
TSPtr< Vst::Node > GetNodeFromPath(const TSRef< Vst::Snippet > &VstSnippet, const SPathToNode &PathData, bool bReturnParent)
Definition tLang.cpp:1737
ULANG_FORCEINLINE SLocus NullWhence()
Definition VstNode.h:74
bool GeneratePathToNode(const TSRef< Vst::Node > &Node, const TSRef< Vst::Snippet > &VstSnippet, SPathToNode &PathToNode)
Definition tLang.cpp:1727
uLang::CUTF8StringView CUTF8StringView
Definition VstNode.h:51
uLang::SIndexedSourceText SIndexedSourceText
Definition VstNode.h:54
ULANG_FORCEINLINE CUTF8String PrettyPrintVst(const TSRef< Vst::Node > &VstNode)
Definition VstNode.h:2092
ULANG_FORCEINLINE CUTF8String PrettyPrintClause(const TSRef< Vst::Clause > &VstClause, int32_t InitialIndent, CUTF8String const &Separator)
Definition VstNode.h:2107
uLang::STextPosition SPosition
Definition VstNode.h:71
Definition VVMEngineEnvironment.h:23
TUTF8StringBuilder< CHeapRawAllocator > CUTF8StringBuilder
A string allocated on the heap.
Definition UTF8StringBuilder.h:194
EVerseScope
Definition VerseScope.h:14
EResult
Generic error codes.
Definition Common.h:352
@ IndexNone
Definition Common.h:381
uLang::TUTF8String< CHeapRawAllocator > CUTF8String
A string allocated on the heap.
Definition UTF8String.h:269
uint8_t UTF8Char
UTF-8 octet.
Definition Unicode.h:20
EPackageRole
Definition PackageRole.h:15
U16 Index
Definition radfft.cpp:71
Definition VstNode.h:2060
int32_t PostCommentIndex
Definition VstNode.h:2065
LArray< int32_t > AuxPath
Definition VstNode.h:2062
LArray< int32_t > Path
Definition VstNode.h:2061
int32_t PreCommentIndex
Definition VstNode.h:2064
Definition VstNode.h:1171
Assignment(const SLocus &Whence)
Definition VstNode.h:1185
static const Vst::NodeType StaticType
Definition VstNode.h:1172
const TSRef< Vst::Node > & GetOperandLeft() const
Definition VstNode.h:1189
VERSECOMPILER_API TSRef< Node > CloneNode() const override
Definition tLang.cpp:2721
Assignment(const SLocus &Whence, const TSRef< Vst::Node > &lhs, EOp InOp, const TSRef< Vst::Node > &rhs)
Definition VstNode.h:1175
const TSRef< Vst::Node > & GetOperandRight() const
Definition VstNode.h:1190
EOp
Definition VstNode.h:1173
Definition VstNode.h:1601
static const Vst::NodeType StaticType
Definition VstNode.h:1602
VERSECOMPILER_API TSRef< Node > CloneNode() const override
Definition tLang.cpp:2295
BinaryOpAddSub(const SLocus &Whence)
Definition VstNode.h:1604
VERSECOMPILER_API void AppendAddOperation(const SLocus &AddWhence, const TSRef< Node > &RhsOperand)
Definition tLang.cpp:2285
VERSECOMPILER_API void AppendSubOperation(const SLocus &SubWhence, const TSRef< Node > &RhsOperand)
Definition tLang.cpp:2290
BinaryOpAddSub(const SLocus &Whence, const TSRef< Node > &LhsOperand)
Definition VstNode.h:1605
Definition VstNode.h:1660
static const Vst::NodeType StaticType
Definition VstNode.h:1661
VERSECOMPILER_API TSRef< Node > CloneNode() const override
Definition tLang.cpp:2689
BinaryOpArrow(const SLocus &Whence, const TSRef< Node > &Lhs, const TSRef< Node > &Rhs)
Definition VstNode.h:1662
BinaryOpArrow(const SLocus &Whence)
Definition VstNode.h:1671
Definition VstNode.h:1318
op GetOp() const
Definition VstNode.h:1340
op
Definition VstNode.h:1321
TSRef< Vst::Node > GetOperandLeft() const
Definition VstNode.h:1338
VERSECOMPILER_API TSRef< Node > CloneNode() const override
Definition tLang.cpp:2656
BinaryOpCompare(const SLocus &Whence)
Definition VstNode.h:1333
static const Vst::NodeType StaticType
Definition VstNode.h:1319
TSRef< Vst::Node > GetOperandRight() const
Definition VstNode.h:1339
BinaryOpCompare(const SLocus &Whence, const TSRef< Vst::Node > &lhs, op in_op, const TSRef< Vst::Node > &rhs)
Definition VstNode.h:1323
Definition VstNode.h:1276
static const Vst::NodeType StaticType
Definition VstNode.h:1277
VERSECOMPILER_API TSRef< Node > CloneNode() const override
Definition tLang.cpp:2665
BinaryOpLogicalAnd(const SLocus &Whence)
Definition VstNode.h:1287
BinaryOpLogicalAnd(const SLocus &Whence, const TSRef< Node > &Lhs, const TSRef< Node > &Rhs)
Definition VstNode.h:1278
void AppendChild(const TSRef< Vst::Node > &Rhs)
Definition VstNode.h:1292
Definition VstNode.h:1254
VERSECOMPILER_API TSRef< Node > CloneNode() const override
Definition tLang.cpp:2673
BinaryOpLogicalOr(const SLocus &Whence)
Definition VstNode.h:1265
static const Vst::NodeType StaticType
Definition VstNode.h:1255
BinaryOpLogicalOr(const SLocus &Whence, const TSRef< Vst::Node > &Lhs, const TSRef< Vst::Node > &Rhs)
Definition VstNode.h:1256
void AppendChild(const TSRef< Vst::Node > &Rhs)
Definition VstNode.h:1270
Definition VstNode.h:1617
BinaryOpMulDivInfix(const SLocus &Whence)
Definition VstNode.h:1620
static const Vst::NodeType StaticType
Definition VstNode.h:1618
VERSECOMPILER_API void AppendDivOperation(const SLocus &DivWhence, const TSRef< Node > &RhsOperand)
Definition tLang.cpp:2308
VERSECOMPILER_API void AppendMulOperation(const SLocus &MulWhence, const TSRef< Node > &RhsOperand)
Definition tLang.cpp:2303
BinaryOpMulDivInfix(const SLocus &Whence, const TSRef< Node > &LhsOperand)
Definition VstNode.h:1621
VERSECOMPILER_API TSRef< Node > CloneNode() const override
Definition tLang.cpp:2313
void AppendInfixOperation(const TSRef< Identifier > &OpIdentifier, const TSRef< Node > &RhsOperand)
Definition VstNode.h:1626
Definition VstNode.h:1638
void AppendChild(const TSRef< Vst::Node > &Rhs)
Definition VstNode.h:1654
BinaryOpRange(const SLocus &Whence, const TSRef< Node > &Lhs, const TSRef< Node > &Rhs)
Definition VstNode.h:1640
static const Vst::NodeType StaticType
Definition VstNode.h:1639
BinaryOpRange(const SLocus &Whence)
Definition VstNode.h:1649
VERSECOMPILER_API TSRef< Node > CloneNode() const override
Definition tLang.cpp:2681
Definition VstNode.h:1572
op
Definition VstNode.h:1573
BinaryOp(const SLocus &Whence, Vst::NodeType NodeType)
Definition VstNode.h:1575
void AppendOperation_Internal(const TSRef< Node > &InOperator, const TSRef< Node > &Operand)
Definition VstNode.h:1590
BinaryOp(const SLocus &Whence, const TSRef< Node > &LhsOperand, Vst::NodeType NodeType)
Definition VstNode.h:1576
void AppendChild(op in_op, const TSRef< Node > in_child)
Definition VstNode.h:1583
Definition VstNode.h:1766
VERSECOMPILER_API TSRef< Node > CloneNode() const override
Definition tLang.cpp:2574
EFormat
Definition VstNode.h:1770
CharLiteral(const CUTF8StringView &InSourceText, EFormat Format, const SLocus &Whence)
Definition VstNode.h:1777
static const Vst::NodeType StaticType
Definition VstNode.h:1767
EFormat _Format
Definition VstNode.h:1775
Clause(const TSRef< Node > &Child, const SLocus &Whence, EForm Form)
Definition VstNode.h:796
EForm
Definition VstNode.h:766
@ IsAppendAttributeHolder
@ IsPrependAttributeHolder
Clause(const uLang::TSRefArray< Node > &Children, const SLocus &Whence, EForm Form)
Definition VstNode.h:806
Clause(const SLocus &Whence, const EForm Form)
Definition VstNode.h:789
Clause(const NodeArray &Children, int32_t NumToAdd, const SLocus &Whence, EForm Form)
Definition VstNode.h:811
Clause(const SLocus &Whence, const EForm Form, const EPunctuation Punctuation)
Definition VstNode.h:787
EPunctuation
Definition VstNode.h:780
void SetPunctuation(const EPunctuation InPunctuation)
Definition VstNode.h:831
void SetForm(const EForm InForm)
Definition VstNode.h:822
static const Vst::NodeType StaticType
Definition VstNode.h:764
Clause(const NodeArray &Children, const SLocus &Whence, EForm Form)
Definition VstNode.h:801
Clause(const uLang::TSRefArray< Node > &Children, int32_t NumToAdd, const SLocus &Whence, EForm Form)
Definition VstNode.h:816
EPunctuation GetPunctuation() const
Definition VstNode.h:827
EForm GetForm() const
Definition VstNode.h:821
Clause(uint8_t ClauseType, const SLocus &Whence, EForm Form)
Definition VstNode.h:791
VERSECOMPILER_API TSRef< Node > CloneNode() const override
Definition tLang.cpp:2439
Definition VstNode.h:1944
VERSECOMPILER_API TSRef< Node > CloneNode() const override
Definition tLang.cpp:2745
Commas(SLocus Whence, const uLang::TSRefArray< Node > &InChildren={})
Definition VstNode.h:1947
static const Vst::NodeType StaticType
Definition VstNode.h:1945
Definition VstNode.h:1852
static const Vst::NodeType StaticType
Definition VstNode.h:1853
const TSRef< Vst::Node > & GetReturnExpression() const
Definition VstNode.h:1873
Control(const SLocus &Whence, Control::EKeyword Keyword)
Definition VstNode.h:1863
Control(const TSRef< Node > &Child, const SLocus &Whence, EKeyword Keyword)
Definition VstNode.h:1867
EKeyword _Keyword
Definition VstNode.h:1877
EKeyword
Definition VstNode.h:1856
VERSECOMPILER_API TSRef< Node > CloneNode() const override
Definition tLang.cpp:2614
Definition VstNode.h:1131
const TSRef< Vst::Node > & GetOperandRight() const
Definition VstNode.h:1147
Definition(const SLocus &Whence, const TSRef< Vst::Node > &Lhs, const TSRef< Vst::Node > &Rhs)
Definition VstNode.h:1134
const TSRef< Vst::Node > & GetOperandLeft() const
Definition VstNode.h:1146
Definition(const SLocus &Whence)
Definition VstNode.h:1142
VERSECOMPILER_API TSRef< Node > CloneNode() const override
Definition tLang.cpp:2697
static const Vst::NodeType StaticType
Definition VstNode.h:1132
Definition VstNode.h:1989
Escape(const SLocus &Whence, const TSRef< Node > &Child)
Definition VstNode.h:1992
static const Vst::NodeType StaticType
Definition VstNode.h:1990
VERSECOMPILER_API TSRef< Node > CloneNode() const override
Definition tLang.cpp:2582
Escape(const SLocus &Whence)
Definition VstNode.h:1999
Definition VstNode.h:1744
static const Vst::NodeType StaticType
Definition VstNode.h:1745
FloatLiteral(const CUTF8StringView &InSourceText, EFormat Format, const SLocus &Whence)
Definition VstNode.h:1757
EFormat
Definition VstNode.h:1748
EFormat _Format
Definition VstNode.h:1755
VERSECOMPILER_API TSRef< Node > CloneNode() const override
Definition tLang.cpp:2549
Definition VstNode.h:1237
VERSECOMPILER_API TSRef< Node > CloneNode() const override
Definition tLang.cpp:2565
void AddCondition(const TSRef< Node > &Child)
Definition VstNode.h:1246
FlowIf(const SLocus &Whence)
Definition VstNode.h:1243
void AddElseBody(const TSRef< Node > &Child)
Definition VstNode.h:1248
ClauseTag
Definition VstNode.h:1241
static const Vst::NodeType StaticType
Definition VstNode.h:1238
void AddIfIdentifier(const TSRef< Node > &Child)
Definition VstNode.h:1245
void AddBody(const TSRef< Node > &Child)
Definition VstNode.h:1247
Definition VstNode.h:1520
bool AddQualifier(const uLang::CUTF8StringView &InQualifier)
Definition tLang.cpp:2386
Identifier(const CUTF8StringView &InName, const SLocus &Whence)
Definition VstNode.h:1534
void CloneNodeFields(Identifier *DestNode) const
Definition tLang.cpp:2420
bool IsQualified() const
Definition VstNode.h:1542
NodeArray _QualifierPreComments
Comments that are to be prefixed to the qualifiers of this identifier.
Definition VstNode.h:1527
VERSECOMPILER_API TSRef< Node > CloneNode() const override
Definition tLang.cpp:2412
const TSRef< Node > & GetQualification() const
Definition VstNode.h:1543
bool CanBeQualified() const
Definition VstNode.h:1541
static const Vst::NodeType StaticType
Definition VstNode.h:1521
NodeArray _QualifierPostComments
Comments that are to be suffixed to the qualifiers of this identifier.
Definition VstNode.h:1524
Identifier(const CUTF8StringView &InName, const SLocus &Whence, const bool bCanBeQualified)
Definition VstNode.h:1529
void SetCanBeQualified(const bool bCanBeQualified)
Definition VstNode.h:1540
Definition VstNode.h:1735
VERSECOMPILER_API TSRef< Node > CloneNode() const override
Definition tLang.cpp:2541
IntLiteral(const CUTF8StringView &InSourceText, const SLocus &Whence)
Definition VstNode.h:1738
static const Vst::NodeType StaticType
Definition VstNode.h:1736
Definition VstNode.h:1806
static const Vst::NodeType StaticType
Definition VstNode.h:1807
VERSECOMPILER_API TSRef< Node > CloneNode() const override
Definition tLang.cpp:2606
Interpolant(const SLocus &Whence, const CUTF8StringView &SyntaxSource)
Definition VstNode.h:1809
Definition VstNode.h:1817
VERSECOMPILER_API TSRef< Node > CloneNode() const override
Definition tLang.cpp:2598
static const Vst::NodeType StaticType
Definition VstNode.h:1818
InterpolatedString(const SLocus &Whence, const CUTF8StringView &SyntaxSource)
Definition VstNode.h:1820
Definition VstNode.h:1828
VERSECOMPILER_API TSRef< Node > CloneNode() const override
Definition tLang.cpp:2705
static const Vst::NodeType StaticType
Definition VstNode.h:1829
const TSRef< Clause > & GetRange() const
Definition VstNode.h:1846
Lambda(const SLocus &Whence)
Definition VstNode.h:1840
Lambda(const SLocus &Whence, const TSRef< Node > &Domain, const TSRef< Node > &Range)
Definition VstNode.h:1831
const TSRef< Node > & GetDomain() const
Definition VstNode.h:1845
Definition VstNode.h:1883
VERSECOMPILER_API TSRef< Node > CloneNode() const override
Definition tLang.cpp:2557
static const Vst::NodeType StaticType
Definition VstNode.h:1884
Macro(SLocus Whence)
Definition VstNode.h:1897
Macro(SLocus Whence, const TSRef< Vst::Node > &MacroName, const uLang::TArray< TSRef< Vst::Clause > > &InChildren)
Definition VstNode.h:1886
const TSRef< Vst::Clause > & GetClause(int32_t ClauseIndex) const
Definition VstNode.h:1902
const TSRef< Vst::Node > & GetName() const
Definition VstNode.h:1901
TSRef< Clause > TakeClause(int32_t ClauseIndex, const TSPtr< Node > Replacement=TSPtr< Clause >())
Definition VstNode.h:1903
static const Vst::NodeType StaticType
Definition VstNode.h:925
VERSECOMPILER_API TSRef< Node > CloneNode() const override
Definition tLang.cpp:2494
Module(const CUTF8StringView &Name)
Definition VstNode.h:926
void CloneNodeFields(Module *DestNode) const
Definition tLang.cpp:2502
CUTF8String _FilePath
Definition VstNode.h:935
CUTF8String _Name
Definition VstNode.h:932
Definition VstNode.h:1426
TSRef< Node > Child() const
Definition VstNode.h:1453
EKeyword
Definition VstNode.h:1430
bool _bLive
Definition VstNode.h:1460
static const NodeType StaticType
Definition VstNode.h:1427
Mutation(const SLocus &Whence, EKeyword Keyword, bool bLive)
Definition VstNode.h:1446
VERSECOMPILER_API TSRef< Node > CloneNode() const override
Definition tLang.cpp:2648
Mutation(const SLocus &Whence, const TSRef< Node > &Child, EKeyword Keyword, bool bLive)
Definition VstNode.h:1436
EKeyword _Keyword
Definition VstNode.h:1458
const char * FormalName
Definition VstNode.h:110
EChildDeletionBehavior ChildDeletionBehavior
Definition VstNode.h:114
ESupportsManyChildren SupportsManyChildren
Definition VstNode.h:113
int32_t RequiredChildren
Definition VstNode.h:111
int32_t Precedence
Definition VstNode.h:112
bool bIsCAtom
Definition VstNode.h:115
static void TransferChildren(const TSRef< Node > &From, const TSRef< Node > &To)
Definition VstNode.h:603
NodeArray & AccessPrefixComments()
Definition VstNode.h:263
bool HasNewLineAfter() const
Definition VstNode.h:328
NodeType GetElementType() const
Definition VstNode.h:220
const NodeArray & GetChildren() const
Definition VstNode.h:339
static void TransferPrefixComments(const TSRef< Node > &From, const TSRef< Node > &To)
Definition VstNode.h:608
ESupportsManyChildren IsManyChildrenSupported() const
Definition VstNode.h:283
UE_API void PrependAux(const TSRef< Node > &AuxChild)
Definition tLang.cpp:1975
const Node * GetParent() const
Definition VstNode.h:358
Node * AccessParent()
Definition VstNode.h:355
bool IsEmpty() const
Definition VstNode.h:338
const TSRef< Node > & AppendChild(const TSRef< Node > &child)
Definition VstNode.h:467
int32_t GetElementTypeInt() const
Definition VstNode.h:221
UE_API void EnsureAuxAllocated()
Definition tLang.cpp:1966
Node * _Parent
Definition VstNode.h:732
void Empty()
Definition VstNode.h:558
NodeArray _PostComments
Definition VstNode.h:738
TSRef< Node > TakeChildAt(int32_t idx, const TSPtr< Node > Replacement=TSPtr< Node >())
Definition VstNode.h:502
UE_API const Node * FindChildByPosition(const SPosition &TextPosition) const
Definition tLang.cpp:2103
void CombineWhenceWith(const SLocus &Whence)
Definition VstNode.h:267
UE_API const Snippet * FindSnippetByFilePath(const CUTF8StringView &FilePath) const
Definition tLang.cpp:2074
UE_API void AppendPrefixComments(const NodeArray &CommentNodes)
Definition tLang.cpp:2026
UE_API void AppendAuxAt(const TSRef< Node > &AuxChild, int32_t Idx)
Definition tLang.cpp:1999
virtual UE_API ~Node()
Definition tLang.cpp:1786
void SetNumNewLinesAfter(const int32_t Num)
Definition VstNode.h:303
int32_t GetPrecedence() const
Definition VstNode.h:278
const TSPtr< Clause > & GetAux() const
Definition VstNode.h:251
OpType GetTag() const
Definition VstNode.h:223
UE_API bool RemoveFromParent(int32_t idx=uLang::IndexNone)
Definition tLang.cpp:1818
UE_API void AppendPrefixComment(const TSRef< Node > &CommentNode)
Definition tLang.cpp:2014
TNodeType & As()
Definition VstNode.h:205
NodeArray _PreComments
Definition VstNode.h:737
const TSRef< Node > & AppendChild(const TSRef< Node > &&child)
Definition VstNode.h:476
TNodeType * AsNullable()
Definition VstNode.h:211
void SetNewLineAfter(const bool bNewLineAfter)
Definition VstNode.h:308
static void TransferPostfixComments(const TSRef< Node > &From, const TSRef< Node > &To)
Definition VstNode.h:621
bool IsChildElementType(int32_t idx, NodeType InType) const
Definition VstNode.h:382
int32_t NumNewLinesBefore() const
Definition VstNode.h:288
virtual VERSECOMPILER_API TSRef< Node > CloneNode() const
Definition tLang.cpp:2165
bool HasNewLinesBefore() const
Definition VstNode.h:333
bool IsA() const
Definition VstNode.h:217
void AppendChildInternal(TSRef< Node > &&child)
Definition VstNode.h:720
UE_API void AppendAux(const TSRef< Node > &AuxChild)
Definition tLang.cpp:1987
UE_API bool HasAttributes() const
Definition tLang.cpp:1907
TSPtr< Node > GetRightmostChild() const
Definition VstNode.h:349
UE_API void AppendPostfixComments(const NodeArray &CommentNodes)
Definition tLang.cpp:2048
const TNodeType & As() const
Definition VstNode.h:208
void AppendChildInternal(const TSRef< Node > &child)
Definition VstNode.h:710
uint8_t _Tag
Definition VstNode.h:753
const TNodeType * AsNullable() const
Definition VstNode.h:214
const NodeArray & GetPrefixComments() const
Definition VstNode.h:261
UE_API void SetAux(const TSRef< Clause > &Aux)
Definition tLang.cpp:2005
static UE_API void RemoveMapping(uLang::CAstNode *AstNode)
Definition tLang.cpp:1893
TSRef< Node > AsShared()
Definition VstNode.h:201
const SLocus & Whence() const
Definition VstNode.h:268
UE_API void ReplaceSelfWith(const TSRef< Node > &replacement)
Definition tLang.cpp:1799
TSRef< Node > GetSharedSelf() const
Definition VstNode.h:357
UE_API const CAtom * AsAtomNullable() const
Definition tLang.cpp:2160
int GetChildCount() const
Definition VstNode.h:219
const Snippet * FindSnippet() const
Definition VstNode.h:571
static void TransferChildren(const TSRef< Node > &From, const TSRef< Node > &To, int32_t First, int32_t Last)
Definition VstNode.h:587
UE_API const Identifier * GetAttributeIdentifier(const CUTF8StringView &AttributeName) const
Definition tLang.cpp:1912
UE_API bool IsAttributePresent(const CUTF8StringView &AttributeName) const
Definition tLang.cpp:1938
Node()
Definition VstNode.h:153
void SetTile(FTile *Tile)
Definition VstNode.h:640
int32_t NumNewLinesAfter() const
Definition VstNode.h:298
NodeArray TakeChildren()
Definition VstNode.h:341
void SetParentInternal(TSRef< Node > InParent)
Definition VstNode.h:359
void AppendChildren(const uLang::TArray< TSRef< Node > > &Children, int32_t NumToAppend=-1)
Definition VstNode.h:518
TSPtr< Clause > _Aux
Definition VstNode.h:734
void RemoveAux()
Definition VstNode.h:253
const ChType * GetElementName() const
Definition VstNode.h:277
const Type * GetParentOfType() const
Definition VstNode.h:365
static SLocus CombineLocii(const NodeArray &Nodes)
Definition VstNode.h:187
FTile * GetTile()
Definition VstNode.h:645
const uLang::CAstNode * GetMappedAstNode() const
Definition VstNode.h:634
int32_t NumRequiredChildren() const
Definition VstNode.h:279
UE_API void AppendPostfixComment(const TSRef< Node > &CommentNode)
Definition tLang.cpp:2036
static void VisitWith(const TSRef< Vst::Node > &node, VisitPolicy &visit_policy)
Definition VstNode.h:2035
const uLang::CAstNode * _MappedAstNode
Definition VstNode.h:756
bool Contains(const Node &Target, const bool bRecursive=true) const
Definition VstNode.h:394
const NodeInfo & GetElementInfo() const
Definition VstNode.h:276
TSRef< Node > GetSharedSelf()
Definition VstNode.h:356
UE_API const CUTF8String & GetSnippetPath() const
Definition tLang.cpp:2058
void SetChildAt(int32_t Index, TSRef< Node > Child)
Definition VstNode.h:494
UE_API void AddMapping(uLang::CAstNode *AstNode) const
Definition tLang.cpp:1869
NodeArray & AccessPostfixComments()
Definition VstNode.h:264
void AppendChildren(const uLang::TSRefArray< Node > &Children, int32_t NumToAppend=-1)
Definition VstNode.h:529
void PrependChildren(const uLang::TArray< TSRef< Node > > &Children, int32_t NumToAppend=-1)
Definition VstNode.h:542
void CloneNodeFields(Node *DestOther) const
Definition tLang.cpp:2173
UE_API const TSRef< Node > FindChildClosestToPosition(const SPosition &TextPosition, const SIndexedSourceText &SourceText) const
Definition tLang.cpp:2125
LArray< TSRef< Node > > NodeArray
Definition VstNode.h:151
SLocus _Whence
Definition VstNode.h:746
void DebugOrphanCheck()
Definition VstNode.h:386
NodeArray & AccessChildren()
Definition VstNode.h:340
bool HasParent() const
Definition VstNode.h:360
void SetWhence(const SLocus &Whence)
Definition VstNode.h:266
const TNodeType * TryGetFirstAttributeOfType() const
Definition VstNode.h:234
void SetNumNewLinesBefore(const int32_t Num)
Definition VstNode.h:293
NodeType _Type
Definition VstNode.h:755
Node(NodeType in_type, const SLocus &whence)
Definition VstNode.h:178
NodeArray _Children
Definition VstNode.h:730
int32_t _NumNewLinesBefore
The number of trailing newlines that should follow this node.
Definition VstNode.h:749
Node(NodeType in_type)
Definition VstNode.h:167
const NodeArray & GetPostfixComments() const
Definition VstNode.h:262
FTile * _Tile
Definition VstNode.h:757
Node * FindRoot()
Definition VstNode.h:576
bool IsError() const
Definition VstNode.h:384
void SetTag(OpType in_op)
Definition VstNode.h:225
int32_t FindPreviousSibling()
Definition VstNode.h:443
bool IsElementType(NodeType InType) const
Definition VstNode.h:378
void DropParent(const TSRef< Node > &Child)
Definition VstNode.h:698
const TSRef< Node > & AppendChildAt(const TSRef< Node > &child, int32_t idx)
Definition VstNode.h:485
int32_t _NumNewLinesAfter
Definition VstNode.h:750
static const Node * FindOrphanedNode(const Node &InNode)
Definition VstNode.h:665
Definition VstNode.h:1562
VERSECOMPILER_API TSRef< Node > CloneNode() const override
Definition tLang.cpp:2509
static const Vst::NodeType StaticType
Definition VstNode.h:1563
Operator(const CUTF8StringView &InSourceText, const SLocus &Whence)
Definition VstNode.h:1565
CUTF8String _DirPath
Definition VstNode.h:950
CUTF8String _FilePath
Definition VstNode.h:953
uint32_t _UploadedAtFNVersion
Definition VstNode.h:979
static const Vst::NodeType StaticType
Definition VstNode.h:941
bool _bTreatModulesAsImplicit
Definition VstNode.h:982
CUTF8String _VersePath
Definition VstNode.h:956
void CloneNodeFields(Package *DestNode) const
Definition tLang.cpp:2447
VERSECOMPILER_API TSRef< Node > CloneNode() const override
Definition tLang.cpp:2277
static VERSECOMPILER_API uLang::TOptional< TSRef< Module > > FindModule(const Node &ModuleContainer, const CUTF8StringView &ModuleName)
Definition tLang.cpp:2254
uLang::EPackageRole _Role
Definition VstNode.h:965
LArray< CUTF8String > _DependencyPackages
Definition VstNode.h:959
VERSECOMPILER_API TSRef< Module > FindOrAddModule(const CUTF8StringView &ModuleName, const CUTF8StringView &ParentModuleName=CUTF8StringView())
Definition tLang.cpp:2233
Package(const CUTF8StringView &Name)
Definition VstNode.h:943
EVerseScope _VerseScope
Definition VstNode.h:968
uLang::TOptional< CUTF8String > _VniDestDir
Definition VstNode.h:962
CUTF8String _Name
Definition VstNode.h:947
bool _bEnableSceneGraph
Definition VstNode.h:988
uLang::TOptional< uint32_t > _VerseVersion
Definition VstNode.h:971
bool _bAllowExperimental
Definition VstNode.h:985
Definition VstNode.h:1912
VERSECOMPILER_API TSRef< Node > CloneNode() const override
Definition tLang.cpp:2737
Clause::EForm GetForm() const
Definition VstNode.h:1935
static const Vst::NodeType StaticType
Definition VstNode.h:1913
Parens(SLocus Whence, Clause::EForm Form, const NodeArray &InChildren={})
Definition VstNode.h:1915
Parens(SLocus Whence, Clause::EForm Form, const uLang::TSRefArray< Node > &InChildren)
Definition VstNode.h:1925
Definition VstNode.h:1967
VERSECOMPILER_API TSRef< Node > CloneNode() const override
Definition tLang.cpp:2486
ParseError(const char *Error, const SLocus &Whence)
Definition VstNode.h:1971
static const Vst::NodeType StaticType
Definition VstNode.h:1969
const char * GetError() const
Definition VstNode.h:1977
void AddChild(const TSRef< Vst::Node > &InnerError)
Definition VstNode.h:1979
Definition VstNode.h:1797
VERSECOMPILER_API TSRef< Node > CloneNode() const override
Definition tLang.cpp:2517
static const Vst::NodeType StaticType
Definition VstNode.h:1798
PathLiteral(const CUTF8StringView &InPath, const SLocus &Whence)
Definition VstNode.h:1800
Definition VstNode.h:1957
Placeholder(const uLang::CUTF8StringView &CodeStr, const SLocus &Whence)
Definition VstNode.h:1961
static const Vst::NodeType StaticType
Definition VstNode.h:1958
VERSECOMPILER_API TSRef< Node > CloneNode() const override
Definition tLang.cpp:2478
Placeholder(const SLocus &Whence)
Definition VstNode.h:1960
Definition VstNode.h:1679
VERSECOMPILER_API void AppendDotIdent(const SLocus &Whence, const TSRef< Identifier > &Ident)
Definition tLang.cpp:2357
VERSECOMPILER_API void AppendQMark(const SLocus &Whence)
Definition tLang.cpp:2341
VERSECOMPILER_API TSRef< Clause > PrependQMark(const SLocus &Whence)
Definition tLang.cpp:2321
VERSECOMPILER_API TSPtr< Clause > TakeLastArgs()
Definition tLang.cpp:2363
VERSECOMPILER_API void PrependCallArgs(bool bCanFail, const TSRef< Clause > &Args)
Definition tLang.cpp:2335
static const Vst::NodeType StaticType
Definition VstNode.h:1680
VERSECOMPILER_API TSRef< Node > CloneNode() const override
Definition tLang.cpp:2378
Op
Definition VstNode.h:1682
@ Pointer
Definition VstNode.h:1682
@ DotIdentifier
Definition VstNode.h:1682
@ Expression
Definition VstNode.h:1682
@ FailCall
Definition VstNode.h:1682
@ SureCall
Definition VstNode.h:1682
@ Option
Definition VstNode.h:1682
bool IsPostHat() const
Definition VstNode.h:1700
VERSECOMPILER_API void AppendCallArgs(bool bCanFail, const TSRef< Clause > &Args)
Definition tLang.cpp:2351
PrePostCall(const SLocus &Whence)
Definition VstNode.h:1689
VERSECOMPILER_API void AppendHat(const SLocus &Whence)
Definition tLang.cpp:2346
PrePostCall(const TSRef< Node > &FirstChild, const SLocus &Whence)
Definition VstNode.h:1684
bool IsSimpleCall() const
Definition VstNode.h:1693
VERSECOMPILER_API TSRef< Clause > PrependHat(const SLocus &Whence)
Definition tLang.cpp:2328
Definition VstNode.h:1298
const TSRef< Vst::Node > & GetInnerNode() const
Definition VstNode.h:1312
VERSECOMPILER_API TSRef< Node > CloneNode() const override
Definition tLang.cpp:2640
PrefixOpLogicalNot(const SLocus &Whence, const TSRef< Node > &Rhs)
Definition VstNode.h:1300
static const Vst::NodeType StaticType
Definition VstNode.h:1299
PrefixOpLogicalNot(const SLocus &Whence)
Definition VstNode.h:1307
Definition VstNode.h:1000
bool RemovePackagesWithName(const CUTF8StringView &PackageName)
Definition VstNode.h:1021
bool ReplaceSnippet(const CUTF8StringView &PathOfOldSnippetToReplace, TSRef< Snippet > NewSnippet, TSPtr< Snippet > *OutOldSnippet=nullptr)
Definition VstNode.h:1048
static VERSECOMPILER_API uLang::TOptional< TSRef< Module > > FindModule(const Node &ModuleContainer, const CUTF8StringView &ModuleName)
static const Vst::NodeType StaticType
Definition VstNode.h:1001
CUTF8String _Name
Definition VstNode.h:1005
VERSECOMPILER_API TSRef< Node > CloneNode() const override
Definition tLang.cpp:2464
CUTF8String _FilePath
Definition VstNode.h:1008
VERSECOMPILER_API const TSRef< Module > & FindOrAddModule(const CUTF8StringView &ModuleName, const CUTF8StringView &FilePath, const CUTF8StringView &ParentModuleName=CUTF8StringView())
void CloneNodeFields(Project *DestNode) const
Definition tLang.cpp:2472
Project(const CUTF8StringView &Name)
Definition VstNode.h:1002
Snippet()
Definition VstNode.h:887
CUTF8String _Path
Definition VstNode.h:916
void SetForm(Clause::EForm Form)
Definition VstNode.h:907
Snippet(const CUTF8StringView &Path)
Definition VstNode.h:888
uint64_t _SnippetVersion
Definition VstNode.h:913
Snippet(const CUTF8StringView &Path, const TSRef< Vst::Node > &FirstChild)
Definition VstNode.h:889
VERSECOMPILER_API TSRef< Node > CloneNode() const override
Definition tLang.cpp:2525
void CloneNodeFields(Snippet *DestNode) const
Definition tLang.cpp:2533
static const Vst::NodeType StaticType
Definition VstNode.h:886
Snippet(const TSRef< Vst::Node > &FirstChild)
Definition VstNode.h:890
Clause::EForm GetForm() const
Definition VstNode.h:906
bool HasErrors() const
Definition VstNode.h:892
Definition VstNode.h:1786
StringLiteral(const SLocus &Whence, const CUTF8StringView &SyntaxSource)
Definition VstNode.h:1789
static const Vst::NodeType StaticType
Definition VstNode.h:1787
VERSECOMPILER_API TSRef< Node > CloneNode() const override
Definition tLang.cpp:2590
Definition VstNode.h:1466
TSRef< Vst::Node > TakeRhs()
Definition VstNode.h:1501
static const Vst::NodeType StaticType
Definition VstNode.h:1467
TypeSpec(const SLocus &Whence, const TSRef< Node > &Rhs)
Definition VstNode.h:1481
bool HasLhs() const
Definition VstNode.h:1497
TSRef< Vst::Node > GetLhs() const
Definition VstNode.h:1498
TSRef< Vst::Node > TakeLhs()
Definition VstNode.h:1499
TSRef< Vst::Node > GetRhs() const
Definition VstNode.h:1500
TypeSpec(const SLocus &Whence, const TSRef< Node > &Lhs, const TSRef< Node > &Rhs)
Definition VstNode.h:1472
void CloneNodeFields(TypeSpec *DestNode) const
Definition tLang.cpp:2630
void AppendTypeSpecComment(TSRef< Node > &&NewComment)
Definition VstNode.h:1509
VERSECOMPILER_API TSRef< Node > CloneNode() const override
Definition tLang.cpp:2622
TypeSpec(const SLocus &Whence)
Definition VstNode.h:1490
void AppendTypeSpecComment(const TSRef< Node > &NewComment)
Definition VstNode.h:1503
NodeArray _TypeSpecComments
Definition VstNode.h:1470
Definition VstNode.h:1374
Where(const SLocus &Whence, const TSRef< Node > &Lhs, const uLang::TSRefArray< Node > &RhsArray)
Definition VstNode.h:1390
Where(const SLocus &Whence, const TSRef< Node > &Lhs, const uLang::TArray< TSRef< Node > > &RhsArray)
Definition VstNode.h:1379
void SetLhs(TSRef< Node > Lhs)
Definition VstNode.h:1412
static const NodeType StaticType
Definition VstNode.h:1375
TSRef< Node > GetLhs() const
Definition VstNode.h:1407
Where(const SLocus &Whence)
Definition VstNode.h:1402
RhsView GetRhs() const
Definition VstNode.h:1417
VERSECOMPILER_API TSRef< Node > CloneNode() const override
Definition tLang.cpp:2713
This is used as a helper struct for storing the result of a signed distance check.
Definition VstNode.h:39
int32_t Distance
Definition VstNode.h:41
TSRef< Verse::Vst::Node > Node
Definition VstNode.h:40
Definition IndexedSourceText.h:13
Definition TextRange.h:20