17db96d56Sopenharmony_ci/* module.h - definitions for the module
27db96d56Sopenharmony_ci *
37db96d56Sopenharmony_ci * Copyright (C) 2004-2010 Gerhard Häring <gh@ghaering.de>
47db96d56Sopenharmony_ci *
57db96d56Sopenharmony_ci * This file is part of pysqlite.
67db96d56Sopenharmony_ci *
77db96d56Sopenharmony_ci * This software is provided 'as-is', without any express or implied
87db96d56Sopenharmony_ci * warranty.  In no event will the authors be held liable for any damages
97db96d56Sopenharmony_ci * arising from the use of this software.
107db96d56Sopenharmony_ci *
117db96d56Sopenharmony_ci * Permission is granted to anyone to use this software for any purpose,
127db96d56Sopenharmony_ci * including commercial applications, and to alter it and redistribute it
137db96d56Sopenharmony_ci * freely, subject to the following restrictions:
147db96d56Sopenharmony_ci *
157db96d56Sopenharmony_ci * 1. The origin of this software must not be misrepresented; you must not
167db96d56Sopenharmony_ci *    claim that you wrote the original software. If you use this software
177db96d56Sopenharmony_ci *    in a product, an acknowledgment in the product documentation would be
187db96d56Sopenharmony_ci *    appreciated but is not required.
197db96d56Sopenharmony_ci * 2. Altered source versions must be plainly marked as such, and must not be
207db96d56Sopenharmony_ci *    misrepresented as being the original software.
217db96d56Sopenharmony_ci * 3. This notice may not be removed or altered from any source distribution.
227db96d56Sopenharmony_ci */
237db96d56Sopenharmony_ci
247db96d56Sopenharmony_ci#ifndef PYSQLITE_MODULE_H
257db96d56Sopenharmony_ci#define PYSQLITE_MODULE_H
267db96d56Sopenharmony_ci#define PY_SSIZE_T_CLEAN
277db96d56Sopenharmony_ci#include "Python.h"
287db96d56Sopenharmony_ci
297db96d56Sopenharmony_ci#define PYSQLITE_VERSION "2.6.0"
307db96d56Sopenharmony_ci#define MODULE_NAME "sqlite3"
317db96d56Sopenharmony_ci
327db96d56Sopenharmony_citypedef struct {
337db96d56Sopenharmony_ci    PyObject *DataError;
347db96d56Sopenharmony_ci    PyObject *DatabaseError;
357db96d56Sopenharmony_ci    PyObject *Error;
367db96d56Sopenharmony_ci    PyObject *IntegrityError;
377db96d56Sopenharmony_ci    PyObject *InterfaceError;
387db96d56Sopenharmony_ci    PyObject *InternalError;
397db96d56Sopenharmony_ci    PyObject *NotSupportedError;
407db96d56Sopenharmony_ci    PyObject *OperationalError;
417db96d56Sopenharmony_ci    PyObject *ProgrammingError;
427db96d56Sopenharmony_ci    PyObject *Warning;
437db96d56Sopenharmony_ci
447db96d56Sopenharmony_ci
457db96d56Sopenharmony_ci    /* A dictionary, mapping column types (INTEGER, VARCHAR, etc.) to converter
467db96d56Sopenharmony_ci     * functions, that convert the SQL value to the appropriate Python value.
477db96d56Sopenharmony_ci     * The key is uppercase.
487db96d56Sopenharmony_ci     */
497db96d56Sopenharmony_ci    PyObject *converters;
507db96d56Sopenharmony_ci
517db96d56Sopenharmony_ci    PyObject *lru_cache;
527db96d56Sopenharmony_ci    PyObject *psyco_adapters;  // The adapters registry
537db96d56Sopenharmony_ci    int BaseTypeAdapted;
547db96d56Sopenharmony_ci    int enable_callback_tracebacks;
557db96d56Sopenharmony_ci
567db96d56Sopenharmony_ci    PyTypeObject *BlobType;
577db96d56Sopenharmony_ci    PyTypeObject *ConnectionType;
587db96d56Sopenharmony_ci    PyTypeObject *CursorType;
597db96d56Sopenharmony_ci    PyTypeObject *PrepareProtocolType;
607db96d56Sopenharmony_ci    PyTypeObject *RowType;
617db96d56Sopenharmony_ci    PyTypeObject *StatementType;
627db96d56Sopenharmony_ci
637db96d56Sopenharmony_ci    /* Pointers to interned strings */
647db96d56Sopenharmony_ci    PyObject *str___adapt__;
657db96d56Sopenharmony_ci    PyObject *str___conform__;
667db96d56Sopenharmony_ci    PyObject *str_executescript;
677db96d56Sopenharmony_ci    PyObject *str_finalize;
687db96d56Sopenharmony_ci    PyObject *str_inverse;
697db96d56Sopenharmony_ci    PyObject *str_step;
707db96d56Sopenharmony_ci    PyObject *str_upper;
717db96d56Sopenharmony_ci    PyObject *str_value;
727db96d56Sopenharmony_ci} pysqlite_state;
737db96d56Sopenharmony_ci
747db96d56Sopenharmony_ciextern pysqlite_state pysqlite_global_state;
757db96d56Sopenharmony_ci
767db96d56Sopenharmony_cistatic inline pysqlite_state *
777db96d56Sopenharmony_cipysqlite_get_state(PyObject *module)
787db96d56Sopenharmony_ci{
797db96d56Sopenharmony_ci    pysqlite_state *state = (pysqlite_state *)PyModule_GetState(module);
807db96d56Sopenharmony_ci    assert(state != NULL);
817db96d56Sopenharmony_ci    return state;
827db96d56Sopenharmony_ci}
837db96d56Sopenharmony_ci
847db96d56Sopenharmony_ciextern struct PyModuleDef _sqlite3module;
857db96d56Sopenharmony_cistatic inline pysqlite_state *
867db96d56Sopenharmony_cipysqlite_get_state_by_type(PyTypeObject *tp)
877db96d56Sopenharmony_ci{
887db96d56Sopenharmony_ci    PyObject *module = PyType_GetModuleByDef(tp, &_sqlite3module);
897db96d56Sopenharmony_ci    assert(module != NULL);
907db96d56Sopenharmony_ci    return pysqlite_get_state(module);
917db96d56Sopenharmony_ci}
927db96d56Sopenharmony_ci
937db96d56Sopenharmony_ciextern const char *pysqlite_error_name(int rc);
947db96d56Sopenharmony_ci
957db96d56Sopenharmony_ci#define PARSE_DECLTYPES 1
967db96d56Sopenharmony_ci#define PARSE_COLNAMES 2
977db96d56Sopenharmony_ci#endif
98