ADTF
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
LeafCodecIndex

The Leaf codec index is a small layout information index to access the decoders/codecs data very fast. More...

#include <leaf_value_access.h>

Public Member Functions

 LeafCodecIndex ()=delete
 no CTOR
 
 LeafCodecIndex (const CodecIndex &codec_index, ddl::DataRepresentation rep)
 CTOR.
 
const LeafLayoutgetLayout () const noexcept
 Get the leaf layout.
 

Static Public Member Functions

template<bool ThrowError>
static bool convertToLeafLayout (const CodecIndex &codec_index, LeafLayout &leaf_layout, ddl::DataRepresentation rep)
 Retrieves a valid, small, 8-bytes LeafLayout from a CodecIndex.
 

Private Types

template<bool ThrowError>
using throw_error = std::integral_constant<bool, ThrowError>
 

Static Private Member Functions

static bool convertToLeafLayout (const CodecIndex &codec_index, LeafLayout &leaf_layout, ddl::DataRepresentation rep, throw_error< false >) noexcept
 For internal use only.
 
static bool convertToLeafLayout (const CodecIndex &codec_index, LeafLayout &leaf_layout, ddl::DataRepresentation rep, throw_error< true >)
 For internal use only.
 
template<typename T>
static bool checkTypeSize (const CodecIndex &codec_index, ddl::DataRepresentation rep, bool exact_check_on_serialized, throw_error< false >) noexcept
 For internal use only.
 
template<typename T>
static bool checkTypeSize (const CodecIndex &codec_index, ddl::DataRepresentation rep, bool exact_check, throw_error< true >)
 For internal use only.
 
template<bool ThrowError>
static bool checkLeafLayout (const CodecIndex &codec_index, ddl::DataRepresentation rep)
 For internal use only.
 

Private Attributes

LeafLayout _leaf_layout
 For internal use only.
 

Detailed Description

The Leaf codec index is a small layout information index to access the decoders/codecs data very fast.

There are following constraints:

  • only possible to retrieve layout information for a leaf within the struct
  • only standard data types are supported
  • no customized data type can be used (standard must have standard sizes, user types are not possible)
  • with this index it is not possible to identify the name of the element
  • no complex types or the whole array element can be accessed
  • it can only describe serialized or deserialized data representation, you need to set while creating it

Definition at line 117 of file leaf_value_access.h.

Member Typedef Documentation

◆ throw_error

template<bool ThrowError>
using throw_error = std::integral_constant<bool, ThrowError>
private

Definition at line 120 of file leaf_value_access.h.

Constructor & Destructor Documentation

◆ LeafCodecIndex()

LeafCodecIndex ( const CodecIndex & codec_index,
ddl::DataRepresentation rep )
inline

CTOR.

Parameters
codec_indexthe valid codec index to create the LeafCodecIndex from
repthe data representation to extract for decoding

Definition at line 132 of file leaf_value_access.h.

References _leaf_layout, and convertToLeafLayout().

Member Function Documentation

◆ checkLeafLayout()

◆ checkTypeSize() [1/2]

template<typename T>
static bool checkTypeSize ( const CodecIndex & codec_index,
ddl::DataRepresentation rep,
bool exact_check,
throw_error< true >  )
inlinestaticprivate

For internal use only.

Definition at line 244 of file leaf_value_access.h.

References checkTypeSize().

◆ checkTypeSize() [2/2]

template<typename T>
static bool checkTypeSize ( const CodecIndex & codec_index,
ddl::DataRepresentation rep,
bool exact_check_on_serialized,
throw_error< false >  )
inlinestaticprivatenoexcept

For internal use only.

Definition at line 226 of file leaf_value_access.h.

References ddl::codec::deserialized.

Referenced by checkLeafLayout(), and checkTypeSize().

◆ convertToLeafLayout() [1/3]

template<bool ThrowError>
static bool convertToLeafLayout ( const CodecIndex & codec_index,
LeafLayout & leaf_layout,
ddl::DataRepresentation rep )
inlinestatic

Retrieves a valid, small, 8-bytes LeafLayout from a CodecIndex.

Template Parameters
ThrowErrorThrows if the conversion is not possible. (If set to false, the return value must be checked!)
Parameters
codec_indexThe CodecIndex to retrieve the lyout information from
leaf_layoutThe new small leaf layout
repThe layout information for a serialzed or deserialized representation
Returns
true The layout retrieval was successfully
false The layout retrieval was not successfully

Definition at line 158 of file leaf_value_access.h.

References checkLeafLayout(), and convertToLeafLayout().

Referenced by LeafCodecIndex(), convertToLeafLayout(), convertToLeafLayout(), ValueGetterSelect< DecoderType, ValueType, true >::getValue(), and ValueSetterSelect< CodecType, ValueType, true >::setValue().

◆ convertToLeafLayout() [2/3]

static bool convertToLeafLayout ( const CodecIndex & codec_index,
LeafLayout & leaf_layout,
ddl::DataRepresentation rep,
throw_error< false >  )
inlinestaticprivatenoexcept

◆ convertToLeafLayout() [3/3]

static bool convertToLeafLayout ( const CodecIndex & codec_index,
LeafLayout & leaf_layout,
ddl::DataRepresentation rep,
throw_error< true >  )
inlinestaticprivate

For internal use only.

Definition at line 211 of file leaf_value_access.h.

References convertToLeafLayout().

◆ getLayout()

const LeafLayout & getLayout ( ) const
inlinenoexcept

Get the leaf layout.

Returns
const LeafLayout&

Definition at line 141 of file leaf_value_access.h.

References _leaf_layout.

Referenced by StaticDecoder::getElementValue(), Codec::setElementValue(), and StaticCodec::setElementValue().

Member Data Documentation

◆ _leaf_layout

LeafLayout _leaf_layout
private

For internal use only.

Definition at line 315 of file leaf_value_access.h.

Referenced by LeafCodecIndex(), and getLayout().