summaryrefslogtreecommitdiffstats
path: root/src/pre.l
diff options
context:
space:
mode:
authordimitri <dimitri@afe2bf4a-e733-0410-8a33-86f594647bc7>2010-04-18 13:59:11 (GMT)
committerdimitri <dimitri@afe2bf4a-e733-0410-8a33-86f594647bc7>2010-04-18 13:59:11 (GMT)
commit85b3296309775195f499c1ae43ad2575379a1e55 (patch)
tree5a45c08fe6f9334d87e18a8b8271d2c8cbb71e93 /src/pre.l
parent707831ea739af5ae137c9cc1d04e3ffbbde11a6a (diff)
downloadDoxygen-85b3296309775195f499c1ae43ad2575379a1e55.zip
Doxygen-85b3296309775195f499c1ae43ad2575379a1e55.tar.gz
Doxygen-85b3296309775195f499c1ae43ad2575379a1e55.tar.bz2
Release-1.6.3-20100418
Diffstat (limited to 'src/pre.l')
-rw-r--r--src/pre.l36
1 files changed, 26 insertions, 10 deletions
diff --git a/src/pre.l b/src/pre.l
index 1ee4fbe..1f8316f 100644
--- a/src/pre.l
+++ b/src/pre.l
@@ -188,7 +188,9 @@ static bool macroIsAccessible(Define *def)
}
if (def && def->fileDef==g_inputFileDef)
{
- return def->lineNr<g_yyLineNr;
+ //printf("%s: macro %s defined in this file at line %d now at %d\n",
+ // g_inputFileDef->name().data(),def->name.data(),def->lineNr,g_yyLineNr);
+ return def->lineNr<=g_yyLineNr;
}
if (g_inputFileDef && def && def->fileDef) // check if g_inputFileDef actually includes def->fileDef
{
@@ -198,6 +200,7 @@ static bool macroIsAccessible(Define *def)
// g_inputFileDef->name().data(),def->name.data(),def->fileDef->name().data(),b);
return b;
}
+ //printf("not accessible!\n");
return FALSE;
}
@@ -1883,34 +1886,47 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
g_defVarArgs = FALSE;
BEGIN(DefineArg);
}
-<DefName>{ID}/{B}* { // define with content
+<DefName>{ID}{B}+"1" { // special case: define with 1 -> can be "guard"
//printf("Define `%s'\n",yytext);
g_argDict = 0;
g_defArgs = -1;
g_defArgsStr.resize(0);
- g_defText.resize(0);
- g_defLitText.resize(0);
g_defName = yytext;
+ g_defName = g_defName.left(g_defName.length()-1).stripWhiteSpace();
g_defVarArgs = FALSE;
- //QCString tmp=(QCString)"#define "+g_defName+g_defArgsStr;
- //outputArray(tmp.data(),tmp.length());
- //g_quoteArg=FALSE;
- //g_insideComment=FALSE;
- //BEGIN(DefineText);
if ( g_defName!=g_lastGuardName || !g_expectGuard)
{ // define may appear in the output
QCString tmp=(QCString)"#define "+g_defName;
outputArray(tmp.data(),tmp.length());
g_quoteArg=FALSE;
g_insideComment=FALSE;
+ g_lastGuardName.resize(0);
+ g_defText="1";
+ g_defLitText="1";
BEGIN(DefineText);
}
else // define is a guard => hide
{
- g_lastGuardName.resize(0);
+ g_defText.resize(0);
+ g_defLitText.resize(0);
BEGIN(Start);
}
}
+<DefName>{ID}/{B}* { // define with content
+ //printf("Define `%s'\n",yytext);
+ g_argDict = 0;
+ g_defArgs = -1;
+ g_defArgsStr.resize(0);
+ g_defText.resize(0);
+ g_defLitText.resize(0);
+ g_defName = yytext;
+ g_defVarArgs = FALSE;
+ QCString tmp=(QCString)"#define "+g_defName+g_defArgsStr;
+ outputArray(tmp.data(),tmp.length());
+ g_quoteArg=FALSE;
+ g_insideComment=FALSE;
+ BEGIN(DefineText);
+ }
<DefName>{ID}/{B}*"\n" { // empty define
g_argDict = 0;
g_defArgs = -1;