Skip to content

Commit 34d0636

Browse files
author
Minggang Wang
committed
Cleanup the message.dot template
This patch cleaned the message.dot file to format the style and remove the redundancy. Also, bump the version of the generator to 0.1.0 which implies it's ready for the stable release of rclnodejs module. Fix #NONE
1 parent b40312e commit 34d0636

File tree

2 files changed

+40
-32
lines changed

2 files changed

+40
-32
lines changed

rosidl_gen/generator.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "rosidl-generator",
3-
"version": "0.0.8",
3+
"version": "0.1.0",
44
"description": "Generate JavaScript object from ROS IDL(.msg) files",
55
"authors": [
66
"Minggang Wang <[email protected]>",

rosidl_gen/templates/message.dot

Lines changed: 39 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ const currentTypedArray = getTypedArrayName(it.spec.baseType);
144144
const currentTypedArrayElementType = getTypedArrayElementName(it.spec.baseType);
145145

146146
function shouldRequire(baseType, fieldType) {
147-
let requiredModule = '{{=getPackageNameByType(fieldType)}}/{{=getJSFileNameByType(fieldType)}}';
147+
let requiredModule = '{{=getPackageNameByType(fieldType)}}/{{=getModulePathByType(fieldType)}}';
148148
let shouldRequire = !isPrimitivePackage(baseType) && (fieldType.isArray || !fieldType.isPrimitiveType || fieldType.type === 'string');
149149

150150
if (shouldRequire && !isExisted(requiredModule)) {
@@ -163,8 +163,8 @@ function getWrapperNameByType(type) {
163163
}
164164
}
165165

166-
function getJSFileNameByType(type) {
167-
if (type.isPrimitiveType) {
166+
function getModulePathByType(type) {
167+
if (type.isPrimitiveType) {
168168
return 'std_msgs__msg__' + getPrimitiveNameByType(type) + '.js';
169169
} else {
170170
return type.pkgName + '__msg__' + type.type + '.js';
@@ -199,35 +199,35 @@ const deallocator = require('../../rosidl_gen/deallocator.js');
199199

200200
{{~ it.spec.fields :field}}
201201
{{? shouldRequire(it.spec.baseType, field.type)}}
202-
let {{=getWrapperNameByType(field.type)}} = require('../../generated/{{=getPackageNameByType(field.type)}}/{{=getJSFileNameByType(field.type)}}');
202+
const {{=getWrapperNameByType(field.type)}} = require('../../generated/{{=getPackageNameByType(field.type)}}/{{=getModulePathByType(field.type)}}');
203203
{{?}}
204204
{{~}}
205205

206206
{{? it.spec.msgName === 'String'}}
207207
const {{=refObjectType}} = primitiveTypes.string;
208208
{{??}}
209209
const {{=refObjectType}} = StructType({
210-
{{~ it.spec.fields :field}}
210+
{{~ it.spec.fields :field}}
211211
{{? field.type.isPrimitiveType && !field.type.isArray}}
212212
{{=field.name}}: primitiveTypes.{{=field.type.type}},
213213
{{?? field.type.isArray}}
214214
{{=field.name}}: {{=getWrapperNameByType(field.type)}}.refObjectArrayType,
215215
{{?? true}}
216216
{{=field.name}}: {{=getWrapperNameByType(field.type)}}.refObjectType,
217217
{{?}}
218-
{{~}}
218+
{{~}}
219219
});
220220
{{?}}
221221

222222
const {{=refArrayType}} = ArrayType({{=refObjectType}});
223223
const {{=refObjectArrayType}} = StructType({
224-
{{? usePlainTypedArray }}
224+
{{? usePlainTypedArray}}
225225
data: ref.refType(ref.types.{{=currentTypedArrayElementType}}),
226226
{{?? true}}
227227
data: {{=refArrayType}},
228228
{{?}}
229229
size: ref.types.size_t,
230-
capacity: ref.types.size_t,
230+
capacity: ref.types.size_t
231231
});
232232

233233
// Define the wrapper class.
@@ -246,6 +246,7 @@ class {{=objectWrapper}} {
246246
{{? field.type.isPrimitiveType && !field.type.isArray}}
247247
this._{{=field.name}}Intialized = true;
248248
{{?}}
249+
249250
{{? field.type.isArray}}
250251
this._wrapperFields.{{=field.name}} = {{=getWrapperNameByType(field.type)}}.createArray();
251252
this._wrapperFields.{{=field.name}}.copy(other._wrapperFields.{{=field.name}});
@@ -262,6 +263,7 @@ class {{=objectWrapper}} {
262263
{{? field.type.isPrimitiveType && !field.type.isArray}}
263264
this._{{=field.name}}Intialized = false;
264265
{{?}}
266+
265267
{{? field.type.isArray}}
266268
this._wrapperFields.{{=field.name}} = {{=getWrapperNameByType(field.type)}}.createArray();
267269
{{?? !field.type.isPrimitiveType || (field.type.type === 'string' && it.spec.msgName !== 'String')}}
@@ -271,7 +273,6 @@ class {{=objectWrapper}} {
271273
{{?}}
272274
{{~}}
273275
}
274-
275276
this.freeze();
276277
}
277278

@@ -305,13 +306,14 @@ class {{=objectWrapper}} {
305306
freeze(own = false, checkConsistency = false) {
306307
if (checkConsistency) {
307308
{{~ it.spec.fields :field}}
308-
{{? field.type.isPrimitiveType && !field.type.isArray}}
309+
{{? field.type.isPrimitiveType && !field.type.isArray}}
309310
if (!this._{{=field.name}}Intialized) {
310311
throw new TypeError('Invalid argument: {{=field.name}} in {{=it.spec.msgName}}');
311312
}
312-
{{?}}
313+
{{?}}
313314
{{~}}
314315
}
316+
315317
{{~ it.spec.fields :field}}
316318
{{? field.type.isArray && field.type.isPrimitiveType && !isTypedArrayType(field.type)}}
317319
this._wrapperFields.{{=field.name}}.fill(this._{{=field.name}}Array);
@@ -322,7 +324,7 @@ class {{=objectWrapper}} {
322324
this._refObject.{{=field.name}} = this._wrapperFields.{{=field.name}}.refObject;
323325
{{?? field.type.type === 'string' && it.spec.msgName !== 'String'}}
324326
if (own) {
325-
primitiveTypes.initString(this._wrapperFields.{{=field.name}}.refObject.ref(), own);
327+
this._wrapperFields.{{=field.name}}.freeze(own, checkConsistency);
326328
}
327329
this._refObject.{{=field.name}} = this._wrapperFields.{{=field.name}}.refObject;
328330
{{?? it.spec.msgName === 'String'}}
@@ -339,10 +341,11 @@ class {{=objectWrapper}} {
339341
}
340342

341343
deserialize(refObject) {
342-
{{~ it.spec.fields :field}}
344+
{{~ it.spec.fields :field}}
343345
{{? field.type.isPrimitiveType && !field.type.isArray}}
344346
this._{{=field.name}}Intialized = true;
345347
{{?}}
348+
346349
{{? field.type.isArray && field.type.isPrimitiveType && !isTypedArrayType(field.type)}}
347350
refObject.{{=field.name}}.data.length = refObject.{{=field.name}}.size;
348351
for (let index = 0; index < refObject.{{=field.name}}.size; index++) {
@@ -355,11 +358,11 @@ class {{=objectWrapper}} {
355358
{{?? field.type.isPrimitiveType}}
356359
this._refObject.{{=field.name}} = refObject.{{=field.name}};
357360
{{?}}
358-
{{~}}
361+
{{~}}
359362
}
360363

361364
static freeStruct(refObject) {
362-
{{~ it.spec.fields :field}}
365+
{{~ it.spec.fields :field}}
363366
{{? field.type.isArray}}
364367
if (refObject.{{=field.name}}.size != 0) {
365368
{{=getWrapperNameByType(field.type)}}.ArrayType.freeArray(refObject.{{=field.name}});
@@ -374,7 +377,7 @@ class {{=objectWrapper}} {
374377
{{?? it.spec.msgName === 'String'}}
375378
deallocator.freeStructMember(refObject, {{=getWrapperNameByType(field.type)}}.refObjectType, '{{=field.name}}');
376379
{{?}}
377-
{{~}}
380+
{{~}}
378381
}
379382

380383
static destoryRawROS(msg) {
@@ -452,6 +455,7 @@ class {{=objectWrapper}} {
452455
{{? field.type.isPrimitiveType && !field.type.isArray}}
453456
this._{{=field.name}}Intialized = true;
454457
{{?}}
458+
455459
{{? field.type.isArray && field.type.isPrimitiveType && !isTypedArrayType(field.type)}}
456460
refObject.{{=field.name}}.data.length = refObject.{{=field.name}}.size;
457461
for (let index = 0; index < refObject.{{=field.name}}.size; index++) {
@@ -470,6 +474,7 @@ class {{=objectWrapper}} {
470474
{{? field.type.isPrimitiveType && !field.type.isArray}}
471475
this._{{=field.name}}Intialized = true;
472476
{{?}}
477+
473478
{{? field.type.isArray && field.type.isPrimitiveType && !isTypedArrayType(field.type)}}
474479
this._{{=field.name}}Array = other._{{=field.name}}Array.slice();
475480
{{?? !field.type.isPrimitiveType || field.type.isArray || (field.type.type === 'string' && it.spec.msgName !== 'String')}}
@@ -503,15 +508,15 @@ class {{=arrayWrapper}} {
503508
}
504509

505510
fill(values) {
506-
{{? usePlainTypedArray }}
511+
{{? usePlainTypedArray}}
507512
if (Array.isArray(values)) {
508513
// Convert JavaScript array
509514
this._wrappers = new {{=currentTypedArray}}(values);
510515
} else {
511516
this._wrappers = values;
512517
}
513-
{{?? isPrimitivePackage(it.spec.baseType) }}
514-
// Now only for string/bool array
518+
{{?? isPrimitivePackage(it.spec.baseType)}}
519+
// Now for primitive arrays, only string/bool/int64/uint64 array drops here.
515520
const length = values.length;
516521
this._resize(length);
517522
for (let i = 0; i < length; ++i) {
@@ -530,17 +535,19 @@ class {{=arrayWrapper}} {
530535

531536
// Put all data currently stored in `this._wrappers` into `this._refObject`
532537
freeze(own) {
533-
{{? usePlainTypedArray }}
538+
{{? usePlainTypedArray}}
534539
// When it's a TypedArray: no need to copy to `this._refArray`
535540
{{?? true}}
536541
this._wrappers.forEach((wrapper, index) => {
537542
wrapper.freeze(own);
538543
this._refArray[index] = wrapper.refObject;
539544
});
540545
{{?}}
546+
541547
this._refObject.size = this._wrappers.length;
542548
this._refObject.capacity = this._wrappers.length;
543-
{{? usePlainTypedArray }}
549+
550+
{{? usePlainTypedArray}}
544551
const buffer = Buffer.from(new Uint8Array(this._wrappers.buffer));
545552
this._refObject.data = buffer;
546553
{{?? true}}
@@ -588,18 +595,19 @@ class {{=arrayWrapper}} {
588595
throw new RangeError('Invalid argument: should provide a positive number');
589596
return;
590597
}
591-
{{? usePlainTypedArray }}
598+
{{? usePlainTypedArray}}
592599
this._refArray = undefined;
593-
{{?? true }}
600+
{{?? true}}
594601
this._refArray = new {{=refArrayType}}(size);
595602
{{?}}
603+
596604
this._refObject = new {{=refObjectArrayType}}();
597605
this._refObject.size = size;
598606
this._refObject.capacity = size;
599607

600-
{{? usePlainTypedArray }}
608+
{{? usePlainTypedArray}}
601609
this._wrappers = new {{=currentTypedArray}}(size);
602-
{{?? true }}
610+
{{?? true}}
603611
this._wrappers = new Array();
604612
for (let i = 0; i < size; i++) {
605613
this._wrappers.push(new {{=objectWrapper}}());
@@ -611,12 +619,12 @@ class {{=arrayWrapper}} {
611619
copyRefObject(refObject) {
612620
this._refObject = refObject;
613621

614-
{{? usePlainTypedArray }}
622+
{{? usePlainTypedArray}}
615623
const byteLen = refObject.size * ref.types.{{=currentTypedArrayElementType}}.size;
616624
// An ArrayBuffer object that doesn't hold the ownership of the address
617625
const arrayBuffer = rclnodejs.createArrayBufferFromAddress(refObject.data, byteLen);
618626
this._wrappers = new {{=currentTypedArray}}(arrayBuffer);
619-
{{?? true }}
627+
{{?? true}}
620628
let refObjectArray = this._refObject.data;
621629
refObjectArray.length = this._refObject.size;
622630
this._resize(this._refObject.size);
@@ -633,9 +641,9 @@ class {{=arrayWrapper}} {
633641
}
634642

635643
this._resize(other.size);
636-
{{? usePlainTypedArray }}
644+
{{? usePlainTypedArray}}
637645
this._wrappers = other._wrappers.slice();
638-
{{?? true }}
646+
{{?? true}}
639647
// Array deep copy
640648
other._wrappers.forEach((wrapper, index) => {
641649
this._wrappers[index].copy(wrapper);
@@ -644,9 +652,9 @@ class {{=arrayWrapper}} {
644652
}
645653

646654
static freeArray(refObject) {
647-
{{? usePlainTypedArray }}
655+
{{? usePlainTypedArray}}
648656
// For TypedArray: .data will be 'free()'-ed in parent struct
649-
{{?? true }}
657+
{{?? true}}
650658
let refObjectArray = refObject.data;
651659
refObjectArray.length = refObject.size;
652660
for (let index = 0; index < refObject.size; index++) {

0 commit comments

Comments
 (0)