cfa6c8e859caec5368a65c27ec09ccd147e47e0a
[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     DEFINE HPARAM = 65599
14     DEFINE HPARAM2 = 4303228801
15     DEFINE HPARAM3 = 282287506116799
16
17 ELSE
18     DEFINE WORDSIZE = 32
19     DEFINE HALFWORDSIZE = 16
20     DEFINE INTSIZE = 31
21     DEFINE HALFINTSIZE = 15
22     DEFINE HALF_MAX_INT = 536870911
23     DEFINE HPARAM = 65599
24     DEFINE HPARAM2 = 8261505
25     DEFINE HPARAM3 = 780587199
26
27 END
28
29
30 DEFINE HASHINT2 (x,y) = ((x)+HPARAM*(y))
31 DEFINE HASHINT3 (x,y,z) = ((x)  + (y) * HPARAM + (z) * HPARAM2)
32 DEFINE HASHINT4 (x,y,z,t) =  ((x)  + (y) * HPARAM + (z)*HPARAM2 + (t)* HPARAM3)
33
34 DEFINE PRIME1 = 7
35 DEFINE PRIME2 = 19
36 DEFINE PRIME3 = 83
37 DEFINE PRIME4 = 223
38 DEFINE PRIME5 = 491
39 DEFINE PRIME6 = 733
40 DEFINE PRIME7 = 1009
41 DEFINE PRIME8 = 4093
42 DEFINE PRIME9 = 65599 (* Magic Constant used for hashing *)
43
44 DEFINE SMALL_H_SIZE  = PRIME2
45 DEFINE MED_H_SIZE    = PRIME5
46 DEFINE BIG_H_SIZE    = PRIME8
47
48
49 END (* IFNDEF UTILS__ML__ *)