Commit 6ac75f50 authored by Dimitri van Heesch's avatar Dimitri van Heesch

Doxygen-1.3-rc3-20030223

parent b0cbd597
DOXYGEN Version 1.3-rc3-20030215 DOXYGEN Version 1.3-rc3-20030223
Please read the installation section of the manual Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions. (http://www.doxygen.org/install.html) for instructions.
-------- --------
Dimitri van Heesch (15 February 2003) Dimitri van Heesch (23 February 2003)
DOXYGEN Version 1.3_rc3_20030215 DOXYGEN Version 1.3_rc3_20030223
Please read INSTALL for compilation instructions. Please read INSTALL for compilation instructions.
...@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives. ...@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy, Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (15 February 2003) Dimitri van Heesch (dimitri@stack.nl) (23 February 2003)
1.3-rc3-20030215 1.3-rc3-20030223
...@@ -39,10 +39,10 @@ It can help you in three ways: ...@@ -39,10 +39,10 @@ It can help you in three ways:
The documentation is extracted directly from the sources, which The documentation is extracted directly from the sources, which
makes it much easier to keep the documentation consistent with the makes it much easier to keep the documentation consistent with the
source code. source code.
<li> Doxygen can be configured to extract the code structure <li> You can configure doxygen to extract the code structure
from undocumented source files. This can be very useful to quickly from undocumented source files. This is very useful to quickly
find your way in large source distributions. find your way in large source distributions.
The relations between the various elements are be visualized You can also visualize the relations between the various elements
by means of include dependency graphs, inheritance diagrams, by means of include dependency graphs, inheritance diagrams,
and collaboration diagrams, which are all generated automatically. and collaboration diagrams, which are all generated automatically.
<li> You can even `abuse' doxygen for creating normal documentation (as I did <li> You can even `abuse' doxygen for creating normal documentation (as I did
...@@ -183,7 +183,7 @@ Thanks go to: ...@@ -183,7 +183,7 @@ Thanks go to:
Roddy, Paul Schwartz, Charles Duffy, Vadym Voznyuk, Philip Walton, Roddy, Paul Schwartz, Charles Duffy, Vadym Voznyuk, Philip Walton,
Dwight Browne, Andreas Fredriksson, Karel Lindveld, Ivan Lee, Albert Dwight Browne, Andreas Fredriksson, Karel Lindveld, Ivan Lee, Albert
Vernon, Adam McKee, Vijapurapu Anatharac, Ben Hunsberger and Vernon, Adam McKee, Vijapurapu Anatharac, Ben Hunsberger and
Walter Wartenweiler for donating money. Walter Wartenweiler, Jeff Garbers and David Harris for donating money.
<li>The Comms group of <a href="http://www.symbian.com">Symbian</a> for donating <li>The Comms group of <a href="http://www.symbian.com">Symbian</a> for donating
an ultra cool <a href="http://www.psion.com/revoplus">Revo plus</a> an ultra cool <a href="http://www.psion.com/revoplus">Revo plus</a>
organizer! organizer!
......
...@@ -25,7 +25,7 @@ Doxygen has built-in support for multiple languages. This means ...@@ -25,7 +25,7 @@ Doxygen has built-in support for multiple languages. This means
that the text fragments that doxygen generates can be produced in that the text fragments that doxygen generates can be produced in
languages other than English (the default) at configuration time. languages other than English (the default) at configuration time.
Currently (version 1.2.14-20020317), 28 languages Currently (version 1.3-rc3-20030215), 28 languages
are supported (sorted alphabetically): are supported (sorted alphabetically):
Brazilian Portuguese, Catalan, Chinese, Chinese Traditional, Croatian, Brazilian Portuguese, Catalan, Chinese, Chinese Traditional, Croatian,
Czech, Danish, Dutch, English, Finnish, Czech, Danish, Dutch, English, Finnish,
...@@ -91,7 +91,7 @@ when the translator was updated. ...@@ -91,7 +91,7 @@ when the translator was updated.
<TD>Danish</TD> <TD>Danish</TD>
<TD>Erik S&oslash;e S&oslash;rensen</TD> <TD>Erik S&oslash;e S&oslash;rensen</TD>
<TD>erik@NOSPAM.mail.nu</TD> <TD>erik@NOSPAM.mail.nu</TD>
<TD>1.2.7</TD> <TD>up-to-date</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Dutch</TD> <TD>Dutch</TD>
...@@ -115,7 +115,7 @@ when the translator was updated. ...@@ -115,7 +115,7 @@ when the translator was updated.
<TD>French</TD> <TD>French</TD>
<TD>Xavier Outhier</TD> <TD>Xavier Outhier</TD>
<TD>xouthier@NOSPAM.yahoo.fr</TD> <TD>xouthier@NOSPAM.yahoo.fr</TD>
<TD>1.2.17</TD> <TD>up-to-date</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>German</TD> <TD>German</TD>
...@@ -243,7 +243,7 @@ when the translator was updated. ...@@ -243,7 +243,7 @@ when the translator was updated.
\hline \hline
Czech & Petr P\v{r}ikryl & {\tt prikrylp@skil.cz} & up-to-date \\ Czech & Petr P\v{r}ikryl & {\tt prikrylp@skil.cz} & up-to-date \\
\hline \hline
Danish & Erik S\o{}e S\o{}rensen & {\tt erik@mail.nu} & 1.2.7 \\ Danish & Erik S\o{}e S\o{}rensen & {\tt erik@mail.nu} & up-to-date \\
\hline \hline
Dutch & Dimitri van Heesch & {\tt dimitri@stack.nl} & up-to-date \\ Dutch & Dimitri van Heesch & {\tt dimitri@stack.nl} & up-to-date \\
\hline \hline
...@@ -251,7 +251,7 @@ when the translator was updated. ...@@ -251,7 +251,7 @@ when the translator was updated.
\hline \hline
Finnish & Olli Korhonen & {\tt Olli.Korhonen@ccc.fi} & obsolete \\ Finnish & Olli Korhonen & {\tt Olli.Korhonen@ccc.fi} & obsolete \\
\hline \hline
French & Xavier Outhier & {\tt xouthier@yahoo.fr} & 1.2.17 \\ French & Xavier Outhier & {\tt xouthier@yahoo.fr} & up-to-date \\
\hline \hline
German & Jens Seidel & {\tt jensseidel@users.sf.net} & up-to-date \\ German & Jens Seidel & {\tt jensseidel@users.sf.net} & up-to-date \\
\hline \hline
......
Summary: A documentation system for C/C++. Summary: A documentation system for C/C++.
Name: doxygen Name: doxygen
Version: 1.3_rc3_20030215 Version: 1.3_rc3_20030223
Release: 1 Release: 1
Epoch: 1 Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
......
...@@ -181,6 +181,8 @@ CommandMap htmlTagMap[] = ...@@ -181,6 +181,8 @@ CommandMap htmlTagMap[] =
{ "h4", HTML_H4 }, { "h4", HTML_H4 },
{ "h5", HTML_H5 }, { "h5", HTML_H5 },
{ "h6", HTML_H6 }, { "h6", HTML_H6 },
{ "span", HTML_SPAN },
{ "div", HTML_DIV },
{ 0, 0 } { 0, 0 }
}; };
......
...@@ -137,7 +137,9 @@ enum HtmlTagType ...@@ -137,7 +137,9 @@ enum HtmlTagType
HTML_H3 = 27, HTML_H3 = 27,
HTML_H4 = 28, HTML_H4 = 28,
HTML_H5 = 29, HTML_H5 = 29,
HTML_H6 = 30 HTML_H6 = 30,
HTML_SPAN = 31,
HTML_DIV = 32
}; };
class CmdMapper class CmdMapper
......
...@@ -1389,8 +1389,8 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned" ...@@ -1389,8 +1389,8 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
} }
<Body>"("{B}*("*"{B}*)*{SCOPENAME}*{B}*")"/{B}* { // (*p)->func() <Body>"("{B}*("*"{B}*)*{SCOPENAME}*{B}*")"/{B}* { // (*p)->func()
g_code->codify(yytext); g_code->codify(yytext);
int s=0;while (!isId(yytext[s])) s++; int s=0;while (s<yyleng && !isId(yytext[s])) s++;
int e=yyleng-1;while (!isId(yytext[e])) e--; int e=yyleng-1;while (e>=0 && !isId(yytext[e])) e--;
QCString varname = ((QCString)yytext).mid(s,e-s+1); QCString varname = ((QCString)yytext).mid(s,e-s+1);
addType(); addType();
g_name=varname; g_name=varname;
......
...@@ -104,14 +104,26 @@ void ConfigOption::writeStringValue(QTextStream &t,QCString &s) ...@@ -104,14 +104,26 @@ void ConfigOption::writeStringValue(QTextStream &t,QCString &s)
{ {
const char *p=s.data(); const char *p=s.data();
char c; char c;
bool hasBlanks=FALSE; bool needsEscaping=FALSE;
if (p) if (p)
{ {
while ((c=*p++)!=0 && !hasBlanks) hasBlanks = (c==' ' || c=='\n' || c=='\t'); while ((c=*p++)!=0 && !needsEscaping)
if (hasBlanks) needsEscaping = (c==' ' || c=='\n' || c=='\t' || c=='"');
t << "\"" << s << "\""; if (needsEscaping)
{
t << "\"";
p=s.data();
while (*p)
{
if (*p=='"') t << "\\"; // escape quotes
t << *p++;
}
t << "\"";
}
else else
{
t << s; t << s;
}
} }
} }
...@@ -121,13 +133,10 @@ void ConfigOption::writeStringList(QTextStream &t,QStrList &l) ...@@ -121,13 +133,10 @@ void ConfigOption::writeStringList(QTextStream &t,QStrList &l)
bool first=TRUE; bool first=TRUE;
while (p) while (p)
{ {
char c; QCString s=p;
const char *s=p;
bool hasBlanks=FALSE;
while ((c=*p++)!=0 && !hasBlanks) hasBlanks = (c==' ' || c=='\n' || c=='\t');
if (!first) t << " "; if (!first) t << " ";
first=FALSE; first=FALSE;
if (hasBlanks) t << "\"" << s << "\""; else t << s; writeStringValue(t,s);
p = l.next(); p = l.next();
if (p) t << " \\" << endl; if (p) t << " \\" << endl;
} }
......
...@@ -664,6 +664,8 @@ const char *DocStyleChange::styleString() const ...@@ -664,6 +664,8 @@ const char *DocStyleChange::styleString() const
case DocStyleChange::Subscript: return "subscript"; case DocStyleChange::Subscript: return "subscript";
case DocStyleChange::Superscript: return "superscript"; case DocStyleChange::Superscript: return "superscript";
case DocStyleChange::Preformatted: return "pre"; case DocStyleChange::Preformatted: return "pre";
case DocStyleChange::Div: return "div";
case DocStyleChange::Span: return "span";
} }
return "<invalid>"; return "<invalid>";
} }
...@@ -883,6 +885,12 @@ reparsetoken: ...@@ -883,6 +885,12 @@ reparsetoken:
{ {
switch (HtmlTagMapper::map(tokenName)) switch (HtmlTagMapper::map(tokenName))
{ {
case HTML_DIV:
warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: found <div> tag in heading\n");
break;
case HTML_PRE:
warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: found <pre> tag in heading\n");
break;
case HTML_BOLD: case HTML_BOLD:
if (!g_token->endTag) if (!g_token->endTag)
{ {
...@@ -893,20 +901,6 @@ reparsetoken: ...@@ -893,20 +901,6 @@ reparsetoken:
handleStyleLeave(parent,children,DocStyleChange::Bold,tokenName); handleStyleLeave(parent,children,DocStyleChange::Bold,tokenName);
} }
break; break;
case HTML_PRE:
if (!g_token->endTag)
{
handleStyleEnter(parent,children,DocStyleChange::Preformatted,&g_token->attribs);
parent->setInsidePreformatted(TRUE);
//doctokenizerYYsetInsidePre(TRUE);
}
else
{
handleStyleLeave(parent,children,DocStyleChange::Preformatted,tokenName);
parent->setInsidePreformatted(FALSE);
//doctokenizerYYsetInsidePre(FALSE);
}
break;
case HTML_CODE: case HTML_CODE:
if (!g_token->endTag) if (!g_token->endTag)
{ {
......
...@@ -275,7 +275,8 @@ class DocStyleChange : public DocNode ...@@ -275,7 +275,8 @@ class DocStyleChange : public DocNode
{ {
public: public:
enum Style { Bold, Italic, Code, Center, Small, enum Style { Bold, Italic, Code, Center, Small,
Subscript, Superscript, Preformatted Subscript, Superscript, Preformatted,
Span, Div
}; };
DocStyleChange(DocNode *parent,uint position,Style s,bool enable, DocStyleChange(DocNode *parent,uint position,Style s,bool enable,
const HtmlAttribList *attribs=0) : const HtmlAttribList *attribs=0) :
......
...@@ -379,7 +379,7 @@ LABELID [a-z_A-Z][a-z_A-Z0-9\-]* ...@@ -379,7 +379,7 @@ LABELID [a-z_A-Z][a-z_A-Z0-9\-]*
g_token->isEMailAddr=FALSE; g_token->isEMailAddr=FALSE;
return TK_URL; return TK_URL;
} }
<St_Para>[a-z_A-Z0-9.-]+"@"[a-z_A-Z0-9-]+("."[a-z_A-Z0-9\-]+)+[a-z_A-Z0-9\-]+ { // Mail address <St_Para>[a-z_A-Z0-9.+-]+"@"[a-z_A-Z0-9-]+("."[a-z_A-Z0-9\-]+)+[a-z_A-Z0-9\-]+ { // Mail address
g_token->name=yytext; g_token->name=yytext;
g_token->isEMailAddr=TRUE; g_token->isEMailAddr=TRUE;
return TK_URL; return TK_URL;
......
...@@ -108,6 +108,7 @@ QDict<void> Doxygen::expandAsDefinedDict(257); // all macros that should be e ...@@ -108,6 +108,7 @@ QDict<void> Doxygen::expandAsDefinedDict(257); // all macros that should be e
QIntDict<MemberGroupInfo> Doxygen::memGrpInfoDict(1009); // dictionary of the member groups heading QIntDict<MemberGroupInfo> Doxygen::memGrpInfoDict(1009); // dictionary of the member groups heading
PageInfo *Doxygen::mainPage = 0; PageInfo *Doxygen::mainPage = 0;
bool Doxygen::insideMainPage = FALSE; // are we generating docs for the main page?
QTextStream Doxygen::tagFile; QTextStream Doxygen::tagFile;
NamespaceDef *Doxygen::globalScope = new NamespaceDef("<globalScope>",1,"<globalScope>"); NamespaceDef *Doxygen::globalScope = new NamespaceDef("<globalScope>",1,"<globalScope>");
...@@ -2548,14 +2549,24 @@ static void transferFunctionDocumentation() ...@@ -2548,14 +2549,24 @@ static void transferFunctionDocumentation()
// copy group info. // copy group info.
//if (mdec->getGroupDef()==0 && mdef->getGroupDef()!=0) if (mdec->getGroupDef()==0 && mdef->getGroupDef()!=0)
//{ {
// mdef->setGroupDef(mdec->getGroupDef(),mdec->getGroupPri(),mdec->docFile(),mdec->docLine(),mdec->hasDocumentation()); mdec->setGroupDef(mdef->getGroupDef(),
//} mdef->getGroupPri(),
//else if (mdef->getGroupDef()==0 && mdec->getGroupDef()!=0) mdef->docFile(),
//{ mdef->docLine(),
// mdec->setGroupDef(mdef->getGroupDef(),mdef->getGroupPri(),mdef->docFile(),mdef->docLine(),mdef->hasDocumentation()); mdef->hasDocumentation()
//} );
}
else if (mdef->getGroupDef()==0 && mdec->getGroupDef()!=0)
{
mdef->setGroupDef(mdec->getGroupDef(),
mdec->getGroupPri(),
mdec->docFile(),
mdec->docLine(),
mdec->hasDocumentation()
);
}
mdec->mergeRefItems(mdef); mdec->mergeRefItems(mdef);
mdef->mergeRefItems(mdec); mdef->mergeRefItems(mdec);
...@@ -7850,7 +7861,6 @@ void parseInput() ...@@ -7850,7 +7861,6 @@ void parseInput()
msg("Building member list...\n"); // using class info only ! msg("Building member list...\n"); // using class info only !
buildFunctionList(root); buildFunctionList(root);
transferFunctionDocumentation();
msg("Searching for friends...\n"); msg("Searching for friends...\n");
findFriends(); findFriends();
...@@ -7884,6 +7894,7 @@ void parseInput() ...@@ -7884,6 +7894,7 @@ void parseInput()
msg("Searching for member function documentation...\n"); msg("Searching for member function documentation...\n");
findMemberDocumentation(root); // may introduce new members ! findMemberDocumentation(root); // may introduce new members !
transferRelatedFunctionDocumentation(); transferRelatedFunctionDocumentation();
transferFunctionDocumentation();
msg("Searching for members imported via using declarations...\n"); msg("Searching for members imported via using declarations...\n");
findUsingDeclImports(root); findUsingDeclImports(root);
......
...@@ -65,6 +65,7 @@ class Doxygen ...@@ -65,6 +65,7 @@ class Doxygen
static PageSDict *exampleSDict; static PageSDict *exampleSDict;
static PageSDict *pageSDict; static PageSDict *pageSDict;
static PageInfo *mainPage; static PageInfo *mainPage;
static bool insideMainPage;
static FileNameDict *includeNameDict; static FileNameDict *includeNameDict;
static FileNameDict *exampleNameDict; static FileNameDict *exampleNameDict;
static FileNameDict *inputNameDict; static FileNameDict *inputNameDict;
......
...@@ -26,7 +26,7 @@ win32-msvc:TMAKE_LFLAGS += /LIBPATH:..\lib ...@@ -26,7 +26,7 @@ win32-msvc:TMAKE_LFLAGS += /LIBPATH:..\lib
win32-borland:LIBS += qtools.lib png.lib doxygen.lib doxycfg.lib shell32.lib win32-borland:LIBS += qtools.lib png.lib doxygen.lib doxycfg.lib shell32.lib
win32-borland:TMAKE_LFLAGS += -L..\lib -L$(BCB)\lib\psdk win32-borland:TMAKE_LFLAGS += -L..\lib -L$(BCB)\lib\psdk
win32:TMAKE_CXXFLAGS += -DQT_NODLL win32:TMAKE_CXXFLAGS += -DQT_NODLL
win32-g++:LIBS = -L../lib -ldoxygen -ldoxycfg -lqtools -lpng.dll win32-g++:LIBS = -L../lib -ldoxygen -ldoxycfg -lqtools -lpng
win32-g++:TMAKE_CXXFLAGS += -fno-exceptions -fno-rtti win32-g++:TMAKE_CXXFLAGS += -fno-exceptions -fno-rtti
INCLUDEPATH += ../qtools ../libpng . INCLUDEPATH += ../qtools ../libpng .
win32-g++:INCLUDEPATH -= ../libpng win32-g++:INCLUDEPATH -= ../libpng
......
...@@ -169,6 +169,13 @@ void HtmlDocVisitor::visit(DocStyleChange *s) ...@@ -169,6 +169,13 @@ void HtmlDocVisitor::visit(DocStyleChange *s)
m_insidePre=FALSE; m_insidePre=FALSE;
m_t << "</pre>"; m_t << "</pre>";
} }
case DocStyleChange::Div:
if (s->enable()) m_t << "<div" << htmlAttribsToString(s->attribs()) << ">"; else m_t << "</div>";
break;
case DocStyleChange::Span:
if (s->enable()) m_t << "<span" << htmlAttribsToString(s->attribs()) << ">"; else m_t << "</span>";
break;
} }
} }
......
...@@ -2755,6 +2755,7 @@ void writeIndex(OutputList &ol) ...@@ -2755,6 +2755,7 @@ void writeIndex(OutputList &ol)
if (Doxygen::mainPage) if (Doxygen::mainPage)
{ {
Doxygen::insideMainPage=TRUE;
ol.parseDoc(defFileName,defLine,0,0,Doxygen::mainPage->doc,FALSE); ol.parseDoc(defFileName,defLine,0,0,Doxygen::mainPage->doc,FALSE);
if (!Config_getString("GENERATE_TAGFILE").isEmpty()) if (!Config_getString("GENERATE_TAGFILE").isEmpty())
...@@ -2776,6 +2777,7 @@ void writeIndex(OutputList &ol) ...@@ -2776,6 +2777,7 @@ void writeIndex(OutputList &ol)
Doxygen::mainPage->writeDocAnchorsToTagFile(); Doxygen::mainPage->writeDocAnchorsToTagFile();
Doxygen::tagFile << " </compound>" << endl; Doxygen::tagFile << " </compound>" << endl;
} }
Doxygen::insideMainPage=FALSE;
} }
endFile(ol); endFile(ol);
...@@ -2912,6 +2914,7 @@ void writeIndex(OutputList &ol) ...@@ -2912,6 +2914,7 @@ void writeIndex(OutputList &ol)
if (Doxygen::mainPage) if (Doxygen::mainPage)
{ {
Doxygen::insideMainPage=TRUE;
ol.disable(OutputGenerator::Man); ol.disable(OutputGenerator::Man);
startFile(ol,Doxygen::mainPage->name,0,Doxygen::mainPage->title); startFile(ol,Doxygen::mainPage->name,0,Doxygen::mainPage->title);
//SectionInfo *si=0; //SectionInfo *si=0;
...@@ -2927,6 +2930,7 @@ void writeIndex(OutputList &ol) ...@@ -2927,6 +2930,7 @@ void writeIndex(OutputList &ol)
ol.endTextBlock(); ol.endTextBlock();
endFile(ol); endFile(ol);
ol.enable(OutputGenerator::Man); ol.enable(OutputGenerator::Man);
Doxygen::insideMainPage=FALSE;
} }
ol.popGeneratorState(); ol.popGeneratorState();
......
...@@ -44,6 +44,18 @@ static QString escapeLabelName(const char *s) ...@@ -44,6 +44,18 @@ static QString escapeLabelName(const char *s)
return result; return result;
} }
const int maxLevels=5;
static const char *secLabels[maxLevels] =
{ "section","subsection","subsubsection","paragraph","subparagraph" };
static const char *getSectionName(int level)
{
int l = level;
if (Config_getBool("COMPACT_LATEX")) l++;
if (Doxygen::insideMainPage) l--;
return secLabels[QMIN(maxLevels-1,l)];
}
QString LatexDocVisitor::escapeMakeIndexChars(const char *s) QString LatexDocVisitor::escapeMakeIndexChars(const char *s)
{ {
QString result; QString result;
...@@ -187,13 +199,13 @@ void LatexDocVisitor::visit(DocStyleChange *s) ...@@ -187,13 +199,13 @@ void LatexDocVisitor::visit(DocStyleChange *s)
switch (s->style()) switch (s->style())
{ {
case DocStyleChange::Bold: case DocStyleChange::Bold:
if (s->enable()) m_t << "{\\bf "; else m_t << "} "; if (s->enable()) m_t << "{\\bf "; else m_t << "}";
break; break;
case DocStyleChange::Italic: case DocStyleChange::Italic:
if (s->enable()) m_t << "{\\em "; else m_t << "} "; if (s->enable()) m_t << "{\\em "; else m_t << "\\/}";
break; break;
case DocStyleChange::Code: case DocStyleChange::Code:
if (s->enable()) m_t << "{\\tt "; else m_t << "} "; if (s->enable()) m_t << "{\\tt "; else m_t << "}";
break; break;
case DocStyleChange::Subscript: case DocStyleChange::Subscript:
if (s->enable()) m_t << "$_{\\mbox{"; else m_t << "}}$ "; if (s->enable()) m_t << "$_{\\mbox{"; else m_t << "}}$ ";
...@@ -219,6 +231,8 @@ void LatexDocVisitor::visit(DocStyleChange *s) ...@@ -219,6 +231,8 @@ void LatexDocVisitor::visit(DocStyleChange *s)
m_t << "\\end{alltt}\\normalsize " << endl; m_t << "\\end{alltt}\\normalsize " << endl;
} }
break; break;
case DocStyleChange::Div: /* HTML only */ break;
case DocStyleChange::Span: /* HTML only */ break;
} }
} }
...@@ -476,26 +490,7 @@ void LatexDocVisitor::visitPre(DocSection *s) ...@@ -476,26 +490,7 @@ void LatexDocVisitor::visitPre(DocSection *s)
{ {
m_t << "\\hypertarget{" << s->file() << "_" << s->anchor() << "}{}"; m_t << "\\hypertarget{" << s->file() << "_" << s->anchor() << "}{}";
} }
if (Config_getBool("COMPACT_LATEX")) m_t << "\\" << getSectionName(s->level()) << "{";
{
switch(s->level())
{
case 1: m_t << "\\subsubsection{"; break;
case 2: m_t << "\\paragraph{"; break;
case 3: m_t << "\\subparagraph{"; break;
case 4: m_t << "\\subparagraph{"; break;
}
}
else
{
switch(s->level())
{
case 1: m_t << "\\subsection{"; break;
case 2: m_t << "\\subsubsection{"; break;
case 3: m_t << "\\paragraph{"; break;
case 4: m_t << "\\subparagraph{"; break;
}
}
filter(s->title()); filter(s->title());
m_t << "}\\label{" << s->anchor() << "}" << endl; m_t << "}\\label{" << s->anchor() << "}" << endl;
} }
...@@ -667,27 +662,7 @@ void LatexDocVisitor::visitPost(DocHRef *) ...@@ -667,27 +662,7 @@ void LatexDocVisitor::visitPost(DocHRef *)
void LatexDocVisitor::visitPre(DocHtmlHeader *header) void LatexDocVisitor::visitPre(DocHtmlHeader *header)
{ {
if (m_hide) return; if (m_hide) return;
if (Config_getBool("COMPACT_LATEX")) m_t << "\\" << getSectionName(header->level()) << "*{";
{
switch(header->level())
{
case 1: m_t << "\\subsection*{"; break;
case 2: m_t << "\\subsubsection*{"; break;
case 3: m_t << "\\paragraph*{"; break;
default: m_t << "\\subparagraph*{"; break;
}
}
else
{
switch(header->level())
{
case 1: m_t << "\\section*{"; break;
case 2: m_t << "\\subsection*{"; break;
case 3: m_t << "\\subsubsection*{"; break;
case 4: m_t << "\\paragraph*{"; break;
default: m_t << "\\subparagraph*{"; break;
}
}
} }
void LatexDocVisitor::visitPost(DocHtmlHeader *) void LatexDocVisitor::visitPost(DocHtmlHeader *)
...@@ -835,7 +810,6 @@ void LatexDocVisitor::visitPost(DocRef *) ...@@ -835,7 +810,6 @@ void LatexDocVisitor::visitPost(DocRef *)
{ {
if (m_hide) return; if (m_hide) return;
endLink(); endLink();
m_t << " ";
} }
void LatexDocVisitor::visitPre(DocSecRefItem *) void LatexDocVisitor::visitPre(DocSecRefItem *)
...@@ -968,7 +942,6 @@ void LatexDocVisitor::visitPost(DocInternalRef *) ...@@ -968,7 +942,6 @@ void LatexDocVisitor::visitPost(DocInternalRef *)
{ {
if (m_hide) return; if (m_hide) return;
endLink(); endLink();
m_t << " ";
} }
void LatexDocVisitor::visitPre(DocCopy *) void LatexDocVisitor::visitPre(DocCopy *)
......
...@@ -257,6 +257,7 @@ static void writeDefaultHeaderPart1(QTextStream &t) ...@@ -257,6 +257,7 @@ static void writeDefaultHeaderPart1(QTextStream &t)
<< " colorlinks=true," << endl << " colorlinks=true," << endl
<< " linkcolor=blue" << endl << " linkcolor=blue" << endl
<< " ]{hyperref}" << endl << " ]{hyperref}" << endl
<< "\\usepackage{pspicture}" << endl
<< "\\else" << endl << "\\else" << endl
<< "\\usepackage[pdftex," << endl << "\\usepackage[pdftex," << endl
<< " pagebackref=true," << endl << " pagebackref=true," << endl
...@@ -287,7 +288,7 @@ static void writeDefaultHeaderPart1(QTextStream &t) ...@@ -287,7 +288,7 @@ static void writeDefaultHeaderPart1(QTextStream &t)
} }
t << "\\makeindex\n" t << "\\makeindex\n"
"\\setcounter{tocdepth}{1}\n" "\\setcounter{tocdepth}{1}\n"
"\\setlength{\\footrulewidth}{0.4pt}\n" "\\renewcommand{\\footrulewidth}{0.4pt}\n"
"\\begin{document}\n"; "\\begin{document}\n";
if (theTranslator->idLanguage()=="greek") t << "\\selectlanguage{greek}\n"; if (theTranslator->idLanguage()=="greek") t << "\\selectlanguage{greek}\n";
t << "\\begin{titlepage}\n" t << "\\begin{titlepage}\n"
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
LEX = flex LEX = flex
YACC = bison YACC = bison
PERL = perl PERL = perl
INCBUFSIZE = $(PERL) -n -e "s/YY_BUF_SIZE 16384/YY_BUF_SIZE 262144/g; print $$_;" INCBUFSIZE = $(PERL) -n -e 's/YY_BUF_SIZE 16384/YY_BUF_SIZE 262144/g; print $$_;'
#${ #${
sub GenerateDep { sub GenerateDep {
......
...@@ -168,7 +168,9 @@ void ManDocVisitor::visit(DocStyleChange *s) ...@@ -168,7 +168,9 @@ void ManDocVisitor::visit(DocStyleChange *s)
m_t << ".PP" << endl; m_t << ".PP" << endl;
m_firstCol=TRUE; m_firstCol=TRUE;
} }
break; break;
case DocStyleChange::Div: /* HTML only */ break;
case DocStyleChange::Span: /* HTML only */ break;
} }
} }
......
...@@ -465,6 +465,10 @@ QCString MemberDef::getOutputFileBase() const ...@@ -465,6 +465,10 @@ QCString MemberDef::getOutputFileBase() const
{ {
return nspace->getOutputFileBase(); return nspace->getOutputFileBase();
} }
//else if (group)
//{
// return group->getOutputFileBase();
//}
else if (fileDef) else if (fileDef)
{ {
return fileDef->getOutputFileBase(); return fileDef->getOutputFileBase();
......
...@@ -574,7 +574,7 @@ void PerlModDocVisitor::visit(DocSymbol *sy) ...@@ -574,7 +574,7 @@ void PerlModDocVisitor::visit(DocSymbol *sy)
void PerlModDocVisitor::visit(DocURL *u) void PerlModDocVisitor::visit(DocURL *u)
{ {
openItem("url"); openItem("url");
m_output.addQuoted(u->url()); m_output.addFieldQuotedString("content", u->url());
closeItem(); closeItem();
} }
...@@ -594,6 +594,8 @@ void PerlModDocVisitor::visit(DocStyleChange *s) ...@@ -594,6 +594,8 @@ void PerlModDocVisitor::visit(DocStyleChange *s)
case DocStyleChange::Center: style = "center"; break; case DocStyleChange::Center: style = "center"; break;
case DocStyleChange::Small: style = "small"; break; case DocStyleChange::Small: style = "small"; break;
case DocStyleChange::Preformatted: style = "preformatted"; break; case DocStyleChange::Preformatted: style = "preformatted"; break;
case DocStyleChange::Div: style = "div"; break;
case DocStyleChange::Span: style = "span"; break;
} }
openItem("style"); openItem("style");
......
...@@ -124,6 +124,12 @@ class PrintDocVisitor : public DocVisitor ...@@ -124,6 +124,12 @@ class PrintDocVisitor : public DocVisitor
case DocStyleChange::Preformatted: case DocStyleChange::Preformatted:
if (s->enable()) printf("<pre>"); else printf("</pre>"); if (s->enable()) printf("<pre>"); else printf("</pre>");
break; break;
case DocStyleChange::Div:
if (s->enable()) printf("<div>"); else printf("</div>");
break;
case DocStyleChange::Span:
if (s->enable()) printf("<span>"); else printf("</span>");
break;
} }
} }
void visit(DocVerbatim *s) void visit(DocVerbatim *s)
......
...@@ -277,6 +277,8 @@ void RTFDocVisitor::visit(DocStyleChange *s) ...@@ -277,6 +277,8 @@ void RTFDocVisitor::visit(DocStyleChange *s)
m_t << "}" << endl; m_t << "}" << endl;
} }
break; break;
case DocStyleChange::Div: /* HTML only */ break;
case DocStyleChange::Span: /* HTML only */ break;
} }
} }
......
This diff is collapsed.
...@@ -100,7 +100,7 @@ class TranslatorGerman : public Translator ...@@ -100,7 +100,7 @@ class TranslatorGerman : public Translator
virtual QCString latexLanguageSupportCommand() virtual QCString latexLanguageSupportCommand()
{ {
QCString result="\\usepackage{ngerman}\n"; QCString result="\\usepackage{ngerman}\n";
result+="\\usepackage{t1enc}% Trennung verbessern bei Umlauten\n"; result+="\\usepackage[latin1]{inputenc}\n";
//result+="%\\usepackage[latin1]{inputenc}% Kodierung (cp850,latin1,ansinew)\n"; //result+="%\\usepackage[latin1]{inputenc}% Kodierung (cp850,latin1,ansinew)\n";
return result; return result;
} }
......
This diff is collapsed.
...@@ -691,7 +691,10 @@ QCString removeRedundantWhiteSpace(const QCString &s) ...@@ -691,7 +691,10 @@ QCString removeRedundantWhiteSpace(const QCString &s)
{ {
result+=" >"; // insert extra space for layouting (nested) templates result+=" >"; // insert extra space for layouting (nested) templates
} }
else if (i>0 && i<l-1 && c==',' && !isspace(s.at(i-1)) && isId(s.at(i+1))) else if (i>0 && c==',' && !isspace(s.at(i-1))
&& ((i<l-1 && isId(s.at(i+1)))
|| (i<l-2 && s.at(i+1)=='$' && isId(s.at(i+2))) // for PHP
|| (i<l-3 && s.at(i+1)=='&' && s.at(i+2)=='$' && isId(s.at(i+3))))) // for PHP
{ {
result+=", "; result+=", ";
} }
...@@ -711,12 +714,13 @@ QCString removeRedundantWhiteSpace(const QCString &s) ...@@ -711,12 +714,13 @@ QCString removeRedundantWhiteSpace(const QCString &s)
} }
else if (!isspace(c) || else if (!isspace(c) ||
( i>0 && i<l-1 && ( i>0 && i<l-1 &&
(isId(s.at(i-1)) || s.at(i-1)==')' || s.at(i-1)==',' || s.at(i-1)=='>' || s.at(i-1)==']') && (isId(s.at(i-1)) || s.at(i-1)==')' || s.at(i-1)==',' || s.at(i-1)=='>' || s.at(i-1)==']')
isId(s.at(i+1)) && (isId(s.at(i+1)) || (i<l-2 && s.at(i+1)=='$' && isId(s.at(i+2)))
|| (i<l-3 && s.at(i+1)=='&' && s.at(i+2)=='$' && isId(s.at(i+3))))
) )
) )
{ {
if (c=='*' || c=='&' || c=='@') if (c=='*' || c=='&' || c=='@' || c=='$')
{ {
uint rl=result.length(); uint rl=result.length();
if (rl>0 && (isId(result.at(rl-1)) || result.at(rl-1)=='>')) result+=' '; if (rl>0 && (isId(result.at(rl-1)) || result.at(rl-1)=='>')) result+=' ';
...@@ -2432,7 +2436,7 @@ bool resolveRef(/* in */ const char *scName, ...@@ -2432,7 +2436,7 @@ bool resolveRef(/* in */ const char *scName,
ClassDef *cd=0; ClassDef *cd=0;
NamespaceDef *nd=0; NamespaceDef *nd=0;
if (scopePos==-1 && isLowerCase(tsName)) if (!inSeeBlock && scopePos==-1 && isLowerCase(tsName))
{ // link to lower case only name => do not try to autolink { // link to lower case only name => do not try to autolink
return FALSE; return FALSE;
} }
......
...@@ -155,6 +155,8 @@ void XmlDocVisitor::visit(DocStyleChange *s) ...@@ -155,6 +155,8 @@ void XmlDocVisitor::visit(DocStyleChange *s)
m_insidePre=FALSE; m_insidePre=FALSE;
} }
break; break;
case DocStyleChange::Div: /* HTML only */ break;
case DocStyleChange::Span: /* HTML only */ break;
} }
} }
......
...@@ -450,6 +450,9 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De ...@@ -450,6 +450,9 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
// enum values are written as part of the enum // enum values are written as part of the enum
if (md->memberType()==MemberDef::EnumValue) return; if (md->memberType()==MemberDef::EnumValue) return;
// group members are only visible in their group
//if (def->definitionType()!=Definition::TypeGroup && md->getGroupDef()) return;
QCString memType; QCString memType;
bool isFunc=FALSE; bool isFunc=FALSE;
switch (md->memberType()) switch (md->memberType())
...@@ -482,18 +485,16 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De ...@@ -482,18 +485,16 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
t << " <memberdef kind=\""; t << " <memberdef kind=\"";
//enum { define_t,variable_t,typedef_t,enum_t,function_t } xmlType = function_t; //enum { define_t,variable_t,typedef_t,enum_t,function_t } xmlType = function_t;
t << memType << "\" id=\""; t << memType << "\" id=\"";
t << md->getOutputFileBase() if (md->getGroupDef() && def->definitionType()==Definition::TypeGroup)
<< "_1" // encoded `:' character (see util.cpp:convertNameToFile)
<< md->anchor();
t << "\"";
t << " virt=\"";
switch (md->virtualness())
{ {
case Normal: t << "normal"; break; t << md->getGroupDef()->getOutputFileBase();
case Virtual: t << "virtual"; break;
case Pure: t << "pure-virtual"; break;
default: ASSERT(0);
} }
else
{
t << md->getOutputFileBase();
}
t << "_1" // encoded `:' character (see util.cpp:convertNameToFile)
<< md->anchor();
t << "\" prot=\""; t << "\" prot=\"";
switch(md->protection()) switch(md->protection())
{ {
...@@ -503,6 +504,7 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De ...@@ -503,6 +504,7 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
} }
t << "\" static=\""; t << "\" static=\"";
if (md->isStatic()) t << "yes"; else t << "no"; if (md->isStatic()) t << "yes"; else t << "no";
t << "\""; t << "\"";
if (isFunc) if (isFunc)
...@@ -510,6 +512,22 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De ...@@ -510,6 +512,22 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
ArgumentList *al = md->argumentList(); ArgumentList *al = md->argumentList();
t << " const=\""; t << " const=\"";
if (al && al->constSpecifier) t << "yes"; else t << "no"; if (al && al->constSpecifier) t << "yes"; else t << "no";
t << "\" explicit=\"";
if (md->isExplicit()) t << "yes"; else t << "no";
t << "\" inline=\"";
if (md->isInline()) t << "yes"; else t << "no";
t << "\" virt=\"";
switch (md->virtualness())
{
case Normal: t << "normal"; break;
case Virtual: t << "virtual"; break;
case Pure: t << "pure-virtual"; break;
default: ASSERT(0);
}
t << "\""; t << "\"";
} }
...@@ -518,6 +536,10 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De ...@@ -518,6 +536,10 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
ArgumentList *al = md->argumentList(); ArgumentList *al = md->argumentList();
t << " volatile=\""; t << " volatile=\"";
if (al && al->volatileSpecifier) t << "yes"; else t << "no"; if (al && al->volatileSpecifier) t << "yes"; else t << "no";
t << "\" mutable=\"";
if (md->isMutable()) t << "yes"; else t << "no";
t << "\""; t << "\"";
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment