]> git.ipfire.org Git - thirdparty/squid.git/blame - include/splay.h
Summary: Fix non delay pool compiles.
[thirdparty/squid.git] / include / splay.h
CommitLineData
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 10typedef struct _splay_node {
5b220cbf 11 void *data;
12 struct _splay_node *left;
13 struct _splay_node *right;
3c01c392 14} splayNode;
15
9bc73deb 16typedef int SPLAYCMP(const void *a, const void *b);
17typedef void SPLAYWALKEE(void *nodedata, void *state);
a49fd4c6 18typedef void SPLAYFREE(void *);
3c01c392 19
e6ccf245 20SQUIDCEXTERN int splayLastResult;
3c01c392 21
e6ccf245 22SQUIDCEXTERN splayNode *splay_insert(void *, splayNode *, SPLAYCMP *);
23SQUIDCEXTERN splayNode *splay_splay(const void *, splayNode *, SPLAYCMP *);
24SQUIDCEXTERN splayNode *splay_delete(const void *, splayNode *, SPLAYCMP *);
25SQUIDCEXTERN void splay_destroy(splayNode *, SPLAYFREE *);
26SQUIDCEXTERN void splay_walk(splayNode *, SPLAYWALKEE *, void *);
b67e2c8c 27#else
28
29template <class V>
30class SplayNode {
31 public:
32 typedef V Value;
33 Value *data;
34 SplayNode<V> *left;
35 SplayNode<V> *right;
36};
37
38typedef SplayNode<void> splayNode;
39
40typedef int SPLAYCMP(const void *a, const void *b);
41typedef void SPLAYWALKEE(void *nodedata, void *state);
42typedef void SPLAYFREE(void *);
43
44SQUIDCEXTERN int splayLastResult;
45
46SQUIDCEXTERN splayNode *splay_insert(void *, splayNode *, SPLAYCMP *);
47SQUIDCEXTERN splayNode *splay_splay(const void *, splayNode *, SPLAYCMP *);
48SQUIDCEXTERN splayNode *splay_delete(const void *, splayNode *, SPLAYCMP *);
49SQUIDCEXTERN void splay_destroy(splayNode *, SPLAYFREE *);
50SQUIDCEXTERN void splay_walk(splayNode *, SPLAYWALKEE *, void *);
51
52
53#endif
bdffbfa5 54
b5638623 55#endif /* SQUID_SPLAY_H */