X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/1e3f4083db29bba600b9725e9456b0e140975c99..d27daedb6a0bf672508072100f20233d08ccf0e0:/apt-pkg/pkgsystem.h?ds=sidebyside diff --git a/apt-pkg/pkgsystem.h b/apt-pkg/pkgsystem.h index eb75df412..55bdeec70 100644 --- a/apt-pkg/pkgsystem.h +++ b/apt-pkg/pkgsystem.h @@ -1,6 +1,5 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: pkgsystem.h,v 1.6 2002/11/11 06:55:50 doogie Exp $ /* ###################################################################### System - Abstraction for running on different systems. @@ -38,6 +37,7 @@ #define PKGLIB_PKGSYSTEM_H #include +#include #include @@ -50,10 +50,9 @@ class pkgPackageManager; class pkgVersioningSystem; class Configuration; class pkgIndexFile; -class PkgFileIterator; class pkgSystem -{ +{ public: // Global list of supported systems @@ -61,8 +60,8 @@ class pkgSystem static unsigned long GlobalListLen; static pkgSystem *GetSystem(const char *Label); - const char *Label; - pkgVersioningSystem *VS; + const char * const Label; + pkgVersioningSystem * const VS; /* Prevent other programs from touching shared data not covered by other locks (cache or state locks) */ @@ -82,16 +81,43 @@ class pkgSystem virtual bool ArchiveSupported(const char *Type) = 0; // Return a list of system index files.. - virtual bool AddStatusFiles(std::vector &List) = 0; + virtual bool AddStatusFiles(std::vector &List) = 0; + virtual bool FindIndex(pkgCache::PkgFileIterator File, pkgIndexFile *&Found) const = 0; - + /* Evauluate how 'right' we are for this system based on the filesystem etc.. */ - virtual signed Score(Configuration const &/*Cnf*/) {return 0;}; - - pkgSystem(); - virtual ~pkgSystem() {}; + virtual signed Score(Configuration const &/*Cnf*/) { + return 0; + }; + + //FIXME: these methods should be virtual + /** does this system has support for MultiArch? + * + * Systems supporting only single arch (not systems which are single arch) + * are considered legacy systems and support for it will likely degrade over + * time. + * + * The default implementation returns always \b true. + * + * @return \b true if the system supports MultiArch, \b false if not. + */ + bool MultiArchSupported() const; + /** architectures supported by this system + * + * A MultiArch capable system might be configured to use + * this capability. + * + * @return a list of all architectures (native + foreign) configured + * for on this system (aka: which can be installed without force) + */ + std::vector ArchitecturesSupported() const; + + pkgSystem(char const * const Label, pkgVersioningSystem * const VS); + virtual ~pkgSystem(); + private: + void * const d; }; // The environment we are operating in.