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

#include <SemanticScope.h>

+ Inheritance diagram for uLang::CScope:

Public Types

enum class  EKind : uint8_t {
  Program , CompatConstraintRoot , Module , ModulePart ,
  Snippet , Class , Function , ControlScope ,
  Interface , Type , Enumeration
}
 
using EPathMode = uLang::EPathMode
 

Public Member Functions

 CScope (EKind Kind, CScope *Parent, CSemanticProgram &Program)
 
virtual UE_API ~CScope ()
 
 CScope (const CScope &)=delete
 
 CScope (CScope &&)=delete
 
virtual CSymbol GetScopeName () const =0
 
virtual const CTypeBaseScopeAsType () const
 
virtual const CDefinitionScopeAsDefinition () const
 
virtual SAccessLevel GetDefaultDefinitionAccessLevel () const
 
ULANG_FORCEINLINE EKind GetKind () const
 
ULANG_FORCEINLINE CScopeGetParentScope () const
 
UE_API CScopeGetScopeOfKind (EKind)
 
UE_API const CScopeGetScopeOfKind (EKind) const
 
UE_API CUTF8String GetScopePath (uLang::UTF8Char SeparatorChar='.', EPathMode Mode=EPathMode::Default) const
 
UE_API const CModuleGetModule () const
 
UE_API CModuleGetModule ()
 
UE_API const CModulePartGetModulePart () const
 
UE_API CModulePartGetModulePart ()
 
UE_API CAstPackageGetPackage () const
 
UE_API CAstCompilationUnitGetCompilationUnit () const
 
UE_API const CSnippetGetSnippet () const
 
UE_API CCaptureScopeGetCaptureScope ()
 
UE_API const CCaptureScopeGetCaptureScope () const
 
UE_API const TSPtr< CSymbolTable > & GetSymbols () const
 
ULANG_FORCEINLINE CSemanticProgramGetProgram () const
 
UE_API const CScopeGetParametricTypeScope () const
 If this is a parametric type, get the scope of those parameters; otherwise returns this scope.
 
UE_API const CLogicalScopeGetLogicalScope () const
 Get the innermost logical scope that is or contains this scope.
 
ULANG_FORCEINLINE CLogicalScopeGetLogicalScope ()
 
virtual const CLogicalScopeAsLogicalScopeNullable () const
 Iff this scope is a logical scope, return it a pointer to it. Otherwise, return null.
 
virtual CLogicalScopeAsLogicalScopeNullable ()
 
ULANG_FORCEINLINE bool IsLogicalScope () const
 
const CLogicalScopeGetEnclosingClassOrInterface () const
 
UE_API CLogicalScopeGetEnclosingClassOrInterface ()
 
UE_API bool IsSameOrChildOf (const CScope *Other) const
 
bool IsControlScope () const
 
UE_API bool IsInsideTypeScope () const
 
bool IsModuleOrSnippet () const
 
UE_API bool IsBuiltInScope () const
 
UE_API CModuleCreateModule (const CSymbol &ModuleName)
 
UE_API CClassDefinitionCreateClass (const CSymbol &ClassName, CClass *Superclass=nullptr, TArray< CInterface * > &&SuperInterfaces={}, EStructOrClass StructOrClass=EStructOrClass::Class)
 
UE_API CEnumerationCreateEnumeration (const CSymbol &EnumerationName)
 
UE_API CInterfaceCreateInterface (const CSymbol &InterfaceName, const TArray< CInterface * > &SuperInterfaces={})
 
UE_API TSRef< CFunctionCreateFunction (const CSymbol FunctionName)
 
virtual void CreateNegativeFunction (const CFunction &PositiveFunction) const
 
UE_API TSRef< CDataDefinitionCreateDataDefinition (const CSymbol VarName)
 
UE_API TSRef< CDataDefinitionCreateDataDefinition (const CSymbol VarName, const CTypeBase *Type)
 
virtual void CreateNegativeDataDefinition (const CDataDefinition &PositiveDataDefinition) const
 
UE_API TSRef< CTypeAliasCreateTypeAlias (const CSymbol Name)
 
UE_API TSRef< CTypeVariableCreateTypeVariable (const CSymbol Name, const CTypeBase *NegativeType, const CTypeBase *PositiveType)
 
UE_API TSRef< CModuleAliasCreateModuleAlias (const CSymbol Name)
 
UE_API TSRef< CScopedAccessLevelDefinitionCreateScopedAccessLevelDefinition (TOptional< CSymbol > ClassName)
 
void AddUsingScope (const CLogicalScope *UsingScope)
 
const TArray< const CLogicalScope * > & GetUsingScopes () const
 
UE_API const CDataDefinitionAddUsingInstance (const CDataDefinition *UsingContext)
 
const TArray< const CDataDefinition * > & GetUsingInstances () const
 
UE_API SResolvedDefinitionArray ResolveDefinition (const CSymbol &Name, const SQualifier &Qualifier=SQualifier::Unknown(), const CAstPackage *ContextPackage=nullptr) const
 Look for a definition in this scope and all parent scopes and aliases.
 
UE_API TSRef< CControlScopeCreateNestedControlScope ()
 
TSRef< CCaptureControlScopeCreateNestedCaptureControlScope ()
 
const TSRefArray< CControlScope > & GetNestedControlScopes () const
 
UE_API TSRef< CTypeScopeCreateNestedTypeScope ()
 
UE_API bool IsAuthoredByEpic () const
 
UE_API bool CanAccessEpicInternal () const
 

Static Public Member Functions

static UE_API const charKindToCString (EKind Kind)
 
static UE_API void ResolvedDefnsAppend (SResolvedDefinitionArray *ResolvedDefns, const SmallDefinitionArray &Definitions)
 
static UE_API void ResolvedDefnsAppendWithContext (SResolvedDefinitionArray *ResolvedDefns, const SmallDefinitionArray &Definitions, const CDataDefinition *Context)
 
static UE_API VisitStampType GenerateNewVisitStamp ()
 Generates a new stamp id.
 

Protected Member Functions

UE_API bool CanAccess (const CDefinition &Definition, const SAccessLevel &DefinitionAccessLevel) const
 

Protected Attributes

EKind _Kind
 
CScope_Parent
 
CSemanticProgram_Program
 
TArray< const CLogicalScope * > _UsingScopes
 
TArray< const CDataDefinition * > _UsingInstances
 
TSRefArray< CControlScope_NestedControlScopes
 
TSRefArray< CTypeScope_NestedTypeScopes
 

Friends

class CSemanticAnalyzerImpl
 
class CDefinition
 
class CDataDefinition
 

Detailed Description

A nested scope - program, module or class

Member Typedef Documentation

◆ EPathMode

Member Enumeration Documentation

◆ EKind

Enumerator
Program 
CompatConstraintRoot 
Module 
ModulePart 
Snippet 
Class 
Function 
ControlScope 
Interface 
Type 
Enumeration 

Constructor & Destructor Documentation

◆ CScope() [1/3]

uLang::CScope::CScope ( EKind  Kind,
CScope Parent,
CSemanticProgram Program 
)
inline

◆ ~CScope()

uLang::CScope::~CScope ( )
virtual

◆ CScope() [2/3]

uLang::CScope::CScope ( const CScope )
delete

◆ CScope() [3/3]

uLang::CScope::CScope ( CScope &&  )
delete

Member Function Documentation

◆ AddUsingInstance()

const CDataDefinition * uLang::CScope::AddUsingInstance ( const CDataDefinition UsingContext)

◆ AddUsingScope()

void uLang::CScope::AddUsingScope ( const CLogicalScope UsingScope)
inline

◆ AsLogicalScopeNullable() [1/2]

virtual CLogicalScope * uLang::CScope::AsLogicalScopeNullable ( )
inlinevirtual

Reimplemented in uLang::CModulePart, and uLang::CLogicalScope.

◆ AsLogicalScopeNullable() [2/2]

virtual const CLogicalScope * uLang::CScope::AsLogicalScopeNullable ( ) const
inlinevirtual

Iff this scope is a logical scope, return it a pointer to it. Otherwise, return null.

Reimplemented in uLang::CModulePart, and uLang::CLogicalScope.

◆ CanAccess()

bool uLang::CScope::CanAccess ( const CDefinition Definition,
const SAccessLevel DefinitionAccessLevel 
) const
protected

◆ CanAccessEpicInternal()

bool uLang::CScope::CanAccessEpicInternal ( ) const

◆ CreateClass()

CClassDefinition & uLang::CScope::CreateClass ( const CSymbol ClassName,
CClass Superclass = nullptr,
TArray< CInterface * > &&  SuperInterfaces = {},
EStructOrClass  StructOrClass = EStructOrClass::Class 
)

◆ CreateDataDefinition() [1/2]

TSRef< CDataDefinition > uLang::CScope::CreateDataDefinition ( const CSymbol  VarName)

◆ CreateDataDefinition() [2/2]

TSRef< CDataDefinition > uLang::CScope::CreateDataDefinition ( const CSymbol  VarName,
const CTypeBase Type 
)

◆ CreateEnumeration()

CEnumeration & uLang::CScope::CreateEnumeration ( const CSymbol EnumerationName)

◆ CreateFunction()

TSRef< CFunction > uLang::CScope::CreateFunction ( const CSymbol  FunctionName)

◆ CreateInterface()

CInterface & uLang::CScope::CreateInterface ( const CSymbol InterfaceName,
const TArray< CInterface * > &  SuperInterfaces = {} 
)

◆ CreateModule()

CModule & uLang::CScope::CreateModule ( const CSymbol ModuleName)

◆ CreateModuleAlias()

TSRef< CModuleAlias > uLang::CScope::CreateModuleAlias ( const CSymbol  Name)

◆ CreateNegativeDataDefinition()

virtual void uLang::CScope::CreateNegativeDataDefinition ( const CDataDefinition PositiveDataDefinition) const
inlinevirtual

Reimplemented in uLang::CClass.

◆ CreateNegativeFunction()

virtual void uLang::CScope::CreateNegativeFunction ( const CFunction PositiveFunction) const
inlinevirtual

Reimplemented in uLang::CClass, and uLang::CInterface.

◆ CreateNestedCaptureControlScope()

TSRef< CCaptureControlScope > uLang::CScope::CreateNestedCaptureControlScope ( )

◆ CreateNestedControlScope()

TSRef< CControlScope > uLang::CScope::CreateNestedControlScope ( )

◆ CreateNestedTypeScope()

TSRef< CTypeScope > uLang::CScope::CreateNestedTypeScope ( )

◆ CreateScopedAccessLevelDefinition()

TSRef< CScopedAccessLevelDefinition > uLang::CScope::CreateScopedAccessLevelDefinition ( TOptional< CSymbol ClassName)

◆ CreateTypeAlias()

TSRef< CTypeAlias > uLang::CScope::CreateTypeAlias ( const CSymbol  Name)

◆ CreateTypeVariable()

TSRef< CTypeVariable > uLang::CScope::CreateTypeVariable ( const CSymbol  Name,
const CTypeBase NegativeType,
const CTypeBase PositiveType 
)

◆ GenerateNewVisitStamp()

VisitStampType uLang::CScope::GenerateNewVisitStamp ( )
static

Generates a new stamp id.

◆ GetCaptureScope() [1/2]

CCaptureScope * uLang::CScope::GetCaptureScope ( )

◆ GetCaptureScope() [2/2]

const CCaptureScope * uLang::CScope::GetCaptureScope ( ) const

◆ GetCompilationUnit()

CAstCompilationUnit * uLang::CScope::GetCompilationUnit ( ) const

◆ GetDefaultDefinitionAccessLevel()

virtual SAccessLevel uLang::CScope::GetDefaultDefinitionAccessLevel ( ) const
inlinevirtual

Reimplemented in uLang::CClass, and uLang::CEnumeration.

◆ GetEnclosingClassOrInterface() [1/2]

uLang::CLogicalScope * uLang::CScope::GetEnclosingClassOrInterface ( )

◆ GetEnclosingClassOrInterface() [2/2]

const CLogicalScope * uLang::CScope::GetEnclosingClassOrInterface ( ) const
inline

◆ GetKind()

ULANG_FORCEINLINE EKind uLang::CScope::GetKind ( ) const
inline

◆ GetLogicalScope() [1/2]

ULANG_FORCEINLINE CLogicalScope & uLang::CScope::GetLogicalScope ( )
inline

◆ GetLogicalScope() [2/2]

const CLogicalScope & uLang::CScope::GetLogicalScope ( ) const

Get the innermost logical scope that is or contains this scope.

◆ GetModule() [1/2]

CModule * uLang::CScope::GetModule ( )

◆ GetModule() [2/2]

const CModule * uLang::CScope::GetModule ( ) const

◆ GetModulePart() [1/2]

CModulePart * uLang::CScope::GetModulePart ( )

◆ GetModulePart() [2/2]

const CModulePart * uLang::CScope::GetModulePart ( ) const

◆ GetNestedControlScopes()

const TSRefArray< CControlScope > & uLang::CScope::GetNestedControlScopes ( ) const
inline

◆ GetPackage()

CAstPackage * uLang::CScope::GetPackage ( ) const

◆ GetParametricTypeScope()

const CScope & uLang::CScope::GetParametricTypeScope ( ) const

If this is a parametric type, get the scope of those parameters; otherwise returns this scope.

◆ GetParentScope()

ULANG_FORCEINLINE CScope * uLang::CScope::GetParentScope ( ) const
inline

◆ GetProgram()

ULANG_FORCEINLINE CSemanticProgram & uLang::CScope::GetProgram ( ) const
inline

◆ GetScopeName()

◆ GetScopeOfKind() [1/2]

CScope * uLang::CScope::GetScopeOfKind ( EKind  Kind)

◆ GetScopeOfKind() [2/2]

const CScope * uLang::CScope::GetScopeOfKind ( EKind  Kind) const

◆ GetScopePath()

CUTF8String uLang::CScope::GetScopePath ( uLang::UTF8Char  SeparatorChar = '.',
EPathMode  Mode = EPathMode::Default 
) const

◆ GetSnippet()

const CSnippet * uLang::CScope::GetSnippet ( ) const

◆ GetSymbols()

const TSPtr< CSymbolTable > & uLang::CScope::GetSymbols ( ) const

◆ GetUsingInstances()

const TArray< const CDataDefinition * > & uLang::CScope::GetUsingInstances ( ) const
inline

◆ GetUsingScopes()

const TArray< const CLogicalScope * > & uLang::CScope::GetUsingScopes ( ) const
inline

◆ IsAuthoredByEpic()

bool uLang::CScope::IsAuthoredByEpic ( ) const

◆ IsBuiltInScope()

bool uLang::CScope::IsBuiltInScope ( ) const

◆ IsControlScope()

bool uLang::CScope::IsControlScope ( ) const
inline

◆ IsInsideTypeScope()

bool uLang::CScope::IsInsideTypeScope ( ) const

◆ IsLogicalScope()

ULANG_FORCEINLINE bool uLang::CScope::IsLogicalScope ( ) const
inline

◆ IsModuleOrSnippet()

bool uLang::CScope::IsModuleOrSnippet ( ) const
inline

◆ IsSameOrChildOf()

bool uLang::CScope::IsSameOrChildOf ( const CScope Other) const

◆ KindToCString()

const char * uLang::CScope::KindToCString ( CScope::EKind  Kind)
static

◆ ResolvedDefnsAppend()

void uLang::CScope::ResolvedDefnsAppend ( SResolvedDefinitionArray ResolvedDefns,
const SmallDefinitionArray Definitions 
)
static

◆ ResolvedDefnsAppendWithContext()

void uLang::CScope::ResolvedDefnsAppendWithContext ( SResolvedDefinitionArray ResolvedDefns,
const SmallDefinitionArray Definitions,
const CDataDefinition Context 
)
static

◆ ResolveDefinition()

SResolvedDefinitionArray uLang::CScope::ResolveDefinition ( const CSymbol Name,
const SQualifier Qualifier = SQualifier::Unknown(),
const CAstPackage ContextPackage = nullptr 
) const

Look for a definition in this scope and all parent scopes and aliases.

◆ ScopeAsDefinition()

virtual const CDefinition * uLang::CScope::ScopeAsDefinition ( ) const
inlinevirtual

◆ ScopeAsType()

virtual const CTypeBase * uLang::CScope::ScopeAsType ( ) const
inlinevirtual

Friends And Related Symbol Documentation

◆ CDataDefinition

friend class CDataDefinition
friend

◆ CDefinition

friend class CDefinition
friend

◆ CSemanticAnalyzerImpl

friend class CSemanticAnalyzerImpl
friend

Member Data Documentation

◆ _Kind

EKind uLang::CScope::_Kind
protected

◆ _NestedControlScopes

TSRefArray<CControlScope> uLang::CScope::_NestedControlScopes
protected

◆ _NestedTypeScopes

TSRefArray<CTypeScope> uLang::CScope::_NestedTypeScopes
protected

◆ _Parent

CScope* uLang::CScope::_Parent
protected

◆ _Program

CSemanticProgram& uLang::CScope::_Program
protected

◆ _UsingInstances

TArray<const CDataDefinition*> uLang::CScope::_UsingInstances
protected

◆ _UsingScopes

TArray<const CLogicalScope*> uLang::CScope::_UsingScopes
protected

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