ADTF
Loading...
Searching...
No Matches
adtf::mediadescription::structure< T > Class Template Reference

#include <type_reflection.h>

Inherits ddl::DDStructureGenerator< void, true >.

Public Types

typedef ddl::DDStructureGenerator< T, true > base_type
 

Public Member Functions

 structure (const std::string &strName, uint32_t ui32StructVersion=1)
 
size_t GetSize () const
 
size_t GetAlignment () const
 
template<typename MemberType>
structureAdd (const std::string &strName, MemberType T::*pMemberOffset)
 
template<typename MemberType>
structureAdd (const std::string &strName, MemberType T::*pMemberOffset, const ddl::DDEnum &oTypeDefinition)
 
template<typename MemberType>
structureAdd (const std::string &strName, MemberType T::*pMemberOffset, const ddl::DDStructure &oTypeDefinition)
 
const ddl::DDStructureGetStructure () const
 Get the current valid DDStructure object.
 
 operator const ddl::DDStructure & () const
 Get the current valid DDStructure object.
 
- Public Member Functions inherited from ddl::DDStructureGenerator< void, true >
 DDStructureGenerator (const std::string &name, uint32_t struct_version=1)
 CTOR to create a structure type based on a type.
 
DDElementRef createElement (const std::string &name, MemberType void::*member_offset)
 
DDElementRef createElement (const std::string &name, MemberType void::*member_offset, const std::string &valid_element_count_or_array_size_name)
 
DDElementRef createElement (const std::string &name, MemberType void::*member_offset, const DDEnum &enum_type)
 
DDElement createElement (const std::string &name, MemberType void::*member_offset, const DDEnum &enum_type, const std::string &valid_element_count_or_array_size_name)
 
DDElementRef createElement (const std::string &name, MemberType void::*member_offset, const DDStructure &struct_type)
 
DDElementRef createElement (const std::string &name, MemberType void::*member_offset, const DDStructure &struct_type, const std::string &valid_element_count_or_array_size_name)
 
DDStructureGeneratoraddElement (const std::string &name, MemberType void::*member_offset)
 
DDStructureGeneratoraddElement (const std::string &name, MemberType void::*member_offset, const std::string &valid_element_count_or_array_size_name)
 
DDStructureGeneratoraddElement (const std::string &name, MemberType void::*member_offset, const DDEnum &enum_type)
 
DDStructureGeneratoraddElement (const std::string &name, MemberType void::*member_offset, const DDEnum &enum_type, const std::string &valid_element_count_or_array_size_name)
 
DDStructureGeneratoraddElement (const std::string &name, MemberType void::*member_offset, const DDStructure &struct_type)
 
DDStructureGeneratoraddElement (const std::string &name, MemberType void::*member_offset, const DDStructure &struct_type, const std::string &valid_element_count_or_array_size_name)
 
std::string getStructDescription () const
 Gets the structs data definition as XML String.
 
std::string getStructName () const
 Gets the Struct Name.
 
const dd::DataDefinitiongetDD () const
 returns a valid DDL.
 
const dd::StructTypegetStructType () const
 Get the Struct Type object.
 
const DDStructuregetStructure () const
 Get the current valid DDStructure object.
 
size_t getSize () const
 Retrieves the current evaluated size of the structure.
 
size_t getAlignment () const
 Retrieves the current evaluated alignment of the structure.
 
 operator const DDStructure & () const
 Get the current valid DDStructure object.
 
void setStructInfo (const std::string &comment)
 Set additional struct information like comment. This is important to create additional info in type reflection for DDStructureGenerator.
 
void setElementInfo (const std::string &element_name, const std::string &description={}, const std::string &comment={}, const std::string &value={}, const std::string &minimum_value={}, const std::string &maximum_value={}, const std::string &default_value={}, const std::string &scale={}, const std::string &offset={})
 Set additional element information to the given element_name.
 
void setElementUnit (const std::string &element_name, const DDUnit &unit)
 Sets additional element unit information to the given element_name. Any other unit information will be overwritten.
 
void setElementUnit (const std::string &element_name, const dd::BaseUnit &base_unit)
 Sets additional element base unit information to the given element_name.
 
DDElementRef getElement (const std::string &element_name)
 Gets a element reference to the element with name element_name owned by the DDStructureGenerator.
 

Detailed Description

template<typename T = void>
class adtf::mediadescription::structure< T >

This is used to create a structure type from an existing c++ struct definition.

Example Usage

struct tSub
{
uint8_t nValue1;
uint8_t nValue2;
};
struct tParent
{
uint32_t nSomething;
tSub sSub;
};
auto oSubType = structure<tSub>("tSub")
.Add("nValue1", &tSub::nValue1)
.Add("nValue2", &tSub::nValue2);
auto oParentType = structure<tParent>("tParent")
.Add("nSomething", &tParent::nSomething)
.Add("sSub", &tParent::sSub, oSubType);
structure(const std::string &strName, uint32_t ui32StructVersion=1)
Definition type_reflection.h:138

Also have a look at Example Demo Time Trigger.

Constructor & Destructor Documentation

◆ structure()

template<typename T = void>
adtf::mediadescription::osborn::structure< T >::structure ( const std::string & strName,
uint32_t ui32StructVersion = 1 )
inline

Initializes the structure type.

Parameters
[in]strNameThe name.
[in]ui32StructVersionThe structure version.
Remarks
This implementation uses padding ddl elements to find the right position of eleemnts. Use ddl::DDStructureGenerator<T, false> to switch it off. For that you need to completely describe the whole structure and each element must be added in the right order.

Member Function Documentation

◆ Add() [1/3]

template<typename T = void>
template<typename MemberType>
structure & adtf::mediadescription::osborn::structure< T >::Add ( const std::string & strName,
MemberType T::* pMemberOffset )
inline

Adds a new member of arithmetic type (POD).

Parameters
[in]strNameThe name of the member.
[in]pMemberOffsetThe pointer to the member.
Returns
A reference to the structure.

◆ Add() [2/3]

template<typename T = void>
template<typename MemberType>
structure & adtf::mediadescription::osborn::structure< T >::Add ( const std::string & strName,
MemberType T::* pMemberOffset,
const ddl::DDEnum & oTypeDefinition )
inline

Adds a new member of an enumeration type.

Parameters
[in]strNameThe name of the member.
[in]pMemberOffsetThe pointer to the member.
[in]oTypeDefinitionThe enumeration type.
Returns
A reference to the structure.

◆ Add() [3/3]

template<typename T = void>
template<typename MemberType>
structure & adtf::mediadescription::osborn::structure< T >::Add ( const std::string & strName,
MemberType T::* pMemberOffset,
const ddl::DDStructure & oTypeDefinition )
inline

Adds a new member of a structure type.

Parameters
[in]strNameThe name of the member.
[in]pMemberOffsetThe pointer to the member.
[in]oTypeDefinitionThe structure type.
Returns
A reference to the structure.

◆ GetAlignment()

template<typename T = void>
size_t adtf::mediadescription::osborn::structure< T >::GetAlignment ( ) const
inline

Returns the alignment of the structure.

Returns
size_t The alignment

◆ GetSize()

template<typename T = void>
size_t adtf::mediadescription::osborn::structure< T >::GetSize ( ) const
inline

Returns the current size of the structure.

Returns
size_t The size in bytes

◆ GetStructure()

template<typename T = void>
const ddl::DDStructure & adtf::mediadescription::osborn::structure< T >::GetStructure ( ) const
inline

Get the current valid DDStructure object.

Returns
const DDStructure&
Exceptions
ddl::dd::ErrorThrows if the evaluated size is not sizeof(T). Check if there may be missed elements.

◆ operator const ddl::DDStructure &()

template<typename T = void>
adtf::mediadescription::osborn::structure< T >::operator const ddl::DDStructure & ( ) const
inline

Get the current valid DDStructure object.

Returns
const DDStructure&
Exceptions
ddl::dd::ErrorThrows if the evaluated size is not sizeof(T). Check if there may be missed elements.

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