UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
VVMRational.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_VM || defined(__INTELLISENSE__)
6
7#include "CoreTypes.h"
8#include "HAL/Platform.h"
10#include "VVMContext.h"
12#include "VVMInt.h"
13#include "VVMValue.h"
14
15namespace Verse
16{
17enum class EValueStringFormat;
18
19struct VRational : VHeapValue
20{
23
24 TWriteBarrier<VInt> Numerator;
25 TWriteBarrier<VInt> Denominator;
26
27 COREUOBJECT_API static VRational& Add(FAllocationContext Context, VRational& Lhs, VRational& Rhs);
28 COREUOBJECT_API static VRational& Sub(FAllocationContext Context, VRational& Lhs, VRational& Rhs);
29 COREUOBJECT_API static VRational& Mul(FAllocationContext Context, VRational& Lhs, VRational& Rhs);
30 COREUOBJECT_API static VRational& Div(FAllocationContext Context, VRational& Lhs, VRational& Rhs);
31 COREUOBJECT_API static VRational& Neg(FAllocationContext Context, VRational& N);
32 COREUOBJECT_API static bool Eq(FAllocationContext Context, VRational& Lhs, VRational& Rhs);
33 COREUOBJECT_API static bool Eq(FAllocationContext Context, VRational& Lhs, VInt Rhs);
34 COREUOBJECT_API static bool Gt(FAllocationContext Context, VRational& Lhs, VRational& Rhs);
35 COREUOBJECT_API static bool Lt(FAllocationContext Context, VRational& Lhs, VRational& Rhs);
36 COREUOBJECT_API static bool Gte(FAllocationContext Context, VRational& Lhs, VRational& Rhs);
37 COREUOBJECT_API static bool Lte(FAllocationContext Context, VRational& Lhs, VRational& Rhs);
38
39 COREUOBJECT_API VInt Floor(FAllocationContext Context) const;
40 COREUOBJECT_API VInt Ceil(FAllocationContext Context) const;
41
42 COREUOBJECT_API void Reduce(FAllocationContext Context);
43 COREUOBJECT_API void NormalizeSigns(FAllocationContext Context);
44 bool IsZero() const { return Numerator.Get().IsZero(); }
45 bool IsReduced() const { return bIsReduced; }
46
47 static VRational& New(FAllocationContext Context, VInt InNumerator, VInt InDenominator)
48 {
49 return *new (Context.AllocateFastCell(sizeof(VRational))) VRational(Context, InNumerator, InDenominator);
50 }
51
52 COREUOBJECT_API ECompares EqualImpl(FAllocationContext Context, VCell* Other, const TFunction<void(::Verse::VValue, ::Verse::VValue)>& HandlePlaceholder);
53
55
56 COREUOBJECT_API void AppendToStringImpl(FAllocationContext Context, FUtf8StringBuilderBase& Builder, EValueStringFormat Format, TSet<const void*>& VisitedObjects, uint32 RecursionDepth);
57
58 static void SerializeLayout(FAllocationContext Context, VRational*& This, FStructuredArchiveVisitor& Visitor);
59 COREUOBJECT_API void SerializeImpl(FAllocationContext Context, FStructuredArchiveVisitor& Visitor);
60
61private:
65 {
66 checkSlow(!InDenominator.IsZero());
67 Numerator.Set(Context, InNumerator);
68 Denominator.Set(Context, InDenominator);
69 }
70
71 bool bIsReduced;
72};
73
74} // namespace Verse
75#endif // WITH_VERSE_VM
#define checkSlow(expr)
Definition AssertionMacros.h:332
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
T * New(FMemStackBase &Mem, int32 Count=1, int32 Align=DEFAULT_ALIGNMENT)
Definition MemStack.h:259
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition AndroidPlatformMisc.h:14
Definition StringBuilder.h:79
FORCEINLINE T * Get(const FObjectPtr &ObjectPtr)
Definition ObjectPtr.h:426
bool SerializeImpl(const UScriptStruct *InSourceEventType, const void *InSourceEventData, FLiveLinkSerializedFrameData &OutSerializedData)
Definition LiveLinkCompression.cpp:126
FValue Neg(const FValue &Value)
Definition ShaderValue.cpp:1389
FValue Mul(const FValue &Lhs, const FValue &Rhs)
Definition ShaderValue.cpp:1514
FValue Div(const FValue &Lhs, const FValue &Rhs)
Definition ShaderValue.cpp:1519
Definition Archive.h:36
EValueStringFormat
Definition VVMValuePrinting.h:17
@ false
Definition radaudio_common.h:23