Hash map for identifiers in C

* tta/C/convert/html_prepare_converter.c
(set_root_commands_targets_node_files, ids_hashmap_predicted_values)
(html_set_pages_files), tta/C/main/get_perl_info.c
(find_element_from_sv), tta/C/main/targets.c
(identifiers_target_number),
tta/C/structuring_transfo/transformations.c (new_node): use a function
to return the number of identifiers_target elements.

* tta/C/main/hashmap.c, tta/C/main/tree_types.h (C_HASHMAP): move
C_HASHMAP type definition to tree_types.h to be able to put it
directly in structures.

* tta/C/main/hashmap.c (init_c_hashmap, new_c_hashmap): rename
init_c_hashmap as new_c_hashmap and readd init_c_hashmap with the code
that does the initialization only, not the allocation.

* tta/C/main/hashmap.c (c_hashmap_value): check hashmap count before
searching for the values, if there is nothing in the hash, there will
be a division by 0.

* tta/C/main/hashmap.c (BUCKET_ARENA_ITERATOR, c_hashmap_count)
(new_c_hashmap_iterator, next_c_hashmap_iterator_value): add.

* tta/C/main/targets.c (identifiers_target_number_h)
(identifiers_target_number_l)
(find_identifier_target_l, add_target_in_identifiers_target_h)
(add_target_in_identifiers_target_l)
(add_element_to_identifiers_target, find_identifier_target_h),
tta/C/parsetexi/labels.c (set_labels_identifiers_target_l)
(set_labels_identifiers_target_h), tta/C/main/build_perl_info.c
(build_identifiers_target_h, build_identifiers_target_l): add
implementations of functions setting and retrieving identifier_target
elements using hashmaps.  Postpend a _l to name of existing functions
implemented with sorted lists.

* tta/C/main/document.c (destroy_document_information_except_tree),
tta/C/main/document_types.h (DOCUMENT), tta/C/main/build_perl_info.c,
tta/C/main/targets.c, tta/C/main/targets.h, tta/C/parsetexi/labels.h,
tta/C/main/tree_types.h (USE_TARGET_IDENTIFIER_LIST)
(IDENTIFIER_TARGET): add the USE_TARGET_IDENTIFIER_LIST to switch
between hashmap and list implementations for identifier_target.  Also
add the IDENTIFIER_TARGET define to change the type of
identifier_target in DOCUMENT and functions prototypes depending on
the implementation used.
23 files changed