21 template<
typename T,
typename INDEX_TYPE,
template<
typename >
class BUFFER_TYPE >
32 template<
typename >
class BUFFER_TYPE >
55 ArrayOfArrays( INDEX_TYPE
const numArrays=0, INDEX_TYPE
const defaultArrayCapacity=0 ):
58 resize( numArrays, defaultArrayCapacity );
110 toView()
const && =
delete;
235 using ParentClass::operator[];
236 using ParentClass::operator();
254 void resize( INDEX_TYPE
const newSize, INDEX_TYPE
const defaultArrayCapacity=0 )
288 template<
typename ITER >
306 template<
typename ITER >
307 void insertArray( INDEX_TYPE
const i, ITER
const first, ITER
const last )
312 INDEX_TYPE
const offset = this->
m_offsets[ i ];
348 template<
typename ... ARGS >
362 template<
typename ITER >
379 template<
typename ... ARGS >
380 void emplace( INDEX_TYPE
const i, INDEX_TYPE
const j, ARGS && ... args )
394 template<
typename ITER >
395 void insertIntoArray( INDEX_TYPE
const i, INDEX_TYPE
const j, ITER
const first, ITER
const last )
411 template<
class ... ARGS >
412 void resizeArray( INDEX_TYPE
const i, INDEX_TYPE
const newSize, ARGS && ... args )
423 T *
const values = (*this)[i];
466 { ParentClass::template setName< decltype( *this ) >( name ); }
479 INDEX_TYPE
const newArraySize =
sizeOfArray( i ) + increase;
void emplace(BUFFER &buf, std::ptrdiff_t const size, std::ptrdiff_t const pos, ARGS &&... args)
Construct a new value at position pos.
Definition: bufferManipulation.hpp:315
void assimilate(ArrayOfSets< T, INDEX_TYPE, BUFFER_TYPE > &&src)
Steal the resources from an ArrayOfSets and convert it to an ArrayOfArrays.
Definition: ArrayOfArrays.hpp:197
#define LVARRAY_ASSERT(EXP)
Assert EXP is true with no message.
Definition: Macros.hpp:223
LVARRAY_HOST_DEVICE constexpr ArrayOfArraysView< T, INDEX_TYPE const, CONST_SIZES, BUFFER_TYPE > toView() const
Definition: ArrayOfArraysView.hpp:279
constexpr ArrayOfArraysView< T, INDEX_TYPE const, false, BUFFER_TYPE > toView() const &
Definition: ArrayOfArrays.hpp:98
void emplaceBack(BUFFER &buf, std::ptrdiff_t const size, ARGS &&... args)
Construct a new value at the end of the buffer.
Definition: bufferManipulation.hpp:297
#define ARRAYOFARRAYS_CHECK_BOUNDS(i)
Check that i is a valid array index.
Definition: ArrayOfArraysView.hpp:106
ArrayOfArrays(INDEX_TYPE const numArrays=0, INDEX_TYPE const defaultArrayCapacity=0)
Constructor.
Definition: ArrayOfArrays.hpp:55
INDEX_TYPE size_type
The integer type used for indexing, here for stl compatability.
Definition: ArrayOfArraysView.hpp:194
void emplaceBack(INDEX_TYPE const i, ARGS &&... args)
Append a value to an array constructing it in place with the given arguments.
Definition: ArrayOfArrays.hpp:349
void reserve(INDEX_TYPE const newCapacity)
Reserve space for the given number of arrays.
Definition: ArrayOfArraysView.hpp:638
void dynamicallyGrowArray(INDEX_TYPE const i, INDEX_TYPE const increase)
Dynamically grow the capacity of an array.
Definition: ArrayOfArrays.hpp:475
INDEX_TYPE IndexType
The integer type used for indexing.
Definition: ArrayOfArraysView.hpp:188
constexpr ArrayOfArraysView< T, INDEX_TYPE const, true, BUFFER_TYPE > toViewConstSizes() const &
Definition: ArrayOfArrays.hpp:120
void resize(INDEX_TYPE const newSize, INDEX_TYPE const defaultArrayCapacity=0)
Set the number of arrays.
Definition: ArrayOfArrays.hpp:254
BUFFER_TYPE< INDEX_TYPE > m_offsets
Definition: ArrayOfArraysView.hpp:965
LVARRAY_HOST_DEVICE CONSTEXPR_WITH_NDEBUG INDEX_TYPE_NC capacity() const
Definition: ArrayOfArraysView.hpp:373
BUFFER_TYPE< T > m_values
Definition: ArrayOfArraysView.hpp:972
void move(MemorySpace const space, bool touch=true) const
Move this ArrayOfArrays to the given memory space.
Definition: ArrayOfArraysView.hpp:584
void insertIntoArray(INDEX_TYPE const i, INDEX_TYPE const j, ITER const first, ITER const last)
Insert values into an array.
Definition: ArrayOfArrays.hpp:395
LVARRAY_HOST_DEVICE void emplaceBack(INDEX_TYPE const i, ARGS &&... args) const
Append a value to an array.
Definition: ArrayOfArraysView.hpp:444
INDEX_TYPE size() const
Definition: ArrayOfArrays.hpp:220
BUFFER_TYPE< SIZE_TYPE > m_sizes
Holds the size of each array.
Definition: ArrayOfArraysView.hpp:968
LVARRAY_HOST_DEVICE void appendToArray(INDEX_TYPE const i, ITER const first, ITER const last) const
Append values to an array.
Definition: ArrayOfArraysView.hpp:487
DISABLE_HD_WARNING LVARRAY_HOST_DEVICE void resize(T *const LVARRAY_RESTRICT ptr, std::ptrdiff_t const size, std::ptrdiff_t const newSize, ARGS &&... args)
Resize the give array.
Definition: arrayManipulation.hpp:283
T value_type
An alias for the type contained in the inner arrays, here for stl compatability.
Definition: ArrayOfArraysView.hpp:191
void appendArray(ITER const first, ITER const last)
Append an array.
Definition: ArrayOfArrays.hpp:289
void compress(BUFFERS &... buffers)
Compress the arrays so that the values of each array are contiguous with no extra capacity in between...
Definition: ArrayOfArraysView.hpp:669
LVARRAY_HOST_DEVICE void emplace(INDEX_TYPE const i, INDEX_TYPE const j, ARGS &&... args) const
Insert a value into an array.
Definition: ArrayOfArraysView.hpp:508
This class implements an array of arrays like object with contiguous storage.
Definition: ArrayOfArrays.hpp:33
LVARRAY_HOST_DEVICE constexpr std::enable_if< std::is_signed< INDEX_TYPE >::value, bool >::type isPositive(INDEX_TYPE const i)
Definition: arrayManipulation.hpp:82
ArrayOfArraysView & operator=(ArrayOfArraysView const &)=default
Default copy assignment operator.
void resize(INDEX_TYPE const newSize, INDEX_TYPE const defaultArrayCapacity=0)
Set the number of arrays.
Definition: ArrayOfArraysView.hpp:631
void setCapacityOfArray(INDEX_TYPE const i, INDEX_TYPE const newCapacity)
Set the capacity of an array.
Definition: ArrayOfArrays.hpp:440
void insertArray(INDEX_TYPE const i, ITER const first, ITER const last)
Insert an array.
Definition: ArrayOfArrays.hpp:307
ArrayOfArrays(ArrayOfArrays const &src)
Copy constructor, performs a deep copy.
Definition: ArrayOfArrays.hpp:67
This class provides a view into an array of arrays like object.
Definition: ArrayOfArraysView.hpp:170
LVARRAY_HOST_DEVICE constexpr INDEX_TYPE_NC valueCapacity() const
Definition: ArrayOfArraysView.hpp:394
LVARRAY_HOST_DEVICE CONSTEXPR_WITHOUT_BOUNDS_CHECK INDEX_TYPE_NC sizeOfArray(INDEX_TYPE const i) const
Definition: ArrayOfArraysView.hpp:332
#define ARRAYOFARRAYS_CHECK_INSERT_BOUNDS(i)
Check that i is a valid index to insert an array at.
Definition: ArrayOfArraysView.hpp:121
void appendToArray(INDEX_TYPE const i, ITER const first, ITER const last)
Append values to an array.
Definition: ArrayOfArrays.hpp:363
camp::resources::Platform MemorySpace
an alias for camp::resources::Platform.
Definition: bufferManipulation.hpp:31
LVARRAY_HOST_DEVICE constexpr ArrayOfArraysView< T, INDEX_TYPE const, true, BUFFER_TYPE > toViewConstSizes() const
Definition: ArrayOfArraysView.hpp:292
LVARRAY_HOST_DEVICE void emplaceBackAtomic(INDEX_TYPE const i, ARGS &&... args) const
Append a value to an array in a thread safe manner.
Definition: ArrayOfArraysView.hpp:465
The top level namespace.
Definition: Array.hpp:24
void appendArray(INDEX_TYPE const n)
Append an array.
Definition: ArrayOfArrays.hpp:270
Contains the implementation of LvArray::ArrayOfArraysView.
ArrayOfArrays & operator=(ArrayOfArrays &&src)
Default move assignment operator, performs a shallow copy.
Definition: ArrayOfArrays.hpp:185
This class implements an array of sets like object with contiguous storage.
Definition: ArrayOfArrays.hpp:22
void resizeFromCapacities(INDEX_TYPE const numSubArrays, INDEX_TYPE const *const capacities, BUFFERS &... buffers)
Clears the array and creates a new array with the given number of sub-arrays.
Definition: ArrayOfArraysView.hpp:725
~ArrayOfArrays()
Destructor, frees the values, sizes and offsets buffers.
Definition: ArrayOfArrays.hpp:80
void setEqualTo(INDEX_TYPE const srcNumArrays, INDEX_TYPE const srcMaxOffset, BUFFER_TYPE< INDEX_TYPE > const &srcOffsets, BUFFER_TYPE< INDEX_TYPE > const &srcSizes, BUFFER_TYPE< T > const &srcValues, PAIRS_OF_BUFFERS &&... pairs)
Set this ArrayOfArraysView equal to the provided arrays.
Definition: ArrayOfArraysView.hpp:830
void clearArray(INDEX_TYPE const i)
Clear the given array.
Definition: ArrayOfArrays.hpp:432
INDEX_TYPE_NC m_numArrays
The number of arrays contained.
Definition: ArrayOfArraysView.hpp:961
void emplace(INDEX_TYPE const i, INDEX_TYPE const j, ARGS &&... args)
Insert a value into an array constructing it in place.
Definition: ArrayOfArrays.hpp:380
void free(BUFFERS &... buffers)
Destroy all the objects held by this array and free all associated memory.
Definition: ArrayOfArraysView.hpp:806
LVARRAY_HOST_DEVICE CONSTEXPR_WITHOUT_BOUNDS_CHECK INDEX_TYPE_NC capacityOfArray(INDEX_TYPE const i) const
Definition: ArrayOfArraysView.hpp:384
LVARRAY_HOST_DEVICE void insertIntoArray(INDEX_TYPE const i, INDEX_TYPE const j, ITER const first, ITER const last) const
Insert values into an array.
Definition: ArrayOfArraysView.hpp:530
LVARRAY_HOST_DEVICE void eraseFromArray(INDEX_TYPE const i, INDEX_TYPE const j, INDEX_TYPE const n=1) const
Erase values from an array.
Definition: ArrayOfArraysView.hpp:551
void setCapacityOfArray(INDEX_TYPE const i, INDEX_TYPE const newCapacity, BUFFERS &... buffers)
Set the capacity of the given array.
Definition: ArrayOfArraysView.hpp:877
void assimilate(ArrayOfArraysView< T, INDEX_TYPE, CONST_SIZES, BUFFER_TYPE > &&src)
Steal the resources of src, clearing it in the process.
Definition: ArrayOfArraysView.hpp:749
void move(MemorySpace const space, bool touch=true) const
Move this ArrayOfArrays to the given memory space.
Definition: ArrayOfArrays.hpp:456
void setName(std::string const &name)
Set the name to be displayed whenever the underlying Buffer's user call back is called.
Definition: ArrayOfArrays.hpp:465
LVARRAY_HOST_DEVICE constexpr INDEX_TYPE_NC size() const
Definition: ArrayOfArraysView.hpp:324
LVARRAY_HOST_DEVICE constexpr ArrayOfArraysView< T const, INDEX_TYPE const, true, BUFFER_TYPE > toViewConst() const
Definition: ArrayOfArraysView.hpp:305
DISABLE_HD_WARNING constexpr LVARRAY_HOST_DEVICE std::iterator_traits< ITER >::difference_type iterDistance(ITER first, ITER const last, std::input_iterator_tag)
Definition: arrayManipulation.hpp:105
void eraseArray(INDEX_TYPE const i)
Erase an array.
Definition: ArrayOfArrays.hpp:325
ArrayOfArrays & operator=(ArrayOfArrays const &src)
Copy assignment operator, performs a deep copy.
Definition: ArrayOfArrays.hpp:169
void reserveValues(INDEX_TYPE const newValueCapacity, BUFFERS &... buffers)
Reserve space for the given number of values.
Definition: ArrayOfArraysView.hpp:652
void resizeArray(INDEX_TYPE const i, INDEX_TYPE const newSize, ARGS &&... args)
Set the number of values in an array.
Definition: ArrayOfArrays.hpp:412
void erase(BUFFER &buf, std::ptrdiff_t const size, std::ptrdiff_t const pos)
Erase a value from the buffer.
Definition: bufferManipulation.hpp:373
T ValueType
An alias for the type contained in the inner arrays.
Definition: ArrayOfArraysView.hpp:185
void resizeFromOffsets(INDEX_TYPE const numSubArrays, INDEX_TYPE const *const offsets, BUFFERS &... buffers)
Clears the array and creates a new array with the given number of sub-arrays.
Definition: ArrayOfArraysView.hpp:702
constexpr ArrayOfArraysView< T const, INDEX_TYPE const, true, BUFFER_TYPE > toViewConst() const &
Definition: ArrayOfArrays.hpp:142