static PyObject * tb_getattr(tracebackobject *tb, char *name) { return PyMember_Get((char *)tb, tb_memberlist, name); }
static PyObject * regular_msg_getattr(RegularMsg *self, char *name) { return PyMember_Get((char *)self, RegularMsg_memberlist, name); }
static PyObject * membership_msg_getattr(MembershipMsg *self, char *name) { return PyMember_Get((char *)self, MembershipMsg_memberlist, name); }
static PyObject * request_getattr(requestobject *self, char *name) { PyObject *res; res = Py_FindMethod(requestobjectmethods, (PyObject *)self, name); if (res != NULL) return res; PyErr_Clear(); if (strcmp(name, "connection") == 0) { if (self->connection == NULL) { if (self->request_rec->connection == NULL) { Py_INCREF(Py_None); return Py_None; } else { self->connection = MpConn_FromConn(self->request_rec->connection); Py_INCREF(self->connection); return self->connection; } } else { Py_INCREF(self->connection); return self->connection; } } else if (strcmp(name, "server") == 0) { if (self->server == NULL) { if (self->request_rec->server == NULL) { Py_INCREF(Py_None); return Py_None; } else { self->server = MpServer_FromServer(self->request_rec->server); Py_INCREF(self->server); return self->server; } } else { Py_INCREF(self->server); return self->server; } } else if (strcmp(name, "next") == 0) { if (self->next == NULL) { if (self->request_rec->next == NULL) { Py_INCREF(Py_None); return Py_None; } else { self->next = MpRequest_FromRequest(self->request_rec->next); Py_INCREF(self->next); return self->next; } } else { Py_INCREF(self->next); return self->next; } } else if (strcmp(name, "prev") == 0) { if (self->prev == NULL) { if (self->request_rec->prev == NULL) { Py_INCREF(Py_None); return Py_None; } else { self->prev = MpRequest_FromRequest(self->request_rec->prev); Py_INCREF(self->prev); return self->prev; } } else { Py_INCREF(self->prev); return self->prev; } } else if (strcmp(name, "main") == 0) { if (self->main == NULL) { if (self->request_rec->main == NULL) { Py_INCREF(Py_None); return Py_None; } else { self->main = MpRequest_FromRequest(self->request_rec->main); Py_INCREF(self->main); return self->main; } } else { Py_INCREF(self->main); return self->main; } } else if (strcmp(name, "headers_in") == 0) { Py_INCREF(self->headers_in); return (PyObject *) self->headers_in; } else if (strcmp(name, "headers_out") == 0) { Py_INCREF(self->headers_out); return (PyObject *) self->headers_out; } else if (strcmp(name, "err_headers_out") == 0) { Py_INCREF(self->err_headers_out); return (PyObject *) self->err_headers_out; } else if (strcmp(name, "subprocess_env") == 0) { Py_INCREF(self->subprocess_env); return (PyObject *) self->subprocess_env; } else if (strcmp(name, "notes") == 0) { Py_INCREF(self->notes); return (PyObject *) self->notes; } else if (strcmp(name, "content_languages") == 0) { return tuple_from_array_header(self->request_rec->content_languages); } else if (strcmp(name, "hstack") == 0) { return PyString_FromString(self->hstack); } else if (strcmp(name, "_content_type_set") == 0) { return PyInt_FromLong(self->content_type_set); } else if (strcmp(name, "_Request") == 0) { if (self->Request == NULL) { Py_INCREF(Py_None); return Py_None; } else { Py_INCREF(self->Request); return (PyObject *) self->Request; } } else return PyMember_Get((char *)self->request_rec, request_memberlist, name); }
static PyObject *PgVersion_getattr(PgVersion *self, char *attr) { return PyMember_Get((char *)self, PgVersion_members, attr); }
static PyObject * rootstate_getattr(PyObject *obj, PyObject *name) { char *s = PyString_AsString(name); PyInterpreterState *is; int ino; unsigned long tno; char buf[100]; if (!s) return 0; if (sscanf(s, "i%d_%50s", &ino, buf) == 2) { int countis; int numis; for (is = PyInterpreterState_Head(), numis = 0; is; is = PyInterpreterState_Next(is), numis++) ; for (is = PyInterpreterState_Head(), countis = 0; is; is = PyInterpreterState_Next(is), countis++) { int isno = numis - countis - 1; if (isno == ino) { PyObject *ret = PyMember_Get((char *)is, is_members, buf); if (!ret) PyErr_Format(PyExc_AttributeError, "interpreter state has no attribute '%s'", buf); return ret; } } PyErr_SetString(PyExc_AttributeError, "no such interpreter state number"); return 0; } if (sscanf(s, "t%lu_%50s", &tno, buf) == 2) { for (is = PyInterpreterState_Head(); is; is = PyInterpreterState_Next(is)) { PyThreadState *ts; for (ts = is->tstate_head; ts; ts = ts->next) { if (THREAD_ID(ts) == tno) { int frameno = 0; if (sscanf(buf, "f%d", &frameno) == 1) { PyFrameObject *frame; int numframes = 0; for (frame = ts->frame; frame; frame = frame->f_back) { numframes ++; } for (frame = ts->frame; frame; frame = frame->f_back) { numframes --; if (numframes == frameno) { Py_INCREF(frame); return (PyObject *)frame; } } PyErr_Format(PyExc_AttributeError, "thread state has no frame numbered %d from bottom", frameno); return 0; } else { PyObject *ret = PyMember_Get((char *)ts, ts_members, buf); if (!ret) PyErr_Format(PyExc_AttributeError, "thread state has no attribute '%s'", buf); return ret; } } } } } PyErr_Format(PyExc_AttributeError, "root state has no attribute '%.200s'", s); return 0; }