X-Git-Url: https://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fgl_linkedhash_list.c;h=2f4e05f3a7b9638485555fad8753b3ba7187186e;hb=974b76b72e84d226e4bdfd9ec6f7d955e3d2a199;hp=2114c437e411e9a3cc7b74bbfb9b1ddd70696395;hpb=57fdfd3f8ec62b105c53bcdf6f127c35c7fe7391;p=gnulib.git diff --git a/lib/gl_linkedhash_list.c b/lib/gl_linkedhash_list.c index 2114c437e..2f4e05f3a 100644 --- a/lib/gl_linkedhash_list.c +++ b/lib/gl_linkedhash_list.c @@ -1,5 +1,5 @@ /* Sequential list data type implemented by a hash table with a linked list. - Copyright (C) 2006 Free Software Foundation, Inc. + Copyright (C) 2006, 2008-2013 Free Software Foundation, Inc. Written by Bruno Haible , 2006. This program is free software: you can redistribute it and/or modify @@ -23,7 +23,6 @@ #include /* for SIZE_MAX */ #include -#include "xalloc.h" #include "xsize.h" #ifndef uintptr_t @@ -44,7 +43,7 @@ #include "gl_anyhash_list2.h" /* Resize the hash table if needed, after list->count was incremented. */ -static inline void +static void hash_resize_after_add (gl_list_t list) { size_t count = list->count; @@ -54,7 +53,7 @@ hash_resize_after_add (gl_list_t list) } /* Add a node to the hash table structure. */ -static inline void +static void add_to_bucket (gl_list_t list, gl_list_node_t node) { size_t bucket = node->h.hashcode % list->table_size; @@ -62,9 +61,11 @@ add_to_bucket (gl_list_t list, gl_list_node_t node) node->h.hash_next = list->table[bucket]; list->table[bucket] = &node->h; } +/* Tell all compilers that the return value is 0. */ +#define add_to_bucket(list,node) ((add_to_bucket) (list, node), 0) /* Remove a node from the hash table structure. */ -static inline void +static void remove_from_bucket (gl_list_t list, gl_list_node_t node) { size_t bucket = node->h.hashcode % list->table_size; @@ -73,14 +74,14 @@ remove_from_bucket (gl_list_t list, gl_list_node_t node) for (p = &list->table[bucket]; ; p = &(*p)->hash_next) { if (*p == &node->h) - { - *p = node->h.hash_next; - break; - } + { + *p = node->h.hash_next; + break; + } if (*p == NULL) - /* node is not in the right bucket. Did the hash codes - change inadvertently? */ - abort (); + /* node is not in the right bucket. Did the hash codes + change inadvertently? */ + abort (); } } @@ -90,21 +91,22 @@ remove_from_bucket (gl_list_t list, gl_list_node_t node) const struct gl_list_implementation gl_linkedhash_list_implementation = { - gl_linked_create_empty, - gl_linked_create, + gl_linked_nx_create_empty, + gl_linked_nx_create, gl_linked_size, gl_linked_node_value, + gl_linked_node_nx_set_value, gl_linked_next_node, gl_linked_previous_node, gl_linked_get_at, - gl_linked_set_at, + gl_linked_nx_set_at, gl_linked_search_from_to, gl_linked_indexof_from_to, - gl_linked_add_first, - gl_linked_add_last, - gl_linked_add_before, - gl_linked_add_after, - gl_linked_add_at, + gl_linked_nx_add_first, + gl_linked_nx_add_last, + gl_linked_nx_add_before, + gl_linked_nx_add_after, + gl_linked_nx_add_at, gl_linked_remove_node, gl_linked_remove_at, gl_linked_remove, @@ -117,6 +119,6 @@ const struct gl_list_implementation gl_linkedhash_list_implementation = gl_linked_sortedlist_search_from_to, gl_linked_sortedlist_indexof, gl_linked_sortedlist_indexof_from_to, - gl_linked_sortedlist_add, + gl_linked_sortedlist_nx_add, gl_linked_sortedlist_remove };