Added const to argv type for better interoperability.

This commit is contained in:
Jesús González 2018-02-25 23:17:58 +01:00
parent e792760ab9
commit 7331af22ae
4 changed files with 26 additions and 26 deletions

View File

@ -1079,7 +1079,7 @@ namespace cxxopts
ParseResult( ParseResult(
const std::unordered_map<std::string, std::shared_ptr<OptionDetails>>&, const std::unordered_map<std::string, std::shared_ptr<OptionDetails>>&,
std::vector<std::string>, std::vector<std::string>,
int&, char**&); int&, const char**&);
size_t size_t
count(const std::string& o) const count(const std::string& o) const
@ -1122,7 +1122,7 @@ namespace cxxopts
get_option(std::shared_ptr<OptionDetails>); get_option(std::shared_ptr<OptionDetails>);
void void
parse(int& argc, char**& argv); parse(int& argc, const char**& argv);
void void
add_to_option(const std::string& option, const std::string& arg); add_to_option(const std::string& option, const std::string& arg);
@ -1145,7 +1145,7 @@ namespace cxxopts
checked_parse_arg checked_parse_arg
( (
int argc, int argc,
char* argv[], const char* argv[],
int& current, int& current,
std::shared_ptr<OptionDetails> value, std::shared_ptr<OptionDetails> value,
const std::string& name const std::string& name
@ -1197,7 +1197,7 @@ namespace cxxopts
} }
ParseResult ParseResult
parse(int& argc, char**& argv); parse(int& argc, const char**& argv);
OptionAdder OptionAdder
add_options(std::string group = ""); add_options(std::string group = "");
@ -1415,7 +1415,7 @@ ParseResult::ParseResult
( (
const std::unordered_map<std::string, std::shared_ptr<OptionDetails>>& options, const std::unordered_map<std::string, std::shared_ptr<OptionDetails>>& options,
std::vector<std::string> positional, std::vector<std::string> positional,
int& argc, char**& argv int& argc, const char**& argv
) )
: m_options(options) : m_options(options)
, m_positional(std::move(positional)) , m_positional(std::move(positional))
@ -1516,7 +1516,7 @@ void
ParseResult::checked_parse_arg ParseResult::checked_parse_arg
( (
int argc, int argc,
char* argv[], const char* argv[],
int& current, int& current,
std::shared_ptr<OptionDetails> value, std::shared_ptr<OptionDetails> value,
const std::string& name const std::string& name
@ -1623,7 +1623,7 @@ Options::parse_positional(std::initializer_list<std::string> options)
inline inline
ParseResult ParseResult
Options::parse(int& argc, char**& argv) Options::parse(int& argc, const char**& argv)
{ {
ParseResult result(m_options, m_positional, argc, argv); ParseResult result(m_options, m_positional, argc, argv);
return result; return result;
@ -1631,7 +1631,7 @@ Options::parse(int& argc, char**& argv)
inline inline
void void
ParseResult::parse(int& argc, char**& argv) ParseResult::parse(int& argc, const char**& argv)
{ {
int current = 1; int current = 1;

View File

@ -26,7 +26,7 @@ THE SOFTWARE.
#include "cxxopts.hpp" #include "cxxopts.hpp"
int main(int argc, char* argv[]) int main(int argc, const char* argv[])
{ {
try try
{ {

View File

@ -10280,7 +10280,7 @@ namespace Catch {
#ifndef __OBJC__ #ifndef __OBJC__
// Standard C/C++ main entry point // Standard C/C++ main entry point
int main (int argc, char * argv[]) { int main (int argc, const char * argv[]) {
return Catch::Session().run( argc, argv ); return Catch::Session().run( argc, argv );
} }

View File

@ -8,7 +8,7 @@ class Argv {
public: public:
Argv(std::initializer_list<const char*> args) Argv(std::initializer_list<const char*> args)
: m_argv(new char*[args.size()]) : m_argv(new const char*[args.size()])
, m_argc(args.size()) , m_argc(args.size())
{ {
int i = 0; int i = 0;
@ -26,7 +26,7 @@ class Argv {
} }
} }
char** argv() const { const char** argv() const {
return m_argv.get(); return m_argv.get();
} }
@ -36,8 +36,8 @@ class Argv {
private: private:
std::vector<std::unique_ptr<char[]>> m_args; std::vector<std::unique_ptr<const char[]>> m_args;
std::unique_ptr<char*[]> m_argv; std::unique_ptr<const char*[]> m_argv;
int m_argc; int m_argc;
}; };
@ -68,7 +68,7 @@ TEST_CASE("Basic options", "[options]")
"--space", "--space",
}); });
char** actual_argv = argv.argv(); const char** actual_argv = argv.argv();
auto argc = argv.argc(); auto argc = argv.argc();
auto result = options.parse(argc, actual_argv); auto result = options.parse(argc, actual_argv);
@ -122,7 +122,7 @@ TEST_CASE("No positional", "[positional]")
Argv av({"tester", "a", "b", "def"}); Argv av({"tester", "a", "b", "def"});
char** argv = av.argv(); const char** argv = av.argv();
auto argc = av.argc(); auto argc = av.argc();
auto result = options.parse(argc, argv); auto result = options.parse(argc, argv);
@ -172,7 +172,7 @@ TEST_CASE("Some positional explicit", "[positional]")
Argv av({"tester", "--output", "a", "b", "c", "d"}); Argv av({"tester", "--output", "a", "b", "c", "d"});
char** argv = av.argv(); const char** argv = av.argv();
auto argc = av.argc(); auto argc = av.argc();
auto result = options.parse(argc, argv); auto result = options.parse(argc, argv);
@ -198,7 +198,7 @@ TEST_CASE("No positional with extras", "[positional]")
Argv av({"extras", "--", "a", "b", "c", "d"}); Argv av({"extras", "--", "a", "b", "c", "d"});
char** argv = av.argv(); const char** argv = av.argv();
auto argc = av.argc(); auto argc = av.argc();
auto old_argv = argv; auto old_argv = argv;
@ -220,7 +220,7 @@ TEST_CASE("Empty with implicit value", "[implicit]")
Argv av({"implicit", "--implicit="}); Argv av({"implicit", "--implicit="});
char** argv = av.argv(); const char** argv = av.argv();
auto argc = av.argc(); auto argc = av.argc();
auto result = options.parse(argc, argv); auto result = options.parse(argc, argv);
@ -239,7 +239,7 @@ TEST_CASE("Default values", "[default]")
SECTION("Sets defaults") { SECTION("Sets defaults") {
Argv av({"implicit"}); Argv av({"implicit"});
char** argv = av.argv(); const char** argv = av.argv();
auto argc = av.argc(); auto argc = av.argc();
auto result = options.parse(argc, argv); auto result = options.parse(argc, argv);
@ -250,7 +250,7 @@ TEST_CASE("Default values", "[default]")
SECTION("When values provided") { SECTION("When values provided") {
Argv av({"implicit", "--default", "5"}); Argv av({"implicit", "--default", "5"});
char** argv = av.argv(); const char** argv = av.argv();
auto argc = av.argc(); auto argc = av.argc();
auto result = options.parse(argc, argv); auto result = options.parse(argc, argv);
@ -285,7 +285,7 @@ TEST_CASE("Integers", "[options]")
Argv av({"ints", "--", "5", "6", "-6", "0", "0xab", "0xAf", "0x0"}); Argv av({"ints", "--", "5", "6", "-6", "0", "0xab", "0xAf", "0x0"});
char** argv = av.argv(); const char** argv = av.argv();
auto argc = av.argc(); auto argc = av.argc();
options.parse_positional("positional"); options.parse_positional("positional");
@ -312,7 +312,7 @@ TEST_CASE("Unsigned integers", "[options]")
Argv av({"ints", "--", "-2"}); Argv av({"ints", "--", "-2"});
char** argv = av.argv(); const char** argv = av.argv();
auto argc = av.argc(); auto argc = av.argc();
options.parse_positional("positional"); options.parse_positional("positional");
@ -385,7 +385,7 @@ TEST_CASE("Floats", "[options]")
Argv av({"floats", "--double", "0.5", "--", "4", "-4", "1.5e6", "-1.5e6"}); Argv av({"floats", "--double", "0.5", "--", "4", "-4", "1.5e6", "-1.5e6"});
char** argv = av.argv(); const char** argv = av.argv();
auto argc = av.argc(); auto argc = av.argc();
options.parse_positional("positional"); options.parse_positional("positional");
@ -410,7 +410,7 @@ TEST_CASE("Invalid integers", "[integer]") {
Argv av({"ints", "--", "Ae"}); Argv av({"ints", "--", "Ae"});
char **argv = av.argv(); const char **argv = av.argv();
auto argc = av.argc(); auto argc = av.argc();
options.parse_positional("positional"); options.parse_positional("positional");
@ -433,7 +433,7 @@ TEST_CASE("Booleans", "[boolean]") {
Argv av({"booleans", "--bool=false", "--debug=true", "--timing", "extra"}); Argv av({"booleans", "--bool=false", "--debug=true", "--timing", "extra"});
char** argv = av.argv(); const char** argv = av.argv();
auto argc = av.argc(); auto argc = av.argc();
auto result = options.parse(argc, argv); auto result = options.parse(argc, argv);