s3:registry: do not use regdb functions during db upgrade
[Samba/gebeck_regimport.git] / lib / tdb2 / test / layout.h
blob6e2e6657a70451050db62ee2879657e6e8cb9f8b
1 #ifndef TDB2_TEST_LAYOUT_H
2 #define TDB2_TEST_LAYOUT_H
3 #include <ccan/tdb2/private.h>
5 struct tdb_layout *new_tdb_layout(const char *filename);
6 void tdb_layout_add_freetable(struct tdb_layout *layout);
7 void tdb_layout_add_free(struct tdb_layout *layout, tdb_len_t len,
8 unsigned ftable);
9 void tdb_layout_add_used(struct tdb_layout *layout,
10 TDB_DATA key, TDB_DATA data,
11 tdb_len_t extra);
12 #if 0 /* FIXME: Allow allocation of subtables */
13 void tdb_layout_add_hashtable(struct tdb_layout *layout,
14 int htable_parent, /* -1 == toplevel */
15 unsigned int bucket,
16 tdb_len_t extra);
17 #endif
18 struct tdb_context *tdb_layout_get(struct tdb_layout *layout);
19 void tdb_layout_free(struct tdb_layout *layout);
21 enum layout_type {
22 FREETABLE, FREE, DATA, HASHTABLE,
25 /* Shared by all union members. */
26 struct tle_base {
27 enum layout_type type;
28 tdb_off_t off;
31 struct tle_freetable {
32 struct tle_base base;
35 struct tle_free {
36 struct tle_base base;
37 tdb_len_t len;
38 unsigned ftable_num;
41 struct tle_used {
42 struct tle_base base;
43 TDB_DATA key;
44 TDB_DATA data;
45 tdb_len_t extra;
48 struct tle_hashtable {
49 struct tle_base base;
50 int parent;
51 unsigned int bucket;
52 tdb_len_t extra;
55 union tdb_layout_elem {
56 struct tle_base base;
57 struct tle_freetable ftable;
58 struct tle_free free;
59 struct tle_used used;
60 struct tle_hashtable hashtable;
63 struct tdb_layout {
64 const char *filename;
65 unsigned int num_elems;
66 union tdb_layout_elem *elem;
68 #endif /* TDB2_TEST_LAYOUT_H */