34template<
typename ElementType>
171 return Ar << (
uint8&)Bound.Type << Bound.Value;
198 Result.Value =
Value;
214 Result.Value =
Value;
266 if (
A.IsOpen()) {
return B; }
267 if (
B.IsOpen()) {
return A; }
268 if (
A.Value >
B.Value) {
return A; }
269 if (
B.Value >
A.Value) {
return B; }
270 if (
A.IsExclusive()) {
return A; }
284 if (
A.IsOpen()) {
return A; }
285 if (
B.IsOpen()) {
return B; }
286 if (
A.Value >
B.Value) {
return A; }
287 if (
B.Value >
A.Value) {
return B; }
288 if (
A.IsInclusive()) {
return A; }
302 if (
A.IsOpen()) {
return A; }
303 if (
B.IsOpen()) {
return B; }
304 if (
A.Value <
B.Value) {
return A; }
305 if (
B.Value <
A.Value) {
return B; }
306 if (
A.IsInclusive()) {
return A; }
320 if (
A.IsOpen()) {
return B; }
321 if (
B.IsOpen()) {
return A; }
322 if (
A.Value <
B.Value) {
return A; }
323 if (
B.Value <
A.Value) {
return B; }
324 if (
A.IsExclusive()) {
return A; }
342#define DEFINE_RANGEBOUND_WRAPPER_STRUCT(Name, ElementType) \
343 struct Name : TRangeBound<ElementType> \
346 typedef TRangeBound<ElementType> Super; \
353 Name(const Super& Other) \
357 Name(const ElementType InValue) \
361 static UE_FORCEINLINE_HINT Name Exclusive(ElementValueOrConstRef Value) \
363 return static_cast<const Name&>(Super::Exclusive(Value)); \
366 static UE_FORCEINLINE_HINT Name Inclusive(ElementValueOrConstRef Value) \
368 return static_cast<const Name&>(Super::Inclusive(Value)); \
371 static UE_FORCEINLINE_HINT Name Open() \
373 return static_cast<const Name&>(Super::Open()); \
376 static UE_FORCEINLINE_HINT Name FlipInclusion(const Name& Bound) \
378 return static_cast<const Name&>(Super::FlipInclusion(Bound)); \
381 static UE_FORCEINLINE_HINT const Name& MaxLower(const Name& A, const Name& B) \
383 return static_cast<const Name&>(Super::MaxLower(A, B)); \
386 static UE_FORCEINLINE_HINT const Name& MaxUpper(const Name& A, const Name& B) \
388 return static_cast<const Name&>(Super::MaxUpper(A, B)); \
391 static UE_FORCEINLINE_HINT const Name& MinLower(const Name& A, const Name& B) \
393 return static_cast<const Name&>(Super::MinLower(A, B)); \
396 static UE_FORCEINLINE_HINT const Name& MinUpper(const Name& A, const Name& B) \
398 return static_cast<const Name&>(Super::MinUpper(A, B)); \
403 struct TIsBitwiseConstructible<Name, TRangeBound<ElementType>> \
405 enum { Value = true }; \
409 struct TIsBitwiseConstructible<TRangeBound<ElementType>, Name> \
411 enum { Value = true }; \
#define check(expr)
Definition AssertionMacros.h:314
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define DEFINE_RANGEBOUND_WRAPPER_STRUCT(Name, ElementType)
Definition RangeBound.h:342
Definition Archive.h:1208
Definition EnumAsByte.h:22
Definition RangeBound.h:36
ElementValueOrConstRef GetValue() const
Definition RangeBound.h:97
friend uint32 GetTypeHash(const TRangeBound &Bound)
Definition RangeBound.h:180
UE_FORCEINLINE_HINT bool IsClosed() const
Definition RangeBound.h:125
static const TRangeBound & MinLower(const TRangeBound &A, const TRangeBound &B)
Definition RangeBound.h:300
UE_FORCEINLINE_HINT bool IsExclusive() const
Definition RangeBound.h:135
static const TRangeBound & MaxUpper(const TRangeBound &A, const TRangeBound &B)
Definition RangeBound.h:282
static TRangeBound Inclusive(ElementValueOrConstRef Value)
Definition RangeBound.h:209
TRangeBound(ElementValueOrConstRef InValue)
Definition RangeBound.h:58
UE_FORCEINLINE_HINT bool IsInclusive() const
Definition RangeBound.h:145
UE_FORCEINLINE_HINT bool IsOpen() const
Definition RangeBound.h:155
TRangeBound()
Definition RangeBound.h:47
static const TRangeBound & MaxLower(const TRangeBound &A, const TRangeBound &B)
Definition RangeBound.h:264
bool operator==(const TRangeBound &Other) const
Definition RangeBound.h:71
static const TRangeBound & MinUpper(const TRangeBound &A, const TRangeBound &B)
Definition RangeBound.h:318
static TRangeBound FlipInclusion(const TRangeBound &Bound)
Definition RangeBound.h:242
TCallTraits< ElementType >::ParamType ElementValueOrConstRef
Definition RangeBound.h:40
friend class FArchive & operator<<(class FArchive &Ar, TRangeBound &Bound)
Definition RangeBound.h:169
bool operator!=(const TRangeBound &Other) const
Definition RangeBound.h:82
static TRangeBound Open()
Definition RangeBound.h:224
static TRangeBound Exclusive(ElementValueOrConstRef Value)
Definition RangeBound.h:193
void SetValue(ElementValueOrConstRef NewValue)
Definition RangeBound.h:113
Definition RangeBound.h:13
Type
Definition RangeBound.h:18
@ Open
Definition RangeBound.h:26
@ Inclusive
Definition RangeBound.h:23
@ Exclusive
Definition RangeBound.h:20
TCallTraitsParamTypeHelper< T, PassByValue >::ParamType ParamType
Definition UnrealTypeTraits.h:275