2
2
@ {
3
3
from collections import OrderedDict
4
4
from rosidl_generator_c import escape_string
5
+ from rosidl_generator_c import escape_utf8
5
6
from rosidl_generator_c import idl_structure_type_to_c_include_prefix
6
7
from rosidl_generator_c import type_hash_to_c_definition
7
8
from rosidl_parser .definition import NamespacedType
@@ -23,14 +24,12 @@ def static_seq_n(varname, n):
23
24
def static_seq (varname, values):
24
25
""" Statically define a runtime Sequence or String type."""
25
26
if values :
26
- return f' {{{varname}, {len(values)}, {len(values)}}}'
27
+ if isinstance (values, str):
28
+ return f' {{{varname}, {len(values.encode(' utf- 8 ' ))}, {len(values.encode(' utf- 8 ' ))}}}'
29
+ else :
30
+ return f' {{{varname}, {len(values)}, {len(values)}}}'
27
31
return ' {NULL, 0, 0}'
28
32
29
- def utf8_encode (value_string):
30
- from rosidl_generator_c import escape_string
31
- # Slice removes the b'' from the representation.
32
- return escape_string (repr (value_string .encode (' utf-8' ))[2 : - 1 ])
33
-
34
33
implicit_type_names = set (td[' type_description' ][' type_name' ] for td, _ in implicit_type_descriptions)
35
34
includes = OrderedDict ()
36
35
toplevel_msg, _ = toplevel_type_description
@@ -98,7 +97,7 @@ ref_tds = msg['referenced_type_descriptions']
98
97
@ [ for field in itype_description[' fields' ]]@
99
98
static char @ (td_c_typename)__FIELD_NAME__@ (field[' name' ])[] = " @(field['name'])" ;
100
99
@ [ if field[' default_value' ]]@
101
- static char @ (td_c_typename)__DEFAULT_VALUE__@ (field[' name' ])[] = " @(utf8_encode( field['default_value']))" ;
100
+ static char @ (td_c_typename)__DEFAULT_VALUE__@ (field[' name' ])[] = " @(escape_utf8(escape_string( field['default_value']) ))" ;
102
101
@ [ end if ]@
103
102
@ [ end for ]@
104
103
@@ -167,9 +166,9 @@ c_typename = typename_to_c(ref_td['type_name'])
167
166
@ [if raw_source_content]@
168
167
static char toplevel_type_raw_source[] = @
169
168
@ [ for line in raw_source_content .splitlines ()[: - 1 ]]
170
- " @(utf8_encode( line))\n " @
169
+ " @(escape_utf8(escape_string( line) ))\n " @
171
170
@ [ end for ]
172
- " @(utf8_encode( raw_source_content.splitlines()[-1]))" ;
171
+ " @(escape_utf8(escape_string( raw_source_content.splitlines()[-1]) ))" ;
173
172
@ [end if ]@
174
173
175
174
static char @ (toplevel_encoding)_encoding[] = " @(toplevel_encoding)" ;
0 commit comments