summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
Diffstat (limited to 'Source')
-rw-r--r--Source/cmListCommand.cxx18
-rw-r--r--Source/cmListCommand.h7
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);