{%- macro register_class_attributes(node) %}
        {%- if node.is_array %}
            {%- if node.has_sw_readable and node.has_sw_writable %}
    self.__{{node.inst_name}} = ( {% for node_instance_index in range(get_array_dim(node))  %}
                                       {{get_fully_qualified_type_name(node)}}_cls(callbacks=callbacks,
                                                                   address=self.address+{{node.raw_address_offset}}+({{node_instance_index}} * {{node.array_stride}}),
                                                                   logger_handle=logger_handle+'.{{node.inst_name}}[{{node_instance_index}}]',
                                                                                   inst_name='{{node.inst_name}}')
                                       {%- if not loop.last -%} ,  {%- endif -%}
                                       {% endfor %} )
            {%- elif node.has_sw_readable and not node.has_sw_writable %}
    self.__{{node.inst_name}} = ( {% for node_instance_index in range(get_array_dim(node))  %}
                                       {{get_fully_qualified_type_name(node)}}_cls(callbacks=callbacks,
                                                                   address=self.address+{{node.raw_address_offset}}+({{node_instance_index}} * {{node.array_stride}}),
                                                                   logger_handle=logger_handle+'.{{node.inst_name}}[{{node_instance_index}}]',
                                                                                   inst_name='{{node.inst_name}}')
                                       {%- if not loop.last -%} ,  {%- endif -%}
                                       {% endfor %} )
            {%- elif not node.has_sw_readable and node.has_sw_writable %}
    self.__{{node.inst_name}} = ( {% for node_instance_index in range(get_array_dim(node))  %}
                                       {{get_fully_qualified_type_name(node)}}_cls(callbacks=callbacks,
                                                                   address=self.address+{{node.raw_address_offset}}+({{node_instance_index}} * {{node.array_stride}}),
                                                                   logger_handle=logger_handle+'.{{node.inst_name}}[{{node_instance_index}}]',
                                                                                   inst_name='{{node.inst_name}}')
                                       {%- if not loop.last -%} ,  {%- endif -%}
                                       {% endfor %} )
            {%- endif %}
        {%- else %}
            {%- if node.has_sw_readable and node.has_sw_writable %}
    self.__{{node.inst_name}} = {{get_fully_qualified_type_name(node)}}_cls(callbacks=callbacks,
                                                                 address=self.address+{{node.address_offset}},
                                                                 logger_handle=logger_handle+'.{{node.inst_name}}',
                                                                                   inst_name='{{node.inst_name}}')
            {%- elif node.has_sw_readable and not node.has_sw_writable %}
    self.__{{node.inst_name}} = {{get_fully_qualified_type_name(node)}}_cls(callbacks=callbacks,
                                                                 address=self.address+{{node.address_offset}},
                                                                 logger_handle=logger_handle+'.{{node.inst_name}}',
                                                                                   inst_name='{{node.inst_name}}')
            {%- elif not node.has_sw_readable and node.has_sw_writable %}
    self.__{{node.inst_name}} = {{get_fully_qualified_type_name(node)}}_cls(callbacks=callbacks,
                                                                                 address=self.address+{{node.address_offset}},
                                                                                 logger_handle=logger_handle+'.{{node.inst_name}}',
                                                                                 inst_name='{{node.inst_name}}')
            {%- endif %}
        {%- endif %}

{%- endmacro %}