ADTF  3.18.3
cSampleDecoderBase

Decoder Base Class. More...

Inheritance diagram for cSampleDecoderBase:
[legend]

Public Types

typedef ddl::codec::DecoderElement< sample_decoder_access< const cSampleDecoderBase > > tElement
 Iterator value element type for the codec to get value, set value and get element information. More...
 
typedef ddl::codec::ChildElements< sample_decoder_access< const cSampleDecoderBase > > tElements
 Iterator container to iterate all elements of the decoder. More...
 
- Public Types inherited from cDecoderLegacy
typedef ddl::StructElement DefinedStructElementType
 type definition for the old access_element API.
 

Public Member Functions

 cSampleDecoderBase (cSampleDecoderBase &&)
 
cSampleDecoderBaseoperator= (cSampleDecoderBase &&)
 
tResult IsValid () const
 Returns the validation state of the coder. More...
 
tElement GetElement (const tCodecIndex &oCodecIndex) const
 Retrieves an element for the codec index. More...
 
tElement GetElement (const std::string &strElementFullName) const
 Retrieves an element for the given name. More...
 
const tElementsGetElements () const
 Retrieves the elements of the decoder to get element information and the values. More...
 
size_t GetElementChildCount (const tCodecIndex &oCodecIndex) const
 Retrieves the amount of child elements for the given codec index. More...
 
std::string GetElementFullName (const tCodecIndex &oCodecIndex) const
 Retrieves the full name of the element within its main structure. More...
 
std::string GetElementName (const tCodecIndex &oCodecIndex) const
 Retrieves the name of the element within its structured element. More...
 
const std::string & GetElementBaseName (const tCodecIndex &oCodecIndex) const
 Retrieves the base name of the element within its structured element. More...
 
size_t GetStaticBufferSize () const
 Gets the static buffer size in bytes for the main structure. More...
 
size_t GetStaticBufferSize (ddl::tDataRepresentation oRep) const
 Gets the static buffer size in bytes for the main structure. More...
 
ddl::tDataRepresentation GetRepresentation () const
 Returns the current data representation the decoder decodes from. More...
 
template<typename T >
GetElementValue (const tCodecIndex &oCodecIndex) const
 Gets the elements value as value of type T. More...
 
template<typename T >
GetElementValue (const penguin::tLeafCodecIndex &oLeafCodecIndex) const
 Gets the elements value as value of type T. More...
 
a_util::variant::Variant GetElementVariantValue (const tCodecIndex &oCodecIndex) const
 Returns the current value of the given element as a variant. More...
 
void GetElementVariantValue (const tCodecIndex &oCodecIndex, a_util::variant::Variant &oValue) const
 Returns the current value of the given element as a variant. More...
 
std::string GetElementStringValue (const tCodecIndex &oCodecIndex) const
 Returns the current value of the given element as a string. More...
 
void GetElementRawValue (const tCodecIndex &oCodecIndex, void *pValue, size_t szValueSize) const
 Copies the elements value to the given memory pointer in @pValue. More...
 
const void * GetElementAddress (const tCodecIndex &oCodecIndex) const
 Gets the elements value memory pointer into the given data. More...
 
void Resolve (tCodecIndex &oCodecIndex) const
 retrieves the lyoutinformation for the given codec index. More...
 
- Public Member Functions inherited from cDecoderLegacy
tCodecIndex Resolve (tCodecLeafIndex nElementLeafIndex) const
 Legacy: Retrieves a codec index with element information for the given leaf index. More...
 
adtf_util::cVariant GetElementValue (tCodecLeafIndex nElementLeafIndex) const
 Legacy: Get the Element Value. More...
 
tResult GetElementValue (tCodecLeafIndex nElementLeafIndex, adtf_util::cVariant &oValue) const
 Legacy: Get the Element Value. More...
 
tResult GetElementValue (const char *strElementName, adtf_util::cVariant &oValue) const
 Legacy: Get the Element Value. More...
 
tResult GetElementValue (tCodecLeafIndex nElementLeafIndex, void *pValue) const
 Legacy: Copies the Element Value memory into the memory pointer. More...
 
tResult GetElementValue (const char *strElementName, void *pValue) const
 Legacy: Get the Element Value pointer. More...
 
adtf_util::cString GetElementValueString (tCodecLeafIndex nElementLeafIndex) const
 Legacy: Get the Element Value as string (resolved to the enum element name if is enum type) More...
 
tResult GetElement (tCodecLeafIndex nElementLeafIndex, const ddl::StructElement *&pElement) const
 Get the Element StructElement information. More...
 
const void * GetElementAddress (tCodecLeafIndex nElementIndex) const
 Legacy: Get the Element StructElement information. More...
 
size_t GetElementCount () const
 Legacy: Get the Element Leaf count. More...
 

Protected Member Functions

void ResetFirst ()
 
- Protected Member Functions inherited from cDecoderLegacy
virtual const ddl::codec::StaticDecodergetDecoder () const =0
 Get the base ddl::Decoder. More...
 

Private Attributes

tElement m_oFirstElement
 

Additional Inherited Members

- Static Public Member Functions inherited from cDecoderLegacy
static const char * GetStructElementName (const ddl::StructElement *pElement)
 Legacy: Get the Struct Element Name for access_element legacy support. More...
 

Detailed Description

Decoder Base Class.

Definition at line 35 of file sample_codec.h.

Member Typedef Documentation

◆ tElement

Iterator value element type for the codec to get value, set value and get element information.

See also
for_each_leaf_element, for_each_element
ddl::codec::DecoderElement

Definition at line 59 of file sample_codec.h.

◆ tElements

Iterator container to iterate all elements of the decoder.

See also
for_each_leaf_element, for_each_element
ddl::codec::ChildElements, cSampleDecoderBase::tElement

Definition at line 94 of file sample_codec.h.

Member Function Documentation

◆ GetElement() [1/2]

tElement GetElement ( const std::string &  strElementFullName) const

Retrieves an element for the given name.

Parameters
[in]strElementFullNameThe full name of the element in point notation (i.e. "element1.child_element[4].element_value").
Returns
tElement the element
Remarks
The element is only valid as long as the decoder exists.
Exceptions
throwstResult if not found.

◆ GetElement() [2/2]

tElement GetElement ( const tCodecIndex oCodecIndex) const

Retrieves an element for the codec index.

You may use a valid codec index retrieved by the cSampleCodecFactory, but no other! This is to prepare for decoding in advance:

//use a sample factory to retrieve all codec indices
cSampleCodecFactory oMyFactory("mystruct", oMyDescription);
auto oCodecIndexOfInterest = oMyFactory.GetElement("my_element_to_decode").getIndex();
//...
auto oDecoder = oMyFactory.MakeStaticDecoderFor(pMySample);
auto oElementOfInterest = oDecoder.GetElement(oCodecIndexOfInterest);
Parameters
[in]oCodecIndexThe codec index retrieved by the used cSampleCodecFactory for this decoder.
Returns
tElement the element
Remarks
The element is only valid as long as the decoder exists.
Exceptions
throwstResult if not found.

◆ GetElementAddress()

const void* GetElementAddress ( const tCodecIndex oCodecIndex) const

Gets the elements value memory pointer into the given data.

Parameters
[in]oCodecIndexThe codec index of the element.
Returns
The elements value memory pointer into the given data.
Exceptions
throwstResult if not found.

◆ GetElementBaseName()

const std::string& GetElementBaseName ( const tCodecIndex oCodecIndex) const

Retrieves the base name of the element within its structured element.

If the element is an array you get the elements base name respresentation : "element_name" for each array element. If the element is not an array you get the elements name respresentation is also the base name respresentation: "element_name" .

Parameters
[in]oCodecIndexThe codec index of the element.
Returns
The base name of the element.
Exceptions
throwstResult if not found.

◆ GetElementChildCount()

size_t GetElementChildCount ( const tCodecIndex oCodecIndex) const

Retrieves the amount of child elements for the given codec index.

Parameters
[in]oCodecIndexThe codec index of the element.
Return values
0has no children. May be a leaf element.
>0has children. May be a structured element.
Exceptions
throwstResult if not found.

◆ GetElementFullName()

std::string GetElementFullName ( const tCodecIndex oCodecIndex) const

Retrieves the full name of the element within its main structure.

If the element is an array you get the elements array name respresentation: "main_element.element_name[0]" or main_element.element_name[1] ... etc. If the element is not an array you get the elements name respresentation: "main_element.element_name".

Parameters
[in]oCodecIndexThe codec index of the element.
Returns
The full name of the element in array representation depending on array size.
Exceptions
throwstResult if not found.

◆ GetElementName()

std::string GetElementName ( const tCodecIndex oCodecIndex) const

Retrieves the name of the element within its structured element.

If the element is an array you get the elements array name respresentation: "element_name[0]" or element_name[1] ... etc. If the element is not an array you get the elements name respresentation: "element_name".

Parameters
[in]oCodecIndexThe codec index of the element.
Returns
The name of the element in array representation depending on array size.
Exceptions
throwstResult if not found.

◆ GetElementRawValue()

void GetElementRawValue ( const tCodecIndex oCodecIndex,
void *  pValue,
size_t  szValueSize 
) const

Copies the elements value to the given memory pointer in @pValue.

Parameters
[in]oCodecIndexThe codec index of the element.
[out]pValueThe memory pointer to copy the value memory to.
[in]szValueSizesize in bytes of the memory in pValue (if szValueSize is set to 0 there is no check for memory size.)
Exceptions
throwstResult if not found or szValueSize is lower then elment value memory.

◆ GetElements()

const tElements& GetElements ( ) const

Retrieves the elements of the decoder to get element information and the values.

Returns
tElements The elements iterator container.
See also
for_each_leaf_element, for_each_element
cSampleDecoderBase::tElement, The Codec Index and the Element Iterator

◆ GetElementStringValue()

std::string GetElementStringValue ( const tCodecIndex oCodecIndex) const

Returns the current value of the given element as a string.

If this element is a enum type the enum types element name will be set.

Parameters
[in]oCodecIndexThe index of the element.
Returns
std::string String to return the current value to, if enum, enum value name will be set.
Exceptions
throwstResult if not found.

◆ GetElementValue() [1/2]

T GetElementValue ( const penguin::tLeafCodecIndex oLeafCodecIndex) const
inline

Gets the elements value as value of type T.

You may use a valid codec index retrieved by the cSampleCodecFactory, but no other! This is to prepare for decoding in advance:

//use a sample factory to retrieve all codec indices
cSampleCodecFactory oMyFactory("mystruct", oMyDescription);
auto oCodecIndexOfInterest = oMyFactory.GetElement("my_element_to_decode").getIndex();
//...
auto oDecoder = oMyFactory.MakeStaticDecoderFor(pMySample);
auto oValueOfInterest = oDecoder.GetElementValue<tFloat64>(oCodecIndexOfInterest);
double tFloat64
type definition for Float64 (64bit double values) (platform and compiler independent type).
Parameters
[in]oCodecIndexThe codec index of the element.
Template Parameters
TThe type of the value to return.
Returns
value in type T (supported types: all int types, bool, float, double, std::string)
Remarks
for T = std::string the value is returned as element name in case of enum type
Exceptions
throwstResult if not found.

Definition at line 218 of file sample_codec.h.

References cDecoderLegacy::getDecoder().

◆ GetElementValue() [2/2]

T GetElementValue ( const tCodecIndex oCodecIndex) const
inline

Gets the elements value as value of type T.

You may use a valid codec index retrieved by the cSampleCodecFactory, but no other! This is to prepare for decoding in advance:

//use a sample factory to retrieve all codec indices
cSampleCodecFactory oMyFactory("mystruct", oMyDescription);
auto oCodecIndexOfInterest = oMyFactory.GetElement("my_element_to_decode").getIndex();
//...
auto oDecoder = oMyFactory.MakeStaticDecoderFor(pMySample);
auto oValueOfInterest = oDecoder.GetElementValue<tFloat64>(oCodecIndexOfInterest);
Parameters
[in]oCodecIndexThe codec index of the element.
Template Parameters
TThe type of the value to return.
Returns
value in type T (supported types: all int types, bool, float, double, std::string)
Remarks
for T = std::string the value is returned as element name in case of enum type
Exceptions
throwstResult if not found.

Definition at line 184 of file sample_codec.h.

References cDecoderLegacy::getDecoder().

◆ GetElementVariantValue() [1/2]

a_util::variant::Variant GetElementVariantValue ( const tCodecIndex oCodecIndex) const

Returns the current value of the given element as a variant.

Parameters
[in]oCodecIndexThe index of the element.
Returns
a_util::variant::Variant Variant to return the current value to, type will be set.
Exceptions
throwstResult if not found.

◆ GetElementVariantValue() [2/2]

void GetElementVariantValue ( const tCodecIndex oCodecIndex,
a_util::variant::Variant oValue 
) const

Returns the current value of the given element as a variant.

Parameters
[in]oCodecIndexThe index of the element.
[out]oValueVariant to return the current value to, type will be set.
Exceptions
throwstResult if not found.

◆ GetRepresentation()

ddl::tDataRepresentation GetRepresentation ( ) const

Returns the current data representation the decoder decodes from.

Returns
The data representation which this decoder handles.

◆ GetStaticBufferSize() [1/2]

size_t GetStaticBufferSize ( ) const

Gets the static buffer size in bytes for the main structure.

Return values
size_tsize in bytes of the structure depending on the current representation (GetRepresentation)

◆ GetStaticBufferSize() [2/2]

size_t GetStaticBufferSize ( ddl::tDataRepresentation  oRep) const

Gets the static buffer size in bytes for the main structure.

Parameters
eRepoption to retrieve size in bytes for the deserialized or serialized representation.
Return values
size_tsize in bytes of the structure depending on the given representation eRep

◆ IsValid()

tResult IsValid ( ) const

Returns the validation state of the coder.

Return values
ERR_NOERRORif everything is okay
errorcode + error description.

Referenced by decoding_sample_reader< ReaderImplementation >::GetLastDecoder(), and decoding_sample_reader< ReaderImplementation >::GetNextDecoder().

◆ Resolve()

void Resolve ( tCodecIndex oCodecIndex) const

retrieves the lyoutinformation for the given codec index.

Parameters
[in]oCodecIndexThe codec index of the element to retrieve.