--- /dev/null
+/*
+ sarge.h - Header file for the Sarge command line argument parser project.
+
+ Revision 0
+
+ Notes:
+ -
+
+ 2019/03/16, Maya Posch
+
+*/
+
+
+#include <string>
+#include <vector>
+#include <map>
+#include <memory>
+
+
+struct Argument {
+ Argument() : hasValue(false), parsed(false) { /* */ }
+ std::string arg_short;
+ std::string arg_long;
+ std::string description;
+ bool hasValue;
+ std::string value;
+ bool parsed;
+};
+
+
+
+class Sarge {
+ std::vector<std::unique_ptr<Argument> > args;
+ std::map<std::string, Argument*> argNames;
+ bool parsed = false;
+ int flagCounter = 0;
+ std::string execName;
+ std::string description;
+ std::string usage;
+ std::vector<std::string> textArguments;
+
+public:
+ void setArgument(std::string arg_short, std::string arg_long, std::string desc, bool hasVal);
+ void setArguments(std::vector<Argument> args);
+ void setDescription(std::string desc) { this->description = desc; }
+ void setUsage(std::string use) { this->usage = use; }
+ bool parseArguments(int argc, char** argv);
+ bool getFlag(std::string arg_flag, std::string &arg_value);
+ bool exists(std::string arg_flag);
+ bool getTextArgument(uint32_t index, std::string &value);
+ void printHelp();
+ int flagCount() { return flagCounter; }
+ std::string executableName() { return execName; }
+};