summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Kalnischkies <david@kalnischkies.de>2024-12-26 20:43:34 +0000
committerDavid Kalnischkies <david@kalnischkies.de>2025-01-05 22:16:08 +0000
commit6828ae2c2f9268c8187f0fa91b3c464ed84a8476 (patch)
treef873c20a03ce4e5885531666ee45d33126e7ca57
parentf73593a4034d9eec0ec4466b8e173d4a4daece1f (diff)
Add pkgCache::{Priority,DepType}_NoL10n to avoid duplication
We don't have many places, but lets reduce the amount of duplicating these short strings, so that we may find all the places we have to change if that ever happens.
-rw-r--r--apt-pkg/cachefilter-patterns.h7
-rw-r--r--apt-pkg/edsp.cc23
-rw-r--r--apt-pkg/pkgcache.cc37
-rw-r--r--apt-pkg/pkgcache.h4
4 files changed, 37 insertions, 34 deletions
diff --git a/apt-pkg/cachefilter-patterns.h b/apt-pkg/cachefilter-patterns.h
index 75784e040..1714bbb62 100644
--- a/apt-pkg/cachefilter-patterns.h
+++ b/apt-pkg/cachefilter-patterns.h
@@ -475,12 +475,7 @@ struct APT_HIDDEN VersionIsPriority : public VersionAnyMatcher
explicit VersionIsPriority(std::string name) : name(name) {}
bool operator()(pkgCache::VerIterator const &Ver) override
{
- std::string Mapping[] = {"", "required","important","standard",
- "optional","extra"};
- if (Ver->Priority > 0 && Ver->Priority < APT_ARRAY_SIZE(Mapping)) {
- return name == Mapping[Ver->Priority];
- }
- return false;
+ return Ver->Priority > 0 && name == pkgCache::Priority_NoL10n(Ver->Priority);
}
};
diff --git a/apt-pkg/edsp.cc b/apt-pkg/edsp.cc
index d3ce830ea..88f572f18 100644
--- a/apt-pkg/edsp.cc
+++ b/apt-pkg/edsp.cc
@@ -41,17 +41,6 @@
using std::string;
-// we could use pkgCache::DepType and ::Priority, but these would be localized strings…
-constexpr char const * const PrioMap[] = {
- nullptr, "important", "required", "standard",
- "optional", "extra"
-};
-constexpr char const * const DepMap[] = {
- nullptr, "Depends", "Pre-Depends", "Suggests",
- "Recommends" , "Conflicts", "Replaces",
- "Obsoletes", "Breaks", "Enhances"
-};
-
// WriteOkay - varaidic helper to easily Write to a FileFd /*{{{*/
static bool WriteOkay_fn(FileFd &) { return true; }
template<typename... Tail> static bool WriteOkay_fn(FileFd &output, std::string_view data, Tail... more_data)
@@ -99,7 +88,7 @@ static bool WriteScenarioVersion(FileFd &output, pkgCache::PkgIterator const &Pk
// WriteScenarioDependency /*{{{*/
static bool WriteScenarioDependency(FileFd &output, pkgCache::VerIterator const &Ver, bool const OnlyCritical)
{
- std::array<std::string, APT_ARRAY_SIZE(DepMap)> dependencies;
+ std::array<std::string, 10> dependencies;
bool orGroup = false;
for (pkgCache::DepIterator Dep = Ver.DependsList(); Dep.end() == false; ++Dep)
{
@@ -123,7 +112,7 @@ static bool WriteScenarioDependency(FileFd &output, pkgCache::VerIterator const
bool Okay = output.Failed() == false;
for (size_t i = 1; i < dependencies.size(); ++i)
if (dependencies[i].empty() == false)
- WriteOkay(Okay, output, "\n", DepMap[i], ": ", dependencies[i]);
+ WriteOkay(Okay, output, "\n", pkgCache::DepType_NoL10n(i), ": ", dependencies[i]);
std::vector<std::string> provides;
for (auto Prv = Ver.ProvidesList(); not Prv.end(); ++Prv)
{
@@ -152,7 +141,7 @@ static bool WriteScenarioLimitedDependency(FileFd &output,
std::vector<bool> const &pkgset,
bool const OnlyCritical)
{
- std::array<std::string, APT_ARRAY_SIZE(DepMap)> dependencies;
+ std::array<std::string, 10> dependencies;
bool orGroup = false;
for (pkgCache::DepIterator Dep = Ver.DependsList(); Dep.end() == false; ++Dep)
{
@@ -189,7 +178,7 @@ static bool WriteScenarioLimitedDependency(FileFd &output,
bool Okay = output.Failed() == false;
for (size_t i = 1; i < dependencies.size(); ++i)
if (dependencies[i].empty() == false)
- WriteOkay(Okay, output, "\n", DepMap[i], ": ", dependencies[i]);
+ WriteOkay(Okay, output, "\n", pkgCache::DepType_NoL10n(i), ": ", dependencies[i]);
string provides;
for (pkgCache::PrvIterator Prv = Ver.ProvidesList(); Prv.end() == false; ++Prv)
{
@@ -250,8 +239,8 @@ static bool WriteScenarioEDSPVersion(pkgDepCache &Cache, FileFd &output, pkgCach
{
bool Okay = WriteOkay(output, "\nSource: ", Ver.SourcePkgName(),
"\nSource-Version: ", Ver.SourceVerStr());
- if (PrioMap[Ver->Priority] != nullptr)
- WriteOkay(Okay, output, "\nPriority: ", PrioMap[Ver->Priority]);
+ if (auto const Prio = pkgCache::Priority_NoL10n(Ver->Priority); not Prio.empty())
+ WriteOkay(Okay, output, "\nPriority: ", Prio);
if (Ver->Section != 0)
WriteOkay(Okay, output, "\nSection: ", Ver.Section());
if (Pkg.CurrentVer() == Ver)
diff --git a/apt-pkg/pkgcache.cc b/apt-pkg/pkgcache.cc
index ffe30fa92..57c6d2b22 100644
--- a/apt-pkg/pkgcache.cc
+++ b/apt-pkg/pkgcache.cc
@@ -32,6 +32,7 @@
#include <apt-pkg/version.h>
#include <algorithm>
+#include <array>
#include <cstddef>
#include <cstring>
#include <sstream>
@@ -340,24 +341,40 @@ const char *pkgCache::CompType(unsigned char Comp)
/* */
const char *pkgCache::DepType(unsigned char Type)
{
- const char *Types[] = {"",_("Depends"),_("PreDepends"),_("Suggests"),
- _("Recommends"),_("Conflicts"),_("Replaces"),
- _("Obsoletes"),_("Breaks"), _("Enhances")};
- if (Type < sizeof(Types)/sizeof(*Types))
+ std::array<char const *, 12> Types{nullptr, _("Depends"), _("PreDepends"), _("Suggests"),
+ _("Recommends"), _("Conflicts"), _("Replaces"),
+ _("Obsoletes"), _("Breaks"), _("Enhances")};
+ if (Type < Types.size())
return Types[Type];
return "";
}
+std::string_view pkgCache::DepType_NoL10n(unsigned char Type)
+{
+ std::array<std::string_view, 12> Types{"", "Depends", "PreDepends", "Suggests",
+ "Recommends", "Conflicts", "Replaces",
+ "Obsoletes", "Breaks", "Enhances"};
+ if (Type < Types.size())
+ return Types[Type];
+ return {};
+}
/*}}}*/
// Cache::Priority - Convert a priority value to a string /*{{{*/
-// ---------------------------------------------------------------------
-/* */
const char *pkgCache::Priority(unsigned char Prio)
{
- const char *Mapping[] = {0,_("required"),_("important"),_("standard"),
- _("optional"),_("extra")};
- if (Prio < APT_ARRAY_SIZE(Mapping))
+ std::array<char const *, 6> Mapping{nullptr, _("required"), _("important"), _("standard"),
+ _("optional"), _("extra")};
+ if (Prio < Mapping.size())
+ return Mapping[Prio];
+ return nullptr;
+}
+std::string_view pkgCache::Priority_NoL10n(unsigned char Prio)
+{
+ constexpr std::array<std::string_view, 6> const Mapping{
+ "", "required", "important", "standard", "optional", "extra"
+ };
+ if (Prio < Mapping.size())
return Mapping[Prio];
- return 0;
+ return {};
}
/*}}}*/
// GrpIterator::FindPkg - Locate a package by arch /*{{{*/
diff --git a/apt-pkg/pkgcache.h b/apt-pkg/pkgcache.h
index 7c16f0dee..476a01514 100644
--- a/apt-pkg/pkgcache.h
+++ b/apt-pkg/pkgcache.h
@@ -245,7 +245,8 @@ class APT_PUBLIC pkgCache /*{{{*/
// Useful transformation things
static const char *Priority(unsigned char Priority);
-
+ static std::string_view Priority_NoL10n(unsigned char Prio);
+
// Accessors
GrpIterator FindGrp(APT::StringView Name);
PkgIterator FindPkg(APT::StringView Name);
@@ -278,6 +279,7 @@ class APT_PUBLIC pkgCache /*{{{*/
static const char *CompTypeDeb(unsigned char Comp) APT_PURE;
static const char *CompType(unsigned char Comp) APT_PURE;
static const char *DepType(unsigned char Dep);
+ static std::string_view DepType_NoL10n(unsigned char Dep);
pkgCache(MMap *Map,bool DoMap = true);
virtual ~pkgCache();