Add a way to convert ascii to string
This commit is contained in:
parent
c8e546a353
commit
6244ac6f06
|
@ -33,13 +33,49 @@ bool cmStringCommand::InitialPass(std::vector<std::string> const& args)
|
||||||
else if(subCommand == "COMPARE")
|
else if(subCommand == "COMPARE")
|
||||||
{
|
{
|
||||||
return this->HandleCompareCommand(args);
|
return this->HandleCompareCommand(args);
|
||||||
}
|
}
|
||||||
|
else if(subCommand == "ASCII")
|
||||||
|
{
|
||||||
|
return this->HandleAsciiCommand(args);
|
||||||
|
}
|
||||||
|
|
||||||
std::string e = "does not recognize sub-command "+subCommand;
|
std::string e = "does not recognize sub-command "+subCommand;
|
||||||
this->SetError(e.c_str());
|
this->SetError(e.c_str());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
bool cmStringCommand::HandleAsciiCommand(std::vector<std::string> const& args)
|
||||||
|
{
|
||||||
|
if ( args.size() <= 1 )
|
||||||
|
{
|
||||||
|
this->SetError("No output variable specified");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
std::string::size_type cc;
|
||||||
|
std::string outvar = args[args.size()-1];
|
||||||
|
std::string output = "";
|
||||||
|
for ( cc = 1; cc < args.size()-1; cc ++ )
|
||||||
|
{
|
||||||
|
int ch = atoi(args[cc].c_str());
|
||||||
|
if ( ch > 0 && ch < 256 )
|
||||||
|
{
|
||||||
|
output += static_cast<char>(ch);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
std::string error = "Character with code ";
|
||||||
|
error += ch;
|
||||||
|
error += " does not exist.";
|
||||||
|
this->SetError(error.c_str());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Store the output in the provided variable.
|
||||||
|
m_Makefile->AddDefinition(outvar.c_str(), output.c_str());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
bool cmStringCommand::HandleRegexCommand(std::vector<std::string> const& args)
|
bool cmStringCommand::HandleRegexCommand(std::vector<std::string> const& args)
|
||||||
{
|
{
|
||||||
|
|
|
@ -67,16 +67,19 @@ public:
|
||||||
"STRING(COMPARE NOTEQUAL <string1> <string2> <output variable>)\n"
|
"STRING(COMPARE NOTEQUAL <string1> <string2> <output variable>)\n"
|
||||||
"STRING(COMPARE LESS <string1> <string2> <output variable>)\n"
|
"STRING(COMPARE LESS <string1> <string2> <output variable>)\n"
|
||||||
"STRING(COMPARE GREATER <string1> <string2> <output variable>)\n"
|
"STRING(COMPARE GREATER <string1> <string2> <output variable>)\n"
|
||||||
|
"STRING(ASCII <number> [<number> ...] <output variable>)\n"
|
||||||
"REGEX MATCH will match the regular expression once and store the match in the output variable.\n"
|
"REGEX MATCH will match the regular expression once and store the match in the output variable.\n"
|
||||||
"REGEX MATCHALL will match the regular expression as many times as possible and store the matches\n"
|
"REGEX MATCHALL will match the regular expression as many times as possible and store the matches\n"
|
||||||
" in the output variable as a list.\n"
|
" in the output variable as a list.\n"
|
||||||
"REGEX REPLACE will match the regular expression as many times as possible and substitute the\n"
|
"REGEX REPLACE will match the regular expression as many times as possible and substitute the\n"
|
||||||
" replacement expression for the match in the output.\n"
|
" replacement expression for the match in the output.\n"
|
||||||
"COMPARE EQUAL/NOTEQUAL/LESS/GREATER will compare the strings and store true or false in the output variable.\n";
|
"COMPARE EQUAL/NOTEQUAL/LESS/GREATER will compare the strings and store true or false in the output variable.\n"
|
||||||
|
"ASCII will convert all numbers into corresponding ASCII characters.\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
cmTypeMacro(cmStringCommand, cmCommand);
|
cmTypeMacro(cmStringCommand, cmCommand);
|
||||||
protected:
|
protected:
|
||||||
|
bool HandleAsciiCommand(std::vector<std::string> const& args);
|
||||||
bool HandleRegexCommand(std::vector<std::string> const& args);
|
bool HandleRegexCommand(std::vector<std::string> const& args);
|
||||||
bool RegexMatch(std::vector<std::string> const& args);
|
bool RegexMatch(std::vector<std::string> const& args);
|
||||||
bool RegexMatchAll(std::vector<std::string> const& args);
|
bool RegexMatchAll(std::vector<std::string> const& args);
|
||||||
|
|
Loading…
Reference in New Issue