- Timestamp:
- Apr 27, 2006, 1:33:23 PM (19 years ago)
- Location:
- trunk/src/lib/shell
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/lib/shell/shell_command.cc
r7389 r7394 27 27 namespace OrxShell 28 28 { 29 30 /** 31 * constructs and registers a new Command 29 SHELL_COMMAND_STATIC(debug, ShellCommand, ShellCommand::debug); 30 31 32 /** 33 * @brief constructs and registers a new Command 32 34 * @param commandName the name of the Command 33 35 * @param className the name of the class to apply this command to … … 50 52 51 53 /** 52 * deconstructs a ShellCommand54 * @brief deconstructs a ShellCommand 53 55 */ 54 56 ShellCommand::~ShellCommand() … … 106 108 107 109 /** 108 * checks if a command has already been registered.110 * @brief checks if a command has already been registered. 109 111 * @param commandName the name of the Command 110 112 * @param className the name of the Class the command should apply to. … … 116 118 bool ShellCommand::isRegistered(const std::string& commandName, const std::string& className) 117 119 { 118 if (ShellCommandClass::commandClassList == NULL)119 {120 ShellCommandClass::initCommandClassList();121 return false;122 }123 124 120 const ShellCommandClass* checkClass = ShellCommandClass::isRegistered(className); 125 121 if (checkClass != NULL) … … 142 138 143 139 /** 144 * executes commands140 * @brief executes commands 145 141 * @param executionString the string containing the following input 146 142 * ClassName [ObjectName] functionName [parameter1[,parameter2[,...]]] … … 149 145 bool ShellCommand::execute(const std::string& executionString) 150 146 { 151 if (ShellCommandClass::commandClassList == NULL)152 return false;153 154 147 long classID = CL_NULL; //< the classID retrieved from the Class. 155 148 ShellCommandClass* commandClass = NULL; //< the command class this command applies to. … … 186 179 187 180 // looking for a Matching Class 188 if (likely(ShellCommandClass::commandClassList != NULL)) 189 { 190 std::list<ShellCommandClass*>::iterator commandClassIT; 191 for (commandClassIT = ShellCommandClass::commandClassList->begin(); commandClassIT != ShellCommandClass::commandClassList->end(); commandClassIT++) 192 { 193 if ((*commandClassIT)->getName() && inputSplits[0] == (*commandClassIT)->getName()) 194 { 195 //elemCL->getName(); 196 classID = ClassList::StringToID((*commandClassIT)->getName()); 197 commandClass = (*commandClassIT); 198 objectList = ClassList::getList((ClassID)classID); 199 break; 200 } 181 std::vector<ShellCommandClass*>::iterator commandClassIT; 182 for (commandClassIT = ShellCommandClass::commandClassList.begin(); commandClassIT != ShellCommandClass::commandClassList.end(); commandClassIT++) 183 { 184 if ((*commandClassIT)->getName() && inputSplits[0] == (*commandClassIT)->getName()) 185 { 186 //elemCL->getName(); 187 classID = ClassList::StringToID((*commandClassIT)->getName()); 188 commandClass = (*commandClassIT); 189 objectList = ClassList::getList((ClassID)classID); 190 break; 201 191 } 202 192 } … … 312 302 void ShellCommand::debug() 313 303 { 314 if (ShellCommandClass::commandClassList == NULL) 315 { 316 PRINT(0)("No Command registered.\n"); 317 return; 318 } 319 320 std::list<ShellCommandClass*>::iterator classIT; 321 for (classIT = ShellCommandClass::commandClassList->begin(); classIT != ShellCommandClass::commandClassList->end(); classIT++) 304 std::vector<ShellCommandClass*>::iterator classIT; 305 for (classIT = ShellCommandClass::commandClassList.begin(); classIT != ShellCommandClass::commandClassList.end(); classIT++) 322 306 { 323 307 PRINT(0)("Class:'%s' registered %d commands: \n", (*classIT)->className.c_str(), (*classIT)->commandList.size()); -
trunk/src/lib/shell/shell_command_class.cc
r7390 r7394 26 26 namespace OrxShell 27 27 { 28 std:: list<ShellCommandClass*>* ShellCommandClass::commandClassList = NULL;28 std::vector<ShellCommandClass*> ShellCommandClass::commandClassList; 29 29 30 30 /** … … 40 40 this->classID = CL_NULL; 41 41 42 ShellCommandClass::commandClassList ->push_back(this);42 ShellCommandClass::commandClassList.push_back(this); 43 43 } 44 44 … … 79 79 void ShellCommandClass::unregisterAllCommands() 80 80 { 81 if (ShellCommandClass::commandClassList != NULL) 82 { 83 // unregister all commands and Classes 84 std::list<ShellCommandClass*>::iterator classIT; 85 for (classIT = ShellCommandClass::commandClassList->begin(); classIT != ShellCommandClass::commandClassList->end(); classIT++) 86 delete (*classIT); 87 delete ShellCommandClass::commandClassList; 88 ShellCommandClass::commandClassList = NULL; 89 } 90 81 // unregister all commands and Classes 82 std::vector<ShellCommandClass*>::iterator classIT; 83 for (classIT = ShellCommandClass::commandClassList.begin(); classIT != ShellCommandClass::commandClassList.end(); classIT++) 84 delete (*classIT); 91 85 } 92 86 … … 100 94 bool ShellCommandClass::getCommandListOfClass(const std::string& className, std::list<std::string>& stringList) 101 95 { 102 std:: list<ShellCommandClass*>::iterator elem;103 for(elem = ShellCommandClass::commandClassList ->begin(); elem != ShellCommandClass::commandClassList->end(); elem++)96 std::vector<ShellCommandClass*>::iterator elem; 97 for(elem = ShellCommandClass::commandClassList.begin(); elem != ShellCommandClass::commandClassList.end(); elem++) 104 98 { 105 99 if (className == (*elem)->getName()) … … 121 115 const ShellCommandClass* ShellCommandClass::isRegistered(const std::string& className) 122 116 { 123 if (ShellCommandClass::commandClassList == NULL) 124 initCommandClassList(); 125 126 std::list<ShellCommandClass*>::const_iterator classIT; 127 for (classIT = ShellCommandClass::commandClassList->begin(); classIT != ShellCommandClass::commandClassList->end(); classIT++) 117 std::vector<ShellCommandClass*>::const_iterator classIT; 118 for (classIT = ShellCommandClass::commandClassList.begin(); classIT != ShellCommandClass::commandClassList.end(); classIT++) 128 119 { 129 120 if (className == (*classIT)->className) … … 145 136 ShellCommandClass* ShellCommandClass::getCommandClass(const std::string& className) 146 137 { 147 if (ShellCommandClass::commandClassList == NULL) 148 initCommandClassList(); 149 150 std::list<ShellCommandClass*>::iterator classIT; 151 for (classIT = ShellCommandClass::commandClassList->begin(); classIT != ShellCommandClass::commandClassList->end(); classIT++) 152 { 138 std::vector<ShellCommandClass*>::iterator classIT; 139 for (classIT = ShellCommandClass::commandClassList.begin(); classIT != ShellCommandClass::commandClassList.end(); classIT++) 153 140 if (className == (*classIT)->className) 154 {155 141 return (*classIT); 156 }157 }158 142 return new ShellCommandClass(className); 159 }160 161 /**162 * @brief initializes the CommandList (if it is NULL)163 */164 void ShellCommandClass::initCommandClassList()165 {166 if (ShellCommandClass::commandClassList == NULL)167 {168 ShellCommandClass::commandClassList = new std::list<ShellCommandClass*>;169 ShellCommand::registerCommand("debug", "ShellCommand", ExecutorStatic<ShellCommand>(ShellCommand::debug));170 }171 143 } 172 144 … … 177 149 void ShellCommandClass::help(const std::string& className) 178 150 { 179 if (likely(ShellCommandClass::commandClassList != NULL)) 151 std::vector<ShellCommandClass*>::iterator classIT; 152 for (classIT = ShellCommandClass::commandClassList.begin(); classIT != ShellCommandClass::commandClassList.end(); classIT++) 180 153 { 181 std::list<ShellCommandClass*>::iterator classIT; 182 for (classIT = ShellCommandClass::commandClassList->begin(); classIT != ShellCommandClass::commandClassList->end(); classIT++) 154 if (className == (*classIT)->className) 183 155 { 184 if (className == (*classIT)->className) 156 PRINT(0)("Class:'%s' registered %d commands: \n", (*classIT)->className.c_str(), (*classIT)->commandList.size()); 157 std::vector<ShellCommand*>::const_iterator cmdIT; 158 for (cmdIT = (*classIT)->commandList.begin(); cmdIT != (*classIT)->commandList.end(); cmdIT++) 185 159 { 186 PRINT(0)("Class:'%s' registered %d commands: \n", (*classIT)->className.c_str(), (*classIT)->commandList.size()); 187 std::vector<ShellCommand*>::const_iterator cmdIT; 188 for (cmdIT = (*classIT)->commandList.begin(); cmdIT != (*classIT)->commandList.end(); cmdIT++) 189 { 190 PRINT(0)(" command:'%s' : params:%d: ", (*cmdIT)->getName(), (*cmdIT)->executor->getParamCount()); 191 /// FIXME 192 /* for (unsigned int i = 0; i< elem->paramCount; i++) 193 PRINT(0)("%s ", ShellCommand::paramToString(elem->parameters[i]));*/ 194 if (!(*cmdIT)->description.empty()) 195 PRINT(0)("- %s", (*cmdIT)->description.c_str()); 196 PRINT(0)("\n"); 197 } 198 return; 160 PRINT(0)(" command:'%s' : params:%d: ", (*cmdIT)->getName(), (*cmdIT)->executor->getParamCount()); 161 /// FIXME 162 /* for (unsigned int i = 0; i< elem->paramCount; i++) 163 PRINT(0)("%s ", ShellCommand::paramToString(elem->parameters[i]));*/ 164 if (!(*cmdIT)->description.empty()) 165 PRINT(0)("- %s", (*cmdIT)->description.c_str()); 166 PRINT(0)("\n"); 199 167 } 168 return; 200 169 } 201 PRINTF(3)("Class %s not found in Command's classes\n", className.c_str());202 170 } 203 else 204 { 205 PRINTF(1)("List of commandClasses does not exist"); 206 } 171 PRINTF(3)("Class %s not found in Command's classes\n", className.c_str()); 207 172 } 208 173 -
trunk/src/lib/shell/shell_command_class.h
r7389 r7394 24 24 public: 25 25 /** @returns the CommandClassList */ 26 static const std:: list<ShellCommandClass*>*getCommandClassList() { return ShellCommandClass::commandClassList; };26 static const std::vector<ShellCommandClass*>& getCommandClassList() { return ShellCommandClass::commandClassList; }; 27 27 28 28 static bool getCommandListOfClass(const std::string& className, std::list<std::string>& stringList); … … 38 38 39 39 static const ShellCommandClass* isRegistered(const std::string& className); 40 static void initCommandClassList();41 40 42 41 void registerCommand(ShellCommand* command); … … 47 46 long classID; //!< The classID of this Class 48 47 std::vector<ShellCommand*> commandList; //!< A list of Commands from this Class 49 static std::list<ShellCommandClass*>* commandClassList; //!< A list of Classes 48 49 static std::vector<ShellCommandClass*> commandClassList; //!< A list of Classes 50 50 }; 51 51
Note: See TracChangeset
for help on using the changeset viewer.