Don't download "optional" files not in Release :/.
[apt.git] / apt-pkg / pkgcachegen.h
index 228b9f71dab392eae854964bf8cd293230761e8f..27fd8d4d0186be65f74116ba9735c84c112d993d 100644 (file)
@@ -41,7 +41,9 @@ class pkgCacheListParser;
 
 class APT_HIDDEN pkgCacheGenerator                                     /*{{{*/
 {
-   APT_HIDDEN map_stringitem_t WriteStringInMap(std::string const &String) { return WriteStringInMap(String.c_str()); };
+#ifdef APT_PKG_EXPOSE_STRING_VIEW
+   APT_HIDDEN map_stringitem_t WriteStringInMap(APT::StringView String) { return WriteStringInMap(String.data(), String.size()); };
+#endif
    APT_HIDDEN map_stringitem_t WriteStringInMap(const char *String);
    APT_HIDDEN map_stringitem_t WriteStringInMap(const char *String, const unsigned long &Len);
    APT_HIDDEN map_pointer_t AllocateInMap(const unsigned long &size);
@@ -76,6 +78,7 @@ class APT_HIDDEN pkgCacheGenerator                                    /*{{{*/
    std::unordered_set<string_pointer, hash> strPkgNames;
    std::unordered_set<string_pointer, hash> strVersions;
    std::unordered_set<string_pointer, hash> strSections;
+   std::unordered_set<string_pointer, hash> strTags;
 #endif
 
    friend class pkgCacheListParser;
@@ -117,19 +120,20 @@ class APT_HIDDEN pkgCacheGenerator                                        /*{{{*/
    map_pointer_t NewVersion(pkgCache::VerIterator &Ver, APT::StringView const &VerStr,
                            map_pointer_t const ParentPkg, unsigned short const Hash,
                            map_pointer_t const Next);
+   map_pointer_t NewDescription(pkgCache::DescIterator &Desc,const std::string &Lang, APT::StringView md5sum,map_stringitem_t const idxmd5str);
 #endif
    bool NewFileVer(pkgCache::VerIterator &Ver,ListParser &List);
    bool NewFileDesc(pkgCache::DescIterator &Desc,ListParser &List);
    bool NewDepends(pkgCache::PkgIterator &Pkg, pkgCache::VerIterator &Ver,
                   map_pointer_t const Version, uint8_t const Op,
                   uint8_t const Type, map_pointer_t* &OldDepLast);
-   map_pointer_t NewDescription(pkgCache::DescIterator &Desc,const std::string &Lang,const MD5SumValue &md5sum,map_stringitem_t const idxmd5str);
    bool NewProvides(pkgCache::VerIterator &Ver, pkgCache::PkgIterator &Pkg,
                    map_stringitem_t const ProvidesVersion, uint8_t const Flags);
+   bool NewTag(pkgCache::VerIterator &Ver,const char *NameStart,unsigned int NameSize);
 
    public:
 
-   enum StringType { MIXED, PKGNAME, VERSIONNUMBER, SECTION };
+   enum StringType { MIXED, PKGNAME, VERSIONNUMBER, SECTION, TAG };
    map_stringitem_t StoreString(StringType const type, const char * S, unsigned int const Size);
 
 #ifdef APT_PKG_EXPOSE_STRING_VIEW
@@ -171,8 +175,10 @@ class APT_HIDDEN pkgCacheGenerator                                 /*{{{*/
                           pkgCache::VerIterator &V);
    APT_HIDDEN bool AddImplicitDepends(pkgCache::VerIterator &V, pkgCache::PkgIterator &D);
 
+#ifdef APT_PKG_EXPOSE_STRING_VIEW
    APT_HIDDEN bool AddNewDescription(ListParser &List, pkgCache::VerIterator &Ver,
-        std::string const &lang, MD5SumValue const &CurMd5, map_stringitem_t &md5idx);
+        std::string const &lang, APT::StringView CurMd5, map_stringitem_t &md5idx);
+#endif
 };
                                                                        /*}}}*/
 // This is the abstract package list parser class.                     /*{{{*/
@@ -192,9 +198,9 @@ class APT_HIDDEN pkgCacheListParser
    inline map_stringitem_t StoreString(pkgCacheGenerator::StringType const type, const char *S,unsigned int Size) {return Owner->StoreString(type, S, Size);};
 #ifdef APT_PKG_EXPOSE_STRING_VIEW
    inline map_stringitem_t StoreString(pkgCacheGenerator::StringType const type, APT::StringView S) {return Owner->StoreString(type, S);};
+   inline map_stringitem_t WriteString(APT::StringView S) {return Owner->WriteStringInMap(S.data(), S.size());};
 #endif
 
-   inline map_stringitem_t WriteString(const std::string &S) {return Owner->WriteStringInMap(S);};
    inline map_stringitem_t WriteString(const char *S,unsigned int Size) {return Owner->WriteStringInMap(S,Size);};
 #ifdef APT_PKG_EXPOSE_STRING_VIEW
    bool NewDepends(pkgCache::VerIterator &Ver,APT::StringView Package, APT::StringView Arch,
@@ -205,6 +211,7 @@ class APT_HIDDEN pkgCacheListParser
                    uint8_t const Flags);
    bool NewProvidesAllArch(pkgCache::VerIterator &Ver, APT::StringView Package,
                           APT::StringView Version, uint8_t const Flags);
+   bool NewTag(pkgCache::VerIterator &Ver,const char *NameStart,unsigned int NameSize);
 #endif
    public:
    
@@ -217,7 +224,9 @@ class APT_HIDDEN pkgCacheListParser
 #endif
    virtual bool NewVersion(pkgCache::VerIterator &Ver) = 0;
    virtual std::vector<std::string> AvailableDescriptionLanguages() = 0;
-   virtual MD5SumValue Description_md5() = 0;
+#ifdef APT_PKG_EXPOSE_STRING_VIEW
+   virtual APT::StringView Description_md5() = 0;
+#endif
    virtual unsigned short VersionHash() = 0;
    /** compare currently parsed version with given version
     *