// -*- mode: cpp; mode: fold -*- // Description /*{{{*/ /* ###################################################################### Debian Index Files There are three sorts currently Package files that have File: tags Package files that don't (/var/lib/dpkg/status) Source files ##################################################################### */ /*}}}*/ #ifndef PKGLIB_DEBINDEXFILE_H #define PKGLIB_DEBINDEXFILE_H #include <apt-pkg/indexfile.h> #include <apt-pkg/cacheiterators.h> #include <apt-pkg/pkgcache.h> #include <apt-pkg/srcrecords.h> #include <string> class OpProgress; class pkgAcquire; class pkgCacheGenerator; class debStatusIndex : public pkgDebianIndexRealFile { void * const d; protected: virtual std::string GetArchitecture() const APT_OVERRIDE; virtual std::string GetComponent() const APT_OVERRIDE; virtual uint8_t GetIndexFlags() const APT_OVERRIDE; public: virtual const Type *GetType() const APT_OVERRIDE APT_CONST; // Interface for the Cache Generator virtual bool HasPackages() const APT_OVERRIDE {return true;}; // Abort if the file does not exist. virtual bool Exists() const APT_OVERRIDE {return true;}; virtual pkgCacheListParser * CreateListParser(FileFd &Pkg) APT_OVERRIDE; debStatusIndex(std::string const &File); virtual ~debStatusIndex(); }; class debPackagesIndex : public pkgDebianIndexTargetFile { void * const d; protected: virtual uint8_t GetIndexFlags() const APT_OVERRIDE; public: virtual const Type *GetType() const APT_OVERRIDE APT_CONST; // Stuff for accessing files on remote items virtual std::string ArchiveInfo(pkgCache::VerIterator const &Ver) const APT_OVERRIDE; // Interface for the Cache Generator virtual bool HasPackages() const APT_OVERRIDE {return true;}; debPackagesIndex(IndexTarget const &Target, bool const Trusted); virtual ~debPackagesIndex(); }; class debTranslationsIndex : public pkgDebianIndexTargetFile { void * const d; protected: virtual std::string GetArchitecture() const APT_OVERRIDE; virtual uint8_t GetIndexFlags() const APT_OVERRIDE; virtual bool OpenListFile(FileFd &Pkg, std::string const &FileName) APT_OVERRIDE; APT_HIDDEN virtual pkgCacheListParser * CreateListParser(FileFd &Pkg) APT_OVERRIDE; public: virtual const Type *GetType() const APT_OVERRIDE APT_CONST; // Interface for the Cache Generator virtual bool HasPackages() const APT_OVERRIDE; debTranslationsIndex(IndexTarget const &Target); virtual ~debTranslationsIndex(); }; class debSourcesIndex : public pkgDebianIndexTargetFile { void * const d; virtual uint8_t GetIndexFlags() const APT_OVERRIDE; virtual bool OpenListFile(FileFd &Pkg, std::string const &FileName) APT_OVERRIDE; APT_HIDDEN virtual pkgCacheListParser * CreateListParser(FileFd &Pkg) APT_OVERRIDE; public: virtual const Type *GetType() const APT_OVERRIDE APT_CONST; // Stuff for accessing files on remote items virtual std::string SourceInfo(pkgSrcRecords::Parser const &Record, pkgSrcRecords::File const &File) const APT_OVERRIDE; // Interface for the record parsers virtual pkgSrcRecords::Parser *CreateSrcParser() const APT_OVERRIDE; // Interface for the Cache Generator virtual bool HasPackages() const APT_OVERRIDE {return false;}; debSourcesIndex(IndexTarget const &Target, bool const Trusted); virtual ~debSourcesIndex(); }; class debDebPkgFileIndex : public pkgDebianIndexRealFile { void * const d; std::string DebFile; protected: virtual std::string GetComponent() const APT_OVERRIDE; virtual std::string GetArchitecture() const APT_OVERRIDE; virtual uint8_t GetIndexFlags() const APT_OVERRIDE; virtual bool OpenListFile(FileFd &Pkg, std::string const &FileName) APT_OVERRIDE; APT_HIDDEN virtual pkgCacheListParser * CreateListParser(FileFd &Pkg) APT_OVERRIDE; public: virtual const Type *GetType() const APT_OVERRIDE APT_CONST; /** get the control (file) content of the deb file * * @param[out] content of the control file * @param debfile is the filename of the .deb-file * @return \b true if successful, otherwise \b false. */ static bool GetContent(std::ostream &content, std::string const &debfile); // Interface for the Cache Generator virtual bool HasPackages() const APT_OVERRIDE {return true;} virtual pkgCache::PkgFileIterator FindInCache(pkgCache &Cache) const APT_OVERRIDE; // Interface for acquire debDebPkgFileIndex(std::string const &DebFile); virtual ~debDebPkgFileIndex(); //FIXME: use proper virtual-handling on next ABI break APT_HIDDEN std::string ArchiveInfo_impl(pkgCache::VerIterator const &Ver) const; }; class debDscFileIndex : public pkgDebianIndexRealFile { void * const d; protected: virtual std::string GetComponent() const APT_OVERRIDE; virtual std::string GetArchitecture() const APT_OVERRIDE; virtual uint8_t GetIndexFlags() const APT_OVERRIDE; public: virtual const Type *GetType() const APT_OVERRIDE APT_CONST; virtual pkgSrcRecords::Parser *CreateSrcParser() const APT_OVERRIDE; virtual bool HasPackages() const APT_OVERRIDE {return false;}; debDscFileIndex(std::string const &DscFile); virtual ~debDscFileIndex(); }; class debDebianSourceDirIndex : public debDscFileIndex { protected: virtual std::string GetComponent() const APT_OVERRIDE; public: virtual const Type *GetType() const APT_OVERRIDE APT_CONST; }; class debStringPackageIndex : public pkgDebianIndexRealFile { void * const d; protected: virtual std::string GetArchitecture() const APT_OVERRIDE; virtual std::string GetComponent() const APT_OVERRIDE; virtual uint8_t GetIndexFlags() const APT_OVERRIDE; public: virtual const Type *GetType() const APT_OVERRIDE APT_CONST; // Interface for the Cache Generator virtual bool HasPackages() const APT_OVERRIDE {return true;}; // Abort if the file does not exist. virtual bool Exists() const APT_OVERRIDE {return true;}; debStringPackageIndex(std::string const &content); virtual ~debStringPackageIndex(); }; #endif