Debug swcsa
[SXSI/TextCollection.git] / lzindex / basics.h
1
2 // Basics
3
4 #ifndef BASICSINCLUDED
5 #define BASICSINCLUDED
6
7
8   // Includes 
9
10 #include <sys/types.h>
11 #include <stdio.h>
12 #include <fcntl.h>
13 #include <stdlib.h>
14 #include <sys/stat.h>
15 #include <sys/times.h>
16 #include <unistd.h>
17
18   // Memory management
19
20 #define malloc(n) Malloc(n)
21 #define free(p) Free(p)
22 #define realloc(p,n) Realloc(p,n)
23
24 void *Malloc (int n);
25 void Free (void *p);
26 void *Realloc (void *p, int n);
27
28   // Data types
29
30 typedef unsigned char byte;
31 typedef uint trieNode; // a node of lztrie
32 #ifndef uint
33 typedef unsigned int uint;
34 #endif
35
36 #ifndef __cplusplus
37 typedef int bool;
38 #endif
39 #define true 1
40 #define false 0
41
42 #define max(x,y) ((x)>(y)?(x):(y))
43 #define min(x,y) ((x)<(y)?(x):(y))
44
45   // Bitstream management
46
47 #define W (8*sizeof(uint))
48 #define bitsW 5 // OJO
49
50         // bits needed to represent a number between 0 and n
51 uint bits (uint n);
52         // returns e[p..p+len-1], assuming len <= W
53 uint bitget (uint *e, uint p, uint len);
54         // writes e[p..p+len-1] = s, assuming len <= W
55 void bitput (uint *e, uint p, uint len, uint s);
56         // reads bit p from e
57 #define bitget1(e,p) ((e)[(p)/W] & (1<<((p)%W)))
58         // sets bit p in e
59 #define bitset(e,p) ((e)[(p)/W] |= (1<<((p)%W)))
60         // cleans bit p in e
61 #define bitclean(e,p) ((e)[(p)/W] &= ~(1<<((p)%W)))
62
63 extern uint nbits_aux1, *e_aux1, p_aux1;
64
65 uint bitget_aux1();
66   
67 extern uint nbits_aux2, *e_aux2, p_aux2;
68
69 uint bitget_aux2();
70
71 extern uint nbits_aux3, *e_aux3, p_aux3;
72
73 uint bitget_aux3();
74 #endif