![]() |
LibraryLink Utilities
3.0.1
Modern C++ wrapper over LibraryLink and WSTP
|
This is a class template, where template parameter T is the type of data elements. NumericArray is derived from MArray.
NumericArray<> classes automate creation and deletion of MNumericArrays. They are strongly typed (no void* to underlying memory) and almost all functions from <algorithms> can be used on NumericArray.
| T | - type of underlying data |
Inheritance diagram for LLU::NumericArray< T >:
Collaboration diagram for LLU::NumericArray< T >:#include <NumericArray.h>
Public Types | |
| using | value_type = T |
| Type of elements stored. More... | |
| using | iterator = value_type * |
| Iterator type. More... | |
| using | const_iterator = const value_type * |
| Constant iterator type. More... | |
| using | reverse_iterator = std::reverse_iterator< iterator > |
| Reverse iterator type. More... | |
| using | const_reverse_iterator = std::reverse_iterator< const_iterator > |
| Constant reverse iterator type. More... | |
| using | reference = value_type & |
| Reference type. More... | |
| using | const_reference = const value_type & |
| Constant reference type. More... | |
| using | Container = Argument::CType< Type > |
| The type of underlying LibraryLink structure (e.g. MTensor, MImage, etc.) will be called "Container". More... | |
Public Member Functions | |
| NumericArray (std::initializer_list< T > v) | |
| Constructs flat NumericArray based on a list of elements. More... | |
| template<class Container , typename = std::enable_if_t<is_iterable_container_with_matching_type_v<Container, T> && has_size_v<Container>>> | |
| NumericArray (const Container &c) | |
| Constructs flat NumericArray with contents copied from a given collection of data. More... | |
| template<class Container , typename = std::enable_if_t<is_iterable_container_with_matching_type_v<Container, T>>> | |
| NumericArray (const Container &c, MArrayDimensions dims) | |
| Constructs a NumericArray with contents copied from a given collection of data and dimensions passed as parameter. More... | |
| template<class InputIt , typename = enable_if_input_iterator<InputIt>> | |
| NumericArray (InputIt first, InputIt last) | |
| Constructs flat NumericArray with elements from range [first, last) More... | |
| NumericArray (T init, MArrayDimensions dims) | |
| Constructs the NumericArray of given shape with all elements initialized to given value. More... | |
| template<class InputIt , typename = enable_if_input_iterator<InputIt>> | |
| NumericArray (InputIt first, InputIt last, MArrayDimensions dims) | |
| Constructs the NumericArray of given shape with elements from range [first, last) More... | |
| NumericArray (MNumericArray na, Ownership owner) | |
| Constructs NumericArray based on MNumericArray. More... | |
| NumericArray (GenericNumericArray na) | |
| Create new NumericArray from a GenericNumericArray. More... | |
| NumericArray (const GenericNumericArray &other, NA::ConversionMethod method, double param=0.0) | |
| Create NumericArray from generic NumericArray. More... | |
| NumericArray ()=default | |
| Default constructor, creates a "hollow" NumericArray that does not have underlying MNumericArray. More... | |
| NumericArray | clone () const |
| Clone this NumericArray, performing a deep copy of the underlying MNumericArray. More... | |
| mint | rank () const noexcept |
| Get container rank. More... | |
| bool | empty () const noexcept |
| Check whether container is empty. More... | |
| mint | dimension (mint index) const |
Get dimension value at position index. More... | |
| const MArrayDimensions & | dimensions () const |
| Get a const reference to dimensions object. More... | |
| T & | operator[] (const std::vector< mint > &indices) |
| Get a reference to the data element at given position in a multidimensional container. More... | |
| const T & | operator[] (const std::vector< mint > &indices) const |
| Get a constant reference to the data element at given position in a multidimensional container. More... | |
| reference | operator[] (mint index) |
| Get a reference to the data element at given position. More... | |
| const_reference | operator[] (mint index) const |
| Get a constant reference to the data element at given position. More... | |
| T & | at (mint index) |
| Get a reference to the data element at given position with bound checking. More... | |
| const T & | at (mint index) const |
| Get a constant reference to the data element at given position with bound checking. More... | |
| T & | at (const std::vector< mint > &indices) |
| Get a reference to the data element at given position in a multidimensional container. More... | |
| const T & | at (const std::vector< mint > &indices) const |
| Get a constant reference to the data element at given position in a multidimensional container. More... | |
| value_type * | data () noexcept |
| Get raw pointer to underlying data. More... | |
| const value_type * | data () const noexcept |
| Get raw pointer to const underlying data. More... | |
| mint | size () const noexcept |
| Get total number of elements in the container. More... | |
| iterator | begin () noexcept |
| Get iterator at the beginning of underlying data. More... | |
| const_iterator | begin () const noexcept |
| Get constant iterator at the beginning of underlying data. More... | |
| const_iterator | cbegin () const noexcept |
| Get constant iterator at the beginning of underlying data. More... | |
| iterator | end () noexcept |
| Get iterator after the end of underlying data. More... | |
| const_iterator | end () const noexcept |
| Get constant iterator after the end of underlying data. More... | |
| const_iterator | cend () const noexcept |
| Get constant iterator after the end of underlying data. More... | |
| reverse_iterator | rbegin () noexcept |
| Get iterator at the beginning of underlying data. More... | |
| const_reverse_iterator | rbegin () const noexcept |
| Get constant iterator at the beginning of underlying data. More... | |
| const_reverse_iterator | crbegin () const noexcept |
| Get constant iterator at the beginning of underlying data. More... | |
| reverse_iterator | rend () noexcept |
| Get iterator after the end of underlying data. More... | |
| const_reverse_iterator | rend () const noexcept |
| Get constant iterator after the end of underlying data. More... | |
| const_reverse_iterator | crend () const noexcept |
| Get constant iterator after the end of underlying data. More... | |
| reference | front () |
| Get reference to the first element. More... | |
| const_reference | front () const |
| Get constant reference to the first element. More... | |
| reference | back () |
| Get reference to the last element. More... | |
| const_reference | back () const |
| Get constant reference to the last element. More... | |
| std::vector< value_type > | asVector () const |
| Copy contents of the data to a std::vector of matching type. More... | |
| GenericNumericArray | convert (numericarray_data_t t, NA::ConversionMethod method, double param) const |
| Convert this object to a new GenericNumericArray of given datatype, using specified conversion method. More... | |
| mint | getRank () const override |
| Get rank. More... | |
| mint const * | getDimensions () const override |
| Get dimensions. More... | |
| mint | getFlattenedLength () const override |
| Get length. More... | |
| numericarray_data_t | type () const override |
| Get the data type of this array. More... | |
| void * | rawData () const noexcept override |
| Get access to the raw data. More... | |
| Container | getContainer () const noexcept |
| Get internal container. More... | |
| Container | abandonContainer () const noexcept |
| Give a handle to internal container and stop owning it. More... | |
| mint | shareCount () const noexcept |
| Return share count of internal container, if present and 0 otherwise. More... | |
| void | pass (MArgument &res) const |
| Pass the internal container as result of a LibraryLink function. More... | |
| Ownership | getOwner () const noexcept |
| Get ownership information. More... | |
Protected Member Functions | |
| Container | cloneContainer () const |
| Clone the raw container, if it's present. More... | |
| void | disown () const noexcept |
| Disown internal container if present. More... | |
| void | free () const noexcept |
| Free internal container if present. More... | |
| void | reset (Container newCont, Ownership newOwnerMode=Ownership::Library) noexcept |
| Set a new internal container safely disposing of the old one. More... | |
|
inherited |
Constant iterator type.
|
inherited |
Constant reference type.
|
inherited |
Constant reverse iterator type.
|
inherited |
The type of underlying LibraryLink structure (e.g. MTensor, MImage, etc.) will be called "Container".
|
inherited |
Iterator type.
|
inherited |
Reference type.
|
inherited |
Reverse iterator type.
|
inherited |
Type of elements stored.
| LLU::NumericArray< T >::NumericArray | ( | std::initializer_list< T > | v | ) |
Constructs flat NumericArray based on a list of elements.
| [in] | v | - initializer list with NumericArray elements |
| see | NumericArray<T>::NumericArray(InputIt, InputIt, std::initializer_list<mint>) |
|
inlineexplicit |
Constructs flat NumericArray with contents copied from a given collection of data.
| Container | - any iterable (begin(), end()) collection of data that has a value_type alias member and a size() member function |
| c | - const reference to a collection from which data will be copied to the NumericArray |
|
inline |
Constructs a NumericArray with contents copied from a given collection of data and dimensions passed as parameter.
| Container | - any iterable (begin(), end()) collection of data that has a value_type alias member |
| c | - const reference to a collection from which data will be copied to the NumericArray |
| dims | - dimensions of the NumericArray |
| LLU::NumericArray< T >::NumericArray | ( | InputIt | first, |
| InputIt | last | ||
| ) |
Constructs flat NumericArray with elements from range [first, last)
| [in] | first | - iterator to the beginning of range |
| [in] | last | - iterator past the end of range |
| InputIt | - any iterator conforming to InputIterator concept |
| see | NumericArray<T>::NumericArray(InputIt, InputIt, std::initializer_list<mint>) |
| LLU::NumericArray< T >::NumericArray | ( | T | init, |
| MArrayDimensions | dims | ||
| ) |
Constructs the NumericArray of given shape with all elements initialized to given value.
| [in] | init | - value of type T to initialize all elements of the NumericArray |
| [in] | dims | - container with NumericArray dimensions |
| LLU::NumericArray< T >::NumericArray | ( | InputIt | first, |
| InputIt | last, | ||
| MArrayDimensions | dims | ||
| ) |
Constructs the NumericArray of given shape with elements from range [first, last)
| [in] | first | - iterator to the beginning of range |
| [in] | last | - iterator past the end of range |
| [in] | dims | - container with NumericArray dimensions |
| Container | - any type of container that has member value_type and this type is convertible to mint |
| ErrorName::NumericArrayNewError | - if number of elements in v does not match total NumericArray size indicated by dims |
| see | NumericArray<T>::createInternal() and MArray<T>::MArray(Container&&) |
| LLU::NumericArray< T >::NumericArray | ( | MNumericArray< T > | na, |
| Ownership | owner | ||
| ) |
Constructs NumericArray based on MNumericArray.
| [in] | na | - LibraryLink structure to be wrapped |
| [in] | owner | - who manages the memory the raw MNumericArray |
| ErrorName::NumericArrayTypeError | - if the NumericArray template type T does not match the actual data type of the MNumericArray |
|
explicit |
Create new NumericArray from a GenericNumericArray.
| [in] | na | - generic NumericArray to be wrapped into NumericArray class |
| ErrorName::NumericArrayTypeError | - if the NumericArray template type T does not match the actual data type of the generic NumericArray |
|
explicit |
Create NumericArray from generic NumericArray.
| [in] | other | - const reference to a generic NumericArray |
| [in] | method | - conversion method to be used, when in doubt use NA::ConversionMethod::ClipRound as default |
| [in] | param | - conversion tolerance |
|
default |
Default constructor, creates a "hollow" NumericArray that does not have underlying MNumericArray.
|
inlinenoexceptinherited |
Give a handle to internal container and stop owning it.
Should be used with caution as it may potentially result with resource leak.
|
inlineinherited |
Copy contents of the data to a std::vector of matching type.
|
inherited |
Get a reference to the data element at given position in a multidimensional container.
| [in] | indices | - vector with coordinates of desired data element |
| indexError() | - if indices are out-of-bounds |
|
inherited |
Get a constant reference to the data element at given position in a multidimensional container.
| [in] | indices | - vector with coordinates of desired data element |
| indexError() | - if indices are out-of-bounds |
|
inherited |
Get a reference to the data element at given position with bound checking.
| [in] | index | - position of desired data element |
| indexError() | - if index is out-of-bounds |
|
inherited |
Get a constant reference to the data element at given position with bound checking.
| [in] | index | - position of desired data element |
| indexError() | - if index is out-of-bounds |
|
inlineinherited |
Get reference to the last element.
|
inlineinherited |
Get constant reference to the last element.
|
inlinenoexceptinherited |
Get constant iterator at the beginning of underlying data.
|
inlinenoexceptinherited |
Get iterator at the beginning of underlying data.
|
inlinenoexceptinherited |
Get constant iterator at the beginning of underlying data.
|
inlinenoexceptinherited |
Get constant iterator after the end of underlying data.
|
inline |
Clone this NumericArray, performing a deep copy of the underlying MNumericArray.
|
inlineprotectedinherited |
Clone the raw container, if it's present.
|
inherited |
Convert this object to a new GenericNumericArray of given datatype, using specified conversion method.
| t | - destination data type |
| method | - conversion method |
| param | - conversion method parameter (aka tolerance) |
|
inlinenoexceptinherited |
Get constant iterator at the beginning of underlying data.
|
inlinenoexceptinherited |
Get constant iterator after the end of underlying data.
|
inlinenoexceptinherited |
Get raw pointer to const underlying data.
|
inlinenoexceptinherited |
Get raw pointer to underlying data.
|
inlineinherited |
Get dimension value at position index.
|
inlineinherited |
Get a const reference to dimensions object.
|
inlineprotectednoexceptinherited |
Disown internal container if present.
|
inlinenoexceptinherited |
Check whether container is empty.
|
inlinenoexceptinherited |
Get constant iterator after the end of underlying data.
|
inlinenoexceptinherited |
Get iterator after the end of underlying data.
|
inlineprotectednoexceptinherited |
Free internal container if present.
|
inlineinherited |
Get reference to the first element.
|
inlineinherited |
Get constant reference to the first element.
|
inlinenoexceptinherited |
Get internal container.
|
inlineoverridevirtualinherited |
Get dimensions.
Implements LLU::NumericArrayInterface.
|
inlineoverridevirtualinherited |
Get length.
Implements LLU::NumericArrayInterface.
|
inlinenoexceptinherited |
Get ownership information.
|
inlineoverridevirtualinherited |
|
inlineinherited |
Get a reference to the data element at given position in a multidimensional container.
| [in] | indices | - vector with coordinates of desired data element |
|
inlineinherited |
Get a constant reference to the data element at given position in a multidimensional container.
| [in] | indices | - vector with coordinates of desired data element |
|
inlineinherited |
Get a reference to the data element at given position.
| [in] | index | - position of desired data element |
|
inlineinherited |
Get a constant reference to the data element at given position.
| [in] | index | - position of desired data element |
|
inlineinherited |
Pass the internal container as result of a LibraryLink function.
| res | - MArgument which will hold internal container of this MContainerBase |
|
inlinenoexceptinherited |
Get container rank.
|
inlineoverridevirtualnoexceptinherited |
Get access to the raw data.
Use with caution.
Implements LLU::NumericArrayInterface.
|
inlinenoexceptinherited |
Get constant iterator at the beginning of underlying data.
|
inlinenoexceptinherited |
Get iterator at the beginning of underlying data.
|
inlinenoexceptinherited |
Get constant iterator after the end of underlying data.
|
inlinenoexceptinherited |
Get iterator after the end of underlying data.
|
inlineprotectednoexceptinherited |
Set a new internal container safely disposing of the old one.
| newCont | - new internal container |
| newOwnerMode | - owner of the new container |
|
inlinenoexceptinherited |
Return share count of internal container, if present and 0 otherwise.
|
inlinenoexceptinherited |
Get total number of elements in the container.
|
inlineoverridevirtualinherited |
Get the data type of this array.
numericarray_data_t) Implements LLU::NumericArrayInterface.