UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
VVMNativeConverter.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#if !WITH_VERSE_BPVM || defined(__INTELLISENSE__)
6
7#include "HAL/Platform.h"
10#include "Templates/Requires.h"
12#include "UObject/ObjectPtr.h"
20#include "VerseVM/VVMArray.h"
21#include "VerseVM/VVMCell.h"
22#include "VerseVM/VVMClass.h"
23#include "VerseVM/VVMContext.h"
25#include "VerseVM/VVMFalse.h"
26#include "VerseVM/VVMFloat.h"
28#include "VerseVM/VVMInt.h"
29#include "VerseVM/VVMLog.h"
30#include "VerseVM/VVMMap.h"
36#include "VerseVM/VVMOpResult.h"
37#include "VerseVM/VVMOption.h"
38#include "VerseVM/VVMRational.h"
41#include "VerseVM/VVMValue.h"
43
44enum class EVerseFalse : uint8;
45enum class EVerseTrue : uint8;
46struct FVerseValue;
47struct FVerseFunction;
48template <typename FunctionType>
50template <typename InterfaceProxyType>
52
53namespace Verse
54{
55struct VClass;
56
57template <typename NativeType>
59{
60 static constexpr bool Value = false;
61};
62
63// Assigned to a native implementation return value - a default-emplaceable version of TOptional<NativeType>.
64template <typename NativeType, typename = void>
66{
68
69 void Emplace() { Value.Emplace(); }
70
72 {
74 return *this;
75 }
77 {
79 return *this;
80 }
81
82 operator TOptional<NativeType>&() { return Value; }
83 NativeType& operator*() { return *Value; }
84};
85
86// Marshal class objects through a raw pointer.
87template <typename ObjectType>
88struct TToVValue<TNonNullPtr<ObjectType>>
89{
91
92 void Emplace() { Value.Emplace(); }
93
95 {
96 Value = Other.Get();
97 return *this;
98 }
100 {
101 if (Other.IsSet())
102 {
103 Value = Other.GetValue().Get();
104 }
105 else
106 {
107 Value.Reset();
108 }
109 return *this;
110 }
111};
112
113// Same for TInterfaceInstance
114template <typename InterfaceProxyType>
115struct TToVValue<TInterfaceInstance<InterfaceProxyType>>;
116
117// Out parameter for FromVValue - a default-constructible version of NativeType.
118template <typename NativeType, typename = void>
124
125template <typename NativeType>
131
132// Same for TInterfaceInstance
133template <typename InterfaceProxyType>
134struct TFromVValue<TInterfaceInstance<InterfaceProxyType>>;
135
136template <typename NativeType>
142
143template <class NativeType UE_REQUIRES(std::is_convertible_v<NativeType*, FNativeType*>)>
149
150// This class defines canonical conversion functions between two runtime value representations:
151// VValue-based representation and C++/native-based representation
153{
154 // 1) Conversions from C++/native to VValue representation
155
156 static VValue ToVValue(FAllocationContext Context, EVerseFalse)
157 {
158 // There shouldn't be a value of EVerseFalse
160 }
161
162 static VValue ToVValue(FAllocationContext Context, EVerseTrue)
163 {
164 return GlobalFalse();
165 }
166
167 static VValue ToVValue(FAllocationContext Context, bool Logic)
168 {
169 return VValue::FromBool(Logic);
170 }
171
172 static VValue ToVValue(FAllocationContext Context, int64 Number)
173 {
174 return VValue(VInt(Context, Number));
175 }
176
177 static VValue ToVValue(FAllocationContext Context, const FVerseRational& Rational)
178 {
179 VValue Numerator = ToVValue(Context, Rational.Numerator);
180 VValue Denominator = ToVValue(Context, Rational.Denominator);
181 return VRational::New(Context, VInt(Numerator), VInt(Denominator));
182 }
183
184 static VValue ToVValue(FAllocationContext Context, double Number)
185 {
186 return VValue(VFloat(Number));
187 }
188
189 static VValue ToVValue(FAllocationContext Context, const FNativeString& String)
190 {
191 return VValue(VArray::New(Context, String));
192 }
193
194 static VValue ToVValue(FAllocationContext Context, UTF8CHAR Char)
195 {
196 return VValue::Char(Char);
197 }
198
199 static VValue ToVValue(FAllocationContext Context, UTF32CHAR Char32)
200 {
201 return VValue::Char32(Char32);
202 }
203
205 static VValue ToVValue(FAllocationContext Context, EnumType Enumerator)
206 {
207 // We crash when this fails because VNI should make sure only valid enumerators get generated
208 // ...and if you do faulty enum arithmetic in your native function you also deserve to crash :-)
209 return StaticVEnumeration<EnumType>().GetEnumeratorChecked(static_cast<int32>(Enumerator));
210 }
211
212 template <class ObjectType>
213 static VValue ToVValue(FAllocationContext Context, ObjectType* Object)
214 {
215 // ObjectType must be a subclass of UObject, but it may be incomplete.
216 UObject* Obj = reinterpret_cast<UObject*>(Object);
217 check(Obj->IsValidLowLevel());
218 return VValue(Obj);
219 }
220 template <class ObjectType>
221 static VValue ToVValue(FAllocationContext Context, TNonNullPtr<ObjectType> Object)
222 {
223 return ToVValue(Context, Object.Get());
224 }
225 template <class ObjectType>
226 static VValue ToVValue(FAllocationContext Context, ::TObjectPtr<ObjectType> Object)
227 {
228 return ToVValue(Context, Object.Get());
229 }
230
231 template <class InterfaceProxyType>
233
235 static VValue ToVValue(FAllocationContext Context, StructType&& Struct)
236 {
238 }
239
240 template <typename... ElementTypes>
241 static VValue ToVValue(FAllocationContext Context, const TNativeTuple<ElementTypes...>& Tuple)
242 {
243 return ToVValue(Context, Tuple, std::make_index_sequence<sizeof...(ElementTypes)>());
244 }
245
246 template <typename... ElementTypes, size_t... Indices>
247 static VValue ToVValue(FAllocationContext Context, const TNativeTuple<ElementTypes...>& Tuple, std::index_sequence<Indices...>)
248 {
249 return VArray::New(Context, {ToVValue(Context, Tuple.template Get<Indices>())...});
250 }
251
252 template <class NativeType UE_REQUIRES(std::is_convertible_v<NativeType*, FNativeType*>)>
253 static VValue ToVValue(FAllocationContext Context, const NativeType& Type)
254 {
255 return *Type.Type;
256 }
257
258 template <class ElementType>
259 static VValue ToVValue(FAllocationContext Context, const TArray<ElementType>& Array)
260 {
261 VArray& NewArray = VArray::New(Context, Array.Num(), [Context, &Array](uint32 Index) {
262 return ToVValue(Context, Array[Index]);
263 });
264 return NewArray;
265 }
266
267 template <class KeyType, class ValueType>
268 static VValue ToVValue(FAllocationContext Context, const TMap<KeyType, ValueType>& Map)
269 {
271 Pairs.Reserve(Map.Num());
272 for (auto Pair : Map)
273 {
274 Pairs.Push({ToVValue(Context, Pair.Key), ToVValue(Context, Pair.Value)});
275 }
276
277 return VMapBase::New<VMap>(Context, Pairs.Num(), [&](uint32 I) { return Pairs[I]; });
278 }
279
280 template <typename ValueType>
281 static VValue ToVValue(FAllocationContext Context, const ::TOptional<ValueType>& Optional)
282 {
283 if (Optional.IsSet())
284 {
285 return VOption::New(Context, ToVValue(Context, Optional.GetValue()));
286 }
287 else
288 {
289 return GlobalFalse();
290 }
291 }
292
293 static VValue ToVValue(FAllocationContext Context, const ::FNullOpt& Optional)
294 {
295 return GlobalFalse();
296 }
297
298 static VValue ToVValue(FAllocationContext Context, const FVerseValue& Value);
299 static VValue ToVValue(FAllocationContext Context, const FVerseFunction& Function);
300
301 // 2) Conversions from VValue to C++/native representation
302
303 static FOpResult FromVValue(FAllocationContext Context, const VValue Value, TFromVValue<EVerseTrue>& OutNative)
304 {
306 return {FOpResult::Return};
307 }
308
309 static FOpResult FromVValue(FAllocationContext Context, const VValue Value, TFromVValue<bool>& OutNative)
310 {
312 V_DIE_UNLESS(Value.IsLogic());
313 OutNative.Value = Value.AsBool();
314 return {FOpResult::Return};
315 }
316
317 static FOpResult FromVValue(FAllocationContext Context, const VValue Value, TFromVValue<int64>& OutNative)
318 {
320 V_DIE_UNLESS(Value.IsInt());
322 if (!ValueHelper.IsInt64())
323 {
324 Context.RaiseVerseRuntimeError(ERuntimeDiagnostic::ErrRuntime_GeneratedNativeInternal, FText::FromString("Value exceeds the range of a 64 bit integer."));
325 return {FOpResult::Error};
326 }
327 OutNative.Value = ValueHelper.AsInt64();
328 return {FOpResult::Return};
329 }
330
331 static FOpResult FromVValue(FAllocationContext Context, const VValue Value, TFromVValue<FVerseRational>& OutNative)
332 {
334 TFromVValue<int64> Numerator;
335 TFromVValue<int64> Denominator;
336 if (Value.IsInt())
337 {
338 FOpResult NumeratorResult = FromVValue(Context, Value, Numerator);
339 if (!NumeratorResult.IsReturn())
340 {
341 return NumeratorResult;
342 }
343 Denominator.Value = 1;
344 }
345 else if (VRational* Rational = Value.DynamicCast<VRational>())
346 {
347 FOpResult NumeratorResult = FromVValue(Context, Rational->Numerator.Get(), Numerator);
348 if (!NumeratorResult.IsReturn())
349 {
350 return NumeratorResult;
351 }
352 FOpResult DenominatorResult = FromVValue(Context, Rational->Denominator.Get(), Denominator);
353 if (!DenominatorResult.IsReturn())
354 {
355 return DenominatorResult;
356 }
357 }
358 else
359 {
360 V_DIE("Unexpected rational value");
361 }
362 OutNative.Value.Numerator = Numerator.GetValue();
363 OutNative.Value.Denominator = Denominator.GetValue();
364 return {FOpResult::Return};
365 }
366
367 static FOpResult FromVValue(FAllocationContext Context, const VValue Value, TFromVValue<double>& OutNative)
368 {
370 V_DIE_UNLESS(Value.IsFloat());
371 OutNative.Value = Value.AsFloat().AsDouble();
372 return {FOpResult::Return};
373 }
374
375 static FOpResult FromVValue(FAllocationContext Context, const VValue Value, TFromVValue<FNativeString>& OutNative)
376 {
378 V_DIE_UNLESS(Value.IsCellOfType<VArrayBase>());
379 // TODO: Error on invalid UTF-8 and interior nuls.
380 OutNative.Value = Value.StaticCast<VArrayBase>().AsStringView();
381 return {FOpResult::Return};
382 }
383
384 static FOpResult FromVValue(FAllocationContext Context, const VValue Value, TFromVValue<UTF8CHAR>& OutNative)
385 {
387 V_DIE_UNLESS(Value.IsChar());
388 OutNative.Value = Value.AsChar();
389 return {FOpResult::Return};
390 }
391
392 static FOpResult FromVValue(FAllocationContext Context, const VValue Value, TFromVValue<UTF32CHAR>& OutNative)
393 {
395 V_DIE_UNLESS(Value.IsChar32());
396 OutNative.Value = Value.AsChar32();
397 return {FOpResult::Return};
398 }
399
400 template <class EnumType>
402 FromVValue(FAllocationContext Context, const VValue Value, TFromVValue<EnumType>& OutNative)
403 {
405 V_DIE_UNLESS(Value.IsEnumerator());
406 int32 IntValue = Value.StaticCast<VEnumerator>().GetIntValue();
407 OutNative.Value = EnumType(IntValue);
408 if (static_cast<int32>(OutNative.Value) != IntValue)
409 {
410 Context.RaiseVerseRuntimeError(ERuntimeDiagnostic::ErrRuntime_GeneratedNativeInternal, FText::FromString("Native enumerators must be integers between 0 and 255"));
411 return {FOpResult::Error};
412 }
413 return {FOpResult::Return};
414 }
415
416 template <class ObjectType>
418 {
420 V_DIE_UNLESS(Value.IsUObject());
421 // ObjectType must be a subclass of UObject, but it may be incomplete.
422 OutNative.Value = reinterpret_cast<ObjectType*>(Value.AsUObject());
423 return {FOpResult::Return};
424 }
425
426 template <class InterfaceProxyType>
428
429 template <class StructType>
431 FromVValue(FAllocationContext Context, const VValue Value, TFromVValue<StructType>& OutNative)
432 {
434 OutNative.Value = &Value.StaticCast<VNativeStruct>().GetStruct<StructType>();
435 return {FOpResult::Return};
436 }
437
438 template <typename... ElementTypes>
440 {
441 return FromVValue(Context, Value, OutNative, std::make_index_sequence<sizeof...(ElementTypes)>());
442 }
443
444 template <typename... ElementTypes, size_t... Indices>
445 static FOpResult FromVValue(FAllocationContext Context, const VValue Value, TFromVValue<TNativeTuple<ElementTypes...>>& OutNative, std::index_sequence<Indices...>)
446 {
448 const VArrayBase& Array = Value.StaticCast<VArrayBase>();
449 FOpResult Result{FOpResult::Return};
450 auto ElementFromVValue = [&](const VValue ElementValue, auto& OutNativeElement) {
451 // Only convert this element if the previous element successfully converted
452 if (Result.IsReturn())
453 {
455 Result = FromVValue(Context, ElementValue, NativeElement);
456 if (Result.IsReturn())
457 {
458 OutNativeElement = NativeElement.GetValue();
459 }
460 }
461 };
462 (ElementFromVValue(Array.GetValue(Indices), OutNative.Value.template Get<Indices>()), ...);
463 return Result;
464 }
465
466 template <class NativeType UE_REQUIRES(std::is_convertible_v<NativeType*, FNativeType*>)>
467 static FOpResult FromVValue(FAllocationContext Context, const VValue Value, TFromVValue<NativeType>& OutNative)
468 {
470 VType* Type = Value.DynamicCast<VType>();
471 if (!Type)
472 {
473 Context.RaiseVerseRuntimeError(ERuntimeDiagnostic::ErrRuntime_GeneratedNativeInternal, FText::FromString("Attempted to assign an incompatible type to a native function parameter or native field."));
474 return {FOpResult::Error};
475 }
476
477 OutNative.Value.Type.Set(Context, Type);
478 return {FOpResult::Return};
479 }
480
481 template <class ElementType>
482 static FOpResult FromVValue(FAllocationContext Context, const VValue Value, TFromVValue<TArray<ElementType>>& OutNative)
483 {
485 V_DIE_UNLESS(Value.IsCellOfType<VArrayBase>());
486 const VArrayBase& Array = Value.StaticCast<VArrayBase>();
487 ensure(OutNative.Value.IsEmpty());
488 OutNative.Value.Reserve(Array.Num());
489 for (const VValue Element : Array)
490 {
492 FOpResult ElementOpResult = FromVValue(Context, Element, NativeElement);
493 if (!ElementOpResult.IsReturn())
494 {
495 return ElementOpResult;
496 }
497 OutNative.Value.Add(NativeElement.GetValue());
498 }
499 return {FOpResult::Return};
500 }
501
502 template <class KeyType, class ValueType>
504 {
506 V_DIE_UNLESS(Value.IsCellOfType<VMap>());
507 const VMap& Map = Value.StaticCast<VMap>();
508 ensure(OutNative.Value.IsEmpty());
509 OutNative.Value.Reserve(Map.Num());
510 for (const TPair<VValue, VValue> Pair : Map)
511 {
513 FOpResult KeyOpResult = FromVValue(Context, Pair.Key, NativeKey);
514 if (!KeyOpResult.IsReturn())
515 {
516 return KeyOpResult;
517 }
518 TFromVValue<ValueType> NativeValue;
519 FOpResult ValueOpResult = FromVValue(Context, Pair.Value, NativeValue);
520 if (!ValueOpResult.IsReturn())
521 {
522 return ValueOpResult;
523 }
524 OutNative.Value.Add(NativeKey.GetValue(), NativeValue.GetValue());
525 }
526 return {FOpResult::Return};
527 }
528
529 template <typename ValueType>
530 static FOpResult FromVValue(FAllocationContext Context, const VValue Value, TFromVValue<TOptional<ValueType>>& OutNative)
531 {
533 ensure(!OutNative.Value.IsSet());
534 if (VOption* Option = Value.DynamicCast<VOption>())
535 {
536 TFromVValue<ValueType> NativeValue;
537 FOpResult ValueOpResult = FromVValue(Context, Option->GetValue(), NativeValue);
538 if (!ValueOpResult.IsReturn())
539 {
540 return ValueOpResult;
541 }
542 OutNative.Value.Emplace(NativeValue.GetValue());
543 }
544 else
545 {
547 }
548 return {FOpResult::Return};
549 }
550
551 static FOpResult FromVValue(FAllocationContext Context, const VValue Value, TFromVValue<FVerseValue>& OutNative);
552
553 template <typename ReturnType, typename... ParamTypes>
554 static FOpResult FromVValue(FAllocationContext Context, const VValue Value, TFromVValue<TVerseFunction<ReturnType(ParamTypes...)>>& OutNative);
555};
556
557} // namespace Verse
558
559#endif // !WITH_VERSE_BPVM || defined(__INTELLISENSE__)
#define check(expr)
Definition AssertionMacros.h:314
#define ensure( InExpression)
Definition AssertionMacros.h:464
#define AUTORTFM_DISABLE
Definition AutoRTFMDefines.h:116
FPlatformTypes::UTF32CHAR UTF32CHAR
A 32-bit character containing a UTF32 (Unicode, 32-bit, fixed-width) code unit.
Definition Platform.h:1143
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::UTF8CHAR UTF8CHAR
An 8-bit character containing a UTF8 (Unicode, 8-bit, variable-width) code unit.
Definition Platform.h:1137
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
@ Char
Character type.
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
#define VERSE_UNREACHABLE()
Definition VVMUnreachable.h:8
EVerseFalse
Definition VVMVerseEnum.h:97
EVerseTrue
Definition VVMVerseEnum.h:104
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
static CORE_API FText FromString(const ANSICHAR *String)
Definition Text.cpp:1081
Definition Array.h:670
UE_REWRITE SizeType Num() const
Definition Array.h:1144
UE_NODEBUG UE_FORCEINLINE_HINT void Push(ElementType &&Item)
Definition Array.h:1224
UE_FORCEINLINE_HINT void Reserve(SizeType Number)
Definition Array.h:3016
Definition EnableIf.h:20
Definition UnrealString.h.inl:34
Definition NonNullPointer.h:23
COREUOBJECT_API bool IsValidLowLevel() const
Definition UObjectBase.cpp:394
Definition Object.h:95
Definition VVMNativeString.h:31
Definition Archive.h:36
U16 Index
Definition radfft.cpp:71
Definition VVMNativeRational.h:13
Definition VVMNativeConverter.h:51
Definition ObjectPtr.h:488
Definition Optional.h:131
constexpr OptionalType & GetValue()
Definition Optional.h:443
void Reset()
Definition Optional.h:306
OptionalType & Emplace(ArgsType &&... Args)
Definition Optional.h:323
constexpr const OptionalType & Get(const OptionalType &DefaultValue UE_LIFETIMEBOUND) const UE_LIFETIMEBOUND
Definition Optional.h:472
Definition RemoveReference.h:10
Definition Tuple.h:652
Definition VVMNativeConverter.h:49
Definition VVMNativeConverter.h:153
static VValue ToVValue(FAllocationContext Context, const TNativeTuple< ElementTypes... > &Tuple, std::index_sequence< Indices... >)
Definition VVMNativeConverter.h:247
static FOpResult FromVValue(FAllocationContext Context, const VValue Value, TFromVValue< FVerseRational > &OutNative)
Definition VVMNativeConverter.h:331
static VValue ToVValue(FAllocationContext Context, const FVerseFunction &Function)
static VValue ToVValue(FAllocationContext Context, TInterfaceInstance< InterfaceProxyType > Object)
static FOpResult FromVValue(FAllocationContext Context, const VValue Value, TFromVValue< UTF8CHAR > &OutNative)
Definition VVMNativeConverter.h:384
static FOpResult FromVValue(FAllocationContext Context, const VValue Value, TFromVValue< TNativeTuple< ElementTypes... > > &OutNative)
Definition VVMNativeConverter.h:439
static VValue ToVValue(FAllocationContext Context, const FNativeString &String)
Definition VVMNativeConverter.h:189
static VValue ToVValue(FAllocationContext Context, bool Logic)
Definition VVMNativeConverter.h:167
static VValue ToVValue(FAllocationContext Context, EVerseTrue)
Definition VVMNativeConverter.h:162
static VValue ToVValue(FAllocationContext Context, UTF8CHAR Char)
Definition VVMNativeConverter.h:194
static VValue ToVValue(FAllocationContext Context, double Number)
Definition VVMNativeConverter.h:184
static FOpResult FromVValue(FAllocationContext Context, const VValue Value, TFromVValue< EVerseTrue > &OutNative)
Definition VVMNativeConverter.h:303
static VValue ToVValue(FAllocationContext Context, ObjectType *Object)
Definition VVMNativeConverter.h:213
static FOpResult FromVValue(FAllocationContext Context, const VValue Value, TFromVValue< TNonNullPtr< ObjectType > > &OutNative)
Definition VVMNativeConverter.h:417
static VValue ToVValue(FAllocationContext Context, const TArray< ElementType > &Array)
Definition VVMNativeConverter.h:259
static FOpResult FromVValue(FAllocationContext Context, const VValue Value, TFromVValue< TNativeTuple< ElementTypes... > > &OutNative, std::index_sequence< Indices... >)
Definition VVMNativeConverter.h:445
static FOpResult FromVValue(FAllocationContext Context, const VValue Value, TFromVValue< UTF32CHAR > &OutNative)
Definition VVMNativeConverter.h:392
static FOpResult FromVValue(FAllocationContext Context, const VValue Value, TFromVValue< FVerseValue > &OutNative)
static VValue ToVValue(FAllocationContext Context, EnumType Enumerator)
Definition VVMNativeConverter.h:205
static VValue ToVValue(FAllocationContext Context, const TNativeTuple< ElementTypes... > &Tuple)
Definition VVMNativeConverter.h:241
static VValue ToVValue(FAllocationContext Context, TNonNullPtr< ObjectType > Object)
Definition VVMNativeConverter.h:221
static VValue ToVValue(FAllocationContext Context, const FVerseValue &Value)
static FOpResult FromVValue(FAllocationContext Context, const VValue Value, TFromVValue< TArray< ElementType > > &OutNative)
Definition VVMNativeConverter.h:482
static VValue ToVValue(FAllocationContext Context, const TMap< KeyType, ValueType > &Map)
Definition VVMNativeConverter.h:268
static FOpResult FromVValue(FAllocationContext Context, const VValue Value, TFromVValue< FNativeString > &OutNative)
Definition VVMNativeConverter.h:375
static VValue ToVValue(FAllocationContext Context, const ::FNullOpt &Optional)
Definition VVMNativeConverter.h:293
static FOpResult FromVValue(FAllocationContext Context, const VValue Value, TFromVValue< int64 > &OutNative)
Definition VVMNativeConverter.h:317
static FOpResult FromVValue(FAllocationContext Context, const VValue Value, TFromVValue< bool > &OutNative)
Definition VVMNativeConverter.h:309
static FOpResult FromVValue(FAllocationContext Context, const VValue Value, TFromVValue< TOptional< ValueType > > &OutNative)
Definition VVMNativeConverter.h:530
static FOpResult FromVValue(FAllocationContext Context, const VValue Value, TFromVValue< TVerseFunction< ReturnType(ParamTypes...)> > &OutNative)
static VValue ToVValue(FAllocationContext Context, int64 Number)
Definition VVMNativeConverter.h:172
static FOpResult FromVValue(FAllocationContext Context, const VValue Value, TFromVValue< TMap< KeyType, ValueType > > &OutNative)
Definition VVMNativeConverter.h:503
static FOpResult FromVValue(FAllocationContext Context, const VValue Value, TFromVValue< double > &OutNative)
Definition VVMNativeConverter.h:367
static VValue ToVValue(FAllocationContext Context, const ::TOptional< ValueType > &Optional)
Definition VVMNativeConverter.h:281
static VValue ToVValue(FAllocationContext Context, EVerseFalse)
Definition VVMNativeConverter.h:156
static TEnableIf< TIsEnumClass< EnumType >::Value, FOpResult >::Type FromVValue(FAllocationContext Context, const VValue Value, TFromVValue< EnumType > &OutNative)
Definition VVMNativeConverter.h:402
static VValue ToVValue(FAllocationContext Context, StructType &&Struct)
Definition VVMNativeConverter.h:235
static TEnableIf< TIsNativeStruct< StructType >::Value, FOpResult >::Type FromVValue(FAllocationContext Context, const VValue Value, TFromVValue< StructType > &OutNative)
Definition VVMNativeConverter.h:431
static VValue ToVValue(FAllocationContext Context, const FVerseRational &Rational)
Definition VVMNativeConverter.h:177
static VValue ToVValue(FAllocationContext Context, const NativeType &Type)
Definition VVMNativeConverter.h:253
static VValue ToVValue(FAllocationContext Context, ::TObjectPtr< ObjectType > Object)
Definition VVMNativeConverter.h:226
static VValue ToVValue(FAllocationContext Context, UTF32CHAR Char32)
Definition VVMNativeConverter.h:199
static FOpResult FromVValue(FAllocationContext Context, const VValue Value, TFromVValue< TInterfaceInstance< InterfaceProxyType > > &OutNative)
static FOpResult FromVValue(FAllocationContext Context, const VValue Value, TFromVValue< NativeType > &OutNative)
Definition VVMNativeConverter.h:467
NativeType GetValue()
Definition VVMNativeConverter.h:147
NativeType * Value
Definition VVMNativeConverter.h:128
TNonNullPtr< NativeType > GetValue()
Definition VVMNativeConverter.h:129
Definition VVMNativeConverter.h:120
NativeType GetValue()
Definition VVMNativeConverter.h:122
NativeType Value
Definition VVMNativeConverter.h:121
Definition VVMNativeConverter.h:59
static constexpr bool Value
Definition VVMNativeConverter.h:60
Definition VVMNativeTuple.h:31
void Emplace()
Definition VVMNativeConverter.h:92
TOptional< ObjectType * > Value
Definition VVMNativeConverter.h:90
TToVValue & operator=(TNonNullPtr< ObjectType > Other)
Definition VVMNativeConverter.h:94
TToVValue & operator=(TOptional< TNonNullPtr< ObjectType > > Other)
Definition VVMNativeConverter.h:99
Definition VVMNativeConverter.h:66
TToVValue & operator=(NativeType Other)
Definition VVMNativeConverter.h:71
TOptional< NativeType > Value
Definition VVMNativeConverter.h:67
NativeType & operator*()
Definition VVMNativeConverter.h:83
TToVValue & operator=(TOptional< NativeType > Other)
Definition VVMNativeConverter.h:76
void Emplace()
Definition VVMNativeConverter.h:69
Definition VVMFloat.h:22