apt 3.0.3
commandline package manager
deblistparser.h
1// -*- mode: cpp; mode: fold -*-
2// Description /*{{{*/
3/* ######################################################################
4
5 Debian Package List Parser - This implements the abstract parser
6 interface for Debian package files
7
8 ##################################################################### */
9 /*}}}*/
10#ifndef PKGLIB_DEBLISTPARSER_H
11#define PKGLIB_DEBLISTPARSER_H
12
13#include <apt-pkg/macros.h>
14#include <apt-pkg/pkgcache.h>
15#include <apt-pkg/pkgcachegen.h>
16#include <apt-pkg/tagfile.h>
17#ifdef APT_COMPILING_APT
18#include <apt-pkg/tagfile-keys.h>
19#endif
20
21#include <string>
22#include <string_view>
23#include <vector>
24
25
26class FileFd;
27
28class APT_HIDDEN debListParser : public pkgCacheListParser
29{
30 public:
31
32 // Parser Helper
33 struct WordList
34 {
35 std::string_view Str;
36 unsigned char Val;
37 };
38
39 private:
40 std::vector<std::string> forceEssential;
41 std::vector<std::string> forceImportant;
42 std::string MD5Buffer;
43 std::string myArch;
44
45 protected:
46 pkgTagFile Tags;
47 pkgTagSection Section;
48 map_filesize_t iOffset;
49
50 virtual bool ParseStatus(pkgCache::PkgIterator &Pkg,pkgCache::VerIterator &Ver);
51 bool ParseDepends(pkgCache::VerIterator &Ver, pkgTagSection::Key Key,
52 unsigned int Type);
53 bool ParseProvides(pkgCache::VerIterator &Ver);
54
55 APT_HIDDEN static bool GrabWord(std::string_view Word,const WordList *List,unsigned char &Out);
56 APT_HIDDEN unsigned char ParseMultiArch(bool const showErrors);
57
58 public:
59
60 APT_PUBLIC static unsigned char GetPrio(std::string Str);
61
62 // These all operate against the current section
63 std::string Package() override;
64 bool ArchitectureAll() override;
65 std::string_view Architecture() override;
66 std::string_view Version() override;
67 bool NewVersion(pkgCache::VerIterator &Ver) override;
68 std::vector<std::string> AvailableDescriptionLanguages() override;
69 std::string_view Description_md5() override;
70 uint32_t VersionHash() override;
71 bool SameVersion(uint32_t Hash, pkgCache::VerIterator const &Ver) override;
72 bool UsePackage(pkgCache::PkgIterator &Pkg,
73 pkgCache::VerIterator &Ver) override;
74 map_filesize_t Offset() override { return iOffset; };
75 map_filesize_t Size() override { return Section.size(); };
76
77 bool Step() override;
78
79 APT_PUBLIC static const char *ParseDepends(const char *Start, const char *Stop,
80 std::string &Package, std::string &Ver, unsigned int &Op,
81 bool const &ParseArchFlags = false, bool const &StripMultiArch = true,
82 bool const &ParseRestrictionsList = false,
83 std::string const &Arch = "");
84
85 APT_PUBLIC static const char *ParseDepends(const char *Start, const char *Stop,
86 std::string_view &Package,
87 std::string_view &Ver, unsigned int &Op,
88 bool ParseArchFlags = false, bool StripMultiArch = true,
89 bool ParseRestrictionsList = false,
90 std::string Arch = "");
91
92 APT_PUBLIC static const char *ConvertRelation(const char *I,unsigned int &Op);
93
94 explicit debListParser(FileFd *File);
95 ~debListParser() override;
96
97#ifdef APT_COMPILING_APT
98 std::string_view SHA256() const
99 {
100 return Section.Find(pkgTagSection::Key::SHA256);
101 }
102#endif
103};
104
105class APT_HIDDEN debDebFileParser : public debListParser
106{
107 private:
108 std::string DebFile;
109
110 public:
111 debDebFileParser(FileFd *File, std::string const &DebFile);
112 bool UsePackage(pkgCache::PkgIterator &Pkg,
113 pkgCache::VerIterator &Ver) override;
114};
115
116class APT_HIDDEN debTranslationsParser : public debListParser
117{
118 public:
119 // a translation can never be a real package
120 std::string_view Architecture() override { return {}; }
121 std::string_view Version() override { return {}; }
122
123 explicit debTranslationsParser(FileFd *File)
124 : debListParser(File) {};
125};
126
127class APT_HIDDEN debStatusListParser : public debListParser
128{
129 public:
130 bool ParseStatus(pkgCache::PkgIterator &Pkg,pkgCache::VerIterator &Ver) override;
131 explicit debStatusListParser(FileFd *File)
132 : debListParser(File) {};
133};
134#endif
Definition fileutl.h:43
Definition deblistparser.h:106
Definition deblistparser.h:29
Definition deblistparser.h:128
Definition deblistparser.h:117
Definition pkgcachegen.h:178
virtual bool SameVersion(uint32_t Hash, pkgCache::VerIterator const &Ver)
Definition pkgcachegen.cc:1290
Definition tagfile.h:186
Definition tagfile.h:46
pkgCache - Structure definitions for the cache file
Definition deblistparser.h:34