aboutsummaryrefslogtreecommitdiffstats
path: root/src/cmd/getopt.h
diff options
context:
space:
mode:
authorSimon Warta <[email protected]>2015-12-08 17:25:03 +0100
committerSimon Warta <[email protected]>2015-12-09 15:28:07 +0100
commit1a0f3438a97b7913ccf444bc48510e0d145af551 (patch)
treebb4f275f5eba30076d9b48a9164c38b71e2a11e6 /src/cmd/getopt.h
parent0261351f68674105a40d1938a001ba65dda756ed (diff)
Rename cmd/app -> cli
Diffstat (limited to 'src/cmd/getopt.h')
-rw-r--r--src/cmd/getopt.h107
1 files changed, 0 insertions, 107 deletions
diff --git a/src/cmd/getopt.h b/src/cmd/getopt.h
deleted file mode 100644
index f683159d0..000000000
--- a/src/cmd/getopt.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
-* (C) 2009 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_CHECK_GETOPT_H__
-#define BOTAN_CHECK_GETOPT_H__
-
-#include <string>
-#include <vector>
-#include <stdexcept>
-#include <map>
-
-#include <botan/parsing.h>
-
-class OptionParser
- {
- public:
- std::vector<std::string> arguments() const { return leftover; }
-
- bool is_set(const std::string& key) const
- {
- return (options.find(key) != options.end());
- }
-
- std::string value(const std::string& key) const
- {
- std::map<std::string, std::string>::const_iterator i = options.find(key);
- if(i == options.end())
- throw std::runtime_error("Option '" + key + "' not set");
- return i->second;
- }
-
- std::string value_if_set(const std::string& key) const
- {
- return value_or_else(key, "");
- }
-
- std::string value_or_else(const std::string& key,
- const std::string& or_else) const
- {
- return is_set(key) ? value(key) : or_else;
- }
-
- size_t int_value_or_else(const std::string& key, size_t or_else) const
- {
- return is_set(key) ? Botan::to_u32bit(value(key)) : or_else;
- }
-
- void help(std::ostream& o, const std::string &appname)
- {
- o << "Usage: " << appname << " ";
-
- for(auto flag : flags)
- {
- o << "--" << flag.name();
- if(flag.takes_arg())
- o << "=";
- o << " ";
- }
-
- o << std::endl;
- }
-
- void parse(const std::vector<std::string> &args);
-
- OptionParser(const std::string& opt_string)
- {
- std::vector<std::string> opts = Botan::split_on(opt_string, '|');
-
- for(size_t j = 0; j != opts.size(); j++)
- flags.push_back(OptionFlag(opts[j]));
- }
-
- private:
- class OptionFlag
- {
- public:
- std::string name() const { return opt_name; }
- bool takes_arg() const { return opt_takes_arg; }
-
- OptionFlag(const std::string& opt_string)
- {
- std::string::size_type mark = opt_string.find('=');
- opt_name = opt_string.substr(0, mark);
- opt_takes_arg = (mark != std::string::npos);
- }
- private:
- std::string opt_name;
- bool opt_takes_arg;
- };
-
- OptionFlag find_option(const std::string& name) const
- {
- for(size_t j = 0; j != flags.size(); j++)
- if(flags[j].name() == name)
- return flags[j];
- throw std::runtime_error("Unknown option " + name);
- }
-
- std::vector<OptionFlag> flags;
- std::map<std::string, std::string> options;
- std::vector<std::string> leftover;
- };
-
-#endif