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 diff is collapsed.
/* 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)
......
This diff is collapsed.
...@@ -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 << "\">";
......
This diff is collapsed.
...@@ -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
This diff is collapsed.
...@@ -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
This diff is collapsed.
...@@ -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
This diff is collapsed.
...@@ -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