Home | History | Annotate | Download | only in Modules

Lines Matching refs:pto

32     partialobject *pto;
59 pto = (partialobject *)type->tp_alloc(type, 0);
60 if (pto == NULL)
63 pto->fn = func;
68 Py_DECREF(pto);
72 pto->args = nargs;
75 pto->args = PySequence_Concat(pargs, nargs);
77 if (pto->args == NULL) {
78 Py_DECREF(pto);
81 assert(PyTuple_Check(pto->args));
86 pto->kw = PyDict_New();
90 pto->kw = kw;
93 pto->kw = PyDict_Copy(kw);
97 pto->kw = PyDict_Copy(pkw);
98 if (kw != NULL && pto->kw != NULL) {
99 if (PyDict_Merge(pto->kw, kw, 1) != 0) {
100 Py_DECREF(pto);
105 if (pto->kw == NULL) {
106 Py_DECREF(pto);
110 pto->use_fastcall = _PyObject_HasFastCall(func);
112 return (PyObject *)pto;
116 partial_dealloc(partialobject *pto)
119 PyObject_GC_UnTrack(pto);
120 if (pto->weakreflist != NULL)
121 PyObject_ClearWeakRefs((PyObject *) pto);
122 Py_XDECREF(pto->fn);
123 Py_XDECREF(pto->args);
124 Py_XDECREF(pto->kw);
125 Py_XDECREF(pto->dict);
126 Py_TYPE(pto)->tp_free(pto);
130 partial_fastcall(partialobject *pto, PyObject **args, Py_ssize_t nargs,
138 pto_nargs = PyTuple_GET_SIZE(pto->args);
145 stack = &PyTuple_GET_ITEM(pto->args, 0);
162 &PyTuple_GET_ITEM(pto->args, 0),
169 ret = _PyObject_FastCallDict(pto->fn, stack, nargs2, kwargs);
175 partial_call_impl(partialobject *pto, PyObject *args, PyObject *kwargs)
180 args2 = PySequence_Concat(pto->args, args);
186 ret = PyObject_Call(pto->fn, args2, kwargs);
192 partial_call(partialobject *pto, PyObject *args, PyObject *kwargs)
196 assert (PyCallable_Check(pto->fn));
197 assert (PyTuple_Check(pto->args));
198 assert (PyDict_Check(pto->kw));
200 if (PyDict_GET_SIZE(pto->kw) == 0) {
209 kwargs2 = PyDict_Copy(pto->kw);
223 if (pto->use_fastcall) {
224 res = partial_fastcall(pto,
230 res = partial_call_impl(pto, args, kwargs2);
237 partial_traverse(partialobject *pto, visitproc visit, void *arg)
239 Py_VISIT(pto->fn);
240 Py_VISIT(pto->args);
241 Py_VISIT(pto->kw);
242 Py_VISIT(pto->dict);
267 partial_repr(partialobject *pto)
275 status = Py_ReprEnter((PyObject *)pto);
286 assert (PyTuple_Check(pto->args));
287 n = PyTuple_GET_SIZE(pto->args);
290 PyTuple_GET_ITEM(pto->args, i)));
295 assert (PyDict_Check(pto->kw));
296 for (i = 0; PyDict_Next(pto->kw, &i, &key, &value);) {
305 result = PyUnicode_FromFormat("%s(%R%U)", Py_TYPE(pto)->tp_name,
306 pto->fn, arglist);
310 Py_ReprLeave((PyObject *)pto);
322 partial_reduce(partialobject *pto, PyObject *unused)
324 return Py_BuildValue("O(O)(OOOO)", Py_TYPE(pto), pto->fn, pto->fn,
325 pto->args, pto->kw,
326 pto->dict ? pto->dict : Py_None);
330 partial_setstate(partialobject *pto, PyObject *state)
368 pto->use_fastcall = _PyObject_HasFastCall(fn);
369 Py_SETREF(pto->fn, fn);
370 Py_SETREF(pto->args, fnargs);
371 Py_SETREF(pto->kw, kw);
372 Py_XSETREF(pto->dict, dict);