core: use range-based for loops in filterconstraints

This source file was looping over descriptors in a classical
"for (int i = 0; i < size; ++i)" loop.

However, the index is not really used, except for fetching the
actual elements.

Replace by range-based for loops. This prevents the potential
error of using the wrong size.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2022-09-24 19:27:54 +02:00
parent cea171ffd4
commit e2338fe7e9

View file

@ -104,26 +104,11 @@ static const char *negate_description[2] {
QT_TRANSLATE_NOOP("gettextFromC", "is not"), QT_TRANSLATE_NOOP("gettextFromC", "is not"),
}; };
static constexpr size_t type_descriptions_count()
{
return std::size(type_descriptions);
}
static constexpr size_t string_mode_descriptions_count()
{
return std::size(string_mode_descriptions);
}
static constexpr size_t range_mode_descriptions_count()
{
return std::size(range_mode_descriptions);
}
static const type_description *get_type_description(enum filter_constraint_type type) static const type_description *get_type_description(enum filter_constraint_type type)
{ {
for (size_t i = 0; i < type_descriptions_count(); ++i) { for (const auto &desc: type_descriptions) {
if (type_descriptions[i].type == type) if (desc.type == type)
return &type_descriptions[i]; return &desc;
} }
report_error("unknown filter constraint type: %d", type); report_error("unknown filter constraint type: %d", type);
return nullptr; return nullptr;
@ -131,9 +116,9 @@ static const type_description *get_type_description(enum filter_constraint_type
static const string_mode_description *get_string_mode_description(enum filter_constraint_string_mode mode) static const string_mode_description *get_string_mode_description(enum filter_constraint_string_mode mode)
{ {
for (size_t i = 0; i < string_mode_descriptions_count(); ++i) { for (const auto &desc: string_mode_descriptions) {
if (string_mode_descriptions[i].mode == mode) if (desc.mode == mode)
return &string_mode_descriptions[i]; return &desc;
} }
report_error("unknown filter constraint string mode: %d", mode); report_error("unknown filter constraint string mode: %d", mode);
return nullptr; return nullptr;
@ -141,9 +126,9 @@ static const string_mode_description *get_string_mode_description(enum filter_co
static const range_mode_description *get_range_mode_description(enum filter_constraint_range_mode mode) static const range_mode_description *get_range_mode_description(enum filter_constraint_range_mode mode)
{ {
for (size_t i = 0; i < range_mode_descriptions_count(); ++i) { for (const auto &desc: range_mode_descriptions) {
if (range_mode_descriptions[i].mode == mode) if (desc.mode == mode)
return &range_mode_descriptions[i]; return &desc;
} }
report_error("unknown filter constraint range mode: %d", mode); report_error("unknown filter constraint range mode: %d", mode);
return nullptr; return nullptr;
@ -151,9 +136,9 @@ static const range_mode_description *get_range_mode_description(enum filter_cons
static enum filter_constraint_type filter_constraint_type_from_string(const char *s) static enum filter_constraint_type filter_constraint_type_from_string(const char *s)
{ {
for (size_t i = 0; i < type_descriptions_count(); ++i) { for (const auto &desc: type_descriptions) {
if (same_string(type_descriptions[i].token, s)) if (same_string(desc.token, s))
return type_descriptions[i].type; return desc.type;
} }
report_error("unknown filter constraint type: %s", s); report_error("unknown filter constraint type: %s", s);
return FILTER_CONSTRAINT_DATE; return FILTER_CONSTRAINT_DATE;
@ -161,9 +146,9 @@ static enum filter_constraint_type filter_constraint_type_from_string(const char
static enum filter_constraint_string_mode filter_constraint_string_mode_from_string(const char *s) static enum filter_constraint_string_mode filter_constraint_string_mode_from_string(const char *s)
{ {
for (size_t i = 0; i < string_mode_descriptions_count(); ++i) { for (const auto &desc: string_mode_descriptions) {
if (same_string(string_mode_descriptions[i].token, s)) if (same_string(desc.token, s))
return string_mode_descriptions[i].mode; return desc.mode;
} }
report_error("unknown filter constraint string mode: %s", s); report_error("unknown filter constraint string mode: %s", s);
return FILTER_CONSTRAINT_EXACT; return FILTER_CONSTRAINT_EXACT;
@ -171,9 +156,9 @@ static enum filter_constraint_string_mode filter_constraint_string_mode_from_str
static enum filter_constraint_range_mode filter_constraint_range_mode_from_string(const char *s) static enum filter_constraint_range_mode filter_constraint_range_mode_from_string(const char *s)
{ {
for (size_t i = 0; i < range_mode_descriptions_count(); ++i) { for (const auto &desc: range_mode_descriptions) {
if (same_string(range_mode_descriptions[i].token, s)) if (same_string(desc.token, s))
return range_mode_descriptions[i].mode; return desc.mode;
} }
report_error("unknown filter constraint range mode: %s", s); report_error("unknown filter constraint range mode: %s", s);
return FILTER_CONSTRAINT_EQUAL; return FILTER_CONSTRAINT_EQUAL;
@ -217,21 +202,21 @@ extern "C" int filter_constraint_range_mode_to_index(enum filter_constraint_rang
extern "C" enum filter_constraint_type filter_constraint_type_from_index(int index) extern "C" enum filter_constraint_type filter_constraint_type_from_index(int index)
{ {
if (index >= 0 && index < (int)type_descriptions_count()) if (index >= 0 && index < (int)std::size(type_descriptions))
return type_descriptions[index].type; return type_descriptions[index].type;
return (enum filter_constraint_type)-1; return (enum filter_constraint_type)-1;
} }
extern "C" enum filter_constraint_string_mode filter_constraint_string_mode_from_index(int index) extern "C" enum filter_constraint_string_mode filter_constraint_string_mode_from_index(int index)
{ {
if (index >= 0 && index < (int)string_mode_descriptions_count()) if (index >= 0 && index < (int)std::size(string_mode_descriptions))
return string_mode_descriptions[index].mode; return string_mode_descriptions[index].mode;
return (enum filter_constraint_string_mode)-1; return (enum filter_constraint_string_mode)-1;
} }
extern "C" enum filter_constraint_range_mode filter_constraint_range_mode_from_index(int index) extern "C" enum filter_constraint_range_mode filter_constraint_range_mode_from_index(int index)
{ {
if (index >= 0 && index < (int)range_mode_descriptions_count()) if (index >= 0 && index < (int)std::size(range_mode_descriptions))
return range_mode_descriptions[index].mode; return range_mode_descriptions[index].mode;
return (enum filter_constraint_range_mode)-1; return (enum filter_constraint_range_mode)-1;
} }
@ -347,32 +332,32 @@ static double base_to_display_unit(int i, enum filter_constraint_type type)
QStringList filter_constraint_type_list_translated() QStringList filter_constraint_type_list_translated()
{ {
QStringList res; QStringList res;
for (size_t i = 0; i < type_descriptions_count(); ++i) for (const auto &desc: type_descriptions)
res.push_back(gettextFromC::tr(type_descriptions[i].text_ui)); res.push_back(gettextFromC::tr(desc.text_ui));
return res; return res;
} }
QStringList filter_constraint_string_mode_list_translated() QStringList filter_constraint_string_mode_list_translated()
{ {
QStringList res; QStringList res;
for (size_t i = 0; i < string_mode_descriptions_count(); ++i) for (const auto &desc: string_mode_descriptions)
res.push_back(gettextFromC::tr(string_mode_descriptions[i].text_ui)); res.push_back(gettextFromC::tr(desc.text_ui));
return res; return res;
} }
QStringList filter_constraint_range_mode_list_translated() QStringList filter_constraint_range_mode_list_translated()
{ {
QStringList res; QStringList res;
for (size_t i = 0; i < range_mode_descriptions_count(); ++i) for (const auto &desc: range_mode_descriptions)
res.push_back(gettextFromC::tr(range_mode_descriptions[i].text_ui)); res.push_back(gettextFromC::tr(desc.text_ui));
return res; return res;
} }
QStringList filter_constraint_range_mode_list_translated_date() QStringList filter_constraint_range_mode_list_translated_date()
{ {
QStringList res; QStringList res;
for (size_t i = 0; i < range_mode_descriptions_count(); ++i) for (const auto &desc: range_mode_descriptions)
res.push_back(gettextFromC::tr(range_mode_descriptions[i].text_ui_date)); res.push_back(gettextFromC::tr(desc.text_ui_date));
return res; return res;
} }