Graphviz  2.41.20171026.1811
dthdr.h
Go to the documentation of this file.
1 #ifndef _DTHDR_H
2 #define _DTHDR_H 1
3 
4 /* Internal definitions for libcdt.
5 ** Written by Kiem-Phong Vo (5/25/96)
6 */
7 
8 #include <stdlib.h>
9 
10 #include <cdt.h>
11 
12 /* short-hand notations */
13 #define NIL(t) ((t)0)
14 #define reg register
15 #define uint unsigned int
16 #define left hl._left
17 #define hash hl._hash
18 #define htab hh._htab
19 #define head hh._head
20 
21 /* this must be disjoint from DT_METHODS */
22 #define DT_FLATTEN 010000 /* dictionary already flattened */
23 #define DT_WALK 020000 /* hash table being walked */
24 
25 /* how the Dt_t handle was allocated */
26 #define DT_MALLOC 0
27 #define DT_MEMORYF 1
28 
29 /* max search length before splaying */
30 #define DT_MINP (sizeof(size_t)*8 - 2)
31 
32 /* hash start size and load factor */
33 #define HSLOT (256)
34 #define HRESIZE(n) ((n) << 1)
35 #define HLOAD(s) ((s) << 1)
36 #define HINDEX(n,h) ((h)&((n)-1))
37 
38 #define UNFLATTEN(dt) \
39  ((dt->data->type&DT_FLATTEN) ? dtrestore(dt,NIL(Dtlink_t*)) : 0)
40 
41 /* tree rotation/linking functions */
42 #define rrotate(x,y) ((x)->left = (y)->right, (y)->right = (x))
43 #define lrotate(x,y) ((x)->right = (y)->left, (y)->left = (x))
44 #define rlink(r,x) ((r) = (r)->left = (x) )
45 #define llink(l,x) ((l) = (l)->right = (x) )
46 
47 #define RROTATE(x,y) (rrotate(x,y), (x) = (y))
48 #define LROTATE(x,y) (lrotate(x,y), (x) = (y))
49 
50 #endif /* _DTHDR_H */