Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 7 additions & 9 deletions src/cbexigen/datatype_classes.py
Original file line number Diff line number Diff line change
Expand Up @@ -192,31 +192,29 @@ def __generate_char_array_struct_from_string(self, particle: Particle, with_used
# generate struct for array with length variable
indent = ' ' * self.config['c_code_indent_chars']
comment = self.__get_particle_comment(particle)
type_array = 1 if particle.max_occurs > 1 else 0
struct_def = particle.prefixed_define_for_array if particle.max_occurs > 1 else ''
struct_def = particle.prefixed_define_for_array if particle.is_array else ''

temp = self.generator.get_template("SubStructCharWithUsed.jinja" if with_used else "SubStructChar.jinja")
return temp.render(indent=indent, level=indent_level,
struct_name=particle.name,
struct_type="char",
type_def=particle.prefixed_define_for_base_type,
type_array=type_array,
type_array=particle.is_array,
struct_def=struct_def,
variable_comment=comment)

def __generate_byte_array_struct_from_binary(self, particle: Particle, with_used=False, indent_level=1):
# generate struct for array with length variable
indent = ' ' * self.config['c_code_indent_chars']
comment = self.__get_particle_comment(particle)
type_array = 1 if particle.max_occurs > 1 else 0
struct_def = particle.prefixed_define_for_array if particle.max_occurs > 1 else ''
struct_def = particle.prefixed_define_for_array if particle.is_array else ''

temp = self.generator.get_template("SubStructByteWithIsUsed.jinja" if with_used else "SubStructByte.jinja")
return temp.render(indent=indent, level=indent_level,
struct_name=particle.name,
struct_type="uint8_t",
type_def=particle.prefixed_define_for_base_type,
type_array=type_array,
type_array=particle.is_array,
struct_def=struct_def,
variable_comment=comment)

Expand Down Expand Up @@ -282,7 +280,7 @@ def __get_particle_content(self, particle: Particle, elements, indent_level=1):

# particle type is in list, so a separate type is generated
if particle.type in self.analyzer_data.known_elements:
if particle.max_occurs > 1:
if particle.is_array:
# generate struct for array with length variable
if particle.is_enum:
content += self.__generate_enum_array_struct(particle)
Expand Down Expand Up @@ -333,7 +331,7 @@ def __get_particle_content(self, particle: Particle, elements, indent_level=1):
content += self.__generate_base64binary(particle, False, indent_level) + '\n'
else:
# max_occurs > 1, generate array type
if particle.max_occurs > 1:
if particle.is_array:
content += self.__generate_array_struct(particle)
else:
content += self.__generate_variable(particle) + '\n'
Expand Down Expand Up @@ -837,7 +835,7 @@ def __get_function_content(self):
for particle in element.particles:
# TODO: check if particle is in OCCURRENCE_LIMITS_CORRECTED,
# should then result in an array definition
if particle.max_occurs > 1:
if particle.is_array:
arr.append(self.__get_type_member_array(particle))
elif particle.min_occurs == 0:
if particle.parent_has_choice_sequence:
Expand Down
8 changes: 4 additions & 4 deletions src/cbexigen/decoder_classes.py
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ def __get_content_decode_base64_binary(self, element_typename, detail: ElementGr
type_content = type_value + f'.{detail.particle.value_parameter_name}'
type_content_len = type_value + f'.{detail.particle.length_parameter_name}'
else:
if detail.particle.max_occurs > 1:
if detail.particle.is_array:
decode_comment += ' (Array)'
type_array_length = f'{element_typename}->{detail.particle.name}.arrayLen'
type_value = f'{element_typename}->{detail.particle.name}'
Expand All @@ -208,7 +208,7 @@ def __get_content_decode_base64_binary(self, element_typename, detail: ElementGr
type_content_len=type_content_len,
type_define=type_define,
type_option=detail.particle.is_optional,
type_array=detail.particle.max_occurs > 1,
type_array=detail.particle.is_array,
type_array_length=f'{element_typename}->{detail.particle.name}.arrayLen',
type_array_define=detail.particle.prefixed_define_for_array,
next_grammar_id=next_grammar_id,
Expand Down Expand Up @@ -393,7 +393,7 @@ def __get_content_decode_string(self, element_typename, detail: ElementGrammarDe
type_simple = detail.particle.is_attribute or detail.particle.is_simple_content
next_grammar_id = detail.next_grammar

if detail.particle.max_occurs > 1:
if detail.particle.is_array:
decode_comment += ' (Array)'
type_array_length = f'{element_typename}->{detail.particle.name}.arrayLen'
type_length = type_value + f'.array[{type_array_length}].{detail.particle.length_parameter_name}'
Expand All @@ -407,7 +407,7 @@ def __get_content_decode_string(self, element_typename, detail: ElementGrammarDe
type_chars_size=type_chars_size,
type_option=detail.particle.is_optional,
type_simple=type_simple,
type_array=detail.particle.max_occurs > 1,
type_array=detail.particle.is_array,
type_array_length=f'{element_typename}->{detail.particle.name}.arrayLen',
type_array_define=detail.particle.prefixed_define_for_array,
next_grammar_id=next_grammar_id,
Expand Down
2 changes: 1 addition & 1 deletion src/cbexigen/elementGrammar.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ def is_optional_array(self):
if self.particle is None:
return False

return self.particle.min_occurs == 0 and self.particle.max_occurs > 1
return self.particle.min_occurs == 0 and self.particle.is_array

@property
def is_mandatory(self):
Expand Down