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

#include <Field.h>

+ Inheritance diagram for FField:

Public Types

typedef FField Super
 
typedef FField ThisClass
 
typedef FField BaseFieldClass
 
typedef FFieldClass FieldTypeClass
 
using FLinkedListBuilder = TLinkedListBuilder< FField >
 

Public Member Functions

virtual SIZE_T GetFieldSize () const
 
COREUOBJECT_API FField (EInternal InInernal, FFieldClass *InClass)
 
COREUOBJECT_API FField (FFieldVariant InOwner, const FName &InName, EObjectFlags InObjectFlags)
 
virtual COREUOBJECT_API ~FField ()
 
virtual COREUOBJECT_API void Serialize (FArchive &Ar)
 
virtual COREUOBJECT_API void PostLoad ()
 
virtual COREUOBJECT_API void GetPreloadDependencies (TArray< UObject * > &OutDeps)
 
virtual COREUOBJECT_API void BeginDestroy ()
 
virtual COREUOBJECT_API void AddReferencedObjects (FReferenceCollector &Collector)
 
COREUOBJECT_API bool IsRooted () const
 
COREUOBJECT_API bool IsNative () const
 
COREUOBJECT_API bool IsValidLowLevel () const
 
COREUOBJECT_API bool IsIn (const UObject *InOwner) const
 
COREUOBJECT_API bool IsIn (const FField *InOwner) const
 
COREUOBJECT_API FLinkerLoadGetLinker () const
 
virtual COREUOBJECT_API void AddCppProperty (FProperty *Property)
 
virtual COREUOBJECT_API void Bind ()
 
virtual COREUOBJECT_API void PostDuplicate (const FField &InField)
 
EObjectFlags GetFlags () const
 
void SetFlags (EObjectFlags NewFlags)
 
void ClearFlags (EObjectFlags NewFlags)
 
bool HasAnyFlags (EObjectFlags FlagsToCheck) const
 
bool HasAllFlags (EObjectFlags FlagsToCheck) const
 
FFieldClassGetClass () const
 
uint64 GetCastFlags () const
 
bool IsA (const FFieldClass *FieldType) const
 
template<typename T >
bool IsA () const
 
bool HasAnyCastFlags (const uint64 InCastFlags) const
 
bool HasAllCastFlags (const uint64 InCastFlags) const
 
void AppendName (FString &ResultString) const
 
FFieldVariant GetOwnerVariant () const
 
UObjectGetOwnerUObject () const
 
UE_FORCEINLINE_HINT UObjectInternalGetOwnerAsUObjectUnsafe () const
 
COREUOBJECT_API UClassGetOwnerClass () const
 
COREUOBJECT_API UStructGetOwnerStruct () const
 
COREUOBJECT_API UFieldGetOwnerUField () const
 
COREUOBJECT_API UPackageGetOutermost () const
 
COREUOBJECT_API UObjectGetTypedOwner (UClass *Target) const
 
COREUOBJECT_API FFieldGetTypedOwner (FFieldClass *Target) const
 
template<typename T >
T * GetOwner () const
 
template<typename T >
FUNCTION_NON_NULL_RETURN_START T * GetOwnerChecked () const FUNCTION_NON_NULL_RETURN_END
 
template<typename T >
T * GetTypedOwner () const
 
FName GetFName () const
 
FString GetName () const
 
void GetName (FString &OutName) const
 
COREUOBJECT_API void Rename (const FName &NewName)
 
COREUOBJECT_API FString GetPathName (const UObject *StopOuter=nullptr) const
 
COREUOBJECT_API void GetPathName (const UObject *StopOuter, FStringBuilderBase &ResultString) const
 
COREUOBJECT_API FString GetFullName () const
 
COREUOBJECT_API FString GetAuthoredName () const
 
virtual FFieldGetInnerFieldByName (const FName &InName)
 
virtual void GetInnerFields (TArray< FField * > &OutFields)
 

Static Public Member Functions

static COREUOBJECT_API FFieldClassStaticClass ()
 
static constexpr EClassCastFlags StaticClassCastFlagsPrivate ()
 
static constexpr EClassCastFlags StaticClassCastFlags ()
 
static COREUOBJECT_API FFieldConstruct (const FFieldVariant &InOwner, const FName &InName, EObjectFlags InFlags)
 
static COREUOBJECT_API FFieldConstruct (const FName &FieldTypeName, const FFieldVariant &InOwner, const FName &InName, EObjectFlags InFlags)
 
static COREUOBJECT_API FFieldTryConstruct (const FName &FieldTypeName, const FFieldVariant &InOwner, const FName &InName, EObjectFlags InFlags)
 
static COREUOBJECT_API FFieldDuplicate (const FField *InField, FFieldVariant DestOwner, const FName DestName=NAME_None, EObjectFlags FlagMask=RF_AllFlags, EInternalObjectFlags InternalFlagsMask=EInternalObjectFlags_AllFlags)
 
static COREUOBJECT_API FName GenerateFFieldName (FFieldVariant InOwner, FFieldClass *InClass)
 

Public Attributes

FFieldVariant Owner
 
FFieldNext
 
FName NamePrivate
 
EObjectFlags FlagsPrivate
 

Protected Member Functions

void SetFlagsTo (EObjectFlags NewFlags)
 

Detailed Description

Base class of reflection data objects. NOTE: Take care with inline initializers in members of FField as it executes two-stage construction via operator new and the EInternal constructor.

Member Typedef Documentation

◆ BaseFieldClass

◆ FieldTypeClass

◆ FLinkedListBuilder

◆ Super

◆ ThisClass

Constructor & Destructor Documentation

◆ FField() [1/2]

FField::FField ( EInternal  InInernal,
FFieldClass InClass 
)

◆ FField() [2/2]

FField::FField ( FFieldVariant  InOwner,
const FName InName,
EObjectFlags  InObjectFlags 
)

◆ ~FField()

FField::~FField ( )
virtual

Member Function Documentation

◆ AddCppProperty()

void FField::AddCppProperty ( FProperty Property)
virtual

◆ AddReferencedObjects()

◆ AppendName()

void FField::AppendName ( FString &  ResultString) const
inline

◆ BeginDestroy()

void FField::BeginDestroy ( )
virtual

◆ Bind()

void FField::Bind ( )
virtual

◆ ClearFlags()

void FField::ClearFlags ( EObjectFlags  NewFlags)
inline

◆ Construct() [1/2]

FField * FField::Construct ( const FFieldVariant InOwner,
const FName InName,
EObjectFlags  InFlags 
)
static

Constructs a new field given its class

◆ Construct() [2/2]

FField * FField::Construct ( const FName FieldTypeName,
const FFieldVariant InOwner,
const FName InName,
EObjectFlags  InFlags 
)
static

Constructs a new field given the name of its class

◆ Duplicate()

FField * FField::Duplicate ( const FField InField,
FFieldVariant  DestOwner,
const FName  DestName = NAME_None,
EObjectFlags  FlagMask = RF_AllFlags,
EInternalObjectFlags  InternalFlagsMask = EInternalObjectFlags_AllFlags 
)
static

Duplicates an FField

◆ GenerateFFieldName()

FName FField::GenerateFFieldName ( FFieldVariant  InOwner,
FFieldClass InClass 
)
static

Generates a name for a Field of a given type. Each generated name is unique in the current runtime

Parameters
InOwnerUnused yet

◆ GetAuthoredName()

FString FField::GetAuthoredName ( ) const

Returns a human readable string that was assigned to this field at creation. By default this is the same as GetName() but it can be overridden if that is an internal-only name. This name is consistent in editor/cooked builds, is not localized, and is useful for data import/export.

◆ GetCastFlags()

uint64 FField::GetCastFlags ( ) const
inline

◆ GetClass()

FFieldClass * FField::GetClass ( ) const
inline

◆ GetFieldSize()

virtual SIZE_T FField::GetFieldSize ( ) const
inlinevirtual

◆ GetFlags()

EObjectFlags FField::GetFlags ( ) const
inline

Retrieve the object flags directly

Returns
Flags for this object

◆ GetFName()

FName FField::GetFName ( ) const
inline

◆ GetFullName()

FString FField::GetFullName ( ) const

◆ GetInnerFieldByName()

virtual FField * FField::GetInnerFieldByName ( const FName InName)
inlinevirtual

Returns an inner field by name if the field has any

Reimplemented in FEnumProperty, FOptionalProperty, FArrayProperty, FMapProperty, and FSetProperty.

◆ GetInnerFields()

virtual void FField::GetInnerFields ( TArray< FField * > &  OutFields)
inlinevirtual

Fills the provided array with all inner fields this field owns (recursively)

Reimplemented in FEnumProperty, FOptionalProperty, FArrayProperty, FMapProperty, and FSetProperty.

◆ GetLinker()

FLinkerLoad * FField::GetLinker ( ) const

◆ GetName() [1/2]

FString FField::GetName ( ) const
inline

◆ GetName() [2/2]

void FField::GetName ( FString &  OutName) const
inline

◆ GetOutermost()

UPackage * FField::GetOutermost ( ) const

Goes up the outer chain to look for the outermost package

◆ GetOwner()

template<typename T >
T * FField::GetOwner ( ) const
inline

◆ GetOwnerChecked()

template<typename T >
FUNCTION_NON_NULL_RETURN_START T * FField::GetOwnerChecked ( ) const
inline

◆ GetOwnerClass()

UClass * FField::GetOwnerClass ( ) const

Goes up the outer chain to look for a UClass

◆ GetOwnerStruct()

UStruct * FField::GetOwnerStruct ( ) const

Goes up the outer chain to look for a UStruct

◆ GetOwnerUField()

UField * FField::GetOwnerUField ( ) const

Goes up the outer chain to look for a UField

◆ GetOwnerUObject()

UObject * FField::GetOwnerUObject ( ) const
inline

Goes up the outer chain to look for a UObject. This function is used in GC so for performance reasons it has to be inlined

◆ GetOwnerVariant()

FFieldVariant FField::GetOwnerVariant ( ) const
inline

Gets the owner container for this field

◆ GetPathName() [1/2]

void FField::GetPathName ( const UObject StopOuter,
FStringBuilderBase ResultString 
) const

◆ GetPathName() [2/2]

FString FField::GetPathName ( const UObject StopOuter = nullptr) const

◆ GetPreloadDependencies()

void FField::GetPreloadDependencies ( TArray< UObject * > &  OutDeps)
virtual

◆ GetTypedOwner() [1/3]

template<typename T >
T * FField::GetTypedOwner ( ) const
inline

◆ GetTypedOwner() [2/3]

FField * FField::GetTypedOwner ( FFieldClass Target) const

Goes up the outer chain to look for the outer of the specified type

◆ GetTypedOwner() [3/3]

UObject * FField::GetTypedOwner ( UClass Target) const

Goes up the outer chain to look for the outer of the specified type

◆ HasAllCastFlags()

bool FField::HasAllCastFlags ( const uint64  InCastFlags) const
inline

◆ HasAllFlags()

bool FField::HasAllFlags ( EObjectFlags  FlagsToCheck) const
inline

Used to safely check whether all of the passed in flags are set.

Parameters
FlagsToCheckObject flags to check for
Returns
true if all of the passed in flags are set (including no flags passed in), false otherwise

◆ HasAnyCastFlags()

bool FField::HasAnyCastFlags ( const uint64  InCastFlags) const
inline

◆ HasAnyFlags()

bool FField::HasAnyFlags ( EObjectFlags  FlagsToCheck) const
inline

Used to safely check whether any of the passed in flags are set.

Parameters
FlagsToCheckObject flags to check for.
Returns
true if any of the passed in flags are set, false otherwise (including no flags passed in).

◆ InternalGetOwnerAsUObjectUnsafe()

UE_FORCEINLINE_HINT UObject * FField::InternalGetOwnerAsUObjectUnsafe ( ) const
inline

Internal function for quickly getting the owner of this object as UObject. FOR INTERNAL USE ONLY

◆ IsA() [1/2]

template<typename T >
bool FField::IsA ( ) const
inline

◆ IsA() [2/2]

bool FField::IsA ( const FFieldClass FieldType) const
inline

◆ IsIn() [1/2]

bool FField::IsIn ( const FField InOwner) const

◆ IsIn() [2/2]

bool FField::IsIn ( const UObject InOwner) const

◆ IsNative()

bool FField::IsNative ( ) const

◆ IsRooted()

bool FField::IsRooted ( ) const

◆ IsValidLowLevel()

bool FField::IsValidLowLevel ( ) const

◆ PostDuplicate()

◆ PostLoad()

void FField::PostLoad ( )
virtual

◆ Rename()

void FField::Rename ( const FName NewName)

◆ Serialize()

◆ SetFlags()

void FField::SetFlags ( EObjectFlags  NewFlags)
inline

◆ SetFlagsTo()

void FField::SetFlagsTo ( EObjectFlags  NewFlags)
inlineprotected

Set the object flags directly

◆ StaticClass()

FFieldClass * FField::StaticClass ( )
static

◆ StaticClassCastFlags()

static constexpr EClassCastFlags FField::StaticClassCastFlags ( )
inlinestaticconstexpr

◆ StaticClassCastFlagsPrivate()

static constexpr EClassCastFlags FField::StaticClassCastFlagsPrivate ( )
inlinestaticconstexpr

◆ TryConstruct()

FField * FField::TryConstruct ( const FName FieldTypeName,
const FFieldVariant InOwner,
const FName InName,
EObjectFlags  InFlags 
)
static

Tries to construct a new field given the name of its class. Returns null if the type does not exist.

Member Data Documentation

◆ ClassPrivate

FFieldClass* FField::ClassPrivate

Pointer to the class object representing the type of this FField

◆ FlagsPrivate

EObjectFlags FField::FlagsPrivate

Object flags

◆ NamePrivate

FName FField::NamePrivate

Name of this field

◆ Next

FField* FField::Next

Next Field in the linked list within the same owning struct - note that the list does not continue to parent structs

◆ Owner

FFieldVariant FField::Owner

Owner of this field


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