HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
UT_SmallArray< T, MAX_BYTES > Class Template Reference

#include <UT_SmallArray.h>

+ Inheritance diagram for UT_SmallArray< T, MAX_BYTES >:

Public Member Functions

 UT_SmallArray ()
 Default construction. More...
 
 UT_SMALL_ARRAY_SIZE_ASSERT ()
 
 UT_SmallArray (const UT_Array< T > &copy)
 
 UT_Array (copy)
 
 UT_SmallArray (const UT_SmallArray &copy)
 
 UT_Array (copy)
 
 UT_SmallArray (UT_Array< T > &&movable) noexcept
 
- Public Member Functions inherited from UT_Array< T >
 UT_Array (const UT_Array< T > &a)
 
 UT_Array (UT_Array< T > &&a) noexcept
 Move constructor. Steals the working data from the original. More...
 
 UT_Array (const exint capacity, const exint size)
 Construct based on given capacity and size. More...
 
 UT_Array (const exint capacity=0)
 Construct based on given capacity with a size of 0. More...
 
 UT_Array (std::initializer_list< T > init)
 
 ~UT_Array ()
 
void swap (UT_Array< T > &other)
 
exint append ()
 
exint append (const T &t)
 
exint append (T &&t)
 
exint append (const T &t, bool check_dup)
 
void append (const T *pt, exint count)
 
void appendMultiple (const T &t, exint count)
 
exint insert (exint index)
 
exint insert (const T &t, exint i)
 
exint insert (T &&t, exint i)
 
template<typename... S>
exint emplace_back (S &&...s)
 
exint uniqueSortedInsert (const T &t, Comparator compare)
 
template<typename ComparatorBool = Less<T>, typename = IsBoolComp<ComparatorBool>>
exint uniqueSortedInsert (const T &t, ComparatorBool is_less={})
 
exint uniqueSortedInsert (T &&t, Comparator compare)
 
template<typename ComparatorBool = Less<T>, typename = IsBoolComp<ComparatorBool>>
exint uniqueSortedFind (const T &item, ComparatorBool is_less={}) const
 
exint uniqueSortedFind (const T &item, Comparator compare) const
 
template<typename ComparatorBool = Less<T>>
void merge (const UT_Array< T > &other, int direction, bool allow_dups, ComparatorBool is_less={})
 
template<typename ComparatorBool = Less<T>, typename = IsBoolComp<ComparatorBool>>
bool hasSortedSubset (const UT_Array< T > &other, ComparatorBool is_less={}) const
 
template<typename ComparatorBool = Less<T>, typename = IsBoolComp<ComparatorBool>>
void sortedUnion (const UT_Array< T > &other, ComparatorBool is_less={})
 
template<typename ComparatorBool = Less<T>, typename = IsBoolComp<ComparatorBool>>
void sortedUnion (const UT_Array< T > &other, UT_Array< T > &result, ComparatorBool is_less={}) const
 
template<typename ComparatorBool = Less<T>, typename = IsBoolComp<ComparatorBool>>
void sortedIntersection (const UT_Array< T > &other, ComparatorBool is_less={})
 
template<typename ComparatorBool = Less<T>, typename = IsBoolComp<ComparatorBool>>
void sortedIntersection (const UT_Array< T > &other, UT_Array< T > &result, ComparatorBool is_less={}) const
 
template<typename ComparatorBool = Less<T>, typename = IsBoolComp<ComparatorBool>>
void sortedSetDifference (const UT_Array< T > &other, ComparatorBool is_less={})
 
template<typename ComparatorBool = Less<T>, typename = IsBoolComp<ComparatorBool>>
void sortedSetDifference (const UT_Array< T > &other, UT_Array< T > &result, ComparatorBool is_less={}) const
 
bool hasSortedSubset (const UT_Array< T > &other, Comparator compare) const
 
void sortedUnion (const UT_Array< T > &other, Comparator compare)
 
void sortedUnion (const UT_Array< T > &other, UT_Array< T > &result, Comparator compare) const
 
void sortedIntersection (const UT_Array< T > &other, Comparator compare)
 
void sortedIntersection (const UT_Array< T > &other, UT_Array< T > &result, Comparator compare) const
 
void sortedSetDifference (const UT_Array< T > &other, Comparator compare)
 
void sortedSetDifference (const UT_Array< T > &other, UT_Array< T > &result, Comparator compare) const
 
exint heapPush (const T &t, Comparator compare)
 
T heapPop (Comparator compare)
 
const TheapMax () const
 
exint concat (const UT_Array< T > &a)
 Takes another T array and concatenate it onto my end. More...
 
exint concat (UT_Array< T > &&a) noexcept
 Takes another T array and concatenate it onto my end. More...
 
exint multipleInsert (exint index, exint count)
 Insert an element "count" times at the given index. Return the index. More...
 
exint insertAt (const T &t, exint index)
 
bool isValidIndex (exint index) const
 Return true if given index is valid. More...
 
template<typename S >
exint findAndRemove (const S &s)
 
exint removeIndex (exint index)
 
SYS_FORCE_INLINE void removeLast ()
 
void removeRange (exint begin_i, exint end_i)
 
void extractRange (exint begin_i, exint end_i, UT_Array< T > &dest)
 
template<typename IsEqual >
exint removeIf (IsEqual is_equal)
 
template<typename IsEqual >
void collapseIf (IsEqual is_equal)
 Remove all matching elements. Also sets the capacity of the array. More...
 
void move (exint src_idx, exint dst_idx, exint how_many)
 
void cycle (exint how_many)
 Cyclically shifts the entire array by how_many. More...
 
void constant (const T &v)
 Quickly set the array to a single value. More...
 
void zero ()
 Zeros the array if a POD type, else trivial constructs if a class type. More...
 
template<typename S >
exint find (const S &s, exint start=0) const
 
exint sortedFind (const T &t, Comparator compare) const
 
void reverse ()
 Reverses the array by swapping elements in mirrored locations. More...
 
template<typename ComparatorBool = Less<T>, typename = IsBoolComp<ComparatorBool>>
void sort (ComparatorBool is_less={})
 Sort using std::sort with bool comparator. Defaults to operator<(). More...
 
void sort (Comparator compare)
 
template<typename ComparatorBool , typename = IsBoolComp<ComparatorBool>>
void stdsort (ComparatorBool is_less)
 Sort using std::sort. The ComparatorBool uses the less-than semantics. More...
 
template<typename ComparatorBool = Less<T>>
void stableSort (ComparatorBool is_less={})
 
template<typename ComparatorBool >
void stableSortRange (ComparatorBool is_less, exint start, exint end)
 Like stableSort, but operates on a subset of the array. More...
 
template<typename I , typename ComparatorBool >
void stableSortIndices (UT_Array< I > &indices, ComparatorBool is_less) const
 
template<typename I , typename ComparatorBool >
void stableArgSort (UT_Array< I > &indices, ComparatorBool is_less) const
 
template<typename K , typename ComparatorBool >
void stableSortByKey (const UT_Array< K > &keys, ComparatorBool is_less)
 
exint sortedRemoveDuplicates ()
 
template<typename CompareEqual >
exint sortedRemoveDuplicatesIf (CompareEqual compare_equal)
 
template<typename ComparatorBool = Less<T>>
exint sortAndRemoveDuplicates (ComparatorBool is_less={})
 
template<typename ComparatorBool = Less<T>>
T selectNthLargest (exint idx, ComparatorBool is_less={})
 
void setCapacity (exint new_capacity)
 
void setCapacityIfNeeded (exint min_capacity)
 
void bumpCapacity (exint min_capacity)
 
void bumpSize (exint newsize)
 
void bumpEntries (exint newsize)
 
exint capacity () const
 
exint size () const
 
exint entries () const
 Alias of size(). size() is preferred. More...
 
bool isEmpty () const
 Returns true iff there are no occupied elements in the array. More...
 
int64 getMemoryUsage (bool inclusive=false) const
 
void setSize (exint newsize)
 
void setSizeIfNeeded (exint minsize)
 
void entries (exint newsize)
 Alias of setSize(). setSize() is preferred. More...
 
void setSizeNoInit (exint newsize)
 
void shrinkToFit ()
 shrinks the capacity to the current size More...
 
void setSizeAndShrink (exint new_size)
 convenience method to set size and shrink-to-fit in a single call More...
 
void truncate (exint maxsize)
 Decreases, but never expands, to the given maxsize. More...
 
void clear ()
 Resets list to an empty list. More...
 
UT_Array< T > & operator= (const UT_Array< T > &a)
 
UT_Array< T > & operator= (std::initializer_list< T > ilist)
 Replace the contents with those from the initializer_list ilist. More...
 
UT_Array< T > & operator= (UT_Array< T > &&a)
 Move the contents of array a to this array. More...
 
bool operator== (const UT_Array< T > &a) const
 
bool operator!= (const UT_Array< T > &a) const
 
template<typename ComparatorBool , typename = IsBoolComp<ComparatorBool>>
bool isEqual (const UT_Array< T > &a, ComparatorBool is_equal) const
 
int isEqual (const UT_Array< T > &a, Comparator compare) const
 
Toperator() (exint i)
 
const Toperator() (exint i) const
 
Toperator[] (exint i)
 
const Toperator[] (exint i) const
 
TforcedRef (exint i)
 
T forcedGet (exint i) const
 
Tlast ()
 
const Tlast () const
 
exint apply (int(*apply_func)(T &t, void *d), void *d)
 
template<typename BinaryOp >
T accumulate (const T &init_value, BinaryOp add) const
 
TgetArray () const
 
const TgetRawArray () const
 
Tarray ()
 
const Tarray () const
 
Tdata ()
 
const Tdata () const
 
TaliasArray (T *newdata)
 
iterator begin ()
 
iterator end ()
 End iterator. More...
 
const_iterator begin () const
 
const_iterator end () const
 End const iterator. Consider using it.atEnd() instead. More...
 
reverse_iterator rbegin ()
 Begin iterating over the array in reverse. More...
 
reverse_iterator rend ()
 End reverse iterator. More...
 
const_reverse_iterator rbegin () const
 Begin iterating over the array in reverse. More...
 
const_reverse_iterator rend () const
 End reverse iterator. Consider using it.atEnd() instead. More...
 
UT_IteratorRange< iteratorrange ()
 
UT_IteratorRange< const_iteratorrange () const
 
UT_IteratorRange
< reverse_iterator
rrange ()
 
UT_IteratorRange
< const_reverse_iterator
rrange () const
 
void removeItem (const reverse_iterator &it)
 Remove item specified by the reverse_iterator. More...
 
void unsafeShareData (UT_Array< T > &src)
 
void unsafeShareData (T *src, exint srcsize)
 
void unsafeShareData (T *src, exint size, exint capacity)
 
void unsafeClearData ()
 
bool isHeapBuffer () const
 Returns true if the data used by the array was allocated on the heap. More...
 
exint sortedInsert (const T &t, Comparator compare)
 
template<typename ComparatorBool = Less<T>, typename = IsBoolComp<ComparatorBool>>
exint sortedInsert (const T &t, ComparatorBool is_less={})
 
exint index (const T &t) const
 
exint safeIndex (const T &t) const
 

Additional Inherited Members

- Public Types inherited from UT_Array< T >
typedef T value_type
 
typedef int(* Comparator )(const T *, const T *)
 
typedef base_iterator< T, true > iterator
 
typedef base_iterator< const T,
true > 
const_iterator
 
typedef base_iterator< T, false > reverse_iterator
 
typedef base_iterator< const T,
false > 
const_reverse_iterator
 
typedef const_iterator traverser
 
- Protected Member Functions inherited from UT_Array< T >
 UT_Array (const UT_ArrayCT::ExternalCapacity, T *external_data, const exint external_capacity)
 
 UT_Array (const UT_ArrayCT::ExternalMove, T *external_data, const exint external_capacity, UT_Array &&a)
 
template<typename S >
exint appendImpl (S &&s)
 
template<typename S >
exint insertImpl (S &&s, exint index)
 Similar to appendImpl() but for insertion. More...
 
template<typename S >
exint uniqueSortedInsertImpl (S &&s, Comparator compare)
 
template<typename First , typename... Rest>
void validateEmplaceArgs (First &&first, Rest &&...rest) const
 
void validateEmplaceArgs () const
 Base case for validateEmplaceArgs(). More...
 
- Static Protected Member Functions inherited from UT_Array< T >
static constexpr
SYS_FORCE_INLINE bool 
isPOD ()
 
template<typename... S>
static void construct (T &dst, S &&...s)
 
static void copyConstruct (T &dst, const T &src)
 

Detailed Description

template<typename T, size_t MAX_BYTES = 64>
class UT_SmallArray< T, MAX_BYTES >

An array class with the small buffer optimization, making it ideal for cases when you know it will only contain a few elements at the expense of increasing the object size by MAX_BYTES (subject to alignment).

Definition at line 29 of file UT_SmallArray.h.

Constructor & Destructor Documentation

template<typename T, size_t MAX_BYTES = 64>
UT_SmallArray< T, MAX_BYTES >::UT_SmallArray ( )
inline

Default construction.

Definition at line 49 of file UT_SmallArray.h.

template<typename T, size_t MAX_BYTES = 64>
UT_SmallArray< T, MAX_BYTES >::UT_SmallArray ( const UT_Array< T > &  copy)
inlineexplicit

Copy constructor

Definition at line 57 of file UT_SmallArray.h.

template<typename T, size_t MAX_BYTES = 64>
UT_SmallArray< T, MAX_BYTES >::UT_SmallArray ( const UT_SmallArray< T, MAX_BYTES > &  copy)
inlineexplicit

Copy constructor

Definition at line 63 of file UT_SmallArray.h.

template<typename T, size_t MAX_BYTES = 64>
UT_SmallArray< T, MAX_BYTES >::UT_SmallArray ( UT_Array< T > &&  movable)
inlinenoexcept

Move constructor

Definition at line 73 of file UT_SmallArray.h.

Member Function Documentation

template<typename T, size_t MAX_BYTES = 64>
UT_SmallArray< T, MAX_BYTES >::UT_Array ( copy  )

Copy constructor

template<typename T, size_t MAX_BYTES = 64>
UT_SmallArray< T, MAX_BYTES >::UT_Array ( copy  )

Copy constructor

template<typename T, size_t MAX_BYTES = 64>
UT_SmallArray< T, MAX_BYTES >::UT_SMALL_ARRAY_SIZE_ASSERT ( )

The documentation for this class was generated from the following file: