Commit 2f0a01b6 authored by dimitri's avatar dimitri

Release-1.5.5-20080420

parent 238c63a1
DOXYGEN Version 1.5.5-20080325
DOXYGEN Version 1.5.5-20080420
Please read the installation section of the manual
(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
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
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:
$(INSTTOOL) -d $(DOCDIR)
......@@ -118,7 +115,7 @@ rpm: dist
tar -rvf $(DISTDIR).src.tar $(DISTDIR)/packages/rpm/doxygen.spec
rm -rf $(DISTDIR)
gzip -9v $(DISTDIR).src.tar
rpmbuild -ta $(DISTDIR).src.tar.gz
rpmbuild -ta %%WITHDOXYWIZARD%% $(DISTDIR).src.tar.gz
rpmsrc: dist
gzip -df $(DISTDIR).src.tar.gz
......@@ -129,7 +126,7 @@ rpmsrc: dist
tar -rvf $(DISTDIR).src.tar $(DISTDIR)/packages/rpm/doxygen.spec
rm -rf $(DISTDIR)
gzip -9v $(DISTDIR).src.tar
rpmbuild -ts $(DISTDIR).src.tar.gz
rpmbuild -ts %%WITHDOXYWIZARD%% $(DISTDIR).src.tar.gz
rpmbinary: dist
gzip -df $(DISTDIR).src.tar.gz
......@@ -140,7 +137,7 @@ rpmbinary: dist
tar -rvf $(DISTDIR).src.tar $(DISTDIR)/packages/rpm/doxygen.spec
rm -rf $(DISTDIR)
gzip -9v $(DISTDIR).src.tar
rpmbuild -tb $(DISTDIR).src.tar.gz
rpmbuild -tb %%WITHDOXYWIZARD%% $(DISTDIR).src.tar.gz
ctags:
......
DOXYGEN Version 1.5.5_20080325
DOXYGEN Version 1.5.5_20080420
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) (25 March 2008)
Dimitri van Heesch (dimitri@stack.nl) (20 April 2008)
......@@ -41,8 +41,14 @@ clean: Makefile.doxywizard
distclean: clean
$(RM) Makefile.doxywizard version.cpp config.l config.h portable.h portable.cpp
MAN1DIR = man/man1
install:
$(INSTTOOL) -d $(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:
......@@ -20,7 +20,7 @@ doxygen_version_minor=5
doxygen_version_revision=5
#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"`
......@@ -537,11 +537,7 @@ fi
mkdir -p packages
mkdir -p packages/rpm
if test "$f_wizard" = YES; then
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
cat spec.tmp ./packages/rpm/doxygen.spec.in > ./packages/rpm/doxygen.spec
rm -f spec.tmp
......@@ -633,7 +629,11 @@ EOF
fi
echo "" >> $DST
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..."
done
......
......@@ -54,7 +54,7 @@ documentation:
\refitem cmdcode \\code
\refitem cmdcond \\cond
\refitem cmdcopybrief \\copybrief
\refitem cmdcopydefails \\copydetails
\refitem cmdcopydetails \\copydetails
\refitem cmdcopydoc \\copydoc
\refitem cmddate \\date
\refitem cmddef \\def
......@@ -152,6 +152,7 @@ documentation:
\refitem cmdtest \\test
\refitem cmdthrow \\throw
\refitem cmdtodo \\todo
\refitem cmdtparam \\tparam
\refitem cmdtypedef \\typedef
\refitem cmdunion \\union
\refitem cmduntil \\until
......@@ -1087,7 +1088,7 @@ ALIASES = "english=\if english" \
\addindex \\param
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 documentation of this (or any other) parameter is missing or not
present in the function declaration or definition.
......@@ -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
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>
\section cmdpost \\post { description of the postcondition }
......
......@@ -113,6 +113,7 @@ followed by the descriptions of the tags grouped by category.
\refitem cfg_file_version_filter FILE_VERSION_FILTER
\refitem cfg_filter_patterns FILTER_PATTERNS
\refitem cfg_filter_source_files FILTER_SOURCE_FILES
\refitem cfg_formula_fontsize FORMULA_FONTSIZE
\refitem cfg_full_path_names FULL_PATH_NAMES
\refitem cfg_generate_autogen_def GENERATE_AUTOGEN_DEF
\refitem cfg_generate_buglist GENERATE_BUGLIST
......@@ -147,6 +148,7 @@ followed by the descriptions of the tags grouped by category.
\refitem cfg_html_header HTML_HEADER
\refitem cfg_html_output HTML_OUTPUT
\refitem cfg_html_stylesheet HTML_STYLESHEET
\refitem cfg_idl_property_support IDL_PROPERTY_SUPPORT
\refitem cfg_ignore_prefix IGNORE_PREFIX
\refitem cfg_image_path IMAGE_PATH
\refitem cfg_include_graph INCLUDE_GRAPH
......@@ -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
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
<dt>\c DISTRIBUTE_GROUP_DOC <dd>
\addindex DISTRIBUTE_GROUP_DOC
......@@ -1038,14 +1050,14 @@ FILE_VERSION_INFO = "cleartool desc -fmt \%Vn"
\anchor cfg_referenced_by_relation
<dt>\c REFERENCED_BY_RELATION <dd>
\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
functions referencing it will be listed.
\anchor cfg_references_relation
<dt>\c REFERENCES_RELATION <dd>
\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
called/used by that function will be listed.
......@@ -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
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>
\section latex_output LaTeX related options
\anchor cfg_generate_latex
......@@ -1816,6 +1837,26 @@ TAGFILES = file1=loc1 "file2 = loc2" ... </pre>
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)
\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>
\addindex DOT_FONTNAME
By default doxygen will write a font called FreeSans.ttf to the output
......@@ -1927,7 +1968,7 @@ TAGFILES = file1=loc1 "file2 = loc2" ... </pre>
\anchor cfg_dot_graph_max_nodes
<dt>\c DOT_GRAPH_MAX_NODES <dd>
\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
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
......
......@@ -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
can select which ones to generate. For most diagrams the
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).
<h3>Expert dialog</h3>
......
......@@ -119,9 +119,9 @@ when the translator was updated.
</tr>
<tr bgcolor="#ffffff">
<td>Finnish</td>
<td>Olli Korhonen</td>
<td>olli.korhonen lost at cyberspace</td>
<td>obsolete</td>
<td>Antti Laine</td>
<td>antti.a.laine at tut dot fi</td>
<td>up-to-date</td>
</tr>
<tr bgcolor="#ffffff">
<td>French</td>
......@@ -307,7 +307,7 @@ when the translator was updated.
\hline
English & Dimitri van Heesch & {\tt\tiny dimitri@stack.nl} & up-to-date \\
\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
French & Xavier Outhier & {\tt\tiny xouthier@yahoo.fr} & 1.5.4 \\
\hline
......
......@@ -46,7 +46,7 @@ TranslatorEnglish
Dimitri van Heesch: dimitri@stack.nl
TranslatorFinnish
Olli Korhonen: olli.korhonen lost@cyberspace
Antti Laine: antti.a.laine@tut.fi
TranslatorFrench
Xavier Outhier: xouthier@yahoo.fr
......
......@@ -9,7 +9,7 @@ German, Greek, Hungarian, Indonesian, Italian, Japanese (+En), Korean
Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and
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.
----------------------------------------------------------------------
......@@ -25,6 +25,7 @@ still may be some details listed even for them:
TranslatorCzech
TranslatorDutch
TranslatorEnglish
TranslatorFinnish
TranslatorGerman
TranslatorItalian
TranslatorKorean
......@@ -60,7 +61,6 @@ must be implemented to become up-to-date:
TranslatorRomanian 1.4.1 24 methods to implement
TranslatorPortuguese 1.3.3 35 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
......@@ -215,144 +215,6 @@ TranslatorDanish (TranslatorAdapter_1_5_4) 22 methods to implement
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
----------------
......
%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
# optionally pass --with-doxywizard to rpmbuild
%define contentdir /var/www
%define suexec_caller doxygen
%define buildroot /var/tmp/%{name}-%{version}-%{revision}root
......@@ -14,7 +16,7 @@ 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
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
Provides: doxygen = %{mmn}
......@@ -25,6 +27,7 @@ documentation is extracted directly from the sources. Doxygen can
also be configured to extract the code structure from undocumented
source files.
%if %{?_with_doxywizard:1}%{!?_with_doxywizard:0}
%package doxywizard
Group: Development/Libraries
Summary: GUI Interface for doxygen.
......@@ -42,10 +45,11 @@ source files.
This is the GUI interface for doxygen. It requires qt and X11 to
install.
%endif
%prep
%setup -q -n %{name}-%{version}_%{revision}
./configure --with-doxywizard --prefix $RPM_BUILD_ROOT/usr
./configure %{?_with_doxywizard} --prefix $RPM_BUILD_ROOT/usr
%build
make %{?_smp_mflags}
......@@ -68,12 +72,18 @@ rm -rf $RPM_BUILD_ROOT
%{_bindir}/doxygen
%{_bindir}/doxytag
%if %{?_with_doxywizard:1}%{!?_with_doxywizard:0}
%files doxywizard
%defattr(-,root,root)
%{_bindir}/doxywizard
%doc /usr/man/man1/doxywizard.1.gz
%endif
%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
- consolidated manual package in lieu of --excludedocs flag for rpm --install
......
......@@ -1075,6 +1075,12 @@ void ClassDef::writeClassDiagrams(OutputList &ol)
if (ok && bcd)
{
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 (!Config_getString("GENERATE_TAGFILE").isEmpty())
......@@ -1098,11 +1104,11 @@ void ClassDef::writeClassDiagrams(OutputList &ol)
ol.writeObjectLink(cd->getReference(),
cd->getOutputFileBase(),
0,
cd->displayName()+bcd->templSpecifiers);
displayName);
}
else
{
ol.docify(cd->displayName());
ol.docify(displayName);
}
}
else
......@@ -3384,3 +3390,15 @@ bool ClassDef::isUsedOnly() const
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
void writeDeclaration(OutputList &ol,MemberDef *md,bool inGroup);
void writeDetailedDescription(OutputList &ol,const QCString &pageType,bool exampleFlag);
void writeQuickMemberLinks(OutputList &ol,MemberDef *md) const;
void reclassifyMember(MemberDef *md,MemberDef::MemberType t);
bool visited;
......
......@@ -961,7 +961,7 @@ void Config::check()
//}
QCString &warnFormat = Config_getString("WARN_FORMAT");
if (warnFormat.isEmpty())
if (warnFormat.stripWhiteSpace().isEmpty())
{
warnFormat="$file:$line $text";
}
......@@ -969,18 +969,15 @@ void Config::check()
{
if (warnFormat.find("$file")==-1)
{
config_err("Error: warning format does not contain a $file tag!\n");
exit(1);
config_err("Warning: warning format does not contain a $file tag!\n");
}
if (warnFormat.find("$line")==-1)
{
config_err("Error: warning format does not contain a $line tag!\n");
exit(1);
config_err("Warning: warning format does not contain a $line tag!\n");
}
if (warnFormat.find("$text")==-1)
{
config_err("Error: wanring format foes not contain a $text tag!\n");
exit(1);
config_err("Warning: warning format foes not contain a $text tag!\n");
}
}
......@@ -1248,6 +1245,28 @@ void Config::check()
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"))
{
QCString curFontPath = Config_getString("DOT_FONTPATH");
......@@ -1299,28 +1318,6 @@ void Config::check()
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
if (Config_getBool("OPTIMIZE_OUTPUT_VHDL") &&
(Config_getBool("INLINE_INHERITED_MEMB") ||
......@@ -1743,6 +1740,15 @@ void Config::create()
"instead of private inheritance when no explicit protection keyword is present. \n",
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(
"DISTRIBUTE_GROUP_DOC",
"If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC \n"
......@@ -2209,13 +2215,13 @@ void Config::create()
TRUE
);
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"
"functions referencing it will be listed. \n",
FALSE
);
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"
"called/used by that function will be listed. \n",
FALSE
......@@ -2339,8 +2345,8 @@ void Config::create()
"of the generated HTML documentation. \n",
FALSE
);
cb = addBool(
"GENERATE_DOCSET",
cb->addDependency("GENERATE_HTML");
cb = addBool( "GENERATE_DOCSET",
"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"
"integrated development environment, introduced with OSX 10.5 (Leopard). \n"
......@@ -2360,7 +2366,7 @@ void Config::create()
"can be grouped. \n"
);
cs->setDefaultValue("Doxygen generated docs");
cb->addDependency("GENERATE_DOCSET");
cs->addDependency("GENERATE_DOCSET");
cs = addString(
"DOCSET_BUNDLE_ID",
"When GENERATE_DOCSET tag is set to YES, this tag specifies a string that \n"
......@@ -2369,7 +2375,7 @@ void Config::create()
"will append .docset to the name. \n"
);
cs->setDefaultValue("org.doxygen.Project");
cb->addDependency("GENERATE_DOCSET");
cs->addDependency("GENERATE_DOCSET");
cb = addBool(
"HTML_DYNAMIC_SECTIONS",
......@@ -2468,6 +2474,16 @@ void Config::create()
0,1500,250
);
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");
......@@ -3080,7 +3096,7 @@ void Config::create()
cl->addDependency("HAVE_DOT");
ci = addInt(
"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"
"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"
......
......@@ -317,7 +317,7 @@ ID [a-z_A-Z][a-z_A-Z0-9]*
a->array = a->array.mid(1,alen-2);
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);
}
}
......
......@@ -479,7 +479,7 @@ void generateDEFSection(Definition *d,
MemberList *ml,
const char *kind)
{
if (ml->count()>0)
if (ml && ml->count()>0)
{
t << " " << kind << " = {" << endl;
MemberListIterator mli(*ml);
......
......@@ -208,7 +208,9 @@ QCString DiagramItem::label() const
QCString result;
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
{
......
......@@ -339,6 +339,7 @@ static void checkArgumentName(const QString &name,bool isParam)
for (ali.toFirst();(a=ali.current());++ali)
{
QString argName = g_memberDef->isDefine() ? a->type : a->name;
argName=argName.stripWhiteSpace();
//printf("argName=`%s'\n",argName.data());
if (argName.right(3)=="...") argName=argName.left(argName.length()-3);
if (aName==argName)
......@@ -368,7 +369,7 @@ static void checkArgumentName(const QString &name,bool isParam)
}
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",
aName.data(),scope.data(),g_memberDef->name().data(),
argListToString(al.pointer()).data(),inheritedFrom.data());
......@@ -397,6 +398,7 @@ static void checkUndocumentedParams()
for (ali.toFirst();(a=ali.current());++ali)
{
QString argName = g_memberDef->isDefine() ? a->type : a->name;
argName=argName.stripWhiteSpace();
if (argName.right(3)=="...") argName=argName.left(argName.length()-3);
if (!argName.isEmpty() && g_paramsFound.find(argName)==0 && a->docs.isEmpty())
{
......@@ -415,6 +417,7 @@ static void checkUndocumentedParams()
for (ali.toFirst();(a=ali.current());++ali)
{
QString argName = g_memberDef->isDefine() ? a->type : a->name;
argName=argName.stripWhiteSpace();
if (!argName.isEmpty() && g_paramsFound.find(argName)==0)
{
if (!first)
......@@ -425,7 +428,7 @@ static void checkUndocumentedParams()
{
first=FALSE;
}
errMsg+=" parameter "+argName;
errMsg+=" parameter '"+argName+"'";
}
}
if (g_memberDef->inheritsDocsFrom())
......
......@@ -617,6 +617,7 @@ void DotNode::writeBox(QTextStream &t,
t << "\\n|";
writeBoxMemberList(t,'+',m_classDef->getMemberList(MemberList::pubAttribs),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::pacStaticAttribs),m_classDef);
writeBoxMemberList(t,'#',m_classDef->getMemberList(MemberList::proAttribs),m_classDef);
......
......@@ -1938,15 +1938,27 @@ static MemberDef *addVariableToClass(
MemberDef *md;
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
{
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);
//printf(" Member already found!\n");
return md;
}
}
}
// new member variable, typedef or enum value
MemberDef *md=new MemberDef(
root->fileName,root->startLine,
......@@ -1985,7 +1997,7 @@ static MemberDef *addVariableToClass(
//
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
if (mn)
{
......@@ -2104,6 +2116,7 @@ static MemberDef *addVariableToFile(
|| (nd!=0 && md->getNamespaceDef()==nd) // both in same namespace
)
&& !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
{
......@@ -6510,7 +6523,7 @@ static void addEnumValuesToEnums(EntryNav *rootNav)
e->loadEntry(g_storage);
MemberDef *fmd = addVariableToFile(e,MemberDef::EnumValue,
md->getOuterScope() ? md->getOuterScope()->name() : QCString(),
e->name(),TRUE,0);
e->name(),FALSE,0);
md->insertEnumField(fmd);
fmd->setEnumScope(md);
e->releaseEntry();
......@@ -9832,6 +9845,7 @@ void parseInput()
//}
classEntries.clear();
msg("Add enum values to enums...\n");
addEnumValuesToEnums(rootNav);
findEnumDocumentation(rootNav);
......@@ -10166,7 +10180,9 @@ void generateOutput()
msg("Generating Perl module output...\n");
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");
QString oldDir = QDir::currentDirPath();
......
......@@ -662,7 +662,7 @@ void FileDef::writeSource(OutputList &ol)
startFile(ol,getSourceFileBase(),0,pageTitle,HLI_FileVisible,TRUE);
getDirDef()->writeNavigationPath(ol);
ol.endQuickIndices();
ol.endContents();
ol.startContents();
startTitle(ol,getOutputFileBase());
ol.parseText(name());
endTitle(ol,getOutputFileBase(),title);
......
......@@ -166,7 +166,10 @@ void FormulaList::generateBitmaps(const char *path)
}
// scale the image so that it is four times larger than needed.
// 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 gy = (((int)((y2-y1)*scaleFactor))+3)&~2;
// 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,
memberGroupSDict->setAutoDelete(TRUE);
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;
groupScope = 0;
......@@ -142,14 +124,6 @@ void GroupDef::findSectionsInDocumentation()
ml->findSectionsInDocumentation();
}
}
#if 0
decDefineMembers.findSectionsInDocumentation();
decProtoMembers.findSectionsInDocumentation();
decTypedefMembers.findSectionsInDocumentation();
decEnumMembers.findSectionsInDocumentation();
decFuncMembers.findSectionsInDocumentation();
decVarMembers.findSectionsInDocumentation();
#endif
}
void GroupDef::addFile(const FileDef *def)
......@@ -224,15 +198,6 @@ void GroupDef::addMembersToMemberGroup()
::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());
MemberGroupSDict::Iterator mgli(*memberGroupSDict);
......@@ -872,14 +837,6 @@ void GroupDef::writeMemberPages(OutputList &ol)
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();
}
......@@ -1154,14 +1111,6 @@ void GroupDef::addListReferences()
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)
......
......@@ -1736,7 +1736,6 @@ void writeQuickMemberIndex(OutputList &ol,
}
}
endQuickIndexList(ol);
ol.newParagraph();
}
//----------------------------------------------------------------------------
......
......@@ -54,7 +54,7 @@
#include "translator_es.h"
#endif
#ifdef LANG_FI
//#include "translator_fi.h"
#include "translator_fi.h"
#endif
#ifdef LANG_RU
#include "translator_ru.h"
......
......@@ -533,8 +533,8 @@ void MemberDefImpl::init(Definition *def,
{
declArgList = new ArgumentList;
stringToArgumentList(args,declArgList,&extraTypeChars);
//printf("setDeclArgList %s to %p const=%d\n",args.data(),
// declArgList,declArgList->constSpecifier);
//printf("setDeclArgList %s to %s const=%d\n",args.data(),
// argListToString(declArgList).data(),declArgList->constSpecifier);
}
else
{
......@@ -766,7 +766,10 @@ QCString MemberDef::anchor() const
QCString result=m_impl->anc;
if (m_impl->groupAlias) return m_impl->groupAlias->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->groupMember)
......@@ -1047,9 +1050,10 @@ bool MemberDef::isBriefSectionVisible() const
//printf("visibleIfStatic=%d visibleIfDocumented=%d visibleIfEnabled=%d "
// "visibleIfPrivate=%d visibltIfNotDefaultCDTor=%d "
// "visibleIfFriendCompound=%d\n",visibleIfStatic,visibleIfDocumented,
// "visibleIfFriendCompound=%d !annScope=%d\n",
// visibleIfStatic,visibleIfDocumented,
// visibleIfEnabled,visibleIfPrivate,visibleIfNotDefaultCDTor,
// visibleIfFriendCompound);
// visibleIfFriendCompound,!m_impl->annScope);
bool visible = visibleIfStatic && visibleIfDocumented &&
visibleIfEnabled && visibleIfPrivate &&
......
......@@ -165,17 +165,30 @@ void MemberGroup::distributeMemberGroupDocumentation()
{
//printf("MemberGroup::distributeMemberGroupDocumentation() %s\n",grpHeader.data());
MemberDef *md=memberList->first();
if (md && !(md->documentation().isEmpty() &&
md->briefDescription().isEmpty() &&
md->inbodyDocumentation().isEmpty()
)
while (md)
{
//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());
MemberDef *omd=memberList->next();
//printf("found it!\n");
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)
{
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());
omd->setBriefDescription(md->briefDescription(),md->briefFile(),md->briefLine());
......
......@@ -546,7 +546,7 @@ void PerlModDocVisitor::visit(DocSymbol *sy)
case DocSymbol::Rdquo: c = '"'; break;
case DocSymbol::Ndash: c = '-'; break;
case DocSymbol::Mdash: s = "--"; break;
case DocSymbol::Nbsp: c = ''; break;
case DocSymbol::Nbsp: c = ' '; break;
case DocSymbol::Uml: accent = "umlaut"; break;
case DocSymbol::Acute: accent = "acute"; break;
case DocSymbol::Grave: accent = "grave"; break;
......
......@@ -644,6 +644,7 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
%x PackageName
%x JavaImport
%x CSAccessorDecl
%x CSGeneric
%x PreLineCtrl
%x DefinePHP
%x DefinePHPEnd
......@@ -2725,11 +2726,17 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
}
}
<IDLAttribute>"propput" {
if (Config_getBool("IDL_PROPERTY_SUPPORT"))
{
current->mtype = Property;
}
current->spec |= Entry::Settable;
}
<IDLAttribute>"propget" {
if (Config_getBool("IDL_PROPERTY_SUPPORT"))
{
current->mtype = Property;
}
current->spec |= Entry::Gettable;
}
<IDLAttribute>. {
......@@ -2744,7 +2751,8 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
BEGIN( IDLProp );
}
<IDLProp>{BN}*"["[^\]]*"]"{BN}* { // attribute of a parameter
idlAttr += yytext;
idlAttr = yytext;
idlAttr=idlAttr.stripWhiteSpace();
}
<IDLProp>{ID} { // property type
idlProp = yytext;
......@@ -2781,7 +2789,7 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
BEGIN( FindMembers );
}
<IDLProp>. { // spaces, *, or other stuff
idlProp+=yytext;
//idlProp+=yytext;
}
<Array>"]" { current->args += *yytext ;
if (--squareCount<=0)
......@@ -4273,11 +4281,31 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
{
BEGIN( ObjCProtocolList );
}
else if (insideCS) // C# generic class
{
BEGIN( CSGeneric );
}
else // C++ template specialization
{
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>"<" {
insideProtocolList=TRUE;
BEGIN( Bases );
......
This diff is collapsed.
......@@ -158,7 +158,7 @@ class TranslatorFrench : public TranslatorAdapter_1_5_4
/*! header that is put before the list of typedefs. */
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. */
virtual QCString trMemberEnumerationDocumentation()
......
......@@ -1909,6 +1909,10 @@ QCString tempArgListToString(ArgumentList *al)
{
result+=a->type.right(a->type.length()-i-1);
}
else // nothing found -> take whole name
{
result+=a->type;
}
}
a=al->next();
if (a) result+=", ";
......
......@@ -1438,7 +1438,7 @@ void VhdlDocGen::writeProcedureProto(OutputList& ol,const ArgumentList* al,const
ol.docify(" )");
}// writePorcedure
}
/*!
* writes a function prototype to the output
......
......@@ -83,6 +83,7 @@ static int scantype = 0;
static int g_lastCommentContext = 0;
static bool docBlockAutoBrief;
static char docBlockTerm;
static int iDocLine = -1;
//#define YY_A_INTERACTIVE 1
#define YY_NEVER_INTERACTIVE 1
......@@ -122,8 +123,7 @@ static void addText (char *word, int llen)
{
while (llen>0)
{
g_buf[iCounter]=*word;
*word++;
g_buf[iCounter]=*word++;
iCounter++;
llen--;
}
......@@ -384,7 +384,7 @@ static void parseFunctionProto()
{
current->args+=",";
}
Argument *arg=new Argument();
Argument *arg=new Argument;
Argument *hh=(Argument*)ql.at(k);
arg->name=hh->name;
arg->type=hh->type;
......@@ -437,6 +437,7 @@ void parserInit()
lastEntity=0;
bropen=0;
openGroups=0;
iDocLine=-1;
//isPrevDoc=FALSE;
//prevDocEntry.reset();
qrl.clear();
......@@ -446,9 +447,8 @@ void parserInit()
VhdlDocGen::init();
}
uint SSIZE=inputFile.size()+1024;
if (g_buf==0)
if (g_buf==0) free(g_buf);
g_buf=(char*)(calloc(SSIZE,sizeof(char)));
if (g_buf==0)
......@@ -1367,6 +1367,7 @@ ALLID [^;()\t ]
*/
<*>{BR}*"--!"[^{}\n][^\n]*\n/{B}*"--!" { // multi line comment
if (iDocLine==-1) iDocLine=yyLineNr;
if (YY_START!=Comment) // Start of the comment block
{
iTextCounter=iCounter;
......@@ -1379,6 +1380,7 @@ ALLID [^;()\t ]
}
<Comment>^{B}*"--!"[^\n]* {
if (iDocLine==-1) iDocLine=yyLineNr;
addText(vhdlscanYYtext,vhdlscanYYleng);
lineCount();
}
......@@ -1395,6 +1397,7 @@ ALLID [^;()\t ]
}
<*>^{B}*"--!"[^\n]* { // one line comment
if (iDocLine==-1) iDocLine=yyLineNr;
QCString qcs(yytext);
int j=qcs.find("--!");
qcs=qcs.right(qcs.length()-3-j);
......@@ -1451,13 +1454,18 @@ static void handleCommentBlock(const QCString &doc,bool brief)
int position=0;
bool needsEntry=FALSE;
Protection protection=Public;
if (brief)
current->briefLine = iDocLine;
else
current->docLine = iDocLine;
//printf("parseCommentBlock %p [%s]\n",current,doc.data());
while (parseCommentBlock(
g_thisParser,
current,
doc, // text
yyFileName, // file
brief ? current->briefLine : current->docLine, // line of block start
iDocLine, // line of block start
brief,
docBlockAutoBrief,
FALSE,
......@@ -1480,6 +1488,7 @@ static void handleCommentBlock(const QCString &doc,bool brief)
unput(docBlockTerm);
docBlockTerm=0;
}
iDocLine=-1;
}
#if 0
......@@ -1668,6 +1677,7 @@ void VHDLLanguageScanner::parseInput(const char *fileName,const char *fileBuf,En
current=0;
groupLeaveFile(yyFileName,yyLineNr);
inputFile.close();
//mergeBrief(current_root);
//mergeGrouping(current_root,0);
......
......@@ -1238,7 +1238,7 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti)
{
t << convertToXML(
insertTemplateSpecifierInScope(
bcd->classDef->displayName(),bcd->templSpecifiers)
bcd->classDef->name(),bcd->templSpecifiers)
);
}
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