(root)/
Python-3.11.7/
Modules/
clinic/
_dbmmodule.c.h
       1  /*[clinic input]
       2  preserve
       3  [clinic start generated code]*/
       4  
       5  PyDoc_STRVAR(_dbm_dbm_close__doc__,
       6  "close($self, /)\n"
       7  "--\n"
       8  "\n"
       9  "Close the database.");
      10  
      11  #define _DBM_DBM_CLOSE_METHODDEF    \
      12      {"close", (PyCFunction)_dbm_dbm_close, METH_NOARGS, _dbm_dbm_close__doc__},
      13  
      14  static PyObject *
      15  _dbm_dbm_close_impl(dbmobject *self);
      16  
      17  static PyObject *
      18  _dbm_dbm_close(dbmobject *self, PyObject *Py_UNUSED(ignored))
      19  {
      20      return _dbm_dbm_close_impl(self);
      21  }
      22  
      23  PyDoc_STRVAR(_dbm_dbm_keys__doc__,
      24  "keys($self, /)\n"
      25  "--\n"
      26  "\n"
      27  "Return a list of all keys in the database.");
      28  
      29  #define _DBM_DBM_KEYS_METHODDEF    \
      30      {"keys", _PyCFunction_CAST(_dbm_dbm_keys), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _dbm_dbm_keys__doc__},
      31  
      32  static PyObject *
      33  _dbm_dbm_keys_impl(dbmobject *self, PyTypeObject *cls);
      34  
      35  static PyObject *
      36  _dbm_dbm_keys(dbmobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
      37  {
      38      if (nargs) {
      39          PyErr_SetString(PyExc_TypeError, "keys() takes no arguments");
      40          return NULL;
      41      }
      42      return _dbm_dbm_keys_impl(self, cls);
      43  }
      44  
      45  PyDoc_STRVAR(_dbm_dbm_get__doc__,
      46  "get($self, key, default=None, /)\n"
      47  "--\n"
      48  "\n"
      49  "Return the value for key if present, otherwise default.");
      50  
      51  #define _DBM_DBM_GET_METHODDEF    \
      52      {"get", _PyCFunction_CAST(_dbm_dbm_get), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _dbm_dbm_get__doc__},
      53  
      54  static PyObject *
      55  _dbm_dbm_get_impl(dbmobject *self, PyTypeObject *cls, const char *key,
      56                    Py_ssize_t key_length, PyObject *default_value);
      57  
      58  static PyObject *
      59  _dbm_dbm_get(dbmobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
      60  {
      61      PyObject *return_value = NULL;
      62      static const char * const _keywords[] = {"", "", NULL};
      63      static _PyArg_Parser _parser = {"s#|O:get", _keywords, 0};
      64      const char *key;
      65      Py_ssize_t key_length;
      66      PyObject *default_value = Py_None;
      67  
      68      if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
      69          &key, &key_length, &default_value)) {
      70          goto exit;
      71      }
      72      return_value = _dbm_dbm_get_impl(self, cls, key, key_length, default_value);
      73  
      74  exit:
      75      return return_value;
      76  }
      77  
      78  PyDoc_STRVAR(_dbm_dbm_setdefault__doc__,
      79  "setdefault($self, key, default=b\'\', /)\n"
      80  "--\n"
      81  "\n"
      82  "Return the value for key if present, otherwise default.\n"
      83  "\n"
      84  "If key is not in the database, it is inserted with default as the value.");
      85  
      86  #define _DBM_DBM_SETDEFAULT_METHODDEF    \
      87      {"setdefault", _PyCFunction_CAST(_dbm_dbm_setdefault), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _dbm_dbm_setdefault__doc__},
      88  
      89  static PyObject *
      90  _dbm_dbm_setdefault_impl(dbmobject *self, PyTypeObject *cls, const char *key,
      91                           Py_ssize_t key_length, PyObject *default_value);
      92  
      93  static PyObject *
      94  _dbm_dbm_setdefault(dbmobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
      95  {
      96      PyObject *return_value = NULL;
      97      static const char * const _keywords[] = {"", "", NULL};
      98      static _PyArg_Parser _parser = {"s#|O:setdefault", _keywords, 0};
      99      const char *key;
     100      Py_ssize_t key_length;
     101      PyObject *default_value = NULL;
     102  
     103      if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
     104          &key, &key_length, &default_value)) {
     105          goto exit;
     106      }
     107      return_value = _dbm_dbm_setdefault_impl(self, cls, key, key_length, default_value);
     108  
     109  exit:
     110      return return_value;
     111  }
     112  
     113  PyDoc_STRVAR(dbmopen__doc__,
     114  "open($module, filename, flags=\'r\', mode=0o666, /)\n"
     115  "--\n"
     116  "\n"
     117  "Return a database object.\n"
     118  "\n"
     119  "  filename\n"
     120  "    The filename to open.\n"
     121  "  flags\n"
     122  "    How to open the file.  \"r\" for reading, \"w\" for writing, etc.\n"
     123  "  mode\n"
     124  "    If creating a new file, the mode bits for the new file\n"
     125  "    (e.g. os.O_RDWR).");
     126  
     127  #define DBMOPEN_METHODDEF    \
     128      {"open", _PyCFunction_CAST(dbmopen), METH_FASTCALL, dbmopen__doc__},
     129  
     130  static PyObject *
     131  dbmopen_impl(PyObject *module, PyObject *filename, const char *flags,
     132               int mode);
     133  
     134  static PyObject *
     135  dbmopen(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
     136  {
     137      PyObject *return_value = NULL;
     138      PyObject *filename;
     139      const char *flags = "r";
     140      int mode = 438;
     141  
     142      if (!_PyArg_CheckPositional("open", nargs, 1, 3)) {
     143          goto exit;
     144      }
     145      filename = args[0];
     146      if (nargs < 2) {
     147          goto skip_optional;
     148      }
     149      if (!PyUnicode_Check(args[1])) {
     150          _PyArg_BadArgument("open", "argument 2", "str", args[1]);
     151          goto exit;
     152      }
     153      Py_ssize_t flags_length;
     154      flags = PyUnicode_AsUTF8AndSize(args[1], &flags_length);
     155      if (flags == NULL) {
     156          goto exit;
     157      }
     158      if (strlen(flags) != (size_t)flags_length) {
     159          PyErr_SetString(PyExc_ValueError, "embedded null character");
     160          goto exit;
     161      }
     162      if (nargs < 3) {
     163          goto skip_optional;
     164      }
     165      mode = _PyLong_AsInt(args[2]);
     166      if (mode == -1 && PyErr_Occurred()) {
     167          goto exit;
     168      }
     169  skip_optional:
     170      return_value = dbmopen_impl(module, filename, flags, mode);
     171  
     172  exit:
     173      return return_value;
     174  }
     175  /*[clinic end generated code: output=5798278a05032d0e input=a9049054013a1b77]*/