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(method___reduce____doc__,
12 : : "__reduce__($self, /)\n"
13 : : "--\n"
14 : : "\n");
15 : :
16 : : #define METHOD___REDUCE___METHODDEF \
17 : : {"__reduce__", (PyCFunction)method___reduce__, METH_NOARGS, method___reduce____doc__},
18 : :
19 : : static PyObject *
20 : : method___reduce___impl(PyMethodObject *self);
21 : :
22 : : static PyObject *
23 : 0 : method___reduce__(PyMethodObject *self, PyObject *Py_UNUSED(ignored))
24 : : {
25 : 0 : return method___reduce___impl(self);
26 : : }
27 : :
28 : : PyDoc_STRVAR(method_new__doc__,
29 : : "method(function, instance, /)\n"
30 : : "--\n"
31 : : "\n"
32 : : "Create a bound instance method object.");
33 : :
34 : : static PyObject *
35 : : method_new_impl(PyTypeObject *type, PyObject *function, PyObject *instance);
36 : :
37 : : static PyObject *
38 : 0 : method_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
39 : : {
40 : 0 : PyObject *return_value = NULL;
41 : 0 : PyTypeObject *base_tp = &PyMethod_Type;
42 : : PyObject *function;
43 : : PyObject *instance;
44 : :
45 [ # # # # : 0 : if ((type == base_tp || type->tp_init == base_tp->tp_init) &&
# # ]
46 [ # # ]: 0 : !_PyArg_NoKeywords("method", kwargs)) {
47 : 0 : goto exit;
48 : : }
49 [ # # # # : 0 : if (!_PyArg_CheckPositional("method", PyTuple_GET_SIZE(args), 2, 2)) {
# # ]
50 : 0 : goto exit;
51 : : }
52 : 0 : function = PyTuple_GET_ITEM(args, 0);
53 : 0 : instance = PyTuple_GET_ITEM(args, 1);
54 : 0 : return_value = method_new_impl(type, function, instance);
55 : :
56 : 0 : exit:
57 : 0 : return return_value;
58 : : }
59 : :
60 : : PyDoc_STRVAR(instancemethod_new__doc__,
61 : : "instancemethod(function, /)\n"
62 : : "--\n"
63 : : "\n"
64 : : "Bind a function to a class.");
65 : :
66 : : static PyObject *
67 : : instancemethod_new_impl(PyTypeObject *type, PyObject *function);
68 : :
69 : : static PyObject *
70 : 0 : instancemethod_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
71 : : {
72 : 0 : PyObject *return_value = NULL;
73 : 0 : PyTypeObject *base_tp = &PyInstanceMethod_Type;
74 : : PyObject *function;
75 : :
76 [ # # # # : 0 : if ((type == base_tp || type->tp_init == base_tp->tp_init) &&
# # ]
77 [ # # ]: 0 : !_PyArg_NoKeywords("instancemethod", kwargs)) {
78 : 0 : goto exit;
79 : : }
80 [ # # # # : 0 : if (!_PyArg_CheckPositional("instancemethod", PyTuple_GET_SIZE(args), 1, 1)) {
# # ]
81 : 0 : goto exit;
82 : : }
83 : 0 : function = PyTuple_GET_ITEM(args, 0);
84 : 0 : return_value = instancemethod_new_impl(type, function);
85 : :
86 : 0 : exit:
87 : 0 : return return_value;
88 : : }
89 : : /*[clinic end generated code: output=2a5e7fa5947a86cb input=a9049054013a1b77]*/
|