@@ -226,12 +226,20 @@ const {{=refObjectArrayType}} = StructType({
226226class {{=objectWrapper}} {
227227 constructor(other) {
228228 this._wrapperFields = {};
229+ {{~ it.spec.fields :field}}
230+ {{? field.type.isArray && field.type.isPrimitiveType && !isTypedArrayType(field.type)}}
231+ this._{{=field.name}}Array = [];
232+ {{?}}
233+ {{~}}
229234 if (typeof other === 'object' && other._refObject) {
230235 this._refObject = new {{=refObjectType}}(other._refObject.toObject());
231236 {{~ it.spec.fields :field}}
232237 {{? field.type.isArray}}
233238 this._wrapperFields.{{=field.name}} = {{=getWrapperNameByType(field.type)}}.createArray();
234239 this._wrapperFields.{{=field.name}}.copy(other._wrapperFields.{{=field.name}});
240+ {{? field.type.isPrimitiveType && !isTypedArrayType(field.type)}}
241+ this.{{=field.name}} = other.{{=field.name}};
242+ {{?}}
235243 {{?? !field.type.isPrimitiveType || (field.type.type === 'string' && it.spec.msgName !== 'String')}}
236244 this._wrapperFields.{{=field.name}} = new {{=getWrapperNameByType(field.type)}}(other._wrapperFields.{{=field.name}});
237245 {{?}}
@@ -248,6 +256,7 @@ class {{=objectWrapper}} {
248256 {{?}}
249257 {{~}}
250258 }
259+
251260 this.freeze();
252261 }
253262
@@ -280,7 +289,11 @@ class {{=objectWrapper}} {
280289
281290 freeze(own = false) {
282291 {{~ it.spec.fields :field}}
283- {{? !field.type.isPrimitiveType || field.type.isArray}}
292+ {{? field.type.isArray && field.type.isPrimitiveType && !isTypedArrayType(field.type)}}
293+ this._wrapperFields.{{=field.name}}.fill(this._{{=field.name}}Array);
294+ this._wrapperFields.{{=field.name}}.freeze(own);
295+ this._refObject.{{=field.name}} = this._wrapperFields.{{=field.name}}.refObject;
296+ {{?? !field.type.isPrimitiveType || field.type.isArray}}
284297 this._wrapperFields.{{=field.name}}.freeze(own);
285298 this._refObject.{{=field.name}} = this._wrapperFields.{{=field.name}}.refObject;
286299 {{?? field.type.type === 'string' && it.spec.msgName !== 'String'}}
@@ -303,7 +316,12 @@ class {{=objectWrapper}} {
303316
304317 deserialize(refObject) {
305318 {{~ it.spec.fields :field}}
306- {{? !field.type.isPrimitiveType || field.type.isArray}}
319+ {{? field.type.isArray && field.type.isPrimitiveType && !isTypedArrayType(field.type)}}
320+ refObject.{{=field.name}}.data.length = refObject.{{=field.name}}.size ;
321+ for (let index = 0; index < refObject.{{=field.name}}.size ; index++) {
322+ this._{{=field.name}}Array[index] = refObject.{{=field.name}}.data[index].data;
323+ }
324+ {{?? !field.type.isPrimitiveType || field.type.isArray}}
307325 this._wrapperFields.{{=field.name}}.copyRefObject(refObject.{{=field.name}});
308326 {{?? field.type.type === 'string' && it.spec.msgName !== 'String'}}
309327 this._wrapperFields.{{=field.name}}.data = refObject.{{=field.name}}.data;
@@ -357,11 +375,7 @@ class {{=objectWrapper}} {
357375 {{? field.type.isArray && isTypedArrayType(field.type)}}
358376 return this._wrapperFields['{{=field.name}}'].data;
359377 {{?? field.type.isArray && field.type.isPrimitiveType}}
360- let values = [];
361- this._wrapperFields['{{=field.name}}'].data.forEach((wrapper, index) => {
362- values.push(wrapper.data);
363- });
364- return values;
378+ return this._{{=field.name}}Array;
365379 {{?? field.type.isArray && !field.type.isPrimitiveType}}
366380 return this._wrapperFields.{{=field.name}};
367381 {{?? !field.type.isPrimitiveType && !field.type.isArray}}
@@ -374,8 +388,10 @@ class {{=objectWrapper}} {
374388 }
375389
376390 set {{=field.name}}(value) {
377- {{? field.type.isArray && field.type.isPrimitiveType }}
391+ {{? field.type.isArray && isTypedArrayType( field.type) }}
378392 this._wrapperFields['{{=field.name}}'].fill(value);
393+ {{?? field.type.isArray && field.type.isPrimitiveType}}
394+ this._{{=field.name}}Array = value;
379395 {{?? field.type.isArray && !field.type.isPrimitiveType}}
380396 this._wrapperFields.{{=field.name}}.copy(value);
381397 {{?? !field.type.isPrimitiveType && !field.type.isArray}}
@@ -396,7 +412,12 @@ class {{=objectWrapper}} {
396412 this._refObject = new {{=refObjectType}}(refObject.toObject());
397413
398414 {{~ it.spec.fields :field}}
399- {{? !field.type.isPrimitiveType || field.type.isArray || (field.type.type === 'string' && it.spec.msgName !== 'String')}}
415+ {{? field.type.isArray && field.type.isPrimitiveType && !isTypedArrayType(field.type)}}
416+ refObject.{{=field.name}}.data.length = refObject.{{=field.name}}.size ;
417+ for (let index = 0; index < refObject.{{=field.name}}.size ; index++) {
418+ this._{{=field.name}}Array[index] = refObject.{{=field.name}}.data[index].data;
419+ }
420+ {{?? !field.type.isPrimitiveType || field.type.isArray || (field.type.type === 'string' && it.spec.msgName !== 'String')}}
400421 this._wrapperFields.{{=field.name}}.copyRefObject(this._refObject.{{=field.name}});
401422 {{?}}
402423 {{~}}
@@ -406,7 +427,9 @@ class {{=objectWrapper}} {
406427 this._refObject = new {{=refObjectType}}(other._refObject.toObject());
407428
408429 {{~ it.spec.fields :field}}
409- {{? !field.type.isPrimitiveType || field.type.isArray || (field.type.type === 'string' && it.spec.msgName !== 'String')}}
430+ {{? field.type.isArray && field.type.isPrimitiveType && !isTypedArrayType(field.type)}}
431+ this._{{=field.name}}Array = other._{{=field.name}}Array.slice();
432+ {{?? !field.type.isPrimitiveType || field.type.isArray || (field.type.type === 'string' && it.spec.msgName !== 'String')}}
410433 this._wrapperFields.{{=field.name}}.copy(other._wrapperFields.{{=field.name}});
411434 {{?}}
412435 {{~}}
0 commit comments