X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/11e7af846822e893604052db7822de016fb97417..bda94cb8432b3905f5757e92573fd16e73cb183f:/apt-pkg/srcrecords.h diff --git a/apt-pkg/srcrecords.h b/apt-pkg/srcrecords.h index bd39b93bb..a49533864 100644 --- a/apt-pkg/srcrecords.h +++ b/apt-pkg/srcrecords.h @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: srcrecords.h,v 1.1 1999/04/04 01:17:29 jgg Exp $ +// $Id: srcrecords.h,v 1.8.2.1 2003/12/26 16:27:34 mdz Exp $ /* ###################################################################### Source Package Records - Allows access to source package records @@ -13,43 +13,76 @@ #ifndef PKGLIB_SRCRECORDS_H #define PKGLIB_SRCRECORDS_H -#ifdef __GNUG__ -#pragma interface "apt-pkg/srcrecords.h" -#endif -#include -#include +#include +#include +using std::string; +using std::vector; + +class pkgSourceList; +class pkgIndexFile; class pkgSrcRecords { public: + + // Describes a single file + struct File + { + string MD5Hash; + unsigned long Size; + string Path; + string Type; + }; + // Abstract parser for each source record class Parser { - FileFd *File; - + protected: + + const pkgIndexFile *iIndex; + public: + enum BuildDep {BuildDepend=0x0,BuildDependIndep=0x1, + BuildConflict=0x2,BuildConflictIndep=0x3}; + + struct BuildDepRec + { + string Package; + string Version; + unsigned int Op; + unsigned char Type; + }; + + inline const pkgIndexFile &Index() const {return *iIndex;}; + virtual bool Restart() = 0; virtual bool Step() = 0; - virtual bool Jump(unsigned long Off) = 0; + virtual bool Jump(unsigned long const &Off) = 0; virtual unsigned long Offset() = 0; + virtual string AsStr() = 0; - virtual string Package() = 0; - virtual string Version() = 0; - virtual string Maintainer() = 0; - virtual string Section() = 0; - virtual const char **Binaries() = 0; + virtual string Package() const = 0; + virtual string Version() const = 0; + virtual string Maintainer() const = 0; + virtual string Section() const = 0; + virtual const char **Binaries() = 0; // Ownership does not transfer + + virtual bool BuildDepends(vector &BuildDeps, bool const &ArchOnly, bool const &StripMultiArch = true) = 0; + static const char *BuildDepType(unsigned char const &Type); + + virtual bool Files(vector &F) = 0; - Parser(FileFd *File) : File(File) {}; - virtual ~Parser() {delete File;}; + Parser(const pkgIndexFile *Index) : iIndex(Index) {}; + virtual ~Parser() {}; }; private: // The list of files and the current parser pointer - Parser **Files; - Parser **Current; + vector Files; + vector::iterator Current; public: @@ -57,11 +90,10 @@ class pkgSrcRecords bool Restart(); // Locate a package by name - Parser *Find(const char *Package,bool SrcOnly = false); + Parser *Find(const char *Package,bool const &SrcOnly = false); pkgSrcRecords(pkgSourceList &List); ~pkgSrcRecords(); }; - #endif