diff options
64 files changed, 1432 insertions, 163 deletions
@@ -1,4 +1,4 @@ -DOXYGEN Version 1.1.5 +DOXYGEN Version 1.1.5-20000709 CONTENTS -------- @@ -15,8 +15,8 @@ INSTALLATION INSTRUCTIONS FOR UNIX: 1. Unpack the archive, unless you already have: - gunzip doxygen-1.1.5.src.tar.gz # uncompress the archive - tar xf doxygen-1.1.5.src.tar # unpack it + gunzip doxygen-1.1.5-20000709.src.tar.gz # uncompress the archive + tar xf doxygen-1.1.5-20000709.src.tar # unpack it 2. Run the configure script: @@ -255,4 +255,4 @@ The latest version of doxygen can be obtained at Enjoy, -Dimitri van Heesch (02 July 2000) +Dimitri van Heesch (09 July 2000) @@ -1,4 +1,4 @@ -DOXYGEN Version 1.1.5 +DOXYGEN Version 1.1.5-20000709 Please read INSTALL for compilation instructions. @@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at Enjoy, -Dimitri van Heesch (02 July 2000) +Dimitri van Heesch (09 July 2000) @@ -1 +1 @@ -1.1.5 +1.1.5-20000709 diff --git a/addon/configgen/config_templ.l b/addon/configgen/config_templ.l index e3c6b03..6ba22a6 100644 --- a/addon/configgen/config_templ.l +++ b/addon/configgen/config_templ.l @@ -326,9 +326,9 @@ void configStrToVal() "Using the default of 1024 pixels!\n"); width=1024; } - else if (width<250) // clip to lower bound + else if (width<100) // clip to lower bound { - width=250; + width=100; } else if (width>30000) // clip to upper bound { @@ -351,9 +351,9 @@ void configStrToVal() "Using the default of 1024 pixels!\n"); height=1024; } - else if (height<250) // clip to lower bound + else if (height<100) // clip to lower bound { - height=250; + height=100; } else if (height>30000) // clip to upper bound { @@ -625,6 +625,28 @@ void checkConfig() err("Could not create output directory %s\n",Config::manOutputDir.data()); exit(1); } + + // expand the relative stripFromPath values + char *sfp = Config::stripFromPath.first(); + while (sfp) + { + QCString path = sfp; + if (path.at(0)!='/' && (path.length()<=2 || path.at(1)!=':')) + { + QFileInfo fi(path); + if (fi.exists() && fi.isDir()) + { + int i = Config::stripFromPath.at(); + Config::stripFromPath.remove(); + if (Config::stripFromPath.at()==i) // did not remove last item + Config::stripFromPath.insert(i,fi.absFilePath()+"/"); + else + Config::stripFromPath.append(fi.absFilePath()+"/"); + } + } + sfp = Config::stripFromPath.next(); + } + // Test to see if HTML header is valid if (!Config::headerFile.isEmpty()) diff --git a/addon/configgen/configgen.cpp b/addon/configgen/configgen.cpp index 003ee1b..4f90610 100644 --- a/addon/configgen/configgen.cpp +++ b/addon/configgen/configgen.cpp @@ -762,7 +762,7 @@ void init() "information to generate all constant output in the proper language. \n" "The default language is English, other supported languages are: \n" "Dutch, French, Italian, Czech, Swedish, German, Finnish, Japanese, \n" - "Spanish and Russian\n" + "Spanish, Russian, Croatian and Polish.\n" ); ConfigString::addFixedValue("outputLanguage","English"); ConfigString::addFixedValue("outputLanguage","Dutch"); @@ -771,11 +771,12 @@ void init() ConfigString::addFixedValue("outputLanguage","Czech"); ConfigString::addFixedValue("outputLanguage","Swedish"); ConfigString::addFixedValue("outputLanguage","German"); - ConfigString::addFixedValue("outputLanguage","Russian"); - ConfigString::addFixedValue("outputLanguage","Japanese"); ConfigString::addFixedValue("outputLanguage","Finnish"); + ConfigString::addFixedValue("outputLanguage","Japanese"); ConfigString::addFixedValue("outputLanguage","Spanish"); + ConfigString::addFixedValue("outputLanguage","Russian"); ConfigString::addFixedValue("outputLanguage","Croatian"); + ConfigString::addFixedValue("outputLanguage","Polish"); ConfigBool::add( "noIndexFlag", "DISABLE_INDEX", "FALSE", @@ -821,7 +822,7 @@ void init() "HIDE_UNDOC_CLASSES", "FALSE", "hide undocumented members.", - "If the HIDE_UNDOC_CLASSESS tag is set to YES, Doxygen will hide all \n" + "If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all \n" "undocumented classes that are normally visible in the class hierarchy. \n" "If set to NO (the default) these class will be included in the various \n" "overviews. This option has no effect if EXTRACT_ALL is enabled. \n" @@ -1555,7 +1556,7 @@ void init() "this value, doxygen will try to truncate the graph, so that it fits within \n" "the specified constraint. Beware that most browsers cannot cope with very \n" "large images. \n", - 250,30000 + 100,30000 ); addDependency("maxDotGraphWidth","haveDotFlag"); ConfigInt::add( "maxDotGraphHeight", @@ -1567,7 +1568,7 @@ void init() "this value, doxygen will try to truncate the graph, so that it fits within \n" "the specified constraint. Beware that most browsers cannot cope with very \n" "large images. \n", - 250,30000 + 100,30000 ); addDependency("maxDotGraphHeight","haveDotFlag"); @@ -354,7 +354,9 @@ if test "$f_shared" = NO; then TMAKE_LFLAGS = -non_shared EOF elif test "$f_platform" = "solaris-cc"; then + cat >> .tmakeconfig <<EOF TMAKE_LFLAGS = -Bstatic +EOF else cat >> .tmakeconfig <<EOF TMAKE_LFLAGS = -static diff --git a/doc/Doxyfile b/doc/Doxyfile index ecd986a..d3aa4bc 100644 --- a/doc/Doxyfile +++ b/doc/Doxyfile @@ -25,6 +25,7 @@ GENERATE_MAN = NO GENERATE_LATEX = YES GENERATE_HTML = YES GENERATE_HTMLHELP = YES +GENERATE_RTF = NO ENABLE_PREPROCESSING = NO INPUT = index.doc install.doc starting.doc faq.doc trouble.doc \ history.doc features.doc \ diff --git a/doc/commands.doc b/doc/commands.doc index b275909..5617c5b 100644 --- a/doc/commands.doc +++ b/doc/commands.doc @@ -685,12 +685,17 @@ Public/Protected/Private/... section. sectioning command is encountered. <hr> -\subsection cmdpar \par (paragraph title) { paragraph } +\subsection cmdpar \par [(paragraph title)] { paragraph } \addindex \par - Starts a paragraph with a user defined heading. The heading is - specified using the paragraph title argument and extends until the end of the - line. The paragraph will be indented. + If a paragraph title is given this command starts a paragraph with a + user defined heading. The heading extends until the end of the + line. The paragraph following the command will be indented. + + If no paragraph title is given this command will start a new paragraph. + This will also work inside other paragraph commands + (like \\param or \\warning) without ending the that command. + The text of the paragraph has no special internal structure. All visual enhancement commands may be used inside the paragraph. The \\par command ends when a blank line or some other diff --git a/doc/config.doc b/doc/config.doc index 99cf664..fa9d86b 100644 --- a/doc/config.doc +++ b/doc/config.doc @@ -188,7 +188,8 @@ followed by the descriptions of the tags grouped by category. documentation generated by doxygen is written. Doxygen will use this information to generate all constant output in the proper language. The default language is English, other supported languages are: - Dutch, French, Italian, Czech, Swedish, German and Japanese. + Dutch, French, Italian, Czech, Swedish, German, Finnish, Japanese, + Spanish, Russian, Croatian and Polish. \anchor cfg_disable_index <dt>\c DISABLE_INDEX <dd> diff --git a/doc/language.doc b/doc/language.doc index c3e04ca..9beb124 100644 --- a/doc/language.doc +++ b/doc/language.doc @@ -182,6 +182,20 @@ Here is a list of the languages and their current maintainers: <TR BGCOLOR="#ffffff"> <TD> + Polish + </TD> + <TD> + Grzegorz Kowal + </TD> + <TD> + <a href="mailto:g_kowal@NOSPAM.poczta.onet.pl"> + g_kowal@NOSPAM.poczta.onet.pl</a> + </TD> + </TR> + + + <TR BGCOLOR="#ffffff"> + <TD> Dutch </TD> <TD> @@ -227,6 +241,8 @@ Here is a list of the languages and their current maintainers: \hline Croatian & Boris Bralo & {\tt boris.bralo@zg.tel.hr} \\ \hline + Polish & Grzegorz Kowal & {\tt g\_kowal@poczta.onet.pl} \\ + \hline Dutch & Dimitri van Heesch & {\tt dimitri@stack.nl} \\ \hline \end{tabular} diff --git a/examples/afterdoc.cfg b/examples/afterdoc.cfg index 9ebe07a..c81b7e6 100644 --- a/examples/afterdoc.cfg +++ b/examples/afterdoc.cfg @@ -2,5 +2,6 @@ PROJECT_NAME = "AfterDocs" OUTPUT_DIRECTORY = afterdoc GENERATE_LATEX = NO GENERATE_MAN = NO +GENERATE_RTF = NO INPUT = afterdoc.h QUIET = YES diff --git a/examples/author.cfg b/examples/author.cfg index f099903..427f507 100644 --- a/examples/author.cfg +++ b/examples/author.cfg @@ -2,5 +2,6 @@ PROJECT_NAME = "Author Command" OUTPUT_DIRECTORY = author GENERATE_LATEX = NO GENERATE_MAN = NO +GENERATE_RTF = NO INPUT = author.cpp QUIET = YES diff --git a/examples/autolink.cfg b/examples/autolink.cfg index ff77f83..46cc432 100644 --- a/examples/autolink.cfg +++ b/examples/autolink.cfg @@ -2,5 +2,6 @@ PROJECT_NAME = "Automatic link generation" OUTPUT_DIRECTORY = autolink GENERATE_LATEX = NO GENERATE_MAN = NO +GENERATE_RTF = NO INPUT = autolink.cpp QUIET = YES diff --git a/examples/class.cfg b/examples/class.cfg index dfc59eb..0402271 100644 --- a/examples/class.cfg +++ b/examples/class.cfg @@ -2,5 +2,6 @@ PROJECT_NAME = "Class Command" OUTPUT_DIRECTORY = class GENERATE_LATEX = NO GENERATE_MAN = NO +GENERATE_RTF = NO INPUT = class.h QUIET = YES diff --git a/examples/define.cfg b/examples/define.cfg index 4960748..711a29e 100644 --- a/examples/define.cfg +++ b/examples/define.cfg @@ -2,6 +2,7 @@ PROJECT_NAME = "Define Command" OUTPUT_DIRECTORY = define GENERATE_LATEX = NO GENERATE_MAN = NO +GENERATE_RTF = NO INPUT = define.h ENABLE_PREPROCESSING = YES QUIET = YES diff --git a/examples/diagrams.cfg b/examples/diagrams.cfg index dd510bd..9a346d6 100644 --- a/examples/diagrams.cfg +++ b/examples/diagrams.cfg @@ -4,6 +4,7 @@ HAVE_DOT = YES EXTRACT_ALL = YES GENERATE_LATEX = NO GENERATE_MAN = NO +GENERATE_RTF = NO ENABLE_PREPROCESSING = YES INPUT = . FILE_PATTERNS = diagrams_*.h diff --git a/examples/enum.cfg b/examples/enum.cfg index b38291a..718ed85 100644 --- a/examples/enum.cfg +++ b/examples/enum.cfg @@ -2,5 +2,6 @@ PROJECT_NAME = "Enum Command" OUTPUT_DIRECTORY = enum GENERATE_LATEX = NO GENERATE_MAN = NO +GENERATE_RTF = NO INPUT = enum.h QUIET = YES diff --git a/examples/example.cfg b/examples/example.cfg index dc4cb86..06d5b0b 100644 --- a/examples/example.cfg +++ b/examples/example.cfg @@ -3,6 +3,7 @@ OUTPUT_DIRECTORY = example GENERATE_TAGFILE = example.tag GENERATE_LATEX = NO GENERATE_MAN = NO +GENERATE_RTF = NO INPUT = example.cpp EXAMPLE_PATH = example_test.cpp QUIET = YES diff --git a/examples/file.cfg b/examples/file.cfg index 52b766a..f0604e6 100644 --- a/examples/file.cfg +++ b/examples/file.cfg @@ -2,5 +2,6 @@ PROJECT_NAME = "File Command" OUTPUT_DIRECTORY = file GENERATE_LATEX = NO GENERATE_MAN = NO +GENERATE_RTF = NO INPUT = file.h QUIET = YES diff --git a/examples/func.cfg b/examples/func.cfg index 44d67c6..3c85e6a 100644 --- a/examples/func.cfg +++ b/examples/func.cfg @@ -2,5 +2,6 @@ PROJECT_NAME = "Fn Command" OUTPUT_DIRECTORY = func GENERATE_LATEX = NO GENERATE_MAN = NO +GENERATE_RTF = NO INPUT = func.h QUIET = YES diff --git a/examples/group.cfg b/examples/group.cfg index 6f75c75..f9662f8 100644 --- a/examples/group.cfg +++ b/examples/group.cfg @@ -2,5 +2,6 @@ PROJECT_NAME = "Grouping" OUTPUT_DIRECTORY = group GENERATE_LATEX = NO GENERATE_MAN = NO +GENERATE_RTF = NO INPUT = group.cpp QUIET = YES diff --git a/examples/include.cfg b/examples/include.cfg index c4f997e..9f27384 100644 --- a/examples/include.cfg +++ b/examples/include.cfg @@ -2,6 +2,7 @@ PROJECT_NAME = "Include Command" OUTPUT_DIRECTORY = include GENERATE_LATEX = NO GENERATE_MAN = NO +GENERATE_RTF = NO INPUT = include.cpp EXAMPLE_PATH = example_test.cpp QUIET = YES diff --git a/examples/jdstyle.cfg b/examples/jdstyle.cfg index 833a4aa..f5c8bac 100644 --- a/examples/jdstyle.cfg +++ b/examples/jdstyle.cfg @@ -2,5 +2,6 @@ PROJECT_NAME = "JavaDoc Style" OUTPUT_DIRECTORY = jdstyle GENERATE_LATEX = NO GENERATE_MAN = NO +GENERATE_RTF = NO INPUT = jdstyle.cpp QUIET = YES diff --git a/examples/memgrp.cfg b/examples/memgrp.cfg index 6b0bdb7..20fa462 100644 --- a/examples/memgrp.cfg +++ b/examples/memgrp.cfg @@ -2,5 +2,6 @@ PROJECT_NAME = "Member Grouping" OUTPUT_DIRECTORY = memgrp GENERATE_LATEX = NO GENERATE_MAN = NO +GENERATE_RTF = NO INPUT = memgrp.cpp QUIET = YES diff --git a/examples/overload.cfg b/examples/overload.cfg index 690edae..e0ddd66 100644 --- a/examples/overload.cfg +++ b/examples/overload.cfg @@ -2,5 +2,6 @@ PROJECT_NAME = "Overloaded Command" OUTPUT_DIRECTORY = overload GENERATE_LATEX = NO GENERATE_MAN = NO +GENERATE_RTF = NO INPUT = overload.cpp QUIET = YES diff --git a/examples/page.cfg b/examples/page.cfg index 40a8869..27dcd49 100644 --- a/examples/page.cfg +++ b/examples/page.cfg @@ -2,5 +2,6 @@ PROJECT_NAME = "Page Command" OUTPUT_DIRECTORY = page GENERATE_LATEX = NO GENERATE_MAN = NO +GENERATE_RTF = NO INPUT = page.doc QUIET = YES diff --git a/examples/par.cfg b/examples/par.cfg index 76dab9f..08ebdc6 100644 --- a/examples/par.cfg +++ b/examples/par.cfg @@ -2,5 +2,6 @@ PROJECT_NAME = "Par Command" OUTPUT_DIRECTORY = par GENERATE_LATEX = NO GENERATE_MAN = NO +GENERATE_RTF = NO INPUT = par.cpp QUIET = YES diff --git a/examples/par.cpp b/examples/par.cpp index 144d1af..6fd2c4e 100644 --- a/examples/par.cpp +++ b/examples/par.cpp @@ -1,8 +1,19 @@ /*! \class Test * Normal text. + * * \par User defined paragraph: * Contents of the paragraph. * + * \par + * New paragraph under the same heading. + * + * \note + * This note consists of two paragraphs. + * This is the first paragraph. + * + * \par + * And this is the second paragraph. + * * More normal text. */ diff --git a/examples/qtstyle.cfg b/examples/qtstyle.cfg index 6d20b53..2760ba7 100644 --- a/examples/qtstyle.cfg +++ b/examples/qtstyle.cfg @@ -2,5 +2,6 @@ PROJECT_NAME = "Qt Style" OUTPUT_DIRECTORY = qtstyle GENERATE_LATEX = NO GENERATE_MAN = NO +GENERATE_RTF = NO INPUT = qtstyle.cpp QUIET = YES diff --git a/examples/relates.cfg b/examples/relates.cfg index 83e2be5..60dc8c9 100644 --- a/examples/relates.cfg +++ b/examples/relates.cfg @@ -2,5 +2,6 @@ PROJECT_NAME = "Relates Command" OUTPUT_DIRECTORY = relates GENERATE_LATEX = NO GENERATE_MAN = NO +GENERATE_RTF = NO INPUT = relates.cpp QUIET = YES diff --git a/examples/restypedef.cfg b/examples/restypedef.cfg index f17ba4d..613a727 100644 --- a/examples/restypedef.cfg +++ b/examples/restypedef.cfg @@ -2,5 +2,6 @@ PROJECT_NAME = "Resolving Typedefs" OUTPUT_DIRECTORY = restypedef GENERATE_LATEX = NO GENERATE_MAN = NO +GENERATE_RTF = NO INPUT = restypedef.cpp QUIET = YES diff --git a/examples/structcmd.cfg b/examples/structcmd.cfg index bbc4e71..b6803f5 100644 --- a/examples/structcmd.cfg +++ b/examples/structcmd.cfg @@ -2,5 +2,6 @@ PROJECT_NAME = "Structural commands" OUTPUT_DIRECTORY = structcmd GENERATE_LATEX = NO GENERATE_MAN = NO +GENERATE_RTF = NO INPUT = structcmd.h QUIET = YES diff --git a/examples/tag.cfg b/examples/tag.cfg index 79c2ec0..2e338e4 100644 --- a/examples/tag.cfg +++ b/examples/tag.cfg @@ -2,6 +2,7 @@ PROJECT_NAME = "Tag Files" OUTPUT_DIRECTORY = tag GENERATE_LATEX = NO GENERATE_MAN = NO +GENERATE_RTF = NO INPUT = tag.cpp TAGFILES = example.tag PERL_PATH = perl diff --git a/examples/templ.cfg b/examples/templ.cfg index ec16654..4f3e254 100644 --- a/examples/templ.cfg +++ b/examples/templ.cfg @@ -2,5 +2,6 @@ PROJECT_NAME = "Template Test" OUTPUT_DIRECTORY = template GENERATE_LATEX = NO GENERATE_MAN = NO +GENERATE_RTF = NO INPUT = templ.cpp QUIET = YES diff --git a/packages/rpm/doxygen.spec b/packages/rpm/doxygen.spec index eeb5dfc..e61fd26 100644 --- a/packages/rpm/doxygen.spec +++ b/packages/rpm/doxygen.spec @@ -1,5 +1,5 @@ Name: doxygen -Version: 1.1.5 +Version: 1.1.5-20000709 Summary: documentation system for C, C++ and IDL Release: 1 Source0: doxygen-%{version}.src.tar.gz diff --git a/src/classdef.cpp b/src/classdef.cpp index 558d33b..9d66246 100644 --- a/src/classdef.cpp +++ b/src/classdef.cpp @@ -45,7 +45,7 @@ static QCString stripExtension(const char *fName) ClassDef::ClassDef( const char *defFileName,int defLine, const char *nm,CompoundType ct, - const char *ref,const char *fName) + const char *lref,const char *fName) : Definition(defFileName,defLine,removeRedundantWhiteSpace(nm)) { //name=n; @@ -53,9 +53,9 @@ ClassDef::ClassDef( fileName=stripExtension(fName); else fileName="class_"+nameToFile(nm); - if (ref) + if (lref) { - //url=(QCString)"doxygen=\""+ref+":\" href=\""+fileName; + //url=(QCString)"doxygen=\""+lref+":\" href=\""+fileName; exampleList = 0; exampleDict = 0; } @@ -74,7 +74,7 @@ ClassDef::ClassDef( allMemberNameInfoList->setAutoDelete(TRUE); allMemberNameInfoDict = new MemberNameInfoDict(1009); visited=FALSE; - setReference(ref); + setReference(lref); compType=ct; incInfo=0; tempArgs=0; @@ -551,17 +551,17 @@ static void writeInheritanceSpecifier(OutputList &ol,BaseClassDef *bcd) } } -void ClassDef::setIncludeFile(FileDef *fd,const char *incName,bool local) +void ClassDef::setIncludeFile(FileDef *fd,const char *includeName,bool local) { - //printf("ClassDef::setInclude(%p,%s,%d)\n",fd,incName,local); + //printf("ClassDef::setInclude(%p,%s,%d)\n",fd,includeName,local); if (!incInfo) incInfo=new IncludeInfo; - if ((incName && incInfo->includeName.isEmpty()) || + if ((includeName && incInfo->includeName.isEmpty()) || (fd!=0 && incInfo->fileDef==0) ) { //printf("Setting file info\n"); incInfo->fileDef = fd; - incInfo->includeName = incName; + incInfo->includeName = includeName; incInfo->local = local; } } @@ -776,6 +776,14 @@ void ClassDef::writeDocumentation(OutputList &ol) ol.startDotGraph(); parseText(ol,theTranslator->trClassDiagram(name())); ol.endDotGraph(inheritanceGraph); + { + ol.pushGeneratorState(); + ol.disableAllBut(OutputGenerator::Html); + ol.writeString("<font size=2><center>["); + ol.writeHtmlLink("graph_legend.html",theTranslator->trLegend()); + ol.writeString("]</center></font>"); + ol.popGeneratorState(); + } ol.popGeneratorState(); } } @@ -800,6 +808,14 @@ void ClassDef::writeDocumentation(OutputList &ol) ol.startDotGraph(); parseText(ol,theTranslator->trCollaborationDiagram(name())); ol.endDotGraph(usageImplGraph); + { + ol.pushGeneratorState(); + ol.disableAllBut(OutputGenerator::Html); + ol.writeString("<font size=2><center>["); + ol.writeHtmlLink("graph_legend.html",theTranslator->trLegend()); + ol.writeString("]</center></font>"); + ol.popGeneratorState(); + } ol.popGeneratorState(); } } diff --git a/src/config.l b/src/config.l index 57064e7..2a2174e 100644 --- a/src/config.l +++ b/src/config.l @@ -829,7 +829,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# information to generate all constant output in the proper language. \n"; t << "# The default language is English, other supported languages are: \n"; t << "# Dutch, French, Italian, Czech, Swedish, German, Finnish, Japanese, \n"; - t << "# Spanish and Russian\n"; + t << "# Spanish, Russian, Croatian and Polish.\n"; t << "\n"; } t << "OUTPUT_LANGUAGE = "; @@ -894,7 +894,7 @@ void writeTemplateConfig(QFile *f,bool sl) if (!sl) { t << "\n"; - t << "# If the HIDE_UNDOC_CLASSESS tag is set to YES, Doxygen will hide all \n"; + t << "# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all \n"; t << "# undocumented classes that are normally visible in the class hierarchy. \n"; t << "# If set to NO (the default) these class will be included in the various \n"; t << "# overviews. This option has no effect if EXTRACT_ALL is enabled. \n"; @@ -1994,9 +1994,9 @@ void configStrToVal() "Using the default of 1024 pixels!\n"); width=1024; } - else if (width<250) // clip to lower bound + else if (width<100) // clip to lower bound { - width=250; + width=100; } else if (width>30000) // clip to upper bound { @@ -2019,9 +2019,9 @@ void configStrToVal() "Using the default of 1024 pixels!\n"); height=1024; } - else if (height<250) // clip to lower bound + else if (height<100) // clip to lower bound { - height=250; + height=100; } else if (height>30000) // clip to upper bound { @@ -2333,6 +2333,28 @@ void checkConfig() err("Could not create output directory %s\n",Config::manOutputDir.data()); exit(1); } + + // expand the relative stripFromPath values + char *sfp = Config::stripFromPath.first(); + while (sfp) + { + QCString path = sfp; + if (path.at(0)!='/' && (path.length()<=2 || path.at(1)!=':')) + { + QFileInfo fi(path); + if (fi.exists() && fi.isDir()) + { + int i = Config::stripFromPath.at(); + Config::stripFromPath.remove(); + if (Config::stripFromPath.at()==i) // did not remove last item + Config::stripFromPath.insert(i,fi.absFilePath()+"/"); + else + Config::stripFromPath.append(fi.absFilePath()+"/"); + } + } + sfp = Config::stripFromPath.next(); + } + // Test to see if HTML header is valid if (!Config::headerFile.isEmpty()) diff --git a/src/defargs.l b/src/defargs.l index 88e4148..05a26b6 100644 --- a/src/defargs.l +++ b/src/defargs.l @@ -270,7 +270,7 @@ ID [a-z_A-Z][a-z_A-Z0-9]* { a->type = g_curArgTypeName.stripWhiteSpace(); } - a->array = g_curArgArray.copy(); + a->array = removeRedundantWhiteSpace(g_curArgArray); a->defval = g_curArgDefValue.copy(); a->docs = g_curArgDocs.stripWhiteSpace(); //printf("Argument `%s' `%s' adding docs=`%s'\n",a->type.data(),a->name.data(),a->docs.data()); diff --git a/src/definition.cpp b/src/definition.cpp index 1d663ab..4b96f04 100644 --- a/src/definition.cpp +++ b/src/definition.cpp @@ -324,21 +324,22 @@ void Definition::writeSourceRefs(OutputList &ol,const char *scopeName) parseText(ol,theTranslator->trReferencedBy()); ol.docify(" "); - QCString defLine=theTranslator->trWriteList(sourceRefList->count()); + QCString ldefLine=theTranslator->trWriteList(sourceRefList->count()); QRegExp marker("@[0-9]+"); int index=0,newIndex,matchLen; // now replace all markers in inheritLine with links to the classes - while ((newIndex=marker.match(defLine,index,&matchLen))!=-1) + while ((newIndex=marker.match(ldefLine,index,&matchLen))!=-1) { bool ok; - parseText(ol,defLine.mid(index,newIndex-index)); - uint entryIndex = defLine.mid(newIndex+1,matchLen-1).toUInt(&ok); + parseText(ol,ldefLine.mid(index,newIndex-index)); + uint entryIndex = ldefLine.mid(newIndex+1,matchLen-1).toUInt(&ok); MemberDef *md=sourceRefList->at(entryIndex); if (ok && md) { QCString scope=md->getScopeString(); QCString name=md->name(); + //printf("class=%p scope=%s scopeName=%s\n",md->memberClass(),scope.data(),scopeName); if (!scope.isEmpty() && scope!=scopeName) { name.prepend(scope+"::"); @@ -358,7 +359,7 @@ void Definition::writeSourceRefs(OutputList &ol,const char *scopeName) } index=newIndex+matchLen; } - parseText(ol,defLine.right(defLine.length()-index)); + parseText(ol,ldefLine.right(ldefLine.length()-index)); ol.writeString("."); } ol.popGeneratorState(); diff --git a/src/dot.cpp b/src/dot.cpp index 207aa38..996bf32 100644 --- a/src/dot.cpp +++ b/src/dot.cpp @@ -23,6 +23,8 @@ #include "message.h" #include "util.h" #include "config.h" +#include "language.h" +#include "scanner.h" #include <qdir.h> #include <qfile.h> @@ -55,7 +57,11 @@ static const char *edgeStyleMap[] = static bool convertMapFile(QTextStream &t,const char *mapName) { QFile f(mapName); - if (!f.open(IO_ReadOnly)) return FALSE; + if (!f.open(IO_ReadOnly)) + { + err("Error opening map file %s for inclusion in the docs!\n",mapName); + return FALSE; + } const int maxLineLen=1024; char buf[maxLineLen]; char url[maxLineLen]; @@ -1016,11 +1022,10 @@ static void findMaximalDotGraph(DotNode *root, // remove temporary dot file thisDir.remove(baseName+"_tmp.dot"); - } while (maxDistance-minDistance>1); + } while ((maxDistance-minDistance)>1); if (!lastFit) { - //printf("Using last fit %d\n",minDistance); writeDotGraph(root, format, baseName, @@ -1082,6 +1087,7 @@ void DotClassGraph::writeGraph(QTextStream &out, if (system(dotCmd)!=0) { err("Error: Problems running dot. Check your installation!\n"); + QDir::setCurrent(oldDir); return; } // run dot again to create an image map @@ -1090,6 +1096,7 @@ void DotClassGraph::writeGraph(QTextStream &out, if (system(dotCmd)!=0) { err("Error: Problems running dot. Check your installation!\n"); + QDir::setCurrent(oldDir); return; } out << "<p><center><img src=\"" << baseName << ".gif\" border=\"0\" usemap=\"#" @@ -1101,18 +1108,20 @@ void DotClassGraph::writeGraph(QTextStream &out, } else if (format==EPS) // run dot to create a .eps image { - QCString dotCmd; + QCString dotCmd(4096); dotCmd.sprintf("%sdot -Tps \"%s.dot\" -o \"%s.eps\"", Config::dotPath.data(),baseName.data(),baseName.data()); if (system(dotCmd)!=0) { err("Error: Problems running dot. Check your installation!\n"); + QDir::setCurrent(oldDir); return; } int width,height; if (!readBoundingBoxEPS(baseName+".eps",&width,&height)) { err("Error: Could not extract bounding box from .eps!\n"); + QDir::setCurrent(oldDir); return; } int maxWidth = 420; /* approx. page width in points */ @@ -1125,7 +1134,7 @@ void DotClassGraph::writeGraph(QTextStream &out, "\\end{center}\n" "\\end{figure}\n"; } - thisDir.remove(baseName+".dot"); + //thisDir.remove(baseName+".dot"); QDir::setCurrent(oldDir); } @@ -1240,12 +1249,13 @@ void DotInclDepGraph::writeGraph(QTextStream &out, if (format==GIF) { // run dot to create a .gif image - QCString dotCmd; + QCString dotCmd(4096); dotCmd.sprintf("%sdot -Tgif \"%s.dot\" -o \"%s.gif\"", Config::dotPath.data(),baseName.data(),baseName.data()); if (system(dotCmd)!=0) { err("Problems running dot. Check your installation!\n"); + QDir::setCurrent(oldDir); return; } @@ -1255,11 +1265,13 @@ void DotInclDepGraph::writeGraph(QTextStream &out, if (system(dotCmd)!=0) { err("Problems running dot. Check your installation!\n"); + QDir::setCurrent(oldDir); return; } out << "<p><center><img src=\"" << baseName << ".gif\" border=\"0\" usemap=\"#" - << mapName << "_map\"></center>" << endl; + << mapName << "_map\">"; + out << "</center>" << endl; out << "<map name=\"" << mapName << "_map\">" << endl; convertMapFile(out,baseName+".map"); out << "</map><p>" << endl; @@ -1268,18 +1280,20 @@ void DotInclDepGraph::writeGraph(QTextStream &out, else if (format==EPS) { // run dot to create a .eps image - QCString dotCmd; + QCString dotCmd(4096); dotCmd.sprintf("%sdot -Tps \"%s.dot\" -o \"%s.eps\"", Config::dotPath.data(),baseName.data(),baseName.data()); if (system(dotCmd)!=0) { err("Problems running dot. Check your installation!\n"); + QDir::setCurrent(oldDir); return; } int width,height; if (!readBoundingBoxEPS(baseName+".eps",&width,&height)) { err("Error: Could not extract bounding box from .eps!\n"); + QDir::setCurrent(oldDir); return; } int maxWidth = 420; /* approx. page width in points */ @@ -1302,3 +1316,57 @@ bool DotInclDepGraph::isTrivial() const { return m_startNode->m_children==0; } + +//------------------------------------------------------------- + +void generateGraphLegend(const char *path) +{ + QFile dotFile((QCString)path+"/graph_legend.dot"); + if (!dotFile.open(IO_WriteOnly)) + { + err("Could not open file %s for writing\n", + convertToQCString(dotFile.name()).data()); + return; + } + QTextStream dotText(&dotFile); + dotText << "digraph inheritance\n"; + dotText << "{\n"; + dotText << " Node7 [shape=\"box\",label=\"Inherited\",fontsize=10,height=0.2,width=0.4,fontname=\"doxfont\",color=\"black\",style=\"filled\" fontcolor=\"white\"];\n"; + dotText << " Node8 -> Node7 [dir=back,color=\"midnightblue\",fontsize=10,style=\"solid\",fontname=\"doxfont\"];\n"; + dotText << " Node8 [shape=\"box\",label=\"PublicBase\",fontsize=10,height=0.2,width=0.4,fontname=\"doxfont\",color=\"black\",URL=\"$class_publicbase.html\"];\n"; + dotText << " Node9 -> Node8 [dir=back,color=\"midnightblue\",fontsize=10,style=\"solid\",fontname=\"doxfont\"];\n"; + dotText << " Node9 [shape=\"box\",label=\"Truncated\",fontsize=10,height=0.2,width=0.4,fontname=\"doxfont\",color=\"red\",URL=\"$class_truncated.html\"];\n"; + dotText << " Node11 -> Node7 [dir=back,color=\"darkgreen\",fontsize=10,style=\"solid\",fontname=\"doxfont\"];\n"; + dotText << " Node11 [shape=\"box\",label=\"ProtectedBase\",fontsize=10,height=0.2,width=0.4,fontname=\"doxfont\",color=\"black\",URL=\"$class_protectedbase.html\"];\n"; + dotText << " Node12 -> Node7 [dir=back,color=\"firebrick4\",fontsize=10,style=\"solid\",fontname=\"doxfont\"];\n"; + dotText << " Node12 [shape=\"box\",label=\"PrivateBase\",fontsize=10,height=0.2,width=0.4,fontname=\"doxfont\",color=\"black\",URL=\"$class_privatebase.html\"];\n"; + dotText << " Node13 -> Node7 [dir=back,color=\"midnightblue\",fontsize=10,style=\"solid\",fontname=\"doxfont\"];\n"; + dotText << " Node13 [shape=\"box\",label=\"Undocumented\",fontsize=10,height=0.2,width=0.4,fontname=\"doxfont\",color=\"grey\"];\n"; + dotText << " Node14 -> Node7 [dir=back,color=\"darkorchid3\",fontsize=10,style=\"dashed\",label=\"m_usedClass\",fontname=\"doxfont\"];\n"; + dotText << " Node14 [shape=\"box\",label=\"Used\",fontsize=10,height=0.2,width=0.4,fontname=\"doxfont\",color=\"black\",URL=\"$class_used.html\"];\n"; + dotText << "}\n"; + dotFile.close(); + + QDir d(path); + // store the original directory + if (!d.exists()) + { + err("Error: Output dir %s does not exist!\n",path); exit(1); + } + QCString oldDir = convertToQCString(QDir::currentDirPath()); + // goto the html output directory (i.e. path) + QDir::setCurrent(d.absPath()); + + // run dot to generate the a .gif image from the graph + QCString dotCmd(4096); + dotCmd.sprintf("%sdot -Tgif graph_legend.dot -o graph_legend.gif", + Config::dotPath.data()); + if (system(dotCmd)!=0) + { + err("Problems running dot. Check your installation!\n"); + QDir::setCurrent(oldDir); + return; + } + QDir::setCurrent(oldDir); +} + @@ -154,3 +154,6 @@ class DotInclDepGraph int m_maxDistance; bool m_inverse; }; + +void generateGraphLegend(const char *path); + diff --git a/src/doxygen.cpp b/src/doxygen.cpp index 31e012b..ae77a91 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -656,6 +656,7 @@ static void buildNamespaceList(Entry *root) FileDef *fd=findFileDef(inputNameDict,root->fileName,ambig); // insert the namespace in the file definition if (fd) fd->insertNamespace(nd); + addNamespaceToGroups(root,nd); } else /* if (!root->doc.isEmpty() || !root->brief.isEmpty() || @@ -1493,7 +1494,10 @@ static void buildMemberList(Entry *root) } else if (root->parent && !(root->parent->section & Entry::COMPOUND_MASK) && - root->name.find("::")==-1 && + root->name.find("::")==-1 && // TODO: remove this check + // it breaks cases like + // func<A::B>(), but it is needed + // for detect that A::func() is a member root->relates.isEmpty() && root->type.left(7)!="extern " && root->type.left(8)!="typedef " @@ -2678,7 +2682,9 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl } namespaceName=removeAnnonymousScopes(namespaceName); + //printf("namespaceName=`%s' className=`%s'\n",namespaceName.data(),className.data()); // merge class and namespace scopes again + scopeName.resize(0); if (!namespaceName.isEmpty()) { if (className.isEmpty()) @@ -3292,14 +3298,14 @@ static void findMemberDocumentation(Entry *root) if (!root->type.isEmpty()) { - findMember(root, - root->type+" "+ - root->inside+ - root->name+ - root->args+ - root->exception, - root->relates, - FALSE,isFunc); + findMember(root, + root->type+" "+ + root->inside+ + root->name+ + root->args+ + root->exception, + root->relates, + FALSE,isFunc); } else { @@ -4576,8 +4582,8 @@ static void generateSearchIndex() if (f.open(IO_WriteOnly)) { QTextStream t(&f); - t << Config::docURL << endl << Config::cgiURL - << "/" << Config::cgiName << endl; + t << Config::docURL << "/" << endl + << Config::cgiURL << "/" << Config::cgiName << endl; f.close(); } else @@ -5112,7 +5118,7 @@ int main(int argc,char **argv) #endif initPreprocessor(); - + /************************************************************************** * Handle arguments * **************************************************************************/ @@ -5218,6 +5224,15 @@ int main(int argc,char **argv) exampleNameDict = new FileNameDict(1009); imageNameDict = new FileNameDict(257); + if (!Config::docURL.isEmpty()) + { + tagDestinationDict.insert("_doc",new QCString(Config::docURL)); + } + if (!Config::cgiURL.isEmpty()) + { + tagDestinationDict.insert("_cgi",new QCString(Config::cgiURL+"/"+Config::cgiName)); + } + /************************************************************************** * Initialize some global constants **************************************************************************/ @@ -5555,6 +5570,9 @@ int main(int argc,char **argv) msg("Generating page index...\n"); writePageIndex(*outputList); + msg("Generating graph info page...\n"); + writeGraphInfo(*outputList); + msg("Generating search index...\n"); generateSearchIndex(); diff --git a/src/doxygen.pro.in b/src/doxygen.pro.in index eda5885..81d0817 100644 --- a/src/doxygen.pro.in +++ b/src/doxygen.pro.in @@ -25,7 +25,7 @@ HEADERS = doxygen.h scanner.h classdef.h classlist.h memberdef.h \ namespacedef.h version.h language.h translator.h \ translator_nl.h translator_se.h translator_cz.h translator_fr.h \ translator_it.h formula.h debug.h membergroup.h htmlhelp.h \ - translator_ru.h dot.h rtfgen.h + translator_ru.h translator_pl.h dot.h rtfgen.h SOURCES = doxygen.cpp scanner.cpp classdef.cpp classlist.cpp memberdef.cpp \ membername.cpp index.cpp memberlist.cpp \ entry.cpp logos.cpp instdox.cpp message.cpp code.cpp \ diff --git a/src/doxysearch.cpp b/src/doxysearch.cpp index 1dbad7e..d14cf37 100644 --- a/src/doxysearch.cpp +++ b/src/doxysearch.cpp @@ -204,7 +204,7 @@ void printFooter() //---------------------------------------------------------------------------- -void message(char *fmt,...) +void message(const char *fmt,...) { printHeader(); printf("<h2>"); @@ -413,7 +413,7 @@ void searchIndex(const char *word,SearchResults *results) //---------------------------------------------------------------------------- -int sortResults(const void *a1,const void *a2) +extern "C" int sortResults(const void *a1,const void *a2) { SearchDoc **d1=(SearchDoc **)a1; SearchDoc **d2=(SearchDoc **)a2; diff --git a/src/filedef.cpp b/src/filedef.cpp index 08b16b2..fb21f39 100644 --- a/src/filedef.cpp +++ b/src/filedef.cpp @@ -34,14 +34,14 @@ \a the file name, and \a ref is an HTML anchor name if the file was read from a tag file or 0 otherwise */ -FileDef::FileDef(const char *p,const char *nm,const char *ref) +FileDef::FileDef(const char *p,const char *nm,const char *lref) : Definition((QCString)p+nm,1,nm) { path=p; filepath=path+nm; filename=nameToFile(nm); diskname=filename.copy(); - setReference(ref); + setReference(lref); classList = new ClassList; includeList = new QList<IncludeInfo>; includeList->setAutoDelete(TRUE); diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp index 52abbff..acca70b 100644 --- a/src/htmlgen.cpp +++ b/src/htmlgen.cpp @@ -111,7 +111,8 @@ void HtmlGenerator::startQuickIndexItem(const char *s,const char *l) { t << "<a class=\"qindexRef\" "; t << "doxygen=\"" << s << ":"; - if ((dest=tagDestinationDict[s])) t << *dest << "/"; + if ((dest=tagDestinationDict[s])) t << *dest; + if (strcmp(s,"_cgi")!=0) t << "/"; // small hack to get the cgi binary link right t << "\" "; } else @@ -121,7 +122,8 @@ void HtmlGenerator::startQuickIndexItem(const char *s,const char *l) t << "href=\""; if (s) { - if ((dest=tagDestinationDict[s])) t << *dest << "/"; + if ((dest=tagDestinationDict[s])) t << *dest; + if (strcmp(s,"_cgi")!=0) t << "/"; } t << l << "\">"; } diff --git a/src/image.cpp b/src/image.cpp index 2b82bf5..17d89b4 100644 --- a/src/image.cpp +++ b/src/image.cpp @@ -310,11 +310,11 @@ void Image::drawRect(int x,int y,int w,int h,uchar colIndex,uint mask) drawVertLine(x+w-1,y,y+h-1,colIndex,mask); } -void Image::fillRect(int x,int y,int width,int height,uchar colIndex,uint mask) +void Image::fillRect(int x,int y,int lwidth,int lheight,uchar colIndex,uint mask) { int xp,yp,xi,yi; - for (yp=y,yi=0;yp<y+height;yp++,yi++) - for (xp=x,xi=0;xp<x+width;xp++,xi++) + for (yp=y,yi=0;yp<y+lheight;yp++,yi++) + for (xp=x,xi=0;xp<x+lwidth;xp++,xi++) if (mask&(1<<((xi+yi)&0x1f))) setPixel(xp,yp,colIndex); } diff --git a/src/index.cpp b/src/index.cpp index aabdcdc..d59a3a0 100644 --- a/src/index.cpp +++ b/src/index.cpp @@ -1491,6 +1491,23 @@ void writeGroupList(OutputList &ol) //---------------------------------------------------------------------------- +void writeGraphInfo(OutputList &ol) +{ + if (!Config::haveDotFlag) return; + ol.pushGeneratorState(); + ol.disableAllBut(OutputGenerator::Html); + generateGraphLegend(Config::htmlOutputDir); + startFile(ol,"graph_legend","Graph Legend"); + startTitle(ol,0); + parseText(ol,theTranslator->trLegendTitle()); + endTitle(ol,0,0); + parseDoc(ol,"graph_legend",1,0,0,theTranslator->trLegendDocs()); + endFile(ol); + ol.popGeneratorState(); +} + +//---------------------------------------------------------------------------- + void writeGroupIndex(OutputList &ol) { if (documentedGroups==0) return; @@ -1522,6 +1539,8 @@ void writeGroupIndex(OutputList &ol) ol.popGeneratorState(); } +//---------------------------------------------------------------------------- + void writeIndex(OutputList &ol) { // save old generator state diff --git a/src/index.h b/src/index.h index 56abdda..8a81d96 100644 --- a/src/index.h +++ b/src/index.h @@ -62,6 +62,7 @@ void writeGroupIndex(OutputList &ol); void writeNamespaceIndex(OutputList &ol); void writeNamespaceMemberIndex(OutputList &ol); void writeGraphicalClassHierarchy(OutputList &ol); +void writeGraphInfo(OutputList &ol); int countClassHierarchy(); int countClassMembers(); diff --git a/src/language.cpp b/src/language.cpp index 27b6c7c..08704d3 100644 --- a/src/language.cpp +++ b/src/language.cpp @@ -29,6 +29,7 @@ #include "translator_fi.h" #include "translator_ru.h" #include "translator_hr.h" +#include "translator_pl.h" #endif #define L_EQUAL(a) !stricmp(langName,a) @@ -90,6 +91,10 @@ bool setTranslator(const char *langName) { theTranslator=new TranslatorCroatian; } + else if (L_EQUAL("polish")) + { + theTranslator=new TranslatorPolish; + } #endif else // use the default language (i.e. english) { diff --git a/src/memberdef.cpp b/src/memberdef.cpp index 2980a73..6311c8a 100644 --- a/src/memberdef.cpp +++ b/src/memberdef.cpp @@ -484,14 +484,14 @@ void MemberDef::writeDeclaration(OutputList &ol, //printf("md->name()=`%s' Protection=%d\n",name().data(),protection()); if (inGroup && protection()==Private && !Config::extractPrivateFlag) return; - QCString type=typeString(); - // strip `static' keyword from type - if (type.left(7)=="static ") type=type.right(type.length()-7); - // strip `friend' keyword from type - if (type.left(7)=="friend ") type=type.right(type.length()-7); + QCString ltype=type.copy(); + // strip `static' keyword from ltype + if (ltype.left(7)=="static ") ltype=ltype.right(ltype.length()-7); + // strip `friend' keyword from ltype + if (ltype.left(7)=="friend ") ltype=ltype.right(ltype.length()-7); static QRegExp r("@[0-9]+"); i=-1; - if ((type.isEmpty() || (i=r.match(type,0,&l))==-1) || !enumUsed()) + if ((ltype.isEmpty() || (i=r.match(ltype,0,&l))==-1) || !enumUsed()) { if (!Config::genTagFile.isEmpty()) @@ -541,20 +541,20 @@ void MemberDef::writeDeclaration(OutputList &ol, // search for the last anonymous scope in the member type ClassDef *annoClassDef=0; - //while (i!=-1 && cname.find(type.mid(i,l))!=-1) + //while (i!=-1 && cname.find(ltype.mid(i,l))!=-1) //{ - // i=r.match(type,i+l,&l); + // i=r.match(ltype,i+l,&l); //} int il=i-1,ir=i+l; if (i!=-1) // found anonymous scope in type { // extract anonymous scope - while (il>=0 && (isId(type.at(il)) || type.at(il)==':' || type.at(il)=='@')) il--; + while (il>=0 && (isId(ltype.at(il)) || ltype.at(il)==':' || ltype.at(il)=='@')) il--; if (il>0) il++; - while (ir<(int)type.length() && (isId(type.at(ir)) || type.at(ir)==':' || type.at(ir)=='@')) ir++; + while (ir<(int)ltype.length() && (isId(ltype.at(ir)) || ltype.at(ir)==':' || ltype.at(ir)=='@')) ir++; - //QCString annName = type.mid(i,l); - QCString annName = type.mid(il,ir-il); + //QCString annName = ltype.mid(i,l); + QCString annName = ltype.mid(il,ir-il); // if inside a class or namespace try to prepend the scope name if ((cd || nd) && annName.left(cname.length())!=cname) @@ -612,7 +612,7 @@ void MemberDef::writeDeclaration(OutputList &ol, if (i!=-1) // member has an anonymous type { //printf("annoClassDef=%p annMemb=%p scopeName=`%s' anonymous=`%s'\n", - // annoClassDef,annMemb,cname.data(),type.mid(i,l).data()); + // annoClassDef,annMemb,cname.data(),ltype.mid(i,l).data()); if (annoClassDef) // type is an anonymous compound { @@ -624,7 +624,7 @@ void MemberDef::writeDeclaration(OutputList &ol, { ol.writeNonBreakableSpace(); } - QCString varName=type.right(type.length()-ir).stripWhiteSpace(); + QCString varName=ltype.right(ltype.length()-ir).stripWhiteSpace(); ol.docify("}"); if (varName.isEmpty() && (name().isEmpty() || name().at(0)=='@')) { @@ -639,27 +639,27 @@ void MemberDef::writeDeclaration(OutputList &ol, { if (getAnonymousEnumType()) // type is an anonymous enum { - linkifyText(ol,cname,name(),type.left(i),TRUE); + linkifyText(ol,cname,name(),ltype.left(i),TRUE); ol+=*getAnonymousEnumType()->enumDecl(); - linkifyText(ol,cname,name(),type.right(type.length()-i-l),TRUE); + linkifyText(ol,cname,name(),ltype.right(ltype.length()-i-l),TRUE); } else { - type = type.left(i) + " { ... } " + type.right(type.length()-i-l); - linkifyText(ol,cname,name(),type,TRUE); + ltype = ltype.left(i) + " { ... } " + ltype.right(ltype.length()-i-l); + linkifyText(ol,cname,name(),ltype,TRUE); } } } else { - linkifyText(ol,cname,name(),type,TRUE); + linkifyText(ol,cname,name(),ltype,TRUE); } bool htmlOn = ol.isEnabled(OutputGenerator::Html); - if (htmlOn && Config::htmlAlignMemberFlag && !type.isEmpty()) + if (htmlOn && Config::htmlAlignMemberFlag && !ltype.isEmpty()) { ol.disable(OutputGenerator::Html); } - if (!type.isEmpty()) ol.docify(" "); + if (!ltype.isEmpty()) ol.docify(" "); if (htmlOn) { ol.enable(OutputGenerator::Html); @@ -821,16 +821,16 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, // prepend scope if there is any. TODO: make this optional for C only docs if (scopeName) doxyName.prepend((QCString)scopeName+"::"); - QCString def = definition(); + QCString ldef = definition(); if (isEnumerate()) { if (name().at(0)=='@') { - def = "anonymous enum"; + ldef = "anonymous enum"; } else { - def.prepend("enum "); + ldef.prepend("enum "); } } int i=0,l; @@ -844,7 +844,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, HtmlHelp *htmlHelp = 0; if (hasHtmlHelp) htmlHelp = HtmlHelp::getInstance(); - if ((isVariable() || isTypedef()) && (i=r.match(def,0,&l))!=-1) + if ((isVariable() || isTypedef()) && (i=r.match(ldef,0,&l))!=-1) { // find enum type and insert it in the definition MemberListIterator vmli(*ml); @@ -852,7 +852,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, bool found=FALSE; for ( ; (vmd=vmli.current()) && !found ; ++vmli) { - if (vmd->isEnumerate() && def.mid(i,l)==vmd->name()) + if (vmd->isEnumerate() && ldef.mid(i,l)==vmd->name()) { ol.startDoxyAnchor(cfname,cname,anchor(),doxyName); ol.startMemberDoc(cname,name(),anchor(),name()); @@ -860,9 +860,9 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, { htmlHelp->addIndexItem(cname,name(),cfname,anchor()); } - linkifyText(ol,scopeName,name(),def.left(i)); + linkifyText(ol,scopeName,name(),ldef.left(i)); ol+=*vmd->enumDecl(); - linkifyText(ol,scopeName,name(),def.right(def.length()-i-l)); + linkifyText(ol,scopeName,name(),ldef.right(ldef.length()-i-l)); found=TRUE; } @@ -877,16 +877,16 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, htmlHelp->addIndexItem(cname,name(),cfname,anchor()); } // strip anonymous compound names from definition - int si=def.find(' '),pi,ei=i+l; + int si=ldef.find(' '),pi,ei=i+l; if (si==-1) si=0; - while ((pi=r.match(def,i+l,&l))!=-1) ei=i=pi+l; - // first si characters of def contain compound type name - ol.docify(def.left(si)); + while ((pi=r.match(ldef,i+l,&l))!=-1) ei=i=pi+l; + // first si characters of ldef contain compound type name + ol.docify(ldef.left(si)); ol.docify(" { ... } "); - // last ei characters of def contain pointer/reference specifiers - int ni=def.find("::",si); + // last ei characters of ldef contain pointer/reference specifiers + int ni=ldef.find("::",si); if (ni>=ei) ei=ni+2; - linkifyText(ol,scopeName,name(),def.right(def.length()-ei)); + linkifyText(ol,scopeName,name(),ldef.right(ldef.length()-ei)); } } else @@ -931,19 +931,19 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, int ir=cName.findRev('>'); if (il!=-1 && ir!=-1 && ir>il) { - def=addTemplateNames(def, + ldef=addTemplateNames(ldef, cName.left(il), /* class without template spec */ cName.mid(il,ir-il+1) /* templ spec */ ); } else if (scopeAl) { - def=addTemplateNames(def,cName,tempArgListToString(scopeAl)); + ldef=addTemplateNames(ldef,cName,tempArgListToString(scopeAl)); } } } ol.startMemberDocName(); - linkifyText(ol,scopeName,name(),def); + linkifyText(ol,scopeName,name(),ldef); writeDefArgumentList(ol,cd,scopeName,this); if (!init.isEmpty() && initLines==0 && maxInitLines>0) // add initializer { @@ -965,16 +965,16 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, } } - Specifier virt=virtualness(); + Specifier lvirt=virtualness(); MemberDef *rmd=reimplements(); - while (rmd && virt==Normal) + while (rmd && lvirt==Normal) { - virt = rmd->virtualness()==Normal ? Normal : Virtual; + lvirt = rmd->virtualness()==Normal ? Normal : Virtual; rmd = rmd->reimplements(); } if (isStatic() || protection()!=Public || - virt!=Normal || isSignal() || isFriend() || + lvirt!=Normal || isSignal() || isFriend() || isRelated() || isSlot() || getMemberSpecifiers()!=0 ) @@ -995,8 +995,8 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, if (isStatic()) sl.append("static"); if (protection()==Protected) sl.append("protected"); else if (protection()==Private) sl.append("private"); - if (virt==Virtual) sl.append("virtual"); - else if (virt==Pure) sl.append("pure virtual"); + if (lvirt==Virtual) sl.append("virtual"); + else if (lvirt==Pure) sl.append("pure virtual"); if (isSignal()) sl.append("signal"); if (isSlot()) sl.append("slot"); } @@ -1163,7 +1163,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, if (bmd && (bcd=bmd->memberClass())) { #if 0 - if (virt!=Normal) // search for virtual member of the deepest base class + if (lvirt!=Normal) // search for virtual member of the deepest base class { MemberDef *lastBmd=bmd; while (lastBmd) diff --git a/src/namespacedef.cpp b/src/namespacedef.cpp index 89f7a5a..366e49b 100644 --- a/src/namespacedef.cpp +++ b/src/namespacedef.cpp @@ -28,7 +28,7 @@ #include "message.h" NamespaceDef::NamespaceDef(const char *df,int dl, - const char *name,const char *ref) : + const char *name,const char *lref) : Definition(df,dl,name) { fileName="namespace_"+nameToFile(name); @@ -37,7 +37,7 @@ NamespaceDef::NamespaceDef(const char *df,int dl, //memList = new MemberList; usingDirList = 0; usingDeclList = 0; - setReference(ref); + setReference(lref); memberGroupList = new MemberGroupList; memberGroupList->setAutoDelete(TRUE); memberGroupDict = new MemberGroupDict(1009); diff --git a/src/outputgen.cpp b/src/outputgen.cpp index 722558d..95ef0b0 100644 --- a/src/outputgen.cpp +++ b/src/outputgen.cpp @@ -90,8 +90,9 @@ void OutputGenerator::pushGeneratorState() void OutputGenerator::popGeneratorState() { - bool *b = genStack->pop(); - ASSERT(b!=0); - if (b==0) return; // for some robustness against superfluous \endhtmlonly commands. - if (*b) enable(); else disable(); + bool *lb = genStack->pop(); + ASSERT(lb!=0); + if (lb==0) return; // for some robustness against superfluous \endhtmlonly commands. + if (*lb) enable(); else disable(); } + diff --git a/src/scanner.l b/src/scanner.l index 5c97241..8062238 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -796,7 +796,7 @@ static QCString findAndCopyImage(const char *fileName,ImageTypes type) FileDef *fd; if ((fd=findFileDef(imageNameDict,fileName,ambig))) { - QFile inImage(fd->absFilePath().data()); + QFile inImage(QString(fd->absFilePath().data())); if (inImage.open(IO_ReadOnly)) { result = fileName; @@ -816,7 +816,7 @@ static QCString findAndCopyImage(const char *fileName,ImageTypes type) break; } QCString outputFile = outputDir+"/"+result; - QFile outImage(outputFile.data()); + QFile outImage(QString(outputFile.data())); if (outImage.open(IO_WriteOnly)) // copy the image { char *buffer = new char[inImage.size()]; @@ -1300,19 +1300,28 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") insideArgumentList=TRUE; } } -<DocScan>{CMD}"par"{B}+ { +<DocScan>(({B}*"\n"){2,}{B}*)?{CMD}"par"{B}* { BEGIN(DocPar); } <DocPar>[^\n]*{BN} { - endArgumentList(); - if (inBlock()) endBlock(); - inParBlock=TRUE; - outDoc->startDescList(); - outDoc->startBold(); - outDoc->docify(((QCString)yytext).stripWhiteSpace()); - outDoc->endBold(); - outDoc->endDescTitle(); - outDoc->writeDescItem(); + QCString title=QCString(yytext).stripWhiteSpace(); + bool b = inBlock(); + if (!title.isEmpty()) + { + endArgumentList(); + if (b) endBlock(); + inParBlock=TRUE; + outDoc->startDescList(); + outDoc->startBold(); + outDoc->docify(title); + outDoc->endBold(); + outDoc->endDescTitle(); + outDoc->writeDescItem(); + } + else + { + outDoc->newParagraph(); + } BEGIN(DocScan); } <DocScan>{CMD}"warning"/{BN} { @@ -2397,7 +2406,7 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") BEGIN( NextSemi ); } <FindMembers>{B}*"typename"{BN}+ { lineCount(); } -<FindMembers>{B}*"namespace"{BN}+ { +<FindMembers>{B}*"namespace"{BN}*/[^a-z_A-Z0-9] { isTypedef=FALSE; current->section = Entry::NAMESPACE_SEC; current->type = "namespace" ; @@ -2417,6 +2426,16 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") lineCount(); BEGIN( CompoundName ); } +<FindMembers>{B}*"library"{BN}+ { + isTypedef=FALSE; + current->section = Entry::NAMESPACE_SEC; + current->type = "library" ; + current->fileName = yyFileName; + current->startLine = yyLineNr; + current->bodyLine = yyLineNr; + lineCount(); + BEGIN( CompoundName ); + } <FindMembers>{B}*"interface"{BN}+ { // M$/Corba IDL interface isTypedef=FALSE; current->section = Entry::INTERFACE_SEC; @@ -4852,8 +4871,8 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") copyArgString = ¤t->args; BEGIN( ReadFuncArgType ) ; } -<ClassDocFunc>"("({B}*"*")+ { - current->name+="(*"; +<ClassDocFunc>"("({ID}"::")*({B}*"*")+ { + current->name+=yytext; BEGIN( ClassDocFuncPtr ); } <ClassDocFuncPtr>{SCOPENAME} { diff --git a/src/suffixtree.cpp b/src/suffixtree.cpp index ad0aebd..5439fc6 100644 --- a/src/suffixtree.cpp +++ b/src/suffixtree.cpp @@ -325,7 +325,7 @@ void SuffixTree::insertWord(const char *word,int index,bool inName) { QCString suffix=word; uint i; - for (i=2;i<suffix.length()-1;i++) + for (i=2;i<suffix.length();i++) { //printf("Inserting suffix %s\n",suffix.right(i).data()); nodes+=root->insert(suffix.right(i),index,inName?1:0,FALSE); diff --git a/src/translator.h b/src/translator.h index 6bc534d..ef89013 100644 --- a/src/translator.h +++ b/src/translator.h @@ -899,6 +899,78 @@ class Translator { return "Since"; } + +////////////////////////////////////////////////////////////////////////// +// new since 1.1.5 +////////////////////////////////////////////////////////////////////////// + + /*! title of the graph legend page */ + virtual QCString trLegendTitle() + { + return "Graph Legend"; + } + /*! page explaining how the dot graph's should be interpreted */ + virtual QCString trLegendDocs() + { + return + "This page explains how to interpret the graphs that are generated " + "by doxygen.<p>\n" + "Consider the following example:\n" + "\\code\n" + "/*! Invisible class because of truncation */\n" + "class Invisible { };\n\n" + "/*! Truncated class, inheritance relation is hidden */\n" + "class Truncated : public Invisible { };\n\n" + "/* Class not documented with doxygen comments */\n" + "class Undocumented { };\n\n" + "/*! Class that is inherited using public inheritance */\n" + "class PublicBase : public Truncated { };\n\n" + "/*! Class that is inherited using protected inheritance */\n" + "class ProtectedBase { };\n\n" + "/*! Class that is inherited using private inheritance */\n" + "class PrivateBase { };\n\n" + "/*! Class that is used by the Inherited class */\n" + "class Used { };\n\n" + "/*! Super class that inherits a number of other classes */\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" + "If the \\c MAX_DOT_GRAPH_HEIGHT tag in the configuration file " + "is set to 200 this will result in the following graph:" + "<p><center><img src=\"graph_legend.gif\"></center>\n" + "<p>\n" + "The boxes in the above graph have the following meaning:\n" + "<ul>\n" + "<li>A filled black box represents the struct or class for which the " + "graph is generated.\n" + "<li>A box with a black border denotes a documented struct or class.\n" + "<li>A box with a grey border denotes an undocumented struct or class.\n" + "<li>A box with a red border denotes a documented struct or class for\n" + "which not all inheritance/containment relations are shown. A graph is " + "truncated if it does not fit within the specified boundaries." + "</ul>\n" + "The arrows have the following meaning:\n" + "<ul>\n" + "<li>A dark blue arrow is used to visualize a public inheritance " + "relation between two classes.\n" + "<li>A dark green arrow is used for protected inheritance.\n" + "<li>A dark red arrow is used for private inheritance.\n" + "<li>A purple dashed arrow is used if a class is contained or used " + "by another class. The arrow is labeled with the variable(s) " + "through which the pointed class or struct is accessible. \n" + "</ul>\n"; + } + /*! text for the link to the legend page */ + virtual QCString trLegend() + { + return "legend"; + } }; #endif diff --git a/src/translator_cz.h b/src/translator_cz.h index 63edec7..0b78c99 100644 --- a/src/translator_cz.h +++ b/src/translator_cz.h @@ -516,7 +516,8 @@ class TranslatorCzech : public Translator /*! used as the title of the HTML page of a class/struct/union */ virtual QCString trCompoundReference(const char *clName, - ClassDef::CompoundType compType) + ClassDef::CompoundType compType, + bool /*isTemplate*/) { QCString result=(QCString)clName+" "; switch(compType) diff --git a/src/translator_hr.h b/src/translator_hr.h index 40e5733..3407e82 100644 --- a/src/translator_hr.h +++ b/src/translator_hr.h @@ -583,11 +583,48 @@ class TranslatorCroatian : public Translator { return "Static private atributi"; } +////////////////////////////////////////////////////////////////////////// +// new since 1.1.3 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a marker that is put before a todo item */ + virtual QCString trTodo() + { + return "Za uraditi"; + } + /*! Used as the header of the todo list */ + virtual QCString trTodoList() + { + return "Ostalo za uraditi"; + } ////////////////////////////////////////////////////////////////////////// -// new since 1.1.1 +// new since 1.1.4 ////////////////////////////////////////////////////////////////////////// + virtual QCString trReferencedBy() + { + return "Referencirano od"; + } + virtual QCString trRemarks() + { + return "Napomene"; + } + virtual QCString trAttention() + { + return "Pažnja"; + } + virtual QCString trInclByDepGraph() + { + return "Ovaj graf pokazuje koje datoteke izravno " + "ili neizravno uključuju ovu datoteku:"; + } + virtual QCString trSince() + { + return "Od"; + } + + }; #endif diff --git a/src/translator_pl.h b/src/translator_pl.h new file mode 100644 index 0000000..13978fa --- /dev/null +++ b/src/translator_pl.h @@ -0,0 +1,902 @@ +/****************************************************************************** + * + * + * + * 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 + * granted. No representations are made about the suitability of this software + * for any purpose. It is provided "as is" without express or implied warranty. + * See the GNU General Public License for more details. + * + * Documents produced by Doxygen are derivative works derived from the + * input used in their production; they are not affected by this license. + * + */ + +#ifndef TRANSLATOR_PL_H +#define TRANSLATOR_PL_H + +#include "translator.h" + +class TranslatorPolish : public Translator +{ + public: + + // --- Language contol methods ------------------- + + /*! Used for identification of the language. May resemble + * the string returned by latexBabelPackage(), but it is not used + * for the same purpose. The identification should not be translated. + * It should be replaced by the name of the language in English + * (e.g. Czech, Japanese, Russian, etc.). It should be equal to + * the identification in language.h. + */ + QCString idLanguage() + { return "polish"; } + /*! Used to get the command(s) for the language support. This method + * was designed for languages which do not prefer babel package. + * If this methods returns empty string, then the latexBabelPackage() + * method is used to generate the command for using the babel package. + */ + QCString latexLanguageSupportCommand() + { + return "\\usepackage{polski} \\usepackage[latin2]{inputenc} \\usepackage[T1]{fontenc}"; + } + /*! returns the name of the package that is included by LaTeX */ + QCString latexBabelPackage() + { return "polish"; } + + // --- Language translation methods ------------------- + + /*! used in the compound documentation before a list of related functions. */ + QCString trRelatedFunctions() + { return "Funkcje Powiązane"; } + + /*! subscript for the related functions. */ + QCString trRelatedSubscript() + { return "(Zauważ, że to nie są metody klas.)"; } + + /*! header that is put before the detailed description of files, classes and namespaces. */ + QCString trDetailedDescription() + { return "Opis Szczegółowy"; } + + /*! header that is put before the list of typedefs. */ + QCString trMemberTypedefDocumentation() + { return "Dokumentacja Składowych Definicji Typu"; } + + /*! header that is put before the list of enumerations. */ + QCString trMemberEnumerationDocumentation() + { return "Dokumentacja Składowych Wyliczanych"; } + + /*! header that is put before the list of member functions. */ + QCString trMemberFunctionDocumentation() + { return "Dokumentacja Funkcji Składowych"; } + + /*! header that is put before the list of member attributes. */ + QCString trMemberDataDocumentation() + { return "Dokumentacja Atrybutów Składowych"; } + + /*! this is the text of a link put after brief descriptions. */ + QCString trMore() + { return "Więcej..."; } + + /*! put in the class documentation */ + QCString trListOfAllMembers() + { return "Lista wszystkich składowych."; } + + /*! used as the title of the "list of all members" page of a class */ + QCString trMemberList() + { return "Lista Składowych"; } + + /*! this is the first part of a sentence that is followed by a class name */ + QCString trThisIsTheListOfAllMembers() + { return "To jest kompletna lista składowych dla "; } + + /*! this is the remainder of the sentence after the class name */ + QCString trIncludingInheritedMembers() + { return ", uwzględniająca wszystkie dziedziczone składowe."; } + + /*! this is put at the author sections at the bottom of man pages. + * parameter s is name of the project name. + */ + QCString trGeneratedAutomatically(const char *s) + { QCString result="Wygenerowano automatycznie z kodu źródłowego programem Doxygen"; + if (s) result+=(QCString)" dla "+s; + result+="."; + return result; + } + + /*! put after an enum name in the list of all members */ + QCString trEnumName() + { return "nazwa wyliczenia"; } + + /*! put after an enum value in the list of all members */ + QCString trEnumValue() + { return "wartość wyliczenia"; } + + /*! put after an undocumented member in the list of all members */ + QCString trDefinedIn() + { return "zdefiniowana w"; } + + /*! put as in introduction in the verbatim header file of a class. + * parameter f is the name of the include file. + */ + QCString trVerbatimText(const char *f) + { return (QCString)"Tutaj znajduje się zawartość pliku nagłówkowego "+f+"."; } + + // quick reference sections + + /*! This is put above each page as a link to the list of all groups of + * compounds or files (see the \group command). + */ + QCString trModules() + { return "Moduły"; } + + /*! This is put above each page as a link to the class hierarchy */ + QCString trClassHierarchy() + { return "Hierarchia Klas"; } + + /*! This is put above each page as a link to the list of annotated classes */ + QCString trCompoundList() + { return "Lista Klas"; } + + /*! This is put above each page as a link to the list of documented files */ + QCString trFileList() + { return "Lista Plików"; } + + /*! This is put above each page as a link to the list of all verbatim headers */ + QCString trHeaderFiles() + { return "Pliki Nagłówkowe"; } + + /*! This is put above each page as a link to all members of compounds. */ + QCString trCompoundMembers() + { return "Składowe Klas"; } + + /*! This is put above each page as a link to all members of files. */ + QCString trFileMembers() + { return "Składowe Plików"; } + + /*! This is put above each page as a link to all related pages. */ + QCString trRelatedPages() + { return "Dodatkowe Strony"; } + + /*! This is put above each page as a link to all examples. */ + QCString trExamples() + { return "Przykłady"; } + + /*! This is put above each page as a link to the search engine. */ + QCString trSearch() + { return "Szukaj"; } + + /*! This is an introduction to the class hierarchy. */ + QCString trClassHierarchyDescription() + { return "Ta lista dziedziczenia posortowana jest z grubsza, " + "choć nie całkowicie, alfabetycznie:"; + } + + /*! This is an introduction to the list with all files. */ + QCString trFileListDescription(bool extractAll) + { + QCString result="Tutaj znajduje się lista wszystkich "; + if (!extractAll) result+="udokumentowanych "; + result+="plików z ich krótkimi opisami:"; + return result; + } + + /*! This is an introduction to the annotated compound list. */ + QCString trCompoundListDescription() + { return "Tutaj znajdują się klasy, struktury, " + "unie i interfejsy wraz z ich krótkimi opisami:"; + } + + /*! This is an introduction to the page with all class members. */ + QCString trCompoundMembersDescription(bool extractAll) + { + QCString result="Tutaj znajduje się lista wszystkich "; + if (!extractAll) result+="udokumentowanych "; + result+="składowych wraz z odnośnikami do "; + if (extractAll) + result+="dokumentacji klas dla każdej składowej:"; + else + result+="klas, do których dana składowa należy:"; + return result; + } + + /*! This is an introduction to the page with all file members. */ + QCString trFileMembersDescription(bool extractAll) + { + QCString result="Tutaj znajduje się lista wszystkich "; + if (!extractAll) result+="udokumentowanych "; + result+="składowych wraz z odnośnikami do "; + if (extractAll) + result+="dokumentacji plików dla każdej składowej:"; + else + result+="plików, do których dana składowa należy:"; + return result; + } + + /*! This is an introduction to the page with the list of all header files. */ + QCString trHeaderFilesDescription() + { return "Tutaj znajdują się pliki nagłówkowe tworzące API:"; } + + /*! This is an introduction to the page with the list of all examples */ + QCString trExamplesDescription() + { return "Tutaj znajduje się lista wszystkich przykładów:"; } + + /*! This is an introduction to the page with the list of related pages */ + QCString trRelatedPagesDescription() + { return "Tutaj znajduje się lista wszystkich stron dokumentacji:"; } + + /*! This is an introduction to the page with the list of class/file groups */ + QCString trModulesDescription() + { return "Tutaj znajduje się lista wszystkich grup:"; } + + /*! This sentences is used in the annotated class/file lists if no brief + * description is given. + */ + QCString trNoDescriptionAvailable() + { return "Brak opisu"; } + + // index titles (the project name is prepended for these) + + + /*! This is used in HTML as the title of index.html. */ + QCString trDocumentation() + { return "Dokumentacja"; } + + /*! This is used in LaTeX as the title of the chapter with the + * index of all groups. + */ + QCString trModuleIndex() + { return "Indeks Grup"; } + + /*! This is used in LaTeX as the title of the chapter with the + * class hierarchy. + */ + QCString trHierarchicalIndex() + { return "Indeks Hierarchiczny"; } + + /*! This is used in LaTeX as the title of the chapter with the + * annotated compound index. + */ + QCString trCompoundIndex() + { return "Indeks Klas"; } + + /*! This is used in LaTeX as the title of the chapter with the + * list of all files. + */ + QCString trFileIndex() + { return "Indeks Plików"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all groups. + */ + QCString trModuleDocumentation() + { return "Dokumentacja Grup"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all classes, structs and unions. + */ + QCString trClassDocumentation() + { return "Dokumentacja Klas"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all files. + */ + QCString trFileDocumentation() + { return "Dokumentacja Plików"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all examples. + */ + QCString trExampleDocumentation() + { return "Dokumentacja Przykładów"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all related pages. + */ + QCString trPageDocumentation() + { return "Dokumentacja Stron"; } + + /*! This is used in LaTeX as the title of the document */ + QCString trReferenceManual() + { return "Podręcznik Referencji"; } + + /*! This is used in the documentation of a file as a header before the + * list of defines + */ + QCString trDefines() + { return "Definicje"; } + + /*! This is used in the documentation of a file as a header before the + * list of function prototypes + */ + QCString trFuncProtos() + { return "Prototypy Funkcji"; } + + /*! This is used in the documentation of a file as a header before the + * list of typedefs + */ + QCString trTypedefs() + { return "Definicje Typów"; } + + /*! This is used in the documentation of a file as a header before the + * list of enumerations + */ + QCString trEnumerations() + { return "Wyliczenia"; } + + /*! This is used in the documentation of a file as a header before the + * list of (global) functions + */ + QCString trFunctions() + { return "Funkcje"; } + + /*! This is used in the documentation of a file as a header before the + * list of (global) variables + */ + QCString trVariables() + { return "Zmienne"; } + + /*! This is used in the documentation of a file as a header before the + * list of (global) variables + */ + QCString trEnumerationValues() + { return "Wartości Wyliczeń"; } + + /*! This is used in man pages as the author section. */ + QCString trAuthor() + { return "Autor"; } + + /*! This is used in the documentation of a file before the list of + * documentation blocks for defines + */ + QCString trDefineDocumentation() + { return "Dokumentacja Definicji"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for function prototypes + */ + QCString trFunctionPrototypeDocumentation() + { return "Dokumentacja Prototypów Funkcji"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for typedefs + */ + QCString trTypedefDocumentation() + { return "Dokumentacja Definicji Typów"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for enumeration types + */ + QCString trEnumerationTypeDocumentation() + { return "Dokumentacja Typów Wyliczanych"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for enumeration values + */ + QCString trEnumerationValueDocumentation() + { return "Dokumentacja Wartości Wyliczanych"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for functions + */ + QCString trFunctionDocumentation() + { return "Dokumentacja Funkcji"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for variables + */ + QCString trVariableDocumentation() + { return "Dokumentacja Zmiennych"; } + + /*! This is used in the documentation of a file/namespace/group before + * the list of links to documented compounds + */ + QCString trCompounds() + { return "Komponenty"; } + + /*! This is used in the documentation of a group before the list of + * links to documented files + */ + QCString trFiles() + { return "Pliki"; } + + /*! This is used in the standard footer of each page and indicates when + * the page was generated + */ + QCString trGeneratedAt(const char *date,const char *projName) + { + QCString result=(QCString)"Wygenerowano "+date; + if (projName) result+=(QCString)" dla "+projName; + result+=(QCString)" programem"; + return result; + } + /*! This is part of the sentence used in the standard footer of each page. + */ + QCString trWrittenBy() + { + return "napisanym przez"; + } + + /*! this text is put before a class diagram */ + QCString trClassDiagram(const char *clName) + { + return (QCString)"Diagram dziedziczenia dla "+clName; + } + + /*! this text is generated when the \internal command is used. */ + QCString trForInternalUseOnly() + { return "Tylko do użytku wewnętrznego."; } + + /*! this text is generated when the \reimp command is used. */ + QCString trReimplementedForInternalReasons() + { return "Reimplementowana z wewnętrzych przyczyn; nie dotyczy API."; } + + /*! this text is generated when the \warning command is used. */ + QCString trWarning() + { return "Ostrzeżenie"; } + + /*! this text is generated when the \bug command is used. */ + QCString trBugsAndLimitations() + { return "Błędy i ograniczenia"; } + + /*! this text is generated when the \version command is used. */ + QCString trVersion() + { return "Wersja"; } + + /*! this text is generated when the \date command is used. */ + QCString trDate() + { return "Data"; } + + /*! this text is generated when the \author command is used. */ + QCString trAuthors() + { return "Autorzy"; } + + /*! this text is generated when the \return command is used. */ + QCString trReturns() + { return "Powroty"; } + + /*! this text is generated when the \sa command is used. */ + QCString trSeeAlso() + { return "Zobacz również"; } + + /*! this text is generated when the \param command is used. */ + QCString trParameters() + { return "Parametry"; } + + /*! this text is generated when the \exception command is used. */ + QCString trExceptions() + { return "Wyjątki"; } + + /*! this text is used in the title page of a LaTeX document. */ + QCString trGeneratedBy() + { return "Wygenerowano przez"; } + + // new since 0.49-990307 + + /*! used as the title of page containing all the index of all namespaces. */ + QCString trNamespaceList() + { return "Lista Obszarów Nazw"; } + + /*! used as an introduction to the namespace list */ + QCString trNamespaceListDescription(bool extractAll) + { + QCString result="Tutaj znajdują się wszystkie "; + if (!extractAll) result+="udokumentowane "; + result+="obszary nazw wraz z ich krótkimi opisami:"; + return result; + } + + /*! used in the class documentation as a header before the list of all + * friends of a class + */ + QCString trFriends() + { return "Przyjaciele"; } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-990405 +////////////////////////////////////////////////////////////////////////// + + /*! used in the class documentation as a header before the list of all + * related classes + */ + QCString trRelatedFunctionDocumentation() + { return "Dokumentacja Przyjaciół i Funkcji Związanych"; } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-990425 +////////////////////////////////////////////////////////////////////////// + + /*! used as the title of the HTML page of a class/struct/union */ + QCString trCompoundReference(const char *clName, + ClassDef::CompoundType compType, + bool isTemplate) + { + QCString result="Referencje"; + if (isTemplate) result+=" Szablonu"; + switch(compType) + { + case ClassDef::Class: result+=" Klasy "; break; + case ClassDef::Struct: result+=" Struktury "; break; + case ClassDef::Union: result+=" Unii "; break; + case ClassDef::Interface: result+=" Interfejsu "; break; + case ClassDef::Exception: result+=" Wyjątku "; break; + } + result+=(QCString)clName; + return result; + } + + /*! used as the title of the HTML page of a file */ + QCString trFileReference(const char *fileName) + { + QCString result="Referencje Pliku "; + result+=fileName; + return result; + } + + /*! used as the title of the HTML page of a namespace */ + QCString trNamespaceReference(const char *namespaceName) + { + QCString result="Referencje Obszaru Nazw "; + result+=namespaceName; + return result; + } + + /*! \mgroup Class sections + * these are for the member sections of a class, struct or union + */ + QCString trPublicMembers() + { return "Metody Publiczne"; } + QCString trPublicSlots() + { return "Sloty Publiczne"; } + QCString trSignals() + { return "Sygnały"; } + QCString trStaticPublicMembers() + { return "Statyczne Metody Publiczne"; } + QCString trProtectedMembers() + { return "Metody Chronione"; } + QCString trProtectedSlots() + { return "Sloty Chronione"; } + QCString trStaticProtectedMembers() + { return "Statyczne Metody Chronione"; } + QCString trPrivateMembers() + { return "Metody Prywatne"; } + QCString trPrivateSlots() + { return "Sloty Prywatne"; } + QCString trStaticPrivateMembers() + { return "Statyczne Metody Prywatne"; } + /*! \endmgroup */ + + /*! this function is used to produce a comma-separated list of items. + * use generateMarker(i) to indicate where item i should be put. + */ + QCString trWriteList(int numEntries) + { + QCString result; + int i; + // the inherits list contain `numEntries' classes + for (i=0;i<numEntries;i++) + { + // use generateMarker to generate placeholders for the class links! + result+=generateMarker(i); // generate marker for entry i in the list + // (order is left to right) + + if (i!=numEntries-1) // not the last entry, so we need a separator + { + if (i<numEntries-2) // not the fore last entry + result+=", "; + else // the fore last entry + result+=" i "; + } + } + return result; + } + + /*! used in class documentation to produce a list of base classes, + * if class diagrams are disabled. + */ + QCString trInheritsList(int numEntries) + { + return "Dziedziczy "+trWriteList(numEntries)+"."; + } + + /*! used in class documentation to produce a list of super classes, + * if class diagrams are disabled. + */ + QCString trInheritedByList(int numEntries) + { + return "Dziedziczona przez "+trWriteList(numEntries)+"."; + } + + /*! used in member documentation blocks to produce a list of + * members that are hidden by this one. + */ + QCString trReimplementedFromList(int numEntries) + { + return "Reimplementowana z "+trWriteList(numEntries)+"."; + } + + /*! used in member documentation blocks to produce a list of + * all member that overwrite the implementation of this member. + */ + QCString trReimplementedInList(int numEntries) + { + return "Reimplementowana w "+trWriteList(numEntries)+"."; + } + + /*! This is put above each page as a link to all members of namespaces. */ + QCString trNamespaceMembers() + { return "Składowe Obszaru Nazw"; } + + /*! This is an introduction to the page with all namespace members */ + QCString trNamespaceMemberDescription(bool extractAll) + { + QCString result="Tutaj znajduje się lista wszystkich "; + if (!extractAll) result+="udokumentowanych "; + result+="składowych wraz z odnośnikami do "; + if (extractAll) + result+="dokumentacji obszarów nazw dla każdej składowej:"; + else + result+="obszarów nazw do których składowe te należą:"; + return result; + } + /*! This is used in LaTeX as the title of the chapter with the + * index of all namespaces. + */ + QCString trNamespaceIndex() + { return "Indeks Obszarów Nazw"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all namespaces. + */ + QCString trNamespaceDocumentation() + { return "Dokumentacja Obszarów Nazw"; } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-990522 +////////////////////////////////////////////////////////////////////////// + + /*! This is used in the documentation before the list of all + * namespaces in a file. + */ + QCString trNamespaces() + { return "Obszary Nazw"; } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-990728 +////////////////////////////////////////////////////////////////////////// + + /*! This is put at the bottom of a class documentation page and is + * followed by a list of files that were used to generate the page. + */ + QCString trGeneratedFromFiles(ClassDef::CompoundType compType, + bool single) + { // here s is one of " Class", " Struct" or " Union" + // single is true implies a single file + QCString result=(QCString)"Dokumentacja dla te"; + switch(compType) + { + case ClassDef::Class: result+="j klasy"; break; + case ClassDef::Struct: result+="j struktury"; break; + case ClassDef::Union: result+="j unii"; break; + case ClassDef::Interface: result+="go interfejsu"; break; + case ClassDef::Exception: result+="go wyjątku"; break; + } + result+=" została wygenerowana z plik"; + if (single) result+="u:"; else result+="ów:"; + return result; + } + + /*! This is in the (quick) index as a link to the alphabetical compound + * list. + */ + QCString trAlphabeticalList() + { return "Lista Alfabetyczna"; } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-990901 +////////////////////////////////////////////////////////////////////////// + + /*! This is used as the heading text for the retval command. */ + QCString trReturnValues() + { return "Zwracane wartości"; } + + /*! This is in the (quick) index as a link to the main page (index.html) + */ + QCString trMainPage() + { return "Strona Główna"; } + + /*! This is used in references to page that are put in the LaTeX + * documentation. It should be an abbreviation of the word page. + */ + QCString trPageAbbreviation() + { return "str."; } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-991003 +////////////////////////////////////////////////////////////////////////// + + QCString trSources() + { + return "Źródła"; + } + QCString trDefinedAtLineInSourceFile() + { + return "Definicja w linii @0 pliku @1."; + } + QCString trDefinedInSourceFile() + { + return "Definicja w pliku @0."; + } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-991205 +////////////////////////////////////////////////////////////////////////// + + QCString trDeprecated() + { + return "Do wycofania"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.0.0 +////////////////////////////////////////////////////////////////////////// + + /*! this text is put before a collaboration diagram */ + QCString trCollaborationDiagram(const char *clName) + { + return (QCString)"Diagram współpracy dla "+clName+":"; + } + /*! this text is put before an include dependency graph */ + QCString trInclDepGraph(const char *fName) + { + return (QCString)"Wykres zależności załączania dla "+fName+":"; + } + /*! header that is put before the list of constructor/destructors. */ + QCString trConstructorDocumentation() + { + return "Dokumentacja Konstruktora i Destruktora"; + } + /*! Used in the file documentation to point to the corresponding sources. */ + QCString trGotoSourceCode() + { + return "Idź do kodu źródłowego tego pliku."; + } + /*! Used in the file sources to point to the corresponding documentation. */ + QCString trGotoDocumentation() + { + return "Idź do dokumentacji tego pliku."; + } + /*! Text for the \pre command */ + QCString trPrecondition() + { + return "Warunek wstępny"; + } + /*! Text for the \post command */ + QCString trPostcondition() + { + return "Warunek końcowy"; + } + /*! Text for the \invariant command */ + QCString trInvariant() + { + return "Inwariant"; + } + /*! Text shown before a multi-line variable/enum initialization */ + QCString trInitialValue() + { + return "Inicjalizator:"; + } + /*! Text used the source code in the file index */ + QCString trCode() + { + return "kod źródłowy"; + } + QCString trGraphicalHierarchy() + { + return "Graficzna Hierarchia Klas"; + } + QCString trGotoGraphicalHierarchy() + { + return "Idź do graficznej hierarchi klas"; + } + QCString trGotoTextualHierarchy() + { + return "Idź do tekstowej hierarchi klas"; + } + QCString trPageIndex() + { + return "Indeks Stron"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.1.0 +////////////////////////////////////////////////////////////////////////// + + QCString trNote() + { + return "Nota"; + } + QCString trPublicTypes() + { + return "Typy Publiczne"; + } + QCString trPublicAttribs() + { + return "Atrybuty Publiczne"; + } + QCString trStaticPublicAttribs() + { + return "Statyczne Atrybuty Publiczne"; + } + QCString trProtectedTypes() + { + return "Typy Chronione"; + } + QCString trProtectedAttribs() + { + return "Atrybuty Chronione"; + } + QCString trStaticProtectedAttribs() + { + return "Statyczne Atrybuty Chronione"; + } + QCString trPrivateTypes() + { + return "Typy Prywatne"; + } + QCString trPrivateAttribs() + { + return "Atrybuty Prywatne"; + } + QCString trStaticPrivateAttribs() + { + return "Statyczne Atrybuty Prywatne"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.1.3 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a marker that is put before a todo item */ + QCString trTodo() + { + return "Do Zrobienia"; + } + /*! Used as the header of the todo list */ + QCString trTodoList() + { + return "Lista Do Zrobienia"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.1.4 +////////////////////////////////////////////////////////////////////////// + + QCString trReferencedBy() + { + return "Referencje według"; + } + QCString trRemarks() + { + return "Spostrzeżenia"; + } + QCString trAttention() + { + return "Uwaga"; + } + QCString trInclByDepGraph() + { + return "Ten wykres pokazuje, które pliki bezpośrednio lub " + "pośrednio załączają ten plik:"; + } + QCString trSince() + { + return "Od"; + } +}; + +#endif diff --git a/src/util.cpp b/src/util.cpp index f9ab566..eb2f252 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -559,35 +559,35 @@ void writeQuickLinks(OutputList &ol,bool compact,bool ext) //bool manEnabled = ol.isEnabled(OutputGenerator::Man); //bool texEnabled = ol.isEnabled(OutputGenerator::Latex); ol.disableAllBut(OutputGenerator::Html); - QCString extLink,absPath; - if (ext) { extLink="_doc"; absPath=Config::docURL+"/"; } + QCString extLink; + if (ext) { extLink="_doc"; } //if (manEnabled) ol.disable(OutputGenerator::Man); //if (texEnabled) ol.disable(OutputGenerator::Latex); if (compact) ol.startCenter(); else ol.startItemList(); if (!compact) ol.writeListItem(); - ol.startQuickIndexItem(extLink,absPath+"index.html"); + ol.startQuickIndexItem(extLink,"index.html"); parseText(ol,theTranslator->trMainPage()); ol.endQuickIndexItem(); if (documentedGroups>0) { if (!compact) ol.writeListItem(); - ol.startQuickIndexItem(extLink,absPath+"modules.html"); + ol.startQuickIndexItem(extLink,"modules.html"); parseText(ol,theTranslator->trModules()); ol.endQuickIndexItem(); } if (documentedNamespaces>0) { if (!compact) ol.writeListItem(); - ol.startQuickIndexItem(extLink,absPath+"namespaces.html"); + ol.startQuickIndexItem(extLink,"namespaces.html"); parseText(ol,theTranslator->trNamespaceList()); ol.endQuickIndexItem(); } if (hierarchyClasses>0) { if (!compact) ol.writeListItem(); - ol.startQuickIndexItem(extLink,absPath+"hierarchy.html"); + ol.startQuickIndexItem(extLink,"hierarchy.html"); parseText(ol,theTranslator->trClassHierarchy()); ol.endQuickIndexItem(); } @@ -596,75 +596,75 @@ void writeQuickLinks(OutputList &ol,bool compact,bool ext) if (Config::alphaIndexFlag) { if (!compact) ol.writeListItem(); - ol.startQuickIndexItem(extLink,absPath+"classes.html"); + ol.startQuickIndexItem(extLink,"classes.html"); parseText(ol,theTranslator->trAlphabeticalList()); ol.endQuickIndexItem(); } if (!compact) ol.writeListItem(); - ol.startQuickIndexItem(extLink,absPath+"annotated.html"); + ol.startQuickIndexItem(extLink,"annotated.html"); parseText(ol,theTranslator->trCompoundList()); ol.endQuickIndexItem(); } if (documentedHtmlFiles>0) { if (!compact) ol.writeListItem(); - ol.startQuickIndexItem(extLink,absPath+"files.html"); + ol.startQuickIndexItem(extLink,"files.html"); parseText(ol,theTranslator->trFileList()); ol.endQuickIndexItem(); } //if (documentedIncludeFiles>0 && Config::verbatimHeaderFlag) //{ // if (!compact) ol.writeListItem(); - // ol.startQuickIndexItem(extLink,absPath+"headers.html"); + // ol.startQuickIndexItem(extLink,"headers.html"); // parseText(ol,theTranslator->trHeaderFiles()); // ol.endQuickIndexItem(); //} //if (Config::sourceBrowseFlag) //{ // if (!compact) ol.writeListItem(); - // ol.startQuickIndexItem(extLink,absPath+"sources.html"); + // ol.startQuickIndexItem(extLink,"sources.html"); // parseText(ol,theTranslator->trSources()); // ol.endQuickIndexItem(); //} if (documentedNamespaceMembers>0) { if (!compact) ol.writeListItem(); - ol.startQuickIndexItem(extLink,absPath+"namespacemembers.html"); + ol.startQuickIndexItem(extLink,"namespacemembers.html"); parseText(ol,theTranslator->trNamespaceMembers()); ol.endQuickIndexItem(); } if (documentedMembers>0) { if (!compact) ol.writeListItem(); - ol.startQuickIndexItem(extLink,absPath+"functions.html"); + ol.startQuickIndexItem(extLink,"functions.html"); parseText(ol,theTranslator->trCompoundMembers()); ol.endQuickIndexItem(); } if (documentedFunctions>0) { if (!compact) ol.writeListItem(); - ol.startQuickIndexItem(extLink,absPath+"globals.html"); + ol.startQuickIndexItem(extLink,"globals.html"); parseText(ol,theTranslator->trFileMembers()); ol.endQuickIndexItem(); } if (pageList.count()>0) { if (!compact) ol.writeListItem(); - ol.startQuickIndexItem(extLink,absPath+"pages.html"); + ol.startQuickIndexItem(extLink,"pages.html"); parseText(ol,theTranslator->trRelatedPages()); ol.endQuickIndexItem(); } if (exampleList.count()>0) { if (!compact) ol.writeListItem(); - ol.startQuickIndexItem(extLink,absPath+"examples.html"); + ol.startQuickIndexItem(extLink,"examples.html"); parseText(ol,theTranslator->trExamples()); ol.endQuickIndexItem(); } if (Config::searchEngineFlag) { if (!compact) ol.writeListItem(); - ol.startQuickIndexItem("_cgi",Config::cgiURL+"/"+Config::cgiName); + ol.startQuickIndexItem("_cgi",""); parseText(ol,theTranslator->trSearch()); ol.endQuickIndexItem(); } diff --git a/tmake/bin/progen b/tmake/bin/progen index 8237fd5..5be6411 100755 --- a/tmake/bin/progen +++ b/tmake/bin/progen @@ -1,6 +1,6 @@ #!/usr/bin/perl ############################################################################ -# $Id$ +# # # Generates a tmake project file. # diff --git a/tmake/bin/tmake b/tmake/bin/tmake index 457467a..4862c3f 100755 --- a/tmake/bin/tmake +++ b/tmake/bin/tmake @@ -1,6 +1,6 @@ #!/usr/bin/perl ############################################################################ -# $Id$ +# # # Creates a Makefile from a template and a project file. # diff --git a/tmake/example/hello.cpp b/tmake/example/hello.cpp index dc6ff77..4868c4d 100644 --- a/tmake/example/hello.cpp +++ b/tmake/example/hello.cpp @@ -1,5 +1,5 @@ /**************************************************************************** -** $Id$ +** ** ** Copyright (C) 1992-1998 Troll Tech AS. All rights reserved. ** diff --git a/tmake/example/hello.h b/tmake/example/hello.h index 16e0871..07fb8c5 100644 --- a/tmake/example/hello.h +++ b/tmake/example/hello.h @@ -1,5 +1,5 @@ /**************************************************************************** -** $Id$ +** ** ** Copyright (C) 1992-1998 Troll Tech AS. All rights reserved. ** |