xref: /third_party/python/Modules/_sqlite/module.h (revision 7db96d56)
1/* module.h - definitions for the module
2 *
3 * Copyright (C) 2004-2010 Gerhard Häring <gh@ghaering.de>
4 *
5 * This file is part of pysqlite.
6 *
7 * This software is provided 'as-is', without any express or implied
8 * warranty.  In no event will the authors be held liable for any damages
9 * arising from the use of this software.
10 *
11 * Permission is granted to anyone to use this software for any purpose,
12 * including commercial applications, and to alter it and redistribute it
13 * freely, subject to the following restrictions:
14 *
15 * 1. The origin of this software must not be misrepresented; you must not
16 *    claim that you wrote the original software. If you use this software
17 *    in a product, an acknowledgment in the product documentation would be
18 *    appreciated but is not required.
19 * 2. Altered source versions must be plainly marked as such, and must not be
20 *    misrepresented as being the original software.
21 * 3. This notice may not be removed or altered from any source distribution.
22 */
23
24#ifndef PYSQLITE_MODULE_H
25#define PYSQLITE_MODULE_H
26#define PY_SSIZE_T_CLEAN
27#include "Python.h"
28
29#define PYSQLITE_VERSION "2.6.0"
30#define MODULE_NAME "sqlite3"
31
32typedef struct {
33    PyObject *DataError;
34    PyObject *DatabaseError;
35    PyObject *Error;
36    PyObject *IntegrityError;
37    PyObject *InterfaceError;
38    PyObject *InternalError;
39    PyObject *NotSupportedError;
40    PyObject *OperationalError;
41    PyObject *ProgrammingError;
42    PyObject *Warning;
43
44
45    /* A dictionary, mapping column types (INTEGER, VARCHAR, etc.) to converter
46     * functions, that convert the SQL value to the appropriate Python value.
47     * The key is uppercase.
48     */
49    PyObject *converters;
50
51    PyObject *lru_cache;
52    PyObject *psyco_adapters;  // The adapters registry
53    int BaseTypeAdapted;
54    int enable_callback_tracebacks;
55
56    PyTypeObject *BlobType;
57    PyTypeObject *ConnectionType;
58    PyTypeObject *CursorType;
59    PyTypeObject *PrepareProtocolType;
60    PyTypeObject *RowType;
61    PyTypeObject *StatementType;
62
63    /* Pointers to interned strings */
64    PyObject *str___adapt__;
65    PyObject *str___conform__;
66    PyObject *str_executescript;
67    PyObject *str_finalize;
68    PyObject *str_inverse;
69    PyObject *str_step;
70    PyObject *str_upper;
71    PyObject *str_value;
72} pysqlite_state;
73
74extern pysqlite_state pysqlite_global_state;
75
76static inline pysqlite_state *
77pysqlite_get_state(PyObject *module)
78{
79    pysqlite_state *state = (pysqlite_state *)PyModule_GetState(module);
80    assert(state != NULL);
81    return state;
82}
83
84extern struct PyModuleDef _sqlite3module;
85static inline pysqlite_state *
86pysqlite_get_state_by_type(PyTypeObject *tp)
87{
88    PyObject *module = PyType_GetModuleByDef(tp, &_sqlite3module);
89    assert(module != NULL);
90    return pysqlite_get_state(module);
91}
92
93extern const char *pysqlite_error_name(int rc);
94
95#define PARSE_DECLTYPES 1
96#define PARSE_COLNAMES 2
97#endif
98