--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/include/relpipe/cli/CLI.h Sun Aug 12 12:32:39 2018 +0200
@@ -0,0 +1,64 @@
+#pragma once
+
+#include <locale.h>
+#include <string>
+#include <vector>
+#include <sstream>
+#include <locale>
+#include <codecvt>
+
+using namespace std;
+
+namespace relpipe {
+namespace cli {
+
+/**
+ * TODO: move to relpipe-lib-cli (a common header-only library)
+ */
+class CLI {
+public:
+
+ CLI(int argc, char* argv[]) {
+ setlocale(LC_ALL, "");
+
+ this->argc = &argc;
+ this->argv = &argv;
+
+ program = convertor.from_bytes(argv[0]);
+
+ for (int i = 1; i < argc; i++) {
+ args.insert(args.end(), convertor.from_bytes(argv[i]));
+ }
+
+ }
+
+ CLI(const CLI& orig) {
+ }
+
+ virtual ~CLI() {
+ }
+
+ const wstring programName() {
+ return (const wstring) program;
+ }
+
+ const vector<wstring> arguments() {
+ return (const vector<wstring>)args;
+ }
+
+ static const int EXIT_CODE_SUCCESS = 0;
+ static const int EXIT_CODE_UNEXPECTED_ERROR = 1;
+ static const int EXIT_CODE_BAD_SYNTAX = 3;
+ static const int EXIT_CODE_UNKNOWN_COMMAND = 4;
+ static const int EXIT_CODE_DATA_ERROR = 5;
+
+private:
+ int* argc;
+ char*** argv;
+ wstring program;
+ vector<wstring> args;
+ wstring_convert<codecvt_utf8<wchar_t>> convertor; // TODO: support also other encodings.
+};
+
+}
+}