5#include "Containers/Array.h"
8#include "Containers/Map.h"
56 template <
typename T,
typename Enable =
void>
62 using type =
typename std::underlying_type<T>::type;
327 template<
typename T,
typename Enable =
void>
328 struct UE_DEPRECATED(5.7,
"No longer used: The AttributeStorage handles all supported type traits internally now.") TAttributeTypeTraits
335 template<
typename ValueType>
336 static FString ToString(
const ValueType&
Value)
338 return TEXT(
"Unknown type");
342 template<
typename ValueType>
460 inline constexpr bool TIsStringType = std::is_same_v<T, FString> || std::is_same_v<T, FName> || std::is_same_v<T, FSoftObjectPath>;
496 template<
typename T,
typename Enable =
void>
593 :
public TAttributeHandle<TArray<std::underlying_type_t<typename T::ElementType>>>
667 template<
typename T,
typename = std::enable_if_t<TIsNonEnumType<T>>>
674 using UnderlyingType = std::underlying_type_t<E>;
682 using UnderlyingType =
uint8;
687 template<
typename T,
typename = std::enable_if_t<TIsArrayOfEnumType<T>>,
int = 0,
int = 0,
int = 0>
690 using UnderlyingType = std::underlying_type_t<typename T::ElementType>;
695 template<
typename T,
typename = std::enable_if_t<TIsArrayOfEnumAsByteType<T>>,
int = 0,
int = 0,
int = 0,
int = 0>
698 using UnderlyingType =
uint8;
724 template<
typename T,
typename = std::enable_if_t<TIsNonEnumType<T>>>
731 using UnderlyingType = std::underlying_type_t<E>;
739 using UnderlyingType =
uint8;
744 template<
typename ArrayOfE,
typename = std::enable_if_t<TIsArrayOfEnumType<ArrayOfE>>,
int = 0,
int = 0,
int = 0>
747 using UnderlyingType = std::underlying_type_t<typename ArrayOfE::ElementType>;
752 template<
typename ArrayOfB,
typename = std::enable_if_t<TIsArrayOfEnumAsByteType<ArrayOfB>>,
int = 0,
int = 0,
int = 0,
int = 0>
755 using UnderlyingType =
uint8;
765 template<
typename T,
typename = std::enable_if_t<TIsNonEnumType<T>>>
772 using UnderlyingType = std::underlying_type_t<E>;
780 using UnderlyingType =
uint8;
785 template<
typename ArrayOfE,
typename = std::enable_if_t<TIsArrayOfEnumType<ArrayOfE>>,
int = 0,
int = 0,
int = 0>
788 using UnderlyingType = std::underlying_type_t<typename ArrayOfE::ElementType>;
793 template<
typename ArrayOfB,
typename = std::enable_if_t<TIsArrayOfEnumAsByteType<ArrayOfB>>,
int = 0,
int = 0,
int = 0,
int = 0>
796 using UnderlyingType =
uint8;
1000 template<
typename T>
1006 template<
typename T>
1015 template<
typename MultiSizeType>
1018 template<
typename ArrayType>
1021 template<
typename T>
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition Archive.h:1208
virtual CORE_API void UsingCustomVersion(const struct FGuid &Guid)
Definition Archive.cpp:590
UE_FORCEINLINE_HINT bool IsLoading() const
Definition Archive.h:236
CORE_API int32 CustomVer(const struct FGuid &Key) const
Definition Archive.cpp:602
Definition NameTypes.h:617
Definition UnrealString.h.inl:34
TAttributeHandle(const TAttributeHandle< UnderlyingType > &Other)
Definition AttributeStorage.h:571
EAttributeStorageResult Get(B &Value) const
Definition AttributeStorage.h:576
uint8 UnderlyingType
Definition AttributeStorage.h:566
EAttributeStorageResult Set(const B &Value)
Definition AttributeStorage.h:581
friend FAttributeStorage
Definition AttributeStorage.h:587
EAttributeStorageResult Set(const E &Value)
Definition AttributeStorage.h:551
TAttributeHandle(const TAttributeHandle< UnderlyingType > &Other)
Definition AttributeStorage.h:539
friend FAttributeStorage
Definition AttributeStorage.h:557
EAttributeStorageResult Get(E &Value) const
Definition AttributeStorage.h:546
std::underlying_type_t< E > UnderlyingType
Definition AttributeStorage.h:534
EAttributeStorageResult Set(const T &Value)
Definition AttributeStorage.h:641
TAttributeHandle(const TAttributeHandle< TArray< UnderlyingType > > &Other)
Definition AttributeStorage.h:631
friend FAttributeStorage
Definition AttributeStorage.h:647
uint8 UnderlyingType
Definition AttributeStorage.h:626
EAttributeStorageResult Get(T &Value) const
Definition AttributeStorage.h:636
friend FAttributeStorage
Definition AttributeStorage.h:525
class FAttributeStorage * AttributeStorage
Definition AttributeStorage.h:520
FAttributeKey Key
Definition AttributeStorage.h:521
EAttributeStorageResult Set(const T &Value)
Definition AttributeStorage.h:611
EAttributeStorageResult Get(T &Value) const
Definition AttributeStorage.h:606
TAttributeHandle(const TAttributeHandle< TArray< UnderlyingType > > &Other)
Definition AttributeStorage.h:601
friend FAttributeStorage
Definition AttributeStorage.h:617
std::underlying_type_t< typename T::ElementType > UnderlyingType
Definition AttributeStorage.h:596
Definition AttributeStorage.h:497
Definition AttributeStorage.h:494
EAttributeStorageResult SetAttribute(const FAttributeKey &ElementAttributeKey, const T &Value)
Definition AttributeStorage.cpp:1955
TArray64< uint8 > AttributeStorage
Definition AttributeStorage.h:1032
EAttributeStorageResult RegisterAttribute(const FAttributeKey &ElementAttributeKey, const B &DefaultValue, EAttributeProperty AttributeProperty=EAttributeProperty::None)
Definition AttributeStorage.h:680
INTERCHANGECORE_API void SetDefragRatio(const float InDefragRatio)
Definition AttributeStorage.cpp:1933
INTERCHANGECORE_API FGuid GetStorageHash() const
Definition AttributeStorage.cpp:1405
EAttributeStorageResult MultiSizeSetAttribute(FAttributeAllocationInfo *AttributeAllocationInfo, int32 TargetAllocationIndex, const MultiSizeType &Value, const uint8 *SourceDataPtr, bool &bOutNeedsDefrag)
Definition AttributeStorage.cpp:1988
EAttributeStorageResult GetAttribute(const FAttributeKey &ElementAttributeKey, E &OutValue) const
Definition AttributeStorage.h:729
INTERCHANGECORE_API EAttributeStorageResult UnregisterAttribute(const FAttributeKey &ElementAttributeKey)
Definition AttributeStorage.cpp:1256
INTERCHANGECORE_API void Reserve(int64 NewAttributeCount, int64 NewStorageSize)
Definition AttributeStorage.cpp:1940
INTERCHANGECORE_API EAttributeTypes GetAttributeType(const FAttributeKey &ElementAttributeKey) const
Definition AttributeStorage.cpp:1358
void UpdateAllocationInfoHash(FAttributeAllocationInfo &AllocationInfo)
Definition AttributeStorage.cpp:2398
friend void CopyStorageAttributesInternal(const FAttributeStorage &SourceStorage, FAttributeStorage &DestinationStorage, const TArray< T > &AttributeKeys)
Definition AttributeStorage.cpp:1796
static uint64 GetValueSize(const T &Value)
Definition AttributeStorage.h:1008
void DefragInternal()
Definition AttributeStorage.cpp:2155
EAttributeStorageResult GetAttribute(const FAttributeKey &ElementAttributeKey, ArrayOfE &OutValue) const
Definition AttributeStorage.h:745
const FStringView GetFStringViewAttributeFromStorage(const uint8 *StorageData, const FAttributeAllocationInfo *AttributeAllocationInfo, int32 ElementIndex=0) const
Definition AttributeStorage.cpp:1961
INTERCHANGECORE_API void GetAttributeKeys(TArray< FAttributeKey > &AttributeKeys) const
Definition AttributeStorage.cpp:1378
INTERCHANGECORE_API FAttributeStorage & operator=(const FAttributeStorage &Other)
Definition AttributeStorage.cpp:1099
EAttributeStorageResult GetAttribute(const FAttributeKey &ElementAttributeKey, B &OutValue) const
Definition AttributeStorage.h:737
TAttributeHandle< ArrayOfE > GetAttributeHandle(const FAttributeKey &ElementAttributeKey) const
Definition AttributeStorage.h:786
void UpdateAllocationCount()
Definition AttributeStorage.cpp:2420
uint64 FragmentedMemoryCost
Definition AttributeStorage.h:1038
static INTERCHANGECORE_API void CompareStorage(const FAttributeStorage &BaseStorage, const FAttributeStorage &VersionStorage, TArray< FAttributeKey > &RemovedAttributes, TArray< FAttributeKey > &AddedAttributes, TArray< FAttributeKey > &ModifiedAttributes)
Definition AttributeStorage.cpp:1760
INTERCHANGECORE_API FGuid GetAttributeHash(const FAttributeKey &ElementAttributeKey) const
Definition AttributeStorage.cpp:1384
TAttributeHandle< ArrayOfB > GetAttributeHandle(const FAttributeKey &ElementAttributeKey) const
Definition AttributeStorage.h:794
float DefragRatio
Definition AttributeStorage.h:1044
EAttributeStorageResult RegisterAttribute(const FAttributeKey &ElementAttributeKey, const T &DefaultValue, EAttributeProperty AttributeProperty=EAttributeProperty::None)
Definition AttributeStorage.h:688
INTERCHANGECORE_API EAttributeStorageResult RegisterAttribute(const FAttributeKey &ElementAttributeKey, const T &DefaultValue, EAttributeProperty AttributeProperty=EAttributeProperty::None)
INTERCHANGECORE_API bool ContainAttribute(const FAttributeKey &ElementAttributeKey) const
Definition AttributeStorage.cpp:1370
INTERCHANGECORE_API EAttributeStorageResult GetAttribute(const FAttributeKey &ElementAttributeKey, T &OutValue) const
Definition AttributeStorage.cpp:1284
static INTERCHANGECORE_API void CopyStorageAttributes(const FAttributeStorage &SourceStorage, FAttributeStorage &DestinationStorage, const TArray< FAttributeKey > &AttributeKeys)
Definition AttributeStorage.cpp:1928
TAttributeHandle< E > GetAttributeHandle(const FAttributeKey &ElementAttributeKey) const
Definition AttributeStorage.h:770
EAttributeStorageResult RegisterAttribute(const FAttributeKey &ElementAttributeKey, const T &DefaultValue, EAttributeProperty AttributeProperty=EAttributeProperty::None)
Definition AttributeStorage.h:696
EAttributeStorageResult GetAttribute(const FAttributeKey &ElementAttributeKey, ArrayOfB &OutValue) const
Definition AttributeStorage.h:753
EAttributeStorageResult GenericArrayGetAttribute(const FAttributeKey &ElementAttributeKey, ArrayType &OutValue) const
Definition AttributeStorage.cpp:2075
friend FArchive & operator<<(FArchive &Ar, FAttributeStorage &Storage)
Definition AttributeStorage.h:895
INTERCHANGECORE_API TAttributeHandle< T > GetAttributeHandle(const FAttributeKey &ElementAttributeKey) const
EAttributeStorageResult RegisterAttribute(const FAttributeKey &ElementAttributeKey, const E &DefaultValue, EAttributeProperty AttributeProperty=EAttributeProperty::None)
Definition AttributeStorage.h:672
TAttributeHandle< B > GetAttributeHandle(const FAttributeKey &ElementAttributeKey) const
Definition AttributeStorage.h:778
INTERCHANGECORE_API bool AreAllocationInfosEqual(const FAttributeKey &BaseKey, const FAttributeAllocationInfo &BaseInfo, const FAttributeStorage &VersionStorage, const FAttributeAllocationInfo &VersionInfo) const
Definition AttributeStorage.cpp:1475
FAttributeStorage()=default
float GetDefragRatio() const
Definition AttributeStorage.h:887
FCriticalSection StorageMutex
Definition AttributeStorage.h:1055
TMap< FAttributeKey, FAttributeAllocationInfo > AttributeAllocationTable
Definition AttributeStorage.h:1029
uint32 AllocationCount
Definition AttributeStorage.h:1050
Definition OverriddenPropertySet.cpp:45
Definition SoftObjectPath.cpp:24
type
Definition TestServer.py:515
bool HasAttributeStorageAddOption(const EAttributeStorageAddOptions Options, const EAttributeStorageAddOptions RefOptions)
Definition AttributeStorage.h:421
bool IsAttributeStorageResultSuccess(const EAttributeStorageResult Result)
Definition AttributeStorage.h:392
EAttributeTypes
Definition AttributeStorage.h:196
constexpr bool TIsArrayOfEnumAsByteType
Definition AttributeStorage.h:469
constexpr bool TIsStringType
Definition AttributeStorage.h:460
EAttributeStorageAddOptions
Definition AttributeStorage.h:410
void LogAttributeStorageErrors(const EAttributeStorageResult Result, const FString OperationName, const FAttributeKey AttributeKey)
Definition AttributeStorage.cpp:1038
uint32 GetTypeHash(const FAttributeKey &AttributeKey)
Definition AttributeStorage.h:185
constexpr bool TIsNonEnumType
Definition AttributeStorage.h:472
FString AttributeTypeToString(EAttributeTypes AttributeType)
Definition AttributeStorage.cpp:859
EAttributeStorageResult
Definition AttributeStorage.h:351
@ Operation_Error_CannotFoundKey
@ Operation_Error_InvalidMultiSizeValueData
@ Operation_Error_CannotOverrideAttribute
@ Operation_Error_CannotRemoveAttribute
@ Operation_Error_WrongSize
@ Operation_Error_WrongType
@ Operation_Error_InvalidStorage
@ Operation_Error_AttributeAllocationCorrupted
EAttributeTypes StringToAttributeType(const FString &AttributeTypeString)
Definition AttributeStorage.cpp:986
EAttributeProperty
Definition AttributeStorage.h:430
constexpr bool TIsArrayOfStringType
Definition AttributeStorage.h:463
FString AttributeValueToString(const ValueType &Value)
Definition AttributeStorage.cpp:1001
constexpr bool TIsArrayOfEnumType
Definition AttributeStorage.h:466
bool HasAttributeProperty(const EAttributeProperty PropertyA, const EAttributeProperty PropertyB)
Definition AttributeStorage.h:440
bool HasAttributeStorageResult(const EAttributeStorageResult Result, const EAttributeStorageResult RefResult)
Definition AttributeStorage.h:383
Definition AdvancedWidgetsModule.cpp:13
Definition AttributeCurve.h:23
INTERCHANGECORE_API static const FGuid GUID
Definition InterchangeCustomVersion.h:28
@ MultipleAllocationsPerAttributeInStorageFixed
Definition InterchangeCustomVersion.h:20
Definition IsTEnumAsByte.h:20
Definition AttributeStorage.h:67
FAttributeKey(FAttributeKey &&Other)=default
FAttributeKey & operator=(FAttributeKey &&)=default
FAttributeKey & operator=(const FText &Other)
Definition AttributeStorage.h:125
FAttributeKey & operator=(const TCHAR *Other)
Definition AttributeStorage.h:131
FAttributeKey & operator=(FString &&Other)
Definition AttributeStorage.h:119
FAttributeKey & operator=(const FString &Other)
Definition AttributeStorage.h:113
bool operator==(const FAttributeKey &Other) const
Definition AttributeStorage.h:137
FAttributeKey(const FStringView &Other)
Definition AttributeStorage.h:82
FAttributeKey(FString &&Other)
Definition AttributeStorage.h:92
friend FArchive & operator<<(FArchive &Ar, FAttributeKey &AttributeKey)
Definition AttributeStorage.h:167
const FString & ToString() const
Definition AttributeStorage.h:173
FAttributeKey(const FText &Other)
Definition AttributeStorage.h:97
bool operator<=(const FAttributeKey &Other) const
Definition AttributeStorage.h:152
FAttributeKey(const FAttributeKey &Other)=default
bool operator>=(const FAttributeKey &Other) const
Definition AttributeStorage.h:162
FAttributeKey(const TCHAR *Other)
Definition AttributeStorage.h:102
bool operator<(const FAttributeKey &Other) const
Definition AttributeStorage.h:147
FName ToName() const
Definition AttributeStorage.h:178
FAttributeKey(const FString &Other)
Definition AttributeStorage.h:87
bool operator>(const FAttributeKey &Other) const
Definition AttributeStorage.h:157
bool operator!=(const FAttributeKey &Other) const
Definition AttributeStorage.h:142
FAttributeKey & operator=(const FName &Other)
Definition AttributeStorage.h:107
FAttributeKey(const FName &Other)
Definition AttributeStorage.h:77
FString Key
Definition AttributeStorage.h:68
FAttributeKey & operator=(const FAttributeKey &)=default
Definition AttributeStorage.h:921
bool operator==(const FAttributeAllocationInfo &Other) const
Definition AttributeStorage.h:937
FAttributeAllocationInfo()
Definition AttributeStorage.h:924
friend FArchive & operator<<(FArchive &Ar, FAttributeAllocationInfo &AttributeAllocationInfo)
Definition AttributeStorage.h:948
TArray< uint64 > Offsets
Definition AttributeStorage.h:927
EAttributeTypes Type
Definition AttributeStorage.h:931
EAttributeProperty Property
Definition AttributeStorage.h:933
FGuid Hash
Definition AttributeStorage.h:935
TArray< uint64 > Sizes
Definition AttributeStorage.h:929
T ElementType
Definition AttributeStorage.h:477
Definition AttributeStorage.h:453
static constexpr bool bIsArrayOfEnumAsByteType
Definition AttributeStorage.h:456
static constexpr bool bIsArrayOfStringType
Definition AttributeStorage.h:454
static constexpr bool bIsArrayOfEnumType
Definition AttributeStorage.h:455
Definition WindowsRedistributableValidation.h:9