summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorJulian Andres Klode <jak@debian.org>2009-04-14 18:53:15 +0200
committerJulian Andres Klode <jak@debian.org>2009-04-14 18:53:15 +0200
commit5a02a12e788f2bda845d5ab5fde8118375bcae47 (patch)
treedc46f0ae5df11fa7267db5a5c45672fa729e05d8 /python
parent9aa8bce9463d813823893d6f611b5bb9682f75ef (diff)
downloadpython-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.cc1
-rw-r--r--python/cache.cc97
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
};
/*}}}*/