UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
TypedElementDataStorageCompatibilityInterface.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
8#include "UObject/Interface.h"
9#include "UObject/ObjectKey.h"
11#include "UObject/ObjectPtr.h"
14
16{
22{
23public:
26
27 inline static const FName ObjectMappingDomain = "Object";
28
41 template<typename ObjectType>
42 RowHandle AddCompatibleObject(ObjectType&& Object);
43
45 template<typename ObjectType>
46 void RemoveCompatibleObject(ObjectType&& Object);
47
48 template<typename ObjectType>
49 RowHandle FindRowWithCompatibleObject(ObjectType&& Object) const;
50
75
85
87 virtual void RemoveCompatibleObjectExplicit(UObject* Object) = 0;
89 virtual void RemoveCompatibleObjectExplicit(void* Object) = 0;
90
92 virtual RowHandle FindRowWithCompatibleObjectExplicit(const UObject* Object) const = 0;
94 virtual RowHandle FindRowWithCompatibleObjectExplicit(const void* Object) const = 0;
95
101 virtual bool SupportsExtension(FName Extension) const = 0;
103 virtual void ListExtensions(TFunctionRef<void(FName)> Callback) const = 0;
104};
105
106template<typename Type> Type* GetRawPointer(const TWeakObjectPtr<Type> Object) { return Object.Get(); }
107template<typename Type> Type* GetRawPointer(const TObjectPtr<Type> Object) { return Object.Get(); }
108template<typename Type> Type* GetRawPointer(const TStrongObjectPtr<Type> Object){ return Object.Get(); }
109template<typename Type> Type* GetRawPointer(const TObjectKey<Type> Object) { return Object.ResolveObjectPtr(); }
110template<typename Type> Type* GetRawPointer(const TUniquePtr<Type> Object) { return Object.Get(); }
111template<typename Type> Type* GetRawPointer(const TSharedPtr<Type> Object) { return Object.Get(); }
112#if UE_ENABLE_NOTNULL_WRAPPER
113template<typename Type> Type* GetRawPointer(TNotNull<Type*> Object) { return Object; }
114#endif
115template<typename Type> Type* GetRawPointer(Type* Object) { return Object; }
116template<typename Type> Type* GetRawPointer(Type& Object) { return &Object; }
117
118template<typename ObjectType>
120{
121 auto RawPointer = GetRawPointer(Forward<ObjectType>(Object));
122 using BaseType = std::remove_cv_t<std::remove_pointer_t<decltype(RawPointer)>>;
123
124 if constexpr (std::is_base_of_v<UObject, BaseType>)
125 {
126 return AddCompatibleObjectExplicit(RawPointer);
127 }
128 else
129 {
130 return AddCompatibleObjectExplicit(RawPointer, BaseType::StaticStruct());
131 }
132}
133
134template<typename ObjectType>
139
140template<typename ObjectType>
145
146template<typename Subsystem>
148{
149 template<typename T, typename = void>
151 {
152 static constexpr bool bAvailable = false;
153 };
154 template<typename T>
155 struct HasRequiresGameThreadVariable <T, decltype((void)T::bRequiresGameThread)>
156 {
157 static constexpr bool bAvailable = true;
158 };
159
160 template<typename T, typename = void>
162 {
163 static constexpr bool bAvailable = false;
164 };
165 template<typename T>
167 {
168 static constexpr bool bAvailable = true;
169 };
170
171 static constexpr bool RequiresGameThread()
172 {
174 {
175 return Subsystem::bRequiresGameThread;
176 }
177 else
178 {
179 static_assert(HasRequiresGameThreadVariable<Subsystem>::bAvailable, "Subsystem provided to the Typed Elements did not "
180 "have a 'static constexpr bool bRequiresGameThread = true|false` declared or have a specialization for "
181 "TTypedElementSubsystemTraits.");
182 return true;
183 }
184 }
185
186 static constexpr bool IsHotReloadable()
187 {
189 {
190 return Subsystem::bIsHotReloadable;
191 }
192 else
193 {
194 static_assert(HasIsHotReloadableVariable<Subsystem>::bAvailable, "Subsystem provided to the Typed Elements did not "
195 "have a 'static constexpr bool bIsHotReloadable = true|false` declared or have a specialization for "
196 "TTypedElementSubsystemTraits.");
197 return false;
198 }
199 }
200};
201} // namespace UE::Editor::DataStorage
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
T TNotNull
Definition NotNull.h:307
const bool
Definition NetworkReplayStreaming.h:178
Definition NameTypes.h:617
Definition IModularFeature.h:12
Definition AssetRegistryState.h:50
Definition AndroidPlatformMisc.h:14
Definition ObjectKey.h:228
Definition SharedPointer.h:692
Definition StrongObjectPtrTemplates.h:26
Definition UniquePtr.h:107
Definition TypedElementDataStorageCompatibilityInterface.h:22
RowHandle AddCompatibleObject(ObjectType &&Object)
Definition TypedElementDataStorageCompatibilityInterface.h:119
virtual void RemoveCompatibleObjectExplicit(UObject *Object)=0
virtual void RegisterDealiaserCallback(ObjectToRowDealiaser Dealiaser)=0
virtual void ListExtensions(TFunctionRef< void(FName)> Callback) const =0
void RemoveCompatibleObject(ObjectType &&Object)
Definition TypedElementDataStorageCompatibilityInterface.h:135
static const FName ObjectMappingDomain
Definition TypedElementDataStorageCompatibilityInterface.h:27
virtual RowHandle AddCompatibleObjectExplicit(UObject *Object)=0
virtual void RegisterTypeTableAssociation(TWeakObjectPtr< UStruct > TypeInfo, TableHandle Table)=0
RowHandle FindRowWithCompatibleObject(ObjectType &&Object) const
Definition TypedElementDataStorageCompatibilityInterface.h:141
virtual RowHandle FindRowWithCompatibleObjectExplicit(const void *Object) const =0
virtual RowHandle AddCompatibleObjectExplicit(void *Object, TWeakObjectPtr< const UScriptStruct > TypeInfo)=0
virtual void RemoveCompatibleObjectExplicit(void *Object)=0
virtual RowHandle FindRowWithCompatibleObjectExplicit(const UObject *Object) const =0
virtual bool SupportsExtension(FName Extension) const =0
virtual void RegisterRegistrationFilter(ObjectRegistrationFilter Filter)=0
Definition Object.h:95
Definition CommonTypes.cpp:10
uint64 TableHandle
Definition Handles.h:12
uint64 RowHandle
Definition Handles.h:15
Type * GetRawPointer(const TWeakObjectPtr< Type > Object)
Definition TypedElementDataStorageCompatibilityInterface.h:106
Definition ObjectPtr.h:488
Definition WeakObjectPtrTemplates.h:25
Definition TypedElementDataStorageCompatibilityInterface.h:162
static constexpr bool bAvailable
Definition TypedElementDataStorageCompatibilityInterface.h:163
Definition TypedElementDataStorageCompatibilityInterface.h:151
static constexpr bool bAvailable
Definition TypedElementDataStorageCompatibilityInterface.h:152
Definition TypedElementDataStorageCompatibilityInterface.h:148
static constexpr bool RequiresGameThread()
Definition TypedElementDataStorageCompatibilityInterface.h:171
static constexpr bool IsHotReloadable()
Definition TypedElementDataStorageCompatibilityInterface.h:186