#pragma once #include #include #include #include #include namespace dg { using Handle = std::function; class Options { public: Options(); void add(std::string const & name, int has_arg, int val, Handle handle); void add(std::string const & name, int has_arg, int* flag, int val, Handle handle); void process(int argc, char* argv[]); private: std::size_t num_flags; std::vector