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

Release-1.5.5-20080420

parent c6c19d29
DOXYGEN Version 1.5.5-20080325 DOXYGEN Version 1.5.5-20080420
Please read the installation section of the manual Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions. (http://www.doxygen.org/install.html) for instructions.
-------- --------
Dimitri van Heesch (25 March 2008) Dimitri van Heesch (20 April 2008)
...@@ -63,9 +63,6 @@ install: doxywizard_install ...@@ -63,9 +63,6 @@ install: doxywizard_install
cat doc/doxytag.1 | sed -e "s/DATE/$(DATE)/g" -e "s/VERSION/$(VERSION)/g" > doxytag.1 cat doc/doxytag.1 | sed -e "s/DATE/$(DATE)/g" -e "s/VERSION/$(VERSION)/g" > doxytag.1
$(INSTTOOL) -m 644 doxytag.1 $(INSTALL)/$(MAN1DIR)/doxytag.1 $(INSTTOOL) -m 644 doxytag.1 $(INSTALL)/$(MAN1DIR)/doxytag.1
rm doxytag.1 rm doxytag.1
cat doc/doxywizard.1 | sed -e "s/DATE/$(DATE)/g" -e "s/VERSION/$(VERSION)/g" > doxywizard.1
$(INSTTOOL) -m 644 doxywizard.1 $(INSTALL)/$(MAN1DIR)/doxywizard.1
rm doxywizard.1
install_docs: install_docs:
$(INSTTOOL) -d $(DOCDIR) $(INSTTOOL) -d $(DOCDIR)
...@@ -118,7 +115,7 @@ rpm: dist ...@@ -118,7 +115,7 @@ rpm: dist
tar -rvf $(DISTDIR).src.tar $(DISTDIR)/packages/rpm/doxygen.spec tar -rvf $(DISTDIR).src.tar $(DISTDIR)/packages/rpm/doxygen.spec
rm -rf $(DISTDIR) rm -rf $(DISTDIR)
gzip -9v $(DISTDIR).src.tar gzip -9v $(DISTDIR).src.tar
rpmbuild -ta $(DISTDIR).src.tar.gz rpmbuild -ta %%WITHDOXYWIZARD%% $(DISTDIR).src.tar.gz
rpmsrc: dist rpmsrc: dist
gzip -df $(DISTDIR).src.tar.gz gzip -df $(DISTDIR).src.tar.gz
...@@ -129,7 +126,7 @@ rpmsrc: dist ...@@ -129,7 +126,7 @@ rpmsrc: dist
tar -rvf $(DISTDIR).src.tar $(DISTDIR)/packages/rpm/doxygen.spec tar -rvf $(DISTDIR).src.tar $(DISTDIR)/packages/rpm/doxygen.spec
rm -rf $(DISTDIR) rm -rf $(DISTDIR)
gzip -9v $(DISTDIR).src.tar gzip -9v $(DISTDIR).src.tar
rpmbuild -ts $(DISTDIR).src.tar.gz rpmbuild -ts %%WITHDOXYWIZARD%% $(DISTDIR).src.tar.gz
rpmbinary: dist rpmbinary: dist
gzip -df $(DISTDIR).src.tar.gz gzip -df $(DISTDIR).src.tar.gz
...@@ -140,7 +137,7 @@ rpmbinary: dist ...@@ -140,7 +137,7 @@ rpmbinary: dist
tar -rvf $(DISTDIR).src.tar $(DISTDIR)/packages/rpm/doxygen.spec tar -rvf $(DISTDIR).src.tar $(DISTDIR)/packages/rpm/doxygen.spec
rm -rf $(DISTDIR) rm -rf $(DISTDIR)
gzip -9v $(DISTDIR).src.tar gzip -9v $(DISTDIR).src.tar
rpmbuild -tb $(DISTDIR).src.tar.gz rpmbuild -tb %%WITHDOXYWIZARD%% $(DISTDIR).src.tar.gz
ctags: ctags:
......
DOXYGEN Version 1.5.5_20080325 DOXYGEN Version 1.5.5_20080420
Please read INSTALL for compilation instructions. Please read INSTALL for compilation instructions.
...@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives. ...@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy, Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (25 March 2008) Dimitri van Heesch (dimitri@stack.nl) (20 April 2008)
...@@ -41,8 +41,14 @@ clean: Makefile.doxywizard ...@@ -41,8 +41,14 @@ clean: Makefile.doxywizard
distclean: clean distclean: clean
$(RM) Makefile.doxywizard version.cpp config.l config.h portable.h portable.cpp $(RM) Makefile.doxywizard version.cpp config.l config.h portable.h portable.cpp
MAN1DIR = man/man1
install: install:
$(INSTTOOL) -d $(INSTALL)/bin $(INSTTOOL) -d $(INSTALL)/bin
$(INSTTOOL) -m 755 ../../bin/doxywizard $(INSTALL)/bin $(INSTTOOL) -m 755 ../../bin/doxywizard $(INSTALL)/bin
$(INSTTOOL) -d $(INSTALL)/$(MAN1DIR)
cat ../../doc/doxywizard.1 | sed -e "s/DATE/$(DATE)/g" -e "s/VERSION/$(VERSION)/g" > doxywizard.1
$(INSTTOOL) -m 644 doxywizard.1 $(INSTALL)/$(MAN1DIR)/doxywizard.1
rm doxywizard.1
FORCE: FORCE:
...@@ -20,7 +20,7 @@ doxygen_version_minor=5 ...@@ -20,7 +20,7 @@ doxygen_version_minor=5
doxygen_version_revision=5 doxygen_version_revision=5
#NOTE: Setting version_mmn to "NO" will omit mmn info from the package. #NOTE: Setting version_mmn to "NO" will omit mmn info from the package.
doxygen_version_mmn=20080325 doxygen_version_mmn=20080420
bin_dirs=`echo $PATH | sed -e "s/:/ /g"` bin_dirs=`echo $PATH | sed -e "s/:/ /g"`
...@@ -537,11 +537,7 @@ fi ...@@ -537,11 +537,7 @@ fi
mkdir -p packages mkdir -p packages
mkdir -p packages/rpm mkdir -p packages/rpm
if test "$f_wizard" = YES; then cat spec.tmp ./packages/rpm/doxygen.spec.in > ./packages/rpm/doxygen.spec
cat spec.tmp ./packages/rpm/doxygen.spec.in > ./packages/rpm/doxygen.spec
else
cat spec.tmp ./packages/rpm/doxygen-nodoxywizard.spec.in > ./packages/rpm/doxygen.spec
fi
rm -f spec.tmp rm -f spec.tmp
...@@ -633,7 +629,11 @@ EOF ...@@ -633,7 +629,11 @@ EOF
fi fi
echo "" >> $DST echo "" >> $DST
fi fi
cat $SRC >> $DST if test $f_wizard = YES; then
sed -e "s/%%WITHDOXYWIZARD%% /--with doxywizard /g" $SRC >> $DST
else
sed -e "s/%%WITHDOXYWIZARD%% //g" $SRC >> $DST
fi
echo " Created $DST from $SRC..." echo " Created $DST from $SRC..."
done done
......
...@@ -54,7 +54,7 @@ documentation: ...@@ -54,7 +54,7 @@ documentation:
\refitem cmdcode \\code \refitem cmdcode \\code
\refitem cmdcond \\cond \refitem cmdcond \\cond
\refitem cmdcopybrief \\copybrief \refitem cmdcopybrief \\copybrief
\refitem cmdcopydefails \\copydetails \refitem cmdcopydetails \\copydetails
\refitem cmdcopydoc \\copydoc \refitem cmdcopydoc \\copydoc
\refitem cmddate \\date \refitem cmddate \\date
\refitem cmddef \\def \refitem cmddef \\def
...@@ -152,6 +152,7 @@ documentation: ...@@ -152,6 +152,7 @@ documentation:
\refitem cmdtest \\test \refitem cmdtest \\test
\refitem cmdthrow \\throw \refitem cmdthrow \\throw
\refitem cmdtodo \\todo \refitem cmdtodo \\todo
\refitem cmdtparam \\tparam
\refitem cmdtypedef \\typedef \refitem cmdtypedef \\typedef
\refitem cmdunion \\union \refitem cmdunion \\union
\refitem cmduntil \\until \refitem cmduntil \\until
...@@ -1087,7 +1088,7 @@ ALIASES = "english=\if english" \ ...@@ -1087,7 +1088,7 @@ ALIASES = "english=\if english" \
\addindex \\param \addindex \\param
Starts a parameter description for a function parameter with name Starts a parameter description for a function parameter with name
\<parameter-name\>. Followed by a description of the parameter. \<parameter-name\>, followed by a description of the parameter.
The existence of the parameter is checked and a warning is given if The existence of the parameter is checked and a warning is given if
the documentation of this (or any other) parameter is missing or not the documentation of this (or any other) parameter is missing or not
present in the function declaration or definition. present in the function declaration or definition.
...@@ -1116,6 +1117,16 @@ void memcpy(void *dest, const void *src, size_t n); ...@@ -1116,6 +1117,16 @@ void memcpy(void *dest, const void *src, size_t n);
sectioning command is encountered. See section \ref cmdfn "\\fn" for an sectioning command is encountered. See section \ref cmdfn "\\fn" for an
example. example.
<hr>
\section cmdtparam \\tparam <template-parameter-name> { description }
\addindex \\tparam
Starts a template parameters for a class or function template parameter
with name \<template-parameter-name\>, followed by a description of the
template parameter.
Otherwise similar to \ref cmdparam "\\cmdparam".
<hr> <hr>
\section cmdpost \\post { description of the postcondition } \section cmdpost \\post { description of the postcondition }
......
...@@ -113,6 +113,7 @@ followed by the descriptions of the tags grouped by category. ...@@ -113,6 +113,7 @@ followed by the descriptions of the tags grouped by category.
\refitem cfg_file_version_filter FILE_VERSION_FILTER \refitem cfg_file_version_filter FILE_VERSION_FILTER
\refitem cfg_filter_patterns FILTER_PATTERNS \refitem cfg_filter_patterns FILTER_PATTERNS
\refitem cfg_filter_source_files FILTER_SOURCE_FILES \refitem cfg_filter_source_files FILTER_SOURCE_FILES
\refitem cfg_formula_fontsize FORMULA_FONTSIZE
\refitem cfg_full_path_names FULL_PATH_NAMES \refitem cfg_full_path_names FULL_PATH_NAMES
\refitem cfg_generate_autogen_def GENERATE_AUTOGEN_DEF \refitem cfg_generate_autogen_def GENERATE_AUTOGEN_DEF
\refitem cfg_generate_buglist GENERATE_BUGLIST \refitem cfg_generate_buglist GENERATE_BUGLIST
...@@ -147,6 +148,7 @@ followed by the descriptions of the tags grouped by category. ...@@ -147,6 +148,7 @@ followed by the descriptions of the tags grouped by category.
\refitem cfg_html_header HTML_HEADER \refitem cfg_html_header HTML_HEADER
\refitem cfg_html_output HTML_OUTPUT \refitem cfg_html_output HTML_OUTPUT
\refitem cfg_html_stylesheet HTML_STYLESHEET \refitem cfg_html_stylesheet HTML_STYLESHEET
\refitem cfg_idl_property_support IDL_PROPERTY_SUPPORT
\refitem cfg_ignore_prefix IGNORE_PREFIX \refitem cfg_ignore_prefix IGNORE_PREFIX
\refitem cfg_image_path IMAGE_PATH \refitem cfg_image_path IMAGE_PATH
\refitem cfg_include_graph INCLUDE_GRAPH \refitem cfg_include_graph INCLUDE_GRAPH
...@@ -445,6 +447,16 @@ followed by the descriptions of the tags grouped by category. ...@@ -445,6 +447,16 @@ followed by the descriptions of the tags grouped by category.
Doxygen will parse them like normal C++ but will assume all classes use public Doxygen will parse them like normal C++ but will assume all classes use public
instead of private inheritance when no explicit protection keyword is present. instead of private inheritance when no explicit protection keyword is present.
\anchor cfg_idl_property_support
<dt>\c IDL_PROPERTY_SUPPORT <dd>
\addindex IDL_PROPERTY_SUPPORT
For Microsoft's IDL there are propget and propput attributes to indicate getter
and setter methods for a property. Setting this option to \c YES (the default)
will make doxygen to replace the get and set methods by a property in the
documentation. This will only work if the methods are indeed getting or
setting a simple type. If this is not the case, or you want to show the
methods anyway, you should set this option to \c NO.
\anchor cfg_distribute_group_doc \anchor cfg_distribute_group_doc
<dt>\c DISTRIBUTE_GROUP_DOC <dd> <dt>\c DISTRIBUTE_GROUP_DOC <dd>
\addindex DISTRIBUTE_GROUP_DOC \addindex DISTRIBUTE_GROUP_DOC
...@@ -1038,14 +1050,14 @@ FILE_VERSION_INFO = "cleartool desc -fmt \%Vn" ...@@ -1038,14 +1050,14 @@ FILE_VERSION_INFO = "cleartool desc -fmt \%Vn"
\anchor cfg_referenced_by_relation \anchor cfg_referenced_by_relation
<dt>\c REFERENCED_BY_RELATION <dd> <dt>\c REFERENCED_BY_RELATION <dd>
\addindex REFERENCED_BY_RELATION \addindex REFERENCED_BY_RELATION
If the \c REFERENCED_BY_RELATION tag is set to \c YES (the default) If the \c REFERENCED_BY_RELATION tag is set to \c YES
then for each documented function all documented then for each documented function all documented
functions referencing it will be listed. functions referencing it will be listed.
\anchor cfg_references_relation \anchor cfg_references_relation
<dt>\c REFERENCES_RELATION <dd> <dt>\c REFERENCES_RELATION <dd>
\addindex REFERENCES_RELATION \addindex REFERENCES_RELATION
If the \c REFERENCES_RELATION tag is set to \c YES (the default) If the \c REFERENCES_RELATION tag is set to \c YES
then for each documented function all documented entities then for each documented function all documented entities
called/used by that function will be listed. called/used by that function will be listed.
...@@ -1353,6 +1365,15 @@ FILE_VERSION_INFO = "cleartool desc -fmt \%Vn" ...@@ -1353,6 +1365,15 @@ FILE_VERSION_INFO = "cleartool desc -fmt \%Vn"
used to set the initial width (in pixels) of the frame in which the tree used to set the initial width (in pixels) of the frame in which the tree
is shown. is shown.
\anchor cfg_formula_fontsize
<dt>\c FORMULA_FONTSIZE <dd>
\addindex FORMULA_FONTSIZE
Use this tag to change the font size of Latex formulas included
as images in the HTML documentation. The default is 10.
when you change the font size after a successful doxygen run you need
to manually remove any <code>form_*.png</code> images from the HTML
output directory to force them to be regenerated.
</dl> </dl>
\section latex_output LaTeX related options \section latex_output LaTeX related options
\anchor cfg_generate_latex \anchor cfg_generate_latex
...@@ -1816,6 +1837,26 @@ TAGFILES = file1=loc1 "file2 = loc2" ... </pre> ...@@ -1816,6 +1837,26 @@ TAGFILES = file1=loc1 "file2 = loc2" ... </pre>
visualization toolkit from AT\&T and Lucent Bell Labs. The other options in visualization toolkit from AT\&T and Lucent Bell Labs. The other options in
this section have no effect if this option is set to \c NO (the default) this section have no effect if this option is set to \c NO (the default)
\anchor cfg_dot_fontname
<dt>\c DOT_FONTNAME <dd>
\addindex DOT_FONTNAME
By default doxygen will write a font called \c FreeSans.ttf to the output
directory and reference it in all dot files that doxygen generates. This
font does not include all possible unicode characters however, so when you need
these (or just want a differently looking font) you can specify the font name
using \c DOT_FONTNAME. You need need to make sure dot is able to find the font,
which can be done by putting it in a standard location or by setting the
\c DOTFONTPATH environment variable or by setting \c DOT_FONTPATH to the directory
containing the font.
\anchor cfg_dot_fontpath
<dt>\c DOT_FONTPATH <dd>
\addindex DOT_FONTPATH
By default doxygen will tell dot to use the output directory to look for the
\c FreeSans.ttf font (which doxygen will put there itself). If you specify a
different font using \c DOT_FONTNAME you can set the path where dot
can find it using this tag.
<dt>\c DOT_FONTNAME <dd> <dt>\c DOT_FONTNAME <dd>
\addindex DOT_FONTNAME \addindex DOT_FONTNAME
By default doxygen will write a font called FreeSans.ttf to the output By default doxygen will write a font called FreeSans.ttf to the output
...@@ -1927,7 +1968,7 @@ TAGFILES = file1=loc1 "file2 = loc2" ... </pre> ...@@ -1927,7 +1968,7 @@ TAGFILES = file1=loc1 "file2 = loc2" ... </pre>
\anchor cfg_dot_graph_max_nodes \anchor cfg_dot_graph_max_nodes
<dt>\c DOT_GRAPH_MAX_NODES <dd> <dt>\c DOT_GRAPH_MAX_NODES <dd>
\addindex DOT_GRAPH_MAX_NODES \addindex DOT_GRAPH_MAX_NODES
The \c MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of The \c DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
nodes that will be shown in the graph. If the number of nodes in a graph nodes that will be shown in the graph. If the number of nodes in a graph
becomes larger than this value, doxygen will truncate the graph, which is becomes larger than this value, doxygen will truncate the graph, which is
visualized by representing a node as a red box. Note that doxygen if the number visualized by representing a node as a red box. Note that doxygen if the number
......
...@@ -81,7 +81,7 @@ produce. For HTML and LaTeX there are additional options. ...@@ -81,7 +81,7 @@ produce. For HTML and LaTeX there are additional options.
Doxygen can produce a number of diagrams. Using the diagrams tab you Doxygen can produce a number of diagrams. Using the diagrams tab you
can select which ones to generate. For most diagrams the can select which ones to generate. For most diagrams the
dot tool of the <a href="http://www.graphviz.org">GraphViz</a> package dot tool of the <a href="http://www.graphviz.org">GraphViz</a> package
is needed (if you use the binary packages for Mac or Windows this is needed (if you use the binary packages for MacOSX this
tool is already included). tool is already included).
<h3>Expert dialog</h3> <h3>Expert dialog</h3>
......
...@@ -119,9 +119,9 @@ when the translator was updated. ...@@ -119,9 +119,9 @@ when the translator was updated.
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Finnish</td> <td>Finnish</td>
<td>Olli Korhonen</td> <td>Antti Laine</td>
<td>olli.korhonen lost at cyberspace</td> <td>antti.a.laine at tut dot fi</td>
<td>obsolete</td> <td>up-to-date</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>French</td> <td>French</td>
...@@ -307,7 +307,7 @@ when the translator was updated. ...@@ -307,7 +307,7 @@ when the translator was updated.
\hline \hline
English & Dimitri van Heesch & {\tt\tiny dimitri@stack.nl} & up-to-date \\ English & Dimitri van Heesch & {\tt\tiny dimitri@stack.nl} & up-to-date \\
\hline \hline
Finnish & Olli Korhonen & {\tt\tiny olli.korhonen lost@cyberspace} & obsolete \\ Finnish & Antti Laine & {\tt\tiny antti.a.laine@tut.fi} & up-to-date \\
\hline \hline
French & Xavier Outhier & {\tt\tiny xouthier@yahoo.fr} & 1.5.4 \\ French & Xavier Outhier & {\tt\tiny xouthier@yahoo.fr} & 1.5.4 \\
\hline \hline
......
...@@ -46,7 +46,7 @@ TranslatorEnglish ...@@ -46,7 +46,7 @@ TranslatorEnglish
Dimitri van Heesch: dimitri@stack.nl Dimitri van Heesch: dimitri@stack.nl
TranslatorFinnish TranslatorFinnish
Olli Korhonen: olli.korhonen lost@cyberspace Antti Laine: antti.a.laine@tut.fi
TranslatorFrench TranslatorFrench
Xavier Outhier: xouthier@yahoo.fr Xavier Outhier: xouthier@yahoo.fr
......
...@@ -9,7 +9,7 @@ German, Greek, Hungarian, Indonesian, Italian, Japanese (+En), Korean ...@@ -9,7 +9,7 @@ German, Greek, Hungarian, Indonesian, Italian, Japanese (+En), Korean
Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and
Ukrainian. Ukrainian.
Of them, 12 translators are up-to-date, 22 translators are based on Of them, 13 translators are up-to-date, 21 translators are based on
some adapter class, and 2 are English based. some adapter class, and 2 are English based.
---------------------------------------------------------------------- ----------------------------------------------------------------------
...@@ -25,6 +25,7 @@ still may be some details listed even for them: ...@@ -25,6 +25,7 @@ still may be some details listed even for them:
TranslatorCzech TranslatorCzech
TranslatorDutch TranslatorDutch
TranslatorEnglish TranslatorEnglish
TranslatorFinnish
TranslatorGerman TranslatorGerman
TranslatorItalian TranslatorItalian
TranslatorKorean TranslatorKorean
...@@ -60,7 +61,6 @@ must be implemented to become up-to-date: ...@@ -60,7 +61,6 @@ must be implemented to become up-to-date:
TranslatorRomanian 1.4.1 24 methods to implement TranslatorRomanian 1.4.1 24 methods to implement
TranslatorPortuguese 1.3.3 35 methods to implement TranslatorPortuguese 1.3.3 35 methods to implement
TranslatorSlovak 1.2.18 44 methods to implement TranslatorSlovak 1.2.18 44 methods to implement
TranslatorFinnish obsolete 118 methods to implement
---------------------------------------------------------------------- ----------------------------------------------------------------------
The following translator classes derive directly from the The following translator classes derive directly from the
...@@ -215,144 +215,6 @@ TranslatorDanish (TranslatorAdapter_1_5_4) 22 methods to implement ...@@ -215,144 +215,6 @@ TranslatorDanish (TranslatorAdapter_1_5_4) 22 methods to implement
virtual QCString trSubprogramDocumentation() virtual QCString trSubprogramDocumentation()
TranslatorFinnish (TranslatorEnglish) 118 methods to implement
-----------------
Implements 98 of the required methods.
Missing methods (should be implemented):
virtual QCString trPublicAttribs()
virtual QCString trPropertyDocumentation()
virtual QCString trMember(bool first_capital, bool singular)
virtual QCString trPageIndex()
virtual QCString trCompoundMembersDescriptionFortran(bool extractAll)
virtual QCString trOverloadText()
virtual QCString trSince()
virtual QCString trEventDocumentation()
virtual QCString trDirIndex()
virtual QCString trRemarks()
virtual QCString trProtectedTypes()
virtual QCString trGeneratedFromFilesFortran(ClassDef::CompoundType compType, bool single)
virtual QCString trFile(bool first_capital, bool singular)
virtual QCString trPackages()
virtual QCString trInclByDepGraph()
virtual QCString trRTFansicp()
virtual QCString trImplementedFromList(int numEntries)
virtual QCString trSubprograms()
virtual QCString trCollaborationDiagram(const char * clName)
virtual QCString trPackageListDescription()
virtual QCString trDefineValue()
virtual QCString trPackageMembers()
virtual QCString trStaticPackageMembers()
virtual QCString trModulesListDescription(bool extractAll)
virtual QCString trModulesList()
virtual QCString trDirDocumentation()
virtual QCString trPackage(const char * name)
virtual QCString trPublicTypes()
virtual QCString trSearchResultsTitle()
virtual QCString trDirectories()
virtual QCString trTest()
virtual QCString trTypeConstraints()
virtual QCString trInvariant()
virtual QCString trDeprecatedList()
virtual QCString trGraphicalHierarchy()
virtual QCString trPostcondition()
virtual QCString trGotoGraphicalHierarchy()
virtual QCString trPageAbbreviation()
virtual QCString trMemberFunctionDocumentationFortran()
virtual QCString trDirDescription()
virtual QCString trGotoSourceCode()
virtual QCString trStaticPackageAttribs()
virtual QCString trCompoundListDescriptionFortran()
virtual QCString trCallGraph()
virtual QCString trStaticPublicAttribs()
virtual QCString trCode()
virtual QCString trTodo()
virtual QCString trTypeDocumentation()
virtual QCString trModuleReference(const char * namespaceName)
virtual QCString trModulesMemberDescription(bool extractAll)
virtual QCString trRTFCharSet()
virtual QCString trModulesMembers()
virtual QCString trInitialValue()
virtual QCString trAlphabeticalList()
virtual QCString trBug()
virtual QCString trNote()
virtual QCString trStaticPrivateAttribs()
virtual QCString trAttention()
virtual QCString trGotoTextualHierarchy()
virtual QCString trModulesIndex()
virtual QCString trPackageTypes()
virtual QCString trMainPage()
virtual QCString trDeprecated()
virtual QCString trCompoundListFortran()
virtual QCString trClass(bool first_capital, bool singular)
virtual QCString trImplementedInList(int numEntries)
virtual QCString trPrivateTypes()
virtual QCString trDataTypes()
virtual QCString trInclDepGraph(const char * fName)
virtual QCString trSearchResults(int numDocuments)
virtual QCString trGeneratedFromFiles(ClassDef::CompoundType compType, bool single)
virtual QCString trNamespaces()
virtual QCString trPrivateAttribs()
virtual QCString idLanguageCharset()
virtual QCString trDefinedInSourceFile()
virtual QCString trConstructorDocumentation()
virtual QCString trLegend()
virtual QCString trPackageAttribs()
virtual QCString trSearchMatches()
virtual QCString trClasses()
virtual QCString trProtectedAttribs()
virtual QCString trLegendTitle()
virtual QCString trCompoundIndexFortran()
virtual QCString trSubprogram(bool first_capital, bool singular)
virtual QCString trEvents()
virtual QCString trGlobal(bool first_capital, bool singular)
virtual QCString trDCOPMethods()
virtual QCString latexLanguageSupportCommand()
virtual QCString trBugList()
virtual QCString trRTFGeneralIndex()
virtual QCString trCallerGraph()
virtual QCString trNamespace(bool first_capital, bool singular)
virtual QCString trTestList()
virtual QCString trPrecondition()
virtual QCString trCompoundReferenceFortran(const char * clName, ClassDef::CompoundType compType, bool isTemplate)
virtual QCString trReturnValues()
virtual QCString trReferences()
virtual QCString trType(bool first_capital, bool singular)
virtual QCString trAuthor(bool first_capital, bool singular)
virtual QCString trLegendDocs()
virtual QCString trModule(bool first_capital, bool singular)
virtual QCString trPackageList()
virtual QCString trTodoList()
virtual QCString trPage(bool first_capital, bool singular)
virtual QCString trCompoundMembersFortran()
virtual QCString trSourceFile(QCString & filename)
virtual QCString trGotoDocumentation()
virtual QCString trDefinedAtLineInSourceFile()
virtual QCString trDirReference(const char * dirName)
virtual QCString trDir(bool first_capital, bool singular)
virtual QCString trSearchForIndex()
virtual QCString trAll()
virtual QCString trSubprogramDocumentation()
virtual QCString trRTFTableOfContents()
virtual QCString trGroup(bool first_capital, bool singular)
virtual QCString trReferencedBy()
virtual QCString trStaticProtectedAttribs()
virtual QCString trProperties()
Obsolete methods (should be removed, never used):
QCString trHeaderFilesDescription()
QCString trReimplementedForInternalReasons()
QCString trFiles()
virtual QCString updateNeededMessage()
QCString trHeaderFiles()
QCString trAuthors()
QCString trBugsAndLimitations()
QCString trNoDescriptionAvailable()
TranslatorFrench (TranslatorAdapter_1_5_4) 22 methods to implement TranslatorFrench (TranslatorAdapter_1_5_4) 22 methods to implement
---------------- ----------------
......
%define name doxygen
%define contentdir /var/www
%define suexec_caller doxygen
%define buildroot /var/tmp/%{name}-%{version}-%{revision}root
Summary: A documentation system for C/C++.
Name: doxygen
Version: %{version}
Release: %{revision}
URL: http://www.stack.nl/~dimitri/doxygen/index.html
Vendor: Dimitri van Heesch
License: GNU General Public License
Group: Development/Tools
Source: %{name}-%{version}_%{revision}.src.tar.gz
BuildRoot: %{buildroot}
BuildPrereq: libstdc++-devel >= 2.96, /usr/bin/perl, /usr/bin/latex, /usr/bin/dvips
Prereq: /sbin/chkconfig, /bin/mktemp, /bin/rm, /bin/mv, libstdc++ >= 2.96
Provides: doxygen = %{mmn}
%description
Doxygen can generate an online class browser (in HTML) and/or a
reference manual (in LaTeX) from a set of documented source files. The
documentation is extracted directly from the sources. Doxygen can
also be configured to extract the code structure from undocumented
source files.
%prep
%setup -q -n %{name}-%{version}_%{revision}
./configure --prefix $RPM_BUILD_ROOT/usr
%build
make %{?_smp_mflags}
make %{?_smp_mflags} pdf
%install
rm -rf $RPM_BUILD_ROOT
make install
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root)
%doc README LICENSE LANGUAGE.HOWTO examples ./latex/*.pdf
%doc /usr/man/man1/doxygen.1.gz
%doc /usr/man/man1/doxytag.1.gz
%{_bindir}/doxygen
%{_bindir}/doxytag
%changelog
* Sun Nov 18 2007 Kevin McBride <kevin@planetsaphire.com> 1.5.4
- consolidated manual package in lieu of --excludedocs flag for rpm --install
* Fri Oct 21 2005 Kevin McBride <kevin@planetsaphire.com> 1.4.5
- made .spec file compatible with tmake
* Mon Oct 10 2005 Kevin McBride <kevin@planetsaphire.com> 1.4.5
- fixed versioning bugs.
* Tue Oct 4 2005 Kevin McBride <kevin@planetsaphire.com> 1.4.5
- added obsoletes and proides sections.
* Sun Sep 20 2005 Kevin McBride <kevin@planetsaphire.com> 1.4.4
- modified rpm spec file for Fedora Core acceptance criteria.
* Sun Aug 7 2005 Kevin McBride <kevin@planetsaphire.com> 1.4.4
- created initial rpm spec file for doxygen-1.4.4
%define name doxygen %define name doxygen
# optionally pass --with-doxywizard to rpmbuild
%define contentdir /var/www %define contentdir /var/www
%define suexec_caller doxygen %define suexec_caller doxygen
%define buildroot /var/tmp/%{name}-%{version}-%{revision}root %define buildroot /var/tmp/%{name}-%{version}-%{revision}root
...@@ -14,7 +16,7 @@ License: GNU General Public License ...@@ -14,7 +16,7 @@ License: GNU General Public License
Group: Development/Tools Group: Development/Tools
Source: %{name}-%{version}_%{revision}.src.tar.gz Source: %{name}-%{version}_%{revision}.src.tar.gz
BuildRoot: %{buildroot} BuildRoot: %{buildroot}
BuildPrereq: libstdc++-devel >= 2.96, /usr/bin/perl, /usr/bin/latex, /usr/bin/dvips BuildPrereq: libstdc++-devel >= 2.96, /usr/bin/perl, /usr/bin/latex, /usr/bin/dvips, /usr/bin/gs
Prereq: /sbin/chkconfig, /bin/mktemp, /bin/rm, /bin/mv, libstdc++ >= 2.96 Prereq: /sbin/chkconfig, /bin/mktemp, /bin/rm, /bin/mv, libstdc++ >= 2.96
Provides: doxygen = %{mmn} Provides: doxygen = %{mmn}
...@@ -25,6 +27,7 @@ documentation is extracted directly from the sources. Doxygen can ...@@ -25,6 +27,7 @@ documentation is extracted directly from the sources. Doxygen can
also be configured to extract the code structure from undocumented also be configured to extract the code structure from undocumented
source files. source files.
%if %{?_with_doxywizard:1}%{!?_with_doxywizard:0}
%package doxywizard %package doxywizard
Group: Development/Libraries Group: Development/Libraries
Summary: GUI Interface for doxygen. Summary: GUI Interface for doxygen.
...@@ -42,10 +45,11 @@ source files. ...@@ -42,10 +45,11 @@ source files.
This is the GUI interface for doxygen. It requires qt and X11 to This is the GUI interface for doxygen. It requires qt and X11 to
install. install.
%endif
%prep %prep
%setup -q -n %{name}-%{version}_%{revision} %setup -q -n %{name}-%{version}_%{revision}
./configure --with-doxywizard --prefix $RPM_BUILD_ROOT/usr ./configure %{?_with_doxywizard} --prefix $RPM_BUILD_ROOT/usr
%build %build
make %{?_smp_mflags} make %{?_smp_mflags}
...@@ -68,12 +72,18 @@ rm -rf $RPM_BUILD_ROOT ...@@ -68,12 +72,18 @@ rm -rf $RPM_BUILD_ROOT
%{_bindir}/doxygen %{_bindir}/doxygen
%{_bindir}/doxytag %{_bindir}/doxytag
%if %{?_with_doxywizard:1}%{!?_with_doxywizard:0}
%files doxywizard %files doxywizard
%defattr(-,root,root) %defattr(-,root,root)
%{_bindir}/doxywizard %{_bindir}/doxywizard
%doc /usr/man/man1/doxywizard.1.gz %doc /usr/man/man1/doxywizard.1.gz
%endif
%changelog %changelog
* Fri Apr 18 2008 Kenneth Porter <shiva+doxygenspec@sewingwitch.com> 1.5.5-1
- consolidate with and without doxywizard spec files with rpm macro
- add gs BuildPrereq
* Sun Nov 18 2007 Kevin McBride <kevin@planetsaphire.com> 1.5.4 * Sun Nov 18 2007 Kevin McBride <kevin@planetsaphire.com> 1.5.4
- consolidated manual package in lieu of --excludedocs flag for rpm --install - consolidated manual package in lieu of --excludedocs flag for rpm --install
......
...@@ -1075,6 +1075,12 @@ void ClassDef::writeClassDiagrams(OutputList &ol) ...@@ -1075,6 +1075,12 @@ void ClassDef::writeClassDiagrams(OutputList &ol)
if (ok && bcd) if (ok && bcd)
{ {
ClassDef *cd=bcd->classDef; ClassDef *cd=bcd->classDef;
// use the class name but with the template arguments as given
// in the inheritance relation
QCString displayName = insertTemplateSpecifierInScope(
cd->name(),bcd->templSpecifiers);
if (cd->isLinkable()) if (cd->isLinkable())
{ {
if (!Config_getString("GENERATE_TAGFILE").isEmpty()) if (!Config_getString("GENERATE_TAGFILE").isEmpty())
...@@ -1098,11 +1104,11 @@ void ClassDef::writeClassDiagrams(OutputList &ol) ...@@ -1098,11 +1104,11 @@ void ClassDef::writeClassDiagrams(OutputList &ol)
ol.writeObjectLink(cd->getReference(), ol.writeObjectLink(cd->getReference(),
cd->getOutputFileBase(), cd->getOutputFileBase(),
0, 0,
cd->displayName()+bcd->templSpecifiers); displayName);
} }
else else
{ {
ol.docify(cd->displayName()); ol.docify(displayName);
} }
} }
else else
...@@ -3384,3 +3390,15 @@ bool ClassDef::isUsedOnly() const ...@@ -3384,3 +3390,15 @@ bool ClassDef::isUsedOnly() const
return m_impl->usedOnly; return m_impl->usedOnly;
} }
void ClassDef::reclassifyMember(MemberDef *md,MemberDef::MemberType t)
{
md->setMemberType(t);
MemberList *ml = m_impl->memberLists.first();
while (ml)
{
ml->remove(md);
ml = m_impl->memberLists.next();
}
insertMember(md);
}
...@@ -314,6 +314,7 @@ class ClassDef : public Definition ...@@ -314,6 +314,7 @@ class ClassDef : public Definition
void writeDeclaration(OutputList &ol,MemberDef *md,bool inGroup); void writeDeclaration(OutputList &ol,MemberDef *md,bool inGroup);
void writeDetailedDescription(OutputList &ol,const QCString &pageType,bool exampleFlag); void writeDetailedDescription(OutputList &ol,const QCString &pageType,bool exampleFlag);
void writeQuickMemberLinks(OutputList &ol,MemberDef *md) const; void writeQuickMemberLinks(OutputList &ol,MemberDef *md) const;
void reclassifyMember(MemberDef *md,MemberDef::MemberType t);
bool visited; bool visited;
......
...@@ -961,7 +961,7 @@ void Config::check() ...@@ -961,7 +961,7 @@ void Config::check()
//} //}
QCString &warnFormat = Config_getString("WARN_FORMAT"); QCString &warnFormat = Config_getString("WARN_FORMAT");
if (warnFormat.isEmpty()) if (warnFormat.stripWhiteSpace().isEmpty())
{ {
warnFormat="$file:$line $text"; warnFormat="$file:$line $text";
} }
...@@ -969,18 +969,15 @@ void Config::check() ...@@ -969,18 +969,15 @@ void Config::check()
{ {
if (warnFormat.find("$file")==-1) if (warnFormat.find("$file")==-1)
{ {
config_err("Error: warning format does not contain a $file tag!\n"); config_err("Warning: warning format does not contain a $file tag!\n");
exit(1);
} }
if (warnFormat.find("$line")==-1) if (warnFormat.find("$line")==-1)
{ {
config_err("Error: warning format does not contain a $line tag!\n"); config_err("Warning: warning format does not contain a $line tag!\n");
exit(1);
} }
if (warnFormat.find("$text")==-1) if (warnFormat.find("$text")==-1)
{ {
config_err("Error: wanring format foes not contain a $text tag!\n"); config_err("Warning: warning format foes not contain a $text tag!\n");
exit(1);
} }
} }
...@@ -1248,6 +1245,28 @@ void Config::check() ...@@ -1248,6 +1245,28 @@ void Config::check()
examplePatternList.append("*"); examplePatternList.append("*");
} }
// if no output format is enabled, warn the user
if (!Config_getBool("GENERATE_HTML") &&
!Config_getBool("GENERATE_LATEX") &&
!Config_getBool("GENERATE_MAN") &&
!Config_getBool("GENERATE_RTF") &&
!Config_getBool("GENERATE_XML") &&
!Config_getBool("GENERATE_PERLMOD") &&
!Config_getBool("GENERATE_RTF") &&
!Config_getBool("GENERATE_AUTOGEN_DEF") &&
Config_getString("GENERATE_TAGFILE").isEmpty()
)
{
config_err("Warning: No output formats selected! Set at least one of the main GENERATE_* options to YES.\n");
}
// you can't generate HTMLHELP without HTML enabled!
if (!Config_getBool("GENERATE_HTML") &&
Config_getBool("GENERATE_HTMLHELP"))
{
config_err("Warning: GENERATE_HTMLHELP=YES requires GENERATE_HTML=YES.\n");
}
if (Config_getBool("HAVE_DOT")) if (Config_getBool("HAVE_DOT"))
{ {
QCString curFontPath = Config_getString("DOT_FONTPATH"); QCString curFontPath = Config_getString("DOT_FONTPATH");
...@@ -1299,28 +1318,6 @@ void Config::check() ...@@ -1299,28 +1318,6 @@ void Config::check()
annotationFromBrief.append("the"); annotationFromBrief.append("the");
} }
#if 0
if (Config_getBool("CALL_GRAPH") &&
(!Config_getBool("SOURCE_BROWSER") || !Config_getBool("REFERENCES_RELATION"))
)
{
config_err("Warning: turning on CALL_GRAPH requires turning "
"SOURCE_BROWSER and\nREFERENCES_RELATION on as well!\n"
"Assuming SOURCE_BROWSER=YES and REFERENCES_RELATION=YES\n");
Config_getBool("SOURCE_BROWSER")=TRUE;
Config_getBool("REFERENCES_RELATION")=TRUE;
}
if (Config_getBool("CALLER_GRAPH") &&
(!Config_getBool("SOURCE_BROWSER") || !Config_getBool("REFERENCED_BY_RELATION"))
)
{
config_err("Warning: turning on CALLER_GRAPH requires turning "
"SOURCE_BROWSER and\nREFERENCEDBY_RELATION on as well!\n"
"Assuming SOURCE_BROWSER=YES and REFERENCED_BY_RELATION=YES\n");
Config_getBool("SOURCE_BROWSER")=TRUE;
Config_getBool("REFERENCED_BY_RELATION")=TRUE;
}
#endif
// some default settings for vhdl // some default settings for vhdl
if (Config_getBool("OPTIMIZE_OUTPUT_VHDL") && if (Config_getBool("OPTIMIZE_OUTPUT_VHDL") &&
(Config_getBool("INLINE_INHERITED_MEMB") || (Config_getBool("INLINE_INHERITED_MEMB") ||
...@@ -1743,6 +1740,15 @@ void Config::create() ...@@ -1743,6 +1740,15 @@ void Config::create()
"instead of private inheritance when no explicit protection keyword is present. \n", "instead of private inheritance when no explicit protection keyword is present. \n",
FALSE FALSE
); );
cb = addBool( "IDL_PROPERTY_SUPPORT",
"For Microsoft's IDL there are propget and propput attributes to indicate getter \n"
"and setter methods for a property. Setting this option to YES (the default) \n"
"will make doxygen to replace the get and set methods by a property in the \n"
"documentation. This will only work if the methods are indeed getting or \n"
"setting a simple type. If this is not the case, or you want to show the \n"
"methods anyway, you should set this option to NO. \n",
TRUE
);
cb = addBool( cb = addBool(
"DISTRIBUTE_GROUP_DOC", "DISTRIBUTE_GROUP_DOC",
"If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC \n" "If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC \n"
...@@ -2209,13 +2215,13 @@ void Config::create() ...@@ -2209,13 +2215,13 @@ void Config::create()
TRUE TRUE
); );
cb = addBool( "REFERENCED_BY_RELATION", cb = addBool( "REFERENCED_BY_RELATION",
"If the REFERENCED_BY_RELATION tag is set to YES (the default) \n" "If the REFERENCED_BY_RELATION tag is set to YES \n"
"then for each documented function all documented \n" "then for each documented function all documented \n"
"functions referencing it will be listed. \n", "functions referencing it will be listed. \n",
FALSE FALSE
); );
cb = addBool( "REFERENCES_RELATION", cb = addBool( "REFERENCES_RELATION",
"If the REFERENCES_RELATION tag is set to YES (the default) \n" "If the REFERENCES_RELATION tag is set to YES \n"
"then for each documented function all documented entities \n" "then for each documented function all documented entities \n"
"called/used by that function will be listed. \n", "called/used by that function will be listed. \n",
FALSE FALSE
...@@ -2339,8 +2345,8 @@ void Config::create() ...@@ -2339,8 +2345,8 @@ void Config::create()
"of the generated HTML documentation. \n", "of the generated HTML documentation. \n",
FALSE FALSE
); );
cb = addBool( cb->addDependency("GENERATE_HTML");
"GENERATE_DOCSET", cb = addBool( "GENERATE_DOCSET",
"If the GENERATE_DOCSET tag is set to YES, additional index files \n" "If the GENERATE_DOCSET tag is set to YES, additional index files \n"
"will be generated that can be used as input for Apple's Xcode 3 \n" "will be generated that can be used as input for Apple's Xcode 3 \n"
"integrated development environment, introduced with OSX 10.5 (Leopard). \n" "integrated development environment, introduced with OSX 10.5 (Leopard). \n"
...@@ -2360,7 +2366,7 @@ void Config::create() ...@@ -2360,7 +2366,7 @@ void Config::create()
"can be grouped. \n" "can be grouped. \n"
); );
cs->setDefaultValue("Doxygen generated docs"); cs->setDefaultValue("Doxygen generated docs");
cb->addDependency("GENERATE_DOCSET"); cs->addDependency("GENERATE_DOCSET");
cs = addString( cs = addString(
"DOCSET_BUNDLE_ID", "DOCSET_BUNDLE_ID",
"When GENERATE_DOCSET tag is set to YES, this tag specifies a string that \n" "When GENERATE_DOCSET tag is set to YES, this tag specifies a string that \n"
...@@ -2369,7 +2375,7 @@ void Config::create() ...@@ -2369,7 +2375,7 @@ void Config::create()
"will append .docset to the name. \n" "will append .docset to the name. \n"
); );
cs->setDefaultValue("org.doxygen.Project"); cs->setDefaultValue("org.doxygen.Project");
cb->addDependency("GENERATE_DOCSET"); cs->addDependency("GENERATE_DOCSET");
cb = addBool( cb = addBool(
"HTML_DYNAMIC_SECTIONS", "HTML_DYNAMIC_SECTIONS",
...@@ -2468,6 +2474,16 @@ void Config::create() ...@@ -2468,6 +2474,16 @@ void Config::create()
0,1500,250 0,1500,250
); );
ci->addDependency("GENERATE_HTML"); ci->addDependency("GENERATE_HTML");
ci = addInt(
"FORMULA_FONTSIZE",
"Use this tag to change the font size of Latex formulas included \n"
"as images in the HTML documentation. The default is 10. Note that \n"
"when you change the font size after a successful doxygen run you need \n"
"to manually remove any form_*.png images from the HTML output directory \n"
"to force them to be regenerated. \n",
8,50,10
);
ci->addDependency("GENERATE_HTML");
//----------------------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------------------
addInfo( "LaTeX","configuration options related to the LaTeX output"); addInfo( "LaTeX","configuration options related to the LaTeX output");
...@@ -3080,7 +3096,7 @@ void Config::create() ...@@ -3080,7 +3096,7 @@ void Config::create()
cl->addDependency("HAVE_DOT"); cl->addDependency("HAVE_DOT");
ci = addInt( ci = addInt(
"DOT_GRAPH_MAX_NODES", "DOT_GRAPH_MAX_NODES",
"The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of \n" "The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of \n"
"nodes that will be shown in the graph. If the number of nodes in a graph \n" "nodes that will be shown in the graph. If the number of nodes in a graph \n"
"becomes larger than this value, doxygen will truncate the graph, which is \n" "becomes larger than this value, doxygen will truncate the graph, which is \n"
"visualized by representing a node as a red box. Note that doxygen if the \n" "visualized by representing a node as a red box. Note that doxygen if the \n"
......
...@@ -317,7 +317,7 @@ ID [a-z_A-Z][a-z_A-Z0-9]* ...@@ -317,7 +317,7 @@ ID [a-z_A-Z][a-z_A-Z0-9]*
a->array = a->array.mid(1,alen-2); a->array = a->array.mid(1,alen-2);
if (i>0 && a->name.isEmpty()) if (i>0 && a->name.isEmpty())
{ {
a->name = a->array.left(i); a->name = a->array.left(i).stripWhiteSpace();
a->array = a->array.mid(i); a->array = a->array.mid(i);
} }
} }
......
...@@ -479,7 +479,7 @@ void generateDEFSection(Definition *d, ...@@ -479,7 +479,7 @@ void generateDEFSection(Definition *d,
MemberList *ml, MemberList *ml,
const char *kind) const char *kind)
{ {
if (ml->count()>0) if (ml && ml->count()>0)
{ {
t << " " << kind << " = {" << endl; t << " " << kind << " = {" << endl;
MemberListIterator mli(*ml); MemberListIterator mli(*ml);
......
...@@ -208,7 +208,9 @@ QCString DiagramItem::label() const ...@@ -208,7 +208,9 @@ QCString DiagramItem::label() const
QCString result; QCString result;
if (!templSpec.isEmpty()) if (!templSpec.isEmpty())
{ {
result=insertTemplateSpecifierInScope(classDef->displayName(),templSpec); // we use classDef->name() here and not diplayName() in order
// to get the name used in the inheritance relation.
result=insertTemplateSpecifierInScope(classDef->name(),templSpec);
} }
else else
{ {
......
...@@ -339,6 +339,7 @@ static void checkArgumentName(const QString &name,bool isParam) ...@@ -339,6 +339,7 @@ static void checkArgumentName(const QString &name,bool isParam)
for (ali.toFirst();(a=ali.current());++ali) for (ali.toFirst();(a=ali.current());++ali)
{ {
QString argName = g_memberDef->isDefine() ? a->type : a->name; QString argName = g_memberDef->isDefine() ? a->type : a->name;
argName=argName.stripWhiteSpace();
//printf("argName=`%s'\n",argName.data()); //printf("argName=`%s'\n",argName.data());
if (argName.right(3)=="...") argName=argName.left(argName.length()-3); if (argName.right(3)=="...") argName=argName.left(argName.length()-3);
if (aName==argName) if (aName==argName)
...@@ -368,7 +369,7 @@ static void checkArgumentName(const QString &name,bool isParam) ...@@ -368,7 +369,7 @@ static void checkArgumentName(const QString &name,bool isParam)
} }
warn_doc_error(docFile,docLine, warn_doc_error(docFile,docLine,
"Warning: argument `%s' of command @param " "Warning: argument '%s' of command @param "
"is not found in the argument list of %s%s%s%s", "is not found in the argument list of %s%s%s%s",
aName.data(),scope.data(),g_memberDef->name().data(), aName.data(),scope.data(),g_memberDef->name().data(),
argListToString(al.pointer()).data(),inheritedFrom.data()); argListToString(al.pointer()).data(),inheritedFrom.data());
...@@ -397,6 +398,7 @@ static void checkUndocumentedParams() ...@@ -397,6 +398,7 @@ static void checkUndocumentedParams()
for (ali.toFirst();(a=ali.current());++ali) for (ali.toFirst();(a=ali.current());++ali)
{ {
QString argName = g_memberDef->isDefine() ? a->type : a->name; QString argName = g_memberDef->isDefine() ? a->type : a->name;
argName=argName.stripWhiteSpace();
if (argName.right(3)=="...") argName=argName.left(argName.length()-3); if (argName.right(3)=="...") argName=argName.left(argName.length()-3);
if (!argName.isEmpty() && g_paramsFound.find(argName)==0 && a->docs.isEmpty()) if (!argName.isEmpty() && g_paramsFound.find(argName)==0 && a->docs.isEmpty())
{ {
...@@ -415,6 +417,7 @@ static void checkUndocumentedParams() ...@@ -415,6 +417,7 @@ static void checkUndocumentedParams()
for (ali.toFirst();(a=ali.current());++ali) for (ali.toFirst();(a=ali.current());++ali)
{ {
QString argName = g_memberDef->isDefine() ? a->type : a->name; QString argName = g_memberDef->isDefine() ? a->type : a->name;
argName=argName.stripWhiteSpace();
if (!argName.isEmpty() && g_paramsFound.find(argName)==0) if (!argName.isEmpty() && g_paramsFound.find(argName)==0)
{ {
if (!first) if (!first)
...@@ -425,7 +428,7 @@ static void checkUndocumentedParams() ...@@ -425,7 +428,7 @@ static void checkUndocumentedParams()
{ {
first=FALSE; first=FALSE;
} }
errMsg+=" parameter "+argName; errMsg+=" parameter '"+argName+"'";
} }
} }
if (g_memberDef->inheritsDocsFrom()) if (g_memberDef->inheritsDocsFrom())
......
...@@ -617,6 +617,7 @@ void DotNode::writeBox(QTextStream &t, ...@@ -617,6 +617,7 @@ void DotNode::writeBox(QTextStream &t,
t << "\\n|"; t << "\\n|";
writeBoxMemberList(t,'+',m_classDef->getMemberList(MemberList::pubAttribs),m_classDef); writeBoxMemberList(t,'+',m_classDef->getMemberList(MemberList::pubAttribs),m_classDef);
writeBoxMemberList(t,'+',m_classDef->getMemberList(MemberList::pubStaticAttribs),m_classDef); writeBoxMemberList(t,'+',m_classDef->getMemberList(MemberList::pubStaticAttribs),m_classDef);
writeBoxMemberList(t,'+',m_classDef->getMemberList(MemberList::properties),m_classDef);
writeBoxMemberList(t,'~',m_classDef->getMemberList(MemberList::pacAttribs),m_classDef); writeBoxMemberList(t,'~',m_classDef->getMemberList(MemberList::pacAttribs),m_classDef);
writeBoxMemberList(t,'~',m_classDef->getMemberList(MemberList::pacStaticAttribs),m_classDef); writeBoxMemberList(t,'~',m_classDef->getMemberList(MemberList::pacStaticAttribs),m_classDef);
writeBoxMemberList(t,'#',m_classDef->getMemberList(MemberList::proAttribs),m_classDef); writeBoxMemberList(t,'#',m_classDef->getMemberList(MemberList::proAttribs),m_classDef);
......
...@@ -1938,15 +1938,27 @@ static MemberDef *addVariableToClass( ...@@ -1938,15 +1938,27 @@ static MemberDef *addVariableToClass(
MemberDef *md; MemberDef *md;
for (mni.toFirst();(md=mni.current());++mni) for (mni.toFirst();(md=mni.current());++mni)
{ {
if (md->getClassDef()==cd && root->type==md->typeString()) //printf("md->getClassDef()=%p cd=%p type=[%s] md->typeString()=[%s]\n",
// md->getClassDef(),cd,root->type.data(),md->typeString());
if (md->getClassDef()==cd &&
removeRedundantWhiteSpace(root->type)==md->typeString())
// member already in the scope // member already in the scope
{ {
if (root->objc &&
root->mtype==Property &&
md->memberType()==MemberDef::Variable)
{ // Objective-C 2.0 property
// turn variable into a property
cd->reclassifyMember(md,MemberDef::Property);
}
addMemberDocs(rootNav,md,def,0,FALSE); addMemberDocs(rootNav,md,def,0,FALSE);
//printf(" Member already found!\n"); //printf(" Member already found!\n");
return md; return md;
} }
} }
} }
// new member variable, typedef or enum value // new member variable, typedef or enum value
MemberDef *md=new MemberDef( MemberDef *md=new MemberDef(
root->fileName,root->startLine, root->fileName,root->startLine,
...@@ -1985,7 +1997,7 @@ static MemberDef *addVariableToClass( ...@@ -1985,7 +1997,7 @@ static MemberDef *addVariableToClass(
// //
md->setBodyDef(rootNav->fileDef()); md->setBodyDef(rootNav->fileDef());
//printf("Adding member=%s\n",md->name().data()); //printf(" Adding member=%s\n",md->name().data());
// add the member to the global list // add the member to the global list
if (mn) if (mn)
{ {
...@@ -2104,6 +2116,7 @@ static MemberDef *addVariableToFile( ...@@ -2104,6 +2116,7 @@ static MemberDef *addVariableToFile(
|| (nd!=0 && md->getNamespaceDef()==nd) // both in same namespace || (nd!=0 && md->getNamespaceDef()==nd) // both in same namespace
) )
&& !md->isDefine() // function style #define's can be "overloaded" by typedefs or variables && !md->isDefine() // function style #define's can be "overloaded" by typedefs or variables
&& !md->isEnumerate() // in C# an enum value and enum can have the same name
) )
// variable already in the scope // variable already in the scope
{ {
...@@ -6510,7 +6523,7 @@ static void addEnumValuesToEnums(EntryNav *rootNav) ...@@ -6510,7 +6523,7 @@ static void addEnumValuesToEnums(EntryNav *rootNav)
e->loadEntry(g_storage); e->loadEntry(g_storage);
MemberDef *fmd = addVariableToFile(e,MemberDef::EnumValue, MemberDef *fmd = addVariableToFile(e,MemberDef::EnumValue,
md->getOuterScope() ? md->getOuterScope()->name() : QCString(), md->getOuterScope() ? md->getOuterScope()->name() : QCString(),
e->name(),TRUE,0); e->name(),FALSE,0);
md->insertEnumField(fmd); md->insertEnumField(fmd);
fmd->setEnumScope(md); fmd->setEnumScope(md);
e->releaseEntry(); e->releaseEntry();
...@@ -9832,6 +9845,7 @@ void parseInput() ...@@ -9832,6 +9845,7 @@ void parseInput()
//} //}
classEntries.clear(); classEntries.clear();
msg("Add enum values to enums...\n");
addEnumValuesToEnums(rootNav); addEnumValuesToEnums(rootNav);
findEnumDocumentation(rootNav); findEnumDocumentation(rootNav);
...@@ -10166,7 +10180,9 @@ void generateOutput() ...@@ -10166,7 +10180,9 @@ void generateOutput()
msg("Generating Perl module output...\n"); msg("Generating Perl module output...\n");
generatePerlMod(); generatePerlMod();
} }
if (Config_getBool("GENERATE_HTMLHELP") && !Config_getString("HHC_LOCATION").isEmpty()) if (Config_getBool("GENERATE_HTML") &&
Config_getBool("GENERATE_HTMLHELP") &&
!Config_getString("HHC_LOCATION").isEmpty())
{ {
msg("Running html help compiler...\n"); msg("Running html help compiler...\n");
QString oldDir = QDir::currentDirPath(); QString oldDir = QDir::currentDirPath();
......
...@@ -662,7 +662,7 @@ void FileDef::writeSource(OutputList &ol) ...@@ -662,7 +662,7 @@ void FileDef::writeSource(OutputList &ol)
startFile(ol,getSourceFileBase(),0,pageTitle,HLI_FileVisible,TRUE); startFile(ol,getSourceFileBase(),0,pageTitle,HLI_FileVisible,TRUE);
getDirDef()->writeNavigationPath(ol); getDirDef()->writeNavigationPath(ol);
ol.endQuickIndices(); ol.endQuickIndices();
ol.endContents(); ol.startContents();
startTitle(ol,getOutputFileBase()); startTitle(ol,getOutputFileBase());
ol.parseText(name()); ol.parseText(name());
endTitle(ol,getOutputFileBase(),title); endTitle(ol,getOutputFileBase(),title);
......
...@@ -166,7 +166,10 @@ void FormulaList::generateBitmaps(const char *path) ...@@ -166,7 +166,10 @@ void FormulaList::generateBitmaps(const char *path)
} }
// scale the image so that it is four times larger than needed. // scale the image so that it is four times larger than needed.
// and the sizes are a multiple of four. // and the sizes are a multiple of four.
const double scaleFactor = 16.0/3.0; double scaleFactor = 16.0/3.0;
int zoomFactor = Config_getInt("FORMULA_FONTSIZE");
if (zoomFactor<8 || zoomFactor>50) zoomFactor=10;
scaleFactor *= zoomFactor/10.0;
int gx = (((int)((x2-x1)*scaleFactor))+3)&~2; int gx = (((int)((x2-x1)*scaleFactor))+3)&~2;
int gy = (((int)((y2-y1)*scaleFactor))+3)&~2; int gy = (((int)((y2-y1)*scaleFactor))+3)&~2;
// Then we run ghostscript to convert the postscript to a pixmap // Then we run ghostscript to convert the postscript to a pixmap
......
...@@ -60,24 +60,6 @@ GroupDef::GroupDef(const char *df,int dl,const char *na,const char *t, ...@@ -60,24 +60,6 @@ GroupDef::GroupDef(const char *df,int dl,const char *na,const char *t,
memberGroupSDict->setAutoDelete(TRUE); memberGroupSDict->setAutoDelete(TRUE);
allMemberList = new MemberList(MemberList::allMembersList); allMemberList = new MemberList(MemberList::allMembersList);
#if 0
decDefineMembers.setInGroup(TRUE);
decProtoMembers.setInGroup(TRUE);
decTypedefMembers.setInGroup(TRUE);
decEnumMembers.setInGroup(TRUE);
decEnumValMembers.setInGroup(TRUE);
decFuncMembers.setInGroup(TRUE);
decVarMembers.setInGroup(TRUE);
docDefineMembers.setInGroup(TRUE);
docProtoMembers.setInGroup(TRUE);
docTypedefMembers.setInGroup(TRUE);
docEnumMembers.setInGroup(TRUE);
docEnumValMembers.setInGroup(TRUE);
docFuncMembers.setInGroup(TRUE);
docVarMembers.setInGroup(TRUE);
#endif
visited = 0; visited = 0;
groupScope = 0; groupScope = 0;
...@@ -142,14 +124,6 @@ void GroupDef::findSectionsInDocumentation() ...@@ -142,14 +124,6 @@ void GroupDef::findSectionsInDocumentation()
ml->findSectionsInDocumentation(); ml->findSectionsInDocumentation();
} }
} }
#if 0
decDefineMembers.findSectionsInDocumentation();
decProtoMembers.findSectionsInDocumentation();
decTypedefMembers.findSectionsInDocumentation();
decEnumMembers.findSectionsInDocumentation();
decFuncMembers.findSectionsInDocumentation();
decVarMembers.findSectionsInDocumentation();
#endif
} }
void GroupDef::addFile(const FileDef *def) void GroupDef::addFile(const FileDef *def)
...@@ -224,15 +198,6 @@ void GroupDef::addMembersToMemberGroup() ...@@ -224,15 +198,6 @@ void GroupDef::addMembersToMemberGroup()
::addMembersToMemberGroup(ml,&memberGroupSDict,this); ::addMembersToMemberGroup(ml,&memberGroupSDict,this);
} }
} }
#if 0
::addMembersToMemberGroup(&decDefineMembers,&memberGroupSDict,this);
::addMembersToMemberGroup(&decProtoMembers,&memberGroupSDict,this);
::addMembersToMemberGroup(&decTypedefMembers,&memberGroupSDict,this);
::addMembersToMemberGroup(&decEnumMembers,&memberGroupSDict,this);
::addMembersToMemberGroup(&decEnumValMembers,&memberGroupSDict,this);
::addMembersToMemberGroup(&decFuncMembers,&memberGroupSDict,this);
::addMembersToMemberGroup(&decVarMembers,&memberGroupSDict,this);
#endif
//printf("GroupDef::addMembersToMemberGroup() memberGroupList=%d\n",memberGroupList->count()); //printf("GroupDef::addMembersToMemberGroup() memberGroupList=%d\n",memberGroupList->count());
MemberGroupSDict::Iterator mgli(*memberGroupSDict); MemberGroupSDict::Iterator mgli(*memberGroupSDict);
...@@ -872,14 +837,6 @@ void GroupDef::writeMemberPages(OutputList &ol) ...@@ -872,14 +837,6 @@ void GroupDef::writeMemberPages(OutputList &ol)
ml->writeDocumentationPage(ol,name(),this); ml->writeDocumentationPage(ol,name(),this);
} }
} }
#if 0
docDefineMembers.writeDocumentationPage(ol,name(),this);
docProtoMembers.writeDocumentationPage(ol,name(),this);
docTypedefMembers.writeDocumentationPage(ol,name(),this);
docEnumMembers.writeDocumentationPage(ol,name(),this);
docFuncMembers.writeDocumentationPage(ol,name(),this);
docVarMembers.writeDocumentationPage(ol,name(),this);
#endif
ol.popGeneratorState(); ol.popGeneratorState();
} }
...@@ -1154,14 +1111,6 @@ void GroupDef::addListReferences() ...@@ -1154,14 +1111,6 @@ void GroupDef::addListReferences()
ml->addListReferences(this); ml->addListReferences(this);
} }
} }
#if 0
docDefineMembers.addListReferences(this);
docProtoMembers.addListReferences(this);
docTypedefMembers.addListReferences(this);
docEnumMembers.addListReferences(this);
docFuncMembers.addListReferences(this);
docVarMembers.addListReferences(this);
#endif
} }
MemberList *GroupDef::createMemberList(MemberList::ListType lt) MemberList *GroupDef::createMemberList(MemberList::ListType lt)
......
...@@ -1736,7 +1736,6 @@ void writeQuickMemberIndex(OutputList &ol, ...@@ -1736,7 +1736,6 @@ void writeQuickMemberIndex(OutputList &ol,
} }
} }
endQuickIndexList(ol); endQuickIndexList(ol);
ol.newParagraph();
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
......
...@@ -54,7 +54,7 @@ ...@@ -54,7 +54,7 @@
#include "translator_es.h" #include "translator_es.h"
#endif #endif
#ifdef LANG_FI #ifdef LANG_FI
//#include "translator_fi.h" #include "translator_fi.h"
#endif #endif
#ifdef LANG_RU #ifdef LANG_RU
#include "translator_ru.h" #include "translator_ru.h"
......
...@@ -533,8 +533,8 @@ void MemberDefImpl::init(Definition *def, ...@@ -533,8 +533,8 @@ void MemberDefImpl::init(Definition *def,
{ {
declArgList = new ArgumentList; declArgList = new ArgumentList;
stringToArgumentList(args,declArgList,&extraTypeChars); stringToArgumentList(args,declArgList,&extraTypeChars);
//printf("setDeclArgList %s to %p const=%d\n",args.data(), //printf("setDeclArgList %s to %s const=%d\n",args.data(),
// declArgList,declArgList->constSpecifier); // argListToString(declArgList).data(),declArgList->constSpecifier);
} }
else else
{ {
...@@ -766,7 +766,10 @@ QCString MemberDef::anchor() const ...@@ -766,7 +766,10 @@ QCString MemberDef::anchor() const
QCString result=m_impl->anc; QCString result=m_impl->anc;
if (m_impl->groupAlias) return m_impl->groupAlias->anchor(); if (m_impl->groupAlias) return m_impl->groupAlias->anchor();
if (m_impl->templateMaster) return m_impl->templateMaster->anchor(); if (m_impl->templateMaster) return m_impl->templateMaster->anchor();
if (m_impl->enumScope) result.prepend(m_impl->enumScope->anchor()); if (m_impl->enumScope && m_impl->enumScope!=this) // avoid recursion for C#'s public enum E { E, F }
{
result.prepend(m_impl->enumScope->anchor());
}
if (m_impl->group) if (m_impl->group)
{ {
if (m_impl->groupMember) if (m_impl->groupMember)
...@@ -1047,9 +1050,10 @@ bool MemberDef::isBriefSectionVisible() const ...@@ -1047,9 +1050,10 @@ bool MemberDef::isBriefSectionVisible() const
//printf("visibleIfStatic=%d visibleIfDocumented=%d visibleIfEnabled=%d " //printf("visibleIfStatic=%d visibleIfDocumented=%d visibleIfEnabled=%d "
// "visibleIfPrivate=%d visibltIfNotDefaultCDTor=%d " // "visibleIfPrivate=%d visibltIfNotDefaultCDTor=%d "
// "visibleIfFriendCompound=%d\n",visibleIfStatic,visibleIfDocumented, // "visibleIfFriendCompound=%d !annScope=%d\n",
// visibleIfStatic,visibleIfDocumented,
// visibleIfEnabled,visibleIfPrivate,visibleIfNotDefaultCDTor, // visibleIfEnabled,visibleIfPrivate,visibleIfNotDefaultCDTor,
// visibleIfFriendCompound); // visibleIfFriendCompound,!m_impl->annScope);
bool visible = visibleIfStatic && visibleIfDocumented && bool visible = visibleIfStatic && visibleIfDocumented &&
visibleIfEnabled && visibleIfPrivate && visibleIfEnabled && visibleIfPrivate &&
......
...@@ -165,17 +165,30 @@ void MemberGroup::distributeMemberGroupDocumentation() ...@@ -165,17 +165,30 @@ void MemberGroup::distributeMemberGroupDocumentation()
{ {
//printf("MemberGroup::distributeMemberGroupDocumentation() %s\n",grpHeader.data()); //printf("MemberGroup::distributeMemberGroupDocumentation() %s\n",grpHeader.data());
MemberDef *md=memberList->first(); MemberDef *md=memberList->first();
if (md && !(md->documentation().isEmpty() && while (md)
md->briefDescription().isEmpty() && {
md->inbodyDocumentation().isEmpty() //printf("checking md=%s\n",md->name().data());
) // find the first member of the group with documentation
if (!md->documentation().isEmpty() ||
!md->briefDescription().isEmpty() ||
!md->inbodyDocumentation().isEmpty()
) )
{ {
//printf("First member %s has documentation!\n",md->name().data()); //printf("found it!\n");
MemberDef *omd=memberList->next(); break;
}
md=memberList->next();
}
if (md) // distribute docs of md to other members of the list
{
//printf("Member %s has documentation!\n",md->name().data());
MemberDef *omd=memberList->first();
while (omd) while (omd)
{ {
if (omd->documentation().isEmpty() && omd->briefDescription().isEmpty() && omd->inbodyDocumentation().isEmpty()) if (md!=omd && omd->documentation().isEmpty() &&
omd->briefDescription().isEmpty() &&
omd->inbodyDocumentation().isEmpty()
)
{ {
//printf("Copying documentation to member %s\n",omd->name().data()); //printf("Copying documentation to member %s\n",omd->name().data());
omd->setBriefDescription(md->briefDescription(),md->briefFile(),md->briefLine()); omd->setBriefDescription(md->briefDescription(),md->briefFile(),md->briefLine());
......
...@@ -546,7 +546,7 @@ void PerlModDocVisitor::visit(DocSymbol *sy) ...@@ -546,7 +546,7 @@ void PerlModDocVisitor::visit(DocSymbol *sy)
case DocSymbol::Rdquo: c = '"'; break; case DocSymbol::Rdquo: c = '"'; break;
case DocSymbol::Ndash: c = '-'; break; case DocSymbol::Ndash: c = '-'; break;
case DocSymbol::Mdash: s = "--"; break; case DocSymbol::Mdash: s = "--"; break;
case DocSymbol::Nbsp: c = ''; break; case DocSymbol::Nbsp: c = ' '; break;
case DocSymbol::Uml: accent = "umlaut"; break; case DocSymbol::Uml: accent = "umlaut"; break;
case DocSymbol::Acute: accent = "acute"; break; case DocSymbol::Acute: accent = "acute"; break;
case DocSymbol::Grave: accent = "grave"; break; case DocSymbol::Grave: accent = "grave"; break;
......
...@@ -644,6 +644,7 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?) ...@@ -644,6 +644,7 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
%x PackageName %x PackageName
%x JavaImport %x JavaImport
%x CSAccessorDecl %x CSAccessorDecl
%x CSGeneric
%x PreLineCtrl %x PreLineCtrl
%x DefinePHP %x DefinePHP
%x DefinePHPEnd %x DefinePHPEnd
...@@ -2725,11 +2726,17 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?) ...@@ -2725,11 +2726,17 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
} }
} }
<IDLAttribute>"propput" { <IDLAttribute>"propput" {
if (Config_getBool("IDL_PROPERTY_SUPPORT"))
{
current->mtype = Property; current->mtype = Property;
}
current->spec |= Entry::Settable; current->spec |= Entry::Settable;
} }
<IDLAttribute>"propget" { <IDLAttribute>"propget" {
if (Config_getBool("IDL_PROPERTY_SUPPORT"))
{
current->mtype = Property; current->mtype = Property;
}
current->spec |= Entry::Gettable; current->spec |= Entry::Gettable;
} }
<IDLAttribute>. { <IDLAttribute>. {
...@@ -2744,7 +2751,8 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?) ...@@ -2744,7 +2751,8 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
BEGIN( IDLProp ); BEGIN( IDLProp );
} }
<IDLProp>{BN}*"["[^\]]*"]"{BN}* { // attribute of a parameter <IDLProp>{BN}*"["[^\]]*"]"{BN}* { // attribute of a parameter
idlAttr += yytext; idlAttr = yytext;
idlAttr=idlAttr.stripWhiteSpace();
} }
<IDLProp>{ID} { // property type <IDLProp>{ID} { // property type
idlProp = yytext; idlProp = yytext;
...@@ -2781,7 +2789,7 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?) ...@@ -2781,7 +2789,7 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
BEGIN( FindMembers ); BEGIN( FindMembers );
} }
<IDLProp>. { // spaces, *, or other stuff <IDLProp>. { // spaces, *, or other stuff
idlProp+=yytext; //idlProp+=yytext;
} }
<Array>"]" { current->args += *yytext ; <Array>"]" { current->args += *yytext ;
if (--squareCount<=0) if (--squareCount<=0)
...@@ -4273,11 +4281,31 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?) ...@@ -4273,11 +4281,31 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
{ {
BEGIN( ObjCProtocolList ); BEGIN( ObjCProtocolList );
} }
else if (insideCS) // C# generic class
{
BEGIN( CSGeneric );
}
else // C++ template specialization else // C++ template specialization
{ {
BEGIN( ClassTemplSpec ); BEGIN( ClassTemplSpec );
} }
} }
<CSGeneric>"<" {
if (current->tArgLists==0)
{
current->tArgLists = new QList<ArgumentList>;
current->tArgLists->setAutoDelete(TRUE);
}
ArgumentList *al = new ArgumentList;
current->spec |= Entry::Template;
current->tArgLists->append(al);
currentArgumentList = al;
templateStr="<";
fullArgString = templateStr;
copyArgString = &templateStr;
currentArgumentContext = CompoundName;
BEGIN( ReadTempArgs );
}
<ObjCProtocolList>"<" { <ObjCProtocolList>"<" {
insideProtocolList=TRUE; insideProtocolList=TRUE;
BEGIN( Bases ); BEGIN( Bases );
......
This diff is collapsed.
...@@ -158,7 +158,7 @@ class TranslatorFrench : public TranslatorAdapter_1_5_4 ...@@ -158,7 +158,7 @@ class TranslatorFrench : public TranslatorAdapter_1_5_4
/*! header that is put before the list of typedefs. */ /*! header that is put before the list of typedefs. */
virtual QCString trMemberTypedefDocumentation() virtual QCString trMemberTypedefDocumentation()
{ {
return "Documentation des définition de type membres"; } return "Documentation des définitions de type membres"; }
/*! header that is put before the list of enumerations. */ /*! header that is put before the list of enumerations. */
virtual QCString trMemberEnumerationDocumentation() virtual QCString trMemberEnumerationDocumentation()
......
...@@ -1909,6 +1909,10 @@ QCString tempArgListToString(ArgumentList *al) ...@@ -1909,6 +1909,10 @@ QCString tempArgListToString(ArgumentList *al)
{ {
result+=a->type.right(a->type.length()-i-1); result+=a->type.right(a->type.length()-i-1);
} }
else // nothing found -> take whole name
{
result+=a->type;
}
} }
a=al->next(); a=al->next();
if (a) result+=", "; if (a) result+=", ";
......
...@@ -1438,7 +1438,7 @@ void VhdlDocGen::writeProcedureProto(OutputList& ol,const ArgumentList* al,const ...@@ -1438,7 +1438,7 @@ void VhdlDocGen::writeProcedureProto(OutputList& ol,const ArgumentList* al,const
ol.docify(" )"); ol.docify(" )");
}// writePorcedure }
/*! /*!
* writes a function prototype to the output * writes a function prototype to the output
......
...@@ -83,6 +83,7 @@ static int scantype = 0; ...@@ -83,6 +83,7 @@ static int scantype = 0;
static int g_lastCommentContext = 0; static int g_lastCommentContext = 0;
static bool docBlockAutoBrief; static bool docBlockAutoBrief;
static char docBlockTerm; static char docBlockTerm;
static int iDocLine = -1;
//#define YY_A_INTERACTIVE 1 //#define YY_A_INTERACTIVE 1
#define YY_NEVER_INTERACTIVE 1 #define YY_NEVER_INTERACTIVE 1
...@@ -122,8 +123,7 @@ static void addText (char *word, int llen) ...@@ -122,8 +123,7 @@ static void addText (char *word, int llen)
{ {
while (llen>0) while (llen>0)
{ {
g_buf[iCounter]=*word; g_buf[iCounter]=*word++;
*word++;
iCounter++; iCounter++;
llen--; llen--;
} }
...@@ -384,7 +384,7 @@ static void parseFunctionProto() ...@@ -384,7 +384,7 @@ static void parseFunctionProto()
{ {
current->args+=","; current->args+=",";
} }
Argument *arg=new Argument(); Argument *arg=new Argument;
Argument *hh=(Argument*)ql.at(k); Argument *hh=(Argument*)ql.at(k);
arg->name=hh->name; arg->name=hh->name;
arg->type=hh->type; arg->type=hh->type;
...@@ -437,6 +437,7 @@ void parserInit() ...@@ -437,6 +437,7 @@ void parserInit()
lastEntity=0; lastEntity=0;
bropen=0; bropen=0;
openGroups=0; openGroups=0;
iDocLine=-1;
//isPrevDoc=FALSE; //isPrevDoc=FALSE;
//prevDocEntry.reset(); //prevDocEntry.reset();
qrl.clear(); qrl.clear();
...@@ -446,9 +447,8 @@ void parserInit() ...@@ -446,9 +447,8 @@ void parserInit()
VhdlDocGen::init(); VhdlDocGen::init();
} }
uint SSIZE=inputFile.size()+1024; uint SSIZE=inputFile.size()+1024;
if (g_buf==0) if (g_buf==0) free(g_buf);
g_buf=(char*)(calloc(SSIZE,sizeof(char))); g_buf=(char*)(calloc(SSIZE,sizeof(char)));
if (g_buf==0) if (g_buf==0)
...@@ -1367,6 +1367,7 @@ ALLID [^;()\t ] ...@@ -1367,6 +1367,7 @@ ALLID [^;()\t ]
*/ */
<*>{BR}*"--!"[^{}\n][^\n]*\n/{B}*"--!" { // multi line comment <*>{BR}*"--!"[^{}\n][^\n]*\n/{B}*"--!" { // multi line comment
if (iDocLine==-1) iDocLine=yyLineNr;
if (YY_START!=Comment) // Start of the comment block if (YY_START!=Comment) // Start of the comment block
{ {
iTextCounter=iCounter; iTextCounter=iCounter;
...@@ -1379,6 +1380,7 @@ ALLID [^;()\t ] ...@@ -1379,6 +1380,7 @@ ALLID [^;()\t ]
} }
<Comment>^{B}*"--!"[^\n]* { <Comment>^{B}*"--!"[^\n]* {
if (iDocLine==-1) iDocLine=yyLineNr;
addText(vhdlscanYYtext,vhdlscanYYleng); addText(vhdlscanYYtext,vhdlscanYYleng);
lineCount(); lineCount();
} }
...@@ -1395,6 +1397,7 @@ ALLID [^;()\t ] ...@@ -1395,6 +1397,7 @@ ALLID [^;()\t ]
} }
<*>^{B}*"--!"[^\n]* { // one line comment <*>^{B}*"--!"[^\n]* { // one line comment
if (iDocLine==-1) iDocLine=yyLineNr;
QCString qcs(yytext); QCString qcs(yytext);
int j=qcs.find("--!"); int j=qcs.find("--!");
qcs=qcs.right(qcs.length()-3-j); qcs=qcs.right(qcs.length()-3-j);
...@@ -1451,13 +1454,18 @@ static void handleCommentBlock(const QCString &doc,bool brief) ...@@ -1451,13 +1454,18 @@ static void handleCommentBlock(const QCString &doc,bool brief)
int position=0; int position=0;
bool needsEntry=FALSE; bool needsEntry=FALSE;
Protection protection=Public; Protection protection=Public;
if (brief)
current->briefLine = iDocLine;
else
current->docLine = iDocLine;
//printf("parseCommentBlock %p [%s]\n",current,doc.data()); //printf("parseCommentBlock %p [%s]\n",current,doc.data());
while (parseCommentBlock( while (parseCommentBlock(
g_thisParser, g_thisParser,
current, current,
doc, // text doc, // text
yyFileName, // file yyFileName, // file
brief ? current->briefLine : current->docLine, // line of block start iDocLine, // line of block start
brief, brief,
docBlockAutoBrief, docBlockAutoBrief,
FALSE, FALSE,
...@@ -1480,6 +1488,7 @@ static void handleCommentBlock(const QCString &doc,bool brief) ...@@ -1480,6 +1488,7 @@ static void handleCommentBlock(const QCString &doc,bool brief)
unput(docBlockTerm); unput(docBlockTerm);
docBlockTerm=0; docBlockTerm=0;
} }
iDocLine=-1;
} }
#if 0 #if 0
...@@ -1668,6 +1677,7 @@ void VHDLLanguageScanner::parseInput(const char *fileName,const char *fileBuf,En ...@@ -1668,6 +1677,7 @@ void VHDLLanguageScanner::parseInput(const char *fileName,const char *fileBuf,En
current=0; current=0;
groupLeaveFile(yyFileName,yyLineNr); groupLeaveFile(yyFileName,yyLineNr);
inputFile.close();
//mergeBrief(current_root); //mergeBrief(current_root);
//mergeGrouping(current_root,0); //mergeGrouping(current_root,0);
......
...@@ -1238,7 +1238,7 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti) ...@@ -1238,7 +1238,7 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti)
{ {
t << convertToXML( t << convertToXML(
insertTemplateSpecifierInScope( insertTemplateSpecifierInScope(
bcd->classDef->displayName(),bcd->templSpecifiers) bcd->classDef->name(),bcd->templSpecifiers)
); );
} }
else else
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment