summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/classdef.cpp115
-rw-r--r--src/code.h2
-rw-r--r--src/code.l30
-rw-r--r--src/config.h235
-rw-r--r--src/config.l61
-rw-r--r--src/definition.cpp2
-rw-r--r--src/definition.h9
-rw-r--r--src/doc.l24
-rw-r--r--src/doxygen.cpp160
-rw-r--r--src/doxygen.pro.in2
-rw-r--r--src/entry.cpp2
-rw-r--r--src/entry.h43
-rw-r--r--src/ftvhelp.cpp6
-rw-r--r--src/groupdef.cpp6
-rw-r--r--src/htmlgen.cpp13
-rw-r--r--src/htmlhelp.cpp11
-rw-r--r--src/index.cpp247
-rw-r--r--src/language.cpp4
-rw-r--r--src/libdoxygen.pro.in2
-rw-r--r--src/mangen.cpp8
-rw-r--r--src/mangen.h2
-rw-r--r--src/memberdef.cpp12
-rw-r--r--src/membername.h13
-rw-r--r--src/page.h1
-rw-r--r--src/reflist.cpp9
-rw-r--r--src/reflist.h1
-rw-r--r--src/scanner.l124
-rw-r--r--src/translator.h16
-rw-r--r--src/translator_it.h45
-rw-r--r--src/translator_jp.h262
-rw-r--r--src/translator_nl.h79
-rw-r--r--src/translator_ru.h452
-rw-r--r--src/treeview.h35
-rw-r--r--src/treeview.js35
-rw-r--r--src/util.cpp20
35 files changed, 1511 insertions, 577 deletions
diff --git a/src/classdef.cpp b/src/classdef.cpp
index ac6ef43..a84d03f 100644
--- a/src/classdef.cpp
+++ b/src/classdef.cpp
@@ -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();
diff --git a/src/code.h b/src/code.h
index a5a0ea4..3458389 100644
--- a/src/code.h
+++ b/src/code.h
@@ -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
diff --git a/src/code.l b/src/code.l
index 14b738e..b8cdc69 100644
--- a/src/code.l
+++ b/src/code.l
@@ -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;
diff --git a/src/config.h b/src/config.h
index ce14ac8..fba7711 100644
--- a/src/config.h
+++ b/src/config.h
@@ -1,4 +1,4 @@
-/* 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
diff --git a/src/config.l b/src/config.l
index 7221429..e06d867 100644
--- a/src/config.l
+++ b/src/config.l
@@ -1,4 +1,4 @@
-/* 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;
@@ -1383,6 +1399,17 @@ void writeTemplateConfig(QFile *f,bool sl)
if (!sl)
{
t << "\n";
+ t << "# The GENERATE_BUGLIST tag can be used to enable (YES) or \n";
+ t << "# disable (NO) the bug list. This list is created by putting \\bug \n";
+ t << "# commands in the documentation.\n";
+ t << "\n";
+ }
+ t << "GENERATE_BUGLIST = ";
+ writeBoolValue(t,Config::generateBugList);
+ t << "\n";
+ if (!sl)
+ {
+ t << "\n";
t << "# This tag can be used to specify a number of aliases that acts \n";
t << "# as commands in the documentation. An alias has the form \"name=value\". \n";
t << "# For example adding \"sideeffect=\\par Side Effects:\\n\" will allow you to \n";
@@ -1424,6 +1451,17 @@ void writeTemplateConfig(QFile *f,bool sl)
if (!sl)
{
t << "\n";
+ t << "# Set the SHOW_USED_FILES tag to NO to disable the list of files generated \n";
+ t << "# at the bottom of the documentation of classes and structs. If set to YES the \n";
+ t << "# list will mention the files that were used to generate the documentation. \n";
+ t << "\n";
+ }
+ t << "SHOW_USED_FILES = ";
+ writeBoolValue(t,Config::showUsedFilesFlag);
+ t << "\n";
+ if (!sl)
+ {
+ t << "\n";
}
t << "#---------------------------------------------------------------------------\n";
t << "# configuration options related to warning and progress messages\n";
@@ -1746,6 +1784,27 @@ void writeTemplateConfig(QFile *f,bool sl)
if (!sl)
{
t << "\n";
+ t << "# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag \n";
+ t << "# controls whether a binary table of contents is generated (YES) or a \n";
+ t << "# normal table of contents (NO) in the .chm file.\n";
+ t << "\n";
+ }
+ t << "BINARY_TOC = ";
+ writeBoolValue(t,Config::htmlHelpTocFlag);
+ t << "\n";
+ if (!sl)
+ {
+ t << "\n";
+ t << "# The TOC_EXPAND flag can be set YES to add extra items for group members \n";
+ t << "# to the contents of the Html help documentation and to the tree view. \n";
+ t << "\n";
+ }
+ t << "TOC_EXPAND = ";
+ writeBoolValue(t,Config::htmlHelpTocExpandFlag);
+ t << "\n";
+ if (!sl)
+ {
+ t << "\n";
t << "# The DISABLE_INDEX tag can be used to turn on/off the condensed index at \n";
t << "# top of each HTML page. The value NO (the default) enables the index and \n";
t << "# the value YES disables it. \n";
diff --git a/src/definition.cpp b/src/definition.cpp
index ebd126c..3e220b2 100644
--- a/src/definition.cpp
+++ b/src/definition.cpp
@@ -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);
diff --git a/src/definition.h b/src/definition.h
index fbf5ebd..70aea3f 100644
--- a/src/definition.h
+++ b/src/definition.h
@@ -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
};
diff --git a/src/doc.l b/src/doc.l
index efeb291..90a2381 100644
--- a/src/doc.l
+++ b/src/doc.l
@@ -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)
diff --git a/src/doxygen.cpp b/src/doxygen.cpp
index 4964bc0..8d11d8e 100644
--- a/src/doxygen.cpp
+++ b/src/doxygen.cpp
@@ -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();
}
diff --git a/src/doxygen.pro.in b/src/doxygen.pro.in
index 4275ce4..11a21a4 100644
--- a/src/doxygen.pro.in
+++ b/src/doxygen.pro.in
@@ -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
diff --git a/src/entry.cpp b/src/entry.cpp
index 297831f..beb52bb 100644
--- a/src/entry.cpp
+++ b/src/entry.cpp
@@ -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;
diff --git a/src/entry.h b/src/entry.h
index 05d85c1..1dd7f91 100644
--- a/src/entry.h
+++ b/src/entry.h
@@ -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:
diff --git a/src/ftvhelp.cpp b/src/ftvhelp.cpp
index 5936894..650ff82 100644
--- a/src/ftvhelp.cpp
+++ b/src/ftvhelp.cpp
@@ -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";
diff --git a/src/groupdef.cpp b/src/groupdef.cpp
index 43ff8f3..9b0e840 100644
--- a/src/groupdef.cpp
+++ b/src/groupdef.cpp
@@ -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);
diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp
index aec995f..a0a46d7 100644
--- a/src/htmlgen.cpp
+++ b/src/htmlgen.cpp
@@ -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();
+ }
}
}
}
diff --git a/src/htmlhelp.cpp b/src/htmlhelp.cpp
index e3c2608..5d8936e 100644
--- a/src/htmlhelp.cpp
+++ b/src/htmlhelp.cpp
@@ -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 << "\">";
diff --git a/src/index.cpp b/src/index.cpp
index bdb93e2..5f372d2 100644
--- a/src/index.cpp
+++ b/src/index.cpp
@@ -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;
}
}
diff --git a/src/language.cpp b/src/language.cpp
index c6f5d78..59c1221 100644
--- a/src/language.cpp
+++ b/src/language.cpp
@@ -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)
{
diff --git a/src/libdoxygen.pro.in b/src/libdoxygen.pro.in
index 9f2dece..b5d4f59 100644
--- a/src/libdoxygen.pro.in
+++ b/src/libdoxygen.pro.in
@@ -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 \
diff --git a/src/mangen.cpp b/src/mangen.cpp
index 1a61011..63cbed0 100644
--- a/src/mangen.cpp
+++ b/src/mangen.cpp
@@ -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
diff --git a/src/mangen.h b/src/mangen.h
index 96aa174..785cd75 100644
--- a/src/mangen.h
+++ b/src/mangen.h
@@ -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() {}
diff --git a/src/memberdef.cpp b/src/memberdef.cpp
index 4489b7d..d83f236 100644
--- a/src/memberdef.cpp
+++ b/src/memberdef.cpp
@@ -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
diff --git a/src/membername.h b/src/membername.h
index 21282df..15f407c 100644
--- a/src/membername.h
+++ b/src/membername.h
@@ -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>
diff --git a/src/page.h b/src/page.h
index 1b67ca5..c448631 100644
--- a/src/page.h
+++ b/src/page.h
@@ -90,6 +90,7 @@ class PageInfo
// ids
int todoId;
int testId;
+ int bugId;
// is this page part of a group
GroupDef *inGroup;
diff --git a/src/reflist.cpp b/src/reflist.cpp
index b67628e..377ae41 100644
--- a/src/reflist.cpp
+++ b/src/reflist.cpp
@@ -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;
}
diff --git a/src/reflist.h b/src/reflist.h
index 1aa189e..837cb0a 100644
--- a/src/reflist.h
+++ b/src/reflist.h
@@ -51,5 +51,6 @@ class RefList
extern RefList todoList;
extern RefList testList;
+extern RefList bugList;
#endif
diff --git a/src/scanner.l b/src/scanner.l
index 452ee69..72cee53 100644
--- a/src/scanner.l
+++ b/src/scanner.l
@@ -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; }
@@ -3203,6 +3252,12 @@ TITLE [tT][iI][tT][lL][eE]
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)
{
current->doc += "\n\n";
@@ -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 += " ";
diff --git a/src/translator.h b/src/translator.h
index 83c3c08..fe53b35 100644
--- a/src/translator.h
+++ b/src/translator.h
@@ -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
diff --git a/src/translator_it.h b/src/translator_it.h
index c0429cf..e1a36ed 100644
--- a/src/translator_it.h
+++ b/src/translator_it.h
@@ -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
diff --git a/src/translator_jp.h b/src/translator_jp.h
index 80b1e97..c97a6af 100644
--- a/src/translator_jp.h
+++ b/src/translator_jp.h
@@ -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
diff --git a/src/translator_nl.h b/src/translator_nl.h
index e2e139b..e8ecbde 100644
--- a/src/translator_nl.h
+++ b/src/translator_nl.h
@@ -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
diff --git a/src/translator_ru.h b/src/translator_ru.h
index 919faae..641aa46 100644
--- a/src/translator_ru.h
+++ b/src/translator_ru.h
@@ -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
diff --git a/src/treeview.h b/src/treeview.h
index 213bc82..433db9e 100644
--- a/src/treeview.h
+++ b/src/treeview.h
@@ -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"
diff --git a/src/treeview.js b/src/treeview.js
index 58ca384..cc5e26a 100644
--- a/src/treeview.js
+++ b/src/treeview.js
@@ -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)
diff --git a/src/util.cpp b/src/util.cpp
index bc4e8b5..5e9f840 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -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" ||