home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 February / PCWorld_2000-02_cd.bin / live / usr / include / apt-pkg / srcrecords.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-06-21  |  1.9 KB  |  82 lines

  1. // -*- mode: cpp; mode: fold -*-
  2. // Description                                /*{{{*/
  3. // $Id: srcrecords.h,v 1.3 1999/04/07 05:30:18 jgg Exp $
  4. /* ######################################################################
  5.    
  6.    Source Package Records - Allows access to source package records
  7.    
  8.    Parses and allows access to the list of source records and searching by
  9.    source name on that list.
  10.    
  11.    ##################################################################### */
  12.                                     /*}}}*/
  13. #ifndef PKGLIB_SRCRECORDS_H
  14. #define PKGLIB_SRCRECORDS_H
  15.  
  16. #ifdef __GNUG__
  17. #pragma interface "apt-pkg/srcrecords.h"
  18. #endif 
  19.  
  20. #include <apt-pkg/fileutl.h>
  21. #include <apt-pkg/sourcelist.h>
  22.  
  23. class pkgSrcRecords
  24. {
  25.    public:
  26.  
  27.    // Describes a single file
  28.    struct File
  29.    {
  30.       string MD5Hash;
  31.       unsigned long Size;
  32.       string Path;
  33.    };
  34.    
  35.    // Abstract parser for each source record
  36.    class Parser
  37.    {
  38.       FileFd *File;
  39.       pkgSourceList::const_iterator SrcItem;
  40.       
  41.       public:
  42.  
  43.       inline pkgSourceList::const_iterator Source() const {return SrcItem;};
  44.       
  45.       virtual bool Restart() = 0;
  46.       virtual bool Step() = 0;
  47.       virtual bool Jump(unsigned long Off) = 0;
  48.       virtual unsigned long Offset() = 0;
  49.       
  50.       virtual string Package() = 0;
  51.       virtual string Version() = 0;
  52.       virtual string Maintainer() = 0;
  53.       virtual string Section() = 0;
  54.       virtual const char **Binaries() = 0;
  55.       virtual bool Files(vector<File> &F) = 0;
  56.       
  57.       Parser(FileFd *File,pkgSourceList::const_iterator SrcItem) : File(File), 
  58.              SrcItem(SrcItem) {};
  59.       virtual ~Parser() {delete File;};
  60.    };
  61.    
  62.    private:
  63.    
  64.    // The list of files and the current parser pointer
  65.    Parser **Files;
  66.    Parser **Current;
  67.    
  68.    public:
  69.  
  70.    // Reset the search
  71.    bool Restart();
  72.  
  73.    // Locate a package by name
  74.    Parser *Find(const char *Package,bool SrcOnly = false);
  75.    
  76.    pkgSrcRecords(pkgSourceList &List);
  77.    ~pkgSrcRecords();
  78. };
  79.  
  80.  
  81. #endif
  82.