Skip to content

Commit 6a211c5

Browse files
author
Minggang Wang
authored
Merge pull request #137 from minggangw/fix-issue-110
[rosidl_gen]Get the property of array type from the wrapper object
2 parents a0832c9 + 3249daa commit 6a211c5

File tree

1 file changed

+13
-5
lines changed

1 file changed

+13
-5
lines changed

rosidl_gen/templates/message.dot

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,14 @@ class {{=objectWrapper}} {
214214
wrapper._refObject = this._wrapperFields.{{=field.name}}._refArray[index];
215215
wrapper.deserialize();
216216
});
217+
{{?? field.type.isPrimitiveType && field.type.isArray}}
218+
let {{=field.name}}Primitives = this._refObject.{{=field.name}}.data;
219+
{{=field.name}}Primitives.length = this._refObject.{{=field.name}}.size;
220+
let {{=field.name}}Values = [];
221+
{{=field.name}}Primitives.toArray().forEach(value =>{
222+
{{=field.name}}Values.push(value.data);
223+
});
224+
this._wrapperFields.{{=field.name}}.setWrappers({{=field.name}}Values);
217225
{{?? !field.type.isArray && field.type.type === 'string' && it.spec.msgName !== 'String'}}
218226
this._wrapperFields.{{=field.name}}.data = this._refObject.{{=field.name}}.data;
219227
{{?}}
@@ -236,11 +244,9 @@ class {{=objectWrapper}} {
236244
{{~ it.spec.fields :field}}
237245
get {{=field.name}}() {
238246
{{? field.type.isArray && field.type.isPrimitiveType}}
239-
let primitives = this._refObject.{{=field.name}}.data;
240-
primitives.length = this._refObject.{{=field.name}}.size;
241247
let values = [];
242-
primitives.toArray().forEach(value =>{
243-
values.push(value.data);
248+
this._wrapperFields['{{=field.name}}'].data.forEach((wrapper, index) => {
249+
values.push(wrapper.data);
244250
});
245251
return values;
246252
{{?? !field.type.isPrimitiveType && !field.type.isArray}}
@@ -254,7 +260,7 @@ class {{=objectWrapper}} {
254260

255261
set {{=field.name}}(value) {
256262
{{? field.type.isArray && field.type.isPrimitiveType}}
257-
this._wrapperFields['{{=field.name}}'].setWrappers(value);;
263+
this._wrapperFields['{{=field.name}}'].setWrappers(value);
258264
{{?? !field.type.isArray && field.type.isPrimitiveType && field.type.type !== 'string'}}
259265
this._refObject.{{=field.name}} = value;
260266
{{?? it.spec.msgName === 'String'}}
@@ -288,6 +294,8 @@ class {{=arrayWrapper}} {
288294
constructor(size = 0) {
289295
this._resize(size);
290296
this._refObject = new {{=refObjectArrayType}};
297+
this._refObject.size = size;
298+
this._refObject.capacity = size;
291299
}
292300

293301
toRawROS() {

0 commit comments

Comments
 (0)