Commit 0a37457c authored by dimitri's avatar dimitri

Doxygen-1.2.17-20020901

parent 55d2ef84
DOXYGEN Version 1.2.17-20020825 DOXYGEN Version 1.2.17-20020901
Please read the installation section of the manual for instructions. Please read the installation section of the manual for instructions.
-------- --------
Dimitri van Heesch (25 August 2002) Dimitri van Heesch (01 September 2002)
DOXYGEN Version 1.2.17_20020825 DOXYGEN Version 1.2.17_20020901
Please read INSTALL for compilation instructions. Please read INSTALL for compilation instructions.
...@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives. ...@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy, Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (25 August 2002) Dimitri van Heesch (dimitri@stack.nl) (01 September 2002)
1.2.17-20020825 1.2.17-20020901
...@@ -1041,6 +1041,10 @@ ALIASES = "english=\if english" \ ...@@ -1041,6 +1041,10 @@ ALIASES = "english=\if english" \
This command places an invisible, named anchor into the documentation This command places an invisible, named anchor into the documentation
to which you can refer with the \\ref command. to which you can refer with the \\ref command.
\note Anchors can currently only be put into a comment block
that is marked as a page (using \ref cmdpage "\\page") or mainpage
(\ref cmdmainpage "\\mainpage").
\sa section \ref cmdref "\\ref". \sa section \ref cmdref "\\ref".
<hr> <hr>
......
Summary: A documentation system for C/C++. Summary: A documentation system for C/C++.
Name: doxygen Name: doxygen
Version: 1.2.17_20020825 Version: 1.2.17_20020901
Release: 1 Release: 1
Epoch: 1 Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
......
...@@ -164,6 +164,9 @@ ID [a-z_A-Z][a-z_A-Z0-9]* ...@@ -164,6 +164,9 @@ ID [a-z_A-Z][a-z_A-Z0-9]*
g_curArgTypeName+=g_curArgName; g_curArgTypeName+=g_curArgName;
BEGIN( ReadFuncArgType ); BEGIN( ReadFuncArgType );
} }
<ReadFuncArgType>"<="|">="|"->"|">>"|"<<" { // handle operators in defargs
g_curArgTypeName+=yytext;
}
<ReadFuncArgType,ReadFuncArgDef>[({<] { <ReadFuncArgType,ReadFuncArgDef>[({<] {
if (YY_START==ReadFuncArgType) if (YY_START==ReadFuncArgType)
{ {
...@@ -249,6 +252,12 @@ ID [a-z_A-Z][a-z_A-Z0-9]* ...@@ -249,6 +252,12 @@ ID [a-z_A-Z][a-z_A-Z0-9]*
BEGIN( ReadDocBlock ); BEGIN( ReadDocBlock );
} }
<ReadFuncArgType,ReadFuncArgDef>[,)>] { <ReadFuncArgType,ReadFuncArgDef>[,)>] {
if (*yytext==')' && g_curArgTypeName.stripWhiteSpace().isEmpty())
{
g_curArgTypeName+=*yytext;
}
else
{
g_curArgTypeName=removeRedundantWhiteSpace(g_curArgTypeName); g_curArgTypeName=removeRedundantWhiteSpace(g_curArgTypeName);
g_curArgDefValue=g_curArgDefValue.stripWhiteSpace(); g_curArgDefValue=g_curArgDefValue.stripWhiteSpace();
//printf("curArgType=`%s' curArgDefVal=`%s'\n",g_curArgTypeName.data(),g_curArgDefValue.data()); //printf("curArgType=`%s' curArgDefVal=`%s'\n",g_curArgTypeName.data(),g_curArgDefValue.data());
...@@ -312,6 +321,7 @@ ID [a-z_A-Z][a-z_A-Z0-9]* ...@@ -312,6 +321,7 @@ ID [a-z_A-Z][a-z_A-Z0-9]*
BEGIN( ReadFuncArgType ); BEGIN( ReadFuncArgType );
} }
} }
}
<ReadFuncArgType,ReadFuncArgPtr>{ID} { <ReadFuncArgType,ReadFuncArgPtr>{ID} {
QCString name=yytext; //resolveDefines(yytext); QCString name=yytext; //resolveDefines(yytext);
//printf("resolveName `%s'->`%s'\n",yytext,name.data()); //printf("resolveName `%s'->`%s'\n",yytext,name.data());
......
...@@ -1130,8 +1130,10 @@ static int yyread(char *buf,int max_size) ...@@ -1130,8 +1130,10 @@ static int yyread(char *buf,int max_size)
return c; return c;
} }
//ATTR ((({BN}+[^\>]+)/">")?) //LINKMASK [a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+({B}*("const"|"volatile"))?
//ATTR ((({BN}+[^\>]+)/">")?)
%} %}
CMD ("\\"|"@") CMD ("\\"|"@")
BN [ \t\n\r] BN [ \t\n\r]
BL [ \t\r]*"\n" BL [ \t\r]*"\n"
...@@ -1200,7 +1202,7 @@ OPARG "("[a-z_A-Z0-9,\<\> \t\*\&]*")" ...@@ -1200,7 +1202,7 @@ OPARG "("[a-z_A-Z0-9,\<\> \t\*\&]*")"
OPNORM {OPNEW}|{OPDEL}|"+"|"-"|"*"|"/"|"%"|"^"|"&"|"|"|"~"|"!"|"="|"<"|">"|"+="|"-="|"*="|"/="|"%="|"^="|"&="|"|="|"<<"|">>"|"<<="|">>="|"=="|"!="|"<="|">="|"&&"|"||"|"++"|"--"|","|"->*"|"->"|"[]"|"()" OPNORM {OPNEW}|{OPDEL}|"+"|"-"|"*"|"/"|"%"|"^"|"&"|"|"|"~"|"!"|"="|"<"|">"|"+="|"-="|"*="|"/="|"%="|"^="|"&="|"|="|"<<"|">>"|"<<="|">>="|"=="|"!="|"<="|">="|"&&"|"||"|"++"|"--"|","|"->*"|"->"|"[]"|"()"
OPCAST {B}+[^(\r\n.,]+ OPCAST {B}+[^(\r\n.,]+
OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
LINKMASK [a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+({B}*("const"|"volatile"))? LINKMASK [^ \t\n\r\\@<&$]+("("[^\n)]*")")?({B}*("const"|"volatile"))?
%option noyywrap %option noyywrap
...@@ -1785,7 +1787,7 @@ LINKMASK [a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+({B}*("const"|"volatile"))? ...@@ -1785,7 +1787,7 @@ LINKMASK [a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+({B}*("const"|"volatile"))?
if (inBlock()) endBlock(); if (inBlock()) endBlock();
inReturnBlock=TRUE; inReturnBlock=TRUE;
currentListIndent.push("P"); currentListIndent.push("P");
outDoc->startSimpleSect(BaseOutputDocInterface::Return,0,0,theTranslator->trReturns()+":"); outDoc->startSimpleSect(BaseOutputDocInterface::Return,0,0,theTranslator->trReturns()+": ");
outDoc->writeDescItem(); outDoc->writeDescItem();
} }
} }
......
...@@ -1392,6 +1392,7 @@ QCString DocLink::parse(bool isJavaLink) ...@@ -1392,6 +1392,7 @@ QCString DocLink::parse(bool isJavaLink)
printf("Error: Unsupported symbol %s found at line %d\n", printf("Error: Unsupported symbol %s found at line %d\n",
g_token->name.data(),doctokenizerYYlineno); g_token->name.data(),doctokenizerYYlineno);
break; break;
case TK_LNKWORD:
case TK_WORD: case TK_WORD:
if (isJavaLink) // special case to detect closing } if (isJavaLink) // special case to detect closing }
{ {
...@@ -3894,7 +3895,7 @@ void DocRoot::parse() ...@@ -3894,7 +3895,7 @@ void DocRoot::parse()
DocNode *validatingParseDoc(const char *fileName,int startLine, DocNode *validatingParseDoc(const char *fileName,int startLine,
const char *context,const char *input) const char *context,const char *input)
{ {
//printf("---------------- input --------------------\n%s\n----------- end input -------------------\n",input); printf("---------------- input --------------------\n%s\n----------- end input -------------------\n",input);
printf("========== validating %s at line %d\n",fileName,startLine); printf("========== validating %s at line %d\n",fileName,startLine);
g_token = new TokenInfo; g_token = new TokenInfo;
......
...@@ -1793,8 +1793,10 @@ void writeDotGraphFromFile(const char *inFile,const char *outDir, ...@@ -1793,8 +1793,10 @@ void writeDotGraphFromFile(const char *inFile,const char *outDir,
QCString imgName = (QCString)outFile+"."+imgExt; QCString imgName = (QCString)outFile+"."+imgExt;
if (format==BITMAP) if (format==BITMAP)
{ {
dotArgs.sprintf("-T%s \"%s\" -o \"%s\"",imgExt.data(), dotArgs.sprintf("-T%s \"%s\" -o \"%s\"",
inFile,imgName.data()); imgExt.data(),
inFile,
imgName.data());
} }
else // format==EPS else // format==EPS
{ {
......
...@@ -200,11 +200,38 @@ static void addRelatedPage(Entry *root) ...@@ -200,11 +200,38 @@ static void addRelatedPage(Entry *root)
if (!g->groupname.isEmpty() && (gd=Doxygen::groupSDict[g->groupname])) break; if (!g->groupname.isEmpty() && (gd=Doxygen::groupSDict[g->groupname])) break;
} }
//printf("addRelatedPage() %s gd=%p\n",root->name.data(),gd); //printf("addRelatedPage() %s gd=%p\n",root->name.data(),gd);
addRelatedPage(root->name,root->args,root->doc,root->anchors, PageInfo *pi = addRelatedPage(root->name,root->args,root->doc,root->anchors,
root->fileName,root->startLine, root->fileName,root->startLine,
root->sli, root->sli,
gd,root->tagInfo gd,root->tagInfo
); );
if (pi)
{
// see if the function is inside a namespace
Definition *ctx = 0;
if (root->parent->section & Entry::COMPOUND_MASK ) // inside class
{
QCString fullName=removeRedundantWhiteSpace(root->parent->name);
fullName=stripAnonymousNamespaceScope(fullName);
fullName=stripTemplateSpecifiersFromScope(fullName);
ctx=getClass(fullName);
}
if (ctx==0 && root->parent->section == Entry::NAMESPACE_SEC ) // inside namespace
{
QCString nscope=removeAnonymousScopes(root->parent->name);
if (!nscope.isEmpty())
{
ctx = getResolvedNamespace(nscope);
}
}
if (ctx==0) // inside file
{
bool ambig;
ctx=findFileDef(Doxygen::inputNameDict,root->fileName,ambig);
}
pi->context = ctx;
}
} }
...@@ -1919,7 +1946,6 @@ static void buildFunctionList(Entry *root) ...@@ -1919,7 +1946,6 @@ static void buildFunctionList(Entry *root)
isMember=memIndex<ts || memIndex>te; isMember=memIndex<ts || memIndex>te;
} }
} }
if (root->parent && if (root->parent &&
!root->parent->name.isEmpty() && !root->parent->name.isEmpty() &&
(root->parent->section & Entry::COMPOUND_MASK) && (root->parent->section & Entry::COMPOUND_MASK) &&
...@@ -1967,7 +1993,8 @@ static void buildFunctionList(Entry *root) ...@@ -1967,7 +1993,8 @@ static void buildFunctionList(Entry *root)
if (rnd) rnsName = rnd->name().copy(); if (rnd) rnsName = rnd->name().copy();
NamespaceList *unl = fd ? fd->getUsedNamespaces() : 0; NamespaceList *unl = fd ? fd->getUsedNamespaces() : 0;
ClassList *ucl = fd ? fd->getUsedClasses() : 0; ClassList *ucl = fd ? fd->getUsedClasses() : 0;
//printf("matching arguments for %s\n",md->name().data()); //printf("matching arguments for %s%s %s%s\n",
// md->name().data(),md->argsString(),rname.data(),argListToString(root->argList).data());
if ( if (
matchArguments(md->argumentList(),root->argList,0,nsName,FALSE,unl,ucl) matchArguments(md->argumentList(),root->argList,0,nsName,FALSE,unl,ucl)
) )
...@@ -2060,7 +2087,6 @@ static void buildFunctionList(Entry *root) ...@@ -2060,7 +2087,6 @@ static void buildFunctionList(Entry *root)
root->type,name,root->args,root->exception, root->type,name,root->args,root->exception,
root->protection,root->virt,root->stat,FALSE, root->protection,root->virt,root->stat,FALSE,
MemberDef::Function,tArgList,root->argList); MemberDef::Function,tArgList,root->argList);
//printf("new member %p\n",md);
if (root->tagInfo) if (root->tagInfo)
...@@ -2297,21 +2323,24 @@ static void transferFunctionDocumentation() ...@@ -2297,21 +2323,24 @@ static void transferFunctionDocumentation()
MemberName *mn; MemberName *mn;
for (;(mn=mnli.current());++mnli) for (;(mn=mnli.current());++mnli)
{ {
MemberDef *md,*mdef=0,*mdec=0; //printf("memberName=%s count=%d\n",mn->memberName(),mn->count());
MemberNameIterator mni(*mn); MemberDef *mdef=0,*mdec=0;
MemberNameIterator mni1(*mn);
/* find a matching function declaration and definition for this function */ /* find a matching function declaration and definition for this function */
for (;(md=mni.current());++mni) for (;(mdec=mni1.current());++mni1)
{
if (mdec->isPrototype() ||
(mdec->isVariable() && mdec->isExternal())
)
{
MemberNameIterator mni2(*mn);
for (;(mdef=mni2.current());++mni2)
{
if (
(mdef->isFunction() && !mdef->isStatic() && !mdef->isPrototype()) ||
(mdef->isVariable() && !mdef->isExternal() && !mdef->isStatic())
)
{ {
if (md->isPrototype())
mdec=md;
else if (md->isVariable() && md->isExternal())
mdec=md;
if (md->isFunction() && !md->isStatic() && !md->isPrototype())
mdef=md;
else if (md->isVariable() && !md->isExternal() && !md->isStatic())
mdef=md;
}
//printf("mdef=(%p,%s) mdec=(%p,%s)\n", //printf("mdef=(%p,%s) mdec=(%p,%s)\n",
// mdef, mdef ? mdef->name().data() : "", // mdef, mdef ? mdef->name().data() : "",
// mdec, mdec ? mdec->name().data() : ""); // mdec, mdec ? mdec->name().data() : "");
...@@ -2365,12 +2394,14 @@ static void transferFunctionDocumentation() ...@@ -2365,12 +2394,14 @@ static void transferFunctionDocumentation()
} }
if (mdec->getStartBodyLine()!=-1 && mdef->getStartBodyLine()==-1) if (mdec->getStartBodyLine()!=-1 && mdef->getStartBodyLine()==-1)
{ {
//printf("body mdec->mdef %d-%d\n",mdec->getStartBodyLine(),mdef->getEndBodyLine());
mdef->setBodySegment(mdec->getStartBodyLine(),mdec->getEndBodyLine()); mdef->setBodySegment(mdec->getStartBodyLine(),mdec->getEndBodyLine());
mdef->setBodyDef(mdec->getBodyDef()); mdef->setBodyDef(mdec->getBodyDef());
mdef->setBodyMember(mdec); mdef->setBodyMember(mdec);
} }
else if (mdef->getStartBodyLine()!=-1 && mdec->getStartBodyLine()==-1) else if (mdef->getStartBodyLine()!=-1 && mdec->getStartBodyLine()==-1)
{ {
//printf("body mdef->mdec %d-%d\n",mdef->getStartBodyLine(),mdec->getEndBodyLine());
mdec->setBodySegment(mdef->getStartBodyLine(),mdef->getEndBodyLine()); mdec->setBodySegment(mdef->getStartBodyLine(),mdef->getEndBodyLine());
mdec->setBodyDef(mdef->getBodyDef()); mdec->setBodyDef(mdef->getBodyDef());
mdec->setBodyMember(mdef); mdec->setBodyMember(mdef);
...@@ -2391,6 +2422,13 @@ static void transferFunctionDocumentation() ...@@ -2391,6 +2422,13 @@ static void transferFunctionDocumentation()
mdec->setRefItems(mdef->specialListItems()); mdec->setRefItems(mdef->specialListItems());
mdef->setRefItems(mdec->specialListItems()); mdef->setRefItems(mdec->specialListItems());
mdef->setMemberDeclaration(mdec);
mdec->setMemberDefinition(mdef);
}
}
}
}
} }
} }
} }
...@@ -5972,7 +6010,16 @@ static void generatePageDocs() ...@@ -5972,7 +6010,16 @@ static void generatePageDocs()
outputList->endSection(si->label,si->type); outputList->endSection(si->label,si->type);
} }
outputList->startTextBlock(); outputList->startTextBlock();
parseDoc(*outputList,pi->defFileName,pi->defLine,0,0,pi->doc); QCString scName;
if (pi->context &&
(pi->context->definitionType()==Definition::TypeClass ||
pi->context->definitionType()==Definition::TypeNamespace
)
)
{
scName=pi->context->name();
}
parseDoc(*outputList,pi->defFileName,pi->defLine,scName,0,pi->doc);
outputList->endTextBlock(); outputList->endTextBlock();
endFile(*outputList); endFile(*outputList);
//outputList->enable(OutputGenerator::Man); //outputList->enable(OutputGenerator::Man);
......
...@@ -162,7 +162,7 @@ void GroupDef::addMembersToMemberGroup() ...@@ -162,7 +162,7 @@ void GroupDef::addMembersToMemberGroup()
} }
void GroupDef::insertMember(MemberDef *md,bool docOnly) bool GroupDef::insertMember(MemberDef *md,bool docOnly)
{ {
//printf("GroupDef(%s)::insertMember(%s)\n", title.data(), md->name().data()); //printf("GroupDef(%s)::insertMember(%s)\n", title.data(), md->name().data());
MemberNameInfo *mni=0; MemberNameInfo *mni=0;
...@@ -173,10 +173,17 @@ void GroupDef::insertMember(MemberDef *md,bool docOnly) ...@@ -173,10 +173,17 @@ void GroupDef::insertMember(MemberDef *md,bool docOnly)
for ( ; (srcMi=srcMnii.current()) ; ++srcMnii ) for ( ; (srcMi=srcMnii.current()) ; ++srcMnii )
{ {
MemberDef *srcMd = srcMi->memberDef; MemberDef *srcMd = srcMi->memberDef;
bool sameScope = srcMd->getOuterScope()==md->getOuterScope() || // same class or namespace
// both inside a file => definition and declaration do not have to be in the same file
(srcMd->getOuterScope()->definitionType()==Definition::TypeFile &&
md->getOuterScope()->definitionType()==Definition::TypeFile);
if (matchArguments(srcMd->argumentList(),md->argumentList()) && if (matchArguments(srcMd->argumentList(),md->argumentList()) &&
srcMd->getOuterScope()==md->getOuterScope()) sameScope
)
{ {
return; // member already added return FALSE; // member already added
} }
} }
mni->append(new MemberInfo(md,md->protection(),md->virtualness(),FALSE)); mni->append(new MemberInfo(md,md->protection(),md->virtualness(),FALSE));
...@@ -187,6 +194,7 @@ void GroupDef::insertMember(MemberDef *md,bool docOnly) ...@@ -187,6 +194,7 @@ void GroupDef::insertMember(MemberDef *md,bool docOnly)
mni->append(new MemberInfo(md,md->protection(),md->virtualness(),FALSE)); mni->append(new MemberInfo(md,md->protection(),md->virtualness(),FALSE));
allMemberNameInfoSDict->append(mni->memberName(),mni); allMemberNameInfoSDict->append(mni->memberName(),mni);
} }
//printf("Added member!\n");
allMemberList->append(md); allMemberList->append(md);
switch(md->memberType()) switch(md->memberType())
{ {
...@@ -241,7 +249,7 @@ void GroupDef::insertMember(MemberDef *md,bool docOnly) ...@@ -241,7 +249,7 @@ void GroupDef::insertMember(MemberDef *md,bool docOnly)
md->getClassDef() ? md->getClassDef()->name().data() : "", md->getClassDef() ? md->getClassDef()->name().data() : "",
name().data()); name().data());
} }
//addMemberToGroup(md,groupId); return TRUE;
} }
void GroupDef::removeMember(MemberDef *md) void GroupDef::removeMember(MemberDef *md)
...@@ -723,12 +731,15 @@ void addMemberToGroups(Entry *root,MemberDef *md) ...@@ -723,12 +731,15 @@ void addMemberToGroups(Entry *root,MemberDef *md)
if (insertit) if (insertit)
{ {
//printf("insertMember\n"); //printf("insertMember\n");
fgd->insertMember(md); bool success = fgd->insertMember(md);
if (success)
{
md->setGroupDef(fgd,pri,root->fileName,root->startLine,root->doc.length() != 0); md->setGroupDef(fgd,pri,root->fileName,root->startLine,root->doc.length() != 0);
ClassDef *cd = md->getClassDefOfAnonymousType(); ClassDef *cd = md->getClassDefOfAnonymousType();
if (cd) cd->setGroupDefForAllMembers(fgd,pri,root->fileName,root->startLine,root->doc.length() != 0); if (cd) cd->setGroupDefForAllMembers(fgd,pri,root->fileName,root->startLine,root->doc.length() != 0);
} }
} }
}
} }
......
...@@ -55,7 +55,7 @@ class GroupDef : public Definition ...@@ -55,7 +55,7 @@ class GroupDef : public Definition
void addParentGroup(const GroupDef *def); void addParentGroup(const GroupDef *def);
void addPage(PageInfo *def); // pages in this group void addPage(PageInfo *def); // pages in this group
void addExample(const PageInfo *def); // examples in this group void addExample(const PageInfo *def); // examples in this group
void insertMember(MemberDef *def,bool docOnly=FALSE); bool insertMember(MemberDef *def,bool docOnly=FALSE);
void removeMember(MemberDef *md); void removeMember(MemberDef *md);
bool containsGroup(const GroupDef *def); // true if def is already a subgroup bool containsGroup(const GroupDef *def); // true if def is already a subgroup
void writeDetailedDocumentation(OutputList &ol); void writeDetailedDocumentation(OutputList &ol);
......
This diff is collapsed.
This diff is collapsed.
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
#include "dot.h" #include "dot.h"
#include "language.h" #include "language.h"
#include "htmlhelp.h" #include "htmlhelp.h"
#include "docparser.h"
#include "htmldocvisitor.h" #include "htmldocvisitor.h"
// #define GROUP_COLOR "#ff8080" // #define GROUP_COLOR "#ff8080"
......
This diff is collapsed.
This diff is collapsed.
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
#include "version.h" #include "version.h"
#include "dot.h" #include "dot.h"
#include "page.h" #include "page.h"
#include "docparser.h"
#include "latexdocvisitor.h" #include "latexdocvisitor.h"
//static QCString filterTitle(const char *s) //static QCString filterTitle(const char *s)
......
...@@ -71,7 +71,9 @@ HEADERS = bufstr.h \ ...@@ -71,7 +71,9 @@ HEADERS = bufstr.h \
printdocvisitor.h \ printdocvisitor.h \
qtbc.h \ qtbc.h \
reflist.h \ reflist.h \
rtfdocvisitor.h \
rtfgen.h \ rtfgen.h \
rtfstyle.h \
scanner.h \ scanner.h \
searchindex.h \ searchindex.h \
section.h \ section.h \
...@@ -162,7 +164,9 @@ SOURCES = ce_lex.cpp \ ...@@ -162,7 +164,9 @@ SOURCES = ce_lex.cpp \
pngenc.cpp \ pngenc.cpp \
pre.cpp \ pre.cpp \
reflist.cpp \ reflist.cpp \
rtfdocvisitor.cpp \
rtfgen.cpp \ rtfgen.cpp \
rtfstyle.cpp \
scanner.cpp \ scanner.cpp \
searchindex.cpp \ searchindex.cpp \
suffixtree.cpp \ suffixtree.cpp \
......
...@@ -552,7 +552,14 @@ ClassDef *MemberDef::getClassDefOfAnonymousType() ...@@ -552,7 +552,14 @@ ClassDef *MemberDef::getClassDefOfAnonymousType()
*/ */
bool MemberDef::isBriefSectionVisible() const bool MemberDef::isBriefSectionVisible() const
{ {
bool hasDocs = hasDocumentation(); //printf("Member %s grpId=%d docs=%s file=%s args=%s\n",
// name().data(),
// grpId,grpId==-1?"<none>":Doxygen::memberDocDict[grpId]->data(),
// getFileDef()->name().data(),
// argsString());
bool hasDocs = hasDocumentation() ||
// part of a documented member group
(grpId!=-1 && !Doxygen::memberDocDict[grpId]->isEmpty());
// only include static members with file/namespace scope if // only include static members with file/namespace scope if
// explicitly enabled in the config file // explicitly enabled in the config file
...@@ -609,6 +616,12 @@ bool MemberDef::isBriefSectionVisible() const ...@@ -609,6 +616,12 @@ bool MemberDef::isBriefSectionVisible() const
!hasDocs !hasDocs
); );
//printf("visibleIfStatic=%d visibleIfDocumented=%d visibleIfEnabled=%d"
// "visibleIfPrivate=%d visibleIfDocVirtual=%d visibltIfNotDefaultCDTor=%d "
// "visibleIfFriendCompound=%d\n",visibleIfStatic,visibleIfDocumented,
// visibleIfEnabled,visibleIfPrivate,visibleIfDocVirtual,visibleIfNotDefaultCDTor,
// visibleIfFriendCompound);
bool visible = visibleIfStatic && visibleIfDocumented && bool visible = visibleIfStatic && visibleIfDocumented &&
visibleIfEnabled && visibleIfPrivate && visibleIfEnabled && visibleIfPrivate &&
visibleIfDocVirtual && visibleIfNotDefaultCDTor && visibleIfDocVirtual && visibleIfNotDefaultCDTor &&
......
...@@ -246,6 +246,12 @@ class MemberDef : public Definition ...@@ -246,6 +246,12 @@ class MemberDef : public Definition
void setBodyMember(MemberDef *md) { bodyMemb = md; } void setBodyMember(MemberDef *md) { bodyMemb = md; }
void setDocsForDefinition(bool b) { docsForDefinition = b; } void setDocsForDefinition(bool b) { docsForDefinition = b; }
// declaration <-> definition relation
void setMemberDefinition(MemberDef *md) { memDef=md; }
void setMemberDeclaration(MemberDef *md) { memDec=md; }
MemberDef *memberDefinition() const { return memDef; }
MemberDef *memberDeclaration() const { return memDec; }
bool visited; bool visited;
private: private:
...@@ -270,8 +276,6 @@ class MemberDef : public Definition ...@@ -270,8 +276,6 @@ class MemberDef : public Definition
QCString init; // initializer QCString init; // initializer
int initLines; // number of lines in the initializer int initLines; // number of lines in the initializer
QCString decl; // member declaration in class QCString decl; // member declaration in class
//QCString declFile; // file where the declaration was found
//int declLine; // line where the declaration was found
QCString def; // member definition in code (fully qualified name) QCString def; // member definition in code (fully qualified name)
QCString anc; // HTML anchor name QCString anc; // HTML anchor name
MemberDef *bodyMemb; // Member containing the definition MemberDef *bodyMemb; // Member containing the definition
...@@ -281,7 +285,6 @@ class MemberDef : public Definition ...@@ -281,7 +285,6 @@ class MemberDef : public Definition
bool stat; // is it a static function? bool stat; // is it a static function?
int memSpec; // The specifiers present for this member int memSpec; // The specifiers present for this member
MemberType mtype; // returns the kind of member MemberType mtype; // returns the kind of member
//bool eUsed; // is the enumerate already placed in a list
bool proto; // is it a prototype; bool proto; // is it a prototype;
bool docEnumValues; // is an enum with documented enum values. bool docEnumValues; // is an enum with documented enum values.
bool annScope; // member is part of an annoymous scope bool annScope; // member is part of an annoymous scope
......
...@@ -25,7 +25,8 @@ class PageInfo ...@@ -25,7 +25,8 @@ class PageInfo
public: public:
PageInfo(const char *f, int l,const char *n,const char *d,const char *t) : PageInfo(const char *f, int l,const char *n,const char *d,const char *t) :
defFileName(f), defLine(l), name(n), defFileName(f), defLine(l), name(n),
doc(d), title(t), sectionDict(0),specialListItems(0),m_inGroup(0) {} doc(d), title(t), context(0), sectionDict(0),specialListItems(0),m_inGroup(0)
{}
// where the page definition was found // where the page definition was found
QCString defFileName; QCString defFileName;
...@@ -40,6 +41,9 @@ class PageInfo ...@@ -40,6 +41,9 @@ class PageInfo
QCString reference; QCString reference;
QCString fileName; QCString fileName;
// class, file or namespace in which the page was found
Definition *context;
// functions to get a uniform interface with Definitions // functions to get a uniform interface with Definitions
QCString getOutputFileBase() const { return fileName; } QCString getOutputFileBase() const { return fileName; }
bool isReference() const { return !reference.isEmpty(); } bool isReference() const { return !reference.isEmpty(); }
......
This diff is collapsed.
/******************************************************************************
*
*
*
*
* Copyright (C) 1997-2002 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
* granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details.
*
* Documents produced by Doxygen are derivative works derived from the
* input used in their production; they are not affected by this license.
*
*/
#ifndef _RTFDOCVISITOR_H
#define _RTFDOCVISITOR_H
#include "docvisitor.h"
class QTextStream;
class BaseCodeDocInterface;
class QCString;
/*! @brief Concrete visitor implementation for RTF output. */
class RTFDocVisitor : public DocVisitor
{
public:
RTFDocVisitor(QTextStream &t,BaseCodeDocInterface &ci);
//--------------------------------------
// visitor functions for leaf nodes
//--------------------------------------
void visit(DocWord *);
void visit(DocLinkedWord *);
void visit(DocWhiteSpace *);
void visit(DocSymbol *);
void visit(DocURL *);
void visit(DocLineBreak *);
void visit(DocHorRuler *);
void visit(DocStyleChange *);
void visit(DocVerbatim *);
void visit(DocAnchor *);
void visit(DocInclude *);
void visit(DocIncOperator *);
void visit(DocFormula *);
//--------------------------------------
// visitor functions for compound nodes
//--------------------------------------
void visitPre(DocAutoList *);
void visitPost(DocAutoList *);
void visitPre(DocAutoListItem *);
void visitPost(DocAutoListItem *);
void visitPre(DocPara *);
void visitPost(DocPara *);
void visitPre(DocRoot *);
void visitPost(DocRoot *);
void visitPre(DocSimpleSect *);
void visitPost(DocSimpleSect *);
void visitPre(DocTitle *);
void visitPost(DocTitle *);
void visitPre(DocSimpleList *);
void visitPost(DocSimpleList *);
void visitPre(DocSimpleListItem *);
void visitPost(DocSimpleListItem *);
void visitPre(DocSection *s);
void visitPost(DocSection *);
void visitPre(DocHtmlList *s);
void visitPost(DocHtmlList *s);
void visitPre(DocHtmlListItem *);
void visitPost(DocHtmlListItem *);
void visitPre(DocHtmlPre *);
void visitPost(DocHtmlPre *);
void visitPre(DocHtmlDescList *);
void visitPost(DocHtmlDescList *);
void visitPre(DocHtmlDescTitle *);
void visitPost(DocHtmlDescTitle *);
void visitPre(DocHtmlDescData *);
void visitPost(DocHtmlDescData *);
void visitPre(DocHtmlTable *t);
void visitPost(DocHtmlTable *t);
void visitPre(DocHtmlCaption *);
void visitPost(DocHtmlCaption *);
void visitPre(DocHtmlRow *);
void visitPost(DocHtmlRow *) ;
void visitPre(DocHtmlCell *);
void visitPost(DocHtmlCell *);
void visitPre(DocIndexEntry *);
void visitPost(DocIndexEntry *);
void visitPre(DocInternal *);
void visitPost(DocInternal *);
void visitPre(DocHRef *);
void visitPost(DocHRef *);
void visitPre(DocHtmlHeader *);
void visitPost(DocHtmlHeader *) ;
void visitPre(DocImage *);
void visitPost(DocImage *);
void visitPre(DocDotFile *);
void visitPost(DocDotFile *);
void visitPre(DocLink *lnk);
void visitPost(DocLink *);
void visitPre(DocRef *ref);
void visitPost(DocRef *);
void visitPre(DocSecRefItem *);
void visitPost(DocSecRefItem *);
void visitPre(DocSecRefList *);
void visitPost(DocSecRefList *);
void visitPre(DocLanguage *);
void visitPost(DocLanguage *);
void visitPre(DocParamSect *);
void visitPost(DocParamSect *);
void visitPre(DocParamList *);
void visitPost(DocParamList *);
void visitPre(DocXRefItem *);
void visitPost(DocXRefItem *);
void visitPre(DocInternalRef *);
void visitPost(DocInternalRef *);
void visitPre(DocCopy *);
void visitPost(DocCopy *);
private:
//--------------------------------------
// helper functions
//--------------------------------------
void filter(const char *str);
void startLink(const QCString &ref,const QCString &file,
const QCString &anchor);
void endLink(const QCString &ref);
QCString getStyle(const char *name);
//--------------------------------------
// state variables
//--------------------------------------
QTextStream &m_t;
BaseCodeDocInterface &m_ci;
bool m_insidePre;
bool m_hide;
int m_indentLevel;
};
#endif
This diff is collapsed.
...@@ -107,7 +107,7 @@ class RTFGenerator : public OutputGenerator ...@@ -107,7 +107,7 @@ class RTFGenerator : public OutputGenerator
//void memberGroupSeparator() {} //void memberGroupSeparator() {}
void insertMemberAlign() {} void insertMemberAlign() {}
void writeRuler(){RtfwriteRuler_thin();}; void writeRuler() { rtfwriteRuler_thin(); }
void writeAnchor(const char *fileName,const char *name); void writeAnchor(const char *fileName,const char *name);
void startCodeFragment(); void startCodeFragment();
...@@ -262,12 +262,12 @@ class RTFGenerator : public OutputGenerator ...@@ -262,12 +262,12 @@ class RTFGenerator : public OutputGenerator
RTFGenerator(const RTFGenerator &); RTFGenerator(const RTFGenerator &);
RTFGenerator &operator=(const RTFGenerator &); RTFGenerator &operator=(const RTFGenerator &);
const char *Rtf_BList_DepthStyle(); const char *rtf_BList_DepthStyle();
const char *Rtf_CList_DepthStyle(); const char *rtf_CList_DepthStyle();
const char *Rtf_EList_DepthStyle(); const char *rtf_EList_DepthStyle();
const char *Rtf_LCList_DepthStyle(); const char *rtf_LCList_DepthStyle();
const char *Rtf_DList_DepthStyle(); const char *rtf_DList_DepthStyle();
const char *Rtf_Code_DepthStyle(); const char *rtf_Code_DepthStyle();
void incrementIndentLevel(); void incrementIndentLevel();
void decrementIndentLevel(); void decrementIndentLevel();
int col; int col;
...@@ -280,11 +280,11 @@ class RTFGenerator : public OutputGenerator ...@@ -280,11 +280,11 @@ class RTFGenerator : public OutputGenerator
void beginRTFDocument(); void beginRTFDocument();
void beginRTFChapter(); void beginRTFChapter();
void beginRTFSection(); void beginRTFSection();
void RtfwriteRuler_doubleline() { t << "{\\pard\\widctlpar\\brdrb\\brdrdb\\brdrw15\\brsp20 \\adjustright \\par}" << endl; }; void rtfwriteRuler_doubleline() { t << "{\\pard\\widctlpar\\brdrb\\brdrdb\\brdrw15\\brsp20 \\adjustright \\par}" << endl; };
void RtfwriteRuler_emboss() { t << "{\\pard\\widctlpar\\brdrb\\brdremboss\\brdrw15\\brsp20 \\adjustright \\par}" << endl; }; void rtfwriteRuler_emboss() { t << "{\\pard\\widctlpar\\brdrb\\brdremboss\\brdrw15\\brsp20 \\adjustright \\par}" << endl; };
void RtfwriteRuler_thick() { t << "{\\pard\\widctlpar\\brdrb\\brdrs\\brdrw75\\brsp20 \\adjustright \\par}" << endl; }; void rtfwriteRuler_thick() { t << "{\\pard\\widctlpar\\brdrb\\brdrs\\brdrw75\\brsp20 \\adjustright \\par}" << endl; };
void RtfwriteRuler_thin() { t << "{\\pard\\widctlpar\\brdrb\\brdrs\\brdrw5\\brsp20 \\adjustright \\par}" << endl; }; void rtfwriteRuler_thin() { t << "{\\pard\\widctlpar\\brdrb\\brdrs\\brdrw5\\brsp20 \\adjustright \\par}" << endl; };
void WriteRTFReference(const char *label); void writeRTFReference(const char *label);
char *getMultiByte(int c); char *getMultiByte(int c);
}; };
......
This diff is collapsed.
/******************************************************************************
*
*
*
*
* Copyright (C) 1997-2002 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
* granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details.
*
* Documents produced by Doxygen are derivative works derived from the
* input used in their production; they are not affected by this license.
*
*/
#ifndef RTFSTYLE_H
#define RTFSTYLE_H
#include "qtbc.h"
#include <qregexp.h>
#include <qdict.h>
extern QCString rtf_title;
extern QCString rtf_subject;
extern QCString rtf_comments;
extern QCString rtf_company;
extern QCString rtf_logoFilename;
extern QCString rtf_author;
extern QCString rtf_manager;
extern QCString rtf_documentType;
extern QCString rtf_documentId;
extern QCString rtf_keywords;
struct RTFListItemInfo
{
bool isEnum;
int number;
};
const int indentLevels = 10;
extern RTFListItemInfo listItemInfo[indentLevels];
struct Rtf_Style_Default
{
const char *name;
const char *reference;
const char *definition;
};
extern char rtf_Style_Reset[];
extern Rtf_Style_Default rtf_Style_Default[];
struct StyleData
{
// elements of this type are stored in dictionary Rtf_Style
//
// to define a tag in the header reference + definition is required
// to use a tag in the body of the document only reference is required
unsigned index; // index in style-sheet, i.e. number in s-clause
char* reference; // everything required to apply the style
char* definition; // aditional tags like \snext and style name
StyleData(const char* reference, const char* definition);
~StyleData();
bool setStyle(const char* s, const char* styleName);
static const QRegExp s_clause;
};
extern QDict<StyleData> rtf_Style;
void loadExtensions(const char *name);
void loadStylesheet(const char *name, QDict<StyleData>& dict);
#endif
...@@ -282,6 +282,12 @@ static void addSection() ...@@ -282,6 +282,12 @@ static void addSection()
{ {
//printf("New section pageName=%s label=%s title=%s\n", //printf("New section pageName=%s label=%s title=%s\n",
// current->name.data(),sectionLabel.data(),sectionTitle.data()); // current->name.data(),sectionLabel.data(),sectionTitle.data());
if (current->name.isEmpty() || current->section != Entry::PAGEDOC_SEC)
{
warn(yyFileName,yyLineNr,"Warning: found section or anchor with label `%s' "
"outside of \\page context!\n",sectionLabel.data());
return;
}
if (sectionLabel.isEmpty()) return; if (sectionLabel.isEmpty()) return;
if (Doxygen::sectionDict.find(sectionLabel)==0) if (Doxygen::sectionDict.find(sectionLabel)==0)
{ {
...@@ -3343,7 +3349,9 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -3343,7 +3349,9 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
current->name = yytext; current->name = yytext;
newDocState(); newDocState();
} }
<NameSpaceDocArg1>"\\"{B}*"\n" { yyLineNr++; } <NameSpaceDocArg1>"\\"{B}*"\n" {
yyLineNr++;
}
<NameSpaceDocArg1>"\n" { <NameSpaceDocArg1>"\n" {
warn(yyFileName,yyLineNr, warn(yyFileName,yyLineNr,
"Warning: missing argument after " "Warning: missing argument after "
...@@ -3355,7 +3363,9 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -3355,7 +3363,9 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
current->name = yytext; current->name = yytext;
newDocState(); newDocState();
} }
<PackageDocArg1>"\\"{B}*"\n" { yyLineNr++; } <PackageDocArg1>"\\"{B}*"\n" {
yyLineNr++;
}
<PackageDocArg1>"\n" { <PackageDocArg1>"\n" {
warn(yyFileName,yyLineNr, warn(yyFileName,yyLineNr,
"Warning: missing argument after " "Warning: missing argument after "
...@@ -3376,7 +3386,9 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -3376,7 +3386,9 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
prependScope(); prependScope();
BEGIN( ClassDocArg2 ); BEGIN( ClassDocArg2 );
} }
<ClassDocArg1>"\\"{B}*"\n" { yyLineNr++; } <ClassDocArg1>"\\"{B}*"\n" {
yyLineNr++;
}
<ClassDocArg1>"\n" { <ClassDocArg1>"\n" {
warn(yyFileName,yyLineNr, warn(yyFileName,yyLineNr,
"Warning: missing argument after " "Warning: missing argument after "
...@@ -3394,7 +3406,8 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -3394,7 +3406,8 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
current->name=current->name.left(current->name.length()-5); current->name=current->name.left(current->name.length()-5);
BEGIN(GroupDocArg2); BEGIN(GroupDocArg2);
} }
<GroupDocArg1>"\\"{B}*"\n" { yyLineNr++; } <GroupDocArg1>"\\"{B}*"\n" { yyLineNr++;
}
<GroupDocArg1>"\n" { <GroupDocArg1>"\n" {
warn(yyFileName,yyLineNr, warn(yyFileName,yyLineNr,
"Warning: missing group name after %s", "Warning: missing group name after %s",
...@@ -3408,7 +3421,8 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -3408,7 +3421,8 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
yyLineNr--; yyLineNr--;
unput('/');unput('*');unput('\n'); unput('/');unput('*');unput('\n');
} }
<GroupDocArg2>"\\"{B}*"\n" { yyLineNr++; } <GroupDocArg2>"\\"{B}*"\n" { yyLineNr++;
}
<GroupDocArg2>[^\n\*]+ { <GroupDocArg2>[^\n\*]+ {
current->type += yytext; current->type += yytext;
current->type = current->type.stripWhiteSpace(); current->type = current->type.stripWhiteSpace();
...@@ -3428,7 +3442,8 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -3428,7 +3442,8 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
current->includeFile = stripQuotes(yytext); current->includeFile = stripQuotes(yytext);
BEGIN( ClassDocArg3 ); BEGIN( ClassDocArg3 );
} }
<ClassDocArg2>"\\"{B}*"\n" { yyLineNr++; } <ClassDocArg2>"\\"{B}*"\n" { yyLineNr++;
}
<ClassDocArg2>"\n" { yyLineNr++; <ClassDocArg2>"\n" { yyLineNr++;
newDocState(); newDocState();
} }
...@@ -3437,7 +3452,8 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -3437,7 +3452,8 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
current->includeName = yytext; current->includeName = yytext;
newDocState(); newDocState();
} }
<ClassDocArg3>"\\"{B}*"\n" { yyLineNr++; } <ClassDocArg3>"\\"{B}*"\n" { yyLineNr++;
}
<ClassDocArg3>"\n" { yyLineNr++; <ClassDocArg3>"\n" { yyLineNr++;
newDocState(); newDocState();
} }
...@@ -3445,7 +3461,8 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -3445,7 +3461,8 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
current->name = stripQuotes(yytext); current->name = stripQuotes(yytext);
newDocState(); newDocState();
} }
<FileDocArg1>"\\"{B}*"\n" { yyLineNr++; } <FileDocArg1>"\\"{B}*"\n" { yyLineNr++;
}
<FileDocArg1>"\n" { <FileDocArg1>"\n" {
current->name = yyFileName; current->name = yyFileName;
yyLineNr++; yyLineNr++;
...@@ -3455,7 +3472,9 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -3455,7 +3472,9 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
current->name = stripQuotes(yytext); current->name = stripQuotes(yytext);
BEGIN( PageDocArg2 ); BEGIN( PageDocArg2 );
} }
<PageDocArg1>"\\"{B}*"\n" { yyLineNr++; } <PageDocArg1>"\\"{B}*"\n" { yyLineNr++;
current->doc+="\n";
}
<PageDocArg1>"\n" { <PageDocArg1>"\n" {
warn(yyFileName,yyLineNr, warn(yyFileName,yyLineNr,
"Warning: missing argument after " "Warning: missing argument after "
...@@ -3476,11 +3495,14 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -3476,11 +3495,14 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
prependScope(); prependScope();
newDocState(); newDocState();
} }
<EnumDocArg1>"\\"{B}*"\n" { yyLineNr++; } <EnumDocArg1>"\\"{B}*"\n" { yyLineNr++;
current->doc+="\n";
}
<EnumDocArg1>"\n" { <EnumDocArg1>"\n" {
warn(yyFileName,yyLineNr, warn(yyFileName,yyLineNr,
"Warning: missing argument after \\enum." "Warning: missing argument after \\enum."
); );
current->doc+="\n";
yyLineNr++; yyLineNr++;
BEGIN( Doc ); BEGIN( Doc );
} }
...@@ -3504,6 +3526,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -3504,6 +3526,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
} }
<GroupHeader>\n { <GroupHeader>\n {
yyLineNr++; yyLineNr++;
current->doc+="\n";
//printf("Found memberGroup=`%s'\n",memberGroupHeader.data()); //printf("Found memberGroup=`%s'\n",memberGroupHeader.data());
startGroupInDoc(); startGroupInDoc();
newDocState(); newDocState();
......
This diff is collapsed.
...@@ -190,7 +190,7 @@ int getScopeFragment(const QCString &s,int p,int *l); ...@@ -190,7 +190,7 @@ int getScopeFragment(const QCString &s,int p,int *l);
int filterCRLF(char *buf,int len); int filterCRLF(char *buf,int len);
void addRefItem(const QList<ListItemInfo> *sli,const char *prefix, void addRefItem(const QList<ListItemInfo> *sli,const char *prefix,
const char *name,const char *title,const char *args=0); const char *name,const char *title,const char *args=0);
void addRelatedPage(const char *name,const QCString &ptitle, PageInfo *addRelatedPage(const char *name,const QCString &ptitle,
const QCString &doc,QList<QCString> *anchors, const QCString &doc,QList<QCString> *anchors,
const char *fileName,int startLine, const char *fileName,int startLine,
const QList<ListItemInfo> *sli, const QList<ListItemInfo> *sli,
...@@ -201,6 +201,7 @@ QCString escapeCharsInString(const char *name,bool allowDots); ...@@ -201,6 +201,7 @@ QCString escapeCharsInString(const char *name,bool allowDots);
void addGroupListToTitle(OutputList &ol,Definition *d); void addGroupListToTitle(OutputList &ol,Definition *d);
void filterLatexString(QTextStream &t,const char *str, void filterLatexString(QTextStream &t,const char *str,
bool insideTabbing=FALSE,bool insidePre=FALSE); bool insideTabbing=FALSE,bool insidePre=FALSE);
QCString rtfFormatBmkStr(const char *name);
#endif #endif
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment