diff options
| author | Julian Andres Klode <jak@debian.org> | 2009-04-14 18:53:15 +0200 |
|---|---|---|
| committer | Julian Andres Klode <jak@debian.org> | 2009-04-14 18:53:15 +0200 |
| commit | 5a02a12e788f2bda845d5ab5fde8118375bcae47 (patch) | |
| tree | dc46f0ae5df11fa7267db5a5c45672fa729e05d8 /python | |
| parent | 9aa8bce9463d813823893d6f611b5bb9682f75ef (diff) | |
| download | python-apt-5a02a12e788f2bda845d5ab5fde8118375bcae47.tar.gz | |
* python/cache.cc: Add tp_getset and tp_methods to DependencyType.
Diffstat (limited to 'python')
| -rw-r--r-- | python/apt_pkgmodule.cc | 1 | ||||
| -rw-r--r-- | python/cache.cc | 97 |
2 files changed, 74 insertions, 24 deletions
diff --git a/python/apt_pkgmodule.cc b/python/apt_pkgmodule.cc index ef687dd1..49b6a35f 100644 --- a/python/apt_pkgmodule.cc +++ b/python/apt_pkgmodule.cc @@ -483,6 +483,7 @@ extern "C" void initapt_pkg() if (PyType_Ready(&PkgActionGroupType) == -1) return; if (PyType_Ready(&PkgSourceListType) == -1) return; if (PyType_Ready(&PkgCacheType) == -1) return; + if (PyType_Ready(&DependencyType) == -1) return; // Initialize the module diff --git a/python/cache.cc b/python/cache.cc index 87b625c0..2d8b8db7 100644 --- a/python/cache.cc +++ b/python/cache.cc @@ -840,35 +840,68 @@ static PyMethodDef DependencyMethods[] = // Dependency Class /*{{{*/ // --------------------------------------------------------------------- -static PyObject *DependencyAttr(PyObject *Self,char *Name) +static PyObject *DependencyGetTargetVer(PyObject *Self,void*) +{ + pkgCache::DepIterator &Dep = GetCpp<pkgCache::DepIterator>(Self); + if (Dep->Version == 0) + return PyString_FromString(""); + return PyString_FromString(Dep.TargetVer()); +} + +static PyObject *DependencyGetTargetPkg(PyObject *Self,void*) { pkgCache::DepIterator &Dep = GetCpp<pkgCache::DepIterator>(Self); PyObject *Owner = GetOwner<pkgCache::DepIterator>(Self); + return CppOwnedPyObject_NEW<pkgCache::PkgIterator>(Owner,&PackageType, + Dep.TargetPkg()); +} - if (strcmp("TargetVer",Name) == 0) - { - if (Dep->Version == 0) - return PyString_FromString(""); - return PyString_FromString(Dep.TargetVer()); - } - else if (strcmp("TargetPkg",Name) == 0) - return CppOwnedPyObject_NEW<pkgCache::PkgIterator>(Owner,&PackageType, - Dep.TargetPkg()); - else if (strcmp("ParentVer",Name) == 0) - return CppOwnedPyObject_NEW<pkgCache::VerIterator>(Owner,&VersionType, - Dep.ParentVer()); - else if (strcmp("ParentPkg",Name) == 0) - return CppOwnedPyObject_NEW<pkgCache::PkgIterator>(Owner,&PackageType, Dep.ParentPkg()); - else if (strcmp("CompType",Name) == 0) - return PyString_FromString(Dep.CompType()); - else if (strcmp("DepType",Name) == 0) - return PyString_FromString(Dep.DepType()); - else if (strcmp("ID",Name) == 0) - return Py_BuildValue("i",Dep->ID); +static PyObject *DependencyGetParentVer(PyObject *Self,void*) +{ + pkgCache::DepIterator &Dep = GetCpp<pkgCache::DepIterator>(Self); + PyObject *Owner = GetOwner<pkgCache::DepIterator>(Self); + return CppOwnedPyObject_NEW<pkgCache::VerIterator>(Owner,&VersionType, + Dep.ParentVer()); +} + +static PyObject *DependencyGetParentPkg(PyObject *Self,void*) +{ + pkgCache::DepIterator &Dep = GetCpp<pkgCache::DepIterator>(Self); + PyObject *Owner = GetOwner<pkgCache::DepIterator>(Self); + return CppOwnedPyObject_NEW<pkgCache::PkgIterator>(Owner,&PackageType, + Dep.ParentPkg()); +} - return Py_FindMethod(DependencyMethods,Self,Name); +static PyObject *DependencyGetCompType(PyObject *Self,void*) +{ + pkgCache::DepIterator &Dep = GetCpp<pkgCache::DepIterator>(Self); + return PyString_FromString(Dep.CompType()); } +static PyObject *DependencyGetDepType(PyObject *Self,void*) +{ + pkgCache::DepIterator &Dep = GetCpp<pkgCache::DepIterator>(Self); + return PyString_FromString(Dep.DepType()); +} + +static PyObject *DependencyGetID(PyObject *Self,void*) +{ + pkgCache::DepIterator &Dep = GetCpp<pkgCache::DepIterator>(Self); + return Py_BuildValue("i",Dep->ID); +} + +static PyGetSetDef DependencyGetSet[] = { + {"CompType",DependencyGetCompType}, + {"DepType",DependencyGetDepType}, + {"ID",DependencyGetID}, + {"ParentPkg",DependencyGetParentPkg}, + {"ParentVer",DependencyGetParentVer}, + {"TargetPkg",DependencyGetTargetPkg}, + {"TargetVer",DependencyGetTargetVer}, + {} +}; + + PyTypeObject DependencyType = { PyObject_HEAD_INIT(&PyType_Type) @@ -879,14 +912,30 @@ PyTypeObject DependencyType = // Methods CppOwnedDealloc<pkgCache::DepIterator>, // tp_dealloc 0, // tp_print - DependencyAttr, // tp_getattr + 0, // tp_getattr 0, // tp_setattr 0, // tp_compare - DependencyRepr, // tp_repr + DependencyRepr, // tp_repr 0, // tp_as_number 0, // tp_as_sequence 0, // tp_as_mapping 0, // tp_hash + 0, // tp_call + 0, // tp_str + 0, // tp_getattro + 0, // tp_setattro + 0, // tp_as_buffer + Py_TPFLAGS_DEFAULT, // tp_flags + "Dependency Object", // tp_doc + 0, // tp_traverse + 0, // tp_clear + 0, // tp_richcompare + 0, // tp_weaklistoffset + 0, // tp_iter + 0, // tp_iternext + DependencyMethods, // tp_methods + 0, // tp_members + DependencyGetSet, // tp_getset }; /*}}}*/ |
