summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorJulian Andres Klode <jak@debian.org>2010-01-23 19:34:53 +0100
committerJulian Andres Klode <jak@debian.org>2010-01-23 19:34:53 +0100
commit70609e1f497832502cd25e874190d13c8ff628f0 (patch)
tree9a6fba3a01c4434756e0bc74b9cf1d8d76449786 /python
parent89752fb6d465c78026befcc5a61e8af655587ad7 (diff)
downloadpython-apt-70609e1f497832502cd25e874190d13c8ff628f0.tar.gz
python: Export a PyAcquire_FromCpp which sets up a correct PyAcquireObject.
Diffstat (limited to 'python')
-rw-r--r--python/acquire.cc11
-rw-r--r--python/apt_pkgmodule.cc1
-rw-r--r--python/apt_pkgmodule.h2
-rw-r--r--python/python-apt.h5
4 files changed, 18 insertions, 1 deletions
diff --git a/python/acquire.cc b/python/acquire.cc
index ef8b10b6..789f994e 100644
--- a/python/acquire.cc
+++ b/python/acquire.cc
@@ -379,6 +379,17 @@ static PyObject *PkgAcquireNew(PyTypeObject *type,PyObject *Args,PyObject *kwds)
return FetcherObj;
}
+/**
+ * Create a new apt_pkg.Acquire Python object from the pkgAcquire object.
+ */
+PyObject *PyAcquire_FromCpp(pkgAcquire *fetcher, bool Delete) {
+ PyAcquireObject *FetcherObj = (PyAcquireObject *)CppPyObject_NEW<pkgAcquire*>(&PyAcquire_Type, fetcher);
+ new (&FetcherObj->items) item_map();
+ new (&FetcherObj->workers) worker_map();
+ FetcherObj->NoDelete = (!Delete);
+ return FetcherObj;
+}
+
static char *doc_PkgAcquire =
"Acquire(progress: apt_pkg.AcquireProgress) -> Acquire() object.\n\n"
"Create a new acquire object. The parameter *progress* can be used to\n"
diff --git a/python/apt_pkgmodule.cc b/python/apt_pkgmodule.cc
index df443c10..64db74d2 100644
--- a/python/apt_pkgmodule.cc
+++ b/python/apt_pkgmodule.cc
@@ -526,6 +526,7 @@ static PyMethodDef methods[] =
static struct _PyAptPkgAPIStruct API = {
&PyAcquire_Type, // acquire_type
+ &PyAcquire_FromCpp, // acquire_fromcpp
&PyAcquireFile_Type, // acquirefile_type
&PyAcquireItem_Type, // acquireitem_type
&PyAcquireItemDesc_Type, // acquireitemdesc_type
diff --git a/python/apt_pkgmodule.h b/python/apt_pkgmodule.h
index bc2f747b..5a5a6c6f 100644
--- a/python/apt_pkgmodule.h
+++ b/python/apt_pkgmodule.h
@@ -121,6 +121,8 @@ extern PyTypeObject PyAcquireItemDesc_Type;
extern PyTypeObject PyAcquireWorker_Type;
extern PyTypeObject PySystemLock_Type;
extern PyTypeObject PyFileLock_Type;
+
+PyObject *PyAcquire_FromCpp(pkgAcquire *fetcher, bool Delete);
#include "python-apt.h"
#endif
diff --git a/python/python-apt.h b/python/python-apt.h
index 3e413dff..f8c21adc 100644
--- a/python/python-apt.h
+++ b/python/python-apt.h
@@ -26,6 +26,7 @@
struct _PyAptPkgAPIStruct {
PyTypeObject *acquire_type;
+ PyObject* (*acquire_fromcpp)(pkgAcquire *acquire, bool Delete);
PyTypeObject *acquirefile_type;
PyTypeObject *acquireitem_type;
PyTypeObject *acquireitemdesc_type;
@@ -237,7 +238,9 @@ inline CppOwnedPyObject<Cpp> *FromCppOwned(PyTypeObject *pytype, Cpp const &obj,
return Obj;
}
-# define PyAcquire_FromCpp(...) FromCpp<pkgAcquire*>(&PyAcquire_Type, ##__VA_ARGS__)
+# ifndef APT_PKGMODULE_H
+# define PyAcquire_FromCpp _PyAptPkg_API->acquire_fromcpp
+#endif
# define PyAcquireFile_FromCpp(...) FromCppOwned<pkgAcqFile*>(&PyAcquireFile_Type, ##__VA_ARGS__)
# define PyAcquireItem_FromCpp(...) FromCppOwned<pkgAcquire::Item*>(&PyAcquireItem_Type,##__VA_ARGS__)
# define PyAcquireItemDesc_FromCpp(...) FromCppOwned<pkgAcquire::ItemDesc*>(&PyAcquireItemDesc_Type,##__VA_ARGS__)