Pajdeg  0.2.2
Pajdeg
PDSplayTree.h
1 //
2 // PDSplayTree.h
3 //
4 // Based on the Wikipedia article on splay trees.
5 //
6 
7 #ifndef INCLUDED_PDSPLAYTREE_H
8 #define INCLUDED_PDSPLAYTREE_H
9 
10 #include <sys/types.h>
11 
12 #include "PDDefines.h"
13 
14 extern PDSplayTreeRef PDSplayTreeCreate(void);
15 extern PDSplayTreeRef PDSplayTreeCreateWithDeallocator(PDDeallocator deallocator);
16 extern void PDSplayTreeInsert(PDSplayTreeRef tree, PDInteger key, void *value);
17 extern void *PDSplayTreeGet(PDSplayTreeRef tree, PDInteger key);
18 extern void PDSplayTreeDelete(PDSplayTreeRef tree, PDInteger key);
19 extern PDInteger PDSplayTreeGetCount(PDSplayTreeRef tree);
20 
29 extern void PDSplayTreeIterate(PDSplayTreeRef tree, PDHashIterator it, void *userInfo);
30 
40 extern PDInteger PDSplayTreePopulateKeys(PDSplayTreeRef tree, PDInteger *dest);
41 
52 #define PDST_KEY_STR(str, len) \
53  (PDInteger) (\
54  str[0]\
55  + ((str[1&(-(len>0))]&(-(len>0))) << 8)\
56  + ((str[2&(-(len>1))]&(-(len>1))) << 16)\
57  + ((str[3&(-(len>2))]&(-(len>2))) << 24)\
58  )
59 
65 extern void PDSplayTreeShow(PDSplayTreeRef tree);
66 
67 #endif // INCLUDED_PDSPLAYTREE_H
long PDInteger
Definition: PDDefines.h:184
Definition: PDSplayTree.c:20
Definitions for the Pajdeg interface.
void(* PDHashIterator)(char *key, void *value, void *userInfo, PDBool *shouldStop)
Definition: PDDefines.h:355
void(* PDDeallocator)(void *ob)
Definition: PDDefines.h:299