UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
DataflowAnyTypeRegistry.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "UObject/NameTypes.h"
6#include "Containers/Map.h"
8
9namespace UE::Dataflow
10{
12 {
13 public:
15
16 template<typename T>
17 static void RegisterTypeStatic(FName TypeName)
18 {
19 GetInstance().RegisterType<T>(TypeName);
20 }
23
24 DATAFLOWCORE_API static void RegisterAutoConvertNodeTypeStatic(FName FromType, FName ToType, FName AutoConvertNode, FTypeFilterFunction TypeFilterFunction = {});
26
27 DATAFLOWCORE_API static bool IsAnyTypeStatic(FName Type);
28 DATAFLOWCORE_API static FAnyTypesRegistry& GetInstance();
29
30 private:
31 typedef bool(*FSupportTypeFunction)(FName);
32
33 struct FTypeInfo
34 {
35 FSupportTypeFunction SupportTypeFunction = nullptr;
36 FName StorageType;
37 };
38
39 struct FAutoConvertNodeInfo
40 {
41 FName FromType;
42 FName ToType;
43 FName AutoConvertNode;
44 FTypeFilterFunction TypeFilterFunction;
45 };
46
47 FAnyTypesRegistry() {};
48
49 template<typename T>
50 void RegisterType(FName TypeName)
51 {
52 FTypeInfo TypeInfo
53 {
54 .SupportTypeFunction = &T::FPolicyType::SupportsTypeStatic,
56 };
57 TypeInfosByName.Emplace(TypeName, TypeInfo);
58 }
59
60 void RegisterAutoConvertNodeType(FName FromType, FName ToType, FName AutoConvertNode, FTypeFilterFunction TypeFilterFunction);
61
62 bool AreTypesCompatible(FName TypeA, FName TypeB) const;
63 FName GetStorageType(FName Type) const;
64 FName GetAutoConvertNodeType(FName FromType, FName ToType) const;
65 bool IsAnyType(FName Type) const;
66
67 TMap<FName, FTypeInfo> TypeInfosByName;
68 TArray<FAutoConvertNodeInfo> AutoConvertNodes;
69 };
70};
71
72#define UE_DATAFLOW_REGISTER_ANYTYPE(Type) UE::Dataflow::FAnyTypesRegistry::RegisterTypeStatic<Type>(#Type)
73#define UE_DATAFLOW_REGISTER_AUTOCONVERT(FromType, ToType, NodeType) UE::Dataflow::FAnyTypesRegistry::RegisterAutoConvertNodeTypeStatic(#FromType, #ToType, #NodeType)
74#define UE_DATAFLOW_REGISTER_AUTOCONVERT_WITH_FILTER(FromType, ToType, NodeType, FilterFunc) UE::Dataflow::FAnyTypesRegistry::RegisterAutoConvertNodeTypeStatic(#FromType, #ToType, #NodeType, FilterFunc)
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
const bool
Definition NetworkReplayStreaming.h:178
Definition NameTypes.h:617
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition DataflowAnyType.cpp:10
Definition DataflowTypePolicy.h:16
Definition DataflowAnyTypeRegistry.h:12
static DATAFLOWCORE_API FAnyTypesRegistry & GetInstance()
Definition DataflowAnyTypeRegistry.cpp:32
static DATAFLOWCORE_API bool AreTypesCompatibleStatic(FName TypeA, FName TypeB)
Definition DataflowAnyTypeRegistry.cpp:7
static DATAFLOWCORE_API void RegisterAutoConvertNodeTypeStatic(FName FromType, FName ToType, FName AutoConvertNode, FTypeFilterFunction TypeFilterFunction={})
Definition DataflowAnyTypeRegistry.cpp:17
TFunction< bool(FName, FName)> FTypeFilterFunction
Definition DataflowAnyTypeRegistry.h:14
static DATAFLOWCORE_API FName GetAutoConvertNodeTypeStatic(FName FromType, FName ToType)
Definition DataflowAnyTypeRegistry.cpp:22
static void RegisterTypeStatic(FName TypeName)
Definition DataflowAnyTypeRegistry.h:17
static DATAFLOWCORE_API FName GetStorageTypeStatic(FName Type)
Definition DataflowAnyTypeRegistry.cpp:12
static DATAFLOWCORE_API bool IsAnyTypeStatic(FName Type)
Definition DataflowAnyTypeRegistry.cpp:27