17db96d56Sopenharmony_ci/* prepare_protocol.c - the protocol for preparing values for SQLite 27db96d56Sopenharmony_ci * 37db96d56Sopenharmony_ci * Copyright (C) 2005-2010 Gerhard Häring <gh@ghaering.de> 47db96d56Sopenharmony_ci * 57db96d56Sopenharmony_ci * This file is part of pysqlite. 67db96d56Sopenharmony_ci * 77db96d56Sopenharmony_ci * This software is provided 'as-is', without any express or implied 87db96d56Sopenharmony_ci * warranty. In no event will the authors be held liable for any damages 97db96d56Sopenharmony_ci * arising from the use of this software. 107db96d56Sopenharmony_ci * 117db96d56Sopenharmony_ci * Permission is granted to anyone to use this software for any purpose, 127db96d56Sopenharmony_ci * including commercial applications, and to alter it and redistribute it 137db96d56Sopenharmony_ci * freely, subject to the following restrictions: 147db96d56Sopenharmony_ci * 157db96d56Sopenharmony_ci * 1. The origin of this software must not be misrepresented; you must not 167db96d56Sopenharmony_ci * claim that you wrote the original software. If you use this software 177db96d56Sopenharmony_ci * in a product, an acknowledgment in the product documentation would be 187db96d56Sopenharmony_ci * appreciated but is not required. 197db96d56Sopenharmony_ci * 2. Altered source versions must be plainly marked as such, and must not be 207db96d56Sopenharmony_ci * misrepresented as being the original software. 217db96d56Sopenharmony_ci * 3. This notice may not be removed or altered from any source distribution. 227db96d56Sopenharmony_ci */ 237db96d56Sopenharmony_ci 247db96d56Sopenharmony_ci#include "prepare_protocol.h" 257db96d56Sopenharmony_ci 267db96d56Sopenharmony_cistatic int 277db96d56Sopenharmony_cipysqlite_prepare_protocol_init(pysqlite_PrepareProtocol *self, PyObject *args, 287db96d56Sopenharmony_ci PyObject *kwargs) 297db96d56Sopenharmony_ci{ 307db96d56Sopenharmony_ci return 0; 317db96d56Sopenharmony_ci} 327db96d56Sopenharmony_ci 337db96d56Sopenharmony_cistatic int 347db96d56Sopenharmony_cipysqlite_prepare_protocol_traverse(PyObject *self, visitproc visit, void *arg) 357db96d56Sopenharmony_ci{ 367db96d56Sopenharmony_ci Py_VISIT(Py_TYPE(self)); 377db96d56Sopenharmony_ci return 0; 387db96d56Sopenharmony_ci} 397db96d56Sopenharmony_ci 407db96d56Sopenharmony_cistatic void 417db96d56Sopenharmony_cipysqlite_prepare_protocol_dealloc(pysqlite_PrepareProtocol *self) 427db96d56Sopenharmony_ci{ 437db96d56Sopenharmony_ci PyTypeObject *tp = Py_TYPE(self); 447db96d56Sopenharmony_ci PyObject_GC_UnTrack(self); 457db96d56Sopenharmony_ci tp->tp_free(self); 467db96d56Sopenharmony_ci Py_DECREF(tp); 477db96d56Sopenharmony_ci} 487db96d56Sopenharmony_ci 497db96d56Sopenharmony_ciPyDoc_STRVAR(doc, "PEP 246 style object adaption protocol type."); 507db96d56Sopenharmony_ci 517db96d56Sopenharmony_cistatic PyType_Slot type_slots[] = { 527db96d56Sopenharmony_ci {Py_tp_dealloc, pysqlite_prepare_protocol_dealloc}, 537db96d56Sopenharmony_ci {Py_tp_init, pysqlite_prepare_protocol_init}, 547db96d56Sopenharmony_ci {Py_tp_traverse, pysqlite_prepare_protocol_traverse}, 557db96d56Sopenharmony_ci {Py_tp_doc, (void *)doc}, 567db96d56Sopenharmony_ci {0, NULL}, 577db96d56Sopenharmony_ci}; 587db96d56Sopenharmony_ci 597db96d56Sopenharmony_cistatic PyType_Spec type_spec = { 607db96d56Sopenharmony_ci .name = MODULE_NAME ".PrepareProtocol", 617db96d56Sopenharmony_ci .basicsize = sizeof(pysqlite_PrepareProtocol), 627db96d56Sopenharmony_ci .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | 637db96d56Sopenharmony_ci Py_TPFLAGS_IMMUTABLETYPE), 647db96d56Sopenharmony_ci .slots = type_slots, 657db96d56Sopenharmony_ci}; 667db96d56Sopenharmony_ci 677db96d56Sopenharmony_ciint 687db96d56Sopenharmony_cipysqlite_prepare_protocol_setup_types(PyObject *module) 697db96d56Sopenharmony_ci{ 707db96d56Sopenharmony_ci PyObject *type = PyType_FromModuleAndSpec(module, &type_spec, NULL); 717db96d56Sopenharmony_ci if (type == NULL) { 727db96d56Sopenharmony_ci return -1; 737db96d56Sopenharmony_ci } 747db96d56Sopenharmony_ci pysqlite_state *state = pysqlite_get_state(module); 757db96d56Sopenharmony_ci state->PrepareProtocolType = (PyTypeObject *)type; 767db96d56Sopenharmony_ci return 0; 777db96d56Sopenharmony_ci} 78