diff options
-rw-r--r-- | INSTALL | 4 | ||||
-rw-r--r-- | LANGUAGE.HOWTO | 32 | ||||
-rw-r--r-- | Makefile.in | 2 | ||||
-rw-r--r-- | README | 4 | ||||
-rw-r--r-- | VERSION | 2 | ||||
-rw-r--r-- | addon/xmlgen/Makefile.in | 4 | ||||
-rwxr-xr-x | configure | 44 | ||||
-rw-r--r-- | doc/install.doc | 20 | ||||
-rw-r--r-- | doc/language.doc | 6 | ||||
-rw-r--r-- | doc/maintainers.txt | 2 | ||||
-rw-r--r-- | packages/rpm/doxygen.spec | 2 | ||||
-rw-r--r-- | src/classdef.cpp | 3 | ||||
-rw-r--r-- | src/doc.l | 13 | ||||
-rw-r--r-- | src/dot.cpp | 47 | ||||
-rw-r--r-- | src/dot.h | 4 | ||||
-rw-r--r-- | src/doxygen.cpp | 7 | ||||
-rw-r--r-- | src/entry.h | 74 | ||||
-rw-r--r-- | src/groupdef.cpp | 5 | ||||
-rw-r--r-- | src/latexgen.h | 2 | ||||
-rw-r--r-- | src/mangen.cpp | 13 | ||||
-rw-r--r-- | src/memberdef.cpp | 35 | ||||
-rw-r--r-- | src/memberdef.h | 4 | ||||
-rw-r--r-- | src/memberlist.cpp | 14 | ||||
-rw-r--r-- | src/namespacedef.cpp | 2 | ||||
-rw-r--r-- | src/rtfgen.cpp | 15 | ||||
-rw-r--r-- | src/translator_hr.h | 2 | ||||
-rw-r--r-- | src/treeview.h | 4 | ||||
-rw-r--r-- | src/treeview.js | 4 |
28 files changed, 221 insertions, 149 deletions
@@ -1,6 +1,6 @@ -DOXYGEN Version 1.2.8.1 +DOXYGEN Version 1.2.8-20010617 Please read the installation section of the manual for instructions. -------- -Dimitri van Heesch (10 June 2001) +Dimitri van Heesch (17 June 2001) diff --git a/LANGUAGE.HOWTO b/LANGUAGE.HOWTO index 21cc9c2..d4d0210 100644 --- a/LANGUAGE.HOWTO +++ b/LANGUAGE.HOWTO @@ -6,7 +6,7 @@ Just follow these steps: is already working on support for that language, you will be assigned as the maintainer for the language. I'll create a list on Doxygen's homepage, so everyone knows who is doing what. -2) Create a copy of translator_nl.h and name it +2) Create a copy of translator_en.h and name it translator_<your_2_letter_counter_code>.h I'll use xx in the rest of this document. 3) Edit language.cpp: @@ -19,31 +19,31 @@ Just follow these steps: } after the if { ... } -4) Edit doxygen.pro and add translator_xx.h to the HEADERS line in the - file doxygen.pro. +4) Edit libdoxygen.pro.in and add translator_xx.h to the HEADERS line. 5) Edit translator_xx.h: - - Rename TRANSLATOR_NL_H to TRANSLATOR_XX_H twice. - - Rename TranslatorDutch to TranslatorYourlanguage - - In the member latexBabelPackage() change "dutch" into the name of the + - Rename TRANSLATOR_EN_H to TRANSLATOR_XX_H twice. + - Rename TranslatorEnglish to TranslatorYourlanguage + - In the member latexBabelPackage() change "english" into the name of the latex package that adds support for your language. + - In the member idLanguage() change "english" into the name of your + language (use lower case characters only). Depending on the language you + may also wish to change the member functions latexLanguageSupportCommand() + and idLanguageCharset(). - Edit all the strings that are returned by the members that start - with tr. - Look at the corresponding member in translator.h for the english text - that is returned and translate that into your language. - Try to match punctuation and capitals! + with tr. Try to match punctuation and capitals! To enter special characters (with accents) you can: a) Enter them directly if your keyboard supports that and you are using a Latin-1 font. Doxygen will translate the characters to proper Latex and - leave the Html and man output for what it is. - b) Use html codes like ä for an a with an umlaut. + leave the Html and man output for what it is (which is fine, if + idLanguageCharset() is set correctly). + b) Use html codes like ä for an a with an umlaut (i.e. ä). See the HTML specification for the codes. -6) Recompile everything (do this from the root of the distribution, - because the Makefile.dox* have to be regenerated!) +6) Run configure and make again from the root of the distribution, + in order to regenerate the Makefiles. 7) Now you can use OUTPUT_LANGUAGE = your_language_name in the config file to generate output in your language. -8) Send translator_xx.h or a diff -u of the changes to me so I can add it - to doxygen. +8) Send translator_xx.h to me so I can add it to doxygen. Good luck, and let me know if there are problems. diff --git a/Makefile.in b/Makefile.in index 4164a86..70ab622 100644 --- a/Makefile.in +++ b/Makefile.in @@ -45,7 +45,7 @@ distclean: clean -rm -f addon/xmlgen/*.o -install: doxywizard_install +install: doxywizard_install xmlgen_install $(INSTTOOL) -d $(INSTALL)/bin $(INSTTOOL) -m 755 bin/doxygen $(INSTALL)/bin $(INSTTOOL) -m 755 bin/doxytag $(INSTALL)/bin @@ -1,4 +1,4 @@ -DOXYGEN Version 1.2.8.1 +DOXYGEN Version 1.2.8_20010617 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) (10 June 2001) +Dimitri van Heesch (dimitri@stack.nl) (17 June 2001) @@ -1 +1 @@ -1.2.8.1 +1.2.8-20010617 diff --git a/addon/xmlgen/Makefile.in b/addon/xmlgen/Makefile.in index 05adc8b..d0e2dc5 100644 --- a/addon/xmlgen/Makefile.in +++ b/addon/xmlgen/Makefile.in @@ -10,3 +10,7 @@ tmake: Makefile.xmlgen: xmlgen.pro $(ENV) $(PERL) $(TMAKE) xmlgen.pro >Makefile.xmlgen +install: + $(INSTTOOL) -d $(INSTALL)/bin + $(INSTTOOL) -m 755 ../../bin/doxygen_xml $(INSTALL)/bin + @@ -24,7 +24,7 @@ f_dot=NO f_perl=NO f_plf_auto=NO f_prefix=/usr -f_insttool=ginstall +f_insttool=NO f_english=NO f_wizard=NO f_xmlgen=NO @@ -116,7 +116,7 @@ Options: [default: /usr] --install name Use \`name' as the name of the GNU install tool - [default: install] + [default: autodetect] --english-only Include support for English only. @@ -265,6 +265,40 @@ if test "$f_make" = NO; then fi echo "using $f_make" +# - check for install ------------------------------------------------------------ + +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_prog=NO + install_found=NO + for i in $install_names; do + for j in $install_dirs; do + if test -x "$j/$i"; then + install_found=YES + if $j/$i --version 2>/dev/null | grep GNU >/dev/null; then + install_prog="$j/$i" + break 2 + fi + fi + done + done + f_insttool="$install_prog" +fi + +if test "$f_insttool" = NO; then + if test "$install_found" = YES; then + echo "GNU version of install is required!" + else + echo "not found!"; + fi + echo + exit 2 +fi +echo "using $f_insttool"; + + # - check for dot ------------------------------------------------------------ echo -n " Checking for dot (part of GraphViz)... " @@ -401,6 +435,12 @@ EOF if test $f_wizard = YES; then echo " \$(MAKE) -C addon/doxywizard install" >> $DST fi + echo "" >> $DST + echo "xmlgen_install:" >> $DST + if test $f_xmlgen = YES; then + echo " \$(MAKE) -C addon/xmlgen install" >> $DST + fi + echo "" >> $DST fi cat $SRC >> $DST echo " Created $DST from $SRC..." diff --git a/doc/install.doc b/doc/install.doc index abdf020..2d0de5f 100644 --- a/doc/install.doc +++ b/doc/install.doc @@ -129,7 +129,7 @@ Compilation is now done by performing the following steps: To let doxygen generate the HTML documentation. - \note you will need the stream editor <code>sed</code> for this, + \note You will need the stream editor <code>sed</code> for this, but this should be available on any Unix platform. The HTML directory of the distribution will now contain the html @@ -137,7 +137,7 @@ Compilation is now done by performing the following steps: <code>index.html</code> in the html directory). -<li>Optional: Generate a postscript and pdf version of the manual. +<li>Optional: Generate a PostScript and PDF version of the manual (you will need <code>latex</code> and <code>dvips</code> and the ghostscript package for this). @@ -153,21 +153,23 @@ Compilation is now done by performing the following steps: \subsection install_bin_unix Installating the binaries on Unix - If you downloaded the binary distribution for Unix, you can install - doxygen by typing: + After the compilation of the source code do a <code>make install</code> + to install doxygen. If you downloaded the binary distribution for Unix, + type: \verbatim ./configure make install \endverbatim - Binaries are installed in the directory <code>\<prefix\>/bin</code>, - documentation and examples in the directory - <code>\<prefix\>/share/doc/packages/doxygen</code> (use - <code>make install DOCDIR=\<path\></code> to change this). + Binaries are installed into the directory <code>\<prefix\>/bin</code>. + Use <code>make install_docs DOCDIR=\<path\></code> to install the + documentation and examples into the <code>\<path\></code> directory. <code>\<prefix\></code> defaults to /usr but can be changed with the <code>--prefix</code> option of the configure script. + The default <code>DOCDIR</code> directory is + <code>\<prefix\>/share/doc/packages/doxygen</code> Alternatively, you can also copy the binaries from the <code>bin</code> directory manually to some <code>bin</code> directory in your search path. @@ -402,7 +404,7 @@ Here is what is required: <code>latex</code>, <code>dvips</code> and <code>gswin32</code>. To get these working under Windows install the fpTeX distribution. You can download it at: - ftp://ctan.tug.org/tex-archive/systems/win32/web2c/fptex-0.3/ + http://www.ese-metz.fr/~popineau/fptex/wwwfptex.html Make sure the tools are available from a dos box, by adding the directory they are in to the search path. diff --git a/doc/language.doc b/doc/language.doc index 9f9911f..2ddb450 100644 --- a/doc/language.doc +++ b/doc/language.doc @@ -101,8 +101,8 @@ when the translator was updated. </TR> <TR BGCOLOR="#ffffff"> <TD>French</TD> - <TD>Christophe Bordeux</TD> - <TD>bordeux@NOSPAM.lig.di.epfl.ch</TD> + <TD>Xavier Outhier</TD> + <TD>xavier.outhier@NOSPAM.anfdata.cz</TD> <TD>1.2.0</TD> </TR> <TR BGCOLOR="#ffffff"> @@ -217,7 +217,7 @@ when the translator was updated. \hline Finnish & Olli Korhonen & {\tt Olli.Korhonen@ccc.fi} & 1.0.0 \\ \hline - French & Christophe Bordeux & {\tt bordeux@lig.di.epfl.ch} & 1.2.0 \\ + French & Xavier Outhier & {\tt xavier.outhier@anfdata.cz} & 1.2.0 \\ \hline German & Jens Seidel & {\tt jensseidel@users.sourceforge.net} & up-to-date \\ & Jens Breitenstein & {\tt Jens.Breitenstein@tlc.de} & \\ diff --git a/doc/maintainers.txt b/doc/maintainers.txt index 11a231a..1386a9b 100644 --- a/doc/maintainers.txt +++ b/doc/maintainers.txt @@ -27,7 +27,7 @@ Finnish Olli Korhonen: Olli.Korhonen@ccc.fi French -Christophe Bordeux: bordeux@lig.di.epfl.ch +Xavier Outhier: xavier.outhier@anfdata.cz German Jens Seidel: jensseidel@users.sourceforge.net diff --git a/packages/rpm/doxygen.spec b/packages/rpm/doxygen.spec index e9f3df2..e280cb2 100644 --- a/packages/rpm/doxygen.spec +++ b/packages/rpm/doxygen.spec @@ -1,5 +1,5 @@ Name: doxygen -Version: 1.2.8.1 +Version: 1.2.8_20010617 Summary: documentation system for C, C++ and IDL Release: 3 Source: doxygen-%{version}.src.tar.gz diff --git a/src/classdef.cpp b/src/classdef.cpp index 3eb9fae..f2c733b 100644 --- a/src/classdef.cpp +++ b/src/classdef.cpp @@ -183,7 +183,8 @@ void ClassDef::insertMember(MemberDef *md) /********************************************/ /* insert member in the declaration section */ /********************************************/ - if (md->isRelated() && (Config_getBool("EXTRACT_PRIVATE") || md->protection()!=Private)) + if (md->isRelated() && + (Config_getBool("EXTRACT_PRIVATE") || md->protection()!=Private)) { related.append(md); md->setSectionList(&related); @@ -898,6 +898,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) %x DocLink %x DocJavaLink %x DocLinkText +%x DocJavaLinkText %x DocSkipWord %x DocInclude %x DocDontInclude @@ -1056,19 +1057,21 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) BEGIN( DocLinkText ); } <DocJavaLink>([a-z_A-Z0-9]+".")+ { /* Skip scope prefix (TODO: fix) */ } -<DocJavaLink>([a-z_A-Z0-9]+"#")?[a-z_A-Z0-9]+("("[a-z_A-Z0-9.,~&*()\[\]]*")")? { // TODO: support operators as well! +<DocJavaLink>([a-z_A-Z0-9]*"#")?[a-z_A-Z0-9]+("("[a-z_A-Z0-9.,:~&*()\[\]]*")")? { // TODO: support operators as well! linkRef = yytext; + linkText = ""; + BEGIN( DocJavaLinkText ); } -<DocJavaLink>"}" { +<DocJavaLinkText>"}" { //printf("Trying to link `%s'\n",linkRef.data()); - if (!generateLink(*outDoc,className,linkRef,inSeeBlock,0)) + if (!generateLink(*outDoc,className,linkRef,inSeeBlock,linkText.stripWhiteSpace())) { warn(yyFileName,yyLineNr,"Warning: link to unknown entity `%s' in the documentation of this entity!",linkRef.data()); } BEGIN( DocScan ); } -<DocLinkText>. { linkText += *yytext; } -<DocLinkText>"\n" { linkText += " "; } +<DocJavaLinkText,DocLinkText>. { linkText += *yytext; } +<DocJavaLinkText,DocLinkText>"\n" { linkText += " "; } <DocLink,DocLinkText>{CMD}"endlink" { // <- needed for things like \endlink. //printf("GenerateLink className=`%s' linkRef=`%s' linkText=`%s'\n", // className.data(),linkRef.data(),linkText.data()); diff --git a/src/dot.cpp b/src/dot.cpp index d5b6b96..f7be7d5 100644 --- a/src/dot.cpp +++ b/src/dot.cpp @@ -772,18 +772,6 @@ void DotGfxHierarchyTable::addHierarchy(DotNode *n,ClassDef *cd,bool hideSuper) // bClass->name().data()); if ((bn=m_usedNodes->find(bClass->name()))) // node already present { - //printf("Base node `%s'\n",bn->m_label.data()); - //if (n->m_children) - //{ - // QListIterator<DotNode> dnli(*n->m_children); - // DotNode *cn; - // for (dnli.toFirst();(cn=dnli.current());++dnli) - // { - // printf("Child node `%s'\n",cn->m_label.data()); - // } - // printf("ref node = %p\n",n->m_children->findRef(bn)); - //} - if (n->m_children==0 || n->m_children->findRef(bn)==-1) // no arrow yet { n->addChild(bn,bcd->prot); @@ -847,7 +835,7 @@ DotGfxHierarchyTable::DotGfxHierarchyTable() //printf("Trying %s subClasses=%d\n",cd->name().data(),cd->subClasses()->count()); if (!hasVisibleRoot(cd->baseClasses())) { - if (cd->isVisibleInHierarchy()) // root class in the graph + if (cd->isVisibleInHierarchy()) // root node in the forest { QCString tmp_url=""; if (cd->isLinkable()) @@ -1075,8 +1063,13 @@ DotClassGraph::DotClassGraph(ClassDef *cd,GraphType t,int maxRecursionDepth) m_recDepth = maxRecursionDepth; QCString tmp_url=""; if (cd->isLinkable()) tmp_url=cd->getReference()+"$"+cd->getOutputFileBase(); + QCString className = cd->displayName(); + if (cd->templateArguments()) + { + className+=tempArgListToString(cd->templateArguments()); + } m_startNode = new DotNode(m_curNodeNumber++, - cd->displayName(), + className, tmp_url.data(), 0, // distance TRUE // is a root node @@ -1250,7 +1243,7 @@ QCString DotClassGraph::diskName() const return result; } -void DotClassGraph::writeGraph(QTextStream &out, +QCString DotClassGraph::writeGraph(QTextStream &out, GraphOutputFormat format, const char *path, bool isTBRank, @@ -1295,7 +1288,7 @@ void DotClassGraph::writeGraph(QTextStream &out, { err("Error: Problems running dot. Check your installation!\n"); QDir::setCurrent(oldDir); - return; + return baseName; } if (generateImageMap) { @@ -1305,7 +1298,7 @@ void DotClassGraph::writeGraph(QTextStream &out, { err("Error: Problems running dot. Check your installation!\n"); QDir::setCurrent(oldDir); - return; + return baseName; } out << "<p><center><img src=\"" << baseName << ".gif\" border=\"0\" usemap=\"#" << m_startNode->m_label << "_" << mapName << "\" alt=\""; @@ -1336,14 +1329,14 @@ void DotClassGraph::writeGraph(QTextStream &out, { err("Error: Problems running dot. Check your installation!\n"); QDir::setCurrent(oldDir); - return; + return baseName; } int width,height; if (!readBoundingBoxEPS(baseName+".eps",&width,&height)) { err("Error: Could not extract bounding box from .eps!\n"); QDir::setCurrent(oldDir); - return; + return baseName; } if (Config_getBool("USE_PDFLATEX")) { @@ -1354,7 +1347,7 @@ void DotClassGraph::writeGraph(QTextStream &out, { err("Error: Problems running epstopdf. Check your TeX installation!\n"); QDir::setCurrent(oldDir); - return; + return baseName; } } int maxWidth = 420; /* approx. page width in points */ @@ -1370,6 +1363,7 @@ void DotClassGraph::writeGraph(QTextStream &out, if (Config_getBool("DOT_CLEANUP")) thisDir.remove(baseName+".dot"); QDir::setCurrent(oldDir); + return baseName; } //-------------------------------------------------------------------- @@ -1461,7 +1455,7 @@ QCString DotInclDepGraph::diskName() const return convertNameToFile(result); } -void DotInclDepGraph::writeGraph(QTextStream &out, +QCString DotInclDepGraph::writeGraph(QTextStream &out, GraphOutputFormat format, const char *path, bool generateImageMap @@ -1498,7 +1492,7 @@ void DotInclDepGraph::writeGraph(QTextStream &out, { err("Problems running dot. Check your installation!\n"); QDir::setCurrent(oldDir); - return; + return baseName; } if (generateImageMap) @@ -1510,7 +1504,7 @@ void DotInclDepGraph::writeGraph(QTextStream &out, { err("Problems running dot. Check your installation!\n"); QDir::setCurrent(oldDir); - return; + return baseName; } out << "<p><center><img src=\"" << baseName << ".gif\" border=\"0\" usemap=\"#" @@ -1534,14 +1528,14 @@ void DotInclDepGraph::writeGraph(QTextStream &out, { err("Problems running dot. Check your installation!\n"); QDir::setCurrent(oldDir); - return; + return baseName; } int width,height; if (!readBoundingBoxEPS(baseName+".eps",&width,&height)) { err("Error: Could not extract bounding box from .eps!\n"); QDir::setCurrent(oldDir); - return; + return baseName; } if (Config_getBool("USE_PDFLATEX")) { @@ -1552,7 +1546,7 @@ void DotInclDepGraph::writeGraph(QTextStream &out, { err("Error: Problems running epstopdf. Check your TeX installation!\n"); QDir::setCurrent(oldDir); - return; + return baseName; } } int maxWidth = 420; /* approx. page width in points */ @@ -1571,6 +1565,7 @@ void DotInclDepGraph::writeGraph(QTextStream &out, if (Config_getBool("DOT_CLEANUP")) thisDir.remove(baseName+".dot"); QDir::setCurrent(oldDir); + return baseName; } bool DotInclDepGraph::isTrivial() const @@ -119,7 +119,7 @@ class DotClassGraph DotClassGraph(ClassDef *cd,GraphType t,int maxRecusionDepth=1000); ~DotClassGraph(); bool isTrivial() const; - void writeGraph(QTextStream &t,GraphOutputFormat f,const char *path, + QCString writeGraph(QTextStream &t,GraphOutputFormat f,const char *path, bool TBRank=TRUE,bool imageMap=TRUE); QCString diskName() const; @@ -142,7 +142,7 @@ class DotInclDepGraph public: DotInclDepGraph(FileDef *fd,bool inverse=FALSE); ~DotInclDepGraph(); - void writeGraph(QTextStream &t, GraphOutputFormat f,const char *path, + QCString writeGraph(QTextStream &t, GraphOutputFormat f,const char *path, bool writeImageMap=TRUE); bool isTrivial() const; QCString diskName() const; diff --git a/src/doxygen.cpp b/src/doxygen.cpp index 070a088..8d786ad 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -3396,7 +3396,9 @@ static void findMember(Entry *root, scopeName=related.copy(); } - if (related.isEmpty() && root->parent && !root->parent->name.isEmpty()) + if (related.isEmpty() && root->parent && + (root->parent->section&Entry::SCOPE_MASK) && + !root->parent->name.isEmpty()) { scopeName = mergeScopes(root->parent->name,scopeName); } @@ -3982,6 +3984,7 @@ static void findMember(Entry *root, cd->insertMember(md); cd->insertUsedFile(root->fileName); md->setRefItems(root->todoId,root->testId,root->bugId); + addMemberToGroups(root,md); if (newMemberName) { //printf("Adding memberName=%s\n",mn->memberName()); @@ -5986,7 +5989,7 @@ static const char *getArg(int argc,char **argv,int &optind) char *s=0; if (strlen(&argv[optind][2])>0) s=&argv[optind][2]; - else if (optind+1<argc) + else if (optind+1<argc && argv[optind+1][0]!='-') s=argv[++optind]; return s; } diff --git a/src/entry.h b/src/entry.h index beee698..7717eb9 100644 --- a/src/entry.h +++ b/src/entry.h @@ -121,50 +121,42 @@ struct TagInfo QCString anchor; }; -struct Grouping { - typedef enum { - GROUPING_LOWEST, - GROUPING_AUTO_WEAK = - GROUPING_LOWEST, //!< membership in group was defined via @weakgroup @{ @} - GROUPING_AUTO_ADD, //!< membership in group was defined via @add[to]group @{ @} - GROUPING_AUTO_DEF, //!< membership in group was defined via @defgroup @{ @} - GROUPING_AUTO_HIGHEST = - GROUPING_AUTO_DEF, - GROUPING_INGROUP, //!< membership in group was defined by @ingroup - GROUPING_HIGHEST = - GROUPING_INGROUP - } GroupPri_t; +struct Grouping +{ + enum GroupPri_t + { + GROUPING_LOWEST, + GROUPING_AUTO_WEAK = + GROUPING_LOWEST, //!< membership in group was defined via @weakgroup @{ @} + GROUPING_AUTO_ADD, //!< membership in group was defined via @add[to]group @{ @} + GROUPING_AUTO_DEF, //!< membership in group was defined via @defgroup @{ @} + GROUPING_AUTO_HIGHEST = + GROUPING_AUTO_DEF, + GROUPING_INGROUP, //!< membership in group was defined by @ingroup + GROUPING_HIGHEST = + GROUPING_INGROUP + }; - static const char *getGroupPriName( GroupPri_t priority ) + static const char *getGroupPriName( GroupPri_t priority ) + { + switch( priority ) { - switch( priority ) - { - case GROUPING_AUTO_WEAK: - return "@weakgroup"; - break; - case GROUPING_AUTO_ADD: - return "@addtogroup"; - break; - case GROUPING_AUTO_DEF: - return "@defgroup"; - break; - case GROUPING_INGROUP: - return "@ingroup"; - break; - default: - return "???"; - break; - } - } + case GROUPING_AUTO_WEAK: + return "@weakgroup"; + case GROUPING_AUTO_ADD: + return "@addtogroup"; + case GROUPING_AUTO_DEF: + return "@defgroup"; + case GROUPING_INGROUP: + return "@ingroup"; + } + return "???"; + } - Grouping( const char *gn, GroupPri_t p ) : - groupname(gn), - pri(p) {} - Grouping( const Grouping &g ) : - groupname(g.groupname), - pri(g.pri) {} - QCString groupname; //!< name of the group - GroupPri_t pri; //!< priority of this definition + Grouping( const char *gn, GroupPri_t p ) : groupname(gn), pri(p) {} + Grouping( const Grouping &g ) : groupname(g.groupname), pri(g.pri) {} + QCString groupname; //!< name of the group + GroupPri_t pri; //!< priority of this definition }; diff --git a/src/groupdef.cpp b/src/groupdef.cpp index 1c3123c..bb1c2f0 100644 --- a/src/groupdef.cpp +++ b/src/groupdef.cpp @@ -168,7 +168,7 @@ void GroupDef::addMembersToMemberGroup() void GroupDef::insertMember(MemberDef *md,bool docOnly) { - // fprintf(stderr, "GroupDef(%s)::insertMember(%s)\n", title.data(), md->name().data()); + //fprintf(stderr, "GroupDef(%s)::insertMember(%s)\n", title.data(), md->name().data()); MemberNameInfo *mni=0; if ((mni=(*allMemberNameInfoDict)[md->name()])) { // member with this name already found @@ -177,7 +177,8 @@ void GroupDef::insertMember(MemberDef *md,bool docOnly) for ( ; (srcMi=srcMnii.current()) ; ++srcMnii ) { MemberDef *srcMd = srcMi->memberDef; - if (matchArguments(srcMd->argumentList(),md->argumentList())) + if (matchArguments(srcMd->argumentList(),md->argumentList()) && + srcMd->getOuterScope()==md->getOuterScope()) { return; // member already added } diff --git a/src/latexgen.h b/src/latexgen.h index fec4a2d..08c9370 100644 --- a/src/latexgen.h +++ b/src/latexgen.h @@ -110,7 +110,7 @@ class LatexGenerator : public OutputGenerator void writeRuler() { t << endl << endl; /*t << "\\vspace{0.4cm}\\hrule\\vspace{0.2cm}" << endl; */ } void writeAnchor(const char *fileName,const char *name); - void startCodeFragment() { t << "\\footnotesize\\begin{verbatim}"; } + void startCodeFragment() { t << endl << endl << "\\footnotesize\\begin{verbatim}"; } void endCodeFragment() { t << "\\end{verbatim}\\normalsize " << endl; } void startPreFragment() { t << "\\small\\begin{alltt}"; insidePre=TRUE; diff --git a/src/mangen.cpp b/src/mangen.cpp index d4bd0aa..36d23e1 100644 --- a/src/mangen.cpp +++ b/src/mangen.cpp @@ -366,7 +366,7 @@ void ManGenerator::startMemberDoc(const char *,const char *,const char *,const c } void ManGenerator::startDoxyAnchor(const char *,const char *manName, - const char *, const char *) + const char *, const char *name) { // something to be done? if( !Config_getBool("MAN_LINKS") ) @@ -374,9 +374,16 @@ void ManGenerator::startDoxyAnchor(const char *,const char *manName, return; // no } - // only create file when it doesn't exist - QCString fileName=dir+"/"+buildFileName( manName ); + // the name of the link file is derived from the name of the anchor: + // - truncate after an (optional) :: + QCString baseName = name; + int i=baseName.findRev(':'); + if (i!=-1) baseName=baseName.right(baseName.length()-i-1); + + // - remove dangerous characters and append suffix, then add dir prefix + QCString fileName=dir+"/"+buildFileName( baseName ); QFile linkfile( fileName ); + // - only create file if it doesn't exist already if ( !linkfile.open( IO_ReadOnly ) ) { if ( linkfile.open( IO_WriteOnly ) ) diff --git a/src/memberdef.cpp b/src/memberdef.cpp index 519e65c..3a26976 100644 --- a/src/memberdef.cpp +++ b/src/memberdef.cpp @@ -518,8 +518,10 @@ bool MemberDef::isBriefSectionVisible() const Config_getBool("EXTRACT_PRIVATE") ); - return visibleIfStatic && visibleIfDocumented && - visibleIfEnabled && visibleIfPrivate && !annScope; + bool visible = visibleIfStatic && visibleIfDocumented && + visibleIfEnabled && visibleIfPrivate && !annScope; + //printf("MemberDef::isBriefSectionVisible() %d\n",visible); + return visible; } void MemberDef::writeDeclaration(OutputList &ol, @@ -837,19 +839,27 @@ bool MemberDef::isDetailedSectionLinkable() const // this is not a global static or global statics should be extracted bool staticFilter = getClassDef()!=0 || !isStatic() || Config_getBool("EXTRACT_STATIC"); + // only include members that are non-private unless EXTRACT_PRIVATE is + // set to YES or the member is part of a group + bool privateFilter = (protection()!=Private || + Config_getBool("EXTRACT_PRIVATE") + ); + // member is part of an anonymous scope that is the type of // another member in the list. // bool inAnonymousScope = !briefDescription().isEmpty() && annUsed; - return ((docFilter && staticFilter) || inAnonymousScope); + return ((docFilter && staticFilter && privateFilter) || inAnonymousScope); } bool MemberDef::isDetailedSectionVisible(bool inGroup) const { bool groupFilter = getGroupDef()==0 || inGroup; - return isDetailedSectionLinkable() && groupFilter; + bool visible = isDetailedSectionLinkable() && groupFilter; + //printf("MemberDef::isDetailedSectionVisible() %d\n",visible); + return visible; } /*! Writes the "detailed documentation" section of this member to @@ -969,9 +979,6 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ArgumentList *membAl=memberDefTemplateArguments(); if (membAl==0) membAl=templateArguments(); - //if (cd && (!isRelated() || templateArguments()!=0) && - // ((al=scopeDefTemplateArguments()) || (al=cd->templateArguments())) - // ) if (!Config_getBool("HIDE_SCOPE_NAMES")) { if (scopeAl && !related) // class template prefix @@ -1413,7 +1420,7 @@ bool MemberDef::isLinkableInProject() return !name().isEmpty() && name().at(0)!='@' && ((hasDocumentation() && !isReference()) ) && - (prot!=Private || Config_getBool("EXTRACT_PRIVATE") || isFriend()) && // not a private class member + (prot!=Private || Config_getBool("EXTRACT_PRIVATE")) && // not a private class member (classDef!=0 || Config_getBool("EXTRACT_STATIC") || !isStatic()); // not a static file/namespace member } @@ -1496,3 +1503,15 @@ void MemberDef::setEnumScope(MemberDef *md) } } +void MemberDef::setMemberClass(ClassDef *cd) +{ + classDef=cd; + setOuterScope(cd); +} + +void MemberDef::setNamespace(NamespaceDef *nd) +{ + nspace=nd; + setOuterScope(nd); +} + diff --git a/src/memberdef.h b/src/memberdef.h index 45713a0..bf40f1b 100644 --- a/src/memberdef.h +++ b/src/memberdef.h @@ -142,7 +142,7 @@ class MemberDef : public Definition } void setBitfields(const char *s) { bitfields = s; } void setMaxInitLines(int lines) { userInitLines=lines; } - void setMemberClass(ClassDef *cd) { classDef=cd; } + void setMemberClass(ClassDef *cd); void setSectionList(MemberList *sl) { section=sl; } void setGroupDef(GroupDef *gd,Grouping::GroupPri_t pri,const QCString &fileName,int startLine,bool hasDocs); void setExplicitExternal(bool b) { explExt=b; } @@ -202,7 +202,7 @@ class MemberDef : public Definition ArgumentList *memberDefTemplateArguments() const { return membTAL; } // namespace related members - void setNamespace(NamespaceDef *nd) { nspace=nd; } + void setNamespace(NamespaceDef *nd); // member group related members void setMemberGroup(MemberGroup *grp); diff --git a/src/memberlist.cpp b/src/memberlist.cpp index 715effd..6e1b4fd 100644 --- a/src/memberlist.cpp +++ b/src/memberlist.cpp @@ -50,7 +50,7 @@ int MemberList::compareItems(GCI item1, GCI item2) /*! Count the number of members in this list that are visible in * the declaration part of a compound's documentation page. */ -void MemberList::countDecMembers(/*bool inGroup,bool countSubGroups,bool sectionPerType*/) +void MemberList::countDecMembers() { if (m_numDecMembers!=-1) return; @@ -85,7 +85,8 @@ void MemberList::countDecMembers(/*bool inGroup,bool countSubGroups,bool section md->hasDocumentation() ) m_defCnt++,m_numDecMembers++; break; - case MemberDef::Friend: m_friendCnt++,m_numDecMembers++; break; + case MemberDef::Friend: m_friendCnt++,m_numDecMembers++; + break; default: err("Error: Unknown member type found for member `%s'\n!",md->name().data()); } @@ -347,14 +348,17 @@ void MemberList::writePlainDeclarations(OutputList &ol, } case MemberDef::Friend: { +#if 0 //printf("Writing friend `%s'\n",md->name().data()); QCString type=md->typeString(); //printf("Friend: type=%s name=%s\n",type.data(),md->name().data()); bool isFriendClass = type=="friend class"; if (!isFriendClass) { +#endif if (first) ol.startMemberList(),first=FALSE; md->writeDeclaration(ol,cd,nd,fd,gd,m_inGroup); +#if 0 } else // isFriendClass // friend is undocumented as a member but it is a class, @@ -391,6 +395,7 @@ void MemberList::writePlainDeclarations(OutputList &ol, ol.endMemberItem(FALSE); } } +#endif break; } case MemberDef::EnumValue: @@ -441,10 +446,7 @@ void MemberList::writeDeclarations(OutputList &ol, { //printf("subtitle=`%s'\n",subtitle); ol.startMemberSubtitle(); - if (m_inGroup) - parseDoc(ol,"<generated>",1,0,0,subtitle); - else - parseText(ol,subtitle); + parseDoc(ol,"<generated>",1,0,0,subtitle); ol.endMemberSubtitle(); } diff --git a/src/namespacedef.cpp b/src/namespacedef.cpp index 2f866bd..2722b23 100644 --- a/src/namespacedef.cpp +++ b/src/namespacedef.cpp @@ -31,7 +31,7 @@ NamespaceDef::NamespaceDef(const char *df,int dl, const char *name,const char *lref) : Definition(df,dl,name) { - fileName=(QCString)"namespace_"+name; + fileName=(QCString)"namespace"+name; classSDict = new ClassSDict(257); namespaceSDict = new NamespaceSDict(257); m_innerCompounds = new SDict<Definition>(257); diff --git a/src/rtfgen.cpp b/src/rtfgen.cpp index 441c1f3..4582025 100644 --- a/src/rtfgen.cpp +++ b/src/rtfgen.cpp @@ -1372,9 +1372,9 @@ void RTFGenerator::writeStyleInfo(int) void RTFGenerator::lineBreak() { - //t << "\\par" << endl; + t << "\\par" << endl; //newParagraph(); - t << "\\line" << endl; + //t << "\\line" << endl; } void RTFGenerator::writeString(const char *text) @@ -2541,13 +2541,14 @@ void RTFGenerator::endDotGraph(DotClassGraph &g) { newParagraph(); - g.writeGraph(t,GIF,Config_getString("RTF_OUTPUT"),TRUE,FALSE); + QCString fileName = + g.writeGraph(t,GIF,Config_getString("RTF_OUTPUT"),TRUE,FALSE); // display the file t << "{" << endl; t << Rtf_Style_Reset << endl; t << "\\par\\pard \\qc {\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE "; - t << g.diskName() << ".gif"; + t << fileName << ".gif"; t << " \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl; t << "}" << endl; } @@ -2560,15 +2561,13 @@ void RTFGenerator::endInclDepGraph(DotInclDepGraph &g) { newParagraph(); - g.writeGraph(t,GIF,Config_getString("RTF_OUTPUT"),FALSE); - - //QCString diskName = g.diskName(); + QCString fileName = g.writeGraph(t,GIF,Config_getString("RTF_OUTPUT"),FALSE); // display the file t << "{" << endl; t << Rtf_Style_Reset << endl; t << "\\par\\pard \\qc {\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE "; - t << g.diskName() << ".gif"; + t << fileName << ".gif"; t << " \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl; t << "}" << endl; } diff --git a/src/translator_hr.h b/src/translator_hr.h index 8463acb..7525942 100644 --- a/src/translator_hr.h +++ b/src/translator_hr.h @@ -462,7 +462,7 @@ class TranslatorCroatian : public Translator case ClassDef::Interface: result+="sučelja (interface)"; break; case ClassDef::Exception: result+="iznimke (exception)"; break; } - result+=" je generirana iz " + trFile(false, single) + ": "; + result+=" je generirana iz " + trFile(FALSE, single) + ": "; return decode(result); } diff --git a/src/treeview.h b/src/treeview.h index 433db9e..722da0d 100644 --- a/src/treeview.h +++ b/src/treeview.h @@ -172,7 +172,9 @@ " doc.write(\"<layer id='folder\" + this.id + \"' top=\" + doc.yPos + \" visibility=hidden>\") \n" " } \n" " if (browserVersion == 3) \n" -" doc.write(\"<div id='folder\" + this.id + \"' style='display:none;'>\") \n" +" {\n" +" doc.write(\"<div id='folder\" + this.id + \"' style='visibility:hide;'>\") \n" +" }\n" " \n" " doc.write(\"\\n<table \") \n" " if (browserVersion == 1) \n" diff --git a/src/treeview.js b/src/treeview.js index cc5e26a..240d654 100644 --- a/src/treeview.js +++ b/src/treeview.js @@ -172,7 +172,9 @@ function drawFolder(leftSide) doc.write("<layer id='folder" + this.id + "' top=" + doc.yPos + " visibility=hidden>") } if (browserVersion == 3) - doc.write("<div id='folder" + this.id + "' style='display:none;'>") + { + doc.write("<div id='folder" + this.id + "' style='visibility:hide;'>") + } doc.write("\n<table ") if (browserVersion == 1) |