UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
uLang::CExpressionBase Class Referenceabstract

#include <Expression.h>

+ Inheritance diagram for uLang::CExpressionBase:

Classes

struct  SAnalysisResult
 

Public Types

using TMacroSymbols = TArrayG< CSymbol, TInlineElementAllocator< 3 > >
 
- Public Types inherited from uLang::CAttributable
enum class  EAttributableScope : uint8_t {
  Module , Class , Struct , Data ,
  Function , Enum , Enumerator , AttributeClass ,
  Interface , Expression , TypeDefinition , ScopedAccessLevel ,
  ClassTypeFunction , AttributeClassTypeFunction , InterfaceTypeFunction
}
 

Public Member Functions

 CExpressionBase (EVstMappingType VstMappingType=EVstMappingType::Ast)
 
 CExpressionBase (const CTypeBase *InResultType)
 
virtual const CExpressionBaseAsExpression () const override
 
virtual CExpressionBaseAsExpression () override
 
virtual bool MayHaveAttributes () const override
 
virtual bool CanBePathSegment (const TMacroSymbols &MacroSymbols) const
 
virtual void VisitImmediates (SAstVisitor &Visitor) const override
 
EInvokeTime DetermineInvokeTime (const CSemanticProgram &Program) const
 
virtual const CExpressionBaseFindFirstAsyncSubExpr (const CSemanticProgram &Program) const
 
virtual bool CanFail (const CAstPackage *Package) const
 
virtual UE_API const CTypeBaseGetResultType (const CSemanticProgram &Program) const
 
UE_API void SetResultType (const CTypeBase *InResultType)
 
UE_API void RefineResultType (const CTypeBase *RefinedResultType)
 
bool IsAnalyzed () const
 
virtual bool operator== (const CExpressionBase &Other) const =0
 
bool operator!= (const CExpressionBase &Other) const
 
const CTypeBaseIrGetResultType () const
 
void IrSetResultType (const CTypeBase *TypeBase)
 
template<typename TRange1 , typename TRange2 >
ULANG_FORCEINLINE bool AreSubExprsEqual (const TRange1 &Lhs, const TRange2 &Rhs)
 
- Public Member Functions inherited from uLang::CAstNode
 CAstNode (EVstMappingType VstMappingType=EVstMappingType::Ast)
 
virtual UE_API ~CAstNode ()
 
virtual EAstNodeType GetNodeType () const =0
 
virtual const CExprIdentifierBaseAsIdentifierBase () const
 
virtual void VisitChildren (SAstVisitor &Visitor) const
 
template<typename FunctionType >
ULANG_FORCEINLINE void VisitChildrenLambda (FunctionType &&Function) const
 
virtual CUTF8String GetErrorDesc () const =0
 
const Verse::Vst::NodeGetMappedVstNode () const
 
void SetNonReciprocalMappedVstNode (const Verse::Vst::Node *VstNode)
 
void SetIrMappedVstNode (const Verse::Vst::Node *VstNode)
 
bool IsIrNode () const
 
bool IsVstMappingReciprocal () const
 
template<typename FunctionType >
void VisitChildrenLambda (FunctionType &&Function) const
 
- Public Member Functions inherited from uLang::CSharedMix
 CSharedMix ()
 
virtual UE_API ~CSharedMix ()
 
 CSharedMix (const CSharedMix &Other)=delete
 
CSharedMixoperator= (const CSharedMix &Other)=delete
 
uint32_t GetRefCount () const
 
- Public Member Functions inherited from uLang::CAttributable
bool HasAttributes () const
 
UE_API bool HasAttributeClass (const CClass *AttributeClass, const CSemanticProgram &Program) const
 
UE_API bool HasAttributeSubclass (const CClass *AttributeClass, const CSemanticProgram &Program) const
 
UE_API int32_t GetAttributeClassCount (const CClass *AttributeClass, const CSemanticProgram &Program) const
 
UE_API TArray< const CExpressionBase * > GetAttributesWithAttribute (const CClass *AttributeClass, const CSemanticProgram &Program) const
 
UE_API const CExpressionBaseFindAttributeExpr (const CClass *AttributeClass, const CSemanticProgram &Program) const
 
UE_API const CExpressionBaseFindAttributeSubclassExpr (const CClass *AttributeClass, const CSemanticProgram &Program) const
 
UE_API const TArray< CExpressionBase * > FindAttributeExprs (const CClass *AttributeClass, const CSemanticProgram &Program) const
 
UE_API const TArray< CExpressionBase * > FindAttributeSubclassExprs (const CClass *AttributeClass, const CSemanticProgram &Program) const
 
UE_API TOptional< SAttributeFindAttribute (const CClass *AttributeClass, const CSemanticProgram &Program) const
 
UE_API TArray< SAttributeFindAttributes (const CClass *AttributeClass, const CSemanticProgram &Program) const
 
UE_API void AddAttributeClass (const CClass *AttributeClass)
 
UE_API void AddAttribute (SAttribute Attribute)
 
UE_API void RemoveAttributeClass (const CClass *AttributeClass, const CSemanticProgram &Program)
 
UE_API TOptional< CUTF8StringGetAttributeTextValue (const CClass *AttributeClass, const CSemanticProgram &Program) const
 
CAttributableoperator= (const CAttributable &Other)=delete
 
CAttributableoperator= (CAttributable &&Other)=delete
 
UE_API bool HasAttributeClassHack (const CClass *AttributeClass, const CSemanticProgram &) const
 
UE_API bool HasAttributeFunctionHack (const CFunction *AttributeFunction, const CSemanticProgram &) const
 

Static Public Member Functions

static bool BaseCompare (const CExpressionBase &A, const CExpressionBase &B)
 
static bool IsSubExprEqual (const CExpressionBase *Lhs, const CExpressionBase *Rhs)
 
static bool IsSubExprEqual (const CExpressionBase &Lhs, const CExpressionBase &Rhs)
 
static bool IsSubExprEqual (const TSPtr< CExpressionBase > &Lhs, const TSPtr< CExpressionBase > &Rhs)
 
static bool IsSubExprEqual (const TSRef< CExpressionBase > &Lhs, const TSRef< CExpressionBase > &Rhs)
 
template<typename TRange1 , typename TRange2 >
static bool AreSubExprsEqual (const TRange1 &, const TRange2 &)
 
- Static Public Member Functions inherited from uLang::CAttributable
static UE_API TOptional< CUTF8StringGetAttributeTextValue (const TArray< SAttribute > &Attributes, const CClass *AttributeClass, const CSemanticProgram &Program)
 

Protected Attributes

TOptional< SAnalysisResult_Report
 
- Protected Attributes inherited from uLang::CAstNode
EVstMappingType _VstMappingType
 
const Verse::Vst::Node_MappedVstNode {nullptr}
 

Additional Inherited Members

- Public Attributes inherited from uLang::CAttributable
TArray< SAttribute_Attributes
 
- Static Protected Member Functions inherited from uLang::CSharedMix
template<class ObjectType >
static TSPtrG< ObjectType, false, CHeapRawAllocatorSharedThis (ObjectType *This)
 
template<class ObjectType >
static TSPtrG< const ObjectType, false, CHeapRawAllocatorSharedThis (const ObjectType *This)
 

Detailed Description

Abstract base class for AST expressions. Created from abstract syntax tree (CExpressionBase and CSemanticProgram) generated by semantic analyzer.

Member Typedef Documentation

◆ TMacroSymbols

Constructor & Destructor Documentation

◆ CExpressionBase() [1/2]

uLang::CExpressionBase::CExpressionBase ( EVstMappingType  VstMappingType = EVstMappingType::Ast)
inlineexplicit

◆ CExpressionBase() [2/2]

uLang::CExpressionBase::CExpressionBase ( const CTypeBase InResultType)
inlineexplicit

Member Function Documentation

◆ AreSubExprsEqual() [1/2]

static bool uLang::CExpressionBase::AreSubExprsEqual ( const TRange1 ,
const TRange2  
)
static

◆ AreSubExprsEqual() [2/2]

ULANG_FORCEINLINE bool uLang::CExpressionBase::AreSubExprsEqual ( const TRange1 Lhs,
const TRange2 Rhs 
)

◆ AsExpression() [1/2]

virtual const CExpressionBase * uLang::CExpressionBase::AsExpression ( ) const
inlineoverridevirtual

Reimplemented from uLang::CAstNode.

◆ AsExpression() [2/2]

virtual CExpressionBase * uLang::CExpressionBase::AsExpression ( )
inlineoverridevirtual

Reimplemented from uLang::CAstNode.

◆ BaseCompare()

static bool uLang::CExpressionBase::BaseCompare ( const CExpressionBase A,
const CExpressionBase B 
)
inlinestatic

◆ CanBePathSegment()

virtual bool uLang::CExpressionBase::CanBePathSegment ( const TMacroSymbols MacroSymbols) const
inlinevirtual

◆ CanFail()

◆ DetermineInvokeTime()

EInvokeTime uLang::CExpressionBase::DetermineInvokeTime ( const CSemanticProgram Program) const
inline

◆ FindFirstAsyncSubExpr()

◆ GetResultType()

◆ IrGetResultType()

const CTypeBase * uLang::CExpressionBase::IrGetResultType ( ) const
inline

◆ IrSetResultType()

void uLang::CExpressionBase::IrSetResultType ( const CTypeBase TypeBase)
inline

◆ IsAnalyzed()

bool uLang::CExpressionBase::IsAnalyzed ( ) const
inline

◆ IsSubExprEqual() [1/4]

ULANG_FORCEINLINE bool uLang::CExpressionBase::IsSubExprEqual ( const CExpressionBase Lhs,
const CExpressionBase Rhs 
)
static

◆ IsSubExprEqual() [2/4]

ULANG_FORCEINLINE bool uLang::CExpressionBase::IsSubExprEqual ( const CExpressionBase Lhs,
const CExpressionBase Rhs 
)
static

◆ IsSubExprEqual() [3/4]

ULANG_FORCEINLINE bool uLang::CExpressionBase::IsSubExprEqual ( const TSPtr< CExpressionBase > &  Lhs,
const TSPtr< CExpressionBase > &  Rhs 
)
static

◆ IsSubExprEqual() [4/4]

ULANG_FORCEINLINE bool uLang::CExpressionBase::IsSubExprEqual ( const TSRef< CExpressionBase > &  Lhs,
const TSRef< CExpressionBase > &  Rhs 
)
static

◆ MayHaveAttributes()

◆ operator!=()

bool uLang::CExpressionBase::operator!= ( const CExpressionBase Other) const
inline

◆ operator==()

virtual bool uLang::CExpressionBase::operator== ( const CExpressionBase Other) const
pure virtual

Implemented in uLang::CIrMapAdd, uLang::CIrArrayUnsafeCall, uLang::CExprCompoundBase, uLang::CExprExternal, uLang::CExprLogic, uLang::CExprNumber, uLang::CExprChar, uLang::CExprString, uLang::CExprPath, uLang::CExprPathPlusSymbol, uLang::CExprIdentifierBase, uLang::CExprEnumLiteral, uLang::CExprType, uLang::CExprFunctionLiteral, uLang::CExprIdentifierBuiltInMacro, uLang::CExprIdentifierUnresolved, uLang::CExprIdentifierData, uLang::CExprIdentifierTypeAlias, uLang::CExprIdentifierTypeVariable, uLang::CExprIdentifierFunction, uLang::CExprIdentifierOverloadedFunction, uLang::CExprDefinition, uLang::CExprInvocation, uLang::CExprTupleElement, uLang::CExprAssignment, uLang::CExprShortCircuitAnd, uLang::CExprShortCircuitOr, uLang::CExprLogicalNot, uLang::CExprComparison, uLang::CExprMakeOption, uLang::CExprMakeRange, uLang::CExprInvokeType, uLang::CExprPointerToReference, uLang::CExprSet, uLang::CExprNewPointer, uLang::CExprReferenceToValue, uLang::CExprReturn, uLang::CExprIf, uLang::CExprIteration, uLang::CExprArrayTypeFormer, uLang::CExprGeneratorTypeFormer, uLang::CExprMapTypeFormer, uLang::CExprOptionTypeFormer, uLang::CExprSubtype, uLang::CExprTupleType, uLang::CExprArrow, uLang::CExprArchetypeInstantiation, uLang::CExprSubBlockBase, uLang::CExprBinaryAwaitOp, uLang::CExprBreak, uLang::CExprSnippet, uLang::CExprModuleDefinition, uLang::CExprEnumDefinition, uLang::CExprScopedAccessLevelDefinition, uLang::CExprInterfaceDefinition, uLang::CExprClassDefinition, uLang::CExprDataDefinition, uLang::CExprIterationPairDefinition, uLang::CIrArrayAdd, uLang::CIrConvertToDynamic, uLang::CIrConvertFromDynamic, uLang::CIrFor, uLang::CIrForBody, uLang::CExprFunctionDefinition, uLang::CExprTypeAliasDefinition, uLang::CExprUsing, uLang::CExprProfileBlock, uLang::CExprImport, uLang::CExprVar, uLang::CExprLive, uLang::CExprError, uLang::CExprPlaceholder, uLang::CExprWhere, and uLang::CExprMakeNamed.

◆ RefineResultType()

void uLang::CExpressionBase::RefineResultType ( const CTypeBase RefinedResultType)

◆ SetResultType()

void uLang::CExpressionBase::SetResultType ( const CTypeBase InResultType)

◆ VisitImmediates()

Member Data Documentation

◆ _Report

TOptional<SAnalysisResult> uLang::CExpressionBase::_Report
protected

The documentation for this class was generated from the following files: