+@dd:
+@c:
+@data:
+
+<!-- ##### MACRO gras_datadesc_declare_array ##### -->
+<para>
+
+</para>
+
+@name:
+@elm_type:
+@size:
+@code:
+
+<!-- ##### FUNCTION gras_datadesc_declare_array_cb ##### -->
+<para>
+
+</para>
+
+@name:
+@element_type:
+@fixed_size:
+@dynamic_size:
+@post:
+@code:
+@Returns:
+
+<!-- ##### FUNCTION gras_datadesc_declare_array_dyn ##### -->
+<para>
+
+</para>
+
+@name:
+@element_type:
+@dynamic_size:
+@dst:
+@Returns:
+@elm_type:
+@code:
+
+<!-- ##### FUNCTION gras_datadesc_declare_array_fixed ##### -->
+<para>
+
+</para>
+
+@name:
+@element_type:
+@fixed_size:
+@dst:
+@Returns:
+
+<!-- ##### FUNCTION gras_datadesc_declare_ref ##### -->
+<para>
+
+</para>
+
+@name:
+@referenced_type:
+@dst:
+@Returns:
+@ref_type:
+@code:
+
+<!-- ##### FUNCTION gras_datadesc_declare_ref_cb ##### -->
+<para>
+
+</para>
+
+@name:
+@referenced_type:
+@discriminant:
+@post:
+@code:
+@Returns:
+
+<!-- ##### MACRO gras_datadesc_declare_ref_disc ##### -->
+<para>
+
+</para>
+
+@name:
+@discriminant:
+@code:
+
+<!-- ##### FUNCTION gras_datadesc_declare_ref_generic ##### -->
+<para>
+
+</para>
+
+@name:
+@discriminant:
+@dst:
+@Returns:
+
+<!-- ##### FUNCTION gras_datadesc_declare_struct ##### -->
+<para>
+
+</para>
+
+@name:
+@dst:
+@Returns:
+@code:
+
+<!-- ##### MACRO gras_datadesc_declare_struct_add_code ##### -->
+<para>
+
+</para>
+
+@struct_code:
+@field_name:
+@field_type_code:
+
+<!-- ##### FUNCTION gras_datadesc_declare_struct_add_code_cb ##### -->
+<para>
+
+</para>
+
+@struct_code:
+@field_name:
+@field_code:
+@pre_cb:
+@post_cb:
+@Returns:
+
+<!-- ##### MACRO gras_datadesc_declare_struct_add_name ##### -->
+<para>
+
+</para>
+
+@struct_code:
+@field_name:
+@field_type_name:
+
+<!-- ##### FUNCTION gras_datadesc_declare_struct_add_name_cb ##### -->
+<para>
+
+</para>
+
+@struct_code:
+@field_name:
+@field_type_name:
+@pre_cb:
+@post_cb:
+@Returns:
+
+<!-- ##### FUNCTION gras_datadesc_declare_struct_append ##### -->
+<para>
+
+</para>
+
+@struct_type:
+@name:
+@field_type:
+@Returns:
+
+<!-- ##### FUNCTION gras_datadesc_declare_struct_append_name ##### -->
+<para>
+
+</para>
+
+@struct_type:
+@name:
+@field_type_name:
+@Returns:
+
+<!-- ##### FUNCTION gras_datadesc_declare_struct_cb ##### -->
+<para>
+
+</para>
+
+@name:
+@pre_cb:
+@post_cb:
+@code:
+@Returns:
+
+<!-- ##### FUNCTION gras_datadesc_declare_struct_close ##### -->
+<para>
+
+</para>
+
+@struct_type:
+
+<!-- ##### FUNCTION gras_datadesc_declare_union ##### -->
+<para>
+
+</para>
+
+@name:
+@selector:
+@dst:
+@Returns:
+@code:
+
+<!-- ##### MACRO gras_datadesc_declare_union_add_code ##### -->
+<para>
+
+</para>
+
+@union_code:
+@field_name:
+@field_type_code:
+
+<!-- ##### FUNCTION gras_datadesc_declare_union_add_code_cb ##### -->
+<para>
+
+</para>
+
+@union_code:
+@field_name:
+@field_code:
+@pre_cb:
+@post_cb:
+@Returns:
+
+<!-- ##### MACRO gras_datadesc_declare_union_add_name ##### -->
+<para>
+
+</para>
+
+@union_code:
+@field_name:
+@field_type_name:
+
+<!-- ##### FUNCTION gras_datadesc_declare_union_add_name_cb ##### -->
+<para>
+
+</para>
+
+@union_code:
+@field_name:
+@field_type_name:
+@pre_cb:
+@post_cb:
+@Returns:
+
+<!-- ##### FUNCTION gras_datadesc_declare_union_append ##### -->
+<para>
+
+</para>
+
+@union_type:
+@name:
+@field_type:
+@Returns:
+
+<!-- ##### FUNCTION gras_datadesc_declare_union_append_name ##### -->
+<para>
+
+</para>
+
+@union_type:
+@name:
+@field_type_name:
+@Returns:
+
+<!-- ##### FUNCTION gras_datadesc_declare_union_cb ##### -->
+<para>
+
+</para>
+
+@name:
+@field_count:
+@post:
+@code:
+@Returns:
+
+<!-- ##### FUNCTION gras_datadesc_declare_union_close ##### -->
+<para>
+
+</para>
+
+@union_type:
+
+<!-- ##### FUNCTION gras_datadesc_from_nws ##### -->
+<para>
+
+</para>
+
+@name:
+@desc:
+@howmany:
+@code:
+@Returns:
+@dst:
+
+<!-- ##### FUNCTION gras_datadesc_import_nws ##### -->
+<para>
+
+</para>
+
+@name:
+@desc:
+@howmany:
+@dst:
+@Returns:
+
+<!-- ##### FUNCTION gras_datadesc_parse ##### -->
+<para>
+
+</para>
+
+@name:
+@Cdefinition:
+@dst:
+@Returns:
+@code:
+@def:
+
+<!-- ##### FUNCTION gras_datadesc_ref ##### -->
+<para>
+
+</para>
+
+@name:
+@referenced_type:
+@dst:
+@Returns:
+
+<!-- ##### FUNCTION gras_datadesc_ref_generic ##### -->
+<para>
+
+</para>
+
+@name:
+@selector:
+@dst:
+@Returns:
+@discriminant:
+
+<!-- ##### FUNCTION gras_datadesc_ref_pop_arr ##### -->
+<para>
+
+</para>
+
+@element_type:
+@dst:
+@Returns:
+
+<!-- ##### FUNCTION gras_datadesc_struct ##### -->
+<para>
+
+</para>
+
+@name:
+@dst:
+@Returns:
+
+<!-- ##### FUNCTION gras_datadesc_struct_append ##### -->
+<para>
+
+</para>
+
+@struct_type:
+@name:
+@field_type:
+@Returns:
+
+<!-- ##### FUNCTION gras_datadesc_struct_close ##### -->
+<para>
+
+</para>
+
+@struct_type:
+
+<!-- ##### USER_FUNCTION gras_datadesc_type_cb_int_t ##### -->
+<para>
+
+</para>
+
+@vars:
+@data:
+@Returns:
+@p_type:
+
+<!-- ##### USER_FUNCTION gras_datadesc_type_cb_void_t ##### -->
+<para>
+
+</para>
+
+@vars:
+@data:
+@p_type:
+
+<!-- ##### FUNCTION gras_datadesc_union ##### -->
+<para>
+
+</para>
+
+@name:
+@selector:
+@dst:
+@Returns:
+
+<!-- ##### FUNCTION gras_datadesc_union_append ##### -->
+<para>
+
+</para>
+
+@union_type:
+@name:
+@field_type:
+@Returns:
+
+<!-- ##### FUNCTION gras_datadesc_union_close ##### -->
+<para>
+
+</para>
+
+@union_type:
+
+<!-- ##### FUNCTION gras_dd_cbps_block_begin ##### -->
+<para>
+
+</para>
+
+@ps:
+
+<!-- ##### FUNCTION gras_dd_cbps_block_end ##### -->
+<para>
+
+</para>
+
+@ps:
+
+<!-- ##### FUNCTION gras_dd_cbps_get ##### -->
+<para>
+
+</para>
+
+@ps:
+@name:
+@ddt:
+
+<!-- ##### FUNCTION gras_dd_cbps_pop ##### -->
+<para>
+
+</para>
+
+@ps:
+@name:
+@ddt:
+
+<!-- ##### FUNCTION gras_dd_cbps_push ##### -->
+<para>
+
+</para>
+
+@ps:
+@name:
+@data:
+@ddt:
+
+<!-- ##### FUNCTION gras_dd_cbps_set ##### -->
+<para>
+
+</para>
+
+@ps:
+@name:
+@data:
+@ddt:
+
+<!-- ##### FUNCTION gras_ddt_free ##### -->
+<para>
+
+</para>
+
+@type:
+
+<!-- ##### FUNCTION gras_ddt_get_by_code ##### -->
+<para>
+
+</para>
+
+@code:
+@type:
+@Returns:
+
+<!-- ##### FUNCTION gras_ddt_get_by_name ##### -->
+<para>
+
+</para>
+
+@name:
+@type:
+@Returns:
+
+<!-- ##### FUNCTION gras_ddt_new_array ##### -->
+<para>
+
+</para>
+
+@name:
+@element_type:
+@fixed_size:
+@dynamic_size:
+@post:
+@dst:
+@Returns:
+
+<!-- ##### FUNCTION gras_ddt_new_from_nws ##### -->
+<para>
+
+</para>
+
+@name:
+@desc:
+@howmany:
+@dst:
+@Returns:
+
+<!-- ##### FUNCTION gras_ddt_new_ignored ##### -->
+<para>
+
+</para>
+
+@name:
+@default_value:
+@free_func:
+@size:
+@alignment:
+@post:
+@dst:
+@Returns:
+
+<!-- ##### FUNCTION gras_ddt_new_parse ##### -->
+<para>
+
+</para>
+
+@name:
+@C_definition:
+@dst:
+@Returns:
+
+<!-- ##### FUNCTION gras_ddt_new_ref ##### -->
+<para>
+
+</para>
+
+@name:
+@referenced_type:
+@discriminant:
+@post:
+@dst:
+@Returns:
+
+<!-- ##### FUNCTION gras_ddt_new_scalar ##### -->
+<para>
+
+</para>
+
+@name:
+@type:
+@Returns:
+
+<!-- ##### FUNCTION gras_ddt_new_struct ##### -->
+<para>
+
+</para>
+
+@name:
+@pre:
+@post:
+@dst:
+@Returns:
+
+<!-- ##### FUNCTION gras_ddt_new_struct_append ##### -->
+<para>
+
+</para>
+
+@struct_type:
+@name:
+@field_type:
+@pre:
+@post:
+@Returns:
+
+<!-- ##### FUNCTION gras_ddt_new_union ##### -->
+<para>
+
+</para>
+
+@name:
+@field_count:
+@post:
+@dst:
+@Returns:
+
+<!-- ##### FUNCTION gras_ddt_new_union_append ##### -->
+<para>
+
+</para>
+
+@union_type:
+@name:
+@field_type:
+@pre:
+@post:
+@Returns:
+
+<!-- ##### FUNCTION gras_ddt_register ##### -->
+<para>
+
+</para>
+
+@type:
+@Returns:
+
+<!-- ##### FUNCTION gras_dict_cursor_free ##### -->
+<para>
+
+</para>
+
+@cursor:
+@Returns:
+
+<!-- ##### FUNCTION gras_dict_cursor_get_data ##### -->
+<para>
+
+</para>
+
+@cursor:
+@data:
+@Returns:
+
+<!-- ##### FUNCTION gras_dict_cursor_get_key ##### -->
+<para>
+
+</para>
+
+@cursor:
+@key:
+@Returns:
+
+<!-- ##### FUNCTION gras_dict_cursor_new ##### -->
+<para>
+
+</para>
+
+@head:
+@cursor:
+@Returns:
+
+<!-- ##### FUNCTION gras_dict_cursor_next ##### -->
+<para>
+
+</para>
+
+@cursor:
+@Returns:
+
+<!-- ##### FUNCTION gras_dict_cursor_rewind ##### -->
+<para>
+
+</para>
+
+@cursor:
+@Returns:
+
+<!-- ##### FUNCTION gras_dict_dump ##### -->
+<para>
+
+</para>
+
+@head:
+@output:
+@Returns:
+
+<!-- ##### MACRO gras_dict_foreach ##### -->
+<para>
+
+</para>
+
+@dict:
+@cursor:
+@key:
+@data:
+
+<!-- ##### FUNCTION gras_dict_free ##### -->
+<para>
+
+</para>
+
+@dict:
+@Returns:
+
+<!-- ##### FUNCTION gras_dict_get ##### -->
+<para>
+
+</para>
+
+@head:
+@key:
+@data:
+@Returns:
+
+<!-- ##### FUNCTION gras_dict_get_ext ##### -->
+<para>
+
+</para>
+
+@head:
+@key:
+@key_len:
+@data:
+@Returns:
+
+<!-- ##### FUNCTION gras_dict_insert ##### -->
+<para>
+
+</para>
+
+@head:
+@key:
+@data:
+@free_ctn:
+@Returns:
+
+<!-- ##### FUNCTION gras_dict_insert_ext ##### -->
+<para>
+
+</para>
+
+@head:
+@key:
+@key_len:
+@data:
+@free_ctn:
+@Returns:
+
+<!-- ##### FUNCTION gras_dict_new ##### -->
+<para>
+
+</para>
+
+@dict:
+@Returns:
+
+<!-- ##### FUNCTION gras_dict_print ##### -->
+<para>
+
+</para>
+
+@data:
+
+<!-- ##### FUNCTION gras_dict_prints ##### -->
+<para>
+
+</para>
+
+@data:
+
+<!-- ##### FUNCTION gras_dict_remove ##### -->
+<para>
+
+</para>
+
+@head:
+@key:
+@Returns:
+
+<!-- ##### FUNCTION gras_dict_remove_ext ##### -->
+<para>
+
+</para>
+
+@head:
+@key:
+@key_len:
+@Returns:
+
+<!-- ##### FUNCTION gras_dict_retrieve ##### -->
+<para>
+
+</para>
+
+@head:
+@key:
+@data:
+@Returns:
+
+<!-- ##### FUNCTION gras_dict_retrieve_ext ##### -->
+<para>
+
+</para>
+
+@head:
+@key:
+@key_len:
+@data:
+@Returns:
+
+<!-- ##### FUNCTION gras_dict_set ##### -->
+<para>
+
+</para>
+
+@head:
+@key:
+@data:
+@free_ctn:
+@Returns:
+
+<!-- ##### FUNCTION gras_dict_set_ext ##### -->
+<para>
+
+</para>
+
+@head:
+@key:
+@key_len:
+@data:
+@free_ctn:
+@Returns:
+
+<!-- ##### FUNCTION gras_dynar_cursor_first ##### -->
+<para>
+
+</para>
+
+@dynar:
+@cursor:
+
+<!-- ##### FUNCTION gras_dynar_cursor_get ##### -->
+<para>
+
+</para>
+
+@dynar:
+@cursor:
+@whereto:
+@Returns:
+
+<!-- ##### FUNCTION gras_dynar_cursor_rm ##### -->
+<para>
+
+</para>
+
+@dynar:
+@cursor:
+
+<!-- ##### FUNCTION gras_dynar_cursor_step ##### -->
+<para>
+
+</para>
+
+@dynar:
+@cursor:
+
+<!-- ##### FUNCTION gras_dynar_first ##### -->
+<para>
+
+</para>
+
+@dynar:
+@cursor:
+@Returns:
+
+<!-- ##### MACRO gras_dynar_foreach ##### -->
+<para>
+
+</para>
+
+@_dynar:
+@_cursor:
+@_data:
+@_whereto:
+
+<!-- ##### FUNCTION gras_dynar_free ##### -->
+<para>
+
+</para>
+
+@dynar:
+@Returns:
+
+<!-- ##### FUNCTION gras_dynar_free_container ##### -->
+<para>
+
+</para>
+
+@dynar:
+@Returns:
+
+<!-- ##### FUNCTION gras_dynar_get ##### -->
+<para>
+
+</para>
+
+@dynar:
+@idx:
+@dst:
+@whereto:
+@Returns:
+
+<!-- ##### FUNCTION gras_dynar_insert_at ##### -->
+<para>
+
+</para>
+
+@dynar:
+@idx:
+@src:
+@Returns:
+@object:
+
+<!-- ##### FUNCTION gras_dynar_length ##### -->
+<para>
+
+</para>
+
+@dynar:
+@Returns:
+
+<!-- ##### FUNCTION gras_dynar_map ##### -->
+<para>
+
+</para>
+
+@dynar:
+@operator:
+@Returns:
+
+<!-- ##### FUNCTION gras_dynar_new ##### -->
+<para>
+
+</para>
+
+@whereto:
+@elm_size:
+@free_func:
+@Returns:
+
+<!-- ##### FUNCTION gras_dynar_next ##### -->
+<para>
+
+</para>
+
+@dynar:
+@cursor:
+@whereto:
+@Returns:
+
+<!-- ##### FUNCTION gras_dynar_pop ##### -->
+<para>
+
+</para>
+
+@dynar:
+@dst:
+@whereto:
+
+<!-- ##### FUNCTION gras_dynar_push ##### -->
+<para>
+
+</para>
+
+@dynar:
+@src:
+@Returns:
+@object:
+
+<!-- ##### FUNCTION gras_dynar_remove_at ##### -->
+<para>
+
+</para>
+
+@dynar:
+@idx:
+@object:
+@Returns:
+
+<!-- ##### FUNCTION gras_dynar_remplace ##### -->
+<para>
+
+</para>
+
+@dynar:
+@idx:
+@object:
+@Returns:
+
+<!-- ##### FUNCTION gras_dynar_reset ##### -->
+<para>
+
+</para>
+
+@dynar:
+@Returns:
+
+<!-- ##### FUNCTION gras_dynar_set ##### -->
+<para>
+
+</para>
+
+@dynar:
+@idx:
+@src:
+@Returns:
+@object:
+
+<!-- ##### FUNCTION gras_dynar_shift ##### -->
+<para>
+
+</para>
+
+@dynar:
+@dst:
+@whereto:
+@Returns: