core/database: Add C-style initializer macro
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
This commit is contained in:
parent
877d9ac1d7
commit
b28b0c8464
|
@ -77,6 +77,16 @@ struct database {
|
|||
const struct db_ops *db_ops; /* The database's operations vector. */
|
||||
};
|
||||
|
||||
#define DB_INIT(fname, autosave, ops) \
|
||||
{ \
|
||||
.db_size = 0, \
|
||||
.db_autosave = autosave, \
|
||||
.db_file = FILE_INIT(fname, 0), \
|
||||
.db_entries = g_ptr_array_new(), \
|
||||
.db_keys = g_hash_table_new(g_str_hash, g_str_equal), \
|
||||
.db_ops = ops, \
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Initialize a database using filepath as a location on disk to store data
|
||||
|
|
|
@ -106,9 +106,7 @@ static void test_db_entry()
|
|||
|
||||
static void test_init()
|
||||
{
|
||||
struct database db;
|
||||
|
||||
db_init(&db, "init.db", false, &int_ops);
|
||||
struct database db = DB_INIT("init.db", false, &int_ops);
|
||||
|
||||
/* Check initial sizes. */
|
||||
test_equal(db.db_entries->len, 0);
|
||||
|
@ -126,9 +124,9 @@ static void test_init()
|
|||
|
||||
static void test_stress(unsigned int N)
|
||||
{
|
||||
struct database db = DB_INIT("stress.db", false, &int_ops);;
|
||||
struct db_entry *dbe, *next;
|
||||
struct int_entry rmv;
|
||||
struct database db;
|
||||
GPtrArray *ptrs;
|
||||
unsigned int i;
|
||||
gchar *key;
|
||||
|
@ -137,7 +135,6 @@ static void test_stress(unsigned int N)
|
|||
rmv.ie_dbe.dbe_index = 0;
|
||||
test_free_count = 0;
|
||||
test_setup_count = 0;
|
||||
db_init(&db, "stress.db", false, &int_ops);
|
||||
ptrs = g_ptr_array_new();
|
||||
|
||||
/* db_insert() */
|
||||
|
@ -240,14 +237,12 @@ static void test_stress_100K() { test_stress(100000); }
|
|||
|
||||
static void test_save_load()
|
||||
{
|
||||
struct database db1 = DB_INIT("save_load.db", true, &int_ops);
|
||||
struct database db2 = DB_INIT("save_load.db", false, &int_ops);
|
||||
struct db_entry *dbe, *next;
|
||||
const unsigned int N = 10;
|
||||
struct database db1, db2;
|
||||
unsigned int i;
|
||||
|
||||
db_init(&db1, "save_load.db", true, &int_ops);
|
||||
db_init(&db2, "save_load.db", false, &int_ops);
|
||||
|
||||
/* 10 items should "autosave" when inserted */
|
||||
for (i = 0; i < N; i++)
|
||||
db_insert(&db1, &__int_alloc(i)->ie_dbe);
|
||||
|
|
Loading…
Reference in New Issue