clang-tidy fixes (#231)

This commit is contained in:
Rosen Penev 2020-05-11 21:59:47 -07:00 committed by GitHub
parent b0f67a06de
commit 12bc8d78e7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -25,8 +25,8 @@ THE SOFTWARE.
#ifndef CXXOPTS_HPP_INCLUDED
#define CXXOPTS_HPP_INCLUDED
#include <cstring>
#include <cctype>
#include <cstring>
#include <exception>
#include <iostream>
#include <limits>
@ -37,6 +37,7 @@ THE SOFTWARE.
#include <string>
#include <unordered_map>
#include <unordered_set>
#include <utility>
#include <vector>
#ifdef __cpp_lib_optional
@ -61,7 +62,7 @@ namespace cxxopts
CXXOPTS__VERSION_MINOR,
CXXOPTS__VERSION_PATCH
};
}
} // namespace cxxopts
//when we ask cxxopts to use Unicode, help strings are processed using ICU,
//which results in the correct lengths being computed for strings when they
@ -227,9 +228,9 @@ namespace cxxopts
inline
String&
stringAppend(String&s, String a)
stringAppend(String&s, const String& a)
{
return s.append(std::move(a));
return s.append(a);
}
inline
@ -259,7 +260,7 @@ namespace cxxopts
{
return s.empty();
}
}
} // namespace cxxopts
//ifdef CXXOPTS_USE_UNICODE
#endif
@ -275,7 +276,7 @@ namespace cxxopts
const std::string LQUOTE("");
const std::string RQUOTE("");
#endif
}
} // namespace
class Value : public std::enable_shared_from_this<Value>
{
@ -324,13 +325,13 @@ namespace cxxopts
class OptionException : public std::exception
{
public:
OptionException(const std::string& message)
: m_message(message)
explicit OptionException(std::string message)
: m_message(std::move(message))
{
}
virtual const char*
what() const noexcept
const char*
what() const noexcept override
{
return m_message.c_str();
}
@ -343,7 +344,7 @@ namespace cxxopts
{
public:
OptionSpecException(const std::string& message)
explicit OptionSpecException(const std::string& message)
: OptionException(message)
{
}
@ -352,7 +353,7 @@ namespace cxxopts
class OptionParseException : public OptionException
{
public:
OptionParseException(const std::string& message)
explicit OptionParseException(const std::string& message)
: OptionException(message)
{
}
@ -361,7 +362,7 @@ namespace cxxopts
class option_exists_error : public OptionSpecException
{
public:
option_exists_error(const std::string& option)
explicit option_exists_error(const std::string& option)
: OptionSpecException("Option " + LQUOTE + option + RQUOTE + " already exists")
{
}
@ -370,7 +371,7 @@ namespace cxxopts
class invalid_option_format_error : public OptionSpecException
{
public:
invalid_option_format_error(const std::string& format)
explicit invalid_option_format_error(const std::string& format)
: OptionSpecException("Invalid option format " + LQUOTE + format + RQUOTE)
{
}
@ -378,7 +379,7 @@ namespace cxxopts
class option_syntax_exception : public OptionParseException {
public:
option_syntax_exception(const std::string& text)
explicit option_syntax_exception(const std::string& text)
: OptionParseException("Argument " + LQUOTE + text + RQUOTE +
" starts with a - but has incorrect syntax")
{
@ -388,7 +389,7 @@ namespace cxxopts
class option_not_exists_exception : public OptionParseException
{
public:
option_not_exists_exception(const std::string& option)
explicit option_not_exists_exception(const std::string& option)
: OptionParseException("Option " + LQUOTE + option + RQUOTE + " does not exist")
{
}
@ -397,7 +398,7 @@ namespace cxxopts
class missing_argument_exception : public OptionParseException
{
public:
missing_argument_exception(const std::string& option)
explicit missing_argument_exception(const std::string& option)
: OptionParseException(
"Option " + LQUOTE + option + RQUOTE + " is missing an argument"
)
@ -408,7 +409,7 @@ namespace cxxopts
class option_requires_argument_exception : public OptionParseException
{
public:
option_requires_argument_exception(const std::string& option)
explicit option_requires_argument_exception(const std::string& option)
: OptionParseException(
"Option " + LQUOTE + option + RQUOTE + " requires an argument"
)
@ -436,7 +437,7 @@ namespace cxxopts
class option_not_present_exception : public OptionParseException
{
public:
option_not_present_exception(const std::string& option)
explicit option_not_present_exception(const std::string& option)
: OptionParseException("Option " + LQUOTE + option + RQUOTE + " not present")
{
}
@ -445,7 +446,7 @@ namespace cxxopts
class argument_incorrect_type : public OptionParseException
{
public:
argument_incorrect_type
explicit argument_incorrect_type
(
const std::string& arg
)
@ -459,7 +460,7 @@ namespace cxxopts
class option_required_exception : public OptionParseException
{
public:
option_required_exception(const std::string& option)
explicit option_required_exception(const std::string& option)
: OptionParseException(
"Option " + LQUOTE + option + RQUOTE + " is required but not present"
)
@ -497,7 +498,7 @@ namespace cxxopts
("(t|T)(rue)?|1");
std::basic_regex<char> falsy_pattern
("(f|F)(alse)?|0");
}
} // namespace
namespace detail
{
@ -542,7 +543,7 @@ namespace cxxopts
{
SignedCheck<T, std::numeric_limits<T>::is_signed>()(negative, value, text);
}
}
} // namespace detail
template <typename R, typename T>
R
@ -745,7 +746,7 @@ namespace cxxopts
{
std::stringstream in(text);
std::string token;
while(in.eof() == false && std::getline(in, token, CXXOPTS_VECTOR_DELIMITER)) {
while(!in.eof() && std::getline(in, token, CXXOPTS_VECTOR_DELIMITER)) {
T v;
parse_value(token, v);
value.emplace_back(std::move(v));
@ -798,12 +799,12 @@ namespace cxxopts
{
}
abstract_value(T* t)
explicit abstract_value(T* t)
: m_store(t)
{
}
virtual ~abstract_value() = default;
~abstract_value() override = default;
abstract_value(const abstract_value& rhs)
{
@ -824,37 +825,37 @@ namespace cxxopts
}
void
parse(const std::string& text) const
parse(const std::string& text) const override
{
parse_value(text, *m_store);
}
bool
is_container() const
is_container() const override
{
return type_is_container<T>::value;
}
void
parse() const
parse() const override
{
parse_value(m_default_value, *m_store);
}
bool
has_default() const
has_default() const override
{
return m_default;
}
bool
has_implicit() const
has_implicit() const override
{
return m_implicit;
}
std::shared_ptr<Value>
default_value(const std::string& value)
default_value(const std::string& value) override
{
m_default = true;
m_default_value = value;
@ -862,7 +863,7 @@ namespace cxxopts
}
std::shared_ptr<Value>
implicit_value(const std::string& value)
implicit_value(const std::string& value) override
{
m_implicit = true;
m_implicit_value = value;
@ -870,26 +871,26 @@ namespace cxxopts
}
std::shared_ptr<Value>
no_implicit_value()
no_implicit_value() override
{
m_implicit = false;
return shared_from_this();
}
std::string
get_default_value() const
get_default_value() const override
{
return m_default_value;
}
std::string
get_implicit_value() const
get_implicit_value() const override
{
return m_implicit_value;
}
bool
is_boolean() const
is_boolean() const override
{
return std::is_same<T, bool>::value;
}
@ -901,11 +902,8 @@ namespace cxxopts
{
return *m_result;
}
else
{
return *m_store;
}
}
protected:
std::shared_ptr<T> m_result;
@ -935,21 +933,21 @@ namespace cxxopts
class standard_value<bool> : public abstract_value<bool>
{
public:
~standard_value() = default;
~standard_value() override = default;
standard_value()
{
set_default_and_implicit();
}
standard_value(bool* b)
explicit standard_value(bool* b)
: abstract_value(b)
{
set_default_and_implicit();
}
std::shared_ptr<Value>
clone() const
clone() const override
{
return std::make_shared<standard_value<bool>>(*this);
}
@ -965,7 +963,7 @@ namespace cxxopts
m_implicit_value = "true";
}
};
}
} // namespace values
template <typename T>
std::shared_ptr<Value>
@ -988,15 +986,15 @@ namespace cxxopts
public:
OptionDetails
(
const std::string& short_,
const std::string& long_,
const String& desc,
std::string short_,
std::string long_,
String desc,
std::shared_ptr<const Value> val
)
: m_short(short_)
, m_long(long_)
, m_desc(desc)
, m_value(val)
: m_short(std::move(short_))
, m_long(std::move(long_))
, m_desc(std::move(desc))
, m_value(std::move(val))
, m_count(0)
{
}
@ -1073,7 +1071,7 @@ namespace cxxopts
void
parse
(
std::shared_ptr<const OptionDetails> details,
const std::shared_ptr<const OptionDetails>& details,
const std::string& text
)
{
@ -1083,7 +1081,7 @@ namespace cxxopts
}
void
parse_default(std::shared_ptr<const OptionDetails> details)
parse_default(const std::shared_ptr<const OptionDetails>& details)
{
ensure_value(details);
m_default = true;
@ -1120,7 +1118,7 @@ namespace cxxopts
private:
void
ensure_value(std::shared_ptr<const OptionDetails> details)
ensure_value(const std::shared_ptr<const OptionDetails>& details)
{
if (m_value == nullptr)
{
@ -1175,7 +1173,7 @@ namespace cxxopts
public:
ParseResult(
const std::shared_ptr<
std::shared_ptr<
std::unordered_map<std::string, std::shared_ptr<OptionDetails>>
>,
std::vector<std::string>,
@ -1226,18 +1224,18 @@ namespace cxxopts
add_to_option(const std::string& option, const std::string& arg);
bool
consume_positional(std::string a);
consume_positional(const std::string& a);
void
parse_option
(
std::shared_ptr<OptionDetails> value,
const std::shared_ptr<OptionDetails>& value,
const std::string& name,
const std::string& arg = ""
);
void
parse_default(std::shared_ptr<OptionDetails> details);
parse_default(const std::shared_ptr<OptionDetails>& details);
void
checked_parse_arg
@ -1245,7 +1243,7 @@ namespace cxxopts
int argc,
char* argv[],
int& current,
std::shared_ptr<OptionDetails> value,
const std::shared_ptr<OptionDetails>& value,
const std::string& name
);
@ -1266,15 +1264,15 @@ namespace cxxopts
{
Option
(
const std::string& opts,
const std::string& desc,
const std::shared_ptr<const Value>& value = ::cxxopts::value<bool>(),
const std::string& arg_help = ""
std::string opts,
std::string desc,
std::shared_ptr<const Value> value = ::cxxopts::value<bool>(),
std::string arg_help = ""
)
: opts_(opts)
, desc_(desc)
, value_(value)
, arg_help_(arg_help)
: opts_(std::move(opts))
, desc_(std::move(desc))
, value_(std::move(value))
, arg_help_(std::move(arg_help))
{
}
@ -1286,11 +1284,10 @@ namespace cxxopts
class Options
{
typedef std::unordered_map<std::string, std::shared_ptr<OptionDetails>>
OptionMap;
using OptionMap = std::unordered_map<std::string, std::shared_ptr<OptionDetails>>;
public:
Options(std::string program, std::string help_string = "")
explicit Options(std::string program, std::string help_string = "")
: m_program(std::move(program))
, m_help_string(toLocalString(std::move(help_string)))
, m_custom_help("[OPTION...]")
@ -1357,7 +1354,7 @@ namespace cxxopts
const std::string& s,
const std::string& l,
std::string desc,
std::shared_ptr<const Value> value,
const std::shared_ptr<const Value>& value,
std::string arg_help
);
@ -1380,7 +1377,7 @@ namespace cxxopts
std::string
help(const std::vector<std::string>& groups = {}) const;
const std::vector<std::string>
std::vector<std::string>
groups() const;
const HelpGroupDetails&
@ -1392,7 +1389,7 @@ namespace cxxopts
add_one_option
(
const std::string& option,
std::shared_ptr<OptionDetails> details
const std::shared_ptr<OptionDetails>& details
);
String
@ -1438,7 +1435,7 @@ namespace cxxopts
(
const std::string& opts,
const std::string& desc,
std::shared_ptr<const Value> value
const std::shared_ptr<const Value>& value
= ::cxxopts::value<bool>(),
std::string arg_help = ""
);
@ -1465,12 +1462,12 @@ namespace cxxopts
const HelpOptionDetails& o
)
{
auto& s = o.s;
auto& l = o.l;
const auto& s = o.s;
const auto& l = o.l;
String result = " ";
if (s.size() > 0)
if (!s.empty())
{
result += "-" + toLocalString(s) + ",";
}
@ -1479,12 +1476,12 @@ namespace cxxopts
result += " ";
}
if (l.size() > 0)
if (!l.empty())
{
result += " --" + toLocalString(l);
}
auto arg = o.arg_help.size() > 0 ? toLocalString(o.arg_help) : "arg";
auto arg = !o.arg_help.empty() ? toLocalString(o.arg_help) : "arg";
if (!o.is_boolean)
{
@ -1513,7 +1510,7 @@ namespace cxxopts
if (o.has_default && (!o.is_boolean || o.default_value != "false"))
{
if(o.default_value != "")
if(!o.default_value.empty())
{
desc += toLocalString(" (default: " + o.default_value + ")");
}
@ -1576,19 +1573,19 @@ namespace cxxopts
return result;
}
}
} // namespace
inline
ParseResult::ParseResult
(
const std::shared_ptr<
std::shared_ptr<
std::unordered_map<std::string, std::shared_ptr<OptionDetails>>
> options,
std::vector<std::string> positional,
bool allow_unrecognised,
int& argc, char**& argv
)
: m_options(options)
: m_options(std::move(options))
, m_positional(std::move(positional))
, m_next_positional(m_positional.begin())
, m_allow_unrecognised(allow_unrecognised)
@ -1624,7 +1621,7 @@ OptionAdder::operator()
(
const std::string& opts,
const std::string& desc,
std::shared_ptr<const Value> value,
const std::shared_ptr<const Value>& value,
std::string arg_help
)
{
@ -1657,10 +1654,7 @@ OptionAdder::operator()
{
return std::make_tuple(long_.str(), short_.str());
}
else
{
return std::make_tuple(short_.str(), long_.str());
}
}(short_match, long_match);
m_options.add_option
@ -1678,7 +1672,7 @@ OptionAdder::operator()
inline
void
ParseResult::parse_default(std::shared_ptr<OptionDetails> details)
ParseResult::parse_default(const std::shared_ptr<OptionDetails>& details)
{
m_results[details].parse_default(details);
}
@ -1687,7 +1681,7 @@ inline
void
ParseResult::parse_option
(
std::shared_ptr<OptionDetails> value,
const std::shared_ptr<OptionDetails>& value,
const std::string& /*name*/,
const std::string& arg
)
@ -1705,7 +1699,7 @@ ParseResult::checked_parse_arg
int argc,
char* argv[],
int& current,
std::shared_ptr<OptionDetails> value,
const std::shared_ptr<OptionDetails>& value,
const std::string& name
)
{
@ -1750,7 +1744,7 @@ ParseResult::add_to_option(const std::string& option, const std::string& arg)
inline
bool
ParseResult::consume_positional(std::string a)
ParseResult::consume_positional(const std::string& a)
{
while (m_next_positional != m_positional.end())
{
@ -1766,23 +1760,14 @@ ParseResult::consume_positional(std::string a)
++m_next_positional;
return true;
}
else
{
++m_next_positional;
continue;
}
}
else
{
add_to_option(*m_next_positional, a);
return true;
}
}
else
{
throw_or_mimic<option_not_exists_exception>(*m_next_positional);
}
}
return false;
}
@ -1808,7 +1793,7 @@ inline
void
Options::parse_positional(std::initializer_list<std::string> options)
{
parse_positional(std::vector<std::string>(std::move(options)));
parse_positional(std::vector<std::string>(options));
}
inline
@ -1882,12 +1867,9 @@ ParseResult::parse(int& argc, char**& argv)
{
continue;
}
else
{
//error
throw_or_mimic<option_not_exists_exception>(name);
}
}
auto value = iter->second;
@ -1923,12 +1905,9 @@ ParseResult::parse(int& argc, char**& argv)
++current;
continue;
}
else
{
//error
throw_or_mimic<option_not_exists_exception>(name);
}
}
auto opt = iter->second;
@ -1954,7 +1933,7 @@ ParseResult::parse(int& argc, char**& argv)
for (auto& opt : *m_options)
{
auto& detail = opt.second;
auto& value = detail->value();
const auto& value = detail->value();
auto& store = m_results[detail];
@ -2004,19 +1983,19 @@ Options::add_option
const std::string& s,
const std::string& l,
std::string desc,
std::shared_ptr<const Value> value,
const std::shared_ptr<const Value>& value,
std::string arg_help
)
{
auto stringDesc = toLocalString(std::move(desc));
auto option = std::make_shared<OptionDetails>(s, l, stringDesc, value);
if (s.size() > 0)
if (!s.empty())
{
add_one_option(s, option);
}
if (l.size() > 0)
if (!l.empty())
{
add_one_option(l, option);
}
@ -2037,7 +2016,7 @@ void
Options::add_one_option
(
const std::string& option,
std::shared_ptr<OptionDetails> details
const std::shared_ptr<OptionDetails>& details
)
{
auto in = m_options->emplace(option, details);
@ -2052,7 +2031,7 @@ inline
String
Options::help_one_group(const std::string& g) const
{
typedef std::vector<std::pair<String, String>> OptionHelp;
using OptionHelp = std::vector<std::pair<String, String>>;
auto group = m_help.find(g);
if (group == m_help.end())
@ -2151,7 +2130,7 @@ Options::generate_all_groups_help(String& result) const
std::vector<std::string> all_groups;
all_groups.reserve(m_help.size());
for (auto& group : m_help)
for (const auto& group : m_help)
{
all_groups.push_back(group.first);
}
@ -2166,13 +2145,13 @@ Options::help(const std::vector<std::string>& help_groups) const
String result = m_help_string + "\nUsage:\n " +
toLocalString(m_program) + " " + toLocalString(m_custom_help);
if (m_positional.size() > 0 && m_positional_help.size() > 0) {
if (!m_positional.empty() && !m_positional_help.empty()) {
result += " " + toLocalString(m_positional_help);
}
result += "\n\n";
if (help_groups.size() == 0)
if (help_groups.empty())
{
generate_all_groups_help(result);
}
@ -2185,7 +2164,7 @@ Options::help(const std::vector<std::string>& help_groups) const
}
inline
const std::vector<std::string>
std::vector<std::string>
Options::groups() const
{
std::vector<std::string> g;
@ -2210,6 +2189,6 @@ Options::group_help(const std::string& group) const
return m_help.at(group);
}
}
} // namespace cxxopts
#endif //CXXOPTS_HPP_INCLUDED