ADTF
|
Creating a valid Structure Data Definition by a existing type and its member types. More...
Classes | |
struct | PaddingAlignmentGuard |
Public Member Functions | |
DDStructureGenerator (const std::string &name, uint32_t struct_version=1) | |
CTOR to create a structure type based on a type. More... | |
template<typename MemberType > | |
DDElementRef | createElement (const std::string &name, MemberType T::*member_offset) |
Creates a new member of data type (POD) by member reference pointer. More... | |
template<typename MemberType > | |
DDElementRef | createElement (const std::string &name, MemberType T::*member_offset, const std::string &valid_element_count_or_array_size_name) |
Creates a new array member of data type (POD) by member reference pointer. More... | |
template<typename MemberType > | |
DDStructureGenerator & | addElement (const std::string &name, MemberType T::*member_offset) |
Adds a new member of data type (POD) by member reference pointer. More... | |
template<typename MemberType > | |
DDStructureGenerator & | addElement (const std::string &name, MemberType T::*member_offset, const std::string &valid_element_count_or_array_size_name) |
Adds a new member of data type (POD) by member reference pointer. More... | |
template<typename MemberType > | |
DDElementRef | createElement (const std::string &name, MemberType T::*member_offset, const DDEnum &enum_type) |
Adds a new member of an enumeration type by member reference pointer. More... | |
template<typename MemberType > | |
DDElement | createElement (const std::string &name, MemberType T::*member_offset, const DDEnum &enum_type, const std::string &valid_element_count_or_array_size_name) |
Adds a new array member of an enumeration type by member reference pointer. More... | |
template<typename MemberType > | |
DDStructureGenerator & | addElement (const std::string &name, MemberType T::*member_offset, const DDEnum &enum_type) |
Adds a new member of an enumeration type by member reference pointer. More... | |
template<typename MemberType > | |
DDStructureGenerator & | addElement (const std::string &name, MemberType T::*member_offset, const DDEnum &enum_type, const std::string &valid_element_count_or_array_size_name) |
Adds a new array member of an enumeration type by member reference pointer. More... | |
template<typename MemberType > | |
DDElementRef | createElement (const std::string &name, MemberType T::*member_offset, const DDStructure &struct_type) |
Adds a new member of an structure type by member reference pointer. More... | |
template<typename MemberType > | |
DDElementRef | createElement (const std::string &name, MemberType T::*member_offset, const DDStructure &struct_type, const std::string &valid_element_count_or_array_size_name) |
Adds a new array member of an structure type by member reference pointer. More... | |
template<typename MemberType > | |
DDStructureGenerator & | addElement (const std::string &name, MemberType T::*member_offset, const DDStructure &struct_type) |
Adds a new member of an structure type by member reference pointer. More... | |
template<typename MemberType > | |
DDStructureGenerator & | addElement (const std::string &name, MemberType T::*member_offset, const DDStructure &struct_type, const std::string &valid_element_count_or_array_size_name) |
Adds a new member of an structure type by member reference pointer. More... | |
std::string | getStructDescription () const |
Gets the structs data definition as XML String. More... | |
std::string | getStructName () const |
Gets the Struct Name. More... | |
const dd::DataDefinition & | getDD () const |
returns a valid DDL. More... | |
const dd::StructType & | getStructType () const |
Get the Struct Type object. More... | |
const DDStructure & | getStructure () const |
Get the current valid DDStructure object. More... | |
size_t | getSize () const |
Retrieves the current evaluated size of the structure. More... | |
size_t | getAlignment () const |
Retrieves the current evaluated alignment of the structure. More... | |
operator const DDStructure & () const | |
Get the current valid DDStructure object. More... | |
void | setStructInfo (const std::string &comment) |
Set additional struct information like comment. More... | |
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 . More... | |
void | setElementUnit (const std::string &element_name, const DDUnit &unit) |
Sets additional element unit information to the given element_name . More... | |
void | setElementUnit (const std::string &element_name, const dd::BaseUnit &base_unit) |
Sets additional element base unit information to the given element_name . More... | |
DDElementRef | getElement (const std::string &element_name) |
Gets a element reference to the element with name element_name owned by the DDStructureGenerator. More... | |
Private Member Functions | |
void | pushAlignment () |
void | popAlignment () |
void | validate () const |
dd::OptionalSize | evaluateAlignment (const std::string &element_name, size_t member_offset, size_t member_type_alignment) |
template<typename DDMemberType > | |
DDElementRef | createElement (const std::string &name, size_t alignment, const DDMemberType &used_type, size_t array_size) |
template<typename DDMemberType > | |
DDElementRef | createArrayElement (const std::string &name, size_t alignment, const DDMemberType &used_type, size_t array_size, const std::string &corresponding_element_name) |
Private Attributes | |
DDStructure | _structure |
bool | _padded_final = false |
Creating a valid Structure Data Definition by a existing type and its member types.
T | The Struct type to use. |
align_with_padding | Set to true to align the structure and structure members with padding bytes to reach expected size of T. |
Definition at line 117 of file ddstructure_generator.h.
|
inlineexplicit |
CTOR to create a structure type based on a type.
name | The name of the type. |
struct_version | the version of the type. |
Definition at line 129 of file ddstructure_generator.h.
|
inline |
Adds a new member of data type (POD) by member reference pointer.
[in] | name | The name of the member. |
[in] | member_offset | The pointer to the member. |
Definition at line 207 of file ddstructure_generator.h.
References DDStructureGenerator< T, align_with_padding >::createElement().
Referenced by structure< T >::Add().
|
inline |
Adds a new member of an enumeration type by member reference pointer.
[in] | name | The name of the member. |
[in] | member_offset | The pointer to the member. |
[in] | enum_type | The enumeration type. |
Definition at line 297 of file ddstructure_generator.h.
References DDStructureGenerator< T, align_with_padding >::createElement(), and ddl::dd::enum_type.
|
inline |
Adds a new array member of an enumeration type by member reference pointer.
[in] | name | The name of the member. |
[in] | member_offset | The pointer to the member. |
[in] | enum_type | The enumeration type. |
[in] | valid_element_count_or_array_size_name | name of a sibling element for describing the array in size
|
Definition at line 320 of file ddstructure_generator.h.
References DDStructureGenerator< T, align_with_padding >::createElement(), and ddl::dd::enum_type.
|
inline |
Adds a new member of an structure type by member reference pointer.
[in] | name | The name of the member. |
[in] | member_offset | The pointer to the member. |
[in] | struct_type | The structure type. |
Definition at line 390 of file ddstructure_generator.h.
References DDStructureGenerator< T, align_with_padding >::createElement(), and ddl::dd::struct_type.
|
inline |
Adds a new member of an structure type by member reference pointer.
[in] | name | The name of the member. |
[in] | member_offset | The pointer to the member. |
[in] | struct_type | The structure type. |
[in] | valid_element_count_or_array_size_name | name of a sibling element for describing the array in size
|
Definition at line 413 of file ddstructure_generator.h.
References DDStructureGenerator< T, align_with_padding >::createElement(), and ddl::dd::struct_type.
|
inline |
Adds a new member of data type (POD) by member reference pointer.
[in] | name | The name of the member. |
[in] | member_offset | The pointer to the member. |
[in] | valid_element_count_or_array_size_name | name of a sibling element for describing the array in size
|
Definition at line 227 of file ddstructure_generator.h.
References DDStructureGenerator< T, align_with_padding >::createElement().
|
inline |
Creates a new member of data type (POD) by member reference pointer.
[in] | name | The name of the member. |
[in] | member_offset | The pointer to the member. |
Definition at line 141 of file ddstructure_generator.h.
Referenced by DDStructureGenerator< T, align_with_padding >::addElement(), and DDStructureGenerator< T, align_with_padding >::createElement().
|
inline |
Adds a new member of an enumeration type by member reference pointer.
[in] | name | The name of the member. |
[in] | member_offset | The pointer to the member. |
[in] | enum_type | The enumeration type. |
Definition at line 243 of file ddstructure_generator.h.
References DDStructureGenerator< T, align_with_padding >::createElement(), and ddl::dd::enum_type.
|
inline |
Adds a new array member of an enumeration type by member reference pointer.
[in] | name | The name of the member. |
[in] | member_offset | The pointer to the member. |
[in] | enum_type | The enumeration type. |
[in] | valid_element_count_or_array_size_name | name of a sibling element for describing the array in size
|
Definition at line 275 of file ddstructure_generator.h.
References ddl::dd::enum_type.
|
inline |
Adds a new member of an structure type by member reference pointer.
[in] | name | The name of the member. |
[in] | member_offset | The pointer to the member. |
[in] | struct_type | The structure type. |
Definition at line 337 of file ddstructure_generator.h.
References DDStructureGenerator< T, align_with_padding >::createElement(), and ddl::dd::struct_type.
|
inline |
Adds a new array member of an structure type by member reference pointer.
[in] | name | The name of the member. |
[in] | member_offset | The pointer to the member. |
[in] | struct_type | The structure type. |
[in] | valid_element_count_or_array_size_name | name of a sibling element for describing the array in size
|
Definition at line 368 of file ddstructure_generator.h.
References DDStructureGenerator< T, align_with_padding >::createElement(), and ddl::dd::struct_type.
|
inline |
Creates a new array member of data type (POD) by member reference pointer.
[in] | name | The name of the member. |
[in] | member_offset | The pointer to the member. |
[in] | valid_element_count_or_array_size_name | name of a sibling element for describing the array in size
|
Definition at line 177 of file ddstructure_generator.h.
|
inline |
Retrieves the current evaluated alignment of the structure.
Definition at line 493 of file ddstructure_generator.h.
References DDStructure::getAlignment().
|
inline |
returns a valid DDL.
ddl::dd::Error | Throws if the evaluated size is not sizeof(T). Check if there may be missing elements. |
Definition at line 449 of file ddstructure_generator.h.
References DDStructure::getDD().
Referenced by structure< T >::GetSize().
|
inline |
Gets a element reference to the element with name element_name
owned by the DDStructureGenerator.
element_name | the elements name |
dd::Error | if element was not found |
Definition at line 577 of file ddstructure_generator.h.
References DDStructure::getElement().
|
inline |
Retrieves the current evaluated size of the structure.
Definition at line 484 of file ddstructure_generator.h.
References DDStructure::getSize().
|
inline |
Gets the structs data definition as XML String.
Definition at line 427 of file ddstructure_generator.h.
References DDStructure::getStructDescription().
|
inline |
Gets the Struct Name.
Definition at line 437 of file ddstructure_generator.h.
References DDStructure::getStructName().
Referenced by structure< T >::GetSize().
|
inline |
Get the Struct Type object.
ddl::dd::Error | Throws if the evaluated size is not sizeof(T). Check if there may be missing elements. |
Definition at line 462 of file ddstructure_generator.h.
References DDStructure::getStructType().
Referenced by structure< T >::GetAlignment().
|
inline |
Get the current valid DDStructure object.
ddl::dd::Error | Throws if the evaluated size is not sizeof(T). Check if there may be missing elements. |
Definition at line 474 of file ddstructure_generator.h.
Referenced by structure< T >::GetStructure(), and DDStructureGenerator< T, align_with_padding >::operator const DDStructure &().
|
inline |
Get the current valid DDStructure object.
ddl::dd::Error | Throws if the evaluated size is not sizeof(T). Check if there may be missing elements. |
Definition at line 505 of file ddstructure_generator.h.
References DDStructureGenerator< T, align_with_padding >::getStructure().
|
inline |
Set additional element information to the given element_name
.
element_name
must have been added before! The info will only be set if the string of the parameter is not empty!element_name | The element name to set the additional info to |
description | The description |
comment | The comment |
value | The value |
minimum_value | The minimum value |
maximum_value | The maximum value |
default_value | The default value |
scale | The scale |
offset | The offset |
dd::Error | if element with element_name does not exist. |
Definition at line 521 of file ddstructure_generator.h.
|
inline |
Sets additional element base unit information to the given element_name
.
element_name
must have been added before!element_name | The element name |
base_unit | The baseunit to set |
dd::Error | if element with element_name does not exist. |
Definition at line 565 of file ddstructure_generator.h.
References ddl::dd::base_unit, and DDStructure::setElementUnit().
|
inline |
Sets additional element unit information to the given element_name
.
Any other unit information will be overwritten.
element_name
must have been added before!element_name | The element name |
unit | The unit to set |
dd::Error | if element with element_name does not exist. |
Definition at line 551 of file ddstructure_generator.h.
References DDStructure::setElementUnit(), and ddl::dd::unit.
|
inline |
Set additional struct information like comment.
This is important to create additional info in type reflection for DDStructureGenerator.
comment | The comment of the struct type. |
Definition at line 513 of file ddstructure_generator.h.
References DDStructure::setStructInfo().