@@ -5,6 +5,8 @@ from rosidl_generator_cpp import escape_string
55from  rosidl_generator_cpp  import  escape_wstring
66from  rosidl_generator_cpp  import  msg_type_to_cpp
77from  rosidl_generator_cpp  import  MSG_TYPE_TO_CPP
8+ from  rosidl_generator_cpp  import  generate_zero_string
9+ from  rosidl_generator_cpp  import  generate_default_string
810from  rosidl_parser .definition  import  AbstractNestedType
911from  rosidl_parser .definition  import  AbstractString
1012from  rosidl_parser .definition  import  AbstractWString
@@ -108,48 +110,6 @@ struct @(message.structure.namespaced_type.name)_
108110#  http://design.ros2.org/articles/generated_interfaces_cpp.html#constructors
109111#  for a detailed explanation of the different _init parameters.
110112init_list, alloc_list, member_list  =  create_init_alloc_and_member_lists (message)
111- 
112- def  generate_default_string (membset): 
113-     from  rosidl_generator_cpp  import  msg_type_only_to_cpp
114-     from  rosidl_generator_cpp  import  msg_type_to_cpp
115-     strlist  =  []
116-     for  member in  membset .members : 
117-         if  member .default_value  is  not  None : 
118-             if  member .num_prealloc  >  0 : 
119-                 strlist .append (' this->%s.resize(%d);'   %  (member .name , member .num_prealloc ))
120-             if  isinstance (member .default_value , list): 
121-                 if  all (v ==  member .default_value [0 ] for  v in  member .default_value ): 
122-                     #  Specifying type for std::fill because of MSVC 14.12 warning about casting 'const int' to smaller types (C4244)
123-                     #  For more info, see https://github.com/ros2/rosidl/issues/309
124-                     #  TODO(jacobperron): Investigate reason for build warnings on Windows
125-                     #  TODO(jacobperron): Write test case for this path of execution
126-                     strlist .append (' std::fill<typename %s::iterator, %s>(this->%s.begin(), this->%s.end(), %s);'   %  (msg_type_to_cpp (member .type ), msg_type_only_to_cpp (member .type ), member .name , member .name , member .default_value [0 ]))
127-                 else : 
128-                     for  index, val in  enumerate (member .default_value ): 
129-                         strlist .append (' this->%s[%d] = %s;'   %  (member .name , index, val))
130-             else : 
131-                 strlist .append (' this->%s = %s;'   %  (member .name , member .default_value ))
132- 
133-     return  strlist
134- 
135- def  generate_zero_string (membset, fill_args): 
136-     from  rosidl_generator_cpp  import  msg_type_only_to_cpp
137-     from  rosidl_generator_cpp  import  msg_type_to_cpp
138-     strlist  =  []
139-     for  member in  membset .members : 
140-         if  isinstance (member .zero_value , list): 
141-             if  member .num_prealloc  >  0 : 
142-                 strlist .append (' this->%s.resize(%d);'   %  (member .name , member .num_prealloc ))
143-             if  member .zero_need_array_override : 
144-                 strlist .append (' this->%s.fill(%s{%s});'   %  (member .name , msg_type_only_to_cpp (member .type ), fill_args))
145-             else : 
146-                 #  Specifying type for std::fill because of MSVC 14.12 warning about casting 'const int' to smaller types (C4244)
147-                 #  For more info, see https://github.com/ros2/rosidl/issues/309
148-                 #  TODO(jacobperron): Investigate reason for build warnings on Windows
149-                 strlist .append (' std::fill<typename %s::iterator, %s>(this->%s.begin(), this->%s.end(), %s);'   %  (msg_type_to_cpp (member .type ), msg_type_only_to_cpp (member .type ), member .name , member .name , member .zero_value [0 ]))
150-         else : 
151-             strlist .append (' this->%s = %s;'   %  (member .name , member .zero_value ))
152-     return  strlist
153113}@ 
154114  explicit @ (message .structure .namespaced_type .name )_ (rosidl_runtime_cpp :: MessageInitialization  _init  =  rosidl_runtime_cpp :: MessageInitialization :: ALL )
155115@ [if  init_list]@ 
0 commit comments