From dca59057441bf2273a1070a574d51e0498a12a37 Mon Sep 17 00:00:00 2001 From: Martchus Date: Fri, 31 Dec 2021 00:41:56 +0100 Subject: [PATCH] Improve coding style in CLI code * Use `std::string_view` instead of `const std::string &` * Use `const` and `auto` where it makes sense --- cli/helper.cpp | 17 ++++++++++------- cli/helper.h | 4 ++-- cli/mainfeatures.cpp | 6 +++--- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/cli/helper.cpp b/cli/helper.cpp index 7e5aec8..d146738 100644 --- a/cli/helper.cpp +++ b/cli/helper.cpp @@ -475,12 +475,15 @@ std::uint64_t parseUInt64(const Argument &arg, std::uint64_t defaultValue) return defaultValue; } -TagTarget::IdContainerType parseIds(const std::string &concatenatedIds) +TagTarget::IdContainerType parseIds(std::string_view concatenatedIds) { - auto splittedIds = splitString(concatenatedIds, ",", EmptyPartsTreat::Omit); - TagTarget::IdContainerType convertedIds; + const auto splittedIds = splitStringSimple(concatenatedIds, ","); + auto convertedIds = TagTarget::IdContainerType(); convertedIds.reserve(splittedIds.size()); for (const auto &id : splittedIds) { + if (id.empty()) { + continue; + } try { convertedIds.push_back(stringToNumber(id)); } catch (const ConversionException &) { @@ -492,7 +495,7 @@ TagTarget::IdContainerType parseIds(const std::string &concatenatedIds) return convertedIds; } -bool applyTargetConfiguration(TagTarget &target, const std::string &configStr) +bool applyTargetConfiguration(TagTarget &target, std::string_view configStr) { if (!configStr.empty()) { if (configStr.compare(0, 13, "target-level=") == 0) { @@ -504,7 +507,7 @@ bool applyTargetConfiguration(TagTarget &target, const std::string &configStr) exit(-1); } } else if (configStr.compare(0, 17, "target-levelname=") == 0) { - target.setLevelName(configStr.substr(17)); + target.setLevelName(std::string(configStr.substr(17))); } else if (configStr.compare(0, 14, "target-tracks=") == 0) { target.tracks() = parseIds(configStr.substr(14)); } else if (configStr.compare(0, 16, "target-chapters=") == 0) { @@ -616,9 +619,9 @@ FieldDenotations parseFieldDenotations(const Argument &fieldsArg, bool readOnly) // read field name const auto equationPos = strchr(fieldDenotationString, '='); - size_t fieldNameLen = equationPos ? static_cast(equationPos - fieldDenotationString) : strlen(fieldDenotationString); + auto fieldNameLen = equationPos ? static_cast(equationPos - fieldDenotationString) : strlen(fieldDenotationString); // field name might denote increment ("+") or path disclosure (">") - DenotationType type = DenotationType::Normal; + auto type = DenotationType::Normal; if (fieldNameLen && equationPos) { switch (*(equationPos - 1)) { case '+': diff --git a/cli/helper.h b/cli/helper.h index fe34ec9..3b929c9 100644 --- a/cli/helper.h +++ b/cli/helper.h @@ -298,8 +298,8 @@ TagUsage parseUsageDenotation(const CppUtilities::Argument &usageArg, TagUsage d TagTextEncoding parseEncodingDenotation(const CppUtilities::Argument &encodingArg, TagTextEncoding defaultEncoding); ElementPosition parsePositionDenotation(const CppUtilities::Argument &posArg, const CppUtilities::Argument &valueArg, ElementPosition defaultPos); std::uint64_t parseUInt64(const CppUtilities::Argument &arg, std::uint64_t defaultValue); -TagTarget::IdContainerType parseIds(const std::string &concatenatedIds); -bool applyTargetConfiguration(TagTarget &target, const std::string &configStr); +TagTarget::IdContainerType parseIds(std::string_view concatenatedIds); +bool applyTargetConfiguration(TagTarget &target, std::string_view configStr); FieldDenotations parseFieldDenotations(const CppUtilities::Argument &fieldsArg, bool readOnly); std::string tagName(const Tag *tag); bool stringToBool(const std::string &str); diff --git a/cli/mainfeatures.cpp b/cli/mainfeatures.cpp index ef31c88..5c87df5 100644 --- a/cli/mainfeatures.cpp +++ b/cli/mainfeatures.cpp @@ -579,12 +579,12 @@ void setTagInfo(const SetTagInfoArgs &args) fileInfo.parseTags(diag, parsingProgress); fileInfo.parseTracks(diag, parsingProgress); fileInfo.parseAttachments(diag, parsingProgress); - vector tags; // remove tags with the specified targets - if (validRemoveTargetsSpecified) { + auto tags = std::vector(); + if (!targetsToRemove.empty()) { fileInfo.tags(tags); - for (auto *tag : tags) { + for (auto *const tag : tags) { if (find(targetsToRemove.cbegin(), targetsToRemove.cend(), tag->target()) != targetsToRemove.cend()) { fileInfo.removeTag(tag); }