summaryrefslogtreecommitdiff
path: root/apt-pkg/cachefilter-patterns.cc
diff options
context:
space:
mode:
Diffstat (limited to 'apt-pkg/cachefilter-patterns.cc')
-rw-r--r--apt-pkg/cachefilter-patterns.cc120
1 files changed, 61 insertions, 59 deletions
diff --git a/apt-pkg/cachefilter-patterns.cc b/apt-pkg/cachefilter-patterns.cc
index 7e6d84ff6..31eb05016 100644
--- a/apt-pkg/cachefilter-patterns.cc
+++ b/apt-pkg/cachefilter-patterns.cc
@@ -12,6 +12,8 @@
#include <apti18n.h>
+using namespace std::literals;
+
namespace APT
{
namespace Internal
@@ -19,50 +21,50 @@ namespace Internal
static const constexpr struct
{
- APT::StringView shortName;
- APT::StringView longName;
+ std::string_view shortName;
+ std::string_view longName;
bool takesArgument;
} shortPatterns[] = {
- {"r"_sv, "?architecture"_sv, true},
- {"A"_sv, "?archive"_sv, true},
- {"M"_sv, "?automatic"_sv, false},
- {"b"_sv, "?broken"_sv, false},
- {"c"_sv, "?config-files"_sv, false},
+ {"r"sv, "?architecture"sv, true},
+ {"A"sv, "?archive"sv, true},
+ {"M"sv, "?automatic"sv, false},
+ {"b"sv, "?broken"sv, false},
+ {"c"sv, "?config-files"sv, false},
// FIXME: The words after ~D should be case-insensitive
- {"DDepends:"_sv, "?depends"_sv, true},
- {"DPre-Depends:"_sv, "?pre-depends"_sv, true},
- {"DSuggests:"_sv, "?suggests"_sv, true},
- {"DRecommends:"_sv, "?recommends"_sv, true},
- {"DConflicts:"_sv, "?conflicts"_sv, true},
- {"DReplaces:"_sv, "?replaces"_sv, true},
- {"DObsoletes:"_sv, "?obsoletes"_sv, true},
- {"DBreaks:"_sv, "?breaks"_sv, true},
- {"DEnhances:"_sv, "?enhances"_sv, true},
- {"D"_sv, "?depends"_sv, true},
- {"RDepends:"_sv, "?reverse-depends"_sv, true},
- {"RPre-Depends:"_sv, "?reverse-pre-depends"_sv, true},
- {"RSuggests:"_sv, "?reverse-suggests"_sv, true},
- {"RRecommends:"_sv, "?reverse-recommends"_sv, true},
- {"RConflicts:"_sv, "?reverse-conflicts"_sv, true},
- {"RReplaces:"_sv, "?reverse-replaces"_sv, true},
- {"RObsoletes:"_sv, "?reverse-obsoletes"_sv, true},
- {"RBreaks:"_sv, "?reverse-breaks"_sv, true},
- {"REnhances:"_sv, "?reverse-enhances"_sv, true},
- {"R"_sv, "?reverse-depends"_sv, true},
- {"E"_sv, "?essential"_sv, false},
- {"F"_sv, "?false"_sv, false},
- {"g"_sv, "?garbage"_sv, false},
- {"i"_sv, "?installed"_sv, false},
- {"n"_sv, "?name"_sv, true},
- {"o"_sv, "?obsolete"_sv, false},
- {"O"_sv, "?origin"_sv, true},
- {"p"_sv, "?priority"_sv, true},
- {"s"_sv, "?section"_sv, true},
- {"e"_sv, "?source-package"_sv, true},
- {"T"_sv, "?true"_sv, false},
- {"U"_sv, "?upgradable"_sv, false},
- {"V"_sv, "?version"_sv, true},
- {"v"_sv, "?virtual"_sv, false},
+ {"DDepends:"sv, "?depends"sv, true},
+ {"DPre-Depends:"sv, "?pre-depends"sv, true},
+ {"DSuggests:"sv, "?suggests"sv, true},
+ {"DRecommends:"sv, "?recommends"sv, true},
+ {"DConflicts:"sv, "?conflicts"sv, true},
+ {"DReplaces:"sv, "?replaces"sv, true},
+ {"DObsoletes:"sv, "?obsoletes"sv, true},
+ {"DBreaks:"sv, "?breaks"sv, true},
+ {"DEnhances:"sv, "?enhances"sv, true},
+ {"D"sv, "?depends"sv, true},
+ {"RDepends:"sv, "?reverse-depends"sv, true},
+ {"RPre-Depends:"sv, "?reverse-pre-depends"sv, true},
+ {"RSuggests:"sv, "?reverse-suggests"sv, true},
+ {"RRecommends:"sv, "?reverse-recommends"sv, true},
+ {"RConflicts:"sv, "?reverse-conflicts"sv, true},
+ {"RReplaces:"sv, "?reverse-replaces"sv, true},
+ {"RObsoletes:"sv, "?reverse-obsoletes"sv, true},
+ {"RBreaks:"sv, "?reverse-breaks"sv, true},
+ {"REnhances:"sv, "?reverse-enhances"sv, true},
+ {"R"sv, "?reverse-depends"sv, true},
+ {"E"sv, "?essential"sv, false},
+ {"F"sv, "?false"sv, false},
+ {"g"sv, "?garbage"sv, false},
+ {"i"sv, "?installed"sv, false},
+ {"n"sv, "?name"sv, true},
+ {"o"sv, "?obsolete"sv, false},
+ {"O"sv, "?origin"sv, true},
+ {"p"sv, "?priority"sv, true},
+ {"s"sv, "?section"sv, true},
+ {"e"sv, "?source-package"sv, true},
+ {"T"sv, "?true"sv, false},
+ {"U"sv, "?upgradable"sv, false},
+ {"V"sv, "?version"sv, true},
+ {"v"sv, "?virtual"sv, false},
};
template <class... Args>
@@ -270,7 +272,7 @@ std::unique_ptr<PatternTreeParser::Node> PatternTreeParser::parsePattern()
static constexpr auto CHARS = ("0123456789"
"abcdefghijklmnopqrstuvwxyz"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- "-"_sv);
+ "-"sv);
if (sentence[state.offset] != '?')
return nullptr;
@@ -278,7 +280,7 @@ std::unique_ptr<PatternTreeParser::Node> PatternTreeParser::parsePattern()
node->end = node->start = state.offset;
state.offset++;
- while (CHARS.find(sentence[state.offset]) != APT::StringView::npos)
+ while (CHARS.find(sentence[state.offset]) != std::string_view::npos)
{
++state.offset;
}
@@ -356,20 +358,20 @@ std::unique_ptr<PatternTreeParser::Node> PatternTreeParser::parseQuotedWord()
std::unique_ptr<PatternTreeParser::Node> PatternTreeParser::parseWord(bool shrt)
{
// Characters not allowed at the start of a word (also see ..._SHRT)
- static const constexpr auto DISALLOWED_START = "!?~|,() \0"_sv;
+ static const constexpr auto DISALLOWED_START = "!?~|,() \0"sv;
// Characters terminating a word inside a long pattern
- static const constexpr auto DISALLOWED_LONG = "|,()\0"_sv;
+ static const constexpr auto DISALLOWED_LONG = "|,()\0"sv;
// Characters terminating a word as a short form argument, should contain all of START.
- static const constexpr auto DISALLOWED_SHRT = "!?~|,() \0"_sv;
+ static const constexpr auto DISALLOWED_SHRT = "!?~|,() \0"sv;
const auto DISALLOWED = shrt ? DISALLOWED_SHRT : DISALLOWED_LONG;
- if (DISALLOWED_START.find(sentence[state.offset]) != APT::StringView::npos)
+ if (DISALLOWED_START.find(sentence[state.offset]) != std::string_view::npos)
return nullptr;
auto node = std::make_unique<WordNode>();
node->start = state.offset;
- while (DISALLOWED.find(sentence[state.offset]) == APT::StringView::npos)
+ while (DISALLOWED.find(sentence[state.offset]) == std::string_view::npos)
state.offset++;
node->end = state.offset;
@@ -381,7 +383,7 @@ std::unique_ptr<PatternTreeParser::Node> PatternTreeParser::parseWord(bool shrt)
std::ostream &PatternTreeParser::PatternNode::render(std::ostream &os)
{
- os << term.to_string();
+ os << term;
if (haveArgumentList)
{
os << "(";
@@ -394,7 +396,7 @@ std::ostream &PatternTreeParser::PatternNode::render(std::ostream &os)
std::ostream &PatternTreeParser::WordNode::render(std::ostream &os)
{
- return quoted ? os << '"' << word.to_string() << '"' : os << word.to_string();
+ return quoted ? os << '"' << word << '"' : os << word;
}
std::nullptr_t PatternTreeParser::Node::error(std::string message)
@@ -402,20 +404,20 @@ std::nullptr_t PatternTreeParser::Node::error(std::string message)
throw Error{*this, message};
}
-bool PatternTreeParser::PatternNode::matches(APT::StringView name, int min, int max)
+bool PatternTreeParser::PatternNode::matches(std::string_view name, int min, int max)
{
if (name != term)
return false;
if (max != 0 && !haveArgumentList)
- error(rstrprintf("%s expects an argument list", term.to_string().c_str()));
+ error(rstrprintf("%.*s expects an argument list", (int)term.size(), term.data()));
if (max == 0 && haveArgumentList)
- error(rstrprintf("%s does not expect an argument list", term.to_string().c_str()));
+ error(rstrprintf("%.*s does not expect an argument list", (int)term.size(), term.data()));
if (min >= 0 && min == max && (arguments.size() != size_t(min)))
- error(rstrprintf("%s expects %d arguments, but received %d arguments", term.to_string().c_str(), min, arguments.size()));
+ error(rstrprintf("%.*s expects %d arguments, but received %d arguments", (int)term.size(), term.data(), min, arguments.size()));
if (min >= 0 && arguments.size() < size_t(min))
- error(rstrprintf("%s expects at least %d arguments, but received %d arguments", term.to_string().c_str(), min, arguments.size()));
+ error(rstrprintf("%.*s expects at least %d arguments, but received %d arguments", (int)term.size(), term.data(), min, arguments.size()));
if (max >= 0 && arguments.size() > size_t(max))
- error(rstrprintf("%s expects at most %d arguments, but received %d arguments", term.to_string().c_str(), max, arguments.size()));
+ error(rstrprintf("%.*s expects at most %d arguments, but received %d arguments", (int)term.size(), term.data(), max, arguments.size()));
return true;
}
@@ -538,7 +540,7 @@ std::unique_ptr<APT::CacheFilter::Matcher> PatternParser::aPattern(std::unique_p
return pattern;
}
- node->error(rstrprintf("Unrecognized pattern '%s'", node->term.to_string().c_str()));
+ node->error(rstrprintf("Unrecognized pattern '%.*s'", (int)node->term.size(), node->term.data()));
return nullptr;
}
@@ -549,7 +551,7 @@ std::string PatternParser::aWord(std::unique_ptr<PatternTreeParser::Node> &nodeP
auto node = dynamic_cast<PatternTreeParser::WordNode *>(nodeP.get());
if (node == nullptr)
nodeP->error("Expected a word");
- return node->word.to_string();
+ return std::string{node->word};
}
namespace Patterns
@@ -602,7 +604,7 @@ std::unique_ptr<APT::CacheFilter::Matcher> APT::CacheFilter::ParsePattern(APT::S
{
std::stringstream ss;
ss << "input:" << e.location.start << "-" << e.location.end << ": error: " << e.message << "\n";
- ss << pattern.to_string() << "\n";
+ ss << pattern << "\n";
for (size_t i = 0; i < e.location.start; i++)
ss << " ";
for (size_t i = e.location.start; i < e.location.end; i++)