diff options
author | Dimitri van Heesch <doxygen@gmail.com> | 2021-04-11 19:22:59 (GMT) |
---|---|---|
committer | Dimitri van Heesch <doxygen@gmail.com> | 2021-04-22 17:34:13 (GMT) |
commit | 592aaa4f17d73ec8c475df0f44efaea8cc4d575c (patch) | |
tree | 3cfd68cec756661045ee25c906a8d8f4bddf7a6a /src/condparser.cpp | |
parent | 98c67549bc3cd855873e0ef5eeab7c6410699d78 (diff) | |
download | Doxygen-592aaa4f17d73ec8c475df0f44efaea8cc4d575c.zip Doxygen-592aaa4f17d73ec8c475df0f44efaea8cc4d575c.tar.gz Doxygen-592aaa4f17d73ec8c475df0f44efaea8cc4d575c.tar.bz2 |
Refactoring: remove implicit conversion from QCString to const char *
This commit changes the following in relation to string use
- The implicit convert from 'QCString' to 'const char *' is removed
- Strings parameters use 'const QCString &' as much as possible in favor
over 'const char *'
- 'if (s)' where s is a QCString has been replaced by 'if(!s.isEmpty())'
- data() now always returns a valid C-string and not a 0-pointer.
- when passing a string 's' to printf and related functions 'qPrint(s)' is
used instead of 's.data()'
- for empty string arguments 'QCString()' is used instead of '0'
- The copy() operation has been removed
- Where possible 'qstrcmp(a,b)==0' has been replaces by 'a==b' and
'qstrcmp(a,b)<0' has been replaced by 'a<b'
- Parameters of string type that were default initialized with '= 0' are
no initialized with '= QCString()'
Diffstat (limited to 'src/condparser.cpp')
-rw-r--r-- | src/condparser.cpp | 39 |
1 files changed, 8 insertions, 31 deletions
diff --git a/src/condparser.cpp b/src/condparser.cpp index ac6ff61..b968878 100644 --- a/src/condparser.cpp +++ b/src/condparser.cpp @@ -33,15 +33,16 @@ * - On error, an error message is returned. * - On success, the result of the expression is either "1" or "0". */ -bool CondParser::parse(const char *fileName,int lineNr,const char *expr) +bool CondParser::parse(const QCString &fileName,int lineNr,const QCString &expr) { + if (expr.isEmpty()) return false; m_expr = expr; m_tokenType = NOTHING; // initialize all variables - m_e = m_expr; // let m_e point to the start of the expression + m_e = m_expr.data(); // let m_e point to the start of the expression - bool answer=FALSE; + bool answer=false; getToken(); if (m_tokenType==DELIMITER && m_token.isEmpty()) { @@ -50,35 +51,11 @@ bool CondParser::parse(const char *fileName,int lineNr,const char *expr) else if (m_err.isEmpty()) { answer = parseLevel1(); - -#if 0 - // check for garbage at the end of the expression - // an expression ends with a character '\0' and token_type = delimiter - if (m_tokenType!=DELIMITER || !m_token.isEmpty()) - { - if (m_tokenType == DELIMITER) - { - if (m_token=="(" || m_token==")") - { - m_err=QCString("Unexpected parenthesis ")+m_token+"'"; - } - else - { - // user entered a not existing operator like "//" - m_err=QCString("Unexpected operator ")+m_token+"'"; - } - } - else - { - m_err=QCString("Unexpected part '")+m_token+"'"; - } - } -#endif } - if (m_err) + if (!m_err.isEmpty()) { warn(fileName,lineNr,"problem evaluating expression '%s': %s", - expr,m_err.data()); + qPrint(expr),qPrint(m_err)); } //printf("expr='%s' answer=%d\n",expr,answer); return answer; @@ -303,9 +280,9 @@ bool CondParser::evalOperator(int opId, bool lhs, bool rhs) /** * evaluate a variable */ -bool CondParser::evalVariable(const char *varName) +bool CondParser::evalVariable(const QCString &varName) { const StringVector &list = Config_getList(ENABLED_SECTIONS); - return std::find(list.begin(),list.end(),varName)!=list.end(); + return std::find(list.begin(),list.end(),varName.str())!=list.end(); } |