Lines Matching refs:descr
36 descr_dealloc(PyDescrObject *descr)
38 _PyObject_GC_UNTRACK(descr);
39 Py_XDECREF(descr->d_type);
40 Py_XDECREF(descr->d_name);
41 Py_XDECREF(descr->d_qualname);
42 PyObject_GC_Del(descr);
46 descr_name(PyDescrObject *descr)
48 if (descr->d_name != NULL && PyUnicode_Check(descr->d_name))
49 return descr->d_name;
54 descr_repr(PyDescrObject *descr, const char *format)
57 if (descr->d_name != NULL && PyUnicode_Check(descr->d_name))
58 name = descr->d_name;
60 return PyUnicode_FromFormat(format, name, "?", descr->d_type->tp_name);
64 method_repr(PyMethodDescrObject *descr)
66 return descr_repr((PyDescrObject *)descr,
71 member_repr(PyMemberDescrObject *descr)
73 return descr_repr((PyDescrObject *)descr,
78 getset_repr(PyGetSetDescrObject *descr)
80 return descr_repr((PyDescrObject *)descr,
85 wrapperdescr_repr(PyWrapperDescrObject *descr)
87 return descr_repr((PyDescrObject *)descr,
92 descr_check(PyDescrObject *descr, PyObject *obj)
94 if (!PyObject_TypeCheck(obj, descr->d_type)) {
98 descr_name((PyDescrObject *)descr), "?",
99 descr->d_type->tp_name,
107 classmethod_get(PyMethodDescrObject *descr, PyObject *obj, PyObject *type)
118 descr_name((PyDescrObject *)descr), "?",
119 PyDescr_TYPE(descr)->tp_name);
127 descr_name((PyDescrObject *)descr), "?",
128 PyDescr_TYPE(descr)->tp_name,
132 if (!PyType_IsSubtype((PyTypeObject *)type, PyDescr_TYPE(descr))) {
136 descr_name((PyDescrObject *)descr), "?",
137 PyDescr_TYPE(descr)->tp_name,
142 if (descr->d_method->ml_flags & METH_METHOD) {
143 cls = descr->d_common.d_type;
145 return PyCMethod_New(descr->d_method, type, NULL, cls);
149 method_get(PyMethodDescrObject *descr, PyObject *obj, PyObject *type)
152 return Py_NewRef(descr);
154 if (descr_check((PyDescrObject *)descr, obj) < 0) {
157 if (descr->d_method->ml_flags & METH_METHOD) {
159 return PyCMethod_New(descr->d_method, obj, NULL, descr->d_common.d_type);
163 descr_name((PyDescrObject *)descr),
168 return PyCFunction_NewEx(descr->d_method, obj, NULL);
173 member_get(PyMemberDescrObject *descr, PyObject *obj, PyObject *type)
176 return Py_NewRef(descr);
178 if (descr_check((PyDescrObject *)descr, obj) < 0) {
182 if (descr->d_member->flags & PY_AUDIT_READ) {
184 obj ? obj : Py_None, descr->d_member->name) < 0) {
189 return PyMember_GetOne((char *)obj, descr->d_member);
193 getset_get(PyGetSetDescrObject *descr, PyObject *obj, PyObject *type)
196 return Py_NewRef(descr);
198 if (descr_check((PyDescrObject *)descr, obj) < 0) {
201 if (descr->d_getset->get != NULL)
203 descr->d_getset->get, obj, descr->d_getset->closure);
206 descr_name((PyDescrObject *)descr), "?",
207 PyDescr_TYPE(descr)->tp_name);
212 wrapperdescr_get(PyWrapperDescrObject *descr, PyObject *obj, PyObject *type)
215 return Py_NewRef(descr);
217 if (descr_check((PyDescrObject *)descr, obj) < 0) {
220 return PyWrapper_New((PyObject *)descr, obj);
224 descr_setcheck(PyDescrObject *descr, PyObject *obj, PyObject *value)
227 if (!PyObject_TypeCheck(obj, descr->d_type)) {
231 descr_name(descr), "?",
232 descr->d_type->tp_name,
240 member_set(PyMemberDescrObject *descr, PyObject *obj, PyObject *value)
242 if (descr_setcheck((PyDescrObject *)descr, obj, value) < 0) {
245 return PyMember_SetOne((char *)obj, descr->d_member, value);
249 getset_set(PyGetSetDescrObject *descr, PyObject *obj, PyObject *value)
251 if (descr_setcheck((PyDescrObject *)descr, obj, value) < 0) {
254 if (descr->d_getset->set != NULL) {
256 descr->d_getset->set, obj, value,
257 descr->d_getset->closure);
261 descr_name((PyDescrObject *)descr), "?",
262 PyDescr_TYPE(descr)->tp_name);
496 classmethoddescr_call(PyMethodDescrObject *descr, PyObject *args,
504 descr_name((PyDescrObject *)descr), "?",
505 PyDescr_TYPE(descr)->tp_name);
509 PyObject *bound = classmethod_get(descr, NULL, self);
520 wrapperdescr_raw_call(PyWrapperDescrObject *descr, PyObject *self,
523 wrapperfunc wrapper = descr->d_base->wrapper;
525 if (descr->d_base->flags & PyWrapperFlag_KEYWORDS) {
527 return (*wk)(self, args, descr->d_wrapped, kwds);
533 descr->d_base->name);
536 return (*wrapper)(self, args, descr->d_wrapped);
540 wrapperdescr_call(PyWrapperDescrObject *descr, PyObject *args, PyObject *kwds)
552 descr_name((PyDescrObject *)descr), "?",
553 PyDescr_TYPE(descr)->tp_name);
558 (PyObject *)PyDescr_TYPE(descr))) {
563 descr_name((PyDescrObject *)descr), "?",
564 PyDescr_TYPE(descr)->tp_name,
573 result = wrapperdescr_raw_call(descr, self, args, kwds);
580 method_get_doc(PyMethodDescrObject *descr, void *closure)
582 return _PyType_GetDocFromInternalDoc(descr->d_method->ml_name, descr->d_method->ml_doc);
586 method_get_text_signature(PyMethodDescrObject *descr, void *closure)
588 return _PyType_GetTextSignatureFromInternalDoc(descr->d_method->ml_name, descr->d_method->ml_doc);
592 calculate_qualname(PyDescrObject *descr)
596 if (descr->d_name == NULL || !PyUnicode_Check(descr->d_name)) {
603 (PyObject *)descr->d_type, &_Py_ID(__qualname__));
614 res = PyUnicode_FromFormat("%S.%S", type_qualname, descr->d_name);
620 descr_get_qualname(PyDescrObject *descr, void *Py_UNUSED(ignored))
622 if (descr->d_qualname == NULL)
623 descr->d_qualname = calculate_qualname(descr);
624 Py_XINCREF(descr->d_qualname);
625 return descr->d_qualname;
629 descr_reduce(PyDescrObject *descr, PyObject *Py_UNUSED(ignored))
632 PyDescr_TYPE(descr), PyDescr_NAME(descr));
654 member_get_doc(PyMemberDescrObject *descr, void *closure)
656 if (descr->d_member->doc == NULL) {
659 return PyUnicode_FromString(descr->d_member->doc);
669 getset_get_doc(PyGetSetDescrObject *descr, void *closure)
671 if (descr->d_getset->doc == NULL) {
674 return PyUnicode_FromString(descr->d_getset->doc);
684 wrapperdescr_get_doc(PyWrapperDescrObject *descr, void *closure)
686 return _PyType_GetDocFromInternalDoc(descr->d_base->name, descr->d_base->doc);
690 wrapperdescr_get_text_signature(PyWrapperDescrObject *descr, void *closure)
692 return _PyType_GetTextSignatureFromInternalDoc(descr->d_base->name, descr->d_base->doc);
705 PyDescrObject *descr = (PyDescrObject *)self;
706 Py_VISIT(descr->d_type);
902 PyDescrObject *descr;
904 descr = (PyDescrObject *)PyType_GenericAlloc(descrtype, 0);
905 if (descr != NULL) {
907 descr->d_type = type;
908 descr->d_name = PyUnicode_InternFromString(name);
909 if (descr->d_name == NULL) {
910 Py_DECREF(descr);
911 descr = NULL;
914 descr->d_qualname = NULL;
917 return descr;
955 PyMethodDescrObject *descr;
957 descr = (PyMethodDescrObject *)descr_new(&PyMethodDescr_Type,
959 if (descr != NULL) {
960 descr->d_method = method;
961 descr->vectorcall = vectorcall;
963 return (PyObject *)descr;
969 PyMethodDescrObject *descr;
971 descr = (PyMethodDescrObject *)descr_new(&PyClassMethodDescr_Type,
973 if (descr != NULL)
974 descr->d_method = method;
975 return (PyObject *)descr;
981 PyMemberDescrObject *descr;
983 descr = (PyMemberDescrObject *)descr_new(&PyMemberDescr_Type,
985 if (descr != NULL)
986 descr->d_member = member;
987 return (PyObject *)descr;
993 PyGetSetDescrObject *descr;
995 descr = (PyGetSetDescrObject *)descr_new(&PyGetSetDescr_Type,
997 if (descr != NULL)
998 descr->d_getset = getset;
999 return (PyObject *)descr;
1005 PyWrapperDescrObject *descr;
1007 descr = (PyWrapperDescrObject *)descr_new(&PyWrapperDescr_Type,
1009 if (descr != NULL) {
1010 descr->d_base = base;
1011 descr->d_wrapped = wrapped;
1013 return (PyObject *)descr;
1271 PyWrapperDescrObject *descr;
1282 Py_XDECREF(wp->descr);
1305 eq = (wa->descr == wb->descr && wa->self == wb->self);
1319 y = _Py_HashPointer(wp->descr);
1330 wp->descr->d_base->name,
1339 wp->self, PyDescr_NAME(wp->descr));
1355 PyObject *c = (PyObject *)PyDescr_TYPE(wp->descr);
1364 const char *s = wp->descr->d_base->name;
1372 return _PyType_GetDocFromInternalDoc(wp->descr->d_base->name, wp->descr->d_base->doc);
1378 return _PyType_GetTextSignatureFromInternalDoc(wp->descr->d_base->name, wp->descr->d_base->doc);
1384 return descr_get_qualname((PyDescrObject *)wp->descr, NULL);
1399 return wrapperdescr_raw_call(wp->descr, wp->self, args, kwds);
1406 Py_VISIT(wp->descr);
1453 PyWrapperDescrObject *descr;
1456 descr = (PyWrapperDescrObject *)d;
1458 (PyObject *)PyDescr_TYPE(descr)));
1462 Py_INCREF(descr);
1463 wp->descr = descr;