6#include "Containers/Array.h"
80 template<
typename FactoryT>
83 template<
typename FactoryT>
204 template<
typename FilterFunction>
213 template<TColumnType ColumnType>
222 template<TDataColumnType ColumnType>
247 template<TEnumType EnumT>
250 template<auto Value, TEnumType EnumT = decltype(Value)>
253 template<TDynamicColumnTemplate DynamicColumnTemplate>
256 template<TDynamicColumnTemplate DynamicColumnTemplate>
269 template<TColumnType Column>
272 template<TEnumType EnumT>
284 template<TDynamicColumnTemplate DynamicColumnTemplateType>
316 template<TDataColumnType ColumnType>
318 template<TDataColumnType ColumnType>
321 template<TDynamicColumnTemplate ColumnTypeTemplate>
323 template<TDynamicColumnTemplate ColumnTypeTemplate>
376 template<TDynamicColumnTemplate DynamicColumnTemplateType>
415 FName MappingDomain) = 0;
485 template<Queries::FunctionType Function>
491 template<
typename ResultType, Queries::FunctionType Function>
577 template<
typename SystemType>
589 UE_DEPRECATED(5.6,
"Use 'LookUpMappedRow' instead and use the new FMapKey(View) instead of the explicit 'GenerateIndexHash'-functions.")
622template <
typename FactoryT>
641template<
typename FilterFunction>
647template<TColumnType Column>
653template<TColumnType Column>
662 AddColumns(Row, { Columns::StaticStruct()...});
678template<TDynamicColumnTemplate DynamicColumnTemplate>
683 .TemplateType = DynamicColumnTemplate::StaticStruct(),
690template<TEnumType EnumT>
707template<auto Value, TEnumType EnumT>
713template <TDynamicColumnTemplate DynamicColumnTemplate>
718 .TemplateType = DynamicColumnTemplate::StaticStruct(),
725template <TDynamicColumnTemplate DynamicColumnTemplate>
730 .TemplateType = DynamicColumnTemplate::StaticStruct(),
737 if constexpr (std::is_move_constructible_v<DynamicColumnTemplate>)
748 if constexpr (std::is_move_assignable_v<DynamicColumnTemplate>)
750 *
static_cast<DynamicColumnTemplate*
>(Destination) =
MoveTemp(*
static_cast<DynamicColumnTemplate*
>(Source));
754 *
static_cast<DynamicColumnTemplate*
>(Destination) = *
static_cast<DynamicColumnTemplate*
>(Source);
760template<TEnumType EnumT>
767template<TColumnType... Columns>
773template<TDataColumnType ColumnType>
779 if constexpr (std::is_move_constructible_v<ColumnType>)
790 if constexpr (std::is_move_assignable_v<ColumnType>)
792 *
reinterpret_cast<ColumnType*
>(Destination) =
MoveTemp(*
reinterpret_cast<ColumnType*
>(Source));
796 *
reinterpret_cast<ColumnType*
>(Destination) = *
reinterpret_cast<ColumnType*
>(Source);
801template<TDataColumnType ColumnType>
804 return reinterpret_cast<ColumnType*
>(
GetColumnData(Row, ColumnType::StaticStruct()));
807template<TDataColumnType ColumnType>
810 return reinterpret_cast<const ColumnType*
>(
GetColumnData(Row, ColumnType::StaticStruct()));
813template <TDynamicColumnTemplate DynamicColumnTemplate>
818 .TemplateType = DynamicColumnTemplate::StaticStruct(),
824 return static_cast<DynamicColumnTemplate*
>(
GetColumnData(Row, StructInfo));
829template <TDynamicColumnTemplate DynamicColumnTemplate>
834 .TemplateType = DynamicColumnTemplate::StaticStruct(),
840 return static_cast<const DynamicColumnTemplate*
>(
GetColumnData(Row, StructInfo));
851template<
typename SystemType>
916template<TDynamicColumnTemplate DynamicColumnTemplateType>
922template<Queries::FunctionType Function>
928template<
typename ResultType, Queries::FunctionType Function>
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
Columns EContextCapabilityFlags::SupportsBatch TConstArrayView< RowHandle >
Definition TypedElementQueryCapabilities.inl:40
TConstArrayView< const UScriptStruct * > TConstArrayView< const UScriptStruct * >
Definition TypedElementQueryCapabilities.inl:16
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition NameTypes.h:617
Definition UnrealType.h:3087
Definition OutputDevice.h:133
Definition IModularFeature.h:12
Definition ArrayView.h:139
Definition AssetRegistryState.h:50
Definition AndroidPlatformMisc.h:14
Definition TypedElementRowHandleArrayView.h:20
Definition TypedElementRowHandleArray.h:16
Definition CommonTypes.h:57
Definition TypedElementDataStorageInterface.h:65
virtual void RemoveColumn(RowHandle Row, const UScriptStruct *ColumnType)=0
void IndexRow(IndexHash Index, RowHandle Row)
Definition TypedElementDataStorageInterface.h:868
void RemoveAllRowsWith()
Definition TypedElementDataStorageInterface.h:702
void RemoveColumn(RowHandle Row)
virtual void WalkDepthFirst(FHierarchyHandle InHierarchyHandle, RowHandle Row, TFunction< void(const ICoreProvider &Context, RowHandle Owner, RowHandle Target)> VisitFn) const =0
virtual bool SupportsExtension(FName Extension) const =0
virtual bool IsRowAssigned(RowHandle Row) const =0
virtual bool BatchAddRow(TableHandle Table, int32 Count, RowCreationCallbackRef OnCreated)=0
virtual void RemoveColumn(RowHandle Row, const FValueTag &Tag)=0
virtual void BatchAddRemoveColumns(TConstArrayView< RowHandle > Rows, TConstArrayView< const UScriptStruct * > ColumnsToAdd, TConstArrayView< const UScriptStruct * > ColumnsToRemove)=0
virtual void AddColumn(RowHandle Row, const FValueTag &Tag, const FName &Value)=0
ColumnTypeTemplate * GetColumn(RowHandle Row, const FName &Identifer)
virtual void MapRow(const FName &Domain, FMapKey Key, RowHandle Row)=0
virtual void AddRemoveColumns(RowHandle Row, TConstArrayView< const UScriptStruct * > ColumnsToAdd, TConstArrayView< const UScriptStruct * > ColumnsToRemove)=0
virtual void ActivateQueries(FName ActivationName)=0
SystemType * GetExternalSystem()
Definition TypedElementDataStorageInterface.h:852
virtual FQueryResult RunQuery(QueryHandle Query, DirectQueryCallbackRef Callback)=0
virtual bool IsRowAvailable(RowHandle Row) const =0
virtual bool BatchAddRow(TableHandle Table, TConstArrayView< RowHandle > ReservedHandles, RowCreationCallbackRef OnCreated)=0
virtual void SetUnresolvedParent(FHierarchyHandle InHierarchyHandle, RowHandle Target, FMapKey ParentId, FName MappingDomain)=0
ColumnType * GetColumn(RowHandle Row)
Definition TypedElementDataStorageInterface.h:802
const FactoryT * FindFactory() const
Definition TypedElementDataStorageInterface.h:617
virtual FQueryResult RunQuery(QueryHandle Query)=0
void Reindex(IndexHash OriginalIndex, IndexHash NewIndex)
Definition TypedElementDataStorageInterface.h:881
RowHandle FindIndexedRow(IndexHash Index) const
Definition TypedElementDataStorageInterface.h:863
virtual void UnregisterQuery(QueryHandle Query)=0
virtual void * GetColumnData(RowHandle Row, const UScriptStruct *ColumnType)=0
virtual QueryHandle RegisterQuery(FQueryDescription &&Query)=0
void AddColumn(RowHandle Row, const FName &Identifier)
virtual void RemapRow(const FName &Domain, const FMapKeyView &OriginalKey, FMapKey NewKey)=0
virtual bool MatchesColumns(RowHandle Row, const Queries::FConditions &Conditions) const =0
virtual bool AddRow(RowHandle ReservedRow, TableHandle Table)=0
virtual const UScriptStruct * FindDynamicColumn(const FDynamicColumnDescription &Description) const =0
virtual const FQueryDescription & GetQueryDescription(QueryHandle Query) const =0
virtual FTypedElementOnDataStorageUpdate & OnUpdateCompleted()=0
void RemoveIndex(IndexHash Index)
Definition TypedElementDataStorageInterface.h:886
virtual void BatchMapRows(const FName &Domain, TArrayView< TPair< FMapKey, RowHandle > > MapRowPairs)=0
virtual void AddColumnData(RowHandle Row, const UScriptStruct *ColumnType, const ColumnCreationCallbackRef Initializer, ColumnCopyOrMoveCallback Relocator)=0
virtual UE::Editor::DataStorage::FHierarchyHandle RegisterHierarchy(const UE::Editor::DataStorage::FHierarchyRegistrationParams &Params)=0
virtual TableHandle RegisterTable(TableHandle SourceTable, TConstArrayView< const UScriptStruct * > ColumnList, const FName &Name)=0
virtual const UScriptStruct * GenerateDynamicColumn(const FDynamicColumnDescription &Description)=0
virtual void ListHierarchyNames(TFunctionRef< void(const FName &HierarchyName)> Callback) const =0
virtual void UnregisterCooperativeUpdate(const FName &TaskName)=0
virtual RowHandle LookupMappedRow(const FName &Domain, const FMapKeyView &Key) const =0
void RemoveColumn(RowHandle Row, const FName &Identifier)
virtual void AddColumn(RowHandle Row, const UScriptStruct *ColumnType)=0
virtual const UScriptStruct * GetHierarchyDataColumnType(FHierarchyHandle InHierarchyHandle) const =0
virtual const UScriptStruct * GetParentTagType(FHierarchyHandle InHierarchyHandle) const =0
virtual const void * GetColumnData(RowHandle Row, const UScriptStruct *ColumnType) const =0
virtual TableHandle RegisterTable(TConstArrayView< const UScriptStruct * > ColumnList, const FName &Name)=0
virtual FQueryResult RunQuery(QueryHandle Query, ERunQueryFlags Flags, const Queries::TQueryFunction< void > &Callback)=0
virtual bool HasChildren(FHierarchyHandle InHierarchyHandle, RowHandle Row) const =0
void BatchIndexRows(TConstArrayView< TPair< IndexHash, RowHandle > > IndexRowPairs)
Definition TypedElementDataStorageInterface.h:873
virtual void BatchRemoveRows(TConstArrayView< RowHandle > Rows)=0
virtual FQueryResult RunQuery(QueryHandle Query, EDirectQueryExecutionFlags Flags, DirectQueryCallbackRef Callback)=0
virtual void DebugPrintQueryCallbacks(FOutputDevice &Output)=0
virtual void FilterRowsBy(FRowHandleArray &Result, FRowHandleArrayView Input, EFilterOptions Options, Queries::TQueryFunction< bool > &Filter)=0
virtual FTypedElementOnDataStorageUpdate & OnUpdate()=0
void AddColumn(RowHandle Row, const FName &Tag, const FName &Value)=delete
virtual void ListExtensions(TFunctionRef< void(FName)> Callback) const =0
virtual void BatchReserveRows(TArrayView< RowHandle > ReservedRows)=0
virtual const UScriptStruct * GetChildTagType(FHierarchyHandle InHierarchyHandle) const =0
virtual const UEditorDataStorageFactory * FindFactory(const UClass *FactoryType) const =0
virtual void RemoveColumns(RowHandle Row, TConstArrayView< const UScriptStruct * > Columns)=0
virtual RowHandle GetParentRow(FHierarchyHandle InHierarchyHandle, RowHandle Target) const =0
virtual UE::Editor::DataStorage::FHierarchyHandle FindHierarchyByName(const FName &Name) const =0
virtual RowHandle AddRow(TableHandle Table)=0
virtual void RemoveRow(RowHandle Row)=0
virtual TFunction< RowHandle(const void *, const UScriptStruct *)> CreateParentExtractionFunction(FHierarchyHandle InHierarchyHandle) const =0
virtual bool AddRow(RowHandle ReservedRow, TableHandle Table, RowCreationCallbackRef OnCreated)=0
virtual bool HasColumns(RowHandle Row, TConstArrayView< TWeakObjectPtr< const UScriptStruct > > ColumnTypes) const =0
ECooperativeTaskPriority
Definition TypedElementDataStorageInterface.h:548
virtual bool HasColumns(RowHandle Row, TConstArrayView< const UScriptStruct * > ColumnTypes) const =0
virtual void AddColumns(RowHandle Row, TConstArrayView< const UScriptStruct * > Columns)=0
virtual UEditorDataStorageFactory * FindFactory(const UClass *FactoryType)=0
const ColumnTypeTemplate * GetColumn(RowHandle Row, const FName &Identifer) const
virtual bool IsAvailable() const =0
virtual void RemoveRowMapping(const FName &Domain, const FMapKeyView &Key)=0
virtual RowHandle ReserveRow()=0
virtual void RemoveAllRowsWithColumns(TConstArrayView< const UScriptStruct * > Columns)=0
virtual FName GetQueryTickGroupName(EQueryTickGroups Group) const =0
virtual RowHandle AddRow(TableHandle Table, RowCreationCallbackRef OnCreated)=0
void ReindexRow(IndexHash OriginalIndex, IndexHash NewIndex, RowHandle Row)
Definition TypedElementDataStorageInterface.h:857
virtual bool IsValidHierachyHandle(FHierarchyHandle) const =0
virtual void ForEachDynamicColumn(const UScriptStruct &Template, TFunctionRef< void(const UScriptStruct &Type)> Callback) const =0
virtual void ListColumns(RowHandle Row, ColumnListWithDataCallbackRef Callback)=0
virtual void ListColumns(RowHandle Row, ColumnListCallbackRef Callback) const =0
virtual void RegisterCooperativeUpdate(const FName &TaskName, ECooperativeTaskPriority Priority, FOnCooperativeUpdate Callback)=0
virtual void * GetExternalSystemAddress(UClass *Target)=0
virtual TableHandle FindTable(const FName &Name)=0
EFilterOptions
Definition TypedElementDataStorageInterface.h:193
virtual void SetParentRow(FHierarchyHandle InHierarchyHandle, RowHandle Target, RowHandle Parent)=0
virtual void BatchReserveRows(int32 Count, TFunctionRef< void(RowHandle)> ReservationCallback)=0
Definition Conditions.h:72
Definition TypedElementQueryFunctions.h:73
Definition TypedElementDataStorageFactory.h:20
Definition Subsystem.h:48
Definition CommonTypes.h:101
TQueryFunction< Return > BuildQueryFunction(Function &&Callback)
Definition TypedElementQueryFunctions.inl:236
Definition CommonTypes.cpp:10
EDirectQueryExecutionFlags
Definition TypedElementQueryStorageInterfaces.h:336
uint64 TableHandle
Definition Handles.h:12
EQueryTickGroups
Definition Types.h:24
uint64 IndexHash
Definition Types.h:11
FSimpleMulticastDelegate FTypedElementOnDataStorageDestruction
Definition TypedElementDataStorageInterface.h:38
ERunQueryFlags
Definition TypedElementQueryStorageInterfaces.h:355
uint64 QueryHandle
Definition Handles.h:18
FSimpleMulticastDelegate FTypedElementOnDataStorageCreation
Definition TypedElementDataStorageInterface.h:37
uint64 RowHandle
Definition Handles.h:15
void(*)(const UScriptStruct &ColumnType, void *Destination, void *Source) ColumnCopyOrMoveCallback
Definition CommonTypes.h:85
IndexHash GenerateIndexHash(const T *Object)
Definition TypedElementIndexHasher.inl:11
FSimpleMulticastDelegate FTypedElementOnDataStorageUpdate
Definition TypedElementDataStorageInterface.h:39
U16 Index
Definition radfft.cpp:71
Definition WeakObjectPtrTemplates.h:25
Definition CommonTypes.h:72
Definition TypedElementDataStorageInterface.h:56
FName Name
Definition TypedElementDataStorageInterface.h:57
const UScriptStruct * ParentChangedColumn
Definition TypedElementDataStorageInterface.h:61
Definition Description.h:32
Definition TypedElementQueryFunctionArgumentTypes.h:46
Definition TypedElementDataStorageInterface.h:49
const UScriptStruct * ColumnTypes[sizeof...(Columns)]
Definition TypedElementDataStorageInterface.h:50