/* sqlite.h -- Generic functions to simplify SQLite3 queries - data structures defined here * * GPLv2 - Copyright (C) 2008 David Sommerseth * * 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; version 2 * of the License. * * 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, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef SQLITE_H_ # define SQLITE_H_ #include #ifdef HAVE_LIBXML2 # include #endif #include typedef enum _xmlFieldType { XML_ATTR, XML_NODE } xmlFieldType; typedef struct __sqlite_header { unsigned int fieldid; char *name; // char *type; size_t namelength; size_t maxvaluelength; struct __sqlite_header *next; struct __sqlite_header *prev; } _sqlite_header; typedef struct __sqlite_tuples { unsigned int tupleid; unsigned int fieldid; char *value; size_t length; _sqlite_header *header; struct __sqlite_tuples *nextfield; struct __sqlite_tuples *prevfield; struct __sqlite_tuples *nexttuple; struct __sqlite_tuples *prevtuple; } _sqlite_tuples; typedef struct __sqlite_dbresult { // start of the chains _sqlite_tuples *tuples; _sqlite_header *headerrec; size_t num_tuples; size_t num_fields; sqlite3_int64 last_insert_id; // Used for search functions _sqlite_tuples *srch_tuples; _sqlite_header *srch_headerrec; } dbresult; typedef enum _SQLqueryType { SQL_SELECT, SQL_INSERT, SQL_UPDATE, SQL_DELETE } SQLqueryType; #ifndef SQLITE_C #define sqlite_free_results(r) { _sqlite_free_results(r); r = NULL; } void _sqlite_free_results(dbresult *); dbresult *sqlite_query(eurephiaCTX *ctx, const char *, ...); dbresult *sqlite_query_mapped(eurephiaCTX *ctx, SQLqueryType type, const char *sqlstub, eDBfieldMap *valMap, eDBfieldMap *whereMap, const char *sortkeys); char *sqlite_get_value(dbresult *res, int, int); #ifdef HAVE_LIBXML2 xmlNodePtr sqlite_xml_value(xmlNodePtr node, xmlFieldType xmltyp, char *name, dbresult *res, int row, int col); #endif void sqlite_dump_result(FILE *, dbresult *); int sqlite_get_numtuples(dbresult *); #endif #endif /* !SQLITE_H_ */