X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fgl_oset.c;h=40e507342e54b0c3098109a5d02691911f7c0c7c;hb=b4c2b236d0007a7f9226e6ccef82e9e37bdb2b3a;hp=bfe1c6d827d76e2794d6dbb4f1b488d37f0b6fb6;hpb=a7e6fe2b890c07cb428be7ff82d1267847a1efdf;p=gnulib.git diff --git a/lib/gl_oset.c b/lib/gl_oset.c index bfe1c6d82..40e507342 100644 --- a/lib/gl_oset.c +++ b/lib/gl_oset.c @@ -1,11 +1,11 @@ /* Abstract ordered set data type. - Copyright (C) 2006 Free Software Foundation, Inc. + Copyright (C) 2006-2007, 2009-2011 Free Software Foundation, Inc. Written by Bruno Haible , 2006. - This program is free software; you can redistribute it and/or modify + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -13,12 +13,9 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + along with this program. If not, see . */ -#ifdef HAVE_CONFIG_H -# include -#endif +#include /* Specification. */ #include "gl_oset.h" @@ -30,10 +27,12 @@ Use #define to avoid a warning because of extern vs. static. */ gl_oset_t -gl_oset_create_empty (gl_oset_implementation_t implementation, - gl_setelement_compar_fn compar_fn) +gl_oset_nx_create_empty (gl_oset_implementation_t implementation, + gl_setelement_compar_fn compar_fn, + gl_setelement_dispose_fn dispose_fn) { - return implementation->create_empty (implementation, compar_fn); + return implementation->nx_create_empty (implementation, compar_fn, + dispose_fn); } size_t @@ -48,16 +47,26 @@ gl_oset_search (gl_oset_t set, const void *elt) return ((const struct gl_oset_impl_base *) set)->vtable->search (set, elt); } -void -gl_oset_add (gl_oset_t set, const void *elt) +bool +gl_oset_search_atleast (gl_oset_t set, + gl_setelement_threshold_fn threshold_fn, + const void *threshold, const void **eltp) +{ + return ((const struct gl_oset_impl_base *) set)->vtable + ->search_atleast (set, threshold_fn, threshold, eltp); +} + +int +gl_oset_nx_add (gl_oset_t set, const void *elt) { - return ((const struct gl_oset_impl_base *) set)->vtable->add (set, elt); + return ((const struct gl_oset_impl_base *) set)->vtable->nx_add (set, elt); } bool gl_oset_remove (gl_oset_t set, const void *elt) { - return ((const struct gl_oset_impl_base *) set)->vtable->remove (set, elt); + return ((const struct gl_oset_impl_base *) set)->vtable + ->remove_elt (set, elt); } void