UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FInstancedStruct Struct Reference

#include <InstancedStruct.h>

Public Member Functions

UE_API FInstancedStruct ()
 
UE_API FInstancedStruct (const UScriptStruct *InScriptStruct)
 
UE_API FInstancedStruct (const FConstStructView InOther)
 
 FInstancedStruct (const FInstancedStruct &InOther)
 
 FInstancedStruct (FInstancedStruct &&InOther)
 
 ~FInstancedStruct ()
 
UE_API FInstancedStructoperator= (const FConstStructView InOther)
 
FInstancedStructoperator= (const FInstancedStruct &InOther)
 
FInstancedStructoperator= (FInstancedStruct &&InOther)
 
UE_API void InitializeAs (const UScriptStruct *InScriptStruct, const uint8 *InStructMemory=nullptr)
 
template<typename T , typename... TArgs>
T & InitializeAs (TArgs &&... InArgs)
 
UE_API bool Serialize (FArchive &Ar, UStruct *DefaultsStruct=nullptr, const void *Defaults=nullptr)
 
UE_API bool Identical (const FInstancedStruct *Other, uint32 PortFlags) const
 
UE_API void AddStructReferencedObjects (FReferenceCollector &Collector)
 
UE_API bool ExportTextItem (FString &ValueStr, FInstancedStruct const &DefaultValue, UObject *Parent, int32 PortFlags, UObject *ExportRootScope) const
 
UE_API bool ImportTextItem (const TCHAR *&Buffer, int32 PortFlags, UObject *Parent, FOutputDevice *ErrorText, FArchive *InSerializingArchive=nullptr)
 
UE_API bool SerializeFromMismatchedTag (const FPropertyTag &Tag, FStructuredArchive::FSlot Slot)
 
UE_API void GetPreloadDependencies (TArray< UObject * > &OutDeps)
 
UE_API bool NetSerialize (FArchive &Ar, UPackageMap *Map, bool &bOutSuccess)
 
UE_API bool FindInnerPropertyInstance (FName PropertyName, const FProperty *&OutProp, const void *&OutData) const
 
UE_API EPropertyVisitorControlFlow Visit (FPropertyVisitorContext &Context, const TFunctionRef< EPropertyVisitorControlFlow(const FPropertyVisitorContext &)> InFunc) const
 
UE_API voidResolveVisitedPathInfo (const FPropertyVisitorInfo &Info) const
 
const UScriptStructGetScriptStruct () const
 
const uint8GetMemory () const
 
UE_API void Reset ()
 
template<typename T >
const T & Get () const
 
template<typename T >
const T * GetPtr () const
 
uint8GetMutableMemory ()
 
template<typename T >
T & GetMutable ()
 
template<typename T >
T * GetMutablePtr ()
 
bool IsValid () const
 
bool operator== (const FInstancedStruct &Other) const
 
bool operator!= (const FInstancedStruct &Other) const
 
 DECLARE_DELEGATE_RetVal_ThreeParams (bool, FNetSerializeInstancedStruct, FInstancedStruct &, FArchive &, UPackageMap *)
 

Static Public Member Functions

template<typename T >
static FInstancedStruct Make ()
 
template<typename T >
static FInstancedStruct Make (const T &Struct)
 
template<typename T , typename... TArgs>
static FInstancedStruct Make (TArgs &&... InArgs)
 

Static Public Attributes

static UE_API FNetSerializeInstancedStruct NetSerializeScriptStructDelegate
 

Protected Member Functions

 FInstancedStruct (const UScriptStruct *InScriptStruct, uint8 *InStructMemory)
 
void ResetStructData ()
 
void SetStructData (const UScriptStruct *InScriptStruct, uint8 *InStructMemory)
 

Protected Attributes

TObjectPtr< const UScriptStructScriptStruct = nullptr
 
uint8StructMemory = nullptr
 

Detailed Description

FInstancedStruct works similarly as instanced UObject* property but is USTRUCTs.

Example:

UPROPERTY(EditAnywhere, Category = Foo, meta = (BaseStruct = "/Script/ModuleName.TestStructBase")) FInstancedStruct Test;

UPROPERTY(EditAnywhere, Category = Foo, meta = (BaseStruct = "/Script/ModuleName.TestStructBase")) TArray<FInstancedStruct> TestArray;

Constructor & Destructor Documentation

◆ FInstancedStruct() [1/6]

FInstancedStruct::FInstancedStruct ( )

◆ FInstancedStruct() [2/6]

FInstancedStruct::FInstancedStruct ( const UScriptStruct InScriptStruct)
explicit

◆ FInstancedStruct() [3/6]

FInstancedStruct::FInstancedStruct ( const FConstStructView  InOther)
explicit

This constructor is explicit to avoid accidentally converting struct views to instanced structs (which would result in costly copy of the struct to be made). Implicit conversion could happen e.g. when comparing FInstancedStruct to FConstStructView.

◆ FInstancedStruct() [4/6]

FInstancedStruct::FInstancedStruct ( const FInstancedStruct InOther)
inline

◆ FInstancedStruct() [5/6]

FInstancedStruct::FInstancedStruct ( FInstancedStruct &&  InOther)
inline

◆ ~FInstancedStruct()

FInstancedStruct::~FInstancedStruct ( )
inline

◆ FInstancedStruct() [6/6]

FInstancedStruct::FInstancedStruct ( const UScriptStruct InScriptStruct,
uint8 InStructMemory 
)
inlineprotected

Member Function Documentation

◆ AddStructReferencedObjects()

void FInstancedStruct::AddStructReferencedObjects ( FReferenceCollector Collector)

◆ DECLARE_DELEGATE_RetVal_ThreeParams()

FInstancedStruct::DECLARE_DELEGATE_RetVal_ThreeParams ( bool  ,
FNetSerializeInstancedStruct  ,
FInstancedStruct ,
FArchive ,
UPackageMap  
)

◆ ExportTextItem()

bool FInstancedStruct::ExportTextItem ( FString &  ValueStr,
FInstancedStruct const &  DefaultValue,
UObject Parent,
int32  PortFlags,
UObject ExportRootScope 
) const

◆ FindInnerPropertyInstance()

bool FInstancedStruct::FindInnerPropertyInstance ( FName  PropertyName,
const FProperty *&  OutProp,
const void *&  OutData 
) const

◆ Get()

template<typename T >
const T & FInstancedStruct::Get ( ) const
inline

Returns const reference to the struct, this getter assumes that all data is valid.

◆ GetMemory()

const uint8 * FInstancedStruct::GetMemory ( ) const
inline

Returns const pointer to struct memory.

◆ GetMutable()

template<typename T >
T & FInstancedStruct::GetMutable ( )
inline

Returns mutable reference to the struct, this getter assumes that all data is valid.

◆ GetMutableMemory()

uint8 * FInstancedStruct::GetMutableMemory ( )
inline

Returns a mutable pointer to struct memory.

◆ GetMutablePtr()

template<typename T >
T * FInstancedStruct::GetMutablePtr ( )
inline

Returns mutable pointer to the struct, or nullptr if cast is not valid.

◆ GetPreloadDependencies()

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

◆ GetPtr()

template<typename T >
const T * FInstancedStruct::GetPtr ( ) const
inline

Returns const pointer to the struct, or nullptr if cast is not valid.

◆ GetScriptStruct()

const UScriptStruct * FInstancedStruct::GetScriptStruct ( ) const
inline

Returns struct type.

◆ Identical()

bool FInstancedStruct::Identical ( const FInstancedStruct Other,
uint32  PortFlags 
) const

◆ ImportTextItem()

bool FInstancedStruct::ImportTextItem ( const TCHAR *&  Buffer,
int32  PortFlags,
UObject Parent,
FOutputDevice ErrorText,
FArchive InSerializingArchive = nullptr 
)

◆ InitializeAs() [1/2]

void FInstancedStruct::InitializeAs ( const UScriptStruct InScriptStruct,
const uint8 InStructMemory = nullptr 
)

Initializes from struct type and optional data.

◆ InitializeAs() [2/2]

template<typename T , typename... TArgs>
T & FInstancedStruct::InitializeAs ( TArgs &&...  InArgs)
inline

Initializes from struct type and emplace construct.

◆ IsValid()

bool FInstancedStruct::IsValid ( ) const
inline

Returns True if the struct is valid.

◆ Make() [1/3]

template<typename T >
static FInstancedStruct FInstancedStruct::Make ( )
inlinestatic

Creates a new FInstancedStruct from templated struct type.

◆ Make() [2/3]

template<typename T >
static FInstancedStruct FInstancedStruct::Make ( const T &  Struct)
inlinestatic

Creates a new FInstancedStruct from templated struct.

◆ Make() [3/3]

template<typename T , typename... TArgs>
static FInstancedStruct FInstancedStruct::Make ( TArgs &&...  InArgs)
inlinestatic

Creates a new FInstancedStruct from the templated type and forward all arguments to constructor.

◆ NetSerialize()

bool FInstancedStruct::NetSerialize ( FArchive Ar,
UPackageMap Map,
bool bOutSuccess 
)

◆ operator!=()

bool FInstancedStruct::operator!= ( const FInstancedStruct Other) const
inline

◆ operator=() [1/3]

FInstancedStruct & FInstancedStruct::operator= ( const FConstStructView  InOther)

◆ operator=() [2/3]

FInstancedStruct & FInstancedStruct::operator= ( const FInstancedStruct InOther)
inline

◆ operator=() [3/3]

FInstancedStruct & FInstancedStruct::operator= ( FInstancedStruct &&  InOther)
inline

◆ operator==()

bool FInstancedStruct::operator== ( const FInstancedStruct Other) const
inline

Comparison operators. Deep compares the struct instance when identical.

◆ Reset()

void FInstancedStruct::Reset ( )

Reset to empty.

◆ ResetStructData()

void FInstancedStruct::ResetStructData ( )
inlineprotected

◆ ResolveVisitedPathInfo()

void * FInstancedStruct::ResolveVisitedPathInfo ( const FPropertyVisitorInfo Info) const

◆ Serialize()

bool FInstancedStruct::Serialize ( FArchive Ar,
UStruct DefaultsStruct = nullptr,
const void Defaults = nullptr 
)

For StructOpsTypeTraits

◆ SerializeFromMismatchedTag()

bool FInstancedStruct::SerializeFromMismatchedTag ( const FPropertyTag Tag,
FStructuredArchive::FSlot  Slot 
)

◆ SetStructData()

void FInstancedStruct::SetStructData ( const UScriptStruct InScriptStruct,
uint8 InStructMemory 
)
inlineprotected

◆ Visit()

EPropertyVisitorControlFlow FInstancedStruct::Visit ( FPropertyVisitorContext Context,
const TFunctionRef< EPropertyVisitorControlFlow(const FPropertyVisitorContext &)>  InFunc 
) const

Member Data Documentation

◆ NetSerializeScriptStructDelegate

FInstancedStruct::FNetSerializeInstancedStruct FInstancedStruct::NetSerializeScriptStructDelegate
static

◆ ScriptStruct

TObjectPtr<const UScriptStruct> FInstancedStruct::ScriptStruct = nullptr
protected

◆ StructMemory

uint8* FInstancedStruct::StructMemory = nullptr
protected

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