@@ -43,12 +43,15 @@ void register_HelloWorld_type_objects()
4343 static std::once_flag once_flag;
4444 std::call_once (once_flag, []()
4545 {
46- register_HelloWorld_type_identifier ();
46+ TypeIdentifier type_id;
47+ register_HelloWorld_type_identifier (type_id);
4748
4849 });
4950}
5051
51- void register_HelloWorld_type_identifier ()
52+ // TypeIdentifier is returned by reference: dependent structures/unions are registered in this same method
53+ void register_HelloWorld_type_identifier (
54+ TypeIdentifier& type_id)
5255{
5356 {
5457 StructTypeFlag struct_flags_HelloWorld = TypeObjectUtils::build_struct_type_flag (eprosima::fastdds::dds::xtypes::ExtensibilityKind::NOT_APPLIED ,
@@ -71,6 +74,7 @@ void register_HelloWorld_type_identifier()
7174 {
7275 EPROSIMA_LOG_ERROR (XTYPES_TYPE_REPRESENTATION ,
7376 " index Structure member TypeIdentifier unknown to TypeObjectRegistry." );
77+ type_id = TypeIdentifier ();
7478 return ;
7579 }
7680 StructMemberFlag member_flags_index = TypeObjectUtils::build_struct_member_flag (eprosima::fastdds::dds::xtypes::TryConstructKind::NOT_APPLIED ,
@@ -117,6 +121,7 @@ void register_HelloWorld_type_identifier()
117121 {
118122 EPROSIMA_LOG_ERROR (XTYPES_TYPE_REPRESENTATION ,
119123 " Structure index member TypeIdentifier inconsistent." );
124+ type_id = TypeIdentifier ();
120125 return ;
121126 }
122127 MemberName name_index = " index" ;
@@ -133,8 +138,6 @@ void register_HelloWorld_type_identifier()
133138
134139 if (return_code_HelloWorld != eprosima::fastdds::dds::RETCODE_OK )
135140 {
136- std::string type_id_kind_anonymous_string_unbounded (" TI_STRING8_SMALL" );
137- if (type_id_kind_anonymous_string_unbounded == " TI_STRING8_SMALL" )
138141 {
139142 SBound bound = 0 ;
140143 StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn (bound);
@@ -146,31 +149,14 @@ void register_HelloWorld_type_identifier()
146149 " anonymous_string_unbounded already registered in TypeObjectRegistry for a different type." );
147150 }
148151 }
149- else if (type_id_kind_anonymous_string_unbounded == " TI_STRING8_LARGE" )
150- {
151- LBound bound = 255 ;
152- StringLTypeDefn string_ldefn = TypeObjectUtils::build_string_l_type_defn (bound);
153- if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER ==
154- TypeObjectUtils::build_and_register_l_string_type_identifier (string_ldefn,
155- " anonymous_string_unbounded" ))
156- {
157- EPROSIMA_LOG_ERROR (XTYPES_TYPE_REPRESENTATION ,
158- " anonymous_string_unbounded already registered in TypeObjectRegistry for a different type." );
159- }
160- }
161- else
162- {
163- EPROSIMA_LOG_ERROR (XTYPES_TYPE_REPRESENTATION ,
164- " anonymous_string_unbounded: Unknown String kind." );
165- return ;
166- }
167152 return_code_HelloWorld =
168153 eprosima::fastdds::dds::DomainParticipantFactory::get_instance ()->type_object_registry ().get_type_identifiers (
169154 " anonymous_string_unbounded" , type_ids_HelloWorld);
170155 if (return_code_HelloWorld != eprosima::fastdds::dds::RETCODE_OK )
171156 {
172157 EPROSIMA_LOG_ERROR (XTYPES_TYPE_REPRESENTATION ,
173158 " anonymous_string_unbounded: Given String TypeIdentifier unknown to TypeObjectRegistry." );
159+ type_id = TypeIdentifier ();
174160 return ;
175161 }
176162 }
@@ -218,6 +204,7 @@ void register_HelloWorld_type_identifier()
218204 {
219205 EPROSIMA_LOG_ERROR (XTYPES_TYPE_REPRESENTATION ,
220206 " Structure message member TypeIdentifier inconsistent." );
207+ type_id = TypeIdentifier ();
221208 return ;
222209 }
223210 MemberName name_message = " message" ;
@@ -229,7 +216,7 @@ void register_HelloWorld_type_identifier()
229216 }
230217 CompleteStructType struct_type_HelloWorld = TypeObjectUtils::build_complete_struct_type (struct_flags_HelloWorld, header_HelloWorld, member_seq_HelloWorld);
231218 if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER ==
232- TypeObjectUtils::build_and_register_struct_type_object (struct_type_HelloWorld, type_name_HelloWorld.to_string ()))
219+ TypeObjectUtils::build_and_register_struct_type_object (struct_type_HelloWorld, type_name_HelloWorld.to_string (), type_id ))
233220 {
234221 EPROSIMA_LOG_ERROR (XTYPES_TYPE_REPRESENTATION ,
235222 " HelloWorld already registered in TypeObjectRegistry for a different type." );
@@ -241,6 +228,7 @@ void register_HelloWorld_type_identifier()
241228 {
242229 EPROSIMA_LOG_ERROR (XTYPES_TYPE_REPRESENTATION ,
243230 " HelloWorld: Given Struct TypeIdentifier unknown to TypeObjectRegistry." );
231+ type_id = TypeIdentifier ();
244232 return ;
245233 }
246234 }
0 commit comments