I need a string range structure that has two ranges for some given string for the network related code.
The unit tests are updated or added as appropriate.
Any bugs discovered in the related unit tests are fixed.
The build data is rebuilt.
I originally wrote f_string_range_t to be specific to strings.
I now think that this needs to be conceptually more generalized.
The purpose of such a generalization is to simplify the code logic and design.
Renaming f_string_range_t to f_range_t and now renaming f_string_range_double_t into f_range_double_t is the intended change.
This would then be moved out of the f_string project and into the f_type project.
This is too much to do in the scope of this commit.
Instead, the f_string_range_double_t is being added under f_string_range_double_t.
I will then follow up this commit with a refactor of the f_string_range_t and f_string_range_double_t.
Use these files as a starting point to generate a config.h or similar to disable functions in a project.
-This is also used for building the stand alone programs.
+There are different ways to build the stand alone program configuration files.
+This is one of the ways to build the stand alone program configuration files (with another being documented in the config files themselves).
-These files are generated like the following:
+The disable files are generated like the following:
# cd fll/
# echo $(cat level_3/fake/data/build/dependencies)
Which prints:
- # fss-0000 f_type f_status f_memory f_type_array f_string f_utf f_abstruse f_account f_capability f_color f_compare f_console f_control_group f_conversion f_directory f_environment f_execute f_file f_fss f_iki f_limit f_parse f_path f_pipe f_print f_rip f_signal f_thread f_time fl_control_group fl_conversion fl_directory fl_environment fl_execute fl_fss fl_iki fl_path fl_print fll_error fll_execute fll_file fll_fss fll_print fll_program
+ # fss-0000 f_type f_status f_memory f_type_array f_string f_utf f_abstruse f_account f_capability f_color f_compare f_console f_control_group f_conversion f_directory f_environment f_execute f_file f_fss f_iki f_limit f_parse f_path f_pipe f_print f_rip f_signal f_thread fl_control_group fl_conversion fl_directory fl_environment fl_execute fl_fss fl_iki fl_path fl_print fll_error fll_execute fll_file fll_fss fll_print fll_program
From this list, build the level_0:
-# for i in f_type f_status f_memory f_type_array f_string f_utf f_abstruse f_account f_capability f_color f_compare f_console f_control_group f_conversion f_directory f_environment f_execute f_file f_fss f_iki f_limit f_parse f_path f_pipe f_print f_rip f_signal f_thread f_time ; do if [[ -f build/disable/level_0/$i.h ]] ; then echo >> build/stand_alone/fake.config.h && cat build/disable/level_0/$i.h >> build/stand_alone/fake.config.h ; fi ; done
+# for i in f_type f_status f_memory f_type_array f_string f_utf f_abstruse f_account f_capability f_color f_compare f_console f_control_group f_conversion f_directory f_environment f_execute f_file f_fss f_iki f_limit f_parse f_path f_pipe f_print f_rip f_signal f_thread ; do if [[ -f build/disable/level_0/$i.h ]] ; then echo >> build/stand_alone/fake.config.h && cat build/disable/level_0/$i.h >> build/stand_alone/fake.config.h ; fi ; done
From the list, build the level_1:
--- /dev/null
+#define _di_f_abstruse_e_
+#define _di_f_abstruse_maps_delete_callback_
+#define _di_f_abstruse_maps_destroy_callback_
+#define _di_f_abstruse_mapss_delete_callback_
+#define _di_f_abstruse_mapss_destroy_callback_
+#define _di_f_abstruse_mapss_t_
+#define _di_f_abstruse_maps_t_
+#define _di_f_abstruse_map_t_
+#define _di_f_abstruses_delete_callback_
+#define _di_f_abstruses_destroy_callback_
+#define _di_f_abstrusess_delete_callback_
+#define _di_f_abstrusess_destroy_callback_
+#define _di_f_abstrusess_t_
+#define _di_f_abstruses_t_
+#define _di_f_abstruse_t_
+#define _di_f_abstruse_type_t_
#define _di_f_account_group_name_by_id_
#define _di_f_account_id_by_name_
#define _di_f_account_name_by_id_
-#define _di_f_accounts_adjust_
-#define _di_f_accounts_append_
-#define _di_f_accounts_append_all_
-#define _di_f_accounts_decimate_by_
-#define _di_f_accounts_decrease_by_
-#define _di_f_accounts_increase_
-#define _di_f_accounts_increase_by_
-#define _di_f_accounts_resize_
-#define _di_f_accountss_adjust_
-#define _di_f_accountss_append_
-#define _di_f_accountss_append_all_
-#define _di_f_accountss_decimate_by_
-#define _di_f_accountss_decrease_by_
-#define _di_f_accountss_increase_
-#define _di_f_accountss_increase_by_
-#define _di_f_accountss_resize_
+#define _di_f_accounts_delete_callback_
+#define _di_f_accounts_destroy_callback_
+#define _di_f_accountss_delete_callback_
+#define _di_f_accountss_destroy_callback_
#define _di_f_accounts_t_
#define _di_f_account_t_
#define _di_f_directory_list_
#define _di_f_directory_listing_delete_
#define _di_f_directory_listing_destroy_
+#define _di_f_directory_listings_delete_callback_
+#define _di_f_directory_listings_destroy_callback_
+#define _di_f_directory_listingss_delete_callback_
+#define _di_f_directory_listingss_destroy_callback_
+#define _di_f_directory_listingss_t_
+#define _di_f_directory_listings_t_
#define _di_f_directory_listing_t_
#define _di_f_directory_max_d_
#define _di_f_directory_open_
#define _di_f_directory_recurse_do_delete_
#define _di_f_directory_recurse_do_destroy_
#define _di_f_directory_recurse_do_flag_e_
+#define _di_f_directory_recurse_dos_delete_callback_
+#define _di_f_directory_recurse_dos_destroy_callback_
+#define _di_f_directory_recurse_doss_delete_callback_
+#define _di_f_directory_recurse_doss_destroy_callback_
+#define _di_f_directory_recurse_doss_t_
+#define _di_f_directory_recurse_dos_t_
#define _di_f_directory_recurse_do_t_
#define _di_f_directory_remove_
#define _di_f_directory_remove_custom_
#define _di_f_directory_s_
-#define _di_f_directory_statuss_adjust_
-#define _di_f_directory_statuss_decimate_by_
-#define _di_f_directory_statuss_decrease_by_
-#define _di_f_directory_statuss_increase_
-#define _di_f_directory_statuss_increase_by_
-#define _di_f_directory_statuss_resize_
+#define _di_f_directory_status_delete_
+#define _di_f_directory_status_destroy_
+#define _di_f_directory_statuss_delete_callback_
+#define _di_f_directory_statuss_destroy_callback_
+#define _di_f_directory_statusss_delete_callback_
+#define _di_f_directory_statusss_destroy_callback_
+#define _di_f_directory_statusss_t_
#define _di_f_directory_statuss_t_
#define _di_f_directory_status_t_
#define _di_f_directory_touch_
#define _di_f_file_at_d_
#define _di_f_file_clone_
#define _di_f_file_close_
+#define _di_f_file_close_id_
#define _di_f_file_copy_
#define _di_f_file_create_
#define _di_f_file_create_at_
#define _di_f_file_seek_
#define _di_f_file_seeks_d_
#define _di_f_file_select_
+#define _di_f_file_select_signal_
#define _di_f_file_size_
#define _di_f_file_size_at_
#define _di_f_file_size_by_id_
#define _di_f_fss_is_graph_
#define _di_f_fss_is_space_
#define _di_f_fss_is_zero_width_
-#define _di_f_fss_items_adjust_
-#define _di_f_fss_items_decimate_by_
-#define _di_f_fss_items_decrease_by_
-#define _di_f_fss_items_increase_
-#define _di_f_fss_items_increase_by_
-#define _di_f_fss_items_resize_
+#define _di_f_fss_item_delete_
+#define _di_f_fss_item_destroy_
+#define _di_f_fss_items_delete_callback_
+#define _di_f_fss_items_destroy_callback_
+#define _di_f_fss_itemss_delete_callback_
+#define _di_f_fss_itemss_destroy_callback_
+#define _di_f_fss_itemss_t_
#define _di_f_fss_items_t_
#define _di_f_fss_item_t_
-#define _di_f_fss_named_adjust_
-#define _di_f_fss_named_decimate_by_
-#define _di_f_fss_named_decrease_by_
-#define _di_f_fss_named_increase_
-#define _di_f_fss_named_increase_by_
-#define _di_f_fss_named_resize_
-#define _di_f_fss_nameds_adjust_
-#define _di_f_fss_nameds_decimate_by_
-#define _di_f_fss_nameds_decrease_by_
-#define _di_f_fss_nameds_increase_
-#define _di_f_fss_nameds_increase_by_
-#define _di_f_fss_nameds_resize_
+#define _di_f_fss_named_delete_
+#define _di_f_fss_named_destroy_
+#define _di_f_fss_nameds_delete_callback_
+#define _di_f_fss_nameds_destroy_callback_
+#define _di_f_fss_namedss_delete_callback_
+#define _di_f_fss_namedss_destroy_callback_
+#define _di_f_fss_namedss_t_
#define _di_f_fss_nameds_t_
#define _di_f_fss_named_t_
-#define _di_f_fss_nest_adjust_
-#define _di_f_fss_nest_decimate_by_
-#define _di_f_fss_nest_decrease_by_
-#define _di_f_fss_nest_increase_
-#define _di_f_fss_nest_increase_by_
-#define _di_f_fss_nest_resize_
-#define _di_f_fss_nests_adjust_
-#define _di_f_fss_nests_decimate_by_
-#define _di_f_fss_nests_decrease_by_
-#define _di_f_fss_nests_increase_
-#define _di_f_fss_nests_increase_by_
-#define _di_f_fss_nests_resize_
+#define _di_f_fss_nest_delete_
+#define _di_f_fss_nest_destroy_
+#define _di_f_fss_nests_delete_callback_
+#define _di_f_fss_nests_destroy_callback_
+#define _di_f_fss_nestss_delete_callback_
+#define _di_f_fss_nestss_destroy_callback_
+#define _di_f_fss_nestss_t_
#define _di_f_fss_nests_t_
#define _di_f_fss_nest_t_
+#define _di_f_fss_payload_comment_header_begin_s_
+#define _di_f_fss_payload_comment_header_end_s_
+#define _di_f_fss_payload_comment_header_s_
+#define _di_f_fss_payload_header_map_e_
+#define _di_f_fss_payload_object_end_s_
+#define _di_f_fss_payload_object_header_s_
+#define _di_f_fss_payload_object_id_s_
+#define _di_f_fss_payload_object_length_s_
+#define _di_f_fss_payload_object_name_s_
+#define _di_f_fss_payload_object_part_s_
+#define _di_f_fss_payload_object_payload_s_
+#define _di_f_fss_payload_object_signature_s_
+#define _di_f_fss_payload_object_size_s_
+#define _di_f_fss_payload_object_status_s_
+#define _di_f_fss_payload_object_total_s_
+#define _di_f_fss_payload_object_type_s_
#define _di_f_fss_payload_s_
#define _di_f_fss_placeholder_s_
#define _di_f_fss_quote_type_e_
#define _di_f_fss_s_
#define _di_f_fss_seek_to_eol_
-#define _di_f_fss_set_adjust_
-#define _di_f_fss_set_decimate_by_
-#define _di_f_fss_set_decrease_by_
-#define _di_f_fss_set_increase_
-#define _di_f_fss_set_increase_by_
-#define _di_f_fss_set_quote_adjust_
-#define _di_f_fss_set_quote_decimate_by_
-#define _di_f_fss_set_quote_decrease_by_
-#define _di_f_fss_set_quote_increase_
-#define _di_f_fss_set_quote_increase_by_
-#define _di_f_fss_set_quote_resize_
-#define _di_f_fss_set_quotes_adjust_
-#define _di_f_fss_set_quotes_decimate_by_
-#define _di_f_fss_set_quotes_decrease_by_
-#define _di_f_fss_set_quotes_increase_
-#define _di_f_fss_set_quotes_increase_by_
-#define _di_f_fss_set_quotes_resize_
+#define _di_f_fss_set_delete_
+#define _di_f_fss_set_destroy_
+#define _di_f_fss_set_quote_delete_
+#define _di_f_fss_set_quote_destroy_
+#define _di_f_fss_set_quotes_delete_callback_
+#define _di_f_fss_set_quotes_destroy_callback_
+#define _di_f_fss_set_quotess_delete_callback_
+#define _di_f_fss_set_quotess_destroy_callback_
+#define _di_f_fss_set_quotess_t_
#define _di_f_fss_set_quotes_t_
#define _di_f_fss_set_quote_t_
-#define _di_f_fss_set_resize_
-#define _di_f_fss_sets_adjust_
-#define _di_f_fss_sets_decimate_by_
-#define _di_f_fss_sets_decrease_by_
-#define _di_f_fss_sets_increase_
-#define _di_f_fss_sets_increase_by_
-#define _di_f_fss_sets_resize_
+#define _di_f_fss_sets_delete_callback_
+#define _di_f_fss_sets_destroy_callback_
+#define _di_f_fss_setss_delete_callback_
+#define _di_f_fss_setss_destroy_callback_
+#define _di_f_fss_setss_t_
#define _di_f_fss_sets_t_
#define _di_f_fss_set_t_
#define _di_f_fss_simple_packet_d_
-#define _di_f_fss_simple_packet_identify_
-#define _di_f_fss_simple_packet_ranges_adjust_
-#define _di_f_fss_simple_packet_ranges_append_
-#define _di_f_fss_simple_packet_ranges_append_all_
-#define _di_f_fss_simple_packet_ranges_decimate_by_
-#define _di_f_fss_simple_packet_ranges_decrease_by_
-#define _di_f_fss_simple_packet_ranges_increase_
-#define _di_f_fss_simple_packet_ranges_increase_by_
-#define _di_f_fss_simple_packet_ranges_resize_
-#define _di_f_fss_simple_packet_rangess_adjust_
-#define _di_f_fss_simple_packet_rangess_append_
-#define _di_f_fss_simple_packet_rangess_append_all_
-#define _di_f_fss_simple_packet_rangess_decimate_by_
-#define _di_f_fss_simple_packet_rangess_decrease_by_
-#define _di_f_fss_simple_packet_rangess_increase_
-#define _di_f_fss_simple_packet_rangess_increase_by_
-#define _di_f_fss_simple_packet_rangess_resize_
+#define _di_f_fss_simple_packet_delete_
+#define _di_f_fss_simple_packet_destroy_
+#define _di_f_fss_simple_packet_extract_
+#define _di_f_fss_simple_packet_extract_range_
#define _di_f_fss_simple_packet_rangess_t_
#define _di_f_fss_simple_packet_ranges_t_
#define _di_f_fss_simple_packet_range_t_
+#define _di_f_fss_simple_packets_delete_callback_
+#define _di_f_fss_simple_packets_destroy_callback_
+#define _di_f_fss_simple_packetss_delete_callback_
+#define _di_f_fss_simple_packetss_destroy_callback_
+#define _di_f_fss_simple_packetss_t_
+#define _di_f_fss_simple_packets_t_
+#define _di_f_fss_simple_packet_t_
#define _di_f_fss_skip_past_delimit_
#define _di_f_fss_skip_past_space_
#define _di_f_fss_state_flag_e_
#define _di_f_iki_content_partial_is_
#define _di_f_iki_data_delete_
#define _di_f_iki_data_destroy_
-#define _di_f_iki_datas_adjust_
#define _di_f_iki_datas_append_
#define _di_f_iki_datas_append_all_
-#define _di_f_iki_datas_decimate_by_
-#define _di_f_iki_datas_decrease_by_
-#define _di_f_iki_datas_increase_
-#define _di_f_iki_datas_increase_by_
-#define _di_f_iki_datas_resize_
-#define _di_f_iki_datass_adjust_
+#define _di_f_iki_datas_delete_callback_
+#define _di_f_iki_datas_destroy_callback_
#define _di_f_iki_datass_append_
#define _di_f_iki_datass_append_all_
-#define _di_f_iki_datass_decimate_by_
-#define _di_f_iki_datass_decrease_by_
-#define _di_f_iki_datass_increase_
-#define _di_f_iki_datass_increase_by_
-#define _di_f_iki_datass_resize_
+#define _di_f_iki_datass_delete_callback_
+#define _di_f_iki_datass_destroy_callback_
#define _di_f_iki_datass_t_
#define _di_f_iki_datas_t_
#define _di_f_iki_data_t_
#define _di_f_limit_process_
-#define _di_f_limit_sets_adjust_
-#define _di_f_limit_sets_append_
-#define _di_f_limit_sets_append_all_
-#define _di_f_limit_sets_decimate_by_
-#define _di_f_limit_sets_decrease_by_
-#define _di_f_limit_sets_increase_
-#define _di_f_limit_sets_increase_by_
-#define _di_f_limit_sets_resize_
-#define _di_f_limit_setss_adjust_
-#define _di_f_limit_setss_append_
-#define _di_f_limit_setss_append_all_
-#define _di_f_limit_setss_decimate_by_
-#define _di_f_limit_setss_decrease_by_
-#define _di_f_limit_setss_increase_
-#define _di_f_limit_setss_increase_by_
-#define _di_f_limit_setss_resize_
+#define _di_f_limit_setss_delete_callback_
+#define _di_f_limit_setss_destroy_callback_
#define _di_f_limit_setss_t_
#define _di_f_limit_sets_t_
#define _di_f_limit_set_t_
-#define _di_f_limit_values_adjust_
-#define _di_f_limit_values_append_
-#define _di_f_limit_values_append_all_
-#define _di_f_limit_values_decimate_by_
-#define _di_f_limit_values_decrease_by_
-#define _di_f_limit_values_increase_
-#define _di_f_limit_values_increase_by_
-#define _di_f_limit_values_resize_
-#define _di_f_limit_valuess_adjust_
-#define _di_f_limit_valuess_append_
-#define _di_f_limit_valuess_append_all_
-#define _di_f_limit_valuess_decimate_by_
-#define _di_f_limit_valuess_decrease_by_
-#define _di_f_limit_valuess_increase_
-#define _di_f_limit_valuess_increase_by_
-#define _di_f_limit_valuess_resize_
+#define _di_f_limit_valuess_delete_callback_
+#define _di_f_limit_valuess_destroy_callback_
#define _di_f_limit_valuess_t_
#define _di_f_limit_values_t_
#define _di_f_limit_value_t_
#define _di_f_memory_adjust_
#define _di_f_memory_array_adjust_
+#define _di_f_memory_array_append_
+#define _di_f_memory_array_append_all_
#define _di_f_memory_array_decimate_by_
#define _di_f_memory_array_decrease_by_
#define _di_f_memory_array_increase_
#define _di_f_memory_array_increase_by_
#define _di_f_memory_array_resize_
+#define _di_f_memory_arrays_adjust_
+#define _di_f_memory_arrays_resize_
#define _di_f_memory_default_d_
#define _di_f_memory_delete_
#define _di_f_memory_destroy_
#define _di_f_print_to_safely_terminated_
#define _di_f_print_to_terminated_
#define _di_f_print_write_max_d_
+#define _di_private_inline_f_print_to_error_
+#define _di_private_inline_private_f_print_to_error_
#define _di_f_socket_accept_
#define _di_f_socket_address_family_e_
+#define _di_f_socket_addressss_delete_callback_
+#define _di_f_socket_addressss_destroy_callback_
+#define _di_f_socket_addressss_t_
+#define _di_f_socket_addresss_t_
#define _di_f_socket_address_t_
#define _di_f_socket_bind_
#define _di_f_socket_bind_inet4_
#define _di_f_socket_read_
#define _di_f_socket_read_message_
#define _di_f_socket_read_stream_
-#define _di_f_sockets_adjust_
-#define _di_f_sockets_append_
-#define _di_f_sockets_append_all_
-#define _di_f_sockets_decimate_by_
-#define _di_f_sockets_decrease_by_
-#define _di_f_sockets_increase_
-#define _di_f_sockets_increase_by_
-#define _di_f_sockets_resize_
-#define _di_f_socketss_adjust_
-#define _di_f_socketss_append_
-#define _di_f_socketss_append_all_
-#define _di_f_socketss_decimate_by_
-#define _di_f_socketss_decrease_by_
-#define _di_f_socketss_increase_
-#define _di_f_socketss_increase_by_
-#define _di_f_socketss_resize_
+#define _di_f_socketss_delete_callback_
+#define _di_f_socketss_destroy_callback_
#define _di_f_socketss_t_
#define _di_f_sockets_t_
#define _di_f_socket_t_
-#define _di_f_status_access_e_
-#define _di_f_status_array_e_
-#define _di_f_status_available_e_
-#define _di_f_status_basic_e_
-#define _di_f_status_boolean_e_
-#define _di_f_status_buffer_e_
-#define _di_f_status_busy_e_
-#define _di_f_status_code_e_
-#define _di_f_status_compare_e_
-#define _di_f_status_directory_e_
-#define _di_f_status_end_e_
-#define _di_f_status_file_e_
-#define _di_f_status_filesystem_e_
+#define _di_f_status_e_
#define _di_f_status_mask_d_
-#define _di_f_status_network_e_
-#define _di_f_status_number_e_
-#define _di_f_status_process_e_
-#define _di_f_status_return_e_
-#define _di_f_status_signal_e_
-#define _di_f_status_socket_e_
-#define _di_f_status_terminal_e_
-#define _di_f_status_access_s_
-#define _di_f_status_array_s_
-#define _di_f_status_available_s_
-#define _di_f_status_basic_s_
-#define _di_f_status_boolean_s_
-#define _di_f_status_buffer_s_
-#define _di_f_status_buffers_s_
-#define _di_f_status_busy_s_
-#define _di_f_status_compare_s_
#define _di_f_status_directory_s_
-#define _di_f_status_end_s_
-#define _di_f_status_file_s_
-#define _di_f_status_filesystem_s_
-#define _di_f_status_network_s_
-#define _di_f_status_number_s_
-#define _di_f_status_process_s_
-#define _di_f_status_return_s_
-#define _di_f_status_signal_s_
-#define _di_f_status_socket_s_
#define _di_f_status_string_s_
#define _di_f_status_string_to_
-#define _di_f_status_terminal_s_
#define _di_f_string_append_nulless_
#define _di_f_string_ascii_s_
#define _di_f_string_constant_t_
-#define _di_f_string_dynamic_adjust_
#define _di_f_string_dynamic_append_
#define _di_f_string_dynamic_append_assure_
#define _di_f_string_dynamic_append_assure_nulless_
#define _di_f_string_dynamic_append_nulless_
-#define _di_f_string_dynamic_decimate_by_
-#define _di_f_string_dynamic_decrease_by_
-#define _di_f_string_dynamic_increase_
-#define _di_f_string_dynamic_increase_by_
#define _di_f_string_dynamic_mash_
#define _di_f_string_dynamic_mash_nulless_
#define _di_f_string_dynamic_mish_
#define _di_f_string_dynamic_prepend_assure_
#define _di_f_string_dynamic_prepend_assure_nulless_
#define _di_f_string_dynamic_prepend_nulless_
-#define _di_f_string_dynamic_resize_
-#define _di_f_string_dynamics_adjust_
#define _di_f_string_dynamics_append_
#define _di_f_string_dynamics_append_all_
-#define _di_f_string_dynamics_decimate_by_
-#define _di_f_string_dynamics_decrease_by_
+#define _di_f_string_dynamics_delete_callback_
+#define _di_f_string_dynamics_destroy_callback_
#define _di_f_string_dynamic_seek_line_
#define _di_f_string_dynamic_seek_line_to_
#define _di_f_string_dynamic_seek_to_
-#define _di_f_string_dynamics_increase_
-#define _di_f_string_dynamics_increase_by_
-#define _di_f_string_dynamics_resize_
-#define _di_f_string_dynamicss_adjust_
#define _di_f_string_dynamicss_append_
#define _di_f_string_dynamicss_append_all_
-#define _di_f_string_dynamicss_decimate_by_
-#define _di_f_string_dynamicss_decrease_by_
-#define _di_f_string_dynamicss_increase_
-#define _di_f_string_dynamicss_increase_by_
-#define _di_f_string_dynamicss_resize_
+#define _di_f_string_dynamicss_delete_callback_
+#define _di_f_string_dynamicss_destroy_callback_
#define _di_f_string_dynamicss_t_
#define _di_f_string_dynamics_t_
#define _di_f_string_dynamic_t_
#define _di_f_string_dynamic_terminate_after_
#define _di_f_string_empty_s_
#define _di_f_string_eol_s_
-#define _di_f_string_map_multis_adjust_
+#define _di_f_string_format_s_
#define _di_f_string_map_multis_append_
#define _di_f_string_map_multis_append_all_
-#define _di_f_string_map_multis_decimate_by_
-#define _di_f_string_map_multis_decrease_by_
-#define _di_f_string_map_multis_increase_
-#define _di_f_string_map_multis_increase_by_
-#define _di_f_string_map_multis_resize_
-#define _di_f_string_map_multiss_adjust_
+#define _di_f_string_map_multis_delete_callback_
+#define _di_f_string_map_multis_destroy_callback_
#define _di_f_string_map_multiss_append_
#define _di_f_string_map_multiss_append_all_
-#define _di_f_string_map_multiss_decimate_by_
-#define _di_f_string_map_multiss_decrease_by_
-#define _di_f_string_map_multiss_increase_
-#define _di_f_string_map_multiss_increase_by_
-#define _di_f_string_map_multiss_resize_
+#define _di_f_string_map_multiss_delete_callback_
+#define _di_f_string_map_multiss_destroy_callback_
#define _di_f_string_map_multiss_t_
#define _di_f_string_map_multis_t_
#define _di_f_string_map_multi_t_
-#define _di_f_string_maps_adjust_
#define _di_f_string_maps_append_
#define _di_f_string_maps_append_all_
-#define _di_f_string_maps_decimate_by_
-#define _di_f_string_maps_decrease_by_
-#define _di_f_string_maps_increase_
-#define _di_f_string_maps_increase_by_
-#define _di_f_string_maps_resize_
-#define _di_f_string_mapss_adjust_
+#define _di_f_string_maps_delete_callback_
+#define _di_f_string_maps_destroy_callback_
#define _di_f_string_mapss_append_
#define _di_f_string_mapss_append_all_
-#define _di_f_string_mapss_decimate_by_
-#define _di_f_string_mapss_decrease_by_
-#define _di_f_string_mapss_increase_
-#define _di_f_string_mapss_increase_by_
-#define _di_f_string_mapss_resize_
+#define _di_f_string_mapss_delete_callback_
+#define _di_f_string_mapss_destroy_callback_
#define _di_f_string_mapss_t_
#define _di_f_string_maps_t_
#define _di_f_string_map_t_
#define _di_f_string_prepend_assure_
#define _di_f_string_prepend_assure_nulless_
#define _di_f_string_prepend_nulless_
-#define _di_f_string_quantitys_adjust_
#define _di_f_string_quantitys_append_
#define _di_f_string_quantitys_append_all_
-#define _di_f_string_quantitys_decimate_by_
-#define _di_f_string_quantitys_decrease_by_
-#define _di_f_string_quantitys_increase_
-#define _di_f_string_quantitys_increase_by_
-#define _di_f_string_quantitys_resize_
-#define _di_f_string_quantityss_adjust_
#define _di_f_string_quantityss_append_
#define _di_f_string_quantityss_append_all_
-#define _di_f_string_quantityss_decimate_by_
-#define _di_f_string_quantityss_decrease_by_
-#define _di_f_string_quantityss_increase_
-#define _di_f_string_quantityss_increase_by_
-#define _di_f_string_quantityss_resize_
+#define _di_f_string_quantityss_delete_callback_
+#define _di_f_string_quantityss_destroy_callback_
#define _di_f_string_quantityss_t_
#define _di_f_string_quantitys_t_
#define _di_f_string_quantity_t_
+#define _di_f_string_range_double_empty_c_
+#define _di_f_string_range_doubles_append_
+#define _di_f_string_range_doubles_append_all_
+#define _di_f_string_range_doubless_append_
+#define _di_f_string_range_doubless_append_all_
+#define _di_f_string_range_doubless_delete_callback_
+#define _di_f_string_range_doubless_destroy_callback_
+#define _di_f_string_range_doubless_t_
+#define _di_f_string_range_doubles_t_
+#define _di_f_string_range_double_t_
#define _di_f_string_range_empty_c_
-#define _di_f_string_ranges_adjust_
#define _di_f_string_ranges_append_
#define _di_f_string_ranges_append_all_
-#define _di_f_string_ranges_decimate_by_
-#define _di_f_string_ranges_decrease_by_
-#define _di_f_string_ranges_increase_
-#define _di_f_string_ranges_increase_by_
-#define _di_f_string_ranges_resize_
-#define _di_f_string_rangess_adjust_
#define _di_f_string_rangess_append_
#define _di_f_string_rangess_append_all_
-#define _di_f_string_rangess_decimate_by_
-#define _di_f_string_rangess_decrease_by_
-#define _di_f_string_rangess_increase_
-#define _di_f_string_rangess_increase_by_
-#define _di_f_string_rangess_resize_
+#define _di_f_string_rangess_delete_callback_
+#define _di_f_string_rangess_destroy_callback_
#define _di_f_string_rangess_t_
#define _di_f_string_ranges_t_
#define _di_f_string_range_t_
#define _di_f_string_statics_t_
#define _di_f_string_static_t_
#define _di_f_string_t_
-#define _di_f_string_triples_adjust_
#define _di_f_string_triples_append_
#define _di_f_string_triples_append_all_
-#define _di_f_string_triples_decimate_by_
-#define _di_f_string_triples_decrease_by_
-#define _di_f_string_triples_increase_
-#define _di_f_string_triples_increase_by_
-#define _di_f_string_triples_resize_
-#define _di_f_string_tripless_adjust_
+#define _di_f_string_triples_delete_callback_
+#define _di_f_string_triples_destroy_callback_
#define _di_f_string_tripless_append_
#define _di_f_string_tripless_append_all_
-#define _di_f_string_tripless_decimate_by_
-#define _di_f_string_tripless_decrease_by_
-#define _di_f_string_tripless_increase_
-#define _di_f_string_tripless_increase_by_
-#define _di_f_string_tripless_resize_
+#define _di_f_string_tripless_delete_callback_
+#define _di_f_string_tripless_destroy_callback_
#define _di_f_string_tripless_t_
#define _di_f_string_triples_t_
#define _di_f_string_triple_t_
#define _di_f_thread_attribute_detach_set_
#define _di_f_thread_attribute_guard_get_
#define _di_f_thread_attribute_guard_set_
-#define _di_f_thread_attributes_adjust_
#define _di_f_thread_attribute_scheduler_inherit_get_
#define _di_f_thread_attribute_scheduler_inherit_set_
#define _di_f_thread_attribute_scheduler_parameter_get_
#define _di_f_thread_attribute_scheduler_policy_set_
#define _di_f_thread_attribute_scope_get_
#define _di_f_thread_attribute_scope_set_
-#define _di_f_thread_attributes_decimate_by_
-#define _di_f_thread_attributes_decrease_by_
-#define _di_f_thread_attributes_increase_
-#define _di_f_thread_attributes_increase_by_
-#define _di_f_thread_attributes_resize_
+#define _di_f_thread_attributes_delete_callback_
+#define _di_f_thread_attributes_destroy_callback_
+#define _di_f_thread_attributess_delete_callback_
+#define _di_f_thread_attributess_destroy_callback_
#define _di_f_thread_attributes_t_
#define _di_f_thread_attribute_stack_get_
#define _di_f_thread_attribute_stack_set_
#define _di_f_thread_attribute_t_
#define _di_f_thread_barrier_attribute_create_
#define _di_f_thread_barrier_attribute_delete_
-#define _di_f_thread_barrier_attributes_adjust_
-#define _di_f_thread_barrier_attributes_decimate_by_
-#define _di_f_thread_barrier_attributes_decrease_by_
+#define _di_f_thread_barrier_attributes_delete_callback_
+#define _di_f_thread_barrier_attributes_destroy_callback_
#define _di_f_thread_barrier_attribute_shared_get_
#define _di_f_thread_barrier_attribute_shared_set_
-#define _di_f_thread_barrier_attributes_increase_
-#define _di_f_thread_barrier_attributes_increase_by_
-#define _di_f_thread_barrier_attributes_resize_
+#define _di_f_thread_barrier_attributess_delete_callback_
+#define _di_f_thread_barrier_attributess_destroy_callback_
#define _di_f_thread_barrier_attributes_t_
#define _di_f_thread_barrier_attribute_t_
#define _di_f_thread_barrier_create_
#define _di_f_thread_barrier_delete_
-#define _di_f_thread_barriers_adjust_
-#define _di_f_thread_barriers_decimate_by_
-#define _di_f_thread_barriers_decrease_by_
-#define _di_f_thread_barriers_increase_
-#define _di_f_thread_barriers_increase_by_
-#define _di_f_thread_barriers_resize_
+#define _di_f_thread_barriers_delete_callback_
+#define _di_f_thread_barriers_destroy_callback_
+#define _di_f_thread_barrierss_delete_callback_
+#define _di_f_thread_barrierss_destroy_callback_
#define _di_f_thread_barriers_t_
#define _di_f_thread_barrier_t_
#define _di_f_thread_barrier_wait_
#define _di_f_thread_condition_attribute_clock_set_
#define _di_f_thread_condition_attribute_create_
#define _di_f_thread_condition_attribute_delete_
-#define _di_f_thread_condition_attributes_adjust_
-#define _di_f_thread_condition_attributes_decimate_by_
-#define _di_f_thread_condition_attributes_decrease_by_
+#define _di_f_thread_condition_attributes_delete_callback_
+#define _di_f_thread_condition_attributes_destroy_callback_
#define _di_f_thread_condition_attribute_shared_get_
#define _di_f_thread_condition_attribute_shared_set_
-#define _di_f_thread_condition_attributes_increase_
-#define _di_f_thread_condition_attributes_increase_by_
-#define _di_f_thread_condition_attributes_resize_
+#define _di_f_thread_condition_attributess_delete_callback_
+#define _di_f_thread_condition_attributess_destroy_callback_
#define _di_f_thread_condition_attributes_t_
#define _di_f_thread_condition_attribute_t_
#define _di_f_thread_condition_create_
#define _di_f_thread_condition_delete_
-#define _di_f_thread_conditions_adjust_
-#define _di_f_thread_conditions_decimate_by_
-#define _di_f_thread_conditions_decrease_by_
+#define _di_f_thread_conditions_delete_callback_
+#define _di_f_thread_conditions_destroy_callback_
#define _di_f_thread_condition_signal_
#define _di_f_thread_condition_signal_all_
-#define _di_f_thread_conditions_increase_
-#define _di_f_thread_conditions_increase_by_
-#define _di_f_thread_conditions_resize_
+#define _di_f_thread_conditionss_delete_callback_
+#define _di_f_thread_conditionss_destroy_callback_
#define _di_f_thread_conditions_t_
#define _di_f_thread_condition_t_
#define _di_f_thread_condition_wait_
#define _di_f_thread_create_
#define _di_f_thread_detach_
#define _di_f_thread_exit_
-#define _di_f_thread_ids_adjust_
-#define _di_f_thread_ids_decimate_by_
-#define _di_f_thread_ids_decrease_by_
-#define _di_f_thread_ids_increase_
-#define _di_f_thread_ids_increase_by_
-#define _di_f_thread_ids_resize_
#define _di_f_thread_ids_t_
#define _di_f_thread_id_t_
#define _di_f_thread_join_
#define _di_f_thread_key_create_
#define _di_f_thread_key_delete_
#define _di_f_thread_key_get_
-#define _di_f_thread_keys_adjust_
-#define _di_f_thread_keys_decimate_by_
-#define _di_f_thread_keys_decrease_by_
+#define _di_f_thread_keys_delete_callback_
+#define _di_f_thread_keys_destroy_callback_
#define _di_f_thread_key_set_
-#define _di_f_thread_keys_increase_
-#define _di_f_thread_keys_increase_by_
-#define _di_f_thread_keys_resize_
+#define _di_f_thread_keyss_delete_callback_
+#define _di_f_thread_keyss_destroy_callback_
#define _di_f_thread_keys_t_
#define _di_f_thread_key_t_
#define _di_f_thread_lock_attribute_create_
#define _di_f_thread_lock_attribute_delete_
-#define _di_f_thread_lock_attributes_adjust_
-#define _di_f_thread_lock_attributes_decimate_by_
-#define _di_f_thread_lock_attributes_decrease_by_
+#define _di_f_thread_lock_attributes_delete_callback_
+#define _di_f_thread_lock_attributes_destroy_callback_
#define _di_f_thread_lock_attribute_shared_get_
#define _di_f_thread_lock_attribute_shared_set_
-#define _di_f_thread_lock_attributes_increase_
-#define _di_f_thread_lock_attributes_increase_by_
-#define _di_f_thread_lock_attributes_resize_
+#define _di_f_thread_lock_attributess_delete_callback_
+#define _di_f_thread_lock_attributess_destroy_callback_
#define _di_f_thread_lock_attributes_t_
#define _di_f_thread_lock_attribute_t_
#define _di_f_thread_lock_create_
#define _di_f_thread_lock_read_
#define _di_f_thread_lock_read_timed_
#define _di_f_thread_lock_read_try_
-#define _di_f_thread_locks_adjust_
-#define _di_f_thread_locks_decimate_by_
-#define _di_f_thread_locks_decrease_by_
-#define _di_f_thread_locks_increase_
-#define _di_f_thread_locks_increase_by_
-#define _di_f_thread_locks_resize_
+#define _di_f_thread_locks_delete_callback_
+#define _di_f_thread_locks_destroy_callback_
+#define _di_f_thread_lockss_delete_callback_
+#define _di_f_thread_lockss_destroy_callback_
#define _di_f_thread_locks_t_
#define _di_f_thread_lock_t_
#define _di_f_thread_lock_write_
#define _di_f_thread_mutex_attribute_priority_ceiling_set_
#define _di_f_thread_mutex_attribute_protocol_get_
#define _di_f_thread_mutex_attribute_protocol_set_
-#define _di_f_thread_mutex_attributes_adjust_
-#define _di_f_thread_mutex_attributes_decimate_by_
-#define _di_f_thread_mutex_attributes_decrease_by_
+#define _di_f_thread_mutex_attributes_delete_callback_
+#define _di_f_thread_mutex_attributes_destroy_callback_
#define _di_f_thread_mutex_attribute_shared_get_
#define _di_f_thread_mutex_attribute_shared_set_
-#define _di_f_thread_mutex_attributes_increase_
-#define _di_f_thread_mutex_attributes_increase_by_
-#define _di_f_thread_mutex_attributes_resize_
+#define _di_f_thread_mutex_attributess_delete_callback_
+#define _di_f_thread_mutex_attributess_destroy_callback_
#define _di_f_thread_mutex_attributes_t_
#define _di_f_thread_mutex_attribute_t_
#define _di_f_thread_mutex_attribute_type_get_
#define _di_f_thread_mutex_lock_try_
#define _di_f_thread_mutex_priority_ceiling_get_
#define _di_f_thread_mutex_priority_ceiling_set_
-#define _di_f_thread_mutexs_adjust_
-#define _di_f_thread_mutexs_decimate_by_
-#define _di_f_thread_mutexs_decrease_by_
-#define _di_f_thread_mutexs_increase_
-#define _di_f_thread_mutexs_increase_by_
-#define _di_f_thread_mutexs_resize_
+#define _di_f_thread_mutexs_delete_callback_
+#define _di_f_thread_mutexs_destroy_callback_
+#define _di_f_thread_mutexss_delete_callback_
+#define _di_f_thread_mutexss_destroy_callback_
#define _di_f_thread_mutexs_t_
#define _di_f_thread_mutex_t_
#define _di_f_thread_mutex_unlock_
#define _di_f_thread_once_
-#define _di_f_thread_onces_adjust_
-#define _di_f_thread_onces_decimate_by_
-#define _di_f_thread_onces_decrease_by_
-#define _di_f_thread_onces_increase_
-#define _di_f_thread_onces_increase_by_
-#define _di_f_thread_onces_resize_
#define _di_f_thread_onces_t_
#define _di_f_thread_once_t_
#define _di_f_thread_scheduler_parameter_get_
#define _di_f_thread_semaphore_lock_
#define _di_f_thread_semaphore_lock_timed_
#define _di_f_thread_semaphore_lock_try_
-#define _di_f_thread_semaphores_adjust_
-#define _di_f_thread_semaphores_decimate_by_
-#define _di_f_thread_semaphores_decrease_by_
-#define _di_f_thread_semaphores_increase_
-#define _di_f_thread_semaphores_increase_by_
-#define _di_f_thread_semaphores_resize_
+#define _di_f_thread_semaphores_delete_callback_
+#define _di_f_thread_semaphores_destroy_callback_
+#define _di_f_thread_semaphoress_delete_callback_
+#define _di_f_thread_semaphoress_destroy_callback_
#define _di_f_thread_semaphores_t_
#define _di_f_thread_semaphore_t_
#define _di_f_thread_semaphore_unlock_
#define _di_f_thread_semaphore_value_get_
-#define _di_f_thread_sets_adjust_
-#define _di_f_thread_sets_decimate_by_
-#define _di_f_thread_sets_decrease_by_
-#define _di_f_thread_sets_increase_
-#define _di_f_thread_sets_increase_by_
-#define _di_f_thread_sets_resize_
+#define _di_f_thread_sets_delete_callback_
+#define _di_f_thread_sets_destroy_callback_
+#define _di_f_thread_setss_delete_callback_
+#define _di_f_thread_setss_destroy_callback_
#define _di_f_thread_sets_t_
#define _di_f_thread_set_t_
#define _di_f_thread_signal_mask_
#define _di_f_thread_spin_delete_
#define _di_f_thread_spin_lock_
#define _di_f_thread_spin_lock_try_
-#define _di_f_thread_spins_adjust_
-#define _di_f_thread_spins_decimate_by_
-#define _di_f_thread_spins_decrease_by_
-#define _di_f_thread_spins_increase_
-#define _di_f_thread_spins_increase_by_
-#define _di_f_thread_spins_resize_
+#define _di_f_thread_spins_delete_callback_
+#define _di_f_thread_spins_destroy_callback_
+#define _di_f_thread_spinss_delete_callback_
+#define _di_f_thread_spinss_destroy_callback_
#define _di_f_thread_spins_t_
#define _di_f_thread_spin_t_
#define _di_f_thread_spin_unlock_
--- /dev/null
+#define _di_f_time_spec_millisecond_
+#define _di_f_time_spec_nanosecond_
#define _di_f_int8ss_t_
#define _di_f_int8s_t_
#define _di_f_mode_t_
+#define _di_f_number_signedss_t_
+#define _di_f_number_signeds_t_
#define _di_f_number_unsignedss_t_
#define _di_f_number_unsigneds_t_
#define _di_f_poll_e_
-#define _di_f_cells_adjust_
-#define _di_f_cells_append_
-#define _di_f_cells_append_all_
-#define _di_f_cells_decimate_by_
-#define _di_f_cells_decrease_by_
-#define _di_f_cells_increase_
-#define _di_f_cells_increase_by_
-#define _di_f_cells_resize_
-#define _di_f_cellss_adjust_
-#define _di_f_cellss_append_
-#define _di_f_cellss_append_all_
-#define _di_f_cellss_decimate_by_
-#define _di_f_cellss_decrease_by_
-#define _di_f_cellss_increase_
-#define _di_f_cellss_increase_by_
-#define _di_f_cellss_resize_
-#define _di_f_cellss_t_
-#define _di_f_cells_t_
-#define _di_f_files_adjust_
-#define _di_f_files_append_
-#define _di_f_files_append_all_
-#define _di_f_files_decimate_by_
-#define _di_f_files_decrease_by_
-#define _di_f_files_increase_
-#define _di_f_files_increase_by_
-#define _di_f_files_resize_
-#define _di_f_filess_adjust_
-#define _di_f_filess_append_
-#define _di_f_filess_append_all_
-#define _di_f_filess_decimate_by_
-#define _di_f_filess_decrease_by_
-#define _di_f_filess_increase_
-#define _di_f_filess_increase_by_
-#define _di_f_filess_resize_
-#define _di_f_fll_ids_adjust_
-#define _di_f_fll_ids_append_
-#define _di_f_fll_ids_append_all_
-#define _di_f_fll_ids_decimate_by_
-#define _di_f_fll_ids_decrease_by_
-#define _di_f_fll_ids_increase_
-#define _di_f_fll_ids_increase_by_
-#define _di_f_fll_ids_resize_
-#define _di_f_fll_idss_adjust_
-#define _di_f_fll_idss_append_
-#define _di_f_fll_idss_append_all_
-#define _di_f_fll_idss_decimate_by_
-#define _di_f_fll_idss_decrease_by_
-#define _di_f_fll_idss_increase_
-#define _di_f_fll_idss_increase_by_
-#define _di_f_fll_idss_resize_
-#define _di_f_fll_idss_t_
-#define _di_f_fll_ids_t_
-#define _di_f_int128s_adjust_
-#define _di_f_int128s_append_
-#define _di_f_int128s_append_all_
-#define _di_f_int128s_decimate_by_
-#define _di_f_int128s_decrease_by_
-#define _di_f_int128s_increase_
-#define _di_f_int128s_increase_by_
-#define _di_f_int128s_resize_
-#define _di_f_int128ss_adjust_
-#define _di_f_int128ss_append_
-#define _di_f_int128ss_append_all_
-#define _di_f_int128ss_decimate_by_
-#define _di_f_int128ss_decrease_by_
-#define _di_f_int128ss_increase_
-#define _di_f_int128ss_increase_by_
-#define _di_f_int128ss_resize_
-#define _di_f_int128ss_t_
-#define _di_f_int128s_t_
-#define _di_f_int16s_adjust_
-#define _di_f_int16s_append_
-#define _di_f_int16s_append_all_
-#define _di_f_int16s_decimate_by_
-#define _di_f_int16s_decrease_by_
-#define _di_f_int16s_increase_
-#define _di_f_int16s_increase_by_
-#define _di_f_int16s_resize_
-#define _di_f_int16ss_adjust_
-#define _di_f_int16ss_append_
-#define _di_f_int16ss_append_all_
-#define _di_f_int16ss_decimate_by_
-#define _di_f_int16ss_decrease_by_
-#define _di_f_int16ss_increase_
-#define _di_f_int16ss_increase_by_
-#define _di_f_int16ss_resize_
-#define _di_f_int16ss_t_
-#define _di_f_int16s_t_
-#define _di_f_int32s_adjust_
-#define _di_f_int32s_append_
-#define _di_f_int32s_append_all_
-#define _di_f_int32s_decimate_by_
-#define _di_f_int32s_decrease_by_
-#define _di_f_int32s_increase_
-#define _di_f_int32s_increase_by_
-#define _di_f_int32s_resize_
-#define _di_f_int32ss_adjust_
-#define _di_f_int32ss_append_
-#define _di_f_int32ss_append_all_
-#define _di_f_int32ss_decimate_by_
-#define _di_f_int32ss_decrease_by_
-#define _di_f_int32ss_increase_
-#define _di_f_int32ss_increase_by_
-#define _di_f_int32ss_resize_
-#define _di_f_int32ss_t_
-#define _di_f_int32s_t_
-#define _di_f_int64s_adjust_
-#define _di_f_int64s_append_
-#define _di_f_int64s_append_all_
-#define _di_f_int64s_decimate_by_
-#define _di_f_int64s_decrease_by_
-#define _di_f_int64s_increase_
-#define _di_f_int64s_increase_by_
-#define _di_f_int64s_resize_
-#define _di_f_int64ss_adjust_
-#define _di_f_int64ss_append_
-#define _di_f_int64ss_append_all_
-#define _di_f_int64ss_decimate_by_
-#define _di_f_int64ss_decrease_by_
-#define _di_f_int64ss_increase_
-#define _di_f_int64ss_increase_by_
-#define _di_f_int64ss_resize_
-#define _di_f_int64ss_t_
-#define _di_f_int64s_t_
-#define _di_f_int8s_adjust_
-#define _di_f_int8s_append_
-#define _di_f_int8s_append_all_
-#define _di_f_int8s_decimate_by_
-#define _di_f_int8s_decrease_by_
-#define _di_f_int8s_increase_
-#define _di_f_int8s_increase_by_
-#define _di_f_int8s_resize_
-#define _di_f_int8ss_adjust_
-#define _di_f_int8ss_append_
-#define _di_f_int8ss_append_all_
-#define _di_f_int8ss_decimate_by_
-#define _di_f_int8ss_decrease_by_
-#define _di_f_int8ss_increase_
-#define _di_f_int8ss_increase_by_
-#define _di_f_int8ss_resize_
-#define _di_f_int8ss_t_
-#define _di_f_int8_t_
-#define _di_f_number_unsigneds_adjust_
-#define _di_f_number_unsigneds_append_
-#define _di_f_number_unsigneds_append_all_
-#define _di_f_number_unsigneds_decimate_by_
-#define _di_f_number_unsigneds_decrease_by_
-#define _di_f_number_unsigneds_increase_
-#define _di_f_number_unsigneds_increase_by_
-#define _di_f_number_unsigneds_resize_
-#define _di_f_number_unsignedss_adjust_
-#define _di_f_number_unsignedss_append_
-#define _di_f_number_unsignedss_append_all_
-#define _di_f_number_unsignedss_decimate_by_
-#define _di_f_number_unsignedss_decrease_by_
-#define _di_f_number_unsignedss_increase_
-#define _di_f_number_unsignedss_increase_by_
-#define _di_f_number_unsignedss_resize_
-#define _di_f_number_unsignedss_t_
-#define _di_f_number_unsigneds_t_
-#define _di_f_polls_adjust_
-#define _di_f_polls_append_
-#define _di_f_polls_append_all_
-#define _di_f_polls_decimate_by_
-#define _di_f_polls_decrease_by_
-#define _di_f_polls_increase_
-#define _di_f_polls_increase_by_
-#define _di_f_polls_resize_
-#define _di_f_pollss_adjust_
-#define _di_f_pollss_append_
-#define _di_f_pollss_append_all_
-#define _di_f_pollss_decimate_by_
-#define _di_f_pollss_decrease_by_
-#define _di_f_pollss_increase_
-#define _di_f_pollss_increase_by_
-#define _di_f_pollss_resize_
-#define _di_f_states_adjust_
-#define _di_f_states_append_
-#define _di_f_states_append_all_
-#define _di_f_states_decimate_by_
-#define _di_f_states_decrease_by_
-#define _di_f_states_increase_
-#define _di_f_states_increase_by_
-#define _di_f_states_resize_
-#define _di_f_statess_adjust_
-#define _di_f_statess_append_
-#define _di_f_statess_append_all_
-#define _di_f_statess_decimate_by_
-#define _di_f_statess_decrease_by_
-#define _di_f_statess_increase_
-#define _di_f_statess_increase_by_
-#define _di_f_statess_resize_
-#define _di_f_statess_t_
-#define _di_f_states_t_
-#define _di_f_statuss_adjust_
-#define _di_f_statuss_append_
-#define _di_f_statuss_append_all_
-#define _di_f_statuss_decimate_by_
-#define _di_f_statuss_decrease_by_
-#define _di_f_statuss_increase_
-#define _di_f_statuss_increase_by_
-#define _di_f_statuss_resize_
-#define _di_f_statusss_adjust_
-#define _di_f_statusss_append_
-#define _di_f_statusss_append_all_
-#define _di_f_statusss_decimate_by_
-#define _di_f_statusss_decrease_by_
-#define _di_f_statusss_increase_
-#define _di_f_statusss_increase_by_
-#define _di_f_statusss_resize_
-#define _di_f_statusss_t_
-#define _di_f_statuss_t_
-#define _di_f_uint128s_adjust_
-#define _di_f_uint128s_append_
-#define _di_f_uint128s_append_all_
-#define _di_f_uint128s_decimate_by_
-#define _di_f_uint128s_decrease_by_
-#define _di_f_uint128s_increase_
-#define _di_f_uint128s_increase_by_
-#define _di_f_uint128s_resize_
-#define _di_f_uint128ss_adjust_
-#define _di_f_uint128ss_append_
-#define _di_f_uint128ss_append_all_
-#define _di_f_uint128ss_decimate_by_
-#define _di_f_uint128ss_decrease_by_
-#define _di_f_uint128ss_increase_
-#define _di_f_uint128ss_increase_by_
-#define _di_f_uint128ss_resize_
-#define _di_f_uint128ss_t_
-#define _di_f_uint128s_t_
-#define _di_f_uint16s_adjust_
-#define _di_f_uint16s_append_
-#define _di_f_uint16s_append_all_
-#define _di_f_uint16s_decimate_by_
-#define _di_f_uint16s_decrease_by_
-#define _di_f_uint16s_increase_
-#define _di_f_uint16s_increase_by_
-#define _di_f_uint16s_resize_
-#define _di_f_uint16ss_adjust_
-#define _di_f_uint16ss_append_
-#define _di_f_uint16ss_append_all_
-#define _di_f_uint16ss_decimate_by_
-#define _di_f_uint16ss_decrease_by_
-#define _di_f_uint16ss_increase_
-#define _di_f_uint16ss_increase_by_
-#define _di_f_uint16ss_resize_
-#define _di_f_uint16ss_t_
-#define _di_f_uint16s_t_
-#define _di_f_uint32s_adjust_
-#define _di_f_uint32s_append_
-#define _di_f_uint32s_append_all_
-#define _di_f_uint32s_decimate_by_
-#define _di_f_uint32s_decrease_by_
-#define _di_f_uint32s_increase_
-#define _di_f_uint32s_increase_by_
-#define _di_f_uint32s_resize_
-#define _di_f_uint32ss_adjust_
-#define _di_f_uint32ss_append_
-#define _di_f_uint32ss_append_all_
-#define _di_f_uint32ss_decimate_by_
-#define _di_f_uint32ss_decrease_by_
-#define _di_f_uint32ss_increase_
-#define _di_f_uint32ss_increase_by_
-#define _di_f_uint32ss_resize_
-#define _di_f_uint32ss_t_
-#define _di_f_uint32s_t_
-#define _di_f_uint64s_adjust_
-#define _di_f_uint64s_append_
-#define _di_f_uint64s_append_all_
-#define _di_f_uint64s_decimate_by_
-#define _di_f_uint64s_decrease_by_
-#define _di_f_uint64s_increase_
-#define _di_f_uint64s_increase_by_
-#define _di_f_uint64s_resize_
-#define _di_f_uint64ss_adjust_
-#define _di_f_uint64ss_append_
-#define _di_f_uint64ss_append_all_
-#define _di_f_uint64ss_decimate_by_
-#define _di_f_uint64ss_decrease_by_
-#define _di_f_uint64ss_increase_
-#define _di_f_uint64ss_increase_by_
-#define _di_f_uint64ss_resize_
-#define _di_f_uint64ss_t_
-#define _di_f_uint64s_t_
-#define _di_f_uint8s_adjust_
-#define _di_f_uint8s_append_
-#define _di_f_uint8s_append_all_
-#define _di_f_uint8s_decimate_by_
-#define _di_f_uint8s_decrease_by_
-#define _di_f_uint8s_increase_
-#define _di_f_uint8s_increase_by_
-#define _di_f_uint8s_resize_
-#define _di_f_uint8ss_adjust_
-#define _di_f_uint8ss_append_
-#define _di_f_uint8ss_append_all_
-#define _di_f_uint8ss_decimate_by_
-#define _di_f_uint8ss_decrease_by_
-#define _di_f_uint8ss_increase_
-#define _di_f_uint8ss_increase_by_
-#define _di_f_uint8ss_resize_
-#define _di_f_uint8ss_t_
-#define _di_f_uint8s_t_
+#define _di_f_cellss_delete_callback_
+#define _di_f_cellss_destroy_callback_
+#define _di_f_filess_delete_callback_
+#define _di_f_filess_destroy_callback_
+#define _di_f_fll_ids_delete_callback_
+#define _di_f_fll_ids_destroy_callback_
+#define _di_f_fll_idss_delete_callback_
+#define _di_f_fll_idss_destroy_callback_
+#define _di_f_int128ss_delete_callback_
+#define _di_f_int128ss_destroy_callback_
+#define _di_f_int16ss_delete_callback_
+#define _di_f_int16ss_destroy_callback_
+#define _di_f_int32ss_delete_callback_
+#define _di_f_int32ss_destroy_callback_
+#define _di_f_int64ss_delete_callback_
+#define _di_f_int64ss_destroy_callback_
+#define _di_f_int8ss_delete_callback_
+#define _di_f_int8ss_destroy_callback_
+#define _di_f_number_signedss_delete_callback_
+#define _di_f_number_signedss_destroy_callback_
+#define _di_f_number_unsignedss_delete_callback_
+#define _di_f_number_unsignedss_destroy_callback_
+#define _di_f_pollss_delete_callback_
+#define _di_f_pollss_destroy_callback_
+#define _di_f_statess_delete_callback_
+#define _di_f_statess_destroy_callback_
+#define _di_f_statusss_delete_callback_
+#define _di_f_statusss_destroy_callback_
+#define _di_f_uint128ss_delete_callback_
+#define _di_f_uint128ss_destroy_callback_
+#define _di_f_uint16ss_delete_callback_
+#define _di_f_uint16ss_destroy_callback_
+#define _di_f_uint32ss_delete_callback_
+#define _di_f_uint32ss_destroy_callback_
+#define _di_f_uint64ss_delete_callback_
+#define _di_f_uint64ss_destroy_callback_
+#define _di_f_uint8ss_delete_callback_
+#define _di_f_uint8ss_destroy_callback_
#define _di_f_utf_string_append_assure_
#define _di_f_utf_string_append_assure_nulless_
#define _di_f_utf_string_append_nulless_
-#define _di_f_utf_string_dynamic_adjust_
#define _di_f_utf_string_dynamic_append_
#define _di_f_utf_string_dynamic_append_assure_
#define _di_f_utf_string_dynamic_append_assure_nulless_
#define _di_f_utf_string_dynamic_append_nulless_
-#define _di_f_utf_string_dynamic_decimate_by_
-#define _di_f_utf_string_dynamic_decrease_by_
-#define _di_f_utf_string_dynamic_increase_
-#define _di_f_utf_string_dynamic_increase_by_
#define _di_f_utf_string_dynamic_mash_
#define _di_f_utf_string_dynamic_mash_nulless_
#define _di_f_utf_string_dynamic_mish_
#define _di_f_utf_string_dynamic_prepend_assure_
#define _di_f_utf_string_dynamic_prepend_assure_nulless_
#define _di_f_utf_string_dynamic_prepend_nulless_
-#define _di_f_utf_string_dynamic_resize_
-#define _di_f_utf_string_dynamics_adjust_
#define _di_f_utf_string_dynamics_append_
#define _di_f_utf_string_dynamics_append_all_
-#define _di_f_utf_string_dynamics_decimate_by_
-#define _di_f_utf_string_dynamics_decrease_by_
+#define _di_f_utf_string_dynamics_delete_callback_
+#define _di_f_utf_string_dynamics_destroy_callback_
#define _di_f_utf_string_dynamic_seek_line_
#define _di_f_utf_string_dynamic_seek_line_to_
#define _di_f_utf_string_dynamic_seek_to_
-#define _di_f_utf_string_dynamics_increase_
-#define _di_f_utf_string_dynamics_increase_by_
-#define _di_f_utf_string_dynamics_resize_
-#define _di_f_utf_string_dynamicss_adjust_
#define _di_f_utf_string_dynamicss_append_
#define _di_f_utf_string_dynamicss_append_all_
-#define _di_f_utf_string_dynamicss_decimate_by_
-#define _di_f_utf_string_dynamicss_decrease_by_
-#define _di_f_utf_string_dynamicss_increase_
-#define _di_f_utf_string_dynamicss_increase_by_
-#define _di_f_utf_string_dynamicss_resize_
+#define _di_f_utf_string_dynamicss_delete_callback_
+#define _di_f_utf_string_dynamicss_destroy_callback_
#define _di_f_utf_string_dynamicss_t_
#define _di_f_utf_string_dynamics_t_
#define _di_f_utf_string_dynamic_t_
#define _di_f_utf_string_dynamic_terminate_
#define _di_f_utf_string_dynamic_terminate_after_
#define _di_f_utf_string_empty_s_
-#define _di_f_utf_string_map_multis_adjust_
#define _di_f_utf_string_map_multis_append_
#define _di_f_utf_string_map_multis_append_all_
-#define _di_f_utf_string_map_multis_decimate_by_
-#define _di_f_utf_string_map_multis_decrease_by_
-#define _di_f_utf_string_map_multis_increase_
-#define _di_f_utf_string_map_multis_increase_by_
-#define _di_f_utf_string_map_multis_resize_
-#define _di_f_utf_string_map_multiss_adjust_
+#define _di_f_utf_string_map_multis_delete_callback_
+#define _di_f_utf_string_map_multis_destroy_callback_
#define _di_f_utf_string_map_multiss_append_
#define _di_f_utf_string_map_multiss_append_all_
-#define _di_f_utf_string_map_multiss_decimate_by_
-#define _di_f_utf_string_map_multiss_decrease_by_
-#define _di_f_utf_string_map_multiss_increase_
-#define _di_f_utf_string_map_multiss_increase_by_
-#define _di_f_utf_string_map_multiss_resize_
+#define _di_f_utf_string_map_multiss_delete_callback_
+#define _di_f_utf_string_map_multiss_destroy_callback_
#define _di_f_utf_string_map_multiss_t_
#define _di_f_utf_string_map_multis_t_
#define _di_f_utf_string_map_multi_t_
-#define _di_f_utf_string_maps_adjust_
#define _di_f_utf_string_maps_append_
#define _di_f_utf_string_maps_append_all_
-#define _di_f_utf_string_maps_decimate_by_
-#define _di_f_utf_string_maps_decrease_by_
-#define _di_f_utf_string_maps_increase_
-#define _di_f_utf_string_maps_increase_by_
-#define _di_f_utf_string_maps_resize_
-#define _di_f_utf_string_mapss_adjust_
+#define _di_f_utf_string_maps_delete_callback_
+#define _di_f_utf_string_maps_destroy_callback_
#define _di_f_utf_string_mapss_append_
#define _di_f_utf_string_mapss_append_all_
-#define _di_f_utf_string_mapss_decimate_by_
-#define _di_f_utf_string_mapss_decrease_by_
-#define _di_f_utf_string_mapss_increase_
-#define _di_f_utf_string_mapss_increase_by_
-#define _di_f_utf_string_mapss_resize_
+#define _di_f_utf_string_mapss_delete_callback_
+#define _di_f_utf_string_mapss_destroy_callback_
#define _di_f_utf_string_mapss_t_
#define _di_f_utf_string_maps_t_
#define _di_f_utf_string_map_t_
#define _di_f_utf_string_statics_t_
#define _di_f_utf_string_static_t_
#define _di_f_utf_string_t_
-#define _di_f_utf_string_triples_adjust_
#define _di_f_utf_string_triples_append_
#define _di_f_utf_string_triples_append_all_
-#define _di_f_utf_string_triples_decimate_by_
-#define _di_f_utf_string_triples_decrease_by_
-#define _di_f_utf_string_triples_increase_
-#define _di_f_utf_string_triples_increase_by_
-#define _di_f_utf_string_triples_resize_
-#define _di_f_utf_string_tripless_adjust_
+#define _di_f_utf_string_triples_delete_callback_
+#define _di_f_utf_string_triples_destroy_callback_
#define _di_f_utf_string_tripless_append_
#define _di_f_utf_string_tripless_append_all_
-#define _di_f_utf_string_tripless_decimate_by_
-#define _di_f_utf_string_tripless_decrease_by_
-#define _di_f_utf_string_tripless_increase_
-#define _di_f_utf_string_tripless_increase_by_
-#define _di_f_utf_string_tripless_resize_
+#define _di_f_utf_string_tripless_delete_callback_
+#define _di_f_utf_string_tripless_destroy_callback_
#define _di_f_utf_string_tripless_t_
#define _di_f_utf_string_triples_t_
#define _di_f_utf_string_triple_t_
+#define _di_f_fss_payload_header_write_d_
+#define _di_f_fss_payload_header_write_internal_t_
+#define _di_f_fss_payload_header_write_state_t_
#define _di_fl_fss_basic_content_read_
#define _di_fl_fss_basic_content_write_
#define _di_fl_fss_basic_list_content_read_
#define _di_fl_fss_extended_list_object_write_
#define _di_fl_fss_extended_object_read_
#define _di_fl_fss_extended_object_write_
+#define _di_fl_fss_payload_header_map_
+#define _di_fl_fss_payload_header_write_
#define _di_fl_status_string_from_
-#define _di_f_status_access_s_
-#define _di_f_status_array_s_
-#define _di_f_status_available_s_
-#define _di_f_status_basic_s_
-#define _di_f_status_boolean_s_
-#define _di_f_status_buffer_s_
-#define _di_f_status_busy_s_
-#define _di_f_status_compare_s_
-#define _di_f_status_directory_s_
-#define _di_f_status_end_s_
#define _di_f_status_file_s_
-#define _di_f_status_filesystem_s_
-#define _di_f_status_network_s_
-#define _di_f_status_number_s_
-#define _di_f_status_process_s_
-#define _di_f_status_return_s_
-#define _di_f_status_signal_s_
-#define _di_f_status_socket_s_
-#define _di_f_status_terminal_s_
#define _di_fll_program_parameter_filename_s_
#define _di_fll_program_parameter_filenames_s_
#define _di_fll_program_parameter_process_context_
+#define _di_fll_program_parameter_process_context_standard_
#define _di_fll_program_parameter_process_empty_
#define _di_fll_program_parameter_process_verbosity_
+#define _di_fll_program_parameter_process_verbosity_standard_
#define _di_fll_program_parameter_s_
#define _di_fll_program_print_copyright_
#define _di_fll_program_print_error_missing_file_
build_sources_library string/map_multi.c string/map_multis.c string/map_multiss.c
build_sources_library string/quantity.c string/quantitys.c string/quantityss.c
build_sources_library string/range.c string/ranges.c string/rangess.c
+build_sources_library string/range_double.c string/range_doubles.c string/range_doubless.c
build_sources_library string/static.c string/statics.c string/staticss.c
build_sources_library string/triple.c string/triples.c string/tripless.c
build_sources_library time.c
build_sources_headers string/map_multi.h string/map_multis.h string/map_multiss.h
build_sources_headers string/quantity.h string/quantitys.h string/quantityss.h
build_sources_headers string/range.h string/ranges.h string/rangess.h
+build_sources_headers string/range_double.h string/range_doubles.h string/range_doubless.h
build_sources_headers string/static.h string/statics.h string/staticss.h
build_sources_headers string/triple.h string/triples.h string/tripless.h
build_sources_headers time.h
build_sources_library level_0/string/map_multi.c level_0/string/map_multis.c level_0/string/map_multiss.c
build_sources_library level_0/string/quantity.c level_0/string/quantitys.c level_0/string/quantityss.c
build_sources_library level_0/string/range.c level_0/string/ranges.c level_0/string/rangess.c
+build_sources_library level_0/string/range_double.c level_0/string/range_doubles.c level_0/string/range_doubless.c
build_sources_library level_0/string/static.c level_0/string/statics.c level_0/string/staticss.c
build_sources_library level_0/string/triple.c level_0/string/triples.c level_0/string/tripless.c
build_sources_library level_0/time.c
build_sources_headers level_0/string/map_multi.h level_0/string/map_multis.h level_0/string/map_multiss.h
build_sources_headers level_0/string/quantity.h level_0/string/quantitys.h level_0/string/quantityss.h
build_sources_headers level_0/string/range.h level_0/string/ranges.h level_0/string/rangess.h
+build_sources_headers level_0/string/range_double.h level_0/string/range_doubles.h level_0/string/range_doubless.h
build_sources_headers level_0/string/static.h level_0/string/statics.h level_0/string/staticss.h
build_sources_headers level_0/string/triple.h level_0/string/triples.h level_0/string/tripless.h
build_sources_headers level_0/time.h
#define _di_f_fss_nestss_t_
#define _di_f_fss_nests_t_
#define _di_f_fss_nest_t_
+#define _di_f_fss_payload_comment_header_begin_s_
+#define _di_f_fss_payload_comment_header_end_s_
#define _di_f_fss_payload_comment_header_s_
+#define _di_f_fss_payload_header_map_e_
+#define _di_f_fss_payload_object_end_s_
#define _di_f_fss_payload_object_header_s_
+#define _di_f_fss_payload_object_id_s_
+#define _di_f_fss_payload_object_length_s_
+#define _di_f_fss_payload_object_name_s_
+#define _di_f_fss_payload_object_part_s_
#define _di_f_fss_payload_object_payload_s_
#define _di_f_fss_payload_object_signature_s_
+#define _di_f_fss_payload_object_size_s_
+#define _di_f_fss_payload_object_status_s_
+#define _di_f_fss_payload_object_total_s_
+#define _di_f_fss_payload_object_type_s_
#define _di_f_fss_payload_s_
-#define _di_f_fss_payload_write_e_
//#define _di_f_fss_placeholder_s_
//#define _di_f_fss_quote_type_e_
#define _di_f_fss_s_
#define _di_fl_fss_extended_list_object_write_
//#define _di_fl_fss_extended_object_read_
#define _di_fl_fss_extended_object_write_
+#define _di_fl_fss_payload_header_map_
#define _di_fl_fss_payload_header_write_
//#define _di_fl_iki_read_
//#define _di_f_limit_process_
#define _di_f_string_quantityss_t_
#define _di_f_string_quantitys_t_
#define _di_f_string_quantity_t_
+#define _di_f_string_range_double_empty_c_
+#define _di_f_string_range_doubles_append_
+#define _di_f_string_range_doubles_append_all_
+#define _di_f_string_range_doubless_append_
+#define _di_f_string_range_doubless_append_all_
+#define _di_f_string_range_doubless_delete_callback_
+#define _di_f_string_range_doubless_destroy_callback_
+#define _di_f_string_range_doubless_t_
+#define _di_f_string_range_doubles_t_
+#define _di_f_string_range_double_t_
#define _di_f_string_range_empty_c_
#define _di_f_string_ranges_append_
#define _di_f_string_ranges_append_all_
#include <fll/level_0/string/range.h>
#include <fll/level_0/string/ranges.h>
#include <fll/level_0/string/rangess.h>
+#include <fll/level_0/string/range_double.h>
+#include <fll/level_0/string/range_doubles.h>
+#include <fll/level_0/string/range_doubless.h>
#include <fll/level_0/string/static.h>
#include <fll/level_0/string/statics.h>
#include <fll/level_0/string/staticss.h>
--- /dev/null
+#include "../string.h"
+#include "../private-string.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _di_f_string_range_double_empty_c_
+ const f_string_range_double_t f_string_range_double_empty_c = { 1, 0 };
+#endif // _di_f_string_range_double_empty_c_
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
--- /dev/null
+/**
+ * FLL - Level 0
+ *
+ * Project: String
+ * API Version: 0.7
+ * Licenses: lgpl-2.1-or-later
+ *
+ * Defines range string data.
+ *
+ * This is auto-included by string.h and should not need to be explicitly included.
+ */
+#ifndef _F_string_range_double_h
+#define _F_string_range_double_h
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * A structure designating two start and stop ranges for some string(s).
+ *
+ * In general, this project uses the start and stop position inclusively, meaning that a range of 0 to 1 would include positions 0 and position 1.
+ * Therefore, a range from 0 to 0 would be include position 0.
+ * Set start to some value larger than stop to designate that there is no range (such as start = 1, stop = 0).
+ *
+ * Properties:
+ * - start_1: The first start position.
+ * - stop_1: The first stop position.
+ * - start_2: The second start position.
+ * - stop_2: The second stop position.
+ */
+#ifndef _di_f_string_range_double_t_
+ typedef struct {
+ f_number_unsigned_t start_1;
+ f_number_unsigned_t stop_1;
+ f_number_unsigned_t start_2;
+ f_number_unsigned_t stop_2;
+ } f_string_range_double_t;
+
+ #define f_string_range_double_t_initialize { 1, 0, 1, 0 }
+
+ #define macro_f_string_range_double_t_initialize_1(start_1, stop_1, start_2, stop_2) { start_1, stop_1, start_2, stop_2 }
+ #define macro_f_string_range_double_t_initialize_2(length_1, length_2) { length_1 ? 0 : 1, length_1 ? length_1 - 1 : 0, length_2 ? 0 : 1, length_2 ? length_2 - 1 : 0 }
+
+ #define macro_f_string_range_double_t_clear(range_1, range_2) \
+ range_1.start = 1; \
+ range_1.stop = 0 \
+ range_2.start = 1; \
+ range_2.stop = 0;
+#endif // _di_f_string_range_double_t_
+
+/**
+ * Provide a static empty range.
+ *
+ * This is intended to represent an empty or disabled range.
+ */
+#ifndef _di_f_string_range_double_empty_c_
+ extern const f_string_range_double_t f_string_range_double_empty_c;
+#endif // _di_f_string_range_double_empty_c_
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
+#endif // _F_string_range_double_h
--- /dev/null
+#include "../string.h"
+#include "../private-string.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _di_f_string_range_doubles_append_
+ f_status_t f_string_range_doubles_append(const f_string_range_double_t source, f_string_range_doubles_t * const destination) {
+ #ifndef _di_level_0_parameter_checking_
+ if (!destination) return F_status_set_error(F_parameter);
+ #endif // _di_level_0_parameter_checking_
+
+ {
+ const f_status_t status = f_memory_array_increase(F_memory_default_allocation_small_d, sizeof(f_string_range_double_t), (void **) &destination->array, &destination->used, &destination->size);
+ if (F_status_is_error(status)) return status;
+ }
+
+ destination->array[destination->used].start_1 = source.start_1;
+ destination->array[destination->used].stop_1 = source.stop_1;
+ destination->array[destination->used].start_2 = source.start_2;
+ destination->array[destination->used++].stop_2 = source.stop_2;
+
+ return F_okay;
+ }
+#endif // _di_f_string_range_doubles_append_
+
+#ifndef _di_f_string_range_doubles_append_all_
+ f_status_t f_string_range_doubles_append_all(const f_string_range_doubles_t source, f_string_range_doubles_t * const destination) {
+ #ifndef _di_level_0_parameter_checking_
+ if (!destination) return F_status_set_error(F_parameter);
+ #endif // _di_level_0_parameter_checking_
+
+ if (!source.used) return F_data_not;
+
+ {
+ const f_status_t status = f_memory_array_increase_by(source.used, sizeof(f_string_range_double_t), (void **) &destination->array, &destination->used, &destination->size);
+ if (F_status_is_error(status)) return status;
+ }
+
+ for (f_number_unsigned_t i = 0; i < source.used; ++i) {
+
+ destination->array[destination->used].start_1 = source.array[i].start_1;
+ destination->array[destination->used].stop_1 = source.array[i].stop_1;
+ destination->array[destination->used].start_2 = source.array[i].start_2;
+ destination->array[destination->used++].stop_2 = source.array[i].stop_2;
+ } // for
+
+ return F_okay;
+ }
+#endif // _di_f_string_range_doubles_append_all_
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
--- /dev/null
+/**
+ * FLL - Level 0
+ *
+ * Project: String
+ * API Version: 0.7
+ * Licenses: lgpl-2.1-or-later
+ *
+ * Defines range string data.
+ *
+ * This is auto-included by string.h and should not need to be explicitly included.
+ */
+#ifndef _F_string_range_doubles_h
+#define _F_string_range_doubles_h
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * An array of string ranges.
+ *
+ * Properties:
+ * - array: The array of string ranges.
+ * - size: Total amount of allocated space.
+ * - used: Total number of allocated spaces used.
+ */
+#ifndef _di_f_string_range_doubles_t_
+ typedef struct {
+ f_string_range_double_t *array;
+
+ f_number_unsigned_t size;
+ f_number_unsigned_t used;
+ } f_string_range_doubles_t;
+
+ #define f_string_range_doubles_t_initialize { 0, 0, 0 }
+
+ #define macro_f_string_range_doubles_t_initialize_1(array, size, used) { array, size, used }
+ #define macro_f_string_range_doubles_t_initialize_2(array, length) { array, length, length }
+
+ #define macro_f_string_range_doubles_t_clear(ranges) \
+ ranges.array = 0; \
+ ranges.size = 0; \
+ ranges.used = 0;
+#endif // _di_f_string_range_doubles_t_
+
+/**
+ * Append the single source range onto the destination.
+ *
+ * @param source
+ * The source range to append.
+ * @param destination
+ * The destination ranges the source is appended onto.
+ *
+ * @return
+ * F_okay on success.
+ * F_data_not on success, but there is nothing to append (size == 0).
+ *
+ * F_parameter (with error bit) if a parameter is invalid.
+ *
+ * Errors (with error bit) from: f_memory_resize().
+ */
+#ifndef _di_f_string_range_doubles_append_
+ extern f_status_t f_string_range_doubles_append(const f_string_range_double_t source, f_string_range_doubles_t * const destination);
+#endif // _di_f_string_range_doubles_append_
+
+/**
+ * Append the source ranges onto the destination.
+ *
+ * @param source
+ * The source ranges to append.
+ * @param destination
+ * The destination ranges the source is appended onto.
+ *
+ * @return
+ * F_okay on success.
+ * F_data_not on success, but there is nothing to append (size == 0).
+ *
+ * F_parameter (with error bit) if a parameter is invalid.
+ *
+ * Errors (with error bit) from: f_memory_resize().
+ */
+#ifndef _di_f_string_range_doubles_append_all_
+ extern f_status_t f_string_range_doubles_append_all(const f_string_range_doubles_t source, f_string_range_doubles_t * const destination);
+#endif // _di_f_string_range_doubles_append_all_
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
+#endif // _F_string_range_doubles_h
--- /dev/null
+#include "../string.h"
+#include "../private-string.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _di_f_string_range_doubless_append_
+ f_status_t f_string_range_doubless_append(const f_string_range_doubles_t source, f_string_range_doubless_t * const destination) {
+ #ifndef _di_level_0_parameter_checking_
+ if (!destination) return F_status_set_error(F_parameter);
+ #endif // _di_level_0_parameter_checking_
+
+ if (!source.used) return F_data_not;
+
+ {
+ f_status_t status = f_memory_array_increase(F_memory_default_allocation_small_d, sizeof(f_string_range_doubles_t), (void **) &destination->array, &destination->used, &destination->size);
+ if (F_status_is_error(status)) return status;
+
+ f_string_range_doubles_t * const destination_inner = &destination->array[destination->used];
+ destination_inner->used = 0;
+
+ if (source.used) {
+ status = f_memory_array_increase_by(source.used, sizeof(f_string_range_double_t), (void **) &destination_inner->array, &destination_inner->used, &destination_inner->size);
+ if (F_status_is_error(status)) return status;
+
+ for (f_number_unsigned_t i = 0; i < source.used; ++i, ++destination_inner->used) {
+
+ destination_inner->array[destination_inner->used].start_1 = source.array[i].start_1;
+ destination_inner->array[destination_inner->used].stop_1 = source.array[i].stop_1;
+ destination_inner->array[destination_inner->used].start_2 = source.array[i].start_2;
+ destination_inner->array[destination_inner->used].stop_2 = source.array[i].stop_2;
+ } // for
+ }
+ }
+
+ ++destination->used;
+
+ return F_okay;
+ }
+#endif // _di_f_string_range_doubless_append_
+
+#ifndef _di_f_string_range_doubless_append_all_
+ f_status_t f_string_range_doubless_append_all(const f_string_range_doubless_t source, f_string_range_doubless_t * const destination) {
+ #ifndef _di_level_0_parameter_checking_
+ if (!destination) return F_status_set_error(F_parameter);
+ #endif // _di_level_0_parameter_checking_
+
+ if (!source.used) return F_data_not;
+
+ {
+ f_status_t status = f_memory_array_increase_by(source.used, sizeof(f_string_range_doubles_t), (void **) &destination->array, &destination->used, &destination->size);
+ if (F_status_is_error(status)) return status;
+
+ f_string_range_doubles_t * destination_inner = 0;
+ f_number_unsigned_t j = 0;
+
+ for (f_number_unsigned_t i = 0; i < source.used; ++i, ++destination->used) {
+
+ destination_inner = &destination->array[destination->used];
+ destination_inner->used = 0;
+
+ if (source.array[i].used) {
+ status = f_memory_array_increase_by(source.array[i].used, sizeof(f_string_range_double_t), (void **) &destination->array[destination->used].array, &destination->array[destination->used].used, &destination->array[destination->used].size);
+ if (F_status_is_error(status)) return status;
+
+ for (j = 0; j < source.array[i].used; ++j, ++destination_inner->used) {
+
+ destination_inner->array[destination_inner->used].start_1 = source.array[i].array[j].start_1;
+ destination_inner->array[destination_inner->used].stop_1 = source.array[i].array[j].stop_1;
+ destination_inner->array[destination_inner->used].start_2 = source.array[i].array[j].start_2;
+ destination_inner->array[destination_inner->used].stop_2 = source.array[i].array[j].stop_2;
+ } // for
+ }
+ } // for
+ }
+
+ return F_okay;
+ }
+#endif // _di_f_string_range_doubless_append_all_
+
+#ifndef _di_f_string_range_doubless_delete_callback_
+ f_status_t f_string_range_doubless_delete_callback(const f_number_unsigned_t start, const f_number_unsigned_t stop, void * const void_array) {
+
+ {
+ f_string_range_doubles_t * const array = (f_string_range_doubles_t *) void_array;
+ f_status_t status = F_okay;
+
+ for (f_number_unsigned_t i = start; i < stop; ++i) {
+
+ if (array[i].size && array[i].array) {
+ status = f_memory_array_resize(0, sizeof(f_string_range_double_t), (void **) &array[i].array, &array[i].used, &array[i].size);
+ if (F_status_is_error(status)) return status;
+ }
+ } // for
+ }
+
+ return F_okay;
+ }
+#endif // _di_f_string_range_doubless_delete_callback_
+
+#ifndef _di_f_string_range_doubless_destroy_callback_
+ f_status_t f_string_range_doubless_destroy_callback(const f_number_unsigned_t start, const f_number_unsigned_t stop, void * const void_array) {
+
+ {
+ f_string_range_doubles_t * const array = (f_string_range_doubles_t *) void_array;
+ f_status_t status = F_okay;
+
+ for (f_number_unsigned_t i = start; i < stop; ++i) {
+
+ if (array[i].size && array[i].array) {
+ status = f_memory_array_adjust(0, sizeof(f_string_range_double_t), (void **) &array[i].array, &array[i].used, &array[i].size);
+ if (F_status_is_error(status)) return status;
+ }
+ } // for
+ }
+
+ return F_okay;
+ }
+#endif // _di_f_string_range_doubless_destroy_callback_
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
--- /dev/null
+/**
+ * FLL - Level 0
+ *
+ * Project: String
+ * API Version: 0.7
+ * Licenses: lgpl-2.1-or-later
+ *
+ * Defines range string data.
+ *
+ * This is auto-included by string.h and should not need to be explicitly included.
+ */
+#ifndef _F_string_range_doubless_h
+#define _F_string_range_doubless_h
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * This holds an array of f_string_range_doubles_t.
+ *
+ * Properties:
+ * - array: The array of ranges arrays.
+ * - size: Total amount of allocated space.
+ * - used: Total number of allocated spaces used.
+ */
+#ifndef _di_f_string_range_doubless_t_
+ typedef struct {
+ f_string_range_doubles_t *array;
+
+ f_number_unsigned_t size;
+ f_number_unsigned_t used;
+ } f_string_range_doubless_t;
+
+ #define f_string_range_doubless_t_initialize { 0, 0, 0 }
+
+ #define macro_f_string_range_doubless_t_initialize_1(array, size, used) { array, size, used }
+ #define macro_f_string_range_doubless_t_initialize_2(array, length) { array, length, length }
+
+ #define macro_f_string_range_doubless_t_clear(rangess) \
+ rangess.array = 0; \
+ rangess.size = 0; \
+ rangess.used = 0;
+#endif // _di_f_string_range_doubless_t_
+
+/**
+ * Append the single source ranges onto the destination.
+ *
+ * @param source
+ * The source ranges to append.
+ * @param destination
+ * The destination rangess the source is appended onto.
+ *
+ * @return
+ * F_okay on success.
+ * F_data_not on success, but there is nothing to append (size == 0).
+ *
+ * F_parameter (with error bit) if a parameter is invalid.
+ *
+ * Errors (with error bit) from: f_memory_resize().
+ */
+#ifndef _di_f_string_range_doubless_append_
+ extern f_status_t f_string_range_doubless_append(const f_string_range_doubles_t source, f_string_range_doubless_t * const destination);
+#endif // _di_f_string_range_doubless_append_
+
+/**
+ * Append the source rangess onto the destination.
+ *
+ * @param source
+ * The source rangess to append.
+ * @param destination
+ * The destination rangess the source is appended onto.
+ *
+ * @return
+ * F_okay on success.
+ * F_data_not on success, but there is nothing to append (size == 0).
+ *
+ * F_parameter (with error bit) if a parameter is invalid.
+ *
+ * Errors (with error bit) from: f_memory_resize().
+ */
+#ifndef _di_f_string_range_doubless_append_all_
+ extern f_status_t f_string_range_doubless_append_all(const f_string_range_doubless_t source, f_string_range_doubless_t * const destination);
+#endif // _di_f_string_range_doubless_append_all_
+
+/**
+ * A callback intended to be passed to f_memory_arrayss_resize() for an f_string_range_doubless_t structure.
+ *
+ * This is only called when shrinking the array and generally should perform deallocations.
+ *
+ * This does not do parameter checking.
+ *
+ * @param start
+ * The inclusive start position in the array to start deleting.
+ * @param stop
+ * The exclusive stop position in the array to stop deleting.
+ * @param array
+ * The array structure to delete all values of.
+ * Must not be NULL.
+ *
+ * @return
+ * F_okay on success.
+ *
+ * F_parameter (with error bit) if a parameter is invalid.
+ *
+ * Errors (with error bit) from: f_memory_array_resize().
+ *
+ * @see f_memory_array_resize()
+ */
+#ifndef _di_f_string_range_doubless_delete_callback_
+ extern f_status_t f_string_range_doubless_delete_callback(const f_number_unsigned_t start, const f_number_unsigned_t stop, void * const array);
+#endif // _di_f_string_range_doubless_delete_callback_
+
+/**
+ * A callback intended to be passed to f_memory_arrayss_adjust() for an f_string_range_doubless_t structure.
+ *
+ * This is only called when shrinking the array and generally should perform deallocations.
+ *
+ * This does not do parameter checking.
+ *
+ * @param start
+ * The inclusive start position in the array to start deleting.
+ * @param stop
+ * The exclusive stop position in the array to stop deleting.
+ * @param array
+ * The array structure to delete all values of.
+ * Must not be NULL.
+ *
+ * @return
+ * F_okay on success.
+ *
+ * F_parameter (with error bit) if a parameter is invalid.
+ *
+ * Errors (with error bit) from: f_memory_array_adjust().
+ *
+ * @see f_memory_array_adjust()
+ */
+#ifndef _di_f_string_range_doubless_destroy_callback_
+ extern f_status_t f_string_range_doubless_destroy_callback(const f_number_unsigned_t start, const f_number_unsigned_t stop, void * const array);
+#endif // _di_f_string_range_doubless_destroy_callback_
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
+#endif // _F_string_range_doubless_h
build_sources_library string/map_multi.c string/map_multis.c string/map_multiss.c
build_sources_library string/quantity.c string/quantitys.c string/quantityss.c
build_sources_library string/range.c string/ranges.c string/rangess.c
+build_sources_library string/range_double.c string/range_doubles.c string/range_doubless.c
build_sources_library string/static.c string/statics.c string/staticss.c
build_sources_library string/triple.c string/triples.c string/tripless.c
build_sources_headers string/map_multi.h string/map_multis.h string/map_multiss.h
build_sources_headers string/quantity.h string/quantitys.h string/quantityss.h
build_sources_headers string/range.h string/ranges.h string/rangess.h
+build_sources_headers string/range_double.h string/range_double.h string/range_doubless.h
build_sources_headers string/static.h string/statics.h string/staticss.h
build_sources_headers string/triple.h string/triples.h string/tripless.h
build_sources_library string/map_multi.c string/map_multis.c string/map_multiss.c
build_sources_library string/quantity.c string/quantitys.c string/quantityss.c
build_sources_library string/range.c string/ranges.c string/rangess.c
+build_sources_library string/range_double.c string/range_doubles.c string/range_doubless.c
build_sources_library string/static.c string/statics.c string/staticss.c
build_sources_library string/triple.c string/triples.c string/tripless.c
build_sources_library ../../tests/unit/c/mock-string.c
build_sources_headers string/map_multi.h string/map_multis.h string/map_multiss.h
build_sources_headers string/quantity.h string/quantitys.h string/quantityss.h
build_sources_headers string/range.h string/ranges.h string/rangess.h
+build_sources_headers string/range_double.h string/range_doubles.h string/range_doubless.h
build_sources_headers string/static.h string/statics.h string/staticss.h
build_sources_headers string/triple.h string/triples.h string/tripless.h
build_sources_program test-string-quantityss_delete_callback.c test-string-quantityss_destroy_callback.c
build_sources_program test-string-ranges_append.c test-string-ranges_append_all.c test-string-rangess_append.c test-string-rangess_append_all.c
build_sources_program test-string-rangess_delete_callback.c test-string-rangess_destroy_callback.c
+build_sources_program test-string-range_doubles_append.c test-string-range_doubles_append_all.c test-string-range_doubless_append.c test-string-range_doubless_append_all.c
+build_sources_program test-string-range_doubless_delete_callback.c test-string-range_doubless_destroy_callback.c
build_sources_program test-string-seek_line.c test-string-seek_line_to.c test-string-seek_to.c
build_sources_program test-string-triples_append.c test-string-triples_append_all.c test-string-tripless_append.c test-string-tripless_append_all.c
build_sources_program test-string-triples_delete_callback.c test-string-triples_destroy_callback.c
--- /dev/null
+#include "test-string.h"
+#include "test-string-range_doubles_append.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void test__f_string_range_doubles_append__works(void **state) {
+
+ const f_string_range_double_t source = macro_f_string_range_double_t_initialize_1(1, 2);
+ f_string_range_doubles_t destination = f_string_range_doubles_t_initialize;
+
+ {
+ const f_status_t status = f_string_range_doubles_append(source, &destination);
+
+ assert_int_equal(status, F_okay);
+ assert_int_equal(destination.used, 1);
+ assert_int_equal(destination.array[0].start, source.start);
+ assert_int_equal(destination.array[0].stop, source.stop);
+ }
+
+ free((void *) destination.array);
+}
+
+void test__f_string_range_doubles_append__parameter_checking(void **state) {
+
+ const f_string_range_double_t data = f_string_range_double_t_initialize;
+
+ {
+ const f_status_t status = f_string_range_doubles_append(data, 0);
+
+ assert_int_equal(status, F_status_set_error(F_parameter));
+ }
+}
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
--- /dev/null
+/**
+ * FLL - Level 0
+ *
+ * Project: String
+ * API Version: 0.7
+ * Licenses: lgpl-2.1-or-later
+ *
+ * Test the array types in the type project.
+ */
+#ifndef _TEST__F_string_range_doubles_append_h
+#define _TEST__F_string_range_doubles_append_h
+
+/**
+ * Test that the function works.
+ *
+ * @see f_string_range_doubles_append()
+ */
+extern void test__f_string_range_doubles_append__works(void **state);
+
+/**
+ * Test that the function correctly fails on invalid parameter.
+ *
+ * @see f_string_range_doubles_append()
+ */
+extern void test__f_string_range_doubles_append__parameter_checking(void **state);
+
+#endif // _TEST__F_string_range_doubles_append_h
--- /dev/null
+#include "test-string.h"
+#include "test-string-range_doubles_append_all.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void test__f_string_range_doubles_append_all__works(void **state) {
+
+ const int length_sources = 2;
+
+ f_string_range_double_t sources_array[] = {
+ macro_f_string_range_double_t_initialize_1(1, 2),
+ macro_f_string_range_double_t_initialize_1(3, 4),
+ };
+
+ const f_string_range_doubles_t source = macro_f_string_range_doubles_t_initialize_1(sources_array, 0, length_sources);
+ f_string_range_doubles_t destination = f_string_range_doubles_t_initialize;
+
+ {
+ const f_status_t status = f_string_range_doubles_append_all(source, &destination);
+
+ assert_int_equal(status, F_okay);
+ assert_int_equal(destination.used, source.used);
+ assert_int_equal(destination.size, source.used);
+
+ for (f_number_unsigned_t i = 0; i < length_sources; ++i) {
+
+ assert_int_equal(destination.array[i].start, source.array[i].start);
+ assert_int_equal(destination.array[i].stop, source.array[i].stop);
+ } // for
+ }
+
+ free((void *) destination.array);
+}
+
+void test__f_string_range_doubles_append_all__returns_data_not(void **state) {
+
+ const int length = 5;
+ f_string_range_doubles_t source = f_string_range_doubles_t_initialize;
+ f_string_range_doubles_t destination = f_string_range_doubles_t_initialize;
+
+ {
+ const f_status_t status = f_memory_array_resize(length, sizeof(f_string_range_double_t), (void **) &source.array, &source.used, &source.size);
+
+ assert_int_equal(status, F_okay);
+ assert_int_equal(source.used, 0);
+ assert_int_equal(source.size, length);
+ }
+
+ {
+ const f_status_t status = f_string_range_doubles_append_all(source, &destination);
+
+ assert_int_equal(status, F_data_not);
+ assert_int_equal(destination.used, 0);
+ assert_int_equal(destination.size, 0);
+ assert_null(destination.array);
+ }
+
+ free((void *) source.array);
+}
+
+void test__f_string_range_doubles_append_all__parameter_checking(void **state) {
+
+ const f_string_range_doubles_t data = f_string_range_doubles_t_initialize;
+
+ {
+ const f_status_t status = f_string_range_doubles_append_all(data, 0);
+
+ assert_int_equal(status, F_status_set_error(F_parameter));
+ }
+}
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
--- /dev/null
+/**
+ * FLL - Level 0
+ *
+ * Project: String
+ * API Version: 0.7
+ * Licenses: lgpl-2.1-or-later
+ *
+ * Test the array types in the type project.
+ */
+#ifndef _TEST__F_string_range_doubles_append_all_h
+#define _TEST__F_string_range_doubles_append_all_h
+
+/**
+ * Test that the function works.
+ *
+ * @see f_string_range_doubles_append_all()
+ */
+extern void test__f_string_range_doubles_append_all__works(void **state);
+
+/**
+ * Test that the function returns F_data_not when asked to copy an empty structure.
+ *
+ * @see f_string_range_doubles_append_all()
+ */
+extern void test__f_string_range_doubles_append_all__returns_data_not(void **state);
+
+/**
+ * Test that the function correctly fails on invalid parameter.
+ *
+ * @see f_string_range_doubles_append_all()
+ */
+extern void test__f_string_range_doubles_append_all__parameter_checking(void **state);
+
+#endif // _TEST__F_string_range_doubles_append_all_h
--- /dev/null
+#include "test-string.h"
+#include "test-string-range_doubless_append.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void test__f_string_range_doubless_append__works(void **state) {
+
+ const int length_sources = 2;
+
+ f_string_range_double_t sources_array[] = {
+ macro_f_string_range_double_t_initialize_1(1, 2),
+ macro_f_string_range_double_t_initialize_1(3, 4),
+ };
+
+ const f_string_range_doubles_t source = macro_f_string_range_doubles_t_initialize_1(sources_array, 0, length_sources);
+ f_string_range_doubless_t destination = f_string_range_doubless_t_initialize;
+
+ {
+ const f_status_t status = f_string_range_doubless_append(source, &destination);
+
+ assert_int_equal(status, F_okay);
+ assert_int_equal(destination.array[0].used, length_sources);
+
+ for (f_number_unsigned_t i = 0; i < length_sources; ++i) {
+
+ assert_int_equal(destination.array[0].array[i].start, sources_array[i].start);
+ assert_int_equal(destination.array[0].array[i].stop, sources_array[i].stop);
+ } // for
+ }
+
+ free((void *) destination.array[0].array);
+ free((void *) destination.array);
+}
+
+void test__f_string_range_doubless_append__returns_data_not(void **state) {
+
+ const int length = 5;
+ f_string_range_doubles_t source = f_string_range_doubless_t_initialize;
+ f_string_range_doubless_t destination = f_string_range_doubless_t_initialize;
+
+ {
+ const f_status_t status = f_memory_arrays_resize(length, sizeof(f_string_range_doubles_t), (void **) &source.array, &source.used, &source.size, &f_string_range_doubless_delete_callback);
+
+ assert_int_equal(status, F_okay);
+ assert_int_equal(source.used, 0);
+ assert_int_equal(source.size, length);
+ }
+
+ {
+ const f_status_t status = f_string_range_doubless_append(source, &destination);
+
+ assert_int_equal(status, F_data_not);
+ assert_int_equal(destination.used, 0);
+ assert_int_equal(destination.size, 0);
+ assert_null(destination.array);
+ }
+
+ free((void *) source.array);
+}
+
+void test__f_string_range_doubless_append__parameter_checking(void **state) {
+
+ f_string_range_doubles_t data = f_string_range_doubles_t_initialize;
+
+ {
+ const f_status_t status = f_string_range_doubless_append(data, 0);
+
+ assert_int_equal(status, F_status_set_error(F_parameter));
+ }
+}
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
--- /dev/null
+/**
+ * FLL - Level 0
+ *
+ * Project: String
+ * API Version: 0.7
+ * Licenses: lgpl-2.1-or-later
+ *
+ * Test the array types in the type project.
+ */
+#ifndef _TEST__F_string_range_doubless_append_h
+#define _TEST__F_string_range_doubless_append_h
+
+/**
+ * Test that the function works.
+ *
+ * @see f_string_range_doubless_append()
+ */
+extern void test__f_string_range_doubless_append__works(void **state);
+
+/**
+ * Test that the function returns F_data_not when asked to copy an empty structure.
+ *
+ * @see f_string_range_doubless_append()
+ */
+extern void test__f_string_range_doubless_append__returns_data_not(void **state);
+
+/**
+ * Test that the function correctly fails on invalid parameter.
+ *
+ * @see f_string_range_doubless_append()
+ */
+extern void test__f_string_range_doubless_append__parameter_checking(void **state);
+
+#endif // _TEST__F_string_range_doubless_append_h
--- /dev/null
+#include "test-string.h"
+#include "test-string-range_doubless_append_all.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void test__f_string_range_doubless_append_all__works(void **state) {
+
+ const int length_sources = 2;
+ const int length_sources_set = 2;
+
+ f_string_range_double_t sources_array1[] = {
+ macro_f_string_range_double_t_initialize_1(1, 2),
+ macro_f_string_range_double_t_initialize_1(3, 4),
+ };
+
+ f_string_range_double_t sources_array2[] = {
+ macro_f_string_range_double_t_initialize_1(5, 6),
+ macro_f_string_range_double_t_initialize_1(7, 8),
+ };
+
+ f_string_range_doubles_t sources_set_array[] = {
+ macro_f_string_range_doubles_t_initialize_1(sources_array1, 0, length_sources),
+ macro_f_string_range_doubles_t_initialize_1(sources_array2, 0, length_sources),
+ };
+
+ const f_string_range_doubless_t source = macro_f_string_range_doubless_t_initialize_1(sources_set_array, 0, length_sources_set);
+ f_string_range_doubless_t destination = f_string_range_doubless_t_initialize;
+
+ {
+ const f_status_t status = f_string_range_doubless_append_all(source, &destination);
+
+ assert_int_equal(status, F_okay);
+ assert_int_equal(destination.used, source.used);
+
+ for (f_number_unsigned_t j = 0; j < length_sources_set; ++j) {
+
+ for (f_number_unsigned_t i = 0; i < length_sources; ++i) {
+
+ assert_int_equal(destination.array[j].array[i].start, sources_set_array[j].array[i].start);
+ assert_int_equal(destination.array[j].array[i].stop, sources_set_array[j].array[i].stop);
+ } // for
+ } // for
+ }
+
+ for (f_number_unsigned_t i = 0; i < destination.used; ++i) {
+ free((void *) destination.array[i].array);
+ } // for
+
+ free((void *) destination.array);
+}
+
+void test__f_string_range_doubless_append_all__returns_data_not(void **state) {
+
+ const int length = 5;
+ f_string_range_doubless_t source = f_string_range_doubless_t_initialize;
+ f_string_range_doubless_t destination = f_string_range_doubless_t_initialize;
+
+ {
+ const f_status_t status = f_memory_arrays_resize(length, sizeof(f_string_range_doubles_t), (void **) &source.array, &source.used, &source.size, &f_string_range_doubless_delete_callback);
+
+ assert_int_equal(status, F_okay);
+ assert_int_equal(source.used, 0);
+ assert_int_equal(source.size, length);
+ }
+
+ {
+ const f_status_t status = f_string_range_doubless_append_all(source, &destination);
+
+ assert_int_equal(status, F_data_not);
+ assert_int_equal(destination.used, 0);
+ assert_int_equal(destination.size, 0);
+ assert_null(destination.array);
+ }
+
+ free((void *) source.array);
+}
+
+void test__f_string_range_doubless_append_all__parameter_checking(void **state) {
+
+ const f_string_range_doubless_t data = f_string_range_doubless_t_initialize;
+
+ {
+ const f_status_t status = f_string_range_doubless_append_all(data, 0);
+
+ assert_int_equal(status, F_status_set_error(F_parameter));
+ }
+}
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
--- /dev/null
+/**
+ * FLL - Level 0
+ *
+ * Project: String
+ * API Version: 0.7
+ * Licenses: lgpl-2.1-or-later
+ *
+ * Test the array types in the type project.
+ */
+#ifndef _TEST__F_string_range_doubless_append_all_h
+#define _TEST__F_string_range_doubless_append_all_h
+
+/**
+ * Test that the function works.
+ *
+ * @see f_string_range_doubless_append_all()
+ */
+extern void test__f_string_range_doubless_append_all__works(void **state);
+
+/**
+ * Test that the function returns F_data_not when asked to copy an empty structure.
+ *
+ * @see f_string_range_doubless_append_all()
+ */
+extern void test__f_string_range_doubless_append_all__returns_data_not(void **state);
+
+/**
+ * Test that the function correctly fails on invalid parameter.
+ *
+ * @see f_string_range_doubless_append_all()
+ */
+extern void test__f_string_range_doubless_append_all__parameter_checking(void **state);
+
+#endif // _TEST__F_string_range_doubless_append_all_h
--- /dev/null
+#include "test-string.h"
+#include "test-string-range_doubless_delete_callback.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void test__f_string_range_doubless_delete_callback__fails(void **state) {
+
+ mock_unwrap = 0;
+ mock_unwrap_f_memory = 0;
+
+ f_string_range_double_t data = f_string_range_double_t_initialize;
+ f_string_range_double_t data_array[] = { data };
+ f_string_range_doubles_t datas = { .array = data_array, .used = 1, .size = 1 };
+ f_string_range_doubles_t datas_array[] = { datas };
+
+ {
+ will_return(__wrap_f_memory_array_resize, true);
+ will_return(__wrap_f_memory_array_resize, F_status_set_error(F_failure));
+
+ const f_status_t status = f_string_range_doubless_delete_callback(0, 1, (void *) datas_array);
+
+ assert_int_equal(status, F_status_set_error(F_failure));
+ }
+}
+
+void test__f_string_range_doubless_delete_callback__works(void **state) {
+
+ mock_unwrap = 0;
+ mock_unwrap_f_memory = 1;
+
+ const f_number_unsigned_t length = 1;
+
+ f_string_range_doubless_t datass = f_string_range_doubless_t_initialize;
+
+ {
+ f_status_t status = f_memory_array_resize(length, sizeof(f_string_range_doubles_t), (void **) &datass.array, &datass.used, &datass.size);
+ assert_int_equal(status, F_okay);
+
+ status = f_memory_array_resize(1, sizeof(f_string_range_double_t), (void **) &datass.array[0].array, &datass.array[0].used, &datass.array[0].size);
+ assert_int_equal(status, F_okay);
+ }
+
+ {
+ const f_status_t status = f_string_range_doubless_delete_callback(0, length, (void *) datass.array);
+
+ assert_int_equal(status, F_okay);
+ assert_int_equal(datass.array[0].size, 0);
+ }
+
+ free((void *) datass.array);
+}
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
--- /dev/null
+/**
+ * FLL - Level 0
+ *
+ * Project: String
+ * API Version: 0.7
+ * Licenses: lgpl-2.1-or-later
+ *
+ * Test the array types in the type project.
+ */
+#ifndef _TEST__F_string__range_doubless_delete_callback
+#define _TEST__F_string__range_doubless_delete_callback
+
+/**
+ * Test that the function fails.
+ *
+ * @see f_string_range_doubless_delete_callback()
+ */
+extern void test__f_string_range_doubless_delete_callback__fails(void **state);
+
+/**
+ * Test that the function works.
+ *
+ * @see f_string_range_doubless_delete_callback()
+ */
+extern void test__f_string_range_doubless_delete_callback__works(void **state);
+
+#endif // _TEST__F_string__range_doubless_delete_callback
--- /dev/null
+#include "test-string.h"
+#include "test-string-range_doubless_destroy_callback.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void test__f_string_range_doubless_destroy_callback__fails(void **state) {
+
+ mock_unwrap = 0;
+ mock_unwrap_f_memory = 0;
+
+ f_string_range_double_t data = f_string_range_double_t_initialize;
+ f_string_range_double_t data_array[] = { data };
+ f_string_range_doubles_t datas = { .array = data_array, .used = 1, .size = 1 };
+ f_string_range_doubles_t datas_array[] = { datas };
+
+ {
+ will_return(__wrap_f_memory_array_adjust, true);
+ will_return(__wrap_f_memory_array_adjust, F_status_set_error(F_failure));
+
+ const f_status_t status = f_string_range_doubless_destroy_callback(0, 1, (void *) datas_array);
+
+ assert_int_equal(status, F_status_set_error(F_failure));
+ }
+}
+
+void test__f_string_range_doubless_destroy_callback__works(void **state) {
+
+ mock_unwrap = 0;
+ mock_unwrap_f_memory = 1;
+
+ const f_number_unsigned_t length = 1;
+
+ f_string_range_doubless_t datass = f_string_range_doubless_t_initialize;
+
+ {
+ f_status_t status = f_memory_array_adjust(length, sizeof(f_string_range_doubles_t), (void **) &datass.array, &datass.used, &datass.size);
+ assert_int_equal(status, F_okay);
+
+ status = f_memory_array_adjust(1, sizeof(f_string_range_double_t), (void **) &datass.array[0].array, &datass.array[0].used, &datass.array[0].size);
+ assert_int_equal(status, F_okay);
+ }
+
+ {
+ const f_status_t status = f_string_range_doubless_destroy_callback(0, length, (void *) datass.array);
+
+ assert_int_equal(status, F_okay);
+ assert_int_equal(datass.array[0].size, 0);
+ }
+
+ free((void *) datass.array);
+}
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
--- /dev/null
+/**
+ * FLL - Level 0
+ *
+ * Project: String
+ * API Version: 0.7
+ * Licenses: lgpl-2.1-or-later
+ *
+ * Test the array types in the type project.
+ */
+#ifndef _TEST__F_string__range_doubless_destroy_callback
+#define _TEST__F_string__range_doubless_destroy_callback
+
+/**
+ * Test that the function fails.
+ *
+ * @see f_string_range_doubless_destroy_callback()
+ */
+extern void test__f_string_range_doubless_destroy_callback__fails(void **state);
+
+/**
+ * Test that the function works.
+ *
+ * @see f_string_range_doubless_destroy_callback()
+ */
+extern void test__f_string_range_doubless_destroy_callback__works(void **state);
+
+#endif // _TEST__F_string__range_doubless_destroy_callback