fesa-core  7.0.0
fesa::FieldArray< T > Class Template Reference

FieldArray template class for arrays of various numeric types and structure types. More...

#include <FieldArray.h>

Inheritance diagram for fesa::FieldArray< T >:
fesa::AbstractField

Public Types

typedef T value_type
 data type stored in the field array
 

Public Member Functions

 FieldArray (const FieldConfig &fieldConfig, DataStore *pDataStore, std::size_t size)
 Constructor. More...
 
 ~FieldArray ()
 destructor
 
std::size_t getMaxSize () const
 retrieve the size of the array More...
 
- Public Member Functions inherited from fesa::AbstractField
virtual ~AbstractField ()
 destructor
 
AbstractMultiplexingManagergetMultiplexingManager ()
 
uint32_t getMuxDepth () const
 
bool isMultiplexed () const
 
const std::string & getName () const
 
FieldCategory getType () const
 
bool isPersistent () const
 
bool isShared () const
 
virtual std::string getAsString (const MultiplexingContext *context) const =0
 Method to retrieve the value of the field converted to string. More...
 
std::string getAttributeAsStringByName (const std::string &attribute, MultiplexingContext *context=NULL)
 Method to retrieve the struct attribute value converted to string. More...
 

Protected Member Functions

std::size_t getFieldValueSize () const
 
std::size_t getFieldValueAlignment () const
 
std::size_t getFieldValueDataOffset () const
 
virtual void initializeDimensions (const boost::shared_ptr< FieldElement > &fieldElement)
 used to initialize dimensions of the field from the instance document More...
 
virtual void setFieldValueAddress (char *pFV, bool initFieldsFlag)
 Maps an address in shared memory or on the heap to the field value member of the field class. More...
 
void checkMaxDimension (std::size_t size) const
 this method checks whether the size passed by parameter is within the max size of the array. If it is not, the method throws a FesaException More...
 
void checkIndexBounds (const FieldValueArray< T > &fieldValue, std::size_t index) const
 
FieldValueArray< T > * getFieldValue (int32_t slot)
 Get the field's value for a given slot. More...
 
virtual void copyValue (uint32_t slot, const std::string &str)
 this method puts in the slot the value passed by parameter in the corresponding format More...
 
virtual void getValueToStore (int32_t slot, std::string &str) const
 
void setFieldValue (FieldValueArray< T > &fieldValue, const T *val, std::size_t size)
 
template<typename RandomAccessIterator >
void setFieldValue (FieldValueArray< T > &fieldValue, RandomAccessIterator first, RandomAccessIterator last)
 
void setCellValue (FieldValueArray< T > &fieldValue, const T &val, std::size_t index)
 
const T & getCellRef (const FieldValueArray< T > &fieldValue, std::size_t index) const
 
- Protected Member Functions inherited from fesa::AbstractField
virtual void initializeDefaultValue (const std::string &value)
 Initialize the default value with a value provided in the instantiation file. More...
 
void setMultiplexingManager (AbstractMultiplexingManager *muxManager)
 changes the multiplexing manager of the field. More...
 
void setDataIntegrity (DataIntegrity dataIntegrity)
 changes the data integrity value of the field
 
void restore (const PersistanceFieldElement &fieldElement, bool ignoreInvalidValues)
 gives the value to the field from the field element This method should be used to populate the fields at instantiation More...
 
void store (PersistanceFieldElement &fieldElement)
 Used to persist fields. More...
 
 AbstractField (const FieldConfig &fieldConfig, DataStore *dataStore)
 Constructor. More...
 
template<typename T >
T * getSlotPointer (void *baseAddress, std::size_t slot)
 
template<typename T >
const T * getSlotPointer (const void *baseAddress, std::size_t slot) const
 
virtual void getAttributeValueToStore (int32_t slot, const std::string &attribute, std::string &str)
 
template<typename T >
void validateValue (const T &value) const
 
template<typename T >
void validateValues (const T *values, const std::size_t count) const
 
void setMultiplexed (bool multiplexed)
 changes the multiplexing status
 

Protected Attributes

std::size_t maxSize_
 maximum size of the array
 
FieldValueArray< T > * fieldValue_
 value of field in the first slot
 
- Protected Attributes inherited from fesa::AbstractField
std::string name_
 name of the field
 
FieldCategory fieldCategory_
 category of the field (Acquisition, Generic, Setting or Configuration)
 
bool multiplexed_
 true if the field is multiplexed
 
bool shared_
 flag that indicates whether field is shared byt RT and Server
 
bool persistent_
 flag that indicates whether field is persistent
 
DataIntegrity buffer_
 type of buffer of the field
 
AbstractMultiplexingManagermultiplexingManager_
 multiplexing manager of the field
 
DataStoredataStore_
 The data store this field belongs to.
 
std::size_t valueSize_
 size of the value
 

Additional Inherited Members

- Static Public Attributes inherited from fesa::AbstractField
static const std::size_t INVALID_SIZE = std::numeric_limits<std::size_t>::max()
 

Detailed Description

template<typename T>
class fesa::FieldArray< T >

FieldArray template class for arrays of various numeric types and structure types.

Constructor & Destructor Documentation

template<typename T >
fesa::FieldArray< T >::FieldArray ( const FieldConfig fieldConfig,
DataStore pDataStore,
std::size_t  size 
)

Constructor.

Parameters
nameof the field, field category, multiplexing criterion, pointer to DataStore
sizeof the array

Member Function Documentation

template<typename T>
void fesa::FieldArray< T >::checkIndexBounds ( const FieldValueArray< T > &  fieldValue,
std::size_t  index 
) const
protected

Ensures that index is within the current size of the given fieldValue.

Exceptions
FesaExceptionif index is out of bounds.
template<typename T >
void fesa::FieldArray< T >::checkMaxDimension ( std::size_t  size) const
protected

this method checks whether the size passed by parameter is within the max size of the array. If it is not, the method throws a FesaException

Exceptions
FesaException
template<typename T >
void fesa::FieldArray< T >::copyValue ( uint32_t  slot,
const std::string &  str 
)
protectedvirtual

this method puts in the slot the value passed by parameter in the corresponding format

Parameters
slotto put the value
valvalue to put

Implements fesa::AbstractField.

Reimplemented in fesa::FieldFunctionList.

template<typename T>
const T & fesa::FieldArray< T >::getCellRef ( const FieldValueArray< T > &  fieldValue,
std::size_t  index 
) const
protected

Returns a reference to the fieldValue's cell at the given index.

template<typename T >
FieldValueArray< T > * fesa::FieldArray< T >::getFieldValue ( int32_t  slot)
protectedvirtual

Get the field's value for a given slot.

Parameters
slotThe slot to get the field's value from
Returns
The field's value

Implements fesa::AbstractField.

template<typename T >
std::size_t fesa::FieldArray< T >::getFieldValueAlignment ( ) const
protectedvirtual

Returns the alignment requirement of a FieldValue instantiated by this AbstractField object.

Implements fesa::AbstractField.

template<typename T >
std::size_t fesa::FieldArray< T >::getFieldValueDataOffset ( ) const
protectedvirtual

Returns the offset from the beginning of the field value object to the data contained in the field value.

Implements fesa::AbstractField.

template<typename T >
std::size_t fesa::FieldArray< T >::getFieldValueSize ( ) const
protectedvirtual

Returns the size (in bytes) of a field value instantiated by this AbstractField object. This includes the FieldValue object itself, and any additional space needed for data storage.

Implements fesa::AbstractField.

template<typename T >
std::size_t fesa::FieldArray< T >::getMaxSize ( ) const

retrieve the size of the array

Returns
size of the array
template<typename T >
void fesa::FieldArray< T >::getValueToStore ( int32_t  slot,
std::string &  str 
) const
protectedvirtual
Returns
the value of the pending buffer as a string

Implements fesa::AbstractField.

Reimplemented in fesa::FieldFunctionList.

template<typename T >
void fesa::FieldArray< T >::initializeDimensions ( const boost::shared_ptr< FieldElement > &  fieldElement)
protectedvirtual

used to initialize dimensions of the field from the instance document

Parameters
fieldElementthat contains the values for the field

Reimplemented from fesa::AbstractField.

Reimplemented in fesa::FieldFunctionList.

template<typename T>
void fesa::FieldArray< T >::setCellValue ( FieldValueArray< T > &  fieldValue,
const T &  val,
std::size_t  index 
)
protected

Copies val to the fieldValue's cell at the given index.

template<typename T>
void fesa::FieldArray< T >::setFieldValue ( FieldValueArray< T > &  fieldValue,
const T *  val,
std::size_t  size 
)
protected

Copies the given values to the fieldValue.

Parameters
fieldValuethe destination fieldValue
valthe values to copy
sizenumber of values to copy
template<typename T>
template<typename RandomAccessIterator >
void fesa::FieldArray< T >::setFieldValue ( FieldValueArray< T > &  fieldValue,
RandomAccessIterator  first,
RandomAccessIterator  last 
)
protected

Copies the given values to the fieldValue, from first (included) to last (excluded). Given iterators must support random access.

Parameters
fieldValuethe destination fieldValue
firstIterator pointing to the first value to copy (included)
lastIterator pointing to the last value to copy (excluded)
template<typename T >
void fesa::FieldArray< T >::setFieldValueAddress ( char *  pFV,
bool  initFieldsFlag 
)
protectedvirtual

Maps an address in shared memory or on the heap to the field value member of the field class.

Parameters
pFVpointer to a field value.

Implements fesa::AbstractField.

Reimplemented in fesa::FieldFunctionList, and fesa::FieldFunction.


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