52 #define XML_DB(x) do {} while(0) 124 int spacesToNextTabStop = tabSize - (col%tabSize);
125 col+=spacesToNextTabStop;
126 while (spacesToNextTabStop--) t <<
"<sp/>";
129 case ' ': t <<
"<sp/>"; col++;
break;
130 case '<': t <<
"<"; col++;
break;
131 case '>': t <<
">"; col++;
break;
132 case '&': t <<
"&"; col++;
break;
133 case '\'': t <<
"'"; col++;
break;
134 case '"': t <<
"""; col++;
break;
135 case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
136 case 11:
case 12:
case 13:
case 14:
case 15:
case 16:
case 17:
case 18:
137 case 19:
case 20:
case 21:
case 22:
case 23:
case 24:
case 25:
case 26:
138 case 27:
case 28:
case 29:
case 30:
case 31:
148 t <<
"<?xml version='1.0' encoding='UTF-8' standalone='no'?>" <<
endl;;
149 t <<
"<doxygen xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ";
150 t <<
"xsi:noNamespaceSchemaLocation=\"compound.xsd\" ";
161 err(
"Cannot open file %s for writing!\n",fileName.
data());
168 "<!-- XSLT script to combine the generated output into a single file. \n" 169 " If you have xsltproc you could use:\n" 170 " xsltproc combine.xslt index.xml >all.xml\n" 172 "<xsl:stylesheet xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" version=\"1.0\">\n" 173 " <xsl:output method=\"xml\" version=\"1.0\" indent=\"no\" standalone=\"yes\" />\n" 174 " <xsl:template match=\"/\">\n" 175 " <doxygen version=\"{doxygenindex/@version}\">\n" 176 " <!-- Load all doxgen generated xml files -->\n" 177 " <xsl:for-each select=\"doxygenindex/compound\">\n" 178 " <xsl:copy-of select=\"document( concat( @refid, '.xml' ) )/doxygen/*\" />\n" 182 "</xsl:stylesheet>\n";
187 const char *anchorId,
const char *text,
const char *tooltip)
189 t <<
"<ref refid=\"" << compoundId;
190 if (anchorId) t <<
"_1" << anchorId;
191 t <<
"\" kindref=\"";
192 if (anchorId) t <<
"member";
else t <<
"compound";
194 if (extRef) t <<
" external=\"" << extRef <<
"\"";
195 if (tooltip) t <<
" tooltip=\"" <<
convertToXML(tooltip) <<
"\"";
212 const char *anchor,
const char *text
228 m_insideCodeLine(
FALSE), m_normalHLNeedStartTag(
TRUE), m_insideSpecialHL(
FALSE) {}
233 XML_DB((
"(codify \"%s\")\n",text));
234 if (m_insideCodeLine && !m_insideSpecialHL && m_normalHLNeedStartTag)
236 m_t <<
"<highlight class=\"normal\">";
237 m_normalHLNeedStartTag=
FALSE;
242 const char *anchor,
const char *
name,
245 XML_DB((
"(writeCodeLink)\n"));
246 if (m_insideCodeLine && !m_insideSpecialHL && m_normalHLNeedStartTag)
248 m_t <<
"<highlight class=\"normal\">";
249 m_normalHLNeedStartTag=
FALSE;
258 XML_DB((
"(writeToolTip)\n"));
262 XML_DB((
"(startCodeLine)\n"));
264 if (m_lineNumber!=-1)
266 m_t <<
" lineno=\"" << m_lineNumber <<
"\"";
267 if (!m_refId.isEmpty())
269 m_t <<
" refid=\"" << m_refId <<
"\"";
272 m_t <<
" refkind=\"member\"";
276 m_t <<
" refkind=\"compound\"";
279 if (!m_external.isEmpty())
281 m_t <<
" external=\"" << m_external <<
"\"";
285 m_insideCodeLine=
TRUE;
290 XML_DB((
"(endCodeLine)\n"));
291 if (!m_insideSpecialHL && !m_normalHLNeedStartTag)
293 m_t <<
"</highlight>";
294 m_normalHLNeedStartTag=
TRUE;
296 m_t <<
"</codeline>" <<
endl;
299 m_external.resize(0);
300 m_insideCodeLine=
FALSE;
304 XML_DB((
"(startFontClass)\n"));
305 if (m_insideCodeLine && !m_insideSpecialHL && !m_normalHLNeedStartTag)
307 m_t <<
"</highlight>";
308 m_normalHLNeedStartTag=
TRUE;
310 m_t <<
"<highlight class=\"" << colorClass <<
"\">";
311 m_insideSpecialHL=
TRUE;
315 XML_DB((
"(endFontClass)\n"));
316 m_t <<
"</highlight>";
317 m_insideSpecialHL=
FALSE;
321 XML_DB((
"(writeCodeAnchor)\n"));
324 const char *anchorId,
int l)
326 XML_DB((
"(writeLineNumber)\n"));
333 if (anchorId) m_refId+=(
QCString)
"_1"+anchorId;
334 m_isMemberRef = anchorId!=0;
335 if (extRef) m_external=extRef;
371 indentStr.
fill(
' ',indent);
374 t << indentStr <<
"<templateparamlist>" <<
endl;
379 t << indentStr <<
" <param>" <<
endl;
382 t << indentStr <<
" <type>";
384 t <<
"</type>" <<
endl;
388 t << indentStr <<
" <declname>" << a->
name <<
"</declname>" <<
endl;
389 t << indentStr <<
" <defname>" << a->
name <<
"</defname>" <<
endl;
393 t << indentStr <<
" <defval>";
395 t <<
"</defval>" <<
endl;
399 t << indentStr <<
" <typeconstraint>";
401 t <<
"</typeconstraint>" <<
endl;
403 t << indentStr <<
" </param>" <<
endl;
405 t << indentStr <<
"</templateparamlist>" <<
endl;
478 t <<
" <" << tagName <<
" refid=\"";
501 else if (typeStr==
"virtual") typeStr=
"";
572 <<
"_1" << md->
anchor() <<
"\" kind=\"" << memType <<
"\"><name>" 581 t <<
" <memberdef kind=\"";
583 t << memType <<
"\" id=\"";
597 case Public: t <<
"public";
break;
599 case Private: t <<
"private";
break;
600 case Package: t <<
"package";
break;
605 if (md->
isStatic()) t <<
"yes";
else t <<
"no";
616 if (md->
isExplicit()) t <<
"yes";
else t <<
"no";
620 if (md->
isInline()) t <<
"yes";
else t <<
"no";
625 t <<
" final=\"yes\"";
630 t <<
" sealed=\"yes\"";
640 t <<
" optional=\"yes\"";
645 t <<
" required=\"yes\"";
650 t <<
" volatile=\"yes\"";
656 case Normal: t <<
"non-virtual";
break;
657 case Virtual: t <<
"virtual";
break;
658 case Pure: t <<
"pure-virtual";
break;
671 if (md->
isMutable()) t <<
"yes";
else t <<
"no";
676 t <<
" initonly=\"yes\"";
680 t <<
" attribute=\"yes\"";
684 t <<
" property=\"yes\"";
688 t <<
" readonly=\"yes\"";
692 t <<
" bound=\"yes\"";
696 t <<
" removable=\"yes\"";
700 t <<
" constrained=\"yes\"";
704 t <<
" transient=\"yes\"";
708 t <<
" maybevoid=\"yes\"";
712 t <<
" maybedefault=\"yes\"";
716 t <<
" maybeambiguous=\"yes\"";
722 if (md->
isReadable()) t <<
"yes";
else t <<
"no";
726 if (md->
isWritable()) t <<
"yes";
else t <<
"no";
730 if (md->
isGettable()) t <<
"yes";
else t <<
"no";
733 t <<
" privategettable=\"";
737 t <<
" protectedgettable=\"";
742 if (md->
isSettable()) t <<
"yes";
else t <<
"no";
745 t <<
" privatesettable=\"";
749 t <<
" protectedsettable=\"";
757 else if (md->
isCopy()) t <<
"copy";
758 else if (md->
isRetain()) t <<
"retain";
759 else if (md->
isStrong()) t <<
"strong";
760 else if (md->
isWeak()) t <<
"weak";
767 if (md->
isAddable()) t <<
"yes";
else t <<
"no";
775 if (md->
isRaisable()) t <<
"yes";
else t <<
"no";
793 t <<
"</type>" <<
endl;
810 if (bitfield.
at(0)==
':') bitfield=bitfield.
mid(1);
811 t <<
" <bitfield>" << bitfield <<
"</bitfield>" <<
endl;
817 t <<
" <reimplements refid=\"" 827 t <<
" <reimplementedby refid=\"" 837 if (declAl && declAl->
count()>0)
845 t <<
" <param>" <<
endl;
848 t <<
" <attributes>";
850 t <<
"</attributes>" <<
endl;
856 t <<
"</type>" <<
endl;
862 t <<
"</declname>" <<
endl;
868 t <<
"</defname>" <<
endl;
874 t <<
"</array>" <<
endl;
880 t <<
"</defval>" <<
endl;
884 t <<
" <briefdescription>";
887 t <<
"</briefdescription>" <<
endl;
889 t <<
" </param>" <<
endl;
890 if (defArg) ++defAli;
900 t <<
" <param></param>" <<
endl;
906 for (ali.toFirst();(a=ali.current());++ali)
908 t <<
" <param><defname>" << a->type <<
"</defname></param>" <<
endl;
915 t <<
" <initializer>";
917 t <<
"</initializer>" <<
endl;
922 t <<
" <exceptions>";
924 t <<
"</exceptions>" <<
endl;
937 <<
"_1" << emd->
anchor() <<
"\" kind=\"enumvalue\"><name>" 941 << emd->
anchor() <<
"\" prot=\"";
944 case Public: t <<
"public";
break;
946 case Private: t <<
"private";
break;
947 case Package: t <<
"package";
break;
952 t <<
"</name>" <<
endl;
955 t <<
" <initializer>";
957 t <<
"</initializer>" <<
endl;
959 t <<
" <briefdescription>" <<
endl;
961 t <<
" </briefdescription>" <<
endl;
962 t <<
" <detaileddescription>" <<
endl;
964 t <<
" </detaileddescription>" <<
endl;
965 t <<
" </enumvalue>" <<
endl;
969 t <<
" <briefdescription>" <<
endl;
971 t <<
" </briefdescription>" <<
endl;
972 t <<
" <detaileddescription>" <<
endl;
974 t <<
" </detaileddescription>" <<
endl;
975 t <<
" <inbodydescription>" <<
endl;
977 t <<
" </inbodydescription>" <<
endl;
980 t <<
" <location file=\"" 1003 for (mdi.toFirst();(rmd=mdi.current());++mdi)
1013 for (mdi.toFirst();(rmd=mdi.current());++mdi)
1019 t <<
" </memberdef>" <<
endl;
1023 MemberList *ml,
const char *kind,
const char *header=0,
1024 const char *documentation=0)
1039 if (count==0)
return;
1041 t <<
" <sectiondef kind=\"" << kind <<
"\">" <<
endl;
1048 t <<
" <description>";
1050 t <<
"</description>" <<
endl;
1061 t <<
" </sectiondef>" <<
endl;
1066 t <<
" <listofallmembers>" <<
endl;
1071 for (mnii.toFirst();(mni=mnii.current());++mnii)
1078 if (md->
name().
at(0)!=
'@')
1083 md->
anchor() <<
"\" prot=\"";
1086 case Public: t <<
"public";
break;
1087 case Protected: t <<
"protected";
break;
1088 case Private: t <<
"private";
break;
1089 case Package: t <<
"package";
break;
1094 case Normal: t <<
"non-virtual";
break;
1095 case Virtual: t <<
"virtual";
break;
1096 case Pure: t <<
"pure-virtual";
break;
1109 t <<
" </listofallmembers>" <<
endl;
1118 for (cli.toFirst();(cd=cli.current());++
cli)
1126 case Public: t <<
"public";
break;
1127 case Protected: t <<
"protected";
break;
1128 case Private: t <<
"private";
break;
1129 case Package: t <<
"package";
break;
1143 for (nli.toFirst();(nd=nli.current());++nli)
1174 for (pli.toFirst();(pd=pli.current());++pli)
1179 t <<
"_" << pd->
name();
1196 <<
"</innergroup>" <<
endl;
1235 if (cd->
name().
find(
'@')!=-1)
return;
1239 msg(
"Generating XML output for class %s\n",cd->
name().
data());
1250 err(
"Cannot open file %s for writing!\n",fileName.
data());
1257 t <<
" <compounddef id=\"" 1263 case Public: t <<
"public";
break;
1264 case Protected: t <<
"protected";
break;
1265 case Private: t <<
"private";
break;
1266 case Package: t <<
"package";
break;
1268 if (cd->
isFinal()) t <<
"\" final=\"yes";
1269 if (cd->
isSealed()) t <<
"\" sealed=\"yes";
1270 if (cd->
isAbstract()) t <<
"\" abstract=\"yes";
1272 t <<
" <compoundname>";
1274 t <<
"</compoundname>" <<
endl;
1279 for (bcli.toFirst();(bcd=bcli.current());++bcli)
1281 t <<
" <basecompoundref ";
1282 if (bcd->classDef->isLinkable())
1289 case Public: t <<
"public";
break;
1290 case Protected: t <<
"protected";
break;
1291 case Private: t <<
"private";
break;
1297 case Normal: t <<
"non-virtual";
break;
1298 case Virtual: t <<
"virtual";
break;
1299 case Pure: t <<
"pure-virtual";
break;
1302 if (!bcd->templSpecifiers.isEmpty())
1306 bcd->classDef->name(),bcd->templSpecifiers)
1313 t <<
"</basecompoundref>" <<
endl;
1320 for (bcli.toFirst();(bcd=bcli.current());++bcli)
1322 t <<
" <derivedcompoundref refid=\"" 1327 case Public: t <<
"public";
break;
1328 case Protected: t <<
"protected";
break;
1329 case Private: t <<
"private";
break;
1335 case Normal: t <<
"non-virtual";
break;
1336 case Virtual: t <<
"virtual";
break;
1337 case Pure: t <<
"pure-virtual";
break;
1339 t <<
"\">" <<
convertToXML(bcd->classDef->displayName())
1340 <<
"</derivedcompoundref>" << endl;
1348 if (nm.
isEmpty() && ii->fileDef) nm = ii->fileDef->docName();
1352 if (ii->fileDef && !ii->fileDef->isReference())
1354 t <<
" refid=\"" << ii->fileDef->getOutputFileBase() <<
"\"";
1356 t <<
" local=\"" << (ii->local ?
"yes" :
"no") <<
"\">";
1358 t <<
"</includes>" <<
endl;
1369 for (;(mg=mgli.current());++mgli)
1372 mg->documentation());
1378 for (mli.toFirst();(ml=mli.current());++mli)
1386 t <<
" <briefdescription>" <<
endl;
1388 t <<
" </briefdescription>" <<
endl;
1389 t <<
" <detaileddescription>" <<
endl;
1391 t <<
" </detaileddescription>" <<
endl;
1395 t <<
" <inheritancegraph>" <<
endl;
1397 t <<
" </inheritancegraph>" <<
endl;
1402 t <<
" <collaborationgraph>" <<
endl;
1404 t <<
" </collaborationgraph>" <<
endl;
1406 t <<
" <location file=\"" 1422 t <<
" </compounddef>" <<
endl;
1423 t <<
"</doxygen>" <<
endl;
1425 ti <<
" </compound>" <<
endl;
1442 <<
"\" kind=\"namespace\"" <<
"><name>" 1450 err(
"Cannot open file %s for writing!\n",fileName.
data());
1458 <<
"\" kind=\"namespace\" language=\"" 1460 t <<
" <compoundname>";
1462 t <<
"</compoundname>" <<
endl;
1471 for (;(mg=mgli.current());++mgli)
1474 mg->documentation());
1480 for (mli.toFirst();(ml=mli.current());++mli)
1488 t <<
" <briefdescription>" <<
endl;
1490 t <<
" </briefdescription>" <<
endl;
1491 t <<
" <detaileddescription>" <<
endl;
1493 t <<
" </detaileddescription>" <<
endl;
1494 t <<
" <location file=\"" 1498 t <<
" </compounddef>" <<
endl;
1499 t <<
"</doxygen>" <<
endl;
1501 ti <<
" </compound>" <<
endl;
1524 <<
"</name>" <<
endl;
1531 err(
"Cannot open file %s for writing!\n",fileName.
data());
1539 <<
"\" kind=\"file\" language=\"" 1541 t <<
" <compoundname>";
1543 t <<
"</compoundname>" <<
endl;
1550 for (ili1.toFirst();(inc=ili1.current());++ili1)
1557 t <<
" local=\"" << (inc->
local ?
"yes" :
"no") <<
"\">";
1559 t <<
"</includes>" <<
endl;
1566 for (ili2.toFirst();(inc=ili2.current());++ili2)
1568 t <<
" <includedby";
1573 t <<
" local=\"" << (inc->
local ?
"yes" :
"no") <<
"\">";
1575 t <<
"</includedby>" <<
endl;
1582 t <<
" <incdepgraph>" <<
endl;
1584 t <<
" </incdepgraph>" <<
endl;
1590 t <<
" <invincdepgraph>" <<
endl;
1592 t <<
" </invincdepgraph>" <<
endl;
1608 for (;(mg=mgli.current());++mgli)
1611 mg->documentation());
1617 for (mli.toFirst();(ml=mli.current());++mli)
1625 t <<
" <briefdescription>" <<
endl;
1627 t <<
" </briefdescription>" <<
endl;
1628 t <<
" <detaileddescription>" <<
endl;
1630 t <<
" </detaileddescription>" <<
endl;
1633 t <<
" <programlisting>" <<
endl;
1635 t <<
" </programlisting>" <<
endl;
1638 t <<
" </compounddef>" <<
endl;
1639 t <<
"</doxygen>" <<
endl;
1641 ti <<
" </compound>" <<
endl;
1668 err(
"Cannot open file %s for writing!\n",fileName.
data());
1675 t <<
" <compounddef id=\"" 1690 for (;(mg=mgli.current());++mgli)
1693 mg->documentation());
1699 for (mli.toFirst();(ml=mli.current());++mli)
1707 t <<
" <briefdescription>" <<
endl;
1709 t <<
" </briefdescription>" <<
endl;
1710 t <<
" <detaileddescription>" <<
endl;
1712 t <<
" </detaileddescription>" <<
endl;
1713 t <<
" </compounddef>" <<
endl;
1714 t <<
"</doxygen>" <<
endl;
1716 ti <<
" </compound>" <<
endl;
1724 <<
"</name>" <<
endl;
1731 err(
"Cannot open file %s for writing!\n",fileName.
data());
1738 t <<
" <compounddef id=\"" 1745 t <<
" <briefdescription>" <<
endl;
1747 t <<
" </briefdescription>" <<
endl;
1748 t <<
" <detaileddescription>" <<
endl;
1750 t <<
" </detaileddescription>" <<
endl;
1752 t <<
" </compounddef>" <<
endl;
1753 t <<
"</doxygen>" <<
endl;
1755 ti <<
" </compound>" <<
endl;
1764 const char *kindName = isExample ?
"example" :
"page";
1773 if (pageName==
"index") pageName=
"indexpage";
1775 ti <<
" <compound refid=\"" << pageName
1777 <<
"</name>" <<
endl;
1784 err(
"Cannot open file %s for writing!\n",fileName.
data());
1791 t <<
" <compounddef id=\"" << pageName;
1792 t <<
"\" kind=\"" << kindName <<
"\">" <<
endl;
1794 <<
"</compoundname>" << endl;
1808 <<
"</title>" <<
endl;
1816 <<
"</title>" <<
endl;
1820 t <<
" <detaileddescription>" <<
endl;
1831 t <<
" </detaileddescription>" <<
endl;
1833 t <<
" </compounddef>" <<
endl;
1834 t <<
"</doxygen>" <<
endl;
1836 ti <<
" </compound>" <<
endl;
1849 QDir xmlDir(outputDirectory);
1858 err(
"Cannot open file %s for writing!\n",fileName.
data());
1864 const char *startLine = compound_xsd.
data();
1868 const char *endLine = startLine+1;
1869 while (*endLine && *(endLine-1)!=
'\n') endLine++;
1870 int len=endLine-startLine;
1876 if (s.find(
"<!-- Automatically insert here the HTML entities -->")!=-1)
1890 fileName=outputDirectory+
"/index.xml";
1894 err(
"Cannot open file %s for writing!\n",fileName.
data());
1901 t <<
"<?xml version='1.0' encoding='UTF-8' standalone='no'?>" <<
endl;;
1902 t <<
"<doxygenindex xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ";
1903 t <<
"xsi:noNamespaceSchemaLocation=\"index.xsd\" ";
1909 for (cli.toFirst();(cd=cli.current());++
cli)
1925 for (nli.toFirst();(nd=nli.current());++nli)
1927 msg(
"Generating XML output for namespace %s\n",nd->
name().
data());
1932 for (;(fn=fnli.
current());++fnli)
1936 for (;(fd=fni.
current());++fni)
1938 msg(
"Generating XML output for file %s\n",fd->
name().
data());
1944 for (;(gd=gli.current());++gli)
1946 msg(
"Generating XML output for group %s\n",gd->
name().
data());
1952 for (pdi.toFirst();(pd=pdi.current());++pdi)
1954 msg(
"Generating XML output for page %s\n",pd->
name().
data());
1961 for (sdi.toFirst();(dir=sdi.current());++sdi)
1963 msg(
"Generate XML output for dir %s\n",dir->
name().
data());
1970 for (pdi.toFirst();(pd=pdi.current());++pdi)
1972 msg(
"Generating XML output for example %s\n",pd->
name().
data());
1978 msg(
"Generating XML output for the main page\n");
1983 t <<
"</doxygenindex>" <<
endl;
static void writeXMLHeader(FTextStream &t)
void writeCodeLink(const char *ref, const char *file, const char *anchor, const char *name, const char *tooltip)
Traverses directory structures and contents in a platform-independent way.
QCString convertToXML(const char *s)
bool isMaybeAmbiguous() const
static GroupSDict * groupSDict
ParserInterface * getParser(const char *extension)
PageSDict * getSubPages() const
static void writeInnerPages(const PageSDict *pl, FTextStream &t)
MemberGroupSDict * getMemberGroupSDict() const
QCString fileToString(const char *name, bool filter, bool isSourceCode)
void writeXMLCodeString(FTextStream &t, const char *s, int &col)
QCString getAsString(const char *name) const
This class represents an function or template argument list.
QCString stripWhiteSpace() const
bool isArtificial() const
ClassSDict * getClassSDict() const
MemberDef * reimplements() const
char * qstrncpy(char *dst, const char *src, uint len)
void writeXMLSchema(FTextStream &t)
BaseClassList * subClasses() const
bool hasMultiLineInitializer() const
IncludeInfo * includeInfo() const
MemberList * reimplementedBy() const
static PageSDict * exampleSDict
void msg(const char *fmt,...)
QCString convertCharEntitiesToUTF8(const QCString &s)
bool isUNOProperty() const
Abstract interface for programming language parsers.
Protection protection() const
QCString getOutputFileBase() const
QCString inbodyDocumentation() const
ArgumentList * templateArguments() const
void startFontClass(const char *colorClass)
const char * bitfieldString() const
FileDef * getBodyDef() const
static XmlSectionMapper g_xmlSectionMapper
QCString compoundTypeString() const
void setCurrentDoc(Definition *, const char *, bool)
MemberNameInfoSDict * memberNameInfoSDict() const
TextGeneratorXMLImpl(FTextStream &t)
virtual ~XMLCodeGenerator()
XMLCodeGenerator(FTextStream &t)
static FileNameList * inputNameList
bool copyResource(const char *name, const char *targetDir) const
const QList< MemberList > & getMemberLists() const
static ResourceMgr & instance()
MemberList * enumFieldList() const
static void generateXMLSection(Definition *d, FTextStream &ti, FTextStream &t, MemberList *ml, const char *kind, const char *header=0, const char *documentation=0)
static QCString memberOutputFileBase(MemberDef *md)
bool stripPrefix(const char *prefix)
DocRoot * validatingParseDoc(const char *fileName, int startLine, Definition *ctx, MemberDef *md, const char *input, bool indexWords, bool isExample, const char *exampleName, bool singleLine, bool linkFromIndex)
static HtmlEntityMapper * instance()
virtual bool isReference() const
static void writeMemberTemplateLists(MemberDef *md, FTextStream &t)
static void writeTemplateArgumentList(ArgumentList *al, FTextStream &t, Definition *scope, FileDef *fileScope, int indent)
Simplified and optimized version of QTextStream.
int find(char c, int index=0, bool cs=TRUE) const
static void generateXMLForGroup(GroupDef *gd, FTextStream &ti)
void setName(const QString &name)
const char * groupTitle() const
static void generateXMLForDir(DirDef *dd, FTextStream &ti)
static constexpr double mg
static void writeListOfAllMembers(ClassDef *cd, FTextStream &t)
static void writeInnerFiles(const FileList *fl, FTextStream &t)
static void writeXMLDocBlock(FTextStream &t, const QCString &fileName, int lineNr, Definition *scope, MemberDef *md, const QCString &text)
ClassSDict * getClasses() const
ArgumentList * declArgumentList() const
ClassSDict * getClassSDict()
void writeString(const char *s, bool) const
GroupList * getSubGroups() const
Protection protection() const
MemberSDict * getReferencesMembers() const
QCString getDefFileName() const
void writeLink(const char *extRef, const char *file, const char *anchor, const char *text) const
void codify(const char *text)
QCString getDefFileExtension() const
QCString displayName(bool=TRUE) const
static QCString stripFromPath(const QCString &path, QStrList &l)
#define Config_getInt(val)
FileDef * getFileDef() const
static NamespaceSDict * namespaceSDict
static ParserManager * parserManager
QCString ambiguityResolutionScope
ClassDef * templateMaster() const
virtual DefType definitionType() const =0
Specifier virtualness(int count=0) const
This class contains the information about the argument of a function or template. ...
const char * typeString() const
QCString getLanguageSpecificSeparator(SrcLangExt lang, bool classScope)
static void writeInnerGroups(const GroupList *gl, FTextStream &t)
int writeBlock(const char *data, uint len)
MemberSDict * getReferencedByMembers() const
void writeLineNumber(const char *extRef, const char *compId, const char *anchorId, int l)
void insert(long k, const char *d)
Q_EXPORT uint qstrlen(const char *str)
const QCString & name() const
NamespaceSDict * getNamespaceSDict() const
PageSDict * getPages() const
static void writeInnerClasses(const ClassSDict *cl, FTextStream &t)
void writeCodeAnchor(const char *)
QCString getScopeString() const
void writeXMLCodeBlock(FTextStream &t, FileDef *fd)
static void writeMemberReference(FTextStream &t, Definition *def, MemberDef *rmd, const char *tagName)
QCString briefDescription(bool abbr=FALSE) const
QList< IncludeInfo > * includeFileList() const
SrcLangExt getLanguage() const
const char * getWriteAccessor() const
const char * writeUtf8Char(FTextStream &t, const char *s)
static void writeInnerDirs(const DirList *dl, FTextStream &t)
static DirSDict * directories
const DirList & subDirs() const
NamespaceSDict * getNamespaces() const
QCString & prepend(const char *s)
static SectionDict * sectionDict
A bunch of utility functions.
static PageSDict * pageSDict
const char * data() const
bool isConstrained() const
const QList< MemberList > & getMemberLists() const
static void generateXMLForMember(MemberDef *md, FTextStream &ti, FTextStream &t, Definition *def)
#define Config_getString(val)
Concrete visitor implementation for XML output.
#define Config_getBool(val)
const char * definition() const
ClassDef * getClassDef() const
bool isPrivateGettable() const
QCString briefFile() const
void writeXML(FTextStream &t)
bool m_normalHLNeedStartTag
void err(const char *fmt,...)
MemberType memberType() const
static void generateXMLForNamespace(NamespaceDef *nd, FTextStream &ti)
QCString absFilePath() const
virtual QCString briefDescription(bool abbreviate=FALSE) const
static void generateXMLForClass(ClassDef *cd, FTextStream &ti)
static void endCodeLine()
static void writeTemplateList(ClassDef *cd, FTextStream &t)
QCString mid(uint index, uint len=0xffffffff) const
void writeTooltip(const char *, const DocLinkInfo &, const char *, const char *, const SourceLinkInfo &, const SourceLinkInfo &)
QCString getOutputFileBase() const
void addWord(const char *, bool)
The QFile class is an I/O device that operates on files.
NamespaceSDict * getNamespaceSDict() const
void writeXMLString(FTextStream &t, const char *s)
void writeBreak(int) const
static void generateXMLForPage(PageDef *pd, FTextStream &ti, bool isExample)
QCString getOutputFileBase() const
MemberGroupSDict * getMemberGroupSDict() const
bool hasOneLineInitializer() const
virtual Definition * getOuterScope() const
QCString documentation() const
int getEndBodyLine() const
GroupDef * getGroupDef() const
QCString getOutputFileBase() const
ArgumentList * argumentList() const
const char * getReadAccessor() const
static void generateXMLForFile(FileDef *fd, FTextStream &ti)
SrcLangExt getLanguageFromFileName(const QCString fileName)
int getStartBodyLine() const
QList< IncludeInfo > * includedByFileList() const
const QCString & initializer() const
const char * excpString() const
A model of a page symbol.
MemberGroupSDict * getMemberGroupSDict() const
bool fill(char c, int len=-1)
void writeXML(FTextStream &t)
QCString getOutputFileBase() const
static QCString classOutputFileBase(ClassDef *cd)
QCString insertTemplateSpecifierInScope(const QCString &scope, const QCString &templ)
FileList * getFiles() const
MemberGroupSDict * getMemberGroupSDict() const
bool isPrivateSettable() const
bool isMaybeDefault() const
NamespaceDef * getNamespaceDef() const
static void writeInnerNamespaces(const NamespaceSDict *nl, FTextStream &t)
void writeXMLLink(FTextStream &t, const char *extRef, const char *compoundId, const char *anchorId, const char *text, const char *tooltip)
void createSubDirs(QDir &d)
FileList * getFiles() const
ClassSDict * getClassSDict() const
const char * argsString() const
QCString getOutputFileBase() const
T * find(const char *key)
void linkifyText(const TextGeneratorIntf &out, Definition *scope, FileDef *fileScope, Definition *self, const char *text, bool autoBreak, bool external, bool keepSpaces, int indentLevel)
virtual QCString documentation() const
static void stripQualifiers(QCString &typeStr)
bool hasDocumentation() const
static ClassSDict * classSDict
QCString getOutputFileBase() const
virtual void parseCode(CodeOutputInterface &codeOutIntf, const char *scopeName, const QCString &input, SrcLangExt lang, bool isExampleBlock, const char *exampleName=0, FileDef *fileDef=0, int startLine=-1, int endLine=-1, bool inlineFragment=FALSE, MemberDef *memberDef=0, bool showLineNumbers=TRUE, Definition *searchCtx=0, bool collectXRefs=TRUE)=0
const QList< MemberList > & getMemberLists() const
static PageDef * mainPage
std::string nl(std::size_t i=1)
static void writeCombineScript()
virtual void accept(DocVisitor *v)=0
const QList< MemberList > & getMemberLists() const
type * find(long k) const
bool isProtectedSettable() const
QTextStream & endl(QTextStream &s)
BaseClassList * baseClasses() const
GroupDef * getGroupDef() const
ArgumentList * templateArguments() const
QCString langToString(SrcLangExt lang)
bool isProtectedGettable() const
QCString filterTitle(const QCString &title)
virtual void resetCodeParserState()=0