summaryrefslogtreecommitdiff
path: root/apt-pkg/cachefilter-patterns.h
diff options
context:
space:
mode:
authorJulian Andres Klode <jak@debian.org>2020-02-03 13:26:41 +0000
committerJulian Andres Klode <jak@debian.org>2020-02-03 13:26:41 +0000
commit3ee6fdc08a91ef65e5a69f8857de3bf86a8fe1ad (patch)
treed7f2bed62c67b05e01095865056634db0f9b6be7 /apt-pkg/cachefilter-patterns.h
parentefc52f1fc9acb6ec815f695506bc8d5045c76834 (diff)
parent404771d0ec11f26a0b631018719e2918a049455b (diff)
Merge branch 'pu/short-patterns' into 'master'
Implement short patterns See merge request apt-team/apt!100
Diffstat (limited to 'apt-pkg/cachefilter-patterns.h')
-rw-r--r--apt-pkg/cachefilter-patterns.h15
1 files changed, 12 insertions, 3 deletions
diff --git a/apt-pkg/cachefilter-patterns.h b/apt-pkg/cachefilter-patterns.h
index bd8ce7e7e..4eeb68594 100644
--- a/apt-pkg/cachefilter-patterns.h
+++ b/apt-pkg/cachefilter-patterns.h
@@ -39,6 +39,8 @@ struct PatternTreeParser
size_t start = 0;
size_t end = 0;
+ explicit Node(size_t start = 0, size_t end = 0) : start(start), end(end) {}
+
virtual std::ostream &render(std::ostream &os) { return os; };
std::nullptr_t error(std::string message);
};
@@ -71,7 +73,7 @@ struct PatternTreeParser
struct State
{
- off_t offset = 0;
+ size_t offset = 0;
};
APT::StringView sentence;
@@ -90,11 +92,18 @@ struct PatternTreeParser
/// There may not be anything before or after the pattern, except for
/// whitespace.
std::unique_ptr<Node> parseTop();
+ std::unique_ptr<Node> parse(); // public for test cases only
private:
- std::unique_ptr<Node> parse();
+ std::unique_ptr<Node> parseOr();
+ std::unique_ptr<Node> parseAnd();
+ std::unique_ptr<Node> parseUnary();
+ std::unique_ptr<Node> parsePrimary();
+ std::unique_ptr<Node> parseGroup();
std::unique_ptr<Node> parsePattern();
- std::unique_ptr<Node> parseWord();
+ std::unique_ptr<Node> parseShortPattern();
+ std::unique_ptr<Node> parseArgument(bool shrt);
+ std::unique_ptr<Node> parseWord(bool shrt);
std::unique_ptr<Node> parseQuotedWord();
};