]>
Commit | Line | Data |
---|---|---|
0e2cd867 | 1 | /* |
b67e2c8c | 2 | * $Id: splay.h,v 1.14 2003/02/05 10:36:31 robertc Exp $ |
0e2cd867 | 3 | */ |
4 | ||
b5638623 | 5 | #ifndef SQUID_SPLAY_H |
6 | #define SQUID_SPLAY_H | |
3c01c392 | 7 | |
b67e2c8c | 8 | #ifndef __cplusplus |
9 | /* legacy C bindings - can be removed when mempool is C++ */ | |
3c01c392 | 10 | typedef struct _splay_node { |
5b220cbf | 11 | void *data; |
12 | struct _splay_node *left; | |
13 | struct _splay_node *right; | |
3c01c392 | 14 | } splayNode; |
15 | ||
9bc73deb | 16 | typedef int SPLAYCMP(const void *a, const void *b); |
17 | typedef void SPLAYWALKEE(void *nodedata, void *state); | |
a49fd4c6 | 18 | typedef void SPLAYFREE(void *); |
3c01c392 | 19 | |
e6ccf245 | 20 | SQUIDCEXTERN int splayLastResult; |
3c01c392 | 21 | |
e6ccf245 | 22 | SQUIDCEXTERN splayNode *splay_insert(void *, splayNode *, SPLAYCMP *); |
23 | SQUIDCEXTERN splayNode *splay_splay(const void *, splayNode *, SPLAYCMP *); | |
24 | SQUIDCEXTERN splayNode *splay_delete(const void *, splayNode *, SPLAYCMP *); | |
25 | SQUIDCEXTERN void splay_destroy(splayNode *, SPLAYFREE *); | |
26 | SQUIDCEXTERN void splay_walk(splayNode *, SPLAYWALKEE *, void *); | |
b67e2c8c | 27 | #else |
28 | ||
29 | template <class V> | |
30 | class SplayNode { | |
31 | public: | |
32 | typedef V Value; | |
33 | Value *data; | |
34 | SplayNode<V> *left; | |
35 | SplayNode<V> *right; | |
36 | }; | |
37 | ||
38 | typedef SplayNode<void> splayNode; | |
39 | ||
40 | typedef int SPLAYCMP(const void *a, const void *b); | |
41 | typedef void SPLAYWALKEE(void *nodedata, void *state); | |
42 | typedef void SPLAYFREE(void *); | |
43 | ||
44 | SQUIDCEXTERN int splayLastResult; | |
45 | ||
46 | SQUIDCEXTERN splayNode *splay_insert(void *, splayNode *, SPLAYCMP *); | |
47 | SQUIDCEXTERN splayNode *splay_splay(const void *, splayNode *, SPLAYCMP *); | |
48 | SQUIDCEXTERN splayNode *splay_delete(const void *, splayNode *, SPLAYCMP *); | |
49 | SQUIDCEXTERN void splay_destroy(splayNode *, SPLAYFREE *); | |
50 | SQUIDCEXTERN void splay_walk(splayNode *, SPLAYWALKEE *, void *); | |
51 | ||
52 | ||
53 | #endif | |
bdffbfa5 | 54 | |
b5638623 | 55 | #endif /* SQUID_SPLAY_H */ |