ArrayInterface< TYPE > Class Template Reference

#include <array.h>

Inheritance diagram for ArrayInterface< TYPE >:

详细描述

template<typename TYPE>
class maxon::ArrayInterface< TYPE >

ArrayInterface is an interface which provides the usual array functions as virtual methods. Each standard array of the MAXON API can be represented as such an interface, so this allows to write non-template functions which nevertheless are able to deal with any kind of array.

If the function won't modify both the structure and values of the array, you should use a const ArrayInterface with const elements:

void Func( const ArrayInterface<const Char>& array);
BlockArray<Char> myArray; Func(myArray); // OK BaseArray<Char> myArray2; Func(myArray2); // OK

As the access to the array happens via virtual methods, there is an inevitable performance penalty. Often this will be negligible, but if not, you can use the GetBlock function to obtain a fraction of the array as a Block of array elements which are laid out regularly in memory. Then as long as the elements you need to access are within that same block, no further virtual method invocations are necessary. E.g., a BaseArray consists of just a single block, and a BlockArray of a small number of blocks (small compared to the number of elements). The iterator of an ArrayInterface already takes this into account, so it uses the minimum possible number of virtual method invocations.

For an array which shall be modified, use WritableArrayInterface as type of the function parameter instead.

Template Parameters
TYPE Type of elements of the array.

Public Types

using  ValueType = TYPE
using  Super = StaticArrayInterface < TYPE >
using  Iterator = typename Super::template IteratorTemplate < ArrayInterface >
using  ConstIterator = typename Super::template IteratorTemplate < const ArrayInterface >
-  Public Types inherited from Collection< ArrayInterface< TYPE >, TYPE, StaticArrayInterface< TYPE > >
using  Super = BaseCollection < ArrayInterface < TYPE >, StaticArrayInterface < TYPE > >
using  ValueType = TYPE
-  Public Types inherited from BaseCollection< ArrayInterface< TYPE >, StaticArrayInterface< TYPE > >
using  IsCollection = std::true_type
-  Public Types inherited from StaticArrayInterface< TYPE >
using  ValueType = TYPE
using  NonConstValueType = typename std::remove_const< TYPE >::type
using  TYPE_FOR_SIZEOF = typename std::conditional< GENERIC , Char , TYPE >::type
using  Iterator = IteratorTemplate < StaticArrayInterface >
using  ConstIterator = IteratorTemplate < const StaticArrayInterface >

公共成员函数

TYPE &  operator[] ( Int index)
MAXON_METHOD Int   GetBlock ( Int index, Block < const TYPE > &block) const
Int   GetBlock ( Int index, Block < typename Super::NonConstValueType > &block)
MAXON_METHOD Result < void >  PrivateInsert ( Int index, const StridedBlock < const TYPE > &values, Bool move)
MAXON_METHOD ResultMem   Resize ( Int count, COLLECTION_RESIZE_FLAGS resizeFlags= COLLECTION_RESIZE_FLAGS::DEFAULT )
MAXON_METHOD ResultMem   SetCapacityHint ( Int requestedCapacity, COLLECTION_RESIZE_FLAGS resizeFlags= COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY )
MAXON_METHOD ResultRef < TYPE >  Insert ( Int index)
MAXON_FUNCTION ResultRef < TYPE >  Insert ( Int index, const TYPE &value)
MAXON_FUNCTION ResultRef < TYPE >  Insert ( Int index, TYPE &&value)
MAXON_METHOD ResultMem   Insert ( Int index, const Block < const TYPE > &values)
MAXON_METHOD ResultMem   Insert ( Int index, const MoveBlock < TYPE > &values)
MAXON_METHOD ResultRef < TYPE >  Append ()
MAXON_FUNCTION ResultRef < TYPE >  Append (const TYPE &value)
MAXON_FUNCTION ResultRef < TYPE >  Append (TYPE &&value)
template<typename A >
MAXON_FUNCTION ResultRef < TYPE >  Append (A &&value)
MAXON_FUNCTION Bool   Pop ()
MAXON_FUNCTION Bool   Pop (TYPE *dst)
MAXON_METHOD ResultMem   Erase ( Int index, Int count=1)
template<typename C >
ArrayInterface::template IteratorTemplate < C >  Erase (const typename ArrayInterface::template IteratorTemplate < C > &it)
MAXON_METHOD ResultMem   SwapErase ( Int index, Int count=1)
MAXON_METHOD void  重置 ()
MAXON_METHOD void  Flush ()
MAXON_METHOD Result < void >  CopyFrom (const ArrayInterface &other)
MAXON_METHOD void  SetPersistentIdGenerator (const PersistentIdGenerator &generator)
MAXON_METHOD Int   GetMemorySize () const
template<typename DT >
MAXON_FUNCTION Bool   HasType () const
template<typename DT >
MAXON_FUNCTION void  AssertType () const
template<typename T2 >
ArrayInterface < T2 > &  AssertCast ()
template<typename T2 >
const ArrayInterface < T2 > &  AssertCast () const
  operator const ArrayInterface< const TYPE > & () const
  operator const ArrayInterface< typename std::conditional< STD_IS_REPLACEMENT (same, const TYPE, const Generic)
const const Generic :: type &const  operator ArrayInterface< typename std::conditional< STD_IS_REPLACEMENT (same, TYPE, Generic)
const const Generic :: type &const Generic :: type operator const NonConstArray< TYPE > & ()
  operator const NonConstArray< typename std::conditional< STD_IS_REPLACEMENT (same, TYPE, Generic)
MAXON_FUNCTION ArrayInterface < TYPE >:: ConstIterator   Begin () const
Iterator   Begin ()
MAXON_FUNCTION ArrayInterface < TYPE >:: ConstIterator   End () const
Iterator   End ()
MAXON_METHOD Int   GetBlock ( Int index, SimdBlock < const TYPE > &block) const
Int   GetBlock ( Int index, StridedBlock < const TYPE > &block) const
Int   GetBlock ( Int index, Block < const TYPE, false > &block) const
MAXON_METHOD Result < Int GetBlock ( Int index, SimdBlock < NonConstValueType > &block)
Int   GetBlock ( Int index, StridedBlock < NonConstValueType > &block)
-  Public Member Functions inherited from ArrayBase0< ArrayInterface< TYPE >, TYPE, StaticArrayInterface< TYPE >, DefaultCompare >
MAXON_ATTRIBUTE_FORCE_INLINE   ArrayBase0 (ARGS &&... args)
Bool   IsValidIndex ( Int index) const
Result < void >  CheckValidIndex ( Int index) const
Int   FindIndex (typename ByValueParam < TYPE >:: type v, Int start) const
Int   FindLastIndex (typename ByValueParam < TYPE >:: type v) const
Int   FindLastIndex (typename ByValueParam < TYPE >:: type v, Int start) const
Bool   EraseFirst (typename ByValueParam < TYPE >:: type v)
Int   EraseAll (typename ByValueParam < TYPE >:: 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 >  添加 (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
HashInt   GetHashCode () const
MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator < ArrayInterface < TYPE > >  切片 ( Int start)
MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator < const ArrayInterface < TYPE > >  切片 ( Int start) const
MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator < ArrayInterface < TYPE > >  切片 ( Int start, Int end)
MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator < const ArrayInterface < TYPE > >  切片 ( Int start, Int end) const
BlockIterator < ArrayInterface < TYPE >, TYPE , false, false >  GetBlocks ()
BlockIterator < ArrayInterface < TYPE >, TYPE , true, false >  GetBlocks () const
BlockIterator < ArrayInterface < TYPE >, TYPE , false, true >  GetStridedBlocks ()
BlockIterator < ArrayInterface < TYPE >, TYPE , true, true >  GetStridedBlocks () const
-  Public Member Functions inherited from Collection< ArrayInterface< TYPE >, TYPE, StaticArrayInterface< TYPE > >
MAXON_ATTRIBUTE_FORCE_INLINE   Collection (ARGS &&... args)
ResultOk < void >  VariadicAppend ()
Result < void >  VariadicAppend (V &&value, VALUES &&... rest)
  operator ValueReceiver< const TYPE & > ()
  operator ValueReceiver< TYPE && > ()
  operator ValueReceiver< typename std::conditional< STD_IS_REPLACEMENT (scalar, TYPE )
DummyParamType &  type ()
Result < Bool ForEach (FN &&callback) const
Result < Bool ForEach (FN &&callback)
H::Iterator  Find (typename ByValueParam < TYPE >:: type v)
H::ConstIterator  Find (typename ByValueParam < TYPE >:: type v) const
Int   FindIndex (typename ByValueParam < TYPE >:: type v) const
MAXON_ATTRIBUTE_FORCE_INLINE Bool   Contains (typename ByValueParam < TYPE >:: type v) const
-  Public Member Functions inherited from BaseCollection< ArrayInterface< TYPE >, StaticArrayInterface< TYPE > >
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_REPLACEMENT (same, typename std::decay< COMPARE >::type, EQUALITY ), 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=nullptr) const
MAXON_ATTRIBUTE_FORCE_INLINE Bool   ContainsAll (COLLECTION2 &&other) const
Bool   ContainsAllImpl (COLLECTION2 &&other, OverloadRank0 ) const
-  Public Member Functions inherited from StaticArrayInterface< TYPE >
MAXON_METHOD Int   GetCount () const
MAXON_FUNCTION Bool   IsEmpty () const
MAXON_FUNCTION Bool   IsPopulated () const
const MAXON_METHOD TYPE &  operator[] ( Int index) const
MAXON_METHOD ResultRef < TYPE >  GetWritable ( Int index)
template<typename A >
MAXON_FUNCTION ResultMem   Set ( Int index, A &&value)
MAXON_METHOD Int   GetBlock ( Int index, SimdBlock < const TYPE > &block) const
Int   GetBlock ( Int index, StridedBlock < const TYPE > &block) const
Int   GetBlock ( Int index, Block < const TYPE, false > &block) const
MAXON_METHOD Result < Int GetBlock ( Int index, SimdBlock < NonConstValueType > &block)
Int   GetBlock ( Int index, StridedBlock < NonConstValueType > &block)
const MAXON_METHOD DataType GetValueDataType () const
const MAXON_METHOD PersistentIdGenerator &  GetPersistentIdGenerator () const
BlockIterator < StaticArrayInterface , TYPE, true, false >  GetBlocks () const
BlockIterator < StaticArrayInterface , TYPE, true, true >  GetStridedBlocks () const
Int   GetValueSize () const
MAXON_FUNCTION StaticArrayInterface < TYPE >:: ConstIterator   Begin () const
Iterator   Begin ()
MAXON_FUNCTION StaticArrayInterface < TYPE >:: ConstIterator   End () const
Iterator   End ()

Public Attributes

  MAXON_METHOD_RESERVE
const  DummyReturnType
const const Generic :: type &const  DummyReturnType
  DummyReturnType
-  Public Attributes inherited from Collection< ArrayInterface< TYPE >, TYPE, StaticArrayInterface< TYPE > >
  VALUETYPE
-  Public Attributes inherited from StaticArrayInterface< TYPE >
  MAXON_METHOD_RESERVE

私有成员函数

  MAXON_INTERFACE_SIMPLE_VIRTUAL_DERIVED ( ArrayInterface , MAXON_REFERENCE_COPY_ON_WRITE )

Static Private Member Functions

static ArrayInterface Alloc ( MAXON_SOURCE_LOCATION_DECLARATION )

Friends

template<typename ARRAY >
class  ArrayImpl
class  StrongCOWRefHandler

Additional Inherited Members

-  Static Public Member Functions inherited from Collection< ArrayInterface< TYPE >, TYPE, StaticArrayInterface< TYPE > >
static const TYPE GetMapKey (const TYPE &key)
-  Static Public Attributes inherited from ArrayBase0< ArrayInterface< TYPE >, TYPE, StaticArrayInterface< TYPE >, DefaultCompare >
static const COLLECTION_KIND   KIND
-  Static Public Attributes inherited from StaticArrayInterface< TYPE >
static const Bool   GENERIC

Member Typedef Documentation

◆  ValueType

using ValueType = TYPE

◆  Super

using Super = StaticArrayInterface <TYPE>

◆  Iterator

using Iterator = typename Super::template IteratorTemplate < ArrayInterface >

◆  ConstIterator

using ConstIterator = typename Super::template IteratorTemplate <const ArrayInterface >

成员函数文档编制

◆  MAXON_INTERFACE_SIMPLE_VIRTUAL_DERIVED()

MAXON_INTERFACE_SIMPLE_VIRTUAL_DERIVED ( ArrayInterface < TYPE >  ,
MAXON_REFERENCE_COPY_ON_WRITE    
)
private

◆  operator[]()

TYPE& operator[] ( Int   index )

◆  GetBlock() [1/7]

MAXON_METHOD Int GetBlock ( Int   index ,
Block < const TYPE > &  block  
) const

Determines a contiguous non-strided block of array elements which contains the element at index . The returned blocks are guaranteed to form a partition of the array, i.e., no two blocks overlap, and they cover the whole array.

Using this method can greatly reduce the performance penalty of virtual method invocations of the Array interface as only one such invocation has to happen per block, and a block may consist of a relatively large number of elements which can then be accessed directly.

参数
[in] index Element index.
[out] block Block which contains the element at index .
返回
Start index of the block. I.e., the requested element can be found within the block at index - start index.

◆  GetBlock() [2/7]

Int GetBlock ( Int   index ,
Block < typename Super::NonConstValueType > &  block  
)

◆  PrivateInsert()

MAXON_METHOD Result <void> PrivateInsert ( Int   index ,
const StridedBlock < const TYPE > &  values ,
Bool   move  
)

For future compatibility, not implemented at the moment.

◆  Resize()

MAXON_METHOD ResultMem Resize ( Int   count ,
COLLECTION_RESIZE_FLAGS   resizeFlags = COLLECTION_RESIZE_FLAGS::DEFAULT  
)

Resizes the array to contain count elements. If count is smaller than GetCount() all extra elements are being deleted. If it is greater the array is expanded and the default constructor is called for new elements.

参数
[in] count New array size.
[in] resizeFlags See COLLECTION_RESIZE_FLAGS.
返回
False if allocation failed.

◆  SetCapacityHint()

MAXON_METHOD ResultMem SetCapacityHint ( Int   requestedCapacity ,
COLLECTION_RESIZE_FLAGS   resizeFlags = COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY  
)

Prepare the internal array so that it can hold at least the given number of elements with as few further memory allocations as possible.

参数
[in] requestedCapacity The desired internal capacity.
[in] resizeFlags If ON_GROW_FIT_TO_SIZE is set, the collection will use only as much memory as needed to hold the data.
返回
False if allocation failed.

◆  Insert() [1/5]

MAXON_METHOD ResultRef <TYPE> Insert ( Int   index )

Inserts a new element at index . The element will be default-constructed.

参数
[in] index Insertion index (the array size will increase and the existing elements are moved).
返回
Element reference or OutOfMemoryError if the allocation failed (or position is out of boundaries).

◆  Insert() [2/5]

MAXON_FUNCTION ResultRef <TYPE> Insert ( Int   index ,
const TYPE &  value  
)

Inserts a new element at index position and initializes it with #value.

参数
[in] index Insert index (the array size will increase and the existing elements are moved).
[in] value Value to be inserted.
返回
Element reference or OutOfMemoryError if the allocation failed (or position is out of boundaries).

◆  Insert() [3/5]

MAXON_FUNCTION ResultRef <TYPE> Insert ( Int   index ,
TYPE &&  value  
)

Inserts a new element at index position and initializes it with #value.

参数
[in] index Insert index (the array size will increase and the existing elements are moved).
[in] value Value to be inserted.
返回
Element reference or OutOfMemoryError if the allocation failed (or position is out of boundaries).

◆  Insert() [4/5]

MAXON_METHOD ResultMem Insert ( Int   index ,
const Block < const TYPE > &  values  
)

Inserts a number of new elements at index . The elements will be copied.

参数
[in] index Insertion index (the array size will increase and the existing elements are moved).
[in] values Block with values to be copied. If the block points to nullptr, only its count is used, and you have to call the constructor of the new elements manually.
返回
False if insert failed.

◆  Insert() [5/5]

MAXON_METHOD ResultMem Insert ( Int   index ,
const MoveBlock < TYPE > &  values  
)

Inserts a number of new elements at index . The elements will be moved.

参数
[in] index Insertion index (the array size will increase and the existing elements are moved).
[in] values Block with values to be moved. If the block points to nullptr, only its count is used, and you have to call the constructor of the new elements manually.
返回
False if insert failed.

◆  Append() [1/4]

MAXON_METHOD ResultRef <TYPE> Append ( )

Adds a new element at the end of the array. The element will be default-constructed.

返回
Element reference or OutOfMemoryError if the allocation failed.

◆  Append() [2/4]

MAXON_FUNCTION ResultRef <TYPE> Append ( const TYPE &  value )

Adds a new element at the end of the array and initializes it with #value.

参数
[in] value Value to be appended.
返回
Element reference or OutOfMemoryError if the allocation failed.

◆  Append() [3/4]

MAXON_FUNCTION ResultRef <TYPE> Append ( TYPE &&  value )

Adds a new element at the end of the array and initializes it with #value.

参数
[in] value Value to be appended.
返回
Element reference or OutOfMemoryError if the allocation failed.

◆  Append() [4/4]

MAXON_FUNCTION ResultRef <TYPE> Append ( A &&  value )

Adds a new element at the end of the array and initializes it with #value.

参数
[in] value Value to be appended.
返回
Element reference or OutOfMemoryError if the allocation failed.

◆  Pop() [1/2]

MAXON_FUNCTION Bool Pop ( )

Deletes the last element.

返回
True if there was at least one element.

◆  Pop() [2/2]

MAXON_FUNCTION Bool Pop ( TYPE *  dst )

Deletes the last element.

参数
[out] dst Nullptr or pointer to return value.
返回
True if there was at least one element.

◆  Erase() [1/2]

MAXON_METHOD ResultMem Erase ( Int   index ,
Int   count = 1  
)

Erases (removes and deletes) elements.

参数
[in] index Erase index.
[in] count Number of elements to be erased (if eraseCnt is higher than what is available at position Erase() will succeed, but remove only the number of available elements).
返回
True if operation was successul.

◆  Erase() [2/2]

ArrayInterface::template IteratorTemplate <C> Erase ( const typename ArrayInterface < TYPE >::template IteratorTemplate < C > &  it )

Erases (removes and deletes) an element.

参数
[in] it Iterator pointing to the element to erase.
返回
True if operation was successul.

◆  SwapErase()

MAXON_METHOD ResultMem SwapErase ( Int   index ,
Int   count = 1  
)

Erases elements within the array and moves elements from the end to the erased gap. This is generally faster than Erase because at most count elements have to be moved, but it changes the order of elements.

参数
[in] index Erase index.
[in] count Number of elements to be erased (if eraseCnt is higher than what is available at position Erase() will succeed, but remove only the number of available elements).
返回
True if operation was successul.

◆  Reset()

MAXON_METHOD void Reset ( )

Deletes all elements (calls destructors and frees memory).

◆  Flush()

MAXON_METHOD void Flush ( )

Deletes all elements, but doesn't free memory (calls destructors though).

◆  CopyFrom()

MAXON_METHOD Result <void> CopyFrom ( const ArrayInterface < TYPE > &  other )

Sets this array to a copy of the given other array.

参数
[in] other Source array.
返回
Success of operation.

◆  SetPersistentIdGenerator()

MAXON_METHOD void SetPersistentIdGenerator ( const PersistentIdGenerator &  generator )

◆  GetMemorySize()

MAXON_METHOD Int GetMemorySize ( ) const

Calculates the memory usage for this array.

返回
Memory size in bytes.

◆  HasType()

MAXON_FUNCTION Bool HasType ( ) const

◆  AssertType()

MAXON_FUNCTION void AssertType ( ) const

Issues a failed DebugAssert if the DataType of this array doesn't match T. If T is Generic, no check happens.

Template Parameters
DT Type to check.

◆  AssertCast() [1/2]

ArrayInterface <T2>& AssertCast ( )

Casts this array to an array with elements of type T2. If T2 doesn't match the actual data type of this array, a failed DebugAssert is issued. This function only makes sense when the original array uses Generic as its type.

Template Parameters
T2 Element type of the destination array.
返回
This array, cast to an ArrayInterface of T2 elements.

◆  AssertCast() [2/2]

const ArrayInterface <T2>& AssertCast ( ) const

Casts this array to an array with elements of type T2. If T2 doesn't match the actual data type of this array, a failed DebugAssert is issued. This function only makes sense when the original array uses Generic as its type.

Template Parameters
T2 Element type of the destination array.
返回
This array, cast to an ArrayInterface of T2 elements.

◆  operator const ArrayInterface< const TYPE > &()

operator const ArrayInterface < const TYPE > & ( ) const

◆  operator const ArrayInterface< typename std::conditional< STD_IS_REPLACEMENT()

operator const ArrayInterface < typename std::conditional< STD_IS_REPLACEMENT ( same  ,
const  TYPE ,
const  Generic  
)

◆  operator ArrayInterface< typename std::conditional< STD_IS_REPLACEMENT()

const const Generic :: type & const operator ArrayInterface < typename std::conditional< STD_IS_REPLACEMENT ( same  ,
TYPE  ,
Generic   
)

◆  operator const NonConstArray< TYPE > &()

const const Generic :: type & const Generic :: type & operator const NonConstArray < TYPE > & ( )

◆  operator const NonConstArray< typename std::conditional< STD_IS_REPLACEMENT()

operator const NonConstArray < typename std::conditional< STD_IS_REPLACEMENT ( same  ,
TYPE  ,
Generic   
)

◆  Begin() [1/2]

MAXON_FUNCTION ArrayInterface <TYPE>:: ConstIterator Begin ( ) const

Returns an iterator pointing to the first array element.

返回
Iterator for the first element (equal to End() if the array is empty).

◆  Begin() [2/2]

Iterator Begin ( )

Returns an iterator pointing to the first array element.

返回
Iterator for the first element (equal to End() if the array is empty).

◆  End() [1/2]

MAXON_FUNCTION ArrayInterface <TYPE>:: ConstIterator End ( ) const

Returns an iterator pointing one behind the last array element.

返回
Iterator for the array end, this is one behind the last element.

◆  End() [2/2]

Iterator End ( )

Returns an iterator pointing one behind the last array element.

返回
Iterator for the array end, this is one behind the last element.

◆  Alloc()

static ArrayInterface * Alloc ( MAXON_SOURCE_LOCATION_DECLARATION   )
static private

◆  GetBlock() [3/7]

MAXON_METHOD Int GetBlock

Determines a contiguous, possibly strided block of array elements which contains the element at index . The returned blocks are guaranteed to form a partition of the array, i.e., no two blocks overlap, and they cover the whole array.

Using this method can greatly reduce the performance penalty of virtual method invocations of the Array interface as only one such invocation has to happen per block, and a block may consist of a relatively large number of elements which can then be accessed directly.

参数
[in] index Element index.
[out] block Block which contains the element at index .
返回
Start index of the block. I.e., the requested element can be found within the block at index - start index.

◆  GetBlock() [4/7]

Int GetBlock

◆  GetBlock() [5/7]

Int GetBlock

◆  GetBlock() [6/7]

MAXON_METHOD Result < Int > GetBlock

Determines a contiguous, possibly strided writable block of array elements which contains the element at index . The returned blocks are guaranteed to form a partition of the array, i.e., no two blocks overlap, and they cover the whole array.

Using this method can greatly reduce the performance penalty of virtual method invocations of the Array interface as only one such invocation has to happen per block, and a block may consist of a relatively large number of elements which can then be accessed directly.

参数
[in] index Element index.
[out] block Block which contains the element at index .
返回
Start index of the block. I.e., the requested element can be found within the block at index - start index. @MAXON_ANNOTATION{cowName=GetWritableBlock}

◆  GetBlock() [7/7]

Int GetBlock

Friends And Related Function Documentation

◆  ArrayImpl

friend class ArrayImpl
friend

◆  StrongCOWRefHandler

friend class StrongCOWRefHandler
friend

Member Data Documentation

◆  MAXON_METHOD_RESERVE

MAXON_METHOD_RESERVE

◆  DummyReturnType [1/3]

const DummyReturnType

◆  DummyReturnType [2/3]

const const Generic :: type & const DummyReturnType

◆  DummyReturnType [3/3]

DummyReturnType