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