diff options
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmListCommand.cxx | 18 | ||||
-rw-r--r-- | Source/cmListCommand.h | 7 |
2 files changed, 15 insertions, 10 deletions
diff --git a/Source/cmListCommand.cxx b/Source/cmListCommand.cxx index f0df03b..c00f6eb 100644 --- a/Source/cmListCommand.cxx +++ b/Source/cmListCommand.cxx @@ -42,9 +42,9 @@ bool cmListCommand::InitialPass(std::vector<std::string> const& args) { return this->HandleAppendCommand(args); } - if(subCommand == "CONTAINS") + if(subCommand == "FIND") { - return this->HandleContainsCommand(args); + return this->HandleFindCommand(args); } if(subCommand == "INSERT") { @@ -204,11 +204,11 @@ bool cmListCommand::HandleAppendCommand(std::vector<std::string> const& args) } //---------------------------------------------------------------------------- -bool cmListCommand::HandleContainsCommand(std::vector<std::string> const& args) +bool cmListCommand::HandleFindCommand(std::vector<std::string> const& args) { if(args.size() != 4) { - this->SetError("sub-command CONTAINS requires three arguments."); + this->SetError("sub-command FIND requires three arguments."); return false; } @@ -218,21 +218,25 @@ bool cmListCommand::HandleContainsCommand(std::vector<std::string> const& args) std::vector<std::string> varArgsExpanded; if ( !this->GetList(varArgsExpanded, listName.c_str()) ) { - this->Makefile->AddDefinition(variableName.c_str(), "FALSE"); + this->Makefile->AddDefinition(variableName.c_str(), "-1"); return true; } std::vector<std::string>::iterator it; + unsigned int index = 0; for ( it = varArgsExpanded.begin(); it != varArgsExpanded.end(); ++ it ) { if ( *it == args[2] ) { - this->Makefile->AddDefinition(variableName.c_str(), "TRUE"); + char indexString[32]; + sprintf(indexString, "%d", index); + this->Makefile->AddDefinition(variableName.c_str(), indexString); return true; } + index++; } - this->Makefile->AddDefinition(variableName.c_str(), "FALSE"); + this->Makefile->AddDefinition(variableName.c_str(), "-1"); return true; } diff --git a/Source/cmListCommand.h b/Source/cmListCommand.h index d8a4688..a99604b 100644 --- a/Source/cmListCommand.h +++ b/Source/cmListCommand.h @@ -68,7 +68,7 @@ public: " LIST(GET <list> <element index> [<element index> ...] " "<output variable>)\n" " LIST(APPEND <list> <element> [<element> ...])\n" - " LIST(CONTAINS <list> <value> <output variable>)\n" + " LIST(FIND <list> <value> <output variable>)\n" " LIST(INSERT <list> <element_index> <element> [<element> ...])\n" " LIST(REMOVE_ITEM <list> <value> [<value> ...])\n" " LIST(REMOVE_AT <list> <index> [<index> ...])\n" @@ -77,7 +77,8 @@ public: "LENGTH will return a given list's length.\n" "GET will return list of elements specified by indices from the list.\n" "APPEND will append elements to the list.\n" - "CONTAINS will return TRUE if the element specified is in the list.\n" + "FIND will return the index of the element specified in the list or -1 " + "if it wasn't found.\n" "INSERT will insert elements to the list to the specified location.\n" "When specifying an index, negative value corresponds to index from the" " end of the list.\n" @@ -94,7 +95,7 @@ protected: bool HandleLengthCommand(std::vector<std::string> const& args); bool HandleGetCommand(std::vector<std::string> const& args); bool HandleAppendCommand(std::vector<std::string> const& args); - bool HandleContainsCommand(std::vector<std::string> const& args); + bool HandleFindCommand(std::vector<std::string> const& args); bool HandleInsertCommand(std::vector<std::string> const& args); bool HandleRemoveAtCommand(std::vector<std::string> const& args); bool HandleRemoveItemCommand(std::vector<std::string> const& args); |