@@ -272,6 +272,8 @@ public<#if type.isDiscriminatedParentTypeDefinition()> abstract</#if> class ${ty
272272 writeByteArrayField("${namedField.name} ", ${namedField.name} , writeByteArray(writeBuffer, 8)${helper.getFieldOptions(typedField, parserArguments) } );
273273 <#elseif arrayField.type.elementTypeReference.isSimpleTypeReference() >
274274 writeSimpleTypeArrayField("${namedField.name} ", ${namedField.name} , ${helper.getDataWriterCall(arrayField.type.elementTypeReference, namedField.name) }${helper.getFieldOptions(typedField, parserArguments) } );
275+ <#elseif arrayField.type.elementTypeReference.isEnumTypeReference() >
276+ writeSimpleTypeArrayField("${namedField.name} ", ${namedField.name} , ${helper.getEnumDataWriterCall(arrayField.type.elementTypeReference.asEnumTypeReference().orElseThrow(), namedField.name, "value") }${helper.getFieldOptions(typedField, parserArguments) } );
275277 <#else >
276278 writeComplexTypeArrayField("${namedField.name} ", ${namedField.name} , writeBuffer${helper.getFieldOptions(typedField, parserArguments) } );
277279 </#if >
@@ -298,15 +300,15 @@ public<#if type.isDiscriminatedParentTypeDefinition()> abstract</#if> class ${ty
298300 <#assign namedField = field.asNamedField().orElseThrow() >
299301
300302 // Discriminator Field (${discriminatorField.name} ) (Used as input to a switch field)
301- <#if typedField.type.isEnumTypeReference() >writeDiscriminatorEnumField("${namedField.name} ", "${helper.getLanguageTypeNameForField(field)} ", get${discriminatorField.name?cap_first } (), ${helper.getEnumDataWriterCall(typedField.type, namedField.name, "value") }${helper.getFieldOptions(typedField, parserArguments) } );<#else >writeDiscriminatorField("${namedField.name} ", get${discriminatorField.name?cap_first } (), ${helper.getDataWriterCall(typedField.type, namedField.name) }${helper.getFieldOptions(typedField, parserArguments) } );</#if >
303+ <#if typedField.type.isEnumTypeReference() >writeDiscriminatorEnumField("${namedField.name} ", "${helper.getLanguageTypeNameForField(field)} ", get${discriminatorField.name?cap_first } (), ${helper.getEnumDataWriterCall(typedField.type.asEnumTypeReference().orElseThrow() , namedField.name, "value") }${helper.getFieldOptions(typedField, parserArguments) } );<#else >writeDiscriminatorField("${namedField.name} ", get${discriminatorField.name?cap_first } (), ${helper.getDataWriterCall(typedField.type, namedField.name) }${helper.getFieldOptions(typedField, parserArguments) } );</#if >
302304 <#break >
303305 <#case "enum" >
304306 <#assign enumField = field.asEnumField().orElseThrow() >
305307 <#assign typedField = field.asTypedField().orElseThrow() >
306308 <#assign namedField = field.asNamedField().orElseThrow() >
307309
308310 // Enum field (${namedField.name} )
309- writeEnumField("${namedField.name} ", "${helper.getLanguageTypeNameForField(field)} ", ${namedField.name} , ${helper.getEnumDataWriterCall(typedField.type, namedField.name, enumField.fieldName) }${helper.getFieldOptions(typedField, parserArguments) } );
311+ writeEnumField("${namedField.name} ", "${helper.getLanguageTypeNameForField(field)} ", ${namedField.name} , ${helper.getEnumDataWriterCall(typedField.type.asEnumTypeReference().orElseThrow() , namedField.name, enumField.fieldName) }${helper.getFieldOptions(typedField, parserArguments) } );
310312 <#break >
311313 <#case "implicit" >
312314 <#assign implicitField = field.asImplicitField().orElseThrow() >
@@ -341,7 +343,7 @@ public<#if type.isDiscriminatedParentTypeDefinition()> abstract</#if> class ${ty
341343
342344 // Optional Field (${optionalField.name} ) (Can be skipped, if the value is null)
343345 <#if optionalField.type.isEnumTypeReference() >
344- writeOptionalEnumField("${optionalField.name} ", "${helper.getLanguageTypeNameForField(field)} ", ${optionalField.name} , ${helper.getEnumDataWriterCall(optionalField.type, optionalField.name, "value") } <#if optionalField.conditionExpression.present >, ${helper.toSerializationExpression(optionalField, helper.boolTypeReference, optionalField.conditionExpression.get(), parserArguments) } </#if >${helper.getFieldOptions(typedField, parserArguments) } );
346+ writeOptionalEnumField("${optionalField.name} ", "${helper.getLanguageTypeNameForField(field)} ", ${optionalField.name} , ${helper.getEnumDataWriterCall(optionalField.type.asEnumTypeReference().orElseThrow() , optionalField.name, "value") } <#if optionalField.conditionExpression.present >, ${helper.toSerializationExpression(optionalField, helper.boolTypeReference, optionalField.conditionExpression.get(), parserArguments) } </#if >${helper.getFieldOptions(typedField, parserArguments) } );
345347 <#elseif optionalField.type.isDataIoTypeReference() >
346348 writeOptionalField("${optionalField.name} ", ${optionalField.name} , writeDataIO(writeBuffer, (wb, val) -> ${optionalField.type.asComplexTypeReference().orElseThrow().name} .staticSerialize(wb, val<#if optionalField.type.asComplexTypeReference().orElseThrow().params?has_content >, <#list optionalField.type.asComplexTypeReference().orElseThrow().params.orElseThrow() as param >${helper.toParseExpression(optionalField, helper.anyTypeReference, param, parserArguments) } <#sep >, </#sep ></#list ></#if >))<#if optionalField.conditionExpression.present >, ${helper.toSerializationExpression(optionalField, helper.boolTypeReference, optionalField.conditionExpression.get(), parserArguments) } </#if >${helper.getFieldOptions(typedField, parserArguments) } );
347349 <#else >
@@ -369,7 +371,7 @@ public<#if type.isDiscriminatedParentTypeDefinition()> abstract</#if> class ${ty
369371
370372 // Simple Field (${namedField.name} )
371373 <#if typedField.type.isEnumTypeReference() >
372- writeSimpleEnumField("${simpleField.name} ", "${helper.getLanguageTypeNameForField(field)} ", ${simpleField.name} , ${helper.getEnumDataWriterCall(simpleField.type, simpleField.name, "value") }${helper.getFieldOptions(typedField, parserArguments) } );
374+ writeSimpleEnumField("${simpleField.name} ", "${helper.getLanguageTypeNameForField(field)} ", ${simpleField.name} , ${helper.getEnumDataWriterCall(simpleField.type.asEnumTypeReference().orElseThrow() , simpleField.name, "value") }${helper.getFieldOptions(typedField, parserArguments) } );
373375 <#elseif simpleField.type.isDataIoTypeReference() >
374376 writeSimpleField("${simpleField.name} ", ${simpleField.name} , new DataWriterDataIoDefault(writeBuffer, (wb, val) -> ${simpleField.type.asComplexTypeReference().orElseThrow().name} .staticSerialize(wb, val<#if simpleField.type.asComplexTypeReference().orElseThrow().params?has_content >, <#list simpleField.type.asComplexTypeReference().orElseThrow().params.orElseThrow() as param >${helper.toParseExpression(simpleField, helper.anyTypeReference, param, parserArguments) } <#sep >, </#sep ></#list ></#if >${helper.getFieldOptions(typedField, parserArguments) } )));
375377 <#else >
@@ -429,6 +431,9 @@ public<#if type.isDiscriminatedParentTypeDefinition()> abstract</#if> class ${ty
429431 <#else >
430432 lengthInBits += ${simpleTypeReference.sizeInBits} * ${arrayField.name} .<#if arrayElementTypeReference.isByteBased() >length<#else >size()</#if >;
431433 </#if >
434+ <#elseif arrayElementTypeReference.isEnumTypeReference() >
435+ <#assign enumgTypeReference = arrayElementTypeReference.asEnumTypeReference().orElseThrow() >
436+ lengthInBits += ${enumgTypeReference.getBaseTypeReference().orElseThrow().sizeInBits} * ${arrayField.name} .<#if arrayElementTypeReference.isByteBased() >length<#else >size()</#if >;
432437 <#elseif arrayField.isCountArrayField() >
433438 int i=0;
434439 <#assign nonSimpleTypeReference = arrayElementTypeReference.asNonSimpleTypeReference().orElseThrow() >
0 commit comments