BaseLinkArray Class Reference

#include <c4d_baselinkarray.h>

Inheritance diagram for BaseLinkArray:

Detailed Description

A helper class to handle BaseLink instances.

Constructor/Destructor

 ~BaseLinkArray ()
 
void FlushAll ()
 

Get link/atom/baselist

Int32 Find (C4DAtomGoal *bl, BaseDocument *doc) const
 
BaseLinkGetIndexLink (Int32 i) const
 
C4DAtomGoalGetIndex (Int32 i, BaseDocument *doc) const
 
BaseList2DGetIndexBl (Int32 i, BaseDocument *doc, Int32 instanceof=110050) const
 

Append/Remove

Bool Append (C4DAtomGoal *bl)
 
Bool Remove (Int32 n)
 

Convert to/from AtomArray

void GetAtomArray (BaseDocument *doc, AtomArray &res) const
 
void FromAtomArray (const AtomArray &ar)
 

Miscellaneous

Int32 GetRealCount (BaseDocument *doc) const
 

Additional Inherited Members

- Public Types inherited from BaseArray< BaseLink *>
using AllocatorType = DefaultAllocator
 
using Iterator = BaseIterator< BaseArray, false >
 
using ConstIterator = BaseIterator< const BaseArray, false >
 
using Super = ArrayBase< BaseArray< BaseLink *, BASEARRAY_DEFAULT_CHUNK_SIZE, BASEARRAYFLAGS::NONE, DefaultAllocator >, BaseLink *, BaseArrayData< BaseLink *, DefaultAllocator, std::is_empty< DefaultAllocator >::value >, DefaultCompare >
 
- Public Types inherited from Collection< BaseArray< BaseLink *, BASEARRAY_DEFAULT_CHUNK_SIZE, BASEARRAYFLAGS::NONE, DefaultAllocator >, BaseLink *, BaseArrayData< BaseLink *, DefaultAllocator, std::is_empty< DefaultAllocator >::value > >
using Super = BaseCollection< BaseArray< BaseLink *, BASEARRAY_DEFAULT_CHUNK_SIZE, BASEARRAYFLAGS::NONE, DefaultAllocator >, BaseArrayData< BaseLink *, DefaultAllocator, std::is_empty< DefaultAllocator >::value > >
 
using ValueType = BaseLink *
 
- Public Types inherited from BaseCollection< BaseArray< BaseLink *, BASEARRAY_DEFAULT_CHUNK_SIZE, BASEARRAYFLAGS::NONE, DefaultAllocator >, BaseArrayData< BaseLink *, DefaultAllocator, std::is_empty< DefaultAllocator >::value > >
using IsCollection = std::true_type
 
- Public Member Functions inherited from BaseArray< BaseLink *>
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 BaseLink * > & ToBlock () const
 
const Block< BaseLink * > & ToBlock ()
 
 operator const Block< const BaseLink * > & () const
 
 operator const Block< BaseLink * > & ()
 
 operator StridedBlock< const BaseLink * > () const
 
 operator StridedBlock< BaseLink * > ()
 
 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 BaseLink * & operator[] (Int idx) const
 
MAXON_ATTRIBUTE_FORCE_INLINE BaseLink * & operator[] (Int idx)
 
MAXON_ATTRIBUTE_FORCE_INLINE ResultRef< BaseLink * > Append ()
 
MAXON_ATTRIBUTE_FORCE_INLINE ResultRef< BaseLink * > Append (const BaseLink * &x)
 
MAXON_ATTRIBUTE_FORCE_INLINE ResultRef< BaseLink * > Append (BaseLink * &&x)
 
MAXON_ATTRIBUTE_FORCE_INLINE ResultPtr< BaseLink * > Append (const Block< const BaseLink * > &values)
 
ResultPtr< BaseLink * > Append (const MoveBlock< BaseLink * > &values)
 
MAXON_ATTRIBUTE_FORCE_INLINE ResultPtr< BaseLink * > Append (const std::initializer_list< BaseLink * > &values)
 
MAXON_ATTRIBUTE_FORCE_INLINE ResultRef< BaseLink * > Insert (Int position)
 
MAXON_ATTRIBUTE_FORCE_INLINE ResultMemT< IteratorInsert (Iterator position)
 
MAXON_ATTRIBUTE_FORCE_INLINE ResultRef< BaseLink * > Insert (Int position, const BaseLink * &x)
 
MAXON_ATTRIBUTE_FORCE_INLINE ResultMemT< IteratorInsert (Iterator position, const BaseLink * &x)
 
MAXON_ATTRIBUTE_FORCE_INLINE ResultRef< BaseLink * > Insert (Int position, BaseLink * &&x)
 
MAXON_ATTRIBUTE_FORCE_INLINE ResultMemT< IteratorInsert (Iterator position, BaseLink * &&x)
 
ResultPtr< BaseLink * > Insert (Int position, const Block< const BaseLink * > &values)
 
ResultPtr< BaseLink * > Insert (Int position, const std::initializer_list< BaseLink * > &values)
 
ResultPtr< BaseLink * > Insert (Int position, const MoveBlock< BaseLink * > &values)
 
ResultMemT< IteratorInsert (Iterator position, const Block< const BaseLink * > &values)
 
ResultMemT< IteratorInsert (Iterator position, const std::initializer_list< BaseLink * > &values)
 
ResultPtr< BaseLink * > 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 BaseLink *, STRIDED > &block) const
 
MAXON_ATTRIBUTE_FORCE_INLINE Int GetBlock (Int position, Block< BaseLink *, STRIDED > &block)
 
MAXON_ATTRIBUTE_FORCE_INLINE ConstIterator GetBlock (ConstIterator position, Block< const BaseLink *, STRIDED > &block) const
 
MAXON_ATTRIBUTE_FORCE_INLINE Iterator GetBlock (Iterator position, Block< BaseLink *, STRIDED > &block)
 
MAXON_ATTRIBUTE_FORCE_INLINE const BaseLink * * GetFirst () const
 
MAXON_ATTRIBUTE_FORCE_INLINE BaseLink * * GetFirst ()
 
MAXON_ATTRIBUTE_FORCE_INLINE const BaseLink * * GetLast () const
 
MAXON_ATTRIBUTE_FORCE_INLINE BaseLink * * GetLast ()
 
ResultMem Resize (Int newCnt, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::DEFAULT)
 
MAXON_ATTRIBUTE_FORCE_INLINE Bool Pop (BaseLink * *dst=nullptr)
 
MAXON_ATTRIBUTE_FORCE_INLINE Int GetIndex (const BaseLink * &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 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< BaseLink *, BASEARRAY_DEFAULT_CHUNK_SIZE, BASEARRAYFLAGS::NONE, DefaultAllocator > &dst, Int position, Int moveCnt)
 
MAXON_ATTRIBUTE_FORCE_INLINE Block< BaseLink * > Disconnect ()
 
MAXON_ATTRIBUTE_FORCE_INLINE void Connect (const Block< BaseLink * > &block, Int capacity=0)
 
MAXON_ATTRIBUTE_FORCE_INLINE DefaultAllocatorGetAllocator ()
 
MAXON_ATTRIBUTE_FORCE_INLINE const DefaultAllocatorGetAllocator () const
 
- Public Member Functions inherited from ArrayBase< BaseArray< BaseLink *, BASEARRAY_DEFAULT_CHUNK_SIZE, BASEARRAYFLAGS::NONE, DefaultAllocator >, BaseLink *, BaseArrayData< BaseLink *, DefaultAllocator, std::is_empty< DefaultAllocator >::value >, DefaultCompare >
MAXON_ATTRIBUTE_FORCE_INLINE ArrayBase (ARGS &&... args)
 
ArrayImpl< BaseArray< BaseLink *, BASEARRAY_DEFAULT_CHUNK_SIZE, BASEARRAYFLAGS::NONE, DefaultAllocator > &> ToArray ()
 
ArrayImpl< const BaseArray< BaseLink *, BASEARRAY_DEFAULT_CHUNK_SIZE, BASEARRAYFLAGS::NONE, DefaultAllocator > &> ToArray () const
 
MAXON_ATTRIBUTE_FORCE_INLINE operator ArrayImpl< BaseArray< BaseLink *, BASEARRAY_DEFAULT_CHUNK_SIZE, BASEARRAYFLAGS::NONE, DefaultAllocator > &> ()
 
MAXON_ATTRIBUTE_FORCE_INLINE operator ArrayImpl< const BaseArray< BaseLink *, BASEARRAY_DEFAULT_CHUNK_SIZE, BASEARRAYFLAGS::NONE, DefaultAllocator > &> () const
 
- Public Member Functions inherited from ArrayBase0< BaseArray< BaseLink *, BASEARRAY_DEFAULT_CHUNK_SIZE, BASEARRAYFLAGS::NONE, DefaultAllocator >, BaseLink *, BaseArrayData< BaseLink *, DefaultAllocator, std::is_empty< DefaultAllocator >::value >, DefaultCompare >
MAXON_ATTRIBUTE_FORCE_INLINE ArrayBase0 (ARGS &&... args)
 
Bool IsValidIndex (Int index) const
 
Result< void > CheckValidIndex (Int index) const
 
Int FindIndex (typename ByValueParam< BaseLink * >::type v, Int start) const
 
Int FindLastIndex (typename ByValueParam< BaseLink * >::type v) const
 
Int FindLastIndex (typename ByValueParam< BaseLink * >::type v, Int start) const
 
Bool EraseFirst (typename ByValueParam< BaseLink * >::type v)
 
Int EraseAll (typename ByValueParam< BaseLink * >::type v)
 
Result< void > AppendAllImpl (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags, Bool overwrite, OverloadRank0)
 
Result< void > InsertAll (Int index, COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY)
 
Result< void > Add (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY)
 
Result< void > SubtractImpl (COLLECTION2 &&other, OverloadRank0)
 
Bool IsEqualImpl (const COLLECTION2 &other, COMPARE &&cmp, OverloadRank0) const
 
UInt GetHashCode () const
 
MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator< BaseArray< BaseLink *, BASEARRAY_DEFAULT_CHUNK_SIZE, BASEARRAYFLAGS::NONE, DefaultAllocator > > Slice (Int start)
 
MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator< const BaseArray< BaseLink *, BASEARRAY_DEFAULT_CHUNK_SIZE, BASEARRAYFLAGS::NONE, DefaultAllocator > > Slice (Int start) const
 
MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator< BaseArray< BaseLink *, BASEARRAY_DEFAULT_CHUNK_SIZE, BASEARRAYFLAGS::NONE, DefaultAllocator > > Slice (Int start, Int end)
 
MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator< const BaseArray< BaseLink *, BASEARRAY_DEFAULT_CHUNK_SIZE, BASEARRAYFLAGS::NONE, DefaultAllocator > > Slice (Int start, Int end) const
 
BlockIterator< false, false > GetBlocks ()
 
BlockIterator< true, false > GetBlocks () const
 
BlockIterator< false, true > GetStridedBlocks ()
 
BlockIterator< true, true > GetStridedBlocks () const
 
- Public Member Functions inherited from Collection< BaseArray< BaseLink *, BASEARRAY_DEFAULT_CHUNK_SIZE, BASEARRAYFLAGS::NONE, DefaultAllocator >, BaseLink *, BaseArrayData< BaseLink *, DefaultAllocator, std::is_empty< DefaultAllocator >::value > >
MAXON_ATTRIBUTE_FORCE_INLINE Collection (ARGS &&... args)
 
ResultOk< void > VariadicAppend ()
 
Result< void > VariadicAppend (V &&value, VALUES &&... rest)
 
 operator ValueReceiver< const BaseLink * &> ()
 
 operator ValueReceiver< BaseLink * &&> ()
 
 operator ValueReceiver< typename std::conditional< std::is_scalar< BaseLink * >::value, BaseLink *, DummyParamType &>::type > ()
 
Result< BoolForEach (FN &&callback)
 
H::Iterator Find (typename ByValueParam< BaseLink * >::type v)
 
H::ConstIterator Find (typename ByValueParam< BaseLink * >::type v) const
 
Int FindIndex (typename ByValueParam< BaseLink * >::type v) const
 
MAXON_ATTRIBUTE_FORCE_INLINE Bool Contains (typename ByValueParam< BaseLink * >::type v) const
 
- Public Member Functions inherited from BaseCollection< BaseArray< BaseLink *, BASEARRAY_DEFAULT_CHUNK_SIZE, BASEARRAYFLAGS::NONE, DefaultAllocator >, BaseArrayData< BaseLink *, DefaultAllocator, std::is_empty< DefaultAllocator >::value > >
MAXON_ATTRIBUTE_FORCE_INLINE BaseCollection (ARGS &&... args)
 
MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value, Bool >::type operator== (const COLLECTION2 &other) const
 
MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value, Bool >::type operator!= (const COLLECTION2 &other) const
 
MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value &&!std::is_same< typename std::decay< COMPARE >::type, EQUALITY >::value, Bool >::type IsEqual (const COLLECTION2 &other, COMPARE &&cmp=COMPARE()) const
 
MAXON_ATTRIBUTE_FORCE_INLINE Result< void > AppendAll (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY)
 
MAXON_ATTRIBUTE_FORCE_INLINE Result< void > CopyFrom (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::FIT_TO_SIZE)
 
MAXON_ATTRIBUTE_FORCE_INLINE Result< void > Subtract (COLLECTION2 &&other)
 
MAXON_ATTRIBUTE_FORCE_INLINE Result< void > Intersect (const COLLECTION2 &other)
 
Bool Intersects (const COLLECTION2 &other) const
 
MAXON_ATTRIBUTE_FORCE_INLINE Result< void > CopyFromImpl (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags, OverloadRank0)
 
Result< void > AppendAllImpl (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags, Bool overwrite, OverloadRank0)
 
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) const
 
MAXON_ATTRIBUTE_FORCE_INLINE Bool ContainsAll (COLLECTION2 &&other) const
 
Bool ContainsAllImpl (COLLECTION2 &&other, OverloadRank0) const
 
- Static Public Member Functions inherited from Collection< BaseArray< BaseLink *, BASEARRAY_DEFAULT_CHUNK_SIZE, BASEARRAYFLAGS::NONE, DefaultAllocator >, BaseLink *, BaseArrayData< BaseLink *, DefaultAllocator, std::is_empty< DefaultAllocator >::value > >
static const BaseLink * & GetMapKey (const BaseLink * &key)
 
- Static Public Attributes inherited from ArrayBase0< BaseArray< BaseLink *, BASEARRAY_DEFAULT_CHUNK_SIZE, BASEARRAYFLAGS::NONE, DefaultAllocator >, BaseLink *, BaseArrayData< BaseLink *, DefaultAllocator, std::is_empty< DefaultAllocator >::value >, DefaultCompare >
static const COLLECTION_KIND KIND
 

Constructor & Destructor Documentation

◆ ~BaseLinkArray()

Destructor.

Member Function Documentation

◆ FlushAll()

void FlushAll ( void  )

Frees all the base links in the array.

◆ Find()

Int32 Find ( C4DAtomGoal bl,
BaseDocument doc 
) const

Searches for a specific bl in the array and returns its index.

Parameters
[in]blThe atom to find. The caller owns the pointed atom.
[in]docThe document for bl. The caller owns the pointed document.
Returns
The BaseLink's index in the array, or NOTOK if it was not found.

◆ GetIndexLink()

BaseLink* GetIndexLink ( Int32  i) const

Gets the base link at index i.

Parameters
[in]iThe index of the base link to get. 0 <= i < GetCount()
Returns
The base link. The array owns the pointed base link.

◆ GetIndex()

C4DAtomGoal* GetIndex ( Int32  i,
BaseDocument doc 
) const

Gets the atom at index i.

Parameters
[in]iThe index of the atom to get. 0 <= i < GetCount()
[in]docThe document for the atom. The caller owns the pointed document.
Returns
The atom. The array owns the pointed atom.

◆ GetIndexBl()

BaseList2D* GetIndexBl ( Int32  i,
BaseDocument doc,
Int32  instanceof = 110050 
) const

Gets the base list at index i.

Parameters
[in]iThe index of the base list to get. 0 <= i < GetCount()
[in]docThe document for the base list. The caller owns the pointed document.
[in]instanceofChecked against C4DAtom::IsInstanceOf(). Pass NOTOK to ignore this test. Default to Tbaselist2d.
Returns
The base list. The array owns the pointed base list.

◆ Append()

Bool Append ( C4DAtomGoal bl)

Appends an atom to the array.

Parameters
[in]blThe atom to append. The caller owns the pointed atom.
Returns
true if the base link was successfully added to the array, otherwise false.

◆ Remove()

Bool Remove ( Int32  n)

Removes and frees the base link at position n.

Parameters
[in]nThe position of the base link to remove. 0 <= n < GetCount()
Returns
true if the base link was successfully removed, otherwise false.

◆ GetAtomArray()

void GetAtomArray ( BaseDocument doc,
AtomArray res 
) const

Gets an atom array with the base links of the array.

Parameters
[in]docThe document to get the base links. The caller owns the pointed document.
[in]resIs added the base links of the array.

◆ FromAtomArray()

void FromAtomArray ( const AtomArray ar)

Constructs the base link array from an atom array.

Parameters
[in]arThe source atom array.

◆ GetRealCount()

Int32 GetRealCount ( BaseDocument doc) const

Gets the number of valid base links in the array.

Parameters
[in]docThe document to check the base links. The caller owns the pointed document.
Returns
The number of valid base links in the array.