From 8bf568d35cd9cebcbc9419f0166b71d8f56990c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Gonz=C3=A1lez?= Date: Thu, 8 Mar 2018 22:06:33 +0100 Subject: [PATCH] Added const to argv type for better interoperability. (#98) * Added const to argv type for better interoperability. * Fixed example and tests compilation * Reverted changes to catch.hpp --- include/cxxopts.hpp | 8 ++++---- src/example.cpp | 2 +- test/options.cpp | 26 +++++++++++++------------- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/include/cxxopts.hpp b/include/cxxopts.hpp index 17bb590..3c297df 100644 --- a/include/cxxopts.hpp +++ b/include/cxxopts.hpp @@ -922,7 +922,7 @@ namespace cxxopts inline void - parse(int& argc, char**& argv); + parse(int& argc, const char**& argv); inline OptionAdder @@ -1018,7 +1018,7 @@ namespace cxxopts checked_parse_arg ( int argc, - char* argv[], + const char* argv[], int& current, std::shared_ptr value, const std::string& name @@ -1291,7 +1291,7 @@ void Options::checked_parse_arg ( int argc, - char* argv[], + const char* argv[], int& current, std::shared_ptr value, const std::string& name @@ -1385,7 +1385,7 @@ Options::parse_positional(std::vector options) } void -Options::parse(int& argc, char**& argv) +Options::parse(int& argc, const char**& argv) { int current = 1; diff --git a/src/example.cpp b/src/example.cpp index 44271b4..5674450 100644 --- a/src/example.cpp +++ b/src/example.cpp @@ -26,7 +26,7 @@ THE SOFTWARE. #include "cxxopts.hpp" -int main(int argc, char* argv[]) +int main(int argc, const char* argv[]) { try { diff --git a/test/options.cpp b/test/options.cpp index d428f9a..919e208 100644 --- a/test/options.cpp +++ b/test/options.cpp @@ -8,7 +8,7 @@ class Argv { public: Argv(std::initializer_list args) - : m_argv(new char*[args.size()]) + : m_argv(new const char*[args.size()]) , m_argc(args.size()) { int i = 0; @@ -26,7 +26,7 @@ class Argv { } } - char** argv() const { + const char** argv() const { return m_argv.get(); } @@ -36,8 +36,8 @@ class Argv { private: - std::vector> m_args; - std::unique_ptr m_argv; + std::vector> m_args; + std::unique_ptr m_argv; int m_argc; }; @@ -68,7 +68,7 @@ TEST_CASE("Basic options", "[options]") "--space", }); - char** actual_argv = argv.argv(); + const char** actual_argv = argv.argv(); auto argc = argv.argc(); options.parse(argc, actual_argv); @@ -133,7 +133,7 @@ TEST_CASE("No positional", "[positional]") Argv av({"tester", "a", "b", "def"}); - char** argv = av.argv(); + const char** argv = av.argv(); auto argc = av.argc(); options.parse(argc, argv); @@ -183,7 +183,7 @@ TEST_CASE("Some positional explicit", "[positional]") Argv av({"tester", "--output", "a", "b", "c", "d"}); - char** argv = av.argv(); + const char** argv = av.argv(); auto argc = av.argc(); options.parse(argc, argv); @@ -209,7 +209,7 @@ TEST_CASE("No positional with extras", "[positional]") Argv av({"extras", "--", "a", "b", "c", "d"}); - char** argv = av.argv(); + const char** argv = av.argv(); auto argc = av.argc(); auto old_argv = argv; @@ -231,7 +231,7 @@ TEST_CASE("Empty with implicit value", "[implicit]") Argv av({"implicit", "--implicit", ""}); - char** argv = av.argv(); + const char** argv = av.argv(); auto argc = av.argc(); options.parse(argc, argv); @@ -248,7 +248,7 @@ TEST_CASE("Integers", "[options]") Argv av({"ints", "--", "5", "6", "-6", "0", "0xab", "0xAf", "0x0"}); - char** argv = av.argv(); + const char** argv = av.argv(); auto argc = av.argc(); options.parse_positional("positional"); @@ -274,7 +274,7 @@ TEST_CASE("Unsigned integers", "[options]") Argv av({"ints", "--", "-2"}); - char** argv = av.argv(); + const char** argv = av.argv(); auto argc = av.argc(); options.parse_positional("positional"); @@ -347,7 +347,7 @@ TEST_CASE("Floats", "[options]") 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(); options.parse_positional("positional"); @@ -372,7 +372,7 @@ TEST_CASE("Invalid integers", "[integer]") { Argv av({"ints", "--", "Ae"}); - char **argv = av.argv(); + const char **argv = av.argv(); auto argc = av.argc(); options.parse_positional("positional");