diff options
Diffstat (limited to 'python/rpmtd-py.c')
-rw-r--r-- | python/rpmtd-py.c | 160 |
1 files changed, 1 insertions, 159 deletions
diff --git a/python/rpmtd-py.c b/python/rpmtd-py.c index ed3a1455a..247c7502a 100644 --- a/python/rpmtd-py.c +++ b/python/rpmtd-py.c @@ -11,7 +11,7 @@ /* * Convert single tag data item to python object of suitable type */ -static PyObject * rpmtd_ItemAsPyobj(rpmtd td, rpmTagClass tclass) +PyObject * rpmtd_ItemAsPyobj(rpmtd td, rpmTagClass tclass) { PyObject *res = NULL; @@ -61,161 +61,3 @@ PyObject *rpmtd_AsPyobj(rpmtd td) } return res; } - -#if 0 -struct rpmtdObject_s { - PyObject_HEAD - PyObject *md_dict; - struct rpmtd_s td; -}; - -/* string format should never fail but do regular repr just in case it does */ -static PyObject *rpmtd_str(rpmtdObject *s) -{ - PyObject *res = NULL; - char *str = rpmtdFormat(&(s->td), RPMTD_FORMAT_STRING, NULL); - if (str) { - res = PyBytes_FromString(str); - free(str); - } else { - res = PyObject_Repr((PyObject *)s); - } - return res; -} - -static PyObject *rpmtd_iternext(rpmtdObject *s) -{ - PyObject *next = NULL; - - if (rpmtdNext(&(s->td)) >= 0) { - Py_INCREF(s); - next = (PyObject*) s; - } - return next; -} - -static PyObject *rpmtd_new(PyTypeObject * subtype, PyObject *args, PyObject *kwds) -{ - rpmtdObject *s = NULL; - Header h = NULL; - rpmTagVal tag; - int raw = 0; - int noext = 0; - headerGetFlags flags = (HEADERGET_EXT | HEADERGET_ALLOC); - char *kwlist[] = { "header", "tag", "raw", "noext", NULL }; - - if (!PyArg_ParseTupleAndKeywords(args, kwds, "O&O&|ii", kwlist, - hdrFromPyObject, &h, tagNumFromPyObject, &tag, - &raw, &noext)) - return NULL; - - if (raw) { - flags |= HEADERGET_RAW; - noext = 1; /* extensions with raw dont make sense */ - } - if (noext) flags &= ~HEADERGET_EXT; - - if ((s = (rpmtdObject *)subtype->tp_alloc(subtype, 0)) == NULL) - return NULL; - - headerGet(h, tag, &(s->td), flags); - - return (PyObject *) s; -} - -static void rpmtd_dealloc(rpmtdObject * s) -{ - rpmtdFreeData(&(s->td)); - Py_TYPE(s)->tp_free((PyObject *)s); -} - -static int rpmtd_length(rpmtdObject *s) -{ - return rpmtdCount(&(s->td)); -} - -static PyMappingMethods rpmtd_as_mapping = { - (lenfunc) rpmtd_length, /* mp_length */ -}; - -static PyMemberDef rpmtd_members[] = { - { "type", T_INT, offsetof(rpmtdObject, td.type), READONLY, NULL }, - { NULL } -}; - -static PyObject *rpmtd_get_tag(rpmtdObject *s, void *closure) -{ - return Py_BuildValue("i", rpmtdTag(&(s->td))); -} - -static int rpmtd_set_tag(rpmtdObject *s, PyObject *value, void *closure) -{ - rpmTagVal tag; - if (!tagNumFromPyObject(value, &tag)) return -1; - - if (!rpmtdSetTag(&(s->td), tag)) { - PyErr_SetString(PyExc_ValueError, "incompatible tag for data"); - return -1; - } - return 0; -} - -static PyGetSetDef rpmtd_getseters[] = { - { "tag", (getter)rpmtd_get_tag, (setter)rpmtd_set_tag, NULL }, - { NULL } -}; - -PyTypeObject rpmtd_Type = { - PyVarObject_HEAD_INIT(&PyType_Type, 0) - PYTHON_MODULENAME".td", /* tp_name */ - sizeof(rpmtdObject), /* tp_size */ - 0, /* tp_itemsize */ - (destructor) rpmtd_dealloc, /* tp_dealloc */ - 0, /* tp_print */ - (getattrfunc)0, /* tp_getattr */ - 0, /* tp_setattr */ - 0, /* tp_compare */ - 0, /* tp_repr */ - 0, /* tp_as_number */ - 0, /* tp_as_sequence */ - &rpmtd_as_mapping, /* tp_as_mapping */ - 0, /* tp_hash */ - 0, /* tp_call */ - (reprfunc)rpmtd_str, /* tp_str */ - PyObject_GenericGetAttr, /* tp_getattro */ - PyObject_GenericSetAttr, /* tp_setattro */ - 0, /* tp_as_buffer */ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /* tp_doc */ - 0, /* tp_traverse */ - 0, /* tp_clear */ - 0, /* tp_richcompare */ - 0, /* tp_weaklistoffset */ - PyObject_SelfIter, /* tp_iter */ - (iternextfunc)rpmtd_iternext, /* tp_iternext */ - 0, /* tp_methods */ - rpmtd_members, /* tp_members */ - rpmtd_getseters, /* tp_getset */ - 0, /* tp_base */ - 0, /* tp_dict */ - 0, /* tp_descr_get */ - 0, /* tp_descr_set */ - 0, /* tp_dictoffset */ - 0, /* tp_init */ - 0, /* tp_alloc */ - rpmtd_new, /* tp_new */ - 0, /* tp_free */ - 0, /* tp_is_gc */ -}; - -int rpmtdFromPyObject(PyObject *obj, rpmtd *td) -{ - if (rpmtdObject_Check(obj)) { - *td = &(((rpmtdObject *)obj)->td); - return 1; - } else { - PyErr_SetString(PyExc_TypeError, PYTHON_MODULENAME".td type expected"); - return 0; - } -} -#endif |