17db96d56Sopenharmony_ci/*[clinic input] 27db96d56Sopenharmony_cipreserve 37db96d56Sopenharmony_ci[clinic start generated code]*/ 47db96d56Sopenharmony_ci 57db96d56Sopenharmony_ciPyDoc_STRVAR(_gdbm_gdbm_get__doc__, 67db96d56Sopenharmony_ci"get($self, key, default=None, /)\n" 77db96d56Sopenharmony_ci"--\n" 87db96d56Sopenharmony_ci"\n" 97db96d56Sopenharmony_ci"Get the value for key, or default if not present."); 107db96d56Sopenharmony_ci 117db96d56Sopenharmony_ci#define _GDBM_GDBM_GET_METHODDEF \ 127db96d56Sopenharmony_ci {"get", _PyCFunction_CAST(_gdbm_gdbm_get), METH_FASTCALL, _gdbm_gdbm_get__doc__}, 137db96d56Sopenharmony_ci 147db96d56Sopenharmony_cistatic PyObject * 157db96d56Sopenharmony_ci_gdbm_gdbm_get_impl(gdbmobject *self, PyObject *key, PyObject *default_value); 167db96d56Sopenharmony_ci 177db96d56Sopenharmony_cistatic PyObject * 187db96d56Sopenharmony_ci_gdbm_gdbm_get(gdbmobject *self, PyObject *const *args, Py_ssize_t nargs) 197db96d56Sopenharmony_ci{ 207db96d56Sopenharmony_ci PyObject *return_value = NULL; 217db96d56Sopenharmony_ci PyObject *key; 227db96d56Sopenharmony_ci PyObject *default_value = Py_None; 237db96d56Sopenharmony_ci 247db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("get", nargs, 1, 2)) { 257db96d56Sopenharmony_ci goto exit; 267db96d56Sopenharmony_ci } 277db96d56Sopenharmony_ci key = args[0]; 287db96d56Sopenharmony_ci if (nargs < 2) { 297db96d56Sopenharmony_ci goto skip_optional; 307db96d56Sopenharmony_ci } 317db96d56Sopenharmony_ci default_value = args[1]; 327db96d56Sopenharmony_ciskip_optional: 337db96d56Sopenharmony_ci return_value = _gdbm_gdbm_get_impl(self, key, default_value); 347db96d56Sopenharmony_ci 357db96d56Sopenharmony_ciexit: 367db96d56Sopenharmony_ci return return_value; 377db96d56Sopenharmony_ci} 387db96d56Sopenharmony_ci 397db96d56Sopenharmony_ciPyDoc_STRVAR(_gdbm_gdbm_setdefault__doc__, 407db96d56Sopenharmony_ci"setdefault($self, key, default=None, /)\n" 417db96d56Sopenharmony_ci"--\n" 427db96d56Sopenharmony_ci"\n" 437db96d56Sopenharmony_ci"Get value for key, or set it to default and return default if not present."); 447db96d56Sopenharmony_ci 457db96d56Sopenharmony_ci#define _GDBM_GDBM_SETDEFAULT_METHODDEF \ 467db96d56Sopenharmony_ci {"setdefault", _PyCFunction_CAST(_gdbm_gdbm_setdefault), METH_FASTCALL, _gdbm_gdbm_setdefault__doc__}, 477db96d56Sopenharmony_ci 487db96d56Sopenharmony_cistatic PyObject * 497db96d56Sopenharmony_ci_gdbm_gdbm_setdefault_impl(gdbmobject *self, PyObject *key, 507db96d56Sopenharmony_ci PyObject *default_value); 517db96d56Sopenharmony_ci 527db96d56Sopenharmony_cistatic PyObject * 537db96d56Sopenharmony_ci_gdbm_gdbm_setdefault(gdbmobject *self, PyObject *const *args, Py_ssize_t nargs) 547db96d56Sopenharmony_ci{ 557db96d56Sopenharmony_ci PyObject *return_value = NULL; 567db96d56Sopenharmony_ci PyObject *key; 577db96d56Sopenharmony_ci PyObject *default_value = Py_None; 587db96d56Sopenharmony_ci 597db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("setdefault", nargs, 1, 2)) { 607db96d56Sopenharmony_ci goto exit; 617db96d56Sopenharmony_ci } 627db96d56Sopenharmony_ci key = args[0]; 637db96d56Sopenharmony_ci if (nargs < 2) { 647db96d56Sopenharmony_ci goto skip_optional; 657db96d56Sopenharmony_ci } 667db96d56Sopenharmony_ci default_value = args[1]; 677db96d56Sopenharmony_ciskip_optional: 687db96d56Sopenharmony_ci return_value = _gdbm_gdbm_setdefault_impl(self, key, default_value); 697db96d56Sopenharmony_ci 707db96d56Sopenharmony_ciexit: 717db96d56Sopenharmony_ci return return_value; 727db96d56Sopenharmony_ci} 737db96d56Sopenharmony_ci 747db96d56Sopenharmony_ciPyDoc_STRVAR(_gdbm_gdbm_close__doc__, 757db96d56Sopenharmony_ci"close($self, /)\n" 767db96d56Sopenharmony_ci"--\n" 777db96d56Sopenharmony_ci"\n" 787db96d56Sopenharmony_ci"Close the database."); 797db96d56Sopenharmony_ci 807db96d56Sopenharmony_ci#define _GDBM_GDBM_CLOSE_METHODDEF \ 817db96d56Sopenharmony_ci {"close", (PyCFunction)_gdbm_gdbm_close, METH_NOARGS, _gdbm_gdbm_close__doc__}, 827db96d56Sopenharmony_ci 837db96d56Sopenharmony_cistatic PyObject * 847db96d56Sopenharmony_ci_gdbm_gdbm_close_impl(gdbmobject *self); 857db96d56Sopenharmony_ci 867db96d56Sopenharmony_cistatic PyObject * 877db96d56Sopenharmony_ci_gdbm_gdbm_close(gdbmobject *self, PyObject *Py_UNUSED(ignored)) 887db96d56Sopenharmony_ci{ 897db96d56Sopenharmony_ci return _gdbm_gdbm_close_impl(self); 907db96d56Sopenharmony_ci} 917db96d56Sopenharmony_ci 927db96d56Sopenharmony_ciPyDoc_STRVAR(_gdbm_gdbm_keys__doc__, 937db96d56Sopenharmony_ci"keys($self, /)\n" 947db96d56Sopenharmony_ci"--\n" 957db96d56Sopenharmony_ci"\n" 967db96d56Sopenharmony_ci"Get a list of all keys in the database."); 977db96d56Sopenharmony_ci 987db96d56Sopenharmony_ci#define _GDBM_GDBM_KEYS_METHODDEF \ 997db96d56Sopenharmony_ci {"keys", _PyCFunction_CAST(_gdbm_gdbm_keys), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _gdbm_gdbm_keys__doc__}, 1007db96d56Sopenharmony_ci 1017db96d56Sopenharmony_cistatic PyObject * 1027db96d56Sopenharmony_ci_gdbm_gdbm_keys_impl(gdbmobject *self, PyTypeObject *cls); 1037db96d56Sopenharmony_ci 1047db96d56Sopenharmony_cistatic PyObject * 1057db96d56Sopenharmony_ci_gdbm_gdbm_keys(gdbmobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 1067db96d56Sopenharmony_ci{ 1077db96d56Sopenharmony_ci if (nargs) { 1087db96d56Sopenharmony_ci PyErr_SetString(PyExc_TypeError, "keys() takes no arguments"); 1097db96d56Sopenharmony_ci return NULL; 1107db96d56Sopenharmony_ci } 1117db96d56Sopenharmony_ci return _gdbm_gdbm_keys_impl(self, cls); 1127db96d56Sopenharmony_ci} 1137db96d56Sopenharmony_ci 1147db96d56Sopenharmony_ciPyDoc_STRVAR(_gdbm_gdbm_firstkey__doc__, 1157db96d56Sopenharmony_ci"firstkey($self, /)\n" 1167db96d56Sopenharmony_ci"--\n" 1177db96d56Sopenharmony_ci"\n" 1187db96d56Sopenharmony_ci"Return the starting key for the traversal.\n" 1197db96d56Sopenharmony_ci"\n" 1207db96d56Sopenharmony_ci"It\'s possible to loop over every key in the database using this method\n" 1217db96d56Sopenharmony_ci"and the nextkey() method. The traversal is ordered by GDBM\'s internal\n" 1227db96d56Sopenharmony_ci"hash values, and won\'t be sorted by the key values."); 1237db96d56Sopenharmony_ci 1247db96d56Sopenharmony_ci#define _GDBM_GDBM_FIRSTKEY_METHODDEF \ 1257db96d56Sopenharmony_ci {"firstkey", _PyCFunction_CAST(_gdbm_gdbm_firstkey), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _gdbm_gdbm_firstkey__doc__}, 1267db96d56Sopenharmony_ci 1277db96d56Sopenharmony_cistatic PyObject * 1287db96d56Sopenharmony_ci_gdbm_gdbm_firstkey_impl(gdbmobject *self, PyTypeObject *cls); 1297db96d56Sopenharmony_ci 1307db96d56Sopenharmony_cistatic PyObject * 1317db96d56Sopenharmony_ci_gdbm_gdbm_firstkey(gdbmobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 1327db96d56Sopenharmony_ci{ 1337db96d56Sopenharmony_ci if (nargs) { 1347db96d56Sopenharmony_ci PyErr_SetString(PyExc_TypeError, "firstkey() takes no arguments"); 1357db96d56Sopenharmony_ci return NULL; 1367db96d56Sopenharmony_ci } 1377db96d56Sopenharmony_ci return _gdbm_gdbm_firstkey_impl(self, cls); 1387db96d56Sopenharmony_ci} 1397db96d56Sopenharmony_ci 1407db96d56Sopenharmony_ciPyDoc_STRVAR(_gdbm_gdbm_nextkey__doc__, 1417db96d56Sopenharmony_ci"nextkey($self, key, /)\n" 1427db96d56Sopenharmony_ci"--\n" 1437db96d56Sopenharmony_ci"\n" 1447db96d56Sopenharmony_ci"Returns the key that follows key in the traversal.\n" 1457db96d56Sopenharmony_ci"\n" 1467db96d56Sopenharmony_ci"The following code prints every key in the database db, without having\n" 1477db96d56Sopenharmony_ci"to create a list in memory that contains them all:\n" 1487db96d56Sopenharmony_ci"\n" 1497db96d56Sopenharmony_ci" k = db.firstkey()\n" 1507db96d56Sopenharmony_ci" while k is not None:\n" 1517db96d56Sopenharmony_ci" print(k)\n" 1527db96d56Sopenharmony_ci" k = db.nextkey(k)"); 1537db96d56Sopenharmony_ci 1547db96d56Sopenharmony_ci#define _GDBM_GDBM_NEXTKEY_METHODDEF \ 1557db96d56Sopenharmony_ci {"nextkey", _PyCFunction_CAST(_gdbm_gdbm_nextkey), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _gdbm_gdbm_nextkey__doc__}, 1567db96d56Sopenharmony_ci 1577db96d56Sopenharmony_cistatic PyObject * 1587db96d56Sopenharmony_ci_gdbm_gdbm_nextkey_impl(gdbmobject *self, PyTypeObject *cls, const char *key, 1597db96d56Sopenharmony_ci Py_ssize_t key_length); 1607db96d56Sopenharmony_ci 1617db96d56Sopenharmony_cistatic PyObject * 1627db96d56Sopenharmony_ci_gdbm_gdbm_nextkey(gdbmobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 1637db96d56Sopenharmony_ci{ 1647db96d56Sopenharmony_ci PyObject *return_value = NULL; 1657db96d56Sopenharmony_ci static const char * const _keywords[] = {"", NULL}; 1667db96d56Sopenharmony_ci static _PyArg_Parser _parser = {"s#:nextkey", _keywords, 0}; 1677db96d56Sopenharmony_ci const char *key; 1687db96d56Sopenharmony_ci Py_ssize_t key_length; 1697db96d56Sopenharmony_ci 1707db96d56Sopenharmony_ci if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, 1717db96d56Sopenharmony_ci &key, &key_length)) { 1727db96d56Sopenharmony_ci goto exit; 1737db96d56Sopenharmony_ci } 1747db96d56Sopenharmony_ci return_value = _gdbm_gdbm_nextkey_impl(self, cls, key, key_length); 1757db96d56Sopenharmony_ci 1767db96d56Sopenharmony_ciexit: 1777db96d56Sopenharmony_ci return return_value; 1787db96d56Sopenharmony_ci} 1797db96d56Sopenharmony_ci 1807db96d56Sopenharmony_ciPyDoc_STRVAR(_gdbm_gdbm_reorganize__doc__, 1817db96d56Sopenharmony_ci"reorganize($self, /)\n" 1827db96d56Sopenharmony_ci"--\n" 1837db96d56Sopenharmony_ci"\n" 1847db96d56Sopenharmony_ci"Reorganize the database.\n" 1857db96d56Sopenharmony_ci"\n" 1867db96d56Sopenharmony_ci"If you have carried out a lot of deletions and would like to shrink\n" 1877db96d56Sopenharmony_ci"the space used by the GDBM file, this routine will reorganize the\n" 1887db96d56Sopenharmony_ci"database. GDBM will not shorten the length of a database file except\n" 1897db96d56Sopenharmony_ci"by using this reorganization; otherwise, deleted file space will be\n" 1907db96d56Sopenharmony_ci"kept and reused as new (key,value) pairs are added."); 1917db96d56Sopenharmony_ci 1927db96d56Sopenharmony_ci#define _GDBM_GDBM_REORGANIZE_METHODDEF \ 1937db96d56Sopenharmony_ci {"reorganize", _PyCFunction_CAST(_gdbm_gdbm_reorganize), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _gdbm_gdbm_reorganize__doc__}, 1947db96d56Sopenharmony_ci 1957db96d56Sopenharmony_cistatic PyObject * 1967db96d56Sopenharmony_ci_gdbm_gdbm_reorganize_impl(gdbmobject *self, PyTypeObject *cls); 1977db96d56Sopenharmony_ci 1987db96d56Sopenharmony_cistatic PyObject * 1997db96d56Sopenharmony_ci_gdbm_gdbm_reorganize(gdbmobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 2007db96d56Sopenharmony_ci{ 2017db96d56Sopenharmony_ci if (nargs) { 2027db96d56Sopenharmony_ci PyErr_SetString(PyExc_TypeError, "reorganize() takes no arguments"); 2037db96d56Sopenharmony_ci return NULL; 2047db96d56Sopenharmony_ci } 2057db96d56Sopenharmony_ci return _gdbm_gdbm_reorganize_impl(self, cls); 2067db96d56Sopenharmony_ci} 2077db96d56Sopenharmony_ci 2087db96d56Sopenharmony_ciPyDoc_STRVAR(_gdbm_gdbm_sync__doc__, 2097db96d56Sopenharmony_ci"sync($self, /)\n" 2107db96d56Sopenharmony_ci"--\n" 2117db96d56Sopenharmony_ci"\n" 2127db96d56Sopenharmony_ci"Flush the database to the disk file.\n" 2137db96d56Sopenharmony_ci"\n" 2147db96d56Sopenharmony_ci"When the database has been opened in fast mode, this method forces\n" 2157db96d56Sopenharmony_ci"any unwritten data to be written to the disk."); 2167db96d56Sopenharmony_ci 2177db96d56Sopenharmony_ci#define _GDBM_GDBM_SYNC_METHODDEF \ 2187db96d56Sopenharmony_ci {"sync", _PyCFunction_CAST(_gdbm_gdbm_sync), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _gdbm_gdbm_sync__doc__}, 2197db96d56Sopenharmony_ci 2207db96d56Sopenharmony_cistatic PyObject * 2217db96d56Sopenharmony_ci_gdbm_gdbm_sync_impl(gdbmobject *self, PyTypeObject *cls); 2227db96d56Sopenharmony_ci 2237db96d56Sopenharmony_cistatic PyObject * 2247db96d56Sopenharmony_ci_gdbm_gdbm_sync(gdbmobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 2257db96d56Sopenharmony_ci{ 2267db96d56Sopenharmony_ci if (nargs) { 2277db96d56Sopenharmony_ci PyErr_SetString(PyExc_TypeError, "sync() takes no arguments"); 2287db96d56Sopenharmony_ci return NULL; 2297db96d56Sopenharmony_ci } 2307db96d56Sopenharmony_ci return _gdbm_gdbm_sync_impl(self, cls); 2317db96d56Sopenharmony_ci} 2327db96d56Sopenharmony_ci 2337db96d56Sopenharmony_ciPyDoc_STRVAR(dbmopen__doc__, 2347db96d56Sopenharmony_ci"open($module, filename, flags=\'r\', mode=0o666, /)\n" 2357db96d56Sopenharmony_ci"--\n" 2367db96d56Sopenharmony_ci"\n" 2377db96d56Sopenharmony_ci"Open a dbm database and return a dbm object.\n" 2387db96d56Sopenharmony_ci"\n" 2397db96d56Sopenharmony_ci"The filename argument is the name of the database file.\n" 2407db96d56Sopenharmony_ci"\n" 2417db96d56Sopenharmony_ci"The optional flags argument can be \'r\' (to open an existing database\n" 2427db96d56Sopenharmony_ci"for reading only -- default), \'w\' (to open an existing database for\n" 2437db96d56Sopenharmony_ci"reading and writing), \'c\' (which creates the database if it doesn\'t\n" 2447db96d56Sopenharmony_ci"exist), or \'n\' (which always creates a new empty database).\n" 2457db96d56Sopenharmony_ci"\n" 2467db96d56Sopenharmony_ci"Some versions of gdbm support additional flags which must be\n" 2477db96d56Sopenharmony_ci"appended to one of the flags described above. The module constant\n" 2487db96d56Sopenharmony_ci"\'open_flags\' is a string of valid additional flags. The \'f\' flag\n" 2497db96d56Sopenharmony_ci"opens the database in fast mode; altered data will not automatically\n" 2507db96d56Sopenharmony_ci"be written to the disk after every change. This results in faster\n" 2517db96d56Sopenharmony_ci"writes to the database, but may result in an inconsistent database\n" 2527db96d56Sopenharmony_ci"if the program crashes while the database is still open. Use the\n" 2537db96d56Sopenharmony_ci"sync() method to force any unwritten data to be written to the disk.\n" 2547db96d56Sopenharmony_ci"The \'s\' flag causes all database operations to be synchronized to\n" 2557db96d56Sopenharmony_ci"disk. The \'u\' flag disables locking of the database file.\n" 2567db96d56Sopenharmony_ci"\n" 2577db96d56Sopenharmony_ci"The optional mode argument is the Unix mode of the file, used only\n" 2587db96d56Sopenharmony_ci"when the database has to be created. It defaults to octal 0o666."); 2597db96d56Sopenharmony_ci 2607db96d56Sopenharmony_ci#define DBMOPEN_METHODDEF \ 2617db96d56Sopenharmony_ci {"open", _PyCFunction_CAST(dbmopen), METH_FASTCALL, dbmopen__doc__}, 2627db96d56Sopenharmony_ci 2637db96d56Sopenharmony_cistatic PyObject * 2647db96d56Sopenharmony_cidbmopen_impl(PyObject *module, PyObject *filename, const char *flags, 2657db96d56Sopenharmony_ci int mode); 2667db96d56Sopenharmony_ci 2677db96d56Sopenharmony_cistatic PyObject * 2687db96d56Sopenharmony_cidbmopen(PyObject *module, PyObject *const *args, Py_ssize_t nargs) 2697db96d56Sopenharmony_ci{ 2707db96d56Sopenharmony_ci PyObject *return_value = NULL; 2717db96d56Sopenharmony_ci PyObject *filename; 2727db96d56Sopenharmony_ci const char *flags = "r"; 2737db96d56Sopenharmony_ci int mode = 438; 2747db96d56Sopenharmony_ci 2757db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("open", nargs, 1, 3)) { 2767db96d56Sopenharmony_ci goto exit; 2777db96d56Sopenharmony_ci } 2787db96d56Sopenharmony_ci filename = args[0]; 2797db96d56Sopenharmony_ci if (nargs < 2) { 2807db96d56Sopenharmony_ci goto skip_optional; 2817db96d56Sopenharmony_ci } 2827db96d56Sopenharmony_ci if (!PyUnicode_Check(args[1])) { 2837db96d56Sopenharmony_ci _PyArg_BadArgument("open", "argument 2", "str", args[1]); 2847db96d56Sopenharmony_ci goto exit; 2857db96d56Sopenharmony_ci } 2867db96d56Sopenharmony_ci Py_ssize_t flags_length; 2877db96d56Sopenharmony_ci flags = PyUnicode_AsUTF8AndSize(args[1], &flags_length); 2887db96d56Sopenharmony_ci if (flags == NULL) { 2897db96d56Sopenharmony_ci goto exit; 2907db96d56Sopenharmony_ci } 2917db96d56Sopenharmony_ci if (strlen(flags) != (size_t)flags_length) { 2927db96d56Sopenharmony_ci PyErr_SetString(PyExc_ValueError, "embedded null character"); 2937db96d56Sopenharmony_ci goto exit; 2947db96d56Sopenharmony_ci } 2957db96d56Sopenharmony_ci if (nargs < 3) { 2967db96d56Sopenharmony_ci goto skip_optional; 2977db96d56Sopenharmony_ci } 2987db96d56Sopenharmony_ci mode = _PyLong_AsInt(args[2]); 2997db96d56Sopenharmony_ci if (mode == -1 && PyErr_Occurred()) { 3007db96d56Sopenharmony_ci goto exit; 3017db96d56Sopenharmony_ci } 3027db96d56Sopenharmony_ciskip_optional: 3037db96d56Sopenharmony_ci return_value = dbmopen_impl(module, filename, flags, mode); 3047db96d56Sopenharmony_ci 3057db96d56Sopenharmony_ciexit: 3067db96d56Sopenharmony_ci return return_value; 3077db96d56Sopenharmony_ci} 3087db96d56Sopenharmony_ci/*[clinic end generated code: output=617117d16956ac4d input=a9049054013a1b77]*/ 309