Commit 69fbf29b authored by dimitri's avatar dimitri

Release-1.2.5-20010225

parent 863353b8
......@@ -100,7 +100,7 @@ HTML_ALIGN_MEMBERS = YES
GENERATE_HTMLHELP = NO
DISABLE_INDEX = NO
ENUM_VALUES_PER_LINE = 4
GENERATE_TREEVIEW = YES
GENERATE_TREEVIEW = NO
TREEVIEW_WIDTH = 250
#---------------------------------------------------------------------------
# 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.
--------
Dimitri van Heesch (11 February 2001)
Dimitri van Heesch (25 February 2001)
DOCDIR = $(INSTALL)/share/doc/packages/doxygen
#all: src/version.cpp configgen doxywizard
# cd qtools ; $(MAKE)
......@@ -45,25 +46,26 @@ distclean: clean
-rm -f addon/xmlgen/Makefile addon/xmlgen/Makefile.xmlgen
-rm -f addon/xmlgen/*.o
install: doxywizard_install
$(INSTTOOL) -d $(INSTALL)/bin
$(INSTTOOL) -d $(INSTALL)/doc/doxygen
$(INSTTOOL) -d $(DOCDIR)
$(INSTTOOL) -m 755 bin/doxygen $(INSTALL)/bin
$(INSTTOOL) -m 755 bin/doxytag $(INSTALL)/bin
$(INSTTOOL) -m 755 bin/doxysearch $(INSTALL)/bin
cp -r doc $(INSTALL)/doc/doxygen
cp -r examples $(INSTALL)/doc/doxygen
echo "DOXYGEN = $(INSTALL)" > $(INSTALL)/doc/doxygen/doc/Makefile
echo "DOXYDOCS = .." >> $(INSTALL)/doc/doxygen/doc/Makefile
echo "VERSION = $(VERSION)" >> $(INSTALL)/doc/doxygen/doc/Makefile
cat doc/Makefile.in >> $(INSTALL)/doc/doxygen/doc/Makefile
cd $(INSTALL)/doc/doxygen/examples ; $(MAKE)
cd $(INSTALL)/doc/doxygen/doc ; $(MAKE)
rm -rf $(INSTALL)/doc/doxygen/doc
cd $(INSTALL)/doc/doxygen/latex ; $(MAKE)
cp $(INSTALL)/doc/doxygen/latex/doxygen_manual.pdf $(INSTALL)/doc/doxygen
cp $(INSTALL)/doc/doxygen/latex/doxygen_manual.ps $(INSTALL)/doc/doxygen
rm -rf $(INSTALL)/doc/doxygen/latex
cp -r doc $(DOCDIR)
cp -r examples $(DOCDIR)
echo "DOXYGEN = $(INSTALL)" > $(DOCDIR)/doc/Makefile
echo "DOXYDOCS = .." >> $(DOCDIR)/doc/Makefile
echo "VERSION = $(VERSION)" >> $(DOCDIR)/doc/Makefile
cat doc/Makefile.in >> $(DOCDIR)/doc/Makefile
cd $(DOCDIR)/examples ; $(MAKE)
cd $(DOCDIR)/doc ; $(MAKE)
rm -rf $(DOCDIR)/doc
cd $(DOCDIR)/latex ; $(MAKE)
cp $(DOCDIR)/latex/doxygen_manual.pdf $(INSTALL)/doc/doxygen
cp $(DOCDIR)/latex/doxygen_manual.ps $(INSTALL)/doc/doxygen
rm -rf $(DOCDIR)/latex
docs: FORCE
cd examples ; $(MAKE)
......
DOXYGEN Version 1.2.5-20010211
DOXYGEN Version 1.2.5-20010225
Please read INSTALL for compilation instructions.
......@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at
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();
extern void configStrToVal();
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
{
static void init();
......
......@@ -93,7 +93,7 @@ class ConfigOption
virtual void printHeader(QTextStream &t)
{
t << " static " << type << " " << varName
<< "; // " << shortDesc << endl;
<< "; /*!< " << shortDesc << " */" << endl;
}
virtual void printStatic(QTextStream &) {}
virtual void printConfig(QTextStream &t)
......@@ -1035,6 +1035,14 @@ void init()
"disable (NO) the test list. This list is created by putting \\test \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",
"ALIASES",
"",
......@@ -1068,6 +1076,14 @@ void init()
"For instance some of the names that are used will be different. The list \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");
//-----------------------------------------------------------------------------------------------
......@@ -1315,6 +1331,23 @@ void init()
"it should be included in the master .chm file (NO).\n"
);
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",
"DISABLE_INDEX",
"FALSE",
......
......@@ -280,8 +280,12 @@ Doxygen. Unrecognized commands are treated as normal text.
\addindex \fn
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
comment block is \e not located before the function declaration
or definition. A full function declaration should be specified after the
comment block is \e not placed in front of the function declaration
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.
\par Example:
......
......@@ -71,6 +71,7 @@ followed by the descriptions of the tags grouped by category.
<li> \refitem cfg_alphabetical_index ALPHABETICAL_INDEX
<li> \refitem cfg_always_detailed_sec ALWAYS_DETAILED_SEC
<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_case_sense_names CASE_SENSE_NAMES
<li> \refitem cfg_cgi_name CGI_NAME
......@@ -93,6 +94,7 @@ followed by the descriptions of the tags grouped by category.
<li> \refitem cfg_example_patterns EXAMPLE_PATTERNS
<li> \refitem cfg_exclude EXCLUDE
<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_ext_doc_paths EXT_DOC_PATHS
<li> \refitem cfg_extra_packages EXTRA_PACKAGES
......@@ -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_static EXTRACT_STATIC
<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_generate_buglist GENERATE_BUGLIST
<li> \refitem cfg_generate_chi GENERATE_CHI
<li> \refitem cfg_generate_html GENERATE_HTML
<li> \refitem cfg_generate_htmlhelp GENERATE_HTMLHELP
<li> \refitem cfg_generate_latex GENERATE_LATEX
......@@ -159,12 +164,14 @@ followed by the descriptions of the tags grouped by category.
<li> \refitem cfg_search_includes SEARCH_INCLUDES
<li> \refitem cfg_searchengine SEARCHENGINE
<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_source_browser SOURCE_BROWSER
<li> \refitem cfg_strip_code_comments STRIP_CODE_COMMENTS
<li> \refitem cfg_strip_from_path STRIP_FROM_PATH
<li> \refitem cfg_tab_size TAB_SIZE
<li> \refitem cfg_tagfiles TAGFILES
<li> \refitem cfg_toc_expand TOC_EXPAND
<li> \refitem cfg_treeview_width TREEVIEW_WIDTH
<li> \refitem cfg_verbatim_headers VERBATIM_HEADERS
<li> \refitem cfg_warn_format WARN_FORMAT
......@@ -430,6 +437,13 @@ followed by the descriptions of the tags grouped by category.
disable (NO) the test list. This list is created by
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
<dt>\c ALIASES <dd>
\addindex ALIASES
......@@ -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.
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>
\subsection messages_input Options related to warning and progress messages
......@@ -744,6 +765,27 @@ followed by the descriptions of the tags grouped by category.
(which basically renders \c doxysearch obsolete on Windows).
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
<dt>\c DISABLE_INDEX <dd>
\addindex DISABLE_INDEX
......
......@@ -35,6 +35,33 @@ You should use the \\mainpage command inside a comment block like this:
*/
\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>
In order for global functions, variables, enums, typedefs, and defines
......@@ -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
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>
You can document your class like
......@@ -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,
QTime and QIODevice classes.
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!
<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>
Simply put an exclude pattern like this in the configuration file:
......
......@@ -172,6 +172,9 @@ Thanks go to:
Boris Bralo, Nickolay Semyonov, Richard Kim, Földvári György,
Grzegorz Kowal, and Wang Weihan
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.
</ul>
*/
......
......@@ -148,11 +148,11 @@ Here is a list of the languages and their current maintainers:
Russian
</TD>
<TD>
Nickolay Semyonov
Andrey V. Stolyarov
</TD>
<TD>
<a href="mailto:snob@NOSPAM.int.spb.ru">
snob@NOSPAM.int.spb.ru</a>
<a href="mailto:crocodil@NOSPAM.croco.net">
crocodil@NOSPAM.croco.net</a>
</TD>
</TR>
<TR BGCOLOR="#ffffff">
......@@ -246,7 +246,7 @@ Here is a list of the languages and their current maintainers:
\hline
Finnish & Olli Korhonen & {\tt Olli.Korhonen@ccc.fi} \\
\hline
Russian & Nickolay Semyonov & {\tt snob@int.spb.ru} \\
Russian & Andrey V. Stolyarov & {\tt crocodil@croco.net} \\
\hline
Korean & Richard Kim & {\tt ryk@dspwiz.com} \\
\hline
......
Name: doxygen
Version: 1.2.5-20010211
Version: 1.2.5-20010225
Summary: documentation system for C, C++ and IDL
Release: 1
Source0: doxygen-%{version}.src.tar.gz
......
......@@ -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;
if ((mni=(*allMemberNameInfoDict)[md->name()]))
{
......@@ -1112,48 +1113,52 @@ void ClassDef::writeDocumentation(OutputList &ol)
// write the list of used files (not for man pages)
ol.pushGeneratorState();
ol.disable(OutputGenerator::Man);
ol.writeRuler();
parseText(ol,theTranslator->trGeneratedFromFiles(compType,files.count()==1));
bool first=TRUE;
const char *file = files.first();
while (file)
if (Config::showUsedFilesFlag)
{
bool ambig;
FileDef *fd=findFileDef(Doxygen::inputNameDict,file,ambig);
if (fd)
ol.disable(OutputGenerator::Man);
ol.writeRuler();
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;
ol.startItemList();
}
if (first)
{
first=FALSE;
ol.startItemList();
}
ol.writeListItem();
QCString path=fd->getPath().copy();
if (Config::fullPathNameFlag)
{
ol.docify(stripFromPath(path));
}
ol.writeListItem();
QCString path=fd->getPath().copy();
if (Config::fullPathNameFlag)
{
ol.docify(stripFromPath(path));
}
if (fd->generateSourceFile())
{
ol.writeObjectLink(0,fd->sourceName(),0,fd->name());
}
else if (fd->isLinkable())
{
ol.writeObjectLink(fd->getReference(),fd->getOutputFileBase(),0,
fd->name());
}
else
{
ol.docify(fd->name());
if (fd->generateSourceFile())
{
ol.writeObjectLink(0,fd->sourceName(),0,fd->name());
}
else if (fd->isLinkable())
{
ol.writeObjectLink(fd->getReference(),fd->getOutputFileBase(),0,
fd->name());
}
else
{
ol.docify(fd->name());
}
}
file=files.next();
}
file=files.next();
if (!first) ol.endItemList();
}
if (!first) ol.endItemList();
// write Author section (Man only)
ol.enable(OutputGenerator::Man);
......@@ -1204,14 +1209,18 @@ void ClassDef::writeMemberList(OutputList &ol)
ClassDef *cd=md->getClassDef();
// compute the protection level for this member
Protection protect=md->protection();
if (mi->prot==Protected) // inherited protection
Protection prot=md->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",
// md->name().data(),cd->name().data(),mi->prot,protect);
//printf("%s: Member %s of class %s md->protection()=%d mi->prot=%d prot=%d inherited=%d\n",
// name().data(),md->name().data(),cd->name().data(),md->protection(),mi->prot,prot,mi->inherited);
Specifier virt=md->virtualness();
MemberDef *rmd=md->reimplements();
......@@ -1224,7 +1233,9 @@ void ClassDef::writeMemberList(OutputList &ol)
if (cd && !md->name().isEmpty() && md->name()[0]!='@' &&
(
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)
ol.writeString(")");
memberWritten=TRUE;
}
if ((protect!=Public || virt!=Normal ||
if ((prot!=Public || virt!=Normal ||
md->isFriend() || md->isRelated() || md->isExplicit() ||
md->isMutable() || (md->isInline() && Config::inlineInfoFlag) ||
md->isSignal() || md->isSlot() ||
......@@ -1299,8 +1310,8 @@ void ClassDef::writeMemberList(OutputList &ol)
sl.append("inline");
if (md->isExplicit()) sl.append("explicit");
if (md->isMutable()) sl.append("mutable");
if (protect==Protected) sl.append("protected");
else if (protect==Private) sl.append("private");
if (prot==Protected) sl.append("protected");
else if (prot==Private) sl.append("private");
if (virt==Virtual) sl.append("virtual");
else if (virt==Pure) sl.append("pure virtual");
if (md->isStatic()) sl.append("static");
......@@ -1500,12 +1511,10 @@ void ClassDef::mergeMembers()
for ( ; (bcd=bcli.current()) ; ++bcli )
{
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();
// the all member list of the branch until bClass is now complete
// so we can merge it with cd
MemberNameInfoList *srcMnl = bClass->memberNameInfoList();
MemberNameInfoDict *dstMnd = memberNameInfoDict();
MemberNameInfoList *dstMnl = memberNameInfoList();
......@@ -1602,7 +1611,7 @@ void ClassDef::mergeMembers()
{
Specifier virt=srcMi->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;
if (ambigue)
{
......@@ -1645,7 +1654,7 @@ void ClassDef::mergeMembers()
MemberInfo *mi;
for (;(mi=mnii.current());++mnii)
{
Protection prot = mi->memberDef->protection();
Protection prot = mi->prot;
if (bcd->prot==Protected)
{
if (prot==Public) prot=Protected;
......@@ -1655,15 +1664,15 @@ void ClassDef::mergeMembers()
prot=Private;
}
//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);
if (prot!=Private)
if (mi->prot!=Private)
{
Specifier virt=mi->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->ambigClass=mi->ambigClass;
newMi->ambiguityResolutionScope=mi->ambiguityResolutionScope.copy();
......
......@@ -23,9 +23,11 @@
class OutputDocInterface;
class FileDef;
class MemberDef;
extern void parseCode(OutputDocInterface &,const char *,const QCString &,
bool ,const char *,FileDef *fd=0,
int startLine=-1,int endLine=-1,bool inlineFragment=FALSE);
extern void initParseCodeContext();
extern void setParameterList(MemberDef *md);
#endif
......@@ -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)
{
int i=0;
......@@ -1032,9 +1056,9 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
while (e>=0 && (text.at(e)==')' || isspace(yytext[e]))) e--;
QCString varname = text.mid(s+1,e-s);
QCString tmp=varname.copy();
g_code->docify(text.left(s+1));
g_code->codify(text.left(s+1));
generateClassLink(*g_code,tmp.data());
g_code->docify(text.right(yyleng-e-1));
g_code->codify(text.right(yyleng-e-1));
addType();
g_name+=varname;
}
......@@ -1046,7 +1070,7 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
g_name+=yytext;
BEGIN( FuncCall );
}
<FuncCall,Body,MemberCall>\" {
<FuncCall,Body,MemberCall,MemberCall2>\" {
startFontClass("stringliteral");
g_code->codify(yytext);
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
*
* DO NOT EDIT!
......@@ -33,122 +33,131 @@ extern void checkConfig();
extern void configStrToVal();
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
{
static void init();
static QCString projectName; // the name of the project
static QCString projectNumber; // the number of the project
static QCString outputDir; // the global output directory
static QCString outputLanguage; // the output language
static bool extractAllFlag; // generate docs for all classes flag
static bool extractPrivateFlag; // generate docs for private members flag
static bool extractStaticFlag; // generate docs for static members flag
static bool hideMemberFlag; // hide undocumented members.
static bool hideClassFlag; // hide undocumented members.
static bool briefMemDescFlag; // enable `inline' brief member descr.
static bool repeatBriefFlag; // repeat brief descriptions.
static bool alwaysDetailsFlag; // show details description even if there is only a brief description?
static bool fullPathNameFlag; // using full path name in output
static QStrList stripFromPath; // list of candidates to strip from the file path
static bool internalDocsFlag; // determines what happens to internal docs.
static bool classDiagramFlag; // enable the generation of class diagrams.
static bool sourceBrowseFlag; // include source code in documentation.
static bool inlineSourceFlag; // inline the definition bodies in the docs?
static bool stripCommentsFlag; // strip special comments from code fragments?
static bool caseSensitiveNames; // determines if output can be mixed case.
static bool hideScopeNames; // hide the name of the scope.
static bool verbatimHeaderFlag; // enable/disable generation of verb headers.
static bool showIncFileFlag; // show include file in file documentation?
static bool autoBriefFlag; // should javadoc comments behaves as Qt comments.
static bool inheritDocsFlag; // inheritance of documentation enabled?
static bool inlineInfoFlag; // show info about inline members?
static bool sortMembersFlag; // sort members alphabetically?
static bool distributeDocFlag; // distribute docs over member group?
static int tabSize; // number of spaces in a tab
static QStrList sectionFilterList; // list of section filters that are enabled
static bool generateTodoList; // do we want a todo list?
static bool generateTestList; // do we want a test list?
static QStrList aliasList; // list of aliases
static int maxInitLines; // when do we hide values of variable and defines?
static bool optimizeForCFlag; // do we parse C code?
static bool quietFlag; // generate progress messages flag
static bool warningFlag; // generate warnings flag
static bool warningUndocFlag; // generate undocumented warnings
static QCString warnFormat; // format of the warning messages
static QCString warnLogFile; // log file to write warning to
static QStrList inputSources; // list of input files
static QStrList filePatternList; // list of file patterns
static bool recursiveFlag; // scan directories recursively
static QStrList excludeSources; // list of files to exclude from the input
static QStrList excludePatternList; // list of patterns to exclude from input
static QStrList examplePath; // list of example paths
static QStrList examplePatternList; // list of example patterns
static QStrList imagePath; // list of image paths
static QCString inputFilter; // a filter command that is applied to input files
static bool filterForSourceFlag; // do we filter source files?
static bool alphaIndexFlag; // should an alphabetical index be generated?
static int colsInAlphaIndex; // number of columns in the alphabetical index
static QStrList ignorePrefixList; // list of prefixes to ignore for the alphabetical index
static bool generateHtml; // generate HTML output
static QCString htmlOutputDir; // the directory to put the HTML files
static QCString headerFile; // the name of the personal HTML header
static QCString footerFile; // the name of the personal HTML footer
static QCString htmlStyleSheet; // user defined cascading style sheet
static bool htmlAlignMemberFlag; // align members in HTML using tables.
static bool htmlHelpFlag; // should html help files be generated?
static bool htmlHelpChiFlag; // should chi file be generated?
static bool noIndexFlag; // generate condensed index flag
static int enumValuesPerLine; // number of enum values that are put on one line
static bool ftvHelpFlag; // should a folder tree view be generated?
static int treeViewWidth; // What is the width of the treeview panel?
static bool generateLatex; // generate Latex output
static QCString latexOutputDir; // the directory to put the Latex files
static bool compactLatexFlag; // generate compact LaTeX documentation.
static QCString paperType; // the page type to generate docs for
static QStrList extraPackageList; // list of extra LaTeX packages.
static QCString latexHeaderFile; // the name of the personal LaTeX header
static bool pdfHyperFlag; // generate latex prepared creating hyperlinked pdfs.
static bool usePDFLatexFlag; // use pdflatex instead of plain latex
static bool latexBatchModeFlag; // continue after latex errors?
static bool generateRTF; // generate RTF flag
static QCString rtfOutputDir; // the directory to put the RTF files
static bool compactRTFFlag; // generate more compact RTF
static bool rtfHyperFlag; // generate hyper links in RTF
static QCString rtfStylesheetFile; // file to load stylesheet definitions from
static bool generateMan; // generate Man pages
static QCString manOutputDir; // the directory to put the man pages
static QCString manExtension; // extension the man page files
static bool preprocessingFlag; // enable preprocessing
static bool macroExpansionFlag; // expand macros in the source.
static bool onlyPredefinedFlag; // expand only predefined macros
static bool searchIncludeFlag; // search for included files
static QStrList includePath; // list of include paths
static QStrList includeFilePatternList; // list of include file patterns
static QStrList predefined; // list of predefined macro names.
static QStrList expandAsDefinedList; // list of defines to expand
static QStrList tagFileList; // list of tag files
static QCString genTagFile; // the tag file to generate
static bool allExtFlag; // include all external classes flag
static QCString perlPath; // the absolute path to perl
static bool haveDotFlag; // indicates wether or not dot is present
static bool classGraphFlag; // class graph
static bool collGraphFlag; // collaboration graph
static bool includeGraphFlag; // include graph
static bool includedByGraphFlag; // depends on include graph
static bool gfxHierarchyFlag; // flag to enable graphical hierarchy
static QCString dotPath; // path to the dot tool
static int maxDotGraphWidth; // max dot graph width
static int maxDotGraphHeight; // max dot graph height
static bool generateLegend; // generate legend page
static bool dotCleanUp; // remove intermedia dot files?
static bool searchEngineFlag; // generate search engine flag
static QCString cgiName; // the name of the CGI binary
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.
static QCString projectName; /*!< the name of the project */
static QCString projectNumber; /*!< the number of the project */
static QCString outputDir; /*!< the global output directory */
static QCString outputLanguage; /*!< the output language */
static bool extractAllFlag; /*!< generate docs for all classes flag */
static bool extractPrivateFlag; /*!< generate docs for private members flag */
static bool extractStaticFlag; /*!< generate docs for static members flag */
static bool hideMemberFlag; /*!< hide undocumented members. */
static bool hideClassFlag; /*!< hide undocumented members. */
static bool briefMemDescFlag; /*!< enable `inline' brief member descr. */
static bool repeatBriefFlag; /*!< repeat brief descriptions. */
static bool alwaysDetailsFlag; /*!< show details description even if there is only a brief description? */
static bool fullPathNameFlag; /*!< using full path name in output */
static QStrList stripFromPath; /*!< list of candidates to strip from the file path */
static bool internalDocsFlag; /*!< determines what happens to internal docs. */
static bool classDiagramFlag; /*!< enable the generation of class diagrams. */
static bool sourceBrowseFlag; /*!< include source code in documentation. */
static bool inlineSourceFlag; /*!< inline the definition bodies in the docs? */
static bool stripCommentsFlag; /*!< strip special comments from code fragments? */
static bool caseSensitiveNames; /*!< determines if output can be mixed case. */
static bool hideScopeNames; /*!< hide the name of the scope. */
static bool verbatimHeaderFlag; /*!< enable/disable generation of verb headers. */
static bool showIncFileFlag; /*!< show include file in file documentation? */
static bool autoBriefFlag; /*!< should javadoc comments behaves as Qt comments. */
static bool inheritDocsFlag; /*!< inheritance of documentation enabled? */
static bool inlineInfoFlag; /*!< show info about inline members? */
static bool sortMembersFlag; /*!< sort members alphabetically? */
static bool distributeDocFlag; /*!< distribute docs over member group? */
static int tabSize; /*!< number of spaces in a tab */
static QStrList sectionFilterList; /*!< list of section filters that are enabled */
static bool generateTodoList; /*!< do we want a todo list? */
static bool generateTestList; /*!< do we want a test list? */
static bool generateBugList; /*!< do we want a bug list? */
static QStrList aliasList; /*!< list of aliases */
static int maxInitLines; /*!< when do we hide values of variable and defines? */
static bool optimizeForCFlag; /*!< do we parse C code? */
static bool showUsedFilesFlag; /*!< do we show the list of used files for classes and structs? */
static bool quietFlag; /*!< generate progress messages flag */
static bool warningFlag; /*!< generate warnings flag */
static bool warningUndocFlag; /*!< generate undocumented warnings */
static QCString warnFormat; /*!< format of the warning messages */
static QCString warnLogFile; /*!< log file to write warning to */
static QStrList inputSources; /*!< list of input files */
static QStrList filePatternList; /*!< list of file patterns */
static bool recursiveFlag; /*!< scan directories recursively */
static QStrList excludeSources; /*!< list of files to exclude from the input */
static QStrList excludePatternList; /*!< list of patterns to exclude from input */
static QStrList examplePath; /*!< list of example paths */
static QStrList examplePatternList; /*!< list of example patterns */
static QStrList imagePath; /*!< list of image paths */
static QCString inputFilter; /*!< a filter command that is applied to input files */
static bool filterForSourceFlag; /*!< do we filter source files? */
static bool alphaIndexFlag; /*!< should an alphabetical index be generated? */
static int colsInAlphaIndex; /*!< number of columns in the alphabetical index */
static QStrList ignorePrefixList; /*!< list of prefixes to ignore for the alphabetical index */
static bool generateHtml; /*!< generate HTML output */
static QCString htmlOutputDir; /*!< the directory to put the HTML files */
static QCString headerFile; /*!< the name of the personal HTML header */
static QCString footerFile; /*!< the name of the personal HTML footer */
static QCString htmlStyleSheet; /*!< user defined cascading style sheet */
static bool htmlAlignMemberFlag; /*!< align members in HTML using tables. */
static bool htmlHelpFlag; /*!< should html help files be generated? */
static bool htmlHelpChiFlag; /*!< should chi file be generated? */
static bool htmlHelpTocFlag; /*!< should a binary table of contents be generated? */
static bool htmlHelpTocExpandFlag; /*!< should module elements be displayed in the table of contents? */
static bool noIndexFlag; /*!< generate condensed index flag */
static int enumValuesPerLine; /*!< number of enum values that are put on one line */
static bool ftvHelpFlag; /*!< should a folder tree view be generated? */
static int treeViewWidth; /*!< What is the width of the treeview panel? */
static bool generateLatex; /*!< generate Latex output */
static QCString latexOutputDir; /*!< the directory to put the Latex files */
static bool compactLatexFlag; /*!< generate compact LaTeX documentation. */
static QCString paperType; /*!< the page type to generate docs for */
static QStrList extraPackageList; /*!< list of extra LaTeX packages. */
static QCString latexHeaderFile; /*!< the name of the personal LaTeX header */
static bool pdfHyperFlag; /*!< generate latex prepared creating hyperlinked pdfs. */
static bool usePDFLatexFlag; /*!< use pdflatex instead of plain latex */
static bool latexBatchModeFlag; /*!< continue after latex errors? */
static bool generateRTF; /*!< generate RTF flag */
static QCString rtfOutputDir; /*!< the directory to put the RTF files */
static bool compactRTFFlag; /*!< generate more compact RTF */
static bool rtfHyperFlag; /*!< generate hyper links in RTF */
static QCString rtfStylesheetFile; /*!< file to load stylesheet definitions from */
static bool generateMan; /*!< generate Man pages */
static QCString manOutputDir; /*!< the directory to put the man pages */
static QCString manExtension; /*!< extension the man page files */
static bool preprocessingFlag; /*!< enable preprocessing */
static bool macroExpansionFlag; /*!< expand macros in the source. */
static bool onlyPredefinedFlag; /*!< expand only predefined macros */
static bool searchIncludeFlag; /*!< search for included files */
static QStrList includePath; /*!< list of include paths */
static QStrList includeFilePatternList; /*!< list of include file patterns */
static QStrList predefined; /*!< list of predefined macro names. */
static QStrList expandAsDefinedList; /*!< list of defines to expand */
static QStrList tagFileList; /*!< list of tag files */
static QCString genTagFile; /*!< the tag file to generate */
static bool allExtFlag; /*!< include all external classes flag */
static QCString perlPath; /*!< the absolute path to perl */
static bool haveDotFlag; /*!< indicates wether or not dot is present */
static bool classGraphFlag; /*!< class graph */
static bool collGraphFlag; /*!< collaboration graph */
static bool includeGraphFlag; /*!< include graph */
static bool includedByGraphFlag; /*!< depends on include graph */
static bool gfxHierarchyFlag; /*!< flag to enable graphical hierarchy */
static QCString dotPath; /*!< path to the dot tool */
static int maxDotGraphWidth; /*!< max dot graph width */
static int maxDotGraphHeight; /*!< max dot graph height */
static bool generateLegend; /*!< generate legend page */
static bool dotCleanUp; /*!< remove intermedia dot files? */
static bool searchEngineFlag; /*!< generate search engine flag */
static QCString cgiName; /*!< the name of the CGI binary */
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
/* 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
*
* DO NOT EDIT!
......@@ -106,9 +106,11 @@ int Config::tabSize = 8;
QStrList Config::sectionFilterList;
bool Config::generateTodoList = TRUE;
bool Config::generateTestList = TRUE;
bool Config::generateBugList = TRUE;
QStrList Config::aliasList;
int Config::maxInitLines = 30;
bool Config::optimizeForCFlag = FALSE;
bool Config::showUsedFilesFlag = TRUE;
bool Config::quietFlag = FALSE;
bool Config::warningFlag = TRUE;
bool Config::warningUndocFlag = TRUE;
......@@ -135,6 +137,8 @@ QCString Config::htmlStyleSheet;
bool Config::htmlAlignMemberFlag = TRUE;
bool Config::htmlHelpFlag = FALSE;
bool Config::htmlHelpChiFlag = FALSE;
bool Config::htmlHelpTocFlag = FALSE;
bool Config::htmlHelpTocExpandFlag = FALSE;
bool Config::noIndexFlag = FALSE;
int Config::enumValuesPerLine = 4;
bool Config::ftvHelpFlag = FALSE;
......@@ -381,10 +385,12 @@ static void readIncludeFile(const char *incName)
<Start>"ENABLED_SECTIONS"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::sectionFilterList; elemStr=""; }
<Start>"GENERATE_TODOLIST"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateTodoList; }
<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; elemStr=""; }
<Start>"MAX_INITIALIZER_LINES"[ \t]*"=" { BEGIN(GetString); s=&maxInitLinesString; s->resize(0); }
<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>"WARNINGS"[ \t]*"=" { BEGIN(GetBool); b=&Config::warningFlag; }
<Start>"WARN_IF_UNDOCUMENTED"[ \t]*"=" { BEGIN(GetBool); b=&Config::warningUndocFlag; }
......@@ -419,6 +425,8 @@ static void readIncludeFile(const char *incName)
<Start>"HTML_ALIGN_MEMBERS"[ \t]*"=" { BEGIN(GetBool); b=&Config::htmlAlignMemberFlag; }
<Start>"GENERATE_HTMLHELP"[ \t]*"=" { BEGIN(GetBool); b=&Config::htmlHelpFlag; }
<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>"ENUM_VALUES_PER_LINE"[ \t]*"=" { BEGIN(GetString); s=&enumValuesPerLineString; s->resize(0); }
<Start>"GENERATE_TREEVIEW"[ \t]*"=" { BEGIN(GetBool); b=&Config::ftvHelpFlag; }
......@@ -627,6 +635,7 @@ void dumpConfig()
}
printf("generateTodoList=`%d'\n",Config::generateTodoList);
printf("generateTestList=`%d'\n",Config::generateTestList);
printf("generateBugList=`%d'\n",Config::generateBugList);
{
char *is=Config::aliasList.first();
while (is)
......@@ -637,6 +646,7 @@ void dumpConfig()
}
printf("maxInitLines=`%d'\n",Config::maxInitLines);
printf("optimizeForCFlag=`%d'\n",Config::optimizeForCFlag);
printf("showUsedFilesFlag=`%d'\n",Config::showUsedFilesFlag);
printf("# configuration options related to warning and progress messages\n");
printf("quietFlag=`%d'\n",Config::quietFlag);
printf("warningFlag=`%d'\n",Config::warningFlag);
......@@ -723,6 +733,8 @@ void dumpConfig()
printf("htmlAlignMemberFlag=`%d'\n",Config::htmlAlignMemberFlag);
printf("htmlHelpFlag=`%d'\n",Config::htmlHelpFlag);
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("enumValuesPerLine=`%d'\n",Config::enumValuesPerLine);
printf("ftvHelpFlag=`%d'\n",Config::ftvHelpFlag);
......@@ -866,9 +878,11 @@ void Config::init()
Config::sectionFilterList.clear();
Config::generateTodoList = TRUE;
Config::generateTestList = TRUE;
Config::generateBugList = TRUE;
Config::aliasList.clear();
Config::maxInitLines = 30;
Config::optimizeForCFlag = FALSE;
Config::showUsedFilesFlag = TRUE;
Config::quietFlag = FALSE;
Config::warningFlag = TRUE;
Config::warningUndocFlag = TRUE;
......@@ -895,6 +909,8 @@ void Config::init()
Config::htmlAlignMemberFlag = TRUE;
Config::htmlHelpFlag = FALSE;
Config::htmlHelpChiFlag = FALSE;
Config::htmlHelpTocFlag = FALSE;
Config::htmlHelpTocExpandFlag = FALSE;
Config::noIndexFlag = FALSE;
Config::enumValuesPerLine = 4;
Config::ftvHelpFlag = FALSE;
......@@ -1381,6 +1397,17 @@ void writeTemplateConfig(QFile *f,bool sl)
writeBoolValue(t,Config::generateTestList);
t << "\n";
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 << "# This tag can be used to specify a number of aliases that acts \n";
......@@ -1422,6 +1449,17 @@ void writeTemplateConfig(QFile *f,bool sl)
writeBoolValue(t,Config::optimizeForCFlag);
t << "\n";
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";
}
......@@ -1744,6 +1782,27 @@ void writeTemplateConfig(QFile *f,bool sl)
writeBoolValue(t,Config::htmlHelpChiFlag);
t << "\n";
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 << "# 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,
sourceRefDict=0;
m_todoId=0;
m_testId=0;
m_bugId=0;
}
Definition::~Definition()
......@@ -356,6 +357,7 @@ void Definition::writeInlineCode(OutputList &ol,const char *scopeName)
{
initParseCodeContext();
//printf("Read:\n`%s'\n\n",codeFragment.data());
if (definitionType()==TypeMember) setParameterList((MemberDef *)this);
ol.startCodeFragment();
parseCode(ol,scopeName,codeFragment,FALSE,0,
bodyDef,actualStart,actualEnd,TRUE);
......
......@@ -110,13 +110,15 @@ class Definition
void writeSourceRefs(OutputList &ol,const char *scopeName);
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 (testId!=0) m_testId=testId;
if (bugId!=0) m_bugId=bugId;
}
int todoId() const { return m_todoId; }
int testId() const { return m_testId; }
int bugId() const { return m_bugId; }
/*! returns the file in which this definition was found */
QCString getDefFileName() const { return defFileName; }
......@@ -141,8 +143,9 @@ class Definition
MemberList *sourceRefList; // list of entities that refer to this
// entity in their definition
MemberDict *sourceRefDict;
int m_testId; // id for test case
int m_todoId; // id for todo case
int m_testId; // id for test list item
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})
outDoc->writeDescItem();
}
}
/*
<DocScan>{CMD}"bug"[s]?{BN}+ {
endArgumentList();
if (!inBugBlock)
......@@ -1139,6 +1140,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
outDoc->writeDescItem();
}
}
*/
<DocScan>{CMD}"note"[s]?{BN}+ {
endArgumentList();
if (!inNoteBlock)
......@@ -1316,6 +1318,28 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
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}+ {
endArgumentList();
if (!inDeprecatedBlock)
......
......@@ -202,7 +202,7 @@ QCString spaces;
static void addRelatedPage(const char *name,const QCString &ptitle,
const QCString &doc,QList<QCString> *anchors,
const char *fileName,int startLine,
int todoId,int testId,GroupDef *gd=0,
int todoId,int testId,int bugId,GroupDef *gd=0,
TagInfo *tagInfo=0
)
{
......@@ -224,6 +224,7 @@ static void addRelatedPage(const char *name,const QCString &ptitle,
pi=new PageInfo(fileName,startLine,baseName,doc,title);
pi->todoId=todoId;
pi->testId=testId;
pi->bugId=bugId;
if (tagInfo)
{
pi->reference = tagInfo->tagName;
......@@ -274,13 +275,14 @@ static void addRelatedPage(Entry *root)
if (!s->isEmpty() && (gd=Doxygen::groupDict[*s])) break;
}
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)
{
......@@ -311,7 +313,7 @@ static void addRefItem(int todoId,int testId,const char *prefix,
doc += item->text;
doc += "</dd></dl>\n";
//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;
}
......@@ -340,7 +342,36 @@ static void addRefItem(int todoId,int testId,const char *prefix,
doc += "</dt>\n<dd>";
doc += item->text;
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;
}
......@@ -377,7 +408,7 @@ static void buildGroupList(Entry *root)
Doxygen::groupList.append(gd);
Doxygen::groupDict.insert(root->name,gd);
addGroupToGroups(root,gd);
gd->setRefItems(root->todoId,root->testId);
gd->setRefItems(root->todoId,root->testId,root->bugId);
}
}
EntryListIterator eli(*root->sublist);
......@@ -419,7 +450,7 @@ static void buildFileList(Entry *root)
fd->setDocumentation(root->doc,FALSE);
fd->setBriefDescription(root->brief);
fd->addSectionsToDefinition(root->anchors);
fd->setRefItems(root->todoId,root->testId);
fd->setRefItems(root->todoId,root->testId,root->bugId);
QListIterator<QCString> sli(*root->groups);
QCString *s;
for (;(s=sli.current());++sli)
......@@ -658,7 +689,7 @@ static void buildClassList(Entry *root)
fd->insertClass(cd);
}
addClassToGroups(root,cd);
cd->setRefItems(root->todoId,root->testId);
cd->setRefItems(root->todoId,root->testId,root->bugId);
if (!root->subGrouping) cd->setSubGrouping(FALSE);
}
else // new class
......@@ -707,7 +738,7 @@ static void buildClassList(Entry *root)
if (!root->subGrouping) cd->setSubGrouping(FALSE);
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
bool found=addNamespace(root,cd);
......@@ -819,7 +850,7 @@ static void buildNamespaceList(Entry *root)
// insert the namespace in the file definition
if (fd) fd->insertNamespace(nd);
addNamespaceToGroups(root,nd);
nd->setRefItems(root->todoId,root->testId);
nd->setRefItems(root->todoId,root->testId,root->bugId);
}
else /* if (!root->doc.isEmpty() ||
!root->brief.isEmpty() ||
......@@ -839,7 +870,7 @@ static void buildNamespaceList(Entry *root)
//printf("Adding namespace to group\n");
addNamespaceToGroups(root,nd);
nd->setRefItems(root->todoId,root->testId);
nd->setRefItems(root->todoId,root->testId,root->bugId);
bool ambig;
// file definition containing the namespace nd
......@@ -964,7 +995,7 @@ static void findUsingDirectives(Entry *root)
// add class to the list
Doxygen::namespaceList.inSort(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(
// add the member to the class
}
cd->insertMember(md);
md->setRefItems(root->todoId,root->testId);
md->setRefItems(root->todoId,root->testId,root->bugId);
//TODO: insert FileDef instead of filename strings.
cd->insertUsedFile(root->fileName);
......@@ -1274,7 +1305,7 @@ static MemberDef *addVariableToFile(
// variable already in the scope
{
addMemberDocs(root,md,def,0,FALSE);
md->setRefItems(root->todoId,root->testId);
md->setRefItems(root->todoId,root->testId,root->bugId);
return md;
}
......@@ -1324,7 +1355,7 @@ static MemberDef *addVariableToFile(
// 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)!='@')
{
nd->insertMember(md);
......@@ -1355,25 +1386,46 @@ static MemberDef *addVariableToFile(
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.
// If found they are stored in their class or in the global list.
void buildVarList(Entry *root)
{
static const QRegExp re("([^)]*)");
int i=-1;
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->section==Entry::VARIABLE_SEC
(root->section==Entry::VARIABLE_SEC // it's a variable
) ||
(root->section==Entry::FUNCTION_SEC && // function variable
!root->type.isEmpty() && root->type.find(re,0)!=-1 &&
// special case to catch function pointers
root->type.find("operator")==-1 && root->type.find(")(")==-1
(root->section==Entry::FUNCTION_SEC && // or maybe a function pointer variable
(i=findFunctionPtr(root->type))!=-1
//!root->type.isEmpty() && // return type is non-empty
// 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
......@@ -1404,7 +1456,6 @@ void buildVarList(Entry *root)
}
else
{
i=root->type.find(re,0);
if (i!=-1) // function pointer
{
int ai = root->type.find('[',i);
......@@ -1915,14 +1966,14 @@ static void buildMemberList(Entry *root)
// add member to namespace
nd->insertMember(md);
md->setNamespace(nd);
md->setRefItems(root->todoId,root->testId);
md->setRefItems(root->todoId,root->testId,root->bugId);
}
else if (fd)
{
// add member to the file
fd->insertMember(md);
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
......@@ -2497,12 +2548,12 @@ static void computeMemberReferences()
//----------------------------------------------------------------------
static void addTodoTestReferences()
static void addTodoTestBugReferences()
{
ClassDef *cd=Doxygen::classList.first();
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();
}
FileName *fn=Doxygen::inputNameList.first();
......@@ -2511,7 +2562,7 @@ static void addTodoTestReferences()
FileDef *fd=fn->first();
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();
}
fn=Doxygen::inputNameList.next();
......@@ -2519,20 +2570,20 @@ static void addTodoTestReferences()
NamespaceDef *nd=Doxygen::namespaceList.first();
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();
}
GroupDef *gd=Doxygen::groupList.first();
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();
}
PageSDictIterator pdi(*Doxygen::pageSDict);
PageInfo *pi=0;
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);
MemberName *mn=0;
......@@ -2552,7 +2603,7 @@ static void addTodoTestReferences()
if (Config::optimizeForCFlag) memLabel="field";
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()
if (Config::optimizeForCFlag) memLabel="global";
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,
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
mn->append(md);
cd->insertMember(md);
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
......@@ -3678,7 +3729,7 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl
mn->append(md);
cd->insertMember(md);
cd->insertUsedFile(root->fileName);
md->setRefItems(root->todoId,root->testId);
md->setRefItems(root->todoId,root->testId,root->bugId);
if (newMemberName)
{
//printf("Adding memberName=%s\n",mn->memberName());
......@@ -3730,23 +3781,26 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl
static void findMemberDocumentation(Entry *root)
{
int i=-1,l;
QRegExp re("([a-z_A-Z0-9: ]*\\*+[ \\*]*");
//QRegExp re("([a-z_A-Z0-9: ]*\\*+[ \\*]*");
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.data(),root->inside.data(),root->name.data(),root->args.data(),root->section,root->memSpec,root->mGrpId
);
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->type=root->type.left(i+l);
isFunc=FALSE;
}
else if (root->name.find(re)!=-1 && root->name.find("operator")==-1)
// func ptr entered with \fn, \var or \typedef
{
isFunc=FALSE;
}
//else if (root->name.find(re)!=-1 && root->name.find("operator")==-1)
// // func ptr entered with \fn, \var or \typedef
//{
// isFunc=FALSE;
//}
else if ((root->type.isEmpty() && root->name.left(8)=="typedef ")
|| root->args.find('(')==-1)
{
......@@ -3772,9 +3826,9 @@ static void findMemberDocumentation(Entry *root)
!root->type.isEmpty() && /*root->type.left(8)!="typedef " &&*/
compoundKeywordDict.find(root->type)==0
)
) &&
(!root->doc.isEmpty() || !root->brief.isEmpty() || root->bodyLine!=-1 ||
(root->memSpec&Entry::Inline) || root->mGrpId!=-1
) && !root->stat &&
(!root->doc.isEmpty() || !root->brief.isEmpty() || /*root->bodyLine!=-1 ||*/
(root->memSpec&Entry::Inline) || root->mGrpId!=-1
)
)
{
......@@ -3907,7 +3961,7 @@ static void findEnums(Entry *root)
//{
// 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 (Config::hideScopeNames)
......@@ -4615,7 +4669,7 @@ static void findDefineDocumentation(Entry *root)
md->setBodyDef(findFileDef(Doxygen::inputNameDict,root->fileName,ambig));
md->addSectionsToDefinition(root->anchors);
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);
addMemberToGroups(root,md);
}
......@@ -4648,7 +4702,7 @@ static void findDefineDocumentation(Entry *root)
bool ambig;
md->setBodyDef(findFileDef(Doxygen::inputNameDict,root->fileName,ambig));
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);
addMemberToGroups(root,md);
}
......@@ -4693,7 +4747,7 @@ static void buildPageList(Entry *root)
{
QCString title=root->args.stripWhiteSpace();
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);
Entry *e;
......@@ -6154,8 +6208,8 @@ void parseInput()
msg("Adding source references...\n");
addSourceReferences();
msg("Adding todo/test references...\n");
addTodoTestReferences();
msg("Adding todo/test/bug list item...\n");
addTodoTestBugReferences();
}
......
......@@ -15,7 +15,7 @@
# TMake project file for doxygen
TEMPLATE = app.t
CONFIG = console warn_on $extraopt
CONFIG = console warn_on $extraopts
HEADERS = doxygen.h
SOURCES = main.cpp
unix:LIBS += -L../lib -ldoxygen -lqtools
......
......@@ -76,6 +76,7 @@ Entry::Entry(const Entry &e)
initLines = e.initLines;
todoId = e.todoId;
testId = e.testId;
bugId = e.bugId;
tagInfo = e.tagInfo;
sublist = new QList<Entry>;
sublist->setAutoDelete(TRUE);
......@@ -223,6 +224,7 @@ void Entry::reset()
mGrpId = -1;
todoId = 0;
testId = 0;
bugId = 0;
section = EMPTY_SEC;
mtype = Method;
virt = Normal;
......
......@@ -25,14 +25,21 @@ enum Protection { Public, Protected, Private } ;
enum Specifier { Normal, Virtual, Pure } ;
enum MethodTypes { Method, Signal, Slot, DCOP, Property };
/*! \brief This class stores information about an inheritance relation
*/
struct BaseInfo
{
/*! Creates an object representing an inheritance relation */
BaseInfo(const char *n,Protection p,Specifier v) : name(n),prot(p),virt(v) {}
QCString name; // the name of the base class
Protection prot; // inheritance type
Specifier virt; // virtualness
QCString name; //!< the name of the base class
Protection prot; //!< inheritance type
Specifier virt; //!< virtualness
};
/*! \brief This class contains the information about the argument of a
* function or template
*
*/
struct Argument
{
/*! Construct a new argument. */
......@@ -77,22 +84,36 @@ struct Argument
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>
{
public:
~ArgumentList() {}
/*! Creates an empty argument list */
ArgumentList() : QList<Argument>(),
constSpecifier(FALSE),
volatileSpecifier(FALSE),
pureSpecifier(FALSE) {}
/*! Destroys the argument list */
~ArgumentList() {}
bool hasDocumentation() const;
/*! Does the member modify the state of the class? default: FALSE. */
bool constSpecifier;
/*! Is the member volatile? default: FALSE. */
bool volatileSpecifier;
/*! Is this a pure virtual member? default: FALSE */
bool pureSpecifier;
};
typedef QListIterator<Argument> ArgumentListIterator;
/*! \brief This struct is used to capture the tag file information
* for an Entry.
*/
struct TagInfo
{
QCString tagName;
......@@ -100,7 +121,10 @@ struct TagInfo
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.
*/
class Entry
......@@ -166,7 +190,11 @@ class Entry
~Entry();
int getSize();
/*! Adds entry \e as a child to this entry */
void addSubEntry (Entry* e) ;
/*! Restore the state of this Entry to the default value it has
* at construction time.
*/
void reset();
int section; //!< entry type (see Sections);
......@@ -207,8 +235,9 @@ class Entry
QList<QCString> *anchors; //!< list of anchors defined in this entry
QCString fileName; //!< file this entry was extracted from
int startLine; //!< start line of entry in the source
int todoId; //!< id of the todo item of this entry
int testId; //!< id of the test item of this entry
int todoId; //!< id of the todo list 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
static int num; //!< counts the total number of entries
private:
......
......@@ -18,6 +18,7 @@
#include "config.h"
#include "message.h"
#include "doxygen.h"
#include "language.h"
const char treeview_data[]=
......@@ -273,7 +274,10 @@ static void generateFolderTreeViewData()
else
{
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())
{
t << "Doxygen Documentation";
......
......@@ -175,12 +175,12 @@ void GroupDef::insertMember(MemberDef *md)
return; // member already added
}
}
mni->append(new MemberInfo(md,Public,Normal));
mni->append(new MemberInfo(md,md->protection(),md->virtualness(),FALSE));
}
else
{
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);
}
allMemberList->append(md);
......@@ -262,7 +262,7 @@ void GroupDef::computeAnchors()
void GroupDef::writeDocumentation(OutputList &ol)
{
ol.pushGeneratorState();
ol.disable(OutputGenerator::Man);
//ol.disable(OutputGenerator::Man);
startFile(ol,fileName,title);
startTitle(ol,getOutputFileBase());
ol.docify(title);
......
......@@ -275,9 +275,16 @@ void HtmlGenerator::writeStyleInfo(int part)
else // write user defined style sheet
{
QFileInfo cssfi(Config::htmlStyleSheet);
startPlainFile(cssfi.fileName());
t << fileToString(Config::htmlStyleSheet);
endPlainFile();
if (!cssfi.exists() || !cssfi.isFile() || !cssfi.isReadable())
{
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()
"Contents file=index.hhc\n"
"Default Window=main\n"
"Default topic=" << indexName << "\n"
"Index file=index.hhk\n"
"Binary TOC=YES\n";
"Index file=index.hhk\n";
if (Config::htmlHelpTocFlag) t << "Binary TOC=YES\n";
if (Config::htmlHelpChiFlag) t << "Create CHI file=YES\n";
t << "Title=" << Config::projectName << endl << endl;
......@@ -388,6 +388,13 @@ void HtmlHelp::addContentsItem(bool isDir,
const char *name,const char *ref,
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 << " ";
cts << "<LI><OBJECT type=\"text/sitemap\">";
cts << "<param name=\"Name\" value=\"" << name << "\">";
......
......@@ -408,7 +408,6 @@ void writeClassTree(OutputList &ol,BaseClassList *bcl,bool hideSuper)
}
#if 0
//----------------------------------------------------------------------------
/*! Generates HTML Help tree of classes */
......@@ -416,8 +415,8 @@ void writeClassTree(BaseClassList *cl)
{
HtmlHelp *htmlHelp=0;
FTVHelp *ftvHelp=0;
bool hasHtmlHelp = Config::generateHtml && Config::htmlHelpFlag && Config::htmlHelpGroupsOnly;
bool hasFtvHelp = Config::generateHtml && Config::ftvHelpFlag && Config::htmlHelpGroupsOnly;
bool hasHtmlHelp = Config::generateHtml && Config::htmlHelpFlag;
bool hasFtvHelp = Config::generateHtml && Config::ftvHelpFlag;
if (hasHtmlHelp)
{
htmlHelp = HtmlHelp::getInstance();
......@@ -448,7 +447,7 @@ void writeClassTree(BaseClassList *cl)
}
if (hasFtvHelp)
{
ftvHelp->addContentsItem(hasChildren,cd->name(),cd->getOutputFileBase());
ftvHelp->addContentsItem(hasChildren,cd->getReference(),cd->getOutputFileBase(),0,cd->name());
}
}
if (hasChildren)
......@@ -472,8 +471,8 @@ void writeClassTree(ClassList *cl)
{
HtmlHelp *htmlHelp=0;
FTVHelp *ftvHelp=0;
bool hasHtmlHelp = Config::generateHtml && Config::htmlHelpFlag && Config::htmlHelpGroupsOnly;
bool hasFtvHelp = Config::generateHtml && Config::ftvHelpFlag && Config::htmlHelpGroupsOnly;
bool hasHtmlHelp = Config::generateHtml && Config::htmlHelpFlag;
bool hasFtvHelp = Config::generateHtml && Config::ftvHelpFlag;
if (hasHtmlHelp)
{
htmlHelp = HtmlHelp::getInstance();
......@@ -513,7 +512,6 @@ void writeClassTree(ClassList *cl)
}
}
}
#endif
//----------------------------------------------------------------------------
......@@ -1937,13 +1935,13 @@ void writeExampleIndex(OutputList &ol)
{
ol.writeObjectLink(0,n,0,pi->title);
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
{
ol.writeObjectLink(0,n,0,pi->name);
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");
}
......@@ -2207,85 +2205,192 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd)
ol.endIndexList();
}
#if 0
// write namespaces
NamespaceList *namespaceList=gd->namespaceList;
if (namespaceList->count()>0)
if (Config::htmlHelpTocExpandFlag)
{
NamespaceDef *nsd=namespaceList->first();
while (nsd)
// write members
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)
htmlHelp->addContentsItem(FALSE,convertToHtml(nsd->name()).data(),nsd->getOutputFileBase());
{
htmlHelp->addContentsItem(FALSE,md->name(),gd->getOutputFileBase(),md->anchor());
}
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
writeClassTree(gd->classList);
// write members
MemberList memberLists[7] = {
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)
// write namespaces
NamespaceList *namespaceList=gd->namespaceList;
if (namespaceList->count()>0)
{
if(htmlHelp)
{
MemberDef *md=members.first();
while (md)
{
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();
}
htmlHelp->addContentsItem(TRUE, convertToHtml(theTranslator->trNamespaces()), gd->getOutputFileBase(), 0);
htmlHelp->incContentsDepth();
}
}
// write file list
FileList *fileList=gd->fileList;
if (fileList->count()>0)
{
if(ftvHelp)
{
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();
while (fd)
{
if(htmlHelp)
htmlHelp->addContentsItem(FALSE,convertToHtml(fd->name()),fd->getOutputFileBase().data());
if(ftvHelp)
ftvHelp->addContentsItem(FALSE,convertToHtml(fd->name()),fd->getOutputFileBase().data());
fd=fileList->next();
if(htmlHelp)
htmlHelp->addContentsItem(FALSE,convertToHtml(fd->name()),fd->getOutputFileBase());
if(ftvHelp)
ftvHelp->addContentsItem(FALSE, fd->getReference(), fd->getOutputFileBase(), 0, convertToHtml(fd->name()));
fd=fileList->next();
}
}
// write examples
PageSDictIterator eli(*(gd->exampleDict));
{
if(htmlHelp)
htmlHelp->decContentsDepth();
if(ftvHelp)
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();
while (pi)
{
if(htmlHelp)
htmlHelp->addContentsItem(FALSE,convertToHtml(pi->name),convertNameToFile(pi->name)+"-example");
if(ftvHelp)
ftvHelp->addContentsItem(FALSE,convertToHtml(pi->name),convertNameToFile(pi->name)+"-example");
pi=++eli;
if(htmlHelp)
{
htmlHelp->addContentsItem(FALSE,convertToHtml(pi->name),convertNameToFile(pi->name)+"-example");
}
if(ftvHelp)
{
ftvHelp->addContentsItem(FALSE,pi->getReference(),convertToHtml(pi->name)+"-example",0,convertNameToFile(pi->name));
}
pi=++eli;
}
}
#endif
if(htmlHelp) htmlHelp->decContentsDepth();
if(ftvHelp) ftvHelp->decContentsDepth();
if (htmlHelp) htmlHelp->decContentsDepth();
if (ftvHelp) ftvHelp->decContentsDepth();
}
}
if (htmlHelp) htmlHelp->decContentsDepth();
if (ftvHelp) ftvHelp->decContentsDepth();
gd->visited=TRUE;
}
}
......
......@@ -126,6 +126,10 @@ bool setTranslator(const char *langName)
{
theTranslator=new TranslatorChinese;
}
else if (L_EQUAL("norwegian"))
{
theTranslator=new TranslatorNorwegian;
}
#endif
else // use the default language (i.e. english)
{
......
......@@ -15,7 +15,7 @@
# TMake project file for doxygen
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 \
membername.h index.h memberlist.h definition.h \
entry.h logos.h instdox.h message.h code.h \
......
......@@ -95,6 +95,10 @@ void ManGenerator::startFile(const char *name,const char *,bool)
{
fileName=fileName.right(fileName.length()-10);
}
else if (fileName.left(6)=="group_")
{
fileName=fileName.right(fileName.length()-6);
}
int i;
if ((i=fileName.findRev('.'))!=-1)
......@@ -102,7 +106,9 @@ void ManGenerator::startFile(const char *name,const char *,bool)
fileName=fileName.left(i);
}
if (convertToQCString(fileName.right(2))!=Config::manExtension)
{
fileName+=Config::manExtension;
}
startPlainFile(fileName);
firstCol=TRUE;
}
......@@ -114,7 +120,7 @@ void ManGenerator::endFile()
void ManGenerator::endTitleHead(const char *,const char *name)
{
t << ".TH " << name << " 3 \"" << dateToString(FALSE) << "\" \"";
t << ".TH \"" << name << "\" 3 \"" << dateToString(FALSE) << "\" \"";
if (Config::projectName.isEmpty())
t << "Doxygen";
else
......
......@@ -199,7 +199,7 @@ class ManGenerator : public OutputGenerator
void endDescTable() {}
void startDescTableTitle() { writeListItem(); startBold(); }
void endDescTableTitle() { endBold(); }
void startDescTableData() { }
void startDescTableData() { t << endl; firstCol=TRUE; }
void endDescTableData() {}
void startDotGraph() {}
......
......@@ -853,7 +853,7 @@ void MemberDef::writeDeclaration(OutputList &ol,
* all active output formats.
*/
void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
const char *scopeName,
const char *scName,
Definition *container
)
{
......@@ -861,6 +861,15 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
if (getClassDef()==0 && isStatic() && !Config::extractStaticFlag) return;
// hide member that are documented in their own group
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();
//printf("MemberDef::writeDocumentation(): type=`%s' def=`%s'\n",type.data(),definition());
......@@ -876,6 +885,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
QCString cname = container->name();
QCString cfname = container->getOutputFileBase();
// get member name
QCString doxyName=name().copy();
// prepend scope if there is any. TODO: make this optional for C only docs
......
......@@ -58,15 +58,16 @@ typedef QDict<MemberName> MemberNameDict;
struct MemberInfo
{
MemberInfo(MemberDef *md,Protection p,Specifier v) :
memberDef(md), prot(p), virt(v),ambigClass(0) {}
MemberInfo(MemberDef *md,Protection p,Specifier v,bool inh) :
memberDef(md), prot(p), virt(v), inherited(inh), ambigClass(0) {}
~MemberInfo() {}
MemberDef *memberDef;
Protection prot;
Specifier virt;
QCString scopePath;
QCString ambiguityResolutionScope;
ClassDef *ambigClass;
Specifier virt;
bool inherited;
QCString scopePath;
QCString ambiguityResolutionScope;
ClassDef *ambigClass;
};
class MemberNameInfo : public QList<MemberInfo>
......
......@@ -90,6 +90,7 @@ class PageInfo
// ids
int todoId;
int testId;
int bugId;
// is this page part of a group
GroupDef *inGroup;
......
......@@ -22,7 +22,8 @@
RefList todoList;
/*! The test criteria list */
RefList testList;
/*! The bug list */
RefList bugList;
/*! Create a todo list */
RefList::RefList()
......@@ -63,7 +64,7 @@ int RefList::addRefItem()
*/
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
......@@ -72,7 +73,7 @@ RefItem *RefList::getRefItem(int itemId)
*/
RefItem *RefList::getFirstRefItem()
{
return m_dictIterator->toFirst();
return m_dictIterator ? m_dictIterator->toFirst() : 0;
}
/*! Returns the next item in the dictionary or 0 if
......@@ -81,6 +82,6 @@ RefItem *RefList::getFirstRefItem()
*/
RefItem *RefList::getNextRefItem()
{
return m_dictIterator->operator++();
return m_dictIterator ? m_dictIterator->operator++() : 0;
}
......@@ -51,5 +51,6 @@ class RefList
extern RefList todoList;
extern RefList testList;
extern RefList bugList;
#endif
......@@ -87,9 +87,11 @@ static int squareCount = 0 ;
static int ifCount = 0 ;
static int padCount = 0 ;
static int todoStartContext = 0;
static QCString todoString = 0;
static QCString todoString;
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* global_root = 0 ;
static Entry* current = 0 ;
......@@ -474,6 +476,7 @@ TITLE [tT][iI][tT][lL][eE]
%x SkipVerbatim
%x TodoParam
%x TestParam
%x BugParam
%x SectionLabel
%x SectionTitle
%x SkipTemplate
......@@ -1202,7 +1205,7 @@ TITLE [tT][iI][tT][lL][eE]
BEGIN(AfterDoc);
}
}
<FindMembers,FindFields>"//"([!*]?){B}*"@{"|"/*"([!*]?){B}*"@{" {
<FindMembers,FindFields>"//"([!*]?){B}*{CMD}"{"|"/*"([!*]?){B}*{CMD}"{" {
startGroup();
tmpDocType=-1;
if (current_root->section & Entry::SCOPE_MASK)
......@@ -1221,7 +1224,7 @@ TITLE [tT][iI][tT][lL][eE]
BEGIN( Doc );
}
}
<FindMembers,FindFields,ReadInitializer>"//"([!*]?){B}*"@}"|"/*"([!*]?){B}*"@}"{B}*"*/" {
<FindMembers,FindFields,ReadInitializer>"//"([!*]?){B}*{CMD}"}"|"/*"([!*]?){B}*{CMD}"}"{B}*"*/" {
endGroup();
}
<FindMembers>"=" {
......@@ -1401,7 +1404,7 @@ TITLE [tT][iI][tT][lL][eE]
}
<FindMembers>"[" {
if (current->name.isEmpty()) // IDL function property
if (current->name.isEmpty() || current->name=="typedef") // IDL function property
{
squareCount=1;
lastSquareContext = YY_START;
......@@ -2258,11 +2261,20 @@ TITLE [tT][iI][tT][lL][eE]
BEGIN( ClassVar );
}
<ClassVar>{SCOPENAME}{BN}*/"(" {
addType(current);
current->name = yytext;
current->name = current->name.stripWhiteSpace();
lineCount();
BEGIN( FindMembers );
if (insideIDL && strncmp(yytext,"switch",6)==0)
{
// Corba IDL style union
roundCount=0;
BEGIN(SkipUnionSwitch);
}
else
{
addType(current);
current->name = yytext;
current->name = current->name.stripWhiteSpace();
lineCount();
BEGIN( FindMembers );
}
}
<ClassVar>{ID} {
if (insideIDL && strcmp(yytext,"switch")==0)
......@@ -2417,7 +2429,7 @@ TITLE [tT][iI][tT][lL][eE]
curlyCount=0;
BEGIN( ReadBody ) ;
}
<SkipUnionSwitch>"(" {
<SkipUnionSwitch>{B}*"(" {
roundCount++;
}
<SkipUnionSwitch>")" {
......@@ -2564,7 +2576,7 @@ TITLE [tT][iI][tT][lL][eE]
}
BEGIN( tmpDocType );
}
<Doc,JavaDoc>{B}*{CMD}("fn"|"var"|"typedef"){B}* {
<Doc,JavaDoc>{B}*{CMD}("fn"|"var"|"typedef"){B}+ {
current->section = Entry::MEMBERDOC_SEC;
current->fileName = yyFileName;
current->startLine = yyLineNr;
......@@ -2601,55 +2613,55 @@ TITLE [tT][iI][tT][lL][eE]
current->startLine = yyLineNr;
BEGIN( ClassDocFunc );
}
<Doc,JavaDoc>{B}*{CMD}"enum"{B}* {
<Doc,JavaDoc>{B}*{CMD}"enum"{B}+ {
current->section = Entry::ENUMDOC_SEC;
current->fileName = yyFileName;
current->startLine = yyLineNr;
BEGIN( EnumDocArg1 );
}
<Doc,JavaDoc>{B}*{CMD}"defgroup"{B}* {
<Doc,JavaDoc>{B}*{CMD}"defgroup"{B}+ {
current->section = Entry::GROUPDOC_SEC;
current->fileName = yyFileName;
current->startLine = yyLineNr;
BEGIN( GroupDocArg1 );
}
<Doc,JavaDoc>{B}*{CMD}"namespace"{B}* {
<Doc,JavaDoc>{B}*{CMD}"namespace"{B}+ {
current->section = Entry::NAMESPACEDOC_SEC;
current->fileName = yyFileName;
current->startLine = yyLineNr;
BEGIN( NameSpaceDocArg1 );
}
<Doc,JavaDoc>{B}*{CMD}"class"{B}* {
<Doc,JavaDoc>{B}*{CMD}"class"{B}+ {
current->section = Entry::CLASSDOC_SEC;
current->fileName = yyFileName;
current->startLine = yyLineNr;
BEGIN( ClassDocArg1 );
}
<Doc,JavaDoc>{B}*{CMD}"union"{B}* {
<Doc,JavaDoc>{B}*{CMD}"union"{B}+ {
current->section = Entry::UNIONDOC_SEC;
current->fileName = yyFileName;
current->startLine = yyLineNr;
BEGIN( ClassDocArg1 );
}
<Doc,JavaDoc>{B}*{CMD}"struct"{B}* {
<Doc,JavaDoc>{B}*{CMD}"struct"{B}+ {
current->section = Entry::STRUCTDOC_SEC;
current->fileName = yyFileName;
current->startLine = yyLineNr;
BEGIN( ClassDocArg1 );
}
<Doc,JavaDoc>{B}*{CMD}"interface"{B}* {
<Doc,JavaDoc>{B}*{CMD}"interface"{B}+ {
current->section = Entry::INTERFACEDOC_SEC;
current->fileName = yyFileName;
current->startLine = yyLineNr;
BEGIN( ClassDocArg1 );
}
<Doc,JavaDoc>{B}*{CMD}"idlexcept"{B}* {
<Doc,JavaDoc>{B}*{CMD}"idlexcept"{B}+ {
current->section = Entry::EXCEPTIONDOC_SEC;
current->fileName = yyFileName;
current->startLine = yyLineNr;
BEGIN( ClassDocArg1 );
}
<Doc,JavaDoc>{B}*{CMD}"page"{B}* {
<Doc,JavaDoc>{B}*{CMD}"page"{B}+ {
current->section = Entry::PAGEDOC_SEC;
current->fileName = yyFileName;
current->startLine = yyLineNr;
......@@ -2667,7 +2679,7 @@ TITLE [tT][iI][tT][lL][eE]
current->startLine = yyLineNr;
BEGIN( FileDocArg1 );
}
<Doc,JavaDoc>{B}*{CMD}"example"{B}* {
<Doc,JavaDoc>{B}*{CMD}"example"{B}+ {
current->section = Entry::EXAMPLE_SEC;
current->fileName = yyFileName;
current->startLine = yyLineNr;
......@@ -2698,10 +2710,10 @@ TITLE [tT][iI][tT][lL][eE]
}
<SkipHtmlComment>"--"[!]?">" { BEGIN(lastSkipHtmlCommentContext); }
<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;
}
<AfterDocLine,LineDoc,JavaDoc>("\\\\"|"@@")("todo"|"test")/[^a-z_A-Z0-9] {
<AfterDocLine,LineDoc,JavaDoc>("\\\\"|"@@")("todo"|"test"|"bug")/[^a-z_A-Z0-9] {
current->brief+=yytext;
}
<AfterDoc,AfterDocLine,LineDoc,Doc,JavaDoc,ClassDoc,PageDoc>{CMD}"todo"/[^a-z_A-Z0-9] {
......@@ -2718,6 +2730,13 @@ TITLE [tT][iI][tT][lL][eE]
current->brief.resize(0);
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>"//" |
<TodoParam>"/*" |
......@@ -2778,6 +2797,36 @@ TITLE [tT][iI][tT][lL][eE]
current->brief = testString.copy(); // restore orginial brief desc.
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} {
current->name = stripQuotes(yytext);
BEGIN( ExampleDoc );
......@@ -3057,7 +3106,7 @@ TITLE [tT][iI][tT][lL][eE]
if (!removeSlashes)
*pSkipDoc+=yytext;
}
<SkipCode>^{B}*"*"+/{B}+
<SkipCode>^{B}*"*"+/{BN}+
<SkipCode>"//" {
*pSkipDoc+=yytext;
}
......@@ -3102,7 +3151,7 @@ TITLE [tT][iI][tT][lL][eE]
lineCount();
BEGIN( GroupName );
}
<ClassDoc,Doc,JavaDoc>"@{" {
<ClassDoc,Doc,JavaDoc>{CMD}"{" {
if (current->section == Entry::GROUPDOC_SEC)
{
autoGroupNameStack.push(new QCString(current->name));
......@@ -3118,7 +3167,7 @@ TITLE [tT][iI][tT][lL][eE]
warn(yyFileName,yyLineNr,"Warning: @{ may only be used in a group block!\n");
}
}
<ClassDoc,Doc,JavaDoc>"@}" {
<ClassDoc,Doc,JavaDoc>{CMD}"}" {
endGroup();
}
<ExampleDoc,PageDoc,ClassDoc>. { current->doc += yytext; }
......@@ -3202,6 +3251,12 @@ TITLE [tT][iI][tT][lL][eE]
unput('/');unput('*'); // make sure we have something to read
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 &&
lastBriefContext==Doc)
{
......@@ -3269,7 +3324,10 @@ TITLE [tT][iI][tT][lL][eE]
<ClassDocBrief>{BS}({BL}|"\\n\\n") {
current->brief=current->brief.stripWhiteSpace();
if (!current->doc.isEmpty()) current->doc+=" <p>";
if (lastBriefContext==TodoParam || lastBriefContext==TestParam)
if (lastBriefContext==TodoParam ||
lastBriefContext==TestParam ||
lastBriefContext==BugParam
)
{
unput('\n');
}
......@@ -3300,6 +3358,16 @@ TITLE [tT][iI][tT][lL][eE]
unput('\n'); // make sure we have something to read
BEGIN( TestParam );
}
else if
(lastBriefContext==BugParam &&
(bugStartContext==LineDoc ||
bugStartContext==AfterDocLine
)
)
{
unput('\n'); // make sure we have something to read
BEGIN( BugParam );
}
else
{
current->brief += " ";
......
......@@ -1227,6 +1227,22 @@ class Translator
{
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
......@@ -5,6 +5,7 @@
* Initial Italian Translation by Ahmed Aldo Faisal
* Revised and completed by Alessandro Falappa (June 1999)
* Updates:
* 2001/02: translated new items used since version 1.2.4
* 2000/11: modified slightly the translation in trLegendDocs() function,
* 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
......@@ -998,6 +999,50 @@ class TranslatorItalian : public Translator
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
......@@ -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
* documentation under the terms of the GNU General Public License is hereby
......@@ -25,12 +25,11 @@ class TranslatorJapanese : public Translator
public:
QCString idLanguage()
{ return "japanese"; }
QCString idLanguageCharset()
{ return "euc-jp"; }
/*! returns the name of the package that is included by LaTeX */
QCString latexBabelPackage()
{ return "a4j"; }
{ return "english"; }
QCString idLanguageCharset()
{ return "euc-jp"; }
/*! used in the compound documentation before a list of related functions. */
QCString trRelatedFunctions()
......@@ -414,7 +413,7 @@ class TranslatorJapanese : public Translator
/*! this text is generated when the \warning command is used. */
QCString trWarning()
{ return "注意"; }
{ return "警告"; }
/*! this text is generated when the \bug command is used. */
QCString trBugsAndLimitations()
......@@ -452,7 +451,9 @@ class TranslatorJapanese : public Translator
QCString trGeneratedBy()
{ return ""; }
// new since 0.49-990307
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990307
//////////////////////////////////////////////////////////////////////////
/*! used as the title of page containing all the index of all namespaces. */
QCString trNamespaceList()
......@@ -747,12 +748,12 @@ class TranslatorJapanese : public Translator
/*! Text for the \pre command */
QCString trPrecondition()
{
return "前提条件";
return "事前条件";
}
/*! Text for the \post command */
QCString trPostcondition()
{
return "Postcondition";
return "事後条件";
}
/*! Text for the \invariant command */
QCString trInvariant()
......@@ -785,6 +786,249 @@ class TranslatorJapanese : public Translator
{
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
......@@ -32,7 +32,7 @@ class TranslatorDutch : public Translator
QCString trRelatedSubscript()
{ return "(Merk op dat dit geen member functies zijn.)"; }
QCString trDetailedDescription()
{ return "Gedetaileerde Beschrijving"; }
{ return "Gedetailleerde Beschrijving"; }
QCString trMemberTypedefDocumentation()
{ return "Documentatie van type definitie members"; }
QCString trMemberEnumerationDocumentation()
......@@ -516,15 +516,15 @@ class TranslatorDutch : public Translator
}
QCString trGraphicalHierarchy()
{
return "Grafische Klasse Hierarchie";
return "Grafische Klasse Hi&euml;rarchie";
}
QCString trGotoGraphicalHierarchy()
{
return "Ga naar de grafische klasse hierarchie";
return "Ga naar de grafische klasse hi&euml;rarchie";
}
QCString trGotoTextualHierarchy()
{
return "Ga naar de tekstu&euml;le klasse hierarchie";
return "Ga naar de tekstuele klasse hi&euml;rarchie";
}
QCString trPageIndex()
{
......@@ -695,12 +695,12 @@ class TranslatorDutch : public Translator
//////////////////////////////////////////////////////////////////////////
/*! Used as a marker that is put before a test item */
virtual QCString trTest()
QCString trTest()
{
return "Test";
}
/*! Used as the header of the test list */
virtual QCString trTestList()
QCString trTestList()
{
return "Test Lijst";
}
......@@ -710,7 +710,7 @@ class TranslatorDutch : public Translator
//////////////////////////////////////////////////////////////////////////
/*! Used as a section header for KDE-2 IDL methods */
virtual QCString trDCOPMethods()
QCString trDCOPMethods()
{
return "DCOP Methoden";
}
......@@ -720,15 +720,76 @@ class TranslatorDutch : public Translator
//////////////////////////////////////////////////////////////////////////
/*! Used as a section header for IDL properties */
virtual QCString trProperties()
QCString trProperties()
{
return "Properties";
}
/*! Used as a section header for IDL property documentation */
virtual QCString trPropertyDocumentation()
QCString trPropertyDocumentation()
{
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
......@@ -14,6 +14,11 @@
*
*/
/*
* Russian translation by Andrey V. Stolyarov <crocodil<AT>croco.net>
* released Feb 14, 2001
*/
#ifndef TRANSLATOR_RU_H
#define TRANSLATOR_RU_H
......@@ -32,48 +37,55 @@ class TranslatorRussian : public Translator
}
QCString trRelatedFunctions()
{
return " ";
return " ";
}
QCString trRelatedSubscript()
{
return "( , )";
return "( , - )";
}
QCString trDetailedDescription()
{
return " ";
return " ";
}
QCString trMemberTypedefDocumentation()
{
// Need additional translation
return " typedef";
return " typedef-";
}
QCString trMemberEnumerationDocumentation()
{
return " ";
return " ";
}
QCString trMemberFunctionDocumentation()
{
return " ";
return " -";
}
QCString trMemberDataDocumentation()
{
return " ";
if (Config::optimizeForCFlag)
{
return " ";
}
else
{
return " -";
}
}
QCString trMore()
{
return "...";
return "...";
}
QCString trListOfAllMembers()
{
return "C ";
return "C .";
}
QCString trMemberList()
{
return " ";
return " ";
}
QCString trThisIsTheListOfAllMembers()
{
return " ";
return " / ";
}
QCString trIncludeIncludingInheritedMembers()
{
......@@ -82,7 +94,7 @@ class TranslatorRussian : public Translator
QCString trGeneratedAutomatically(const char *s)
{ QCString result=" Doxygen";
if (s) result+=(QCString)" "+s;
result+=" .";
result+=" .";
return result;
}
QCString trEnumName()
......@@ -99,7 +111,7 @@ class TranslatorRussian : public Translator
}
QCString trVerbatimText(const char* f)
{
return (QCString)" "+f+" ";
return (QCString)" "+f;
}
QCString trModules()
{
......@@ -111,29 +123,52 @@ class TranslatorRussian : public Translator
}
QCString trCompoundList()
{
// Need additional translation
return " (compound list)";
if (Config::optimizeForCFlag)
{
return " ";
}
else
{
// doubtful translation; originally - "Compound List"
return " ";
}
}
QCString trFileList()
{
return " ";
return " ";
}
QCString trHeaderFiles()
{
return " ";
return " ";
}
QCString trCompoundMembers()
{
// Need additional translation
return " (compound members)";
if (Config::optimizeForCFlag)
{
return " ";
}
else
{
return "-";
}
}
QCString trFileMembers()
{
return " ";
if (Config::optimizeForCFlag)
{
return " ";
}
else
{
// doubtful translation
// (originally - "File members", but not good for Russian)
return " ";
}
}
QCString trRelatedPages()
{
return " ";
// non-verbatim translation: originally "related pages"
return ". : ";
}
QCString trExamples()
{
......@@ -145,8 +180,8 @@ class TranslatorRussian : public Translator
}
QCString trClassHierarchyDescription()
{
// Need additional translation
return " (inheritance) , ";
return " "
"( ) ";
}
QCString trFileListDescription(bool extractAll)
{
......@@ -157,36 +192,52 @@ class TranslatorRussian : public Translator
}
QCString trCompoundListDescription()
{
return " , , "
":";
if (Config::optimizeForCFlag)
{
return " : ";
}
else
{
return ", , "
" : ";
}
}
QCString trCompoundMembersDescription(bool extractAll)
{
// Need additional translation
QCString result=" ";
if(!extractAll) result+=" ";
result+=" ";
result+=" ";
if(extractAll)
result+="the class documentation for each member:";
result+=" :";
else
result+="the classes the belong to:";
result+=", :";
return result;
}
QCString trFileMembersDescription(bool extractAll)
{
// Need additional translation
QCString result=" ";
if(!extractAll) result+=" ";
result+=" , (links) ";
if(extractAll)
result+="the class documentation for each member:";
else
result+="the classes the belong to:";
return result;
QCString result=" ";
if (!extractAll) result+=" ";
if (Config::optimizeForCFlag)
{
result+=", , , "
" ";
}
else
{
result+=" ";
}
result+=" ";
if (extractAll)
result+=", :";
else
result+=":";
return result;
}
QCString trHeaderFilesDescription()
{
return " , API:";
return " , API:";
}
QCString trExamplesDescription()
{
......@@ -194,8 +245,7 @@ class TranslatorRussian : public Translator
}
QCString trRelatedPagesDescription()
{
// Need additional translation
return " :";
return " :";
}
QCString trModulesDescription()
{
......@@ -203,7 +253,7 @@ class TranslatorRussian : public Translator
}
QCString trNoDescriptionAvailable()
{
return " ";
return " ";
}
QCString trDocumentation()
{
......@@ -211,7 +261,7 @@ class TranslatorRussian : public Translator
}
QCString trModuleIndex()
{
return " ";
return " ";
}
QCString trHierarchicalIndex()
{
......@@ -219,41 +269,48 @@ class TranslatorRussian : public Translator
}
QCString trCompoundIndex()
{
// Need additional translation
return " ";
if (Config::optimizeForCFlag)
{
return " ";
}
else
{
// originally "compound index"
return " ";
}
}
QCString trFileIndex()
{
return " ";
return " ";
}
QCString trModuleDocumentation()
{
return " ";
return " ";
}
QCString trClassDocumentation()
{
return " ";
return " ";
}
QCString trFileDocumentation()
{
return " ";
return " ";
}
QCString trExampleDocumentation()
{
return " ";
return " ";
}
QCString trPageDocumentation()
{
return " ";
return " ";
}
QCString trReferenceManual()
{
return " ";
// originally reference manual
return " ";
}
QCString trDefines()
{
// Need Translation
return " (Defines)";
return "";
}
QCString trFunctionPrototypes()
{
......@@ -265,20 +322,19 @@ class TranslatorRussian : public Translator
}
QCString trEnumerations()
{
// Need Translation
return " (Enumerations)";
return "";
}
QCString trFunctions()
{
return ":";
return "";
}
QCString trVariables()
{
return ":";
return "";
}
QCString trEnumerationValues()
{
return " ";
return " ";
}
QCString trAuthor()
{
......@@ -286,7 +342,7 @@ class TranslatorRussian : public Translator
}
QCString trDefineDocumentation()
{
return " (defines)";
return " ";
}
QCString trFunctionPrototypeDocumentation()
{
......@@ -314,8 +370,16 @@ class TranslatorRussian : public Translator
}
QCString trCompounds()
{
// need translation
return "Compounds";
if (Config::optimizeForCFlag)
{
return " ";
}
else
{
// originally "compounds"
return " ";
}
}
QCString trFiles()
{
......@@ -325,16 +389,16 @@ class TranslatorRussian : public Translator
{
QCString result=(QCString)" "+date;
if(projName) result+=(QCString)" "+projName;
result+=(QCString)" ";
result+=(QCString)" ";
return result;
}
QCString trWrittenBy()
{
return " ";
return "";
}
QCString trClassDiagram(const char* clName)
{
return (QCString)" "+clName;
return (QCString)" "+clName+":";
}
QCString trForInternalUseOnly()
{
......@@ -342,9 +406,8 @@ class TranslatorRussian : public Translator
}
QCString trReimplementedForInternalREasons()
{
// need translation
return " ;"
" .";
return " ;"
" .";
}
QCString trWarning()
{
......@@ -372,7 +435,7 @@ class TranslatorRussian : public Translator
}
QCString trSeeAlso()
{
return "";
return ". ";
}
QCString trParameters()
{
......@@ -384,16 +447,14 @@ class TranslatorRussian : public Translator
}
QCString trGeneratedBy()
{
return " ";
return " ";
}
QCString trNamespaceList()
{
// Need translation
return " ";
return " (namespaces)";
}
QCString trNamespaceListDescription(bool extractAll)
{
// Need translation
QCString result=" ";
if(!extractAll) result+=" ";
result+=" :";
......@@ -406,44 +467,53 @@ class TranslatorRussian : public Translator
QCString trRelatedFunctionDocumentation()
{
// need translation
return " ";
return " ";
}
QCString trCompoundReference(const char* clName,
ClassDef::CompoundType compType,
bool /*isTemplate*/)
{
QCString result=(QCString)clName+" ";
bool isTemplate)
{
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)
{
case ClassDef::Class: result+=" "; break;
case ClassDef::Struct: result+=" "; break;
case ClassDef::Union: result+=" "; break;
case ClassDef::Interface: result+=" "; break;
case ClassDef::Exception: result+=" "; break;
case ClassDef::Class: result+=" "; break;
case ClassDef::Struct: result+=" "; break;
case ClassDef::Union: result+=" "; break;
case ClassDef::Interface: result+=" "; break;
case ClassDef::Exception: result+=" "; break;
}
result+=" ";
result+=clName;
return result;
}
QCString trFileReference(const char* fileName)
{
QCString result;
result+=(QCString)" "+fileName;
result+=(QCString)" "+fileName;
return result;
}
QCString trNamespaceReference(const char* namespaceName)
{
// need translation
QCString result=(QCString)" "+namespaceName;
return result;
}
QCString trPublicMembers()
{
return " ";
return " ";
}
QCString trPublicSlots()
{
// need translation
return " (Slots)";
return " ";
}
QCString trSignals()
{
......@@ -451,34 +521,31 @@ class TranslatorRussian : public Translator
}
QCString trStaticPublicMembers()
{
return " ";
return " ";
}
QCString trProtectedMembers()
{
return " ";
return " ";
}
QCString trProtectedSlots()
{
// need translation
return " (Slots)";
return " ";
}
QCString trStaticProtectedSlots()
{
// need translation
return " (Slots)";
return " ";
}
QCString trPrivateMembers()
{
return " ";
return " ";
}
QCString trPrivateSlots()
{
// need translation
return " (Slots)";
return " ";
}
QCString trStaticPrivateMembers()
{
return " ";
return " ";
}
QCString trWriteList(int numEntries)
{
......@@ -492,20 +559,27 @@ class TranslatorRussian : public Translator
if(i<numEntries-2)
result+=", ";
else
result+=", ";
result+=" ";
}
}
return result;
}
QCString trInheritsList(int numEntries)
{
// need translation
return " (Inherits) "+trWriteList(numEntries)+".";
return " "+trWriteList(numEntries)+".";
}
QCString trInheritedByList(int numEntries)
{
// need translation
return " (Inherited By) "+trWriteList(numEntries)+".";
return " "+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)
{
......@@ -513,31 +587,30 @@ class TranslatorRussian : public Translator
}
QCString trNamespaceMembers()
{
// Need translation
return " ";
return " ";
}
QCString trNamespaceMemberDescription(bool extractAll)
{
QCString result=" ";
if(!extractAll) result+=" ";
result+=" ";
result+=" ";
if(extractAll)
result+=" ";
result+=" :";
else
result+=" ";
result+=" , :";
return result;
}
QCString trNamespaceIndex()
{
return " ";
return " ";
}
QCString trNamespaceDocumentation()
{
return " ";
return " ";
}
QCString trNamespaces()
{
return " ";
return " ";
}
QCString trGeneratedFromFiles(ClassDef::CompoundType compType, bool single)
{
......@@ -559,7 +632,7 @@ class TranslatorRussian : public Translator
}
QCString trAlphabeticalList()
{
return " ";
return " ";
}
QCString trReturnValues()
{
......@@ -567,8 +640,7 @@ class TranslatorRussian : public Translator
}
QCString trMainPage()
{
// need translation
return " (Main Page)";
return " ";
}
QCString trPageAbbreviation()
{
......@@ -580,11 +652,11 @@ class TranslatorRussian : public Translator
}
QCString trDefinedAtLineInSourceFile()
{
return " @0 @1.";
return " @0 @1.";
}
QCString trDefinedInSourceFile()
{
return " @0.";
return " @0.";
}
QCString trDeprecated()
{
......@@ -592,40 +664,36 @@ class TranslatorRussian : public Translator
}
QCString trCollaborationDiagram(const char* clName)
{
// need translation
return (QCString)" "+clName+":";
// originally "collaboration diagram"
return (QCString)" "+clName+":";
}
QCString trInclDepGraph(const char* fName)
{
// need translation
return (QCString)" "+fName+":";
return (QCString)" "
" "+fName+":";
}
QCString trConstructorDocumentation()
{
return " ";
return " ";
}
QCString trGotoSourceCode()
{
// need translation
return " .";
return " .";
}
QCString trGotoDocumentation()
{
return " .";
return " .";
}
QCString trPrecondition()
{
// need translation
return " (Precondition)";
return "";
}
QCString trPostcondition()
{
// need translation
return " (Postcondition)";
return "";
}
QCString trInvariant()
{
// need translation
return "";
}
QCString trInitialValue()
......@@ -634,26 +702,23 @@ class TranslatorRussian : public Translator
}
QCString trCode()
{
return " ";
return " ";
}
QCString trGraphicalHierarchy()
{
// need translation
return " (?)";
return " ()";
}
QCString trGotoGraphicalHierarchy()
{
// need translation
return " ";
return " ";
}
QCString trGotoTextualHierarchy()
{
// need translation
return " ";
return " ";
}
QCString trPageIndex()
{
return " ";
return " ";
}
QCString trNote()
{
......@@ -661,47 +726,54 @@ class TranslatorRussian : public Translator
}
QCString trPublicTypes()
{
return " ";
return " ";
}
QCString trPublicAttribs()
{
return " ";
if (Config::optimizeForCFlag)
{
return " ";
}
else
{
return " ";
}
}
QCString trStaticPublicAttribs()
{
return " ";
return " ";
}
QCString trProtectedTypes()
{
return " ";
return " ";
}
QCString trProtectedAttribs()
{
return " ";
return " ";
}
QCString trStaticProtectedAttribs()
{
return " ";
return " ";
}
QCString trPrivateTypes()
{
return " ";
return " ";
}
QCString trPrivateAttribs()
{
return " ";
return " ";
}
QCString trStaticPrivateAttribs()
{
return " ";
return " ";
}
QCString trTodo()
{
return "Todo";
return " :";
}
QCString trTodoList()
{
return " ";
return " ";
}
QCString trReferencedBy()
{
......@@ -718,21 +790,21 @@ class TranslatorRussian : public Translator
QCString trInclByDepGraph()
{
return " , "
" :";
" :";
}
QCString trSince()
{
return "";
return " ";
}
QCString trLegendTitle()
{
return " ";
return " ";
}
QCString trLegendDocs()
{
return
" , , "
"doxygen.<p>\n"
//" , "
//"doxygen.<p>\n"
" :\n"
"\\code\n"
"/*! - */\n"
......@@ -747,9 +819,9 @@ class TranslatorRussian : public Translator
"class ProtectedBase { };\n\n"
"/*! , */\n"
"class PrivateBase { };\n\n"
"/*! , Inherited */\n"
"/*! , Inherited */\n"
"class Used { };\n\n"
"/*! , */\n"
"/*! , */\n"
"class Inherited : public PublicBase,\n"
" protected ProtectedBase,\n"
" private PrivateBase,\n"
......@@ -759,34 +831,35 @@ class TranslatorRussian : public Translator
" Used *m_usedClass;\n"
"};\n"
"\\endcode\n"
" \\c MAX_DOT_GRAPH_HEIGHT "
" 200, :"
" \\c MAX_DOT_GRAPH_HEIGHT "
" 200, :"
"<p><center><img src=\"graph_legend.gif\"></center>\n"
"<p>\n"
" :\n"
" :\n"
"<ul>\n"
"<li> , "
" .\n"
"<li> , "
" .\n"
"<li> .\n"
"<li> .\n"
"<li> .\n"
"<li> , \n"
" / . , "
" ."
" / . , "
" ."
"</ul>\n"
" :\n"
" :\n"
"<ul>\n"
"<li> "
" .\n"
"<li> .\n"
"<li> .\n"
"<li> , "
". , "
"<li> .\n"
"<li> , "
" . "
" , "
" . \n"
"</ul>\n";
}
QCString trLegend()
{
return "";
return "";
}
QCString trTest()
{
......@@ -794,34 +867,57 @@ class TranslatorRussian : public Translator
}
QCString trTestList()
{
return " ";
return " ";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.2.1
//////////////////////////////////////////////////////////////////////////
/*! Used as a section header for KDE-2 IDL methods */
virtual QCString trDCOPMethods()
{
return " DCOP";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.2.2
//////////////////////////////////////////////////////////////////////////
/*! Used as a section header for IDL properties */
virtual QCString trProperties()
{
return "";
}
/*! Used as a section header for IDL property documentation */
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
......@@ -103,7 +103,7 @@
" \n"
"function hideFolder() \n"
"{ \n"
" if (browserVersion == 1) { \n"
" if (browserVersion == 1 || browserVersion == 3) { \n"
" if (this.navObj.style.display == \"none\") \n"
" return \n"
" this.navObj.style.display = \"none\" \n"
......@@ -171,6 +171,8 @@
" doc.yPos=8 \n"
" doc.write(\"<layer id='folder\" + this.id + \"' top=\" + doc.yPos + \" visibility=hidden>\") \n"
" } \n"
" if (browserVersion == 3) \n"
" doc.write(\"<div id='folder\" + this.id + \"' style='display:none;'>\") \n"
" \n"
" doc.write(\"\\n<table \") \n"
" if (browserVersion == 1) \n"
......@@ -199,6 +201,9 @@
" if (browserVersion == 2) { \n"
" doc.write(\"</layer>\") \n"
" } \n"
" if (browserVersion == 3) { \n"
" doc.write(\"</div>\") \n"
" } \n"
" \n"
" if (browserVersion == 1) { \n"
" this.navObj = doc.all[\"folder\"+this.id] \n"
......@@ -209,7 +214,11 @@
" this.iconImg = this.navObj.document.images[\"folderIcon\"+this.id] \n"
" this.nodeImg = this.navObj.document.images[\"nodeIcon\"+this.id] \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"
"function outputFolderLink() \n"
......@@ -276,7 +285,7 @@
" \n"
"function hideItem() \n"
"{ \n"
" if (browserVersion == 1) { \n"
" if (browserVersion == 1 || browserVersion == 3) { \n"
" if (this.navObj.style.display == \"none\") \n"
" return \n"
" this.navObj.style.display = \"none\" \n"
......@@ -310,6 +319,8 @@
"{ \n"
" if (browserVersion == 2) \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"
" doc.write(\"\\n<table \") \n"
" if (browserVersion == 1) \n"
......@@ -340,6 +351,8 @@
" \n"
" if (browserVersion == 2) \n"
" doc.write(\"</layer>\") \n"
" if (browserVersion == 3) \n"
" doc.write(\"</div>\")\n"
" \n"
" if (browserVersion == 1) { \n"
" this.navObj = doc.all[\"item\"+this.id] \n"
......@@ -348,7 +361,10 @@
" this.navObj = doc.layers[\"item\"+this.id] \n"
" this.iconImg = this.navObj.document.images[\"itemIcon\"+this.id] \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"
......@@ -357,7 +373,7 @@
" \n"
"function display() \n"
"{ \n"
" if (browserVersion == 1) \n"
" if (browserVersion == 1 || browserVersion == 3) \n"
" this.navObj.style.display = \"block\" \n"
" else \n"
" this.navObj.visibility = \"show\" \n"
......@@ -419,15 +435,18 @@
" else \n"
" if (doc.layers) \n"
" browserVersion = 2 //NS4 \n"
" else \n"
" browserVersion = 0 //other \n"
" else if(navigator.userAgent.toLowerCase().indexOf('gecko') != -1)\n"
" browserVersion = 3 //mozilla\n"
" else \n"
" browserVersion = 0 //other \n"
"\n"
" foldersTree.initialize(0, 1, \"\") \n"
" foldersTree.display()\n"
" \n"
" if (browserVersion > 0) \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"
" // close the whole tree \n"
" clickOnNode(0) \n"
......
......@@ -103,7 +103,7 @@ function propagateChangesInState(folder)
function hideFolder()
{
if (browserVersion == 1) {
if (browserVersion == 1 || browserVersion == 3) {
if (this.navObj.style.display == "none")
return
this.navObj.style.display = "none"
......@@ -171,6 +171,8 @@ function drawFolder(leftSide)
doc.yPos=8
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 ")
if (browserVersion == 1)
......@@ -199,6 +201,9 @@ function drawFolder(leftSide)
if (browserVersion == 2) {
doc.write("</layer>")
}
if (browserVersion == 3) {
doc.write("</div>")
}
if (browserVersion == 1) {
this.navObj = doc.all["folder"+this.id]
......@@ -209,7 +214,11 @@ function drawFolder(leftSide)
this.iconImg = this.navObj.document.images["folderIcon"+this.id]
this.nodeImg = this.navObj.document.images["nodeIcon"+this.id]
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()
......@@ -276,7 +285,7 @@ function Item(itemDescription, tagName, itemLink) // Constructor
function hideItem()
{
if (browserVersion == 1) {
if (browserVersion == 1 || browserVersion == 3) {
if (this.navObj.style.display == "none")
return
this.navObj.style.display = "none"
......@@ -310,6 +319,8 @@ function drawItem(leftSide)
{
if (browserVersion == 2)
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 ")
if (browserVersion == 1)
......@@ -340,6 +351,8 @@ function drawItem(leftSide)
if (browserVersion == 2)
doc.write("</layer>")
if (browserVersion == 3)
doc.write("</div>")
if (browserVersion == 1) {
this.navObj = doc.all["item"+this.id]
......@@ -348,7 +361,10 @@ function drawItem(leftSide)
this.navObj = doc.layers["item"+this.id]
this.iconImg = this.navObj.document.images["itemIcon"+this.id]
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)
function display()
{
if (browserVersion == 1)
if (browserVersion == 1 || browserVersion == 3)
this.navObj.style.display = "block"
else
this.navObj.visibility = "show"
......@@ -419,15 +435,18 @@ function initializeDocument()
else
if (doc.layers)
browserVersion = 2 //NS4
else
browserVersion = 0 //other
else if(navigator.userAgent.toLowerCase().indexOf('gecko') != -1)
browserVersion = 3 //mozilla
else
browserVersion = 0 //other
foldersTree.initialize(0, 1, "")
foldersTree.display()
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
clickOnNode(0)
......
......@@ -324,15 +324,17 @@ QCString stripFromPath(const QCString &path)
int guessSection(const char *name)
{
QCString n=((QCString)name).lower();
if (n.right(2)==".c" || // source
n.right(3)==".cc" ||
n.right(4)==".cxx" ||
n.right(4)==".cpp" ||
n.right(4)==".c++" ||
n.right(3)==".ii" || // inline
n.right(4)==".ixx" ||
n.right(4)==".ipp" ||
n.right(4)==".i++"
if (n.right(2)==".c" || // source
n.right(3)==".cc" ||
n.right(4)==".cxx" ||
n.right(4)==".cpp" ||
n.right(4)==".c++" ||
n.right(5)==".java" ||
n.right(3)==".ii" || // inline
n.right(4)==".ixx" ||
n.right(4)==".ipp" ||
n.right(4)==".i++" ||
n.right(4)==".inl"
) return Entry::SOURCE_SEC;
if (n.right(2)==".h" || // header
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