16ef5c5cff3382bd19d5991d237d8e2846637eed
[tedtools.git] / flatdb.h
1 #ifndef __FLAT_DB__
2 #define __FLAT_DB__
3
4 #include <sys/types.h>
5
6 typedef struct {
7         off_t   freespace;
8         size_t  lenfreespace;
9         u_int32_t
10                 unused:31, 
11                 isopened:1;
12 } FDBHeader;
13
14 typedef struct {
15         size_t  length;
16         char    *data;
17 } FDBRecord;
18
19 #define RECHDRSZ        (sizeof(size_t))
20
21 typedef struct {
22         off_t   offset;
23         size_t  length;
24 } FDBFreeSpace;
25
26 typedef struct {
27         int     fd; /* file descriptor */
28         u_int32_t       unused:31,
29                         readonly:1;
30         u_int32_t       listlen;
31         u_int32_t       listcur;
32         FDBFreeSpace    *space;
33 } FDB;
34
35 int FDBOpen(FDB *db, char *file, int readonly);
36 int FDBClose(FDB *db);
37 int FDBPut(FDB *db, FDBRecord *record /*in*/, off_t *offset /*out*/);
38 int FDBGet(FDB *db, off_t offset /* in */, size_t length /*in, may =0, then stored size*/, FDBRecord **record /*out*/);
39 int FDBDelete(FDB *db, off_t offset /* in */, size_t length /*in, may =0, then stored size*/ );
40 void FDBVacuumFreeSpace(FDB *db); 
41
42 #define FDB_OK          0
43 #define FDB_NOTFOUND    1
44 #define FDB_ERROR       2
45 #define FDB_INCORRECT   3
46
47 #endif