mirror of
https://github.com/ScrelliCopter/tmx2gba.git
synced 2025-02-21 03:29:25 +11:00
argparse: use replace raw char* strings with string views
This commit is contained in:
@@ -23,7 +23,7 @@ void ArgParse::Options::ShowShortUsage(const std::string_view name, std::ostream
|
|||||||
out << "Usage: " << name;
|
out << "Usage: " << name;
|
||||||
for (const auto& it : options)
|
for (const auto& it : options)
|
||||||
{
|
{
|
||||||
if (it.argumentName)
|
if (!it.argumentName.empty())
|
||||||
{
|
{
|
||||||
// Option with argument
|
// Option with argument
|
||||||
it.required
|
it.required
|
||||||
@@ -55,8 +55,8 @@ void ArgParse::Options::ShowHelpUsage(const std::string_view name, std::ostream&
|
|||||||
out << ">" << std::endl;
|
out << ">" << std::endl;
|
||||||
|
|
||||||
// Determine the alignment width from the longest argument
|
// Determine the alignment width from the longest argument
|
||||||
auto paramLength = [](const Option& p) -> int { return p.argumentName
|
auto paramLength = [](const Option& p) -> int { return !p.argumentName.empty()
|
||||||
? static_cast<int>(std::strlen(p.argumentName) + 3)
|
? static_cast<int>(p.argumentName.length() + 3)
|
||||||
: 1; };
|
: 1; };
|
||||||
auto longestParam = std::max_element(options.begin(), options.end(),
|
auto longestParam = std::max_element(options.begin(), options.end(),
|
||||||
[=](auto a, auto b) -> bool { return paramLength(a) < paramLength(b); });
|
[=](auto a, auto b) -> bool { return paramLength(a) < paramLength(b); });
|
||||||
@@ -67,7 +67,8 @@ void ArgParse::Options::ShowHelpUsage(const std::string_view name, std::ostream&
|
|||||||
{
|
{
|
||||||
auto decorateArgument = [=] { return " <" + std::string(it.argumentName) + "> "; };
|
auto decorateArgument = [=] { return " <" + std::string(it.argumentName) + "> "; };
|
||||||
out << " -" << it.flag
|
out << " -" << it.flag
|
||||||
<< std::left << std::setw(alignWidth) << std::setfill('-') << (it.argumentName ? decorateArgument() : " ")
|
<< std::left << std::setw(alignWidth) << std::setfill('-')
|
||||||
|
<< (!it.argumentName.empty() ? decorateArgument() : " ")
|
||||||
<< " " << it.helpString << std::endl;
|
<< " " << it.helpString << std::endl;
|
||||||
}
|
}
|
||||||
out << std::flush;
|
out << std::flush;
|
||||||
@@ -99,7 +100,7 @@ ArgParse::ParseCtrl ArgParse::ParserState::Next(const std::string_view token)
|
|||||||
const auto opt = getOption(flagChar);
|
const auto opt = getOption(flagChar);
|
||||||
if (opt.has_value())
|
if (opt.has_value())
|
||||||
{
|
{
|
||||||
bool expect = opt.value().get().argumentName != nullptr;
|
bool expect = !opt.value().get().argumentName.empty();
|
||||||
if (token.length() <= 2)
|
if (token.length() <= 2)
|
||||||
{
|
{
|
||||||
expectArg = expect;
|
expectArg = expect;
|
||||||
|
|||||||
@@ -16,16 +16,16 @@ namespace ArgParse
|
|||||||
{
|
{
|
||||||
struct Option
|
struct Option
|
||||||
{
|
{
|
||||||
const char* argumentName;
|
std::string_view argumentName;
|
||||||
const char* helpString;
|
std::string_view helpString;
|
||||||
char flag;
|
char flag;
|
||||||
bool required;
|
bool required;
|
||||||
|
|
||||||
static constexpr Option Optional(char flag, const char* name, const char* help)
|
static constexpr Option Optional(char flag, const std::string_view name, const std::string_view help)
|
||||||
{
|
{
|
||||||
return { name, help, flag, false };
|
return { name, help, flag, false };
|
||||||
}
|
}
|
||||||
static constexpr Option Required(char flag, const char* name, const char* help)
|
static constexpr Option Required(char flag, const std::string_view name, const std::string_view help)
|
||||||
{
|
{
|
||||||
return { name, help, flag, true };
|
return { name, help, flag, true };
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,8 +26,8 @@ using ArgParse::Option;
|
|||||||
|
|
||||||
static const ArgParse::Options options =
|
static const ArgParse::Options options =
|
||||||
{
|
{
|
||||||
Option::Optional('h', nullptr, "Display this help & command info"),
|
Option::Optional('h', {}, "Display this help & command info"),
|
||||||
Option::Optional('v', nullptr, "Display version & quit"),
|
Option::Optional('v', {}, "Display version & quit"),
|
||||||
Option::Optional('l', "name", "Name of layer to use (default first layer in TMX)"),
|
Option::Optional('l', "name", "Name of layer to use (default first layer in TMX)"),
|
||||||
Option::Optional('y', "name", "Layer for palette mappings"),
|
Option::Optional('y', "name", "Layer for palette mappings"),
|
||||||
Option::Optional('c', "name", "Output a separate 8bit collision map of the specified layer"),
|
Option::Optional('c', "name", "Output a separate 8bit collision map of the specified layer"),
|
||||||
|
|||||||
Reference in New Issue
Block a user