- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/UIElements/CommandLineUI/Query/ElementsCommandLineQuery.cpp
rf130d4 r2f429e 36 36 #include "CodePatterns/MemDebug.hpp" 37 37 38 #include <string> 39 38 40 #include "CommandLineUI/Query/CommandLineQuery.hpp" 39 41 #include "CommandLineUI/CommandLineParser.hpp" … … 51 53 {} 52 54 55 template <typename T> 56 std::vector<const element *> getElementsFromInput(const std::vector<std::string> &_input) 57 { 58 periodentafel *periode = World::getInstance().getPeriode(); 59 std::vector<const element *> result; 60 const element *temp_element; 61 for (typename std::vector<std::string>::const_iterator ZRunner = _input.begin(); ZRunner != _input.end(); ++ZRunner) { 62 const T argument = boost::lexical_cast<T>(*ZRunner); 63 temp_element = periode->FindElement(argument); 64 ASSERT(temp_element != NULL, "Invalid element specified in ElementCommandLineQuery"); 65 result.push_back(temp_element); 66 } 67 return result; 68 } 69 53 70 bool CommandLineDialog::ElementsCommandLineQuery::handle() { 54 71 // TODO: vector of ints and removing first is not correctly implemented yet. How to remove from a vector? 55 periodentafel *periode = World::getInstance().getPeriode();56 std::vector<int> AllElements;57 72 if (CommandLineParser::getInstance().vm.count(getTitle())) { 58 73 try { 59 AllElements = CommandLineParser::getInstance().vm[getTitle()].as< vector<int> >(); 74 std::vector<std::string> AllArguments; 75 AllArguments = CommandLineParser::getInstance().vm[getTitle()].as< vector<std::string> >(); 76 try { 77 temp = getElementsFromInput<int>(AllArguments); 78 } catch(boost::bad_lexical_cast &e) { 79 try { 80 temp = getElementsFromInput<std::string>(AllArguments); 81 } catch(boost::bad_lexical_cast &e) { 82 return false; 83 } 84 } 60 85 } catch(boost::bad_any_cast &e) { 61 AllElements.clear();62 86 return false; 63 87 } 64 const element *temp_element; 65 for (vector<int>::iterator ZRunner = AllElements.begin(); ZRunner != AllElements.end(); ++ZRunner) { 66 temp_element = periode->FindElement(*ZRunner); 67 ASSERT(temp_element != NULL, "Invalid element specified in ElementCommandLineQuery"); 68 temp.push_back(temp_element); 69 } 70 return true; 88 if (temp.empty()) 89 return false; 90 else 91 return true; 71 92 } 72 93 return false;
Note:
See TracChangeset
for help on using the changeset viewer.