blob: 06f0b04977d3f3200ba052f2a5ef37ae7d84d357 [file] [log] [blame]
Serhiy Storchaka1009bf12015-04-03 23:53:51 +03001/*[clinic input]
2preserve
3[clinic start generated code]*/
4
Serhiy Storchaka9260e772015-04-17 21:05:18 +03005PyDoc_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
14static PyObject *
15_dbm_dbm_close_impl(dbmobject *self);
16
17static PyObject *
18_dbm_dbm_close(dbmobject *self, PyObject *Py_UNUSED(ignored))
19{
20 return _dbm_dbm_close_impl(self);
21}
22
23PyDoc_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
32static PyObject *
33_dbm_dbm_keys_impl(dbmobject *self);
34
35static PyObject *
36_dbm_dbm_keys(dbmobject *self, PyObject *Py_UNUSED(ignored))
37{
38 return _dbm_dbm_keys_impl(self);
39}
40
41PyDoc_STRVAR(_dbm_dbm_get__doc__,
42"get($self, key, default=b\'\', /)\n"
Serhiy Storchaka1009bf12015-04-03 23:53:51 +030043"--\n"
44"\n"
45"Return the value for key if present, otherwise default.");
46
Serhiy Storchaka9260e772015-04-17 21:05:18 +030047#define _DBM_DBM_GET_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +010048 {"get", (PyCFunction)_dbm_dbm_get, METH_FASTCALL, _dbm_dbm_get__doc__},
Serhiy Storchaka1009bf12015-04-03 23:53:51 +030049
50static PyObject *
Serhiy Storchaka9260e772015-04-17 21:05:18 +030051_dbm_dbm_get_impl(dbmobject *self, const char *key,
52 Py_ssize_clean_t key_length, PyObject *default_value);
Serhiy Storchaka1009bf12015-04-03 23:53:51 +030053
54static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +010055_dbm_dbm_get(dbmobject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka1009bf12015-04-03 23:53:51 +030056{
57 PyObject *return_value = NULL;
58 const char *key;
59 Py_ssize_clean_t key_length;
Serhiy Storchaka9260e772015-04-17 21:05:18 +030060 PyObject *default_value = NULL;
Serhiy Storchaka1009bf12015-04-03 23:53:51 +030061
Victor Stinner259f0e42017-01-17 01:35:17 +010062 if (!_PyArg_ParseStack(args, nargs, "s#|O:get",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +030063 &key, &key_length, &default_value)) {
Serhiy Storchaka1009bf12015-04-03 23:53:51 +030064 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +030065 }
Victor Stinner259f0e42017-01-17 01:35:17 +010066
67 if (!_PyArg_NoStackKeywords("get", kwnames)) {
68 goto exit;
69 }
Serhiy Storchaka9260e772015-04-17 21:05:18 +030070 return_value = _dbm_dbm_get_impl(self, key, key_length, default_value);
71
72exit:
73 return return_value;
74}
75
76PyDoc_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 Stinner259f0e42017-01-17 01:35:17 +010085 {"setdefault", (PyCFunction)_dbm_dbm_setdefault, METH_FASTCALL, _dbm_dbm_setdefault__doc__},
Serhiy Storchaka9260e772015-04-17 21:05:18 +030086
87static PyObject *
88_dbm_dbm_setdefault_impl(dbmobject *self, const char *key,
89 Py_ssize_clean_t key_length,
90 PyObject *default_value);
91
92static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +010093_dbm_dbm_setdefault(dbmobject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka9260e772015-04-17 21:05:18 +030094{
95 PyObject *return_value = NULL;
96 const char *key;
97 Py_ssize_clean_t key_length;
98 PyObject *default_value = NULL;
99
Victor Stinner259f0e42017-01-17 01:35:17 +0100100 if (!_PyArg_ParseStack(args, nargs, "s#|O:setdefault",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300101 &key, &key_length, &default_value)) {
Serhiy Storchaka9260e772015-04-17 21:05:18 +0300102 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300103 }
Victor Stinner259f0e42017-01-17 01:35:17 +0100104
105 if (!_PyArg_NoStackKeywords("setdefault", kwnames)) {
106 goto exit;
107 }
Serhiy Storchaka9260e772015-04-17 21:05:18 +0300108 return_value = _dbm_dbm_setdefault_impl(self, key, key_length, default_value);
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300109
110exit:
111 return return_value;
112}
113
114PyDoc_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 Stinner259f0e42017-01-17 01:35:17 +0100129 {"open", (PyCFunction)dbmopen, METH_FASTCALL, dbmopen__doc__},
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300130
131static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300132dbmopen_impl(PyObject *module, const char *filename, const char *flags,
Larry Hastings89964c42015-04-14 18:07:59 -0400133 int mode);
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300134
135static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +0100136dbmopen(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300137{
138 PyObject *return_value = NULL;
139 const char *filename;
140 const char *flags = "r";
141 int mode = 438;
142
Victor Stinner259f0e42017-01-17 01:35:17 +0100143 if (!_PyArg_ParseStack(args, nargs, "s|si:open",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300144 &filename, &flags, &mode)) {
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300145 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300146 }
Victor Stinner259f0e42017-01-17 01:35:17 +0100147
148 if (!_PyArg_NoStackKeywords("open", kwnames)) {
149 goto exit;
150 }
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300151 return_value = dbmopen_impl(module, filename, flags, mode);
152
153exit:
154 return return_value;
155}
Victor Stinner259f0e42017-01-17 01:35:17 +0100156/*[clinic end generated code: output=4fdb7be8bd03cbce input=a9049054013a1b77]*/