/usr/include/mathic/CliParser.h is in libmathic-dev 1.0~git20130827-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | #ifndef MATHIC_CLI_PARSER_GUARD
#define MATHIC_CLI_PARSER_GUARD
#include "NameFactory.h"
#include "Action.h"
namespace mathic {
class CliParser {
public:
CliParser();
template<class ConcreteAction>
void registerAction(const std::string& name);
// picks the name up from ConcreteAction::staticName().
template<class ConcreteAction>
void registerAction();
void registerHelpAction
(const std::string& preMessage, const std::string& postMessage);
void pushBackRegisteredActionNames(
std::vector<std::string>& names
) const;
const std::string& helpPreMessage() const {return _helpPreMessage;}
const std::string& helpPostMessage() const {return _helpPostMessage;}
std::unique_ptr<Action> parse(int argc, char** argv);
std::unique_ptr<Action> parse(const std::vector<std::string>& commandLine);
std::unique_ptr<Action> createActionWithPrefix(const std::string& prefix);
private:
NameFactory<Action> _actions;
std::string _helpPreMessage;
std::string _helpPostMessage;
};
template<class ConcreteAction>
void CliParser::registerAction(const std::string& name) {
nameFactoryRegister<ConcreteAction>(_actions, name);
};
template<class ConcreteAction>
void CliParser::registerAction() {
nameFactoryRegister<ConcreteAction>(_actions);
};
}
#endif
|