summaryrefslogtreecommitdiff
path: root/python/acquire.cc
diff options
context:
space:
mode:
authorMichael Vogt <michael.vogt@ubuntu.com>2005-11-18 11:54:43 +0000
committerMichael Vogt <michael.vogt@ubuntu.com>2005-11-18 11:54:43 +0000
commitbf020b8b55739672ce5335850db921277539327e (patch)
tree094241bdaf31a5c08a200b6f7a5b43a8c897d3bb /python/acquire.cc
parenta56d4330c45ea9dbb9dd8babb7e8f17ae79a6fdd (diff)
downloadpython-apt-bf020b8b55739672ce5335850db921277539327e.tar.gz
* support for the pkgAcquire::ItemIterator added
Diffstat (limited to 'python/acquire.cc')
-rw-r--r--python/acquire.cc75
1 files changed, 75 insertions, 0 deletions
diff --git a/python/acquire.cc b/python/acquire.cc
index ff01b659..a65b9592 100644
--- a/python/acquire.cc
+++ b/python/acquire.cc
@@ -13,6 +13,67 @@
#include <apt-pkg/acquire-item.h>
+// pkgAcquire::Item
+static PyObject *AcquireItemAttr(PyObject *Self,char *Name)
+{
+ pkgAcquire::ItemIterator &I = GetCpp<pkgAcquire::ItemIterator>(Self);
+
+ if (strcmp("ID",Name) == 0)
+ return Py_BuildValue("i",(*I)->ID);
+ else if (strcmp("Status",Name) == 0)
+ return Py_BuildValue("i",(*I)->Status);
+ else if (strcmp("Complete",Name) == 0)
+ return Py_BuildValue("i",(*I)->Complete);
+ else if (strcmp("Local",Name) == 0)
+ return Py_BuildValue("i",(*I)->Local);
+ else if (strcmp("IsTrusted",Name) == 0)
+ return Py_BuildValue("i",(*I)->IsTrusted());
+ else if (strcmp("FileSize",Name) == 0)
+ return Py_BuildValue("i",(*I)->FileSize);
+ else if (strcmp("ErrorText",Name) == 0)
+ return Safe_FromString((*I)->ErrorText.c_str());
+ else if (strcmp("DestFile",Name) == 0)
+ return Safe_FromString((*I)->DestFile.c_str());
+ else if (strcmp("DescURI",Name) == 0)
+ return Safe_FromString((*I)->DescURI().c_str());
+
+ PyErr_SetString(PyExc_AttributeError,Name);
+ return 0;
+}
+
+
+static PyObject *AcquireItemRepr(PyObject *Self)
+{
+ pkgAcquire::ItemIterator &I = GetCpp<pkgAcquire::ItemIterator>(Self);
+
+ char S[300];
+ snprintf(S,sizeof(S),"<pkgAcquire::ItemIterator object: "
+ "DestFile:'%s' ID:%i>",
+ (*I)->DestFile.c_str(),(*I)->ID);
+ return PyString_FromString(S);
+}
+
+
+PyTypeObject AcquireItemType =
+{
+ PyObject_HEAD_INIT(&PyType_Type)
+ 0, // ob_size
+ "pkgAcquire::ItemIterator", // tp_name
+ sizeof(CppOwnedPyObject<pkgAcquire::ItemIterator>), // tp_basicsize
+ 0, // tp_itemsize
+ // Methods
+ CppOwnedDealloc<pkgAcquire::ItemIterator>, // tp_dealloc
+ 0, // tp_print
+ AcquireItemAttr, // tp_getattr
+ 0, // tp_setattr
+ 0, // tp_compare
+ AcquireItemRepr, // tp_repr
+ 0, // tp_as_number
+ 0, // tp_as_sequence
+ 0, // tp_as_mapping
+ 0, // tp_hash
+};
+
static PyObject *PkgAcquireRun(PyObject *Self,PyObject *Args)
{
@@ -57,6 +118,20 @@ static PyObject *AcquireAttr(PyObject *Self,char *Name)
return Py_BuildValue("l", Struct.fetcher.FetchNeeded());
if(strcmp("PartialPresent",Name) == 0)
return Py_BuildValue("l", Struct.fetcher.PartialPresent());
+ if(strcmp("Items",Name) == 0)
+ {
+ PyObject *List = PyList_New(0);
+ for (pkgAcquire::ItemIterator I = Struct.fetcher.ItemsBegin();
+ I != Struct.fetcher.ItemsEnd(); I++)
+ {
+ PyObject *Obj;
+ Obj = CppOwnedPyObject_NEW<pkgAcquire::ItemIterator>(Self,&AcquireItemType,I);
+ PyList_Append(List,Obj);
+ Py_DECREF(Obj);
+
+ }
+ return List;
+ }
// some constants
if(strcmp("ResultContinue",Name) == 0)
return Py_BuildValue("i", pkgAcquire::Continue);