symbian-qemu-0.9.1-12/python-2.6.1/Modules/_sqlite/connection.h
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 /* connection.h - definitions for the connection type
       
     2  *
       
     3  * Copyright (C) 2004-2007 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_CONNECTION_H
       
    25 #define PYSQLITE_CONNECTION_H
       
    26 #include "Python.h"
       
    27 #include "pythread.h"
       
    28 #include "structmember.h"
       
    29 
       
    30 #include "cache.h"
       
    31 #include "module.h"
       
    32 
       
    33 #include "sqlite3.h"
       
    34 
       
    35 typedef struct
       
    36 {
       
    37     PyObject_HEAD
       
    38     sqlite3* db;
       
    39 
       
    40     /* 1 if we are currently within a transaction, i. e. if a BEGIN has been
       
    41      * issued */
       
    42     int inTransaction;
       
    43 
       
    44     /* the type detection mode. Only 0, PARSE_DECLTYPES, PARSE_COLNAMES or a
       
    45      * bitwise combination thereof makes sense */
       
    46     int detect_types;
       
    47 
       
    48     /* the timeout value in seconds for database locks */
       
    49     double timeout;
       
    50 
       
    51     /* for internal use in the timeout handler: when did the timeout handler
       
    52      * first get called with count=0? */
       
    53     double timeout_started;
       
    54 
       
    55     /* None for autocommit, otherwise a PyString with the isolation level */
       
    56     PyObject* isolation_level;
       
    57 
       
    58     /* NULL for autocommit, otherwise a string with the BEGIN statment; will be
       
    59      * freed in connection destructor */
       
    60     char* begin_statement;
       
    61 
       
    62     /* 1 if a check should be performed for each API call if the connection is
       
    63      * used from the same thread it was created in */
       
    64     int check_same_thread;
       
    65 
       
    66     /* thread identification of the thread the connection was created in */
       
    67     long thread_ident;
       
    68 
       
    69     pysqlite_Cache* statement_cache;
       
    70 
       
    71     /* A list of weak references to statements used within this connection */
       
    72     PyObject* statements;
       
    73 
       
    74     /* a counter for how many statements were created in the connection. May be
       
    75      * reset to 0 at certain intervals */
       
    76     int created_statements;
       
    77 
       
    78     PyObject* row_factory;
       
    79 
       
    80     /* Determines how bytestrings from SQLite are converted to Python objects:
       
    81      * - PyUnicode_Type:        Python Unicode objects are constructed from UTF-8 bytestrings
       
    82      * - OptimizedUnicode:      Like before, but for ASCII data, only PyStrings are created.
       
    83      * - PyString_Type:         PyStrings are created as-is.
       
    84      * - Any custom callable:   Any object returned from the callable called with the bytestring
       
    85      *                          as single parameter.
       
    86      */
       
    87     PyObject* text_factory;
       
    88 
       
    89     /* remember references to functions/classes used in
       
    90      * create_function/create/aggregate, use these as dictionary keys, so we
       
    91      * can keep the total system refcount constant by clearing that dictionary
       
    92      * in connection_dealloc */
       
    93     PyObject* function_pinboard;
       
    94 
       
    95     /* a dictionary of registered collation name => collation callable mappings */
       
    96     PyObject* collations;
       
    97 
       
    98     /* if our connection was created from a APSW connection, we keep a
       
    99      * reference to the APSW connection around and get rid of it in our
       
   100      * destructor */
       
   101     PyObject* apsw_connection;
       
   102 
       
   103     /* Exception objects */
       
   104     PyObject* Warning;
       
   105     PyObject* Error;
       
   106     PyObject* InterfaceError;
       
   107     PyObject* DatabaseError;
       
   108     PyObject* DataError;
       
   109     PyObject* OperationalError;
       
   110     PyObject* IntegrityError;
       
   111     PyObject* InternalError;
       
   112     PyObject* ProgrammingError;
       
   113     PyObject* NotSupportedError;
       
   114 } pysqlite_Connection;
       
   115 
       
   116 extern PyTypeObject pysqlite_ConnectionType;
       
   117 
       
   118 PyObject* pysqlite_connection_alloc(PyTypeObject* type, int aware);
       
   119 void pysqlite_connection_dealloc(pysqlite_Connection* self);
       
   120 PyObject* pysqlite_connection_cursor(pysqlite_Connection* self, PyObject* args, PyObject* kwargs);
       
   121 PyObject* pysqlite_connection_close(pysqlite_Connection* self, PyObject* args);
       
   122 PyObject* _pysqlite_connection_begin(pysqlite_Connection* self);
       
   123 PyObject* pysqlite_connection_commit(pysqlite_Connection* self, PyObject* args);
       
   124 PyObject* pysqlite_connection_rollback(pysqlite_Connection* self, PyObject* args);
       
   125 PyObject* pysqlite_connection_new(PyTypeObject* type, PyObject* args, PyObject* kw);
       
   126 int pysqlite_connection_init(pysqlite_Connection* self, PyObject* args, PyObject* kwargs);
       
   127 
       
   128 int pysqlite_check_thread(pysqlite_Connection* self);
       
   129 int pysqlite_check_connection(pysqlite_Connection* con);
       
   130 
       
   131 int pysqlite_connection_setup_types(void);
       
   132 
       
   133 #endif