1 #ifndef __COMMAND_COMMAND_H
2 #define __COMMAND_COMMAND_H
12 * Main class for handling user passed parameters from command line.
16 std::vector<Parameter *> parameters;
19 * Default constructor.
21 * @param argc passed to the main function
22 * @param argv passed to the main function
23 * @param params initializer_list containing Parameter handlers
24 * responsible for correctly handle user data.
26 Command(unsigned int argc, char *argv[], std::initializer_list<Parameter *> params)
27 : parameters(params) {
30 matchArguments(argc, argv);
32 catch(std::invalid_argument exception) {
36 catch(std::logic_error exception) {
43 * Destructor. Releases allocated memory.
50 * Matches user passed arguments with available parameter handlers.
52 void matchArguments(unsigned int argc, char *argv[]) {
53 for (unsigned int i = 1; i < argc; i++) {
54 for(Parameter *param : parameters) {
55 if (param->understand(argv[i])) {
61 for(Parameter *param : parameters) {
62 if (param->isRequired() && !param->isUsed()) {
63 throw std::logic_error(param->describe() + " is required but it was not passed");
69 * Releases acquired memory
71 void releaseMemory() {
72 for (Parameter * parameter : parameters) {
73 if (parameter != NULL) {
78 parameters.shrink_to_fit();
83 #endif /* __COMMAND_COMMAND_H */