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

Release-1.2.5-20010225

parent d2707001
...@@ -100,7 +100,7 @@ HTML_ALIGN_MEMBERS = YES ...@@ -100,7 +100,7 @@ HTML_ALIGN_MEMBERS = YES
GENERATE_HTMLHELP = NO GENERATE_HTMLHELP = NO
DISABLE_INDEX = NO DISABLE_INDEX = NO
ENUM_VALUES_PER_LINE = 4 ENUM_VALUES_PER_LINE = 4
GENERATE_TREEVIEW = YES GENERATE_TREEVIEW = NO
TREEVIEW_WIDTH = 250 TREEVIEW_WIDTH = 250
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the LaTeX output # configuration options related to the LaTeX output
......
DOXYGEN Version 1.2.5-20010211 DOXYGEN Version 1.2.5-20010225
Please read the installation section of the manual for instructions. Please read the installation section of the manual for instructions.
-------- --------
Dimitri van Heesch (11 February 2001) Dimitri van Heesch (25 February 2001)
DOCDIR = $(INSTALL)/share/doc/packages/doxygen
#all: src/version.cpp configgen doxywizard #all: src/version.cpp configgen doxywizard
# cd qtools ; $(MAKE) # cd qtools ; $(MAKE)
...@@ -45,25 +46,26 @@ distclean: clean ...@@ -45,25 +46,26 @@ distclean: clean
-rm -f addon/xmlgen/Makefile addon/xmlgen/Makefile.xmlgen -rm -f addon/xmlgen/Makefile addon/xmlgen/Makefile.xmlgen
-rm -f addon/xmlgen/*.o -rm -f addon/xmlgen/*.o
install: doxywizard_install install: doxywizard_install
$(INSTTOOL) -d $(INSTALL)/bin $(INSTTOOL) -d $(INSTALL)/bin
$(INSTTOOL) -d $(INSTALL)/doc/doxygen $(INSTTOOL) -d $(DOCDIR)
$(INSTTOOL) -m 755 bin/doxygen $(INSTALL)/bin $(INSTTOOL) -m 755 bin/doxygen $(INSTALL)/bin
$(INSTTOOL) -m 755 bin/doxytag $(INSTALL)/bin $(INSTTOOL) -m 755 bin/doxytag $(INSTALL)/bin
$(INSTTOOL) -m 755 bin/doxysearch $(INSTALL)/bin $(INSTTOOL) -m 755 bin/doxysearch $(INSTALL)/bin
cp -r doc $(INSTALL)/doc/doxygen cp -r doc $(DOCDIR)
cp -r examples $(INSTALL)/doc/doxygen cp -r examples $(DOCDIR)
echo "DOXYGEN = $(INSTALL)" > $(INSTALL)/doc/doxygen/doc/Makefile echo "DOXYGEN = $(INSTALL)" > $(DOCDIR)/doc/Makefile
echo "DOXYDOCS = .." >> $(INSTALL)/doc/doxygen/doc/Makefile echo "DOXYDOCS = .." >> $(DOCDIR)/doc/Makefile
echo "VERSION = $(VERSION)" >> $(INSTALL)/doc/doxygen/doc/Makefile echo "VERSION = $(VERSION)" >> $(DOCDIR)/doc/Makefile
cat doc/Makefile.in >> $(INSTALL)/doc/doxygen/doc/Makefile cat doc/Makefile.in >> $(DOCDIR)/doc/Makefile
cd $(INSTALL)/doc/doxygen/examples ; $(MAKE) cd $(DOCDIR)/examples ; $(MAKE)
cd $(INSTALL)/doc/doxygen/doc ; $(MAKE) cd $(DOCDIR)/doc ; $(MAKE)
rm -rf $(INSTALL)/doc/doxygen/doc rm -rf $(DOCDIR)/doc
cd $(INSTALL)/doc/doxygen/latex ; $(MAKE) cd $(DOCDIR)/latex ; $(MAKE)
cp $(INSTALL)/doc/doxygen/latex/doxygen_manual.pdf $(INSTALL)/doc/doxygen cp $(DOCDIR)/latex/doxygen_manual.pdf $(INSTALL)/doc/doxygen
cp $(INSTALL)/doc/doxygen/latex/doxygen_manual.ps $(INSTALL)/doc/doxygen cp $(DOCDIR)/latex/doxygen_manual.ps $(INSTALL)/doc/doxygen
rm -rf $(INSTALL)/doc/doxygen/latex rm -rf $(DOCDIR)/latex
docs: FORCE docs: FORCE
cd examples ; $(MAKE) cd examples ; $(MAKE)
......
DOXYGEN Version 1.2.5-20010211 DOXYGEN Version 1.2.5-20010225
Please read INSTALL for compilation instructions. Please read INSTALL for compilation instructions.
...@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at ...@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at
Enjoy, Enjoy,
Dimitri van Heesch (11 February 2001) Dimitri van Heesch (25 February 2001)
1.2.5-20010211 1.2.5-20010225
...@@ -27,6 +27,11 @@ extern void checkConfig(); ...@@ -27,6 +27,11 @@ extern void checkConfig();
extern void configStrToVal(); extern void configStrToVal();
extern void substituteEnvironmentVars(); extern void substituteEnvironmentVars();
/*! \brief Namespace for configuration variables
*
* This struct acts as a namespace that holds the global static variables
* read from a user-supplied configuration file.
*/
struct Config struct Config
{ {
static void init(); static void init();
......
...@@ -93,7 +93,7 @@ class ConfigOption ...@@ -93,7 +93,7 @@ class ConfigOption
virtual void printHeader(QTextStream &t) virtual void printHeader(QTextStream &t)
{ {
t << " static " << type << " " << varName t << " static " << type << " " << varName
<< "; // " << shortDesc << endl; << "; /*!< " << shortDesc << " */" << endl;
} }
virtual void printStatic(QTextStream &) {} virtual void printStatic(QTextStream &) {}
virtual void printConfig(QTextStream &t) virtual void printConfig(QTextStream &t)
...@@ -1035,6 +1035,14 @@ void init() ...@@ -1035,6 +1035,14 @@ void init()
"disable (NO) the test list. This list is created by putting \\test \n" "disable (NO) the test list. This list is created by putting \\test \n"
"commands in the documentation.\n" "commands in the documentation.\n"
); );
ConfigBool::add( "generateBugList",
"GENERATE_BUGLIST",
"TRUE",
"do we want a bug list?",
"The GENERATE_BUGLIST tag can be used to enable (YES) or \n"
"disable (NO) the bug list. This list is created by putting \\bug \n"
"commands in the documentation.\n"
);
ConfigList::add( "aliasList", ConfigList::add( "aliasList",
"ALIASES", "ALIASES",
"", "",
...@@ -1068,6 +1076,14 @@ void init() ...@@ -1068,6 +1076,14 @@ void init()
"For instance some of the names that are used will be different. The list \n" "For instance some of the names that are used will be different. The list \n"
"of all members will be omitted, etc. \n" "of all members will be omitted, etc. \n"
); );
ConfigBool::add( "showUsedFilesFlag",
"SHOW_USED_FILES",
"TRUE",
"do we show the list of used files for classes and structs?",
"Set the SHOW_USED_FILES tag to NO to disable the list of files generated \n"
"at the bottom of the documentation of classes and structs. If set to YES the \n"
"list will mention the files that were used to generate the documentation. \n"
);
//----------------------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------------------
ConfigInfo::add( "Messages","configuration options related to warning and progress messages"); ConfigInfo::add( "Messages","configuration options related to warning and progress messages");
//----------------------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------------------
...@@ -1315,6 +1331,23 @@ void init() ...@@ -1315,6 +1331,23 @@ void init()
"it should be included in the master .chm file (NO).\n" "it should be included in the master .chm file (NO).\n"
); );
addDependency("htmlHelpChiFlag","generateHtml"); addDependency("htmlHelpChiFlag","generateHtml");
ConfigBool::add( "htmlHelpTocFlag",
"BINARY_TOC",
"FALSE",
"should a binary table of contents be generated?",
"If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag \n"
"controls whether a binary table of contents is generated (YES) or a \n"
"normal table of contents (NO) in the .chm file.\n"
);
addDependency("htmlHelpTocFlag","generateHtml");
ConfigBool::add( "htmlHelpTocExpandFlag",
"TOC_EXPAND",
"FALSE",
"should module elements be displayed in the table of contents?",
"The TOC_EXPAND flag can be set YES to add extra items for group members \n"
"to the contents of the Html help documentation and to the tree view. \n"
);
addDependency("htmlHelpTocExpandFlag","generateHtml");
ConfigBool::add( "noIndexFlag", ConfigBool::add( "noIndexFlag",
"DISABLE_INDEX", "DISABLE_INDEX",
"FALSE", "FALSE",
......
...@@ -280,8 +280,12 @@ Doxygen. Unrecognized commands are treated as normal text. ...@@ -280,8 +280,12 @@ Doxygen. Unrecognized commands are treated as normal text.
\addindex \fn \addindex \fn
Indicates that a comment block contains documentation for a function Indicates that a comment block contains documentation for a function
(either global or as a member of a class). This command is needed if a (either global or as a member of a class). This command is needed if a
comment block is \e not located before the function declaration comment block is \e not placed in front of the function declaration
or definition. A full function declaration should be specified after the or definition. If your comment block \e is in front of the function
declaration or definition this command can (and to avoid redundancy
should) be ommitted.
A full function declaration should be specified after the
\\fn command. The argument ends at the end of the line. \\fn command. The argument ends at the end of the line.
\par Example: \par Example:
......
...@@ -71,6 +71,7 @@ followed by the descriptions of the tags grouped by category. ...@@ -71,6 +71,7 @@ followed by the descriptions of the tags grouped by category.
<li> \refitem cfg_alphabetical_index ALPHABETICAL_INDEX <li> \refitem cfg_alphabetical_index ALPHABETICAL_INDEX
<li> \refitem cfg_always_detailed_sec ALWAYS_DETAILED_SEC <li> \refitem cfg_always_detailed_sec ALWAYS_DETAILED_SEC
<li> \refitem cfg_bin_abspath BIN_ABSPATH <li> \refitem cfg_bin_abspath BIN_ABSPATH
<li> \refitem cfg_binary_toc BINARY_TOC
<li> \refitem cfg_brief_member_desc BRIEF_MEMBER_DESC <li> \refitem cfg_brief_member_desc BRIEF_MEMBER_DESC
<li> \refitem cfg_case_sense_names CASE_SENSE_NAMES <li> \refitem cfg_case_sense_names CASE_SENSE_NAMES
<li> \refitem cfg_cgi_name CGI_NAME <li> \refitem cfg_cgi_name CGI_NAME
...@@ -93,6 +94,7 @@ followed by the descriptions of the tags grouped by category. ...@@ -93,6 +94,7 @@ followed by the descriptions of the tags grouped by category.
<li> \refitem cfg_example_patterns EXAMPLE_PATTERNS <li> \refitem cfg_example_patterns EXAMPLE_PATTERNS
<li> \refitem cfg_exclude EXCLUDE <li> \refitem cfg_exclude EXCLUDE
<li> \refitem cfg_exclude_patterns EXCLUDE_PATTERNS <li> \refitem cfg_exclude_patterns EXCLUDE_PATTERNS
<li> \refitem cfg_expand_as_defined EXPAND_AS_PREDEFINED
<li> \refitem cfg_expand_only_predef EXPAND_ONLY_PREDEF <li> \refitem cfg_expand_only_predef EXPAND_ONLY_PREDEF
<li> \refitem cfg_ext_doc_paths EXT_DOC_PATHS <li> \refitem cfg_ext_doc_paths EXT_DOC_PATHS
<li> \refitem cfg_extra_packages EXTRA_PACKAGES <li> \refitem cfg_extra_packages EXTRA_PACKAGES
...@@ -100,7 +102,10 @@ followed by the descriptions of the tags grouped by category. ...@@ -100,7 +102,10 @@ followed by the descriptions of the tags grouped by category.
<li> \refitem cfg_extract_private EXTRACT_PRIVATE <li> \refitem cfg_extract_private EXTRACT_PRIVATE
<li> \refitem cfg_extract_static EXTRACT_STATIC <li> \refitem cfg_extract_static EXTRACT_STATIC
<li> \refitem cfg_file_patterns FILE_PATTERNS <li> \refitem cfg_file_patterns FILE_PATTERNS
<li> \refitem cfg_filter_source_files FILTER_SOURCE_FILES
<li> \refitem cfg_full_path_names FULL_PATH_NAMES <li> \refitem cfg_full_path_names FULL_PATH_NAMES
<li> \refitem cfg_generate_buglist GENERATE_BUGLIST
<li> \refitem cfg_generate_chi GENERATE_CHI
<li> \refitem cfg_generate_html GENERATE_HTML <li> \refitem cfg_generate_html GENERATE_HTML
<li> \refitem cfg_generate_htmlhelp GENERATE_HTMLHELP <li> \refitem cfg_generate_htmlhelp GENERATE_HTMLHELP
<li> \refitem cfg_generate_latex GENERATE_LATEX <li> \refitem cfg_generate_latex GENERATE_LATEX
...@@ -159,12 +164,14 @@ followed by the descriptions of the tags grouped by category. ...@@ -159,12 +164,14 @@ followed by the descriptions of the tags grouped by category.
<li> \refitem cfg_search_includes SEARCH_INCLUDES <li> \refitem cfg_search_includes SEARCH_INCLUDES
<li> \refitem cfg_searchengine SEARCHENGINE <li> \refitem cfg_searchengine SEARCHENGINE
<li> \refitem cfg_show_include_files SHOW_INCLUDE_FILES <li> \refitem cfg_show_include_files SHOW_INCLUDE_FILES
<li> \refitem cfg_show_used_files SHOW_USED_FILES
<li> \refitem cfg_sort_member_docs SORT_MEMBER_DOCS <li> \refitem cfg_sort_member_docs SORT_MEMBER_DOCS
<li> \refitem cfg_source_browser SOURCE_BROWSER <li> \refitem cfg_source_browser SOURCE_BROWSER
<li> \refitem cfg_strip_code_comments STRIP_CODE_COMMENTS <li> \refitem cfg_strip_code_comments STRIP_CODE_COMMENTS
<li> \refitem cfg_strip_from_path STRIP_FROM_PATH <li> \refitem cfg_strip_from_path STRIP_FROM_PATH
<li> \refitem cfg_tab_size TAB_SIZE <li> \refitem cfg_tab_size TAB_SIZE
<li> \refitem cfg_tagfiles TAGFILES <li> \refitem cfg_tagfiles TAGFILES
<li> \refitem cfg_toc_expand TOC_EXPAND
<li> \refitem cfg_treeview_width TREEVIEW_WIDTH <li> \refitem cfg_treeview_width TREEVIEW_WIDTH
<li> \refitem cfg_verbatim_headers VERBATIM_HEADERS <li> \refitem cfg_verbatim_headers VERBATIM_HEADERS
<li> \refitem cfg_warn_format WARN_FORMAT <li> \refitem cfg_warn_format WARN_FORMAT
...@@ -430,6 +437,13 @@ followed by the descriptions of the tags grouped by category. ...@@ -430,6 +437,13 @@ followed by the descriptions of the tags grouped by category.
disable (NO) the test list. This list is created by disable (NO) the test list. This list is created by
putting \ref cmdtest "\\test" commands in the documentation. putting \ref cmdtest "\\test" commands in the documentation.
\anchor cfg_generate_buglist
<dt>\c GENERATE_BUGLIST <dd>
\addindex GENERATE_BUGLIST
The GENERATE_BUGLIST tag can be used to enable (YES) or
disable (NO) the bug list. This list is created by
putting \ref cmdbug "\\bug" commands in the documentation.
\anchor cfg_aliases \anchor cfg_aliases
<dt>\c ALIASES <dd> <dt>\c ALIASES <dd>
\addindex ALIASES \addindex ALIASES
...@@ -465,6 +479,13 @@ followed by the descriptions of the tags grouped by category. ...@@ -465,6 +479,13 @@ followed by the descriptions of the tags grouped by category.
for C. For instance some of the names that are used will be different. for C. For instance some of the names that are used will be different.
The list of all members will be omitted, etc. The list of all members will be omitted, etc.
\anchor cfg_show_used_files
<dt>\c SHOW_USED_FILES <dd>
\addindex SHOW_USED_FILES
Set the \c SHOW_USED_FILES tag to \c NO to disable the list of files generated
at the bottom of the documentation of classes and structs. If set to \c YES the
list will mention the files that were used to generate the documentation.
</dl> </dl>
\subsection messages_input Options related to warning and progress messages \subsection messages_input Options related to warning and progress messages
...@@ -744,6 +765,27 @@ followed by the descriptions of the tags grouped by category. ...@@ -744,6 +765,27 @@ followed by the descriptions of the tags grouped by category.
(which basically renders \c doxysearch obsolete on Windows). (which basically renders \c doxysearch obsolete on Windows).
The HTML workshop also contains a viewer for compressed HTML files. The HTML workshop also contains a viewer for compressed HTML files.
\anchor cfg_generate_chi
<dt>\c GENERATE_CHI <dd>
\addindex GENERATE_CHI
If the \c GENERATE_HTMLHELP tag is set to \c YES, the \c GENERATE_CHI flag
controls if a separate .chi index file is generated (<code>YES</code>) or that
it should be included in the master .chm file (<code>NO</code>).
\anchor cfg_binary_toc
<dt>\c BINARY_TOC <dd>
\addindex BINARY_TOC
If the \c GENERATE_HTMLHELP tag is set to \c YES, the \c BINARY_TOC flag
controls whether a binary table of contents is generated (<code>YES</code>) or a
normal table of contents (<code>NO</code>) in the .chm file.
\anchor cfg_toc_expand
<dt>\c TOC_EXPAND <dd>
\addindex TOC_EXPAND
The \c TOC_EXPAND flag can be set YES to add extra items for
group members to the table of contents of the Html help documentation
and to the tree view.
\anchor cfg_disable_index \anchor cfg_disable_index
<dt>\c DISABLE_INDEX <dd> <dt>\c DISABLE_INDEX <dd>
\addindex DISABLE_INDEX \addindex DISABLE_INDEX
......
...@@ -35,6 +35,33 @@ You should use the \\mainpage command inside a comment block like this: ...@@ -35,6 +35,33 @@ You should use the \\mainpage command inside a comment block like this:
*/ */
\endverbatim \endverbatim
<li><b>Help, some/all of the members of my class / file / namespace
are not documented?</b>
Check the following:
<ol>
<li>Is your class / file / namespace documented? If not, it will not
be extracted from the sources unless \c EXTRACT_ALL is set to \c YES
in the config file.
<li>Are the members private? If so, you must set \c EXTRACT_PRIVATE to \c YES
to make them appear in the documentation.
<li>Is there a function macro in your class that does not end with a
semicolon (e.g. MY_MACRO())? If so then you have to instruct
doxygen's preprocessor to remove it.
This typically boils down to the following settings in the config file:
\verbatim
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = YES
PREDEFINED = MY_MACRO()=
\endverbatim
Please read the \ref preprocessing "preprocessing" section of the
manual for more information.
</ol>
<li><b>When I set EXTRACT_ALL to NO non of my functions are shown in the documentation.</b></li> <li><b>When I set EXTRACT_ALL to NO non of my functions are shown in the documentation.</b></li>
In order for global functions, variables, enums, typedefs, and defines In order for global functions, variables, enums, typedefs, and defines
...@@ -64,10 +91,6 @@ around the blocks that should be hidden and put: ...@@ -64,10 +91,6 @@ around the blocks that should be hidden and put:
in the config file then all blocks should be skipped by Doxygen as long in the config file then all blocks should be skipped by Doxygen as long
as <code>PREPROCESSING = YES</code>. as <code>PREPROCESSING = YES</code>.
<li><b>How can I make doxygen ignore nasty macro's? </b>
Look at section \ref preprocessing for the answer.
<li><b>How can I change what's after the <code>\#include</code> in the class documentation?</b> <li><b>How can I change what's after the <code>\#include</code> in the class documentation?</b>
You can document your class like You can document your class like
...@@ -145,15 +168,10 @@ The most important reason is too have a platform abstraction for most ...@@ -145,15 +168,10 @@ The most important reason is too have a platform abstraction for most
Unices and Windows by means of the QFile, QFileInfo, QDir, QDate, Unices and Windows by means of the QFile, QFileInfo, QDir, QDate,
QTime and QIODevice classes. QTime and QIODevice classes.
Another reason is for the nice and bug free utility classes, like QList, Another reason is for the nice and bug free utility classes, like QList,
QDict, QString, QArray, QTextStream, QRegExp etc. QDict, QString, QArray, QTextStream, QRegExp, QXML etc.
The GUI front-end doxywizard uses Qt for... well... the GUI! The GUI front-end doxywizard uses Qt for... well... the GUI!
<li><b>Can I use doxygen on my Java code?</b>
No, at the moment there is no support for Java. I suggest to
use Sun's JavaDoc instead.
<li><b>How can I exclude all test directories from my directory tree?</b> <li><b>How can I exclude all test directories from my directory tree?</b>
Simply put an exclude pattern like this in the configuration file: Simply put an exclude pattern like this in the configuration file:
......
...@@ -172,6 +172,9 @@ Thanks go to: ...@@ -172,6 +172,9 @@ Thanks go to:
Boris Bralo, Nickolay Semyonov, Richard Kim, Földvári György, Boris Bralo, Nickolay Semyonov, Richard Kim, Földvári György,
Grzegorz Kowal, and Wang Weihan Grzegorz Kowal, and Wang Weihan
for providing translations into various languages. for providing translations into various languages.
<li>The Comms group of <a href="http://www.symbian.com">Symbian</a> for donating
me an ultra cool <a href="http://www.psion.com/revoplus>Revo plus</a>
organizer!
<li>many, many others for suggestions, patches and bug reports. <li>many, many others for suggestions, patches and bug reports.
</ul> </ul>
*/ */
......
...@@ -148,11 +148,11 @@ Here is a list of the languages and their current maintainers: ...@@ -148,11 +148,11 @@ Here is a list of the languages and their current maintainers:
Russian Russian
</TD> </TD>
<TD> <TD>
Nickolay Semyonov Andrey V. Stolyarov
</TD> </TD>
<TD> <TD>
<a href="mailto:snob@NOSPAM.int.spb.ru"> <a href="mailto:crocodil@NOSPAM.croco.net">
snob@NOSPAM.int.spb.ru</a> crocodil@NOSPAM.croco.net</a>
</TD> </TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
...@@ -246,7 +246,7 @@ Here is a list of the languages and their current maintainers: ...@@ -246,7 +246,7 @@ Here is a list of the languages and their current maintainers:
\hline \hline
Finnish & Olli Korhonen & {\tt Olli.Korhonen@ccc.fi} \\ Finnish & Olli Korhonen & {\tt Olli.Korhonen@ccc.fi} \\
\hline \hline
Russian & Nickolay Semyonov & {\tt snob@int.spb.ru} \\ Russian & Andrey V. Stolyarov & {\tt crocodil@croco.net} \\
\hline \hline
Korean & Richard Kim & {\tt ryk@dspwiz.com} \\ Korean & Richard Kim & {\tt ryk@dspwiz.com} \\
\hline \hline
......
Name: doxygen Name: doxygen
Version: 1.2.5-20010211 Version: 1.2.5-20010225
Summary: documentation system for C, C++ and IDL Summary: documentation system for C, C++ and IDL
Release: 1 Release: 1
Source0: doxygen-%{version}.src.tar.gz Source0: doxygen-%{version}.src.tar.gz
......
...@@ -472,7 +472,8 @@ void ClassDef::insertMember(MemberDef *md) ...@@ -472,7 +472,8 @@ void ClassDef::insertMember(MemberDef *md)
} }
MemberInfo *mi = new MemberInfo((MemberDef *)md,Public,Normal); MemberInfo *mi = new MemberInfo((MemberDef *)md,
md->protection(),md->virtualness(),FALSE);
MemberNameInfo *mni=0; MemberNameInfo *mni=0;
if ((mni=(*allMemberNameInfoDict)[md->name()])) if ((mni=(*allMemberNameInfoDict)[md->name()]))
{ {
...@@ -1112,48 +1113,52 @@ void ClassDef::writeDocumentation(OutputList &ol) ...@@ -1112,48 +1113,52 @@ void ClassDef::writeDocumentation(OutputList &ol)
// write the list of used files (not for man pages) // write the list of used files (not for man pages)
ol.pushGeneratorState(); ol.pushGeneratorState();
ol.disable(OutputGenerator::Man);
ol.writeRuler(); if (Config::showUsedFilesFlag)
parseText(ol,theTranslator->trGeneratedFromFiles(compType,files.count()==1));
bool first=TRUE;
const char *file = files.first();
while (file)
{ {
bool ambig; ol.disable(OutputGenerator::Man);
FileDef *fd=findFileDef(Doxygen::inputNameDict,file,ambig); ol.writeRuler();
if (fd) parseText(ol,theTranslator->trGeneratedFromFiles(compType,files.count()==1));
bool first=TRUE;
const char *file = files.first();
while (file)
{ {
if (first) bool ambig;
FileDef *fd=findFileDef(Doxygen::inputNameDict,file,ambig);
if (fd)
{ {
first=FALSE; if (first)
ol.startItemList(); {
} first=FALSE;
ol.startItemList();
}
ol.writeListItem(); ol.writeListItem();
QCString path=fd->getPath().copy(); QCString path=fd->getPath().copy();
if (Config::fullPathNameFlag) if (Config::fullPathNameFlag)
{ {
ol.docify(stripFromPath(path)); ol.docify(stripFromPath(path));
} }
if (fd->generateSourceFile()) if (fd->generateSourceFile())
{ {
ol.writeObjectLink(0,fd->sourceName(),0,fd->name()); ol.writeObjectLink(0,fd->sourceName(),0,fd->name());
} }
else if (fd->isLinkable()) else if (fd->isLinkable())
{ {
ol.writeObjectLink(fd->getReference(),fd->getOutputFileBase(),0, ol.writeObjectLink(fd->getReference(),fd->getOutputFileBase(),0,
fd->name()); fd->name());
} }
else else
{ {
ol.docify(fd->name()); ol.docify(fd->name());
}
} }
file=files.next();
} }
file=files.next(); if (!first) ol.endItemList();
} }
if (!first) ol.endItemList();
// write Author section (Man only) // write Author section (Man only)
ol.enable(OutputGenerator::Man); ol.enable(OutputGenerator::Man);
...@@ -1204,14 +1209,18 @@ void ClassDef::writeMemberList(OutputList &ol) ...@@ -1204,14 +1209,18 @@ void ClassDef::writeMemberList(OutputList &ol)
ClassDef *cd=md->getClassDef(); ClassDef *cd=md->getClassDef();
// compute the protection level for this member // compute the protection level for this member
Protection protect=md->protection(); Protection prot=md->protection();
if (mi->prot==Protected) // inherited protection if (mi->prot==Protected) // inherited protection: Protected
{ {
if (protect==Public) protect=Protected; if (prot==Public) prot=Protected;
}
else if (mi->prot==Private) // inherited protection: Private
{
prot=Private;
} }
//printf("Member %s of class %s mi->prot=%d prot=%d\n", //printf("%s: Member %s of class %s md->protection()=%d mi->prot=%d prot=%d inherited=%d\n",
// md->name().data(),cd->name().data(),mi->prot,protect); // name().data(),md->name().data(),cd->name().data(),md->protection(),mi->prot,prot,mi->inherited);
Specifier virt=md->virtualness(); Specifier virt=md->virtualness();
MemberDef *rmd=md->reimplements(); MemberDef *rmd=md->reimplements();
...@@ -1224,7 +1233,9 @@ void ClassDef::writeMemberList(OutputList &ol) ...@@ -1224,7 +1233,9 @@ void ClassDef::writeMemberList(OutputList &ol)
if (cd && !md->name().isEmpty() && md->name()[0]!='@' && if (cd && !md->name().isEmpty() && md->name()[0]!='@' &&
( (
md->isFriend() || md->isFriend() ||
(mi->prot!=Private && (protect!=Private || Config::extractPrivateFlag)) (/*mi->prot!=Private &&*/
(prot!=Private || Config::extractPrivateFlag)
)
) )
) )
{ {
...@@ -1280,7 +1291,7 @@ void ClassDef::writeMemberList(OutputList &ol) ...@@ -1280,7 +1291,7 @@ void ClassDef::writeMemberList(OutputList &ol)
ol.writeString(")"); ol.writeString(")");
memberWritten=TRUE; memberWritten=TRUE;
} }
if ((protect!=Public || virt!=Normal || if ((prot!=Public || virt!=Normal ||
md->isFriend() || md->isRelated() || md->isExplicit() || md->isFriend() || md->isRelated() || md->isExplicit() ||
md->isMutable() || (md->isInline() && Config::inlineInfoFlag) || md->isMutable() || (md->isInline() && Config::inlineInfoFlag) ||
md->isSignal() || md->isSlot() || md->isSignal() || md->isSlot() ||
...@@ -1299,8 +1310,8 @@ void ClassDef::writeMemberList(OutputList &ol) ...@@ -1299,8 +1310,8 @@ void ClassDef::writeMemberList(OutputList &ol)
sl.append("inline"); sl.append("inline");
if (md->isExplicit()) sl.append("explicit"); if (md->isExplicit()) sl.append("explicit");
if (md->isMutable()) sl.append("mutable"); if (md->isMutable()) sl.append("mutable");
if (protect==Protected) sl.append("protected"); if (prot==Protected) sl.append("protected");
else if (protect==Private) sl.append("private"); else if (prot==Private) sl.append("private");
if (virt==Virtual) sl.append("virtual"); if (virt==Virtual) sl.append("virtual");
else if (virt==Pure) sl.append("pure virtual"); else if (virt==Pure) sl.append("pure virtual");
if (md->isStatic()) sl.append("static"); if (md->isStatic()) sl.append("static");
...@@ -1500,12 +1511,10 @@ void ClassDef::mergeMembers() ...@@ -1500,12 +1511,10 @@ void ClassDef::mergeMembers()
for ( ; (bcd=bcli.current()) ; ++bcli ) for ( ; (bcd=bcli.current()) ; ++bcli )
{ {
ClassDef *bClass=bcd->classDef; ClassDef *bClass=bcd->classDef;
// merge the members of bClass with the onces from cd
// merge the members in the base class of this inheritance branch first
bClass->mergeMembers(); bClass->mergeMembers();
// the all member list of the branch until bClass is now complete
// so we can merge it with cd
MemberNameInfoList *srcMnl = bClass->memberNameInfoList(); MemberNameInfoList *srcMnl = bClass->memberNameInfoList();
MemberNameInfoDict *dstMnd = memberNameInfoDict(); MemberNameInfoDict *dstMnd = memberNameInfoDict();
MemberNameInfoList *dstMnl = memberNameInfoList(); MemberNameInfoList *dstMnl = memberNameInfoList();
...@@ -1602,7 +1611,7 @@ void ClassDef::mergeMembers() ...@@ -1602,7 +1611,7 @@ void ClassDef::mergeMembers()
{ {
Specifier virt=srcMi->virt; Specifier virt=srcMi->virt;
if (srcMi->virt==Normal && bcd->virt!=Normal) virt=bcd->virt; if (srcMi->virt==Normal && bcd->virt!=Normal) virt=bcd->virt;
MemberInfo *newMi = new MemberInfo(srcMd,bcd->prot,virt); MemberInfo *newMi = new MemberInfo(srcMd,bcd->prot,virt,TRUE);
newMi->scopePath=bClass->name()+"::"+srcMi->scopePath; newMi->scopePath=bClass->name()+"::"+srcMi->scopePath;
if (ambigue) if (ambigue)
{ {
...@@ -1645,7 +1654,7 @@ void ClassDef::mergeMembers() ...@@ -1645,7 +1654,7 @@ void ClassDef::mergeMembers()
MemberInfo *mi; MemberInfo *mi;
for (;(mi=mnii.current());++mnii) for (;(mi=mnii.current());++mnii)
{ {
Protection prot = mi->memberDef->protection(); Protection prot = mi->prot;
if (bcd->prot==Protected) if (bcd->prot==Protected)
{ {
if (prot==Public) prot=Protected; if (prot==Public) prot=Protected;
...@@ -1655,15 +1664,15 @@ void ClassDef::mergeMembers() ...@@ -1655,15 +1664,15 @@ void ClassDef::mergeMembers()
prot=Private; prot=Private;
} }
//printf("%s::%s: prot=%d bcd->prot=%d result=%d\n", //printf("%s::%s: prot=%d bcd->prot=%d result=%d\n",
// name().data(),mi->memberDef->name().data(),mi->memberDef->protection(), // name().data(),mi->memberDef->name().data(),mi->prot,
// bcd->prot,prot); // bcd->prot,prot);
if (prot!=Private) if (mi->prot!=Private)
{ {
Specifier virt=mi->virt; Specifier virt=mi->virt;
if (mi->virt==Normal && bcd->virt!=Normal) virt=bcd->virt; if (mi->virt==Normal && bcd->virt!=Normal) virt=bcd->virt;
MemberInfo *newMi=new MemberInfo(mi->memberDef,prot,virt); MemberInfo *newMi=new MemberInfo(mi->memberDef,prot,virt,TRUE);
newMi->scopePath=bClass->name()+"::"+mi->scopePath; newMi->scopePath=bClass->name()+"::"+mi->scopePath;
newMi->ambigClass=mi->ambigClass; newMi->ambigClass=mi->ambigClass;
newMi->ambiguityResolutionScope=mi->ambiguityResolutionScope.copy(); newMi->ambiguityResolutionScope=mi->ambiguityResolutionScope.copy();
......
...@@ -23,9 +23,11 @@ ...@@ -23,9 +23,11 @@
class OutputDocInterface; class OutputDocInterface;
class FileDef; class FileDef;
class MemberDef;
extern void parseCode(OutputDocInterface &,const char *,const QCString &, extern void parseCode(OutputDocInterface &,const char *,const QCString &,
bool ,const char *,FileDef *fd=0, bool ,const char *,FileDef *fd=0,
int startLine=-1,int endLine=-1,bool inlineFragment=FALSE); int startLine=-1,int endLine=-1,bool inlineFragment=FALSE);
extern void initParseCodeContext(); extern void initParseCodeContext();
extern void setParameterList(MemberDef *md);
#endif #endif
...@@ -379,6 +379,30 @@ static void addParameter() ...@@ -379,6 +379,30 @@ static void addParameter()
} }
} }
void setParameterList(MemberDef *md)
{
g_classScope = md->getClassDef() ? md->getClassDef()->name().data() : "";
ArgumentList *al = md->argumentList();
if (al==0) return;
Argument *a = al->first();
while (a)
{
g_parmName = a->name.copy();
g_parmType = a->type.copy();
int i = g_parmType.find('*');
if (i!=-1)
g_parmType = g_parmType.left(i);
i = g_parmType.find('&');
if (i!=-1)
g_parmType = g_parmType.left(i);
if (g_parmType.left(6)=="const ")
g_parmType = g_parmType.right(g_parmType.length()-6);
g_parmType=g_parmType.stripWhiteSpace();
addParameter();
a = al->next();
}
}
static void generateClassLink(OutputDocInterface &ol,char *clName,int *clNameLen=0) static void generateClassLink(OutputDocInterface &ol,char *clName,int *clNameLen=0)
{ {
int i=0; int i=0;
...@@ -1032,9 +1056,9 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned" ...@@ -1032,9 +1056,9 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
while (e>=0 && (text.at(e)==')' || isspace(yytext[e]))) e--; while (e>=0 && (text.at(e)==')' || isspace(yytext[e]))) e--;
QCString varname = text.mid(s+1,e-s); QCString varname = text.mid(s+1,e-s);
QCString tmp=varname.copy(); QCString tmp=varname.copy();
g_code->docify(text.left(s+1)); g_code->codify(text.left(s+1));
generateClassLink(*g_code,tmp.data()); generateClassLink(*g_code,tmp.data());
g_code->docify(text.right(yyleng-e-1)); g_code->codify(text.right(yyleng-e-1));
addType(); addType();
g_name+=varname; g_name+=varname;
} }
...@@ -1046,7 +1070,7 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned" ...@@ -1046,7 +1070,7 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
g_name+=yytext; g_name+=yytext;
BEGIN( FuncCall ); BEGIN( FuncCall );
} }
<FuncCall,Body,MemberCall>\" { <FuncCall,Body,MemberCall,MemberCall2>\" {
startFontClass("stringliteral"); startFontClass("stringliteral");
g_code->codify(yytext); g_code->codify(yytext);
g_lastStringContext=YY_START; g_lastStringContext=YY_START;
......
/* This file was generated by configgen on Thu Feb 8 22:26:39 2001 /* This file was generated by configgen on Sun Feb 25 14:30:18 2001
* from config_templ.h * from config_templ.h
* *
* DO NOT EDIT! * DO NOT EDIT!
...@@ -33,122 +33,131 @@ extern void checkConfig(); ...@@ -33,122 +33,131 @@ extern void checkConfig();
extern void configStrToVal(); extern void configStrToVal();
extern void substituteEnvironmentVars(); extern void substituteEnvironmentVars();
/*! \brief Namespace for configuration variables
*
* This struct acts as a namespace that holds the global static variables
* read from a user-supplied configuration file.
*/
struct Config struct Config
{ {
static void init(); static void init();
static QCString projectName; // the name of the project static QCString projectName; /*!< the name of the project */
static QCString projectNumber; // the number of the project static QCString projectNumber; /*!< the number of the project */
static QCString outputDir; // the global output directory static QCString outputDir; /*!< the global output directory */
static QCString outputLanguage; // the output language static QCString outputLanguage; /*!< the output language */
static bool extractAllFlag; // generate docs for all classes flag static bool extractAllFlag; /*!< generate docs for all classes flag */
static bool extractPrivateFlag; // generate docs for private members flag static bool extractPrivateFlag; /*!< generate docs for private members flag */
static bool extractStaticFlag; // generate docs for static members flag static bool extractStaticFlag; /*!< generate docs for static members flag */
static bool hideMemberFlag; // hide undocumented members. static bool hideMemberFlag; /*!< hide undocumented members. */
static bool hideClassFlag; // hide undocumented members. static bool hideClassFlag; /*!< hide undocumented members. */
static bool briefMemDescFlag; // enable `inline' brief member descr. static bool briefMemDescFlag; /*!< enable `inline' brief member descr. */
static bool repeatBriefFlag; // repeat brief descriptions. static bool repeatBriefFlag; /*!< repeat brief descriptions. */
static bool alwaysDetailsFlag; // show details description even if there is only a brief description? static bool alwaysDetailsFlag; /*!< show details description even if there is only a brief description? */
static bool fullPathNameFlag; // using full path name in output static bool fullPathNameFlag; /*!< using full path name in output */
static QStrList stripFromPath; // list of candidates to strip from the file path static QStrList stripFromPath; /*!< list of candidates to strip from the file path */
static bool internalDocsFlag; // determines what happens to internal docs. static bool internalDocsFlag; /*!< determines what happens to internal docs. */
static bool classDiagramFlag; // enable the generation of class diagrams. static bool classDiagramFlag; /*!< enable the generation of class diagrams. */
static bool sourceBrowseFlag; // include source code in documentation. static bool sourceBrowseFlag; /*!< include source code in documentation. */
static bool inlineSourceFlag; // inline the definition bodies in the docs? static bool inlineSourceFlag; /*!< inline the definition bodies in the docs? */
static bool stripCommentsFlag; // strip special comments from code fragments? static bool stripCommentsFlag; /*!< strip special comments from code fragments? */
static bool caseSensitiveNames; // determines if output can be mixed case. static bool caseSensitiveNames; /*!< determines if output can be mixed case. */
static bool hideScopeNames; // hide the name of the scope. static bool hideScopeNames; /*!< hide the name of the scope. */
static bool verbatimHeaderFlag; // enable/disable generation of verb headers. static bool verbatimHeaderFlag; /*!< enable/disable generation of verb headers. */
static bool showIncFileFlag; // show include file in file documentation? static bool showIncFileFlag; /*!< show include file in file documentation? */
static bool autoBriefFlag; // should javadoc comments behaves as Qt comments. static bool autoBriefFlag; /*!< should javadoc comments behaves as Qt comments. */
static bool inheritDocsFlag; // inheritance of documentation enabled? static bool inheritDocsFlag; /*!< inheritance of documentation enabled? */
static bool inlineInfoFlag; // show info about inline members? static bool inlineInfoFlag; /*!< show info about inline members? */
static bool sortMembersFlag; // sort members alphabetically? static bool sortMembersFlag; /*!< sort members alphabetically? */
static bool distributeDocFlag; // distribute docs over member group? static bool distributeDocFlag; /*!< distribute docs over member group? */
static int tabSize; // number of spaces in a tab static int tabSize; /*!< number of spaces in a tab */
static QStrList sectionFilterList; // list of section filters that are enabled static QStrList sectionFilterList; /*!< list of section filters that are enabled */
static bool generateTodoList; // do we want a todo list? static bool generateTodoList; /*!< do we want a todo list? */
static bool generateTestList; // do we want a test list? static bool generateTestList; /*!< do we want a test list? */
static QStrList aliasList; // list of aliases static bool generateBugList; /*!< do we want a bug list? */
static int maxInitLines; // when do we hide values of variable and defines? static QStrList aliasList; /*!< list of aliases */
static bool optimizeForCFlag; // do we parse C code? static int maxInitLines; /*!< when do we hide values of variable and defines? */
static bool quietFlag; // generate progress messages flag static bool optimizeForCFlag; /*!< do we parse C code? */
static bool warningFlag; // generate warnings flag static bool showUsedFilesFlag; /*!< do we show the list of used files for classes and structs? */
static bool warningUndocFlag; // generate undocumented warnings static bool quietFlag; /*!< generate progress messages flag */
static QCString warnFormat; // format of the warning messages static bool warningFlag; /*!< generate warnings flag */
static QCString warnLogFile; // log file to write warning to static bool warningUndocFlag; /*!< generate undocumented warnings */
static QStrList inputSources; // list of input files static QCString warnFormat; /*!< format of the warning messages */
static QStrList filePatternList; // list of file patterns static QCString warnLogFile; /*!< log file to write warning to */
static bool recursiveFlag; // scan directories recursively static QStrList inputSources; /*!< list of input files */
static QStrList excludeSources; // list of files to exclude from the input static QStrList filePatternList; /*!< list of file patterns */
static QStrList excludePatternList; // list of patterns to exclude from input static bool recursiveFlag; /*!< scan directories recursively */
static QStrList examplePath; // list of example paths static QStrList excludeSources; /*!< list of files to exclude from the input */
static QStrList examplePatternList; // list of example patterns static QStrList excludePatternList; /*!< list of patterns to exclude from input */
static QStrList imagePath; // list of image paths static QStrList examplePath; /*!< list of example paths */
static QCString inputFilter; // a filter command that is applied to input files static QStrList examplePatternList; /*!< list of example patterns */
static bool filterForSourceFlag; // do we filter source files? static QStrList imagePath; /*!< list of image paths */
static bool alphaIndexFlag; // should an alphabetical index be generated? static QCString inputFilter; /*!< a filter command that is applied to input files */
static int colsInAlphaIndex; // number of columns in the alphabetical index static bool filterForSourceFlag; /*!< do we filter source files? */
static QStrList ignorePrefixList; // list of prefixes to ignore for the alphabetical index static bool alphaIndexFlag; /*!< should an alphabetical index be generated? */
static bool generateHtml; // generate HTML output static int colsInAlphaIndex; /*!< number of columns in the alphabetical index */
static QCString htmlOutputDir; // the directory to put the HTML files static QStrList ignorePrefixList; /*!< list of prefixes to ignore for the alphabetical index */
static QCString headerFile; // the name of the personal HTML header static bool generateHtml; /*!< generate HTML output */
static QCString footerFile; // the name of the personal HTML footer static QCString htmlOutputDir; /*!< the directory to put the HTML files */
static QCString htmlStyleSheet; // user defined cascading style sheet static QCString headerFile; /*!< the name of the personal HTML header */
static bool htmlAlignMemberFlag; // align members in HTML using tables. static QCString footerFile; /*!< the name of the personal HTML footer */
static bool htmlHelpFlag; // should html help files be generated? static QCString htmlStyleSheet; /*!< user defined cascading style sheet */
static bool htmlHelpChiFlag; // should chi file be generated? static bool htmlAlignMemberFlag; /*!< align members in HTML using tables. */
static bool noIndexFlag; // generate condensed index flag static bool htmlHelpFlag; /*!< should html help files be generated? */
static int enumValuesPerLine; // number of enum values that are put on one line static bool htmlHelpChiFlag; /*!< should chi file be generated? */
static bool ftvHelpFlag; // should a folder tree view be generated? static bool htmlHelpTocFlag; /*!< should a binary table of contents be generated? */
static int treeViewWidth; // What is the width of the treeview panel? static bool htmlHelpTocExpandFlag; /*!< should module elements be displayed in the table of contents? */
static bool generateLatex; // generate Latex output static bool noIndexFlag; /*!< generate condensed index flag */
static QCString latexOutputDir; // the directory to put the Latex files static int enumValuesPerLine; /*!< number of enum values that are put on one line */
static bool compactLatexFlag; // generate compact LaTeX documentation. static bool ftvHelpFlag; /*!< should a folder tree view be generated? */
static QCString paperType; // the page type to generate docs for static int treeViewWidth; /*!< What is the width of the treeview panel? */
static QStrList extraPackageList; // list of extra LaTeX packages. static bool generateLatex; /*!< generate Latex output */
static QCString latexHeaderFile; // the name of the personal LaTeX header static QCString latexOutputDir; /*!< the directory to put the Latex files */
static bool pdfHyperFlag; // generate latex prepared creating hyperlinked pdfs. static bool compactLatexFlag; /*!< generate compact LaTeX documentation. */
static bool usePDFLatexFlag; // use pdflatex instead of plain latex static QCString paperType; /*!< the page type to generate docs for */
static bool latexBatchModeFlag; // continue after latex errors? static QStrList extraPackageList; /*!< list of extra LaTeX packages. */
static bool generateRTF; // generate RTF flag static QCString latexHeaderFile; /*!< the name of the personal LaTeX header */
static QCString rtfOutputDir; // the directory to put the RTF files static bool pdfHyperFlag; /*!< generate latex prepared creating hyperlinked pdfs. */
static bool compactRTFFlag; // generate more compact RTF static bool usePDFLatexFlag; /*!< use pdflatex instead of plain latex */
static bool rtfHyperFlag; // generate hyper links in RTF static bool latexBatchModeFlag; /*!< continue after latex errors? */
static QCString rtfStylesheetFile; // file to load stylesheet definitions from static bool generateRTF; /*!< generate RTF flag */
static bool generateMan; // generate Man pages static QCString rtfOutputDir; /*!< the directory to put the RTF files */
static QCString manOutputDir; // the directory to put the man pages static bool compactRTFFlag; /*!< generate more compact RTF */
static QCString manExtension; // extension the man page files static bool rtfHyperFlag; /*!< generate hyper links in RTF */
static bool preprocessingFlag; // enable preprocessing static QCString rtfStylesheetFile; /*!< file to load stylesheet definitions from */
static bool macroExpansionFlag; // expand macros in the source. static bool generateMan; /*!< generate Man pages */
static bool onlyPredefinedFlag; // expand only predefined macros static QCString manOutputDir; /*!< the directory to put the man pages */
static bool searchIncludeFlag; // search for included files static QCString manExtension; /*!< extension the man page files */
static QStrList includePath; // list of include paths static bool preprocessingFlag; /*!< enable preprocessing */
static QStrList includeFilePatternList; // list of include file patterns static bool macroExpansionFlag; /*!< expand macros in the source. */
static QStrList predefined; // list of predefined macro names. static bool onlyPredefinedFlag; /*!< expand only predefined macros */
static QStrList expandAsDefinedList; // list of defines to expand static bool searchIncludeFlag; /*!< search for included files */
static QStrList tagFileList; // list of tag files static QStrList includePath; /*!< list of include paths */
static QCString genTagFile; // the tag file to generate static QStrList includeFilePatternList; /*!< list of include file patterns */
static bool allExtFlag; // include all external classes flag static QStrList predefined; /*!< list of predefined macro names. */
static QCString perlPath; // the absolute path to perl static QStrList expandAsDefinedList; /*!< list of defines to expand */
static bool haveDotFlag; // indicates wether or not dot is present static QStrList tagFileList; /*!< list of tag files */
static bool classGraphFlag; // class graph static QCString genTagFile; /*!< the tag file to generate */
static bool collGraphFlag; // collaboration graph static bool allExtFlag; /*!< include all external classes flag */
static bool includeGraphFlag; // include graph static QCString perlPath; /*!< the absolute path to perl */
static bool includedByGraphFlag; // depends on include graph static bool haveDotFlag; /*!< indicates wether or not dot is present */
static bool gfxHierarchyFlag; // flag to enable graphical hierarchy static bool classGraphFlag; /*!< class graph */
static QCString dotPath; // path to the dot tool static bool collGraphFlag; /*!< collaboration graph */
static int maxDotGraphWidth; // max dot graph width static bool includeGraphFlag; /*!< include graph */
static int maxDotGraphHeight; // max dot graph height static bool includedByGraphFlag; /*!< depends on include graph */
static bool generateLegend; // generate legend page static bool gfxHierarchyFlag; /*!< flag to enable graphical hierarchy */
static bool dotCleanUp; // remove intermedia dot files? static QCString dotPath; /*!< path to the dot tool */
static bool searchEngineFlag; // generate search engine flag static int maxDotGraphWidth; /*!< max dot graph width */
static QCString cgiName; // the name of the CGI binary static int maxDotGraphHeight; /*!< max dot graph height */
static QCString cgiURL; // the absolute URL to the CGI binary static bool generateLegend; /*!< generate legend page */
static QCString docURL; // the absolute URL to the documentation static bool dotCleanUp; /*!< remove intermedia dot files? */
static QCString docAbsPath; // the absolute path to the documentation static bool searchEngineFlag; /*!< generate search engine flag */
static QCString binAbsPath; // the absolute path to the doxysearch static QCString cgiName; /*!< the name of the CGI binary */
static QStrList extDocPathList; // list of external doc. directories. static QCString cgiURL; /*!< the absolute URL to the CGI binary */
static QCString docURL; /*!< the absolute URL to the documentation */
static QCString docAbsPath; /*!< the absolute path to the documentation */
static QCString binAbsPath; /*!< the absolute path to the doxysearch */
static QStrList extDocPathList; /*!< list of external doc. directories. */
}; };
#endif #endif
/* This file was generated by configgen on Thu Feb 8 22:26:39 2001 /* This file was generated by configgen on Sun Feb 25 14:30:18 2001
* from config_templ.l * from config_templ.l
* *
* DO NOT EDIT! * DO NOT EDIT!
...@@ -106,9 +106,11 @@ int Config::tabSize = 8; ...@@ -106,9 +106,11 @@ int Config::tabSize = 8;
QStrList Config::sectionFilterList; QStrList Config::sectionFilterList;
bool Config::generateTodoList = TRUE; bool Config::generateTodoList = TRUE;
bool Config::generateTestList = TRUE; bool Config::generateTestList = TRUE;
bool Config::generateBugList = TRUE;
QStrList Config::aliasList; QStrList Config::aliasList;
int Config::maxInitLines = 30; int Config::maxInitLines = 30;
bool Config::optimizeForCFlag = FALSE; bool Config::optimizeForCFlag = FALSE;
bool Config::showUsedFilesFlag = TRUE;
bool Config::quietFlag = FALSE; bool Config::quietFlag = FALSE;
bool Config::warningFlag = TRUE; bool Config::warningFlag = TRUE;
bool Config::warningUndocFlag = TRUE; bool Config::warningUndocFlag = TRUE;
...@@ -135,6 +137,8 @@ QCString Config::htmlStyleSheet; ...@@ -135,6 +137,8 @@ QCString Config::htmlStyleSheet;
bool Config::htmlAlignMemberFlag = TRUE; bool Config::htmlAlignMemberFlag = TRUE;
bool Config::htmlHelpFlag = FALSE; bool Config::htmlHelpFlag = FALSE;
bool Config::htmlHelpChiFlag = FALSE; bool Config::htmlHelpChiFlag = FALSE;
bool Config::htmlHelpTocFlag = FALSE;
bool Config::htmlHelpTocExpandFlag = FALSE;
bool Config::noIndexFlag = FALSE; bool Config::noIndexFlag = FALSE;
int Config::enumValuesPerLine = 4; int Config::enumValuesPerLine = 4;
bool Config::ftvHelpFlag = FALSE; bool Config::ftvHelpFlag = FALSE;
...@@ -381,10 +385,12 @@ static void readIncludeFile(const char *incName) ...@@ -381,10 +385,12 @@ static void readIncludeFile(const char *incName)
<Start>"ENABLED_SECTIONS"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::sectionFilterList; elemStr=""; } <Start>"ENABLED_SECTIONS"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::sectionFilterList; elemStr=""; }
<Start>"GENERATE_TODOLIST"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateTodoList; } <Start>"GENERATE_TODOLIST"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateTodoList; }
<Start>"GENERATE_TESTLIST"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateTestList; } <Start>"GENERATE_TESTLIST"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateTestList; }
<Start>"GENERATE_BUGLIST"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateBugList; }
<Start>"ALIASES"[ \t]*"=" { BEGIN(GetStrList); l=&Config::aliasList; l->clear(); elemStr=""; } <Start>"ALIASES"[ \t]*"=" { BEGIN(GetStrList); l=&Config::aliasList; l->clear(); elemStr=""; }
<Start>"ALIASES"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::aliasList; elemStr=""; } <Start>"ALIASES"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::aliasList; elemStr=""; }
<Start>"MAX_INITIALIZER_LINES"[ \t]*"=" { BEGIN(GetString); s=&maxInitLinesString; s->resize(0); } <Start>"MAX_INITIALIZER_LINES"[ \t]*"=" { BEGIN(GetString); s=&maxInitLinesString; s->resize(0); }
<Start>"OPTIMIZE_OUTPUT_FOR_C"[ \t]*"=" { BEGIN(GetBool); b=&Config::optimizeForCFlag; } <Start>"OPTIMIZE_OUTPUT_FOR_C"[ \t]*"=" { BEGIN(GetBool); b=&Config::optimizeForCFlag; }
<Start>"SHOW_USED_FILES"[ \t]*"=" { BEGIN(GetBool); b=&Config::showUsedFilesFlag; }
<Start>"QUIET"[ \t]*"=" { BEGIN(GetBool); b=&Config::quietFlag; } <Start>"QUIET"[ \t]*"=" { BEGIN(GetBool); b=&Config::quietFlag; }
<Start>"WARNINGS"[ \t]*"=" { BEGIN(GetBool); b=&Config::warningFlag; } <Start>"WARNINGS"[ \t]*"=" { BEGIN(GetBool); b=&Config::warningFlag; }
<Start>"WARN_IF_UNDOCUMENTED"[ \t]*"=" { BEGIN(GetBool); b=&Config::warningUndocFlag; } <Start>"WARN_IF_UNDOCUMENTED"[ \t]*"=" { BEGIN(GetBool); b=&Config::warningUndocFlag; }
...@@ -419,6 +425,8 @@ static void readIncludeFile(const char *incName) ...@@ -419,6 +425,8 @@ static void readIncludeFile(const char *incName)
<Start>"HTML_ALIGN_MEMBERS"[ \t]*"=" { BEGIN(GetBool); b=&Config::htmlAlignMemberFlag; } <Start>"HTML_ALIGN_MEMBERS"[ \t]*"=" { BEGIN(GetBool); b=&Config::htmlAlignMemberFlag; }
<Start>"GENERATE_HTMLHELP"[ \t]*"=" { BEGIN(GetBool); b=&Config::htmlHelpFlag; } <Start>"GENERATE_HTMLHELP"[ \t]*"=" { BEGIN(GetBool); b=&Config::htmlHelpFlag; }
<Start>"GENERATE_CHI"[ \t]*"=" { BEGIN(GetBool); b=&Config::htmlHelpChiFlag; } <Start>"GENERATE_CHI"[ \t]*"=" { BEGIN(GetBool); b=&Config::htmlHelpChiFlag; }
<Start>"BINARY_TOC"[ \t]*"=" { BEGIN(GetBool); b=&Config::htmlHelpTocFlag; }
<Start>"TOC_EXPAND"[ \t]*"=" { BEGIN(GetBool); b=&Config::htmlHelpTocExpandFlag; }
<Start>"DISABLE_INDEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::noIndexFlag; } <Start>"DISABLE_INDEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::noIndexFlag; }
<Start>"ENUM_VALUES_PER_LINE"[ \t]*"=" { BEGIN(GetString); s=&enumValuesPerLineString; s->resize(0); } <Start>"ENUM_VALUES_PER_LINE"[ \t]*"=" { BEGIN(GetString); s=&enumValuesPerLineString; s->resize(0); }
<Start>"GENERATE_TREEVIEW"[ \t]*"=" { BEGIN(GetBool); b=&Config::ftvHelpFlag; } <Start>"GENERATE_TREEVIEW"[ \t]*"=" { BEGIN(GetBool); b=&Config::ftvHelpFlag; }
...@@ -627,6 +635,7 @@ void dumpConfig() ...@@ -627,6 +635,7 @@ void dumpConfig()
} }
printf("generateTodoList=`%d'\n",Config::generateTodoList); printf("generateTodoList=`%d'\n",Config::generateTodoList);
printf("generateTestList=`%d'\n",Config::generateTestList); printf("generateTestList=`%d'\n",Config::generateTestList);
printf("generateBugList=`%d'\n",Config::generateBugList);
{ {
char *is=Config::aliasList.first(); char *is=Config::aliasList.first();
while (is) while (is)
...@@ -637,6 +646,7 @@ void dumpConfig() ...@@ -637,6 +646,7 @@ void dumpConfig()
} }
printf("maxInitLines=`%d'\n",Config::maxInitLines); printf("maxInitLines=`%d'\n",Config::maxInitLines);
printf("optimizeForCFlag=`%d'\n",Config::optimizeForCFlag); printf("optimizeForCFlag=`%d'\n",Config::optimizeForCFlag);
printf("showUsedFilesFlag=`%d'\n",Config::showUsedFilesFlag);
printf("# configuration options related to warning and progress messages\n"); printf("# configuration options related to warning and progress messages\n");
printf("quietFlag=`%d'\n",Config::quietFlag); printf("quietFlag=`%d'\n",Config::quietFlag);
printf("warningFlag=`%d'\n",Config::warningFlag); printf("warningFlag=`%d'\n",Config::warningFlag);
...@@ -723,6 +733,8 @@ void dumpConfig() ...@@ -723,6 +733,8 @@ void dumpConfig()
printf("htmlAlignMemberFlag=`%d'\n",Config::htmlAlignMemberFlag); printf("htmlAlignMemberFlag=`%d'\n",Config::htmlAlignMemberFlag);
printf("htmlHelpFlag=`%d'\n",Config::htmlHelpFlag); printf("htmlHelpFlag=`%d'\n",Config::htmlHelpFlag);
printf("htmlHelpChiFlag=`%d'\n",Config::htmlHelpChiFlag); printf("htmlHelpChiFlag=`%d'\n",Config::htmlHelpChiFlag);
printf("htmlHelpTocFlag=`%d'\n",Config::htmlHelpTocFlag);
printf("htmlHelpTocExpandFlag=`%d'\n",Config::htmlHelpTocExpandFlag);
printf("noIndexFlag=`%d'\n",Config::noIndexFlag); printf("noIndexFlag=`%d'\n",Config::noIndexFlag);
printf("enumValuesPerLine=`%d'\n",Config::enumValuesPerLine); printf("enumValuesPerLine=`%d'\n",Config::enumValuesPerLine);
printf("ftvHelpFlag=`%d'\n",Config::ftvHelpFlag); printf("ftvHelpFlag=`%d'\n",Config::ftvHelpFlag);
...@@ -866,9 +878,11 @@ void Config::init() ...@@ -866,9 +878,11 @@ void Config::init()
Config::sectionFilterList.clear(); Config::sectionFilterList.clear();
Config::generateTodoList = TRUE; Config::generateTodoList = TRUE;
Config::generateTestList = TRUE; Config::generateTestList = TRUE;
Config::generateBugList = TRUE;
Config::aliasList.clear(); Config::aliasList.clear();
Config::maxInitLines = 30; Config::maxInitLines = 30;
Config::optimizeForCFlag = FALSE; Config::optimizeForCFlag = FALSE;
Config::showUsedFilesFlag = TRUE;
Config::quietFlag = FALSE; Config::quietFlag = FALSE;
Config::warningFlag = TRUE; Config::warningFlag = TRUE;
Config::warningUndocFlag = TRUE; Config::warningUndocFlag = TRUE;
...@@ -895,6 +909,8 @@ void Config::init() ...@@ -895,6 +909,8 @@ void Config::init()
Config::htmlAlignMemberFlag = TRUE; Config::htmlAlignMemberFlag = TRUE;
Config::htmlHelpFlag = FALSE; Config::htmlHelpFlag = FALSE;
Config::htmlHelpChiFlag = FALSE; Config::htmlHelpChiFlag = FALSE;
Config::htmlHelpTocFlag = FALSE;
Config::htmlHelpTocExpandFlag = FALSE;
Config::noIndexFlag = FALSE; Config::noIndexFlag = FALSE;
Config::enumValuesPerLine = 4; Config::enumValuesPerLine = 4;
Config::ftvHelpFlag = FALSE; Config::ftvHelpFlag = FALSE;
...@@ -1381,6 +1397,17 @@ void writeTemplateConfig(QFile *f,bool sl) ...@@ -1381,6 +1397,17 @@ void writeTemplateConfig(QFile *f,bool sl)
writeBoolValue(t,Config::generateTestList); writeBoolValue(t,Config::generateTestList);
t << "\n"; t << "\n";
if (!sl) if (!sl)
{
t << "\n";
t << "# The GENERATE_BUGLIST tag can be used to enable (YES) or \n";
t << "# disable (NO) the bug list. This list is created by putting \\bug \n";
t << "# commands in the documentation.\n";
t << "\n";
}
t << "GENERATE_BUGLIST = ";
writeBoolValue(t,Config::generateBugList);
t << "\n";
if (!sl)
{ {
t << "\n"; t << "\n";
t << "# This tag can be used to specify a number of aliases that acts \n"; t << "# This tag can be used to specify a number of aliases that acts \n";
...@@ -1422,6 +1449,17 @@ void writeTemplateConfig(QFile *f,bool sl) ...@@ -1422,6 +1449,17 @@ void writeTemplateConfig(QFile *f,bool sl)
writeBoolValue(t,Config::optimizeForCFlag); writeBoolValue(t,Config::optimizeForCFlag);
t << "\n"; t << "\n";
if (!sl) if (!sl)
{
t << "\n";
t << "# Set the SHOW_USED_FILES tag to NO to disable the list of files generated \n";
t << "# at the bottom of the documentation of classes and structs. If set to YES the \n";
t << "# list will mention the files that were used to generate the documentation. \n";
t << "\n";
}
t << "SHOW_USED_FILES = ";
writeBoolValue(t,Config::showUsedFilesFlag);
t << "\n";
if (!sl)
{ {
t << "\n"; t << "\n";
} }
...@@ -1744,6 +1782,27 @@ void writeTemplateConfig(QFile *f,bool sl) ...@@ -1744,6 +1782,27 @@ void writeTemplateConfig(QFile *f,bool sl)
writeBoolValue(t,Config::htmlHelpChiFlag); writeBoolValue(t,Config::htmlHelpChiFlag);
t << "\n"; t << "\n";
if (!sl) if (!sl)
{
t << "\n";
t << "# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag \n";
t << "# controls whether a binary table of contents is generated (YES) or a \n";
t << "# normal table of contents (NO) in the .chm file.\n";
t << "\n";
}
t << "BINARY_TOC = ";
writeBoolValue(t,Config::htmlHelpTocFlag);
t << "\n";
if (!sl)
{
t << "\n";
t << "# The TOC_EXPAND flag can be set YES to add extra items for group members \n";
t << "# to the contents of the Html help documentation and to the tree view. \n";
t << "\n";
}
t << "TOC_EXPAND = ";
writeBoolValue(t,Config::htmlHelpTocExpandFlag);
t << "\n";
if (!sl)
{ {
t << "\n"; t << "\n";
t << "# The DISABLE_INDEX tag can be used to turn on/off the condensed index at \n"; t << "# The DISABLE_INDEX tag can be used to turn on/off the condensed index at \n";
......
...@@ -42,6 +42,7 @@ Definition::Definition(const char *df,int dl, ...@@ -42,6 +42,7 @@ Definition::Definition(const char *df,int dl,
sourceRefDict=0; sourceRefDict=0;
m_todoId=0; m_todoId=0;
m_testId=0; m_testId=0;
m_bugId=0;
} }
Definition::~Definition() Definition::~Definition()
...@@ -356,6 +357,7 @@ void Definition::writeInlineCode(OutputList &ol,const char *scopeName) ...@@ -356,6 +357,7 @@ void Definition::writeInlineCode(OutputList &ol,const char *scopeName)
{ {
initParseCodeContext(); initParseCodeContext();
//printf("Read:\n`%s'\n\n",codeFragment.data()); //printf("Read:\n`%s'\n\n",codeFragment.data());
if (definitionType()==TypeMember) setParameterList((MemberDef *)this);
ol.startCodeFragment(); ol.startCodeFragment();
parseCode(ol,scopeName,codeFragment,FALSE,0, parseCode(ol,scopeName,codeFragment,FALSE,0,
bodyDef,actualStart,actualEnd,TRUE); bodyDef,actualStart,actualEnd,TRUE);
......
...@@ -110,13 +110,15 @@ class Definition ...@@ -110,13 +110,15 @@ class Definition
void writeSourceRefs(OutputList &ol,const char *scopeName); void writeSourceRefs(OutputList &ol,const char *scopeName);
void addSourceReference(MemberDef *d); void addSourceReference(MemberDef *d);
void setRefItems(int todoId,int testId) void setRefItems(int todoId,int testId,int bugId)
{ {
if (todoId!=0) m_todoId=todoId; if (todoId!=0) m_todoId=todoId;
if (testId!=0) m_testId=testId; if (testId!=0) m_testId=testId;
if (bugId!=0) m_bugId=bugId;
} }
int todoId() const { return m_todoId; } int todoId() const { return m_todoId; }
int testId() const { return m_testId; } int testId() const { return m_testId; }
int bugId() const { return m_bugId; }
/*! returns the file in which this definition was found */ /*! returns the file in which this definition was found */
QCString getDefFileName() const { return defFileName; } QCString getDefFileName() const { return defFileName; }
...@@ -141,8 +143,9 @@ class Definition ...@@ -141,8 +143,9 @@ class Definition
MemberList *sourceRefList; // list of entities that refer to this MemberList *sourceRefList; // list of entities that refer to this
// entity in their definition // entity in their definition
MemberDict *sourceRefDict; MemberDict *sourceRefDict;
int m_testId; // id for test case int m_testId; // id for test list item
int m_todoId; // id for todo case int m_todoId; // id for todo list item
int m_bugId; // id for bug list item
}; };
......
...@@ -1120,6 +1120,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) ...@@ -1120,6 +1120,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
outDoc->writeDescItem(); outDoc->writeDescItem();
} }
} }
/*
<DocScan>{CMD}"bug"[s]?{BN}+ { <DocScan>{CMD}"bug"[s]?{BN}+ {
endArgumentList(); endArgumentList();
if (!inBugBlock) if (!inBugBlock)
...@@ -1139,6 +1140,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) ...@@ -1139,6 +1140,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
outDoc->writeDescItem(); outDoc->writeDescItem();
} }
} }
*/
<DocScan>{CMD}"note"[s]?{BN}+ { <DocScan>{CMD}"note"[s]?{BN}+ {
endArgumentList(); endArgumentList();
if (!inNoteBlock) if (!inNoteBlock)
...@@ -1316,6 +1318,28 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) ...@@ -1316,6 +1318,28 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
currentListIndent.pop(); currentListIndent.pop();
} }
} }
<DocScan>"\\bug "[0-9]+ { // this tag is generated in an earlier pass
if (Config::generateBugList)
{
QCString numStr=yytext;
numStr=numStr.right(numStr.length()-5);
bool ok; int num = numStr.toUInt(&ok);
RefItem *item = bugList.getRefItem(num);
ASSERT(item!=0);
endArgumentList();
if (inBlock()) endBlock();
currentListIndent.push("D");
outDoc->startDescList();
outDoc->startBold();
outDoc->writeObjectLink(0,"bug",item->listAnchor,theTranslator->trBug()+": ");
outDoc->endBold();
outDoc->endDescTitle();
outDoc->writeDescItem();
internalParseDocument(item->text);
outDoc->endDescList();
currentListIndent.pop();
}
}
<DocScan>{CMD}"deprecated"{BN}+ { <DocScan>{CMD}"deprecated"{BN}+ {
endArgumentList(); endArgumentList();
if (!inDeprecatedBlock) if (!inDeprecatedBlock)
......
...@@ -202,7 +202,7 @@ QCString spaces; ...@@ -202,7 +202,7 @@ QCString spaces;
static void addRelatedPage(const char *name,const QCString &ptitle, static void addRelatedPage(const char *name,const QCString &ptitle,
const QCString &doc,QList<QCString> *anchors, const QCString &doc,QList<QCString> *anchors,
const char *fileName,int startLine, const char *fileName,int startLine,
int todoId,int testId,GroupDef *gd=0, int todoId,int testId,int bugId,GroupDef *gd=0,
TagInfo *tagInfo=0 TagInfo *tagInfo=0
) )
{ {
...@@ -224,6 +224,7 @@ static void addRelatedPage(const char *name,const QCString &ptitle, ...@@ -224,6 +224,7 @@ static void addRelatedPage(const char *name,const QCString &ptitle,
pi=new PageInfo(fileName,startLine,baseName,doc,title); pi=new PageInfo(fileName,startLine,baseName,doc,title);
pi->todoId=todoId; pi->todoId=todoId;
pi->testId=testId; pi->testId=testId;
pi->bugId=bugId;
if (tagInfo) if (tagInfo)
{ {
pi->reference = tagInfo->tagName; pi->reference = tagInfo->tagName;
...@@ -274,13 +275,14 @@ static void addRelatedPage(Entry *root) ...@@ -274,13 +275,14 @@ static void addRelatedPage(Entry *root)
if (!s->isEmpty() && (gd=Doxygen::groupDict[*s])) break; if (!s->isEmpty() && (gd=Doxygen::groupDict[*s])) break;
} }
addRelatedPage(root->name,root->args,root->doc,root->anchors, addRelatedPage(root->name,root->args,root->doc,root->anchors,
root->fileName,root->startLine,root->todoId,root->testId,gd,root->tagInfo root->fileName,root->startLine,root->todoId,
root->testId,root->bugId,gd,root->tagInfo
); );
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
static void addRefItem(int todoId,int testId,const char *prefix, static void addRefItem(int todoId,int testId,int bugId,const char *prefix,
const char *name,const char *title,const char *args=0) const char *name,const char *title,const char *args=0)
{ {
...@@ -311,7 +313,7 @@ static void addRefItem(int todoId,int testId,const char *prefix, ...@@ -311,7 +313,7 @@ static void addRefItem(int todoId,int testId,const char *prefix,
doc += item->text; doc += item->text;
doc += "</dd></dl>\n"; doc += "</dd></dl>\n";
//printf("Todo page: %s\n",doc.data()); //printf("Todo page: %s\n",doc.data());
addRelatedPage("todo",theTranslator->trTodoList(),doc,0,"generated",1,0,0); addRelatedPage("todo",theTranslator->trTodoList(),doc,0,"generated",1,0,0,0);
item->written=TRUE; item->written=TRUE;
} }
...@@ -340,7 +342,36 @@ static void addRefItem(int todoId,int testId,const char *prefix, ...@@ -340,7 +342,36 @@ static void addRefItem(int todoId,int testId,const char *prefix,
doc += "</dt>\n<dd>"; doc += "</dt>\n<dd>";
doc += item->text; doc += item->text;
doc += "</dd></dl>\n"; doc += "</dd></dl>\n";
addRelatedPage("test",theTranslator->trTestList(),doc,0,"generated",1,0,0); addRelatedPage("test",theTranslator->trTestList(),doc,0,"generated",1,0,0,0);
item->written=TRUE;
}
////////////////////////////////////////////////////////////
// add item to the bug list
////////////////////////////////////////////////////////////
if (bugId>0 && Config::generateBugList)
{
RefItem *item = bugList.getRefItem(bugId);
ASSERT(item!=0);
if (item->written) return;
QCString doc;
doc += "<dl><dt>\\anchor ";
doc += item->listAnchor;
doc += "\n";
doc += prefix;
doc += " \\_internalref ";
doc += name;
doc += " \"";
doc += title;
doc += "\"";
if (args) doc += args;
doc += "</dt>\n<dd>";
doc += item->text;
doc += "</dd></dl>\n";
addRelatedPage("bug",theTranslator->trBugList(),doc,0,"generated",1,0,0,0);
item->written=TRUE; item->written=TRUE;
} }
...@@ -377,7 +408,7 @@ static void buildGroupList(Entry *root) ...@@ -377,7 +408,7 @@ static void buildGroupList(Entry *root)
Doxygen::groupList.append(gd); Doxygen::groupList.append(gd);
Doxygen::groupDict.insert(root->name,gd); Doxygen::groupDict.insert(root->name,gd);
addGroupToGroups(root,gd); addGroupToGroups(root,gd);
gd->setRefItems(root->todoId,root->testId); gd->setRefItems(root->todoId,root->testId,root->bugId);
} }
} }
EntryListIterator eli(*root->sublist); EntryListIterator eli(*root->sublist);
...@@ -419,7 +450,7 @@ static void buildFileList(Entry *root) ...@@ -419,7 +450,7 @@ static void buildFileList(Entry *root)
fd->setDocumentation(root->doc,FALSE); fd->setDocumentation(root->doc,FALSE);
fd->setBriefDescription(root->brief); fd->setBriefDescription(root->brief);
fd->addSectionsToDefinition(root->anchors); fd->addSectionsToDefinition(root->anchors);
fd->setRefItems(root->todoId,root->testId); fd->setRefItems(root->todoId,root->testId,root->bugId);
QListIterator<QCString> sli(*root->groups); QListIterator<QCString> sli(*root->groups);
QCString *s; QCString *s;
for (;(s=sli.current());++sli) for (;(s=sli.current());++sli)
...@@ -658,7 +689,7 @@ static void buildClassList(Entry *root) ...@@ -658,7 +689,7 @@ static void buildClassList(Entry *root)
fd->insertClass(cd); fd->insertClass(cd);
} }
addClassToGroups(root,cd); addClassToGroups(root,cd);
cd->setRefItems(root->todoId,root->testId); cd->setRefItems(root->todoId,root->testId,root->bugId);
if (!root->subGrouping) cd->setSubGrouping(FALSE); if (!root->subGrouping) cd->setSubGrouping(FALSE);
} }
else // new class else // new class
...@@ -707,7 +738,7 @@ static void buildClassList(Entry *root) ...@@ -707,7 +738,7 @@ static void buildClassList(Entry *root)
if (!root->subGrouping) cd->setSubGrouping(FALSE); if (!root->subGrouping) cd->setSubGrouping(FALSE);
addClassToGroups(root,cd); addClassToGroups(root,cd);
cd->setRefItems(root->todoId,root->testId); cd->setRefItems(root->todoId,root->testId,root->bugId);
// see if the class is found inside a namespace // see if the class is found inside a namespace
bool found=addNamespace(root,cd); bool found=addNamespace(root,cd);
...@@ -819,7 +850,7 @@ static void buildNamespaceList(Entry *root) ...@@ -819,7 +850,7 @@ static void buildNamespaceList(Entry *root)
// insert the namespace in the file definition // insert the namespace in the file definition
if (fd) fd->insertNamespace(nd); if (fd) fd->insertNamespace(nd);
addNamespaceToGroups(root,nd); addNamespaceToGroups(root,nd);
nd->setRefItems(root->todoId,root->testId); nd->setRefItems(root->todoId,root->testId,root->bugId);
} }
else /* if (!root->doc.isEmpty() || else /* if (!root->doc.isEmpty() ||
!root->brief.isEmpty() || !root->brief.isEmpty() ||
...@@ -839,7 +870,7 @@ static void buildNamespaceList(Entry *root) ...@@ -839,7 +870,7 @@ static void buildNamespaceList(Entry *root)
//printf("Adding namespace to group\n"); //printf("Adding namespace to group\n");
addNamespaceToGroups(root,nd); addNamespaceToGroups(root,nd);
nd->setRefItems(root->todoId,root->testId); nd->setRefItems(root->todoId,root->testId,root->bugId);
bool ambig; bool ambig;
// file definition containing the namespace nd // file definition containing the namespace nd
...@@ -964,7 +995,7 @@ static void findUsingDirectives(Entry *root) ...@@ -964,7 +995,7 @@ static void findUsingDirectives(Entry *root)
// add class to the list // add class to the list
Doxygen::namespaceList.inSort(nd); Doxygen::namespaceList.inSort(nd);
Doxygen::namespaceDict.insert(root->name,nd); Doxygen::namespaceDict.insert(root->name,nd);
nd->setRefItems(root->todoId,root->testId); nd->setRefItems(root->todoId,root->testId,root->bugId);
} }
} }
} }
...@@ -1182,7 +1213,7 @@ static MemberDef *addVariableToClass( ...@@ -1182,7 +1213,7 @@ static MemberDef *addVariableToClass(
// add the member to the class // add the member to the class
} }
cd->insertMember(md); cd->insertMember(md);
md->setRefItems(root->todoId,root->testId); md->setRefItems(root->todoId,root->testId,root->bugId);
//TODO: insert FileDef instead of filename strings. //TODO: insert FileDef instead of filename strings.
cd->insertUsedFile(root->fileName); cd->insertUsedFile(root->fileName);
...@@ -1274,7 +1305,7 @@ static MemberDef *addVariableToFile( ...@@ -1274,7 +1305,7 @@ static MemberDef *addVariableToFile(
// variable already in the scope // variable already in the scope
{ {
addMemberDocs(root,md,def,0,FALSE); addMemberDocs(root,md,def,0,FALSE);
md->setRefItems(root->todoId,root->testId); md->setRefItems(root->todoId,root->testId,root->bugId);
return md; return md;
} }
...@@ -1324,7 +1355,7 @@ static MemberDef *addVariableToFile( ...@@ -1324,7 +1355,7 @@ static MemberDef *addVariableToFile(
// md->setMemberGroup(memberGroupDict[root->mGrpId]); // md->setMemberGroup(memberGroupDict[root->mGrpId]);
//} //}
md->setRefItems(root->todoId,root->testId); md->setRefItems(root->todoId,root->testId,root->bugId);
if (nd && !nd->name().isEmpty() && nd->name().at(0)!='@') if (nd && !nd->name().isEmpty() && nd->name().at(0)!='@')
{ {
nd->insertMember(md); nd->insertMember(md);
...@@ -1355,25 +1386,46 @@ static MemberDef *addVariableToFile( ...@@ -1355,25 +1386,46 @@ static MemberDef *addVariableToFile(
return md; return md;
} }
/*! See if the return type string \a type is that of a function pointer
* \returns -1 if this is not a function pointer variable or
* the index at which the brace of (...*name) was found.
*/
static int findFunctionPtr(const QCString &type)
{
static const QRegExp re("([^)]*)");
int i=-1;
if (!type.isEmpty() && // return type is non-empty
(i=type.find(re,0))!=-1 && // contains a (*
type.find("operator")==-1 && // not an operator
type.find(")(")==-1 // not a function pointer return type
)
{
return i;
}
else
{
return -1;
}
}
//---------------------------------------------------------------------- //----------------------------------------------------------------------
// Searches the Entry tree for Variable documentation sections. // Searches the Entry tree for Variable documentation sections.
// If found they are stored in their class or in the global list. // If found they are stored in their class or in the global list.
void buildVarList(Entry *root) void buildVarList(Entry *root)
{ {
static const QRegExp re("([^)]*)");
int i=-1; int i=-1;
if (!root->name.isEmpty() && if (!root->name.isEmpty() &&
//root->type!="class" && root->type!="interface" &&
//root->type!="struct" && root->type!="union" &&
(root->type.isEmpty() || compoundKeywordDict.find(root->type)==0) && (root->type.isEmpty() || compoundKeywordDict.find(root->type)==0) &&
( (
(root->section==Entry::VARIABLE_SEC (root->section==Entry::VARIABLE_SEC // it's a variable
) || ) ||
(root->section==Entry::FUNCTION_SEC && // function variable (root->section==Entry::FUNCTION_SEC && // or maybe a function pointer variable
!root->type.isEmpty() && root->type.find(re,0)!=-1 && (i=findFunctionPtr(root->type))!=-1
// special case to catch function pointers //!root->type.isEmpty() && // return type is non-empty
root->type.find("operator")==-1 && root->type.find(")(")==-1 // root->type.find(re,0)!=-1 && // contains a (*
// /root->type.find("operator")==-1 && // not an operator
// root->type.find(")(")==-1 // not a function pointer return type
) )
) )
) // documented variable ) // documented variable
...@@ -1404,7 +1456,6 @@ void buildVarList(Entry *root) ...@@ -1404,7 +1456,6 @@ void buildVarList(Entry *root)
} }
else else
{ {
i=root->type.find(re,0);
if (i!=-1) // function pointer if (i!=-1) // function pointer
{ {
int ai = root->type.find('[',i); int ai = root->type.find('[',i);
...@@ -1915,14 +1966,14 @@ static void buildMemberList(Entry *root) ...@@ -1915,14 +1966,14 @@ static void buildMemberList(Entry *root)
// add member to namespace // add member to namespace
nd->insertMember(md); nd->insertMember(md);
md->setNamespace(nd); md->setNamespace(nd);
md->setRefItems(root->todoId,root->testId); md->setRefItems(root->todoId,root->testId,root->bugId);
} }
else if (fd) else if (fd)
{ {
// add member to the file // add member to the file
fd->insertMember(md); fd->insertMember(md);
md->setFileDef(fd); md->setFileDef(fd);
md->setRefItems(root->todoId,root->testId); md->setRefItems(root->todoId,root->testId,root->bugId);
} }
// add member to the list of file members // add member to the list of file members
...@@ -2497,12 +2548,12 @@ static void computeMemberReferences() ...@@ -2497,12 +2548,12 @@ static void computeMemberReferences()
//---------------------------------------------------------------------- //----------------------------------------------------------------------
static void addTodoTestReferences() static void addTodoTestBugReferences()
{ {
ClassDef *cd=Doxygen::classList.first(); ClassDef *cd=Doxygen::classList.first();
while (cd) while (cd)
{ {
addRefItem(cd->todoId(),cd->testId(),"class",cd->getOutputFileBase(),cd->name()); addRefItem(cd->todoId(),cd->testId(),cd->bugId(),"class",cd->getOutputFileBase(),cd->name());
cd=Doxygen::classList.next(); cd=Doxygen::classList.next();
} }
FileName *fn=Doxygen::inputNameList.first(); FileName *fn=Doxygen::inputNameList.first();
...@@ -2511,7 +2562,7 @@ static void addTodoTestReferences() ...@@ -2511,7 +2562,7 @@ static void addTodoTestReferences()
FileDef *fd=fn->first(); FileDef *fd=fn->first();
while (fd) while (fd)
{ {
addRefItem(fd->todoId(),fd->testId(),"file",fd->getOutputFileBase(),fd->name()); addRefItem(fd->todoId(),fd->testId(),fd->bugId(),"file",fd->getOutputFileBase(),fd->name());
fd=fn->next(); fd=fn->next();
} }
fn=Doxygen::inputNameList.next(); fn=Doxygen::inputNameList.next();
...@@ -2519,20 +2570,20 @@ static void addTodoTestReferences() ...@@ -2519,20 +2570,20 @@ static void addTodoTestReferences()
NamespaceDef *nd=Doxygen::namespaceList.first(); NamespaceDef *nd=Doxygen::namespaceList.first();
while (nd) while (nd)
{ {
addRefItem(nd->todoId(),nd->testId(),"namespace",nd->getOutputFileBase(),nd->name()); addRefItem(nd->todoId(),nd->testId(),nd->bugId(),"namespace",nd->getOutputFileBase(),nd->name());
nd=Doxygen::namespaceList.next(); nd=Doxygen::namespaceList.next();
} }
GroupDef *gd=Doxygen::groupList.first(); GroupDef *gd=Doxygen::groupList.first();
while (gd) while (gd)
{ {
addRefItem(gd->todoId(),gd->testId(),"group",gd->getOutputFileBase(),gd->groupTitle()); addRefItem(gd->todoId(),gd->testId(),gd->bugId(),"group",gd->getOutputFileBase(),gd->groupTitle());
gd=Doxygen::groupList.next(); gd=Doxygen::groupList.next();
} }
PageSDictIterator pdi(*Doxygen::pageSDict); PageSDictIterator pdi(*Doxygen::pageSDict);
PageInfo *pi=0; PageInfo *pi=0;
for (pdi.toFirst();(pi=pdi.current());++pdi) for (pdi.toFirst();(pi=pdi.current());++pdi)
{ {
addRefItem(pi->todoId,pi->testId,"page",pi->name,pi->title); addRefItem(pi->todoId,pi->testId,pi->bugId,"page",pi->name,pi->title);
} }
MemberNameListIterator mnli(Doxygen::memberNameList); MemberNameListIterator mnli(Doxygen::memberNameList);
MemberName *mn=0; MemberName *mn=0;
...@@ -2552,7 +2603,7 @@ static void addTodoTestReferences() ...@@ -2552,7 +2603,7 @@ static void addTodoTestReferences()
if (Config::optimizeForCFlag) memLabel="field"; if (Config::optimizeForCFlag) memLabel="field";
if (d) if (d)
{ {
addRefItem(md->todoId(),md->testId(),memLabel,d->getOutputFileBase()+":"+md->anchor(),scopeName+"::"+md->name(),md->argsString()); addRefItem(md->todoId(),md->testId(),md->bugId(),memLabel,d->getOutputFileBase()+":"+md->anchor(),scopeName+"::"+md->name(),md->argsString());
} }
} }
} }
...@@ -2573,7 +2624,7 @@ static void addTodoTestReferences() ...@@ -2573,7 +2624,7 @@ static void addTodoTestReferences()
if (Config::optimizeForCFlag) memLabel="global"; if (Config::optimizeForCFlag) memLabel="global";
if (d) if (d)
{ {
addRefItem(md->todoId(),md->testId(),memLabel,d->getOutputFileBase()+":"+md->anchor(),md->name(),md->argsString()); addRefItem(md->todoId(),md->testId(),md->bugId(),memLabel,d->getOutputFileBase()+":"+md->anchor(),md->name(),md->argsString());
} }
} }
} }
...@@ -2684,7 +2735,7 @@ static void addMemberDocs(Entry *root, ...@@ -2684,7 +2735,7 @@ static void addMemberDocs(Entry *root,
md->setBodyDef(fd); md->setBodyDef(fd);
} }
md->setRefItems(root->todoId,root->testId); md->setRefItems(root->todoId,root->testId,root->bugId);
} }
} }
...@@ -3554,7 +3605,7 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl ...@@ -3554,7 +3605,7 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl
mn->append(md); mn->append(md);
cd->insertMember(md); cd->insertMember(md);
cd->insertUsedFile(root->fileName); cd->insertUsedFile(root->fileName);
md->setRefItems(root->todoId,root->testId); md->setRefItems(root->todoId,root->testId,root->bugId);
} }
} }
else // unrelated function with the same name as a member else // unrelated function with the same name as a member
...@@ -3678,7 +3729,7 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl ...@@ -3678,7 +3729,7 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl
mn->append(md); mn->append(md);
cd->insertMember(md); cd->insertMember(md);
cd->insertUsedFile(root->fileName); cd->insertUsedFile(root->fileName);
md->setRefItems(root->todoId,root->testId); md->setRefItems(root->todoId,root->testId,root->bugId);
if (newMemberName) if (newMemberName)
{ {
//printf("Adding memberName=%s\n",mn->memberName()); //printf("Adding memberName=%s\n",mn->memberName());
...@@ -3730,23 +3781,26 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl ...@@ -3730,23 +3781,26 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl
static void findMemberDocumentation(Entry *root) static void findMemberDocumentation(Entry *root)
{ {
int i=-1,l; int i=-1,l;
QRegExp re("([a-z_A-Z0-9: ]*\\*+[ \\*]*"); //QRegExp re("([a-z_A-Z0-9: ]*\\*+[ \\*]*");
Debug::print(Debug::FindMembers,0, Debug::print(Debug::FindMembers,0,
"root->type=`%s' root->inside=`%s' root->name=`%s' root->args=`%s' section=%x root->memSpec=%d root->mGrpId=%d\n", "root->type=`%s' root->inside=`%s' root->name=`%s' root->args=`%s' section=%x root->memSpec=%d root->mGrpId=%d\n",
root->type.data(),root->inside.data(),root->name.data(),root->args.data(),root->section,root->memSpec,root->mGrpId root->type.data(),root->inside.data(),root->name.data(),root->args.data(),root->section,root->memSpec,root->mGrpId
); );
bool isFunc=TRUE; bool isFunc=TRUE;
if (!root->type.isEmpty() && (i=re.match(root->type,0,&l))!=-1) // func variable/typedef to func ptr if (
findFunctionPtr(root->type)!=-1 // func variable/typedef to func ptr
//!root->type.isEmpty() && (i=re.match(root->type,0,&l))!=-1
)
{ {
root->args+=root->type.right(root->type.length()-i-l); root->args+=root->type.right(root->type.length()-i-l);
root->type=root->type.left(i+l); root->type=root->type.left(i+l);
isFunc=FALSE; isFunc=FALSE;
} }
else if (root->name.find(re)!=-1 && root->name.find("operator")==-1) //else if (root->name.find(re)!=-1 && root->name.find("operator")==-1)
// func ptr entered with \fn, \var or \typedef // // func ptr entered with \fn, \var or \typedef
{ //{
isFunc=FALSE; // isFunc=FALSE;
} //}
else if ((root->type.isEmpty() && root->name.left(8)=="typedef ") else if ((root->type.isEmpty() && root->name.left(8)=="typedef ")
|| root->args.find('(')==-1) || root->args.find('(')==-1)
{ {
...@@ -3772,9 +3826,9 @@ static void findMemberDocumentation(Entry *root) ...@@ -3772,9 +3826,9 @@ static void findMemberDocumentation(Entry *root)
!root->type.isEmpty() && /*root->type.left(8)!="typedef " &&*/ !root->type.isEmpty() && /*root->type.left(8)!="typedef " &&*/
compoundKeywordDict.find(root->type)==0 compoundKeywordDict.find(root->type)==0
) )
) && ) && !root->stat &&
(!root->doc.isEmpty() || !root->brief.isEmpty() || root->bodyLine!=-1 || (!root->doc.isEmpty() || !root->brief.isEmpty() || /*root->bodyLine!=-1 ||*/
(root->memSpec&Entry::Inline) || root->mGrpId!=-1 (root->memSpec&Entry::Inline) || root->mGrpId!=-1
) )
) )
{ {
...@@ -3907,7 +3961,7 @@ static void findEnums(Entry *root) ...@@ -3907,7 +3961,7 @@ static void findEnums(Entry *root)
//{ //{
// md->setMemberGroup(memberGroupDict[root->mGrpId]); // md->setMemberGroup(memberGroupDict[root->mGrpId]);
//} //}
md->setRefItems(root->todoId,root->testId); md->setRefItems(root->todoId,root->testId,root->bugId);
if (nd && !nd->name().isEmpty() && nd->name().at(0)!='@') if (nd && !nd->name().isEmpty() && nd->name().at(0)!='@')
{ {
if (Config::hideScopeNames) if (Config::hideScopeNames)
...@@ -4615,7 +4669,7 @@ static void findDefineDocumentation(Entry *root) ...@@ -4615,7 +4669,7 @@ static void findDefineDocumentation(Entry *root)
md->setBodyDef(findFileDef(Doxygen::inputNameDict,root->fileName,ambig)); md->setBodyDef(findFileDef(Doxygen::inputNameDict,root->fileName,ambig));
md->addSectionsToDefinition(root->anchors); md->addSectionsToDefinition(root->anchors);
md->setMaxInitLines(root->initLines); md->setMaxInitLines(root->initLines);
md->setRefItems(root->todoId,root->testId); md->setRefItems(root->todoId,root->testId,root->bugId);
if (root->mGrpId!=-1) md->setMemberGroupId(root->mGrpId); if (root->mGrpId!=-1) md->setMemberGroupId(root->mGrpId);
addMemberToGroups(root,md); addMemberToGroups(root,md);
} }
...@@ -4648,7 +4702,7 @@ static void findDefineDocumentation(Entry *root) ...@@ -4648,7 +4702,7 @@ static void findDefineDocumentation(Entry *root)
bool ambig; bool ambig;
md->setBodyDef(findFileDef(Doxygen::inputNameDict,root->fileName,ambig)); md->setBodyDef(findFileDef(Doxygen::inputNameDict,root->fileName,ambig));
md->addSectionsToDefinition(root->anchors); md->addSectionsToDefinition(root->anchors);
md->setRefItems(root->todoId,root->testId); md->setRefItems(root->todoId,root->testId,root->bugId);
if (root->mGrpId!=-1) md->setMemberGroupId(root->mGrpId); if (root->mGrpId!=-1) md->setMemberGroupId(root->mGrpId);
addMemberToGroups(root,md); addMemberToGroups(root,md);
} }
...@@ -4693,7 +4747,7 @@ static void buildPageList(Entry *root) ...@@ -4693,7 +4747,7 @@ static void buildPageList(Entry *root)
{ {
QCString title=root->args.stripWhiteSpace(); QCString title=root->args.stripWhiteSpace();
if (title.isEmpty()) title=theTranslator->trMainPage(); if (title.isEmpty()) title=theTranslator->trMainPage();
addRefItem(root->todoId,root->testId,"page","index",title); addRefItem(root->todoId,root->testId,root->bugId,"page","index",title);
} }
EntryListIterator eli(*root->sublist); EntryListIterator eli(*root->sublist);
Entry *e; Entry *e;
...@@ -6154,8 +6208,8 @@ void parseInput() ...@@ -6154,8 +6208,8 @@ void parseInput()
msg("Adding source references...\n"); msg("Adding source references...\n");
addSourceReferences(); addSourceReferences();
msg("Adding todo/test references...\n"); msg("Adding todo/test/bug list item...\n");
addTodoTestReferences(); addTodoTestBugReferences();
} }
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
# TMake project file for doxygen # TMake project file for doxygen
TEMPLATE = app.t TEMPLATE = app.t
CONFIG = console warn_on $extraopt CONFIG = console warn_on $extraopts
HEADERS = doxygen.h HEADERS = doxygen.h
SOURCES = main.cpp SOURCES = main.cpp
unix:LIBS += -L../lib -ldoxygen -lqtools unix:LIBS += -L../lib -ldoxygen -lqtools
......
...@@ -76,6 +76,7 @@ Entry::Entry(const Entry &e) ...@@ -76,6 +76,7 @@ Entry::Entry(const Entry &e)
initLines = e.initLines; initLines = e.initLines;
todoId = e.todoId; todoId = e.todoId;
testId = e.testId; testId = e.testId;
bugId = e.bugId;
tagInfo = e.tagInfo; tagInfo = e.tagInfo;
sublist = new QList<Entry>; sublist = new QList<Entry>;
sublist->setAutoDelete(TRUE); sublist->setAutoDelete(TRUE);
...@@ -223,6 +224,7 @@ void Entry::reset() ...@@ -223,6 +224,7 @@ void Entry::reset()
mGrpId = -1; mGrpId = -1;
todoId = 0; todoId = 0;
testId = 0; testId = 0;
bugId = 0;
section = EMPTY_SEC; section = EMPTY_SEC;
mtype = Method; mtype = Method;
virt = Normal; virt = Normal;
......
...@@ -25,14 +25,21 @@ enum Protection { Public, Protected, Private } ; ...@@ -25,14 +25,21 @@ enum Protection { Public, Protected, Private } ;
enum Specifier { Normal, Virtual, Pure } ; enum Specifier { Normal, Virtual, Pure } ;
enum MethodTypes { Method, Signal, Slot, DCOP, Property }; enum MethodTypes { Method, Signal, Slot, DCOP, Property };
/*! \brief This class stores information about an inheritance relation
*/
struct BaseInfo struct BaseInfo
{ {
/*! Creates an object representing an inheritance relation */
BaseInfo(const char *n,Protection p,Specifier v) : name(n),prot(p),virt(v) {} BaseInfo(const char *n,Protection p,Specifier v) : name(n),prot(p),virt(v) {}
QCString name; // the name of the base class QCString name; //!< the name of the base class
Protection prot; // inheritance type Protection prot; //!< inheritance type
Specifier virt; // virtualness Specifier virt; //!< virtualness
}; };
/*! \brief This class contains the information about the argument of a
* function or template
*
*/
struct Argument struct Argument
{ {
/*! Construct a new argument. */ /*! Construct a new argument. */
...@@ -77,22 +84,36 @@ struct Argument ...@@ -77,22 +84,36 @@ struct Argument
QCString docs; /*!< Argument's documentation (may be empty) */ QCString docs; /*!< Argument's documentation (may be empty) */
}; };
/*! \brief This class represents an function or template argument list.
*
* This class also stores some information about member that is typically
* put after the argument list, such as wether the member is const,
* volatile or pure virtual.
*/
class ArgumentList : public QList<Argument> class ArgumentList : public QList<Argument>
{ {
public: public:
~ArgumentList() {} /*! Creates an empty argument list */
ArgumentList() : QList<Argument>(), ArgumentList() : QList<Argument>(),
constSpecifier(FALSE), constSpecifier(FALSE),
volatileSpecifier(FALSE), volatileSpecifier(FALSE),
pureSpecifier(FALSE) {} pureSpecifier(FALSE) {}
/*! Destroys the argument list */
~ArgumentList() {}
bool hasDocumentation() const; bool hasDocumentation() const;
/*! Does the member modify the state of the class? default: FALSE. */
bool constSpecifier; bool constSpecifier;
/*! Is the member volatile? default: FALSE. */
bool volatileSpecifier; bool volatileSpecifier;
/*! Is this a pure virtual member? default: FALSE */
bool pureSpecifier; bool pureSpecifier;
}; };
typedef QListIterator<Argument> ArgumentListIterator; typedef QListIterator<Argument> ArgumentListIterator;
/*! \brief This struct is used to capture the tag file information
* for an Entry.
*/
struct TagInfo struct TagInfo
{ {
QCString tagName; QCString tagName;
...@@ -100,7 +121,10 @@ struct TagInfo ...@@ -100,7 +121,10 @@ struct TagInfo
QCString anchor; QCString anchor;
}; };
/*! Raw entry. parseMain() in scanner.l will generate a tree of these /*! \brief Represents an unstructured piece of information, about an
* entity found in the sources.
*
* parseMain() in scanner.l will generate a tree of these
* entries. * entries.
*/ */
class Entry class Entry
...@@ -166,7 +190,11 @@ class Entry ...@@ -166,7 +190,11 @@ class Entry
~Entry(); ~Entry();
int getSize(); int getSize();
/*! Adds entry \e as a child to this entry */
void addSubEntry (Entry* e) ; void addSubEntry (Entry* e) ;
/*! Restore the state of this Entry to the default value it has
* at construction time.
*/
void reset(); void reset();
int section; //!< entry type (see Sections); int section; //!< entry type (see Sections);
...@@ -207,8 +235,9 @@ class Entry ...@@ -207,8 +235,9 @@ class Entry
QList<QCString> *anchors; //!< list of anchors defined in this entry QList<QCString> *anchors; //!< list of anchors defined in this entry
QCString fileName; //!< file this entry was extracted from QCString fileName; //!< file this entry was extracted from
int startLine; //!< start line of entry in the source int startLine; //!< start line of entry in the source
int todoId; //!< id of the todo item of this entry int todoId; //!< id of the todo list item of this entry
int testId; //!< id of the test item of this entry int testId; //!< id of the test list item of this entry
int bugId; //!< id of the bug list item of this entry
TagInfo *tagInfo; //!< tag file info TagInfo *tagInfo; //!< tag file info
static int num; //!< counts the total number of entries static int num; //!< counts the total number of entries
private: private:
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#include "config.h" #include "config.h"
#include "message.h" #include "message.h"
#include "doxygen.h" #include "doxygen.h"
#include "language.h"
const char treeview_data[]= const char treeview_data[]=
...@@ -273,7 +274,10 @@ static void generateFolderTreeViewData() ...@@ -273,7 +274,10 @@ static void generateFolderTreeViewData()
else else
{ {
QTextStream t(&f); QTextStream t(&f);
t << "<html><head><title>"; t << "<html><head>";
t << "<meta http-equiv=\"Content-Type\" content=\"text/html;charset="
<< theTranslator->idLanguageCharset() << "\">\n";
t << "<title>";
if (Config::projectName.isEmpty()) if (Config::projectName.isEmpty())
{ {
t << "Doxygen Documentation"; t << "Doxygen Documentation";
......
...@@ -175,12 +175,12 @@ void GroupDef::insertMember(MemberDef *md) ...@@ -175,12 +175,12 @@ void GroupDef::insertMember(MemberDef *md)
return; // member already added return; // member already added
} }
} }
mni->append(new MemberInfo(md,Public,Normal)); mni->append(new MemberInfo(md,md->protection(),md->virtualness(),FALSE));
} }
else else
{ {
mni = new MemberNameInfo(md->name()); mni = new MemberNameInfo(md->name());
mni->append(new MemberInfo(md,Public,Normal)); mni->append(new MemberInfo(md,md->protection(),md->virtualness(),FALSE));
allMemberNameInfoDict->insert(mni->memberName(),mni); allMemberNameInfoDict->insert(mni->memberName(),mni);
} }
allMemberList->append(md); allMemberList->append(md);
...@@ -262,7 +262,7 @@ void GroupDef::computeAnchors() ...@@ -262,7 +262,7 @@ void GroupDef::computeAnchors()
void GroupDef::writeDocumentation(OutputList &ol) void GroupDef::writeDocumentation(OutputList &ol)
{ {
ol.pushGeneratorState(); ol.pushGeneratorState();
ol.disable(OutputGenerator::Man); //ol.disable(OutputGenerator::Man);
startFile(ol,fileName,title); startFile(ol,fileName,title);
startTitle(ol,getOutputFileBase()); startTitle(ol,getOutputFileBase());
ol.docify(title); ol.docify(title);
......
...@@ -275,9 +275,16 @@ void HtmlGenerator::writeStyleInfo(int part) ...@@ -275,9 +275,16 @@ void HtmlGenerator::writeStyleInfo(int part)
else // write user defined style sheet else // write user defined style sheet
{ {
QFileInfo cssfi(Config::htmlStyleSheet); QFileInfo cssfi(Config::htmlStyleSheet);
startPlainFile(cssfi.fileName()); if (!cssfi.exists() || !cssfi.isFile() || !cssfi.isReadable())
t << fileToString(Config::htmlStyleSheet); {
endPlainFile(); err("Error: style sheet %s does not exist or is not readable!", Config::htmlStyleSheet.data());
}
else
{
startPlainFile(cssfi.fileName());
t << fileToString(Config::htmlStyleSheet);
endPlainFile();
}
} }
} }
} }
......
...@@ -305,8 +305,8 @@ void HtmlHelp::createProjectFile() ...@@ -305,8 +305,8 @@ void HtmlHelp::createProjectFile()
"Contents file=index.hhc\n" "Contents file=index.hhc\n"
"Default Window=main\n" "Default Window=main\n"
"Default topic=" << indexName << "\n" "Default topic=" << indexName << "\n"
"Index file=index.hhk\n" "Index file=index.hhk\n";
"Binary TOC=YES\n"; if (Config::htmlHelpTocFlag) t << "Binary TOC=YES\n";
if (Config::htmlHelpChiFlag) t << "Create CHI file=YES\n"; if (Config::htmlHelpChiFlag) t << "Create CHI file=YES\n";
t << "Title=" << Config::projectName << endl << endl; t << "Title=" << Config::projectName << endl << endl;
...@@ -388,6 +388,13 @@ void HtmlHelp::addContentsItem(bool isDir, ...@@ -388,6 +388,13 @@ void HtmlHelp::addContentsItem(bool isDir,
const char *name,const char *ref, const char *name,const char *ref,
const char *anchor) const char *anchor)
{ {
// If we're using a binary toc then folders cannot have links.
if(Config::htmlHelpTocFlag && isDir)
{
ref = 0;
anchor = 0;
}
int i; for (i=0;i<dc;i++) cts << " "; int i; for (i=0;i<dc;i++) cts << " ";
cts << "<LI><OBJECT type=\"text/sitemap\">"; cts << "<LI><OBJECT type=\"text/sitemap\">";
cts << "<param name=\"Name\" value=\"" << name << "\">"; cts << "<param name=\"Name\" value=\"" << name << "\">";
......
...@@ -408,7 +408,6 @@ void writeClassTree(OutputList &ol,BaseClassList *bcl,bool hideSuper) ...@@ -408,7 +408,6 @@ void writeClassTree(OutputList &ol,BaseClassList *bcl,bool hideSuper)
} }
#if 0
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
/*! Generates HTML Help tree of classes */ /*! Generates HTML Help tree of classes */
...@@ -416,8 +415,8 @@ void writeClassTree(BaseClassList *cl) ...@@ -416,8 +415,8 @@ void writeClassTree(BaseClassList *cl)
{ {
HtmlHelp *htmlHelp=0; HtmlHelp *htmlHelp=0;
FTVHelp *ftvHelp=0; FTVHelp *ftvHelp=0;
bool hasHtmlHelp = Config::generateHtml && Config::htmlHelpFlag && Config::htmlHelpGroupsOnly; bool hasHtmlHelp = Config::generateHtml && Config::htmlHelpFlag;
bool hasFtvHelp = Config::generateHtml && Config::ftvHelpFlag && Config::htmlHelpGroupsOnly; bool hasFtvHelp = Config::generateHtml && Config::ftvHelpFlag;
if (hasHtmlHelp) if (hasHtmlHelp)
{ {
htmlHelp = HtmlHelp::getInstance(); htmlHelp = HtmlHelp::getInstance();
...@@ -448,7 +447,7 @@ void writeClassTree(BaseClassList *cl) ...@@ -448,7 +447,7 @@ void writeClassTree(BaseClassList *cl)
} }
if (hasFtvHelp) if (hasFtvHelp)
{ {
ftvHelp->addContentsItem(hasChildren,cd->name(),cd->getOutputFileBase()); ftvHelp->addContentsItem(hasChildren,cd->getReference(),cd->getOutputFileBase(),0,cd->name());
} }
} }
if (hasChildren) if (hasChildren)
...@@ -472,8 +471,8 @@ void writeClassTree(ClassList *cl) ...@@ -472,8 +471,8 @@ void writeClassTree(ClassList *cl)
{ {
HtmlHelp *htmlHelp=0; HtmlHelp *htmlHelp=0;
FTVHelp *ftvHelp=0; FTVHelp *ftvHelp=0;
bool hasHtmlHelp = Config::generateHtml && Config::htmlHelpFlag && Config::htmlHelpGroupsOnly; bool hasHtmlHelp = Config::generateHtml && Config::htmlHelpFlag;
bool hasFtvHelp = Config::generateHtml && Config::ftvHelpFlag && Config::htmlHelpGroupsOnly; bool hasFtvHelp = Config::generateHtml && Config::ftvHelpFlag;
if (hasHtmlHelp) if (hasHtmlHelp)
{ {
htmlHelp = HtmlHelp::getInstance(); htmlHelp = HtmlHelp::getInstance();
...@@ -513,7 +512,6 @@ void writeClassTree(ClassList *cl) ...@@ -513,7 +512,6 @@ void writeClassTree(ClassList *cl)
} }
} }
} }
#endif
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
...@@ -1937,13 +1935,13 @@ void writeExampleIndex(OutputList &ol) ...@@ -1937,13 +1935,13 @@ void writeExampleIndex(OutputList &ol)
{ {
ol.writeObjectLink(0,n,0,pi->title); ol.writeObjectLink(0,n,0,pi->title);
if (hasHtmlHelp) htmlHelp->addContentsItem(FALSE,pi->title,n); if (hasHtmlHelp) htmlHelp->addContentsItem(FALSE,pi->title,n);
if (hasFtvHelp) ftvHelp->addContentsItem(FALSE,0,n,0,pi->title); if (hasFtvHelp) ftvHelp->addContentsItem(FALSE,pi->getReference(),n,0,pi->title);
} }
else else
{ {
ol.writeObjectLink(0,n,0,pi->name); ol.writeObjectLink(0,n,0,pi->name);
if (hasHtmlHelp) htmlHelp->addContentsItem(FALSE,pi->name,n); if (hasHtmlHelp) htmlHelp->addContentsItem(FALSE,pi->name,n);
if (hasFtvHelp) ftvHelp->addContentsItem(FALSE,0,n,0,pi->name); if (hasFtvHelp) ftvHelp->addContentsItem(FALSE,pi->getReference(),n,0,pi->name);
} }
ol.writeString("\n"); ol.writeString("\n");
} }
...@@ -2207,85 +2205,192 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd) ...@@ -2207,85 +2205,192 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd)
ol.endIndexList(); ol.endIndexList();
} }
#if 0
// write namespaces if (Config::htmlHelpTocExpandFlag)
NamespaceList *namespaceList=gd->namespaceList;
if (namespaceList->count()>0)
{ {
NamespaceDef *nsd=namespaceList->first(); // write members
while (nsd) struct MemInfo
{
MemberList *list;
QCString name;
};
MemInfo memberLists[] =
{
{ &gd->defineMembers, theTranslator->trDefines() },
{ &gd->typedefMembers, theTranslator->trTypedefs() },
{ &gd->enumMembers, theTranslator->trEnumerations() },
{ &gd->enumValMembers, theTranslator->trEnumerationValues() },
{ &gd->funcMembers, theTranslator->trFunctions() },
{ &gd->varMembers, theTranslator->trVariables() },
{ &gd->protoMembers, theTranslator->trFuncProtos() },
{ 0,0 }
};
MemberList *members;
MemInfo *pMemInfo;
for (pMemInfo=&memberLists[0]; (members=pMemInfo->list) ; pMemInfo++)
{
if (members->count()>0)
{ {
if(htmlHelp)
{
htmlHelp->addContentsItem(TRUE, convertToHtml(pMemInfo->name), gd->getOutputFileBase(),0);
htmlHelp->incContentsDepth();
}
if(ftvHelp)
{
ftvHelp->addContentsItem(TRUE, gd->getReference(), gd->getOutputFileBase(), 0, pMemInfo->name);
ftvHelp->incContentsDepth();
}
MemberDef *md=members->first();
while (md)
{
GroupDef *gd=md->getGroupDef();
if(htmlHelp) if(htmlHelp)
htmlHelp->addContentsItem(FALSE,convertToHtml(nsd->name()).data(),nsd->getOutputFileBase()); {
htmlHelp->addContentsItem(FALSE,md->name(),gd->getOutputFileBase(),md->anchor());
}
if(ftvHelp) if(ftvHelp)
ftvHelp->addContentsItem(FALSE,convertToHtml(nsd->name()).data(),nsd->getOutputFileBase()); {
nsd=namespaceList->next(); ftvHelp->addContentsItem(FALSE,gd->getReference(),gd->getOutputFileBase(),md->anchor(),md->name());
}
md=members->next();
}
if(htmlHelp) htmlHelp->decContentsDepth();
if(ftvHelp) ftvHelp->decContentsDepth();
} }
} }
// write classes // write namespaces
writeClassTree(gd->classList); NamespaceList *namespaceList=gd->namespaceList;
if (namespaceList->count()>0)
// write members {
MemberList memberLists[7] = { if(htmlHelp)
gd->defineMembers,
gd->typedefMembers,
gd->enumMembers,
gd->enumValMembers,
gd->funcMembers,
gd->varMembers,
gd->protoMembers
};
MemberList members;
for (int i=0;i<7;i++)
{
members=memberLists[i];
if (members.count()>0)
{ {
MemberDef *md=members.first(); htmlHelp->addContentsItem(TRUE, convertToHtml(theTranslator->trNamespaces()), gd->getOutputFileBase(), 0);
while (md) htmlHelp->incContentsDepth();
{
if(htmlHelp)
htmlHelp->addContentsItem(FALSE,md->name(),md->getGroupDef()->getOutputFileBase().data(),md->anchor());
if(ftvHelp)
ftvHelp->addContentsItem(FALSE,md->name(),md->getGroupDef()->getOutputFileBase().data(),md->anchor());
md=members.next();
}
} }
}
if(ftvHelp)
// write file list {
FileList *fileList=gd->fileList;
if (fileList->count()>0) ftvHelp->addContentsItem(TRUE, gd->getReference(), gd->getOutputFileBase(), 0, theTranslator->trNamespaces());
{ ftvHelp->incContentsDepth();
}
NamespaceDef *nsd=namespaceList->first();
while (nsd)
{
if(htmlHelp)
{
htmlHelp->addContentsItem(FALSE, convertToHtml(nsd->name()), nsd->getOutputFileBase());
}
if(ftvHelp)
{
ftvHelp->addContentsItem(FALSE, nsd->getReference(), nsd->getOutputFileBase(), 0, convertToHtml(nsd->name()));
}
nsd=namespaceList->next();
}
if (htmlHelp) htmlHelp->decContentsDepth();
if (ftvHelp) ftvHelp->decContentsDepth();
}
// write classes
if(gd->classList->count()>0)
{
if(htmlHelp)
{
htmlHelp->addContentsItem(TRUE, convertToHtml(theTranslator->trClasses()), gd->getOutputFileBase(), 0);
htmlHelp->incContentsDepth();
}
if(ftvHelp)
{
ftvHelp->addContentsItem(TRUE, gd->getReference(), gd->getOutputFileBase(), 0, theTranslator->trClasses());
ftvHelp->incContentsDepth();
}
writeClassTree(gd->classList);
if(htmlHelp) htmlHelp->decContentsDepth();
if(ftvHelp) ftvHelp->decContentsDepth();
}
// write file list
FileList *fileList=gd->fileList;
if (fileList->count()>0)
{
if(htmlHelp)
{
htmlHelp->addContentsItem(TRUE, convertToHtml(theTranslator->trFiles()), gd->getOutputFileBase(), 0);
htmlHelp->incContentsDepth();
}
if(ftvHelp)
{
ftvHelp->addContentsItem(TRUE, gd->getReference(), gd->getOutputFileBase(), 0, theTranslator->trFiles());
ftvHelp->incContentsDepth();
}
FileDef *fd=fileList->first(); FileDef *fd=fileList->first();
while (fd) while (fd)
{ {
if(htmlHelp) if(htmlHelp)
htmlHelp->addContentsItem(FALSE,convertToHtml(fd->name()),fd->getOutputFileBase().data()); htmlHelp->addContentsItem(FALSE,convertToHtml(fd->name()),fd->getOutputFileBase());
if(ftvHelp) if(ftvHelp)
ftvHelp->addContentsItem(FALSE,convertToHtml(fd->name()),fd->getOutputFileBase().data()); ftvHelp->addContentsItem(FALSE, fd->getReference(), fd->getOutputFileBase(), 0, convertToHtml(fd->name()));
fd=fileList->next(); fd=fileList->next();
} }
} if(htmlHelp)
htmlHelp->decContentsDepth();
// write examples if(ftvHelp)
PageSDictIterator eli(*(gd->exampleDict)); ftvHelp->decContentsDepth();
{ }
// write examples
if (gd->exampleDict->count()>0)
{
if(htmlHelp)
{
htmlHelp->addContentsItem(TRUE, convertToHtml(theTranslator->trExamples()), gd->getOutputFileBase(), 0);
htmlHelp->incContentsDepth();
}
if(ftvHelp)
{
ftvHelp->addContentsItem(TRUE, gd->getReference(), gd->getOutputFileBase(), 0, theTranslator->trExamples());
ftvHelp->incContentsDepth();
}
PageSDictIterator eli(*(gd->exampleDict));
PageInfo *pi=eli.toFirst(); PageInfo *pi=eli.toFirst();
while (pi) while (pi)
{ {
if(htmlHelp) if(htmlHelp)
htmlHelp->addContentsItem(FALSE,convertToHtml(pi->name),convertNameToFile(pi->name)+"-example"); {
if(ftvHelp) htmlHelp->addContentsItem(FALSE,convertToHtml(pi->name),convertNameToFile(pi->name)+"-example");
ftvHelp->addContentsItem(FALSE,convertToHtml(pi->name),convertNameToFile(pi->name)+"-example"); }
pi=++eli; if(ftvHelp)
{
ftvHelp->addContentsItem(FALSE,pi->getReference(),convertToHtml(pi->name)+"-example",0,convertNameToFile(pi->name));
}
pi=++eli;
} }
}
#endif
if(htmlHelp) htmlHelp->decContentsDepth(); if (htmlHelp) htmlHelp->decContentsDepth();
if(ftvHelp) ftvHelp->decContentsDepth(); if (ftvHelp) ftvHelp->decContentsDepth();
}
}
if (htmlHelp) htmlHelp->decContentsDepth();
if (ftvHelp) ftvHelp->decContentsDepth();
gd->visited=TRUE; gd->visited=TRUE;
} }
} }
......
...@@ -126,6 +126,10 @@ bool setTranslator(const char *langName) ...@@ -126,6 +126,10 @@ bool setTranslator(const char *langName)
{ {
theTranslator=new TranslatorChinese; theTranslator=new TranslatorChinese;
} }
else if (L_EQUAL("norwegian"))
{
theTranslator=new TranslatorNorwegian;
}
#endif #endif
else // use the default language (i.e. english) else // use the default language (i.e. english)
{ {
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
# TMake project file for doxygen # TMake project file for doxygen
TEMPLATE = libdoxygen.t TEMPLATE = libdoxygen.t
CONFIG = console warn_on staticlib CONFIG = console warn_on staticlib $extraopts
HEADERS = doxygen.h scanner.h doc.h classdef.h classlist.h memberdef.h \ HEADERS = doxygen.h scanner.h doc.h classdef.h classlist.h memberdef.h \
membername.h index.h memberlist.h definition.h \ membername.h index.h memberlist.h definition.h \
entry.h logos.h instdox.h message.h code.h \ entry.h logos.h instdox.h message.h code.h \
......
...@@ -95,6 +95,10 @@ void ManGenerator::startFile(const char *name,const char *,bool) ...@@ -95,6 +95,10 @@ void ManGenerator::startFile(const char *name,const char *,bool)
{ {
fileName=fileName.right(fileName.length()-10); fileName=fileName.right(fileName.length()-10);
} }
else if (fileName.left(6)=="group_")
{
fileName=fileName.right(fileName.length()-6);
}
int i; int i;
if ((i=fileName.findRev('.'))!=-1) if ((i=fileName.findRev('.'))!=-1)
...@@ -102,7 +106,9 @@ void ManGenerator::startFile(const char *name,const char *,bool) ...@@ -102,7 +106,9 @@ void ManGenerator::startFile(const char *name,const char *,bool)
fileName=fileName.left(i); fileName=fileName.left(i);
} }
if (convertToQCString(fileName.right(2))!=Config::manExtension) if (convertToQCString(fileName.right(2))!=Config::manExtension)
{
fileName+=Config::manExtension; fileName+=Config::manExtension;
}
startPlainFile(fileName); startPlainFile(fileName);
firstCol=TRUE; firstCol=TRUE;
} }
...@@ -114,7 +120,7 @@ void ManGenerator::endFile() ...@@ -114,7 +120,7 @@ void ManGenerator::endFile()
void ManGenerator::endTitleHead(const char *,const char *name) void ManGenerator::endTitleHead(const char *,const char *name)
{ {
t << ".TH " << name << " 3 \"" << dateToString(FALSE) << "\" \""; t << ".TH \"" << name << "\" 3 \"" << dateToString(FALSE) << "\" \"";
if (Config::projectName.isEmpty()) if (Config::projectName.isEmpty())
t << "Doxygen"; t << "Doxygen";
else else
......
...@@ -199,7 +199,7 @@ class ManGenerator : public OutputGenerator ...@@ -199,7 +199,7 @@ class ManGenerator : public OutputGenerator
void endDescTable() {} void endDescTable() {}
void startDescTableTitle() { writeListItem(); startBold(); } void startDescTableTitle() { writeListItem(); startBold(); }
void endDescTableTitle() { endBold(); } void endDescTableTitle() { endBold(); }
void startDescTableData() { } void startDescTableData() { t << endl; firstCol=TRUE; }
void endDescTableData() {} void endDescTableData() {}
void startDotGraph() {} void startDotGraph() {}
......
...@@ -853,7 +853,7 @@ void MemberDef::writeDeclaration(OutputList &ol, ...@@ -853,7 +853,7 @@ void MemberDef::writeDeclaration(OutputList &ol,
* all active output formats. * all active output formats.
*/ */
void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
const char *scopeName, const char *scName,
Definition *container Definition *container
) )
{ {
...@@ -861,6 +861,15 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ...@@ -861,6 +861,15 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
if (getClassDef()==0 && isStatic() && !Config::extractStaticFlag) return; if (getClassDef()==0 && isStatic() && !Config::extractStaticFlag) return;
// hide member that are documented in their own group // hide member that are documented in their own group
if (group!=0 && container->definitionType()!=TypeGroup) return; if (group!=0 && container->definitionType()!=TypeGroup) return;
// if this member is in a group find the real scope name.
QCString scopeName = scName;
if (container->definitionType()==TypeGroup)
{
if (getClassDef()) scopeName=getClassDef()->name();
else if (getNamespaceDef()) scopeName=getClassDef()->name();
else if (getFileDef()) scopeName=getClassDef()->name();
}
bool hasDocs = detailsAreVisible(); bool hasDocs = detailsAreVisible();
//printf("MemberDef::writeDocumentation(): type=`%s' def=`%s'\n",type.data(),definition()); //printf("MemberDef::writeDocumentation(): type=`%s' def=`%s'\n",type.data(),definition());
...@@ -876,6 +885,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ...@@ -876,6 +885,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
QCString cname = container->name(); QCString cname = container->name();
QCString cfname = container->getOutputFileBase(); QCString cfname = container->getOutputFileBase();
// get member name // get member name
QCString doxyName=name().copy(); QCString doxyName=name().copy();
// prepend scope if there is any. TODO: make this optional for C only docs // prepend scope if there is any. TODO: make this optional for C only docs
......
...@@ -58,15 +58,16 @@ typedef QDict<MemberName> MemberNameDict; ...@@ -58,15 +58,16 @@ typedef QDict<MemberName> MemberNameDict;
struct MemberInfo struct MemberInfo
{ {
MemberInfo(MemberDef *md,Protection p,Specifier v) : MemberInfo(MemberDef *md,Protection p,Specifier v,bool inh) :
memberDef(md), prot(p), virt(v),ambigClass(0) {} memberDef(md), prot(p), virt(v), inherited(inh), ambigClass(0) {}
~MemberInfo() {} ~MemberInfo() {}
MemberDef *memberDef; MemberDef *memberDef;
Protection prot; Protection prot;
Specifier virt; Specifier virt;
QCString scopePath; bool inherited;
QCString ambiguityResolutionScope; QCString scopePath;
ClassDef *ambigClass; QCString ambiguityResolutionScope;
ClassDef *ambigClass;
}; };
class MemberNameInfo : public QList<MemberInfo> class MemberNameInfo : public QList<MemberInfo>
......
...@@ -90,6 +90,7 @@ class PageInfo ...@@ -90,6 +90,7 @@ class PageInfo
// ids // ids
int todoId; int todoId;
int testId; int testId;
int bugId;
// is this page part of a group // is this page part of a group
GroupDef *inGroup; GroupDef *inGroup;
......
...@@ -22,7 +22,8 @@ ...@@ -22,7 +22,8 @@
RefList todoList; RefList todoList;
/*! The test criteria list */ /*! The test criteria list */
RefList testList; RefList testList;
/*! The bug list */
RefList bugList;
/*! Create a todo list */ /*! Create a todo list */
RefList::RefList() RefList::RefList()
...@@ -63,7 +64,7 @@ int RefList::addRefItem() ...@@ -63,7 +64,7 @@ int RefList::addRefItem()
*/ */
RefItem *RefList::getRefItem(int itemId) RefItem *RefList::getRefItem(int itemId)
{ {
return m_dict->find(itemId); return m_dict ? m_dict->find(itemId) : 0;
} }
/*! Returns the first item in the dictionary or 0 if /*! Returns the first item in the dictionary or 0 if
...@@ -72,7 +73,7 @@ RefItem *RefList::getRefItem(int itemId) ...@@ -72,7 +73,7 @@ RefItem *RefList::getRefItem(int itemId)
*/ */
RefItem *RefList::getFirstRefItem() RefItem *RefList::getFirstRefItem()
{ {
return m_dictIterator->toFirst(); return m_dictIterator ? m_dictIterator->toFirst() : 0;
} }
/*! Returns the next item in the dictionary or 0 if /*! Returns the next item in the dictionary or 0 if
...@@ -81,6 +82,6 @@ RefItem *RefList::getFirstRefItem() ...@@ -81,6 +82,6 @@ RefItem *RefList::getFirstRefItem()
*/ */
RefItem *RefList::getNextRefItem() RefItem *RefList::getNextRefItem()
{ {
return m_dictIterator->operator++(); return m_dictIterator ? m_dictIterator->operator++() : 0;
} }
...@@ -51,5 +51,6 @@ class RefList ...@@ -51,5 +51,6 @@ class RefList
extern RefList todoList; extern RefList todoList;
extern RefList testList; extern RefList testList;
extern RefList bugList;
#endif #endif
...@@ -87,9 +87,11 @@ static int squareCount = 0 ; ...@@ -87,9 +87,11 @@ static int squareCount = 0 ;
static int ifCount = 0 ; static int ifCount = 0 ;
static int padCount = 0 ; static int padCount = 0 ;
static int todoStartContext = 0; static int todoStartContext = 0;
static QCString todoString = 0; static QCString todoString;
static int testStartContext = 0; static int testStartContext = 0;
static QCString testString = 0; static QCString testString;
static int bugStartContext = 0;
static QCString bugString;
static Entry* current_root = 0 ; static Entry* current_root = 0 ;
static Entry* global_root = 0 ; static Entry* global_root = 0 ;
static Entry* current = 0 ; static Entry* current = 0 ;
...@@ -474,6 +476,7 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -474,6 +476,7 @@ TITLE [tT][iI][tT][lL][eE]
%x SkipVerbatim %x SkipVerbatim
%x TodoParam %x TodoParam
%x TestParam %x TestParam
%x BugParam
%x SectionLabel %x SectionLabel
%x SectionTitle %x SectionTitle
%x SkipTemplate %x SkipTemplate
...@@ -1202,7 +1205,7 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -1202,7 +1205,7 @@ TITLE [tT][iI][tT][lL][eE]
BEGIN(AfterDoc); BEGIN(AfterDoc);
} }
} }
<FindMembers,FindFields>"//"([!*]?){B}*"@{"|"/*"([!*]?){B}*"@{" { <FindMembers,FindFields>"//"([!*]?){B}*{CMD}"{"|"/*"([!*]?){B}*{CMD}"{" {
startGroup(); startGroup();
tmpDocType=-1; tmpDocType=-1;
if (current_root->section & Entry::SCOPE_MASK) if (current_root->section & Entry::SCOPE_MASK)
...@@ -1221,7 +1224,7 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -1221,7 +1224,7 @@ TITLE [tT][iI][tT][lL][eE]
BEGIN( Doc ); BEGIN( Doc );
} }
} }
<FindMembers,FindFields,ReadInitializer>"//"([!*]?){B}*"@}"|"/*"([!*]?){B}*"@}"{B}*"*/" { <FindMembers,FindFields,ReadInitializer>"//"([!*]?){B}*{CMD}"}"|"/*"([!*]?){B}*{CMD}"}"{B}*"*/" {
endGroup(); endGroup();
} }
<FindMembers>"=" { <FindMembers>"=" {
...@@ -1401,7 +1404,7 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -1401,7 +1404,7 @@ TITLE [tT][iI][tT][lL][eE]
} }
<FindMembers>"[" { <FindMembers>"[" {
if (current->name.isEmpty()) // IDL function property if (current->name.isEmpty() || current->name=="typedef") // IDL function property
{ {
squareCount=1; squareCount=1;
lastSquareContext = YY_START; lastSquareContext = YY_START;
...@@ -2258,11 +2261,20 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -2258,11 +2261,20 @@ TITLE [tT][iI][tT][lL][eE]
BEGIN( ClassVar ); BEGIN( ClassVar );
} }
<ClassVar>{SCOPENAME}{BN}*/"(" { <ClassVar>{SCOPENAME}{BN}*/"(" {
addType(current); if (insideIDL && strncmp(yytext,"switch",6)==0)
current->name = yytext; {
current->name = current->name.stripWhiteSpace(); // Corba IDL style union
lineCount(); roundCount=0;
BEGIN( FindMembers ); BEGIN(SkipUnionSwitch);
}
else
{
addType(current);
current->name = yytext;
current->name = current->name.stripWhiteSpace();
lineCount();
BEGIN( FindMembers );
}
} }
<ClassVar>{ID} { <ClassVar>{ID} {
if (insideIDL && strcmp(yytext,"switch")==0) if (insideIDL && strcmp(yytext,"switch")==0)
...@@ -2417,7 +2429,7 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -2417,7 +2429,7 @@ TITLE [tT][iI][tT][lL][eE]
curlyCount=0; curlyCount=0;
BEGIN( ReadBody ) ; BEGIN( ReadBody ) ;
} }
<SkipUnionSwitch>"(" { <SkipUnionSwitch>{B}*"(" {
roundCount++; roundCount++;
} }
<SkipUnionSwitch>")" { <SkipUnionSwitch>")" {
...@@ -2564,7 +2576,7 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -2564,7 +2576,7 @@ TITLE [tT][iI][tT][lL][eE]
} }
BEGIN( tmpDocType ); BEGIN( tmpDocType );
} }
<Doc,JavaDoc>{B}*{CMD}("fn"|"var"|"typedef"){B}* { <Doc,JavaDoc>{B}*{CMD}("fn"|"var"|"typedef"){B}+ {
current->section = Entry::MEMBERDOC_SEC; current->section = Entry::MEMBERDOC_SEC;
current->fileName = yyFileName; current->fileName = yyFileName;
current->startLine = yyLineNr; current->startLine = yyLineNr;
...@@ -2601,55 +2613,55 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -2601,55 +2613,55 @@ TITLE [tT][iI][tT][lL][eE]
current->startLine = yyLineNr; current->startLine = yyLineNr;
BEGIN( ClassDocFunc ); BEGIN( ClassDocFunc );
} }
<Doc,JavaDoc>{B}*{CMD}"enum"{B}* { <Doc,JavaDoc>{B}*{CMD}"enum"{B}+ {
current->section = Entry::ENUMDOC_SEC; current->section = Entry::ENUMDOC_SEC;
current->fileName = yyFileName; current->fileName = yyFileName;
current->startLine = yyLineNr; current->startLine = yyLineNr;
BEGIN( EnumDocArg1 ); BEGIN( EnumDocArg1 );
} }
<Doc,JavaDoc>{B}*{CMD}"defgroup"{B}* { <Doc,JavaDoc>{B}*{CMD}"defgroup"{B}+ {
current->section = Entry::GROUPDOC_SEC; current->section = Entry::GROUPDOC_SEC;
current->fileName = yyFileName; current->fileName = yyFileName;
current->startLine = yyLineNr; current->startLine = yyLineNr;
BEGIN( GroupDocArg1 ); BEGIN( GroupDocArg1 );
} }
<Doc,JavaDoc>{B}*{CMD}"namespace"{B}* { <Doc,JavaDoc>{B}*{CMD}"namespace"{B}+ {
current->section = Entry::NAMESPACEDOC_SEC; current->section = Entry::NAMESPACEDOC_SEC;
current->fileName = yyFileName; current->fileName = yyFileName;
current->startLine = yyLineNr; current->startLine = yyLineNr;
BEGIN( NameSpaceDocArg1 ); BEGIN( NameSpaceDocArg1 );
} }
<Doc,JavaDoc>{B}*{CMD}"class"{B}* { <Doc,JavaDoc>{B}*{CMD}"class"{B}+ {
current->section = Entry::CLASSDOC_SEC; current->section = Entry::CLASSDOC_SEC;
current->fileName = yyFileName; current->fileName = yyFileName;
current->startLine = yyLineNr; current->startLine = yyLineNr;
BEGIN( ClassDocArg1 ); BEGIN( ClassDocArg1 );
} }
<Doc,JavaDoc>{B}*{CMD}"union"{B}* { <Doc,JavaDoc>{B}*{CMD}"union"{B}+ {
current->section = Entry::UNIONDOC_SEC; current->section = Entry::UNIONDOC_SEC;
current->fileName = yyFileName; current->fileName = yyFileName;
current->startLine = yyLineNr; current->startLine = yyLineNr;
BEGIN( ClassDocArg1 ); BEGIN( ClassDocArg1 );
} }
<Doc,JavaDoc>{B}*{CMD}"struct"{B}* { <Doc,JavaDoc>{B}*{CMD}"struct"{B}+ {
current->section = Entry::STRUCTDOC_SEC; current->section = Entry::STRUCTDOC_SEC;
current->fileName = yyFileName; current->fileName = yyFileName;
current->startLine = yyLineNr; current->startLine = yyLineNr;
BEGIN( ClassDocArg1 ); BEGIN( ClassDocArg1 );
} }
<Doc,JavaDoc>{B}*{CMD}"interface"{B}* { <Doc,JavaDoc>{B}*{CMD}"interface"{B}+ {
current->section = Entry::INTERFACEDOC_SEC; current->section = Entry::INTERFACEDOC_SEC;
current->fileName = yyFileName; current->fileName = yyFileName;
current->startLine = yyLineNr; current->startLine = yyLineNr;
BEGIN( ClassDocArg1 ); BEGIN( ClassDocArg1 );
} }
<Doc,JavaDoc>{B}*{CMD}"idlexcept"{B}* { <Doc,JavaDoc>{B}*{CMD}"idlexcept"{B}+ {
current->section = Entry::EXCEPTIONDOC_SEC; current->section = Entry::EXCEPTIONDOC_SEC;
current->fileName = yyFileName; current->fileName = yyFileName;
current->startLine = yyLineNr; current->startLine = yyLineNr;
BEGIN( ClassDocArg1 ); BEGIN( ClassDocArg1 );
} }
<Doc,JavaDoc>{B}*{CMD}"page"{B}* { <Doc,JavaDoc>{B}*{CMD}"page"{B}+ {
current->section = Entry::PAGEDOC_SEC; current->section = Entry::PAGEDOC_SEC;
current->fileName = yyFileName; current->fileName = yyFileName;
current->startLine = yyLineNr; current->startLine = yyLineNr;
...@@ -2667,7 +2679,7 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -2667,7 +2679,7 @@ TITLE [tT][iI][tT][lL][eE]
current->startLine = yyLineNr; current->startLine = yyLineNr;
BEGIN( FileDocArg1 ); BEGIN( FileDocArg1 );
} }
<Doc,JavaDoc>{B}*{CMD}"example"{B}* { <Doc,JavaDoc>{B}*{CMD}"example"{B}+ {
current->section = Entry::EXAMPLE_SEC; current->section = Entry::EXAMPLE_SEC;
current->fileName = yyFileName; current->fileName = yyFileName;
current->startLine = yyLineNr; current->startLine = yyLineNr;
...@@ -2698,10 +2710,10 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -2698,10 +2710,10 @@ TITLE [tT][iI][tT][lL][eE]
} }
<SkipHtmlComment>"--"[!]?">" { BEGIN(lastSkipHtmlCommentContext); } <SkipHtmlComment>"--"[!]?">" { BEGIN(lastSkipHtmlCommentContext); }
<SkipHtmlComment>. <SkipHtmlComment>.
<AfterDoc,Doc,ClassDoc,PageDoc>("\\\\"|"@@")("todo"|"test")/[^a-z_A-Z0-9] { <AfterDoc,Doc,ClassDoc,PageDoc>("\\\\"|"@@")("todo"|"test"|"bug")/[^a-z_A-Z0-9] {
current->doc+=yytext; current->doc+=yytext;
} }
<AfterDocLine,LineDoc,JavaDoc>("\\\\"|"@@")("todo"|"test")/[^a-z_A-Z0-9] { <AfterDocLine,LineDoc,JavaDoc>("\\\\"|"@@")("todo"|"test"|"bug")/[^a-z_A-Z0-9] {
current->brief+=yytext; current->brief+=yytext;
} }
<AfterDoc,AfterDocLine,LineDoc,Doc,JavaDoc,ClassDoc,PageDoc>{CMD}"todo"/[^a-z_A-Z0-9] { <AfterDoc,AfterDocLine,LineDoc,Doc,JavaDoc,ClassDoc,PageDoc>{CMD}"todo"/[^a-z_A-Z0-9] {
...@@ -2718,6 +2730,13 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -2718,6 +2730,13 @@ TITLE [tT][iI][tT][lL][eE]
current->brief.resize(0); current->brief.resize(0);
BEGIN(ClassDocBrief); BEGIN(ClassDocBrief);
} }
<AfterDoc,AfterDocLine,LineDoc,Doc,JavaDoc,ClassDoc,PageDoc>{CMD}"bug"/[^a-z_A-Z0-9] {
bugStartContext = YY_START;
lastBriefContext = BugParam; // this is where we will continue at the end of the argument
bugString = current->brief.copy(); // these will be swapped later on.
current->brief.resize(0);
BEGIN(ClassDocBrief);
}
<TodoParam>\n | <TodoParam>\n |
<TodoParam>"//" | <TodoParam>"//" |
<TodoParam>"/*" | <TodoParam>"/*" |
...@@ -2778,6 +2797,36 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -2778,6 +2797,36 @@ TITLE [tT][iI][tT][lL][eE]
current->brief = testString.copy(); // restore orginial brief desc. current->brief = testString.copy(); // restore orginial brief desc.
BEGIN(testStartContext); BEGIN(testStartContext);
} }
<BugParam>\n |
<BugParam>"//" |
<BugParam>"/*" |
<BugParam>. {
if (current->bugId!=0)
{
RefItem *item = bugList.getRefItem(current->bugId);
item->text += " <p>";
item->text += current->brief;
}
else
{
int bugItemId = bugList.addRefItem();
char anchorLabel[12];
sprintf(anchorLabel,"_bug%06d",bugItemId);
RefItem *item = bugList.getRefItem(bugItemId);
item->text = current->brief.copy();
item->listAnchor = anchorLabel;
current->bugId = bugItemId;
QCString bugCmdString;
bugCmdString.sprintf("\\bug %d\n",bugItemId);
current->doc += bugCmdString;
sectionType=SectionInfo::Anchor;
sectionLabel=anchorLabel;
addSection();
}
unput(*yytext);
current->brief = bugString.copy(); // restore orginial brief desc.
BEGIN(bugStartContext);
}
<ExampleDocArg1>{FILE} { <ExampleDocArg1>{FILE} {
current->name = stripQuotes(yytext); current->name = stripQuotes(yytext);
BEGIN( ExampleDoc ); BEGIN( ExampleDoc );
...@@ -3057,7 +3106,7 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -3057,7 +3106,7 @@ TITLE [tT][iI][tT][lL][eE]
if (!removeSlashes) if (!removeSlashes)
*pSkipDoc+=yytext; *pSkipDoc+=yytext;
} }
<SkipCode>^{B}*"*"+/{B}+ <SkipCode>^{B}*"*"+/{BN}+
<SkipCode>"//" { <SkipCode>"//" {
*pSkipDoc+=yytext; *pSkipDoc+=yytext;
} }
...@@ -3102,7 +3151,7 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -3102,7 +3151,7 @@ TITLE [tT][iI][tT][lL][eE]
lineCount(); lineCount();
BEGIN( GroupName ); BEGIN( GroupName );
} }
<ClassDoc,Doc,JavaDoc>"@{" { <ClassDoc,Doc,JavaDoc>{CMD}"{" {
if (current->section == Entry::GROUPDOC_SEC) if (current->section == Entry::GROUPDOC_SEC)
{ {
autoGroupNameStack.push(new QCString(current->name)); autoGroupNameStack.push(new QCString(current->name));
...@@ -3118,7 +3167,7 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -3118,7 +3167,7 @@ TITLE [tT][iI][tT][lL][eE]
warn(yyFileName,yyLineNr,"Warning: @{ may only be used in a group block!\n"); warn(yyFileName,yyLineNr,"Warning: @{ may only be used in a group block!\n");
} }
} }
<ClassDoc,Doc,JavaDoc>"@}" { <ClassDoc,Doc,JavaDoc>{CMD}"}" {
endGroup(); endGroup();
} }
<ExampleDoc,PageDoc,ClassDoc>. { current->doc += yytext; } <ExampleDoc,PageDoc,ClassDoc>. { current->doc += yytext; }
...@@ -3202,6 +3251,12 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -3202,6 +3251,12 @@ TITLE [tT][iI][tT][lL][eE]
unput('/');unput('*'); // make sure we have something to read unput('/');unput('*'); // make sure we have something to read
BEGIN( TestParam ); BEGIN( TestParam );
} }
else if (YY_START==ClassDocBrief &&
lastBriefContext==BugParam)
{
unput('/');unput('*'); // make sure we have something to read
BEGIN( BugParam );
}
else if (YY_START==ClassDocBrief && else if (YY_START==ClassDocBrief &&
lastBriefContext==Doc) lastBriefContext==Doc)
{ {
...@@ -3269,7 +3324,10 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -3269,7 +3324,10 @@ TITLE [tT][iI][tT][lL][eE]
<ClassDocBrief>{BS}({BL}|"\\n\\n") { <ClassDocBrief>{BS}({BL}|"\\n\\n") {
current->brief=current->brief.stripWhiteSpace(); current->brief=current->brief.stripWhiteSpace();
if (!current->doc.isEmpty()) current->doc+=" <p>"; if (!current->doc.isEmpty()) current->doc+=" <p>";
if (lastBriefContext==TodoParam || lastBriefContext==TestParam) if (lastBriefContext==TodoParam ||
lastBriefContext==TestParam ||
lastBriefContext==BugParam
)
{ {
unput('\n'); unput('\n');
} }
...@@ -3300,6 +3358,16 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -3300,6 +3358,16 @@ TITLE [tT][iI][tT][lL][eE]
unput('\n'); // make sure we have something to read unput('\n'); // make sure we have something to read
BEGIN( TestParam ); BEGIN( TestParam );
} }
else if
(lastBriefContext==BugParam &&
(bugStartContext==LineDoc ||
bugStartContext==AfterDocLine
)
)
{
unput('\n'); // make sure we have something to read
BEGIN( BugParam );
}
else else
{ {
current->brief += " "; current->brief += " ";
......
...@@ -1227,6 +1227,22 @@ class Translator ...@@ -1227,6 +1227,22 @@ class Translator
{ {
return "Value:"; return "Value:";
} }
//////////////////////////////////////////////////////////////////////////
// new since 1.2.5
//////////////////////////////////////////////////////////////////////////
/*! Used as a marker that is put before a \bug item */
virtual QCString trBug()
{
return "Bug";
}
/*! Used as the header of the bug list */
virtual QCString trBugList()
{
return "Bug List";
}
}; };
#endif #endif
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
* Initial Italian Translation by Ahmed Aldo Faisal * Initial Italian Translation by Ahmed Aldo Faisal
* Revised and completed by Alessandro Falappa (June 1999) * Revised and completed by Alessandro Falappa (June 1999)
* Updates: * Updates:
* 2001/02: translated new items used since version 1.2.4
* 2000/11: modified slightly the translation in trLegendDocs() function, * 2000/11: modified slightly the translation in trLegendDocs() function,
* translated new items used since version 1.2.1 and 1.2.2 * translated new items used since version 1.2.1 and 1.2.2
* 2000/08: translated new items used since version 1.1.3, 1.1.4, 1.1.5 and 1.2.0 * 2000/08: translated new items used since version 1.1.3, 1.1.4, 1.1.5 and 1.2.0
...@@ -998,6 +999,50 @@ class TranslatorItalian : public Translator ...@@ -998,6 +999,50 @@ class TranslatorItalian : public Translator
return "Documentazione delle Proprietà"; return "Documentazione delle Proprietà";
} }
//////////////////////////////////////////////////////////////////////////
// new since 1.2.4
//////////////////////////////////////////////////////////////////////////
/*! Used for Java interfaces in the summary section of Java packages */
virtual QCString trInterfaces()
{
return "Interfacce";
}
/*! Used for Java classes in the summary section of Java packages */
virtual QCString trClasses()
{
return "Classi";
}
/*! Used as the title of a Java package */
virtual QCString trPackage(const char *name)
{
return (QCString)"Package "+name;
}
/*! Title of the package index page */
virtual QCString trPackageList()
{
return "Lista dei package";
}
/*! The description of the package index page */
virtual QCString trPackageListDescription()
{
return "Questi sono i package e una loro breve descrizione (se disponibile):";
}
/*! The link name in the Quick links header for each page */
virtual QCString trPackages()
{
return "Package";
}
/*! Used as a chapter title for Latex & RTF output */
virtual QCString trPackageDocumentation()
{
return "Documentazione dei package";
}
/*! Text shown before a multi-line define */
virtual QCString trDefineValue()
{
return "Valore:";
}
}; };
#endif #endif
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* *
* *
* *
* Copyright (C) 1997-2001 by Dimitri van Heesch. * Copyright (C) 1997-2000 by Dimitri van Heesch.
* *
* Permission to use, copy, modify, and distribute this software and its * Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby * documentation under the terms of the GNU General Public License is hereby
...@@ -25,12 +25,11 @@ class TranslatorJapanese : public Translator ...@@ -25,12 +25,11 @@ class TranslatorJapanese : public Translator
public: public:
QCString idLanguage() QCString idLanguage()
{ return "japanese"; } { return "japanese"; }
QCString idLanguageCharset()
{ return "euc-jp"; }
/*! returns the name of the package that is included by LaTeX */ /*! returns the name of the package that is included by LaTeX */
QCString latexBabelPackage() QCString latexBabelPackage()
{ return "a4j"; } { return "english"; }
QCString idLanguageCharset()
{ return "euc-jp"; }
/*! used in the compound documentation before a list of related functions. */ /*! used in the compound documentation before a list of related functions. */
QCString trRelatedFunctions() QCString trRelatedFunctions()
...@@ -414,7 +413,7 @@ class TranslatorJapanese : public Translator ...@@ -414,7 +413,7 @@ class TranslatorJapanese : public Translator
/*! this text is generated when the \warning command is used. */ /*! this text is generated when the \warning command is used. */
QCString trWarning() QCString trWarning()
{ return "注意"; } { return "警告"; }
/*! this text is generated when the \bug command is used. */ /*! this text is generated when the \bug command is used. */
QCString trBugsAndLimitations() QCString trBugsAndLimitations()
...@@ -452,7 +451,9 @@ class TranslatorJapanese : public Translator ...@@ -452,7 +451,9 @@ class TranslatorJapanese : public Translator
QCString trGeneratedBy() QCString trGeneratedBy()
{ return ""; } { return ""; }
// new since 0.49-990307 //////////////////////////////////////////////////////////////////////////
// new since 0.49-990307
//////////////////////////////////////////////////////////////////////////
/*! used as the title of page containing all the index of all namespaces. */ /*! used as the title of page containing all the index of all namespaces. */
QCString trNamespaceList() QCString trNamespaceList()
...@@ -747,12 +748,12 @@ class TranslatorJapanese : public Translator ...@@ -747,12 +748,12 @@ class TranslatorJapanese : public Translator
/*! Text for the \pre command */ /*! Text for the \pre command */
QCString trPrecondition() QCString trPrecondition()
{ {
return "前提条件"; return "事前条件";
} }
/*! Text for the \post command */ /*! Text for the \post command */
QCString trPostcondition() QCString trPostcondition()
{ {
return "Postcondition"; return "事後条件";
} }
/*! Text for the \invariant command */ /*! Text for the \invariant command */
QCString trInvariant() QCString trInvariant()
...@@ -785,6 +786,249 @@ class TranslatorJapanese : public Translator ...@@ -785,6 +786,249 @@ class TranslatorJapanese : public Translator
{ {
return "ページ索引"; return "ページ索引";
} }
//////////////////////////////////////////////////////////////////////////
// new since 1.1.0
//////////////////////////////////////////////////////////////////////////
QCString trNote()
{
return "覚え書き";
}
QCString trPublicTypes()
{
return "公開型";
}
QCString trPublicAttribs()
{
return "公開属性";
}
QCString trStaticPublicAttribs()
{
return "静的公開属性";
}
QCString trProtectedTypes()
{
return "保護型";
}
QCString trProtectedAttribs()
{
return "保護属性";
}
QCString trStaticProtectedAttribs()
{
return "静的保護属性";
}
QCString trPrivateTypes()
{
return "非公開型";
}
QCString trPrivateAttribs()
{
return "非公開属性";
}
QCString trStaticPrivateAttribs()
{
return "静的非公開属性";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.1.3
//////////////////////////////////////////////////////////////////////////
/*! Used as a marker that is put before a todo item */
QCString trTodo()
{
return "TODO";
}
/*! Used as the header of the todo list */
QCString trTodoList()
{
return "TODOリスト";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.1.4
//////////////////////////////////////////////////////////////////////////
QCString trReferencedBy()
{
return "次で参照されています。";
}
QCString trRemarks()
{
return "意見";
}
QCString trAttention()
{
return "注意";
}
QCString trInclByDepGraph()
{
return "このグラフは、このファイルがどのファイルから直接、間接的に"
"インクルードされているかを示しています。";
}
QCString trSince()
{
return "Since";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.1.5
//////////////////////////////////////////////////////////////////////////
/*! title of the graph legend page */
QCString trLegendTitle()
{
return "グラフの凡例";
}
/*! page explaining how the dot graph's should be interpreted */
QCString trLegendDocs()
{
return
"このページでは、doxygen で生成されたグラフをどのようにみたらよいかを"
"説明します。<p>\n"
"次の例を考えてみます。\n"
"\\code\n"
"/*! 省略されて見えないクラス */\n"
"class Invisible { };\n\n"
"/*! 省略されたクラス(継承関係は隠されている) */\n"
"class Truncated : public Invisible { };\n\n"
"/* doxygen コメントによるドキュメントがないクラス */\n"
"class Undocumented { };\n\n"
"/*! public で継承されたクラス */\n"
"class PublicBase : public Truncated { };\n\n"
"/*! protected で継承されたクラス */\n"
"class ProtectedBase { };\n\n"
"/*! private で継承されたクラス */\n"
"class PrivateBase { };\n\n"
"/*! 継承されたクラスで使われているクラス */\n"
"class Used { };\n\n"
"/*! 複数のクラスを継承している上位クラス */\n"
"class Inherited : public PublicBase,\n"
" protected ProtectedBase,\n"
" private PrivateBase,\n"
" public Undocumented\n"
"{\n"
" private:\n"
" Used *m_usedClass;\n"
"};\n"
"\\endcode\n"
"設定ファイル中で、タグ \\c MAX_DOT_GRAPH_HEIGHT が 200 にセットされた"
"場合、次のようなグラフとなります。"
"<p><center><img src=\"graph_legend.gif\"></center>\n"
"<p>\n"
"上のグラフ内のボックスには次のような意味があります。\n"
"<ul>\n"
"<li>黒く塗りつぶされたボックスは、このグラフに対応する構造体やクラスを"
"表します。\n"
"<li>黒枠のボックスはドキュメントがある構造体やクラスを表します。\n"
"<li>灰色の枠のボックスはドキュメントがない構造体やクラスを表します。\n"
"<li>赤枠のボックスはドキュメントがある構造体やクラスを表しますが、"
"指定されたサイズに収まらないために継承・包含関係をすべて図示する"
"ことができなかったことを示します。"
"</ul>\n"
"矢印には次のような意味があります。\n"
"<ul>\n"
"<li>青い矢印は二つのクラス間の public 継承関係を示します。\n"
"<li>緑の矢印は protected 継承関係を示します。\n"
"<li>赤の矢印は private 継承関係を示します。\n"
"<li>紫の破線矢印は、そのクラスが他のクラスに含まれていたり、"
"利用されていることを示します。また、矢印が指しているクラスや構造体を"
"どの変数でアクセスできるかを矢印のラベルとして示しています。\n"
"</ul>\n";
}
/*! text for the link to the legend page */
QCString trLegend()
{
return "凡例";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.2.0
//////////////////////////////////////////////////////////////////////////
/*! Used as a marker that is put before a test item */
QCString trTest()
{
return "テスト";
}
/*! Used as the header of the test list */
QCString trTestList()
{
return "テストリスト";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.2.1
//////////////////////////////////////////////////////////////////////////
/*! Used as a section header for KDE-2 IDL methods */
QCString trDCOPMethods()
{
return "DCOPメソッド";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.2.2
//////////////////////////////////////////////////////////////////////////
/*! Used as a section header for IDL properties */
QCString trProperties()
{
return "プロパティ";
}
/*! Used as a section header for IDL property documentation */
QCString trPropertyDocumentation()
{
return "プロパティの解説";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.2.4
//////////////////////////////////////////////////////////////////////////
/*! Used for Java interfaces in the summary section of Java packages */
virtual QCString trInterfaces()
{
return "インターフェース";
}
/*! Used for Java classes in the summary section of Java packages */
virtual QCString trClasses()
{
return "クラス";
}
/*! Used as the title of a Java package */
virtual QCString trPackage(const char *name)
{
return (QCString)"パッケージ "+name;
}
/*! Title of the package index page */
virtual QCString trPackageList()
{
return "パッケージリスト";
}
/*! The description of the package index page */
virtual QCString trPackageListDescription()
{
return "簡易説明を持つパッケージです。";
}
/*! The link name in the Quick links header for each page */
virtual QCString trPackages()
{
return "パッケージ";
}
/*! Used as a chapter title for Latex & RTF output */
virtual QCString trPackageDocumentation()
{
return "パッケージの解説";
}
/*! Text shown before a multi-line define */
virtual QCString trDefineValue()
{
return "値:";
}
}; };
#endif #endif
...@@ -32,7 +32,7 @@ class TranslatorDutch : public Translator ...@@ -32,7 +32,7 @@ class TranslatorDutch : public Translator
QCString trRelatedSubscript() QCString trRelatedSubscript()
{ return "(Merk op dat dit geen member functies zijn.)"; } { return "(Merk op dat dit geen member functies zijn.)"; }
QCString trDetailedDescription() QCString trDetailedDescription()
{ return "Gedetaileerde Beschrijving"; } { return "Gedetailleerde Beschrijving"; }
QCString trMemberTypedefDocumentation() QCString trMemberTypedefDocumentation()
{ return "Documentatie van type definitie members"; } { return "Documentatie van type definitie members"; }
QCString trMemberEnumerationDocumentation() QCString trMemberEnumerationDocumentation()
...@@ -516,15 +516,15 @@ class TranslatorDutch : public Translator ...@@ -516,15 +516,15 @@ class TranslatorDutch : public Translator
} }
QCString trGraphicalHierarchy() QCString trGraphicalHierarchy()
{ {
return "Grafische Klasse Hierarchie"; return "Grafische Klasse Hi&euml;rarchie";
} }
QCString trGotoGraphicalHierarchy() QCString trGotoGraphicalHierarchy()
{ {
return "Ga naar de grafische klasse hierarchie"; return "Ga naar de grafische klasse hi&euml;rarchie";
} }
QCString trGotoTextualHierarchy() QCString trGotoTextualHierarchy()
{ {
return "Ga naar de tekstu&euml;le klasse hierarchie"; return "Ga naar de tekstuele klasse hi&euml;rarchie";
} }
QCString trPageIndex() QCString trPageIndex()
{ {
...@@ -695,12 +695,12 @@ class TranslatorDutch : public Translator ...@@ -695,12 +695,12 @@ class TranslatorDutch : public Translator
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/*! Used as a marker that is put before a test item */ /*! Used as a marker that is put before a test item */
virtual QCString trTest() QCString trTest()
{ {
return "Test"; return "Test";
} }
/*! Used as the header of the test list */ /*! Used as the header of the test list */
virtual QCString trTestList() QCString trTestList()
{ {
return "Test Lijst"; return "Test Lijst";
} }
...@@ -710,7 +710,7 @@ class TranslatorDutch : public Translator ...@@ -710,7 +710,7 @@ class TranslatorDutch : public Translator
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/*! Used as a section header for KDE-2 IDL methods */ /*! Used as a section header for KDE-2 IDL methods */
virtual QCString trDCOPMethods() QCString trDCOPMethods()
{ {
return "DCOP Methoden"; return "DCOP Methoden";
} }
...@@ -720,15 +720,76 @@ class TranslatorDutch : public Translator ...@@ -720,15 +720,76 @@ class TranslatorDutch : public Translator
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/*! Used as a section header for IDL properties */ /*! Used as a section header for IDL properties */
virtual QCString trProperties() QCString trProperties()
{ {
return "Properties"; return "Properties";
} }
/*! Used as a section header for IDL property documentation */ /*! Used as a section header for IDL property documentation */
virtual QCString trPropertyDocumentation() QCString trPropertyDocumentation()
{ {
return "Property Documentatie"; return "Property Documentatie";
} }
//////////////////////////////////////////////////////////////////////////
// new since 1.2.4
//////////////////////////////////////////////////////////////////////////
/*! Used for Java interfaces in the summary section of Java packages */
QCString trInterfaces()
{
return "Interfaces";
}
/*! Used for Java classes in the summary section of Java packages */
QCString trClasses()
{
return "Klassen";
}
/*! Used as the title of a Java package */
QCString trPackage(const char *name)
{
return (QCString)"Package "+name;
}
/*! Title of the package index page */
QCString trPackageList()
{
return "Package Lijst";
}
/*! The description of the package index page */
QCString trPackageListDescription()
{
return "Hier volgen de packages, elk met een korte beschrijving (indien aanwezig):";
}
/*! The link name in the Quick links header for each page */
QCString trPackages()
{
return "Packages";
}
/*! Used as a chapter title for Latex & RTF output */
QCString trPackageDocumentation()
{
return "Package Documentatie";
}
/*! Text shown before a multi-line define */
QCString trDefineValue()
{
return "Waarde:";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.2.5
//////////////////////////////////////////////////////////////////////////
/*! Used as a marker that is put before a \bug item */
QCString trBug()
{
return "Bug";
}
/*! Used as the header of the bug list */
QCString trBugList()
{
return "Bug Lijst";
}
}; };
#endif #endif
...@@ -14,6 +14,11 @@ ...@@ -14,6 +14,11 @@
* *
*/ */
/*
* Russian translation by Andrey V. Stolyarov <crocodil<AT>croco.net>
* released Feb 14, 2001
*/
#ifndef TRANSLATOR_RU_H #ifndef TRANSLATOR_RU_H
#define TRANSLATOR_RU_H #define TRANSLATOR_RU_H
...@@ -32,48 +37,55 @@ class TranslatorRussian : public Translator ...@@ -32,48 +37,55 @@ class TranslatorRussian : public Translator
} }
QCString trRelatedFunctions() QCString trRelatedFunctions()
{ {
return " "; return " ";
} }
QCString trRelatedSubscript() QCString trRelatedSubscript()
{ {
return "( , )"; return "( , - )";
} }
QCString trDetailedDescription() QCString trDetailedDescription()
{ {
return " "; return " ";
} }
QCString trMemberTypedefDocumentation() QCString trMemberTypedefDocumentation()
{ {
// Need additional translation // Need additional translation
return " typedef"; return " typedef-";
} }
QCString trMemberEnumerationDocumentation() QCString trMemberEnumerationDocumentation()
{ {
return " "; return " ";
} }
QCString trMemberFunctionDocumentation() QCString trMemberFunctionDocumentation()
{ {
return " "; return " -";
} }
QCString trMemberDataDocumentation() QCString trMemberDataDocumentation()
{ {
return " "; if (Config::optimizeForCFlag)
{
return " ";
}
else
{
return " -";
}
} }
QCString trMore() QCString trMore()
{ {
return "..."; return "...";
} }
QCString trListOfAllMembers() QCString trListOfAllMembers()
{ {
return "C "; return "C .";
} }
QCString trMemberList() QCString trMemberList()
{ {
return " "; return " ";
} }
QCString trThisIsTheListOfAllMembers() QCString trThisIsTheListOfAllMembers()
{ {
return " "; return " / ";
} }
QCString trIncludeIncludingInheritedMembers() QCString trIncludeIncludingInheritedMembers()
{ {
...@@ -82,7 +94,7 @@ class TranslatorRussian : public Translator ...@@ -82,7 +94,7 @@ class TranslatorRussian : public Translator
QCString trGeneratedAutomatically(const char *s) QCString trGeneratedAutomatically(const char *s)
{ QCString result=" Doxygen"; { QCString result=" Doxygen";
if (s) result+=(QCString)" "+s; if (s) result+=(QCString)" "+s;
result+=" ."; result+=" .";
return result; return result;
} }
QCString trEnumName() QCString trEnumName()
...@@ -99,7 +111,7 @@ class TranslatorRussian : public Translator ...@@ -99,7 +111,7 @@ class TranslatorRussian : public Translator
} }
QCString trVerbatimText(const char* f) QCString trVerbatimText(const char* f)
{ {
return (QCString)" "+f+" "; return (QCString)" "+f;
} }
QCString trModules() QCString trModules()
{ {
...@@ -111,29 +123,52 @@ class TranslatorRussian : public Translator ...@@ -111,29 +123,52 @@ class TranslatorRussian : public Translator
} }
QCString trCompoundList() QCString trCompoundList()
{ {
// Need additional translation if (Config::optimizeForCFlag)
return " (compound list)"; {
return " ";
}
else
{
// doubtful translation; originally - "Compound List"
return " ";
}
} }
QCString trFileList() QCString trFileList()
{ {
return " "; return " ";
} }
QCString trHeaderFiles() QCString trHeaderFiles()
{ {
return " "; return " ";
} }
QCString trCompoundMembers() QCString trCompoundMembers()
{ {
// Need additional translation if (Config::optimizeForCFlag)
return " (compound members)"; {
return " ";
}
else
{
return "-";
}
} }
QCString trFileMembers() QCString trFileMembers()
{ {
return " "; if (Config::optimizeForCFlag)
{
return " ";
}
else
{
// doubtful translation
// (originally - "File members", but not good for Russian)
return " ";
}
} }
QCString trRelatedPages() QCString trRelatedPages()
{ {
return " "; // non-verbatim translation: originally "related pages"
return ". : ";
} }
QCString trExamples() QCString trExamples()
{ {
...@@ -145,8 +180,8 @@ class TranslatorRussian : public Translator ...@@ -145,8 +180,8 @@ class TranslatorRussian : public Translator
} }
QCString trClassHierarchyDescription() QCString trClassHierarchyDescription()
{ {
// Need additional translation return " "
return " (inheritance) , "; "( ) ";
} }
QCString trFileListDescription(bool extractAll) QCString trFileListDescription(bool extractAll)
{ {
...@@ -157,36 +192,52 @@ class TranslatorRussian : public Translator ...@@ -157,36 +192,52 @@ class TranslatorRussian : public Translator
} }
QCString trCompoundListDescription() QCString trCompoundListDescription()
{ {
return " , , " if (Config::optimizeForCFlag)
":"; {
return " : ";
}
else
{
return ", , "
" : ";
}
} }
QCString trCompoundMembersDescription(bool extractAll) QCString trCompoundMembersDescription(bool extractAll)
{ {
// Need additional translation // Need additional translation
QCString result=" "; QCString result=" ";
if(!extractAll) result+=" "; if(!extractAll) result+=" ";
result+=" "; result+=" ";
if(extractAll) if(extractAll)
result+="the class documentation for each member:"; result+=" :";
else else
result+="the classes the belong to:"; result+=", :";
return result; return result;
} }
QCString trFileMembersDescription(bool extractAll) QCString trFileMembersDescription(bool extractAll)
{ {
// Need additional translation QCString result=" ";
QCString result=" "; if (!extractAll) result+=" ";
if(!extractAll) result+=" ";
result+=" , (links) "; if (Config::optimizeForCFlag)
if(extractAll) {
result+="the class documentation for each member:"; result+=", , , "
else " ";
result+="the classes the belong to:"; }
return result; else
{
result+=" ";
}
result+=" ";
if (extractAll)
result+=", :";
else
result+=":";
return result;
} }
QCString trHeaderFilesDescription() QCString trHeaderFilesDescription()
{ {
return " , API:"; return " , API:";
} }
QCString trExamplesDescription() QCString trExamplesDescription()
{ {
...@@ -194,8 +245,7 @@ class TranslatorRussian : public Translator ...@@ -194,8 +245,7 @@ class TranslatorRussian : public Translator
} }
QCString trRelatedPagesDescription() QCString trRelatedPagesDescription()
{ {
// Need additional translation return " :";
return " :";
} }
QCString trModulesDescription() QCString trModulesDescription()
{ {
...@@ -203,7 +253,7 @@ class TranslatorRussian : public Translator ...@@ -203,7 +253,7 @@ class TranslatorRussian : public Translator
} }
QCString trNoDescriptionAvailable() QCString trNoDescriptionAvailable()
{ {
return " "; return " ";
} }
QCString trDocumentation() QCString trDocumentation()
{ {
...@@ -211,7 +261,7 @@ class TranslatorRussian : public Translator ...@@ -211,7 +261,7 @@ class TranslatorRussian : public Translator
} }
QCString trModuleIndex() QCString trModuleIndex()
{ {
return " "; return " ";
} }
QCString trHierarchicalIndex() QCString trHierarchicalIndex()
{ {
...@@ -219,41 +269,48 @@ class TranslatorRussian : public Translator ...@@ -219,41 +269,48 @@ class TranslatorRussian : public Translator
} }
QCString trCompoundIndex() QCString trCompoundIndex()
{ {
// Need additional translation if (Config::optimizeForCFlag)
return " "; {
return " ";
}
else
{
// originally "compound index"
return " ";
}
} }
QCString trFileIndex() QCString trFileIndex()
{ {
return " "; return " ";
} }
QCString trModuleDocumentation() QCString trModuleDocumentation()
{ {
return " "; return " ";
} }
QCString trClassDocumentation() QCString trClassDocumentation()
{ {
return " "; return " ";
} }
QCString trFileDocumentation() QCString trFileDocumentation()
{ {
return " "; return " ";
} }
QCString trExampleDocumentation() QCString trExampleDocumentation()
{ {
return " "; return " ";
} }
QCString trPageDocumentation() QCString trPageDocumentation()
{ {
return " "; return " ";
} }
QCString trReferenceManual() QCString trReferenceManual()
{ {
return " "; // originally reference manual
return " ";
} }
QCString trDefines() QCString trDefines()
{ {
// Need Translation return "";
return " (Defines)";
} }
QCString trFunctionPrototypes() QCString trFunctionPrototypes()
{ {
...@@ -265,20 +322,19 @@ class TranslatorRussian : public Translator ...@@ -265,20 +322,19 @@ class TranslatorRussian : public Translator
} }
QCString trEnumerations() QCString trEnumerations()
{ {
// Need Translation return "";
return " (Enumerations)";
} }
QCString trFunctions() QCString trFunctions()
{ {
return ":"; return "";
} }
QCString trVariables() QCString trVariables()
{ {
return ":"; return "";
} }
QCString trEnumerationValues() QCString trEnumerationValues()
{ {
return " "; return " ";
} }
QCString trAuthor() QCString trAuthor()
{ {
...@@ -286,7 +342,7 @@ class TranslatorRussian : public Translator ...@@ -286,7 +342,7 @@ class TranslatorRussian : public Translator
} }
QCString trDefineDocumentation() QCString trDefineDocumentation()
{ {
return " (defines)"; return " ";
} }
QCString trFunctionPrototypeDocumentation() QCString trFunctionPrototypeDocumentation()
{ {
...@@ -314,8 +370,16 @@ class TranslatorRussian : public Translator ...@@ -314,8 +370,16 @@ class TranslatorRussian : public Translator
} }
QCString trCompounds() QCString trCompounds()
{ {
// need translation if (Config::optimizeForCFlag)
return "Compounds"; {
return " ";
}
else
{
// originally "compounds"
return " ";
}
} }
QCString trFiles() QCString trFiles()
{ {
...@@ -325,16 +389,16 @@ class TranslatorRussian : public Translator ...@@ -325,16 +389,16 @@ class TranslatorRussian : public Translator
{ {
QCString result=(QCString)" "+date; QCString result=(QCString)" "+date;
if(projName) result+=(QCString)" "+projName; if(projName) result+=(QCString)" "+projName;
result+=(QCString)" "; result+=(QCString)" ";
return result; return result;
} }
QCString trWrittenBy() QCString trWrittenBy()
{ {
return " "; return "";
} }
QCString trClassDiagram(const char* clName) QCString trClassDiagram(const char* clName)
{ {
return (QCString)" "+clName; return (QCString)" "+clName+":";
} }
QCString trForInternalUseOnly() QCString trForInternalUseOnly()
{ {
...@@ -342,9 +406,8 @@ class TranslatorRussian : public Translator ...@@ -342,9 +406,8 @@ class TranslatorRussian : public Translator
} }
QCString trReimplementedForInternalREasons() QCString trReimplementedForInternalREasons()
{ {
// need translation return " ;"
return " ;" " .";
" .";
} }
QCString trWarning() QCString trWarning()
{ {
...@@ -372,7 +435,7 @@ class TranslatorRussian : public Translator ...@@ -372,7 +435,7 @@ class TranslatorRussian : public Translator
} }
QCString trSeeAlso() QCString trSeeAlso()
{ {
return ""; return ". ";
} }
QCString trParameters() QCString trParameters()
{ {
...@@ -384,16 +447,14 @@ class TranslatorRussian : public Translator ...@@ -384,16 +447,14 @@ class TranslatorRussian : public Translator
} }
QCString trGeneratedBy() QCString trGeneratedBy()
{ {
return " "; return " ";
} }
QCString trNamespaceList() QCString trNamespaceList()
{ {
// Need translation return " (namespaces)";
return " ";
} }
QCString trNamespaceListDescription(bool extractAll) QCString trNamespaceListDescription(bool extractAll)
{ {
// Need translation
QCString result=" "; QCString result=" ";
if(!extractAll) result+=" "; if(!extractAll) result+=" ";
result+=" :"; result+=" :";
...@@ -406,44 +467,53 @@ class TranslatorRussian : public Translator ...@@ -406,44 +467,53 @@ class TranslatorRussian : public Translator
QCString trRelatedFunctionDocumentation() QCString trRelatedFunctionDocumentation()
{ {
// need translation // need translation
return " "; return " ";
} }
QCString trCompoundReference(const char* clName, QCString trCompoundReference(const char* clName,
ClassDef::CompoundType compType, ClassDef::CompoundType compType,
bool /*isTemplate*/) bool isTemplate)
{ {
QCString result=(QCString)clName+" "; QCString result=(QCString)" ";
if (isTemplate){
switch(compType)
{
case ClassDef::Struct: result+=" "; break;
case ClassDef::Class:
case ClassDef::Union:
case ClassDef::Interface:
case ClassDef::Exception:
result+=" "; break;
}
}
switch(compType) switch(compType)
{ {
case ClassDef::Class: result+=" "; break; case ClassDef::Class: result+=" "; break;
case ClassDef::Struct: result+=" "; break; case ClassDef::Struct: result+=" "; break;
case ClassDef::Union: result+=" "; break; case ClassDef::Union: result+=" "; break;
case ClassDef::Interface: result+=" "; break; case ClassDef::Interface: result+=" "; break;
case ClassDef::Exception: result+=" "; break; case ClassDef::Exception: result+=" "; break;
} }
result+=" "; result+=clName;
return result; return result;
} }
QCString trFileReference(const char* fileName) QCString trFileReference(const char* fileName)
{ {
QCString result; QCString result;
result+=(QCString)" "+fileName; result+=(QCString)" "+fileName;
return result; return result;
} }
QCString trNamespaceReference(const char* namespaceName) QCString trNamespaceReference(const char* namespaceName)
{ {
// need translation
QCString result=(QCString)" "+namespaceName; QCString result=(QCString)" "+namespaceName;
return result; return result;
} }
QCString trPublicMembers() QCString trPublicMembers()
{ {
return " "; return " ";
} }
QCString trPublicSlots() QCString trPublicSlots()
{ {
// need translation return " ";
return " (Slots)";
} }
QCString trSignals() QCString trSignals()
{ {
...@@ -451,34 +521,31 @@ class TranslatorRussian : public Translator ...@@ -451,34 +521,31 @@ class TranslatorRussian : public Translator
} }
QCString trStaticPublicMembers() QCString trStaticPublicMembers()
{ {
return " "; return " ";
} }
QCString trProtectedMembers() QCString trProtectedMembers()
{ {
return " "; return " ";
} }
QCString trProtectedSlots() QCString trProtectedSlots()
{ {
// need translation return " ";
return " (Slots)";
} }
QCString trStaticProtectedSlots() QCString trStaticProtectedSlots()
{ {
// need translation return " ";
return " (Slots)";
} }
QCString trPrivateMembers() QCString trPrivateMembers()
{ {
return " "; return " ";
} }
QCString trPrivateSlots() QCString trPrivateSlots()
{ {
// need translation return " ";
return " (Slots)";
} }
QCString trStaticPrivateMembers() QCString trStaticPrivateMembers()
{ {
return " "; return " ";
} }
QCString trWriteList(int numEntries) QCString trWriteList(int numEntries)
{ {
...@@ -492,20 +559,27 @@ class TranslatorRussian : public Translator ...@@ -492,20 +559,27 @@ class TranslatorRussian : public Translator
if(i<numEntries-2) if(i<numEntries-2)
result+=", "; result+=", ";
else else
result+=", "; result+=" ";
} }
} }
return result; return result;
} }
QCString trInheritsList(int numEntries) QCString trInheritsList(int numEntries)
{ {
// need translation return " "+trWriteList(numEntries)+".";
return " (Inherits) "+trWriteList(numEntries)+".";
} }
QCString trInheritedByList(int numEntries) QCString trInheritedByList(int numEntries)
{ {
// need translation return " "+trWriteList(numEntries)+".";
return " (Inherited By) "+trWriteList(numEntries)+"."; }
QCString trReimplementedFromList(int numEntries)
{
// Originally: "reimplemented from"
// This translation assumes numEntries is always 1
// which is true as of 1.2.5 and it's hard for me to
// imagine a situation when it could be wrong.
return " "+trWriteList(numEntries)+".";
} }
QCString trReimplementedInList(int numEntries) QCString trReimplementedInList(int numEntries)
{ {
...@@ -513,31 +587,30 @@ class TranslatorRussian : public Translator ...@@ -513,31 +587,30 @@ class TranslatorRussian : public Translator
} }
QCString trNamespaceMembers() QCString trNamespaceMembers()
{ {
// Need translation return " ";
return " ";
} }
QCString trNamespaceMemberDescription(bool extractAll) QCString trNamespaceMemberDescription(bool extractAll)
{ {
QCString result=" "; QCString result=" ";
if(!extractAll) result+=" "; if(!extractAll) result+=" ";
result+=" "; result+=" ";
if(extractAll) if(extractAll)
result+=" "; result+=" :";
else else
result+=" "; result+=" , :";
return result; return result;
} }
QCString trNamespaceIndex() QCString trNamespaceIndex()
{ {
return " "; return " ";
} }
QCString trNamespaceDocumentation() QCString trNamespaceDocumentation()
{ {
return " "; return " ";
} }
QCString trNamespaces() QCString trNamespaces()
{ {
return " "; return " ";
} }
QCString trGeneratedFromFiles(ClassDef::CompoundType compType, bool single) QCString trGeneratedFromFiles(ClassDef::CompoundType compType, bool single)
{ {
...@@ -559,7 +632,7 @@ class TranslatorRussian : public Translator ...@@ -559,7 +632,7 @@ class TranslatorRussian : public Translator
} }
QCString trAlphabeticalList() QCString trAlphabeticalList()
{ {
return " "; return " ";
} }
QCString trReturnValues() QCString trReturnValues()
{ {
...@@ -567,8 +640,7 @@ class TranslatorRussian : public Translator ...@@ -567,8 +640,7 @@ class TranslatorRussian : public Translator
} }
QCString trMainPage() QCString trMainPage()
{ {
// need translation return " ";
return " (Main Page)";
} }
QCString trPageAbbreviation() QCString trPageAbbreviation()
{ {
...@@ -580,11 +652,11 @@ class TranslatorRussian : public Translator ...@@ -580,11 +652,11 @@ class TranslatorRussian : public Translator
} }
QCString trDefinedAtLineInSourceFile() QCString trDefinedAtLineInSourceFile()
{ {
return " @0 @1."; return " @0 @1.";
} }
QCString trDefinedInSourceFile() QCString trDefinedInSourceFile()
{ {
return " @0."; return " @0.";
} }
QCString trDeprecated() QCString trDeprecated()
{ {
...@@ -592,40 +664,36 @@ class TranslatorRussian : public Translator ...@@ -592,40 +664,36 @@ class TranslatorRussian : public Translator
} }
QCString trCollaborationDiagram(const char* clName) QCString trCollaborationDiagram(const char* clName)
{ {
// need translation // originally "collaboration diagram"
return (QCString)" "+clName+":"; return (QCString)" "+clName+":";
} }
QCString trInclDepGraph(const char* fName) QCString trInclDepGraph(const char* fName)
{ {
// need translation return (QCString)" "
return (QCString)" "+fName+":"; " "+fName+":";
} }
QCString trConstructorDocumentation() QCString trConstructorDocumentation()
{ {
return " "; return " ";
} }
QCString trGotoSourceCode() QCString trGotoSourceCode()
{ {
// need translation return " .";
return " .";
} }
QCString trGotoDocumentation() QCString trGotoDocumentation()
{ {
return " ."; return " .";
} }
QCString trPrecondition() QCString trPrecondition()
{ {
// need translation return "";
return " (Precondition)";
} }
QCString trPostcondition() QCString trPostcondition()
{ {
// need translation return "";
return " (Postcondition)";
} }
QCString trInvariant() QCString trInvariant()
{ {
// need translation
return ""; return "";
} }
QCString trInitialValue() QCString trInitialValue()
...@@ -634,26 +702,23 @@ class TranslatorRussian : public Translator ...@@ -634,26 +702,23 @@ class TranslatorRussian : public Translator
} }
QCString trCode() QCString trCode()
{ {
return " "; return " ";
} }
QCString trGraphicalHierarchy() QCString trGraphicalHierarchy()
{ {
// need translation return " ()";
return " (?)";
} }
QCString trGotoGraphicalHierarchy() QCString trGotoGraphicalHierarchy()
{ {
// need translation return " ";
return " ";
} }
QCString trGotoTextualHierarchy() QCString trGotoTextualHierarchy()
{ {
// need translation return " ";
return " ";
} }
QCString trPageIndex() QCString trPageIndex()
{ {
return " "; return " ";
} }
QCString trNote() QCString trNote()
{ {
...@@ -661,47 +726,54 @@ class TranslatorRussian : public Translator ...@@ -661,47 +726,54 @@ class TranslatorRussian : public Translator
} }
QCString trPublicTypes() QCString trPublicTypes()
{ {
return " "; return " ";
} }
QCString trPublicAttribs() QCString trPublicAttribs()
{ {
return " "; if (Config::optimizeForCFlag)
{
return " ";
}
else
{
return " ";
}
} }
QCString trStaticPublicAttribs() QCString trStaticPublicAttribs()
{ {
return " "; return " ";
} }
QCString trProtectedTypes() QCString trProtectedTypes()
{ {
return " "; return " ";
} }
QCString trProtectedAttribs() QCString trProtectedAttribs()
{ {
return " "; return " ";
} }
QCString trStaticProtectedAttribs() QCString trStaticProtectedAttribs()
{ {
return " "; return " ";
} }
QCString trPrivateTypes() QCString trPrivateTypes()
{ {
return " "; return " ";
} }
QCString trPrivateAttribs() QCString trPrivateAttribs()
{ {
return " "; return " ";
} }
QCString trStaticPrivateAttribs() QCString trStaticPrivateAttribs()
{ {
return " "; return " ";
} }
QCString trTodo() QCString trTodo()
{ {
return "Todo"; return " :";
} }
QCString trTodoList() QCString trTodoList()
{ {
return " "; return " ";
} }
QCString trReferencedBy() QCString trReferencedBy()
{ {
...@@ -718,21 +790,21 @@ class TranslatorRussian : public Translator ...@@ -718,21 +790,21 @@ class TranslatorRussian : public Translator
QCString trInclByDepGraph() QCString trInclByDepGraph()
{ {
return " , " return " , "
" :"; " :";
} }
QCString trSince() QCString trSince()
{ {
return ""; return " ";
} }
QCString trLegendTitle() QCString trLegendTitle()
{ {
return " "; return " ";
} }
QCString trLegendDocs() QCString trLegendDocs()
{ {
return return
" , , " //" , "
"doxygen.<p>\n" //"doxygen.<p>\n"
" :\n" " :\n"
"\\code\n" "\\code\n"
"/*! - */\n" "/*! - */\n"
...@@ -747,9 +819,9 @@ class TranslatorRussian : public Translator ...@@ -747,9 +819,9 @@ class TranslatorRussian : public Translator
"class ProtectedBase { };\n\n" "class ProtectedBase { };\n\n"
"/*! , */\n" "/*! , */\n"
"class PrivateBase { };\n\n" "class PrivateBase { };\n\n"
"/*! , Inherited */\n" "/*! , Inherited */\n"
"class Used { };\n\n" "class Used { };\n\n"
"/*! , */\n" "/*! , */\n"
"class Inherited : public PublicBase,\n" "class Inherited : public PublicBase,\n"
" protected ProtectedBase,\n" " protected ProtectedBase,\n"
" private PrivateBase,\n" " private PrivateBase,\n"
...@@ -759,34 +831,35 @@ class TranslatorRussian : public Translator ...@@ -759,34 +831,35 @@ class TranslatorRussian : public Translator
" Used *m_usedClass;\n" " Used *m_usedClass;\n"
"};\n" "};\n"
"\\endcode\n" "\\endcode\n"
" \\c MAX_DOT_GRAPH_HEIGHT " " \\c MAX_DOT_GRAPH_HEIGHT "
" 200, :" " 200, :"
"<p><center><img src=\"graph_legend.gif\"></center>\n" "<p><center><img src=\"graph_legend.gif\"></center>\n"
"<p>\n" "<p>\n"
" :\n" " :\n"
"<ul>\n" "<ul>\n"
"<li> , " "<li> , "
" .\n" " .\n"
"<li> .\n" "<li> .\n"
"<li> .\n" "<li> .\n"
"<li> , \n" "<li> , \n"
" / . , " " / . , "
" ." " ."
"</ul>\n" "</ul>\n"
" :\n" " :\n"
"<ul>\n" "<ul>\n"
"<li> " "<li> "
" .\n" " .\n"
"<li> .\n" "<li> .\n"
"<li> .\n" "<li> .\n"
"<li> , " "<li> , "
". , " " . "
" , "
" . \n" " . \n"
"</ul>\n"; "</ul>\n";
} }
QCString trLegend() QCString trLegend()
{ {
return ""; return "";
} }
QCString trTest() QCString trTest()
{ {
...@@ -794,34 +867,57 @@ class TranslatorRussian : public Translator ...@@ -794,34 +867,57 @@ class TranslatorRussian : public Translator
} }
QCString trTestList() QCString trTestList()
{ {
return " "; return " ";
} }
//////////////////////////////////////////////////////////////////////////
// new since 1.2.1
//////////////////////////////////////////////////////////////////////////
/*! Used as a section header for KDE-2 IDL methods */
virtual QCString trDCOPMethods() virtual QCString trDCOPMethods()
{ {
return " DCOP"; return " DCOP";
} }
//////////////////////////////////////////////////////////////////////////
// new since 1.2.2
//////////////////////////////////////////////////////////////////////////
/*! Used as a section header for IDL properties */
virtual QCString trProperties() virtual QCString trProperties()
{ {
return ""; return "";
} }
/*! Used as a section header for IDL property documentation */
virtual QCString trPropertyDocumentation() virtual QCString trPropertyDocumentation()
{ {
return " "; return " ";
} }
virtual QCString trInterfaces()
{
return "";
}
virtual QCString trClasses()
{
return "";
}
virtual QCString trPackage(const char *name)
{
return (QCString)" "+name;
}
virtual QCString trPackageList()
{
return " ";
}
virtual QCString trPackageListDescription()
{
return " ( ):";
}
virtual QCString trPackages()
{
return "";
}
virtual QCString trPackageDocumentation()
{
return " ";
}
virtual QCString trDefineValue()
{
return ":";
}
}; };
#endif #endif
...@@ -103,7 +103,7 @@ ...@@ -103,7 +103,7 @@
" \n" " \n"
"function hideFolder() \n" "function hideFolder() \n"
"{ \n" "{ \n"
" if (browserVersion == 1) { \n" " if (browserVersion == 1 || browserVersion == 3) { \n"
" if (this.navObj.style.display == \"none\") \n" " if (this.navObj.style.display == \"none\") \n"
" return \n" " return \n"
" this.navObj.style.display = \"none\" \n" " this.navObj.style.display = \"none\" \n"
...@@ -171,6 +171,8 @@ ...@@ -171,6 +171,8 @@
" doc.yPos=8 \n" " doc.yPos=8 \n"
" doc.write(\"<layer id='folder\" + this.id + \"' top=\" + doc.yPos + \" visibility=hidden>\") \n" " doc.write(\"<layer id='folder\" + this.id + \"' top=\" + doc.yPos + \" visibility=hidden>\") \n"
" } \n" " } \n"
" if (browserVersion == 3) \n"
" doc.write(\"<div id='folder\" + this.id + \"' style='display:none;'>\") \n"
" \n" " \n"
" doc.write(\"\\n<table \") \n" " doc.write(\"\\n<table \") \n"
" if (browserVersion == 1) \n" " if (browserVersion == 1) \n"
...@@ -199,6 +201,9 @@ ...@@ -199,6 +201,9 @@
" if (browserVersion == 2) { \n" " if (browserVersion == 2) { \n"
" doc.write(\"</layer>\") \n" " doc.write(\"</layer>\") \n"
" } \n" " } \n"
" if (browserVersion == 3) { \n"
" doc.write(\"</div>\") \n"
" } \n"
" \n" " \n"
" if (browserVersion == 1) { \n" " if (browserVersion == 1) { \n"
" this.navObj = doc.all[\"folder\"+this.id] \n" " this.navObj = doc.all[\"folder\"+this.id] \n"
...@@ -209,7 +214,11 @@ ...@@ -209,7 +214,11 @@
" this.iconImg = this.navObj.document.images[\"folderIcon\"+this.id] \n" " this.iconImg = this.navObj.document.images[\"folderIcon\"+this.id] \n"
" this.nodeImg = this.navObj.document.images[\"nodeIcon\"+this.id] \n" " this.nodeImg = this.navObj.document.images[\"nodeIcon\"+this.id] \n"
" doc.yPos=doc.yPos+this.navObj.clip.height \n" " doc.yPos=doc.yPos+this.navObj.clip.height \n"
" } \n" " } else if (browserVersion == 3) {\n"
" this.navObj = doc.getElementById(\"folder\"+this.id)\n"
" this.iconImg = doc.images.namedItem(\"folderIcon\"+this.id)\n"
" this.nodeImg = doc.images.namedItem(\"nodeIcon\"+this.id)\n"
" }\n"
"} \n" "} \n"
" \n" " \n"
"function outputFolderLink() \n" "function outputFolderLink() \n"
...@@ -276,7 +285,7 @@ ...@@ -276,7 +285,7 @@
" \n" " \n"
"function hideItem() \n" "function hideItem() \n"
"{ \n" "{ \n"
" if (browserVersion == 1) { \n" " if (browserVersion == 1 || browserVersion == 3) { \n"
" if (this.navObj.style.display == \"none\") \n" " if (this.navObj.style.display == \"none\") \n"
" return \n" " return \n"
" this.navObj.style.display = \"none\" \n" " this.navObj.style.display = \"none\" \n"
...@@ -310,6 +319,8 @@ ...@@ -310,6 +319,8 @@
"{ \n" "{ \n"
" if (browserVersion == 2) \n" " if (browserVersion == 2) \n"
" doc.write(\"<layer id='item\" + this.id + \"' top=\" + doc.yPos + \" visibility=hidden>\") \n" " doc.write(\"<layer id='item\" + this.id + \"' top=\" + doc.yPos + \" visibility=hidden>\") \n"
" if (browserVersion == 3) \n"
" doc.write(\"<div id='item\" + this.id + \"' style='display:block;'>\") \n"
" \n" " \n"
" doc.write(\"\\n<table \") \n" " doc.write(\"\\n<table \") \n"
" if (browserVersion == 1) \n" " if (browserVersion == 1) \n"
...@@ -340,6 +351,8 @@ ...@@ -340,6 +351,8 @@
" \n" " \n"
" if (browserVersion == 2) \n" " if (browserVersion == 2) \n"
" doc.write(\"</layer>\") \n" " doc.write(\"</layer>\") \n"
" if (browserVersion == 3) \n"
" doc.write(\"</div>\")\n"
" \n" " \n"
" if (browserVersion == 1) { \n" " if (browserVersion == 1) { \n"
" this.navObj = doc.all[\"item\"+this.id] \n" " this.navObj = doc.all[\"item\"+this.id] \n"
...@@ -348,7 +361,10 @@ ...@@ -348,7 +361,10 @@
" this.navObj = doc.layers[\"item\"+this.id] \n" " this.navObj = doc.layers[\"item\"+this.id] \n"
" this.iconImg = this.navObj.document.images[\"itemIcon\"+this.id] \n" " this.iconImg = this.navObj.document.images[\"itemIcon\"+this.id] \n"
" doc.yPos=doc.yPos+this.navObj.clip.height \n" " doc.yPos=doc.yPos+this.navObj.clip.height \n"
" } \n" " } else if (browserVersion == 3) {\n"
" this.navObj = doc.getElementById(\"item\"+this.id)\n"
" this.iconImg = doc.images.namedItem(\"itemIcon\"+this.id)\n"
" }\n"
"} \n" "} \n"
" \n" " \n"
" \n" " \n"
...@@ -357,7 +373,7 @@ ...@@ -357,7 +373,7 @@
" \n" " \n"
"function display() \n" "function display() \n"
"{ \n" "{ \n"
" if (browserVersion == 1) \n" " if (browserVersion == 1 || browserVersion == 3) \n"
" this.navObj.style.display = \"block\" \n" " this.navObj.style.display = \"block\" \n"
" else \n" " else \n"
" this.navObj.visibility = \"show\" \n" " this.navObj.visibility = \"show\" \n"
...@@ -419,15 +435,18 @@ ...@@ -419,15 +435,18 @@
" else \n" " else \n"
" if (doc.layers) \n" " if (doc.layers) \n"
" browserVersion = 2 //NS4 \n" " browserVersion = 2 //NS4 \n"
" else \n" " else if(navigator.userAgent.toLowerCase().indexOf('gecko') != -1)\n"
" browserVersion = 0 //other \n" " browserVersion = 3 //mozilla\n"
" else \n"
" browserVersion = 0 //other \n"
"\n" "\n"
" foldersTree.initialize(0, 1, \"\") \n" " foldersTree.initialize(0, 1, \"\") \n"
" foldersTree.display()\n" " foldersTree.display()\n"
" \n" " \n"
" if (browserVersion > 0) \n" " if (browserVersion > 0) \n"
" { \n" " { \n"
" doc.write(\"<layer top=\"+indexOfEntries[nEntries-1].navObj.top+\">&nbsp;</layer>\") \n" " if(browserVersion != 3)\n"
" doc.write(\"<layer top=\"+indexOfEntries[nEntries-1].navObj.top+\">&nbsp;</layer>\") \n"
" \n" " \n"
" // close the whole tree \n" " // close the whole tree \n"
" clickOnNode(0) \n" " clickOnNode(0) \n"
......
...@@ -103,7 +103,7 @@ function propagateChangesInState(folder) ...@@ -103,7 +103,7 @@ function propagateChangesInState(folder)
function hideFolder() function hideFolder()
{ {
if (browserVersion == 1) { if (browserVersion == 1 || browserVersion == 3) {
if (this.navObj.style.display == "none") if (this.navObj.style.display == "none")
return return
this.navObj.style.display = "none" this.navObj.style.display = "none"
...@@ -171,6 +171,8 @@ function drawFolder(leftSide) ...@@ -171,6 +171,8 @@ function drawFolder(leftSide)
doc.yPos=8 doc.yPos=8
doc.write("<layer id='folder" + this.id + "' top=" + doc.yPos + " visibility=hidden>") doc.write("<layer id='folder" + this.id + "' top=" + doc.yPos + " visibility=hidden>")
} }
if (browserVersion == 3)
doc.write("<div id='folder" + this.id + "' style='display:none;'>")
doc.write("\n<table ") doc.write("\n<table ")
if (browserVersion == 1) if (browserVersion == 1)
...@@ -199,6 +201,9 @@ function drawFolder(leftSide) ...@@ -199,6 +201,9 @@ function drawFolder(leftSide)
if (browserVersion == 2) { if (browserVersion == 2) {
doc.write("</layer>") doc.write("</layer>")
} }
if (browserVersion == 3) {
doc.write("</div>")
}
if (browserVersion == 1) { if (browserVersion == 1) {
this.navObj = doc.all["folder"+this.id] this.navObj = doc.all["folder"+this.id]
...@@ -209,7 +214,11 @@ function drawFolder(leftSide) ...@@ -209,7 +214,11 @@ function drawFolder(leftSide)
this.iconImg = this.navObj.document.images["folderIcon"+this.id] this.iconImg = this.navObj.document.images["folderIcon"+this.id]
this.nodeImg = this.navObj.document.images["nodeIcon"+this.id] this.nodeImg = this.navObj.document.images["nodeIcon"+this.id]
doc.yPos=doc.yPos+this.navObj.clip.height doc.yPos=doc.yPos+this.navObj.clip.height
} } else if (browserVersion == 3) {
this.navObj = doc.getElementById("folder"+this.id)
this.iconImg = doc.images.namedItem("folderIcon"+this.id)
this.nodeImg = doc.images.namedItem("nodeIcon"+this.id)
}
} }
function outputFolderLink() function outputFolderLink()
...@@ -276,7 +285,7 @@ function Item(itemDescription, tagName, itemLink) // Constructor ...@@ -276,7 +285,7 @@ function Item(itemDescription, tagName, itemLink) // Constructor
function hideItem() function hideItem()
{ {
if (browserVersion == 1) { if (browserVersion == 1 || browserVersion == 3) {
if (this.navObj.style.display == "none") if (this.navObj.style.display == "none")
return return
this.navObj.style.display = "none" this.navObj.style.display = "none"
...@@ -310,6 +319,8 @@ function drawItem(leftSide) ...@@ -310,6 +319,8 @@ function drawItem(leftSide)
{ {
if (browserVersion == 2) if (browserVersion == 2)
doc.write("<layer id='item" + this.id + "' top=" + doc.yPos + " visibility=hidden>") doc.write("<layer id='item" + this.id + "' top=" + doc.yPos + " visibility=hidden>")
if (browserVersion == 3)
doc.write("<div id='item" + this.id + "' style='display:block;'>")
doc.write("\n<table ") doc.write("\n<table ")
if (browserVersion == 1) if (browserVersion == 1)
...@@ -340,6 +351,8 @@ function drawItem(leftSide) ...@@ -340,6 +351,8 @@ function drawItem(leftSide)
if (browserVersion == 2) if (browserVersion == 2)
doc.write("</layer>") doc.write("</layer>")
if (browserVersion == 3)
doc.write("</div>")
if (browserVersion == 1) { if (browserVersion == 1) {
this.navObj = doc.all["item"+this.id] this.navObj = doc.all["item"+this.id]
...@@ -348,7 +361,10 @@ function drawItem(leftSide) ...@@ -348,7 +361,10 @@ function drawItem(leftSide)
this.navObj = doc.layers["item"+this.id] this.navObj = doc.layers["item"+this.id]
this.iconImg = this.navObj.document.images["itemIcon"+this.id] this.iconImg = this.navObj.document.images["itemIcon"+this.id]
doc.yPos=doc.yPos+this.navObj.clip.height doc.yPos=doc.yPos+this.navObj.clip.height
} } else if (browserVersion == 3) {
this.navObj = doc.getElementById("item"+this.id)
this.iconImg = doc.images.namedItem("itemIcon"+this.id)
}
} }
...@@ -357,7 +373,7 @@ function drawItem(leftSide) ...@@ -357,7 +373,7 @@ function drawItem(leftSide)
function display() function display()
{ {
if (browserVersion == 1) if (browserVersion == 1 || browserVersion == 3)
this.navObj.style.display = "block" this.navObj.style.display = "block"
else else
this.navObj.visibility = "show" this.navObj.visibility = "show"
...@@ -419,15 +435,18 @@ function initializeDocument() ...@@ -419,15 +435,18 @@ function initializeDocument()
else else
if (doc.layers) if (doc.layers)
browserVersion = 2 //NS4 browserVersion = 2 //NS4
else else if(navigator.userAgent.toLowerCase().indexOf('gecko') != -1)
browserVersion = 0 //other browserVersion = 3 //mozilla
else
browserVersion = 0 //other
foldersTree.initialize(0, 1, "") foldersTree.initialize(0, 1, "")
foldersTree.display() foldersTree.display()
if (browserVersion > 0) if (browserVersion > 0)
{ {
doc.write("<layer top="+indexOfEntries[nEntries-1].navObj.top+">&nbsp;</layer>") if(browserVersion != 3)
doc.write("<layer top="+indexOfEntries[nEntries-1].navObj.top+">&nbsp;</layer>")
// close the whole tree // close the whole tree
clickOnNode(0) clickOnNode(0)
......
...@@ -324,15 +324,17 @@ QCString stripFromPath(const QCString &path) ...@@ -324,15 +324,17 @@ QCString stripFromPath(const QCString &path)
int guessSection(const char *name) int guessSection(const char *name)
{ {
QCString n=((QCString)name).lower(); QCString n=((QCString)name).lower();
if (n.right(2)==".c" || // source if (n.right(2)==".c" || // source
n.right(3)==".cc" || n.right(3)==".cc" ||
n.right(4)==".cxx" || n.right(4)==".cxx" ||
n.right(4)==".cpp" || n.right(4)==".cpp" ||
n.right(4)==".c++" || n.right(4)==".c++" ||
n.right(3)==".ii" || // inline n.right(5)==".java" ||
n.right(4)==".ixx" || n.right(3)==".ii" || // inline
n.right(4)==".ipp" || n.right(4)==".ixx" ||
n.right(4)==".i++" n.right(4)==".ipp" ||
n.right(4)==".i++" ||
n.right(4)==".inl"
) return Entry::SOURCE_SEC; ) return Entry::SOURCE_SEC;
if (n.right(2)==".h" || // header if (n.right(2)==".h" || // header
n.right(3)==".hh" || n.right(3)==".hh" ||
......
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