X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/727f18afe9c2eec15ee446cb667d9561644b5bf6..cc0a4c82b3c132abba9b9ec35fd61bc8b45a1b80:/apt-pkg/srcrecords.h?ds=sidebyside diff --git a/apt-pkg/srcrecords.h b/apt-pkg/srcrecords.h index 17297a60e..9cc58c5b4 100644 --- a/apt-pkg/srcrecords.h +++ b/apt-pkg/srcrecords.h @@ -1,6 +1,5 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: srcrecords.h,v 1.4 1999/07/20 05:53:33 jgg Exp $ /* ###################################################################### Source Package Records - Allows access to source package records @@ -13,69 +12,108 @@ #ifndef PKGLIB_SRCRECORDS_H #define PKGLIB_SRCRECORDS_H -#ifdef __GNUG__ -#pragma interface "apt-pkg/srcrecords.h" -#endif +#include <apt-pkg/macros.h> +#include <apt-pkg/hashes.h> -#include <apt-pkg/fileutl.h> -#include <apt-pkg/sourcelist.h> +#include <string> +#include <vector> +#ifndef APT_8_CLEANER_HEADERS +using std::string; +using std::vector; +#endif + +class pkgSourceList; +class pkgIndexFile; class pkgSrcRecords { public: +APT_IGNORE_DEPRECATED_PUSH // Describes a single file struct File { - string MD5Hash; - unsigned long Size; - string Path; + APT_DEPRECATED_MSG("Use Hashes member instead of hardcoded hash algorithm") std::string MD5Hash; + APT_DEPRECATED_MSG("Use FileSize member instead") unsigned long Size; + std::string Path; + std::string Type; }; - + struct File2 : public File + { + unsigned long long FileSize; + HashStringList Hashes; + }; +APT_IGNORE_DEPRECATED_POP + // Abstract parser for each source record class Parser { - FileFd *File; - pkgSourceList::const_iterator SrcItem; + void * const d; + protected: + + const pkgIndexFile *iIndex; public: - inline pkgSourceList::const_iterator Source() const {return SrcItem;}; + enum BuildDep {BuildDepend=0x0,BuildDependIndep=0x1, + BuildConflict=0x2,BuildConflictIndep=0x3}; + + struct BuildDepRec + { + std::string Package; + std::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 std::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 bool Files(vector<pkgSrcRecords::File> &F) = 0; - - Parser(FileFd *File,pkgSourceList::const_iterator SrcItem) : File(File), - SrcItem(SrcItem) {}; - virtual ~Parser() {delete File;}; + virtual std::string Package() const = 0; + virtual std::string Version() const = 0; + virtual std::string Maintainer() const = 0; + virtual std::string Section() const = 0; + virtual const char **Binaries() = 0; // Ownership does not transfer + + //FIXME: Add a parameter to specify which architecture to use for [wildcard] matching + virtual bool BuildDepends(std::vector<BuildDepRec> &BuildDeps, bool const &ArchOnly, bool const &StripMultiArch = true) = 0; + static const char *BuildDepType(unsigned char const &Type) APT_PURE; + + virtual bool Files(std::vector<pkgSrcRecords::File> &F) = 0; + bool Files2(std::vector<pkgSrcRecords::File2> &F); + + explicit Parser(const pkgIndexFile *Index); + virtual ~Parser(); }; private: + /** \brief dpointer placeholder (for later in case we need it) */ + void * const d; // The list of files and the current parser pointer - Parser **Files; - Parser **Current; + std::vector<Parser*> Files; + std::vector<Parser *>::iterator Current; public: // Reset the search bool Restart(); - // Locate a package by name - Parser *Find(const char *Package,bool SrcOnly = false); - - pkgSrcRecords(pkgSourceList &List); - ~pkgSrcRecords(); -}; + // Step to the next SourcePackage and return pointer to the + // next SourceRecord. The pointer is owned by libapt. + const Parser* Step(); + // Locate a package by name and return pointer to the Parser. + // The pointer is owned by libapt. + Parser* Find(const char *Package,bool const &SrcOnly = false); + + explicit pkgSrcRecords(pkgSourceList &List); + virtual ~pkgSrcRecords(); +}; #endif