]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/sourcelist.h
Merge branch 'debian/sid' into debian/experimental
[apt.git] / apt-pkg / sourcelist.h
index 8e0cb7aa30b1ecb87e1cfa01c07757916b5af2e4..261dd81613739286ecb2d2bdec625d37317c0b82 100644 (file)
@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
-// $Id: sourcelist.h,v 1.11 2001/05/07 04:24:08 jgg Exp $
+// $Id: sourcelist.h,v 1.12.2.1 2003/12/24 23:09:17 mdz Exp $
 /* ######################################################################
 
    SourceList - Manage a list of sources
 /* ######################################################################
 
    SourceList - Manage a list of sources
    
    The vendor machanism is similar, except the vendor types are hard 
    wired. Before loading the source list the vendor list is loaded.
    
    The vendor machanism is similar, except the vendor types are hard 
    wired. Before loading the source list the vendor list is loaded.
-   This doesn't load key data, just the checks to preform.
+   This doesn't load key data, just the checks to perform.
    
    ##################################################################### */
                                                                        /*}}}*/
 #ifndef PKGLIB_SOURCELIST_H
 #define PKGLIB_SOURCELIST_H
 
    
    ##################################################################### */
                                                                        /*}}}*/
 #ifndef PKGLIB_SOURCELIST_H
 #define PKGLIB_SOURCELIST_H
 
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+#include <apt-pkg/macros.h>
+
+#include <time.h>
+
 #include <string>
 #include <vector>
 #include <string>
 #include <vector>
-#include <apt-pkg/pkgcache.h>
-#include <apt-pkg/indexfile.h>
+#include <map>
 
 
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/tagfile.h>
+#endif
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/metaindex.h>
 using std::string;
 using std::vector;
 using std::string;
 using std::vector;
-    
-#ifdef __GNUG__
-#pragma interface "apt-pkg/sourcelist.h"
 #endif
 
 #endif
 
-class pkgAquire;
-class pkgSourceList
+class FileFd;
+class pkgTagSection;
+class pkgAcquire;
+class pkgIndexFile;
+class metaIndex;
+
+class pkgSource
 {
 {
-   public:
-   
-   // An available vendor
-   struct Vendor
-   {
-      string VendorID;
-      string FingerPrint;
-      string Description;
+   protected:
 
 
-      /* Lets revisit these..
-      bool MatchFingerPrint(string FingerPrint);
-      string FingerPrintDescr();*/
-   };
+   std::vector<metaIndex *> SrcList;
+
+};
+
+class pkgSourceList : public pkgSource
+{
+   public:
    
    // List of supported source list types
    class Type
    
    // List of supported source list types
    class Type
@@ -64,36 +72,44 @@ class pkgSourceList
       // Global list of Items supported
       static Type **GlobalList;
       static unsigned long GlobalListLen;
       // Global list of Items supported
       static Type **GlobalList;
       static unsigned long GlobalListLen;
-      static Type *GetType(const char *Type);
+      static Type *GetType(const char *Type) APT_PURE;
 
       const char *Name;
       const char *Label;
 
 
       const char *Name;
       const char *Label;
 
-      bool FixupURI(string &URI) const;
-      virtual bool ParseLine(vector<pkgIndexFile *> &List,
-                            Vendor const *Vendor,
+      bool FixupURI(std::string &URI) const;
+      virtual bool ParseStanza(std::vector<metaIndex *> &List,
+                               pkgTagSection &Tags,
+                               int stanza_n,
+                               FileFd &Fd);
+      virtual bool ParseLine(std::vector<metaIndex *> &List,
                             const char *Buffer,
                             const char *Buffer,
-                            unsigned long CurLine,string File) const;
-      virtual bool CreateItem(vector<pkgIndexFile *> &List,string URI,
-                             string Dist,string Section,
-                             Vendor const *Vendor) const = 0;
-
+                            unsigned long const &CurLine,std::string const &File) const;
+      virtual bool CreateItem(std::vector<metaIndex *> &List,std::string const &URI,
+                             std::string const &Dist,std::string const &Section,
+                             std::map<std::string, std::string> const &Options) const = 0;
       Type();
       virtual ~Type() {};
    };
    
       Type();
       virtual ~Type() {};
    };
    
-   typedef vector<pkgIndexFile *>::const_iterator const_iterator;
+   typedef std::vector<metaIndex *>::const_iterator const_iterator;
    
    
-   protected:
+   public:
+
+   std::vector<metaIndex *> SrcList;
+
+   int ParseFileDeb822(std::string File);
+   bool ParseFileOldStyle(std::string File);
 
 
-   vector<pkgIndexFile *> SrcList;
-   vector<Vendor const *> VendorList;
-   
    public:
 
    bool ReadMainList();
    public:
 
    bool ReadMainList();
-   bool Read(string File);
-   bool ReadVendors();
+   bool Read(std::string File);
+
+   // CNC:2003-03-03
+   void Reset();
+   bool ReadAppend(std::string File);
+   bool ReadSourceDir(std::string Dir);
    
    // List accessors
    inline const_iterator begin() const {return SrcList.begin();};
    
    // List accessors
    inline const_iterator begin() const {return SrcList.begin();};
@@ -103,10 +119,14 @@ class pkgSourceList
 
    bool FindIndex(pkgCache::PkgFileIterator File,
                  pkgIndexFile *&Found) const;
 
    bool FindIndex(pkgCache::PkgFileIterator File,
                  pkgIndexFile *&Found) const;
-   bool GetIndexes(pkgAcquire *Owner) const;
+   bool GetIndexes(pkgAcquire *Owner, bool GetAll=false) const;
    
    
+   // query last-modified time
+   time_t GetLastModifiedTime();
+
    pkgSourceList();
    pkgSourceList();
-   pkgSourceList(string File);   
+   pkgSourceList(std::string File);
+   ~pkgSourceList();      
 };
 
 #endif
 };
 
 #endif