12 template<
typename ColumnType>
19 template<
typename ColumnType>
23 const ColumnType* Column = Storage.
GetColumn<ColumnType>(Row);
24 return Column ? CalculatePrefix(*Column, ByteIndex) :
FPrefixInfo{};
27 template<
typename ColumnType>
39 template<
typename ColumnType>
46 template<
typename ColumnType>
50 const ColumnType* Column = Storage.
GetColumn<ColumnType>(Row);
51 return Column ? CalculatePrefix(*Column, ByteIndex) :
FPrefixInfo{};
54 template<
typename ColumnType>
66 template<
typename ColumnType>
78 template<
typename ColumnType>
85 template<
typename ColumnType>
96 template<
typename ColumnType>
108 template<
typename ColumnType>
112 const ColumnType* Column = Storage.
GetColumn<ColumnType>(Row);
113 return Column ? CalculatePrefix(*Column, ByteIndex) :
FPrefixInfo{};
116 template<
typename ColumnType>
127 constexpr int32 ByteSize =
sizeof(T);
134 template<
typename Numeric>
139 if constexpr (std::is_floating_point_v<Numeric>)
142 using UnsignedInt = std::make_unsigned_t<SignedInt>;
148 return Converter.U ^ mask;
150 else if constexpr (std::is_signed_v<Numeric>)
152 using Unsigned = std::make_unsigned_t<Numeric>;
159 static_assert(std::is_unsigned_v<Numeric>,
"Input value to rebase for sort indexing must be a numeric value.");
164 template<
bool bCaseSensitive,
typename CharType>
177 template<
typename ValueType>
199 if (ResultSize - (
Index & (ResultSize - 1)) >=
static_cast<int32>(ElementSize))
204 Result.bHasRemainingBytes =
Intermediate.bHasRemainingBytes;
210 template<
typename ValueType,
typename... ValueTypes>
212 const ValueType&
Value, ValueTypes&&... Values)
219 if (CurrentIndex +
Size <= ByteIndex)
257 if constexpr (bIsById)
259 return sizeof(Cache);
264 return static_cast<uint32>(Cache.NumBytesWithoutNull());
271 if constexpr (bIsById)
273 return sizeof(Cache);
277 return sizeof(
typename CompareType::ElementType);
285 if constexpr (bIsById)
300 if constexpr (bIsById)
302 return View->CompareIndexes(Rhs);
306 auto Compare = [
this](
const FName& To)
311 FString ToString = To.ToString();
312 ToString.RemoveFromStart(
TEXT(
"/"));
317 return View->Compare(To);
340 return View ? Compare(*View, Rhs) : 1;
346 return (View && Rhs.View)
347 ? Compare(*View, *Rhs.View)
348 :
static_cast<int32>(View ==
nullptr) -
static_cast<int32>(Rhs.View ==
nullptr);
354 return Compare(Rhs) == 0;
360 return Compare(Rhs) != 0;
366 return Compare(Rhs) < 0;
372 return Compare(Rhs) <= 0;
378 return Compare(Rhs) > 0;
384 return Compare(Rhs) >= 0;
390 if (View && !bIsCached)
392 if constexpr (bIsById)
394 Cache = View->GetNumber();
401 View->ToString(Cache);
407 View->ToString(Cache);
424 template<SortCase Casing,
typename T>
430 template<SortCase Casing,
typename T>
433 return sizeof(
typename T::ElementType);
436 template<SortCase Casing,
typename T>
449 if constexpr (
sizeof(
typename T::ElementType) == 1)
501 template<
typename... ValueTypes>
507 .bHasRemainingBytes =
true
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
constexpr bool EnumHasAllFlags(Enum Flags, Enum Contains)
Definition EnumClassFlags.h:28
uint32 Size
Definition VulkanMemory.cpp:4034
Definition NameTypes.h:617
Definition StringView.h:107
virtual int32 Compare(const ICoreProvider &Storage, RowHandle Left, RowHandle Right) const =0
virtual ESortType GetSortType() const =0
virtual FPrefixInfo CalculatePrefix(const ICoreProvider &Storage, RowHandle Row, uint32 ByteIndex) const =0
ESortType
Definition TypedElementSorter.h:35
Definition TypedElementDataStorageInterface.h:65
ColumnType * GetColumn(RowHandle Row)
Definition TypedElementDataStorageInterface.h:802
Definition TypedElementSorter.h:95
UE_FORCEINLINE_HINT int32 Len() const
Definition UnrealString.h.inl:954
constexpr bool Compare(const InAT &InputA, const InBT &InputB, ProjectionT Projection, PredicateT Predicate)
Definition Compare.h:15
@ IgnoreCase
Definition CString.h:26
Definition OverriddenPropertySet.cpp:45
void CalculatePrefix(FPrefixInfo &Result, int32 CurrentIndex, int32 ByteIndex, const ValueType &Value)
Definition TypedElementSorter.inl:178
Definition CommonTypes.cpp:10
FPrefixInfo CreateSortPrefix(uint32 ByteIndex, ValueTypes &&... Values)
Definition TypedElementSorter.inl:502
uint64 RowHandle
Definition Handles.h:15
FORCEINLINE UE_STRING_CLASS RhsType && Rhs
Definition String.cpp.inl:718
U16 Index
Definition radfft.cpp:71
static CharType ToUpper(CharType Char)
Definition Char.h:80
Definition TypedElementSorter.h:23
uint64 Prefix
Definition TypedElementSorter.h:24
Definition TypedElementSorter.h:261
FPrefixInfo CalculatePrefix(int32 CurrentIndex, int32 ByteIndex) const
Definition TypedElementSorter.inl:282
bool operator<(const TSortNameView &Rhs) const
Definition TypedElementSorter.inl:364
bool operator==(const TSortNameView &Rhs) const
Definition TypedElementSorter.inl:352
uint32 GetByteSize() const
Definition TypedElementSorter.inl:255
bool operator>=(const TSortNameView &Rhs) const
Definition TypedElementSorter.inl:382
int32 Compare(const FName &Rhs) const
Definition TypedElementSorter.inl:338
bool operator>(const TSortNameView &Rhs) const
Definition TypedElementSorter.inl:376
TSortNameView & operator=(const FName &Name)
Definition TypedElementSorter.inl:247
bool operator!=(const TSortNameView &Rhs) const
Definition TypedElementSorter.inl:358
bool operator<=(const TSortNameView &Rhs) const
Definition TypedElementSorter.inl:370
static constexpr uint32 GetElementSize()
Definition TypedElementSorter.inl:269
Definition TypedElementSorter.h:200
Definition TypedElementSorter.h:319