9#include "InstancedStruct.generated.h"
11#define UE_API COREUOBJECT_API
30USTRUCT(BlueprintType, meta = (DisableSplitPin, HasNativeMake =
"/Script/Engine.BlueprintInstancedStructLibrary.MakeInstancedStruct"))
80 SetStructData(
InOther.GetScriptStruct(),
InOther.GetMutableMemory());
81 InOther.SetStructData(
nullptr,
nullptr);
90 template<
typename T,
typename...
TArgs>
93 UE::StructUtils::CheckStructType<T>();
102 Memory = GetMutableMemory();
126 UE::StructUtils::CheckStructType<T>();
130 return InstancedStruct;
137 UE::StructUtils::CheckStructType<T>();
141 return InstancedStruct;
145 template<
typename T,
typename...
TArgs>
148 UE::StructUtils::CheckStructType<T>();
152 return InstancedStruct;
187 return UE::StructUtils::GetStructRef<T>(ScriptStruct, StructMemory);
194 return UE::StructUtils::GetStructPtr<T>(ScriptStruct, StructMemory);
231 return GetMemory() !=
nullptr && GetScriptStruct() !=
nullptr;
261 StructMemory =
nullptr;
262 ScriptStruct =
nullptr;
305template<
typename BaseStructT>
315 template<
typename T = BaseStructT,
typename = std::enable_if_t<std::is_base_of_v<BaseStructT, std::decay_t<T>>>>
318 InitializeAsScriptStruct(
InOther.GetScriptStruct(),
InOther.GetMemory());
321 template<
typename T = BaseStructT,
typename = std::enable_if_t<std::is_base_of_v<BaseStructT, std::decay_t<T>>>>
327 template<
typename T = BaseStructT,
typename = std::enable_if_t<std::is_base_of_v<BaseStructT, std::decay_t<T>>>>
329 : InstancedStruct(
InOther.InstancedStruct)
333 template<
typename T = BaseStructT,
typename = std::enable_if_t<std::is_base_of_v<BaseStructT, std::decay_t<T>>>>
339 template<
typename T = BaseStructT,
typename = std::enable_if_t<std::is_base_of_v<BaseStructT, std::decay_t<T>>>>
349 template<
typename T = BaseStructT,
typename = std::enable_if_t<std::is_base_of_v<BaseStructT, std::decay_t<T>>>>
352 InstancedStruct =
InOther.InstancedStruct;
356 template<
typename T = BaseStructT,
typename = std::enable_if_t<std::is_base_of_v<BaseStructT, std::decay_t<T>>>>
371 template<
typename T =
BaseStructT,
typename...
TArgs,
typename = std::enable_if_t<std::is_base_of_v<BaseStructT, std::decay_t<T>>>>
378 template<
typename T = BaseStructT,
typename = std::enable_if_t<std::is_base_of_v<BaseStructT, std::decay_t<T>>>>
387 template<
typename T = BaseStructT,
typename = std::enable_if_t<std::is_base_of_v<BaseStructT, std::decay_t<T>>>>
396 template<
typename T =
BaseStructT,
typename...
TArgs,
typename = std::enable_if_t<std::is_base_of_v<BaseStructT, std::decay_t<T>>>>
407 return InstancedStruct.GetScriptStruct();
413 return InstancedStruct.GetMemory();
419 InstancedStruct.Reset();
423 template<
typename T = BaseStructT,
typename = std::enable_if_t<std::is_base_of_v<BaseStructT, std::decay_t<T>>>>
426 return InstancedStruct.Get<T>();
430 template<
typename T = BaseStructT,
typename = std::enable_if_t<std::is_base_of_v<BaseStructT, std::decay_t<T>>>>
433 return UE::StructUtils::GetStructPtr<T, BaseStructT>(InstancedStruct.GetScriptStruct(), InstancedStruct.GetMemory());
439 return InstancedStruct.GetMutableMemory();
443 template<
typename T = BaseStructT,
typename = std::enable_if_t<std::is_base_of_v<BaseStructT, std::decay_t<T>>>>
446 return InstancedStruct.GetMutable<T>();
450 template<
typename T = BaseStructT,
typename = std::enable_if_t<std::is_base_of_v<BaseStructT, std::decay_t<T>>>>
453 return UE::StructUtils::GetStructPtr<T, BaseStructT>(InstancedStruct.GetScriptStruct(), InstancedStruct.GetMutableMemory());
459 return InstancedStruct.IsValid();
463 template<
typename T = BaseStructT,
typename = std::enable_if_t<std::is_base_of_v<BaseStructT, std::decay_t<T>>>>
466 return InstancedStruct ==
Other.InstancedStruct;
469 template<
typename T = BaseStructT,
typename = std::enable_if_t<std::is_base_of_v<BaseStructT, std::decay_t<T>>>>
472 return InstancedStruct !=
Other.InstancedStruct;
477 InstancedStruct.AddStructReferencedObjects(Collector);
482 return InstancedStruct.Serialize(Ar);
487 return InstancedStruct.NetSerialize(Ar,
Map, bOutSuccess);
#define check(expr)
Definition AssertionMacros.h:314
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define USTRUCT(...)
Definition ObjectMacros.h:746
@ PPF_None
Definition PropertyPortFlags.h:15
EPropertyVisitorControlFlow
Definition PropertyVisitor.h:15
#define UE_API
Definition InstancedStruct.h:11
decltype(auto) Visit(Func &&Callable, Variants &&... Args)
Definition TVariant.h:271
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition Archive.h:1208
Definition NameTypes.h:617
Definition OutputDevice.h:133
Definition UnrealType.h:174
Definition UObjectGlobals.h:2492
Definition StructuredArchiveSlots.h:52
Definition AssetRegistryState.h:50
virtual COREUOBJECT_API void * ResolveVisitedPathInfo(void *Data, const FPropertyVisitorInfo &Info) const override
Definition Class.cpp:3871
virtual COREUOBJECT_API bool FindInnerPropertyInstance(FName PropertyName, const void *Data, const FProperty *&OutProp, const void *&OutData) const
Definition Class.cpp:3839
int16 MinAlignment
Definition Class.h:508
virtual COREUOBJECT_API void GetPreloadDependencies(TArray< UObject * > &OutDeps) override
Definition Class.cpp:750
Definition UserDefinedStruct.h:61
Definition SharedStruct.h:538
Definition StructView.h:217
Definition InstancedStruct.h:32
T & GetMutable()
Definition InstancedStruct.h:205
T & InitializeAs(TArgs &&... InArgs)
Definition InstancedStruct.h:91
T * GetMutablePtr()
Definition InstancedStruct.h:217
uint8 * GetMutableMemory()
Definition InstancedStruct.h:198
static FInstancedStruct Make()
Definition InstancedStruct.h:124
static UE_API FNetSerializeInstancedStruct NetSerializeScriptStructDelegate
Definition InstancedStruct.h:251
static FInstancedStruct Make(TArgs &&... InArgs)
Definition InstancedStruct.h:146
FInstancedStruct & operator=(const FInstancedStruct &InOther)
Definition InstancedStruct.h:65
bool operator!=(const FInstancedStruct &Other) const
Definition InstancedStruct.h:240
void ResetStructData()
Definition InstancedStruct.h:259
void SetStructData(const UScriptStruct *InScriptStruct, uint8 *InStructMemory)
Definition InstancedStruct.h:264
UE_API void InitializeAs(const UScriptStruct *InScriptStruct, const uint8 *InStructMemory=nullptr)
Definition InstancedStruct.cpp:69
static FInstancedStruct Make(const T &Struct)
Definition InstancedStruct.h:135
const T & Get() const
Definition InstancedStruct.h:185
FInstancedStruct(FInstancedStruct &&InOther)
Definition InstancedStruct.h:52
~FInstancedStruct()
Definition InstancedStruct.h:58
FInstancedStruct & operator=(FInstancedStruct &&InOther)
Definition InstancedStruct.h:74
DECLARE_DELEGATE_RetVal_ThreeParams(bool, FNetSerializeInstancedStruct, FInstancedStruct &, FArchive &, UPackageMap *)
const uint8 * GetMemory() const
Definition InstancedStruct.h:175
bool operator==(const FInstancedStruct &Other) const
Definition InstancedStruct.h:235
FInstancedStruct(const FInstancedStruct &InOther)
Definition InstancedStruct.h:47
FInstancedStruct(const UScriptStruct *InScriptStruct, uint8 *InStructMemory)
Definition InstancedStruct.h:255
bool IsValid() const
Definition InstancedStruct.h:229
const UScriptStruct * GetScriptStruct() const
Definition InstancedStruct.h:169
const T * GetPtr() const
Definition InstancedStruct.h:192
Definition PropertyTag.h:38
Definition PropertyVisitor.h:268
Definition PropertyVisitor.h:32
static UScriptStruct * Get()
Definition Class.h:5275
Definition SharedStruct.h:740
Definition StructView.h:328
Definition InstancedStruct.h:307
const uint8 * GetMemory() const
Definition InstancedStruct.h:411
TInstancedStruct & operator=(const TConstStructView< T > InOther)
Definition InstancedStruct.h:340
static TInstancedStruct Make(const T &Struct)
Definition InstancedStruct.h:388
TInstancedStruct & operator=(TInstancedStruct< T > &&InOther)
Definition InstancedStruct.h:357
T * GetMutablePtr()
Definition InstancedStruct.h:451
TInstancedStruct(const TConstStructView< T > InOther)
Definition InstancedStruct.h:316
void InitializeAsScriptStruct(const UScriptStruct *InScriptStruct, const uint8 *InStructMemory=nullptr)
Definition InstancedStruct.h:364
TInstancedStruct(TInstancedStruct< T > &&InOther)
Definition InstancedStruct.h:334
static TInstancedStruct Make()
Definition InstancedStruct.h:379
TInstancedStruct(const UScriptStruct *InScriptStruct)
Definition InstancedStruct.h:322
bool IsValid() const
Definition InstancedStruct.h:457
T & GetMutable()
Definition InstancedStruct.h:444
void AddReferencedObjects(FReferenceCollector &Collector)
Definition InstancedStruct.h:475
TInstancedStruct()=default
TInstancedStruct(const TInstancedStruct< T > &InOther)
Definition InstancedStruct.h:328
bool NetSerialize(FArchive &Ar, UPackageMap *Map, bool &bOutSuccess)
Definition InstancedStruct.h:485
uint8 * GetMutableMemory()
Definition InstancedStruct.h:437
void InitializeAs(TArgs &&... InArgs)
Definition InstancedStruct.h:372
static TInstancedStruct Make(TArgs &&... InArgs)
Definition InstancedStruct.h:397
const T & Get() const
Definition InstancedStruct.h:424
bool Serialize(FArchive &Ar)
Definition InstancedStruct.h:480
const UScriptStruct * GetScriptStruct() const
Definition InstancedStruct.h:405
bool operator!=(const TInstancedStruct< T > &Other) const
Definition InstancedStruct.h:470
TInstancedStruct & operator=(const TInstancedStruct< T > &InOther)
Definition InstancedStruct.h:350
bool operator==(const TInstancedStruct< T > &Other) const
Definition InstancedStruct.h:464
void Reset()
Definition InstancedStruct.h:417
const T * GetPtr() const
Definition InstancedStruct.h:431
Definition ObjectPtr.h:488
Definition StructOpsTypeTraits.h:11
@ WithStructuredSerializeFromMismatchedTag
Definition StructOpsTypeTraits.h:29
@ WithVisitor
Definition StructOpsTypeTraits.h:37
@ WithGetPreloadDependencies
Definition StructOpsTypeTraits.h:32
@ WithAddStructReferencedObjects
Definition StructOpsTypeTraits.h:22
@ WithNetSerializer
Definition StructOpsTypeTraits.h:26
@ WithFindInnerPropertyInstance
Definition StructOpsTypeTraits.h:34
@ WithClearOnFinishDestroy
Definition StructOpsTypeTraits.h:36
@ WithExportTextItem
Definition StructOpsTypeTraits.h:20
@ WithSerializer
Definition StructOpsTypeTraits.h:23
@ WithImportTextItem
Definition StructOpsTypeTraits.h:21
@ WithIdentical
Definition StructOpsTypeTraits.h:19
Definition StructOpsTypeTraits.h:46