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