UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
TypedElementMetaData.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include <type_traits>
6#include "CoreMinimal.h"
8#include "Containers/Map.h"
10#include "Misc/TVariant.h"
11#include "Templates/Tuple.h"
13
14class UScriptStruct;
15
17{
18 struct FQueryDescription;
19
20 inline static const FName IsEditableName(TEXT("IsEditable"));
21 inline static const FName IsConstName(TEXT("IsConst"));
22
25
30 {
31 public:
36 template<typename T>
38
42 template<typename T>
43 bool IsType() const;
45 template<typename T>
46 const T* TryGetExact() const;
47
48 private:
49 MetaDataTypeView DataView;
50 };
51
56 {
57 public:
58 template<typename T>
59 bool AddImmutableData(FName Name, T&& Value);
60 template<typename T>
61 void AddOrSetMutableData(FName Name, T&& Value);
62
64
65 TYPEDELEMENTFRAMEWORK_API virtual void Shrink();
66
67 TYPEDELEMENTFRAMEWORK_API virtual bool IsEmpty() const;
68
69 protected:
70 FMetaDataBase() = default;
71 virtual ~FMetaDataBase() = default;
72
77 };
78
80 class FMetaData final : public FMetaDataBase {};
81
85 class FColumnMetaData final : public FMetaDataBase
86 {
87 public:
88 enum class EFlags
89 {
90 None = 0,
91 IsMutable = 1 << 0
92 };
93
94 FColumnMetaData() = default;
96
98
99 TYPEDELEMENTFRAMEWORK_API bool IsEmpty() const override;
100
101 private:
103 const UScriptStruct* ColumnType{ nullptr };
105 EFlags Flags = EFlags::None;
106 };
107
112 {
113 public:
114 virtual ~FMetaDataView() = default;
115
118 TWeakObjectPtr<const UScriptStruct> Column, FName AttributeName) const;
119 template<typename Column>
120 FMetaDataEntryView FindForColumn(FName AttributeName) const;
121 };
122
127 {
128 public:
129 ~FQueryMetaDataView() override = default;
130
132
135 TWeakObjectPtr<const UScriptStruct> Column, FName AttributeName) const override;
136
137 private:
138 const FQueryDescription& Query;
139 };
140
156
161 {
162 public:
163 ~FGenericMetaDataView() override = default;
164
167
168 private:
169 const FMetaData& MetaData;
170 };
171
176 {
177 public:
178 ~FForwardingMetaDataView() override = default;
179
183 TWeakObjectPtr<const UScriptStruct> Column, FName AttributeName) const override;
184
185 private:
186 const FMetaDataView& View;
187 };
188
192 template<typename... ViewTypes>
194 {
195 public:
198
199 template<typename NextViewType>
201
202 FMetaDataEntryView FindGeneric(FName AttributeName) const override;
204
206 };
207
208} // UE::Editor::DataStorage
209
#define TEXT(x)
Definition Platform.h:1272
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
Definition NameTypes.h:617
Definition UnrealString.h.inl:34
Definition TVariant.h:48
Definition TypedElementMetaData.h:86
EFlags
Definition TypedElementMetaData.h:89
TYPEDELEMENTFRAMEWORK_API bool IsEmpty() const override
Definition TypedElementMetaData.cpp:86
Definition TypedElementMetaData.h:145
TYPEDELEMENTFRAMEWORK_API FMetaDataEntryView FindForColumn(TWeakObjectPtr< const UScriptStruct > Column, FName AttributeName) const override
Definition TypedElementMetaData.cpp:184
Definition TypedElementMetaData.h:194
FMetaDataEntryView FindGeneric(FName AttributeName) const override
Definition TypedElementMetaData.inl:136
TTuple< ViewTypes... > Views
Definition TypedElementMetaData.h:205
FMetaDataEntryView FindForColumn(TWeakObjectPtr< const UScriptStruct > Column, FName AttributeName) const
Definition TypedElementMetaData.inl:152
Definition TypedElementMetaData.h:176
TYPEDELEMENTFRAMEWORK_API FMetaDataEntryView FindGeneric(FName AttributeName) const override
Definition TypedElementMetaData.cpp:213
TYPEDELEMENTFRAMEWORK_API FMetaDataEntryView FindForColumn(TWeakObjectPtr< const UScriptStruct > Column, FName AttributeName) const override
Definition TypedElementMetaData.cpp:218
Definition TypedElementMetaData.h:161
TYPEDELEMENTFRAMEWORK_API FMetaDataEntryView FindGeneric(FName AttributeName) const override
Definition TypedElementMetaData.cpp:234
Definition TypedElementMetaData.h:56
TMap< FName, MetaDataType > MutableData
Definition TypedElementMetaData.h:76
TMap< FName, MetaDataType > ImmutableData
Definition TypedElementMetaData.h:74
bool AddImmutableData(FName Name, T &&Value)
Definition TypedElementMetaData.inl:49
virtual TYPEDELEMENTFRAMEWORK_API bool IsEmpty() const
Definition TypedElementMetaData.cpp:45
void AddOrSetMutableData(FName Name, T &&Value)
Definition TypedElementMetaData.inl:63
virtual TYPEDELEMENTFRAMEWORK_API void Shrink()
Definition TypedElementMetaData.cpp:39
Definition TypedElementMetaData.h:30
TYPEDELEMENTFRAMEWORK_API FMetaDataEntryView()
Definition TypedElementMetaData.cpp:96
bool IsType() const
Definition TypedElementMetaData.inl:80
TYPEDELEMENTFRAMEWORK_API bool IsSet() const
Definition TypedElementMetaData.cpp:120
const T * TryGetExact() const
Definition TypedElementMetaData.inl:86
Definition TypedElementMetaData.h:112
virtual TYPEDELEMENTFRAMEWORK_API FMetaDataEntryView FindGeneric(FName AttributeName) const
Definition TypedElementMetaData.cpp:131
virtual TYPEDELEMENTFRAMEWORK_API FMetaDataEntryView FindForColumn(TWeakObjectPtr< const UScriptStruct > Column, FName AttributeName) const
Definition TypedElementMetaData.cpp:136
Definition TypedElementMetaData.h:80
Definition TypedElementMetaData.h:127
TYPEDELEMENTFRAMEWORK_API FMetaDataEntryView FindForColumn(TWeakObjectPtr< const UScriptStruct > Column, FName AttributeName) const override
Definition TypedElementMetaData.cpp:157
TYPEDELEMENTFRAMEWORK_API FMetaDataEntryView FindGeneric(FName AttributeName) const override
Definition TypedElementMetaData.cpp:152
Definition Class.h:1720
Definition CommonTypes.cpp:10
Definition Tuple.h:652
Definition WeakObjectPtrTemplates.h:25