projects
/
tinc
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
- Implemented deletions
[tinc]
/
lib
/
rbl.h
diff --git
a/lib/rbl.h
b/lib/rbl.h
index
bd9ecda
..
ff81c1b
100644
(file)
--- 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.
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.
2 2000/11/18 18:14:57
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 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
{
typedef struct rbl_t
{
@@
-48,9
+48,20
@@
typedef struct rbl_t
typedef struct rbltree_t
{
typedef struct rbltree_t
{
+ /* callback functions */
+
rbl_compare_t *compare;
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 *head;
+ struct rbl_t *tail;
+
} rbltree_t;
enum
} rbltree_t;
enum
@@
-59,7
+70,7
@@
enum
RBL_BLACK;
};
RBL_BLACK;
};
-extern rbl_t *new_rbltree(rbl_compare_t *, rbl_
delete
_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 void free_rbltree(rbltree_t *);
extern rbl_t *new_rbl(void);
extern void free_rbl(rbl_t *);
@@
-72,3
+83,5
@@
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_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 *);