1 /*[clinic input]
2 preserve
3 [clinic start generated code]*/
4
5 static PyObject *
6 long_new_impl(PyTypeObject *type, PyObject *x, PyObject *obase);
7
8 static PyObject *
long_new(PyTypeObject * type,PyObject * args,PyObject * kwargs)9 long_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
10 {
11 PyObject *return_value = NULL;
12 static const char * const _keywords[] = {"", "base", NULL};
13 static _PyArg_Parser _parser = {NULL, _keywords, "int", 0};
14 PyObject *argsbuf[2];
15 PyObject * const *fastargs;
16 Py_ssize_t nargs = PyTuple_GET_SIZE(args);
17 Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 0;
18 PyObject *x = NULL;
19 PyObject *obase = NULL;
20
21 fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 0, 2, 0, argsbuf);
22 if (!fastargs) {
23 goto exit;
24 }
25 if (nargs < 1) {
26 goto skip_optional_posonly;
27 }
28 noptargs--;
29 x = fastargs[0];
30 skip_optional_posonly:
31 if (!noptargs) {
32 goto skip_optional_pos;
33 }
34 obase = fastargs[1];
35 skip_optional_pos:
36 return_value = long_new_impl(type, x, obase);
37
38 exit:
39 return return_value;
40 }
41
42 PyDoc_STRVAR(int___getnewargs____doc__,
43 "__getnewargs__($self, /)\n"
44 "--\n"
45 "\n");
46
47 #define INT___GETNEWARGS___METHODDEF \
48 {"__getnewargs__", (PyCFunction)int___getnewargs__, METH_NOARGS, int___getnewargs____doc__},
49
50 static PyObject *
51 int___getnewargs___impl(PyObject *self);
52
53 static PyObject *
int___getnewargs__(PyObject * self,PyObject * Py_UNUSED (ignored))54 int___getnewargs__(PyObject *self, PyObject *Py_UNUSED(ignored))
55 {
56 return int___getnewargs___impl(self);
57 }
58
59 PyDoc_STRVAR(int___format____doc__,
60 "__format__($self, format_spec, /)\n"
61 "--\n"
62 "\n");
63
64 #define INT___FORMAT___METHODDEF \
65 {"__format__", (PyCFunction)int___format__, METH_O, int___format____doc__},
66
67 static PyObject *
68 int___format___impl(PyObject *self, PyObject *format_spec);
69
70 static PyObject *
int___format__(PyObject * self,PyObject * arg)71 int___format__(PyObject *self, PyObject *arg)
72 {
73 PyObject *return_value = NULL;
74 PyObject *format_spec;
75
76 if (!PyUnicode_Check(arg)) {
77 _PyArg_BadArgument("__format__", "argument", "str", arg);
78 goto exit;
79 }
80 if (PyUnicode_READY(arg) == -1) {
81 goto exit;
82 }
83 format_spec = arg;
84 return_value = int___format___impl(self, format_spec);
85
86 exit:
87 return return_value;
88 }
89
90 PyDoc_STRVAR(int___sizeof____doc__,
91 "__sizeof__($self, /)\n"
92 "--\n"
93 "\n"
94 "Returns size in memory, in bytes.");
95
96 #define INT___SIZEOF___METHODDEF \
97 {"__sizeof__", (PyCFunction)int___sizeof__, METH_NOARGS, int___sizeof____doc__},
98
99 static Py_ssize_t
100 int___sizeof___impl(PyObject *self);
101
102 static PyObject *
int___sizeof__(PyObject * self,PyObject * Py_UNUSED (ignored))103 int___sizeof__(PyObject *self, PyObject *Py_UNUSED(ignored))
104 {
105 PyObject *return_value = NULL;
106 Py_ssize_t _return_value;
107
108 _return_value = int___sizeof___impl(self);
109 if ((_return_value == -1) && PyErr_Occurred()) {
110 goto exit;
111 }
112 return_value = PyLong_FromSsize_t(_return_value);
113
114 exit:
115 return return_value;
116 }
117
118 PyDoc_STRVAR(int_bit_length__doc__,
119 "bit_length($self, /)\n"
120 "--\n"
121 "\n"
122 "Number of bits necessary to represent self in binary.\n"
123 "\n"
124 ">>> bin(37)\n"
125 "\'0b100101\'\n"
126 ">>> (37).bit_length()\n"
127 "6");
128
129 #define INT_BIT_LENGTH_METHODDEF \
130 {"bit_length", (PyCFunction)int_bit_length, METH_NOARGS, int_bit_length__doc__},
131
132 static PyObject *
133 int_bit_length_impl(PyObject *self);
134
135 static PyObject *
int_bit_length(PyObject * self,PyObject * Py_UNUSED (ignored))136 int_bit_length(PyObject *self, PyObject *Py_UNUSED(ignored))
137 {
138 return int_bit_length_impl(self);
139 }
140
141 PyDoc_STRVAR(int_as_integer_ratio__doc__,
142 "as_integer_ratio($self, /)\n"
143 "--\n"
144 "\n"
145 "Return integer ratio.\n"
146 "\n"
147 "Return a pair of integers, whose ratio is exactly equal to the original int\n"
148 "and with a positive denominator.\n"
149 "\n"
150 ">>> (10).as_integer_ratio()\n"
151 "(10, 1)\n"
152 ">>> (-10).as_integer_ratio()\n"
153 "(-10, 1)\n"
154 ">>> (0).as_integer_ratio()\n"
155 "(0, 1)");
156
157 #define INT_AS_INTEGER_RATIO_METHODDEF \
158 {"as_integer_ratio", (PyCFunction)int_as_integer_ratio, METH_NOARGS, int_as_integer_ratio__doc__},
159
160 static PyObject *
161 int_as_integer_ratio_impl(PyObject *self);
162
163 static PyObject *
int_as_integer_ratio(PyObject * self,PyObject * Py_UNUSED (ignored))164 int_as_integer_ratio(PyObject *self, PyObject *Py_UNUSED(ignored))
165 {
166 return int_as_integer_ratio_impl(self);
167 }
168
169 PyDoc_STRVAR(int_to_bytes__doc__,
170 "to_bytes($self, /, length, byteorder, *, signed=False)\n"
171 "--\n"
172 "\n"
173 "Return an array of bytes representing an integer.\n"
174 "\n"
175 " length\n"
176 " Length of bytes object to use. An OverflowError is raised if the\n"
177 " integer is not representable with the given number of bytes.\n"
178 " byteorder\n"
179 " The byte order used to represent the integer. If byteorder is \'big\',\n"
180 " the most significant byte is at the beginning of the byte array. If\n"
181 " byteorder is \'little\', the most significant byte is at the end of the\n"
182 " byte array. To request the native byte order of the host system, use\n"
183 " `sys.byteorder\' as the byte order value.\n"
184 " signed\n"
185 " Determines whether two\'s complement is used to represent the integer.\n"
186 " If signed is False and a negative integer is given, an OverflowError\n"
187 " is raised.");
188
189 #define INT_TO_BYTES_METHODDEF \
190 {"to_bytes", (PyCFunction)(void(*)(void))int_to_bytes, METH_FASTCALL|METH_KEYWORDS, int_to_bytes__doc__},
191
192 static PyObject *
193 int_to_bytes_impl(PyObject *self, Py_ssize_t length, PyObject *byteorder,
194 int is_signed);
195
196 static PyObject *
int_to_bytes(PyObject * self,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)197 int_to_bytes(PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
198 {
199 PyObject *return_value = NULL;
200 static const char * const _keywords[] = {"length", "byteorder", "signed", NULL};
201 static _PyArg_Parser _parser = {NULL, _keywords, "to_bytes", 0};
202 PyObject *argsbuf[3];
203 Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 2;
204 Py_ssize_t length;
205 PyObject *byteorder;
206 int is_signed = 0;
207
208 args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 2, 2, 0, argsbuf);
209 if (!args) {
210 goto exit;
211 }
212 if (PyFloat_Check(args[0])) {
213 PyErr_SetString(PyExc_TypeError,
214 "integer argument expected, got float" );
215 goto exit;
216 }
217 {
218 Py_ssize_t ival = -1;
219 PyObject *iobj = PyNumber_Index(args[0]);
220 if (iobj != NULL) {
221 ival = PyLong_AsSsize_t(iobj);
222 Py_DECREF(iobj);
223 }
224 if (ival == -1 && PyErr_Occurred()) {
225 goto exit;
226 }
227 length = ival;
228 }
229 if (!PyUnicode_Check(args[1])) {
230 _PyArg_BadArgument("to_bytes", "argument 'byteorder'", "str", args[1]);
231 goto exit;
232 }
233 if (PyUnicode_READY(args[1]) == -1) {
234 goto exit;
235 }
236 byteorder = args[1];
237 if (!noptargs) {
238 goto skip_optional_kwonly;
239 }
240 is_signed = PyObject_IsTrue(args[2]);
241 if (is_signed < 0) {
242 goto exit;
243 }
244 skip_optional_kwonly:
245 return_value = int_to_bytes_impl(self, length, byteorder, is_signed);
246
247 exit:
248 return return_value;
249 }
250
251 PyDoc_STRVAR(int_from_bytes__doc__,
252 "from_bytes($type, /, bytes, byteorder, *, signed=False)\n"
253 "--\n"
254 "\n"
255 "Return the integer represented by the given array of bytes.\n"
256 "\n"
257 " bytes\n"
258 " Holds the array of bytes to convert. The argument must either\n"
259 " support the buffer protocol or be an iterable object producing bytes.\n"
260 " Bytes and bytearray are examples of built-in objects that support the\n"
261 " buffer protocol.\n"
262 " byteorder\n"
263 " The byte order used to represent the integer. If byteorder is \'big\',\n"
264 " the most significant byte is at the beginning of the byte array. If\n"
265 " byteorder is \'little\', the most significant byte is at the end of the\n"
266 " byte array. To request the native byte order of the host system, use\n"
267 " `sys.byteorder\' as the byte order value.\n"
268 " signed\n"
269 " Indicates whether two\'s complement is used to represent the integer.");
270
271 #define INT_FROM_BYTES_METHODDEF \
272 {"from_bytes", (PyCFunction)(void(*)(void))int_from_bytes, METH_FASTCALL|METH_KEYWORDS|METH_CLASS, int_from_bytes__doc__},
273
274 static PyObject *
275 int_from_bytes_impl(PyTypeObject *type, PyObject *bytes_obj,
276 PyObject *byteorder, int is_signed);
277
278 static PyObject *
int_from_bytes(PyTypeObject * type,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)279 int_from_bytes(PyTypeObject *type, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
280 {
281 PyObject *return_value = NULL;
282 static const char * const _keywords[] = {"bytes", "byteorder", "signed", NULL};
283 static _PyArg_Parser _parser = {NULL, _keywords, "from_bytes", 0};
284 PyObject *argsbuf[3];
285 Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 2;
286 PyObject *bytes_obj;
287 PyObject *byteorder;
288 int is_signed = 0;
289
290 args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 2, 2, 0, argsbuf);
291 if (!args) {
292 goto exit;
293 }
294 bytes_obj = args[0];
295 if (!PyUnicode_Check(args[1])) {
296 _PyArg_BadArgument("from_bytes", "argument 'byteorder'", "str", args[1]);
297 goto exit;
298 }
299 if (PyUnicode_READY(args[1]) == -1) {
300 goto exit;
301 }
302 byteorder = args[1];
303 if (!noptargs) {
304 goto skip_optional_kwonly;
305 }
306 is_signed = PyObject_IsTrue(args[2]);
307 if (is_signed < 0) {
308 goto exit;
309 }
310 skip_optional_kwonly:
311 return_value = int_from_bytes_impl(type, bytes_obj, byteorder, is_signed);
312
313 exit:
314 return return_value;
315 }
316 /*[clinic end generated code: output=77bc3b2615822cb8 input=a9049054013a1b77]*/
317