Commit 8b0ae7ca authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-1.4.6-20060202

parent e6060ed2
DOXYGEN Version 1.4.6-20060115
DOXYGEN Version 1.4.6-20060202
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
--------
Dimitri van Heesch (15 January 2006)
Dimitri van Heesch (02 February 2006)
DOXYGEN Version 1.4.6_20060115
DOXYGEN Version 1.4.6_20060202
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 January 2006)
Dimitri van Heesch (dimitri@stack.nl) (02 February 2006)
......@@ -20,7 +20,7 @@ doxygen_version_minor=4
doxygen_version_revision=6
#NOTE: Setting version_mmn to "NO" will omit mmn info from the package.
doxygen_version_mmn=20060115
doxygen_version_mmn=20060202
bin_dirs=`echo $PATH | sed -e "s/:/ /g"`
......
......@@ -222,7 +222,7 @@ declaration and the detailed description before the member definition.
If you want to document the members of a file, struct, union, class, or enum,
and you want to put the documentation for these members inside the compound,
it is sometimes desired to place the documentation block after the member
instead of before. For this purpose you should put an additional \< marker
instead of before. For this purpose you have to put an additional \< marker
in the comment block.
Here are some examples:
......
......@@ -814,6 +814,7 @@ static bool getLinkInScope(const QCString &c, // scope
Definition *d = md->getOuterScope()==Doxygen::globalScope ?
md->getBodyDef() : md->getOuterScope();
if (md->getGroupDef()) d = md->getGroupDef();
//printf("d=%p linkable=%d\n",d,d?d->isLinkable():0);
if (d && d->isLinkable())
{
g_theCallContext.setClass(stripClassName(md->typeString()));
......@@ -1777,7 +1778,7 @@ OPERATOR {ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}
<SkipCPP>"//" {
g_code->codify(yytext);
}
<Body>"{" {
<Body,FuncCall>"{" {
g_theVarContext.pushScope();
g_scopeStack.push(INNERBLOCK);
......
......@@ -90,6 +90,7 @@
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="refid" type="xsd:string" />
<xsd:attribute name="prot" type="DoxProtectionKind" use="optional"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
......
......@@ -90,6 +90,7 @@
" <xsd:simpleContent>\n"
" <xsd:extension base=\"xsd:string\">\n"
" <xsd:attribute name=\"refid\" type=\"xsd:string\" />\n"
" <xsd:attribute name=\"prot\" type=\"DoxProtectionKind\" use=\"optional\"/>\n"
" </xsd:extension>\n"
" </xsd:simpleContent>\n"
" </xsd:complexType>\n"
......
......@@ -309,7 +309,7 @@ HR { height: 1px;
padding: 2px;
}
.memitem {
width: 100%;
padding: 4px;
background-color: #eef3f5;
border-width: 1px;
border-style: solid;
......@@ -318,6 +318,7 @@ HR { height: 1px;
}
.memname {
white-space: nowrap;
font-weight: bold;
}
.memdoc{
padding-left: 10px;
......
......@@ -309,7 +309,7 @@
" padding: 2px;\n"
"}\n"
".memitem {\n"
" width: 100%;\n"
" padding: 4px;\n"
" background-color: #eef3f5;\n"
" border-width: 1px;\n"
" border-style: solid;\n"
......@@ -318,6 +318,7 @@
"}\n"
".memname {\n"
" white-space: nowrap;\n"
" font-weight: bold;\n"
"}\n"
".memdoc{\n"
" padding-left: 10px;\n"
......
......@@ -1238,48 +1238,55 @@ void HtmlGenerator::endIndexValue(const char *,bool)
void HtmlGenerator::startMemberDocList()
{
DBG_HTML(t << "<!-- startMemberDocList -->" << endl;)
t << "<table class=\"memlist\">" << endl;
t << " <tr>" << endl;
t << " <td>" << endl;
//t << "<table class=\"memlist\">" << endl;
//t << " <tr>" << endl;
//t << " <td>" << endl;
}
void HtmlGenerator::endMemberDocList()
{
DBG_HTML(t << "<!-- endMemberDocList -->" << endl;)
t << " </td>" << endl;
t << " </tr>" << endl;
t << "</table>" << endl;
//t << " </td>" << endl;
//t << " </tr>" << endl;
//t << "</table>" << endl;
}
void HtmlGenerator::startMemberDoc(const char *,const char *,const char *,const char *)
{
DBG_HTML(t << "<!-- startMemberDoc -->" << endl;)
t << "<p>" << endl;
//t << "<p>" << endl;
t << "<table class=\"memitem\">" << endl;
t << " <tr>" << endl;
t << " <td>" << endl;
t << " <table class=\"memproto\">" << endl;
t << "\n<div class=\"memitem\">" << endl;
//t << "<table>" << endl;
//t << " <tr>" << endl;
//t << " <td>" << endl;
//t << " <table class=\"memproto\">" << endl;
t << "<div class=\"memproto\">" << endl;
}
void HtmlGenerator::startMemberDocPrefixItem()
{
DBG_HTML(t << "<!-- startMemberDocPrefixItem -->" << endl;)
t << " <tr>" << endl;
t << " <td class=\"memtemplate\" colspan=\"5\">";
//t << " <tr>" << endl;
//t << " <td class=\"memtemplate\" colspan=\"5\">";
t << "<div class=\"memtemplate\">" << endl;
}
void HtmlGenerator::endMemberDocPrefixItem()
{
DBG_HTML(t << "<!-- endMemberDocPrefixItem -->" << endl;)
t << "</td>" << endl;
t << " </tr>" << endl;
//t << "</td>" << endl;
//t << " </tr>" << endl;
t << "</div>" << endl;
}
void HtmlGenerator::startMemberDocName(bool /*align*/)
{
DBG_HTML(t << "<!-- startMemberDocName -->" << endl;)
t << " <table class=\"memname\">" << endl;
t << " <tr>" << endl;
t << " <td class=\"memname\">";
}
......@@ -1376,8 +1383,10 @@ void HtmlGenerator::endMemberDoc(bool hasArgs)
t << " </tr>" << endl;
}
t << " </table>" << endl;
t << " </td>" << endl;
t << " </tr>" << endl;
//t << " </td>" << endl;
//t << " </tr>" << endl;
//t << "</table>" << endl;
t << "</div>" << endl;
}
void HtmlGenerator::startDotGraph()
......@@ -1462,25 +1471,15 @@ void HtmlGenerator::endMemberGroup(bool)
void HtmlGenerator::startIndent()
{
// I really wanted to use CSS here to provide an indented section, but
// alas, Netscape is buggy enough to sometimes "forget" to end the
// indent cause a staircase effect where the indent continuously increases.
// It's back to abusing tables :-(
//t << "<div class=\"in\">" << endl;
DBG_HTML(t << "<!-- startIndent -->" << endl;)
t << " <tr>\n"
" <td >\n";
t << "<div class=\"memdoc\">\n";
}
void HtmlGenerator::endIndent()
{
DBG_HTML(t << "<!-- endIndent -->" << endl;)
t << " </td>\n"
" </tr>\n"
"</table>\n";
//t << "</div>" << endl;
t << endl << "</div>" << endl << "</div><p>" << endl;
}
void HtmlGenerator::addIndexItem(const char *,const char *)
......
......@@ -191,7 +191,7 @@ void LatexDocVisitor::visit(DocURL *u)
if (u->isEmail()) m_t << "mailto:";
m_t << u->url() << "}";
}
m_t << "{\\tt ";
m_t << "\\texttt{";
filter(u->url());
m_t << "}";
}
......@@ -214,13 +214,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 << "\\textbf{"; else m_t << "}";
break;
case DocStyleChange::Italic:
if (s->enable()) m_t << "{\\em "; else m_t << "\\/}";
if (s->enable()) m_t << "\\textit{"; else m_t << "\\/}";
break;
case DocStyleChange::Code:
if (s->enable()) m_t << "{\\tt "; else m_t << "}";
if (s->enable()) m_t << "\\texttt{ "; else m_t << "}";
break;
case DocStyleChange::Subscript:
if (s->enable()) m_t << "$_{\\mbox{"; else m_t << "}}$ ";
......@@ -257,11 +257,11 @@ void LatexDocVisitor::visit(DocVerbatim *s)
switch(s->type())
{
case DocVerbatim::Code:
m_t << "\n\n\\footnotesize\\begin{verbatim}";
m_t << "\n\n\\begin{Code}\\begin{verbatim}";
Doxygen::parserManager->getParser(m_langExt)
->parseCode(m_ci,s->context(),s->text().latin1(),
s->isExample(),s->exampleFile());
m_t << "\\end{verbatim}\n\\normalsize" << endl;
m_t << "\\end{verbatim}\\end{Code}\n" << endl;
break;
case DocVerbatim::Verbatim:
m_t << "\n\n\\footnotesize\\begin{verbatim}";
......@@ -322,7 +322,7 @@ void LatexDocVisitor::visit(DocInclude *inc)
{
case DocInclude::IncWithLines:
{
m_t << "\n\n\\footnotesize\\begin{verbatim}";
m_t << "\n\n\\begin{DocInclude}\\begin{verbatim}";
QFileInfo cfi( inc->file() );
FileDef fd( cfi.dirPath(), cfi.fileName() );
Doxygen::parserManager->getParser(inc->extension())
......@@ -330,25 +330,25 @@ void LatexDocVisitor::visit(DocInclude *inc)
inc->text().latin1(),
inc->isExample(),
inc->exampleFile(), &fd);
m_t << "\\end{verbatim}\n\\normalsize" << endl;
m_t << "\\end{verbatim}\n\\end{DocInclude}" << endl;
}
break;
case DocInclude::Include:
m_t << "\n\n\\footnotesize\\begin{verbatim}";
m_t << "\n\n\\begin{DocInclude}\\begin{verbatim}";
Doxygen::parserManager->getParser(inc->extension())
->parseCode(m_ci,inc->context(),
inc->text().latin1(),inc->isExample(),
inc->exampleFile());
m_t << "\\end{verbatim}\n\\normalsize" << endl;
m_t << "\\end{verbatim}\n\\end{DocInclude}" << endl;
break;
case DocInclude::DontInclude:
break;
case DocInclude::HtmlInclude:
break;
case DocInclude::VerbInclude:
m_t << "\n\n\\footnotesize\\begin{verbatim}";
m_t << "\n\n\\begin{VerbInclude}\\begin{verbatim}";
m_t << inc->text();
m_t << "\\end{verbatim}\n\\normalsize" << endl;
m_t << "\\end{verbatim}\n\\end{VerbInclude}" << endl;
break;
}
}
......@@ -359,7 +359,7 @@ void LatexDocVisitor::visit(DocIncOperator *op)
// op->type(),op->isFirst(),op->isLast(),op->text().data());
if (op->isFirst())
{
if (!m_hide) m_t << "\n\n\\footnotesize\\begin{verbatim}";
if (!m_hide) m_t << "\n\n\\begin{DocInclude}\\begin{verbatim}";
pushEnabled();
m_hide = TRUE;
}
......@@ -378,7 +378,7 @@ void LatexDocVisitor::visit(DocIncOperator *op)
if (op->isLast())
{
popEnabled();
if (!m_hide) m_t << "\\end{verbatim}\n\\normalsize" << endl;
if (!m_hide) m_t << "\\end{verbatim}\n\\end{DocInclude}" << endl;
}
else
{
......@@ -718,7 +718,7 @@ void LatexDocVisitor::visitPre(DocHRef *href)
m_t << href->url();
m_t << "}";
}
m_t << "{\\tt ";
m_t << "\texttt{";
}
void LatexDocVisitor::visitPost(DocHRef *)
......@@ -746,12 +746,12 @@ void LatexDocVisitor::visitPre(DocImage *img)
if (m_hide) return;
if (img->hasCaption())
{
m_t << "\\begin{figure}[H]" << endl;
m_t << "\\begin{Image}" << endl;
m_t << "\\begin{center}" << endl;
}
else
{
m_t << "\\mbox{";
m_t << "\\begin{ImageNoCaption}\\mbox{";
}
QString gfxName = img->name();
if (gfxName.right(4)==".eps" || gfxName.right(4)==".pdf")
......@@ -789,7 +789,10 @@ void LatexDocVisitor::visitPost(DocImage *img)
if (img->hasCaption())
{
m_t << "\\end{center}" << endl;
m_t << "\\end{figure}" << endl;
m_t << "\\end{Image}" << endl;
}
else{
m_t << "\\end{ImageNoCaption}" << endl;
}
}
else // other format
......@@ -969,7 +972,7 @@ void LatexDocVisitor::visitPre(DocXRefItem *x)
}
else
{
m_t << "{\\bf ";
m_t << "\\textbf{";
}
m_insideItem=TRUE;
filter(x->title());
......@@ -1025,11 +1028,10 @@ void LatexDocVisitor::startLink(const QString &ref,const QString &file,const QSt
if (!file.isEmpty() && !anchor.isEmpty()) m_t << "_";
if (!anchor.isEmpty()) m_t << anchor;
m_t << "}{";
}
else
{
m_t << "{\\bf ";
m_t << "\\doxyref{";
}
}
......@@ -1038,11 +1040,11 @@ void LatexDocVisitor::endLink(const QString &ref,const QString &file,const QStri
m_t << "}";
if (ref.isEmpty() && !Config_getBool("PDF_HYPERLINKS"))
{
m_t << "{\\rm (";
m_t << "{";
filter(theTranslator->trPageAbbreviation());
m_t << "\\,\\pageref{" << file;
m_t << "}{" << file;
if (!anchor.isEmpty()) m_t << "_" << anchor;
m_t << "})}";
m_t << "}";
}
}
......@@ -1084,12 +1086,12 @@ void LatexDocVisitor::startDotFile(const QString &fileName,
writeDotGraphFromFile(name,outDir,baseName,EPS);
if (hasCaption)
{
m_t << "\\begin{figure}[H]" << endl;
m_t << "\\begin{Image}" << endl;
m_t << "\\begin{center}" << endl;
}
else
{
m_t << "\\mbox{";
m_t << "\\begin{ImageNoCaption}\\mbox{";
}
m_t << "\\includegraphics";
if (!width.isEmpty())
......@@ -1111,11 +1113,15 @@ void LatexDocVisitor::startDotFile(const QString &fileName,
void LatexDocVisitor::endDotFile(bool hasCaption)
{
if (m_hide) return;
m_t << "}" << endl; // end mbox or caption
m_t << "}" << endl; // end caption or mbox
if (hasCaption)
{
m_t << "\\end{center}" << endl;
m_t << "\\end{figure}" << endl;
m_t << "\\end{Image}" << endl;
}
else
{
m_t << "\\end{ImageNoCaption}" << endl;
}
}
......@@ -335,6 +335,20 @@ static void writeDefaultStyleSheetPart3(QTextStream &t)
{
t << "}}\n";
t << "\\cfoot{}\n";
t << "\\newenvironment{Code}\n";
t << "{\\footnotesize}\n";
t << "{\\normalsize}\n";
t << "\\newcommand{\\doxyref}[3]{\\textbf{#1} (\\textnormal{#2}\\,\\pageref{#3})}\n";
t << "\\newenvironment{DocInclude}\n";
t << "{\\footnotesize}\n";
t << "{\\normalsize}\n";
t << "\\newenvironment{VerbInclude}\n";
t << "{\\footnotesize}\n";
t << "{\\normalsize}\n";
t << "\\newenvironment{Image}\n";
t << "{\\begin{figure}[H]}\n";
t << "{\\end{figure}}\n";
t << "\\newenvironment{ImageNoCaption}{}{}\n";
t << "\\newenvironment{CompactList}\n";
t << "{\\begin{list}{}{\n";
t << " \\setlength{\\leftmargin}{0.5cm}\n";
......@@ -910,7 +924,7 @@ void LatexGenerator::endHtmlLink()
void LatexGenerator::writeStartAnnoItem(const char *,const char *,
const char *path,const char *name)
{
t << "\\item\\contentsline{section}{{\\bf ";
t << "\\item\\contentsline{section}{\\textbf{";
if (path) docify(path);
docify(name);
t << "} ";
......@@ -945,7 +959,7 @@ void LatexGenerator::endIndexValue(const char *name,bool hasBrief)
//void LatexGenerator::writeClassLink(const char *,const char *,
// const char *,const char *name)
//{
// t << "{\\bf ";
// t << "\\textbf{";
// docify(name);
// t << "}";
//}
......@@ -961,7 +975,7 @@ void LatexGenerator::startTextLink(const char *f,const char *anchor)
}
else
{
t << "{\\bf ";
t << "\\textbf{";
}
}
......@@ -985,7 +999,7 @@ void LatexGenerator::writeObjectLink(const char *ref, const char *f,
}
else
{
t << "{\\bf ";
t << "\\textbf{";
docify(text);
t << "}";
}
......@@ -993,15 +1007,15 @@ void LatexGenerator::writeObjectLink(const char *ref, const char *f,
void LatexGenerator::startPageRef()
{
t << " {\\rm (";
t << " \\doxyref{";
}
void LatexGenerator::endPageRef(const char *clname, const char *anchor)
{
t << "\\,\\pageref{";
t << "}{";
if (clname) t << clname;
if (anchor) t << "_" << anchor;
t << "})}";
t << "}";
}
void LatexGenerator::writeCodeLink(const char *,const char *,
......@@ -1406,7 +1420,7 @@ void LatexGenerator::endMemberList()
void LatexGenerator::startMemberGroupHeader(bool hasHeader)
{
if (hasHeader) t << "\\begin{Indent}";
t << "{\\bf ";
t << "\\textbf{";
}
void LatexGenerator::endMemberGroupHeader()
......
......@@ -115,14 +115,14 @@ class LatexGenerator : public OutputGenerator
void writeRuler() { t << endl << endl; /*t << "\\vspace{0.4cm}\\hrule\\vspace{0.2cm}" << endl; */ }
void writeAnchor(const char *fileName,const char *name);
void startCodeFragment() { t << endl << endl << "\\footnotesize\\begin{verbatim}"; }
void endCodeFragment() { t << "\\end{verbatim}\\normalsize " << endl; }
void startCodeFragment() { t << endl << endl << "\\begin{Code}\\begin{verbatim}"; }
void endCodeFragment() { t << "\\end{verbatim}\\end{Code}" << endl; }
void writeLineNumber(const char *,const char *,const char *,int l) { t << l << " "; }
void startCodeLine() { col=0; }
void endCodeLine() { codify("\n"); }
void startEmphasis() { t << "{\\em "; }
void endEmphasis() { t << "}"; }
void startBold() { t << "{\\bf "; }
void startBold() { t << "\\textbf{"; }
void endBold() { t << "}"; }
void startDescription();
void endDescription();
......
......@@ -79,7 +79,7 @@ static QCString addTemplateNames(const QCString &s,const QCString &n,const QCStr
static bool writeDefArgumentList(OutputList &ol,ClassDef *cd,
const QCString & /*scopeName*/,MemberDef *md)
{
ArgumentList *defArgList=md->isDocsForDefinition() ?
ArgumentList *defArgList=(md->isDocsForDefinition() && !md->isProperty()) ?
md->argumentList() : md->declArgumentList();
//printf("writeDefArgumentList `%s' isDocsForDefinition()=%d\n",md->name().data(),md->isDocsForDefinition());
if (defArgList==0)
......@@ -1150,6 +1150,25 @@ void MemberDef::writeDeclaration(OutputList &ol,
ol.endTypewriter();
}
if (isProperty())
{
ol.writeLatexSpacing();
ol.startTypewriter();
ol.docify(" [");
QStrList sl;
if (isGettable()) sl.append("get");
if (isSettable()) sl.append("set");
const char *s=sl.first();
while (s)
{
ol.docify(s);
s=sl.next();
if (s) ol.docify(", ");
}
ol.docify("]");
ol.endTypewriter();
}
if (!detailsVisible && !annMemb)
{
ol.endDoxyAnchor(cfname,anchor());
......
......@@ -154,6 +154,20 @@ static void newVariable()
newEntry();
}
static void newFunction()
{
if (current->name.left(2)=="__" && current->name.right(2)=="__")
{
// special method name, see
// http://docs.python.org/ref/specialnames.html
current->protection=Public;
}
else if (current->name.at(0)=='_')
{
current->protection=Private;
}
}
static inline int computeIndent(const char *s)
{
int col=0;
......@@ -804,6 +818,7 @@ STARTDOCSYMS ^{B}"##"/[^#]
}
current->name = yytext;
current->name = current->name.stripWhiteSpace();
newFunction();
}
{B}"(" {
......@@ -984,7 +999,7 @@ STARTDOCSYMS ^{B}"##"/[^#]
}
<ClassInheritance>{
({BB}|[(,)]) { // syntactic sugar for the list
({BB}|[\(,\)]) { // syntactic sugar for the list
}
":" { // begin of the class definition
......
......@@ -158,6 +158,9 @@ static bool docBlockInBody;
static bool docBlockJavaStyle;
static char docBlockTerm;
static QCString idlAttr;
static QCString idlProp;
//-----------------------------------------------------------------------------
......@@ -657,6 +660,10 @@ IDLATTR ("["[^\]]*"]"){BN}*
%x CopyArgCommentLine
%x CopyArgVerbatim
%x IDLAttribute
%x IDLProp
%x IDLPropName
/** Prototype scanner states */
%x Prototype
......@@ -2193,7 +2200,10 @@ IDLATTR ("["[^\]]*"]"){BN}*
{
squareCount=1;
lastSquareContext = YY_START;
BEGIN(SkipSquare);
idlAttr.resize(0);
idlProp.resize(0);
current->mtype = mtype;
BEGIN( IDLAttribute );
}
else
{
......@@ -2202,6 +2212,75 @@ IDLATTR ("["[^\]]*"]"){BN}*
BEGIN( Array ) ;
}
}
<IDLAttribute>"]" {
// end of IDL function attribute
if (--squareCount<=0)
{
lineCount();
if (current->mtype == Property)
BEGIN( IDLPropName );
else
BEGIN( lastSquareContext );
}
}
<IDLAttribute>"propput" {
current->mtype = Property;
current->memSpec |= Entry::Settable;
}
<IDLAttribute>"propget" {
current->mtype = Property;
current->memSpec |= Entry::Gettable;
}
<IDLAttribute>. {
}
<IDLPropName>{BN}*{ID}{BN}* {
// return type (probably HRESULT) - skip it
}
<IDLPropName>{ID}{BN}*"(" {
current->name = yytext;
current->name = current->name.left(current->name.length()-1).stripWhiteSpace();
current->startLine = yyLineNr;
BEGIN( IDLProp );
}
<IDLProp>{BN}*"["[^\]]*"]"{BN}* { // attribute of a parameter
idlAttr += yytext;
}
<IDLProp>{ID} { // property type
idlProp = yytext;
}
<IDLProp>{BN}*{ID}{BN}*"," { // Rare: Another parameter ([propput] HRESULT Item(int index, [in] Type theRealProperty);)
if (!current->args)
current->args = "(";
else
current->args += ", ";
current->args += idlAttr;
current->args += " ";
current->args += idlProp; // prop was actually type of extra parameter
current->args += " ";
current->args += yytext;
current->args = current->args.left(current->args.length() - 1); // strip comma
idlProp.resize(0);
idlAttr.resize(0);
BEGIN( IDLProp );
}
<IDLProp>{BN}*{ID}{BN}*")"{BN}* {
// the parameter name for the property - just skip.
}
<IDLProp>";" {
current->fileName = yyFileName;
current->type = idlProp;
current->args = current->args.simplifyWhiteSpace();
if (current->args)
current->args += ")";
current->name = current->name.stripWhiteSpace();
current->section = Entry::VARIABLE_SEC;
current_root->addSubEntry(current);
current = new Entry;
initEntry();
BEGIN( FindMembers );
}
<IDLProp>. {
}
<Array>"]" { current->args += *yytext ;
if (--squareCount<=0)
BEGIN( FindMembers ) ;
......
......@@ -953,7 +953,15 @@ static void writeInnerClasses(const ClassSDict *cl,QTextStream &t)
if (cd->name().find('@')==-1) // skip anonymous scopes
{
t << " <innerclass refid=\"" << cd->getOutputFileBase()
<< "\">" << convertToXML(cd->name()) << "</innerclass>" << endl;
<< "\" prot=\"";
switch(cd->protection())
{
case Public: t << "public"; break;
case Protected: t << "protected"; break;
case Private: t << "private"; break;
case Package: t << "package"; break;
}
t << "\">" << convertToXML(cd->name()) << "</innerclass>" << endl;
}
}
}
......
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