summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordimitri <dimitri@afe2bf4a-e733-0410-8a33-86f594647bc7>2001-06-17 15:02:31 (GMT)
committerdimitri <dimitri@afe2bf4a-e733-0410-8a33-86f594647bc7>2001-06-17 15:02:31 (GMT)
commitd723d351b1ec59ad9db456f820d59a6e270f21a4 (patch)
tree4174efd197ffb98e336e31881c5c95fa3e09cbcc
parent6bcfa2ef74dee5be64110aa0b06b368d498c9a73 (diff)
downloadDoxygen-d723d351b1ec59ad9db456f820d59a6e270f21a4.zip
Doxygen-d723d351b1ec59ad9db456f820d59a6e270f21a4.tar.gz
Doxygen-d723d351b1ec59ad9db456f820d59a6e270f21a4.tar.bz2
Release-1.2.8-20010617
-rw-r--r--INSTALL4
-rw-r--r--LANGUAGE.HOWTO32
-rw-r--r--Makefile.in2
-rw-r--r--README4
-rw-r--r--VERSION2
-rw-r--r--addon/xmlgen/Makefile.in4
-rwxr-xr-xconfigure44
-rw-r--r--doc/install.doc20
-rw-r--r--doc/language.doc6
-rw-r--r--doc/maintainers.txt2
-rw-r--r--packages/rpm/doxygen.spec2
-rw-r--r--src/classdef.cpp3
-rw-r--r--src/doc.l13
-rw-r--r--src/dot.cpp47
-rw-r--r--src/dot.h4
-rw-r--r--src/doxygen.cpp7
-rw-r--r--src/entry.h74
-rw-r--r--src/groupdef.cpp5
-rw-r--r--src/latexgen.h2
-rw-r--r--src/mangen.cpp13
-rw-r--r--src/memberdef.cpp35
-rw-r--r--src/memberdef.h4
-rw-r--r--src/memberlist.cpp14
-rw-r--r--src/namespacedef.cpp2
-rw-r--r--src/rtfgen.cpp15
-rw-r--r--src/translator_hr.h2
-rw-r--r--src/treeview.h4
-rw-r--r--src/treeview.js4
28 files changed, 221 insertions, 149 deletions
diff --git a/INSTALL b/INSTALL
index 7873399..8d0aea4 100644
--- a/INSTALL
+++ b/INSTALL
@@ -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 &auml; 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 &auml; 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
diff --git a/README b/README
index ef42103..c1ad955 100644
--- a/README
+++ b/README
@@ -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)
diff --git a/VERSION b/VERSION
index 444572e..c80d976 100644
--- a/VERSION
+++ b/VERSION
@@ -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
+
diff --git a/configure b/configure
index 0ecb8ba..99768ca 100755
--- a/configure
+++ b/configure
@@ -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);
diff --git a/src/doc.l b/src/doc.l
index af84c07..cd70588 100644
--- a/src/doc.l
+++ b/src/doc.l
@@ -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
diff --git a/src/dot.h b/src/dot.h
index 82c7de7..296df0c 100644
--- a/src/dot.h
+++ b/src/dot.h
@@ -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)