diff options
author | Dimitri van Heesch <dimitri@stack.nl> | 2001-02-25 17:49:47 (GMT) |
---|---|---|
committer | Dimitri van Heesch <dimitri@stack.nl> | 2001-02-25 17:49:47 (GMT) |
commit | ba755dd4450d68ee0d47f6d465927b63e6dc3093 (patch) | |
tree | 0673a1c66696ceb0da0191a0e834b85eef8c50a2 /src | |
parent | d27070014e0f36246e7eec3899c7d55503b1a05a (diff) | |
download | Doxygen-ba755dd4450d68ee0d47f6d465927b63e6dc3093.zip Doxygen-ba755dd4450d68ee0d47f6d465927b63e6dc3093.tar.gz Doxygen-ba755dd4450d68ee0d47f6d465927b63e6dc3093.tar.bz2 |
Release-1.2.5-20010225
Diffstat (limited to 'src')
-rw-r--r-- | src/classdef.cpp | 115 | ||||
-rw-r--r-- | src/code.h | 2 | ||||
-rw-r--r-- | src/code.l | 30 | ||||
-rw-r--r-- | src/config.h | 235 | ||||
-rw-r--r-- | src/config.l | 61 | ||||
-rw-r--r-- | src/definition.cpp | 2 | ||||
-rw-r--r-- | src/definition.h | 9 | ||||
-rw-r--r-- | src/doc.l | 24 | ||||
-rw-r--r-- | src/doxygen.cpp | 160 | ||||
-rw-r--r-- | src/doxygen.pro.in | 2 | ||||
-rw-r--r-- | src/entry.cpp | 2 | ||||
-rw-r--r-- | src/entry.h | 43 | ||||
-rw-r--r-- | src/ftvhelp.cpp | 6 | ||||
-rw-r--r-- | src/groupdef.cpp | 6 | ||||
-rw-r--r-- | src/htmlgen.cpp | 13 | ||||
-rw-r--r-- | src/htmlhelp.cpp | 11 | ||||
-rw-r--r-- | src/index.cpp | 247 | ||||
-rw-r--r-- | src/language.cpp | 4 | ||||
-rw-r--r-- | src/libdoxygen.pro.in | 2 | ||||
-rw-r--r-- | src/mangen.cpp | 8 | ||||
-rw-r--r-- | src/mangen.h | 2 | ||||
-rw-r--r-- | src/memberdef.cpp | 12 | ||||
-rw-r--r-- | src/membername.h | 13 | ||||
-rw-r--r-- | src/page.h | 1 | ||||
-rw-r--r-- | src/reflist.cpp | 9 | ||||
-rw-r--r-- | src/reflist.h | 1 | ||||
-rw-r--r-- | src/scanner.l | 124 | ||||
-rw-r--r-- | src/translator.h | 16 | ||||
-rw-r--r-- | src/translator_it.h | 45 | ||||
-rw-r--r-- | src/translator_jp.h | 262 | ||||
-rw-r--r-- | src/translator_nl.h | 79 | ||||
-rw-r--r-- | src/translator_ru.h | 452 | ||||
-rw-r--r-- | src/treeview.h | 35 | ||||
-rw-r--r-- | src/treeview.js | 35 | ||||
-rw-r--r-- | src/util.cpp | 20 |
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(); @@ -23,9 +23,11 @@ class OutputDocInterface; class FileDef; +class MemberDef; extern void parseCode(OutputDocInterface &,const char *,const QCString &, bool ,const char *,FileDef *fd=0, int startLine=-1,int endLine=-1,bool inlineFragment=FALSE); extern void initParseCodeContext(); +extern void setParameterList(MemberDef *md); #endif @@ -379,6 +379,30 @@ static void addParameter() } } +void setParameterList(MemberDef *md) +{ + g_classScope = md->getClassDef() ? md->getClassDef()->name().data() : ""; + ArgumentList *al = md->argumentList(); + if (al==0) return; + Argument *a = al->first(); + while (a) + { + g_parmName = a->name.copy(); + g_parmType = a->type.copy(); + int i = g_parmType.find('*'); + if (i!=-1) + g_parmType = g_parmType.left(i); + i = g_parmType.find('&'); + if (i!=-1) + g_parmType = g_parmType.left(i); + if (g_parmType.left(6)=="const ") + g_parmType = g_parmType.right(g_parmType.length()-6); + g_parmType=g_parmType.stripWhiteSpace(); + addParameter(); + a = al->next(); + } +} + static void generateClassLink(OutputDocInterface &ol,char *clName,int *clNameLen=0) { int i=0; @@ -1032,9 +1056,9 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned" while (e>=0 && (text.at(e)==')' || isspace(yytext[e]))) e--; QCString varname = text.mid(s+1,e-s); QCString tmp=varname.copy(); - g_code->docify(text.left(s+1)); + g_code->codify(text.left(s+1)); generateClassLink(*g_code,tmp.data()); - g_code->docify(text.right(yyleng-e-1)); + g_code->codify(text.right(yyleng-e-1)); addType(); g_name+=varname; } @@ -1046,7 +1070,7 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned" g_name+=yytext; BEGIN( FuncCall ); } -<FuncCall,Body,MemberCall>\" { +<FuncCall,Body,MemberCall,MemberCall2>\" { startFontClass("stringliteral"); g_code->codify(yytext); g_lastStringContext=YY_START; 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 }; @@ -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> @@ -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ërarchie"; } QCString trGotoGraphicalHierarchy() { - return "Ga naar de grafische klasse hierarchie"; + return "Ga naar de grafische klasse hiërarchie"; } QCString trGotoTextualHierarchy() { - return "Ga naar de tekstuële klasse hierarchie"; + return "Ga naar de tekstuele klasse hië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+\"> </layer>\") \n" +" if(browserVersion != 3)\n" +" doc.write(\"<layer top=\"+indexOfEntries[nEntries-1].navObj.top+\"> </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+"> </layer>") + if(browserVersion != 3) + doc.write("<layer top="+indexOfEntries[nEntries-1].navObj.top+"> </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" || |