ADTF
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
CodecElement< ElementAccessType, ChildElementsType >

A CodecElement to get and set values. More...

#include <codec_iterator.h>

Inheritance diagram for CodecElement< ElementAccessType, ChildElementsType >:
[legend]

Public Types

using factory_base_type = FactoryElement<ElementAccessType, ChildElementsType>
 factory base type
 
using base_type = DecoderElement<ElementAccessType, ChildElementsType>
 base type
 
using self_type = CodecElement<ElementAccessType, ChildElementsType>
 self type
 
using access_type = typename ElementAccessType::access_type
 access type from the concept
 
using child_elements_type = typename factory_base_type::child_elements_type
 allowed container type
 
using iterator_type = typename child_elements_type::iterator
 allowed iterator type
 
using const_iterator_type = typename child_elements_type::const_iterator
 allowed const iterator type
 
- Public Types inherited from DecoderElement< ElementAccessType, ChildElementsType >
using base_type = FactoryElement<ElementAccessType, ChildElementsType>
 base type
 
using self_type = DecoderElement<ElementAccessType, ChildElementsType>
 self type
 
using access_type = typename ElementAccessType::access_type
 access type from concept template
 
using child_elements_type = typename base_type::child_elements_type
 allowed container type
 
using iterator_type = typename child_elements_type::iterator
 allowed iterator type
 
using const_iterator_type = typename child_elements_type::const_iterator
 allowed const iterator type
 
- Public Types inherited from FactoryElement< ElementAccessType, ChildElementsType >
using self_type = FactoryElement<ElementAccessType, ChildElementsType>
 self type
 
using access_type = typename ElementAccessType::access_type
 access type
 
using child_elements_type = ChildElementsType
 allowed container type
 
using iterator_type = typename child_elements_type::iterator
 allowed iterator type
 
using const_iterator_type = typename child_elements_type::const_iterator
 allowed const iterator type
 

Public Member Functions

 CodecElement ()=delete
 CTOR.
 
template<typename T>
void setValue (const T &value)
 Sets the value from value of type T.
 
void setVariantValue (const a_util::variant::Variant &value)
 Sets the value from value as variant.
 
void setStringValue (const std::string &value)
 Sets the value from value as string.
 
void setRawValue (const void *value, size_t value_size)
 Set the value by copying from a value buffer.
 
void reset (bool zero_value_of_known_type=false)
 Reset the elements value to their default values, constant values defined in the data definition or zero if zero_value is set.
 
void * getAddress ()
 Get the address (with writing access)
 
child_elements_typegetChildElements ()
 Gets an reference to the child elements.
 
self_type getChildElement (const std::string &name) const
 Get a dedicated ChildElement by name.
 
self_type getChildElement (const std::string &name)
 Get a dedicated ChildElement by name.
 
self_type getArrayElement (size_t array_pos=0) const
 Get the array element of the given array_pos.
 
self_type getArrayElement (size_t array_pos=0)
 Get the array element of the given array_pos.
 
const void * getAddress () const
 Get the address of the element.
 
const child_elements_typegetChildElements () const
 Get the ChildElements.
 
- Public Member Functions inherited from DecoderElement< ElementAccessType, ChildElementsType >
 DecoderElement ()=delete
 CTOR.
 
template<typename T>
getValue () const
 Get the value as type T.
 
a_util::variant::Variant getVariantValue () const
 Get the value as variant.
 
std::string getStringValue () const
 Get the value as string.
 
void getRawValue (void *value, size_t value_size) const
 Get the as copy to the value buffer.
 
const void * getAddress () const
 Get the address of the element.
 
self_type getChildElement (const std::string &name) const
 Get the child element with the given name.
 
self_type getArrayElement (size_t array_pos=0) const
 Get the array element of the given array_pos.
 
- Public Member Functions inherited from FactoryElement< ElementAccessType, ChildElementsType >
 FactoryElement ()=delete
 no CTOR
 
 FactoryElement (FactoryElement &&other)
 move CTOR
 
FactoryElementoperator= (FactoryElement &&other)
 copy assignment operator
 
 FactoryElement (const FactoryElement &other)
 copy CTOR
 
FactoryElementoperator= (const FactoryElement &other)
 move assignment operator
 
 ~FactoryElement ()=default
 DTOR.
 
const CodecIndexgetIndex () const
 Get the codec index of the element.
 
size_t getArraySize () const
 Get the array size.
 
ddl::codec::ElementType getType () const
 Get the type of the element.
 
std::string getFullName () const
 Get the full name of the element.
 
std::string getName () const
 Get the name of the element If the element is an array you get the elements array name representation: "element_name[0]" or element_name[1] ... etc.
 
std::string getBaseName () const
 Get the base name of the element.
 
bool isArray () const
 Get array information.
 
bool hasChildren () const
 Get children information.
 
const child_elements_typegetChildElements () const
 Get the ChildElements.
 
self_type getChildElement (const std::string &name) const
 Get the child element with the given name.
 
self_type getArrayElement (size_t array_pos=0) const
 Get the array element of the given array_pos.
 
bool isValid () const
 Get validation indormation.
 

Public Attributes

friend child_elements_type
 friend declaration for child_elements_type
 
friend iterator_type
 friend declaration for iterator_type
 
friend const_iterator_type
 friend declaration for const_iterator_type
 
friend access_type
 friend declaration for access_type
 
friend base_type
 friend declaration for base_type
 
friend factory_base_type
 friend declaration for factory_base_type
 
- Public Attributes inherited from DecoderElement< ElementAccessType, ChildElementsType >
friend child_elements_type
 friend declaration for child_elements_type
 
friend iterator_type
 friend declaration for iterator_type
 
friend const_iterator_type
 friend declaration for const_iterator_type
 
friend access_type
 friend declaration for access_type
 
friend base_type
 friend declaration for base_type
 
friend CodecElement< ElementAccessType, ChildElementsType >
 friend declaration for CodecElement
 
- Public Attributes inherited from FactoryElement< ElementAccessType, ChildElementsType >
friend child_elements_type
 friend declaration for child_elements_type
 
friend iterator_type
 friend declaration for iterator_type
 
friend const_iterator_type
 friend declaration for child_elements_type
 
friend access_type
 friend declaration for access_type
 
friend DecoderElement< ElementAccessType, ChildElementsType >
 friend declaration for DecoderElement
 
friend CodecElement< ElementAccessType, ChildElementsType >
 friend declaration for CodecElement
 

Private Member Functions

 CodecElement (CodecIndex &&index, size_t end_element_index, size_t child_elements_count, access_type &access)
 
 CodecElement (CodecIndex &&index, size_t end_element_index, access_type &access)
 
 CodecElement (const std::string &element_name, access_type &access)
 
 CodecElement (CodecIndex &&index, access_type &access)
 
 CodecElement (access_type &access)
 
void next ()
 

Detailed Description

template<typename ElementAccessType, typename ChildElementsType = ChildElements<ElementAccessType>>
class ddl::codec::CodecElement< ElementAccessType, ChildElementsType >

A CodecElement to get and set values.

Template Parameters
ElementAccessTypeThe element access concept type. (see concept templates CodecElementAccess)

Definition at line 1191 of file codec_iterator.h.

Member Typedef Documentation

◆ access_type

template<typename ElementAccessType, typename ChildElementsType = ChildElements<ElementAccessType>>
using access_type = typename ElementAccessType::access_type

access type from the concept

Definition at line 1197 of file codec_iterator.h.

◆ base_type

template<typename ElementAccessType, typename ChildElementsType = ChildElements<ElementAccessType>>
using base_type = DecoderElement<ElementAccessType, ChildElementsType>

base type

Definition at line 1195 of file codec_iterator.h.

◆ child_elements_type

template<typename ElementAccessType, typename ChildElementsType = ChildElements<ElementAccessType>>
using child_elements_type = typename factory_base_type::child_elements_type

allowed container type

Definition at line 1199 of file codec_iterator.h.

◆ const_iterator_type

template<typename ElementAccessType, typename ChildElementsType = ChildElements<ElementAccessType>>
using const_iterator_type = typename child_elements_type::const_iterator

allowed const iterator type

Definition at line 1202 of file codec_iterator.h.

◆ factory_base_type

template<typename ElementAccessType, typename ChildElementsType = ChildElements<ElementAccessType>>
using factory_base_type = FactoryElement<ElementAccessType, ChildElementsType>

factory base type

Definition at line 1194 of file codec_iterator.h.

◆ iterator_type

template<typename ElementAccessType, typename ChildElementsType = ChildElements<ElementAccessType>>
using iterator_type = typename child_elements_type::iterator

allowed iterator type

Definition at line 1200 of file codec_iterator.h.

◆ self_type

template<typename ElementAccessType, typename ChildElementsType = ChildElements<ElementAccessType>>
using self_type = CodecElement<ElementAccessType, ChildElementsType>

self type

Definition at line 1196 of file codec_iterator.h.

Constructor & Destructor Documentation

◆ CodecElement() [1/5]

template<typename ElementAccessType, typename ChildElementsType = ChildElements<ElementAccessType>>
CodecElement ( CodecIndex && index,
size_t end_element_index,
size_t child_elements_count,
access_type & access )
inlineprivate

Definition at line 1384 of file codec_iterator.h.

◆ CodecElement() [2/5]

template<typename ElementAccessType, typename ChildElementsType = ChildElements<ElementAccessType>>
CodecElement ( CodecIndex && index,
size_t end_element_index,
access_type & access )
inlineprivate

Definition at line 1391 of file codec_iterator.h.

◆ CodecElement() [3/5]

template<typename ElementAccessType, typename ChildElementsType = ChildElements<ElementAccessType>>
CodecElement ( const std::string & element_name,
access_type & access )
inlineprivate

Definition at line 1395 of file codec_iterator.h.

◆ CodecElement() [4/5]

template<typename ElementAccessType, typename ChildElementsType = ChildElements<ElementAccessType>>
CodecElement ( CodecIndex && index,
access_type & access )
inlineprivate

Definition at line 1399 of file codec_iterator.h.

◆ CodecElement() [5/5]

template<typename ElementAccessType, typename ChildElementsType = ChildElements<ElementAccessType>>
CodecElement ( access_type & access)
inlineprivate

Definition at line 1402 of file codec_iterator.h.

Member Function Documentation

◆ getAddress() [1/2]

template<typename ElementAccessType, typename ChildElementsType = ChildElements<ElementAccessType>>
void * getAddress ( )
inline

Get the address (with writing access)

Returns
void*

Definition at line 1319 of file codec_iterator.h.

◆ getAddress() [2/2]

template<typename ElementAccessType, typename ChildElementsType = ChildElements<ElementAccessType>>
const void * getAddress ( ) const
inline

Get the address of the element.

Returns
const void*

Definition at line 1022 of file codec_iterator.h.

◆ getArrayElement() [1/2]

template<typename ElementAccessType, typename ChildElementsType = ChildElements<ElementAccessType>>
self_type getArrayElement ( size_t array_pos = 0)
inline

Get the array element of the given array_pos.

Parameters
array_posThe array pos of the element to retrieve
Returns
self_type

Definition at line 1377 of file codec_iterator.h.

◆ getArrayElement() [2/2]

template<typename ElementAccessType, typename ChildElementsType = ChildElements<ElementAccessType>>
self_type getArrayElement ( size_t array_pos = 0) const
inline

Get the array element of the given array_pos.

Parameters
array_posThe array pos of the element to retrieve
Returns
self_type

Definition at line 1366 of file codec_iterator.h.

◆ getChildElement() [1/2]

template<typename ElementAccessType, typename ChildElementsType = ChildElements<ElementAccessType>>
self_type getChildElement ( const std::string & name)
inline

Get a dedicated ChildElement by name.

Parameters
nameThe name if point notation.
Returns
self_type
Exceptions
std::runtime_errorif name is not valid or not found

Definition at line 1354 of file codec_iterator.h.

◆ getChildElement() [2/2]

template<typename ElementAccessType, typename ChildElementsType = ChildElements<ElementAccessType>>
self_type getChildElement ( const std::string & name) const
inline

Get a dedicated ChildElement by name.

Parameters
nameThe name if point notation.
Returns
self_type
Exceptions
std::runtime_errorif name is not valid or not found

Definition at line 1340 of file codec_iterator.h.

◆ getChildElements() [1/2]

template<typename ElementAccessType, typename ChildElementsType = ChildElements<ElementAccessType>>
child_elements_type & getChildElements ( )
inline

Gets an reference to the child elements.

Returns
child_elements_type&

Definition at line 1330 of file codec_iterator.h.

◆ getChildElements() [2/2]

template<typename ElementAccessType, typename ChildElementsType = ChildElements<ElementAccessType>>
const child_elements_type & getChildElements ( ) const
inline

Get the ChildElements.

Returns
child_elements_type
Exceptions
std::runtime_errorif index is invalid

Definition at line 710 of file codec_iterator.h.

◆ next()

template<typename ElementAccessType, typename ChildElementsType = ChildElements<ElementAccessType>>
void next ( )
inlineprivate

Definition at line 1405 of file codec_iterator.h.

◆ reset()

template<typename ElementAccessType, typename ChildElementsType = ChildElements<ElementAccessType>>
void reset ( bool zero_value_of_known_type = false)
inline

Reset the elements value to their default values, constant values defined in the data definition or zero if zero_value is set.

Parameters
[in]zero_value_of_known_typeset the value to 0 if no constant or default value set in data definition.

Definition at line 1284 of file codec_iterator.h.

◆ setRawValue()

template<typename ElementAccessType, typename ChildElementsType = ChildElements<ElementAccessType>>
void setRawValue ( const void * value,
size_t value_size )
inline

Set the value by copying from a value buffer.

Parameters
[in]valueThe value buffer
[in]value_sizethe size of the value buffer in bytes.
See also
setElementRawValue

Definition at line 1272 of file codec_iterator.h.

◆ setStringValue()

template<typename ElementAccessType, typename ChildElementsType = ChildElements<ElementAccessType>>
void setStringValue ( const std::string & value)
inline

Sets the value from value as string.

Parameters
[in]valueThe value to set as string. string will be converted to the elements type.
See also
setElementStringValue

Definition at line 1261 of file codec_iterator.h.

◆ setValue()

template<typename ElementAccessType, typename ChildElementsType = ChildElements<ElementAccessType>>
template<typename T>
void setValue ( const T & value)
inline

Sets the value from value of type T.

Template Parameters
TType of the value
Parameters
[in]valueThe value in type T
Remarks
for T = std::string the value can be set as valid element name in case of enum type otherwise the string is converted
See also
setElementValue

Definition at line 1241 of file codec_iterator.h.

Referenced by CodecElement< CodecElementAccess< Codec > >::setValue().

◆ setVariantValue()

template<typename ElementAccessType, typename ChildElementsType = ChildElements<ElementAccessType>>
void setVariantValue ( const a_util::variant::Variant & value)
inline

Sets the value from value as variant.

Parameters
[in]valueThe value to set as variant
See also
setElementVariantValue

Definition at line 1251 of file codec_iterator.h.

Member Data Documentation

◆ access_type

template<typename ElementAccessType, typename ChildElementsType = ChildElements<ElementAccessType>>
friend access_type

friend declaration for access_type

Definition at line 1219 of file codec_iterator.h.

◆ base_type

template<typename ElementAccessType, typename ChildElementsType = ChildElements<ElementAccessType>>
friend base_type

friend declaration for base_type

Definition at line 1223 of file codec_iterator.h.

◆ child_elements_type

template<typename ElementAccessType, typename ChildElementsType = ChildElements<ElementAccessType>>
friend child_elements_type

friend declaration for child_elements_type

Definition at line 1207 of file codec_iterator.h.

◆ const_iterator_type

template<typename ElementAccessType, typename ChildElementsType = ChildElements<ElementAccessType>>
friend const_iterator_type

friend declaration for const_iterator_type

Definition at line 1215 of file codec_iterator.h.

◆ factory_base_type

template<typename ElementAccessType, typename ChildElementsType = ChildElements<ElementAccessType>>
friend factory_base_type

friend declaration for factory_base_type

Definition at line 1227 of file codec_iterator.h.

◆ iterator_type

template<typename ElementAccessType, typename ChildElementsType = ChildElements<ElementAccessType>>
friend iterator_type

friend declaration for iterator_type

Definition at line 1211 of file codec_iterator.h.