IntArray.h
1 #ifndef __SUCCINCT_INTEGER_ARRAY_H_
2 #define __SUCCINCT_INTEGER_ARRAY_H_
3
4
5
6 #define IARY_OK 0
7 #define IARY_EMEM ( -1 )
8 #define IARY_EIO ( -2 )
9
10
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14
15
16
17 typedef unsigned long IAryIdx;
18 typedef unsigned long IAryLen;
19 typedef long IAryInt;
20 typedef unsigned long IAryUInt;
21
22
23 typedef struct IAry *hIAry;
24
25
26 typedef struct IAryScan
27 {
28 hIAry h;
29 IAryIdx idx;
30 IAryIdx pos;
31 int jump;
32 } IAryScan, *hIAryScan;
33
34
35
36 int IAry_Open( hIAry *h );
37
38 void IAry_Close( hIAry h );
39
40
41 int IAry_Load( hIAry *h, const char *path );
42
43 int IAry_Save( hIAry h, const char *path );
44
45
46 int IAry_AddInt( hIAry h, IAryInt x );
47
48 int IAry_AddUInt( hIAry h, IAryUInt x );
49
50
51 int IAry_BuildIndex( hIAry h );
52
53
54 IAryInt IAry_GetInt( hIAry h, IAryIdx idx );
55
56 IAryUInt IAry_GetUInt( hIAry h, IAryIdx idx );
57
58
59 void IAry_Start( hIAry h, hIAryScan scan );
60
61 void IAry_Jump( hIAryScan scan, IAryIdx idx );
62
63 IAryInt IAry_NextInt( hIAryScan scan );
64
65 IAryUInt IAry_NextUInt( hIAryScan scan );
66
67
68 IAryIdx IAry_Size( hIAry h );
69
70
71 #ifdef __cplusplus
72 }
73 #endif
74
75
76 #endif