• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #include "Python.h"
27 
28 #define LEGACY_TRANSACTION_CONTROL -1
29 
30 #define PYSQLITE_VERSION "2.6.0"
31 #define MODULE_NAME "sqlite3"
32 
33 typedef struct {
34     PyObject *DataError;
35     PyObject *DatabaseError;
36     PyObject *Error;
37     PyObject *IntegrityError;
38     PyObject *InterfaceError;
39     PyObject *InternalError;
40     PyObject *NotSupportedError;
41     PyObject *OperationalError;
42     PyObject *ProgrammingError;
43     PyObject *Warning;
44 
45 
46     /* A dictionary, mapping column types (INTEGER, VARCHAR, etc.) to converter
47      * functions, that convert the SQL value to the appropriate Python value.
48      * The key is uppercase.
49      */
50     PyObject *converters;
51 
52     PyObject *lru_cache;
53     PyObject *psyco_adapters;  // The adapters registry
54     int BaseTypeAdapted;
55     int enable_callback_tracebacks;
56 
57     PyTypeObject *BlobType;
58     PyTypeObject *ConnectionType;
59     PyTypeObject *CursorType;
60     PyTypeObject *PrepareProtocolType;
61     PyTypeObject *RowType;
62     PyTypeObject *StatementType;
63 
64     /* Pointers to interned strings */
65     PyObject *str___adapt__;
66     PyObject *str___conform__;
67     PyObject *str_executescript;
68     PyObject *str_finalize;
69     PyObject *str_inverse;
70     PyObject *str_step;
71     PyObject *str_upper;
72     PyObject *str_value;
73 } pysqlite_state;
74 
75 extern pysqlite_state pysqlite_global_state;
76 
77 static inline pysqlite_state *
pysqlite_get_state(PyObject * module)78 pysqlite_get_state(PyObject *module)
79 {
80     pysqlite_state *state = (pysqlite_state *)PyModule_GetState(module);
81     assert(state != NULL);
82     return state;
83 }
84 
85 extern struct PyModuleDef _sqlite3module;
86 static inline pysqlite_state *
pysqlite_get_state_by_type(PyTypeObject * tp)87 pysqlite_get_state_by_type(PyTypeObject *tp)
88 {
89     PyObject *module = PyType_GetModuleByDef(tp, &_sqlite3module);
90     assert(module != NULL);
91     return pysqlite_get_state(module);
92 }
93 
94 extern const char *pysqlite_error_name(int rc);
95 
96 #define PARSE_DECLTYPES 1
97 #define PARSE_COLNAMES 2
98 #endif
99