Jet  v1.3.3
Public Member Functions | List of all members
jet::ArrayAccessor< T, 1 > Class Template Referencefinal

1-D array accessor class. More...

#include <jet/array_accessor1.h>

Public Member Functions

 ArrayAccessor ()
 Constructs empty 1-D array accessor. More...
 
 ArrayAccessor (size_t size, T *const data)
 Constructs an array accessor that wraps given array. More...
 
 ArrayAccessor (const ArrayAccessor &other)
 Copy constructor. More...
 
void set (const ArrayAccessor &other)
 Replaces the content with given other array accessor. More...
 
void reset (size_t size, T *const data)
 Resets the array. More...
 
T & at (size_t i)
 Returns the reference to the i-th element. More...
 
const T & at (size_t i) const
 Returns the const reference to the i-th element. More...
 
T *const begin () const
 Returns the begin iterator of the array. More...
 
T *const end () const
 Returns the end iterator of the array. More...
 
T * begin ()
 Returns the begin iterator of the array. More...
 
T * end ()
 Returns the end iterator of the array. More...
 
size_t size () const
 Returns size of the array. More...
 
T *const data () const
 Returns the raw pointer to the array data. More...
 
void swap (ArrayAccessor &other)
 Swaps the content of with other array accessor. More...
 
template<typename Callback >
void forEach (Callback func) const
 Iterates the array and invoke given func for each element. More...
 
template<typename Callback >
void forEachIndex (Callback func) const
 Iterates the array and invoke given func for each index. More...
 
template<typename Callback >
void parallelForEach (Callback func)
 Iterates the array and invoke given func for each element in parallel using multi-threading. More...
 
template<typename Callback >
void parallelForEachIndex (Callback func) const
 Iterates the array and invoke given func for each index in parallel using multi-threading. More...
 
T & operator[] (size_t i)
 Returns the reference to i-th element. More...
 
const T & operator[] (size_t i) const
 Returns the const reference to i-th element. More...
 
ArrayAccessoroperator= (const ArrayAccessor &other)
 Copies given array accessor other. More...
 
 operator ConstArrayAccessor< T, 1 > () const
 Casts type to ConstArrayAccessor. More...
 

Detailed Description

template<typename T>
class jet::ArrayAccessor< T, 1 >

1-D array accessor class.

This class represents 1-D array accessor. Array accessor provides array-like data read/write functions, but does not handle memory management. Thus, it is more like a random access iterator, but with multi-dimension support.

See also
Array1<T, 2>
Template Parameters
T- Array value type.

Constructor & Destructor Documentation

◆ ArrayAccessor() [1/3]

template<typename T >
jet::ArrayAccessor< T, 1 >::ArrayAccessor ( )

Constructs empty 1-D array accessor.

◆ ArrayAccessor() [2/3]

template<typename T >
jet::ArrayAccessor< T, 1 >::ArrayAccessor ( size_t  size,
T *const  data 
)

Constructs an array accessor that wraps given array.

◆ ArrayAccessor() [3/3]

template<typename T >
jet::ArrayAccessor< T, 1 >::ArrayAccessor ( const ArrayAccessor< T, 1 > &  other)

Copy constructor.

Member Function Documentation

◆ at() [1/2]

template<typename T >
T& jet::ArrayAccessor< T, 1 >::at ( size_t  i)

Returns the reference to the i-th element.

◆ at() [2/2]

template<typename T >
const T& jet::ArrayAccessor< T, 1 >::at ( size_t  i) const

Returns the const reference to the i-th element.

◆ begin() [1/2]

template<typename T >
T* jet::ArrayAccessor< T, 1 >::begin ( )

Returns the begin iterator of the array.

◆ begin() [2/2]

template<typename T >
T* const jet::ArrayAccessor< T, 1 >::begin ( ) const

Returns the begin iterator of the array.

◆ data()

template<typename T >
T* const jet::ArrayAccessor< T, 1 >::data ( ) const

Returns the raw pointer to the array data.

◆ end() [1/2]

template<typename T >
T* jet::ArrayAccessor< T, 1 >::end ( )

Returns the end iterator of the array.

◆ end() [2/2]

template<typename T >
T* const jet::ArrayAccessor< T, 1 >::end ( ) const

Returns the end iterator of the array.

◆ forEach()

template<typename T >
template<typename Callback >
void jet::ArrayAccessor< T, 1 >::forEach ( Callback  func) const

Iterates the array and invoke given func for each element.

This function iterates the array elements and invoke the callback function func. The callback function takes array's element as its input. The order of execution will be 0 to N-1 where N is the size of the array. Below is the sample usage:

int data = {1, 2, 3, 4, 5, 6};
ArrayAccessor<int, 1> acc(6, data);
acc.forEach([](int elem) {
printf("%d\n", elem);
});

◆ forEachIndex()

template<typename T >
template<typename Callback >
void jet::ArrayAccessor< T, 1 >::forEachIndex ( Callback  func) const

Iterates the array and invoke given func for each index.

This function iterates the array elements and invoke the callback function func. The callback function takes one parameter which is the index of the array. The order of execution will be 0 to N-1 where N is the size of the array. Below is the sample usage:

int data = {1, 2, 3, 4, 5, 6};
ArrayAccessor<int, 1> acc(6, data);
acc.forEachIndex([&](size_t i) {
acc[i] = 4.f * i + 1.5f;
});

◆ operator ConstArrayAccessor< T, 1 >()

template<typename T >
jet::ArrayAccessor< T, 1 >::operator ConstArrayAccessor< T, 1 > ( ) const

Casts type to ConstArrayAccessor.

◆ operator=()

template<typename T >
ArrayAccessor& jet::ArrayAccessor< T, 1 >::operator= ( const ArrayAccessor< T, 1 > &  other)

Copies given array accessor other.

◆ operator[]() [1/2]

template<typename T >
T& jet::ArrayAccessor< T, 1 >::operator[] ( size_t  i)

Returns the reference to i-th element.

◆ operator[]() [2/2]

template<typename T >
const T& jet::ArrayAccessor< T, 1 >::operator[] ( size_t  i) const

Returns the const reference to i-th element.

◆ parallelForEach()

template<typename T >
template<typename Callback >
void jet::ArrayAccessor< T, 1 >::parallelForEach ( Callback  func)

Iterates the array and invoke given func for each element in parallel using multi-threading.

This function iterates the array elements and invoke the callback function func in parallel using multi-threading. The callback function takes array's element as its input. The order of execution will be non-deterministic since it runs in parallel. Below is the sample usage:

int data = {1, 2, 3, 4, 5, 6};
ArrayAccessor<int, 1> acc(6, data);
acc.parallelForEach([](int& elem) {
elem *= 2;
});

The parameter type of the callback function doesn't have to be T&, but const T& or T can be used as well.

◆ parallelForEachIndex()

template<typename T >
template<typename Callback >
void jet::ArrayAccessor< T, 1 >::parallelForEachIndex ( Callback  func) const

Iterates the array and invoke given func for each index in parallel using multi-threading.

This function iterates the array elements and invoke the callback function func in parallel using multi-threading. The callback function takes one parameter which is the index of the array. The order of execution will be non-deterministic since it runs in parallel. Below is the sample usage:

int data = {1, 2, 3, 4, 5, 6};
ArrayAccessor<int, 1> acc(6, data);
acc.parallelForEachIndex([](size_t i) {
acc[i] *= 2;
});

◆ reset()

template<typename T >
void jet::ArrayAccessor< T, 1 >::reset ( size_t  size,
T *const  data 
)

Resets the array.

◆ set()

template<typename T >
void jet::ArrayAccessor< T, 1 >::set ( const ArrayAccessor< T, 1 > &  other)

Replaces the content with given other array accessor.

◆ size()

template<typename T >
size_t jet::ArrayAccessor< T, 1 >::size ( ) const

Returns size of the array.

◆ swap()

template<typename T >
void jet::ArrayAccessor< T, 1 >::swap ( ArrayAccessor< T, 1 > &  other)

Swaps the content of with other array accessor.


The documentation for this class was generated from the following file:
jet::ArrayAccessor< T, 1 >::data
T *const data() const
Returns the raw pointer to the array data.