|
| | FAttributeStorage ()=default |
| |
| INTERCHANGECORE_API | FAttributeStorage (const FAttributeStorage &Other) |
| |
| INTERCHANGECORE_API FAttributeStorage & | operator= (const FAttributeStorage &Other) |
| |
| template<typename T , typename = std::enable_if_t<TIsNonEnumType<T>>> |
| INTERCHANGECORE_API EAttributeStorageResult | RegisterAttribute (const FAttributeKey &ElementAttributeKey, const T &DefaultValue, EAttributeProperty AttributeProperty=EAttributeProperty::None) |
| |
| template<typename E , typename = std::enable_if_t<TIsEnum<E>::Value>, int = 0> |
| EAttributeStorageResult | RegisterAttribute (const FAttributeKey &ElementAttributeKey, const E &DefaultValue, EAttributeProperty AttributeProperty=EAttributeProperty::None) |
| |
| template<typename B , typename = std::enable_if_t<TIsTEnumAsByte<B>::Value>, int = 0, int = 0> |
| EAttributeStorageResult | RegisterAttribute (const FAttributeKey &ElementAttributeKey, const B &DefaultValue, EAttributeProperty AttributeProperty=EAttributeProperty::None) |
| |
| template<typename T , typename = std::enable_if_t<TIsArrayOfEnumType<T>>, int = 0, int = 0, int = 0> |
| EAttributeStorageResult | RegisterAttribute (const FAttributeKey &ElementAttributeKey, const T &DefaultValue, EAttributeProperty AttributeProperty=EAttributeProperty::None) |
| |
| template<typename T , typename = std::enable_if_t<TIsArrayOfEnumAsByteType<T>>, int = 0, int = 0, int = 0, int = 0> |
| EAttributeStorageResult | RegisterAttribute (const FAttributeKey &ElementAttributeKey, const T &DefaultValue, EAttributeProperty AttributeProperty=EAttributeProperty::None) |
| |
| INTERCHANGECORE_API EAttributeStorageResult | UnregisterAttribute (const FAttributeKey &ElementAttributeKey) |
| |
| template<typename T , typename = std::enable_if_t<TIsNonEnumType<T>>> |
| INTERCHANGECORE_API EAttributeStorageResult | GetAttribute (const FAttributeKey &ElementAttributeKey, T &OutValue) const |
| |
| template<typename E , typename = std::enable_if_t<TIsEnum<E>::Value>, int = 0> |
| EAttributeStorageResult | GetAttribute (const FAttributeKey &ElementAttributeKey, E &OutValue) const |
| |
| template<typename B , typename = std::enable_if_t<TIsTEnumAsByte<B>::Value>, int = 0, int = 0> |
| EAttributeStorageResult | GetAttribute (const FAttributeKey &ElementAttributeKey, B &OutValue) const |
| |
| template<typename ArrayOfE , typename = std::enable_if_t<TIsArrayOfEnumType<ArrayOfE>>, int = 0, int = 0, int = 0> |
| EAttributeStorageResult | GetAttribute (const FAttributeKey &ElementAttributeKey, ArrayOfE &OutValue) const |
| |
| template<typename ArrayOfB , typename = std::enable_if_t<TIsArrayOfEnumAsByteType<ArrayOfB>>, int = 0, int = 0, int = 0, int = 0> |
| EAttributeStorageResult | GetAttribute (const FAttributeKey &ElementAttributeKey, ArrayOfB &OutValue) const |
| |
| template<typename T , typename = std::enable_if_t<TIsNonEnumType<T>>> |
| INTERCHANGECORE_API TAttributeHandle< T > | GetAttributeHandle (const FAttributeKey &ElementAttributeKey) const |
| |
| template<typename E , typename = std::enable_if_t<TIsEnum<E>::Value>, int = 0> |
| TAttributeHandle< E > | GetAttributeHandle (const FAttributeKey &ElementAttributeKey) const |
| |
| template<typename B , typename = std::enable_if_t<TIsTEnumAsByte<B>::Value>, int = 0, int = 0> |
| TAttributeHandle< B > | GetAttributeHandle (const FAttributeKey &ElementAttributeKey) const |
| |
| template<typename ArrayOfE , typename = std::enable_if_t<TIsArrayOfEnumType<ArrayOfE>>, int = 0, int = 0, int = 0> |
| TAttributeHandle< ArrayOfE > | GetAttributeHandle (const FAttributeKey &ElementAttributeKey) const |
| |
| template<typename ArrayOfB , typename = std::enable_if_t<TIsArrayOfEnumAsByteType<ArrayOfB>>, int = 0, int = 0, int = 0, int = 0> |
| TAttributeHandle< ArrayOfB > | GetAttributeHandle (const FAttributeKey &ElementAttributeKey) const |
| |
| INTERCHANGECORE_API EAttributeTypes | GetAttributeType (const FAttributeKey &ElementAttributeKey) const |
| |
| INTERCHANGECORE_API bool | ContainAttribute (const FAttributeKey &ElementAttributeKey) const |
| |
| INTERCHANGECORE_API void | GetAttributeKeys (TArray< FAttributeKey > &AttributeKeys) const |
| |
| INTERCHANGECORE_API FGuid | GetAttributeHash (const FAttributeKey &ElementAttributeKey) const |
| |
| INTERCHANGECORE_API bool | GetAttributeHash (const FAttributeKey &ElementAttributeKey, FGuid &OutGuid) const |
| |
| INTERCHANGECORE_API FGuid | GetStorageHash () const |
| |
| float | GetDefragRatio () const |
| |
| INTERCHANGECORE_API void | SetDefragRatio (const float InDefragRatio) |
| |
| INTERCHANGECORE_API void | Reserve (int64 NewAttributeCount, int64 NewStorageSize) |
| |
| template<typename T , typename > |
| EAttributeStorageResult | RegisterAttribute (const FAttributeKey &ElementAttributeKey, const T &DefaultValue, EAttributeProperty AttributeProperty) |
| |
| template<typename T , typename > |
| FAttributeStorage::TAttributeHandle< T > | GetAttributeHandle (const FAttributeKey &ElementAttributeKey) const |
| |
This class is a Key/Value storage inside a TArray64<uint8>. The keys are of type FAttributeKey, which is an FString. Each key is unique and has only one value. The value can be of any type contained in EAttributeTypes.
- Note
- The storage is multi-thread safe. It uses a mutex to lock the storage for every read/write operation. The hash of the storage is deterministic because it sorts the attributes before calculating the hash.