static Py_ssize_t MemInfo_rdwrbufferproc(PyObject *self, Py_ssize_t segment, void **ptrptr) { MemInfoObject *mio = (MemInfoObject *)self; NRT_MemInfo *mi = mio->meminfo; if (segment != 0) { PyErr_SetString(PyExc_TypeError, "MemInfo only has 1 segment"); return -1; } *ptrptr = NRT_MemInfo_data(mi); return NRT_MemInfo_size(mi); }
int MemInfo_getbuffer(PyObject *exporter, Py_buffer *view, int flags) { Py_ssize_t len; void *buf; int readonly = 0; MemInfoObject *miobj = (MemInfoObject*)exporter; MemInfo *mi = miobj->meminfo; buf = NRT_MemInfo_data(mi); len = NRT_MemInfo_size(mi); return PyBuffer_FillInfo(view, exporter, buf, len, readonly, flags); }
static PyObject* MemInfo_get_data(MemInfoObject *self, void *closure) { return PyLong_FromVoidPtr(NRT_MemInfo_data(self->meminfo)); }