ENH: Handle errors and optimize a bit
This commit is contained in:
parent
84f12f9298
commit
d36f3c5543
@ -27,7 +27,14 @@ cmCommandArgumentParserHelper::cmCommandArgumentParserHelper()
|
|||||||
{
|
{
|
||||||
m_FileLine = -1;
|
m_FileLine = -1;
|
||||||
m_FileName = 0;
|
m_FileName = 0;
|
||||||
|
|
||||||
m_EmptyVariable[0] = 0;
|
m_EmptyVariable[0] = 0;
|
||||||
|
strcpy(m_DCURLYVariable, "${");
|
||||||
|
strcpy(m_RCURLYVariable, "}");
|
||||||
|
strcpy(m_ATVariable, "@");
|
||||||
|
strcpy(m_DOLLARVariable, "$");
|
||||||
|
strcpy(m_LCURLYVariable, "{");
|
||||||
|
strcpy(m_BSLASHVariable, "\\");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -234,8 +241,8 @@ int cmCommandArgumentParserHelper::ParseString(const char* str, int verb)
|
|||||||
cmCommandArgument_yylex_destroy(yyscanner);
|
cmCommandArgument_yylex_destroy(yyscanner);
|
||||||
if ( res != 0 )
|
if ( res != 0 )
|
||||||
{
|
{
|
||||||
std::cerr << "CAL_Parser returned: " << res << std::endl;
|
//str << "CAL_Parser returned: " << res << std::endl;
|
||||||
std::cerr << "When parsing: [" << str << "]" << std::endl;
|
//std::cerr << "When parsing: [" << str << "]" << std::endl;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -296,7 +303,10 @@ int cmCommandArgumentParserHelper::LexInput(char* buf, int maxlen)
|
|||||||
void cmCommandArgumentParserHelper::Error(const char* str)
|
void cmCommandArgumentParserHelper::Error(const char* str)
|
||||||
{
|
{
|
||||||
unsigned long pos = static_cast<unsigned long>(this->InputBufferPos);
|
unsigned long pos = static_cast<unsigned long>(this->InputBufferPos);
|
||||||
fprintf(stderr, "Argument Parser Error: %s (%lu / Line: %d)\n", str, pos, this->CurrentLine);
|
//fprintf(stderr, "Argument Parser Error: %s (%lu / Line: %d)\n", str, pos, this->CurrentLine);
|
||||||
|
cmOStringStream ostr;
|
||||||
|
ostr << str << " (" << pos << ")";
|
||||||
|
/*
|
||||||
int cc;
|
int cc;
|
||||||
std::cerr << "String: [";
|
std::cerr << "String: [";
|
||||||
for ( cc = 0; cc < 30 && *(this->InputBuffer.c_str() + this->InputBufferPos + cc);
|
for ( cc = 0; cc < 30 && *(this->InputBuffer.c_str() + this->InputBufferPos + cc);
|
||||||
@ -305,6 +315,8 @@ void cmCommandArgumentParserHelper::Error(const char* str)
|
|||||||
std::cerr << *(this->InputBuffer.c_str() + this->InputBufferPos + cc);
|
std::cerr << *(this->InputBuffer.c_str() + this->InputBufferPos + cc);
|
||||||
}
|
}
|
||||||
std::cerr << "]" << std::endl;
|
std::cerr << "]" << std::endl;
|
||||||
|
*/
|
||||||
|
m_Error = ostr.str();
|
||||||
}
|
}
|
||||||
|
|
||||||
void cmCommandArgumentParserHelper::UpdateCombine(const char* str1, const char* str2)
|
void cmCommandArgumentParserHelper::UpdateCombine(const char* str1, const char* str2)
|
||||||
|
@ -77,6 +77,16 @@ public:
|
|||||||
void SetLineFile(long line, const char* file);
|
void SetLineFile(long line, const char* file);
|
||||||
void SetEscapeQuotes(bool b) { m_EscapeQuotes = b; }
|
void SetEscapeQuotes(bool b) { m_EscapeQuotes = b; }
|
||||||
|
|
||||||
|
const char* GetError() { return m_Error.c_str(); }
|
||||||
|
|
||||||
|
char m_EmptyVariable[1];
|
||||||
|
char m_DCURLYVariable[3];
|
||||||
|
char m_RCURLYVariable[3];
|
||||||
|
char m_ATVariable[3];
|
||||||
|
char m_DOLLARVariable[3];
|
||||||
|
char m_LCURLYVariable[3];
|
||||||
|
char m_BSLASHVariable[3];
|
||||||
|
|
||||||
private:
|
private:
|
||||||
cmStdString::size_type InputBufferPos;
|
cmStdString::size_type InputBufferPos;
|
||||||
cmStdString InputBuffer;
|
cmStdString InputBuffer;
|
||||||
@ -98,13 +108,15 @@ private:
|
|||||||
void CleanupParser();
|
void CleanupParser();
|
||||||
|
|
||||||
std::set<char*> m_Variables;
|
std::set<char*> m_Variables;
|
||||||
char m_EmptyVariable[1];
|
|
||||||
const cmMakefile* m_Makefile;
|
const cmMakefile* m_Makefile;
|
||||||
std::string m_Result;
|
std::string m_Result;
|
||||||
const char* m_FileName;
|
const char* m_FileName;
|
||||||
long m_FileLine;
|
long m_FileLine;
|
||||||
|
|
||||||
bool m_EscapeQuotes;
|
bool m_EscapeQuotes;
|
||||||
|
|
||||||
|
std::string m_Error;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user