DolphinTool: Less string copies

This commit is contained in:
get 2023-06-16 19:33:38 -05:00
parent 5029924ba1
commit e67c196d2a
3 changed files with 18 additions and 23 deletions

View File

@ -61,9 +61,11 @@ int ConvertCommand(const std::vector<std::string>& args)
parser.usage("usage: convert [options]... [FILE]...");
parser.add_option("-u", "--user")
.type("string")
.action("store")
.help("User folder path, required for temporary processing files. "
"Will be automatically created if this option is not set.");
"Will be automatically created if this option is not set.")
.set_default("");
parser.add_option("-i", "--input")
.type("string")
@ -110,34 +112,29 @@ int ConvertCommand(const std::vector<std::string>& args)
// Initialize the dolphin user directory, required for temporary processing files
// If this is not set, destructive file operations could occur due to path confusion
std::string user_directory;
if (options.is_set("user"))
user_directory = static_cast<const char*>(options.get("user"));
UICommon::SetUserDirectory(user_directory);
UICommon::SetUserDirectory(options["user"]);
UICommon::Init();
// Validate options
// --input
const std::string input_file_path = static_cast<const char*>(options.get("input"));
if (input_file_path.empty())
if (!options.is_set("input"))
{
std::cerr << "Error: No input set" << std::endl;
return EXIT_FAILURE;
}
const std::string& input_file_path = options["input"];
// --output
const std::string output_file_path = static_cast<const char*>(options.get("output"));
if (output_file_path.empty())
if (!options.is_set("output"))
{
std::cerr << "Error: No output set" << std::endl;
return EXIT_FAILURE;
}
const std::string& output_file_path = options["output"];
// --format
const std::optional<DiscIO::BlobType> format_o =
ParseFormatString(static_cast<const char*>(options.get("format")));
const std::optional<DiscIO::BlobType> format_o = ParseFormatString(options["format"]);
if (!format_o.has_value())
{
std::cerr << "Error: No output format set" << std::endl;
@ -255,7 +252,7 @@ int ConvertCommand(const std::vector<std::string>& args)
// --compress, --compress_level
std::optional<DiscIO::WIARVZCompressionType> compression_o =
ParseCompressionTypeString(static_cast<const char*>(options.get("compression")));
ParseCompressionTypeString(options["compression"]);
std::optional<int> compression_level_o;
if (options.is_set("compression_level"))

View File

@ -43,7 +43,7 @@ int HeaderCommand(const std::vector<std::string>& args)
const optparse::Values& options = parser.parse_args(args);
// Validate options
const std::string input_file_path = static_cast<const char*>(options.get("input"));
const std::string& input_file_path = options["input"];
if (input_file_path.empty())
{
std::cerr << "Error: No input set" << std::endl;

View File

@ -80,9 +80,11 @@ int VerifyCommand(const std::vector<std::string>& args)
parser.usage("usage: verify [options]...");
parser.add_option("-u", "--user")
.type("string")
.action("store")
.help("User folder path, required for temporary processing files. "
"Will be automatically created if this option is not set.");
"Will be automatically created if this option is not set.")
.set_default("");
parser.add_option("-i", "--input")
.type("string")
@ -101,20 +103,16 @@ int VerifyCommand(const std::vector<std::string>& args)
// Initialize the dolphin user directory, required for temporary processing files
// If this is not set, destructive file operations could occur due to path confusion
std::string user_directory;
if (options.is_set("user"))
user_directory = static_cast<const char*>(options.get("user"));
UICommon::SetUserDirectory(user_directory);
UICommon::SetUserDirectory(options["user"]);
UICommon::Init();
// Validate options
const std::string input_file_path = static_cast<const char*>(options.get("input"));
if (input_file_path.empty())
if (!options.is_set("input"))
{
std::cerr << "Error: No input set" << std::endl;
return EXIT_FAILURE;
}
const std::string& input_file_path = options["input"];
DiscIO::Hashes<bool> hashes_to_calculate{};
const bool algorithm_is_set = options.is_set("algorithm");
@ -124,7 +122,7 @@ int VerifyCommand(const std::vector<std::string>& args)
}
else
{
const std::string algorithm = static_cast<const char*>(options.get("algorithm"));
const std::string& algorithm = options["algorithm"];
if (algorithm == "crc32")
hashes_to_calculate.crc32 = true;
else if (algorithm == "md5")