X-Git-Url: https://www.tinc-vpn.org/git/browse?a=blobdiff_plain;ds=sidebyside;f=lib%2Frbl.h;h=ff81c1bfcdfefede2e25ccfa7f802806029d296c;hb=880cd6f1a94ef76ebebc5bd96dd26d62e3d829f4;hp=40a1c69dd756a9b398ef9ae51dbf1b02d3f65179;hpb=aa755206da4bcce3261ecd5dbfa41570a0155c73;p=tinc diff --git a/lib/rbl.h b/lib/rbl.h index 40a1c69d..ff81c1bf 100644 --- a/lib/rbl.h +++ b/lib/rbl.h @@ -17,11 +17,11 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id: rbl.h,v 1.1.2.1 2000/11/16 09:18:38 guus Exp $ + $Id: rbl.h,v 1.1.2.3 2000/11/18 23:21:01 guus Exp $ */ typedef int (*rbl_compare_t) (const void *, const void *); -typedef void (*rbl_delete_t) (const void *); +typedef void (*rbl_action_t) (const void *); typedef struct rbl_t { @@ -48,9 +48,20 @@ typedef struct rbl_t typedef struct rbltree_t { + /* callback functions */ + rbl_compare_t *compare; - rbl_delete_t *delete; + rbl_action_t *delete; + + /* tree part */ + + struct rbl_t *top; + + /* linked list */ + struct rbl_t *head; + struct rbl_t *tail; + } rbltree_t; enum @@ -59,13 +70,18 @@ enum RBL_BLACK; }; -extern rbl_t rbl_search(rbltree_t *, void *); -extern rbl_t rbl_search_closest(rbltree_t *, void *); -extern rbl_t rbl_insert(rbltree_t *, void *); -extern rbl_t rbl_unlink(rbltree_t *, void *); -extern rbl_t rbl_delete(rbltree_t *, void *); -extern rbl_t rbl_insert_rbl(rbltree_t *, rbl_t *); -extern rbl_t rbl_unlink_rbl(rbltree_t *, rbl_t *); -extern rbl_t rbl_delete_rbl(rbltree_t *, rbl_t *); -extern rbl_t rbl_prev(rbl_t *); -extern rbl_t rbl_next(rbl_t *); +extern rbl_t *new_rbltree(rbl_compare_t *, rbl_action_t *); +extern void free_rbltree(rbltree_t *); +extern rbl_t *new_rbl(void); +extern void free_rbl(rbl_t *); + +extern rbl_t *rbl_search(rbltree_t *, void *); +extern rbl_t *rbl_search_closest(rbltree_t *, void *); +extern rbl_t *rbl_insert(rbltree_t *, void *); +extern rbl_t *rbl_unlink(rbltree_t *, void *); +extern rbl_t *rbl_delete(rbltree_t *, void *); +extern rbl_t *rbl_insert_rbl(rbltree_t *, rbl_t *); +extern rbl_t *rbl_unlink_rbl(rbltree_t *, rbl_t *); +extern rbl_t *rbl_delete_rbl(rbltree_t *, rbl_t *); + +extern void rbl_foreach(rbltree_t *, rbl_action_t *);