aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/aesxx/utils/helpers
diff options
context:
space:
mode:
Diffstat (limited to 'aesxx/utils/helpers')
-rw-r--r--aesxx/utils/helpers/cmd_parser.hpp15
-rw-r--r--aesxx/utils/helpers/cmd_parser_block.hpp22
-rw-r--r--aesxx/utils/helpers/cmd_parser_file.hpp30
-rw-r--r--aesxx/utils/helpers/data_parsers.hpp38
4 files changed, 38 insertions, 67 deletions
diff --git a/aesxx/utils/helpers/cmd_parser.hpp b/aesxx/utils/helpers/cmd_parser.hpp
index 11146e8..cc8d00c 100644
--- a/aesxx/utils/helpers/cmd_parser.hpp
+++ b/aesxx/utils/helpers/cmd_parser.hpp
@@ -28,20 +28,17 @@ public:
}
virtual void parse(int argc, char* argv[]) {
- boost::program_options::options_description all;
+ namespace po = boost::program_options;
+ po::options_description all;
all.add(hidden).add(visible);
- boost::program_options::variables_map vm;
- boost::program_options::store(
- boost::program_options::command_line_parser{argc, argv}
- .options(all)
- .positional(positional)
- .run(),
- vm
+ po::variables_map vm;
+ po::store(
+ po::command_line_parser{argc, argv}.options(all).positional(positional).run(), vm
);
if (vm.count("help"))
_exit_with_usage = true;
else
- boost::program_options::notify(vm);
+ po::notify(vm);
}
bool exit_with_usage() const {
diff --git a/aesxx/utils/helpers/cmd_parser_block.hpp b/aesxx/utils/helpers/cmd_parser_block.hpp
index 7e24874..b3412d0 100644
--- a/aesxx/utils/helpers/cmd_parser_block.hpp
+++ b/aesxx/utils/helpers/cmd_parser_block.hpp
@@ -50,20 +50,14 @@ public:
};
explicit BlockSettings(std::string_view argv0) : SettingsParser{argv0} {
+ namespace po = boost::program_options;
+
+ visible.add_options()("verbose,v", po::bool_switch(&_verbose), "enable verbose output");
visible.add_options()(
- "verbose,v", boost::program_options::bool_switch(&_verbose), "enable verbose output"
- );
- visible.add_options()(
- "algorithm,a",
- boost::program_options::value<aes::Algorithm>(&algorithm)
- ->required()
- ->value_name("NAME"),
- "set algorithm"
+ "algorithm,a", po::value(&algorithm)->required()->value_name("NAME"), "set algorithm"
);
visible.add_options()(
- "mode,m",
- boost::program_options::value<aes::Mode>(&mode)->required()->value_name("MODE"),
- "set mode of operation"
+ "mode,m", po::value(&mode)->required()->value_name("MODE"), "set mode of operation"
);
}
@@ -74,11 +68,7 @@ public:
void parse(int argc, char* argv[]) override {
std::vector<std::string> args;
- hidden.add_options()(
- "args",
- boost::program_options::value<std::vector<std::string>>(&args),
- "shouldn't be visible"
- );
+ hidden.add_options()("args", boost::program_options::value(&args), "shouldn't be visible");
positional.add("args", -1);
SettingsParser::parse(argc, argv);
diff --git a/aesxx/utils/helpers/cmd_parser_file.hpp b/aesxx/utils/helpers/cmd_parser_file.hpp
index 8adfb1d..d66c139 100644
--- a/aesxx/utils/helpers/cmd_parser_file.hpp
+++ b/aesxx/utils/helpers/cmd_parser_file.hpp
@@ -14,46 +14,32 @@
#include <boost/program_options.hpp>
#include <optional>
-#include <ostream>
#include <string>
#include <string_view>
-#include <utility>
class FileSettings : public SettingsParser {
public:
explicit FileSettings(std::string_view argv0) : SettingsParser{argv0} {
+ namespace po = boost::program_options;
+
visible.add_options()(
- "algorithm,a",
- boost::program_options::value<aes::Algorithm>(&algorithm)
- ->required()
- ->value_name("NAME"),
- "set algorithm"
+ "algorithm,a", po::value(&algorithm)->required()->value_name("NAME"), "set algorithm"
);
visible.add_options()(
- "mode,m",
- boost::program_options::value<aes::Mode>(&mode)->required()->value_name("MODE"),
- "set mode of operation"
+ "mode,m", po::value(&mode)->required()->value_name("MODE"), "set mode of operation"
);
visible.add_options()(
- "key,k",
- boost::program_options::value<std::string>(&key)->required()->value_name("KEY"),
- "set encryption key"
+ "key,k", po::value(&key)->required()->value_name("KEY"), "set encryption key"
);
visible.add_options()(
- "iv,v",
- boost::program_options::value(&iv)->value_name("BLOCK"),
- "set initialization vector"
+ "iv,v", po::value(&iv)->value_name("BLOCK"), "set initialization vector"
);
visible.add_options()(
- "input,i",
- boost::program_options::value<std::string>(&input_path)->required()->value_name("PATH"),
- "set input file path"
+ "input,i", po::value(&input_path)->required()->value_name("PATH"), "set input file path"
);
visible.add_options()(
"output,o",
- boost::program_options::value<std::string>(&output_path)
- ->required()
- ->value_name("PATH"),
+ po::value(&output_path)->required()->value_name("PATH"),
"set output file path"
);
}
diff --git a/aesxx/utils/helpers/data_parsers.hpp b/aesxx/utils/helpers/data_parsers.hpp
index a66a433..fc44f80 100644
--- a/aesxx/utils/helpers/data_parsers.hpp
+++ b/aesxx/utils/helpers/data_parsers.hpp
@@ -8,16 +8,20 @@
#include <aesxx/all.hpp>
#include <boost/algorithm/string.hpp>
-#include <boost/optional.hpp>
+#include <boost/any.hpp>
#include <boost/program_options.hpp>
-#include <istream>
#include <string>
#include <unordered_map>
+#include <vector>
-inline std::istream& operator>>(std::istream& is, aes::Mode& dest) {
- std::string src;
- is >> src;
+namespace boost {
+
+inline void validate(any& dest, const std::vector<std::string>& values, aes::Mode*, int) {
+ using namespace program_options;
+
+ validators::check_first_occurrence(dest);
+ const auto& src = validators::get_single_string(values);
static const std::unordered_map<std::string, aes::Mode> lookup_table = {
{"ecb", AES_ECB},
@@ -27,18 +31,17 @@ inline std::istream& operator>>(std::istream& is, aes::Mode& dest) {
{"ctr", AES_CTR},
};
- const auto it = lookup_table.find(boost::algorithm::to_lower_copy(src));
-
+ const auto it = lookup_table.find(algorithm::to_lower_copy(src));
if (it == lookup_table.cend())
- throw boost::program_options::invalid_option_value(src);
-
+ throw invalid_option_value(src);
dest = it->second;
- return is;
}
-inline std::istream& operator>>(std::istream& is, aes::Algorithm& dest) {
- std::string src;
- is >> src;
+inline void validate(any& dest, const std::vector<std::string>& values, aes::Algorithm*, int) {
+ using namespace program_options;
+
+ validators::check_first_occurrence(dest);
+ const auto& src = validators::get_single_string(values);
static const std::unordered_map<std::string, aes::Algorithm> lookup_table = {
{"aes128", AES_AES128},
@@ -46,17 +49,12 @@ inline std::istream& operator>>(std::istream& is, aes::Algorithm& dest) {
{"aes256", AES_AES256},
};
- const auto it = lookup_table.find(boost::algorithm::to_lower_copy(src));
-
+ const auto it = lookup_table.find(algorithm::to_lower_copy(src));
if (it == lookup_table.cend())
- throw boost::program_options::invalid_option_value(src);
-
+ throw invalid_option_value(src);
dest = it->second;
- return is;
}
-namespace boost {
-
inline void validate(any& dest, const std::vector<std::string>& values, aes::Block*, int) {
const std::string& src = program_options::validators::get_single_string(values);
dest = aes::Block{src};