diff options
-rw-r--r-- | INSTALL | 4 | ||||
-rw-r--r-- | README | 4 | ||||
-rwxr-xr-x | configure | 4 | ||||
-rw-r--r-- | src/classdef.cpp | 59 | ||||
-rw-r--r-- | src/classlist.cpp | 5 | ||||
-rw-r--r-- | src/commentcnv.l | 33 | ||||
-rw-r--r-- | src/constexp.l | 2 | ||||
-rw-r--r-- | src/definition.cpp | 11 | ||||
-rw-r--r-- | src/definition.h | 2 | ||||
-rw-r--r-- | src/docparser.cpp | 23 | ||||
-rw-r--r-- | src/doxygen.cpp | 76 | ||||
-rw-r--r-- | src/doxygen.css | 66 | ||||
-rw-r--r-- | src/doxygen_css.h | 66 | ||||
-rw-r--r-- | src/htmlgen.cpp | 81 | ||||
-rw-r--r-- | src/htmlgen.h | 2 | ||||
-rw-r--r-- | src/latexgen.h | 2 | ||||
-rw-r--r-- | src/mangen.h | 2 | ||||
-rw-r--r-- | src/memberdef.cpp | 19 | ||||
-rw-r--r-- | src/memberlist.cpp | 2 | ||||
-rw-r--r-- | src/namespacedef.cpp | 25 | ||||
-rw-r--r-- | src/outputgen.h | 6 | ||||
-rw-r--r-- | src/outputlist.h | 4 | ||||
-rw-r--r-- | src/rtfgen.h | 2 | ||||
-rw-r--r-- | src/util.cpp | 3 | ||||
-rw-r--r-- | wintools/version.pl | 2 |
25 files changed, 355 insertions, 150 deletions
@@ -1,7 +1,7 @@ -DOXYGEN Version 1.4.6 +DOXYGEN Version 1.4.6-20060115 Please read the installation section of the manual (http://www.doxygen.org/install.html) for instructions. -------- -Dimitri van Heesch (30 December 2005) +Dimitri van Heesch (15 January 2006) @@ -1,4 +1,4 @@ -DOXYGEN Version 1.4.6 +DOXYGEN Version 1.4.6_20060115 Please read INSTALL for compilation instructions. @@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives. 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 doxygen_version_revision=6 #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"` @@ -319,7 +319,7 @@ echo "using $f_make" echo -n " Checking for GNU install tool... " if test "$f_insttool" = NO; then 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_found=NO for i in $install_names; do diff --git a/src/classdef.cpp b/src/classdef.cpp index 99f09b5..332e6bf 100644 --- a/src/classdef.cpp +++ b/src/classdef.cpp @@ -225,13 +225,14 @@ void ClassDef::internalInsertMember(MemberDef *md, //printf("adding %s::%s\n",name().data(),md->name().data()); if (!isReference()) { + static bool sortBriefDocs = Config_getBool("SORT_BRIEF_DOCS"); /********************************************/ /* insert member in the declaration section */ /********************************************/ if (md->isRelated() && (Config_getBool("EXTRACT_PRIVATE") || prot!=Private)) { - if (Config_getBool("SORT_BRIEF_DOCS")) + if (sortBriefDocs) related.inSort(md); else related.append(md); @@ -239,7 +240,7 @@ void ClassDef::internalInsertMember(MemberDef *md, } else if (md->isFriend()) { - if (Config_getBool("SORT_BRIEF_DOCS")) + if (sortBriefDocs) friends.inSort(md); else friends.append(md); @@ -250,28 +251,28 @@ void ClassDef::internalInsertMember(MemberDef *md, switch (md->memberType()) { case MemberDef::Signal: // Qt specific - if (Config_getBool("SORT_BRIEF_DOCS")) + if (sortBriefDocs) signals.inSort(md); else signals.append(md); md->setSectionList(this,&signals); break; case MemberDef::DCOP: // KDE2 specific - if (Config_getBool("SORT_BRIEF_DOCS")) + if (sortBriefDocs) dcopMethods.inSort(md); else dcopMethods.append(md); md->setSectionList(this,&dcopMethods); break; case MemberDef::Property: - if (Config_getBool("SORT_BRIEF_DOCS")) + if (sortBriefDocs) properties.inSort(md); else properties.append(md); md->setSectionList(this,&properties); break; case MemberDef::Event: - if (Config_getBool("SORT_BRIEF_DOCS")) + if (sortBriefDocs) events.inSort(md); else events.append(md); @@ -282,7 +283,7 @@ void ClassDef::internalInsertMember(MemberDef *md, { case Protected: case Package: // slots in packages are not possible! - if (Config_getBool("SORT_BRIEF_DOCS")) + if (sortBriefDocs) proSlots.inSort(md); else proSlots.append(md); @@ -290,14 +291,14 @@ void ClassDef::internalInsertMember(MemberDef *md, break; break; case Public: - if (Config_getBool("SORT_BRIEF_DOCS")) + if (sortBriefDocs) pubSlots.inSort(md); else pubSlots.append(md); md->setSectionList(this,&pubSlots); break; case Private: - if (Config_getBool("SORT_BRIEF_DOCS")) + if (sortBriefDocs) priSlots.inSort(md); else priSlots.append(md); @@ -313,28 +314,28 @@ void ClassDef::internalInsertMember(MemberDef *md, switch (prot) { case Protected: - if (Config_getBool("SORT_BRIEF_DOCS")) + if (sortBriefDocs) proStaticAttribs.inSort(md); else proStaticAttribs.append(md); md->setSectionList(this,&proStaticAttribs); break; case Package: - if (Config_getBool("SORT_BRIEF_DOCS")) + if (sortBriefDocs) pacStaticAttribs.inSort(md); else pacStaticAttribs.append(md); md->setSectionList(this,&pacStaticAttribs); break; case Public: - if (Config_getBool("SORT_BRIEF_DOCS")) + if (sortBriefDocs) pubStaticAttribs.inSort(md); else pubStaticAttribs.append(md); md->setSectionList(this,&pubStaticAttribs); break; case Private: - if (Config_getBool("SORT_BRIEF_DOCS")) + if (sortBriefDocs) priStaticAttribs.inSort(md); else priStaticAttribs.append(md); @@ -347,28 +348,28 @@ void ClassDef::internalInsertMember(MemberDef *md, switch (prot) { case Protected: - if (Config_getBool("SORT_BRIEF_DOCS")) + if (sortBriefDocs) proStaticMethods.inSort(md); else proStaticMethods.append(md); md->setSectionList(this,&proStaticMethods); break; case Package: - if (Config_getBool("SORT_BRIEF_DOCS")) + if (sortBriefDocs) pacStaticMethods.inSort(md); else pacStaticMethods.append(md); md->setSectionList(this,&pacStaticMethods); break; case Public: - if (Config_getBool("SORT_BRIEF_DOCS")) + if (sortBriefDocs) pubStaticMethods.inSort(md); else pubStaticMethods.append(md); md->setSectionList(this,&pubStaticMethods); break; case Private: - if (Config_getBool("SORT_BRIEF_DOCS")) + if (sortBriefDocs) priStaticMethods.inSort(md); else priStaticMethods.append(md); @@ -384,28 +385,28 @@ void ClassDef::internalInsertMember(MemberDef *md, switch (prot) { case Protected: - if (Config_getBool("SORT_BRIEF_DOCS")) + if (sortBriefDocs) proAttribs.inSort(md); else proAttribs.append(md); md->setSectionList(this,&proAttribs); break; case Package: - if (Config_getBool("SORT_BRIEF_DOCS")) + if (sortBriefDocs) pacAttribs.inSort(md); else pacAttribs.append(md); md->setSectionList(this,&pacAttribs); break; case Public: - if (Config_getBool("SORT_BRIEF_DOCS")) + if (sortBriefDocs) pubAttribs.inSort(md); else pubAttribs.append(md); md->setSectionList(this,&pubAttribs); break; case Private: - if (Config_getBool("SORT_BRIEF_DOCS")) + if (sortBriefDocs) priAttribs.inSort(md); else priAttribs.append(md); @@ -418,28 +419,28 @@ void ClassDef::internalInsertMember(MemberDef *md, switch (prot) { case Protected: - if (Config_getBool("SORT_BRIEF_DOCS")) + if (sortBriefDocs) proTypes.inSort(md); else proTypes.append(md); md->setSectionList(this,&proTypes); break; case Package: - if (Config_getBool("SORT_BRIEF_DOCS")) + if (sortBriefDocs) pacTypes.inSort(md); else pacTypes.append(md); md->setSectionList(this,&pacTypes); break; case Public: - if (Config_getBool("SORT_BRIEF_DOCS")) + if (sortBriefDocs) pubTypes.inSort(md); else pubTypes.append(md); md->setSectionList(this,&pubTypes); break; case Private: - if (Config_getBool("SORT_BRIEF_DOCS")) + if (sortBriefDocs) priTypes.inSort(md); else priTypes.append(md); @@ -452,28 +453,28 @@ void ClassDef::internalInsertMember(MemberDef *md, switch (prot) { case Protected: - if (Config_getBool("SORT_BRIEF_DOCS")) + if (sortBriefDocs) proMethods.inSort(md); else proMethods.append(md); md->setSectionList(this,&proMethods); break; case Package: - if (Config_getBool("SORT_BRIEF_DOCS")) + if (sortBriefDocs) pacMethods.inSort(md); else pacMethods.append(md); md->setSectionList(this,&pacMethods); break; case Public: - if (Config_getBool("SORT_BRIEF_DOCS")) + if (sortBriefDocs) pubMethods.inSort(md); else pubMethods.append(md); md->setSectionList(this,&pubMethods); break; case Private: - if (Config_getBool("SORT_BRIEF_DOCS")) + if (sortBriefDocs) priMethods.inSort(md); else priMethods.append(md); diff --git a/src/classlist.cpp b/src/classlist.cpp index b0a1b7f..ef11d57 100644 --- a/src/classlist.cpp +++ b/src/classlist.cpp @@ -35,10 +35,11 @@ static int compItems(void *item1,void *item2) ClassDef *c1=(ClassDef *)item1; ClassDef *c2=(ClassDef *)item2; static bool b = Config_getBool("SORT_BY_SCOPE_NAME"); + //printf("compItems: %d %s<->%s\n",b,c1->qualifiedName().data(),c2->qualifiedName().data()); if (b) { - return stricmp(c1->qualifiedName(), - c2->qualifiedName()); + return stricmp(c1->name(), + c2->name()); } else { diff --git a/src/commentcnv.l b/src/commentcnv.l index ce217f9..c60a137 100644 --- a/src/commentcnv.l +++ b/src/commentcnv.l @@ -59,6 +59,7 @@ static int g_condCtx; static QStack<CondCtx> g_condStack; static QCString g_blockName; static int g_lastCommentContext; +static bool g_inSpecialComment; static void replaceCommentMarker(const char *s,int len) { @@ -271,6 +272,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'")) %x SComment %x CComment %x Verbatim +%x VerbatimCode %x ReadLine %x CondLine @@ -300,6 +302,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'")) copyToOutput("/**",3); //copyToOutput(yytext+i,yyleng-i); replaceAliases(yytext+i,yyleng-i); + g_inSpecialComment=TRUE; BEGIN(SComment); } <Scan>"//##Documentation".*/\n { /* Start of Rational Rose ANSI C++ comment block */ @@ -311,7 +314,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'")) replaceAliases(yytext+i,yyleng-i); BEGIN(SComment); } -<Scan>"//"/.*\n { /* one line C++ comment */ +<Scan>"//"/.*\n { /* one line C++ comment */ copyToOutput(yytext,yyleng); g_readLineCtx=YY_START; BEGIN(ReadLine); @@ -320,7 +323,13 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'")) copyToOutput(yytext,yyleng); 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); if (yytext[2]=='[') { @@ -351,13 +360,26 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'")) 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); } -<Verbatim>\n { /* new line in verbatim block */ +<Verbatim,VerbatimCode>\n { /* new line in verbatim block */ copyToOutput(yytext,yyleng); } -<Verbatim>. { /* any other character */ +<Verbatim,VerbatimCode>. { /* any other character */ copyToOutput(yytext,yyleng); } <SkipString>\\. { /* escaped character in string */ @@ -432,6 +454,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'")) <SComment>\n { /* end of special comment */ copyToOutput(" */",3); copyToOutput(yytext,yyleng); + g_inSpecialComment=FALSE; BEGIN(Scan); } <ReadLine>[^\\@\n]*/\n { diff --git a/src/constexp.l b/src/constexp.l index 1b97648..42319fb 100644 --- a/src/constexp.l +++ b/src/constexp.l @@ -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 diff --git a/src/definition.cpp b/src/definition.cpp index ed5a6c3..4842e28 100644 --- a/src/definition.cpp +++ b/src/definition.cpp @@ -702,10 +702,19 @@ QCString Definition::qualifiedName() { 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; }; +void Definition::setOuterScope(Definition *d) +{ + if (m_outerScope!=d) + { + m_qualifiedName.resize(0); // flush cached scope name + m_outerScope = d; + } +} + QCString Definition::localName() const { return m_localName; diff --git a/src/definition.h b/src/definition.h index 09d2cd0..9c360e6 100644 --- a/src/definition.h +++ b/src/definition.h @@ -206,7 +206,7 @@ class Definition virtual Definition *findInnerCompound(const char *name); virtual Definition *getOuterScope() const { return m_outerScope; } 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 *getReferencedByMembers() const { return m_sourceRefByDict; } diff --git a/src/docparser.cpp b/src/docparser.cpp index 8bac157..d727601 100644 --- a/src/docparser.cpp +++ b/src/docparser.cpp @@ -1015,7 +1015,11 @@ reparsetoken: children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Italic,FALSE)); if (tok!=TK_WORD) children.append(new DocWhiteSpace(parent," ")); 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; case CMD_BOLD: @@ -1025,7 +1029,11 @@ reparsetoken: children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Bold,FALSE)); if (tok!=TK_WORD) children.append(new DocWhiteSpace(parent," ")); 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; case CMD_CODE: @@ -1035,7 +1043,11 @@ reparsetoken: children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Code,FALSE)); if (tok!=TK_WORD) children.append(new DocWhiteSpace(parent," ")); 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; case CMD_HTMLONLY: @@ -5164,8 +5176,9 @@ reparsetoken: // the command ended normally, keep scanning for new tokens. 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; goto reparsetoken; } diff --git a/src/doxygen.cpp b/src/doxygen.cpp index e4ba2aa..9b5bb60 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -1186,12 +1186,16 @@ static void resolveClassNestingRelations() // anyway, so we can at least relate scopes properly. { Definition *d = buildScopeFromQualifiedName(cd->name(),cd->name().contains("::")); - d->addInnerCompound(cd); - cd->setOuterScope(d); - warn(cd->getDefFileName(),cd->getDefLine(), - "Warning: Internal inconsistency: scope for class %s not " - "found!\n",cd->name().data() - ); + if (d!=cd) // avoid recursion in case of redundant scopes, i.e: namespace N { class N::C {}; } + // for this case doxygen assumes the exitance of a namespace N::N in which C is to be found! + { + d->addInnerCompound(cd); + cd->setOuterScope(d); + warn(cd->getDefFileName(),cd->getDefLine(), + "Warning: Internal inconsistency: scope for class %s not " + "found!\n",cd->name().data() + ); + } } else { @@ -1309,7 +1313,7 @@ static void buildNamespaceList(Entry *root) // also add namespace to the correct structural context 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 // anyway, so we can at least relate scopes properly. { @@ -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) { if (root->section==Entry::USINGDIR_SEC) @@ -1366,7 +1389,7 @@ static void findUsingDirectives(Entry *root) // find the scope in which the `using' namespace is defined by prepending // 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. - // file scope). + // file scope). int scopeOffset = nsName.length(); do { @@ -1384,7 +1407,34 @@ static void findUsingDirectives(Entry *root) } } 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 if (usingNd) @@ -1911,9 +1961,10 @@ static MemberDef *addVariableToFile( ) // variable already in the scope { - if (! // not a php array - (getLanguageFromFileName(md->getFileDef()->name())==SrcLangExt_PHP) && - (md->argsString()!=root->args && root->args.find('[')!=-1) + if (md->getFileDef() && + ! // not a php array + (getLanguageFromFileName(md->getFileDef()->name())==SrcLangExt_PHP) && + (md->argsString()!=root->args && root->args.find('[')!=-1) ) // not a php array variable { @@ -8852,6 +8903,7 @@ void parseInput() Doxygen::memberNameSDict.sort(); Doxygen::functionNameSDict.sort(); Doxygen::hiddenClasses.sort(); + printf("Sorting %d classes\n",Doxygen::classSDict.count()); Doxygen::classSDict.sort(); msg("Freeing entry tree\n"); diff --git a/src/doxygen.css b/src/doxygen.css index 05615b2..1b47802 100644 --- a/src/doxygen.css +++ b/src/doxygen.css @@ -80,7 +80,7 @@ A.codeRef:visited { font-weight: normal; color: #0000FF} A:hover { text-decoration: none; background-color: #f2f2ff } DL.el { margin-left: -1cm } .fragment { - font-family: Fixed, monospace; + font-family: monospace, fixed; font-size: 95%; } PRE.fragment { @@ -96,14 +96,7 @@ PRE.fragment { padding-bottom: 4px; } 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 { margin-left: 16px; margin-top: 12px; @@ -156,13 +149,6 @@ SPAN.comment { color: #800000 } SPAN.preprocessor { color: #806020 } SPAN.stringliteral { color: #002080 } SPAN.charliteral { color: #008080 } -.mdTable { - border: 1px solid #868686; - background-color: #F4F4FB; -} -.mdRow { - padding: 8px 10px; -} .mdescLeft { padding: 0px 8px 4px 8px; font-size: 80%; @@ -308,3 +294,51 @@ HR { height: 1px; 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 */ diff --git a/src/doxygen_css.h b/src/doxygen_css.h index acb7fa6..8268b16 100644 --- a/src/doxygen_css.h +++ b/src/doxygen_css.h @@ -80,7 +80,7 @@ "A:hover { text-decoration: none; background-color: #f2f2ff }\n" "DL.el { margin-left: -1cm }\n" ".fragment {\n" -" font-family: Fixed, monospace;\n" +" font-family: monospace, fixed;\n" " font-size: 95%;\n" "}\n" "PRE.fragment {\n" @@ -96,14 +96,7 @@ " padding-bottom: 4px;\n" "}\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" -"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" +"\n" "DIV.groupHeader {\n" " margin-left: 16px;\n" " margin-top: 12px;\n" @@ -156,13 +149,6 @@ "SPAN.preprocessor { color: #806020 }\n" "SPAN.stringliteral { color: #002080 }\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" " padding: 0px 8px 4px 8px;\n" " font-size: 80%;\n" @@ -308,3 +294,51 @@ " border-top: 1px solid black;\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" diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp index 69aa87c..04d5a9f 100644 --- a/src/htmlgen.cpp +++ b/src/htmlgen.cpp @@ -1235,21 +1235,39 @@ void HtmlGenerator::endIndexValue(const char *,bool) 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 *) { DBG_HTML(t << "<!-- startMemberDoc -->" << endl;) t << "<p>" << endl; - t << "<table class=\"mdTable\" cellpadding=\"2\" cellspacing=\"0\">" << endl; + + t << "<table class=\"memitem\">" << endl; t << " <tr>" << endl; - t << " <td class=\"mdRow\">" << endl; - t << " <table cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" << endl; + t << " <td>" << endl; + t << " <table class=\"memproto\">" << endl; + } void HtmlGenerator::startMemberDocPrefixItem() { DBG_HTML(t << "<!-- startMemberDocPrefixItem -->" << endl;) t << " <tr>" << endl; - t << " <td class=\"mdPrefix\" colspan=\"4\">" << endl; + t << " <td class=\"memtemplate\" colspan=\"5\">"; } void HtmlGenerator::endMemberDocPrefixItem() @@ -1259,13 +1277,11 @@ void HtmlGenerator::endMemberDocPrefixItem() t << " </tr>" << endl; } -void HtmlGenerator::startMemberDocName(bool align) +void HtmlGenerator::startMemberDocName(bool /*align*/) { DBG_HTML(t << "<!-- startMemberDocName -->" << endl;) t << " <tr>" << endl; - t << " <td class=\"md\" nowrap valign=\"top\""; - if (align) t << " align=\"right\""; - t << ">"; + t << " <td class=\"memname\">"; } void HtmlGenerator::endMemberDocName() @@ -1277,11 +1293,8 @@ void HtmlGenerator::endMemberDocName() void HtmlGenerator::startParameterList(bool openBracket) { DBG_HTML(t << "<!-- startParameterList -->" << endl;) - t << " <td class=\"md\" valign=\"top\">"; - if (openBracket) - { - t << "( "; - } + t << " <td>"; + if (openBracket) t << "("; t << "</td>" << endl; } @@ -1290,17 +1303,17 @@ void HtmlGenerator::startParameterType(bool first,const char *key) if (first) { DBG_HTML(t << "<!-- startFirstParameterType -->" << endl;) - t << " <td class=\"md\" nowrap valign=\"top\">"; + t << " <td class=\"paramtype\">"; } else { DBG_HTML(t << "<!-- startParameterType -->" << endl;) t << " <tr>" << endl; - t << " <td class=\"md\" nowrap align=\"right\">"; + t << " <td class=\"paramkey\">"; if (key) t << key; t << "</td>" << endl; - t << " <td class=\"md\"></td>" << endl; - t << " <td class=\"md\" nowrap>"; + t << " <td></td>" << endl; + t << " <td class=\"paramtype\">"; } } @@ -1310,15 +1323,10 @@ void HtmlGenerator::endParameterType() t << " </td>" << endl; } -void HtmlGenerator::startParameterName(bool oneArgOnly) +void HtmlGenerator::startParameterName(bool /*oneArgOnly*/) { DBG_HTML(t << "<!-- startParameterName -->" << endl;) - t << " <td class=\"mdname"; - if (oneArgOnly) - { - t << "1\" valign=\"top"; - } - t << "\" nowrap>"; // "; + t << " <td class=\"paramname\">"; } void HtmlGenerator::endParameterName(bool last,bool emptyList,bool closeBracket) @@ -1329,21 +1337,21 @@ void HtmlGenerator::endParameterName(bool last,bool emptyList,bool closeBracket) if (emptyList) { t << " </td>" << endl; - t << " <td class=\"md\" valign=\"top\">"; + t << " <td>"; if (closeBracket) t << " )"; t << " </td>" << endl; - t << " <td class=\"md\" nowrap>"; + t << " <td width=\"100%\">"; } else { - t << "</td>" << endl; + t << "</td><td> </td>" << endl; t << " </tr>" << endl; t << " <tr>" << endl; - t << " <td class=\"md\"></td>" << endl; - t << " <td class=\"md\">"; + t << " <td></td>" << endl; + t << " <td>"; if (closeBracket) t << ")"; - t << " </td>" << endl; - t << " <td class=\"md\" colspan=\"2\">"; + t << "</td>" << endl; + t << " <td></td><td></td><td width=\"100%\">"; } } else @@ -1370,7 +1378,6 @@ void HtmlGenerator::endMemberDoc(bool hasArgs) t << " </table>" << endl; t << " </td>" << endl; t << " </tr>" << endl; - t << "</table>" << endl; } void HtmlGenerator::startDotGraph() @@ -1461,17 +1468,15 @@ void HtmlGenerator::startIndent() // It's back to abusing tables :-( //t << "<div class=\"in\">" << endl; + DBG_HTML(t << "<!-- startIndent -->" << endl;) - t << "<table cellspacing=\"5\" cellpadding=\"0\" border=\"0\">\n" - " <tr>\n" - " <td>\n" - " \n" - " </td>\n" - " <td>\n"; + t << " <tr>\n" + " <td >\n"; } void HtmlGenerator::endIndent() { + DBG_HTML(t << "<!-- endIndent -->" << endl;) t << " </td>\n" " </tr>\n" "</table>\n"; diff --git a/src/htmlgen.h b/src/htmlgen.h index 567a166..9ecfb0c 100644 --- a/src/htmlgen.h +++ b/src/htmlgen.h @@ -95,6 +95,8 @@ class HtmlGenerator : public OutputGenerator void endMemberHeader(); void startMemberSubtitle(); void endMemberSubtitle(); + void startMemberDocList(); + void endMemberDocList(); void startMemberList(); void endMemberList(); void startAnonTypeScope(int) {} diff --git a/src/latexgen.h b/src/latexgen.h index 2d347ea..6a7a484 100644 --- a/src/latexgen.h +++ b/src/latexgen.h @@ -93,6 +93,8 @@ class LatexGenerator : public OutputGenerator void endMemberHeader(); void startMemberSubtitle() {} void endMemberSubtitle() {} + void startMemberDocList() {} + void endMemberDocList() {} void startMemberList(); void endMemberList(); void startAnonTypeScope(int); diff --git a/src/mangen.h b/src/mangen.h index 8d4d981..e2ad571 100644 --- a/src/mangen.h +++ b/src/mangen.h @@ -98,6 +98,8 @@ class ManGenerator : public OutputGenerator void startMemberSubtitle() {} void endMemberSubtitle() {} void writeListItem(); + void startMemberDocList() {} + void endMemberDocList() {} void startMemberList(); void endMemberList(); void startAnonTypeScope(int); diff --git a/src/memberdef.cpp b/src/memberdef.cpp index 9651e33..2f40015 100644 --- a/src/memberdef.cpp +++ b/src/memberdef.cpp @@ -1307,8 +1307,15 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, HtmlHelp *htmlHelp = 0; if (hasHtmlHelp) { - htmlHelp = HtmlHelp::getInstance(); - htmlHelp->addIndexItem(ciname,name(),cfiname,cfname,memAnchor); + if (isEnumerate() && name().at(0)=='@') + { + // don't add to index + } + else + { + htmlHelp = HtmlHelp::getInstance(); + htmlHelp->addIndexItem(ciname,name(),cfiname,cfname,memAnchor); + } } // get member name @@ -2249,6 +2256,10 @@ bool MemberDef::isConstructor() const { return name()=="this"; } + else if (fileDef && getLanguageFromFileName(fileDef->name())==SrcLangExt_PHP) + { // for PHP + return name()=="__construct"; + } else // for other languages { QCString locName = classDef->localName(); @@ -2273,6 +2284,10 @@ bool MemberDef::isDestructor() const { return name()=="~this"; } + else if (fileDef && getLanguageFromFileName(fileDef->name())==SrcLangExt_PHP) + { // for PHP + return name()=="__destruct"; + } else // other languages { return name().find('~')!=-1 && name().find("operator")==-1; diff --git a/src/memberlist.cpp b/src/memberlist.cpp index 3c27bb3..35bb73c 100644 --- a/src/memberlist.cpp +++ b/src/memberlist.cpp @@ -369,6 +369,7 @@ void MemberList::writeDocumentation(OutputList &ol, ol.parseText(title); ol.endGroupHeader(); } + ol.startMemberDocList(); MemberListIterator mli(*this); MemberDef *md; @@ -386,6 +387,7 @@ void MemberList::writeDocumentation(OutputList &ol, mg->writeDocumentation(ol,scopeName,container); } } + ol.endMemberDocList(); } void MemberList::writeDocumentationPage(OutputList &ol, diff --git a/src/namespacedef.cpp b/src/namespacedef.cpp index b5ee936..447a074 100644 --- a/src/namespacedef.cpp +++ b/src/namespacedef.cpp @@ -151,44 +151,45 @@ void NamespaceDef::insertMember(MemberDef *md) { //memList->append(md); allMemberList.append(md); + static bool sortBriefDocs=Config_getBool("SORT_BRIEF_DOCS"); switch(md->memberType()) { case MemberDef::Variable: - if (Config_getBool("SORT_BRIEF_DOCS")) + if (sortBriefDocs) decVarMembers.inSort(md); else decVarMembers.append(md); - if (Config_getBool("SORT_MEMBER_DOCS")) + if (sortBriefDocs) docVarMembers.inSort(md); else docVarMembers.append(md); break; case MemberDef::Function: - if (Config_getBool("SORT_BRIEF_DOCS")) + if (sortBriefDocs) decFuncMembers.inSort(md); else decFuncMembers.append(md); - if (Config_getBool("SORT_MEMBER_DOCS")) + if (sortBriefDocs) docFuncMembers.inSort(md); else docFuncMembers.append(md); break; case MemberDef::Typedef: - if (Config_getBool("SORT_BRIEF_DOCS")) + if (sortBriefDocs) decTypedefMembers.inSort(md); else decTypedefMembers.append(md); - if (Config_getBool("SORT_MEMBER_DOCS")) + if (sortBriefDocs) docTypedefMembers.inSort(md); else docTypedefMembers.append(md); break; case MemberDef::Enumeration: - if (Config_getBool("SORT_BRIEF_DOCS")) + if (sortBriefDocs) decEnumMembers.inSort(md); else decEnumMembers.append(md); - if (Config_getBool("SORT_MEMBER_DOCS")) + if (sortBriefDocs) docEnumMembers.inSort(md); else docEnumMembers.append(md); @@ -196,21 +197,21 @@ void NamespaceDef::insertMember(MemberDef *md) case MemberDef::EnumValue: break; case MemberDef::Prototype: - if (Config_getBool("SORT_BRIEF_DOCS")) + if (sortBriefDocs) decProtoMembers.inSort(md); else decProtoMembers.append(md); - if (Config_getBool("SORT_MEMBER_DOCS")) + if (sortBriefDocs) docProtoMembers.inSort(md); else docProtoMembers.append(md); break; case MemberDef::Define: - if (Config_getBool("SORT_BRIEF_DOCS")) + if (sortBriefDocs) decDefineMembers.inSort(md); else decDefineMembers.append(md); - if (Config_getBool("SORT_MEMBER_DOCS")) + if (sortBriefDocs) docDefineMembers.inSort(md); else docDefineMembers.append(md); diff --git a/src/outputgen.h b/src/outputgen.h index e92d633..e450a46 100644 --- a/src/outputgen.h +++ b/src/outputgen.h @@ -306,8 +306,10 @@ class OutputGenerator : public BaseOutputDocInterface virtual void endMemberHeader() = 0; virtual void startMemberSubtitle() = 0; virtual void endMemberSubtitle() = 0; - virtual void startMemberList() = 0; - virtual void endMemberList() = 0; + virtual void startMemberDocList() = 0; + virtual void endMemberDocList() = 0; + virtual void startMemberList() = 0; + virtual void endMemberList() = 0; virtual void startAnonTypeScope(int) = 0; virtual void endAnonTypeScope(int) = 0; virtual void startMemberItem(int) = 0; diff --git a/src/outputlist.h b/src/outputlist.h index 3e4b5c0..cc6ccef 100644 --- a/src/outputlist.h +++ b/src/outputlist.h @@ -162,6 +162,10 @@ class OutputList : public OutputDocInterface { forall(&OutputGenerator::startMemberSubtitle); } void endMemberSubtitle() { forall(&OutputGenerator::endMemberSubtitle); } + void startMemberDocList() + { forall(&OutputGenerator::startMemberDocList); } + void endMemberDocList() + { forall(&OutputGenerator::endMemberDocList); } void startMemberList() { forall(&OutputGenerator::startMemberList); } void endMemberList() diff --git a/src/rtfgen.h b/src/rtfgen.h index d17cad8..a567b7a 100644 --- a/src/rtfgen.h +++ b/src/rtfgen.h @@ -101,6 +101,8 @@ class RTFGenerator : public OutputGenerator void endMemberHeader() { endGroupHeader(); } void startMemberSubtitle(); void endMemberSubtitle(); + void startMemberDocList() {} + void endMemberDocList() {} void startMemberList(); void endMemberList(); void startAnonTypeScope(int) {} diff --git a/src/util.cpp b/src/util.cpp index bcea278..231910b 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -1,6 +1,6 @@ /***************************************************************************** * - * $Id$ + * * * Copyright (C) 1997-2005 by Dimitri van Heesch. * @@ -5674,6 +5674,7 @@ SrcLangExt getLanguageFromFileName(const QCString fileName) extLookup.insert(".d", (void*)SrcLangExt_D); extLookup.insert(".php", (void*)SrcLangExt_PHP); extLookup.insert(".php4", (void*)SrcLangExt_PHP); + extLookup.insert(".php5", (void*)SrcLangExt_PHP); extLookup.insert(".inc", (void*)SrcLangExt_PHP); extLookup.insert(".phtml", (void*)SrcLangExt_PHP); extLookup.insert(".m", (void*)SrcLangExt_ObjC); diff --git a/wintools/version.pl b/wintools/version.pl index e20e64e..1895346 100644 --- a/wintools/version.pl +++ b/wintools/version.pl @@ -11,7 +11,7 @@ while (<FILE>) { $minor=$1 } elsif (/doxygen_version_revision=(\d+)/) { $revision=$1 - } elsif (/doxygen_version_mmn=(\w+)/) { + } elsif (/doxygen_version_mmn=(\w+)/ && ($1 ne "NO")) { $mmn=$1 } } |