/* Copyright (c) 2019, Anthony Latorre * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) * any later version. * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * You should have received a copy of the GNU General Public License along with * this program. If not, see . */ #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 /* 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); void replace_bank(dict *db, const char name[4], uint32_t id, dbval *data); 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, int replace); #endif