summaryrefslogtreecommitdiff
path: root/apt-pkg/indexfile.h
diff options
context:
space:
mode:
authorDavid Kalnischkies <david@kalnischkies.de>2015-06-11 11:38:04 +0200
committerDavid Kalnischkies <david@kalnischkies.de>2015-06-11 11:38:04 +0200
commite3c1cfc767f17f5e9b2cd99f2658db3d6ac8edd9 (patch)
tree3114a44b2499c76baea4aa24ec1b408c3e21cf3d /apt-pkg/indexfile.h
parent1da3b7b8e15b642135b54684e70a0c271471f07a (diff)
use IndexTarget to get to IndexFile
Removes a bunch of duplicated code in the deb-specific parts. Especially the Description part is now handled centrally by IndexTarget instead of being duplicated to the derivations of IndexFile. Git-Dch: Ignore
Diffstat (limited to 'apt-pkg/indexfile.h')
-rw-r--r--apt-pkg/indexfile.h58
1 files changed, 53 insertions, 5 deletions
diff --git a/apt-pkg/indexfile.h b/apt-pkg/indexfile.h
index 817165f08..e6e429c2c 100644
--- a/apt-pkg/indexfile.h
+++ b/apt-pkg/indexfile.h
@@ -28,6 +28,7 @@
#include <apt-pkg/cacheiterators.h>
#include <apt-pkg/macros.h>
+#include <map>
#include <string>
#ifndef APT_8_CLEANER_HEADERS
@@ -40,17 +41,48 @@ class pkgAcquire;
class pkgCacheGenerator;
class OpProgress;
+class IndexTarget /*{{{*/
+/** \brief Information about an index file. */
+{
+ public:
+ /** \brief A URI from which the index file can be downloaded. */
+ std::string URI;
+
+ /** \brief A description of the index file. */
+ std::string Description;
+
+ /** \brief A shorter description of the index file. */
+ std::string ShortDesc;
+
+ /** \brief The key by which this index file should be
+ looked up within the meta index file. */
+ std::string MetaKey;
+
+ /** \brief Is it okay if the file isn't found in the meta index */
+ bool IsOptional;
+
+ /** \brief Target specific options defined by the implementation */
+ std::map<std::string, std::string> Options;
+
+ IndexTarget(std::string const &MetaKey, std::string const &ShortDesc,
+ std::string const &LongDesc, std::string const &URI, bool const IsOptional,
+ std::map<std::string, std::string> const &Options);
+
+ std::string Option(std::string const &Key) const;
+};
+ /*}}}*/
+
class pkgIndexFile
{
protected:
bool Trusted;
-
+
public:
class Type
{
public:
-
+
// Global list of Items supported
static Type **GlobalList;
static unsigned long GlobalListLen;
@@ -70,7 +102,7 @@ class pkgIndexFile
virtual std::string ArchiveInfo(pkgCache::VerIterator Ver) const;
virtual std::string SourceInfo(pkgSrcRecords::Parser const &Record,
pkgSrcRecords::File const &File) const;
- virtual std::string Describe(bool Short = false) const = 0;
+ virtual std::string Describe(bool Short = false) const = 0;
// Interface for acquire
virtual std::string ArchiveURI(std::string /*File*/) const {return std::string();};
@@ -95,9 +127,25 @@ class pkgIndexFile
static std::string LanguageCode();
bool IsTrusted() const { return Trusted; };
-
- pkgIndexFile(bool Trusted): Trusted(Trusted) {};
+
+ pkgIndexFile(bool Trusted);
virtual ~pkgIndexFile() {};
};
+class pkgIndexTargetFile : public pkgIndexFile
+{
+protected:
+ IndexTarget const Target;
+
+ std::string IndexFileName() const;
+
+public:
+ virtual std::string ArchiveURI(std::string File) const;
+ virtual std::string Describe(bool Short = false) const;
+ virtual bool Exists() const;
+ virtual unsigned long Size() const;
+
+ pkgIndexTargetFile(IndexTarget const &Target, bool const Trusted);
+};
+
#endif