GEGELATI
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
Data::ArrayWrapper< T > Class Template Reference

#include <arrayWrapper.h>

Inheritance diagram for Data::ArrayWrapper< T >:
Data::DataHandler Data::Array2DWrapper< T > Data::PrimitiveTypeArray< T > Data::PrimitiveTypeArray2D< T >

Public Member Functions

 ArrayWrapper (size_t size=8, std::vector< T > *ptr=nullptr)
 Constructor for the ArrayWrapper class. More...
 
virtual ~ArrayWrapper ()=default
 Default destructor.
 
 ArrayWrapper (const ArrayWrapper< T > &other)=default
 Default copy constructor.
 
virtual DataHandlerclone () const override
 Return a PrimitiveTypeArray<T> where all data of the ArrayWrapper has been copied. More...
 
virtual bool canHandle (const std::type_info &type) const override
 Inherited from DataHandler. More...
 
virtual size_t getAddressSpace (const std::type_info &type) const override
 Inherited from DataHandler. More...
 
virtual size_t getLargestAddressSpace (void) const override
 Inherited from DataHandler. More...
 
void invalidateCachedHash ()
 Invalidate the hash of the container. More...
 
void resetData () override
 Inherited from DataHandler. Does nothing. More...
 
void setPointer (std::vector< T > *ptr)
 Set the pointer of the ArrayWrapper. More...
 
virtual UntypedSharedPtr getDataAt (const std::type_info &type, const size_t address) const override
 Inherited from DataHandler. More...
 
virtual std::vector< size_t > getAddressesAccessed (const std::type_info &type, const size_t address) const override
 Inherited from DataHandler. More...
 
virtual const std::type_info & getNativeType () const override
 Inherited from DataHandler. More...
 
virtual std::vector< size_t > getDimensionsSize () const override
 Inherited from DataHandler. More...
 
- Public Member Functions inherited from Data::DataHandler
 DataHandler ()
 Default constructor of the DataHandler class.
 
virtual ~DataHandler ()=default
 Default destructor.
 
 DataHandler (const DataHandler &other)=default
 Default copy constructor.
 
virtual DataHandlerclone () const =0
 Return a copy of the DataHandler (with all its content). More...
 
size_t getId () const
 Get the ID of the DataHandler. More...
 
size_t getHash () const
 Get the current value of the hash for this DataHandler. More...
 
virtual bool canHandle (const std::type_info &type) const =0
 Check a given DataHandler can handle data for the given data type. More...
 
virtual size_t getAddressSpace (const std::type_info &type) const =0
 Get the getAddressSpace size for the given data type. More...
 
virtual size_t getLargestAddressSpace () const =0
 Get the largest AddressSpace for all data types handled by the DataHandler. More...
 
virtual void resetData ()=0
 Generic method for DataHandler to reset their data. More...
 
virtual UntypedSharedPtr getDataAt (const std::type_info &type, const size_t address) const =0
 Get data of the given type, from the given address. More...
 
virtual std::vector< size_t > getAddressesAccessed (const std::type_info &type, const size_t address) const =0
 Get the set of addresses actually used when getting the given type of data, at the given address. More...
 
uint64_t scaleLocation (const uint64_t rawLocation, const std::type_info &type) const
 Scale a location from the Environment largestAddressSpace to the largestAddressSpace of the dataHandler, for the given data type. More...
 
virtual const std::type_info & getNativeType () const =0
 Function returning the native type of the DataHandler. More...
 
virtual std::vector< size_t > getDimensionsSize () const =0
 Give the size of each dimension (if any) of the DataHandler. More...
 

Protected Member Functions

void checkAddressAndType (const std::type_info &type, const size_t &address) const
 
virtual size_t updateHash () const override
 Implementation of the updateHash method. More...
 
virtual size_t updateHash () const =0
 Update the cachedHash value. More...
 

Protected Attributes

const size_t nbElements
 Number of elements contained pointer vector. More...
 
std::vector< T > * containerPtr
 Pointer to the array containing the data accessed through the ArrayWrapper.
 
- Protected Attributes inherited from Data::DataHandler
const size_t id
 Identifier of each DataHandler. More...
 
size_t cachedHash
 Cached value returned by the getHash() function. More...
 
bool invalidCachedHash
 Boolean value indicating whether the current cachedValue is valid, or not. More...
 

Additional Inherited Members

- Static Protected Attributes inherited from Data::DataHandler
static size_t count = 0
 Static count used to initialize the id of each DataHandler. More...
 

Detailed Description

template<class T>
class Data::ArrayWrapper< T >

DataHandler for manipulating arrays of primitive data type.

Contrary to the PrimitiveTypeArray, the ArrayWrapper does not contain its data, but possesses a pointer to them.

Every time the data associated to the pointer is modified, the invalidateCachedHash method should be called.

In addition to native data types T, this DataHandler can also provide the following composite data type:

Constructor & Destructor Documentation

◆ ArrayWrapper()

template<class T >
Data::ArrayWrapper< T >::ArrayWrapper ( size_t  size = 8,
std::vector< T > *  ptr = nullptr 
)
inline

Constructor for the ArrayWrapper class.

Parameters
[in]sizethe fixed number of elements of primitive type T contained in the ArrayWrapper.
[in]ptrthe pointer managed by the ArrayWrapper.
Exceptions
std::domain_errorin case the given non-null pointer points to a vector that does not the expected size.

Member Function Documentation

◆ canHandle()

template<class T >
bool Data::ArrayWrapper< T >::canHandle ( const std::type_info &  type) const
overridevirtual

Inherited from DataHandler.

Implements Data::DataHandler.

◆ checkAddressAndType()

template<class T >
void Data::ArrayWrapper< T >::checkAddressAndType ( const std::type_info &  type,
const size_t &  address 
) const
protected

Check whether the given type of data can be accessed at the given address. Throws exception otherwise.

Parameters
[in]typethe std::type_info of data.
[in]addressthe location of the data.
Exceptions
std::invalid_argumentif the given data type is not provided by the DataHandler.
std::out_of_rangeif the given address is invalid for the given data type.

◆ clone()

template<class T >
DataHandler * Data::ArrayWrapper< T >::clone
inlineoverridevirtual

◆ getAddressesAccessed()

template<class T >
std::vector< size_t > Data::ArrayWrapper< T >::getAddressesAccessed ( const std::type_info &  type,
const size_t  address 
) const
overridevirtual

Inherited from DataHandler.

Implements Data::DataHandler.

Reimplemented in Data::Array2DWrapper< T >.

◆ getAddressSpace()

template<class T >
size_t Data::ArrayWrapper< T >::getAddressSpace ( const std::type_info &  type) const
overridevirtual

Inherited from DataHandler.

Implements Data::DataHandler.

Reimplemented in Data::Array2DWrapper< T >.

◆ getDataAt()

template<class T >
UntypedSharedPtr Data::ArrayWrapper< T >::getDataAt ( const std::type_info &  type,
const size_t  address 
) const
inlineoverridevirtual

Inherited from DataHandler.

Implements Data::DataHandler.

Reimplemented in Data::Array2DWrapper< T >.

◆ getDimensionsSize()

template<class T >
std::vector< size_t > Data::ArrayWrapper< T >::getDimensionsSize
overridevirtual

Inherited from DataHandler.

Implements Data::DataHandler.

Reimplemented in Data::Array2DWrapper< T >.

◆ getLargestAddressSpace()

template<class T >
size_t Data::ArrayWrapper< T >::getLargestAddressSpace ( void  ) const
overridevirtual

Inherited from DataHandler.

Implements Data::DataHandler.

◆ getNativeType()

template<class T >
const std::type_info & Data::ArrayWrapper< T >::getNativeType
overridevirtual

Inherited from DataHandler.

Implements Data::DataHandler.

◆ invalidateCachedHash()

template<class T >
void Data::ArrayWrapper< T >::invalidateCachedHash

Invalidate the hash of the container.

Each time the data pointed by the ArrayWrapper is modified, this method should be called to ensure that the hash value of the DataHandler is properly updated.

◆ resetData()

template<class T >
void Data::ArrayWrapper< T >::resetData
overridevirtual

◆ setPointer()

template<class T >
void Data::ArrayWrapper< T >::setPointer ( std::vector< T > *  ptr)
inline

Set the pointer of the ArrayWrapper.

This method automatically invalidates the cachedHash.

Parameters
[in]ptrthe new pointer managed by the ArrayWrapper.
Exceptions
std::domain_errorin case the given non-null pointer points to a vector that does not have the same size as defined when constructing the ArrayWrapper.

◆ updateHash()

template<class T >
size_t Data::ArrayWrapper< T >::updateHash
inlineoverrideprotectedvirtual

Implementation of the updateHash method.

Implements Data::DataHandler.

Member Data Documentation

◆ nbElements

template<class T >
const size_t Data::ArrayWrapper< T >::nbElements
protected

Number of elements contained pointer vector.

Although this may seem redundant with the containerPtr->size() method, this attribute is here to make it possible to check whether the size of the data vector was modified throughout the lifetime of the ArrayWrapper. (Which should not be possible.)


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