1 /* module.h - definitions for the module
2 *
3 * Copyright (C) 2004-2010 Gerhard Häring <[email protected]>
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
32 typedef 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
74 extern pysqlite_state pysqlite_global_state;
75
76 static inline pysqlite_state *
pysqlite_get_state(PyObject * module)77 pysqlite_get_state(PyObject *module)
78 {
79 pysqlite_state *state = (pysqlite_state *)PyModule_GetState(module);
80 assert(state != NULL);
81 return state;
82 }
83
84 extern struct PyModuleDef _sqlite3module;
85 static inline pysqlite_state *
pysqlite_get_state_by_type(PyTypeObject * tp)86 pysqlite_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
93 extern const char *pysqlite_error_name(int rc);
94
95 #define PARSE_DECLTYPES 1
96 #define PARSE_COLNAMES 2
97 #endif
98