(root)/
Python-3.11.7/
Modules/
_sqlite/
prepare_protocol.c
       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  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  }