summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authordimitri <dimitri@afe2bf4a-e733-0410-8a33-86f594647bc7>2000-07-09 19:45:37 (GMT)
committerdimitri <dimitri@afe2bf4a-e733-0410-8a33-86f594647bc7>2000-07-09 19:45:37 (GMT)
commit61a83f312ce95090dc02ca3b8ce8dd3319d97df1 (patch)
tree2dbdf12fc6696bf3a9d133e8e23ef223690e919a /src
parente3baf8c5ec430e5f09f00384ebdfa35242fd3316 (diff)
downloadDoxygen-61a83f312ce95090dc02ca3b8ce8dd3319d97df1.zip
Doxygen-61a83f312ce95090dc02ca3b8ce8dd3319d97df1.tar.gz
Doxygen-61a83f312ce95090dc02ca3b8ce8dd3319d97df1.tar.bz2
Release-1.1.5_20000709
Diffstat (limited to 'src')
-rw-r--r--src/classdef.cpp32
-rw-r--r--src/config.l34
-rw-r--r--src/defargs.l2
-rw-r--r--src/definition.cpp11
-rw-r--r--src/dot.cpp84
-rw-r--r--src/dot.h3
-rw-r--r--src/doxygen.cpp42
-rw-r--r--src/doxygen.pro.in2
-rw-r--r--src/doxysearch.cpp4
-rw-r--r--src/filedef.cpp4
-rw-r--r--src/htmlgen.cpp6
-rw-r--r--src/image.cpp6
-rw-r--r--src/index.cpp19
-rw-r--r--src/index.h1
-rw-r--r--src/language.cpp5
-rw-r--r--src/memberdef.cpp90
-rw-r--r--src/namespacedef.cpp4
-rw-r--r--src/outputgen.cpp9
-rw-r--r--src/scanner.l49
-rw-r--r--src/suffixtree.cpp2
-rw-r--r--src/translator.h72
-rw-r--r--src/translator_cz.h3
-rw-r--r--src/translator_hr.h39
-rw-r--r--src/translator_pl.h902
-rw-r--r--src/util.cpp34
25 files changed, 1323 insertions, 136 deletions
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);
+}
+
diff --git a/src/dot.h b/src/dot.h
index e3c8c5d..b87059e 100644
--- a/src/dot.h
+++ b/src/dot.h
@@ -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 = &current->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();
}