class pkgIndexFile;
class pkgSystem
-{
+{
public:
// Global list of supported systems
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) */
virtual bool ArchiveSupported(const char *Type) = 0;
// Return a list of system index files..
- virtual bool AddStatusFiles(std::vector<pkgIndexFile *> &List) = 0;
+ virtual bool AddStatusFiles(std::vector<pkgIndexFile *> &List) = 0;
+
virtual bool FindIndex(pkgCache::PkgFileIterator File,
pkgIndexFile *&Found) const = 0;
virtual signed Score(Configuration const &/*Cnf*/) {
return 0;
};
-
- pkgSystem();
+
+ //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<std::string> ArchitecturesSupported() const;
+
+ pkgSystem(char const * const Label, pkgVersioningSystem * const VS);
virtual ~pkgSystem();
private:
- void *d;
+ void * const d;
};
// The environment we are operating in.