// -*- mode: cpp; mode: fold -*-
// Description /*{{{*/
-// $Id: algorithms.h,v 1.9 2001/02/20 07:03:17 jgg Exp $
+// $Id: algorithms.h,v 1.10 2001/05/22 04:17:41 jgg Exp $
/* ######################################################################
Algorithms - A set of misc algorithms
#include <apt-pkg/packagemanager.h>
#include <apt-pkg/depcache.h>
+#include <iostream>
+
+using std::ostream;
+
class pkgSimulate : public pkgPackageManager
{
protected:
virtual bool Install(PkgIterator Pkg,string File);
virtual bool Configure(PkgIterator Pkg);
virtual bool Remove(PkgIterator Pkg,bool Purge);
+
+private:
void ShortBreaks();
- void Describe(PkgIterator iPkg,ostream &out,bool Now);
+ void Describe(PkgIterator iPkg,ostream &out,bool Current,bool Candidate);
public:
bool pkgMinimizeUpgrade(pkgDepCache &Cache);
void pkgPrioSortList(pkgCache &Cache,pkgCache::Version **List);
+
+
+// callback function that can be used 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);
+
+// Mark all reachable packages with "pkgDepCache::StateCache.Marked=1"
+// the root-set are all essential packages+everything that was not
+// installed automatically
+//
+// If InRootSetFunc is set, it will be called for each PkgIterator. This
+// 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);
+
#endif