Ark Server API (ASE) - Wiki
Loading...
Searching...
No Matches
Map.h
Go to the documentation of this file.
1// Copyright 1998-2017 Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "../BasicTypes.h"
6#include "../Templates/UnrealTypeTraits.h"
7#include "../Templates/UnrealTemplate.h"
8#include "../Templates/Sorting.h"
9#include "../Misc/StructBuilder.h"
10#include "../Templates/Function.h"
11#include "../Containers/Set.h"
12#include "../Containers/Algo/Reverse.h"
13#include "../Templates/Tuple.h"
14#include "../Templates/HasGetTypeHash.h"
15
16#define ExchangeB(A,B) {bool T=A; A=B; B=T;}
17
18template <typename KeyType, typename ValueType>
19using TPair = TTuple<KeyType, ValueType>;
20
21/** An initializer type for pairs that's passed to the pair set when adding a new pair. */
22template <typename KeyInitType, typename ValueInitType>
24{
25public:
26 typename TRValueToLValueReference<KeyInitType >::Type Key;
27 typename TRValueToLValueReference<ValueInitType>::Type Value;
28
29 /** Initialization constructor. */
30 FORCEINLINE TPairInitializer(KeyInitType InKey, ValueInitType InValue)
31 : Key(InKey)
32 , Value(InValue)
33 {
34 }
35
36 /** Implicit conversion to pair initializer. */
37 template <typename KeyType, typename ValueType>
38 FORCEINLINE TPairInitializer(const TPair<KeyType, ValueType>& Pair)
39 : Key(Pair.Key)
41 {
42 }
43
44 template <typename KeyType, typename ValueType>
45 operator TPair<KeyType, ValueType>() const
46 {
48 }
49};
50
51
52/** An initializer type for keys that's passed to the pair set when adding a new key. */
53template <typename KeyInitType>
55{
56public:
57 typename TRValueToLValueReference<KeyInitType>::Type Key;
58
59 /** Initialization constructor. */
60 FORCEINLINE explicit TKeyInitializer(KeyInitType InKey)
61 : Key(InKey)
62 { }
63
64 template <typename KeyType, typename ValueType>
65 operator TPair<KeyType, ValueType>() const
66 {
68 }
69};
70
71/** Defines how the map's pairs are hashed. */
72template<typename KeyType, typename ValueType, bool bInAllowDuplicateKeys>
73struct TDefaultMapKeyFuncs : BaseKeyFuncs<TPair<KeyType, ValueType>, KeyType, bInAllowDuplicateKeys>
74{
75 typedef typename TTypeTraits<KeyType>::ConstPointerType KeyInitType;
76 typedef const TPairInitializer<typename TTypeTraits<KeyType>::ConstInitType, typename TTypeTraits<ValueType>::ConstInitType>& ElementInitType;
77
78 static FORCEINLINE KeyInitType GetSetKey(ElementInitType Element)
79 {
80 return Element.Key;
81 }
82 static FORCEINLINE bool Matches(KeyInitType A, KeyInitType B)
83 {
84 return A == B;
85 }
86 static FORCEINLINE uint32 GetKeyHash(KeyInitType Key)
87 {
88 return GetTypeHash(Key);
89 }
90};
91
92template<typename KeyType, typename ValueType, bool bInAllowDuplicateKeys>
93struct TDefaultMapHashableKeyFuncs : TDefaultMapKeyFuncs<KeyType, ValueType, bInAllowDuplicateKeys>
94{
95 static_assert(THasGetTypeHash<KeyType>::Value, "TMap must have a hashable KeyType unless a custom key func is provided.");
96};
97
98/**
99* The base class of maps from keys to values. Implemented using a TSet of key-value pairs with a custom KeyFuncs,
100* with the same O(1) addition, removal, and finding.
101**/
102template <typename KeyType, typename ValueType, typename SetAllocator, typename KeyFuncs>
104{
105 template <typename OtherKeyType, typename OtherValueType, typename OtherSetAllocator, typename OtherKeyFuncs>
106 friend class TMapBase;
107
108 friend struct TContainerTraits<TMapBase>;
109
110public:
112 typedef typename TTypeTraits<KeyType >::ConstInitType KeyInitType;
113 typedef typename TTypeTraits<ValueType>::ConstInitType ValueInitType;
114 typedef TPair<KeyType, ValueType> ElementType;
115
116protected:
117
119
120 TMapBase() = default;
121 TMapBase(TMapBase&&) = default;
122 TMapBase(const TMapBase&) = default;
123 TMapBase& operator=(TMapBase&&) = default;
124 TMapBase& operator=(const TMapBase&) = default;
125
126#else
127
132 FORCEINLINE TMapBase& operator=(const TMapBase& Other) { Pairs = Other.Pairs; return *this; }
133
134#endif
135
136 /** Constructor for moving elements from a TMap with a different SetAllocator */
137 template<typename OtherSetAllocator>
138 TMapBase(TMapBase<KeyType, ValueType, OtherSetAllocator, KeyFuncs>&& Other)
140 { }
141
142 /** Constructor for copying elements from a TMap with a different SetAllocator */
143 template<typename OtherSetAllocator>
144 TMapBase(const TMapBase<KeyType, ValueType, OtherSetAllocator, KeyFuncs>& Other)
145 : Pairs(Other.Pairs)
146 { }
147
148 /** Assignment operator for moving elements from a TMap with a different SetAllocator */
149 template<typename OtherSetAllocator>
150 TMapBase& operator=(TMapBase<KeyType, ValueType, OtherSetAllocator, KeyFuncs>&& Other)
151 {
153 return *this;
154 }
155
156 /** Assignment operator for copying elements from a TMap with a different SetAllocator */
157 template<typename OtherSetAllocator>
158 TMapBase& operator=(const TMapBase<KeyType, ValueType, OtherSetAllocator, KeyFuncs>& Other)
159 {
160 Pairs = Other.Pairs;
161 return *this;
162 }
163
164public:
165 // Legacy comparison operators. Note that these also test whether the map's key-value pairs were added in the same order!
166 friend bool LegacyCompareEqual(const TMapBase& A, const TMapBase& B)
167 {
169 }
170 friend bool LegacyCompareNotEqual(const TMapBase& A, const TMapBase& B)
171 {
173 }
174
175 /**
176 * Compare this map with another for equality. Does not make any assumptions about Key order.
177 * NOTE: this might be a candidate for operator== but it was decided to make it an explicit function
178 * since it can potentially be quite slow.
179 *
180 * @param Other The other map to compare against
181 * @returns True if both this and Other contain the same keys with values that compare ==
182 */
183 bool OrderIndependentCompareEqual(const TMapBase& Other) const
184 {
185 // first check counts (they should be the same obviously)
186 if (Num() != Other.Num())
187 {
188 return false;
189 }
190
191 // since we know the counts are the same, we can just iterate one map and check for existence in the other
192 for (typename ElementSetType::TConstIterator It(Pairs); It; ++It)
193 {
194 const ValueType* BVal = Other.Find(It->Key);
195 if (BVal == nullptr)
196 {
197 return false;
198 }
199 if (!(*BVal == It->Value))
200 {
201 return false;
202 }
203 }
204
205 // all fields in A match B and A and B's counts are the same (so there can be no fields in B not in A)
206 return true;
207 }
208
209 /**
210 * Removes all elements from the map.
211 *
212 * This method potentially leaves space allocated for an expected
213 * number of elements about to be added.
214 *
215 * @param ExpectedNumElements The number of elements about to be added to the set.
216 */
217 FORCEINLINE void Empty(int32 ExpectedNumElements = 0)
218 {
220 }
221
222 /** Efficiently empties out the map but preserves all allocations and capacities */
223 FORCEINLINE void Reset()
224 {
225 Pairs.Reset();
226 }
227
228 /** Shrinks the pair set to avoid slack. */
229 FORCEINLINE void Shrink()
230 {
231 Pairs.Shrink();
232 }
233
234 /** Compacts the pair set to remove holes */
235 FORCEINLINE void Compact()
236 {
237 Pairs.Compact();
238 }
239
240 /** Compacts the pair set to remove holes. Does not change the iteration order of the elements. */
241 FORCEINLINE void CompactStable()
242 {
244 }
245
246 /** Preallocates enough memory to contain Number elements */
247 FORCEINLINE void Reserve(int32 Number)
248 {
250 }
251
252 /** @return The number of elements in the map. */
253 FORCEINLINE int32 Num() const
254 {
255 return Pairs.Num();
256 }
257
258 /**
259 * Get the unique keys contained within this map.
260 *
261 * @param OutKeys Upon return, contains the set of unique keys in this map.
262 * @return The number of unique keys in the map.
263 */
264 template<typename Allocator> int32 GetKeys(TArray<KeyType, Allocator>& OutKeys) const
265 {
267 for (typename ElementSetType::TConstIterator It(Pairs); It; ++It)
268 {
269 if (!VisitedKeys.Contains(It->Key))
270 {
271 OutKeys.Add(It->Key);
273 }
274 }
275 return OutKeys.Num();
276 }
277
278 /**
279 * Helper function to return the amount of memory allocated by this container .
280 *
281 * @return Number of bytes allocated by this container.
282 * @see CountBytes
283 */
284 FORCEINLINE uint32 GetAllocatedSize() const
285 {
286 return Pairs.GetAllocatedSize();
287 }
288
289 /**
290 * Set the value associated with a key.
291 *
292 * @param InKey The key to associate the value with.
293 * @param InValue The value to associate with the key.
294 * @return A reference to the value as stored in the map. The reference is only valid until the next change to any key in the map.
295 */
296 FORCEINLINE ValueType& Add(const KeyType& InKey, const ValueType& InValue) { return Emplace(InKey, InValue); }
297 FORCEINLINE ValueType& Add(const KeyType& InKey, ValueType&& InValue) { return Emplace(InKey, MoveTempIfPossible(InValue)); }
298 FORCEINLINE ValueType& Add(KeyType&& InKey, const ValueType& InValue) { return Emplace(MoveTempIfPossible(InKey), InValue); }
299 FORCEINLINE ValueType& Add(KeyType&& InKey, ValueType&& InValue) { return Emplace(MoveTempIfPossible(InKey), MoveTempIfPossible(InValue)); }
300
301 /**
302 * Set a default value associated with a key.
303 *
304 * @param InKey The key to associate the value with.
305 * @return A reference to the value as stored in the map. The reference is only valid until the next change to any key in the map.
306 */
307 FORCEINLINE ValueType& Add(const KeyType& InKey) { return Emplace(InKey); }
308 FORCEINLINE ValueType& Add(KeyType&& InKey) { return Emplace(MoveTempIfPossible(InKey)); }
309
310 /**
311 * Sets the value associated with a key.
312 *
313 * @param InKey The key to associate the value with.
314 * @param InValue The value to associate with the key.
315 * @return A reference to the value as stored in the map. The reference is only valid until the next change to any key in the map. */
316 template <typename InitKeyType, typename InitValueType>
317 ValueType& Emplace(InitKeyType&& InKey, InitValueType&& InValue)
318 {
320
321 return Pairs[PairId].Value;
322 }
323
324 /**
325 * Set a default value associated with a key.
326 *
327 * @param InKey The key to associate the value with.
328 * @return A reference to the value as stored in the map. The reference is only valid until the next change to any key in the map.
329 */
330 template <typename InitKeyType>
331 ValueType& Emplace(InitKeyType&& InKey)
332 {
334
335 return Pairs[PairId].Value;
336 }
337
338 /**
339 * Remove all value associations for a key.
340 *
341 * @param InKey The key to remove associated values for.
342 * @return The number of values that were associated with the key.
343 */
344 FORCEINLINE int32 Remove(KeyConstPointerType InKey)
345 {
347 return NumRemovedPairs;
348 }
349
350 /**
351 * Find the key associated with the specified value.
352 *
353 * The time taken is O(N) in the number of pairs.
354 *
355 * @param Value The value to search for
356 * @return A pointer to the key associated with the specified value,
357 * or nullptr if the value isn't contained in this map. The pointer
358 * is only valid until the next change to any key in the map.
359 */
360 const KeyType* FindKey(ValueInitType Value) const
361 {
363 {
364 if (PairIt->Value == Value)
365 {
366 return &PairIt->Key;
367 }
368 }
369 return nullptr;
370 }
371
372 /**
373 * Find the value associated with a specified key.
374 *
375 * @param Key The key to search for.
376 * @return A pointer to the value associated with the specified key, or nullptr if the key isn't contained in this map. The pointer
377 * is only valid until the next change to any key in the map.
378 */
379 FORCEINLINE ValueType* Find(KeyConstPointerType Key)
380 {
381 if (auto* Pair = Pairs.Find(Key))
382 {
383 return &Pair->Value;
384 }
385
386 return nullptr;
387 }
388 FORCEINLINE const ValueType* Find(KeyConstPointerType Key) const
389 {
390 return const_cast<TMapBase*>(this)->Find(Key);
391 }
392
393private:
394
395 /**
396 * Find the value associated with a specified key, or if none exists,
397 * adds a value using the default constructor.
398 *
399 * @param Key The key to search for.
400 * @return A reference to the value associated with the specified key.
401 */
402 template <typename ArgType>
403 FORCEINLINE ValueType& FindOrAddImpl(ArgType&& Arg)
404 {
405 if (auto* Pair = Pairs.Find(Arg))
406 return Pair->Value;
407
408 return Add(Forward<ArgType>(Arg));
409 }
410
411public:
412
413 /**
414 * Find the value associated with a specified key, or if none exists,
415 * adds a value using the default constructor.
416 *
417 * @param Key The key to search for.
418 * @return A reference to the value associated with the specified key.
419 */
420 FORCEINLINE ValueType& FindOrAdd(const KeyType& Key) { return FindOrAddImpl(Key); }
421 FORCEINLINE ValueType& FindOrAdd(KeyType&& Key) { return FindOrAddImpl(MoveTempIfPossible(Key)); }
422
423 /**
424 * Find the value associated with a specified key, or if none exists,
425 * adds a value using the key as the constructor parameter.
426 *
427 * @param Key The key to search for.
428 * @return A reference to the value associated with the specified key.
429 */
430 //@todo UE4 merge - this prevents FConfigCacheIni from compiling
431 /*ValueType& FindOrAddKey(KeyInitType Key)
432 {
433 TPair* Pair = Pairs.Find(Key);
434 if( Pair )
435 {
436 return Pair->Value;
437 }
438 else
439 {
440 return Set(Key, ValueType(Key));
441 }
442 }*/
443
444 /**
445 * Find a reference to the value associated with a specified key.
446 *
447 * @param Key The key to search for.
448 * @return The value associated with the specified key, or triggers an assertion if the key does not exist.
449 */
450 FORCEINLINE const ValueType& FindChecked(KeyConstPointerType Key) const
451 {
452 const auto* Pair = Pairs.Find(Key);
453 check(Pair != nullptr);
454 return Pair->Value;
455 }
456
457 /**
458 * Find a reference to the value associated with a specified key.
459 *
460 * @param Key The key to search for.
461 * @return The value associated with the specified key, or triggers an assertion if the key does not exist.
462 */
463 FORCEINLINE ValueType& FindChecked(KeyConstPointerType Key)
464 {
465 auto* Pair = Pairs.Find(Key);
466 check(Pair != nullptr);
467 return Pair->Value;
468 }
469
470 /**
471 * Find the value associated with a specified key.
472 *
473 * @param Key The key to search for.
474 * @return The value associated with the specified key, or the default value for the ValueType if the key isn't contained in this map.
475 */
476 FORCEINLINE ValueType FindRef(KeyConstPointerType Key) const
477 {
478 if (const auto* Pair = Pairs.Find(Key))
479 {
480 return Pair->Value;
481 }
482
483 return ValueType();
484 }
485
486 /**
487 * Check if map contains the specified key.
488 *
489 * @param Key The key to check for.
490 * @return true if the map contains the key.
491 */
492 FORCEINLINE bool Contains(KeyConstPointerType Key) const
493 {
494 return Pairs.Contains(Key);
495 }
496
497 /**
498 * Generate an array from the keys in this map.
499 *
500 * @param OutArray Will contain the collection of keys.
501 */
502 template<typename Allocator> void GenerateKeyArray(TArray<KeyType, Allocator>& OutArray) const
503 {
506 {
507 new(OutArray) KeyType(PairIt->Key);
508 }
509 }
510
511 /**
512 * Generate an array from the values in this map.
513 *
514 * @param OutArray Will contain the collection of values.
515 */
516 template<typename Allocator> void GenerateValueArray(TArray<ValueType, Allocator>& OutArray) const
517 {
520 {
522 }
523 }
524
525protected:
526 typedef TSet<ElementType, KeyFuncs, SetAllocator> ElementSetType;
527
528 /** The base of TMapBase iterators. */
529 template<bool bConst, bool bRangedFor = false>
531 {
532 public:
533 typedef typename TChooseClass<
534 bConst,
535 typename TChooseClass<bRangedFor, typename ElementSetType::TRangedForConstIterator, typename ElementSetType::TConstIterator>::Result,
536 typename TChooseClass<bRangedFor, typename ElementSetType::TRangedForIterator, typename ElementSetType::TIterator >::Result
538 private:
539 typedef typename TChooseClass<bConst, const TMapBase, TMapBase>::Result MapType;
540 typedef typename TChooseClass<bConst, const KeyType, KeyType>::Result ItKeyType;
541 typedef typename TChooseClass<bConst, const ValueType, ValueType>::Result ItValueType;
542 typedef typename TChooseClass<bConst, const typename ElementSetType::ElementType, typename ElementSetType::ElementType>::Result PairType;
543
544 public:
545 FORCEINLINE TBaseIterator(const PairItType& InElementIt)
547 {
548 }
549
550 FORCEINLINE TBaseIterator& operator++()
551 {
552 ++PairIt;
553 return *this;
554 }
555
556 /** conversion to "bool" returning true if the iterator is valid. */
557 FORCEINLINE explicit operator bool() const
558 {
559 return !!PairIt;
560 }
561 /** inverse of the "bool" operator */
562 FORCEINLINE bool operator !() const
563 {
564 return !(bool)*this;
565 }
566
567 FORCEINLINE friend bool operator==(const TBaseIterator& Lhs, const TBaseIterator& Rhs) { return Lhs.PairIt == Rhs.PairIt; }
568 FORCEINLINE friend bool operator!=(const TBaseIterator& Lhs, const TBaseIterator& Rhs) { return Lhs.PairIt != Rhs.PairIt; }
569
570 FORCEINLINE ItKeyType& Key() const { return PairIt->Key; }
571 FORCEINLINE ItValueType& Value() const { return PairIt->Value; }
572
573 FORCEINLINE PairType& operator* () const { return *PairIt; }
574 FORCEINLINE PairType* operator->() const { return &*PairIt; }
575
576 protected:
578 };
579
580 /** The base type of iterators that iterate over the values associated with a specified key. */
581 template<bool bConst>
583 {
584 private:
585 typedef typename TChooseClass<bConst, typename ElementSetType::TConstKeyIterator, typename ElementSetType::TKeyIterator>::Result SetItType;
586 typedef typename TChooseClass<bConst, const KeyType, KeyType>::Result ItKeyType;
587 typedef typename TChooseClass<bConst, const ValueType, ValueType>::Result ItValueType;
588
589 public:
590 /** Initialization constructor. */
591 FORCEINLINE TBaseKeyIterator(const SetItType& InSetIt)
592 : SetIt(InSetIt)
593 {
594 }
595
596 FORCEINLINE TBaseKeyIterator& operator++()
597 {
598 ++SetIt;
599 return *this;
600 }
601
602 /** conversion to "bool" returning true if the iterator is valid. */
603 FORCEINLINE explicit operator bool() const
604 {
605 return !!SetIt;
606 }
607 /** inverse of the "bool" operator */
608 FORCEINLINE bool operator !() const
609 {
610 return !(bool)*this;
611 }
612
613 FORCEINLINE ItKeyType& Key() const { return SetIt->Key; }
614 FORCEINLINE ItValueType& Value() const { return SetIt->Value; }
615
616 protected:
618 };
619
620 /** A set of the key-value pairs in the map. */
622
623public:
624
625 /** Map iterator. */
626 class TIterator : public TBaseIterator<false>
627 {
628 public:
629
630 /** Initialization constructor. */
631 FORCEINLINE TIterator(TMapBase& InMap, bool bInRequiresRehashOnRemoval = false)
633 , Map(InMap)
636 {
637 }
638
639 /** Destructor. */
640 FORCEINLINE ~TIterator()
641 {
643 {
644 Map.Pairs.Relax();
645 }
646 }
647
648 /** Removes the current pair from the map. */
649 FORCEINLINE void RemoveCurrent()
650 {
653 }
654
655 private:
659 };
660
661 /** Const map iterator. */
662 class TConstIterator : public TBaseIterator<true>
663 {
664 public:
665 FORCEINLINE TConstIterator(const TMapBase& InMap)
667 {
668 }
669 };
670
671 using TRangedForIterator = TBaseIterator<false, true>;
672 using TRangedForConstIterator = TBaseIterator<true, true>;
673
674 /** Iterates over values associated with a specified key in a const map. */
676 {
677 public:
678 FORCEINLINE TConstKeyIterator(const TMapBase& InMap, KeyInitType InKey)
680 {}
681 };
682
683 /** Iterates over values associated with a specified key in a map. */
684 class TKeyIterator : public TBaseKeyIterator<false>
685 {
686 public:
687 FORCEINLINE TKeyIterator(TMapBase& InMap, KeyInitType InKey)
689 {}
690
691 /** Removes the current key-value pair from the map. */
692 FORCEINLINE void RemoveCurrent()
693 {
695 }
696 };
697
698 /** Creates an iterator over all the pairs in this map */
700 {
701 return TIterator(*this);
702 }
703
704 /** Creates a const iterator over all the pairs in this map */
706 {
707 return TConstIterator(*this);
708 }
709
710 /** Creates an iterator over the values associated with a specified key in a map */
712 {
713 return TKeyIterator(*this, InKey);
714 }
715
716 /** Creates a const iterator over the values associated with a specified key in a map */
718 {
719 return TConstKeyIterator(*this, InKey);
720 }
721
722private:
723 /**
724 * DO NOT USE DIRECTLY
725 * STL-like iterators to enable range-based for loop support.
726 */
727 FORCEINLINE friend TRangedForIterator begin(TMapBase& MapBase) { return TRangedForIterator(begin(MapBase.Pairs)); }
728 FORCEINLINE friend TRangedForConstIterator begin(const TMapBase& MapBase) { return TRangedForConstIterator(begin(MapBase.Pairs)); }
729 FORCEINLINE friend TRangedForIterator end(TMapBase& MapBase) { return TRangedForIterator(end(MapBase.Pairs)); }
730 FORCEINLINE friend TRangedForConstIterator end(const TMapBase& MapBase) { return TRangedForConstIterator(end(MapBase.Pairs)); }
731};
732
733
734/** The base type of sortable maps. */
735template <typename KeyType, typename ValueType, typename SetAllocator, typename KeyFuncs>
736class TSortableMapBase : public TMapBase<KeyType, ValueType, SetAllocator, KeyFuncs>
737{
738 friend struct TContainerTraits<TSortableMapBase>;
739
740protected:
741 typedef TMapBase<KeyType, ValueType, SetAllocator, KeyFuncs> Super;
742
744
745 TSortableMapBase() = default;
750
751#else
752
758
759#endif
760
761 /** Constructor for moving elements from a TMap with a different SetAllocator */
762 template<typename OtherSetAllocator>
763 TSortableMapBase(TSortableMapBase<KeyType, ValueType, OtherSetAllocator, KeyFuncs>&& Other)
765 {
766 }
767
768 /** Constructor for copying elements from a TMap with a different SetAllocator */
769 template<typename OtherSetAllocator>
770 TSortableMapBase(const TSortableMapBase<KeyType, ValueType, OtherSetAllocator, KeyFuncs>& Other)
771 : Super(Other)
772 {
773 }
774
775 /** Assignment operator for moving elements from a TMap with a different SetAllocator */
776 template<typename OtherSetAllocator>
777 TSortableMapBase& operator=(TSortableMapBase<KeyType, ValueType, OtherSetAllocator, KeyFuncs>&& Other)
778 {
779 (Super&)*this = MoveTemp(Other);
780 return *this;
781 }
782
783 /** Assignment operator for copying elements from a TMap with a different SetAllocator */
784 template<typename OtherSetAllocator>
785 TSortableMapBase& operator=(const TSortableMapBase<KeyType, ValueType, OtherSetAllocator, KeyFuncs>& Other)
786 {
787 (Super&)*this = Other;
788 return *this;
789 }
790
791public:
792 /**
793 * Sorts the pairs array using each pair's Key as the sort criteria, then rebuilds the map's hash.
794 * Invoked using "MyMapVar.KeySort( PREDICATE_CLASS() );"
795 */
796 template<typename PREDICATE_CLASS>
797 FORCEINLINE void KeySort(const PREDICATE_CLASS& Predicate)
798 {
800 }
801
802 /**
803 * Sorts the pairs array using each pair's Value as the sort criteria, then rebuilds the map's hash.
804 * Invoked using "MyMapVar.ValueSort( PREDICATE_CLASS() );"
805 */
806 template<typename PREDICATE_CLASS>
807 FORCEINLINE void ValueSort(const PREDICATE_CLASS& Predicate)
808 {
810 }
811
812private:
813
814 /** Extracts the pair's key from the map's pair structure and passes it to the user provided comparison class. */
815 template<typename PREDICATE_CLASS>
817 {
818 TDereferenceWrapper< KeyType, PREDICATE_CLASS> Predicate;
819
820 public:
821
822 FORCEINLINE FKeyComparisonClass(const PREDICATE_CLASS& InPredicate)
824 {}
825
826 FORCEINLINE bool operator()(const typename Super::ElementType& A, const typename Super::ElementType& B) const
827 {
828 return Predicate(A.Key, B.Key);
829 }
830 };
831
832 /** Extracts the pair's value from the map's pair structure and passes it to the user provided comparison class. */
833 template<typename PREDICATE_CLASS>
835 {
836 TDereferenceWrapper< ValueType, PREDICATE_CLASS> Predicate;
837
838 public:
839
840 FORCEINLINE FValueComparisonClass(const PREDICATE_CLASS& InPredicate)
842 {}
843
844 FORCEINLINE bool operator()(const typename Super::ElementType& A, const typename Super::ElementType& B) const
845 {
846 return Predicate(A.Value, B.Value);
847 }
848 };
849};
850
851class FScriptMap;
852
853/** A TMapBase specialization that only allows a single value associated with each key.*/
854template<typename KeyType, typename ValueType, typename SetAllocator = FDefaultSetAllocator, typename KeyFuncs = TDefaultMapHashableKeyFuncs<KeyType,ValueType,false>>
855class TMap : public TSortableMapBase<KeyType, ValueType, SetAllocator, KeyFuncs>
856{
857 friend struct TContainerTraits<TMap>;
858 friend class FScriptMap;
859
860 static_assert(!KeyFuncs::bAllowDuplicateKeys, "TMap cannot be instantiated with a KeyFuncs which allows duplicate keys");
861
862public:
863 typedef TSortableMapBase<KeyType, ValueType, SetAllocator, KeyFuncs> Super;
864 typedef typename Super::KeyInitType KeyInitType;
866
868
869 TMap() = default;
870 TMap(TMap&&) = default;
871 TMap(const TMap&) = default;
872 TMap& operator=(TMap&&) = default;
873 TMap& operator=(const TMap&) = default;
874
875#else
876
877 FORCEINLINE TMap() {}
879 FORCEINLINE TMap(const TMap& Other) : Super(Other) {}
880 FORCEINLINE TMap& operator=(TMap&& Other) { Super::operator=(MoveTemp(Other)); return *this; }
881 FORCEINLINE TMap& operator=(const TMap& Other) { Super::operator=(Other); return *this; }
882
883#endif
884
885 /** Constructor for moving elements from a TMap with a different SetAllocator */
886 template<typename OtherSetAllocator>
887 TMap(TMap<KeyType, ValueType, OtherSetAllocator, KeyFuncs>&& Other)
889 {
890 }
891
892 /** Constructor for copying elements from a TMap with a different SetAllocator */
893 template<typename OtherSetAllocator>
894 TMap(const TMap<KeyType, ValueType, OtherSetAllocator, KeyFuncs>& Other)
895 : Super(Other)
896 {
897 }
898
899 /** Assignment operator for moving elements from a TMap with a different SetAllocator */
900 template<typename OtherSetAllocator>
901 TMap& operator=(TMap<KeyType, ValueType, OtherSetAllocator, KeyFuncs>&& Other)
902 {
903 (Super&)*this = MoveTemp(Other);
904 return *this;
905 }
906
907 /** Assignment operator for copying elements from a TMap with a different SetAllocator */
908 template<typename OtherSetAllocator>
909 TMap& operator=(const TMap<KeyType, ValueType, OtherSetAllocator, KeyFuncs>& Other)
910 {
911 (Super&)*this = Other;
912 return *this;
913 }
914
915 /**
916 * Remove the pair with the specified key and copies the value
917 * that was removed to the ref parameter
918 *
919 * @param Key The key to search for
920 * @param OutRemovedValue If found, the value that was removed (not modified if the key was not found)
921 * @return whether or not the key was found
922 */
923 FORCEINLINE bool RemoveAndCopyValue(KeyInitType Key, ValueType& OutRemovedValue)
924 {
926 if (!PairId.IsValidId())
927 return false;
928
931 return true;
932 }
933
934 /**
935 * Find a pair with the specified key, removes it from the map, and returns the value part of the pair.
936 *
937 * If no pair was found, an exception is thrown.
938 *
939 * @param Key the key to search for
940 * @return whether or not the key was found
941 */
942 FORCEINLINE ValueType FindAndRemoveChecked(KeyConstPointerType Key)
943 {
945 check(PairId.IsValidId());
948 return Result;
949 }
950
951 /**
952 * Move all items from another map into our map (if any keys are in both,
953 * the value from the other map wins) and empty the other map.
954 *
955 * @param OtherMap The other map of items to move the elements from.
956 */
957 template<typename OtherSetAllocator>
958 void Append(TMap<KeyType, ValueType, OtherSetAllocator, KeyFuncs>&& OtherMap)
959 {
960 this->Reserve(this->Num() + OtherMap.Num());
961 for (auto& Pair : OtherMap)
962 {
964 }
965
966 OtherMap.Reset();
967 }
968
969 /**
970 * Add all items from another map to our map (if any keys are in both,
971 * the value from the other map wins).
972 *
973 * @param OtherMap The other map of items to add.
974 */
975 template<typename OtherSetAllocator>
976 void Append(const TMap<KeyType, ValueType, OtherSetAllocator, KeyFuncs>& OtherMap)
977 {
978 this->Reserve(this->Num() + OtherMap.Num());
979 for (auto& Pair : OtherMap)
980 {
981 this->Add(Pair.Key, Pair.Value);
982 }
983 }
984
985 FORCEINLINE ValueType& operator[](KeyConstPointerType Key) { return this->FindChecked(Key); }
986 FORCEINLINE const ValueType& operator[](KeyConstPointerType Key) const { return this->FindChecked(Key); }
987};
988
989
990/** A TMapBase specialization that allows multiple values to be associated with each key. */
991template<typename KeyType, typename ValueType, typename SetAllocator /* = FDefaultSetAllocator */, typename KeyFuncs /*= TDefaultMapHashableKeyFuncs<KeyType,ValueType,true>*/>
992class TMultiMap : public TSortableMapBase<KeyType, ValueType, SetAllocator, KeyFuncs>
993{
994 friend struct TContainerTraits<TMultiMap>;
995
996 static_assert(KeyFuncs::bAllowDuplicateKeys, "TMultiMap cannot be instantiated with a KeyFuncs which disallows duplicate keys");
997
998public:
999 typedef TSortableMapBase<KeyType, ValueType, SetAllocator, KeyFuncs> Super;
1001 typedef typename Super::KeyInitType KeyInitType;
1003
1005
1006 TMultiMap() = default;
1007 TMultiMap(TMultiMap&&) = default;
1008 TMultiMap(const TMultiMap&) = default;
1010 TMultiMap& operator=(const TMultiMap&) = default;
1011
1012#else
1013
1018 FORCEINLINE TMultiMap& operator=(const TMultiMap& Other) { Super::operator=(Other); return *this; }
1019
1020#endif
1021
1022 /** Constructor for moving elements from a TMap with a different SetAllocator */
1023 template<typename OtherSetAllocator>
1024 TMultiMap(TMultiMap<KeyType, ValueType, OtherSetAllocator, KeyFuncs>&& Other)
1025 : Super(MoveTemp(Other))
1026 {
1027 }
1028
1029 /** Constructor for copying elements from a TMap with a different SetAllocator */
1030 template<typename OtherSetAllocator>
1031 TMultiMap(const TMultiMap<KeyType, ValueType, OtherSetAllocator, KeyFuncs>& Other)
1032 : Super(Other)
1033 {
1034 }
1035
1036 /** Assignment operator for moving elements from a TMap with a different SetAllocator */
1037 template<typename OtherSetAllocator>
1038 TMultiMap& operator=(TMultiMap<KeyType, ValueType, OtherSetAllocator, KeyFuncs>&& Other)
1039 {
1040 (Super&)*this = MoveTemp(Other);
1041 return *this;
1042 }
1043
1044 /** Assignment operator for copying elements from a TMap with a different SetAllocator */
1045 template<typename OtherSetAllocator>
1046 TMultiMap& operator=(const TMultiMap<KeyType, ValueType, OtherSetAllocator, KeyFuncs>& Other)
1047 {
1048 (Super&)*this = Other;
1049 return *this;
1050 }
1051
1052 /**
1053 * Finds all values associated with the specified key.
1054 *
1055 * @param Key The key to find associated values for.
1056 * @param OutValues Upon return, contains the values associated with the key.
1057 * @param bMaintainOrder true if the Values array should be in the same order as the map's pairs.
1058 */
1059 template<typename Allocator> void MultiFind(KeyInitType Key, TArray<ValueType, Allocator>& OutValues, bool bMaintainOrder = false) const
1060 {
1061 for (typename Super::ElementSetType::TConstKeyIterator It(Super::Pairs, Key); It; ++It)
1062 {
1063 new(OutValues) ValueType(It->Value);
1064 }
1065
1066 if (bMaintainOrder)
1067 {
1069 }
1070 }
1071
1072 /**
1073 * Finds all values associated with the specified key.
1074 *
1075 * @param Key The key to find associated values for.
1076 * @param OutValues Upon return, contains pointers to the values associated with the key.
1077 * Pointers are only valid until the next change to any key in the map.
1078 * @param bMaintainOrder true if the Values array should be in the same order as the map's pairs.
1079 */
1080 template<typename Allocator> void MultiFindPointer(KeyInitType Key, TArray<const ValueType*, Allocator>& OutValues, bool bMaintainOrder = false) const
1081 {
1082 for (typename Super::ElementSetType::TConstKeyIterator It(Super::Pairs, Key); It; ++It)
1083 {
1084 OutValues.Add(&It->Value);
1085 }
1086
1087 if (bMaintainOrder)
1088 {
1090 }
1091 }
1092 template<typename Allocator> void MultiFindPointer(KeyInitType Key, TArray<ValueType*, Allocator>& OutValues, bool bMaintainOrder = false)
1093 {
1094 for (typename Super::ElementSetType::TKeyIterator It(Super::Pairs, Key); It; ++It)
1095 {
1096 OutValues.Add(&It->Value);
1097 }
1098
1099 if (bMaintainOrder)
1100 {
1102 }
1103 }
1104
1105 /**
1106 * Add a key-value association to the map. The association doesn't replace any of the key's existing associations.
1107 * However, if both the key and value match an existing association in the map, no new association is made and the existing association's
1108 * value is returned.
1109 *
1110 * @param InKey The key to associate.
1111 * @param InValue The value to associate.
1112 * @return A reference to the value as stored in the map; the reference is only valid until the next change to any key in the map.
1113 */
1114 FORCEINLINE ValueType& AddUnique(const KeyType& InKey, const ValueType& InValue) { return EmplaceUnique(InKey, InValue); }
1115 FORCEINLINE ValueType& AddUnique(const KeyType& InKey, ValueType&& InValue) { return EmplaceUnique(InKey, MoveTempIfPossible(InValue)); }
1116 FORCEINLINE ValueType& AddUnique(KeyType&& InKey, const ValueType& InValue) { return EmplaceUnique(MoveTempIfPossible(InKey), InValue); }
1117 FORCEINLINE ValueType& AddUnique(KeyType&& InKey, ValueType&& InValue) { return EmplaceUnique(MoveTempIfPossible(InKey), MoveTempIfPossible(InValue)); }
1118
1119 /**
1120 * Add a key-value association to the map.
1121 *
1122 * The association doesn't replace any of the key's existing associations.
1123 * However, if both key and value match an existing association in the map,
1124 * no new association is made and the existing association's value is returned.
1125 *
1126 * @param InKey The key to associate.
1127 * @param InValue The value to associate.
1128 * @return A reference to the value as stored in the map; the reference is only valid until the next change to any key in the map.
1129 */
1130 template <typename InitKeyType, typename InitValueType>
1131 ValueType& EmplaceUnique(InitKeyType&& InKey, InitValueType&& InValue)
1132 {
1134 {
1135 return *Found;
1136 }
1137
1138 // If there's no existing association with the same key and value, create one.
1140 }
1141
1142 /**
1143 * Remove all value associations for a key.
1144 *
1145 * @param InKey The key to remove associated values for.
1146 * @return The number of values that were associated with the key.
1147 */
1148 FORCEINLINE int32 Remove(KeyConstPointerType InKey)
1149 {
1150 return Super::Remove(InKey);
1151 }
1152
1153 /**
1154 * Remove associations between the specified key and value from the map.
1155 *
1156 * @param InKey The key part of the pair to remove.
1157 * @param InValue The value part of the pair to remove.
1158 * @return The number of associations removed.
1159 */
1160 int32 Remove(KeyInitType InKey, ValueInitType InValue)
1161 {
1162 // Iterate over pairs with a matching key.
1164 for (typename Super::ElementSetType::TKeyIterator It(Super::Pairs, InKey); It; ++It)
1165 {
1166 // If this pair has a matching value as well, remove it.
1167 if (It->Value == InValue)
1168 {
1169 It.RemoveCurrent();
1171 }
1172 }
1173 return NumRemovedPairs;
1174 }
1175
1176 /**
1177 * Remove the first association between the specified key and value from the map.
1178 *
1179 * @param InKey The key part of the pair to remove.
1180 * @param InValue The value part of the pair to remove.
1181 * @return The number of associations removed.
1182 */
1184 {
1185 // Iterate over pairs with a matching key.
1187 for (typename Super::ElementSetType::TKeyIterator It(Super::Pairs, InKey); It; ++It)
1188 {
1189 // If this pair has a matching value as well, remove it.
1190 if (It->Value == InValue)
1191 {
1192 It.RemoveCurrent();
1194
1195 // We were asked to remove only the first association, so bail out.
1196 break;
1197 }
1198 }
1199 return NumRemovedPairs;
1200 }
1201
1202 /**
1203 * Find an association between a specified key and value. (const)
1204 *
1205 * @param Key The key to find.
1206 * @param Value The value to find.
1207 * @return If the map contains a matching association, a pointer to the value in the map is returned. Otherwise nullptr is returned.
1208 * The pointer is only valid as long as the map isn't changed.
1209 */
1210 FORCEINLINE const ValueType* FindPair(KeyInitType Key, ValueInitType Value) const
1211 {
1212 return const_cast<TMultiMap*>(this)->FindPair(Key, Value);
1213 }
1214
1215 /**
1216 * Find an association between a specified key and value.
1217 *
1218 * @param Key The key to find.
1219 * @param Value The value to find.
1220 * @return If the map contains a matching association, a pointer to the value in the map is returned. Otherwise nullptr is returned.
1221 * The pointer is only valid as long as the map isn't changed.
1222 */
1223 ValueType* FindPair(KeyInitType Key, ValueInitType Value)
1224 {
1225 // Iterate over pairs with a matching key.
1226 for (typename Super::ElementSetType::TKeyIterator It(Super::Pairs, Key); It; ++It)
1227 {
1228 // If the pair's value matches, return a pointer to it.
1229 if (It->Value == Value)
1230 {
1231 return &It->Value;
1232 }
1233 }
1234
1235 return nullptr;
1236 }
1237
1238 /** Returns the number of values within this map associated with the specified key */
1239 int32 Num(KeyInitType Key) const
1240 {
1241 // Iterate over pairs with a matching key.
1243 for (typename Super::ElementSetType::TConstKeyIterator It(Super::Pairs, Key); It; ++It)
1244 {
1246 }
1247 return NumMatchingPairs;
1248 }
1249
1250 // Since we implement an overloaded Num() function in TMultiMap, we need to reimplement TMapBase::Num to make it visible.
1251 FORCEINLINE int32 Num() const
1252 {
1253 return Super::Num();
1254 }
1255};
1256
1257
1259{
1262
1264};
1265
1266
1267// Untyped map type for accessing TMap data, like FScriptArray for TArray.
1268// Must have the same memory representation as a TMap.
1270{
1271public:
1272 static FScriptMapLayout GetScriptLayout(int32 KeySize, int32 KeyAlignment, int32 ValueSize, int32 ValueAlignment)
1273 {
1274 FScriptMapLayout Result;
1275
1276 // TPair<Key, Value>
1277 FStructBuilder PairStruct;
1278 Result.KeyOffset = PairStruct.AddMember(KeySize, KeyAlignment);
1279 Result.ValueOffset = PairStruct.AddMember(ValueSize, ValueAlignment);
1281
1282 return Result;
1283 }
1284
1286 {
1287 }
1288
1289 bool IsValidIndex(int32 Index) const
1290 {
1291 return Pairs.IsValidIndex(Index);
1292 }
1293
1294 int32 Num() const
1295 {
1296 return Pairs.Num();
1297 }
1298
1299 int32 GetMaxIndex() const
1300 {
1301 return Pairs.GetMaxIndex();
1302 }
1303
1304 void* GetData(int32 Index, const FScriptMapLayout& Layout)
1305 {
1306 return Pairs.GetData(Index, Layout.SetLayout);
1307 }
1308
1309 const void* GetData(int32 Index, const FScriptMapLayout& Layout) const
1310 {
1311 return Pairs.GetData(Index, Layout.SetLayout);
1312 }
1313
1314 void Empty(int32 Slack, const FScriptMapLayout& Layout)
1315 {
1316 Pairs.Empty(Slack, Layout.SetLayout);
1317 }
1318
1319 void RemoveAt(int32 Index, const FScriptMapLayout& Layout)
1320 {
1321 Pairs.RemoveAt(Index, Layout.SetLayout);
1322 }
1323
1324 /**
1325 * Adds an uninitialized object to the map.
1326 * The map will need rehashing at some point after this call to make it valid.
1327 *
1328 * @return The index of the added element.
1329 */
1331 {
1333 }
1334
1335 void Rehash(const FScriptMapLayout& Layout, TFunctionRef<uint32(const void*)> GetKeyHash)
1336 {
1337 Pairs.Rehash(Layout.SetLayout, GetKeyHash);
1338 }
1339
1340 /** Finds the associated key, value from hash of Key, rather than linearly searching */
1341 int32 FindPairIndex(const void* Key, const FScriptMapLayout& MapLayout, TFunctionRef<uint32(const void*)> GetKeyHash, TFunctionRef<bool(const void*, const void*)> KeyEqualityFn)
1342 {
1343 if (Pairs.Num())
1344 {
1345 // !unsafe! 'Pairs' is mostly treated as a set of TPair<Key, Value>, so anything in
1346 // FScriptSet could assume that Key is actually a TPair<Key, Value>, we can hide this
1347 // complexity from our caller, at least (so their GetKeyHash/EqualityFn is unaware):
1348 return Pairs.FindIndex(
1349 Key,
1350 MapLayout.SetLayout,
1351 GetKeyHash, // We 'know' that the implementation of Find doesn't call GetKeyHash on anything except Key
1352 [KeyEqualityFn, MapLayout](const void* InKey, const void* InPair)
1353 {
1354 return KeyEqualityFn(InKey, (uint8*)InPair + MapLayout.KeyOffset);
1355 }
1356 );
1357 }
1358
1359 return INDEX_NONE;
1360 }
1361
1362 /** Finds the associated value from hash of Key, rather than linearly searching */
1363 uint8* FindValue(const void* Key, const FScriptMapLayout& MapLayout, TFunctionRef<uint32(const void*)> GetKeyHash, TFunctionRef<bool(const void*, const void*)> KeyEqualityFn)
1364 {
1365 int32 FoundIndex = FindPairIndex(Key, MapLayout, GetKeyHash, KeyEqualityFn);
1366 if (FoundIndex != INDEX_NONE)
1367 {
1368 uint8* Result = (uint8*)GetData(FoundIndex, MapLayout) + MapLayout.ValueOffset;
1369 return Result;
1370 }
1371
1372 return nullptr;
1373 }
1374
1375 /** Adds the (key, value) pair to the map, returning true if the element was added, or false if the element was already present and has been overwritten */
1376 void Add(
1377 const void* Key,
1378 const void* Value,
1379 const FScriptMapLayout& Layout,
1380 TFunctionRef<uint32(const void*)> GetKeyHash,
1381 TFunctionRef<bool(const void*, const void*)> KeyEqualityFn,
1382 TFunctionRef<void(void*)> KeyConstructAndAssignFn,
1383 TFunctionRef<void(void*)> ValueConstructAndAssignFn,
1384 TFunctionRef<void(void*)> ValueAssignFn,
1385 TFunctionRef<void(void*)> DestructKeyFn,
1386 TFunctionRef<void(void*)> DestructValueFn)
1387 {
1389 Key,
1390 Layout.SetLayout,
1391 GetKeyHash,
1392 KeyEqualityFn,
1393 [KeyConstructAndAssignFn, ValueConstructAndAssignFn, Layout](void* NewPair)
1394 {
1395 KeyConstructAndAssignFn((uint8*)NewPair + Layout.KeyOffset);
1396 ValueConstructAndAssignFn((uint8*)NewPair + Layout.ValueOffset);
1397 },
1398 [DestructKeyFn, DestructValueFn, Layout](void* NewPair)
1399 {
1400 DestructValueFn((uint8*)NewPair + Layout.ValueOffset);
1401 DestructKeyFn((uint8*)NewPair + Layout.KeyOffset);
1402 }
1403 );
1404 }
1405
1406private:
1408
1409 // This function isn't intended to be called, just to be compiled to validate the correctness of the type.
1410 static void CheckConstraints()
1411 {
1412 typedef FScriptMap ScriptType;
1413 typedef TMap<int32, int8> RealType;
1414
1415 // Check that the class footprint is the same
1416 static_assert(sizeof(ScriptType) == sizeof(RealType), "FScriptMap's size doesn't match TMap");
1417 static_assert(alignof(ScriptType) == alignof(RealType), "FScriptMap's alignment doesn't match TMap");
1418
1419 // Check member sizes
1420 static_assert(sizeof(DeclVal<ScriptType>().Pairs) == sizeof(DeclVal<RealType>().Pairs), "FScriptMap's Pairs member size does not match TMap's");
1421
1422 // Check member offsets
1423 static_assert(STRUCT_OFFSET(ScriptType, Pairs) == STRUCT_OFFSET(RealType, Pairs), "FScriptMap's Pairs member offset does not match TMap's");
1424 }
1425
1426public:
1427 // These should really be private, because they shouldn't be called, but there's a bunch of code
1428 // that needs to be fixed first.
1429 FScriptMap(const FScriptMap&) { check(false); }
1430 void operator=(const FScriptMap&) { check(false); }
1431};
1432
1433
1434template <>
1436{
1437 enum { Value = true };
1438};
1439
1440
1441template <typename KeyType, typename ValueType, typename SetAllocator, typename KeyFuncs>
1442struct TContainerTraits<TMap<KeyType, ValueType, SetAllocator, KeyFuncs>> : public TContainerTraitsBase<TMap<KeyType, ValueType, SetAllocator, KeyFuncs>>
1443{
1444 enum { MoveWillEmptyContainer = TContainerTraits<typename TMap<KeyType, ValueType, SetAllocator, KeyFuncs>::ElementSetType>::MoveWillEmptyContainer };
1445};
1446
1447
1448template <typename KeyType, typename ValueType, typename SetAllocator, typename KeyFuncs>
1449struct TContainerTraits<TMultiMap<KeyType, ValueType, SetAllocator, KeyFuncs>> : public TContainerTraitsBase<TMultiMap<KeyType, ValueType, SetAllocator, KeyFuncs>>
1450{
1451 enum { MoveWillEmptyContainer = TContainerTraits<typename TMultiMap<KeyType, ValueType, SetAllocator, KeyFuncs>::ElementSetType>::MoveWillEmptyContainer };
1452};
EBlueprintType
Definition Enums.h:3920
static unsigned int GetBuildUniqueId()
Definition Atlas.h:30
ARK_API LPVOID GetDataAddress(const std::string &name)
Definition Base.cpp:15
ARK_API BitField GetBitField(LPVOID base, const std::string &name)
Definition Base.cpp:25
ARK_API BitField GetBitField(const void *base, const std::string &name)
Definition Base.cpp:20
#define ARK_API
Definition Base.h:9
ARK_API DWORD64 GetAddress(const void *base, const std::string &name)
Definition Base.cpp:5
ARK_API LPVOID GetAddress(const std::string &name)
Definition Base.cpp:10
FPlatformTypes::CHAR16 UCS2CHAR
A 16-bit character containing a UCS2 (Unicode, 16-bit, fixed-width) code unit, used for compatibility...
Definition BasicTypes.h:124
#define checkSlow(expr)
Definition BasicTypes.h:15
@ INDEX_NONE
Definition BasicTypes.h:144
FWindowsPlatformTypes FPlatformTypes
Definition BasicTypes.h:94
#define PLATFORM_LITTLE_ENDIAN
Definition BasicTypes.h:12
FPlatformTypes::CHAR8 UTF8CHAR
An 8-bit character containing a UTF8 (Unicode, 8-bit, variable-width) code unit.
Definition BasicTypes.h:122
ENoInit
Definition BasicTypes.h:151
@ NoInit
Definition BasicTypes.h:151
#define check(expr)
Definition BasicTypes.h:14
#define FORCENOINLINE
Definition BasicTypes.h:6
#define MS_ALIGN(n)
Definition BasicTypes.h:21
#define GCC_ALIGN(n)
Definition BasicTypes.h:22
#define PLATFORM_COMPILER_HAS_DEFAULTED_FUNCTIONS
Definition BasicTypes.h:11
#define checkf(...)
Definition BasicTypes.h:16
#define ensureMsgf(Expr, Expr2)
Definition BasicTypes.h:19
#define RESTRICT
Definition BasicTypes.h:5
FPlatformTypes::CHAR16 UTF16CHAR
A 16-bit character containing a UTF16 (Unicode, 16-bit, variable-width) code unit.
Definition BasicTypes.h:126
#define CONSTEXPR
Definition BasicTypes.h:7
EForceInit
Definition BasicTypes.h:147
@ ForceInitToZero
Definition BasicTypes.h:149
@ ForceInit
Definition BasicTypes.h:148
FPlatformTypes::CHAR32 UTF32CHAR
A 32-bit character containing a UTF32 (Unicode, 32-bit, fixed-width) code unit.
Definition BasicTypes.h:128
static FORCEINLINE int32 BYTESWAP_ORDER32(int32 val)
Definition ByteSwap.h:30
static FORCEINLINE uint16 BYTESWAP_ORDER16(uint16 val)
Definition ByteSwap.h:12
static FORCEINLINE void BYTESWAP_ORDER_TCHARARRAY(TCHAR *str)
Definition ByteSwap.h:72
static FORCEINLINE uint32 BYTESWAP_ORDER32(uint32 val)
Definition ByteSwap.h:25
#define BYTESWAP_ORDER16_unsigned(x)
Definition ByteSwap.h:8
static FORCEINLINE float BYTESWAP_ORDERF(float val)
Definition ByteSwap.h:38
static FORCEINLINE int16 BYTESWAP_ORDER16(int16 val)
Definition ByteSwap.h:17
static FORCEINLINE uint64 BYTESWAP_ORDER64(uint64 Value)
Definition ByteSwap.h:46
static FORCEINLINE int64 BYTESWAP_ORDER64(int64 Value)
Definition ByteSwap.h:58
#define BYTESWAP_ORDER32_unsigned(x)
Definition ByteSwap.h:9
TCString< ANSICHAR > FCStringAnsi
Definition CString.h:336
TCString< WIDECHAR > FCStringWide
Definition CString.h:337
TCString< TCHAR > FCString
Definition CString.h:335
TChar< WIDECHAR > FCharWide
Definition Char.h:143
#define LITERAL(CharType, StringLiteral)
Definition Char.h:30
TChar< ANSICHAR > FCharAnsi
Definition Char.h:144
TChar< TCHAR > FChar
Definition Char.h:142
static const float OneOver255
Definition Color.h:527
EGammaSpace
Definition Color.h:20
FORCEINLINE FLinearColor operator*(float Scalar, const FLinearColor &Color)
Definition Color.h:364
FORCEINLINE int32 DefaultCalculateSlackShrink(int32 NumElements, int32 NumAllocatedElements, SIZE_T BytesPerElement, bool bAllowQuantize, uint32 Alignment=DEFAULT_ALIGNMENT)
#define NumBitsPerDWORD
#define DEFAULT_MIN_NUMBER_OF_HASHED_ELEMENTS
#define DEFAULT_NUMBER_OF_ELEMENTS_PER_HASH_BUCKET
#define DEFAULT_BASE_NUMBER_OF_HASH_BUCKETS
FORCEINLINE int32 DefaultCalculateSlackGrow(int32 NumElements, int32 NumAllocatedElements, SIZE_T BytesPerElement, bool bAllowQuantize, uint32 Alignment=DEFAULT_ALIGNMENT)
FORCEINLINE int32 DefaultCalculateSlackReserve(int32 NumElements, SIZE_T BytesPerElement, bool bAllowQuantize, uint32 Alignment=DEFAULT_ALIGNMENT)
ClassCastFlags
Definition Enums.h:873
int32 FindMatchingClosingParenthesis(const FString &TargetString, const int32 StartSearch)
Definition FString.h:3011
int32 HexToBytes(const FString &HexString, uint8 *OutBytes)
Definition FString.h:1803
const TCHAR * GetData(const FString &String)
Definition FString.h:1672
const uint8 TCharToNibble(const TCHAR Char)
Definition FString.h:1783
const bool CheckTCharIsHex(const TCHAR Char)
Definition FString.h:1773
FORCEINLINE uint32 GetTypeHash(const FString &Thing)
Definition FString.h:1646
TCHAR * GetData(FString &String)
Definition FString.h:1667
SIZE_T GetNum(const FString &String)
Definition FString.h:1677
void ByteToHex(uint8 In, FString &Result)
Definition FString.h:1743
static const uint32 MaxSupportedEscapeChars
Definition FString.h:2924
FString BytesToHex(const uint8 *In, int32 Count)
Definition FString.h:1755
int32 StringToBytes(const FString &String, uint8 *OutBytes, int32 MaxBufferSize)
Definition FString.h:1714
static const TCHAR * CharToEscapeSeqMap[][2]
Definition FString.h:2913
TCHAR NibbleToTChar(uint8 Num)
Definition FString.h:1729
FString BytesToString(const uint8 *In, int32 Count)
Definition FString.h:1688
FORCEINLINE auto Invoke(ReturnType ObjType::*pdm, CallableType &&Callable) -> decltype(UE4Invoke_Private::DereferenceIfNecessary< ObjType >(Forward< CallableType >(Callable)).*pdm)
Definition Invoke.h:48
FORCEINLINE auto Invoke(FuncType &&Func, ArgTypes &&... Args) -> decltype(Forward< FuncType >(Func)(Forward< ArgTypes >(Args)...))
Definition Invoke.h:41
FORCEINLINE auto Invoke(ReturnType(ObjType::*PtrMemFun)(PMFArgTypes...), CallableType &&Callable, ArgTypes &&... Args) -> decltype((UE4Invoke_Private::DereferenceIfNecessary< ObjType >(Forward< CallableType >(Callable)).*PtrMemFun)(Forward< ArgTypes >(Args)...))
Definition Invoke.h:55
ARK_API std::vector< spdlog::sink_ptr > &APIENTRY GetLogSinks()
Definition Logger.cpp:31
FORCEINLINE TEnableIf<!TIsTriviallyCopyAssignable< ElementType >::Value >::Type CopyAssignItems(ElementType *Dest, const ElementType *Source, int32 Count)
Definition MemoryOps.h:149
FORCEINLINE TEnableIf< UE4MemoryOps_Private::TCanBitwiseRelocate< DestinationElementType, SourceElementType >::Value >::Type RelocateConstructItems(void *Dest, const SourceElementType *Source, int32 Count)
Definition MemoryOps.h:192
FORCEINLINE TEnableIf< TIsZeroConstructType< ElementType >::Value >::Type DefaultConstructItems(void *Elements, int32 Count)
Definition MemoryOps.h:56
FORCEINLINE TEnableIf<!TIsTriviallyCopyConstructible< ElementType >::Value >::Type MoveConstructItems(void *Dest, const ElementType *Source, int32 Count)
Definition MemoryOps.h:213
FORCEINLINE TEnableIf< TIsTriviallyCopyConstructible< ElementType >::Value >::Type MoveConstructItems(void *Dest, const ElementType *Source, int32 Count)
Definition MemoryOps.h:225
FORCEINLINE TEnableIf<!TIsZeroConstructType< ElementType >::Value >::Type DefaultConstructItems(void *Address, int32 Count)
Definition MemoryOps.h:43
FORCEINLINE TEnableIf<!TIsTriviallyDestructible< ElementType >::Value >::Type DestructItem(ElementType *Element)
Definition MemoryOps.h:70
FORCEINLINE TEnableIf< TTypeTraits< ElementType >::IsBytewiseComparable, bool >::Type CompareItems(const ElementType *A, const ElementType *B, int32 Count)
Definition MemoryOps.h:256
FORCEINLINE TEnableIf< TIsTriviallyCopyAssignable< ElementType >::Value >::Type MoveAssignItems(ElementType *Dest, const ElementType *Source, int32 Count)
Definition MemoryOps.h:250
FORCEINLINE TEnableIf< TIsTriviallyDestructible< ElementType >::Value >::Type DestructItem(ElementType *Element)
Definition MemoryOps.h:80
FORCEINLINE TEnableIf<!TIsTriviallyDestructible< ElementType >::Value >::Type DestructItems(ElementType *Element, int32 Count)
Definition MemoryOps.h:94
FORCEINLINE TEnableIf<!TIsTriviallyCopyAssignable< ElementType >::Value >::Type MoveAssignItems(ElementType *Dest, const ElementType *Source, int32 Count)
Definition MemoryOps.h:238
FORCEINLINE TEnableIf<!TTypeTraits< ElementType >::IsBytewiseComparable, bool >::Type CompareItems(const ElementType *A, const ElementType *B, int32 Count)
Definition MemoryOps.h:263
FORCEINLINE TEnableIf<!TIsBitwiseConstructible< DestinationElementType, SourceElementType >::Value >::Type ConstructItems(void *Dest, const SourceElementType *Source, int32 Count)
Definition MemoryOps.h:122
FORCEINLINE TEnableIf<!UE4MemoryOps_Private::TCanBitwiseRelocate< DestinationElementType, SourceElementType >::Value >::Type RelocateConstructItems(void *Dest, const SourceElementType *Source, int32 Count)
Definition MemoryOps.h:177
FORCEINLINE TEnableIf< TIsTriviallyDestructible< ElementType >::Value >::Type DestructItems(ElementType *Elements, int32 Count)
Definition MemoryOps.h:109
FORCEINLINE TEnableIf< TIsTriviallyCopyAssignable< ElementType >::Value >::Type CopyAssignItems(ElementType *Dest, const ElementType *Source, int32 Count)
Definition MemoryOps.h:162
FORCEINLINE TEnableIf< TIsBitwiseConstructible< DestinationElementType, SourceElementType >::Value >::Type ConstructItems(void *Dest, const SourceElementType *Source, int32 Count)
Definition MemoryOps.h:135
FMicrosoftPlatformString FPlatformString
#define WIN32_LEAN_AND_MEAN
Definition Requests.cpp:2
FORCEINLINE FRotator operator*(float Scale, const FRotator &R)
Definition Rotator.h:363
FORCEINLINE SharedPointerInternals::FRawPtrProxy< ObjectType > MakeShareable(ObjectType *InObject, DeleterType &&InDeleter)
FORCEINLINE bool operator==(TSharedRef< ObjectTypeA, Mode > const &InSharedRefA, TWeakPtr< ObjectTypeB, Mode > const &InWeakPtrB)
FORCEINLINE bool operator!=(TSharedRef< ObjectTypeA, Mode > const &InSharedRefA, TWeakPtr< ObjectTypeB, Mode > const &InWeakPtrB)
FORCEINLINE TSharedRef< InObjectType, InMode > MakeShared(InArgTypes &&... Args)
FORCEINLINE bool operator!=(TWeakPtr< ObjectTypeA, Mode > const &InWeakPtrA, TWeakPtr< ObjectTypeB, Mode > const &InWeakPtrB)
FORCEINLINE TSharedPtr< CastToType, Mode > StaticCastSharedPtr(TSharedPtr< CastFromType, Mode > const &InSharedPtr)
FORCEINLINE bool operator==(TWeakPtr< ObjectTypeA, Mode > const &InWeakPtrA, TWeakPtr< ObjectTypeB, Mode > const &InWeakPtrB)
FORCEINLINE bool operator==(TWeakPtr< ObjectTypeA, Mode > const &InWeakPtrA, decltype(nullptr))
FORCEINLINE bool operator==(TWeakPtr< ObjectTypeA, Mode > const &InWeakPtrA, TSharedPtr< ObjectTypeB, Mode > const &InSharedPtrB)
FORCEINLINE bool operator==(TSharedRef< ObjectTypeA, Mode > const &InSharedRef, TSharedPtr< ObjectTypeB, Mode > const &InSharedPtr)
FORCEINLINE bool operator==(TSharedPtr< ObjectTypeA, Mode > const &InSharedPtrA, TSharedPtr< ObjectTypeB, Mode > const &InSharedPtrB)
FORCEINLINE bool operator==(TSharedRef< ObjectTypeA, Mode > const &InSharedRefA, TSharedRef< ObjectTypeB, Mode > const &InSharedRefB)
FORCEINLINE void CleanupPointerMap(TMap< TWeakPtr< KeyType >, ValueType > &PointerMap)
FORCEINLINE bool operator!=(TWeakPtr< ObjectTypeA, Mode > const &InWeakPtrA, TSharedPtr< ObjectTypeB, Mode > const &InSharedPtrB)
FORCEINLINE bool operator!=(TWeakPtr< ObjectTypeA, Mode > const &InWeakPtrA, TSharedRef< ObjectTypeB, Mode > const &InSharedRefB)
FORCEINLINE bool operator!=(TSharedPtr< ObjectTypeB, Mode > const &InSharedPtr, TSharedRef< ObjectTypeA, Mode > const &InSharedRef)
FORCEINLINE void CleanupPointerArray(TArray< TWeakPtr< Type > > &PointerArray)
FORCEINLINE bool operator!=(TSharedRef< ObjectTypeA, Mode > const &InSharedRefA, TSharedRef< ObjectTypeB, Mode > const &InSharedRefB)
FORCEINLINE bool operator!=(TWeakPtr< ObjectTypeA, Mode > const &InWeakPtrA, decltype(nullptr))
FORCEINLINE TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
FORCEINLINE SharedPointerInternals::FRawPtrProxy< ObjectType > MakeShareable(ObjectType *InObject)
FORCEINLINE bool operator==(decltype(nullptr), TWeakPtr< ObjectTypeB, Mode > const &InWeakPtrB)
FORCEINLINE bool operator!=(TSharedPtr< ObjectTypeA, Mode > const &InSharedPtrA, TSharedPtr< ObjectTypeB, Mode > const &InSharedPtrB)
FORCEINLINE TSharedRef< CastToType, Mode > ConstCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
FORCEINLINE bool operator==(TSharedPtr< ObjectTypeA, Mode > const &InSharedPtrA, TWeakPtr< ObjectTypeB, Mode > const &InWeakPtrB)
FORCEINLINE bool operator!=(decltype(nullptr), TWeakPtr< ObjectTypeB, Mode > const &InWeakPtrB)
FORCEINLINE TSharedPtr< CastToType, Mode > ConstCastSharedPtr(TSharedPtr< CastFromType, Mode > const &InSharedPtr)
FORCEINLINE bool operator==(TSharedPtr< ObjectTypeB, Mode > const &InSharedPtr, TSharedRef< ObjectTypeA, Mode > const &InSharedRef)
FORCEINLINE bool operator!=(TSharedPtr< ObjectTypeA, Mode > const &InSharedPtrA, TWeakPtr< ObjectTypeB, Mode > const &InWeakPtrB)
FORCEINLINE bool operator!=(TSharedRef< ObjectTypeA, Mode > const &InSharedRef, TSharedPtr< ObjectTypeB, Mode > const &InSharedPtr)
FORCEINLINE bool operator==(TWeakPtr< ObjectTypeA, Mode > const &InWeakPtrA, TSharedRef< ObjectTypeB, Mode > const &InSharedRefB)
void StableSort(T **First, const int32 Num, const PREDICATE_CLASS &Predicate)
Definition Sorting.h:385
void StableSort(T *First, const int32 Num, const PREDICATE_CLASS &Predicate)
Definition Sorting.h:371
void StableSortInternal(T *First, const int32 Num, const PREDICATE_CLASS &Predicate)
Definition Sorting.h:356
void Sort(T **First, const int32 Num)
Definition Sorting.h:117
void StableSort(T *First, const int32 Num)
Definition Sorting.h:400
void StableSort(T **First, const int32 Num)
Definition Sorting.h:413
void Merge(T *Out, T *In, const int32 Mid, const int32 Num, const PREDICATE_CLASS &Predicate)
Definition Sorting.h:134
void Sort(T **First, const int32 Num, const PREDICATE_CLASS &Predicate)
Definition Sorting.h:90
void Sort(T *First, const int32 Num, const PREDICATE_CLASS &Predicate)
Definition Sorting.h:76
void Sort(T *First, const int32 Num)
Definition Sorting.h:104
#define TARRAY_RANGED_FOR_CHECKS
Definition TArray.h:15
FORCEINLINE TIndexedContainerIterator< ContainerType, ElementType, IndexType > operator+(int32 Offset, TIndexedContainerIterator< ContainerType, ElementType, IndexType > RHS)
Definition TArray.h:141
void * operator new(size_t Size, TArray< T, Allocator > &Array, int32 Index)
Definition TArray.h:2152
void * operator new(size_t Size, TArray< T, Allocator > &Array)
Definition TArray.h:2146
#define IMPLEMENT_ALIGNED_STORAGE(Align)
int GetStructSize()
Definition UE.h:1024
EResourceSizeMode
Definition UE.h:798
@ Exclusive
Definition UE.h:799
@ Open
Definition UE.h:801
@ Inclusive
Definition UE.h:800
int GetObjectClassSize()
Definition UE.h:1005
FORCEINLINE uint32 GetTypeHash(const FName &name)
Definition UE.h:63
TWeakObjectPtr< T > GetWeakReference(T *object)
Definition UE.h:203
#define THRESH_VECTOR_NORMALIZED
#define THRESH_NORMALS_ARE_PARALLEL
#define THRESH_POINTS_ARE_SAME
#define DELTA
#define SMALL_NUMBER
#define THRESH_POINT_ON_PLANE
#define PI
#define THRESH_NORMALS_ARE_ORTHOGONAL
#define KINDA_SMALL_NUMBER
#define BIG_NUMBER
#define FASTASIN_HALF_PI
#define HALF_PI
#define INV_PI
@ MIN_ALIGNMENT
@ DEFAULT_ALIGNMENT
CONSTEXPR SIZE_T GetNum(T(&Container)[N])
FORCEINLINE T && Forward(typename TRemoveReference< T >::Type &&Obj)
FORCEINLINE TRemoveReference< T >::Type && MoveTempIfPossible(T &&Obj)
auto GetData(T &&Container) -> decltype(Container.GetData())
TEnableIf< TUseBitwiseSwap< T >::Value >::Type Swap(T &A, T &B)
ForwardIt MaxElement(ForwardIt First, ForwardIt Last, PredicateType Predicate)
ForwardIt MinElement(ForwardIt First, ForwardIt Last, PredicateType Predicate)
SIZE_T GetNum(T &&Container)
#define ARRAY_COUNT(array)
FORCEINLINE ReferencedType * IfPThenAElseB(PredicateType Predicate, ReferencedType *A, ReferencedType *B)
FORCEINLINE T && CopyTemp(T &&Val)
void Exchange(T &A, T &B)
FORCEINLINE T CopyTemp(T &Val)
T && DeclVal()
FORCEINLINE TRemoveReference< T >::Type && MoveTemp(T &&Obj)
CONSTEXPR T * GetData(T(&Container)[N])
FORCEINLINE T && Forward(typename TRemoveReference< T >::Type &Obj)
FORCEINLINE void Move(T &A, typename TMoveSupportTraits< T >::Copy B)
FORCEINLINE TEnableIf< TAreTypesEqual< T, uint32 >::Value, T >::Type ReverseBits(T Bits)
FORCEINLINE ReferencedType * IfAThenAElseB(ReferencedType *A, ReferencedType *B)
#define STRUCT_OFFSET(struc, member)
bool XOR(bool A, bool B)
FORCEINLINE T CopyTemp(const T &Val)
ForwardIt MaxElement(ForwardIt First, ForwardIt Last)
ForwardIt MinElement(ForwardIt First, ForwardIt Last)
FORCEINLINE void Move(T &A, typename TMoveSupportTraits< T >::Move B)
TEnableIf<!TUseBitwiseSwap< T >::Value >::Type Swap(T &A, T &B)
FORCEINLINE T StaticCast(ArgType &&Arg)
#define Expose_TNameOf(type)
#define Expose_TFormatSpecifier(type, format)
FORCEINLINE FVector2D operator*(float Scale, const FVector2D &V)
Definition Vector2D.h:467
FORCEINLINE float ComputeSquaredDistanceFromBoxToPoint(const FVector &Mins, const FVector &Maxs, const FVector &Point)
Definition Vector.h:893
FORCEINLINE FVector ClampVector(const FVector &V, const FVector &Min, const FVector &Max)
Definition Vector.h:1646
FORCEINLINE FVector operator*(float Scale, const FVector &V)
Definition Vector.h:870
ApiUtils & operator=(ApiUtils &&)=delete
ApiUtils()=default
void SetCheatManager(UShooterCheatManager *cheatmanager)
Definition ApiUtils.cpp:44
void SetWorld(UWorld *uworld)
Definition ApiUtils.cpp:9
ApiUtils & operator=(const ApiUtils &)=delete
void SetShooterGameMode(AShooterGameMode *shooter_game_mode)
Definition ApiUtils.cpp:21
std::unordered_map< uint64, AShooterPlayerController * > steam_id_map_
Definition ApiUtils.h:38
UShooterCheatManager * GetCheatManager() const override
Returns a point to URCON CheatManager.
Definition ApiUtils.cpp:93
UWorld * u_world_
Definition ApiUtils.h:34
ApiUtils(ApiUtils &&)=delete
AShooterGameMode * shooter_game_mode_
Definition ApiUtils.h:35
AShooterGameMode * GetShooterGameMode() const override
Returns a pointer to AShooterGameMode.
Definition ApiUtils.cpp:26
void RemovePlayerController(AShooterPlayerController *player_controller)
Definition ApiUtils.cpp:62
UShooterCheatManager * cheatmanager_
Definition ApiUtils.h:37
void SetPlayerController(AShooterPlayerController *player_controller)
Definition ApiUtils.cpp:49
ServerStatus GetStatus() const override
Returns the current server status.
Definition ApiUtils.cpp:38
ServerStatus status_
Definition ApiUtils.h:36
AShooterPlayerController * FindPlayerFromSteamId_Internal(uint64 steam_id) const override
Definition ApiUtils.cpp:75
~ApiUtils() override=default
void SetStatus(ServerStatus status)
Definition ApiUtils.cpp:33
UWorld * GetWorld() const override
Returns a pointer to UWorld.
Definition ApiUtils.cpp:14
ApiUtils(const ApiUtils &)=delete
static FString GetSteamName(AController *player_controller)
Returns the steam name of player.
static FORCEINLINE FString GetItemBlueprint(UPrimalItem *item)
Returns blueprint from UPrimalItem.
static FVector GetPosition(APlayerController *player_controller)
Returns the position of a player.
uint64 GetSteamIDForPlayerID(int player_id) const
static FORCEINLINE FString GetClassBlueprint(UClass *the_class)
Returns blueprint path from any UClass.
void SendServerMessageToAll(FLinearColor msg_color, const T *msg, Args &&... args)
Sends server message to all players. Using fmt::format.
virtual UShooterCheatManager * GetCheatManager() const =0
Returns a point to URCON CheatManager.
UPrimalGameData * GetGameData()
Returns pointer to Primal Game Data.
static bool IsRidingDino(AShooterPlayerController *player_controller)
Returns true if character is riding a dino, false otherwise.
AShooterGameState * GetGameState()
Get Shooter Game State.
virtual ~IApiUtils()=default
AShooterPlayerController * FindPlayerFromSteamName(const FString &steam_name) const
Finds player from the given steam name.
static UShooterCheatManager * GetCheatManagerByPC(AShooterPlayerController *SPC)
Get UShooterCheatManager* of player controller.
static uint64 GetPlayerID(AController *controller)
static bool IsPlayerDead(AShooterPlayerController *player)
Returns true if player is dead, false otherwise.
void SendNotificationToAll(FLinearColor color, float display_scale, float display_time, UTexture2D *icon, const T *msg, Args &&... args)
Sends notification (on-screen message) to all players. Using fmt::format.
APrimalDinoCharacter * SpawnDino(AShooterPlayerController *player, FString blueprint, FVector *location, int lvl, bool force_tame, bool neutered) const
Spawns a dino near player or at specific coordinates.
TArray< AShooterPlayerController * > FindPlayerFromCharacterName(const FString &character_name, ESearchCase::Type search, bool full_match) const
Finds all matching players from the given character name.
static FORCEINLINE FString GetBlueprint(UObjectBase *object)
Returns blueprint path from any UObject.
static FString GetCharacterName(AShooterPlayerController *player_controller, bool include_first_name=true, bool include_last_name=true)
Returns the character name of player.
TArray< AActor * > GetAllActorsInRange(FVector location, float radius, EServerOctreeGroup::Type ActorType)
Gets all actors in radius at location.
void SendChatMessageToAll(const FString &sender_name, const T *msg, Args &&... args)
Sends chat message to all players. Using fmt::format.
TArray< AActor * > GetAllActorsInRange(FVector location, float radius, EServerOctreeGroup::Type ActorType, TArray< AActor * > ignores)
Gets all actors in radius at location, with ignore actors.
virtual AShooterGameMode * GetShooterGameMode() const =0
Returns a pointer to AShooterGameMode.
static uint64 GetSteamIdFromController(AController *controller)
Returns Steam ID from player controller.
virtual UWorld * GetWorld() const =0
Returns a pointer to UWorld.
static bool TeleportToPos(AShooterPlayerController *player_controller, const FVector &pos)
Teleports player to the given position.
void SendNotification(AShooterPlayerController *player_controller, FLinearColor color, float display_scale, float display_time, UTexture2D *icon, const T *msg, Args &&... args)
Sends notification (on-screen message) to the specific player. Using fmt::format.
static uint64 GetPlayerID(APrimalCharacter *character)
virtual AShooterPlayerController * FindPlayerFromSteamId_Internal(uint64 steam_id) const =0
AShooterPlayerController * FindControllerFromCharacter(AShooterCharacter *character) const
Finds player controller from the given player character.
static APrimalDinoCharacter * GetRidingDino(AShooterPlayerController *player_controller)
Returns the dino the character is riding.
static FString GetIPAddress(AShooterPlayerController *player_controller)
Returns IP address of player.
AShooterPlayerController * FindPlayerFromSteamId(uint64 steam_id) const
Finds player from the given steam id.
virtual ServerStatus GetStatus() const =0
Returns the current server status.
void SendServerMessage(AShooterPlayerController *player_controller, FLinearColor msg_color, const T *msg, Args &&... args)
Sends server message to the specific player. Using fmt::format.
static std::optional< FString > TeleportToPlayer(AShooterPlayerController *me, AShooterPlayerController *him, bool check_for_dino, float max_dist)
Teleport one player to another.
static int GetInventoryItemCount(AShooterPlayerController *player_controller, const FString &item_name)
Counts a specific items quantity.
void SendChatMessage(AShooterPlayerController *player_controller, const FString &sender_name, const T *msg, Args &&... args)
Sends chat message to the specific player. Using fmt::format.
void Set(RT other)
Definition Fields.h:144
BitFieldValue & operator=(RT other)
Definition Fields.h:133
void * parent_
Definition Fields.h:150
std::string field_name_
Definition Fields.h:151
RT operator()() const
Definition Fields.h:128
RT Get() const
Definition Fields.h:139
T * value_
Definition Fields.h:116
void Set(const T &other)
Definition Fields.h:110
T & Get() const
Definition Fields.h:105
DataValue & operator=(const T &other)
Definition Fields.h:99
T & operator()() const
Definition Fields.h:94
static const FColor MediumSlateBlue
Definition ColorList.h:69
static const FColor Orange
Definition ColorList.h:81
static const FColor DarkGreenCopper
Definition ColorList.h:34
static const FColor BronzeII
Definition ColorList.h:26
static const FColor Yellow
Definition ColorList.h:17
static const FColor Magenta
Definition ColorList.h:15
static const FColor IndianRed
Definition ColorList.h:54
static const FColor SummerSky
Definition ColorList.h:100
static const FColor SpringGreen
Definition ColorList.h:98
static const FColor Grey
Definition ColorList.h:50
static const FColor CornFlowerBlue
Definition ColorList.h:31
static const FColor Cyan
Definition ColorList.h:16
static const FColor Blue
Definition ColorList.h:14
static const FColor GreenCopper
Definition ColorList.h:51
static const FColor MediumGoldenrod
Definition ColorList.h:66
static const FColor LimeGreen
Definition ColorList.h:60
static const FColor LightSteelBlue
Definition ColorList.h:58
static const FColor DarkOliveGreen
Definition ColorList.h:35
static const FColor Quartz
Definition ColorList.h:87
static const FColor SteelBlue
Definition ColorList.h:99
static const FColor DarkPurple
Definition ColorList.h:37
static const FColor Turquoise
Definition ColorList.h:103
static const FColor Black
Definition ColorList.h:18
static const FColor Maroon
Definition ColorList.h:62
static const FColor MediumOrchid
Definition ColorList.h:67
static const FColor NewTan
Definition ColorList.h:79
static const FColor NeonBlue
Definition ColorList.h:76
static const FColor MediumWood
Definition ColorList.h:73
static const FColor DarkSlateBlue
Definition ColorList.h:38
static const FColor White
Definition ColorList.h:11
static const FColor MandarianOrange
Definition ColorList.h:61
static const FColor Tan
Definition ColorList.h:101
static const FColor Scarlet
Definition ColorList.h:90
static const FColor SeaGreen
Definition ColorList.h:91
static const FColor Aquamarine
Definition ColorList.h:19
static const FColor Wheat
Definition ColorList.h:108
static const FColor VeryDarkBrown
Definition ColorList.h:104
static const FColor Thistle
Definition ColorList.h:102
static const FColor BlueViolet
Definition ColorList.h:21
static const FColor Violet
Definition ColorList.h:106
static const FColor MediumSpringGreen
Definition ColorList.h:70
static const FColor NavyBlue
Definition ColorList.h:75
static const FColor CoolCopper
Definition ColorList.h:28
static const FColor DarkTan
Definition ColorList.h:40
static const FColor Firebrick
Definition ColorList.h:46
static const FColor GreenYellow
Definition ColorList.h:52
static const FColor DarkOrchid
Definition ColorList.h:36
static const FColor Plum
Definition ColorList.h:86
static const FColor SemiSweetChocolate
Definition ColorList.h:92
static const FColor SpicyPink
Definition ColorList.h:97
static const FColor OldGold
Definition ColorList.h:80
static const FColor DarkTurquoise
Definition ColorList.h:41
static const FColor PaleGreen
Definition ColorList.h:84
static const FColor BrightGold
Definition ColorList.h:23
static const FColor CadetBlue
Definition ColorList.h:27
static const FColor BakerChocolate
Definition ColorList.h:20
static const FColor DarkGreen
Definition ColorList.h:33
static const FColor Coral
Definition ColorList.h:30
static const FColor OrangeRed
Definition ColorList.h:82
static const FColor HunterGreen
Definition ColorList.h:53
static const FColor VeryLightGrey
Definition ColorList.h:105
static const FColor MediumVioletRed
Definition ColorList.h:72
static const FColor Silver
Definition ColorList.h:94
static const FColor MediumSeaGreen
Definition ColorList.h:68
static const FColor DarkSlateGrey
Definition ColorList.h:39
static const FColor Khaki
Definition ColorList.h:55
static const FColor DustyRose
Definition ColorList.h:44
static const FColor Red
Definition ColorList.h:12
static const FColor Bronze
Definition ColorList.h:25
static const FColor MediumBlue
Definition ColorList.h:64
static const FColor Goldenrod
Definition ColorList.h:49
static const FColor Feldspar
Definition ColorList.h:45
static const FColor LightBlue
Definition ColorList.h:56
static const FColor Pink
Definition ColorList.h:85
static const FColor DimGrey
Definition ColorList.h:43
static const FColor Brown
Definition ColorList.h:24
static const FColor VioletRed
Definition ColorList.h:107
static const FColor Orchid
Definition ColorList.h:83
static const FColor LightWood
Definition ColorList.h:59
static const FColor SlateBlue
Definition ColorList.h:96
static const FColor DarkWood
Definition ColorList.h:42
static const FColor NeonPink
Definition ColorList.h:77
static const FColor MediumTurquoise
Definition ColorList.h:71
static const FColor MediumForestGreen
Definition ColorList.h:65
static const FColor Salmon
Definition ColorList.h:89
static const FColor Brass
Definition ColorList.h:22
static const FColor ForestGreen
Definition ColorList.h:47
static const FColor Sienna
Definition ColorList.h:93
static const FColor MediumAquamarine
Definition ColorList.h:63
static const FColor YellowGreen
Definition ColorList.h:109
static const FColor Green
Definition ColorList.h:13
static const FColor RichBlue
Definition ColorList.h:88
static const FColor MidnightBlue
Definition ColorList.h:74
static const FColor LightGrey
Definition ColorList.h:57
static const FColor SkyBlue
Definition ColorList.h:95
static const FColor NewMidnightBlue
Definition ColorList.h:78
static const FColor DarkBrown
Definition ColorList.h:32
static const FColor Gold
Definition ColorList.h:48
static const FColor Copper
Definition ColorList.h:29
void MoveToEmpty(ForElementType &Other)
int32 CalculateSlackGrow(int32 NumElements, int32 CurrentNumSlackElements, SIZE_T NumBytesPerElement) const
int32 CalculateSlack(int32 NumElements, int32 CurrentNumSlackElements, SIZE_T NumBytesPerElement) const
int32 CalculateSlackShrink(int32 NumElements, int32 CurrentNumSlackElements, SIZE_T NumBytesPerElement) const
SIZE_T GetAllocatedSize(int32 NumAllocatedElements, SIZE_T NumBytesPerElement) const
void ResizeAllocation(int32 PreviousNumElements, int32 NumElements, SIZE_T NumBytesPerElement)
ForElementType< FScriptContainerElement > ForAnyElementType
static int32 GCD(int32 A, int32 B)
Definition Sorting.h:171
FORCEINLINE FScriptContainerElement * GetAllocation() const
FORCEINLINE void ResizeAllocation(int32 PreviousNumElements, int32 NumElements, SIZE_T NumBytesPerElement)
FORCEINLINE int32 CalculateSlackGrow(int32 NumElements, int32 NumAllocatedElements, int32 NumBytesPerElement) const
SIZE_T GetAllocatedSize(int32 NumAllocatedElements, SIZE_T NumBytesPerElement) const
ForAnyElementType & operator=(const ForAnyElementType &)
ForAnyElementType(const ForAnyElementType &)
FORCEINLINE int32 CalculateSlackReserve(int32 NumElements, int32 NumBytesPerElement) const
FORCEINLINE int32 CalculateSlackShrink(int32 NumElements, int32 NumAllocatedElements, int32 NumBytesPerElement) const
FORCEINLINE void MoveToEmpty(ForAnyElementType &Other)
FORCEINLINE ElementType * GetAllocation() const
FNoncopyable(const FNoncopyable &)
FNoncopyable & operator=(const FNoncopyable &)
int32 FindPairIndex(const void *Key, const FScriptMapLayout &MapLayout, TFunctionRef< uint32(const void *)> GetKeyHash, TFunctionRef< bool(const void *, const void *)> KeyEqualityFn)
Definition Map.h:1341
FScriptMap()
Definition Map.h:1285
FScriptSet Pairs
Definition Map.h:1407
FScriptMap(const FScriptMap &)
Definition Map.h:1429
void Empty(int32 Slack, const FScriptMapLayout &Layout)
Definition Map.h:1314
bool IsValidIndex(int32 Index) const
Definition Map.h:1289
uint8 * FindValue(const void *Key, const FScriptMapLayout &MapLayout, TFunctionRef< uint32(const void *)> GetKeyHash, TFunctionRef< bool(const void *, const void *)> KeyEqualityFn)
Definition Map.h:1363
int32 AddUninitialized(const FScriptMapLayout &Layout)
Definition Map.h:1330
const void * GetData(int32 Index, const FScriptMapLayout &Layout) const
Definition Map.h:1309
void * GetData(int32 Index, const FScriptMapLayout &Layout)
Definition Map.h:1304
void Add(const void *Key, const void *Value, const FScriptMapLayout &Layout, TFunctionRef< uint32(const void *)> GetKeyHash, TFunctionRef< bool(const void *, const void *)> KeyEqualityFn, TFunctionRef< void(void *)> KeyConstructAndAssignFn, TFunctionRef< void(void *)> ValueConstructAndAssignFn, TFunctionRef< void(void *)> ValueAssignFn, TFunctionRef< void(void *)> DestructKeyFn, TFunctionRef< void(void *)> DestructValueFn)
Definition Map.h:1376
void operator=(const FScriptMap &)
Definition Map.h:1430
static FScriptMapLayout GetScriptLayout(int32 KeySize, int32 KeyAlignment, int32 ValueSize, int32 ValueAlignment)
Definition Map.h:1272
int32 GetMaxIndex() const
Definition Map.h:1299
void Rehash(const FScriptMapLayout &Layout, TFunctionRef< uint32(const void *)> GetKeyHash)
Definition Map.h:1335
int32 Num() const
Definition Map.h:1294
void RemoveAt(int32 Index, const FScriptMapLayout &Layout)
Definition Map.h:1319
static void CheckConstraints()
Definition Map.h:1410
void Add(const void *Element, const FScriptSetLayout &Layout, TFunctionRef< uint32(const void *)> GetKeyHash, TFunctionRef< bool(const void *, const void *)> EqualityFn, TFunctionRef< void(void *)> ConstructFn, TFunctionRef< void(void *)> DestructFn)
Definition Set.h:1385
int32 Num() const
Definition Set.h:1246
void * GetData(int32 Index, const FScriptSetLayout &Layout)
Definition Set.h:1256
void RemoveAt(int32 Index, const FScriptSetLayout &Layout)
Definition Set.h:1289
int32 FindIndex(const void *Element, const FScriptSetLayout &Layout, TFunctionRef< uint32(const void *)> GetKeyHash, TFunctionRef< bool(const void *, const void *)> EqualityFn)
Definition Set.h:1362
void Rehash(const FScriptSetLayout &Layout, TFunctionRef< uint32(const void *)> GetKeyHash)
Definition Set.h:1319
static FScriptSetLayout GetScriptLayout(int32 ElementSize, int32 ElementAlignment)
Definition Set.h:1221
int32 AddUninitialized(const FScriptSetLayout &Layout)
Definition Set.h:1313
void Empty(int32 Slack, const FScriptSetLayout &Layout)
Definition Set.h:1266
int32 GetMaxIndex() const
Definition Set.h:1251
const void * GetData(int32 Index, const FScriptSetLayout &Layout) const
Definition Set.h:1261
bool IsValidIndex(int32 Index) const
Definition Set.h:1241
friend class TSet
Definition Set.h:91
FORCEINLINE const DataType & GetCharArray() const
Definition FString.h:299
FORCEINLINE friend bool operator<=(const FString &Lhs, const CharType *Rhs)
Definition FString.h:844
FORCEINLINE void RemoveAt(int32 Index, int32 Count=1, bool bAllowShrinking=true)
Definition FString.h:435
FORCEINLINE friend FString operator+(FString &&Lhs, FString &&Rhs)
Definition FString.h:661
FORCEINLINE FString & Append(const FString &Text)
Definition FString.h:396
FORCEINLINE uint32 GetAllocatedSize() const
Definition FString.h:214
void ToUpperInline()
Definition FString.h:2097
FString TrimStart() const &
Definition FString.h:2296
int32 Find(const TCHAR *SubStr, ESearchCase::Type SearchCase=ESearchCase::IgnoreCase, ESearchDir::Type SearchDir=ESearchDir::FromStart, int32 StartPosition=INDEX_NONE) const
Definition FString.h:2027
FORCEINLINE friend FString operator/(const FString &Lhs, const FString &Rhs)
Definition FString.h:781
FORCEINLINE FString(const std::string &str)
Definition FString.h:129
int32 ParseIntoArray(TArray< FString > &OutArray, const TCHAR **DelimArray, int32 NumDelims, bool InCullEmpty=true) const
Definition FString.h:2702
bool IsNumeric() const
Definition FString.h:2541
FORCEINLINE friend FString operator+(const FString &Lhs, const TCHAR *Rhs)
Definition FString.h:700
FORCEINLINE friend bool operator!=(const FString &Lhs, const CharType *Rhs)
Definition FString.h:1049
FORCEINLINE int32 Find(const FString &SubStr, ESearchCase::Type SearchCase=ESearchCase::IgnoreCase, ESearchDir::Type SearchDir=ESearchDir::FromStart, int32 StartPosition=INDEX_NONE) const
Definition FString.h:1128
FORCEINLINE friend DataType::RangedForIteratorType end(FString &Str)
Definition FString.h:210
FORCEINLINE friend FString operator+(FString &&Lhs, const FString &Rhs)
Definition FString.h:635
FString(FString &&)=default
FORCEINLINE FString & operator=(const TCHAR *Other)
Definition FString.h:147
FORCEINLINE friend bool operator<(const CharType *Lhs, const FString &Rhs)
Definition FString.h:899
FString TrimEnd() const &
Definition FString.h:2320
void TrimStartInline()
Definition FString.h:2286
FString Replace(const TCHAR *From, const TCHAR *To, ESearchCase::Type SearchCase=ESearchCase::IgnoreCase) const
Definition FString.h:2766
FORCEINLINE FString LeftChop(int32 Count) const
Definition FString.h:1081
FORCEINLINE bool FindChar(TCHAR InChar, int32 &Index) const
Definition FString.h:1169
FORCEINLINE friend bool operator!=(const FString &Lhs, const FString &Rhs)
Definition FString.h:1035
int32 ReplaceInline(const TCHAR *SearchText, const TCHAR *ReplacementText, ESearchCase::Type SearchCase=ESearchCase::IgnoreCase)
Definition FString.h:2805
FORCEINLINE FString Mid(int32 Start, int32 Count=INT_MAX) const
Definition FString.h:1099
FORCEINLINE FString(FString &&Other, int32 ExtraSlack)
Definition FString.h:87
static FORCEINLINE FString ConcatFStrings(typename TIdentity< LhsType >::Type Lhs, typename TIdentity< RhsType >::Type Rhs)
Definition FString.h:550
static FString Chr(TCHAR Ch)
Definition FString.h:2494
FORCEINLINE friend DataType::RangedForIteratorType begin(FString &Str)
Definition FString.h:208
FORCEINLINE friend FString operator+(const FString &Lhs, FString &&Rhs)
Definition FString.h:648
FORCEINLINE DataType & GetCharArray()
Definition FString.h:293
FORCEINLINE friend bool operator==(const FString &Lhs, const CharType *Rhs)
Definition FString.h:1008
static FORCEINLINE FString FromInt(int32 Num)
Definition FString.h:1548
FORCEINLINE FString & operator+=(const FString &Str)
Definition FString.h:500
FString & Append(const TCHAR *Text, int32 Count)
Definition FString.h:402
FORCEINLINE FString & operator/=(const FString &Str)
Definition FString.h:736
FString TrimStart() &&
Definition FString.h:2303
FORCEINLINE friend FString operator+(const FString &Lhs, const FString &Rhs)
Definition FString.h:622
FORCEINLINE int32 Compare(const FString &Other, ESearchCase::Type SearchCase=ESearchCase::CaseSensitive) const
Definition FString.h:1240
FORCEINLINE friend bool operator<=(const CharType *Lhs, const FString &Rhs)
Definition FString.h:858
FORCEINLINE friend bool operator==(const FString &Lhs, const FString &Rhs)
Definition FString.h:994
FString TrimStartAndEnd() &&
Definition FString.h:2279
FORCEINLINE friend FString operator+(const TCHAR *Lhs, const FString &Rhs)
Definition FString.h:674
FORCEINLINE TIterator CreateIterator()
Definition FString.h:192
FORCEINLINE void Reserve(const uint32 CharacterCount)
Definition FString.h:1542
FString ReplaceQuotesWithEscapedQuotes() const
Definition FString.h:2880
FString & operator=(FString &&)=default
static int32 CullArray(TArray< FString > *InArray)
Definition FString.h:2361
bool MatchesWildcard(const FString &Wildcard, ESearchCase::Type SearchCase=ESearchCase::IgnoreCase) const
Definition FString.h:2585
FString Reverse() const
Definition FString.h:2368
FString ConvertTabsToSpaces(const int32 InSpacesPerTab)
Definition FString.h:2980
bool StartsWith(const TCHAR *InSuffix, ESearchCase::Type SearchCase=ESearchCase::IgnoreCase) const
Definition FString.h:2131
FORCEINLINE friend bool operator!=(const CharType *Lhs, const FString &Rhs)
Definition FString.h:1063
static FORCEINLINE FString ConcatTCHARsToFString(const TCHAR *Lhs, typename TIdentity< RhsType >::Type Rhs)
Definition FString.h:569
FORCEINLINE FString Left(int32 Count) const
Definition FString.h:1075
static bool ToHexBlob(const FString &Source, uint8 *DestBuffer, const uint32 DestSize)
Definition FString.h:2471
int32 ParseIntoArrayLines(TArray< FString > &OutArray, bool InCullEmpty=true) const
Definition FString.h:2684
FORCEINLINE bool FindLastChar(TCHAR InChar, int32 &Index) const
Definition FString.h:1181
std::string ToString() const
Convert FString to std::string.
Definition FString.h:1611
FString TrimQuotes(bool *bQuotesRemoved=nullptr) const
Definition FString.h:2334
FORCEINLINE FString & operator+=(const TCHAR *Str)
Definition FString.h:347
void AppendInt(int32 InNum)
Definition FString.h:2415
FORCEINLINE const TCHAR * operator*() const
Definition FString.h:282
FORCEINLINE friend FString operator/(FString &&Lhs, const TCHAR *Rhs)
Definition FString.h:765
FString()=default
FORCEINLINE friend FString operator/(FString &&Lhs, const FString &Rhs)
Definition FString.h:797
FString RightPad(int32 ChCount) const
Definition FString.h:2527
FORCEINLINE friend TEnableIf< TIsCharType< CharType >::Value, FString >::Type operator+(const FString &Lhs, CharType Rhs)
Definition FString.h:519
FORCEINLINE friend DataType::RangedForConstIteratorType end(const FString &Str)
Definition FString.h:211
void PathAppend(const TCHAR *Str, int32 StrLength)
Definition FString.h:2234
FORCEINLINE bool Contains(const FString &SubStr, ESearchCase::Type SearchCase=ESearchCase::IgnoreCase, ESearchDir::Type SearchDir=ESearchDir::FromStart) const
Definition FString.h:1156
FORCEINLINE FString(const CharType *Src, typename TEnableIf< TIsCharType< CharType >::Value >::Type *Dummy=nullptr)
Definition FString.h:98
void TrimEndInline()
Definition FString.h:2310
FORCEINLINE FString RightChop(int32 Count) const
Definition FString.h:1093
FString TrimEnd() &&
Definition FString.h:2327
bool EndsWith(const FString &InSuffix, ESearchCase::Type SearchCase=ESearchCase::IgnoreCase) const
Definition FString.h:2180
FString ToLower() &&
Definition FString.h:2115
static FString ChrN(int32 NumCharacters, TCHAR Char)
Definition FString.h:2501
static FORCEINLINE FString ConcatFStringToTCHARs(typename TIdentity< LhsType >::Type Lhs, const TCHAR *Rhs)
Definition FString.h:596
FORCEINLINE friend FString operator+(const TCHAR *Lhs, FString &&Rhs)
Definition FString.h:687
FORCEINLINE TConstIterator CreateConstIterator() const
Definition FString.h:198
bool StartsWith(const FString &InPrefix, ESearchCase::Type SearchCase=ESearchCase::IgnoreCase) const
Definition FString.h:2143
FString ToUpper() const &
Definition FString.h:2084
FString(const FString &)=default
static FString FormatAsNumber(int32 InNumber)
Definition FString.h:2395
FORCEINLINE bool Equals(const FString &Other, ESearchCase::Type SearchCase=ESearchCase::CaseSensitive) const
Definition FString.h:1221
FORCEINLINE bool IsValidIndex(int32 Index) const
Definition FString.h:272
FORCEINLINE friend FString operator/(const FString &Lhs, const TCHAR *Rhs)
Definition FString.h:749
void ToLowerInline()
Definition FString.h:2121
TArray< TCHAR > DataType
Definition FString.h:58
DataType Data
Definition FString.h:59
FString ToUpper() &&
Definition FString.h:2091
void TrimStartAndEndInline()
Definition FString.h:2266
int32 ParseIntoArray(TArray< FString > &OutArray, const TCHAR *pchDelim, bool InCullEmpty=true) const
Definition FString.h:2560
bool EndsWith(const TCHAR *InSuffix, ESearchCase::Type SearchCase=ESearchCase::IgnoreCase) const
Definition FString.h:2155
FORCEINLINE FString(int32 InCount, const TCHAR *InSrc)
Definition FString.h:116
FORCEINLINE friend DataType::RangedForConstIteratorType begin(const FString &Str)
Definition FString.h:209
FORCEINLINE friend bool operator>(const FString &Lhs, const CharType *Rhs)
Definition FString.h:967
FString ReplaceCharWithEscapedChar(const TArray< TCHAR > *Chars=nullptr) const
Definition FString.h:2934
static bool ToBlob(const FString &Source, uint8 *DestBuffer, const uint32 DestSize)
Definition FString.h:2448
FORCEINLINE TCHAR & operator[](int32 Index)
Definition FString.h:169
FORCEINLINE void InsertAt(int32 Index, TCHAR Character)
Definition FString.h:440
FORCEINLINE friend bool operator>=(const CharType *Lhs, const FString &Rhs)
Definition FString.h:940
FORCEINLINE friend FString operator/(const TCHAR *Lhs, const FString &Rhs)
Definition FString.h:813
FORCEINLINE void AppendChars(const TCHAR *Array, int32 Count)
Definition FString.h:322
FORCEINLINE friend TEnableIf< TIsCharType< CharType >::Value, FString >::Type operator+(FString &&Lhs, CharType Rhs)
Definition FString.h:538
FORCEINLINE void Shrink()
Definition FString.h:260
FORCEINLINE friend bool operator>(const CharType *Lhs, const FString &Rhs)
Definition FString.h:981
void ReverseString()
Definition FString.h:2375
FORCEINLINE bool IsEmpty() const
Definition FString.h:241
FORCEINLINE FString Right(int32 Count) const
Definition FString.h:1087
FORCEINLINE void InsertAt(int32 Index, const FString &Characters)
Definition FString.h:455
FORCEINLINE bool Contains(const TCHAR *SubStr, ESearchCase::Type SearchCase=ESearchCase::IgnoreCase, ESearchDir::Type SearchDir=ESearchDir::FromStart) const
Definition FString.h:1142
FORCEINLINE friend bool operator>(const FString &Lhs, const FString &Rhs)
Definition FString.h:953
FORCEINLINE friend bool operator==(const CharType *Lhs, const FString &Rhs)
Definition FString.h:1022
FORCEINLINE friend bool operator<(const FString &Lhs, const CharType *Rhs)
Definition FString.h:885
static FString Join(const TArray< T, Allocator > &Array, const TCHAR *Separator)
Definition FString.h:1587
bool RemoveFromEnd(const FString &InSuffix, ESearchCase::Type SearchCase=ESearchCase::IgnoreCase)
Definition FString.h:2212
FORCEINLINE TEnableIf< TIsCharType< CharType >::Value, FString & >::Type operator+=(CharType InChar)
Definition FString.h:363
FORCEINLINE const TCHAR & operator[](int32 Index) const
Definition FString.h:180
FORCEINLINE friend bool operator<(const FString &Lhs, const FString &Rhs)
Definition FString.h:871
FORCEINLINE friend bool operator>=(const FString &Lhs, const FString &Rhs)
Definition FString.h:912
FString ToLower() const &
Definition FString.h:2108
int32 ParseIntoArrayWS(TArray< FString > &OutArray, const TCHAR *pchExtraDelim=nullptr, bool InCullEmpty=true) const
Definition FString.h:2660
bool Split(const FString &InS, FString *LeftS, FString *RightS, ESearchCase::Type SearchCase=ESearchCase::IgnoreCase, ESearchDir::Type SearchDir=ESearchDir::FromStart) const
Definition FString.h:1262
static FString Format(const T *format, Args &&... args)
Formats text using fmt::format.
Definition FString.h:1633
FString LeftPad(int32 ChCount) const
Definition FString.h:2513
FORCEINLINE int32 FindLastCharByPredicate(Predicate Pred) const
Definition FString.h:1209
FORCEINLINE void Reset(int32 NewReservedSize=0)
Definition FString.h:251
FORCEINLINE void Empty(int32 Slack=0)
Definition FString.h:231
FORCEINLINE int32 Len() const
Definition FString.h:1069
FORCEINLINE int32 FindLastCharByPredicate(Predicate Pred, int32 Count) const
Definition FString.h:1195
void TrimToNullTerminator()
Definition FString.h:2015
bool RemoveFromStart(const FString &InPrefix, ESearchCase::Type SearchCase=ESearchCase::IgnoreCase)
Definition FString.h:2196
FORCEINLINE FString & AppendChar(const TCHAR InChar)
Definition FString.h:390
FORCEINLINE friend bool operator>=(const FString &Lhs, const CharType *Rhs)
Definition FString.h:926
FORCEINLINE friend bool operator<=(const FString &Lhs, const FString &Rhs)
Definition FString.h:830
FORCEINLINE void CheckInvariants() const
Definition FString.h:222
FORCEINLINE friend FString operator+(FString &&Lhs, const TCHAR *Rhs)
Definition FString.h:713
FString ReplaceEscapedCharWithChar(const TArray< TCHAR > *Chars=nullptr) const
Definition FString.h:2956
FORCEINLINE FString(const FString &Other, int32 ExtraSlack)
Definition FString.h:76
FORCEINLINE FString & operator/=(const TCHAR *Str)
Definition FString.h:724
FString & operator=(const FString &)=default
FString TrimStartAndEnd() const &
Definition FString.h:2272
int32 GetAlignment() const
int32 AddMember(int32 MemberSize, int32 MemberAlignment)
int32 GetSize() const
T * value_
Definition Fields.h:82
FieldArray & operator=(const T &other)=delete
T * operator()()
Definition Fields.h:69
static size_t GetSize()
Definition Fields.h:76
Definition Logger.h:9
Log()=default
~Log()=default
std::shared_ptr< spdlog::logger > logger_
Definition Logger.h:41
Log(Log &&)=delete
Log & operator=(Log &&)=delete
static std::shared_ptr< spdlog::logger > & GetLog()
Definition Logger.h:22
Log & operator=(const Log &)=delete
Log(const Log &)=delete
static Log & Get()
Definition Logger.h:16
FORCEINLINE int32 CalculateSlackReserve(int32 NumElements, int32 NumBytesPerElement) const
ForAnyElementType(const ForAnyElementType &)
SIZE_T GetAllocatedSize(int32 NumAllocatedElements, SIZE_T NumBytesPerElement) const
FORCEINLINE int32 CalculateSlackShrink(int32 NumElements, int32 NumAllocatedElements, int32 NumBytesPerElement) const
FORCEINLINE void MoveToEmpty(ForAnyElementType &Other)
void ResizeAllocation(int32 PreviousNumElements, int32 NumElements, SIZE_T NumBytesPerElement)
FORCEINLINE FScriptContainerElement * GetAllocation() const
ForAnyElementType & operator=(const ForAnyElementType &)
FORCEINLINE int32 CalculateSlackGrow(int32 NumElements, int32 NumAllocatedElements, int32 NumBytesPerElement) const
FORCEINLINE ElementType * GetAllocation() const
~TArray()
Definition TArray.h:517
FORCEINLINE bool Find(const ElementType &Item, int32 &Index) const
Definition TArray.h:760
void Sort()
Definition TArray.h:1964
void RemoveAtImpl(int32 Index, int32 Count, bool bAllowShrinking)
Definition TArray.h:1238
TArray & operator=(TArray &&Other)
Definition TArray.h:506
TCheckedPointerIterator< const ElementType > RangedForConstIteratorType
Definition TArray.h:1930
int32 AddUniqueImpl(ArgsType &&Args)
Definition TArray.h:1609
InAllocator Allocator
Definition TArray.h:275
TArray & operator=(std::initializer_list< InElementType > InitList)
Definition TArray.h:349
void SetNumUninitialized(int32 NewNum, bool bAllowShrinking=true)
Definition TArray.h:1376
FORCEINLINE int32 Num() const
Definition TArray.h:611
int32 FindLastByPredicate(Predicate Pred, int32 Count) const
Definition TArray.h:827
TIterator CreateIterator()
Definition TArray.h:1913
int32 AddZeroed(int32 Count=1)
Definition TArray.h:1578
FORCEINLINE int32 Emplace(ArgsType &&... Args)
Definition TArray.h:1526
FORCEINLINE int32 Max() const
Definition TArray.h:622
ElementAllocatorType AllocatorInstance
Definition TArray.h:2107
FORCENOINLINE void ResizeTo(int32 NewMax)
Definition TArray.h:2047
InElementType ElementType
Definition TArray.h:274
int32 RemoveAll(const PREDICATE_CLASS &Predicate)
Definition TArray.h:1726
void SetNumZeroed(int32 NewNum, bool bAllowShrinking=true)
Definition TArray.h:1359
void InsertZeroed(int32 Index, int32 Count=1)
Definition TArray.h:1102
static FORCEINLINE TEnableIf<!UE4Array_Private::TCanMoveTArrayPointersBetweenArrayTypes< FromArrayType, ToArrayType >::Value >::Type MoveOrCopy(ToArrayType &ToArray, FromArrayType &FromArray, int32 PrevMax)
Definition TArray.h:423
FORCEINLINE const ElementType & Last(int32 IndexFromTheEnd=0) const
Definition TArray.h:732
TIndexedContainerIterator< TArray, ElementType, int32 > TIterator
Definition TArray.h:1905
FORCEINLINE bool operator!=(const TArray &OtherArray) const
Definition TArray.h:1036
TCheckedPointerIterator< ElementType > RangedForIteratorType
Definition TArray.h:1929
TArray & operator+=(TArray &&Other)
Definition TArray.h:1490
static FORCEINLINE TEnableIf< UE4Array_Private::TCanMoveTArrayPointersBetweenArrayTypes< FromArrayType, ToArrayType >::Value >::Type MoveOrCopy(ToArrayType &ToArray, FromArrayType &FromArray, int32 PrevMax)
Definition TArray.h:402
void Init(const ElementType &Element, int32 Number)
Definition TArray.h:1662
FORCEINLINE friend RangedForIteratorType end(TArray &Array)
Definition TArray.h:1945
FORCEINLINE bool ContainsByPredicate(Predicate Pred) const
Definition TArray.h:1012
FORCEINLINE void CheckAddress(const ElementType *Addr) const
Definition TArray.h:1193
TIndexedContainerIterator< const TArray, const ElementType, int32 > TConstIterator
Definition TArray.h:1906
FORCEINLINE void CheckInvariants() const
Definition TArray.h:573
FORCEINLINE TArray(const TArray &Other, int32 ExtraSlack)
Definition TArray.h:338
FORCEINLINE void RemoveAt(int32 Index, CountType Count, bool bAllowShrinking=true)
Definition TArray.h:1290
void StableSort(const PREDICATE_CLASS &Predicate)
Definition TArray.h:2011
FORCEINLINE void Append(std::initializer_list< ElementType > InitList)
Definition TArray.h:1474
TArray & operator+=(const TArray &Other)
Definition TArray.h:1502
FORCEINLINE int32 Add(const ElementType &Item)
Definition TArray.h:1564
FORCEINLINE ElementType & Last(int32 IndexFromTheEnd=0)
Definition TArray.h:718
FORCENOINLINE void ResizeGrow(int32 OldNum)
Definition TArray.h:2032
FORCEINLINE void EmplaceAt(int32 Index, ArgsType &&... Args)
Definition TArray.h:1540
FORCEINLINE const ElementType & operator[](int32 Index) const
Definition TArray.h:645
TArray< ElementType > FilterByPredicate(Predicate Pred) const
Definition TArray.h:972
FORCEINLINE friend RangedForIteratorType begin(TArray &Array)
Definition TArray.h:1943
void Append(TArray< OtherElementType, OtherAllocator > &&Source)
Definition TArray.h:1433
FORCENOINLINE void ResizeForCopy(int32 NewMax, int32 PrevMax)
Definition TArray.h:2059
FORCEINLINE void RemoveAtSwap(int32 Index)
Definition TArray.h:1849
int32 Insert(const ElementType *Ptr, int32 Count, int32 Index)
Definition TArray.h:1175
FORCEINLINE int32 GetSlack() const
Definition TArray.h:564
FORCEINLINE int32 AddUnique(const ElementType &Item)
Definition TArray.h:1640
int32 Find(const ElementType &Item) const
Definition TArray.h:773
void CopyToEmpty(const OtherElementType *OtherData, int32 OtherNum, int32 PrevMax, int32 ExtraSlack)
Definition TArray.h:2084
FORCEINLINE void Shrink()
Definition TArray.h:743
void SetNumUnsafeInternal(int32 NewNum)
Definition TArray.h:1392
FORCEINLINE const ElementType & Top() const
Definition TArray.h:707
static FORCEINLINE TEnableIf< UE4Array_Private::TCanMoveTArrayPointersBetweenArrayTypes< FromArrayType, ToArrayType >::Value >::Type MoveOrCopyWithSlack(ToArrayType &ToArray, FromArrayType &FromArray, int32 PrevMax, int32 ExtraSlack)
Definition TArray.h:439
int32 RemoveSwap(const ElementType &Item)
Definition TArray.h:1822
int32 IndexOfByKey(const KeyType &Key) const
Definition TArray.h:861
void Append(const TArray< OtherElementType, OtherAllocator > &Source)
Definition TArray.h:1407
FORCEINLINE TArray(const TArray &Other)
Definition TArray.h:326
FORCEINLINE ElementType & Top()
Definition TArray.h:694
FORCEINLINE friend RangedForConstIteratorType end(const TArray &Array)
Definition TArray.h:1946
TArray(std::initializer_list< InElementType > InitList)
Definition TArray.h:302
FORCEINLINE bool FindLast(const ElementType &Item, int32 &Index) const
Definition TArray.h:794
int32 ArrayMax
Definition TArray.h:2109
FORCEINLINE int32 AddUnique(ElementType &&Item)
Definition TArray.h:1631
FORCEINLINE friend RangedForConstIteratorType begin(const TArray &Array)
Definition TArray.h:1944
int32 Insert(const ElementType &Item, int32 Index)
Definition TArray.h:1226
FORCEINLINE uint32 GetTypeSize() const
Definition TArray.h:543
TArray & operator+=(std::initializer_list< ElementType > InitList)
Definition TArray.h:1513
void Append(const ElementType *Ptr, int32 Count)
Definition TArray.h:1460
static FORCEINLINE TEnableIf<!UE4Array_Private::TCanMoveTArrayPointersBetweenArrayTypes< FromArrayType, ToArrayType >::Value >::Type MoveOrCopyWithSlack(ToArrayType &ToArray, FromArrayType &FromArray, int32 PrevMax, int32 ExtraSlack)
Definition TArray.h:457
int32 Insert(ElementType &&Item, int32 Index)
Definition TArray.h:1207
FORCEINLINE TArray(TArray &&Other)
Definition TArray.h:468
FORCENOINLINE void ResizeShrink()
Definition TArray.h:2037
FORCEINLINE void RangeCheck(int32 Index) const
Definition TArray.h:583
void Reset(int32 NewSize=0)
Definition TArray.h:1302
bool Contains(const ComparisonType &Item) const
Definition TArray.h:992
TArray(TArray< OtherElementType, Allocator > &&Other, int32 ExtraSlack)
Definition TArray.h:492
FORCEINLINE void RemoveAt(int32 Index)
Definition TArray.h:1276
int32 RemoveSingle(const ElementType &Item)
Definition TArray.h:1679
int32 FindLast(const ElementType &Item) const
Definition TArray.h:806
void RemoveAllSwap(const PREDICATE_CLASS &Predicate, bool bAllowShrinking=true)
Definition TArray.h:1774
FORCEINLINE ElementType & operator[](int32 Index)
Definition TArray.h:632
TArray & operator=(const TArray &Other)
Definition TArray.h:381
int32 Remove(const ElementType &Item)
Definition TArray.h:1709
bool operator==(const TArray &OtherArray) const
Definition TArray.h:1023
FORCEINLINE const ElementType * FindByPredicate(Predicate Pred) const
Definition TArray.h:938
FORCEINLINE TArray(const ElementType *Ptr, int32 Count)
Definition TArray.h:292
FORCEINLINE ElementType Pop(bool bAllowShrinking=true)
Definition TArray.h:657
FORCEINLINE int32 FindLastByPredicate(Predicate Pred) const
Definition TArray.h:848
FORCEINLINE TArray()
Definition TArray.h:280
void Empty(int32 Slack=0)
Definition TArray.h:1321
TChooseClass< Allocator::NeedsElementType, typenameAllocator::templateForElementType< ElementType >, typenameAllocator::ForAnyElementType >::Result ElementAllocatorType
Definition TArray.h:2105
void SetNum(int32 NewNum, bool bAllowShrinking=true)
Definition TArray.h:1340
int32 ArrayNum
Definition TArray.h:2108
FORCEINLINE const ElementType * FindByKey(const KeyType &Key) const
Definition TArray.h:903
FORCEINLINE void Push(const ElementType &Item)
Definition TArray.h:683
TConstIterator CreateConstIterator() const
Definition TArray.h:1923
FORCEINLINE void Reserve(int32 Number)
Definition TArray.h:1648
void InsertDefaulted(int32 Index, int32 Count=1)
Definition TArray.h:1116
FORCEINLINE int32 AddUninitialized(int32 Count=1)
Definition TArray.h:1051
int32 RemoveSingleSwap(const ElementType &Item, bool bAllowShrinking=true)
Definition TArray.h:1798
FORCEINLINE TArray(TArray< OtherElementType, OtherAllocator > &&Other)
Definition TArray.h:479
FORCEINLINE ElementType * GetData() const
Definition TArray.h:533
FORCEINLINE bool IsValidIndex(int32 Index) const
Definition TArray.h:600
int32 Insert(std::initializer_list< ElementType > InitList, const int32 InIndex)
Definition TArray.h:1129
FORCEINLINE uint32 GetAllocatedSize(void) const
Definition TArray.h:554
int32 Insert(const TArray< ElementType > &Items, const int32 InIndex)
Definition TArray.h:1150
FORCEINLINE int32 Add(ElementType &&Item)
Definition TArray.h:1555
FORCEINLINE void RemoveAtSwap(int32 Index, CountType Count, bool bAllowShrinking=true)
Definition TArray.h:1867
TArray & operator=(const TArray< ElementType, OtherAllocator > &Other)
Definition TArray.h:368
ElementType * FindByPredicate(Predicate Pred)
Definition TArray.h:950
FORCEINLINE TArray(const TArray< OtherElementType, OtherAllocator > &Other)
Definition TArray.h:316
void InsertUninitialized(int32 Index, int32 Count=1)
Definition TArray.h:1076
ElementType * FindByKey(const KeyType &Key)
Definition TArray.h:917
void Sort(const PREDICATE_CLASS &Predicate)
Definition TArray.h:1980
int32 AddDefaulted(int32 Count=1)
Definition TArray.h:1593
void RemoveAtSwapImpl(int32 Index, int32 Count=1, bool bAllowShrinking=true)
Definition TArray.h:1873
void StableSort()
Definition TArray.h:1994
FORCEINLINE void Push(ElementType &&Item)
Definition TArray.h:670
int32 IndexOfByPredicate(Predicate Pred) const
Definition TArray.h:881
FORCEINLINE TEnumAsByte(TEnum InValue)
Definition EnumAsByte.h:40
TEnum GetValue() const
Definition EnumAsByte.h:122
FORCEINLINE TEnumAsByte(int32 InValue)
Definition EnumAsByte.h:49
FORCEINLINE TEnumAsByte & operator=(TEnum InValue)
Definition EnumAsByte.h:81
FORCEINLINE TEnumAsByte(const TEnumAsByte &InValue)
Definition EnumAsByte.h:31
FORCEINLINE TEnumAsByte(uint8 InValue)
Definition EnumAsByte.h:58
TEnum EnumType
Definition EnumAsByte.h:21
bool operator==(TEnum InValue) const
Definition EnumAsByte.h:93
operator TEnum() const
Definition EnumAsByte.h:110
FORCEINLINE TEnumAsByte()
Definition EnumAsByte.h:24
TEnumAsByte_EnumClass< TIsEnumClass< TEnum >::Value > Check
Definition EnumAsByte.h:18
FORCEINLINE TEnumAsByte & operator=(TEnumAsByte InValue)
Definition EnumAsByte.h:70
FORCEINLINE friend uint32 GetTypeHash(const TEnumAsByte &Enum)
Definition EnumAsByte.h:133
bool operator==(TEnumAsByte InValue) const
Definition EnumAsByte.h:104
ForElementType & operator=(const ForElementType &)
TTypeCompatibleBytes< ElementType > InlineData[NumInlineElements]
FORCEINLINE ElementType * GetAllocation() const
FORCEINLINE void MoveToEmpty(ForElementType &Other)
FORCEINLINE int32 CalculateSlackReserve(int32 NumElements, SIZE_T NumBytesPerElement) const
SIZE_T GetAllocatedSize(int32 NumAllocatedElements, SIZE_T NumBytesPerElement) const
void ResizeAllocation(int32 PreviousNumElements, int32 NumElements, SIZE_T NumBytesPerElement)
FORCEINLINE int32 CalculateSlackGrow(int32 NumElements, int32 NumAllocatedElements, int32 NumBytesPerElement) const
ForElementType(const ForElementType &)
FORCEINLINE int32 CalculateSlackShrink(int32 NumElements, int32 NumAllocatedElements, int32 NumBytesPerElement) const
FORCEINLINE friend bool operator!=(const TIndexedContainerIterator &Lhs, const TIndexedContainerIterator &Rhs)
Definition TArray.h:130
ElementType * operator->() const
Definition TArray.h:93
FORCEINLINE friend bool operator==(const TIndexedContainerIterator &Lhs, const TIndexedContainerIterator &Rhs)
Definition TArray.h:129
IndexType GetIndex() const
Definition TArray.h:105
TIndexedContainerIterator operator+(int32 Offset) const
Definition TArray.h:71
TIndexedContainerIterator operator++(int)
Definition TArray.h:44
TIndexedContainerIterator & operator--()
Definition TArray.h:52
TIndexedContainerIterator & operator-=(int32 Offset)
Definition TArray.h:77
FORCEINLINE operator bool() const
Definition TArray.h:99
TIndexedContainerIterator(ContainerType &InContainer, IndexType StartIndex=0)
Definition TArray.h:32
ContainerType & Container
Definition TArray.h:134
TIndexedContainerIterator & operator++()
Definition TArray.h:39
TIndexedContainerIterator & operator+=(int32 Offset)
Definition TArray.h:65
TIndexedContainerIterator operator--(int)
Definition TArray.h:57
TIndexedContainerIterator operator-(int32 Offset) const
Definition TArray.h:82
ElementType & operator*() const
Definition TArray.h:88
FORCEINLINE int32 CalculateSlackReserve(int32 NumElements, SIZE_T NumBytesPerElement) const
FORCEINLINE int32 CalculateSlackShrink(int32 NumElements, int32 NumAllocatedElements, int32 NumBytesPerElement) const
FORCEINLINE ElementType * GetAllocation() const
TTypeCompatibleBytes< ElementType > InlineData[NumInlineElements]
ForElementType(const ForElementType &)
FORCEINLINE void MoveToEmpty(ForElementType &Other)
void ResizeAllocation(int32 PreviousNumElements, int32 NumElements, SIZE_T NumBytesPerElement)
ForElementType & operator=(const ForElementType &)
SIZE_T GetAllocatedSize(int32 NumAllocatedElements, SIZE_T NumBytesPerElement) const
FORCEINLINE int32 CalculateSlackGrow(int32 NumElements, int32 NumAllocatedElements, int32 NumBytesPerElement) const
SecondaryAllocator::template ForElementType< ElementType > SecondaryData
TInlineSparseArrayAllocator< NumInlineElements, typename SecondaryAllocator::SparseArrayAllocator > SparseArrayAllocator
static FORCEINLINE uint32 GetNumberOfHashBuckets(uint32 NumHashedElements)
TInlineAllocator< NumInlineHashBuckets, typename SecondaryAllocator::HashAllocator > HashAllocator
TInlineAllocator< NumInlineElements, typename SecondaryAllocator::ElementAllocator > ElementAllocator
TInlineAllocator< InlineBitArrayDWORDs, typename SecondaryAllocator::BitArrayAllocator > BitArrayAllocator
static void Rotate(T *First, const int32 From, const int32 To, const int32 Amount)
Definition Sorting.h:202
TRValueToLValueReference< KeyInitType >::Type Key
Definition Map.h:57
FORCEINLINE TKeyInitializer(KeyInitType InKey)
Definition Map.h:60
operator TPair< KeyType, ValueType >() const
Definition Map.h:65
TChooseClass< bConst, constKeyType, KeyType >::Result ItKeyType
Definition Map.h:540
TChooseClass< bConst, constTMapBase, TMapBase >::Result MapType
Definition Map.h:539
FORCEINLINE friend bool operator==(const TBaseIterator &Lhs, const TBaseIterator &Rhs)
Definition Map.h:567
FORCEINLINE TBaseIterator(const PairItType &InElementIt)
Definition Map.h:545
FORCEINLINE bool operator!() const
Definition Map.h:562
FORCEINLINE ItKeyType & Key() const
Definition Map.h:570
FORCEINLINE PairType & operator*() const
Definition Map.h:573
PairItType PairIt
Definition Map.h:577
FORCEINLINE friend bool operator!=(const TBaseIterator &Lhs, const TBaseIterator &Rhs)
Definition Map.h:568
FORCEINLINE TBaseIterator & operator++()
Definition Map.h:550
FORCEINLINE ItValueType & Value() const
Definition Map.h:571
TChooseClass< bConst, typenameTChooseClass< bRangedFor, typenameElementSetType::TRangedForConstIterator, typenameElementSetType::TConstIterator >::Result, typenameTChooseClass< bRangedFor, typenameElementSetType::TRangedForIterator, typenameElementSetType::TIterator >::Result >::Result PairItType
Definition Map.h:537
FORCEINLINE PairType * operator->() const
Definition Map.h:574
FORCEINLINE operator bool() const
Definition Map.h:557
TChooseClass< bConst, constValueType, ValueType >::Result ItValueType
Definition Map.h:541
TChooseClass< bConst, consttypenameElementSetType::ElementType, typenameElementSetType::ElementType >::Result PairType
Definition Map.h:542
TChooseClass< bConst, constValueType, ValueType >::Result ItValueType
Definition Map.h:587
FORCEINLINE TBaseKeyIterator(const SetItType &InSetIt)
Definition Map.h:591
FORCEINLINE operator bool() const
Definition Map.h:603
TChooseClass< bConst, constKeyType, KeyType >::Result ItKeyType
Definition Map.h:586
FORCEINLINE ItKeyType & Key() const
Definition Map.h:613
FORCEINLINE bool operator!() const
Definition Map.h:608
FORCEINLINE ItValueType & Value() const
Definition Map.h:614
FORCEINLINE TBaseKeyIterator & operator++()
Definition Map.h:596
TChooseClass< bConst, typenameElementSetType::TConstKeyIterator, typenameElementSetType::TKeyIterator >::Result SetItType
Definition Map.h:585
FORCEINLINE TConstIterator(const TMapBase &InMap)
Definition Map.h:665
FORCEINLINE TConstKeyIterator(const TMapBase &InMap, KeyInitType InKey)
Definition Map.h:678
FORCEINLINE ~TIterator()
Definition Map.h:640
TMapBase & Map
Definition Map.h:656
bool bRequiresRehashOnRemoval
Definition Map.h:658
bool bElementsHaveBeenRemoved
Definition Map.h:657
FORCEINLINE void RemoveCurrent()
Definition Map.h:649
FORCEINLINE TIterator(TMapBase &InMap, bool bInRequiresRehashOnRemoval=false)
Definition Map.h:631
FORCEINLINE void RemoveCurrent()
Definition Map.h:692
FORCEINLINE TKeyIterator(TMapBase &InMap, KeyInitType InKey)
Definition Map.h:687
FORCEINLINE ValueType & FindOrAddImpl(ArgType &&Arg)
Definition Map.h:403
FORCEINLINE friend TRangedForIterator end(TMapBase &MapBase)
Definition Map.h:729
FORCEINLINE bool Contains(KeyConstPointerType Key) const
Definition Map.h:492
TSet< ElementType, KeyFuncs, SetAllocator > ElementSetType
Definition Map.h:526
const KeyType * FindKey(ValueInitType Value) const
Definition Map.h:360
FORCEINLINE ValueType * Find(KeyConstPointerType Key)
Definition Map.h:379
FORCEINLINE ValueType & Add(KeyType &&InKey, ValueType &&InValue)
Definition Map.h:299
ElementSetType Pairs
Definition Map.h:621
void GenerateValueArray(TArray< ValueType, Allocator > &OutArray) const
Definition Map.h:516
FORCEINLINE ValueType FindRef(KeyConstPointerType Key) const
Definition Map.h:476
void GenerateKeyArray(TArray< KeyType, Allocator > &OutArray) const
Definition Map.h:502
FORCEINLINE const ValueType * Find(KeyConstPointerType Key) const
Definition Map.h:388
FORCEINLINE ValueType & Add(const KeyType &InKey)
Definition Map.h:307
friend bool LegacyCompareEqual(const TMapBase &A, const TMapBase &B)
Definition Map.h:166
FORCEINLINE TIterator CreateIterator()
Definition Map.h:699
FORCEINLINE friend TRangedForConstIterator end(const TMapBase &MapBase)
Definition Map.h:730
FORCEINLINE void Shrink()
Definition Map.h:229
FORCEINLINE void Empty(int32 ExpectedNumElements=0)
Definition Map.h:217
FORCEINLINE void Reserve(int32 Number)
Definition Map.h:247
TMapBase & operator=(const TMapBase &)=default
FORCEINLINE TConstKeyIterator CreateConstKeyIterator(KeyInitType InKey) const
Definition Map.h:717
TMapBase(const TMapBase &)=default
TMapBase(TMapBase &&)=default
TTypeTraits< KeyType >::ConstInitType KeyInitType
Definition Map.h:112
FORCEINLINE ValueType & FindOrAdd(KeyType &&Key)
Definition Map.h:421
FORCEINLINE TConstIterator CreateConstIterator() const
Definition Map.h:705
FORCEINLINE int32 Remove(KeyConstPointerType InKey)
Definition Map.h:344
TTypeTraits< ValueType >::ConstInitType ValueInitType
Definition Map.h:113
FORCEINLINE ValueType & Add(KeyType &&InKey)
Definition Map.h:308
TTypeTraits< KeyType >::ConstPointerType KeyConstPointerType
Definition Map.h:111
TMapBase & operator=(const TMapBase< KeyType, ValueType, OtherSetAllocator, KeyFuncs > &Other)
Definition Map.h:158
FORCEINLINE TKeyIterator CreateKeyIterator(KeyInitType InKey)
Definition Map.h:711
ValueType & Emplace(InitKeyType &&InKey)
Definition Map.h:331
int32 GetKeys(TArray< KeyType, Allocator > &OutKeys) const
Definition Map.h:264
TMapBase & operator=(TMapBase &&)=default
TMapBase(TMapBase< KeyType, ValueType, OtherSetAllocator, KeyFuncs > &&Other)
Definition Map.h:138
FORCEINLINE ValueType & Add(KeyType &&InKey, const ValueType &InValue)
Definition Map.h:298
FORCEINLINE friend TRangedForIterator begin(TMapBase &MapBase)
Definition Map.h:727
bool OrderIndependentCompareEqual(const TMapBase &Other) const
Definition Map.h:183
FORCEINLINE const ValueType & FindChecked(KeyConstPointerType Key) const
Definition Map.h:450
FORCEINLINE int32 Num() const
Definition Map.h:253
FORCEINLINE void CompactStable()
Definition Map.h:241
FORCEINLINE ValueType & Add(const KeyType &InKey, const ValueType &InValue)
Definition Map.h:296
FORCEINLINE friend TRangedForConstIterator begin(const TMapBase &MapBase)
Definition Map.h:728
TMapBase()=default
FORCEINLINE void Compact()
Definition Map.h:235
FORCEINLINE ValueType & FindOrAdd(const KeyType &Key)
Definition Map.h:420
TPair< KeyType, ValueType > ElementType
Definition Map.h:114
FORCEINLINE ValueType & FindChecked(KeyConstPointerType Key)
Definition Map.h:463
FORCEINLINE ValueType & Add(const KeyType &InKey, ValueType &&InValue)
Definition Map.h:297
ValueType & Emplace(InitKeyType &&InKey, InitValueType &&InValue)
Definition Map.h:317
TMapBase(const TMapBase< KeyType, ValueType, OtherSetAllocator, KeyFuncs > &Other)
Definition Map.h:144
FORCEINLINE uint32 GetAllocatedSize() const
Definition Map.h:284
TMapBase & operator=(TMapBase< KeyType, ValueType, OtherSetAllocator, KeyFuncs > &&Other)
Definition Map.h:150
friend bool LegacyCompareNotEqual(const TMapBase &A, const TMapBase &B)
Definition Map.h:170
FORCEINLINE void Reset()
Definition Map.h:223
Definition Map.h:856
FORCEINLINE ValueType & operator[](KeyConstPointerType Key)
Definition Map.h:985
FORCEINLINE bool RemoveAndCopyValue(KeyInitType Key, ValueType &OutRemovedValue)
Definition Map.h:923
FORCEINLINE const ValueType & operator[](KeyConstPointerType Key) const
Definition Map.h:986
TMap(const TMap< KeyType, ValueType, OtherSetAllocator, KeyFuncs > &Other)
Definition Map.h:894
TSortableMapBase< KeyType, ValueType, SetAllocator, KeyFuncs > Super
Definition Map.h:863
FORCEINLINE ValueType FindAndRemoveChecked(KeyConstPointerType Key)
Definition Map.h:942
void Append(const TMap< KeyType, ValueType, OtherSetAllocator, KeyFuncs > &OtherMap)
Definition Map.h:976
TMap & operator=(const TMap< KeyType, ValueType, OtherSetAllocator, KeyFuncs > &Other)
Definition Map.h:909
void Append(TMap< KeyType, ValueType, OtherSetAllocator, KeyFuncs > &&OtherMap)
Definition Map.h:958
TMap()=default
TMap & operator=(const TMap &)=default
TMap(TMap &&)=default
TMap & operator=(TMap &&)=default
TMap & operator=(TMap< KeyType, ValueType, OtherSetAllocator, KeyFuncs > &&Other)
Definition Map.h:901
TMap(const TMap &)=default
TMap(TMap< KeyType, ValueType, OtherSetAllocator, KeyFuncs > &&Other)
Definition Map.h:887
Super::KeyInitType KeyInitType
Definition Map.h:864
Super::KeyConstPointerType KeyConstPointerType
Definition Map.h:865
static void Sort(T *First, const int32 Num, const PREDICATE_CLASS &Predicate)
Definition Sorting.h:286
Super::KeyInitType KeyInitType
Definition Map.h:1001
TMultiMap(TMultiMap< KeyType, ValueType, OtherSetAllocator, KeyFuncs > &&Other)
Definition Map.h:1024
Super::ValueInitType ValueInitType
Definition Map.h:1002
Super::KeyConstPointerType KeyConstPointerType
Definition Map.h:1000
int32 Num(KeyInitType Key) const
Definition Map.h:1239
void MultiFindPointer(KeyInitType Key, TArray< const ValueType *, Allocator > &OutValues, bool bMaintainOrder=false) const
Definition Map.h:1080
int32 RemoveSingle(KeyInitType InKey, ValueInitType InValue)
Definition Map.h:1183
TMultiMap & operator=(TMultiMap &&)=default
void MultiFindPointer(KeyInitType Key, TArray< ValueType *, Allocator > &OutValues, bool bMaintainOrder=false)
Definition Map.h:1092
ValueType * FindPair(KeyInitType Key, ValueInitType Value)
Definition Map.h:1223
TMultiMap(const TMultiMap &)=default
FORCEINLINE ValueType & AddUnique(KeyType &&InKey, ValueType &&InValue)
Definition Map.h:1117
TMultiMap & operator=(TMultiMap< KeyType, ValueType, OtherSetAllocator, KeyFuncs > &&Other)
Definition Map.h:1038
TMultiMap(const TMultiMap< KeyType, ValueType, OtherSetAllocator, KeyFuncs > &Other)
Definition Map.h:1031
FORCEINLINE int32 Num() const
Definition Map.h:1251
int32 Remove(KeyInitType InKey, ValueInitType InValue)
Definition Map.h:1160
TMultiMap & operator=(const TMultiMap &)=default
TSortableMapBase< KeyType, ValueType, SetAllocator, KeyFuncs > Super
Definition Map.h:999
FORCEINLINE const ValueType * FindPair(KeyInitType Key, ValueInitType Value) const
Definition Map.h:1210
TMultiMap & operator=(const TMultiMap< KeyType, ValueType, OtherSetAllocator, KeyFuncs > &Other)
Definition Map.h:1046
void MultiFind(KeyInitType Key, TArray< ValueType, Allocator > &OutValues, bool bMaintainOrder=false) const
Definition Map.h:1059
FORCEINLINE ValueType & AddUnique(const KeyType &InKey, const ValueType &InValue)
Definition Map.h:1114
FORCEINLINE int32 Remove(KeyConstPointerType InKey)
Definition Map.h:1148
FORCEINLINE ValueType & AddUnique(KeyType &&InKey, const ValueType &InValue)
Definition Map.h:1116
TMultiMap()=default
ValueType & EmplaceUnique(InitKeyType &&InKey, InitValueType &&InValue)
Definition Map.h:1131
FORCEINLINE ValueType & AddUnique(const KeyType &InKey, ValueType &&InValue)
Definition Map.h:1115
TMultiMap(TMultiMap &&)=default
FORCEINLINE TPairInitializer(KeyInitType InKey, ValueInitType InValue)
Definition Map.h:30
operator TPair< KeyType, ValueType >() const
Definition Map.h:45
TRValueToLValueReference< ValueInitType >::Type Value
Definition Map.h:27
TRValueToLValueReference< KeyInitType >::Type Key
Definition Map.h:26
FORCEINLINE TPairInitializer(const TPair< KeyType, ValueType > &Pair)
Definition Map.h:38
FORCEINLINE bool operator()(T &&A, T &&B) const
TReversePredicate(const PredicateType &InPredicate)
const PredicateType & Predicate
static void Merge(T *First, const int32 Mid, const int32 Num, const PREDICATE_CLASS &Predicate)
Definition Sorting.h:245
static FORCEINLINE uint32 GetNumberOfHashBuckets(uint32 NumHashedElements)
InSparseArrayAllocator SparseArrayAllocator
FORCEINLINE void UpdateWeakReferenceInternal(TSharedRef< SharedRefType, Mode > const *InSharedRef, OtherType *InObject) const
TSharedRef< ObjectType, Mode > AsShared()
FORCEINLINE TSharedFromThis & operator=(TSharedFromThis const &)
static FORCEINLINE TSharedRef< OtherType const, Mode > SharedThis(const OtherType *ThisPtr)
static FORCEINLINE TSharedRef< OtherType, Mode > SharedThis(OtherType *ThisPtr)
TWeakPtr< ObjectType, Mode > WeakThis
TSharedFromThis(TSharedFromThis const &)
FORCEINLINE void UpdateWeakReferenceInternal(TSharedPtr< SharedPtrType, Mode > const *InSharedPtr, OtherType *InObject) const
TSharedRef< ObjectType const, Mode > AsShared() const
FORCEINLINE bool DoesSharedInstanceExist() const
FORCEINLINE const int32 GetSharedReferenceCount() const
FORCEINLINE ObjectType * operator->() const
FORCEINLINE TSharedPtr(OtherType *InObject, DeleterType &&InDeleter)
SharedPointerInternals::FSharedReferencer< Mode > SharedReferenceCount
FORCEINLINE FMakeReferenceTo< ObjectType >::Type operator*() const
FORCEINLINE TSharedPtr(OtherType *InObject)
FORCEINLINE TSharedPtr(SharedPointerInternals::FNullTag *=nullptr)
FORCEINLINE TSharedPtr(TSharedPtr< OtherType, Mode > const &InSharedPtr)
FORCEINLINE TSharedPtr(TSharedPtr< OtherType, Mode > const &InSharedPtr, SharedPointerInternals::FStaticCastTag)
FORCEINLINE TSharedPtr & operator=(SharedPointerInternals::FNullTag *)
FORCEINLINE const bool IsValid() const
FORCEINLINE TSharedPtr(TSharedPtr< OtherType, Mode > &&OtherSharedPtr, ObjectType *InObject)
FORCEINLINE TSharedPtr(TSharedPtr< OtherType, Mode > const &OtherSharedPtr, ObjectType *InObject)
friend uint32 GetTypeHash(const TSharedPtr< ObjectType, Mode > &InSharedPtr)
FORCEINLINE const bool IsUnique() const
FORCEINLINE TSharedPtr(TSharedPtr< OtherType, Mode > const &InSharedPtr, SharedPointerInternals::FConstCastTag)
FORCEINLINE TSharedPtr(TSharedRef< OtherType, Mode > const &InSharedRef)
FORCEINLINE void Reset()
FORCEINLINE TSharedPtr & operator=(SharedPointerInternals::FRawPtrProxy< OtherType > const &InRawPtrProxy)
FORCEINLINE TSharedPtr & operator=(TSharedPtr &&InSharedPtr)
FORCEINLINE TSharedPtr(TSharedPtr &&InSharedPtr)
FORCEINLINE TSharedRef< ObjectType, Mode > ToSharedRef() const
FORCEINLINE TSharedPtr(TSharedRef< OtherType, Mode > const &OtherSharedRef, ObjectType *InObject)
FORCEINLINE TSharedPtr(SharedPointerInternals::FRawPtrProxy< OtherType > const &InRawPtrProxy)
FORCEINLINE TSharedPtr(TSharedPtr const &InSharedPtr)
ObjectType * Object
FORCEINLINE ObjectType * Get() const
FORCEINLINE TSharedPtr & operator=(TSharedPtr const &InSharedPtr)
FORCEINLINE TSharedPtr(TWeakPtr< OtherType, Mode > const &InWeakPtr)
FORCEINLINE TSharedRef & operator=(TSharedRef &&InSharedRef)
FORCEINLINE TSharedRef(TSharedPtr< OtherType, Mode > &&InSharedPtr)
FORCEINLINE ObjectType & Get() const
void Init(OtherType *InObject)
FORCEINLINE ObjectType * operator->() const
FORCEINLINE const bool IsValid() const
FORCEINLINE TSharedRef(TSharedRef &&InSharedRef)
FORCEINLINE TSharedRef & operator=(TSharedRef const &InSharedRef)
FORCEINLINE TSharedRef(OtherType *InObject, DeleterType &&InDeleter)
FORCEINLINE TSharedRef(TSharedPtr< OtherType, Mode > const &InSharedPtr)
FORCEINLINE const bool IsUnique() const
FORCEINLINE TSharedRef(TSharedRef const &InSharedRef)
FORCEINLINE ObjectType & operator*() const
FORCEINLINE TSharedRef(TSharedRef< OtherType, Mode > const &InSharedRef, SharedPointerInternals::FConstCastTag)
FORCEINLINE TSharedRef(SharedPointerInternals::FRawPtrProxy< OtherType > const &InRawPtrProxy)
FORCEINLINE const int32 GetSharedReferenceCount() const
FORCEINLINE TSharedRef(OtherType *InObject)
SharedPointerInternals::FSharedReferencer< Mode > SharedReferenceCount
FORCEINLINE TSharedRef(TSharedRef< OtherType, Mode > const &InSharedRef)
FORCEINLINE TSharedRef(TSharedRef< OtherType, Mode > const &OtherSharedRef, ObjectType *InObject)
friend uint32 GetTypeHash(const TSharedRef< ObjectType, Mode > &InSharedRef)
ObjectType * Object
FORCEINLINE TSharedRef & operator=(SharedPointerInternals::FRawPtrProxy< OtherType > const &InRawPtrProxy)
FORCEINLINE TSharedRef(TSharedRef< OtherType, Mode > const &InSharedRef, SharedPointerInternals::FStaticCastTag)
FORCEINLINE TSharedRef(ObjectType *InObject, SharedPointerInternals::FReferenceControllerBase *InSharedReferenceCount)
TDereferenceWrapper< KeyType, PREDICATE_CLASS > Predicate
Definition Map.h:818
FORCEINLINE FKeyComparisonClass(const PREDICATE_CLASS &InPredicate)
Definition Map.h:822
FORCEINLINE bool operator()(const typename Super::ElementType &A, const typename Super::ElementType &B) const
Definition Map.h:826
FORCEINLINE FValueComparisonClass(const PREDICATE_CLASS &InPredicate)
Definition Map.h:840
TDereferenceWrapper< ValueType, PREDICATE_CLASS > Predicate
Definition Map.h:836
FORCEINLINE bool operator()(const typename Super::ElementType &A, const typename Super::ElementType &B) const
Definition Map.h:844
TSortableMapBase & operator=(TSortableMapBase< KeyType, ValueType, OtherSetAllocator, KeyFuncs > &&Other)
Definition Map.h:777
TSortableMapBase & operator=(TSortableMapBase &&)=default
FORCEINLINE void ValueSort(const PREDICATE_CLASS &Predicate)
Definition Map.h:807
TSortableMapBase(TSortableMapBase &&)=default
TSortableMapBase(const TSortableMapBase &)=default
TSortableMapBase(TSortableMapBase< KeyType, ValueType, OtherSetAllocator, KeyFuncs > &&Other)
Definition Map.h:763
TSortableMapBase()=default
TSortableMapBase & operator=(const TSortableMapBase &)=default
FORCEINLINE void KeySort(const PREDICATE_CLASS &Predicate)
Definition Map.h:797
TMapBase< KeyType, ValueType, SetAllocator, KeyFuncs > Super
Definition Map.h:741
TSortableMapBase & operator=(const TSortableMapBase< KeyType, ValueType, OtherSetAllocator, KeyFuncs > &Other)
Definition Map.h:785
TSortableMapBase(const TSortableMapBase< KeyType, ValueType, OtherSetAllocator, KeyFuncs > &Other)
Definition Map.h:770
ObjectType * Object
friend uint32 GetTypeHash(const TWeakPtr< ObjectType, Mode > &InWeakPtr)
FORCEINLINE TSharedPtr< ObjectType, Mode > Pin() const
FORCEINLINE const bool IsValid() const
SharedPointerInternals::FWeakReferencer< Mode > WeakReferenceCount
FORCEINLINE TWeakPtr & operator=(TWeakPtr< OtherType, Mode > const &InWeakPtr)
FORCEINLINE void Reset()
FORCEINLINE TWeakPtr(TWeakPtr< OtherType, Mode > const &InWeakPtr)
FORCEINLINE TWeakPtr(TSharedRef< OtherType, Mode > const &InSharedRef)
FORCEINLINE TWeakPtr & operator=(TWeakPtr< OtherType, Mode > &&InWeakPtr)
FORCEINLINE TWeakPtr & operator=(TSharedRef< OtherType, Mode > const &InSharedRef)
FORCEINLINE TWeakPtr(TWeakPtr< OtherType, Mode > &&InWeakPtr)
FORCEINLINE TWeakPtr & operator=(TWeakPtr &&InWeakPtr)
FORCEINLINE TWeakPtr(TWeakPtr &&InWeakPtr)
FORCEINLINE TWeakPtr & operator=(TSharedPtr< OtherType, Mode > const &InSharedPtr)
FORCEINLINE TWeakPtr(TWeakPtr const &InWeakPtr)
FORCEINLINE bool HasSameObject(const void *InOtherPtr) const
FORCEINLINE TWeakPtr(SharedPointerInternals::FNullTag *=nullptr)
FORCEINLINE TWeakPtr & operator=(TWeakPtr const &InWeakPtr)
FORCEINLINE TWeakPtr & operator=(SharedPointerInternals::FNullTag *)
FORCEINLINE TWeakPtr(TSharedPtr< OtherType, Mode > const &InSharedPtr)
ArgFormatter(BasicFormatter< Char > &formatter, FormatSpec &spec, const Char *fmt)
Definition format.h:2289
uint64_t types_
Definition format.h:1567
ArgList(ULongLong types, const internal::Value *values)
Definition format.h:1591
internal::Arg::Type type(unsigned index) const
Definition format.h:1578
friend class internal::ArgMap
Definition format.h:1583
@ MAX_PACKED_ARGS
Definition format.h:1587
internal::Arg operator[](unsigned index) const
Definition format.h:1599
static internal::Arg::Type type(uint64_t types, unsigned index)
Definition format.h:1624
uint64_t types() const
Definition format.h:1596
ArgList(ULongLong types, const internal::Arg *args)
Definition format.h:1593
void report_unhandled_arg()
Definition format.h:1664
Result visit_custom(Arg::CustomValue)
Definition format.h:1744
Result visit(const Arg &arg)
Definition format.h:1756
Result visit_double(double value)
Definition format.h:1708
Result visit_uint(unsigned value)
Definition format.h:1682
Result visit_any_int(T)
Definition format.h:1703
Result visit_cstring(const char *)
Definition format.h:1724
Result visit_pointer(const void *)
Definition format.h:1739
Result visit_unhandled_arg()
Definition format.h:1666
Result visit_any_double(T)
Definition format.h:1719
Result visit_long_double(long double value)
Definition format.h:1713
Result visit_long_long(LongLong value)
Definition format.h:1677
Result visit_wstring(Arg::StringValue< wchar_t >)
Definition format.h:1734
Result visit_string(Arg::StringValue< char >)
Definition format.h:1729
Result visit_ulong_long(ULongLong value)
Definition format.h:1687
Result visit_int(int value)
Definition format.h:1672
Result visit_bool(bool value)
Definition format.h:1692
Result visit_char(int value)
Definition format.h:1697
BasicFormatter< Char, Impl > & formatter_
Definition format.h:2260
const Char * format_
Definition format.h:2261
BasicArgFormatter(BasicFormatter< Char, Impl > &formatter, Spec &spec, const Char *fmt)
Definition format.h:2272
void visit_custom(internal::Arg::CustomValue c)
Definition format.h:2278
BasicArrayWriter(Char *array, std::size_t size)
Definition format.h:3353
internal::FixedBuffer< Char > buffer_
Definition format.h:3344
BasicArrayWriter(Char(&array)[SIZE])
Definition format.h:3363
const Char * data_
Definition format.h:660
const Char * c_str() const
Definition format.h:677
BasicCStringRef(const Char *s)
Definition format.h:664
BasicFormatter(const ArgList &args, BasicWriter< Char > &w)
Definition format.h:2328
void format(BasicCStringRef< Char > format_str)
Definition format.h:4012
internal::ArgMap< Char > map_
Definition format.h:2304
internal::Arg get_arg(BasicStringRef< Char > arg_name, const char *&error)
Definition format.h:3800
const Char * format(const Char *&format_str, const internal::Arg &arg)
Definition format.h:3840
BasicWriter< Char > & writer()
Definition format.h:2332
internal::Arg parse_arg_name(const Char *&s)
Definition format.h:3825
BasicWriter< Char > & writer_
Definition format.h:2303
internal::Arg parse_arg_index(const Char *&s)
Definition format.h:3813
const Char * data_
Definition format.h:539
BasicStringRef(const Char *s)
Definition format.h:552
std::size_t size() const
Definition format.h:598
friend bool operator!=(BasicStringRef lhs, BasicStringRef rhs)
Definition format.h:612
friend bool operator<(BasicStringRef lhs, BasicStringRef rhs)
Definition format.h:615
const Char * data() const
Definition format.h:595
friend bool operator<=(BasicStringRef lhs, BasicStringRef rhs)
Definition format.h:618
friend bool operator>(BasicStringRef lhs, BasicStringRef rhs)
Definition format.h:621
std::basic_string< Char > to_string() const
Definition format.h:590
friend bool operator>=(BasicStringRef lhs, BasicStringRef rhs)
Definition format.h:624
BasicStringRef(const Char *s, std::size_t size)
Definition format.h:544
friend bool operator==(BasicStringRef lhs, BasicStringRef rhs)
Definition format.h:609
std::size_t size_
Definition format.h:540
int compare(BasicStringRef other) const
Definition format.h:601
static CharPtr fill_padding(CharPtr buffer, unsigned total_size, std::size_t content_size, wchar_t fill)
Definition format.h:2926
void write_decimal(Int value)
Definition format.h:2647
virtual ~BasicWriter()
Definition format.h:2722
void append_float_length(Char *&, T)
Definition format.h:2702
void write_int(T value, Spec spec)
Definition format.h:3006
static Char * get(Char *p)
Definition format.h:2620
Buffer< Char > & buffer_
Definition format.h:2610
friend class BasicPrintfArgFormatter
Definition format.h:2708
BasicWriter(Buffer< Char > &b)
Definition format.h:2714
CharPtr prepare_int_buffer(unsigned num_digits, const Spec &spec, const char *prefix, unsigned prefix_size)
Definition format.h:2943
Char * write_unsigned_decimal(UInt value, unsigned prefix_size=0)
Definition format.h:2638
void append_float_length(Char *&format_ptr, long double)
Definition format.h:2697
void operator<<(typename internal::WCharHelper< const wchar_t *, Char >::Unsupported)
std::size_t size() const
Definition format.h:2727
CharPtr grow_buffer(std::size_t n)
Definition format.h:2630
void write_str(const internal::Arg::StringValue< StrChar > &str, const Spec &spec)
Definition format.h:2905
const Char * data() const FMT_NOEXCEPT
Definition format.h:2733
std::basic_string< Char > str() const
Definition format.h:2751
void clear() FMT_NOEXCEPT
Definition format.h:2875
CharPtr write_str(const StrChar *s, std::size_t size, const AlignSpec &spec)
Definition format.h:2882
void write(BasicCStringRef< Char > format, ArgList args)
Definition format.h:2780
Buffer< Char > & buffer() FMT_NOEXCEPT
Definition format.h:2877
CharPtr prepare_int_buffer(unsigned num_digits, const EmptySpec &, const char *prefix, unsigned prefix_size)
Definition format.h:2659
void operator<<(typename internal::WCharHelper< wchar_t, Char >::Unsupported)
internal::CharTraits< Char >::CharPtr CharPtr
Definition format.h:2614
void write_double(T value, const Spec &spec)
Definition format.h:3099
const Char * c_str() const
Definition format.h:2739
void resize(std::size_t new_size)
Definition format.h:770
std::size_t size() const
Definition format.h:762
std::size_t size_
Definition format.h:744
void push_back(const T &value)
Definition format.h:788
void clear() FMT_NOEXCEPT
Definition format.h:786
virtual ~Buffer()
Definition format.h:759
void append(const U *begin, const U *end)
Definition format.h:804
void reserve(std::size_t capacity)
Definition format.h:781
std::size_t capacity_
Definition format.h:745
virtual void grow(std::size_t size)=0
Buffer(T *ptr=FMT_NULL, std::size_t capacity=0)
Definition format.h:747
T & operator[](std::size_t index)
Definition format.h:798
std::size_t capacity() const
Definition format.h:765
const T & operator[](std::size_t index) const
Definition format.h:799
FormatError(const FormatError &ferr)
Definition format.h:688
FMT_API ~FormatError() FMT_DTOR_NOEXCEPT FMT_OVERRIDE
FormatError(CStringRef message)
Definition format.h:686
const char * data() const
Definition format.h:3537
char * str_
Definition format.h:3486
FormatInt(unsigned long value)
Definition format.h:3525
void FormatSigned(LongLong value)
Definition format.h:3510
char * format_decimal(ULongLong value)
Definition format.h:3489
FormatInt(unsigned value)
Definition format.h:3524
std::string str() const
Definition format.h:3553
std::size_t size() const
Definition format.h:3529
FormatInt(int value)
Definition format.h:3521
FormatInt(ULongLong value)
Definition format.h:3526
char buffer_[BUFFER_SIZE]
Definition format.h:3485
const char * c_str() const
Definition format.h:3543
FormatInt(LongLong value)
Definition format.h:3523
FormatInt(long value)
Definition format.h:3522
T value() const
Definition format.h:1879
IntFormatSpec(T val, const SpecT &spec=SpecT())
Definition format.h:1876
StrFormatSpec(const Char *str, unsigned width, FillChar fill)
Definition format.h:1890
const Char * str_
Definition format.h:1886
const Char * str() const
Definition format.h:1895
int error_code() const
Definition format.h:2566
SystemError(int error_code, CStringRef message)
Definition format.h:2558
FMT_API ~SystemError() FMT_DTOR_NOEXCEPT FMT_OVERRIDE
FMT_API void init(int err_code, CStringRef format_str, ArgList args)
Definition format.cc:225
void visit_wstring(internal::Arg::StringValue< Char > value)
Definition format.h:2182
void visit_string(internal::Arg::StringValue< char > value)
Definition format.h:2176
BasicWriter< Char > & writer_
Definition format.h:2090
void visit_pointer(const void *value)
Definition format.h:2186
BasicWriter< Char > & writer()
Definition format.h:2105
void visit_cstring(const char *value)
Definition format.h:2169
void write(const char *value)
Definition format.h:2114
void write_pointer(const void *p)
Definition format.h:2095
void visit_bool(bool value)
Definition format.h:2131
ArgFormatterBase(BasicWriter< Char > &w, Spec &s)
Definition format.h:2122
MapType::value_type Pair
Definition format.h:2024
void init(const ArgList &args)
Definition format.h:2043
static Char cast(int value)
Definition format.h:916
static char convert(char value)
Definition format.h:929
static char convert(wchar_t)
static wchar_t convert(char value)
Definition format.h:949
static wchar_t convert(wchar_t value)
Definition format.h:950
bool check_no_auto_index(const char *&error)
Definition format.h:2223
FormatterBase(const ArgList &args)
Definition format.h:2204
const ArgList & args() const
Definition format.h:2202
void write(BasicWriter< Char > &w, const Char *start, const Char *end)
Definition format.h:2233
Arg next_arg(const char *&error)
Definition format.h:2210
Arg get_arg(unsigned arg_index, const char *&error)
Definition format.h:2219
FMT_API Arg do_get_arg(unsigned arg_index, const char *&error)
MakeArg(const T &value)
Definition format.h:1530
MakeValue(unsigned long value)
Definition format.h:1420
MakeValue(typename WCharHelper< wchar_t, Char >::Unsupported)
MakeValue(typename WCharHelper< WStringRef, Char >::Unsupported)
static uint64_t type(long)
Definition format.h:1416
MakeValue(typename WCharHelper< const wchar_t *, Char >::Unsupported)
MakeValue(typename WCharHelper< wchar_t *, Char >::Unsupported)
Formatter::Char Char
Definition format.h:1345
void set_string(WStringRef str)
Definition format.h:1378
static uint64_t type(unsigned long)
Definition format.h:1426
void set_string(StringRef str)
Definition format.h:1373
MakeValue(const T *value)
static void format_custom_arg(void *formatter, const void *arg, void *format_str_ptr)
Definition format.h:1385
MakeValue(long value)
Definition format.h:1408
RuntimeError(const RuntimeError &rerr)
Definition format.h:1554
FMT_API ~RuntimeError() FMT_DTOR_NOEXCEPT FMT_OVERRIDE
ThousandsSep(fmt::StringRef sep)
Definition format.h:1068
void operator()(Char *&buffer)
Definition format.h:1071
void _set_formatter(spdlog::formatter_ptr msg_formatter) override
void format(details::log_msg &msg) override
std::unique_ptr< details::async_log_helper > _async_log_helper
pattern_formatter(const pattern_formatter &)=delete
void _sink_it(details::log_msg &msg) override
std::tm get_time(details::log_msg &msg)
pattern_formatter & operator=(const pattern_formatter &)=delete
void handle_flag(char flag)
const std::string _pattern
Definition formatter.h:37
const pattern_time_type _pattern_time
Definition formatter.h:38
virtual log_err_handler error_handler() override
void flush() override
std::vector< std::unique_ptr< details::flag_formatter > > _formatters
Definition formatter.h:39
void format(details::log_msg &msg, const std::tm &tm_time) override
void format(details::log_msg &msg, const std::tm &tm_time) override
const std::chrono::seconds cache_refresh
void format(details::log_msg &msg, const std::tm &tm_time) override
z_formatter & operator=(const z_formatter &)=delete
int get_cached_offset(const log_msg &msg, const std::tm &tm_time)
void format(details::log_msg &msg, const std::tm &) override
z_formatter(const z_formatter &)=delete
void format(details::log_msg &msg, const std::tm &tm_time) override
static void sleep_or_yield(const spdlog::log_clock::time_point &now, const log_clock::time_point &last_op_time)
void log(const details::log_msg &msg)
const std::function< void()> _worker_teardown_cb
void push_msg(async_msg &&new_msg)
void handle_flush_interval(log_clock::time_point &now, log_clock::time_point &last_flush)
async_log_helper(formatter_ptr formatter, const std::vector< sink_ptr > &sinks, size_t queue_size, const log_err_handler err_handler, const async_overflow_policy overflow_policy=async_overflow_policy::block_retry, const std::function< void()> &worker_warmup_cb=nullptr, const std::chrono::milliseconds &flush_interval_ms=std::chrono::milliseconds::zero(), const std::function< void()> &worker_teardown_cb=nullptr)
const async_overflow_policy _overflow_policy
std::vector< std::shared_ptr< sinks::sink > > _sinks
const std::function< void()> _worker_warmup_cb
bool process_next_msg(log_clock::time_point &last_pop, log_clock::time_point &last_flush)
const std::chrono::milliseconds _flush_interval_ms
void set_error_handler(spdlog::log_err_handler err_handler)
void format(details::log_msg &msg, const std::tm &tm_time) override
void reopen(bool truncate)
Definition file_helper.h:64
const filename_t & filename() const
file_helper(const file_helper &)=delete
void write(const log_msg &msg)
Definition file_helper.h:86
file_helper & operator=(const file_helper &)=delete
virtual void format(details::log_msg &msg, const std::tm &tm_time)=0
void format(details::log_msg &msg, const std::tm &) override
mpmc_bounded_queue(mpmc_bounded_queue const &)=delete
void operator=(mpmc_bounded_queue const &)=delete
void set_async_mode(size_t q_size, const async_overflow_policy overflow_policy, const std::function< void()> &worker_warmup_cb, const std::chrono::milliseconds &flush_interval_ms, const std::function< void()> &worker_teardown_cb)
Definition registry.h:163
std::function< void()> _worker_warmup_cb
Definition registry.h:204
std::function< void()> _worker_teardown_cb
Definition registry.h:206
void formatter(formatter_ptr f)
Definition registry.h:132
std::shared_ptr< async_logger > create_async(const std::string &logger_name, size_t queue_size, const async_overflow_policy overflow_policy, const std::function< void()> &worker_warmup_cb, const std::chrono::milliseconds &flush_interval_ms, const std::function< void()> &worker_teardown_cb, const It &sinks_begin, const It &sinks_end)
Definition registry.h:75
void throw_if_exists(const std::string &logger_name)
Definition registry.h:191
void drop(const std::string &logger_name)
Definition registry.h:101
std::shared_ptr< logger > create(const std::string &logger_name, sink_ptr sink)
Definition registry.h:117
level::level_enum _level
Definition registry.h:199
std::chrono::milliseconds _flush_interval_ms
Definition registry.h:205
void apply_all(std::function< void(std::shared_ptr< logger >)> fun)
Definition registry.h:94
std::shared_ptr< async_logger > create_async(const std::string &logger_name, size_t queue_size, const async_overflow_policy overflow_policy, const std::function< void()> &worker_warmup_cb, const std::chrono::milliseconds &flush_interval_ms, const std::function< void()> &worker_teardown_cb, sinks_init_list sinks)
Definition registry.h:122
void register_logger(std::shared_ptr< logger > logger)
Definition registry.h:33
log_err_handler _err_handler
Definition registry.h:200
void set_error_handler(log_err_handler handler)
Definition registry.h:156
std::shared_ptr< logger > create(const std::string &logger_name, sinks_init_list sinks)
Definition registry.h:112
void set_pattern(const std::string &pattern)
Definition registry.h:140
registry_t< Mutex > & operator=(const registry_t< Mutex > &)=delete
void set_level(level::level_enum log_level)
Definition registry.h:148
std::shared_ptr< logger > get(const std::string &logger_name)
Definition registry.h:42
std::shared_ptr< logger > create(const std::string &logger_name, const It &sinks_begin, const It &sinks_end)
Definition registry.h:50
std::shared_ptr< async_logger > create_async(const std::string &logger_name, size_t queue_size, const async_overflow_policy overflow_policy, const std::function< void()> &worker_warmup_cb, const std::chrono::milliseconds &flush_interval_ms, const std::function< void()> &worker_teardown_cb, sink_ptr sink)
Definition registry.h:127
async_overflow_policy _overflow_policy
Definition registry.h:203
static registry_t< Mutex > & instance()
Definition registry.h:180
void format(details::log_msg &msg, const std::tm &) override
virtual ~formatter()
Definition formatter.h:24
virtual void format(details::log_msg &msg)=0
const std::vector< sink_ptr > & sinks() const
std::atomic< time_t > _last_err_time
Definition logger.h:105
void log(level::level_enum lvl, const T &)
void log(level::level_enum lvl, const char *fmt, const Args &... args)
Definition logger_impl.h:61
log_err_handler _err_handler
Definition logger.h:104
void critical(const T &)
void debug(const char *fmt, const Arg1 &, const Args &... args)
virtual ~logger()
void trace(const char *fmt, const Arg1 &, const Args &... args)
bool should_log(level::level_enum) const
void log(level::level_enum lvl, const char *msg)
Definition logger_impl.h:88
void flush_on(level::level_enum log_level)
virtual log_err_handler error_handler()
spdlog::level_t _flush_level
Definition logger.h:103
void set_formatter(formatter_ptr)
Definition logger_impl.h:50
void warn(const char *fmt, const Arg1 &, const Args &... args)
void info(const char *fmt, const Arg1 &, const Args &... args)
void warn(const T &)
void error(const char *fmt, const Arg1 &, const Args &... args)
const std::string _name
Definition logger.h:99
virtual void flush()
spdlog::level_t _level
Definition logger.h:102
void trace(const T &)
logger & operator=(const logger &)=delete
std::vector< sink_ptr > _sinks
Definition logger.h:100
logger(const logger &)=delete
void error(const T &)
std::atomic< size_t > _msg_counter
Definition logger.h:106
void debug(const T &)
bool _should_flush_on(const details::log_msg &)
const std::string & name() const
virtual void _sink_it(details::log_msg &)
void critical(const char *fmt, const Arg1 &, const Args &... args)
virtual void _set_formatter(formatter_ptr)
void info(const T &)
formatter_ptr _formatter
Definition logger.h:101
void _incr_msg_counter(details::log_msg &msg)
void set_level(level::level_enum)
daily_file_sink(const filename_t &base_filename, int rotation_hour, int rotation_minute)
Definition file_sinks.h:197
details::file_helper _file_helper
Definition file_sinks.h:54
void _sink_it(const details::log_msg &msg) override
void set_force_flush(bool force_flush)
Definition file_sinks.h:37
static std::shared_ptr< MyType > instance()
simple_file_sink(const filename_t &filename, bool truncate=false)
Definition file_sinks.h:32
std::chrono::system_clock::time_point _next_rotation_tp()
Definition file_sinks.h:228
std::chrono::system_clock::time_point _rotation_tp
Definition file_sinks.h:246
rotating_file_sink(const filename_t &base_filename, std::size_t max_size, std::size_t max_files)
Definition file_sinks.h:68
static filename_t calc_filename(const filename_t &filename, std::size_t index)
Definition file_sinks.h:82
virtual void _flush()=0
virtual ~base_sink()=default
base_sink & operator=(const base_sink &)=delete
void log(const details::log_msg &msg) SPDLOG_FINAL override
Definition base_sink.h:34
void flush() SPDLOG_FINAL override
Definition base_sink.h:39
virtual void _sink_it(const details::log_msg &msg)=0
base_sink(const base_sink &)=delete
void set_level(level::level_enum log_level)
Definition sink.h:41
bool should_log(level::level_enum msg_level) const
Definition sink.h:36
virtual void log(const details::log_msg &msg)=0
level_t _level
Definition sink.h:32
virtual ~sink()
Definition sink.h:23
virtual void flush()=0
std::string _msg
Definition common.h:147
const char * what() const SPDLOG_NOEXCEPT override
Definition common.h:142
#define SPDLOG_NOEXCEPT
Definition common.h:28
#define SPDLOG_FINAL
Definition common.h:36
#define SPDLOG_CONSTEXPR
Definition common.h:29
#define SPDLOG_LEVEL_NAMES
Definition common.h:86
Definition Reverse.h:20
FORCEINLINE void Sort(RangeType &Range)
Definition Sort.h:16
FORCEINLINE int32 LowerBoundBy(RangeType &Range, const ValueType &Value, ProjectionType Projection, SortPredicateType SortPredicate)
FORCEINLINE int32 LowerBoundBy(RangeType &Range, const ValueType &Value, ProjectionType Projection)
FORCEINLINE void SortBy(RangeType &Range, ProjectionType Proj)
Definition Sort.h:40
FORCEINLINE int32 UpperBoundBy(RangeType &Range, const ValueType &Value, ProjectionType Projection)
FORCEINLINE int32 UpperBound(RangeType &Range, const ValueType &Value)
FORCEINLINE void Sort(RangeType &Range, PredicateType Pred)
Definition Sort.h:28
FORCEINLINE void IntroSort(RangeType &Range)
Definition IntroSort.h:137
FORCEINLINE int32 BinarySearchBy(RangeType &Range, const ValueType &Value, ProjectionType Projection)
FORCEINLINE void IntroSortBy(RangeType &Range, ProjectionType Projection, PredicateType Predicate)
Definition IntroSort.h:174
FORCEINLINE void IntroSort(RangeType &Range, PredicateType Predicate)
Definition IntroSort.h:149
FORCEINLINE int32 BinarySearchBy(RangeType &Range, const ValueType &Value, ProjectionType Projection, SortPredicateType SortPredicate)
FORCEINLINE int32 UpperBoundBy(RangeType &Range, const ValueType &Value, ProjectionType Projection, SortPredicateType SortPredicate)
FORCEINLINE void IntroSortBy(RangeType &Range, ProjectionType Projection)
Definition IntroSort.h:161
FORCEINLINE int32 BinarySearch(RangeType &Range, const ValueType &Value, SortPredicateType SortPredicate)
FORCEINLINE int32 BinarySearch(RangeType &Range, const ValueType &Value)
FORCEINLINE int32 UpperBound(RangeType &Range, const ValueType &Value, SortPredicateType SortPredicate)
FORCEINLINE void SortBy(RangeType &Range, ProjectionType Proj, PredicateType Pred)
Definition Sort.h:53
FORCEINLINE int32 LowerBound(RangeType &Range, const ValueType &Value, SortPredicateType SortPredicate)
FORCEINLINE int32 LowerBound(RangeType &Range, const ValueType &Value)
FORCEINLINE bool HeapIsLeaf(int32 Index, int32 Count)
Definition BinaryHeap.h:27
FORCEINLINE int32 HeapGetParentIndex(int32 Index)
Definition BinaryHeap.h:38
void IntroSortInternal(T *First, SIZE_T Num, ProjectionType Projection, PredicateType Predicate)
Definition IntroSort.h:26
FORCEINLINE int32 HeapGetLeftChildIndex(int32 Index)
Definition BinaryHeap.h:16
FORCEINLINE int32 HeapSiftUp(RangeValueType *Heap, int32 RootIndex, int32 NodeIndex, const ProjectionType &Projection, const PredicateType &Predicate)
Definition BinaryHeap.h:88
FORCEINLINE void HeapSiftDown(RangeValueType *Heap, int32 Index, const int32 Count, const ProjectionType &Projection, const PredicateType &Predicate)
Definition BinaryHeap.h:53
FORCEINLINE void HeapifyInternal(RangeValueType *First, SIZE_T Num, ProjectionType Projection, PredicateType Predicate)
Definition BinaryHeap.h:115
FORCEINLINE SIZE_T UpperBoundInternal(RangeValueType *First, const SIZE_T Num, const PredicateValueType &Value, ProjectionType Projection, SortPredicateType SortPredicate)
FORCEINLINE SIZE_T LowerBoundInternal(RangeValueType *First, const SIZE_T Num, const PredicateValueType &Value, ProjectionType Projection, SortPredicateType SortPredicate)
void HeapSortInternal(RangeValueType *First, SIZE_T Num, ProjectionType Projection, PredicateType Predicate)
Definition BinaryHeap.h:132
IApiUtils & GetApiUtils()
Definition ApiUtils.cpp:99
@ CaseSensitive
Definition FString.h:28
@ FromStart
Definition FString.h:41
void FromString(float &OutValue, const TCHAR *Buffer)
Definition FString.h:1845
void FromString(int8 &OutValue, const TCHAR *Buffer)
Definition FString.h:1837
void FromString(uint8 &OutValue, const TCHAR *Buffer)
Definition FString.h:1841
void FromString(uint32 &OutValue, const TCHAR *Buffer)
Definition FString.h:1843
TEnableIf< TIsCharType< CharType >::Value, FString >::Type ToString(const CharType *Ptr)
Definition FString.h:1851
void FromString(int32 &OutValue, const TCHAR *Buffer)
Definition FString.h:1839
void FromString(uint64 &OutValue, const TCHAR *Buffer)
Definition FString.h:1844
FString ToSanitizedString(const T &Value)
Definition FString.h:1873
void FromString(FString &OutValue, const TCHAR *Buffer)
Definition FString.h:1847
void FromString(double &OutValue, const TCHAR *Buffer)
Definition FString.h:1846
void FromString(uint16 &OutValue, const TCHAR *Buffer)
Definition FString.h:1842
static TEnableIf< TIsArithmetic< T >::Value, bool >::Type TryParseString(T &OutValue, const TCHAR *Buffer)
Definition FString.h:1882
void FromString(int16 &OutValue, const TCHAR *Buffer)
Definition FString.h:1838
FString ToString(bool Value)
Definition FString.h:1856
FORCEINLINE FString ToString(FString &&Str)
Definition FString.h:1861
FORCEINLINE FString ToString(const FString &Str)
Definition FString.h:1866
void FromString(int64 &OutValue, const TCHAR *Buffer)
Definition FString.h:1840
FORCEINLINE auto DereferenceIfNecessary(CallableType &&Callable) -> typename TEnableIf< TPointerIsConvertibleFromTo< typename TDecay< CallableType >::Type, typename TDecay< BaseType >::Type >::Value, decltype((CallableType &&) Callable)>::Type
Definition Invoke.h:13
FORCEINLINE TSharedRef< ObjectType, Mode > MakeSharedRef(ObjectType *InObject, SharedPointerInternals::FReferenceControllerBase *InSharedReferenceCount)
bool MatchesWildcardRecursive(const TCHAR *Target, int32 TargetLength, const TCHAR *Wildcard, int32 WildcardLength)
Definition FString.h:1933
No & convert(...)
unsigned parse_nonnegative_int(const Char *&s)
Definition format.h:3758
T * make_ptr(T *ptr, std::size_t)
Definition format.h:728
bool is_name_start(Char c)
Definition format.h:3751
Yes & convert(fmt::ULongLong)
bool is_negative(T value)
Definition format.h:982
DummyInt _finite(...)
Definition format.h:421
char Yes[1]
Definition format.h:1230
fmt::StringRef thousands_sep(...)
Definition format.h:1310
DummyInt isinf(...)
Definition format.h:420
DummyInt signbit(...)
Definition format.h:418
DummyInt _ecvt_s(...)
Definition format.h:419
void require_numeric_argument(const Arg &arg, char spec)
Definition format.h:3779
MakeUnsigned< Int >::Type to_unsigned(Int value)
Definition format.h:711
uint64_t make_type()
Definition format.h:2361
void format_decimal(Char *buffer, UInt value, unsigned num_digits)
Definition format.h:1109
@ INLINE_BUFFER_SIZE
Definition format.h:718
void check_sign(const Char *&s, const Arg &arg)
Definition format.h:3788
StringRef thousands_sep(LConv *lc, LConvCheck< char *LConv::*, &LConv::thousands_sep >=0)
Definition format.h:1305
DummyInt isnan(...)
Definition format.h:422
uint64_t make_type(const T &arg)
Definition format.h:2364
T const_check(T value)
Definition format.h:428
char No[2]
Definition format.h:1231
DummyInt _isnan(...)
Definition format.h:423
void format_arg(Formatter &,...)
Definition format.h:1334
void format_decimal(Char *buffer, UInt value, unsigned num_digits, ThousandsSep thousands_sep)
Definition format.h:1084
BasicData Data
Definition format.h:1016
Definition format.h:408
ArgJoin< wchar_t, It > join(It first, It last, const BasicCStringRef< wchar_t > &sep)
Definition format.h:4051
void format_decimal(char *&buffer, T value)
Definition format.h:3560
FMT_API void print(CStringRef format_str, ArgList args)
Definition format.cc:449
FMT_API void print_colored(Color c, CStringRef format, ArgList args)
Definition format.cc:453
ArgJoin< char, It > join(It first, It last, const BasicCStringRef< char > &sep)
Definition format.h:4046
@ HASH_FLAG
Definition format.h:1799
@ PLUS_FLAG
Definition format.h:1799
@ SIGN_FLAG
Definition format.h:1799
@ CHAR_FLAG
Definition format.h:1800
@ MINUS_FLAG
Definition format.h:1799
__pad6__
Definition format.cc:296
IntFormatSpec< int, TypeSpec< 'o'> > oct(int value)
BasicWriter< char > Writer
Definition format.h:496
StrFormatSpec< wchar_t > pad(const wchar_t *str, unsigned width, char fill=' ')
Definition format.h:2012
BasicArrayWriter< wchar_t > WArrayWriter
Definition format.h:3368
std::string format(CStringRef format_str, ArgList args)
Definition format.h:3443
BasicArrayWriter< char > ArrayWriter
Definition format.h:3367
IntFormatSpec< int, TypeSpec< 'b'> > bin(int value)
BasicMemoryWriter< wchar_t > WMemoryWriter
Definition format.h:3319
IntFormatSpec< int, TypeSpec< 'x'> > hex(int value)
BasicStringRef< wchar_t > WStringRef
Definition format.h:630
BasicMemoryWriter< char > MemoryWriter
Definition format.h:3318
void arg(WStringRef, const internal::NamedArg< Char > &) FMT_DELETED_OR_UNDEFINED
FMT_API void report_system_error(int error_code, StringRef message) FMT_NOEXCEPT
Definition format.cc:429
void format_arg(fmt::BasicFormatter< Char, ArgFormatter > &f, const Char *&format_str, const ArgJoin< Char, It > &e)
Definition format.h:4070
__pad1__
Definition format.cc:236
std::wstring format(WCStringRef format_str, ArgList args)
Definition format.h:3449
__pad2__
Definition format.cc:250
Alignment
Definition format.h:1793
@ ALIGN_LEFT
Definition format.h:1794
@ ALIGN_DEFAULT
Definition format.h:1794
@ ALIGN_NUMERIC
Definition format.h:1794
@ ALIGN_RIGHT
Definition format.h:1794
@ ALIGN_CENTER
Definition format.h:1794