matio-cpp  v0.2.5
A C++ wrapper of the matio library, with memory ownership handling, to read and write .mat files.
matioCpp::CellArray Class Reference

CellArray is a particular type of Variable specialized for cell arrays. More...

#include <matioCpp/CellArray.h>

+ Inheritance diagram for matioCpp::CellArray:

Public Types

using index_type = size_t
 

Public Member Functions

 CellArray ()
 The type used for indices. More...
 
 CellArray (const std::string &name)
 Constructor. More...
 
 CellArray (const std::string &name, const std::vector< index_type > &dimensions)
 Constructor. More...
 
 CellArray (const std::string &name, const std::vector< index_type > &dimensions, std::vector< Variable > &elements)
 Constructor. More...
 
 CellArray (const CellArray &other)
 Copy constructor. More...
 
 CellArray (CellArray &&other)
 Move constructor. More...
 
 CellArray (const MatvarHandler &handler)
 Constructor to share the data ownership of another variable. More...
 
 ~CellArray ()
 Destructor. More...
 
CellArrayoperator= (const CellArray &other)
 Assignement operator (copy) from another CellArray. More...
 
CellArrayoperator= (CellArray &&other)
 Assignement operator (move) from another CellArray. More...
 
bool fromVectorOfVariables (const std::vector< index_type > &dimensions, std::vector< Variable > &elements)
 Set from a vector of Variables. More...
 
index_type rawIndexFromIndices (const std::vector< index_type > &el) const
 Get the linear index corresponding to the provided indices. More...
 
bool indicesFromRawIndex (size_t rawIndex, std::vector< index_type > &el) const
 Get the indices given the raw index. More...
 
bool setName (const std::string &newName)
 Change the name of the Variable. More...
 
void resize (const std::vector< index_type > &newDimensions)
 Resize the cell array. More...
 
void clear ()
 Clear the cell array. More...
 
index_type numberOfElements () const
 Get the total number of elements in the array. More...
 
bool setElement (const std::vector< index_type > &el, const Variable &newValue)
 Set the element at the specified position. More...
 
bool setElement (index_type el, const Variable &newValue)
 Set the element at the specified position. More...
 
matioCpp::Variable operator() (const std::vector< index_type > &el)
 Access specified element. More...
 
const matioCpp::Variable operator() (const std::vector< index_type > &el) const
 Access specified element. More...
 
matioCpp::Variable operator() (index_type el)
 Access specified element. More...
 
const matioCpp::Variable operator() (index_type el) const
 Access specified element. More...
 
matioCpp::Variable operator[] (const std::vector< index_type > &el)
 Access specified element. More...
 
const matioCpp::Variable operator[] (const std::vector< index_type > &el) const
 Access specified element. More...
 
matioCpp::Variable operator[] (index_type el)
 Access specified element. More...
 
const matioCpp::Variable operator[] (index_type el) const
 Access specified element. More...
 
- Public Member Functions inherited from matioCpp::Variable
 Variable ()
 Default constructor. More...
 
 Variable (const matvar_t *inputVar)
 Constructor from an existing matvar_t pointer. More...
 
 Variable (const Variable &other)
 Copy constructor. More...
 
 Variable (Variable &&other)
 Move constructor. More...
 
 Variable (const MatvarHandler &handler)
 Constructor to share the data ownership of another variable. More...
 
 ~Variable ()
 Destructor. More...
 
Variableoperator= (const Variable &other)
 Copy assignement. More...
 
Variableoperator= (Variable &&other)
 Move assignement. More...
 
bool fromMatio (const matvar_t *inputVar)
 Set this variable from an existing matio variable. More...
 
bool fromOther (const Variable &other)
 Set this variable from another variable. More...
 
bool fromOther (Variable &&other)
 Set this variable from another variable. More...
 
const matvar_t * toMatio () const
 Convert this Variable to a matio variable. More...
 
matvar_t * toMatio ()
 Convert this Variable to a matio variable. More...
 
std::string name () const
 Get the name of the Variable. More...
 
matioCpp::VariableType variableType () const
 Get the VariableType. More...
 
matioCpp::ValueType valueType () const
 Get the ValueType. More...
 
bool isComplex () const
 Get if the variable is complex. More...
 
matioCpp::Span< const size_t > dimensions () const
 Get the dimensions of this object. More...
 
bool isValid () const
 Check if the variable is valid. More...
 
template<typename T >
matioCpp::Element< T > asElement ()
 Cast the variable as a Element. More...
 
template<typename T >
const matioCpp::Element< T > asElement () const
 Cast the variable as a const Element. More...
 
template<typename T >
matioCpp::Vector< T > asVector ()
 Cast the variable as a Vector. More...
 
template<typename T >
const matioCpp::Vector< T > asVector () const
 Cast the variable as a const Vector. More...
 
matioCpp::String asString ()
 Cast the variable as a String. More...
 
const matioCpp::String asString () const
 Cast the variable as a const String. More...
 
matioCpp::String16 asString16 ()
 Cast the variable as a String16. More...
 
const matioCpp::String16 asString16 () const
 Cast the variable as a const String16. More...
 
matioCpp::String32 asString32 ()
 Cast the variable as a String32. More...
 
const matioCpp::String32 asString32 () const
 Cast the variable as a const String32. More...
 
template<typename T >
matioCpp::MultiDimensionalArray< T > asMultiDimensionalArray ()
 Cast the variable as a MultiDimensionalArray. More...
 
template<typename T >
const matioCpp::MultiDimensionalArray< T > asMultiDimensionalArray () const
 Cast the variable as a const MultiDimensionalArray. More...
 
matioCpp::CellArray asCellArray ()
 Cast the variable as a CellArray. More...
 
const matioCpp::CellArray asCellArray () const
 Cast the variable as a const CellArray. More...
 
matioCpp::Struct asStruct ()
 Cast the variable as a Struct. More...
 
const matioCpp::Struct asStruct () const
 Cast the variable as a const Struct. More...
 
matioCpp::StructArray asStructArray ()
 Cast the variable as a StructArray. More...
 
const matioCpp::StructArray asStructArray () const
 Cast the variable as a const StructArray. More...
 

Additional Inherited Members

- Protected Member Functions inherited from matioCpp::Variable
bool initializeVariable (const std::string &name, const VariableType &variableType, const ValueType &valueType, matioCpp::Span< const size_t > dimensions, void *data)
 Initialize the variable. More...
 
bool initializeComplexVariable (const std::string &name, const VariableType &variableType, const ValueType &valueType, matioCpp::Span< const size_t > dimensions, void *realData, void *imaginaryData)
 Initialize a complex variable. More...
 
template<typename T >
bool initializeComplexVector (const std::string &name, const Span< T > realInputVector, const Span< T > imaginaryInputVector)
 Initialize a complex vector. More...
 
bool changeName (const std::string &newName)
 Change the name of the variable. More...
 
size_t getArrayNumberOfElements () const
 Get the total number of elements in the array. More...
 
bool setCellElement (size_t linearIndex, const Variable &newValue)
 Set a cell element at a specified linear position. More...
 
Variable getCellElement (size_t linearIndex)
 Get a cell element at a specified linear position. More...
 
const Variable getCellElement (size_t linearIndex) const
 Get a cell element at a specified linear position. More...
 
size_t getStructNumberOfFields () const
 Get the total number of fields in the variable, considered as a struct. More...
 
char *const * getStructFields () const
 Get the list of fields in the variable, considered as a struct. More...
 
size_t getStructFieldIndex (const std::string &field) const
 Get the index of the specified field in the variable, considered as a struct. More...
 
bool setStructField (size_t index, const Variable &newValue, size_t structPositionInArray=0)
 Set the field of the struct at the specified position. More...
 
bool addStructField (const std::string &newField)
 Add a new field to the variable, considered as a struct. More...
 
bool setStructField (const std::string &field, const Variable &newValue, size_t structPositionInArray=0)
 Set the field of the struct given the newValue name. More...
 
Variable getStructField (size_t index, size_t structPositionInArray=0)
 Get the specified field in the variable, considered as a struct. More...
 
const Variable getStructField (size_t index, size_t structPositionInArray=0) const
 Get the specified field in the variable, considered as a struct. More...
 
Struct getStructArrayElement (size_t linearIndex)
 Get an element of the variable, considered as a StructArray. More...
 
const Struct getStructArrayElement (size_t linearIndex) const
 Get an element of the variable, considered as a StructArray. More...
 

Detailed Description

CellArray is a particular type of Variable specialized for cell arrays.

Definition at line 17 of file CellArray.h.

Member Typedef Documentation

◆ index_type

Definition at line 31 of file CellArray.h.

Constructor & Destructor Documentation

◆ CellArray() [1/7]

matioCpp::CellArray::CellArray ( )

The type used for indices.

Default Constructor

Note
The name is set to "unnamed_cell_array".

Definition at line 27 of file CellArray.cpp.

References matioCpp::CellArray, and matioCpp::VARIABLE.

◆ CellArray() [2/7]

matioCpp::CellArray::CellArray ( const std::string name)

Constructor.

Parameters
nameThe name of the CellArray

Definition at line 36 of file CellArray.cpp.

References matioCpp::CellArray, and matioCpp::VARIABLE.

◆ CellArray() [3/7]

matioCpp::CellArray::CellArray ( const std::string name,
const std::vector< index_type > &  dimensions 
)

Constructor.

Parameters
nameThe name of the CellArray
dimensionsThe dimensions of the CellArray

Definition at line 45 of file CellArray.cpp.

References matioCpp::CellArray, std::endl(), and matioCpp::VARIABLE.

◆ CellArray() [4/7]

matioCpp::CellArray::CellArray ( const std::string name,
const std::vector< index_type > &  dimensions,
std::vector< Variable > &  elements 
)

Constructor.

Parameters
nameThe name of the CellArray
dimensionsThe dimensions of the CellArray
elementsThe elements to be added to the CellArray (they are copied)
Note
The name of the variables in the vector is not used
The vector is supposed to contain the variables in column-major format. For example, an array of dimension 2x3x4 needs a dimension vector of size 3 with content {2,3,4}. The elements vector is supposed to be 24 dimensional.

Definition at line 62 of file CellArray.cpp.

References matioCpp::CellArray, std::vector< T >::data(), std::endl(), matioCpp::MatvarHandler::GetMatvarDuplicate(), std::vector< T >::size(), and matioCpp::VARIABLE.

◆ CellArray() [5/7]

matioCpp::CellArray::CellArray ( const CellArray other)

Copy constructor.

Definition at line 92 of file CellArray.cpp.

◆ CellArray() [6/7]

matioCpp::CellArray::CellArray ( CellArray &&  other)

Move constructor.

Definition at line 97 of file CellArray.cpp.

◆ CellArray() [7/7]

matioCpp::CellArray::CellArray ( const MatvarHandler handler)

Constructor to share the data ownership of another variable.

Parameters
handlerThe MatvarHandler handler to the matvar_t which has to be shared.

Definition at line 102 of file CellArray.cpp.

References matioCpp::CellArray, matioCpp::MatvarHandler::get(), matioCpp::Variable::initializeVariable(), matioCpp::MatvarHandler::valueType(), matioCpp::VARIABLE, and matioCpp::MatvarHandler::variableType().

◆ ~CellArray()

matioCpp::CellArray::~CellArray ( )

Destructor.

Definition at line 116 of file CellArray.cpp.

Member Function Documentation

◆ clear()

void matioCpp::CellArray::clear ( )

Clear the cell array.

Definition at line 225 of file CellArray.cpp.

References std::move().

◆ fromVectorOfVariables()

bool matioCpp::CellArray::fromVectorOfVariables ( const std::vector< index_type > &  dimensions,
std::vector< Variable > &  elements 
)

Set from a vector of Variables.

Note
The vector is supposed to contain the variables in column-major format.
The name of the variables is not used
Parameters
dimensionsThe input dimensions
elementsThe input vector of variables.
Returns
True if successful. False otherwise, for example if one of the input variables is not valid.

Definition at line 133 of file CellArray.cpp.

References matioCpp::CellArray, std::vector< T >::data(), std::endl(), matioCpp::MatvarHandler::GetMatvarDuplicate(), std::vector< T >::size(), and matioCpp::VARIABLE.

◆ indicesFromRawIndex()

bool matioCpp::CellArray::indicesFromRawIndex ( size_t  rawIndex,
std::vector< index_type > &  el 
) const

Get the indices given the raw index.

Parameters
rawIndexThe input raw index from which to compute the indices
elThe output indices
Returns
True if successful, false otherwise (for example if rawIndex is out of bounds)

Definition at line 182 of file CellArray.cpp.

References std::endl(), std::vector< T >::resize(), and std::vector< T >::size().

◆ numberOfElements()

matioCpp::CellArray::index_type matioCpp::CellArray::numberOfElements ( ) const

Get the total number of elements in the array.

Returns
The total number of elements

Definition at line 230 of file CellArray.cpp.

◆ operator()() [1/4]

matioCpp::Variable matioCpp::CellArray::operator() ( const std::vector< index_type > &  el)

Access specified element.

Parameters
elThe element to be accessed.
Warning
Each element of el has to be strictly smaller than the corresponding dimension.
Returns
A Variable with a weak ownership to the underlying mat variable. This means that the data can be changed, but the variable cannot be resized and the name cannot change.

Definition at line 283 of file CellArray.cpp.

◆ operator()() [2/4]

const matioCpp::Variable matioCpp::CellArray::operator() ( const std::vector< index_type > &  el) const

Access specified element.

Parameters
elThe element to be accessed.
Warning
Each element of el has to be strictly smaller than the corresponding dimension.
Returns
A const Variable with a weak ownership to the underlying mat variable.

Definition at line 288 of file CellArray.cpp.

◆ operator()() [3/4]

matioCpp::Variable matioCpp::CellArray::operator() ( index_type  el)

Access specified element.

Parameters
elThe element to be accessed (raw index).
Returns
A Variable with a weak ownership to the underlying mat variable. This means that the data can be changed, but the variable cannot be resized and the name cannot change.

Definition at line 293 of file CellArray.cpp.

◆ operator()() [4/4]

const matioCpp::Variable matioCpp::CellArray::operator() ( index_type  el) const

Access specified element.

Parameters
elThe element to be accessed (raw index).
Returns
A const Variable with a weak ownership to the underlying mat variable.

Definition at line 299 of file CellArray.cpp.

◆ operator=() [1/2]

matioCpp::CellArray & matioCpp::CellArray::operator= ( matioCpp::CellArray &&  other)

Assignement operator (move) from another CellArray.

Parameters
otherThe other CellArray.
Note
Also the name is copied
Returns
A reference to this CellArray.

Definition at line 127 of file CellArray.cpp.

◆ operator=() [2/2]

matioCpp::CellArray & matioCpp::CellArray::operator= ( const CellArray other)

Assignement operator (copy) from another CellArray.

Parameters
otherThe other CellArray.
Note
Also the name is copied
Returns
A reference to this CellArray.

Definition at line 121 of file CellArray.cpp.

◆ operator[]() [1/4]

matioCpp::Variable matioCpp::CellArray::operator[] ( const std::vector< index_type > &  el)

Access specified element.

Parameters
elThe element to be accessed.
Warning
Each element of el has to be strictly smaller than the corresponding dimension.
Returns
A Variable with a weak ownership to the underlying mat variable. This means that the data can be changed, but the variable cannot be resized and the name cannot change.

Definition at line 305 of file CellArray.cpp.

◆ operator[]() [2/4]

const matioCpp::Variable matioCpp::CellArray::operator[] ( const std::vector< index_type > &  el) const

Access specified element.

Parameters
elThe element to be accessed.
Warning
Each element of el has to be strictly smaller than the corresponding dimension.
Returns
A const Variable with a weak ownership to the underlying mat variable.

Definition at line 310 of file CellArray.cpp.

◆ operator[]() [3/4]

matioCpp::Variable matioCpp::CellArray::operator[] ( index_type  el)

Access specified element.

Parameters
elThe element to be accessed.
Returns
A Variable with a weak ownership to the underlying mat variable. This means that the data can be changed, but the variable cannot be resized and the name cannot change.

Definition at line 315 of file CellArray.cpp.

◆ operator[]() [4/4]

const matioCpp::Variable matioCpp::CellArray::operator[] ( index_type  el) const

Access specified element.

Parameters
elThe element to be accessed.
Returns
A const Variable with a weak ownership to the underlying mat variable.

Definition at line 321 of file CellArray.cpp.

◆ rawIndexFromIndices()

matioCpp::CellArray::index_type matioCpp::CellArray::rawIndexFromIndices ( const std::vector< index_type > &  el) const

Get the linear index corresponding to the provided indices.

Parameters
elThe desired element
Warning
It checks if the element is in the bounds only in debug mode.

Since the variables are stored internally in column-major, an element (i,j,k,l,..) of an array of dimensions (n,m,p,k,...) corresponds to a row index equal to i + j*n + k*n*m + l*n*m*p +...

Returns
the linear index corresponding to the provided indices

Definition at line 163 of file CellArray.cpp.

References std::vector< T >::size().

◆ resize()

void matioCpp::CellArray::resize ( const std::vector< index_type > &  newDimensions)

Resize the cell array.

Parameters
newDimensionsThe new dimensions.
Warning
Previous data is lost.

Definition at line 219 of file CellArray.cpp.

References std::move().

◆ setElement() [1/2]

bool matioCpp::CellArray::setElement ( const std::vector< index_type > &  el,
const Variable newValue 
)

Set the element at the specified position.

Parameters
elThe indices of the specified element
newValueThe Variable that will be copied in the specified location
Returns
True if successful, false otherwise (for example if the newValue is not valid)
Note
An assertion is thrown if el is out of bounds, but only in debug mode

Definition at line 235 of file CellArray.cpp.

References std::endl(), and matioCpp::Variable::isValid().

Referenced by matioCpp::make_variable().

◆ setElement() [2/2]

bool matioCpp::CellArray::setElement ( index_type  el,
const Variable newValue 
)

Set the element at the specified position.

Parameters
elThe raw index of the specified element
newValueThe Variable that will be copied in the specified location
Returns
True if successful, false otherwise (for example if the newValue is not valid)
Note
An assertion is thrown if el is out of bounds, but only in debug mode

Definition at line 258 of file CellArray.cpp.

References std::endl(), and matioCpp::Variable::isValid().

◆ setName()

bool matioCpp::CellArray::setName ( const std::string newName)

Change the name of the Variable.

Parameters
newNameThe new name
Returns
True if successful.

Definition at line 214 of file CellArray.cpp.


The documentation for this class was generated from the following files: