RTI Connext Modern C++ API  Version 6.0.0
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
dds::core::xtypes::StructType Class Reference

<<value-type>> Represents and IDL struct type More...

#include <dds/core/xtypes/StructType.hpp>

Inheritance diagram for dds::core::xtypes::StructType:
dds::core::xtypes::AbstractConstructedType< Member > dds::core::xtypes::DynamicType

Public Member Functions

 StructType (const std::string &name)
 Creates an empty struct type.
 
 StructType (const std::string &name, const StructType &parent)
 Creates an empty struct type with a base type.
 
template<typename Container >
 StructType (const std::string &the_name, const Container &the_members)
 Creates a struct with the members in a container.
 
template<typename Container >
 StructType (const std::string &the_name, const StructType &the_parent, const Container &the_members)
 Creates a struct with a base type and the members in a container.
 
template<typename MemberIter >
 StructType (const std::string &the_name, MemberIter begin, MemberIter end)
 Creates a struct with the members in an iterator range.
 
template<typename MemberIter >
 StructType (const std::string &the_name, const StructType &the_parent, MemberIter begin, MemberIter end)
 Creates a struct with a base type and the members in an iterator range.
 
 StructType (const std::string &the_name, StructType &&the_parent)
 <<C++11>> Creates an empty struct type with a base type.
 
template<typename MemberIter >
 StructType (const std::string &the_name, StructType &&the_parent, MemberIter begin, MemberIter end)
 <<C++11>> Creates an empty struct type with a base type and the members in an iterator range.
 
template<typename Container >
 StructType (const std::string &the_name, StructType &&the_parent, const Container &the_members)
 <<C++11>> Creates an empty struct type with a base type and the members in a container.
 
 StructType (const std::string &the_name, std::initializer_list< MemberImpl > the_members)
 <<C++11>> Creates a struct with the members in an initializer_list
 
 StructType (const std::string &the_name, const StructType &the_parent, std::initializer_list< MemberImpl > the_members)
 <<C++11>> Creates a struct with the members in an initializer_list and a base type
 
 StructType (const std::string &the_name, StructType &&the_parent, std::initializer_list< MemberImpl > the_members)
 <<C++11>> Creates a struct with the members in an initializer_list and a base type
 
StructTypeextensibility_kind (dds::core::xtypes::ExtensibilityKind kind)
 Sets the type extensibility kind.
 
bool has_parent () const
 Indicates if this type has a base type.
 
const StructTypeparent () const
 Retrieves the base type.
 
MemberIndex find_member_by_id (uint32_t id) const
 Gets the index of the member with a specific member ID.
 
StructTypeadd_member (const MemberImpl &member)
 Adds a member at the end.
 
template<typename Container >
StructTypeadd_members (const Container &the_members)
 Adds all the members of a container at the end.
 
StructTypeadd_members (std::initializer_list< MemberImpl > the_members)
 <<C++11>> Adds all the members of an initializer_list at the end
 
template<typename MemberIter >
StructTypeadd_members (MemberIter begin, MemberIter end)
 Adds all the members in an iterator range at the end.
 
StructTypeadd_member (MemberImpl &&the_member)
 <<C++11>> Adds a member, moving it, at the end
 
- Public Member Functions inherited from dds::core::xtypes::AbstractConstructedType< Member >
dds::core::xtypes::ExtensibilityKind extensibility_kind () const
 Gets the extensibility kind.
 
size_t member_count () const
 Gets the number of members.
 
const Membermember (MemberIndex index) const
 Gets a member by its index.
 
const Membermember (const std::string &name) const
 Gets a member by its name.
 
MemberIndex find_member_by_name (const std::string &name) const
 Obtains the member index from its name.
 
std::vector< Membermembers () const
 Gets a copy of all the members.
 
uint32_t cdr_serialized_sample_max_size (dds::core::policy::DataRepresentationId representation_id=DDS_AUTO_DATA_REPRESENTATION) const
 Gets the maximum serialized size of samples of this type.
 
- Public Member Functions inherited from dds::core::xtypes::DynamicType
dds::core::xtypes::TypeKind kind () const
 Gets the type kind.
 
std::string name () const
 Gets the name.
 

Related Functions

(Note that these are not member functions.)

template<typename... Types>
dds::core::xtypes::StructType create_type_from_tuple (const std::string &name)
 <<C++11>> <<experimental>> <<extension>> Creates a StructType from a list of types or a std::tuple
 

Additional Inherited Members

- Public Types inherited from dds::core::xtypes::AbstractConstructedType< Member >
typedef Member Member
 The member type (specified by the subclasses of this class)
 
typedef uint32_t MemberIndex
 The meber index type.
 
- Static Public Attributes inherited from dds::core::xtypes::AbstractConstructedType< Member >
static
OMG_DDS_API_CLASS_VARIABLE
const MemberIndex 
INVALID_INDEX
 Indicates that a member doesn't exist.
 

Detailed Description

<<value-type>> Represents and IDL struct type

Examples:
Foo.hpp.

Constructor & Destructor Documentation

dds::core::xtypes::StructType::StructType ( const std::string &  name)

Creates an empty struct type.

The struct doesn't have a base type. Members can be added after creation.

Parameters
nameThe name of the type
dds::core::xtypes::StructType::StructType ( const std::string &  name,
const StructType parent 
)

Creates an empty struct type with a base type.

Members can be added after creation.

Parameters
nameThe name of the type
parentThe base type
template<typename Container >
dds::core::xtypes::StructType::StructType ( const std::string &  the_name,
const Container &  the_members 
)
inline

Creates a struct with the members in a container.

The struct doesn't have a base type.

Template Parameters
ContainerA container that provides the member functions begin() and end() to iterate over Member elements.
Parameters
the_nameThe name of the type
the_membersA container with the members for this struct type
template<typename Container >
dds::core::xtypes::StructType::StructType ( const std::string &  the_name,
const StructType the_parent,
const Container &  the_members 
)
inline

Creates a struct with a base type and the members in a container.

Template Parameters
ContainerA container that provides the member functions begin() and end() to iterate over Member elements.
Parameters
the_nameThe name of the type
the_parentThe base type
the_membersA container with the members for this struct type
template<typename MemberIter >
dds::core::xtypes::StructType::StructType ( const std::string &  the_name,
MemberIter  begin,
MemberIter  end 
)
inline

Creates a struct with the members in an iterator range.

The struct doesn't have a base type.

Template Parameters
MemberIterA forward iterator of Member elements
Parameters
the_nameThe name of the type
beginThe beginning of the range of Members
endThe end of the range of Members
template<typename MemberIter >
dds::core::xtypes::StructType::StructType ( const std::string &  the_name,
const StructType the_parent,
MemberIter  begin,
MemberIter  end 
)
inline

Creates a struct with a base type and the members in an iterator range.

Template Parameters
MemberIterA forward iterator of Member elements
Parameters
the_parentThe base type
the_nameThe name of the type
beginThe beginning of the range of Members
endThe end of the range of Members
dds::core::xtypes::StructType::StructType ( const std::string &  the_name,
StructType &&  the_parent 
)
inline

<<C++11>> Creates an empty struct type with a base type.

The base type is moved. This is useful to save a copy in situations like the following example:

StructType my_type("my_type", StructType("parent_type", parent_members));
template<typename MemberIter >
dds::core::xtypes::StructType::StructType ( const std::string &  the_name,
StructType &&  the_parent,
MemberIter  begin,
MemberIter  end 
)
inline

<<C++11>> Creates an empty struct type with a base type and the members in an iterator range.

The base type is moved.

template<typename Container >
dds::core::xtypes::StructType::StructType ( const std::string &  the_name,
StructType &&  the_parent,
const Container &  the_members 
)
inline

<<C++11>> Creates an empty struct type with a base type and the members in a container.

The base type is moved.

dds::core::xtypes::StructType::StructType ( const std::string &  the_name,
std::initializer_list< MemberImpl >  the_members 
)
inline

<<C++11>> Creates a struct with the members in an initializer_list

Parameters
the_nameThe name of the type
the_membersAn ininitalizer_list of Members
dds::core::xtypes::StructType::StructType ( const std::string &  the_name,
const StructType the_parent,
std::initializer_list< MemberImpl >  the_members 
)
inline

<<C++11>> Creates a struct with the members in an initializer_list and a base type

Parameters
the_nameThe name of the type
the_parentThe base type
the_membersAn ininitalizer_list of Members
dds::core::xtypes::StructType::StructType ( const std::string &  the_name,
StructType &&  the_parent,
std::initializer_list< MemberImpl >  the_members 
)
inline

<<C++11>> Creates a struct with the members in an initializer_list and a base type

Parameters
the_nameThe name of the type
the_parentThe base type (moved)
the_membersAn ininitalizer_list of Members

Member Function Documentation

StructType& dds::core::xtypes::StructType::extensibility_kind ( dds::core::xtypes::ExtensibilityKind  kind)

Sets the type extensibility kind.

bool dds::core::xtypes::StructType::has_parent ( ) const

Indicates if this type has a base type.

const StructType& dds::core::xtypes::StructType::parent ( ) const

Retrieves the base type.

If this type doesn't have a base type it throws PreconditionNotMetError.

See Also
has_parent()
MemberIndex dds::core::xtypes::StructType::find_member_by_id ( uint32_t  id) const

Gets the index of the member with a specific member ID.

Returns
The index (which can be passed to member(uint32_t) of the member selected by label or INVALID_INDEX if the ID doesn't exist in this type
StructType& dds::core::xtypes::StructType::add_member ( const MemberImpl &  member)

Adds a member at the end.

template<typename Container >
StructType& dds::core::xtypes::StructType::add_members ( const Container &  the_members)
inline

Adds all the members of a container at the end.

StructType& dds::core::xtypes::StructType::add_members ( std::initializer_list< MemberImpl >  the_members)
inline

<<C++11>> Adds all the members of an initializer_list at the end

template<typename MemberIter >
StructType& dds::core::xtypes::StructType::add_members ( MemberIter  begin,
MemberIter  end 
)
inline

Adds all the members in an iterator range at the end.

StructType& dds::core::xtypes::StructType::add_member ( MemberImpl &&  the_member)
inline

<<C++11>> Adds a member, moving it, at the end

Friends And Related Function Documentation

template<typename... Types>
dds::core::xtypes::StructType create_type_from_tuple ( const std::string &  name)
related

<<C++11>> <<experimental>> <<extension>> Creates a StructType from a list of types or a std::tuple

Template Parameters
TypesA list of types or a std::tuple. The types must be primitive (see dds::core::xtypes::PrimitiveType) or std::string.

The StructType members are all default-created (i.e. non-key, non-optional, with default IDs...) and their names are m0, m1, m2, etc.

See Also
Create a DynamicType using tuples

RTI Connext Modern C++ API Version 6.0.0 Copyright © Sun Mar 3 2019 Real-Time Innovations, Inc