aboutsummaryrefslogtreecommitdiff
path: root/src/db.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/db.h')
-rw-r--r--src/db.h40
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