summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/config.l5
-rw-r--r--src/doc.l34
-rw-r--r--src/doxygen.cpp96
-rw-r--r--src/htmlgen.cpp18
-rw-r--r--src/index.cpp15
-rw-r--r--src/latexgen.cpp14
-rw-r--r--src/pngenc.cpp2
-rw-r--r--src/scanner.l2
-rw-r--r--src/translator_cz.h5
-rw-r--r--src/translator_pt.h27
-rw-r--r--src/util.cpp18
-rw-r--r--src/util.h3
-rw-r--r--src/xmlgen.cpp6
13 files changed, 187 insertions, 58 deletions
diff --git a/src/config.l b/src/config.l
index 810287e..fe32174 100644
--- a/src/config.l
+++ b/src/config.l
@@ -881,9 +881,10 @@ void Config::check()
if (p)
{
char c;
- while ((c=*p++))
+ while ((c=*p))
{
- if (c=='\\') c='/';
+ if (c=='\\') *p='/';
+ p++;
}
}
QCString path = sfp;
diff --git a/src/doc.l b/src/doc.l
index c519ee4..b6469a7 100644
--- a/src/doc.l
+++ b/src/doc.l
@@ -752,13 +752,30 @@ static QCString findAndCopyImage(const char *fileName,ImageTypes type)
else
{
warn(yyFileName,yyLineNr,
- "Warning: could not write output image %s",outputFile.data());
+ "Warning: could not write output image %s",outputFile.data());
}
}
else
{
warn(yyFileName,yyLineNr,
- "Warning: could not open image %s",fileName);
+ "Warning: could not open image %s",fileName);
+ }
+
+ if (type==IT_Latex && Config_getBool("USE_PDFLATEX") &&
+ fd->name().right(4)==".eps"
+ )
+ { // we have an .eps image in pdflatex mode => convert it to a pdf.
+ QCString outputDir = Config_getString("LATEX_OUTPUT");
+ QCString baseName = fd->name().left(fd->name().length()-4);
+ QCString epstopdfArgs(4096);
+ epstopdfArgs.sprintf("\"%s/%s.eps\" --outfile=\"%s/%s.pdf\"",
+ outputDir.data(), baseName.data(),
+ outputDir.data(), baseName.data());
+ if (iSystem("epstopdf",epstopdfArgs,TRUE)!=0)
+ {
+ err("Error: Problems running epstopdf. Check your TeX installation!\n");
+ }
+ return baseName;
}
}
else if (ambig)
@@ -1202,13 +1219,13 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
<DocScan>{CMD}"link"/{BN} { BEGIN( DocLink ); }
<DocScan>"{"{CMD}"link"{BN}+ { BEGIN( DocJavaLink ); }
<DocSkipWord>[a-z_A-Z0-9.:()]+ { BEGIN( DocScan ); }
-<DocLink>[a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+ { // TODO: support operators as well!
+<DocLink>[a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+({B}*("const"|"volatile"))? { // TODO: support operators as well!
linkRef = stripKnownExtensions(yytext);
linkText = "";
BEGIN( DocLinkText );
}
<DocJavaLink>([a-z_A-Z0-9]+".")+ { /* Skip scope prefix (TODO: fix) */ }
-<DocJavaLink>([a-z_A-Z0-9]*"#")?[a-z_A-Z0-9]+("("[a-z_A-Z0-9.,:~&*()\[\]]*")")? { // TODO: support operators as well!
+<DocJavaLink>([a-z_A-Z0-9]*"#")?[a-z_A-Z0-9]+("("[a-z_A-Z0-9.,:~&*()\[\]]*")")?({B}*("const"|"volatile"))? { // TODO: support operators as well!
linkRef = yytext;
linkText = "";
BEGIN( DocJavaLinkText );
@@ -2076,7 +2093,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
}
BEGIN(DocScan);
}
-<DocScan,DocRefName>{SCOPEMASK}"("[a-z_A-Z0-9,:\<\> \t\*\&]+")" {
+<DocScan,DocRefName>{SCOPEMASK}"("[a-z_A-Z0-9,:\<\> \t\*\&]+")"({B}*("const"|"volatile"))? {
if (!insideHtmlLink)
{
generateRef(*outDoc,className,yytext,inSeeBlock);
@@ -2087,7 +2104,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
}
BEGIN(DocScan);
}
-<DocScan,DocRefName>{SCOPEMASK}("()")? {
+<DocScan,DocRefName>{SCOPEMASK}("()"({B}*("const"|"volatile"))?)? {
if (!insideHtmlLink)
{
generateRef(*outDoc,className,yytext,inSeeBlock);
@@ -2617,7 +2634,10 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
{
outDoc->newParagraph();
}
- if (ib) endBlock();
+ if (ib && currentListIndent.top()=="P")
+ { // inside paragraph block
+ endBlock();
+ }
}
}
<DocScan>{BN}+/\n {
diff --git a/src/doxygen.cpp b/src/doxygen.cpp
index 1363348..f420437 100644
--- a/src/doxygen.cpp
+++ b/src/doxygen.cpp
@@ -3909,7 +3909,8 @@ static void findMember(Entry *root,
int count=0;
MemberNameIterator mni(*mn);
MemberDef *md;
- for (mni.toFirst();(md=mni.current());++mni)
+ bool memFound=FALSE;
+ for (mni.toFirst();!memFound && (md=mni.current());++mni)
{
ClassDef *cd=md->getClassDef();
Debug::print(Debug::FindMembers,0,
@@ -3993,13 +3994,64 @@ static void findMember(Entry *root,
bool ambig;
FileDef *fd=findFileDef(Doxygen::inputNameDict,root->fileName,ambig);
- // list of namespaces using in the file that this member definition is part of
- NamespaceList *nl = 0;
- if (nd) nl = nd->getUsedNamespaces();
- else if (fd) nl = fd->getUsedNamespaces();
- ClassList *cl = 0;
- if (nd) cl = nd->getUsedClasses();
- else if (fd) cl = fd->getUsedClasses();
+
+ // list of namespaces using in the file/namespace that this
+ // member definition is part of
+ NamespaceList *nl = new NamespaceList;
+ if (nd)
+ {
+ NamespaceList *nnl = nd->getUsedNamespaces();
+ if (nnl)
+ {
+ NamespaceDef *nnd = nnl->first();
+ while (nnd)
+ {
+ nl->append(nnd);
+ nnd = nnl->next();
+ }
+ }
+ }
+ if (fd)
+ {
+ NamespaceList *fnl = fd->getUsedNamespaces();
+ if (fnl)
+ {
+ NamespaceDef *fnd = fnl->first();
+ while (fnd)
+ {
+ nl->append(fnd);
+ fnd = fnl->next();
+ }
+ }
+ }
+
+ ClassList *cl = new ClassList;
+ if (nd)
+ {
+ ClassList *ncl = nd->getUsedClasses();
+ if (ncl)
+ {
+ ClassDef *ncd = ncl->first();
+ while (ncd)
+ {
+ cl->append(ncd);
+ ncd = ncl->next();
+ }
+ }
+ }
+ if (fd)
+ {
+ ClassList *fcl = fd->getUsedClasses();
+ if (fcl)
+ {
+ ClassDef *fcd = fcl->first();
+ while (fcd)
+ {
+ cl->append(fcd);
+ fcd = fcl->next();
+ }
+ }
+ }
bool matching=
md->isVariable() || md->isTypedef() || // needed for function pointers
@@ -4038,8 +4090,10 @@ static void findMember(Entry *root,
// root->inLine,md->isInline());
addMemberDocs(root,md,funcDecl,0,overloaded,nl);
count++;
- break;
+ memFound=TRUE;
}
+ delete cl;
+ delete nl;
}
}
if (count==0 && !(isFriend && funcType=="class"))
@@ -6565,13 +6619,19 @@ void readConfiguration(int argc, char **argv)
else
{
Config::instance()->init();
- setTranslator("English");
}
if (optind+3>=argc)
{
err("Error: option \"-w html\" does not have enough arguments\n");
exit(1);
}
+
+ QCString outputLanguage=Config_getEnum("OUTPUT_LANGUAGE");
+ if (!setTranslator(outputLanguage))
+ {
+ err("Error: Output language %s not supported! Using English instead.\n", outputLanguage.data());
+ }
+
QFile f;
if (openOutputFile(argv[optind+1],f))
{
@@ -6605,13 +6665,19 @@ void readConfiguration(int argc, char **argv)
else // use default config
{
Config::instance()->init();
- setTranslator("English");
}
if (optind+2>=argc)
{
- err("Error: option \"-w html\" does not have enough arguments\n");
+ err("Error: option \"-w latex\" does not have enough arguments\n");
exit(1);
}
+
+ QCString outputLanguage=Config_getEnum("OUTPUT_LANGUAGE");
+ if (!setTranslator(outputLanguage))
+ {
+ err("Error: Output language %s not supported! Using English instead.\n", outputLanguage.data());
+ }
+
QFile f;
if (openOutputFile(argv[optind+1],f))
{
@@ -6713,7 +6779,7 @@ void readConfiguration(int argc, char **argv)
Config::instance()->check();
initWarningFormat();
QCString outputLanguage=Config_getEnum("OUTPUT_LANGUAGE");
- if (!outputLanguage.isEmpty() && !setTranslator(outputLanguage))
+ if (!setTranslator(outputLanguage))
{
err("Error: Output language %s not supported! Using English instead.\n",
outputLanguage.data());
@@ -7335,13 +7401,13 @@ void generateOutput()
theTranslator->trGeneratedAt(dateToString(TRUE),Config_getString("PROJECT_NAME"))
);
outputList->writeStyleInfo(1); // write second part
- parseText(*outputList,theTranslator->trWrittenBy());
+ //parseText(*outputList,theTranslator->trWrittenBy());
outputList->writeStyleInfo(2); // write third part
parseText(*outputList,
theTranslator->trGeneratedAt(dateToString(TRUE),Config_getString("PROJECT_NAME"))
);
outputList->writeStyleInfo(3); // write fourth part
- parseText(*outputList,theTranslator->trWrittenBy());
+ //parseText(*outputList,theTranslator->trWrittenBy());
outputList->writeStyleInfo(4); // write last part
outputList->enableAll();
diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp
index af01a96..4f971c2 100644
--- a/src/htmlgen.cpp
+++ b/src/htmlgen.cpp
@@ -181,14 +181,16 @@ void HtmlGenerator::writeHeaderFile(QFile &file)
void HtmlGenerator::writeFooterFile(QFile &file)
{
QTextStream t(&file);
- t << "<hr><address><small>\n";
+ t << "<hr><address align=\"right\"><small>\n";
t << theTranslator->trGeneratedAt( "$datetime", "$projectname" );
t << " <a href=\"http://www.doxygen.org/index.html\">\n"
<< "<img src=\"doxygen.png\" alt=\"doxygen\" "
<< "align=\"middle\" border=0 width=110 height=53>\n"
- << "</a> $doxygenversion " << theTranslator->trWrittenBy()
- << " <a href=\"mailto:dimitri@stack.nl\">Dimitri van Heesch</a>,\n"
- << " &copy;&nbsp;1997-2002</small></address>\n"
+ << "</a> $doxygenversion";
+ // << " " << theTranslator->trWrittenBy()
+ // << " <a href=\"mailto:dimitri@stack.nl\">Dimitri van Heesch</a>,\n"
+ // << " &copy;&nbsp;1997-2002"
+ t << "</small></address>\n"
<< "</body>\n"
<< "</html>\n";
}
@@ -255,7 +257,7 @@ void HtmlGenerator::writeFooter(int part,bool external)
{
case 0:
if (g_footer.isEmpty())
- t << "<hr><address><small>";
+ t << "<hr><address align=\"right\"><small>";
else
t << substituteKeywords(g_footer,convertToHtml(lastTitle));
break;
@@ -280,8 +282,10 @@ void HtmlGenerator::writeFooter(int part,bool external)
break;
default:
if (g_footer.isEmpty())
- t << " <a href=\"mailto:dimitri@stack.nl\">Dimitri van Heesch</a>,\n &copy;&nbsp;"
- "1997-2002</small></address>\n</body>\n</html>\n";
+ {
+ //t << " <a href=\"mailto:dimitri@stack.nl\">Dimitri van Heesch</a>,\n &copy;&nbsp;1997-2002";
+ t << "</small></address>\n</body>\n</html>\n";
+ }
break;
}
diff --git a/src/index.cpp b/src/index.cpp
index 9b20b51..47bdaab 100644
--- a/src/index.cpp
+++ b/src/index.cpp
@@ -340,10 +340,10 @@ void endFile(OutputList &ol,bool external)
));
}
ol.writeFooter(1,external); // write the link to the picture
- if (Config_getString("HTML_FOOTER").isEmpty())
- {
- parseText(ol,theTranslator->trWrittenBy());
- }
+ //if (Config_getString("HTML_FOOTER").isEmpty())
+ //{
+ // parseText(ol,theTranslator->trWrittenBy());
+ //}
ol.writeFooter(2,external); // end the footer
ol.popGeneratorState();
ol.endFile();
@@ -2228,7 +2228,10 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd,int level)
ftvHelp = FTVHelp::getInstance();
}
- if (!gd->visited && (!gd->isASubGroup() || level>0))
+ /* Some groups should appear twice under different parent-groups.
+ * That is why we should not check if it was visited
+ */
+ if (/*!gd->visited &&*/ (!gd->isASubGroup() || level>0))
{
//printf("gd->name()=%s #members=%d\n",gd->name().data(),gd->countMembers());
// write group info
@@ -2503,7 +2506,7 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd,int level)
if (htmlHelp) htmlHelp->decContentsDepth();
if (ftvHelp) ftvHelp->decContentsDepth();
- gd->visited=TRUE;
+ //gd->visited=TRUE;
}
}
diff --git a/src/latexgen.cpp b/src/latexgen.cpp
index 4604a58..c02428c 100644
--- a/src/latexgen.cpp
+++ b/src/latexgen.cpp
@@ -407,12 +407,14 @@ void LatexGenerator::writeStyleSheetFile(QFile &f)
QCString &projectName = Config_getString("PROJECT_NAME");
t << theTranslator->trGeneratedAt( dateToString(TRUE), projectName );
- t << " doxygen " << theTranslator->trWrittenBy() << " ";
- t << "Dimitri van Heesch \\copyright~1997-2002";
+ t << " doxygen";
+ //t << " " << theTranslator->trWrittenBy() << " ";
+ //t << "Dimitri van Heesch \\copyright~1997-2002";
writeDefaultStyleSheetPart2(t);
t << theTranslator->trGeneratedAt( dateToString(TRUE), projectName );
- t << " doxygen " << theTranslator->trWrittenBy() << " ";
- t << "Dimitri van Heesch \\copyright~1997-2002";
+ t << " doxygen";
+ //t << " << theTranslator->trWrittenBy() << " ";
+ //t << "Dimitri van Heesch \\copyright~1997-2002";
writeDefaultStyleSheetPart3(t);
}
@@ -824,14 +826,14 @@ void LatexGenerator::writeStyleInfo(int part)
break;
case 2:
{
- t << " Dimitri van Heesch \\copyright~1997-2002";
+ //t << " Dimitri van Heesch \\copyright~1997-2002";
t << "}]{}\n";
writeDefaultStyleSheetPart2(t);
}
break;
case 4:
{
- t << " Dimitri van Heesch \\copyright~1997-2002";
+ //t << " Dimitri van Heesch \\copyright~1997-2002";
writeDefaultStyleSheetPart3(t);
endPlainFile();
}
diff --git a/src/pngenc.cpp b/src/pngenc.cpp
index 438b4b5..b7e54f4 100644
--- a/src/pngenc.cpp
+++ b/src/pngenc.cpp
@@ -99,7 +99,7 @@ void PngEncoder::write(const char *name)
png_palette[i].green = palette[i].green;
png_palette[i].blue = palette[i].blue;
}
- png_set_PLTE(png_ptr, info_ptr, png_palette, PNG_MAX_PALETTE_LENGTH);
+ png_set_PLTE(png_ptr, info_ptr, png_palette, numOfColors);
png_set_IHDR( png_ptr, info_ptr, width, height, bit_depth,
PNG_COLOR_TYPE_PALETTE, PNG_INTERLACE_NONE,
PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE
diff --git a/src/scanner.l b/src/scanner.l
index e558eb1..ab08498 100644
--- a/src/scanner.l
+++ b/src/scanner.l
@@ -2859,7 +2859,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
current->brief+=' ';
lineCount();
}
-<JavaDoc>".\\"/[ \t\r\n] {
+<JavaDoc,AfterDocBrief>".\\"/[ \t\r\n] {
current->brief+=".";
}
<JavaDoc>"."[ \t\r\n] {
diff --git a/src/translator_cz.h b/src/translator_cz.h
index e785da4..07941bb 100644
--- a/src/translator_cz.h
+++ b/src/translator_cz.h
@@ -135,6 +135,9 @@
// - trImplementedFromList() and trImplementedInList() implemented
// (new since 1.2.13)
//
+// 2002/03/05
+// - ... forgot to replace TranslatorAdapter... base class by Translator.
+//
// Todo
// ----
// - The trReimplementedFromList() should pass the kind of the
@@ -154,7 +157,7 @@
// probably slightly faster.
-class TranslatorCzech : public TranslatorAdapter_1_2_13
+class TranslatorCzech : public Translator
{
private:
/*! The decode() inline assumes the source written in the
diff --git a/src/translator_pt.h b/src/translator_pt.h
index 232eecb..6d73bbd 100644
--- a/src/translator_pt.h
+++ b/src/translator_pt.h
@@ -15,9 +15,12 @@
*
* The translation into Portuguese was provided by
* Rui Godinho Lopes <ruiglopes@yahoo.com>
+ * http://www.ruilopes.com
*
* VERSION HISTORY
* ---------------
+ * 004 03 march 2002
+ * ! Updated for doxygen v1.2.14
* 003 23 november 2001
* - Removed some obsolete methods (latexBabelPackage, trAuthor, trAuthors and trFiles)
* 002 19 november 2001
@@ -31,7 +34,7 @@
#ifndef TRANSLATOR_PT_H
#define TRANSLATOR_PT_H
-class TranslatorPortuguese : public TranslatorAdapter_1_2_13
+class TranslatorPortuguese : public Translator
{
public:
@@ -1048,7 +1051,7 @@ class TranslatorPortuguese : public TranslatorAdapter_1_2_13
"\\endcode\n"
"Se no ficheiro de configuração estiver a tag \\c MAX_DOT_GRAPH_HEIGHT "
"com o valor de 200 então o seguinte grafo será gerado:"
- "<p><center><img src=\"graph_legend.png\"></center>\n"
+ "<p><center><img src=\"graph_legend.gif\"></center>\n"
"<p>\n"
"As caixas no grafo anterior têm as seguintes interpretações:\n"
"<ul>\n"
@@ -1345,6 +1348,26 @@ class TranslatorPortuguese : public TranslatorAdapter_1_2_13
return "Referências";
}
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.13
+//////////////////////////////////////////////////////////////////////////
+
+ /*! used in member documentation blocks to produce a list of
+ * members that are implemented by this one.
+ */
+ virtual QCString trImplementedFromList(int numEntries)
+ {
+ return "Implementa "+trWriteList(numEntries)+".";
+ }
+
+ /*! used in member documentation blocks to produce a list of
+ * all members that implement this abstract member.
+ */
+ virtual QCString trImplementedInList(int numEntries)
+ {
+ return "Implementado em "+trWriteList(numEntries)+".";
+ }
+
};
#endif
diff --git a/src/util.cpp b/src/util.cpp
index ed55620..c99b1bd 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -1999,7 +1999,8 @@ bool getDefs(const QCString &scName,const QCString &memberName,
MemberDef *&md,
ClassDef *&cd, FileDef *&fd, NamespaceDef *&nd, GroupDef *&gd,
bool forceEmptyScope,
- FileDef *currentFile
+ FileDef *currentFile,
+ bool checkCV
)
{
fd=0, md=0, cd=0, nd=0, gd=0;
@@ -2076,7 +2077,7 @@ bool getDefs(const QCString &scName,const QCString &memberName,
if (mmd->isLinkable())
{
bool match=args==0 ||
- matchArguments(mmd->argumentList(),argList,className,0,FALSE);
+ matchArguments(mmd->argumentList(),argList,className,0,checkCV);
//printf("match=%d\n",match);
if (match)
{
@@ -2187,7 +2188,7 @@ bool getDefs(const QCString &scName,const QCString &memberName,
argList=new ArgumentList;
stringToArgumentList(args,argList);
match=matchArguments(mmd->argumentList(),argList,0,
- namespaceName,FALSE);
+ namespaceName,checkCV);
}
if (match)
{
@@ -2247,7 +2248,7 @@ bool getDefs(const QCString &scName,const QCString &memberName,
{
argList=new ArgumentList;
stringToArgumentList(args,argList);
- match=matchArguments(md->argumentList(),argList);
+ match=matchArguments(md->argumentList(),argList,0,0,checkCV);
delete argList; argList=0;
}
if (match)
@@ -2489,8 +2490,13 @@ bool generateRef(OutputDocInterface &od,const char *scName,
// scopeStr.data(),nameStr.data(),argsStr.data());
// check if nameStr is a member or global.
- if (getDefs(scopeStr,nameStr,argsStr,md,cd,fd,nd,gd,
- scopePos==0 && !memberScopeFirst))
+ if (getDefs(scopeStr,nameStr,argsStr,
+ md,cd,fd,nd,gd,
+ scopePos==0 && !memberScopeFirst,
+ 0,
+ TRUE
+ )
+ )
{
//printf("after getDefs md=%p cd=%p fd=%p nd=%p gd=%p\n",md,cd,fd,nd,gd);
QCString anchor;
diff --git a/src/util.h b/src/util.h
index 2a68fad..6831c2b 100644
--- a/src/util.h
+++ b/src/util.h
@@ -86,7 +86,8 @@ extern bool getDefs(const QCString &scopeName,
NamespaceDef *&nd,
GroupDef *&gd,
bool forceEmptyScope=FALSE,
- FileDef *currentFile=0
+ FileDef *currentFile=0,
+ bool checkCV=FALSE
);
extern bool generateRef(OutputDocInterface &od,const char *,
diff --git a/src/xmlgen.cpp b/src/xmlgen.cpp
index 9273f63..c5b1fb0 100644
--- a/src/xmlgen.cpp
+++ b/src/xmlgen.cpp
@@ -1309,7 +1309,7 @@ static void writeTemplateLists(Definition *d,QTextStream &t)
}
}
-static void writeListOfAllMember(ClassDef *cd,QTextStream &t)
+static void writeListOfAllMembers(ClassDef *cd,QTextStream &t)
{
t << " <listofallmembers>" << endl;
MemberNameInfoSDict::Iterator mnii(*cd->memberNameInfoSDict());
@@ -1365,7 +1365,7 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti)
// + list of direct sub classes
// + list of inner classes
// + collaboration diagram
- // - list of all members
+ // + list of all members
// + user defined member sections
// + standard member sections
// + detailed member documentation
@@ -1459,7 +1459,7 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti)
}
}
writeTemplateLists(cd,t);
- writeListOfAllMember(cd,t);
+ writeListOfAllMembers(cd,t);
MemberGroupSDict::Iterator mgli(*cd->memberGroupSDict);
MemberGroup *mg;
for (;(mg=mgli.current());++mgli)