diff options
Diffstat (limited to 'src/db.h')
-rw-r--r-- | src/db.h | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/db.h b/src/db.h new file mode 100644 index 0000000..fcc76fa --- /dev/null +++ b/src/db.h @@ -0,0 +1,40 @@ +#ifndef DB_H +#define DB_H + +/* This is a library for importing title banks from SNOMAN files. Each bank is + * stored in a dictionary with the bank name and id as the key. For example, to + * load the DQXX files: + * + * dbval *dbval; + * + * db_init(); + * load_file("DQXX_0000010000.dat"); + * dbval = get_bank("DQCH",1); + * db_free(); + * + * The return value of get_bank() is a pointer to the bank values. It's up to + * the caller to know the exact offsets for each value in the bank. Typically, + * SNO database title banks have a database header of 20 words and 10 unused + * words at the beginning of the bank. + * + * Note: Currently only 32 bit unsigned integers and 32 bit floating point + * numbers are supported. I don't think that any of the SNOMAN files have + * doubles. */ + +#include <stdint.h> /* for uint32_t */ +#include "dict.h" + +typedef union dbval { + uint32_t u32; + float f; +} dbval; + +extern char db_err[256]; + +dict *db_init(void); +void db_free(dict *db); +int add_bank(dict *db, const char name[4], uint32_t id, dbval *data); +dbval *get_bank(dict *db, const char name[4], uint32_t id); +int load_file(dict *db, const char *filename); + +#endif |