1 // -*- mode: cpp; mode: fold -*- 
   3 // $Id: deblistparser.h,v 1.9 2001/02/20 07:03:17 jgg Exp $ 
   4 /* ###################################################################### 
   6    Debian Package List Parser - This implements the abstract parser  
   7    interface for Debian package files 
   9    ##################################################################### */ 
  11 #ifndef PKGLIB_DEBLISTPARSER_H 
  12 #define PKGLIB_DEBLISTPARSER_H 
  14 #include <apt-pkg/pkgcachegen.h> 
  15 #include <apt-pkg/tagfile.h> 
  16 #include <apt-pkg/md5.h> 
  17 #include <apt-pkg/pkgcache.h> 
  18 #include <apt-pkg/macros.h> 
  22 #ifdef APT_PKG_EXPOSE_STRING_VIEW 
  23 #include <apt-pkg/string_view.h> 
  26 #ifndef APT_8_CLEANER_HEADERS 
  27 #include <apt-pkg/indexfile.h> 
  32 class APT_HIDDEN debListParser 
: public pkgCacheListParser
 
  44    /** \brief dpointer placeholder (for later in case we need it) */ 
  49    pkgTagSection Section
; 
  50    map_filesize_t iOffset
; 
  52    virtual bool ParseStatus(pkgCache::PkgIterator 
&Pkg
,pkgCache::VerIterator 
&Ver
); 
  53    bool ParseDepends(pkgCache::VerIterator 
&Ver
,const char *Tag
, 
  55    bool ParseProvides(pkgCache::VerIterator 
&Ver
); 
  57 #ifdef APT_PKG_EXPOSE_STRING_VIEW 
  58    APT_HIDDEN 
static bool GrabWord(APT::StringView Word
,const WordList 
*List
,unsigned char &Out
); 
  60    APT_HIDDEN 
unsigned char ParseMultiArch(bool const showErrors
); 
  64    APT_PUBLIC 
static unsigned char GetPrio(std::string Str
); 
  66    // These all operate against the current section 
  67    virtual std::string 
Package() APT_OVERRIDE
; 
  68    virtual std::string 
Architecture() APT_OVERRIDE
; 
  69    virtual bool ArchitectureAll() APT_OVERRIDE
; 
  70    virtual std::string 
Version() APT_OVERRIDE
; 
  71    virtual bool NewVersion(pkgCache::VerIterator 
&Ver
) APT_OVERRIDE
; 
  72    virtual std::string 
Description(std::string 
const &lang
) APT_OVERRIDE
; 
  73 #ifdef APT_PKG_EXPOSE_STRING_VIEW 
  74    APT::StringView 
Description(APT::StringView lang
); 
  76    virtual std::vector
<std::string
> AvailableDescriptionLanguages() APT_OVERRIDE
; 
  77    virtual MD5SumValue 
Description_md5() APT_OVERRIDE
; 
  78    virtual unsigned short VersionHash() APT_OVERRIDE
; 
  79    virtual bool SameVersion(unsigned short const Hash
, pkgCache::VerIterator 
const &Ver
) APT_OVERRIDE
; 
  80    virtual bool UsePackage(pkgCache::PkgIterator 
&Pkg
, 
  81                            pkgCache::VerIterator 
&Ver
) APT_OVERRIDE
; 
  82    virtual map_filesize_t 
Offset() APT_OVERRIDE 
{return iOffset
;}; 
  83    virtual map_filesize_t 
Size() APT_OVERRIDE 
{return Section
.size();}; 
  85    virtual bool Step() APT_OVERRIDE
; 
  87    bool LoadReleaseInfo(pkgCache::RlsFileIterator 
&FileI
,FileFd 
&File
, 
  88                         std::string 
const §ion
); 
  90    APT_PUBLIC 
static const char *ParseDepends(const char *Start
,const char *Stop
, 
  91          std::string 
&Package
,std::string 
&Ver
,unsigned int &Op
); 
  92    APT_PUBLIC 
static const char *ParseDepends(const char *Start
,const char *Stop
, 
  93          std::string 
&Package
,std::string 
&Ver
,unsigned int &Op
, 
  94          bool const &ParseArchFlags
); 
  95    APT_PUBLIC 
static const char *ParseDepends(const char *Start
,const char *Stop
, 
  96          std::string 
&Package
,std::string 
&Ver
,unsigned int &Op
, 
  97          bool const &ParseArchFlags
, bool const &StripMultiArch
); 
  98    APT_PUBLIC 
static const char *ParseDepends(const char *Start
,const char *Stop
, 
  99          std::string 
&Package
,std::string 
&Ver
,unsigned int &Op
, 
 100          bool const &ParseArchFlags
, bool const &StripMultiArch
, 
 101          bool const &ParseRestrictionsList
); 
 103 #ifdef APT_PKG_EXPOSE_STRING_VIEW 
 104    APT_HIDDEN 
static const char *ParseDepends(const char *Start
,const char *Stop
, 
 105          APT::StringView 
&Package
, 
 106     APT::StringView 
&Ver
,unsigned int &Op
, 
 107          bool const ParseArchFlags 
= false, bool StripMultiArch 
= true, 
 108          bool const ParseRestrictionsList 
= false); 
 111    APT_PUBLIC 
static const char *ConvertRelation(const char *I
,unsigned int &Op
); 
 113    debListParser(FileFd 
*File
); 
 114    virtual ~debListParser(); 
 117 class APT_HIDDEN debDebFileParser 
: public debListParser
 
 123    debDebFileParser(FileFd 
*File
, std::string 
const &DebFile
); 
 124    virtual bool UsePackage(pkgCache::PkgIterator 
&Pkg
, 
 125                            pkgCache::VerIterator 
&Ver
) APT_OVERRIDE
; 
 128 class APT_HIDDEN debTranslationsParser 
: public debListParser
 
 131    // a translation can never be a real package 
 132    virtual std::string 
Architecture() APT_OVERRIDE 
{ return ""; } 
 133    virtual std::string 
Version() APT_OVERRIDE 
{ return ""; } 
 135    debTranslationsParser(FileFd 
*File
) 
 136       : debListParser(File
) {}; 
 139 class APT_HIDDEN debStatusListParser 
: public debListParser
 
 142    virtual bool ParseStatus(pkgCache::PkgIterator 
&Pkg
,pkgCache::VerIterator 
&Ver
); 
 143    debStatusListParser(FileFd 
*File
) 
 144       : debListParser(File
) {};