Open Search
    ArrayBase< COLLECTION, VALUETYPE, SUPER, HASH > Class Template Reference

    #include <collection.h>

    Inherits ArrayBase0< COLLECTION, VALUETYPE, SUPER, HASH >.

    Inherited by BaseArray< BaseLink * >, BaseArray< EDGE * >, BaseArray< maxon::Tuple >, BaseArray< maxon::BITS >, BaseArray< RayRadiancePoly >, BaseArray< PgonEdge >, BaseArray< Float >, BaseArray< TP_PGroup * >, BaseArray< maxon::neighbor::Info< STORAGEINDEX > >, BaseArray< PortId >, BaseArray< maxon::CellEdge >, BaseArray< ArrayBlock, BASEARRAY_DEFAULT_CHUNK_SIZE, BASEARRAYFLAGS::NONE, ForwardAllocator >, BaseArray< RayMotionTextureFrame >, BaseArray< RayMotionNormal >, BaseArray< RayMotionMatrix >, BaseArray< maxon::Tuple< Int32, INNERMOST_MEMBER > >, BaseArray< maxon::DoxSnippet >, BaseArray< maxon::Tuple< maxon::String, maxon::String, maxon::String > >, BaseArray< maxon::ConvEdge >, BaseArray< NODE *, BASEARRAY_DEFAULT_CHUNK_SIZE, BASEARRAYFLAGS::MOVEANDCOPYOBJECTS, DefaultAllocator >, BaseArray< maxon::KDStackArray *, BASEARRAY_DEFAULT_CHUNK_SIZE, BASEARRAYFLAGS::MOVEANDCOPYOBJECTS, DefaultAllocator >, BaseArray< maxon::PerThreadData >, BaseArray< INDEX >, BaseArray< maxon::DoxTitle >, BaseArray< maxon::CrashCallStackEntry, BASEARRAY_DEFAULT_CHUNK_SIZE, BASEARRAYFLAGS::NONE, maxon::CStdLibAllocator >, BaseArray< GvPort * >, BaseArray< RayMotionCameraFrame >, BaseArray< String >, BaseArray< GvValue * >, BaseArray< GvPortDescInfo::PortInfo >, BaseArray< maxon::SubMenuEntry >, BaseArray< maxon::Tuple< maxon::Tuple, maxon::Tuple > >, BaseArray< maxon::CrashModuleEntry, BASEARRAY_DEFAULT_CHUNK_SIZE, BASEARRAYFLAGS::NONE, maxon::CStdLibAllocator >, BaseArray< Int >, BaseArray< RayMotionMatrixData >, BaseArray< maxon::Tuple< maxon::Id, maxon::Id > >, BaseArray< Int64 >, BaseArray< maxon::IndexedGradientKnot >, BaseArray< maxon::Vec4 >, BaseArray< maxon::InternedId >, BaseArray< C4DUuid >, BaseArray< maxon::Mat3 >, BaseArray< BaseObject * >, BaseArray< T *, BASEARRAY_DEFAULT_CHUNK_SIZE, BASEARRAYFLAGS::MOVEANDCOPYOBJECTS, DefaultAllocator >, BaseArray< RayMotionPolyNormal >, BaseArray< maxon::Vec3 >, BaseArray< T, 1, BASEARRAYFLAGS::MOVEANDCOPYOBJECTS, NullAllocator >, BaseArray< T, BASEARRAY_DEFAULT_CHUNK_SIZE, BASEARRAYFLAGS::NONE, DefaultAllocator >, BaseArray< Char >, BaseArray< STORAGEINDEX >, BaseArray< maxon::TangentSpaceNormalHelper::NormalVertexCycles >, BaseArray< maxon::KDTreeNode >, BaseArray< Bool >, BaseArray< SysChar >, BaseArray< maxon::corenodes::OptimizationInfo::Output >, BaseArray< const BaseObject * >, BaseArray< TYPE >, BaseArray< maxon::String >, BaseArray< maxon::Col3 >, BaseArray< RayHemiSample >, BaseArray< maxon::Id >, BaseArray< Char * >, BaseArray< maxon::Poly >, BaseArray< maxon::CrashRegisterValue, BASEARRAY_DEFAULT_CHUNK_SIZE, BASEARRAYFLAGS::NONE, maxon::CStdLibAllocator >, BaseArray< RayMotionTexture >, BaseArray< EDGE *, BASEARRAY_DEFAULT_CHUNK_SIZE, BASEARRAYFLAGS::MOVEANDCOPYOBJECTS, DefaultAllocator >, BaseArray< maxon::MenuEntry >, BaseArray< IntType, BASEARRAY_DEFAULT_CHUNK_SIZE, BASEARRAYFLAGS::MOVEANDCOPYOBJECTS, DefaultAllocator >, BaseArray< const BaseList2D * >, BaseArray< INNERMOST_MEMBER >, BaseArray< maxon::DataTypeComponent >, BaseArray< maxon::CrashThreadState, BASEARRAY_DEFAULT_CHUNK_SIZE, BASEARRAYFLAGS::NONE, maxon::CStdLibAllocator >, BaseArray< SnapExclude >, BaseArray< RayMotionLightFrame >, BaseArray< Int32 >, BaseArray< T_Int >, BaseArray< JOBCOMMAND >, BaseArray< RadiancePolyFrontBack >, BaseArray< MTCharacterBodyPart * >, SortedArray< JavaClass, BaseArray< JavaClass, 16, BASEARRAYFLAGS::NONE, CStdLibAllocator > >, and SortedArray< DefaultSortedArray< T >, BaseArray< T > >.

    Detailed Description

    template<typename COLLECTION, typename VALUETYPE, typename SUPER, typename HASH>
    class maxon::ArrayBase< COLLECTION, VALUETYPE, SUPER, HASH >

    ArrayBase is a helper template to be used as base class for array- or list-like collections. It will add iterator-based utility functions such as ToString, Find, AppendAll or EraseFirst.

    Template Parameters
    COLLECTIONThe actual collection class, this has to have Collection as (direct or indirect) base class.
    VALUETYPEThe type of values stored in the collection.
    SUPERThe class to be used as base class for Collection.
    HASHThe hash class to be used for elements of the collection.
    See also
    $ref arrays

    Public Member Functions

    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 Types

    using Super = ArrayBase0< COLLECTION, VALUETYPE, SUPER, HASH >
     

    Additional Inherited Members

    - 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
     

    Member Typedef Documentation

    ◆ Super

    using Super = ArrayBase0<COLLECTION, VALUETYPE, SUPER, HASH>
    private

    Constructor & Destructor Documentation

    ◆ ArrayBase()

    constexpr MAXON_ATTRIBUTE_FORCE_INLINE ArrayBase ( ARGS &&...  args)
    explicitconstexpr

    Member Function Documentation

    ◆ ToArray() [1/2]

    ArrayImpl< COLLECTION & > ToArray

    ◆ ToArray() [2/2]

    ArrayImpl< const COLLECTION & > ToArray

    ◆ operator ArrayImpl< COLLECTION & >()

    MAXON_ATTRIBUTE_FORCE_INLINE operator ArrayImpl< COLLECTION & > ( )

    ◆ operator ArrayImpl< const COLLECTION & >()

    MAXON_ATTRIBUTE_FORCE_INLINE operator ArrayImpl< const COLLECTION & > ( ) const