Half way through refactoring
[SXSI/xpathcomp.git] / utils.ml
1 IFNDEF UTILS_ML__
2 THEN
3 DEFINE UTILS__ML__
4
5
6 IFDEF WORDSIZE64
7 THEN
8     DEFINE WORDSIZE = 64
9     DEFINE HALFWORDSIZE = 32
10     DEFINE INTSIZE = 63
11     DEFINE HALFINTSIZE = 31
12     DEFINE HALF_MAX_INT = 2305843009213693951
13 ELSE
14     DEFINE WORDSIZE = 32
15     DEFINE HALFWORDSIZE = 16
16     DEFINE INTSIZE = 31
17     DEFINE HALFINTSIZE = 15
18     DEFINE HALF_MAX_INT = 536870911
19 END
20
21 (* x+65599*y, as in Hashtbl.hash *)
22
23 DEFINE HASHINT2 (x,y) = ((x) + ( ((y) lsl 16) + ((y) lsl 8) - (y)))
24 DEFINE HASHINT3 (x,y,z) = (HASHINT2(HASHINT2(x,y),z))
25 DEFINE HASHINT4 (x,y,z,t) = (HASHINT2((HASHINT2(HASHINT2(x,y),z)),t))
26
27 DEFINE PRIME1 = 7
28 DEFINE PRIME2 = 19
29 DEFINE PRIME3 = 83
30 DEFINE PRIME4 = 223
31 DEFINE PRIME5 = 491
32 DEFINE PRIME6 = 733
33 DEFINE PRIME7 = 1009
34 DEFINE PRIME8 = 4093
35 DEFINE PRIME9 = 65599 (* Magic Constant used for hashing *)
36
37 DEFINE SMALL_H_SIZE  = PRIME2
38 DEFINE MED_H_SIZE    = PRIME5
39 DEFINE BIG_H_SIZE    = PRIME8
40
41
42
43
44 END (* IFNDEF UTILS__ML__ *)