home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 February / PCWorld_2000-02_cd.bin / live / usr / include / apt-pkg / packagemanager.h < prev    next >
C/C++ Source or Header  |  1999-06-21  |  3KB  |  89 lines

  1. // -*- mode: cpp; mode: fold -*-
  2. // Description                                /*{{{*/
  3. // $Id: packagemanager.h,v 1.7 1998/11/22 23:37:06 jgg Exp $
  4. /* ######################################################################
  5.  
  6.    Package Manager - Abstacts the package manager
  7.  
  8.    Three steps are 
  9.      - Aquiration of archives (stores the list of final file names)
  10.      - Sorting of operations
  11.      - Invokation of package manager
  12.    
  13.    This is the final stage when the package cache entities get converted
  14.    into file names and the state stored in a DepCache is transformed
  15.    into a series of operations.
  16.  
  17.    In the final scheme of things this may serve as a director class to
  18.    access the actual install methods based on the file type being
  19.    installed.
  20.    
  21.    ##################################################################### */
  22.                                     /*}}}*/
  23. // Header section: pkglib
  24. #ifndef PKGLIB_PACKAGEMANAGER_H
  25. #define PKGLIB_PACKAGEMANAGER_H
  26.  
  27. #ifdef __GNUG__
  28. #pragma interface "apt-pkg/packagemanager.h"
  29. #endif
  30.  
  31. #include <string>
  32. #include <apt-pkg/pkgcache.h>
  33.  
  34. class pkgAcquire;
  35. class pkgDepCache;
  36. class pkgSourceList;
  37. class pkgOrderList;
  38. class pkgRecords;
  39. class pkgPackageManager
  40. {
  41.    protected:
  42.    string *FileNames;
  43.    pkgDepCache &Cache;
  44.    pkgOrderList *List;
  45.    bool Debug;
  46.    
  47.    // Bring some usefull types into the local scope
  48.    typedef pkgCache::PkgIterator PkgIterator;
  49.    typedef pkgCache::VerIterator VerIterator;
  50.    typedef pkgCache::DepIterator DepIterator;
  51.    typedef pkgCache::PrvIterator PrvIterator;
  52.    typedef pkgCache::Version Version;
  53.    typedef pkgCache::Package Package;
  54.       
  55.    bool DepAdd(pkgOrderList &Order,PkgIterator P,int Depth = 0);
  56.    bool OrderInstall();
  57.    bool CheckRConflicts(PkgIterator Pkg,DepIterator Dep,const char *Ver);
  58.    bool CreateOrderList();
  59.    
  60.    // Analysis helpers
  61.    bool DepAlwaysTrue(DepIterator D);
  62.    
  63.    // Install helpers
  64.    bool ConfigureAll();
  65.    bool SmartConfigure(PkgIterator Pkg);
  66.    bool SmartUnPack(PkgIterator Pkg);
  67.    bool SmartRemove(PkgIterator Pkg);
  68.    bool EarlyRemove(PkgIterator Pkg);   
  69.    
  70.    // The Actuall installation implementation
  71.    virtual bool Install(PkgIterator /*Pkg*/,string /*File*/) {return false;};
  72.    virtual bool Configure(PkgIterator /*Pkg*/) {return false;};
  73.    virtual bool Remove(PkgIterator /*Pkg*/) {return false;};
  74.    virtual bool Go() {return true;};
  75.    
  76.    public:
  77.  
  78.    // Main action members
  79.    bool GetArchives(pkgAcquire *Owner,pkgSourceList *Sources,
  80.             pkgRecords *Recs);
  81.    bool DoInstall();
  82.    bool FixMissing();
  83.    
  84.    pkgPackageManager(pkgDepCache &Cache);
  85.    virtual ~pkgPackageManager();
  86. };
  87.  
  88. #endif
  89.