Commit e6060ed2 authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-1.4.6-20060115

parent 01b177fe
DOXYGEN Version 1.4.6 DOXYGEN Version 1.4.6-20060115
Please read the installation section of the manual Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions. (http://www.doxygen.org/install.html) for instructions.
-------- --------
Dimitri van Heesch (30 December 2005) Dimitri van Heesch (15 January 2006)
DOXYGEN Version 1.4.6 DOXYGEN Version 1.4.6_20060115
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) (30 December 2005) Dimitri van Heesch (dimitri@stack.nl) (15 January 2006)
...@@ -20,7 +20,7 @@ doxygen_version_minor=4 ...@@ -20,7 +20,7 @@ doxygen_version_minor=4
doxygen_version_revision=6 doxygen_version_revision=6
#NOTE: Setting version_mmn to "NO" will omit mmn info from the package. #NOTE: Setting version_mmn to "NO" will omit mmn info from the package.
doxygen_version_mmn=NO doxygen_version_mmn=20060115
bin_dirs=`echo $PATH | sed -e "s/:/ /g"` bin_dirs=`echo $PATH | sed -e "s/:/ /g"`
...@@ -319,7 +319,7 @@ echo "using $f_make" ...@@ -319,7 +319,7 @@ echo "using $f_make"
echo -n " Checking for GNU install tool... " echo -n " Checking for GNU install tool... "
if test "$f_insttool" = NO; then if test "$f_insttool" = NO; then
install_names="ginstall install" install_names="ginstall install"
install_dirs="/usr/bin /usr/local/bin /bin /sbin $bin_dirs" install_dirs="/usr/bin /usr/local/bin /bin /sbin /usr/ucb $bin_dirs"
install_prog=NO install_prog=NO
install_found=NO install_found=NO
for i in $install_names; do for i in $install_names; do
......
...@@ -225,13 +225,14 @@ void ClassDef::internalInsertMember(MemberDef *md, ...@@ -225,13 +225,14 @@ void ClassDef::internalInsertMember(MemberDef *md,
//printf("adding %s::%s\n",name().data(),md->name().data()); //printf("adding %s::%s\n",name().data(),md->name().data());
if (!isReference()) if (!isReference())
{ {
static bool sortBriefDocs = Config_getBool("SORT_BRIEF_DOCS");
/********************************************/ /********************************************/
/* insert member in the declaration section */ /* insert member in the declaration section */
/********************************************/ /********************************************/
if (md->isRelated() && if (md->isRelated() &&
(Config_getBool("EXTRACT_PRIVATE") || prot!=Private)) (Config_getBool("EXTRACT_PRIVATE") || prot!=Private))
{ {
if (Config_getBool("SORT_BRIEF_DOCS")) if (sortBriefDocs)
related.inSort(md); related.inSort(md);
else else
related.append(md); related.append(md);
...@@ -239,7 +240,7 @@ void ClassDef::internalInsertMember(MemberDef *md, ...@@ -239,7 +240,7 @@ void ClassDef::internalInsertMember(MemberDef *md,
} }
else if (md->isFriend()) else if (md->isFriend())
{ {
if (Config_getBool("SORT_BRIEF_DOCS")) if (sortBriefDocs)
friends.inSort(md); friends.inSort(md);
else else
friends.append(md); friends.append(md);
...@@ -250,28 +251,28 @@ void ClassDef::internalInsertMember(MemberDef *md, ...@@ -250,28 +251,28 @@ void ClassDef::internalInsertMember(MemberDef *md,
switch (md->memberType()) switch (md->memberType())
{ {
case MemberDef::Signal: // Qt specific case MemberDef::Signal: // Qt specific
if (Config_getBool("SORT_BRIEF_DOCS")) if (sortBriefDocs)
signals.inSort(md); signals.inSort(md);
else else
signals.append(md); signals.append(md);
md->setSectionList(this,&signals); md->setSectionList(this,&signals);
break; break;
case MemberDef::DCOP: // KDE2 specific case MemberDef::DCOP: // KDE2 specific
if (Config_getBool("SORT_BRIEF_DOCS")) if (sortBriefDocs)
dcopMethods.inSort(md); dcopMethods.inSort(md);
else else
dcopMethods.append(md); dcopMethods.append(md);
md->setSectionList(this,&dcopMethods); md->setSectionList(this,&dcopMethods);
break; break;
case MemberDef::Property: case MemberDef::Property:
if (Config_getBool("SORT_BRIEF_DOCS")) if (sortBriefDocs)
properties.inSort(md); properties.inSort(md);
else else
properties.append(md); properties.append(md);
md->setSectionList(this,&properties); md->setSectionList(this,&properties);
break; break;
case MemberDef::Event: case MemberDef::Event:
if (Config_getBool("SORT_BRIEF_DOCS")) if (sortBriefDocs)
events.inSort(md); events.inSort(md);
else else
events.append(md); events.append(md);
...@@ -282,7 +283,7 @@ void ClassDef::internalInsertMember(MemberDef *md, ...@@ -282,7 +283,7 @@ void ClassDef::internalInsertMember(MemberDef *md,
{ {
case Protected: case Protected:
case Package: // slots in packages are not possible! case Package: // slots in packages are not possible!
if (Config_getBool("SORT_BRIEF_DOCS")) if (sortBriefDocs)
proSlots.inSort(md); proSlots.inSort(md);
else else
proSlots.append(md); proSlots.append(md);
...@@ -290,14 +291,14 @@ void ClassDef::internalInsertMember(MemberDef *md, ...@@ -290,14 +291,14 @@ void ClassDef::internalInsertMember(MemberDef *md,
break; break;
break; break;
case Public: case Public:
if (Config_getBool("SORT_BRIEF_DOCS")) if (sortBriefDocs)
pubSlots.inSort(md); pubSlots.inSort(md);
else else
pubSlots.append(md); pubSlots.append(md);
md->setSectionList(this,&pubSlots); md->setSectionList(this,&pubSlots);
break; break;
case Private: case Private:
if (Config_getBool("SORT_BRIEF_DOCS")) if (sortBriefDocs)
priSlots.inSort(md); priSlots.inSort(md);
else else
priSlots.append(md); priSlots.append(md);
...@@ -313,28 +314,28 @@ void ClassDef::internalInsertMember(MemberDef *md, ...@@ -313,28 +314,28 @@ void ClassDef::internalInsertMember(MemberDef *md,
switch (prot) switch (prot)
{ {
case Protected: case Protected:
if (Config_getBool("SORT_BRIEF_DOCS")) if (sortBriefDocs)
proStaticAttribs.inSort(md); proStaticAttribs.inSort(md);
else else
proStaticAttribs.append(md); proStaticAttribs.append(md);
md->setSectionList(this,&proStaticAttribs); md->setSectionList(this,&proStaticAttribs);
break; break;
case Package: case Package:
if (Config_getBool("SORT_BRIEF_DOCS")) if (sortBriefDocs)
pacStaticAttribs.inSort(md); pacStaticAttribs.inSort(md);
else else
pacStaticAttribs.append(md); pacStaticAttribs.append(md);
md->setSectionList(this,&pacStaticAttribs); md->setSectionList(this,&pacStaticAttribs);
break; break;
case Public: case Public:
if (Config_getBool("SORT_BRIEF_DOCS")) if (sortBriefDocs)
pubStaticAttribs.inSort(md); pubStaticAttribs.inSort(md);
else else
pubStaticAttribs.append(md); pubStaticAttribs.append(md);
md->setSectionList(this,&pubStaticAttribs); md->setSectionList(this,&pubStaticAttribs);
break; break;
case Private: case Private:
if (Config_getBool("SORT_BRIEF_DOCS")) if (sortBriefDocs)
priStaticAttribs.inSort(md); priStaticAttribs.inSort(md);
else else
priStaticAttribs.append(md); priStaticAttribs.append(md);
...@@ -347,28 +348,28 @@ void ClassDef::internalInsertMember(MemberDef *md, ...@@ -347,28 +348,28 @@ void ClassDef::internalInsertMember(MemberDef *md,
switch (prot) switch (prot)
{ {
case Protected: case Protected:
if (Config_getBool("SORT_BRIEF_DOCS")) if (sortBriefDocs)
proStaticMethods.inSort(md); proStaticMethods.inSort(md);
else else
proStaticMethods.append(md); proStaticMethods.append(md);
md->setSectionList(this,&proStaticMethods); md->setSectionList(this,&proStaticMethods);
break; break;
case Package: case Package:
if (Config_getBool("SORT_BRIEF_DOCS")) if (sortBriefDocs)
pacStaticMethods.inSort(md); pacStaticMethods.inSort(md);
else else
pacStaticMethods.append(md); pacStaticMethods.append(md);
md->setSectionList(this,&pacStaticMethods); md->setSectionList(this,&pacStaticMethods);
break; break;
case Public: case Public:
if (Config_getBool("SORT_BRIEF_DOCS")) if (sortBriefDocs)
pubStaticMethods.inSort(md); pubStaticMethods.inSort(md);
else else
pubStaticMethods.append(md); pubStaticMethods.append(md);
md->setSectionList(this,&pubStaticMethods); md->setSectionList(this,&pubStaticMethods);
break; break;
case Private: case Private:
if (Config_getBool("SORT_BRIEF_DOCS")) if (sortBriefDocs)
priStaticMethods.inSort(md); priStaticMethods.inSort(md);
else else
priStaticMethods.append(md); priStaticMethods.append(md);
...@@ -384,28 +385,28 @@ void ClassDef::internalInsertMember(MemberDef *md, ...@@ -384,28 +385,28 @@ void ClassDef::internalInsertMember(MemberDef *md,
switch (prot) switch (prot)
{ {
case Protected: case Protected:
if (Config_getBool("SORT_BRIEF_DOCS")) if (sortBriefDocs)
proAttribs.inSort(md); proAttribs.inSort(md);
else else
proAttribs.append(md); proAttribs.append(md);
md->setSectionList(this,&proAttribs); md->setSectionList(this,&proAttribs);
break; break;
case Package: case Package:
if (Config_getBool("SORT_BRIEF_DOCS")) if (sortBriefDocs)
pacAttribs.inSort(md); pacAttribs.inSort(md);
else else
pacAttribs.append(md); pacAttribs.append(md);
md->setSectionList(this,&pacAttribs); md->setSectionList(this,&pacAttribs);
break; break;
case Public: case Public:
if (Config_getBool("SORT_BRIEF_DOCS")) if (sortBriefDocs)
pubAttribs.inSort(md); pubAttribs.inSort(md);
else else
pubAttribs.append(md); pubAttribs.append(md);
md->setSectionList(this,&pubAttribs); md->setSectionList(this,&pubAttribs);
break; break;
case Private: case Private:
if (Config_getBool("SORT_BRIEF_DOCS")) if (sortBriefDocs)
priAttribs.inSort(md); priAttribs.inSort(md);
else else
priAttribs.append(md); priAttribs.append(md);
...@@ -418,28 +419,28 @@ void ClassDef::internalInsertMember(MemberDef *md, ...@@ -418,28 +419,28 @@ void ClassDef::internalInsertMember(MemberDef *md,
switch (prot) switch (prot)
{ {
case Protected: case Protected:
if (Config_getBool("SORT_BRIEF_DOCS")) if (sortBriefDocs)
proTypes.inSort(md); proTypes.inSort(md);
else else
proTypes.append(md); proTypes.append(md);
md->setSectionList(this,&proTypes); md->setSectionList(this,&proTypes);
break; break;
case Package: case Package:
if (Config_getBool("SORT_BRIEF_DOCS")) if (sortBriefDocs)
pacTypes.inSort(md); pacTypes.inSort(md);
else else
pacTypes.append(md); pacTypes.append(md);
md->setSectionList(this,&pacTypes); md->setSectionList(this,&pacTypes);
break; break;
case Public: case Public:
if (Config_getBool("SORT_BRIEF_DOCS")) if (sortBriefDocs)
pubTypes.inSort(md); pubTypes.inSort(md);
else else
pubTypes.append(md); pubTypes.append(md);
md->setSectionList(this,&pubTypes); md->setSectionList(this,&pubTypes);
break; break;
case Private: case Private:
if (Config_getBool("SORT_BRIEF_DOCS")) if (sortBriefDocs)
priTypes.inSort(md); priTypes.inSort(md);
else else
priTypes.append(md); priTypes.append(md);
...@@ -452,28 +453,28 @@ void ClassDef::internalInsertMember(MemberDef *md, ...@@ -452,28 +453,28 @@ void ClassDef::internalInsertMember(MemberDef *md,
switch (prot) switch (prot)
{ {
case Protected: case Protected:
if (Config_getBool("SORT_BRIEF_DOCS")) if (sortBriefDocs)
proMethods.inSort(md); proMethods.inSort(md);
else else
proMethods.append(md); proMethods.append(md);
md->setSectionList(this,&proMethods); md->setSectionList(this,&proMethods);
break; break;
case Package: case Package:
if (Config_getBool("SORT_BRIEF_DOCS")) if (sortBriefDocs)
pacMethods.inSort(md); pacMethods.inSort(md);
else else
pacMethods.append(md); pacMethods.append(md);
md->setSectionList(this,&pacMethods); md->setSectionList(this,&pacMethods);
break; break;
case Public: case Public:
if (Config_getBool("SORT_BRIEF_DOCS")) if (sortBriefDocs)
pubMethods.inSort(md); pubMethods.inSort(md);
else else
pubMethods.append(md); pubMethods.append(md);
md->setSectionList(this,&pubMethods); md->setSectionList(this,&pubMethods);
break; break;
case Private: case Private:
if (Config_getBool("SORT_BRIEF_DOCS")) if (sortBriefDocs)
priMethods.inSort(md); priMethods.inSort(md);
else else
priMethods.append(md); priMethods.append(md);
......
...@@ -35,10 +35,11 @@ static int compItems(void *item1,void *item2) ...@@ -35,10 +35,11 @@ static int compItems(void *item1,void *item2)
ClassDef *c1=(ClassDef *)item1; ClassDef *c1=(ClassDef *)item1;
ClassDef *c2=(ClassDef *)item2; ClassDef *c2=(ClassDef *)item2;
static bool b = Config_getBool("SORT_BY_SCOPE_NAME"); static bool b = Config_getBool("SORT_BY_SCOPE_NAME");
//printf("compItems: %d %s<->%s\n",b,c1->qualifiedName().data(),c2->qualifiedName().data());
if (b) if (b)
{ {
return stricmp(c1->qualifiedName(), return stricmp(c1->name(),
c2->qualifiedName()); c2->name());
} }
else else
{ {
......
...@@ -59,6 +59,7 @@ static int g_condCtx; ...@@ -59,6 +59,7 @@ static int g_condCtx;
static QStack<CondCtx> g_condStack; static QStack<CondCtx> g_condStack;
static QCString g_blockName; static QCString g_blockName;
static int g_lastCommentContext; static int g_lastCommentContext;
static bool g_inSpecialComment;
static void replaceCommentMarker(const char *s,int len) static void replaceCommentMarker(const char *s,int len)
{ {
...@@ -271,6 +272,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'")) ...@@ -271,6 +272,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'"))
%x SComment %x SComment
%x CComment %x CComment
%x Verbatim %x Verbatim
%x VerbatimCode
%x ReadLine %x ReadLine
%x CondLine %x CondLine
...@@ -300,6 +302,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'")) ...@@ -300,6 +302,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'"))
copyToOutput("/**",3); copyToOutput("/**",3);
//copyToOutput(yytext+i,yyleng-i); //copyToOutput(yytext+i,yyleng-i);
replaceAliases(yytext+i,yyleng-i); replaceAliases(yytext+i,yyleng-i);
g_inSpecialComment=TRUE;
BEGIN(SComment); BEGIN(SComment);
} }
<Scan>"//##Documentation".*/\n { /* Start of Rational Rose ANSI C++ comment block */ <Scan>"//##Documentation".*/\n { /* Start of Rational Rose ANSI C++ comment block */
...@@ -311,7 +314,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'")) ...@@ -311,7 +314,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'"))
replaceAliases(yytext+i,yyleng-i); replaceAliases(yytext+i,yyleng-i);
BEGIN(SComment); BEGIN(SComment);
} }
<Scan>"//"/.*\n { /* one line C++ comment */ <Scan>"//"/.*\n { /* one line C++ comment */
copyToOutput(yytext,yyleng); copyToOutput(yytext,yyleng);
g_readLineCtx=YY_START; g_readLineCtx=YY_START;
BEGIN(ReadLine); BEGIN(ReadLine);
...@@ -320,7 +323,13 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'")) ...@@ -320,7 +323,13 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'"))
copyToOutput(yytext,yyleng); copyToOutput(yytext,yyleng);
BEGIN(CComment); BEGIN(CComment);
} }
<CComment,ReadLine>[\\@]("verbatim"|"latexonly"|"htmlonly"|"xmlonly"|"rtfonly"|"manonly"|"dot"|"code"|"f$"|"f["|"f{"[a-z]*)/[^a-z_A-Z0-9] { /* start of a verbatim block */ <CComment,ReadLine>[\\@]("dot"|"code")/[^a-z_A-Z0-9] { /* start of a verbatim block */
copyToOutput(yytext,yyleng);
g_lastCommentContext = YY_START;
g_blockName=&yytext[1];
BEGIN(VerbatimCode);
}
<CComment,ReadLine>[\\@]("verbatim"|"latexonly"|"htmlonly"|"xmlonly"|"rtfonly"|"manonly"|"f$"|"f["|"f{"[a-z]*)/[^a-z_A-Z0-9] { /* start of a verbatim block */
copyToOutput(yytext,yyleng); copyToOutput(yytext,yyleng);
if (yytext[2]=='[') if (yytext[2]=='[')
{ {
...@@ -351,13 +360,26 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'")) ...@@ -351,13 +360,26 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'"))
BEGIN(g_lastCommentContext); BEGIN(g_lastCommentContext);
} }
} }
<Verbatim>[^@\\\n]* { /* any character not a backslash or new line */ <VerbatimCode>[\\@]("enddot"|"endcode") { /* end of verbatim block */
copyToOutput(yytext,yyleng);
if (&yytext[4]==g_blockName)
{
BEGIN(g_lastCommentContext);
}
}
<VerbatimCode>^"//"[\!\/]? { /* skip leading comments */
if (!g_inSpecialComment)
{
copyToOutput(yytext,yyleng);
}
}
<Verbatim,VerbatimCode>[^@\/\\\n]* { /* any character not a backslash or new line */
copyToOutput(yytext,yyleng); copyToOutput(yytext,yyleng);
} }
<Verbatim>\n { /* new line in verbatim block */ <Verbatim,VerbatimCode>\n { /* new line in verbatim block */
copyToOutput(yytext,yyleng); copyToOutput(yytext,yyleng);
} }
<Verbatim>. { /* any other character */ <Verbatim,VerbatimCode>. { /* any other character */
copyToOutput(yytext,yyleng); copyToOutput(yytext,yyleng);
} }
<SkipString>\\. { /* escaped character in string */ <SkipString>\\. { /* escaped character in string */
...@@ -432,6 +454,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'")) ...@@ -432,6 +454,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'"))
<SComment>\n { /* end of special comment */ <SComment>\n { /* end of special comment */
copyToOutput(" */",3); copyToOutput(" */",3);
copyToOutput(yytext,yyleng); copyToOutput(yytext,yyleng);
g_inSpecialComment=FALSE;
BEGIN(Scan); BEGIN(Scan);
} }
<ReadLine>[^\\@\n]*/\n { <ReadLine>[^\\@\n]*/\n {
......
...@@ -48,7 +48,7 @@ static int yyread(char *buf,int max_size) ...@@ -48,7 +48,7 @@ static int yyread(char *buf,int max_size)
%} %}
CONSTSUFFIX ([uU][lL]?[lL]?)|(lL][lL]?[uU]?) CONSTSUFFIX ([uU][lL]?[lL]?)|([lL][lL]?[uU]?)
%option nounput %option nounput
......
...@@ -702,10 +702,19 @@ QCString Definition::qualifiedName() ...@@ -702,10 +702,19 @@ QCString Definition::qualifiedName()
{ {
m_qualifiedName = m_outerScope->qualifiedName()+"::"+m_localName; m_qualifiedName = m_outerScope->qualifiedName()+"::"+m_localName;
} }
//printf("end Definition::qualifiedName()=%s\n",qualifiedName.data()); //printf("end Definition::qualifiedName()=%s\n",m_qualifiedName.data());
return m_qualifiedName; return m_qualifiedName;
}; };
void Definition::setOuterScope(Definition *d)
{
if (m_outerScope!=d)
{
m_qualifiedName.resize(0); // flush cached scope name
m_outerScope = d;
}
}
QCString Definition::localName() const QCString Definition::localName() const
{ {
return m_localName; return m_localName;
......
...@@ -206,7 +206,7 @@ class Definition ...@@ -206,7 +206,7 @@ class Definition
virtual Definition *findInnerCompound(const char *name); virtual Definition *findInnerCompound(const char *name);
virtual Definition *getOuterScope() const { return m_outerScope; } virtual Definition *getOuterScope() const { return m_outerScope; }
virtual void addInnerCompound(Definition *d); virtual void addInnerCompound(Definition *d);
virtual void setOuterScope(Definition *d) { m_outerScope = d; } virtual void setOuterScope(Definition *d);
MemberSDict *getReferencesMembers() const { return m_sourceRefsDict; } MemberSDict *getReferencesMembers() const { return m_sourceRefsDict; }
MemberSDict *getReferencedByMembers() const { return m_sourceRefByDict; } MemberSDict *getReferencedByMembers() const { return m_sourceRefByDict; }
......
...@@ -1015,7 +1015,11 @@ reparsetoken: ...@@ -1015,7 +1015,11 @@ reparsetoken:
children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Italic,FALSE)); children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Italic,FALSE));
if (tok!=TK_WORD) children.append(new DocWhiteSpace(parent," ")); if (tok!=TK_WORD) children.append(new DocWhiteSpace(parent," "));
if (tok==TK_NEWPARA) goto handlepara; if (tok==TK_NEWPARA) goto handlepara;
else if (tok==TK_WORD || tok==TK_HTMLTAG) goto reparsetoken; else if (tok==TK_WORD || tok==TK_HTMLTAG)
{
DBG(("CMD_EMPHASIS: reparsing command %s\n",g_token->name.data()));
goto reparsetoken;
}
} }
break; break;
case CMD_BOLD: case CMD_BOLD:
...@@ -1025,7 +1029,11 @@ reparsetoken: ...@@ -1025,7 +1029,11 @@ reparsetoken:
children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Bold,FALSE)); children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Bold,FALSE));
if (tok!=TK_WORD) children.append(new DocWhiteSpace(parent," ")); if (tok!=TK_WORD) children.append(new DocWhiteSpace(parent," "));
if (tok==TK_NEWPARA) goto handlepara; if (tok==TK_NEWPARA) goto handlepara;
else if (tok==TK_WORD || tok==TK_HTMLTAG) goto reparsetoken; else if (tok==TK_WORD || tok==TK_HTMLTAG)
{
DBG(("CMD_BOLD: reparsing command %s\n",g_token->name.data()));
goto reparsetoken;
}
} }
break; break;
case CMD_CODE: case CMD_CODE:
...@@ -1035,7 +1043,11 @@ reparsetoken: ...@@ -1035,7 +1043,11 @@ reparsetoken:
children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Code,FALSE)); children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Code,FALSE));
if (tok!=TK_WORD) children.append(new DocWhiteSpace(parent," ")); if (tok!=TK_WORD) children.append(new DocWhiteSpace(parent," "));
if (tok==TK_NEWPARA) goto handlepara; if (tok==TK_NEWPARA) goto handlepara;
else if (tok==TK_WORD || tok==TK_HTMLTAG) goto reparsetoken; else if (tok==TK_WORD || tok==TK_HTMLTAG)
{
DBG(("CMD_CODE: reparsing command %s\n",g_token->name.data()));
goto reparsetoken;
}
} }
break; break;
case CMD_HTMLONLY: case CMD_HTMLONLY:
...@@ -5164,8 +5176,9 @@ reparsetoken: ...@@ -5164,8 +5176,9 @@ reparsetoken:
// the command ended normally, keep scanning for new tokens. // the command ended normally, keep scanning for new tokens.
retval = 0; retval = 0;
} }
else if (retval==TK_LISTITEM || retval==TK_ENDLIST || retval==TK_WORD) else if (retval>0 && retval<RetVal_OK)
{ {
// the command ended with a new command, reparse this token
tok = retval; tok = retval;
goto reparsetoken; goto reparsetoken;
} }
......
...@@ -1186,12 +1186,16 @@ static void resolveClassNestingRelations() ...@@ -1186,12 +1186,16 @@ static void resolveClassNestingRelations()
// anyway, so we can at least relate scopes properly. // anyway, so we can at least relate scopes properly.
{ {
Definition *d = buildScopeFromQualifiedName(cd->name(),cd->name().contains("::")); Definition *d = buildScopeFromQualifiedName(cd->name(),cd->name().contains("::"));
d->addInnerCompound(cd); if (d!=cd) // avoid recursion in case of redundant scopes, i.e: namespace N { class N::C {}; }
cd->setOuterScope(d); // for this case doxygen assumes the exitance of a namespace N::N in which C is to be found!
warn(cd->getDefFileName(),cd->getDefLine(), {
"Warning: Internal inconsistency: scope for class %s not " d->addInnerCompound(cd);
"found!\n",cd->name().data() cd->setOuterScope(d);
); warn(cd->getDefFileName(),cd->getDefLine(),
"Warning: Internal inconsistency: scope for class %s not "
"found!\n",cd->name().data()
);
}
} }
else else
{ {
...@@ -1309,7 +1313,7 @@ static void buildNamespaceList(Entry *root) ...@@ -1309,7 +1313,7 @@ static void buildNamespaceList(Entry *root)
// also add namespace to the correct structural context // also add namespace to the correct structural context
Definition *d = findScopeFromQualifiedName(Doxygen::globalScope,fullName); Definition *d = findScopeFromQualifiedName(Doxygen::globalScope,fullName);
//printf("adding namespace %s to context %s\n",nd->name().data(),d?d->name().data():"none"); //printf("adding namespace %s to context %s\n",nd->name().data(),d?d->name().data():"<none>");
if (d==0) // we didn't find anything, create the scope artificially if (d==0) // we didn't find anything, create the scope artificially
// anyway, so we can at least relate scopes properly. // anyway, so we can at least relate scopes properly.
{ {
...@@ -1337,6 +1341,25 @@ static void buildNamespaceList(Entry *root) ...@@ -1337,6 +1341,25 @@ static void buildNamespaceList(Entry *root)
//---------------------------------------------------------------------- //----------------------------------------------------------------------
static NamespaceDef *findUsedNamespace(const NamespaceSDict *unl,
const QCString &name)
{
NamespaceDef *usingNd =0;
if (unl)
{
//printf("Found namespace dict %d\n",unl->count());
NamespaceSDict::Iterator unli(*unl);
NamespaceDef *und;
for (unli.toFirst();(und=unli.current());++unli)
{
QCString uScope=und->name()+"::";
usingNd = getResolvedNamespace(uScope+name);
//printf("Also trying with scope=`%s' usingNd=%p\n",(uScope+name).data(),usingNd);
}
}
return usingNd;
}
static void findUsingDirectives(Entry *root) static void findUsingDirectives(Entry *root)
{ {
if (root->section==Entry::USINGDIR_SEC) if (root->section==Entry::USINGDIR_SEC)
...@@ -1366,7 +1389,7 @@ static void findUsingDirectives(Entry *root) ...@@ -1366,7 +1389,7 @@ static void findUsingDirectives(Entry *root)
// find the scope in which the `using' namespace is defined by prepending // find the scope in which the `using' namespace is defined by prepending
// the possible scopes in which the using statement was found, starting // the possible scopes in which the using statement was found, starting
// with the most inner scope and going to the most outer scope (i.e. // with the most inner scope and going to the most outer scope (i.e.
// file scope). // file scope).
int scopeOffset = nsName.length(); int scopeOffset = nsName.length();
do do
{ {
...@@ -1384,7 +1407,34 @@ static void findUsingDirectives(Entry *root) ...@@ -1384,7 +1407,34 @@ static void findUsingDirectives(Entry *root)
} }
} while (scopeOffset>=0 && usingNd==0); } while (scopeOffset>=0 && usingNd==0);
//printf("%s -> %p\n",name.data(),usingNd); if (usingNd==0 && nd) // not found, try used namespaces in this scope
// or in one of the parent namespace scopes
{
NamespaceDef *pnd = nd;
while (pnd && usingNd==0)
{
// also try with one of the used namespaces found earlier
usingNd = findUsedNamespace(pnd->getUsedNamespaces(),name);
// goto the parent
Definition *s = pnd->getOuterScope();
if (s && s->definitionType()==Definition::TypeNamespace)
{
pnd = (NamespaceDef*)s;
}
else
{
pnd = 0;
}
}
}
if (usingNd==0 && fd) // still nothing, also try used namespace in the
// global scope
{
usingNd = findUsedNamespace(fd->getUsedNamespaces(),name);
}
//printf("%s -> %s\n",name.data(),usingNd?usingNd->name().data():"<none>");
// add the namespace the correct scope // add the namespace the correct scope
if (usingNd) if (usingNd)
...@@ -1911,9 +1961,10 @@ static MemberDef *addVariableToFile( ...@@ -1911,9 +1961,10 @@ static MemberDef *addVariableToFile(
) )
// variable already in the scope // variable already in the scope
{ {
if (! // not a php array if (md->getFileDef() &&
(getLanguageFromFileName(md->getFileDef()->name())==SrcLangExt_PHP) && ! // not a php array
(md->argsString()!=root->args && root->args.find('[')!=-1) (getLanguageFromFileName(md->getFileDef()->name())==SrcLangExt_PHP) &&
(md->argsString()!=root->args && root->args.find('[')!=-1)
) )
// not a php array variable // not a php array variable
{ {
...@@ -8852,6 +8903,7 @@ void parseInput() ...@@ -8852,6 +8903,7 @@ void parseInput()
Doxygen::memberNameSDict.sort(); Doxygen::memberNameSDict.sort();
Doxygen::functionNameSDict.sort(); Doxygen::functionNameSDict.sort();
Doxygen::hiddenClasses.sort(); Doxygen::hiddenClasses.sort();
printf("Sorting %d classes\n",Doxygen::classSDict.count());
Doxygen::classSDict.sort(); Doxygen::classSDict.sort();
msg("Freeing entry tree\n"); msg("Freeing entry tree\n");
......
...@@ -80,7 +80,7 @@ A.codeRef:visited { font-weight: normal; color: #0000FF} ...@@ -80,7 +80,7 @@ A.codeRef:visited { font-weight: normal; color: #0000FF}
A:hover { text-decoration: none; background-color: #f2f2ff } A:hover { text-decoration: none; background-color: #f2f2ff }
DL.el { margin-left: -1cm } DL.el { margin-left: -1cm }
.fragment { .fragment {
font-family: Fixed, monospace; font-family: monospace, fixed;
font-size: 95%; font-size: 95%;
} }
PRE.fragment { PRE.fragment {
...@@ -96,14 +96,7 @@ PRE.fragment { ...@@ -96,14 +96,7 @@ PRE.fragment {
padding-bottom: 4px; padding-bottom: 4px;
} }
DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
TD.md { background-color: #F4F4FB; font-weight: bold; }
TD.mdPrefix {
background-color: #F4F4FB;
color: #606060;
font-size: 80%;
}
TD.mdname1 { background-color: #F4F4FB; font-weight: bold; color: #602020; }
TD.mdname { background-color: #F4F4FB; font-weight: bold; color: #602020; width: 600px; }
DIV.groupHeader { DIV.groupHeader {
margin-left: 16px; margin-left: 16px;
margin-top: 12px; margin-top: 12px;
...@@ -156,13 +149,6 @@ SPAN.comment { color: #800000 } ...@@ -156,13 +149,6 @@ SPAN.comment { color: #800000 }
SPAN.preprocessor { color: #806020 } SPAN.preprocessor { color: #806020 }
SPAN.stringliteral { color: #002080 } SPAN.stringliteral { color: #002080 }
SPAN.charliteral { color: #008080 } SPAN.charliteral { color: #008080 }
.mdTable {
border: 1px solid #868686;
background-color: #F4F4FB;
}
.mdRow {
padding: 8px 10px;
}
.mdescLeft { .mdescLeft {
padding: 0px 8px 4px 8px; padding: 0px 8px 4px 8px;
font-size: 80%; font-size: 80%;
...@@ -308,3 +294,51 @@ HR { height: 1px; ...@@ -308,3 +294,51 @@ HR { height: 1px;
border-top: 1px solid black; border-top: 1px solid black;
} }
/* Style for detailed member documentation */
.memtemplate {
font-size: 80%;
color: #606060;
font-weight: normal;
}
.memnav {
background-color: #e8eef2;
border: 1px solid #84b0c7;
text-align: center;
margin: 2px;
margin-right: 15px;
padding: 2px;
}
.memitem {
width: 100%;
background-color: #eef3f5;
border-width: 1px;
border-style: solid;
border-color: #dedeee;
-moz-border-radius: 8px 8px 8px 8px;
}
.memname {
white-space: nowrap;
}
.memdoc{
padding-left: 10px;
}
.memproto {
background-color: #d5e1e8;
width: 100%;
border-width: 1px;
border-style: solid;
border-color: #84b0c7;
font-weight: bold;
-moz-border-radius: 8px 8px 8px 8px;
}
.paramkey {
text-align: right;
}
.paramtype {
white-space: nowrap;
}
.paramname {
color: #602020;
font-style: italic;
}
/* End Styling for detailed member documentation */
...@@ -80,7 +80,7 @@ ...@@ -80,7 +80,7 @@
"A:hover { text-decoration: none; background-color: #f2f2ff }\n" "A:hover { text-decoration: none; background-color: #f2f2ff }\n"
"DL.el { margin-left: -1cm }\n" "DL.el { margin-left: -1cm }\n"
".fragment {\n" ".fragment {\n"
" font-family: Fixed, monospace;\n" " font-family: monospace, fixed;\n"
" font-size: 95%;\n" " font-size: 95%;\n"
"}\n" "}\n"
"PRE.fragment {\n" "PRE.fragment {\n"
...@@ -96,14 +96,7 @@ ...@@ -96,14 +96,7 @@
" padding-bottom: 4px;\n" " padding-bottom: 4px;\n"
"}\n" "}\n"
"DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }\n" "DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }\n"
"TD.md { background-color: #F4F4FB; font-weight: bold; }\n" "\n"
"TD.mdPrefix {\n"
" background-color: #F4F4FB;\n"
" color: #606060;\n"
" font-size: 80%;\n"
"}\n"
"TD.mdname1 { background-color: #F4F4FB; font-weight: bold; color: #602020; }\n"
"TD.mdname { background-color: #F4F4FB; font-weight: bold; color: #602020; width: 600px; }\n"
"DIV.groupHeader {\n" "DIV.groupHeader {\n"
" margin-left: 16px;\n" " margin-left: 16px;\n"
" margin-top: 12px;\n" " margin-top: 12px;\n"
...@@ -156,13 +149,6 @@ ...@@ -156,13 +149,6 @@
"SPAN.preprocessor { color: #806020 }\n" "SPAN.preprocessor { color: #806020 }\n"
"SPAN.stringliteral { color: #002080 }\n" "SPAN.stringliteral { color: #002080 }\n"
"SPAN.charliteral { color: #008080 }\n" "SPAN.charliteral { color: #008080 }\n"
".mdTable {\n"
" border: 1px solid #868686;\n"
" background-color: #F4F4FB;\n"
"}\n"
".mdRow {\n"
" padding: 8px 10px;\n"
"}\n"
".mdescLeft {\n" ".mdescLeft {\n"
" padding: 0px 8px 4px 8px;\n" " padding: 0px 8px 4px 8px;\n"
" font-size: 80%;\n" " font-size: 80%;\n"
...@@ -308,3 +294,51 @@ ...@@ -308,3 +294,51 @@
" border-top: 1px solid black;\n" " border-top: 1px solid black;\n"
"}\n" "}\n"
"\n" "\n"
"/* Style for detailed member documentation */\n"
".memtemplate {\n"
" font-size: 80%;\n"
" color: #606060;\n"
" font-weight: normal;\n"
"} \n"
".memnav { \n"
" background-color: #e8eef2;\n"
" border: 1px solid #84b0c7;\n"
" text-align: center;\n"
" margin: 2px;\n"
" margin-right: 15px;\n"
" padding: 2px;\n"
"}\n"
".memitem {\n"
" width: 100%;\n"
" background-color: #eef3f5;\n"
" border-width: 1px;\n"
" border-style: solid;\n"
" border-color: #dedeee;\n"
" -moz-border-radius: 8px 8px 8px 8px;\n"
"}\n"
".memname {\n"
" white-space: nowrap;\n"
"}\n"
".memdoc{\n"
" padding-left: 10px;\n"
"}\n"
".memproto {\n"
" background-color: #d5e1e8;\n"
" width: 100%;\n"
" border-width: 1px;\n"
" border-style: solid;\n"
" border-color: #84b0c7;\n"
" font-weight: bold;\n"
" -moz-border-radius: 8px 8px 8px 8px;\n"
"}\n"
".paramkey {\n"
" text-align: right;\n"
"}\n"
".paramtype {\n"
" white-space: nowrap;\n"
"}\n"
".paramname {\n"
" color: #602020;\n"
" font-style: italic;\n"
"}\n"
"/* End Styling for detailed member documentation */\n"
...@@ -1235,21 +1235,39 @@ void HtmlGenerator::endIndexValue(const char *,bool) ...@@ -1235,21 +1235,39 @@ void HtmlGenerator::endIndexValue(const char *,bool)
t << "</td></tr>" << endl; t << "</td></tr>" << endl;
} }
void HtmlGenerator::startMemberDocList()
{
DBG_HTML(t << "<!-- startMemberDocList -->" << endl;)
t << "<table class=\"memlist\">" << endl;
t << " <tr>" << endl;
t << " <td>" << endl;
}
void HtmlGenerator::endMemberDocList()
{
DBG_HTML(t << "<!-- endMemberDocList -->" << endl;)
t << " </td>" << endl;
t << " </tr>" << endl;
t << "</table>" << endl;
}
void HtmlGenerator::startMemberDoc(const char *,const char *,const char *,const char *) void HtmlGenerator::startMemberDoc(const char *,const char *,const char *,const char *)
{ {
DBG_HTML(t << "<!-- startMemberDoc -->" << endl;) DBG_HTML(t << "<!-- startMemberDoc -->" << endl;)
t << "<p>" << endl; t << "<p>" << endl;
t << "<table class=\"mdTable\" cellpadding=\"2\" cellspacing=\"0\">" << endl;
t << "<table class=\"memitem\">" << endl;
t << " <tr>" << endl; t << " <tr>" << endl;
t << " <td class=\"mdRow\">" << endl; t << " <td>" << endl;
t << " <table cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" << endl; t << " <table class=\"memproto\">" << endl;
} }
void HtmlGenerator::startMemberDocPrefixItem() void HtmlGenerator::startMemberDocPrefixItem()
{ {
DBG_HTML(t << "<!-- startMemberDocPrefixItem -->" << endl;) DBG_HTML(t << "<!-- startMemberDocPrefixItem -->" << endl;)
t << " <tr>" << endl; t << " <tr>" << endl;
t << " <td class=\"mdPrefix\" colspan=\"4\">" << endl; t << " <td class=\"memtemplate\" colspan=\"5\">";
} }
void HtmlGenerator::endMemberDocPrefixItem() void HtmlGenerator::endMemberDocPrefixItem()
...@@ -1259,13 +1277,11 @@ void HtmlGenerator::endMemberDocPrefixItem() ...@@ -1259,13 +1277,11 @@ void HtmlGenerator::endMemberDocPrefixItem()
t << " </tr>" << endl; t << " </tr>" << endl;
} }
void HtmlGenerator::startMemberDocName(bool align) void HtmlGenerator::startMemberDocName(bool /*align*/)
{ {
DBG_HTML(t << "<!-- startMemberDocName -->" << endl;) DBG_HTML(t << "<!-- startMemberDocName -->" << endl;)
t << " <tr>" << endl; t << " <tr>" << endl;
t << " <td class=\"md\" nowrap valign=\"top\""; t << " <td class=\"memname\">";
if (align) t << " align=\"right\"";
t << ">";
} }
void HtmlGenerator::endMemberDocName() void HtmlGenerator::endMemberDocName()
...@@ -1277,11 +1293,8 @@ void HtmlGenerator::endMemberDocName() ...@@ -1277,11 +1293,8 @@ void HtmlGenerator::endMemberDocName()
void HtmlGenerator::startParameterList(bool openBracket) void HtmlGenerator::startParameterList(bool openBracket)
{ {
DBG_HTML(t << "<!-- startParameterList -->" << endl;) DBG_HTML(t << "<!-- startParameterList -->" << endl;)
t << " <td class=\"md\" valign=\"top\">"; t << " <td>";
if (openBracket) if (openBracket) t << "(";
{
t << "(&nbsp;";
}
t << "</td>" << endl; t << "</td>" << endl;
} }
...@@ -1290,17 +1303,17 @@ void HtmlGenerator::startParameterType(bool first,const char *key) ...@@ -1290,17 +1303,17 @@ void HtmlGenerator::startParameterType(bool first,const char *key)
if (first) if (first)
{ {
DBG_HTML(t << "<!-- startFirstParameterType -->" << endl;) DBG_HTML(t << "<!-- startFirstParameterType -->" << endl;)
t << " <td class=\"md\" nowrap valign=\"top\">"; t << " <td class=\"paramtype\">";
} }
else else
{ {
DBG_HTML(t << "<!-- startParameterType -->" << endl;) DBG_HTML(t << "<!-- startParameterType -->" << endl;)
t << " <tr>" << endl; t << " <tr>" << endl;
t << " <td class=\"md\" nowrap align=\"right\">"; t << " <td class=\"paramkey\">";
if (key) t << key; if (key) t << key;
t << "</td>" << endl; t << "</td>" << endl;
t << " <td class=\"md\"></td>" << endl; t << " <td></td>" << endl;
t << " <td class=\"md\" nowrap>"; t << " <td class=\"paramtype\">";
} }
} }
...@@ -1310,15 +1323,10 @@ void HtmlGenerator::endParameterType() ...@@ -1310,15 +1323,10 @@ void HtmlGenerator::endParameterType()
t << "&nbsp;</td>" << endl; t << "&nbsp;</td>" << endl;
} }
void HtmlGenerator::startParameterName(bool oneArgOnly) void HtmlGenerator::startParameterName(bool /*oneArgOnly*/)
{ {
DBG_HTML(t << "<!-- startParameterName -->" << endl;) DBG_HTML(t << "<!-- startParameterName -->" << endl;)
t << " <td class=\"mdname"; t << " <td class=\"paramname\">";
if (oneArgOnly)
{
t << "1\" valign=\"top";
}
t << "\" nowrap>"; //&nbsp;";
} }
void HtmlGenerator::endParameterName(bool last,bool emptyList,bool closeBracket) void HtmlGenerator::endParameterName(bool last,bool emptyList,bool closeBracket)
...@@ -1329,21 +1337,21 @@ void HtmlGenerator::endParameterName(bool last,bool emptyList,bool closeBracket) ...@@ -1329,21 +1337,21 @@ void HtmlGenerator::endParameterName(bool last,bool emptyList,bool closeBracket)
if (emptyList) if (emptyList)
{ {
t << " </td>" << endl; t << " </td>" << endl;
t << " <td class=\"md\" valign=\"top\">"; t << " <td>";
if (closeBracket) t << "&nbsp;)"; if (closeBracket) t << "&nbsp;)";
t << "&nbsp;</td>" << endl; t << "&nbsp;</td>" << endl;
t << " <td class=\"md\" nowrap>"; t << " <td width=\"100%\">";
} }
else else
{ {
t << "</td>" << endl; t << "</td><td>&nbsp;</td>" << endl;
t << " </tr>" << endl; t << " </tr>" << endl;
t << " <tr>" << endl; t << " <tr>" << endl;
t << " <td class=\"md\"></td>" << endl; t << " <td></td>" << endl;
t << " <td class=\"md\">"; t << " <td>";
if (closeBracket) t << ")"; if (closeBracket) t << ")";
t << "&nbsp;</td>" << endl; t << "</td>" << endl;
t << " <td class=\"md\" colspan=\"2\">"; t << " <td></td><td></td><td width=\"100%\">";
} }
} }
else else
...@@ -1370,7 +1378,6 @@ void HtmlGenerator::endMemberDoc(bool hasArgs) ...@@ -1370,7 +1378,6 @@ void HtmlGenerator::endMemberDoc(bool hasArgs)
t << " </table>" << endl; t << " </table>" << endl;
t << " </td>" << endl; t << " </td>" << endl;
t << " </tr>" << endl; t << " </tr>" << endl;
t << "</table>" << endl;
} }
void HtmlGenerator::startDotGraph() void HtmlGenerator::startDotGraph()
...@@ -1461,17 +1468,15 @@ void HtmlGenerator::startIndent() ...@@ -1461,17 +1468,15 @@ void HtmlGenerator::startIndent()
// It's back to abusing tables :-( // It's back to abusing tables :-(
//t << "<div class=\"in\">" << endl; //t << "<div class=\"in\">" << endl;
DBG_HTML(t << "<!-- startIndent -->" << endl;)
t << "<table cellspacing=\"5\" cellpadding=\"0\" border=\"0\">\n" t << " <tr>\n"
" <tr>\n" " <td >\n";
" <td>\n"
" &nbsp;\n"
" </td>\n"
" <td>\n";
} }
void HtmlGenerator::endIndent() void HtmlGenerator::endIndent()
{ {
DBG_HTML(t << "<!-- endIndent -->" << endl;)
t << " </td>\n" t << " </td>\n"
" </tr>\n" " </tr>\n"
"</table>\n"; "</table>\n";
......
...@@ -95,6 +95,8 @@ class HtmlGenerator : public OutputGenerator ...@@ -95,6 +95,8 @@ class HtmlGenerator : public OutputGenerator
void endMemberHeader(); void endMemberHeader();
void startMemberSubtitle(); void startMemberSubtitle();
void endMemberSubtitle(); void endMemberSubtitle();
void startMemberDocList();
void endMemberDocList();
void startMemberList(); void startMemberList();
void endMemberList(); void endMemberList();
void startAnonTypeScope(int) {} void startAnonTypeScope(int) {}
......
...@@ -93,6 +93,8 @@ class LatexGenerator : public OutputGenerator ...@@ -93,6 +93,8 @@ class LatexGenerator : public OutputGenerator
void endMemberHeader(); void endMemberHeader();
void startMemberSubtitle() {} void startMemberSubtitle() {}
void endMemberSubtitle() {} void endMemberSubtitle() {}
void startMemberDocList() {}
void endMemberDocList() {}
void startMemberList(); void startMemberList();
void endMemberList(); void endMemberList();
void startAnonTypeScope(int); void startAnonTypeScope(int);
......
...@@ -98,6 +98,8 @@ class ManGenerator : public OutputGenerator ...@@ -98,6 +98,8 @@ class ManGenerator : public OutputGenerator
void startMemberSubtitle() {} void startMemberSubtitle() {}
void endMemberSubtitle() {} void endMemberSubtitle() {}
void writeListItem(); void writeListItem();
void startMemberDocList() {}
void endMemberDocList() {}
void startMemberList(); void startMemberList();
void endMemberList(); void endMemberList();
void startAnonTypeScope(int); void startAnonTypeScope(int);
......
...@@ -1307,8 +1307,15 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ...@@ -1307,8 +1307,15 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
HtmlHelp *htmlHelp = 0; HtmlHelp *htmlHelp = 0;
if (hasHtmlHelp) if (hasHtmlHelp)
{ {
htmlHelp = HtmlHelp::getInstance(); if (isEnumerate() && name().at(0)=='@')
htmlHelp->addIndexItem(ciname,name(),cfiname,cfname,memAnchor); {
// don't add to index
}
else
{
htmlHelp = HtmlHelp::getInstance();
htmlHelp->addIndexItem(ciname,name(),cfiname,cfname,memAnchor);
}
} }
// get member name // get member name
...@@ -2249,6 +2256,10 @@ bool MemberDef::isConstructor() const ...@@ -2249,6 +2256,10 @@ bool MemberDef::isConstructor() const
{ {
return name()=="this"; return name()=="this";
} }
else if (fileDef && getLanguageFromFileName(fileDef->name())==SrcLangExt_PHP)
{ // for PHP
return name()=="__construct";
}
else // for other languages else // for other languages
{ {
QCString locName = classDef->localName(); QCString locName = classDef->localName();
...@@ -2273,6 +2284,10 @@ bool MemberDef::isDestructor() const ...@@ -2273,6 +2284,10 @@ bool MemberDef::isDestructor() const
{ {
return name()=="~this"; return name()=="~this";
} }
else if (fileDef && getLanguageFromFileName(fileDef->name())==SrcLangExt_PHP)
{ // for PHP
return name()=="__destruct";
}
else // other languages else // other languages
{ {
return name().find('~')!=-1 && name().find("operator")==-1; return name().find('~')!=-1 && name().find("operator")==-1;
......
...@@ -369,6 +369,7 @@ void MemberList::writeDocumentation(OutputList &ol, ...@@ -369,6 +369,7 @@ void MemberList::writeDocumentation(OutputList &ol,
ol.parseText(title); ol.parseText(title);
ol.endGroupHeader(); ol.endGroupHeader();
} }
ol.startMemberDocList();
MemberListIterator mli(*this); MemberListIterator mli(*this);
MemberDef *md; MemberDef *md;
...@@ -386,6 +387,7 @@ void MemberList::writeDocumentation(OutputList &ol, ...@@ -386,6 +387,7 @@ void MemberList::writeDocumentation(OutputList &ol,
mg->writeDocumentation(ol,scopeName,container); mg->writeDocumentation(ol,scopeName,container);
} }
} }
ol.endMemberDocList();
} }
void MemberList::writeDocumentationPage(OutputList &ol, void MemberList::writeDocumentationPage(OutputList &ol,
......
...@@ -151,44 +151,45 @@ void NamespaceDef::insertMember(MemberDef *md) ...@@ -151,44 +151,45 @@ void NamespaceDef::insertMember(MemberDef *md)
{ {
//memList->append(md); //memList->append(md);
allMemberList.append(md); allMemberList.append(md);
static bool sortBriefDocs=Config_getBool("SORT_BRIEF_DOCS");
switch(md->memberType()) switch(md->memberType())
{ {
case MemberDef::Variable: case MemberDef::Variable:
if (Config_getBool("SORT_BRIEF_DOCS")) if (sortBriefDocs)
decVarMembers.inSort(md); decVarMembers.inSort(md);
else else
decVarMembers.append(md); decVarMembers.append(md);
if (Config_getBool("SORT_MEMBER_DOCS")) if (sortBriefDocs)
docVarMembers.inSort(md); docVarMembers.inSort(md);
else else
docVarMembers.append(md); docVarMembers.append(md);
break; break;
case MemberDef::Function: case MemberDef::Function:
if (Config_getBool("SORT_BRIEF_DOCS")) if (sortBriefDocs)
decFuncMembers.inSort(md); decFuncMembers.inSort(md);
else else
decFuncMembers.append(md); decFuncMembers.append(md);
if (Config_getBool("SORT_MEMBER_DOCS")) if (sortBriefDocs)
docFuncMembers.inSort(md); docFuncMembers.inSort(md);
else else
docFuncMembers.append(md); docFuncMembers.append(md);
break; break;
case MemberDef::Typedef: case MemberDef::Typedef:
if (Config_getBool("SORT_BRIEF_DOCS")) if (sortBriefDocs)
decTypedefMembers.inSort(md); decTypedefMembers.inSort(md);
else else
decTypedefMembers.append(md); decTypedefMembers.append(md);
if (Config_getBool("SORT_MEMBER_DOCS")) if (sortBriefDocs)
docTypedefMembers.inSort(md); docTypedefMembers.inSort(md);
else else
docTypedefMembers.append(md); docTypedefMembers.append(md);
break; break;
case MemberDef::Enumeration: case MemberDef::Enumeration:
if (Config_getBool("SORT_BRIEF_DOCS")) if (sortBriefDocs)
decEnumMembers.inSort(md); decEnumMembers.inSort(md);
else else
decEnumMembers.append(md); decEnumMembers.append(md);
if (Config_getBool("SORT_MEMBER_DOCS")) if (sortBriefDocs)
docEnumMembers.inSort(md); docEnumMembers.inSort(md);
else else
docEnumMembers.append(md); docEnumMembers.append(md);
...@@ -196,21 +197,21 @@ void NamespaceDef::insertMember(MemberDef *md) ...@@ -196,21 +197,21 @@ void NamespaceDef::insertMember(MemberDef *md)
case MemberDef::EnumValue: case MemberDef::EnumValue:
break; break;
case MemberDef::Prototype: case MemberDef::Prototype:
if (Config_getBool("SORT_BRIEF_DOCS")) if (sortBriefDocs)
decProtoMembers.inSort(md); decProtoMembers.inSort(md);
else else
decProtoMembers.append(md); decProtoMembers.append(md);
if (Config_getBool("SORT_MEMBER_DOCS")) if (sortBriefDocs)
docProtoMembers.inSort(md); docProtoMembers.inSort(md);
else else
docProtoMembers.append(md); docProtoMembers.append(md);
break; break;
case MemberDef::Define: case MemberDef::Define:
if (Config_getBool("SORT_BRIEF_DOCS")) if (sortBriefDocs)
decDefineMembers.inSort(md); decDefineMembers.inSort(md);
else else
decDefineMembers.append(md); decDefineMembers.append(md);
if (Config_getBool("SORT_MEMBER_DOCS")) if (sortBriefDocs)
docDefineMembers.inSort(md); docDefineMembers.inSort(md);
else else
docDefineMembers.append(md); docDefineMembers.append(md);
......
...@@ -306,8 +306,10 @@ class OutputGenerator : public BaseOutputDocInterface ...@@ -306,8 +306,10 @@ class OutputGenerator : public BaseOutputDocInterface
virtual void endMemberHeader() = 0; virtual void endMemberHeader() = 0;
virtual void startMemberSubtitle() = 0; virtual void startMemberSubtitle() = 0;
virtual void endMemberSubtitle() = 0; virtual void endMemberSubtitle() = 0;
virtual void startMemberList() = 0; virtual void startMemberDocList() = 0;
virtual void endMemberList() = 0; virtual void endMemberDocList() = 0;
virtual void startMemberList() = 0;
virtual void endMemberList() = 0;
virtual void startAnonTypeScope(int) = 0; virtual void startAnonTypeScope(int) = 0;
virtual void endAnonTypeScope(int) = 0; virtual void endAnonTypeScope(int) = 0;
virtual void startMemberItem(int) = 0; virtual void startMemberItem(int) = 0;
......
...@@ -162,6 +162,10 @@ class OutputList : public OutputDocInterface ...@@ -162,6 +162,10 @@ class OutputList : public OutputDocInterface
{ forall(&OutputGenerator::startMemberSubtitle); } { forall(&OutputGenerator::startMemberSubtitle); }
void endMemberSubtitle() void endMemberSubtitle()
{ forall(&OutputGenerator::endMemberSubtitle); } { forall(&OutputGenerator::endMemberSubtitle); }
void startMemberDocList()
{ forall(&OutputGenerator::startMemberDocList); }
void endMemberDocList()
{ forall(&OutputGenerator::endMemberDocList); }
void startMemberList() void startMemberList()
{ forall(&OutputGenerator::startMemberList); } { forall(&OutputGenerator::startMemberList); }
void endMemberList() void endMemberList()
......
...@@ -101,6 +101,8 @@ class RTFGenerator : public OutputGenerator ...@@ -101,6 +101,8 @@ class RTFGenerator : public OutputGenerator
void endMemberHeader() { endGroupHeader(); } void endMemberHeader() { endGroupHeader(); }
void startMemberSubtitle(); void startMemberSubtitle();
void endMemberSubtitle(); void endMemberSubtitle();
void startMemberDocList() {}
void endMemberDocList() {}
void startMemberList(); void startMemberList();
void endMemberList(); void endMemberList();
void startAnonTypeScope(int) {} void startAnonTypeScope(int) {}
......
/***************************************************************************** /*****************************************************************************
* *
* $Id$ *
* *
* Copyright (C) 1997-2005 by Dimitri van Heesch. * Copyright (C) 1997-2005 by Dimitri van Heesch.
* *
...@@ -5674,6 +5674,7 @@ SrcLangExt getLanguageFromFileName(const QCString fileName) ...@@ -5674,6 +5674,7 @@ SrcLangExt getLanguageFromFileName(const QCString fileName)
extLookup.insert(".d", (void*)SrcLangExt_D); extLookup.insert(".d", (void*)SrcLangExt_D);
extLookup.insert(".php", (void*)SrcLangExt_PHP); extLookup.insert(".php", (void*)SrcLangExt_PHP);
extLookup.insert(".php4", (void*)SrcLangExt_PHP); extLookup.insert(".php4", (void*)SrcLangExt_PHP);
extLookup.insert(".php5", (void*)SrcLangExt_PHP);
extLookup.insert(".inc", (void*)SrcLangExt_PHP); extLookup.insert(".inc", (void*)SrcLangExt_PHP);
extLookup.insert(".phtml", (void*)SrcLangExt_PHP); extLookup.insert(".phtml", (void*)SrcLangExt_PHP);
extLookup.insert(".m", (void*)SrcLangExt_ObjC); extLookup.insert(".m", (void*)SrcLangExt_ObjC);
......
...@@ -11,7 +11,7 @@ while (<FILE>) { ...@@ -11,7 +11,7 @@ while (<FILE>) {
$minor=$1 $minor=$1
} elsif (/doxygen_version_revision=(\d+)/) { } elsif (/doxygen_version_revision=(\d+)/) {
$revision=$1 $revision=$1
} elsif (/doxygen_version_mmn=(\w+)/) { } elsif (/doxygen_version_mmn=(\w+)/ && ($1 ne "NO")) {
$mmn=$1 $mmn=$1
} }
} }
......
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