summaryrefslogtreecommitdiff
path: root/apt-pkg/algorithms.h
diff options
context:
space:
mode:
authorMichael Vogt <michael.vogt@ubuntu.com>2005-08-19 08:50:57 +0000
committerMichael Vogt <michael.vogt@ubuntu.com>2005-08-19 08:50:57 +0000
commit331956f9b59c8c30cce977e8729991559d46005c (patch)
tree8f51aa68a5991e84e93552400180277e8c5d0494 /apt-pkg/algorithms.h
parent2a7e07c7578048abd9f7bfd4ce0ca5c3696b9f3a (diff)
* added a InRootSetFunc class for clients to add own packages to the mark'n'sweep root set
Diffstat (limited to 'apt-pkg/algorithms.h')
-rw-r--r--apt-pkg/algorithms.h14
1 files changed, 10 insertions, 4 deletions
diff --git a/apt-pkg/algorithms.h b/apt-pkg/algorithms.h
index 02b40e15f..e539a410e 100644
--- a/apt-pkg/algorithms.h
+++ b/apt-pkg/algorithms.h
@@ -134,10 +134,16 @@ bool pkgMinimizeUpgrade(pkgDepCache &Cache);
void pkgPrioSortList(pkgCache &Cache,pkgCache::Version **List);
-// callback function that can be used by the client to bring in
+// class that can be subclassed by the client to bring in
// certain own packages into the root set (if the client returns
// True the package will be considered as part of the root set)
-typedef bool (*InRootSetFunc)(pkgCache::PkgIterator);
+class InRootSetFunc
+{
+ public:
+ virtual bool InRootSet(const pkgCache::PkgIterator &pkg) {return false;};
+ virtual ~InRootSetFunc() {};
+};
+
// Mark all reachable packages with "pkgDepCache::StateCache.Marked=1"
// the root-set are all essential packages+everything that was not
@@ -147,7 +153,7 @@ typedef bool (*InRootSetFunc)(pkgCache::PkgIterator);
// is usefull for clients that have there own idea about the root-set
//
// Everything that is not reach can be removed
-bool pkgMarkUsed(pkgDepCache &Cache, InRootSetFunc f=NULL);
-
+bool pkgMarkUsed(pkgDepCache &Cache);
+bool pkgMarkUsed(pkgDepCache &Cache, InRootSetFunc &f);
#endif