Changeset 1416 for code/branches/console/src/core/CommandExecutor.cc
- Timestamp:
- May 25, 2008, 1:11:51 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/console/src/core/CommandExecutor.cc
r1402 r1416 108 108 { 109 109 CommandExecutor::parseIfNeeded(command); 110 111 if (!CommandExecutor::getEvaluation().isNewCommand()) 112 CommandExecutor::parse(CommandExecutor::getEvaluation().getCommand(), false); 113 else 114 CommandExecutor::getEvaluation().setNewCommand(false); 115 110 116 return CommandExecutor::getEvaluation().complete(); 111 117 } … … 119 125 CommandEvaluation CommandExecutor::evaluate(const std::string& command) 120 126 { 121 CommandExecutor::parse(command , true);127 CommandExecutor::parse(command); 122 128 CommandExecutor::getEvaluation().evaluateParams(); 123 129 return CommandExecutor::getEvaluation(); … … 126 132 void CommandExecutor::parseIfNeeded(const std::string& command) 127 133 { 128 if ((CommandExecutor::getEvaluation().get Command() != command) || (CommandExecutor::getEvaluation().getState() == CS_Uninitialized))134 if ((CommandExecutor::getEvaluation().getOriginalCommand() != command) || (CommandExecutor::getEvaluation().getState() == CS_Uninitialized)) 129 135 CommandExecutor::parse(command); 130 else if (!CommandExecutor::getEvaluation().isValid())131 {132 CommandExecutor::getEvaluation().setNewCommand(false);133 CommandExecutor::parse(command, false);134 }135 136 } 136 137 … … 301 302 if (CommandExecutor::getEvaluation().getFunction()) 302 303 { 303 std::cout << "1\n";304 304 unsigned int startindex = 0; 305 305 if (CommandExecutor::getEvaluation().getState() == CS_Shortcut_Params) … … 307 307 else if (CommandExecutor::getEvaluation().getState() == CS_Function_Params) 308 308 startindex = 2; 309 std::cout << "2\n";310 309 311 310 if (CommandExecutor::argumentsGiven() >= startindex) 312 311 { 313 std::cout << "3\n"; 314 if (CommandExecutor::enoughArgumentsGiven(CommandExecutor::getEvaluation().getFunction())) 315 { 316 std::cout << "4\n"; 312 if ((CommandExecutor::argumentsGiven() == CommandExecutor::argumentsFinished() || !CommandExecutor::getEvaluation().isNewCommand()) && CommandExecutor::enoughArgumentsGiven(CommandExecutor::getEvaluation().getFunction())) 313 { 317 314 if (CommandExecutor::getEvaluation().getState() == CS_Shortcut_Params) 318 315 CommandExecutor::getEvaluation().setState(CS_Shortcut_Finished); … … 324 321 else 325 322 { 326 std::cout << "5\n";327 std::cout << "last argument: " << CommandExecutor::getLastArgument() << std::endl;328 std::cout << "function: " << CommandExecutor::getEvaluation().getFunction() << std::endl;329 std::cout << "functionname: " << CommandExecutor::getEvaluation().getFunction()->getName() << std::endl;330 std::cout << "param nr: " << CommandExecutor::getEvaluation().getTokens().size() - startindex << std::endl;331 323 CommandExecutor::createListOfPossibleArguments(CommandExecutor::getLastArgument(), CommandExecutor::getEvaluation().getFunction(), CommandExecutor::getEvaluation().getTokens().size() - startindex); 332 std::cout << "6\n";333 324 unsigned int numArguments = CommandExecutor::getEvaluation().getListOfPossibleArguments().size(); 334 325 335 326 if (numArguments == 1) 336 327 { 337 std::cout << "7\n";338 328 // There is exactly one possible argument 339 329 const std::string* possibleArgument = (*CommandExecutor::getEvaluation().getListOfPossibleArguments().begin()).second; 340 CommandExecutor::parse(CommandExecutor::getEvaluation().getTokens().subSet(0, CommandExecutor::getEvaluation().getTokens().size() - 1 - startindex).join() + " " + (*possibleArgument) + " "); 330 if (CommandExecutor::argumentsGiven() > CommandExecutor::argumentsFinished()) 331 CommandExecutor::parse(CommandExecutor::getEvaluation().getTokens().subSet(0, CommandExecutor::getEvaluation().getTokens().size() - 1).join() + " " + (*possibleArgument) + " ", false); 332 else 333 CommandExecutor::parse(CommandExecutor::getEvaluation().getTokens().subSet(0, CommandExecutor::getEvaluation().getTokens().size()).join() + " " + (*possibleArgument) + " ", false); 334 341 335 return; 342 336 } 343 337 344 std::cout << "8\n";345 338 if ((CommandExecutor::argumentsGiven() > CommandExecutor::argumentsFinished()) && (!CommandExecutor::getEvaluation().isNewCommand())) 346 339 { 347 std::cout << "9\n";348 340 // There is more than one argument, but the user wants to use this - check if there is a perfect match 349 341 const std::string* possibleArgument = CommandExecutor::getPossibleArgument(CommandExecutor::getLastArgument(), CommandExecutor::getEvaluation().getFunction(), CommandExecutor::getEvaluation().getTokens().size() - startindex); 350 342 if (possibleArgument) 351 343 { 352 std::cout << "10\n";353 344 // There is such an argument - use it 354 345 CommandExecutor::parse(command + " ", false); 355 346 return; 356 347 } 357 std::cout << "11\n";358 348 } 359 std::cout << "12\n"; 360 } 361 std::cout << "13\n"; 349 } 362 350 363 351 // Nothing to do … … 426 414 void CommandExecutor::createListOfPossibleIdentifiers(const std::string& fragment) 427 415 { 416 CommandExecutor::getEvaluation().getListOfPossibleIdentifiers().clear(); 428 417 std::string lowercase = getLowercase(fragment); 429 418 for (std::map<std::string, Identifier*>::const_iterator it = Identifier::getLowercaseIdentifierMapBegin(); it != Identifier::getLowercaseIdentifierMapEnd(); ++it) … … 437 426 void CommandExecutor::createListOfPossibleFunctions(const std::string& fragment, Identifier* identifier) 438 427 { 428 CommandExecutor::getEvaluation().getListOfPossibleFunctions().clear(); 439 429 std::string lowercase = getLowercase(fragment); 440 430 if (!identifier) … … 456 446 void CommandExecutor::createListOfPossibleArguments(const std::string& fragment, ConsoleCommand* command, unsigned int param) 457 447 { 458 std::cout << "2_1\n";448 CommandExecutor::getEvaluation().getListOfPossibleArguments().clear(); 459 449 std::string lowercase = getLowercase(fragment); 460 std::cout << "2_2\n";461 450 for (std::list<std::pair<std::string, std::string> >::const_iterator it = command->getArgumentCompletionListBegin(param); it != command->getArgumentCompletionListEnd(param); ++it) 462 {463 std::cout << "2_3\n";464 451 if ((*it).first.find(lowercase) == 0 || fragment == "") 465 {466 std::cout << "2_4\n";467 452 CommandExecutor::getEvaluation().getListOfPossibleArguments().push_back(std::pair<const std::string*, const std::string*>(&(*it).first, &(*it).second)); 468 std::cout << "2_5\n"; 469 } 470 } 471 472 std::cout << "2_6\n"; 453 473 454 CommandExecutor::getEvaluation().getListOfPossibleArguments().sort(CommandExecutor::compareStringsInList); 474 std::cout << "2_7\n";475 455 } 476 456
Note: See TracChangeset
for help on using the changeset viewer.