Branch data Line data Source code
1 : : /* prepare_protocol.c - the protocol for preparing values for SQLite 2 : : * 3 : : * Copyright (C) 2005-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 : : #include "prepare_protocol.h" 25 : : 26 : : static int 27 : 0 : pysqlite_prepare_protocol_init(pysqlite_PrepareProtocol *self, PyObject *args, 28 : : PyObject *kwargs) 29 : : { 30 : 0 : return 0; 31 : : } 32 : : 33 : : static int 34 : 0 : pysqlite_prepare_protocol_traverse(PyObject *self, visitproc visit, void *arg) 35 : : { 36 [ # # # # ]: 0 : Py_VISIT(Py_TYPE(self)); 37 : 0 : return 0; 38 : : } 39 : : 40 : : static void 41 : 0 : pysqlite_prepare_protocol_dealloc(pysqlite_PrepareProtocol *self) 42 : : { 43 : 0 : PyTypeObject *tp = Py_TYPE(self); 44 : 0 : PyObject_GC_UnTrack(self); 45 : 0 : tp->tp_free(self); 46 : 0 : Py_DECREF(tp); 47 : 0 : } 48 : : 49 : : PyDoc_STRVAR(doc, "PEP 246 style object adaption protocol type."); 50 : : 51 : : static PyType_Slot type_slots[] = { 52 : : {Py_tp_dealloc, pysqlite_prepare_protocol_dealloc}, 53 : : {Py_tp_init, pysqlite_prepare_protocol_init}, 54 : : {Py_tp_traverse, pysqlite_prepare_protocol_traverse}, 55 : : {Py_tp_doc, (void *)doc}, 56 : : {0, NULL}, 57 : : }; 58 : : 59 : : static PyType_Spec type_spec = { 60 : : .name = MODULE_NAME ".PrepareProtocol", 61 : : .basicsize = sizeof(pysqlite_PrepareProtocol), 62 : : .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | 63 : : Py_TPFLAGS_IMMUTABLETYPE), 64 : : .slots = type_slots, 65 : : }; 66 : : 67 : : int 68 : 5 : pysqlite_prepare_protocol_setup_types(PyObject *module) 69 : : { 70 : 5 : PyObject *type = PyType_FromModuleAndSpec(module, &type_spec, NULL); 71 [ - + ]: 5 : if (type == NULL) { 72 : 0 : return -1; 73 : : } 74 : 5 : pysqlite_state *state = pysqlite_get_state(module); 75 : 5 : state->PrepareProtocolType = (PyTypeObject *)type; 76 : 5 : return 0; 77 : : }