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

#include <SemanticInterface.h>

+ Inheritance diagram for uLang::CInterface:

Public Member Functions

 CInterface (const CSymbol &Name, CScope &EnclosingScope, const TArray< CInterface * > &SuperInterfaces={})
 
 CInterface (CScope &EnclosingScope, const CSymbol &Name, const TArray< CInterface * > &SuperInterfaces, CInterface *GeneralizedInterface, TArray< STypeVariableSubstitution > TypeVariableSubstitutions, bool bHasCyclesBroken)
 
UE_API CInterface (CInterface *PositiveInterface)
 
SAccessLevel DerivedConstructorAccessLevel () const
 
virtual UE_API CUTF8String AsCodeRecursive (ETypeSyntaxPrecedence OuterPrecedence, TArray< const CFlowType * > &VisitedFlowTypes, bool bLinkable, ETypeStringFlag Flag) const override
 
virtual UE_API SmallDefinitionArray FindInstanceMember (const CSymbol &Name, EMemberOrigin Origin, const SQualifier &Qualifier=SQualifier::Unknown(), const CAstPackage *ContextPackage=nullptr, VisitStampType VisitStamp=CScope::GenerateNewVisitStamp()) const override
 
virtual UE_API EComparability GetComparability () const override
 
UE_API EComparability GetComparability (VisitStampType) const
 
virtual bool CanBeCustomAccessorDataType () const override
 
virtual bool CanBePredictsVarDataType () const override
 
virtual CSymbol GetScopeName () const override
 
virtual const CTypeBaseScopeAsType () const override
 
virtual const CDefinitionScopeAsDefinition () const override
 
virtual UE_API void CreateNegativeFunction (const CFunction &PositiveFunction) const override
 
virtual UE_API SmallDefinitionArray FindDefinitions (const CSymbol &Name, EMemberOrigin Origin=EMemberOrigin::InheritedOrOriginal, const SQualifier &Qualifier=SQualifier::Unknown(), const CAstPackage *ContextPackage=nullptr, VisitStampType VisitStamp=GenerateNewVisitStamp()) const override
 
virtual const CDefinitionDefinition () const override
 
void SetAstNode (CExprInterfaceDefinition *AstNode)
 
CExprInterfaceDefinitionGetAstNode () const
 
void SetIrNode (CExprInterfaceDefinition *AstNode)
 
CExprInterfaceDefinitionGetIrNode (bool bForce=false) const
 
virtual const CLogicalScopeDefinitionAsLogicalScopeNullable () const override
 
bool HasCyclesBroken () const
 
bool IsParametric () const
 
virtual bool IsPersistenceCompatConstraint () const override
 
UE_API bool IsUnique () const
 
UE_API bool HasCastableAttribute () const
 Does this interface hold a castable attribute?
 
UE_API const CNominalTypeFindExplicitlyCastableBase () const
 Return first class in the inheritance chain that contains the castable attribute. Otherwise null.
 
virtual bool IsPersistable () const override
 
virtual bool IsExplicitlyCastable () const override
 Is this interface castable either by having a castable attribute or inheriting one.
 
virtual bool IsExplicitlyConcrete () const override
 Interfaces are never explicitly concrete.
 
UE_API bool HasFinalSuperBaseAttribute () const
 Does this interface hold a <final_super_base> attribute?
 
UE_API bool IsInterface (const CInterface &Interface) const
 Determine if current interface is the same interface or a sub interface of the specified Interface
 
CSemanticProgramGetProgram () const
 
- Public Member Functions inherited from uLang::CDefinition
UE_API CDefinition (EKind Kind, CScope &EnclosingScope, const CSymbol &Name)
 
UE_API ~CDefinition ()
 
bool TryMarkOverriddenAndConstrainedDefinitionsVisited (VisitStampType VisitStamp) const
 
EKind GetKind () const
 
template<typename TDefinition >
TDefinitionAsChecked ()
 
template<typename TDefinition >
TDefinition const & AsChecked () const
 
template<typename TDefinition >
bool IsA () const
 
template<typename TDefinition >
TDefinitionAsNullable ()
 
template<typename TDefinition >
TDefinition const * AsNullable () const
 
const CDefinitionGetOverriddenDefinition () const
 
const CDefinitionGetBaseOverriddenDefinition () const
 
UE_API const CDefinitionGetBaseClassOverriddenDefinition () const
 
const CDefinitionGetPrototypeDefinition () const
 
void SetConstrainedDefinition (const CDefinition &ConstrainedDefinition)
 
const CDefinitionGetConstrainedDefinition () const
 
CExpressionBaseGetAstNode () const
 
CExpressionBaseGetIrNode (bool bForce=false) const
 
void SetAccessLevel (const TOptional< SAccessLevel > &AccessLevel)
 
const TOptional< SAccessLevel > & SelfAccessLevel () const
 
UE_API SAccessLevel DerivedAccessLevel () const
 
UE_API bool IsInstanceMember () const
 
UE_API bool IsDeprecated () const
 
UE_API bool IsExperimental () const
 
UE_API bool IsFinal () const
 
UE_API const CExpressionBaseGetNativeSpecifierExpression () const
 
UE_API bool IsNative () const
 
UE_API bool IsBuiltIn () const
 
const CDefinitionGetDefinitionAccessibilityRoot () const
 
UE_API bool IsAccessibleFrom (const CScope &) const
 
void SetOverriddenDefinition (const CDefinition &OverriddenDefinition)
 
void SetOverriddenDefinition (const CDefinition *OverriddenDefinition)
 
UE_API const CDefinitionGetEnclosingDefinition () const
 
bool IsExplicitlyLocallyQualified () const
 If the definition is explicitly qualified with the (local:) identifier.
 
bool IsLocallyQualified () const
 If the definition is implicitly local by virtue of being a definition within a function body/explicitly qualified as (local:).
 
UE_API SQualifier GetImplicitQualifier () const
 Determines the qualifier for this definition, even if not explicitly specified (from the original source).
 
UE_API void SetName (const CSymbol &NewName)
 
TOptional< uint64_tGetCombinedAvailableVersion () const
 
void SetCombinedAvailableVersion (uint64_t InAvailableVersion) const
 
template<typename TDefinition >
TDefinition const & AsChecked () 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
 
- Public Member Functions inherited from uLang::CNamed
ULANG_FORCEINLINE CNamed ()
 
ULANG_FORCEINLINE CNamed (const CSymbol &Name)
 
ULANG_FORCEINLINE CNamed (const CNamed &Source)
 
ULANG_FORCEINLINE CNamedoperator= (const CNamed &Source)
 
ULANG_FORCEINLINE operator const CSymbol & () const
 
ULANG_FORCEINLINE EEquate Compare (const CSymbol &Name) const
 
ULANG_FORCEINLINE bool operator== (const CSymbol &Name) const
 
ULANG_FORCEINLINE bool operator!= (const CSymbol &Name) const
 
ULANG_FORCEINLINE bool operator<= (const CSymbol &Name) const
 
ULANG_FORCEINLINE bool operator>= (const CSymbol &Name) const
 
ULANG_FORCEINLINE bool operator< (const CSymbol &Name) const
 
ULANG_FORCEINLINE bool operator> (const CSymbol &Name) const
 
ULANG_FORCEINLINE const CSymbolGetName () const
 
ULANG_FORCEINLINE SymbolId GetNameId () const
 
ULANG_FORCEINLINE CUTF8StringView AsNameStringView () const
 
ULANG_FORCEINLINE const charAsNameCString () const
 
ULANG_FORCEINLINE UTF8Char AsNameFirstByte () const
 
- Public Member Functions inherited from uLang::TAstNodeRef< CExpressionBase >
CExpressionBaseGetAstNode () const
 
CExpressionBaseGetIrNode (bool bForce=false) const
 
void SetAstNode (CExpressionBase *AstNode)
 
void SetIrNode (CExpressionBase *IrNode)
 
- 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::CNominalType
 CNominalType (ETypeKind Kind, CSemanticProgram &Program)
 
virtual const CNominalTypeAsNominalType () const override
 
- Public Member Functions inherited from uLang::CNormalType
 CNormalType (ETypeKind Kind, CSemanticProgram &Program)
 
ETypeKind GetKind () const
 
template<typename TType >
TType & AsChecked ()
 
template<typename TType >
TType const & AsChecked () const
 
template<typename TType >
bool IsA () const
 
template<typename TType >
TType * AsNullable ()
 
template<typename TType >
TType const * AsNullable () const
 
virtual const CTypeBaseGetReferenceValueType () const
 
virtual const CTypeBaseGetInnerType () const
 
UE_API SmallDefinitionArray FindInstanceMember (const CSymbol &MemberName, EMemberOrigin Origin, const SQualifier &Qualifier, const CAstPackage *ContextPackage=nullptr) const
 
UE_API SmallDefinitionArray FindTypeMember (const CSymbol &MemberName, EMemberOrigin Origin, const SQualifier &Qualifier) const
 
virtual SmallDefinitionArray FindTypeMember (const CSymbol &MemberName, EMemberOrigin Origin, const SQualifier &Qualifier, VisitStampType VisitStamp) const
 
virtual const CNormalTypeGetNormalType () const override
 
- Public Member Functions inherited from uLang::CTypeBase
 CTypeBase (CSemanticProgram &Program)
 
virtual ~CTypeBase ()
 
CSemanticProgramGetProgram () const
 
virtual CNamedTypeAsNamedType ()
 
virtual const CNamedTypeAsNamedType () const
 
virtual CFlowTypeAsFlowType ()
 
virtual const CFlowTypeAsFlowType () const
 
virtual const CAliasTypeAsAliasType () const
 
CUTF8String AsCode (ETypeSyntaxPrecedence OuterPrecedence=ETypeSyntaxPrecedence::Min, ETypeStringFlag Flag=ETypeStringFlag::Simple) const
 
CUTF8String AsParamsCode (ETypeSyntaxPrecedence OuterPrecedence=ETypeSyntaxPrecedence::Min, ETypeStringFlag Flag=ETypeStringFlag::Simple) const
 
virtual CUTF8String AsParamsCode (ETypeSyntaxPrecedence OuterPrecedence, TArray< const CFlowType * > &VisitedFlowTypes, bool WithColon, ETypeStringFlag Flag=ETypeStringFlag::Simple) const
 
CUTF8String AsLinkableCode () const
 
- Public Member Functions inherited from uLang::CLogicalScope
 CLogicalScope (EKind Kind, CScope *Parent, CSemanticProgram &Program)
 
virtual UE_API ~CLogicalScope ()
 
 CLogicalScope (const CLogicalScope &)=delete
 
 CLogicalScope (CLogicalScope &&)=delete
 
UE_API EIterateResult IterateRecurseLogicalScopes (const TFunction< EVisitResult(const CLogicalScope &)> &Functor) const
 Iterates through all the logical scopes nested inside this scope.
 
UE_API EIterateResult IterateRecurseLogicalScopes (TFunction< EVisitResult(const CLogicalScope &)> &&Functor) const
 
const TArray< TSRef< CDefinition > > & GetDefinitions () const
 
TMap< CSymbol, SmallDefinitionArray > & GetDefinitionNameMap ()
 
template<typename FilterClass >
TFilteredDefinitionRange< FilterClass > GetDefinitionsOfKind () const
 
template<typename FilterClass >
FilterClass * FindFirstDefinitionOfKind (const CSymbol &Name, EMemberOrigin Origin=EMemberOrigin::InheritedOrOriginal, const SQualifier &Qualifier=SQualifier::Unknown(), const CAstPackage *ContextPackage=nullptr, VisitStampType VisitStamp=GenerateNewVisitStamp()) const
 
virtual UE_API void SetRevision (SemanticRevision Revision)
 
SemanticRevision GetRevision () const
 
ULANG_FORCEINLINE bool TryMarkVisited (VisitStampType VisitStamp) const
 
int32_t AllocateNextDefinitionOrdinal ()
 
UE_API const CDefinitionFindOverrideFor (const CDefinition &Definition) const
 Get the matching override definition in this class for the argument, if there is any.
 
virtual const CLogicalScopeAsLogicalScopeNullable () const override
 Iff this scope is a logical scope, return it a pointer to it. Otherwise, return null.
 
virtual CLogicalScopeAsLogicalScopeNullable () override
 
UE_API SQualifier AsQualifier () const
 
void AddDefinitionToLogicalScope (TSRef< CDefinition > &&NewDefinition)
 
- Public Member Functions inherited from uLang::CScope
 CScope (EKind Kind, CScope *Parent, CSemanticProgram &Program)
 
virtual UE_API ~CScope ()
 
 CScope (const CScope &)=delete
 
 CScope (CScope &&)=delete
 
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 ()
 
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)
 
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
 

Public Attributes

CAttributable _EffectAttributable
 
TOptional< SAccessLevel_ConstructorAccessLevel
 
TArray< CInterface * > _SuperInterfaces
 
CInterface_GeneralizedInterface {this}
 
TArray< STypeVariableSubstitution_TypeVariableSubstitutions
 
TURefArray< CInterface_InstantiatedInterfaces
 
TUPtr< CInterface_OwnedNegativeInterface
 
CInterface_NegativeInterface
 
bool _bHasCyclesBroken { false }
 
- Public Attributes inherited from uLang::CDefinition
CScope_EnclosingScope
 
const int32_t _ParentScopeOrdinal
 
SQualifier _Qualifier
 
- Public Attributes inherited from uLang::CAttributable
TArray< SAttribute_Attributes
 

Static Public Attributes

static const ETypeKind StaticTypeKind = ETypeKind::Interface
 
static const CDefinition::EKind StaticDefinitionKind = CDefinition::EKind::Interface
 

Additional Inherited Members

- Public Types inherited from uLang::CDefinition
enum class  EKind : uint8_t { VISIT_KIND }
 
- 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 Types inherited from uLang::CScope
enum class  EKind : uint8_t {
  Program , CompatConstraintRoot , Module , ModulePart ,
  Snippet , Class , Function , ControlScope ,
  Interface , Type , Enumeration
}
 
using EPathMode = uLang::EPathMode
 
- Static Public Member Functions inherited from uLang::CAttributable
static UE_API TOptional< CUTF8StringGetAttributeTextValue (const TArray< SAttribute > &Attributes, const CClass *AttributeClass, const CSemanticProgram &Program)
 
- Static Public Member Functions inherited from uLang::CScope
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 inherited from uLang::CDefinition
void SetPrototypeDefinition (const CDefinition &PrototypeDefinition)
 
void SetAstNode (CExpressionBase *AstNode)
 
void SetIrNode (CExpressionBase *IrNode)
 
- Protected Member Functions inherited from uLang::CScope
UE_API bool CanAccess (const CDefinition &Definition, const SAccessLevel &DefinitionAccessLevel) const
 
- 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)
 
- Protected Attributes inherited from uLang::CNamed
CSymbol _Name
 
- Protected Attributes inherited from uLang::CLogicalScope
SemanticRevision _CumulativeRevision = 1
 When anything in this class (methods, data members etc.) or its subclasses was last modified/deleted.
 
VisitStampType _LastVisitStamp { 0 }
 
- Protected Attributes inherited from uLang::CScope
EKind _Kind
 
CScope_Parent
 
CSemanticProgram_Program
 
TArray< const CLogicalScope * > _UsingScopes
 
TArray< const CDataDefinition * > _UsingInstances
 
TSRefArray< CControlScope_NestedControlScopes
 
TSRefArray< CTypeScope_NestedTypeScopes
 

Detailed Description

A interface: a named set of function signatures that can be implemented for other types.

Constructor & Destructor Documentation

◆ CInterface() [1/3]

uLang::CInterface::CInterface ( const CSymbol Name,
CScope EnclosingScope,
const TArray< CInterface * > &  SuperInterfaces = {} 
)
inline

◆ CInterface() [2/3]

uLang::CInterface::CInterface ( CScope EnclosingScope,
const CSymbol Name,
const TArray< CInterface * > &  SuperInterfaces,
CInterface GeneralizedInterface,
TArray< STypeVariableSubstitution TypeVariableSubstitutions,
bool  bHasCyclesBroken 
)
inline

◆ CInterface() [3/3]

uLang::CInterface::CInterface ( CInterface PositiveInterface)
explicit

Member Function Documentation

◆ AsCodeRecursive()

CUTF8String uLang::CInterface::AsCodeRecursive ( ETypeSyntaxPrecedence  OuterPrecedence,
TArray< const CFlowType * > &  VisitedFlowTypes,
bool  bLinkable,
ETypeStringFlag  Flag 
) const
overridevirtual

Reimplemented from uLang::CNominalType.

◆ CanBeCustomAccessorDataType()

virtual bool uLang::CInterface::CanBeCustomAccessorDataType ( ) const
inlineoverridevirtual

Implements uLang::CTypeBase.

◆ CanBePredictsVarDataType()

virtual bool uLang::CInterface::CanBePredictsVarDataType ( ) const
inlineoverridevirtual

Reimplemented from uLang::CTypeBase.

◆ CreateNegativeFunction()

void uLang::CInterface::CreateNegativeFunction ( const CFunction PositiveFunction) const
overridevirtual

Reimplemented from uLang::CScope.

◆ Definition()

virtual const CDefinition * uLang::CInterface::Definition ( ) const
inlineoverridevirtual

Implements uLang::CNominalType.

◆ DefinitionAsLogicalScopeNullable()

virtual const CLogicalScope * uLang::CInterface::DefinitionAsLogicalScopeNullable ( ) const
inlineoverridevirtual

Reimplemented from uLang::CDefinition.

◆ DerivedConstructorAccessLevel()

SAccessLevel uLang::CInterface::DerivedConstructorAccessLevel ( ) const
inline

◆ FindDefinitions()

SmallDefinitionArray uLang::CInterface::FindDefinitions ( const CSymbol Name,
EMemberOrigin  Origin = EMemberOrigin::InheritedOrOriginal,
const SQualifier Qualifier = SQualifier::Unknown(),
const CAstPackage ContextPackage = nullptr,
VisitStampType  VisitStamp = GenerateNewVisitStamp() 
) const
overridevirtual

Reimplemented from uLang::CLogicalScope.

◆ FindExplicitlyCastableBase()

const CNominalType * uLang::CInterface::FindExplicitlyCastableBase ( ) const

Return first class in the inheritance chain that contains the castable attribute. Otherwise null.

◆ FindInstanceMember()

SmallDefinitionArray uLang::CInterface::FindInstanceMember ( const CSymbol Name,
EMemberOrigin  Origin,
const SQualifier Qualifier = SQualifier::Unknown(),
const CAstPackage ContextPackage = nullptr,
VisitStampType  VisitStamp = CScope::GenerateNewVisitStamp() 
) const
overridevirtual

Reimplemented from uLang::CNormalType.

◆ GetAstNode()

CExprInterfaceDefinition * uLang::CInterface::GetAstNode ( ) const
inline

◆ GetComparability() [1/2]

EComparability uLang::CInterface::GetComparability ( ) const
overridevirtual

Returns whether this type is comparable for equality

Reimplemented from uLang::CNormalType.

◆ GetComparability() [2/2]

EComparability uLang::CInterface::GetComparability ( VisitStampType  VisitStamp) const

◆ GetIrNode()

CExprInterfaceDefinition * uLang::CInterface::GetIrNode ( bool  bForce = false) const
inline

◆ GetProgram()

CSemanticProgram & uLang::CTypeBase::GetProgram ( ) const
inline

◆ GetScopeName()

virtual CSymbol uLang::CInterface::GetScopeName ( ) const
inlineoverridevirtual

Implements uLang::CScope.

◆ HasCastableAttribute()

bool uLang::CInterface::HasCastableAttribute ( ) const

Does this interface hold a castable attribute?

◆ HasCyclesBroken()

bool uLang::CInterface::HasCyclesBroken ( ) const
inline

◆ HasFinalSuperBaseAttribute()

bool uLang::CInterface::HasFinalSuperBaseAttribute ( ) const

Does this interface hold a <final_super_base> attribute?

◆ IsExplicitlyCastable()

virtual bool uLang::CInterface::IsExplicitlyCastable ( ) const
inlineoverridevirtual

Is this interface castable either by having a castable attribute or inheriting one.

Implements uLang::CNormalType.

◆ IsExplicitlyConcrete()

virtual bool uLang::CInterface::IsExplicitlyConcrete ( ) const
inlineoverridevirtual

Interfaces are never explicitly concrete.

Implements uLang::CNormalType.

◆ IsInterface()

bool uLang::CInterface::IsInterface ( const CInterface Interface) const

Determine if current interface is the same interface or a sub interface of the specified Interface

◆ IsParametric()

bool uLang::CInterface::IsParametric ( ) const
inline

◆ IsPersistable()

virtual bool uLang::CInterface::IsPersistable ( ) const
inlineoverridevirtual

Returns whether this type is persistable

Implements uLang::CNormalType.

◆ IsPersistenceCompatConstraint()

virtual bool uLang::CInterface::IsPersistenceCompatConstraint ( ) const
inlineoverridevirtual

Implements uLang::CDefinition.

◆ IsUnique()

bool uLang::CInterface::IsUnique ( ) const

◆ ScopeAsDefinition()

virtual const CDefinition * uLang::CInterface::ScopeAsDefinition ( ) const
inlineoverridevirtual

Reimplemented from uLang::CScope.

◆ ScopeAsType()

virtual const CTypeBase * uLang::CInterface::ScopeAsType ( ) const
inlineoverridevirtual

Reimplemented from uLang::CScope.

◆ SetAstNode()

void uLang::CInterface::SetAstNode ( CExprInterfaceDefinition AstNode)
inline

◆ SetIrNode()

void uLang::CInterface::SetIrNode ( CExprInterfaceDefinition AstNode)
inline

Member Data Documentation

◆ _bHasCyclesBroken

bool uLang::CInterface::_bHasCyclesBroken { false }

◆ _ConstructorAccessLevel

TOptional<SAccessLevel> uLang::CInterface::_ConstructorAccessLevel

◆ _EffectAttributable

CAttributable uLang::CInterface::_EffectAttributable

◆ _GeneralizedInterface

CInterface* uLang::CInterface::_GeneralizedInterface {this}

◆ _InstantiatedInterfaces

TURefArray<CInterface> uLang::CInterface::_InstantiatedInterfaces

◆ _NegativeInterface

CInterface* uLang::CInterface::_NegativeInterface

◆ _OwnedNegativeInterface

TUPtr<CInterface> uLang::CInterface::_OwnedNegativeInterface

◆ _SuperInterfaces

TArray<CInterface*> uLang::CInterface::_SuperInterfaces

◆ _TypeVariableSubstitutions

TArray<STypeVariableSubstitution> uLang::CInterface::_TypeVariableSubstitutions

◆ StaticDefinitionKind

const CDefinition::EKind uLang::CInterface::StaticDefinitionKind = CDefinition::EKind::Interface
static

◆ StaticTypeKind

const ETypeKind uLang::CInterface::StaticTypeKind = ETypeKind::Interface
static

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