mydoxy.patch 1.72 KB
diff -Naur doxygen-1.7.3.orig/src/scanner.l doxygen-1.7.3/src/scanner.l
--- doxygen-1.7.3.orig/src/scanner.l	2010-11-30 22:45:51.000000000 +0100
+++ doxygen-1.7.3/src/scanner.l	2011-11-20 05:25:20.494000106 +0100
@@ -1436,6 +1436,7 @@
 					  }
 					  lineCount() ;
 					  if (yytext[yyleng-1]=='{') unput('{');
+					  if (yytext[yyleng-1]=='(') unput('(');
 					  if (insidePHP && current->spec&Entry::Abstract)
 					  {
 					    // convert Abstract to AbstractClass
@@ -1507,6 +1508,7 @@
 					  }
   					}
 <FindMembers>{B}*{TYPEDEFPREFIX}"struct{" | 
+<FindMembers>{B}*{TYPEDEFPREFIX}"CLASS(" |
 <FindMembers>{B}*{TYPEDEFPREFIX}"struct"/{BN}+ { 
 					  isTypedef=((QCString)yytext).find("typedef")!=-1;
   					  current->section = Entry::CLASS_SEC ;
@@ -1514,7 +1516,12 @@
 					  // bug 582676: can be a struct nested in an interface so keep insideObjC state
 					  //current->objc    = insideObjC = FALSE;
 					  addType( current ) ;
-					  current->type += " struct" ;
+					  if (yytext[yyleng-1]=='(') {
+					    unput('(');
+					    current->type += " class" ;
+					  } else {
+					    current->type += " struct" ;
+					  }
 					  current->fileName  = yyFileName;
 					  current->startLine = yyLineNr;
 					  current->bodyLine  = yyLineNr;
@@ -4540,6 +4547,7 @@
                                            // e.g. @protocol A,B;
 					  current->reset();
   					}
+<CompoundName>{ID} |
 <CompoundName>{SCOPENAME}		{ 
 					  current->name = yytext ;
 					  lineCount();
@@ -4806,6 +4814,7 @@
 					    BEGIN( ReadBodyIntf );
 					  }
   					}
+<CompoundName>")"{BN}*"{"{BN}* |
 <CompoundName,ClassVar>{B}*"{"{B}*	{ 
                                           current->fileName = yyFileName ;
 					  current->startLine = yyLineNr ;