Serhiy Storchaka | 1009bf1 | 2015-04-03 23:53:51 +0300 | [diff] [blame] | 1 | /*[clinic input] |
| 2 | preserve |
| 3 | [clinic start generated code]*/ |
| 4 | |
Serhiy Storchaka | 9260e77 | 2015-04-17 21:05:18 +0300 | [diff] [blame] | 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)_dbm_dbm_keys, METH_NOARGS, _dbm_dbm_keys__doc__}, |
| 31 | |
| 32 | static PyObject * |
| 33 | _dbm_dbm_keys_impl(dbmobject *self); |
| 34 | |
| 35 | static PyObject * |
| 36 | _dbm_dbm_keys(dbmobject *self, PyObject *Py_UNUSED(ignored)) |
| 37 | { |
| 38 | return _dbm_dbm_keys_impl(self); |
| 39 | } |
| 40 | |
| 41 | PyDoc_STRVAR(_dbm_dbm_get__doc__, |
| 42 | "get($self, key, default=b\'\', /)\n" |
Serhiy Storchaka | 1009bf1 | 2015-04-03 23:53:51 +0300 | [diff] [blame] | 43 | "--\n" |
| 44 | "\n" |
| 45 | "Return the value for key if present, otherwise default."); |
| 46 | |
Serhiy Storchaka | 9260e77 | 2015-04-17 21:05:18 +0300 | [diff] [blame] | 47 | #define _DBM_DBM_GET_METHODDEF \ |
Victor Stinner | 259f0e4 | 2017-01-17 01:35:17 +0100 | [diff] [blame] | 48 | {"get", (PyCFunction)_dbm_dbm_get, METH_FASTCALL, _dbm_dbm_get__doc__}, |
Serhiy Storchaka | 1009bf1 | 2015-04-03 23:53:51 +0300 | [diff] [blame] | 49 | |
| 50 | static PyObject * |
Serhiy Storchaka | 9260e77 | 2015-04-17 21:05:18 +0300 | [diff] [blame] | 51 | _dbm_dbm_get_impl(dbmobject *self, const char *key, |
| 52 | Py_ssize_clean_t key_length, PyObject *default_value); |
Serhiy Storchaka | 1009bf1 | 2015-04-03 23:53:51 +0300 | [diff] [blame] | 53 | |
| 54 | static PyObject * |
Victor Stinner | 259f0e4 | 2017-01-17 01:35:17 +0100 | [diff] [blame] | 55 | _dbm_dbm_get(dbmobject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames) |
Serhiy Storchaka | 1009bf1 | 2015-04-03 23:53:51 +0300 | [diff] [blame] | 56 | { |
| 57 | PyObject *return_value = NULL; |
| 58 | const char *key; |
| 59 | Py_ssize_clean_t key_length; |
Serhiy Storchaka | 9260e77 | 2015-04-17 21:05:18 +0300 | [diff] [blame] | 60 | PyObject *default_value = NULL; |
Serhiy Storchaka | 1009bf1 | 2015-04-03 23:53:51 +0300 | [diff] [blame] | 61 | |
Victor Stinner | 259f0e4 | 2017-01-17 01:35:17 +0100 | [diff] [blame] | 62 | if (!_PyArg_ParseStack(args, nargs, "s#|O:get", |
Serhiy Storchaka | 5dee655 | 2016-06-09 16:16:06 +0300 | [diff] [blame] | 63 | &key, &key_length, &default_value)) { |
Serhiy Storchaka | 1009bf1 | 2015-04-03 23:53:51 +0300 | [diff] [blame] | 64 | goto exit; |
Serhiy Storchaka | 5dee655 | 2016-06-09 16:16:06 +0300 | [diff] [blame] | 65 | } |
Victor Stinner | 259f0e4 | 2017-01-17 01:35:17 +0100 | [diff] [blame] | 66 | |
| 67 | if (!_PyArg_NoStackKeywords("get", kwnames)) { |
| 68 | goto exit; |
| 69 | } |
Serhiy Storchaka | 9260e77 | 2015-04-17 21:05:18 +0300 | [diff] [blame] | 70 | return_value = _dbm_dbm_get_impl(self, key, key_length, default_value); |
| 71 | |
| 72 | exit: |
| 73 | return return_value; |
| 74 | } |
| 75 | |
| 76 | PyDoc_STRVAR(_dbm_dbm_setdefault__doc__, |
| 77 | "setdefault($self, key, default=b\'\', /)\n" |
| 78 | "--\n" |
| 79 | "\n" |
| 80 | "Return the value for key if present, otherwise default.\n" |
| 81 | "\n" |
| 82 | "If key is not in the database, it is inserted with default as the value."); |
| 83 | |
| 84 | #define _DBM_DBM_SETDEFAULT_METHODDEF \ |
Victor Stinner | 259f0e4 | 2017-01-17 01:35:17 +0100 | [diff] [blame] | 85 | {"setdefault", (PyCFunction)_dbm_dbm_setdefault, METH_FASTCALL, _dbm_dbm_setdefault__doc__}, |
Serhiy Storchaka | 9260e77 | 2015-04-17 21:05:18 +0300 | [diff] [blame] | 86 | |
| 87 | static PyObject * |
| 88 | _dbm_dbm_setdefault_impl(dbmobject *self, const char *key, |
| 89 | Py_ssize_clean_t key_length, |
| 90 | PyObject *default_value); |
| 91 | |
| 92 | static PyObject * |
Victor Stinner | 259f0e4 | 2017-01-17 01:35:17 +0100 | [diff] [blame] | 93 | _dbm_dbm_setdefault(dbmobject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames) |
Serhiy Storchaka | 9260e77 | 2015-04-17 21:05:18 +0300 | [diff] [blame] | 94 | { |
| 95 | PyObject *return_value = NULL; |
| 96 | const char *key; |
| 97 | Py_ssize_clean_t key_length; |
| 98 | PyObject *default_value = NULL; |
| 99 | |
Victor Stinner | 259f0e4 | 2017-01-17 01:35:17 +0100 | [diff] [blame] | 100 | if (!_PyArg_ParseStack(args, nargs, "s#|O:setdefault", |
Serhiy Storchaka | 5dee655 | 2016-06-09 16:16:06 +0300 | [diff] [blame] | 101 | &key, &key_length, &default_value)) { |
Serhiy Storchaka | 9260e77 | 2015-04-17 21:05:18 +0300 | [diff] [blame] | 102 | goto exit; |
Serhiy Storchaka | 5dee655 | 2016-06-09 16:16:06 +0300 | [diff] [blame] | 103 | } |
Victor Stinner | 259f0e4 | 2017-01-17 01:35:17 +0100 | [diff] [blame] | 104 | |
| 105 | if (!_PyArg_NoStackKeywords("setdefault", kwnames)) { |
| 106 | goto exit; |
| 107 | } |
Serhiy Storchaka | 9260e77 | 2015-04-17 21:05:18 +0300 | [diff] [blame] | 108 | return_value = _dbm_dbm_setdefault_impl(self, key, key_length, default_value); |
Serhiy Storchaka | 1009bf1 | 2015-04-03 23:53:51 +0300 | [diff] [blame] | 109 | |
| 110 | exit: |
| 111 | return return_value; |
| 112 | } |
| 113 | |
| 114 | PyDoc_STRVAR(dbmopen__doc__, |
| 115 | "open($module, filename, flags=\'r\', mode=0o666, /)\n" |
| 116 | "--\n" |
| 117 | "\n" |
| 118 | "Return a database object.\n" |
| 119 | "\n" |
| 120 | " filename\n" |
| 121 | " The filename to open.\n" |
| 122 | " flags\n" |
| 123 | " How to open the file. \"r\" for reading, \"w\" for writing, etc.\n" |
| 124 | " mode\n" |
| 125 | " If creating a new file, the mode bits for the new file\n" |
| 126 | " (e.g. os.O_RDWR)."); |
| 127 | |
| 128 | #define DBMOPEN_METHODDEF \ |
Victor Stinner | 259f0e4 | 2017-01-17 01:35:17 +0100 | [diff] [blame] | 129 | {"open", (PyCFunction)dbmopen, METH_FASTCALL, dbmopen__doc__}, |
Serhiy Storchaka | 1009bf1 | 2015-04-03 23:53:51 +0300 | [diff] [blame] | 130 | |
| 131 | static PyObject * |
Serhiy Storchaka | 1a2b24f | 2016-07-07 17:35:15 +0300 | [diff] [blame] | 132 | dbmopen_impl(PyObject *module, const char *filename, const char *flags, |
Larry Hastings | 89964c4 | 2015-04-14 18:07:59 -0400 | [diff] [blame] | 133 | int mode); |
Serhiy Storchaka | 1009bf1 | 2015-04-03 23:53:51 +0300 | [diff] [blame] | 134 | |
| 135 | static PyObject * |
Victor Stinner | 259f0e4 | 2017-01-17 01:35:17 +0100 | [diff] [blame] | 136 | dbmopen(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames) |
Serhiy Storchaka | 1009bf1 | 2015-04-03 23:53:51 +0300 | [diff] [blame] | 137 | { |
| 138 | PyObject *return_value = NULL; |
| 139 | const char *filename; |
| 140 | const char *flags = "r"; |
| 141 | int mode = 438; |
| 142 | |
Victor Stinner | 259f0e4 | 2017-01-17 01:35:17 +0100 | [diff] [blame] | 143 | if (!_PyArg_ParseStack(args, nargs, "s|si:open", |
Serhiy Storchaka | 5dee655 | 2016-06-09 16:16:06 +0300 | [diff] [blame] | 144 | &filename, &flags, &mode)) { |
Serhiy Storchaka | 1009bf1 | 2015-04-03 23:53:51 +0300 | [diff] [blame] | 145 | goto exit; |
Serhiy Storchaka | 5dee655 | 2016-06-09 16:16:06 +0300 | [diff] [blame] | 146 | } |
Victor Stinner | 259f0e4 | 2017-01-17 01:35:17 +0100 | [diff] [blame] | 147 | |
| 148 | if (!_PyArg_NoStackKeywords("open", kwnames)) { |
| 149 | goto exit; |
| 150 | } |
Serhiy Storchaka | 1009bf1 | 2015-04-03 23:53:51 +0300 | [diff] [blame] | 151 | return_value = dbmopen_impl(module, filename, flags, mode); |
| 152 | |
| 153 | exit: |
| 154 | return return_value; |
| 155 | } |
Victor Stinner | 259f0e4 | 2017-01-17 01:35:17 +0100 | [diff] [blame] | 156 | /*[clinic end generated code: output=4fdb7be8bd03cbce input=a9049054013a1b77]*/ |