Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
allendowney
GitHub Repository: allendowney/cpython
Path: blob/main/Modules/_sqlite/prepare_protocol.c
12 views
1
/* prepare_protocol.c - the protocol for preparing values for SQLite
2
*
3
* Copyright (C) 2005-2010 Gerhard Häring <[email protected]>
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
pysqlite_prepare_protocol_init(pysqlite_PrepareProtocol *self, PyObject *args,
28
PyObject *kwargs)
29
{
30
return 0;
31
}
32
33
static int
34
pysqlite_prepare_protocol_traverse(PyObject *self, visitproc visit, void *arg)
35
{
36
Py_VISIT(Py_TYPE(self));
37
return 0;
38
}
39
40
static void
41
pysqlite_prepare_protocol_dealloc(pysqlite_PrepareProtocol *self)
42
{
43
PyTypeObject *tp = Py_TYPE(self);
44
PyObject_GC_UnTrack(self);
45
tp->tp_free(self);
46
Py_DECREF(tp);
47
}
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
pysqlite_prepare_protocol_setup_types(PyObject *module)
69
{
70
PyObject *type = PyType_FromModuleAndSpec(module, &type_spec, NULL);
71
if (type == NULL) {
72
return -1;
73
}
74
pysqlite_state *state = pysqlite_get_state(module);
75
state->PrepareProtocolType = (PyTypeObject *)type;
76
return 0;
77
}
78
79