Open Search
    PerformanceBaseArray< T, MINCHUNKSIZE, MEMFLAGS, Allocator > Class Template Reference

    #include <kdtree.h>

    Inheritance diagram for PerformanceBaseArray< T, MINCHUNKSIZE, MEMFLAGS, Allocator >:

    Detailed Description

    template<typename T, Int MINCHUNKSIZE = BASEARRAY_DEFAULT_CHUNK_SIZE, BASEARRAYFLAGS MEMFLAGS = BASEARRAYFLAGS::NONE, typename Allocator = DefaultAllocator>
    class maxon::PerformanceBaseArray< T, MINCHUNKSIZE, MEMFLAGS, Allocator >

    Extension to BaseArray. PerformanceBaseArray is identical to BaseArray, but has the additional member UnsafeAppend. For a description of basic functionality see the description of BaseArray

    Public Member Functions

     PerformanceBaseArray ()
     
    T * UnsafeAppend ()
     
    T * UnsafeAppend (const T &x)
     
    T * UnsafeAppend (T &&x)
     
    - Public Member Functions inherited from BaseArray< T, BASEARRAY_DEFAULT_CHUNK_SIZE, BASEARRAYFLAGS::NONE, DefaultAllocator >
    MAXON_ATTRIBUTE_FORCE_INLINE BaseArray ()
     
    MAXON_ATTRIBUTE_FORCE_INLINE BaseArray (const DefaultAllocator &a)
     
    MAXON_ATTRIBUTE_FORCE_INLINE BaseArray (DefaultAllocator &&a)
     
    MAXON_ATTRIBUTE_FORCE_INLINE BaseArray (BaseArray &&src)
     
    MAXON_ATTRIBUTE_FORCE_INLINE ~BaseArray ()
     
     MAXON_OPERATOR_MOVE_ASSIGNMENT (BaseArray)
     
    const Block< const T > & ToBlock () const
     
    const Block< T > & ToBlock ()
     
    const Block< const T > & ToConstBlock () const
     
     operator const Block< const T > & () const
     
     operator const Block< T > & ()
     
     operator StridedBlock< const T > () const
     
     operator StridedBlock< T > ()
     
     operator Block< const Byte > () const
     
     operator Block< Byte > ()
     
    void Reset ()
     
    void Flush ()
     
    MAXON_ATTRIBUTE_FORCE_INLINE Int GetCount () const
     
    MAXON_ATTRIBUTE_FORCE_INLINE Int GetCapacityCount () const
     
    MAXON_ATTRIBUTE_FORCE_INLINE const T & operator[] (Int idx) const
     
    MAXON_ATTRIBUTE_FORCE_INLINE T & operator[] (Int idx)
     
    MAXON_ATTRIBUTE_FORCE_INLINE ResultRef< T > Append (ARG &&x)
     
    MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< sizeof...(ARGS) !=1, ResultRef< T > >::type Append (ARGS &&... args)
     
    MAXON_ATTRIBUTE_FORCE_INLINE ResultPtr< T > Append (Block< typename std::remove_const< T >::type > &values)
     
    MAXON_ATTRIBUTE_FORCE_INLINE ResultPtr< T > Append (Block< const T > &values)
     
    MAXON_ATTRIBUTE_FORCE_INLINE ResultPtr< T > Append (const Block< typename std::remove_const< T >::type > &values)
     
    MAXON_ATTRIBUTE_FORCE_INLINE ResultPtr< T > Append (const Block< const T > &values)
     
    MAXON_ATTRIBUTE_FORCE_INLINE ResultPtr< T > Append (Block< typename std::remove_const< T >::type > &&values)
     
    MAXON_ATTRIBUTE_FORCE_INLINE ResultPtr< T > Append (Block< const T > &&values)
     
    MAXON_ATTRIBUTE_FORCE_INLINE ResultPtr< T > Append (MoveBlock< T > &values)
     
    MAXON_ATTRIBUTE_FORCE_INLINE ResultPtr< T > Append (const MoveBlock< T > &values)
     
    MAXON_ATTRIBUTE_FORCE_INLINE ResultPtr< T > Append (MoveBlock< T > &&values)
     
    MAXON_IMPLICIT MAXON_ATTRIBUTE_FORCE_INLINE ResultPtr< T > Append (typename std::remove_const< T >::type(&array)[N])
     
    MAXON_IMPLICIT MAXON_ATTRIBUTE_FORCE_INLINE ResultPtr< T > Append (const T(&array)[N])
     
    MAXON_IMPLICIT MAXON_ATTRIBUTE_FORCE_INLINE ResultPtr< T > Append (BaseArray< T, CS, MF, A > &a)
     
    MAXON_IMPLICIT MAXON_ATTRIBUTE_FORCE_INLINE ResultPtr< T > Append (const BaseArray< T, CS, MF, A > &a)
     
    MAXON_IMPLICIT MAXON_ATTRIBUTE_FORCE_INLINE ResultPtr< T > Append (BaseArray< T, CS, MF, A > &&a)
     
    MAXON_ATTRIBUTE_FORCE_INLINE ResultPtr< T > Append (const std::initializer_list< T > &values)
     
    MAXON_ATTRIBUTE_FORCE_INLINE ResultPtr< T > AppendBlock (const Block< const T > &values)
     
    MAXON_ATTRIBUTE_FORCE_INLINE ResultPtr< T > AppendBlock (const MoveBlock< T > &values)
     
    MAXON_ATTRIBUTE_FORCE_INLINE ResultRef< T > Insert (Int position, ARG &&x)
     
    MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< sizeof...(ARGS) !=1, ResultRef< T > >::type Insert (Int position, ARGS &&... args)
     
    ResultPtr< T > Insert (Int position, Block< typename std::remove_const< T >::type > &values)
     
    ResultPtr< T > Insert (Int position, Block< const T > &values)
     
    ResultPtr< T > Insert (Int position, const Block< typename std::remove_const< T >::type > &values)
     
    ResultPtr< T > Insert (Int position, const Block< const T > &values)
     
    ResultPtr< T > Insert (Int position, Block< typename std::remove_const< T >::type > &&values)
     
    ResultPtr< T > Insert (Int position, Block< const T > &&values)
     
    ResultPtr< T > Insert (Int position, MoveBlock< T > &values)
     
    ResultPtr< T > Insert (Int position, const MoveBlock< T > &values)
     
    ResultPtr< T > Insert (Int position, MoveBlock< T > &&values)
     
    MAXON_IMPLICIT MAXON_ATTRIBUTE_FORCE_INLINE ResultPtr< T > Insert (Int position, BaseArray< T, CS, MF, A > &a)
     
    MAXON_IMPLICIT MAXON_ATTRIBUTE_FORCE_INLINE ResultPtr< T > Insert (Int position, const BaseArray< T, CS, MF, A > &a)
     
    MAXON_IMPLICIT MAXON_ATTRIBUTE_FORCE_INLINE ResultPtr< T > Insert (Int position, BaseArray< T, CS, MF, A > &&a)
     
    ResultPtr< T > Insert (Int position, const std::initializer_list< T > &values)
     
    MAXON_ATTRIBUTE_FORCE_INLINE ResultMemT< IteratorInsert (Iterator position, ARGS &&... args)
     
    ResultPtr< T > InsertBlock (Int position, const Block< const T > &values)
     
    ResultPtr< T > InsertBlock (Int position, const MoveBlock< T > &values)
     
    MAXON_ATTRIBUTE_FORCE_INLINE ResultMemT< IteratorInsertBlock (Iterator position, ARGS &&... args)
     
    ResultPtr< T > Erase (Int position, Int eraseCnt=1)
     
    Iterator Erase (Iterator position, Int eraseCnt=1)
     
    ResultMem SwapErase (Int position, Int eraseCnt=1)
     
    Iterator SwapErase (Iterator position, Int eraseCnt=1)
     
    MAXON_ATTRIBUTE_FORCE_INLINE Int GetBlock (Int position, Block< const T, STRIDED > &block) const
     
    MAXON_ATTRIBUTE_FORCE_INLINE Int GetBlock (Int position, Block< T, STRIDED > &block)
     
    MAXON_ATTRIBUTE_FORCE_INLINE ConstIterator GetBlock (ConstIterator position, Block< const T, STRIDED > &block) const
     
    MAXON_ATTRIBUTE_FORCE_INLINE Iterator GetBlock (Iterator position, Block< T, STRIDED > &block)
     
    MAXON_ATTRIBUTE_FORCE_INLINE const T * GetFirst () const
     
    MAXON_ATTRIBUTE_FORCE_INLINE T * GetFirst ()
     
    MAXON_ATTRIBUTE_FORCE_INLINE const T * GetLast () const
     
    MAXON_ATTRIBUTE_FORCE_INLINE T * GetLast ()
     
    ResultMem Resize (Int newCnt, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::DEFAULT)
     
    MAXON_ATTRIBUTE_FORCE_INLINE Bool Pop (T *dst=nullptr)
     
    MAXON_ATTRIBUTE_FORCE_INLINE Int GetIndex (const T &x) const
     
    ResultMem EnsureCapacity (Int requestedCapacity, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY)
     
    ResultMem SetCapacityHint (Int requestedCapacity, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY)
     
    MAXON_ATTRIBUTE_FORCE_INLINE Result< void > AppendAllImpl (BASEARRAY &&other, COLLECTION_RESIZE_FLAGS resizeFlags, Bool overwrite, OverloadRank1)
     
    MAXON_ATTRIBUTE_FORCE_INLINE Result< void > AppendAllImpl (BLOCK &&other, COLLECTION_RESIZE_FLAGS resizeFlags, Bool overwrite, OverloadRank2)
     
    MAXON_ATTRIBUTE_FORCE_INLINE void Swap (Iterator a, Iterator b)
     
    Int GetMemorySize () const
     
    MAXON_ATTRIBUTE_FORCE_INLINE ConstIterator Begin () const
     
    MAXON_ATTRIBUTE_FORCE_INLINE Iterator Begin ()
     
    MAXON_ATTRIBUTE_FORCE_INLINE ConstIterator End () const
     
    MAXON_ATTRIBUTE_FORCE_INLINE Iterator End ()
     
    ResultMem MoveAndShrink (BaseArray< T, MINCHUNKSIZE, MEMFLAGS, DefaultAllocator > &dst, Int position, Int moveCnt)
     
    MAXON_ATTRIBUTE_FORCE_INLINE Block< T > Disconnect ()
     
    MAXON_ATTRIBUTE_FORCE_INLINE void Connect (const Block< T > &block, Int capacity=0)
     
    MAXON_ATTRIBUTE_FORCE_INLINE DefaultAllocatorGetAllocator ()
     
    MAXON_ATTRIBUTE_FORCE_INLINE const DefaultAllocatorGetAllocator () const
     
    UniqueHash GetUniqueHashCode () const
     
    - Public Member Functions inherited from ArrayBase< COLLECTION, VALUETYPE, SUPER, HASH >
    template<typename... ARGS>
    constexpr MAXON_ATTRIBUTE_FORCE_INLINE ArrayBase (ARGS &&... args)
     
    ArrayImpl< COLLECTION & > ToArray ()
     
    ArrayImpl< const COLLECTION & > ToArray () const
     
    MAXON_ATTRIBUTE_FORCE_INLINE operator ArrayImpl< COLLECTION & > ()
     
    MAXON_ATTRIBUTE_FORCE_INLINE operator ArrayImpl< const COLLECTION & > () const
     
    - Public Member Functions inherited from ArrayBase0< COLLECTION, VALUETYPE, SUPER, HASH >
    template<typename... ARGS>
    constexpr MAXON_ATTRIBUTE_FORCE_INLINE ArrayBase0 (ARGS &&... args)
     
    template<typename COLLECTION2 >
    MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value, Bool >::type operator< (const COLLECTION2 &other) const
     
    template<typename COLLECTION2 >
    MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value, Bool >::type operator<= (const COLLECTION2 &other) const
     
    template<typename COLLECTION2 >
    MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value, Bool >::type operator> (const COLLECTION2 &other) const
     
    template<typename COLLECTION2 >
    MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value, Bool >::type operator>= (const COLLECTION2 &other) const
     
    template<typename COMPARE = EqualityCompare, typename COLLECTION2 >
    MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value, COMPARERESULT >::type Compare (const COLLECTION2 &other, COMPARE &&cmp=COMPARE()) const
     
    Bool IsValidIndex (Int index) const
     
    Result< void > CheckValidIndex (Int index) const
     
    Int FindIndex (typename ByValueParam< VALUETYPE >::type v, Int start) const
     
    Int FindLastIndex (typename ByValueParam< VALUETYPE >::type v) const
     
    Int FindLastIndex (typename ByValueParam< VALUETYPE >::type v, Int start) const
     
    Bool EraseFirst (typename ByValueParam< VALUETYPE >::type v)
     
    Int EraseAll (typename ByValueParam< VALUETYPE >::type v)
     
    template<typename COLLECTION2 >
    Result< void > AppendAllImpl (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags, Bool overwrite, OverloadRank0)
     
    template<typename COLLECTION2 >
    Result< void > InsertAll (Int index, COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY)
     
    template<typename COLLECTION2 >
    Result< void > Add (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY)
     
    template<typename COLLECTION2 >
    Result< void > SubtractImpl (COLLECTION2 &&other, OverloadRank0)
     
    template<typename COLLECTION2 , typename COMPARE >
    Bool IsEqualImpl (const COLLECTION2 &other, COMPARE &&cmp, OverloadRank0) const
     
    template<typename COLLECTION2 , typename COMPARE >
    COMPARERESULT CompareImpl (const COLLECTION2 &other, COMPARE &&cmp, OverloadRank0) const
     
    HashInt GetHashCode () const
     
    UniqueHash GetUniqueHashCode () const
     
    MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator< COLLECTION > Slice (Int start)
     
    MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator< const COLLECTION > Slice (Int start) const
     
    MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator< COLLECTION > Slice (Int start, Int end)
     
    MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator< const COLLECTION > Slice (Int start, Int end) const
     
    BlockIterator< COLLECTION, VALUETYPE, false, false > GetBlocks ()
     
    BlockIterator< COLLECTION, VALUETYPE, true, false > GetBlocks () const
     
    BlockIterator< COLLECTION, VALUETYPE, false, true > GetStridedBlocks ()
     
    BlockIterator< COLLECTION, VALUETYPE, true, true > GetStridedBlocks () const
     
    - Public Member Functions inherited from Collection< COLLECTION, VALUETYPE, SUPER >
    template<typename... ARGS>
    MAXON_ATTRIBUTE_FORCE_INLINE Collection (ARGS &&... args)
     
    ResultOk< void > VariadicAppend ()
     
    template<typename V , typename... VALUES>
    Result< void > VariadicAppend (V &&value, VALUES &&... rest)
     
     operator ValueReceiver< const VALUETYPE & > ()
     
     operator ValueReceiver< VALUETYPE && > ()
     
     operator ValueReceiver< typename std::conditional< STD_IS_REPLACEMENT (scalar, VALUETYPE)
     
    DummyParamType & type ()
     
    template<typename FN >
    Result< BoolForEach (FN &&callback) const
     
    template<typename FN >
    Result< BoolForEach (FN &&callback)
     
    template<typename H = COLLECTION>
    H::Iterator Find (typename ByValueParam< VALUETYPE >::type v)
     
    template<typename H = COLLECTION>
    H::ConstIterator Find (typename ByValueParam< VALUETYPE >::type v) const
     
    Int FindIndex (typename ByValueParam< VALUETYPE >::type v) const
     
    MAXON_ATTRIBUTE_FORCE_INLINE Bool Contains (typename ByValueParam< VALUETYPE >::type v) const
     
    - Public Member Functions inherited from BaseCollection< COLLECTION, SUPER >
    template<typename... ARGS>
    MAXON_ATTRIBUTE_FORCE_INLINE BaseCollection (ARGS &&... args)
     
    template<typename COLLECTION2 >
    MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value, Bool >::type operator== (const COLLECTION2 &other) const
     
    template<typename COLLECTION2 >
    MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value, Bool >::type operator!= (const COLLECTION2 &other) const
     
    template<typename COMPARE = EqualityCompare, typename COLLECTION2 >
    MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value &&!STD_IS_REPLACEMENT(same, typename std::decay< COMPARE >::type, EQUALITY), Bool >::type IsEqual (const COLLECTION2 &other, COMPARE &&cmp=COMPARE()) const
     
    template<typename COLLECTION2 >
    MAXON_ATTRIBUTE_FORCE_INLINE Result< void > AppendAll (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY)
     
    template<typename COLLECTION2 >
    MAXON_ATTRIBUTE_FORCE_INLINE Result< void > CopyFrom (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::FIT_TO_SIZE)
     
    template<typename COLLECTION2 >
    MAXON_ATTRIBUTE_FORCE_INLINE Result< void > Subtract (COLLECTION2 &&other)
     
    template<typename COLLECTION2 >
    MAXON_ATTRIBUTE_FORCE_INLINE Result< void > Intersect (const COLLECTION2 &other)
     
    template<typename COLLECTION2 >
    Bool Intersects (const COLLECTION2 &other) const
     
    template<typename COLLECTION2 >
    MAXON_ATTRIBUTE_FORCE_INLINE Result< void > CopyFromImpl (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags, OverloadRank0)
     
    template<typename COLLECTION2 >
    Result< void > AppendAllImpl (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags, Bool overwrite, OverloadRank0)
     
    template<typename COLLECTION2 >
    Result< void > IntersectImpl (COLLECTION2 &&other, OverloadRank0)
     
    MAXON_ATTRIBUTE_FORCE_INLINE Bool IsEmpty () const
     
    MAXON_ATTRIBUTE_FORCE_INLINE Bool IsPopulated () const
     
    String ToString (const FormatStatement *formatStatement=nullptr) const
     
    template<typename COLLECTION2 >
    MAXON_ATTRIBUTE_FORCE_INLINE Bool ContainsAll (COLLECTION2 &&other) const
     
    template<typename COLLECTION2 >
    Bool ContainsAllImpl (COLLECTION2 &&other, OverloadRank0) const
     

    Private Member Functions

     MAXON_DISALLOW_COPY_AND_ASSIGN (PerformanceBaseArray)
     

    Additional Inherited Members

    - Public Types inherited from BaseArray< T, BASEARRAY_DEFAULT_CHUNK_SIZE, BASEARRAYFLAGS::NONE, DefaultAllocator >
    using IsBaseArray = std::true_type
     
    using AllocatorType = DefaultAllocator
     
    using Iterator = BaseIterator< BaseArray, false >
     
    using ConstIterator = BaseIterator< const BaseArray, false >
     
    using Super = ArrayBase< BaseArray< T, MINCHUNKSIZE, MEMFLAGS, DefaultAllocator >, T, BaseArrayData< T, MEMFLAGS, DefaultAllocator, STD_IS_REPLACEMENT(empty, DefaultAllocator)>, DefaultCompare >
     
    - Public Types inherited from Collection< COLLECTION, VALUETYPE, SUPER >
    using Super = BaseCollection< COLLECTION, SUPER >
     
    using ValueType = VALUETYPE
     
    - Public Types inherited from BaseCollection< COLLECTION, SUPER >
    using IsCollection = std::true_type
     
    using IsBaseArray = std::false_type
     
    - Static Public Member Functions inherited from Collection< COLLECTION, VALUETYPE, SUPER >
    static const VALUETYPEGetMapKey (const VALUETYPE &key)
     
    - Public Attributes inherited from Collection< COLLECTION, VALUETYPE, SUPER >
     VALUETYPE
     
    - Static Public Attributes inherited from ArrayBase0< COLLECTION, VALUETYPE, SUPER, HASH >
    static const COLLECTION_KIND KIND
     

    Constructor & Destructor Documentation

    ◆ PerformanceBaseArray()

    Member Function Documentation

    ◆ MAXON_DISALLOW_COPY_AND_ASSIGN()

    MAXON_DISALLOW_COPY_AND_ASSIGN ( PerformanceBaseArray< T, MINCHUNKSIZE, MEMFLAGS, Allocator >  )
    private

    ◆ UnsafeAppend() [1/3]

    T* UnsafeAppend ( )

    Add a new element at the end of the array without checking its capacity. You must have called EnsureCapacity() to make sure that the array can hold the data before calling this method. Only use this when it is absolutely performance critical and you REALLY know what you are doing.

    Returns
    Element pointer.

    ◆ UnsafeAppend() [2/3]

    T* UnsafeAppend ( const T &  x)

    Add a new element at the end of the array without checking its capacity. You must have called EnsureCapacity() to make sure that the array can hold the data before calling this method. Only use this when it is absolutely performance critical and you REALLY know what you are doing.

    Parameters
    [in]xValue to be copied.
    Returns
    Element pointer.

    ◆ UnsafeAppend() [3/3]

    T* UnsafeAppend ( T &&  x)