• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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___round____doc__,
91 "__round__($self, ndigits=<unrepresentable>, /)\n"
92 "--\n"
93 "\n"
94 "Rounding an Integral returns itself.\n"
95 "\n"
96 "Rounding with an ndigits argument also returns an integer.");
97 
98 #define INT___ROUND___METHODDEF    \
99     {"__round__", (PyCFunction)(void(*)(void))int___round__, METH_FASTCALL, int___round____doc__},
100 
101 static PyObject *
102 int___round___impl(PyObject *self, PyObject *o_ndigits);
103 
104 static PyObject *
int___round__(PyObject * self,PyObject * const * args,Py_ssize_t nargs)105 int___round__(PyObject *self, PyObject *const *args, Py_ssize_t nargs)
106 {
107     PyObject *return_value = NULL;
108     PyObject *o_ndigits = NULL;
109 
110     if (!_PyArg_CheckPositional("__round__", nargs, 0, 1)) {
111         goto exit;
112     }
113     if (nargs < 1) {
114         goto skip_optional;
115     }
116     o_ndigits = args[0];
117 skip_optional:
118     return_value = int___round___impl(self, o_ndigits);
119 
120 exit:
121     return return_value;
122 }
123 
124 PyDoc_STRVAR(int___sizeof____doc__,
125 "__sizeof__($self, /)\n"
126 "--\n"
127 "\n"
128 "Returns size in memory, in bytes.");
129 
130 #define INT___SIZEOF___METHODDEF    \
131     {"__sizeof__", (PyCFunction)int___sizeof__, METH_NOARGS, int___sizeof____doc__},
132 
133 static Py_ssize_t
134 int___sizeof___impl(PyObject *self);
135 
136 static PyObject *
int___sizeof__(PyObject * self,PyObject * Py_UNUSED (ignored))137 int___sizeof__(PyObject *self, PyObject *Py_UNUSED(ignored))
138 {
139     PyObject *return_value = NULL;
140     Py_ssize_t _return_value;
141 
142     _return_value = int___sizeof___impl(self);
143     if ((_return_value == -1) && PyErr_Occurred()) {
144         goto exit;
145     }
146     return_value = PyLong_FromSsize_t(_return_value);
147 
148 exit:
149     return return_value;
150 }
151 
152 PyDoc_STRVAR(int_bit_length__doc__,
153 "bit_length($self, /)\n"
154 "--\n"
155 "\n"
156 "Number of bits necessary to represent self in binary.\n"
157 "\n"
158 ">>> bin(37)\n"
159 "\'0b100101\'\n"
160 ">>> (37).bit_length()\n"
161 "6");
162 
163 #define INT_BIT_LENGTH_METHODDEF    \
164     {"bit_length", (PyCFunction)int_bit_length, METH_NOARGS, int_bit_length__doc__},
165 
166 static PyObject *
167 int_bit_length_impl(PyObject *self);
168 
169 static PyObject *
int_bit_length(PyObject * self,PyObject * Py_UNUSED (ignored))170 int_bit_length(PyObject *self, PyObject *Py_UNUSED(ignored))
171 {
172     return int_bit_length_impl(self);
173 }
174 
175 PyDoc_STRVAR(int_bit_count__doc__,
176 "bit_count($self, /)\n"
177 "--\n"
178 "\n"
179 "Number of ones in the binary representation of the absolute value of self.\n"
180 "\n"
181 "Also known as the population count.\n"
182 "\n"
183 ">>> bin(13)\n"
184 "\'0b1101\'\n"
185 ">>> (13).bit_count()\n"
186 "3");
187 
188 #define INT_BIT_COUNT_METHODDEF    \
189     {"bit_count", (PyCFunction)int_bit_count, METH_NOARGS, int_bit_count__doc__},
190 
191 static PyObject *
192 int_bit_count_impl(PyObject *self);
193 
194 static PyObject *
int_bit_count(PyObject * self,PyObject * Py_UNUSED (ignored))195 int_bit_count(PyObject *self, PyObject *Py_UNUSED(ignored))
196 {
197     return int_bit_count_impl(self);
198 }
199 
200 PyDoc_STRVAR(int_as_integer_ratio__doc__,
201 "as_integer_ratio($self, /)\n"
202 "--\n"
203 "\n"
204 "Return integer ratio.\n"
205 "\n"
206 "Return a pair of integers, whose ratio is exactly equal to the original int\n"
207 "and with a positive denominator.\n"
208 "\n"
209 ">>> (10).as_integer_ratio()\n"
210 "(10, 1)\n"
211 ">>> (-10).as_integer_ratio()\n"
212 "(-10, 1)\n"
213 ">>> (0).as_integer_ratio()\n"
214 "(0, 1)");
215 
216 #define INT_AS_INTEGER_RATIO_METHODDEF    \
217     {"as_integer_ratio", (PyCFunction)int_as_integer_ratio, METH_NOARGS, int_as_integer_ratio__doc__},
218 
219 static PyObject *
220 int_as_integer_ratio_impl(PyObject *self);
221 
222 static PyObject *
int_as_integer_ratio(PyObject * self,PyObject * Py_UNUSED (ignored))223 int_as_integer_ratio(PyObject *self, PyObject *Py_UNUSED(ignored))
224 {
225     return int_as_integer_ratio_impl(self);
226 }
227 
228 PyDoc_STRVAR(int_to_bytes__doc__,
229 "to_bytes($self, /, length, byteorder, *, signed=False)\n"
230 "--\n"
231 "\n"
232 "Return an array of bytes representing an integer.\n"
233 "\n"
234 "  length\n"
235 "    Length of bytes object to use.  An OverflowError is raised if the\n"
236 "    integer is not representable with the given number of bytes.\n"
237 "  byteorder\n"
238 "    The byte order used to represent the integer.  If byteorder is \'big\',\n"
239 "    the most significant byte is at the beginning of the byte array.  If\n"
240 "    byteorder is \'little\', the most significant byte is at the end of the\n"
241 "    byte array.  To request the native byte order of the host system, use\n"
242 "    `sys.byteorder\' as the byte order value.\n"
243 "  signed\n"
244 "    Determines whether two\'s complement is used to represent the integer.\n"
245 "    If signed is False and a negative integer is given, an OverflowError\n"
246 "    is raised.");
247 
248 #define INT_TO_BYTES_METHODDEF    \
249     {"to_bytes", (PyCFunction)(void(*)(void))int_to_bytes, METH_FASTCALL|METH_KEYWORDS, int_to_bytes__doc__},
250 
251 static PyObject *
252 int_to_bytes_impl(PyObject *self, Py_ssize_t length, PyObject *byteorder,
253                   int is_signed);
254 
255 static PyObject *
int_to_bytes(PyObject * self,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)256 int_to_bytes(PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
257 {
258     PyObject *return_value = NULL;
259     static const char * const _keywords[] = {"length", "byteorder", "signed", NULL};
260     static _PyArg_Parser _parser = {NULL, _keywords, "to_bytes", 0};
261     PyObject *argsbuf[3];
262     Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 2;
263     Py_ssize_t length;
264     PyObject *byteorder;
265     int is_signed = 0;
266 
267     args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 2, 2, 0, argsbuf);
268     if (!args) {
269         goto exit;
270     }
271     {
272         Py_ssize_t ival = -1;
273         PyObject *iobj = _PyNumber_Index(args[0]);
274         if (iobj != NULL) {
275             ival = PyLong_AsSsize_t(iobj);
276             Py_DECREF(iobj);
277         }
278         if (ival == -1 && PyErr_Occurred()) {
279             goto exit;
280         }
281         length = ival;
282     }
283     if (!PyUnicode_Check(args[1])) {
284         _PyArg_BadArgument("to_bytes", "argument 'byteorder'", "str", args[1]);
285         goto exit;
286     }
287     if (PyUnicode_READY(args[1]) == -1) {
288         goto exit;
289     }
290     byteorder = args[1];
291     if (!noptargs) {
292         goto skip_optional_kwonly;
293     }
294     is_signed = PyObject_IsTrue(args[2]);
295     if (is_signed < 0) {
296         goto exit;
297     }
298 skip_optional_kwonly:
299     return_value = int_to_bytes_impl(self, length, byteorder, is_signed);
300 
301 exit:
302     return return_value;
303 }
304 
305 PyDoc_STRVAR(int_from_bytes__doc__,
306 "from_bytes($type, /, bytes, byteorder, *, signed=False)\n"
307 "--\n"
308 "\n"
309 "Return the integer represented by the given array of bytes.\n"
310 "\n"
311 "  bytes\n"
312 "    Holds the array of bytes to convert.  The argument must either\n"
313 "    support the buffer protocol or be an iterable object producing bytes.\n"
314 "    Bytes and bytearray are examples of built-in objects that support the\n"
315 "    buffer protocol.\n"
316 "  byteorder\n"
317 "    The byte order used to represent the integer.  If byteorder is \'big\',\n"
318 "    the most significant byte is at the beginning of the byte array.  If\n"
319 "    byteorder is \'little\', the most significant byte is at the end of the\n"
320 "    byte array.  To request the native byte order of the host system, use\n"
321 "    `sys.byteorder\' as the byte order value.\n"
322 "  signed\n"
323 "    Indicates whether two\'s complement is used to represent the integer.");
324 
325 #define INT_FROM_BYTES_METHODDEF    \
326     {"from_bytes", (PyCFunction)(void(*)(void))int_from_bytes, METH_FASTCALL|METH_KEYWORDS|METH_CLASS, int_from_bytes__doc__},
327 
328 static PyObject *
329 int_from_bytes_impl(PyTypeObject *type, PyObject *bytes_obj,
330                     PyObject *byteorder, int is_signed);
331 
332 static PyObject *
int_from_bytes(PyTypeObject * type,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)333 int_from_bytes(PyTypeObject *type, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
334 {
335     PyObject *return_value = NULL;
336     static const char * const _keywords[] = {"bytes", "byteorder", "signed", NULL};
337     static _PyArg_Parser _parser = {NULL, _keywords, "from_bytes", 0};
338     PyObject *argsbuf[3];
339     Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 2;
340     PyObject *bytes_obj;
341     PyObject *byteorder;
342     int is_signed = 0;
343 
344     args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 2, 2, 0, argsbuf);
345     if (!args) {
346         goto exit;
347     }
348     bytes_obj = args[0];
349     if (!PyUnicode_Check(args[1])) {
350         _PyArg_BadArgument("from_bytes", "argument 'byteorder'", "str", args[1]);
351         goto exit;
352     }
353     if (PyUnicode_READY(args[1]) == -1) {
354         goto exit;
355     }
356     byteorder = args[1];
357     if (!noptargs) {
358         goto skip_optional_kwonly;
359     }
360     is_signed = PyObject_IsTrue(args[2]);
361     if (is_signed < 0) {
362         goto exit;
363     }
364 skip_optional_kwonly:
365     return_value = int_from_bytes_impl(type, bytes_obj, byteorder, is_signed);
366 
367 exit:
368     return return_value;
369 }
370 /*[clinic end generated code: output=ea18e51af5b53591 input=a9049054013a1b77]*/
371