| /*[clinic input] | |
| preserve | |
| [clinic start generated code]*/ | |
| #include "pycore_critical_section.h"// Py_BEGIN_CRITICAL_SECTION() | |
| #include "pycore_modsupport.h" // _PyArg_CheckPositional() | |
| #include "pycore_unicodeobject.h" // _PyUnicode_AsUTF8NoNUL() | |
| PyDoc_STRVAR(_dbm_dbm_close__doc__, | |
| "close($self, /)\n" | |
| "--\n" | |
| "\n" | |
| "Close the database."); | |
| #define _DBM_DBM_CLOSE_METHODDEF \ | |
| {"close", (PyCFunction)_dbm_dbm_close, METH_NOARGS, _dbm_dbm_close__doc__}, | |
| static PyObject * | |
| _dbm_dbm_close_impl(dbmobject *self); | |
| static PyObject * | |
| _dbm_dbm_close(PyObject *self, PyObject *Py_UNUSED(ignored)) | |
| { | |
| PyObject *return_value = NULL; | |
| Py_BEGIN_CRITICAL_SECTION(self); | |
| return_value = _dbm_dbm_close_impl((dbmobject *)self); | |
| Py_END_CRITICAL_SECTION(); | |
| return return_value; | |
| } | |
| PyDoc_STRVAR(_dbm_dbm_keys__doc__, | |
| "keys($self, /)\n" | |
| "--\n" | |
| "\n" | |
| "Return a list of all keys in the database."); | |
| #define _DBM_DBM_KEYS_METHODDEF \ | |
| {"keys", _PyCFunction_CAST(_dbm_dbm_keys), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _dbm_dbm_keys__doc__}, | |
| static PyObject * | |
| _dbm_dbm_keys_impl(dbmobject *self, PyTypeObject *cls); | |
| static PyObject * | |
| _dbm_dbm_keys(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) | |
| { | |
| PyObject *return_value = NULL; | |
| if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { | |
| PyErr_SetString(PyExc_TypeError, "keys() takes no arguments"); | |
| goto exit; | |
| } | |
| Py_BEGIN_CRITICAL_SECTION(self); | |
| return_value = _dbm_dbm_keys_impl((dbmobject *)self, cls); | |
| Py_END_CRITICAL_SECTION(); | |
| exit: | |
| return return_value; | |
| } | |
| PyDoc_STRVAR(_dbm_dbm_get__doc__, | |
| "get($self, key, default=None, /)\n" | |
| "--\n" | |
| "\n" | |
| "Return the value for key if present, otherwise default."); | |
| #define _DBM_DBM_GET_METHODDEF \ | |
| {"get", _PyCFunction_CAST(_dbm_dbm_get), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _dbm_dbm_get__doc__}, | |
| static PyObject * | |
| _dbm_dbm_get_impl(dbmobject *self, PyTypeObject *cls, const char *key, | |
| Py_ssize_t key_length, PyObject *default_value); | |
| static PyObject * | |
| _dbm_dbm_get(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) | |
| { | |
| PyObject *return_value = NULL; | |
| const char *key; | |
| Py_ssize_t key_length; | |
| PyObject *default_value = Py_None; | |
| if (!_PyArg_NoKwnames("get", kwnames)) { | |
| goto exit; | |
| } | |
| if (!PyArg_ParseArray(args, nargs, "s#|O:get", | |
| &key, &key_length, &default_value)) { | |
| goto exit; | |
| } | |
| Py_BEGIN_CRITICAL_SECTION(self); | |
| return_value = _dbm_dbm_get_impl((dbmobject *)self, cls, key, key_length, default_value); | |
| Py_END_CRITICAL_SECTION(); | |
| exit: | |
| return return_value; | |
| } | |
| PyDoc_STRVAR(_dbm_dbm_setdefault__doc__, | |
| "setdefault($self, key, default=b\'\', /)\n" | |
| "--\n" | |
| "\n" | |
| "Return the value for key if present, otherwise default.\n" | |
| "\n" | |
| "If key is not in the database, it is inserted with default as the\n" | |
| "value."); | |
| #define _DBM_DBM_SETDEFAULT_METHODDEF \ | |
| {"setdefault", _PyCFunction_CAST(_dbm_dbm_setdefault), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _dbm_dbm_setdefault__doc__}, | |
| static PyObject * | |
| _dbm_dbm_setdefault_impl(dbmobject *self, PyTypeObject *cls, const char *key, | |
| Py_ssize_t key_length, PyObject *default_value); | |
| static PyObject * | |
| _dbm_dbm_setdefault(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) | |
| { | |
| PyObject *return_value = NULL; | |
| const char *key; | |
| Py_ssize_t key_length; | |
| PyObject *default_value = NULL; | |
| if (!_PyArg_NoKwnames("setdefault", kwnames)) { | |
| goto exit; | |
| } | |
| if (!PyArg_ParseArray(args, nargs, "s#|O:setdefault", | |
| &key, &key_length, &default_value)) { | |
| goto exit; | |
| } | |
| Py_BEGIN_CRITICAL_SECTION(self); | |
| return_value = _dbm_dbm_setdefault_impl((dbmobject *)self, cls, key, key_length, default_value); | |
| Py_END_CRITICAL_SECTION(); | |
| exit: | |
| return return_value; | |
| } | |
| PyDoc_STRVAR(_dbm_dbm_clear__doc__, | |
| "clear($self, /)\n" | |
| "--\n" | |
| "\n" | |
| "Remove all items from the database."); | |
| #define _DBM_DBM_CLEAR_METHODDEF \ | |
| {"clear", _PyCFunction_CAST(_dbm_dbm_clear), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _dbm_dbm_clear__doc__}, | |
| static PyObject * | |
| _dbm_dbm_clear_impl(dbmobject *self, PyTypeObject *cls); | |
| static PyObject * | |
| _dbm_dbm_clear(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) | |
| { | |
| PyObject *return_value = NULL; | |
| if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { | |
| PyErr_SetString(PyExc_TypeError, "clear() takes no arguments"); | |
| goto exit; | |
| } | |
| Py_BEGIN_CRITICAL_SECTION(self); | |
| return_value = _dbm_dbm_clear_impl((dbmobject *)self, cls); | |
| Py_END_CRITICAL_SECTION(); | |
| exit: | |
| return return_value; | |
| } | |
| PyDoc_STRVAR(_dbm_dbm___exit____doc__, | |
| "__exit__($self, /, *exc_info)\n" | |
| "--\n" | |
| "\n" | |
| "Close the database."); | |
| #define _DBM_DBM___EXIT___METHODDEF \ | |
| {"__exit__", _PyCFunction_CAST(_dbm_dbm___exit__), METH_FASTCALL, _dbm_dbm___exit____doc__}, | |
| static PyObject * | |
| _dbm_dbm___exit___impl(dbmobject *self, PyObject * const *exc_info, | |
| Py_ssize_t exc_info_length); | |
| static PyObject * | |
| _dbm_dbm___exit__(PyObject *self, PyObject *const *args, Py_ssize_t nargs) | |
| { | |
| PyObject *return_value = NULL; | |
| PyObject * const *exc_info; | |
| Py_ssize_t exc_info_length; | |
| exc_info = args; | |
| exc_info_length = nargs; | |
| Py_BEGIN_CRITICAL_SECTION(self); | |
| return_value = _dbm_dbm___exit___impl((dbmobject *)self, exc_info, exc_info_length); | |
| Py_END_CRITICAL_SECTION(); | |
| return return_value; | |
| } | |
| PyDoc_STRVAR(dbmopen__doc__, | |
| "open($module, filename, flags=\'r\', mode=0o666, /)\n" | |
| "--\n" | |
| "\n" | |
| "Return a database object.\n" | |
| "\n" | |
| " filename\n" | |
| " The filename to open.\n" | |
| " flags\n" | |
| " How to open the file. \"r\" for reading, \"w\" for writing, etc.\n" | |
| " mode\n" | |
| " If creating a new file, the mode bits for the new file\n" | |
| " (e.g. os.O_RDWR)."); | |
| #define DBMOPEN_METHODDEF \ | |
| {"open", _PyCFunction_CAST(dbmopen), METH_FASTCALL, dbmopen__doc__}, | |
| static PyObject * | |
| dbmopen_impl(PyObject *module, PyObject *filename, const char *flags, | |
| int mode); | |
| static PyObject * | |
| dbmopen(PyObject *module, PyObject *const *args, Py_ssize_t nargs) | |
| { | |
| PyObject *return_value = NULL; | |
| PyObject *filename; | |
| const char *flags = "r"; | |
| int mode = 438; | |
| if (!_PyArg_CheckPositional("open", nargs, 1, 3)) { | |
| goto exit; | |
| } | |
| filename = args[0]; | |
| if (nargs < 2) { | |
| goto skip_optional; | |
| } | |
| if (!PyUnicode_Check(args[1])) { | |
| _PyArg_BadArgument("open", "argument 2", "str", args[1]); | |
| goto exit; | |
| } | |
| flags = _PyUnicode_AsUTF8NoNUL(args[1]); | |
| if (flags == NULL) { | |
| goto exit; | |
| } | |
| if (nargs < 3) { | |
| goto skip_optional; | |
| } | |
| mode = PyLong_AsInt(args[2]); | |
| if (mode == -1 && PyErr_Occurred()) { | |
| goto exit; | |
| } | |
| skip_optional: | |
| return_value = dbmopen_impl(module, filename, flags, mode); | |
| exit: | |
| return return_value; | |
| } | |
| /*[clinic end generated code: output=f9d904af4ea43d1d input=a9049054013a1b77]*/ |