6#include "MovieSceneNumericVariant.generated.h"
10#ifndef UE_MOVIESCENE_WEAKNUMERICVARIANT_CHECKS
11 #define UE_MOVIESCENE_WEAKNUMERICVARIANT_CHECKS DO_CHECK
137 bool IsLiteral()
const;
143 double GetLiteral()
const;
149 float GetLiteralAsFloat()
const;
155 bool IsCustomPtr()
const;
210 T UnsafePayloadCast()
const;
232 static constexpr uint64 HIGH_Bits = 0xFFF0000000000000u;
233 static constexpr uint64 EXP_Bits = 0x7FF0000000000000u;
234 static constexpr uint64 SIGN_Bit = 0x8000000000000000u;
235 static constexpr uint64 QUIET_Bit = 0x0008000000000000u;
236 static constexpr uint64 TYPE_Bits = 0x0007000000000000u;
237 static constexpr uint64 TYPE_CustomPtr = 0x0000000000000000u;
238 static constexpr uint64 PAYLOAD_Bits = 0x0000FFFFFFFFFFFFu;
240 static constexpr uint64 CUSTOMPTR_FlagBits = 0x0000000000000003u;
241 static constexpr uint64 CUSTOMPTR_Weak = 0x0000000000000001u;
243 static constexpr uint64 TAGGED_Bits = SIGN_Bit | EXP_Bits | QUIET_Bit;
246 double& GetLiteralRef()
249 return *
reinterpret_cast<double*
>(Data);
257 bool HasCustomWeakPtrFlag()
const;
267 alignas(8)
uint8 Data[8];
269#if UE_MOVIESCENE_WEAKNUMERICVARIANT_CHECKS
296 return (
Value & TAGGED_Bits) != TAGGED_Bits;
302 return *
reinterpret_cast<const double*
>(Data);
307 return static_cast<float>(
308 FMath::Clamp<double>(
310 std::numeric_limits<float>::lowest(),
311 std::numeric_limits<float>::max()
326 static_assert(
sizeof(T) <= 6,
"Type too big. Maximum supported size is 48 bits");
335 *
reinterpret_cast<uint64*
>(Data) = TAGGED_Bits | NewValue;
345 return *
reinterpret_cast<const T*
>(ValuePtr);
#define checkSlow(expr)
Definition AssertionMacros.h:332
#define check(expr)
Definition AssertionMacros.h:314
ENoInit
Definition CoreMiscDefines.h:158
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE_FORCEINLINE_HINT bool operator!=(const FIndexedPointer &Other) const
Definition LockFreeList.h:76
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define USTRUCT(...)
Definition ObjectMacros.h:746
Definition Archive.h:1208
Definition OutputDevice.h:133
Definition UObjectGlobals.h:2492
Definition StructuredArchiveSlots.h:52
Definition AssetRegistryState.h:50
Definition MovieSceneNumericVariantGetter.h:17
virtual COREUOBJECT_API void GetPreloadDependencies(TArray< UObject * > &OutDeps)
Definition Obj.cpp:1608
static UE_FORCEINLINE_HINT void * Memcpy(void *Dest, const void *Src, SIZE_T Count)
Definition UnrealMemory.h:160
Definition MovieSceneNumericVariant.h:35
FMovieSceneNumericVariant & operator=(FMovieSceneNumericVariant &&In)=default
MOVIESCENE_API uint8 GetTypeBits() const
Definition MovieSceneNumericVariant.cpp:186
void SetTypedData(const T &InValue, uint8 InType)
Definition MovieSceneNumericVariant.h:323
float GetLiteralAsFloat() const
Definition MovieSceneNumericVariant.h:305
FMovieSceneNumericVariant(FMovieSceneNumericVariant &&In)=default
bool IsLiteral() const
Definition MovieSceneNumericVariant.h:291
MOVIESCENE_API void SetTypeBits(uint8 InType)
Definition MovieSceneNumericVariant.cpp:174
double GetLiteral() const
Definition MovieSceneNumericVariant.h:299
FMovieSceneNumericVariant(const FMovieSceneNumericVariant &Other)=default
FMovieSceneNumericVariant & operator=(const FMovieSceneNumericVariant &Other)=default
bool IsCustomPtr() const
Definition MovieSceneNumericVariant.h:316
T UnsafePayloadCast() const
Definition MovieSceneNumericVariant.h:340
Definition PropertyTag.h:38
Definition StructOpsTypeTraits.h:11
@ WithStructuredSerializeFromMismatchedTag
Definition StructOpsTypeTraits.h:29
@ WithGetPreloadDependencies
Definition StructOpsTypeTraits.h:32
@ WithAddStructReferencedObjects
Definition StructOpsTypeTraits.h:22
@ WithIdenticalViaEquality
Definition StructOpsTypeTraits.h:18
@ WithCopy
Definition StructOpsTypeTraits.h:17
@ WithExportTextItem
Definition StructOpsTypeTraits.h:20
@ WithSerializer
Definition StructOpsTypeTraits.h:23
@ WithImportTextItem
Definition StructOpsTypeTraits.h:21
Definition StructOpsTypeTraits.h:46
Definition WeakObjectPtrTemplates.h:25