Fix compilation of main
[command.git] / src / main.cpp
index 42c44cb57118ee8b6e0bd2096c31fd4e9de5658d..33ee3fcdc93809b6af658333176ca3fa7ee81be2 100644 (file)
@@ -1,9 +1,12 @@
 #include <iostream>
 #include <string>
+#include <functional>
 
 #include "option.h"
 #include "argument.h"
 #include "required.h"
+#include "multiValue.h"
+#include "grouped.h"
 #include "command.h"
 
 using namespace command;
@@ -20,19 +23,47 @@ void void_function(void) {
     std::cout << "Void function " << std::endl;
 }
 
+class ExampleClass {
+public:
+    void _argument(bool a) {
+        argument_function(a);
+    }
+    void _option(std::string a) {
+        option_function(a);
+    }
+    void _void(void) {
+        void_function();
+    }
+};
+
 int main(int argc, char *argv[]) {
+    ExampleClass c;
+
     try {
         Command command(argc, argv, {
-//             new Argument<std::string>("File path", [](std::string value)->void { std::cout << "Hello from lambda " << value << std::endl; }),
-            new Required(new Argument<bool>("File path", argument_function)),
-            new Option<std::string>("f", "Optional file", option_function),
-            new Option<void>("h", "Help", void_function)
+            new Grouped({
+                new Required(
+                    new MultiValue("-",
+                        new Argument<bool>("Input values", std::bind(&ExampleClass::_argument, &c, std::placeholders::_1))
+                    )
+                ),
+                new MultiValue(",",
+                    new Option<std::string>("f", "Optional file", std::bind(&ExampleClass::_option, &c, std::placeholders::_1))
+                )
+            }),
+            new Option<void>("h", "Help", std::bind(&ExampleClass::_void, &c)),
+
+            // just a pure method calling
+            new Option<void>("v", "version", void_function)
         });
 
+        /* ExampleClass is initialized.
+         * You can run your main program now
+         */
     }
     catch(const std::exception & e) {
         std::cout << e.what() << std::endl;
     }
 
     return 0;
-}
\ No newline at end of file
+}