Branch data Line data Source code
1 : : /*[clinic input]
2 : : preserve
3 : : [clinic start generated code]*/
4 : :
5 : : #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
6 : : # include "pycore_gc.h" // PyGC_Head
7 : : # include "pycore_runtime.h" // _Py_ID()
8 : : #endif
9 : :
10 : :
11 : : PyDoc_STRVAR(_random_Random_random__doc__,
12 : : "random($self, /)\n"
13 : : "--\n"
14 : : "\n"
15 : : "random() -> x in the interval [0, 1).");
16 : :
17 : : #define _RANDOM_RANDOM_RANDOM_METHODDEF \
18 : : {"random", (PyCFunction)_random_Random_random, METH_NOARGS, _random_Random_random__doc__},
19 : :
20 : : static PyObject *
21 : : _random_Random_random_impl(RandomObject *self);
22 : :
23 : : static PyObject *
24 : 400400 : _random_Random_random(RandomObject *self, PyObject *Py_UNUSED(ignored))
25 : : {
26 : 400400 : return _random_Random_random_impl(self);
27 : : }
28 : :
29 : : PyDoc_STRVAR(_random_Random_seed__doc__,
30 : : "seed($self, n=None, /)\n"
31 : : "--\n"
32 : : "\n"
33 : : "seed([n]) -> None.\n"
34 : : "\n"
35 : : "Defaults to use urandom and falls back to a combination\n"
36 : : "of the current time and the process identifier.");
37 : :
38 : : #define _RANDOM_RANDOM_SEED_METHODDEF \
39 : : {"seed", _PyCFunction_CAST(_random_Random_seed), METH_FASTCALL, _random_Random_seed__doc__},
40 : :
41 : : static PyObject *
42 : : _random_Random_seed_impl(RandomObject *self, PyObject *n);
43 : :
44 : : static PyObject *
45 : 1 : _random_Random_seed(RandomObject *self, PyObject *const *args, Py_ssize_t nargs)
46 : : {
47 : 1 : PyObject *return_value = NULL;
48 : 1 : PyObject *n = Py_None;
49 : :
50 [ + - - + : 1 : if (!_PyArg_CheckPositional("seed", nargs, 0, 1)) {
- - ]
51 : 0 : goto exit;
52 : : }
53 [ - + ]: 1 : if (nargs < 1) {
54 : 0 : goto skip_optional;
55 : : }
56 : 1 : n = args[0];
57 : 1 : skip_optional:
58 : 1 : return_value = _random_Random_seed_impl(self, n);
59 : :
60 : 1 : exit:
61 : 1 : return return_value;
62 : : }
63 : :
64 : : PyDoc_STRVAR(_random_Random_getstate__doc__,
65 : : "getstate($self, /)\n"
66 : : "--\n"
67 : : "\n"
68 : : "getstate() -> tuple containing the current state.");
69 : :
70 : : #define _RANDOM_RANDOM_GETSTATE_METHODDEF \
71 : : {"getstate", (PyCFunction)_random_Random_getstate, METH_NOARGS, _random_Random_getstate__doc__},
72 : :
73 : : static PyObject *
74 : : _random_Random_getstate_impl(RandomObject *self);
75 : :
76 : : static PyObject *
77 : 0 : _random_Random_getstate(RandomObject *self, PyObject *Py_UNUSED(ignored))
78 : : {
79 : 0 : return _random_Random_getstate_impl(self);
80 : : }
81 : :
82 : : PyDoc_STRVAR(_random_Random_setstate__doc__,
83 : : "setstate($self, state, /)\n"
84 : : "--\n"
85 : : "\n"
86 : : "setstate(state) -> None. Restores generator state.");
87 : :
88 : : #define _RANDOM_RANDOM_SETSTATE_METHODDEF \
89 : : {"setstate", (PyCFunction)_random_Random_setstate, METH_O, _random_Random_setstate__doc__},
90 : :
91 : : PyDoc_STRVAR(_random_Random_getrandbits__doc__,
92 : : "getrandbits($self, k, /)\n"
93 : : "--\n"
94 : : "\n"
95 : : "getrandbits(k) -> x. Generates an int with k random bits.");
96 : :
97 : : #define _RANDOM_RANDOM_GETRANDBITS_METHODDEF \
98 : : {"getrandbits", (PyCFunction)_random_Random_getrandbits, METH_O, _random_Random_getrandbits__doc__},
99 : :
100 : : static PyObject *
101 : : _random_Random_getrandbits_impl(RandomObject *self, int k);
102 : :
103 : : static PyObject *
104 : 365721 : _random_Random_getrandbits(RandomObject *self, PyObject *arg)
105 : : {
106 : 365721 : PyObject *return_value = NULL;
107 : : int k;
108 : :
109 : 365721 : k = _PyLong_AsInt(arg);
110 [ - + - - ]: 365721 : if (k == -1 && PyErr_Occurred()) {
111 : 0 : goto exit;
112 : : }
113 : 365721 : return_value = _random_Random_getrandbits_impl(self, k);
114 : :
115 : 365721 : exit:
116 : 365721 : return return_value;
117 : : }
118 : : /*[clinic end generated code: output=bc17406a886824fc input=a9049054013a1b77]*/
|