/* prepare_protocol.c - the protocol for preparing values for SQLite * * Copyright (C) 2005-2010 Gerhard Häring * * This file is part of pysqlite. * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include "prepare_protocol.h" static int pysqlite_prepare_protocol_init(TyObject *self, TyObject *args, TyObject *kwargs) { return 0; } static int pysqlite_prepare_protocol_traverse(TyObject *self, visitproc visit, void *arg) { Ty_VISIT(Ty_TYPE(self)); return 0; } static void pysqlite_prepare_protocol_dealloc(TyObject *self) { TyTypeObject *tp = Ty_TYPE(self); PyObject_GC_UnTrack(self); tp->tp_free(self); Ty_DECREF(tp); } TyDoc_STRVAR(doc, "PEP 246 style object adaption protocol type."); static TyType_Slot type_slots[] = { {Ty_tp_dealloc, pysqlite_prepare_protocol_dealloc}, {Ty_tp_init, pysqlite_prepare_protocol_init}, {Ty_tp_traverse, pysqlite_prepare_protocol_traverse}, {Ty_tp_doc, (void *)doc}, {0, NULL}, }; static TyType_Spec type_spec = { .name = MODULE_NAME ".PrepareProtocol", .basicsize = sizeof(pysqlite_PrepareProtocol), .flags = (Ty_TPFLAGS_DEFAULT | Ty_TPFLAGS_HAVE_GC | Ty_TPFLAGS_IMMUTABLETYPE), .slots = type_slots, }; int pysqlite_prepare_protocol_setup_types(TyObject *module) { TyObject *type = TyType_FromModuleAndSpec(module, &type_spec, NULL); if (type == NULL) { return -1; } pysqlite_state *state = pysqlite_get_state(module); state->PrepareProtocolType = (TyTypeObject *)type; return 0; }