UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
UniversalObjectLocatorResolveParameterBuffer.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreTypes.h"
9
10class UObject;
11
13{
14
15
20{
21 // 2 Bytes
23
24 // 1 Byte
26
27 // 1 Byte
29
31 void* Resolve(void* InMemory) const
32 {
33 return static_cast<uint8*>(InMemory) + ParameterOffset;
34 }
35};
36
46{
51
56
62
68
69public:
70
77 template<typename T>
78 const T* FindParameter() const;
79
80
86 template<typename T>
88
89
98 template<typename T, typename ...ArgTypes>
100
101protected:
102
106 bool HasParameter(uint32 ParameterBit) const;
107
111 const void* FindParameterImpl(uint32 ParameterBit) const;
112
113
119 template<typename ParameterType, typename ...ArgTypes>
120 ParameterType* AddParameterImpl(uint32 ParameterBit, ArgTypes&&... InArgs);
121
122
127
128
133
134
138 void Destroy();
139
140protected:
141
143 uint8* Memory = nullptr;
144
147
150
152 uint8 Num = 0u;
153
155 bool bCanFreeMemory = false;
156
157public:
158
159 static constexpr int32 MaxNumParameters = sizeof(AllParameters) * 8;
160};
161
165template<int InlineByteSize>
167{
169 {
170 Memory = InlineBuffer;
172
173 bCanFreeMemory = false;
174 }
175
176private:
177
179 uint8 InlineBuffer[InlineByteSize];
180};
181
182
183template<typename T>
185{
186 return FindParameter(T::ParameterType);
187}
188
189template<typename T>
191{
192 const uint8 ParameterIndex = ParameterTypeHandle.GetIndex();
193
194 const uint32 ParameterBit = 1 << ParameterIndex;
195 return static_cast<const T*>(FindParameterImpl(ParameterBit));
196}
197
202
204{
206 {
208 check(Index >= 0 && Index < 255);
209 return GetHeader(static_cast<uint8>(Index)).Resolve(Memory);
210 }
211
212 return nullptr;
213}
214
216{
217 check(Index < Num);
218 return reinterpret_cast<FResolveParameterHeader*>(Memory)[Index];
219}
220
222{
223 if ( (AllParameters & ParameterBit) == 0)
224 {
225 return INDEX_NONE;
226 }
227 return FMath::CountBits(AllParameters & (ParameterBit-1u));
228}
229
230} // namespace UE::UniversalObjectLocator
#define check(expr)
Definition AssertionMacros.h:314
@ INDEX_NONE
Definition CoreMiscDefines.h:150
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
uint8_t uint8
Definition binka_ue_file_header.h:8
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Object.h:95
Definition AnimInstanceLocatorFragment.cpp:19
U16 Index
Definition radfft.cpp:71
Definition UniversalObjectLocatorResolveParameterBuffer.h:46
uint32 AllParameters
Definition UniversalObjectLocatorResolveParameterBuffer.h:146
const void * FindParameterImpl(uint32 ParameterBit) const
Definition UniversalObjectLocatorResolveParameterBuffer.h:203
ParameterType * AddParameterImpl(uint32 ParameterBit, ArgTypes &&... InArgs)
Definition UniversalObjectLocatorResolveParameterBuffer.inl:28
const FResolveParameterHeader & GetHeader(uint8 Index) const
Definition UniversalObjectLocatorResolveParameterBuffer.h:215
uint8 * Memory
Definition UniversalObjectLocatorResolveParameterBuffer.h:143
FResolveParameterBuffer & operator=(FResolveParameterBuffer &&RHS)=delete
void Destroy()
Definition UniversalObjectLocatorResolveParams.cpp:25
UNIVERSALOBJECTLOCATOR_API ~FResolveParameterBuffer()
Definition UniversalObjectLocatorResolveParams.cpp:20
const T * FindParameter() const
Definition UniversalObjectLocatorResolveParameterBuffer.h:184
FResolveParameterBuffer(FResolveParameterBuffer &&RHS)=delete
uint16 Capacity
Definition UniversalObjectLocatorResolveParameterBuffer.h:149
bool HasParameter(uint32 ParameterBit) const
Definition UniversalObjectLocatorResolveParameterBuffer.h:198
int32 GetParameterIndex(uint32 ParameterBit) const
Definition UniversalObjectLocatorResolveParameterBuffer.h:221
T * AddParameter(TParameterTypeHandle< T > ParameterTypeHandle, ArgTypes &&... InArgs)
Definition UniversalObjectLocatorResolveParameterBuffer.inl:12
FResolveParameterBuffer(const FResolveParameterBuffer &)=delete
UNIVERSALOBJECTLOCATOR_API FResolveParameterBuffer()
Definition UniversalObjectLocatorResolveParams.cpp:12
static constexpr int32 MaxNumParameters
Definition UniversalObjectLocatorResolveParameterBuffer.h:159
FResolveParameterBuffer & operator=(const FResolveParameterBuffer &)=delete
uint8 Num
Definition UniversalObjectLocatorResolveParameterBuffer.h:152
bool bCanFreeMemory
Definition UniversalObjectLocatorResolveParameterBuffer.h:155
Definition UniversalObjectLocatorResolveParameterBuffer.h:20
uint8 Alignment
Definition UniversalObjectLocatorResolveParameterBuffer.h:28
uint16 ParameterOffset
Definition UniversalObjectLocatorResolveParameterBuffer.h:22
uint8 Sizeof
Definition UniversalObjectLocatorResolveParameterBuffer.h:25
void * Resolve(void *InMemory) const
Definition UniversalObjectLocatorResolveParameterBuffer.h:31
Definition UniversalObjectLocatorResolveParameterBuffer.h:167
TInlineResolveParameterBuffer()
Definition UniversalObjectLocatorResolveParameterBuffer.h:168
Definition UniversalObjectLocatorParameterTypeHandle.h:84