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
(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.
......@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
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:
The documentation is extracted directly from the sources, which
makes it much easier to keep the documentation consistent with the
source code.
<li> Doxygen can be configured to extract the code structure
from undocumented source files. This can be very useful to quickly
<li> You can configure doxygen to extract the code structure
from undocumented source files. This is very useful to quickly
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,
and collaboration diagrams, which are all generated automatically.
<li> You can even `abuse' doxygen for creating normal documentation (as I did
......@@ -183,7 +183,7 @@ Thanks go to:
Roddy, Paul Schwartz, Charles Duffy, Vadym Voznyuk, Philip Walton,
Dwight Browne, Andreas Fredriksson, Karel Lindveld, Ivan Lee, Albert
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
an ultra cool <a href="http://www.psion.com/revoplus">Revo plus</a>
organizer!
......
......@@ -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
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):
Brazilian Portuguese, Catalan, Chinese, Chinese Traditional, Croatian,
Czech, Danish, Dutch, English, Finnish,
......@@ -91,7 +91,7 @@ when the translator was updated.
<TD>Danish</TD>
<TD>Erik S&oslash;e S&oslash;rensen</TD>
<TD>erik@NOSPAM.mail.nu</TD>
<TD>1.2.7</TD>
<TD>up-to-date</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>Dutch</TD>
......@@ -115,7 +115,7 @@ when the translator was updated.
<TD>French</TD>
<TD>Xavier Outhier</TD>
<TD>xouthier@NOSPAM.yahoo.fr</TD>
<TD>1.2.17</TD>
<TD>up-to-date</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>German</TD>
......@@ -243,7 +243,7 @@ when the translator was updated.
\hline
Czech & Petr P\v{r}ikryl & {\tt prikrylp@skil.cz} & up-to-date \\
\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
Dutch & Dimitri van Heesch & {\tt dimitri@stack.nl} & up-to-date \\
\hline
......@@ -251,7 +251,7 @@ when the translator was updated.
\hline
Finnish & Olli Korhonen & {\tt Olli.Korhonen@ccc.fi} & obsolete \\
\hline
French & Xavier Outhier & {\tt xouthier@yahoo.fr} & 1.2.17 \\
French & Xavier Outhier & {\tt xouthier@yahoo.fr} & up-to-date \\
\hline
German & Jens Seidel & {\tt jensseidel@users.sf.net} & up-to-date \\
\hline
......
Summary: A documentation system for C/C++.
Name: doxygen
Version: 1.3_rc3_20030215
Version: 1.3_rc3_20030223
Release: 1
Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
......
......@@ -181,6 +181,8 @@ CommandMap htmlTagMap[] =
{ "h4", HTML_H4 },
{ "h5", HTML_H5 },
{ "h6", HTML_H6 },
{ "span", HTML_SPAN },
{ "div", HTML_DIV },
{ 0, 0 }
};
......
......@@ -137,7 +137,9 @@ enum HtmlTagType
HTML_H3 = 27,
HTML_H4 = 28,
HTML_H5 = 29,
HTML_H6 = 30
HTML_H6 = 30,
HTML_SPAN = 31,
HTML_DIV = 32
};
class CmdMapper
......
......@@ -1389,8 +1389,8 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
}
<Body>"("{B}*("*"{B}*)*{SCOPENAME}*{B}*")"/{B}* { // (*p)->func()
g_code->codify(yytext);
int s=0;while (!isId(yytext[s])) s++;
int e=yyleng-1;while (!isId(yytext[e])) e--;
int s=0;while (s<yyleng && !isId(yytext[s])) s++;
int e=yyleng-1;while (e>=0 && !isId(yytext[e])) e--;
QCString varname = ((QCString)yytext).mid(s,e-s+1);
addType();
g_name=varname;
......
......@@ -104,14 +104,26 @@ void ConfigOption::writeStringValue(QTextStream &t,QCString &s)
{
const char *p=s.data();
char c;
bool hasBlanks=FALSE;
bool needsEscaping=FALSE;
if (p)
{
while ((c=*p++)!=0 && !hasBlanks) hasBlanks = (c==' ' || c=='\n' || c=='\t');
if (hasBlanks)
t << "\"" << s << "\"";
while ((c=*p++)!=0 && !needsEscaping)
needsEscaping = (c==' ' || c=='\n' || c=='\t' || c=='"');
if (needsEscaping)
{
t << "\"";
p=s.data();
while (*p)
{
if (*p=='"') t << "\\"; // escape quotes
t << *p++;
}
t << "\"";
}
else
{
t << s;
}
}
}
......@@ -121,13 +133,10 @@ void ConfigOption::writeStringList(QTextStream &t,QStrList &l)
bool first=TRUE;
while (p)
{
char c;
const char *s=p;
bool hasBlanks=FALSE;
while ((c=*p++)!=0 && !hasBlanks) hasBlanks = (c==' ' || c=='\n' || c=='\t');
QCString s=p;
if (!first) t << " ";
first=FALSE;
if (hasBlanks) t << "\"" << s << "\""; else t << s;
writeStringValue(t,s);
p = l.next();
if (p) t << " \\" << endl;
}
......
......@@ -664,6 +664,8 @@ const char *DocStyleChange::styleString() const
case DocStyleChange::Subscript: return "subscript";
case DocStyleChange::Superscript: return "superscript";
case DocStyleChange::Preformatted: return "pre";
case DocStyleChange::Div: return "div";
case DocStyleChange::Span: return "span";
}
return "<invalid>";
}
......@@ -883,6 +885,12 @@ reparsetoken:
{
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:
if (!g_token->endTag)
{
......@@ -893,20 +901,6 @@ reparsetoken:
handleStyleLeave(parent,children,DocStyleChange::Bold,tokenName);
}
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:
if (!g_token->endTag)
{
......
......@@ -275,7 +275,8 @@ class DocStyleChange : public DocNode
{
public:
enum Style { Bold, Italic, Code, Center, Small,
Subscript, Superscript, Preformatted
Subscript, Superscript, Preformatted,
Span, Div
};
DocStyleChange(DocNode *parent,uint position,Style s,bool enable,
const HtmlAttribList *attribs=0) :
......
......@@ -379,7 +379,7 @@ LABELID [a-z_A-Z][a-z_A-Z0-9\-]*
g_token->isEMailAddr=FALSE;
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->isEMailAddr=TRUE;
return TK_URL;
......
......@@ -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
PageInfo *Doxygen::mainPage = 0;
bool Doxygen::insideMainPage = FALSE; // are we generating docs for the main page?
QTextStream Doxygen::tagFile;
NamespaceDef *Doxygen::globalScope = new NamespaceDef("<globalScope>",1,"<globalScope>");
......@@ -2548,14 +2549,24 @@ static void transferFunctionDocumentation()
// copy group info.
//if (mdec->getGroupDef()==0 && mdef->getGroupDef()!=0)
//{
// mdef->setGroupDef(mdec->getGroupDef(),mdec->getGroupPri(),mdec->docFile(),mdec->docLine(),mdec->hasDocumentation());
//}
//else if (mdef->getGroupDef()==0 && mdec->getGroupDef()!=0)
//{
// mdec->setGroupDef(mdef->getGroupDef(),mdef->getGroupPri(),mdef->docFile(),mdef->docLine(),mdef->hasDocumentation());
//}
if (mdec->getGroupDef()==0 && mdef->getGroupDef()!=0)
{
mdec->setGroupDef(mdef->getGroupDef(),
mdef->getGroupPri(),
mdef->docFile(),
mdef->docLine(),
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);
mdef->mergeRefItems(mdec);
......@@ -7850,7 +7861,6 @@ void parseInput()
msg("Building member list...\n"); // using class info only !
buildFunctionList(root);
transferFunctionDocumentation();
msg("Searching for friends...\n");
findFriends();
......@@ -7884,6 +7894,7 @@ void parseInput()
msg("Searching for member function documentation...\n");
findMemberDocumentation(root); // may introduce new members !
transferRelatedFunctionDocumentation();
transferFunctionDocumentation();
msg("Searching for members imported via using declarations...\n");
findUsingDeclImports(root);
......
......@@ -65,6 +65,7 @@ class Doxygen
static PageSDict *exampleSDict;
static PageSDict *pageSDict;
static PageInfo *mainPage;
static bool insideMainPage;
static FileNameDict *includeNameDict;
static FileNameDict *exampleNameDict;
static FileNameDict *inputNameDict;
......
......@@ -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:TMAKE_LFLAGS += -L..\lib -L$(BCB)\lib\psdk
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
INCLUDEPATH += ../qtools ../libpng .
win32-g++:INCLUDEPATH -= ../libpng
......
......@@ -169,6 +169,13 @@ void HtmlDocVisitor::visit(DocStyleChange *s)
m_insidePre=FALSE;
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)
if (Doxygen::mainPage)
{
Doxygen::insideMainPage=TRUE;
ol.parseDoc(defFileName,defLine,0,0,Doxygen::mainPage->doc,FALSE);
if (!Config_getString("GENERATE_TAGFILE").isEmpty())
......@@ -2776,6 +2777,7 @@ void writeIndex(OutputList &ol)
Doxygen::mainPage->writeDocAnchorsToTagFile();
Doxygen::tagFile << " </compound>" << endl;
}
Doxygen::insideMainPage=FALSE;
}
endFile(ol);
......@@ -2912,6 +2914,7 @@ void writeIndex(OutputList &ol)
if (Doxygen::mainPage)
{
Doxygen::insideMainPage=TRUE;
ol.disable(OutputGenerator::Man);
startFile(ol,Doxygen::mainPage->name,0,Doxygen::mainPage->title);
//SectionInfo *si=0;
......@@ -2927,6 +2930,7 @@ void writeIndex(OutputList &ol)
ol.endTextBlock();
endFile(ol);
ol.enable(OutputGenerator::Man);
Doxygen::insideMainPage=FALSE;
}
ol.popGeneratorState();
......
......@@ -44,6 +44,18 @@ static QString escapeLabelName(const char *s)
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 result;
......@@ -187,13 +199,13 @@ void LatexDocVisitor::visit(DocStyleChange *s)
switch (s->style())
{
case DocStyleChange::Bold:
if (s->enable()) m_t << "{\\bf "; else m_t << "} ";
if (s->enable()) m_t << "{\\bf "; else m_t << "}";
break;
case DocStyleChange::Italic:
if (s->enable()) m_t << "{\\em "; else m_t << "} ";
if (s->enable()) m_t << "{\\em "; else m_t << "\\/}";
break;
case DocStyleChange::Code:
if (s->enable()) m_t << "{\\tt "; else m_t << "} ";
if (s->enable()) m_t << "{\\tt "; else m_t << "}";
break;
case DocStyleChange::Subscript:
if (s->enable()) m_t << "$_{\\mbox{"; else m_t << "}}$ ";
......@@ -219,6 +231,8 @@ void LatexDocVisitor::visit(DocStyleChange *s)
m_t << "\\end{alltt}\\normalsize " << endl;
}
break;
case DocStyleChange::Div: /* HTML only */ break;
case DocStyleChange::Span: /* HTML only */ break;
}
}
......@@ -476,26 +490,7 @@ void LatexDocVisitor::visitPre(DocSection *s)
{
m_t << "\\hypertarget{" << s->file() << "_" << s->anchor() << "}{}";
}
if (Config_getBool("COMPACT_LATEX"))
{
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;
}
}
m_t << "\\" << getSectionName(s->level()) << "{";
filter(s->title());
m_t << "}\\label{" << s->anchor() << "}" << endl;
}
......@@ -667,27 +662,7 @@ void LatexDocVisitor::visitPost(DocHRef *)
void LatexDocVisitor::visitPre(DocHtmlHeader *header)
{
if (m_hide) return;
if (Config_getBool("COMPACT_LATEX"))
{
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;
}
}
m_t << "\\" << getSectionName(header->level()) << "*{";
}
void LatexDocVisitor::visitPost(DocHtmlHeader *)
......@@ -835,7 +810,6 @@ void LatexDocVisitor::visitPost(DocRef *)
{
if (m_hide) return;
endLink();
m_t << " ";
}
void LatexDocVisitor::visitPre(DocSecRefItem *)
......@@ -968,7 +942,6 @@ void LatexDocVisitor::visitPost(DocInternalRef *)
{
if (m_hide) return;
endLink();
m_t << " ";
}
void LatexDocVisitor::visitPre(DocCopy *)
......
......@@ -257,6 +257,7 @@ static void writeDefaultHeaderPart1(QTextStream &t)
<< " colorlinks=true," << endl
<< " linkcolor=blue" << endl
<< " ]{hyperref}" << endl
<< "\\usepackage{pspicture}" << endl
<< "\\else" << endl
<< "\\usepackage[pdftex," << endl
<< " pagebackref=true," << endl
......@@ -287,7 +288,7 @@ static void writeDefaultHeaderPart1(QTextStream &t)
}
t << "\\makeindex\n"
"\\setcounter{tocdepth}{1}\n"
"\\setlength{\\footrulewidth}{0.4pt}\n"
"\\renewcommand{\\footrulewidth}{0.4pt}\n"
"\\begin{document}\n";
if (theTranslator->idLanguage()=="greek") t << "\\selectlanguage{greek}\n";
t << "\\begin{titlepage}\n"
......
......@@ -19,7 +19,7 @@
LEX = flex
YACC = bison
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 {
......
......@@ -168,7 +168,9 @@ void ManDocVisitor::visit(DocStyleChange *s)
m_t << ".PP" << endl;
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
{
return nspace->getOutputFileBase();
}
//else if (group)
//{
// return group->getOutputFileBase();
//}
else if (fileDef)
{
return fileDef->getOutputFileBase();
......
......@@ -574,7 +574,7 @@ void PerlModDocVisitor::visit(DocSymbol *sy)
void PerlModDocVisitor::visit(DocURL *u)
{
openItem("url");
m_output.addQuoted(u->url());
m_output.addFieldQuotedString("content", u->url());
closeItem();
}
......@@ -594,6 +594,8 @@ void PerlModDocVisitor::visit(DocStyleChange *s)
case DocStyleChange::Center: style = "center"; break;
case DocStyleChange::Small: style = "small"; break;
case DocStyleChange::Preformatted: style = "preformatted"; break;
case DocStyleChange::Div: style = "div"; break;
case DocStyleChange::Span: style = "span"; break;
}
openItem("style");
......
......@@ -124,6 +124,12 @@ class PrintDocVisitor : public DocVisitor
case DocStyleChange::Preformatted:
if (s->enable()) printf("<pre>"); else printf("</pre>");
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)
......
......@@ -277,6 +277,8 @@ void RTFDocVisitor::visit(DocStyleChange *s)
m_t << "}" << endl;
}
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
virtual QCString latexLanguageSupportCommand()
{
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";
return result;
}
......
This diff is collapsed.
......@@ -691,7 +691,10 @@ QCString removeRedundantWhiteSpace(const QCString &s)
{
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+=", ";
}
......@@ -711,12 +714,13 @@ QCString removeRedundantWhiteSpace(const QCString &s)
}
else if (!isspace(c) ||
( 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))
(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)) || (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();
if (rl>0 && (isId(result.at(rl-1)) || result.at(rl-1)=='>')) result+=' ';
......@@ -2432,7 +2436,7 @@ bool resolveRef(/* in */ const char *scName,
ClassDef *cd=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
return FALSE;
}
......
......@@ -155,6 +155,8 @@ void XmlDocVisitor::visit(DocStyleChange *s)
m_insidePre=FALSE;
}
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
// enum values are written as part of the enum
if (md->memberType()==MemberDef::EnumValue) return;
// group members are only visible in their group
//if (def->definitionType()!=Definition::TypeGroup && md->getGroupDef()) return;
QCString memType;
bool isFunc=FALSE;
switch (md->memberType())
......@@ -482,18 +485,16 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
t << " <memberdef kind=\"";
//enum { define_t,variable_t,typedef_t,enum_t,function_t } xmlType = function_t;
t << memType << "\" id=\"";
t << md->getOutputFileBase()
<< "_1" // encoded `:' character (see util.cpp:convertNameToFile)
<< md->anchor();
t << "\"";
t << " virt=\"";
switch (md->virtualness())
if (md->getGroupDef() && def->definitionType()==Definition::TypeGroup)
{
case Normal: t << "normal"; break;
case Virtual: t << "virtual"; break;
case Pure: t << "pure-virtual"; break;
default: ASSERT(0);
t << md->getGroupDef()->getOutputFileBase();
}
else
{
t << md->getOutputFileBase();
}
t << "_1" // encoded `:' character (see util.cpp:convertNameToFile)
<< md->anchor();
t << "\" prot=\"";
switch(md->protection())
{
......@@ -503,6 +504,7 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
}
t << "\" static=\"";
if (md->isStatic()) t << "yes"; else t << "no";
t << "\"";
if (isFunc)
......@@ -510,6 +512,22 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
ArgumentList *al = md->argumentList();
t << " const=\"";
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 << "\"";
}
......@@ -518,6 +536,10 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
ArgumentList *al = md->argumentList();
t << " volatile=\"";
if (al && al->volatileSpecifier) t << "yes"; else t << "no";
t << "\" mutable=\"";
if (md->isMutable()) t << "yes"; else t << "no";
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