浏览该文件的文档.
42 #define DBG_RTF(x) do {} while(0)
46 for (
const auto &attr : cell->
attribs())
48 if (attr.name.lower()==
"align")
50 if (attr.value.lower()==
"center")
return "\\qc ";
51 else if (attr.value.lower()==
"right")
return "\\qr ";
81 err(
"Maximum indent level (%d) exceeded while generating RTF output!\n",
maxIndentLevels-1);
97 DBG_RTF(
"{\\comment RTFDocVisitor::visit(DocWord)}\n");
105 DBG_RTF(
"{\\comment RTFDocVisitor::visit(DocLinkedWord)}\n");
115 DBG_RTF(
"{\\comment RTFDocVisitor::visit(DocWhiteSpace)}\n");
130 DBG_RTF(
"{\\comment RTFDocVisitor::visit(DocSymbol)}\n");
146 DBG_RTF(
"{\\comment RTFDocVisitor::visit(DocEmoji)}\n");
157 case '&':
case '#':
case 'x':
161 val = 0xd800 + ( ( val1 - 0x10000 ) & 0xffc00 ) / 0x400 - 0x10000;
162 m_t <<
"\\u" << val <<
"?";
163 val = 0xdC00 + ( ( val1 - 0x10000 ) & 0x3ff ) - 0x10000 ;
164 m_t <<
"\\u" << val <<
"?";
167 case '0':
case '1':
case '2':
case '3':
case '4':
168 case '5':
case '6':
case '7':
case '8':
case '9':
169 val = val * 16 + *p -
'0';
171 case 'a':
case 'b':
case 'c':
case 'd':
case 'e':
case 'f':
172 val = val * 16 + *p -
'a' + 10;
188 DBG_RTF(
"{\\comment RTFDocVisitor::visit(DocURL)}\n");
218 DBG_RTF(
"{\\comment RTFDocVisitor::visit(DocLineBreak)}\n");
226 DBG_RTF(
"{\\comment RTFDocVisitor::visit(DocHorRuler)}\n");
227 m_t <<
"{\\pard\\widctlpar\\brdrb\\brdrs\\brdrw5\\brsp20 \\adjustright \\par}\n";
235 DBG_RTF(
"{\\comment RTFDocVisitor::visit(DocStyleChange)}\n");
291 for (
const auto &n : children) n->accept(parent);
297 DBG_RTF(
"{\\comment RTFDocVisitor::visit(DocVerbatim)}\n");
335 static int dotindex = 1;
343 std::ofstream file(fileName.
str(),std::ofstream::out | std::ofstream::binary);
346 err(
"Could not open file %s for writing\n",
qPrint(fileName));
364 static int mscindex = 1;
372 std::ofstream file(baseName.
str(),std::ofstream::out | std::ofstream::binary);
375 err(
"Could not open file %s for writing\n",
qPrint(baseName));
409 DBG_RTF(
"{\\comment RTFDocVisitor::visit(DocAnchor)}\n");
432 DBG_RTF(
"{\\comment RTFDocVisitor::visit(DocInclude)}\n");
534 err(
"Internal inconsistency: found switch SnippetDoc / IncludeDoc in file: %s"
535 "Please create a bug report\n",__FILE__);
545 DBG_RTF(
"{\\comment RTFDocVisitor::visit(DocIncOperator)}\n");
606 DBG_RTF(
"{\\comment RTFDocVisitor::visit(DocFormula)}\n");
612 m_t <<
"\\pard\\plain";
616 m_t <<
"{ \\field\\flddirty {\\*\\fldinst INCLUDEPICTURE \"" << f->
relPath() << f->
name() <<
".png\" \\\\d \\\\*MERGEFORMAT}{\\fldrslt Image}}";
627 DBG_RTF(
"{\\comment RTFDocVisitor::visit(DocIndexEntry)}\n");
628 m_t <<
"{\\xe \\v " << i->
entry() <<
"}\n";
639 DBG_RTF(
"{\\comment RTFDocVisitor::visitPre(DocCite)}\n");
667 DBG_RTF(
"{\\comment RTFDocVisitor::visitPre(DocAutoList)}\n");
679 DBG_RTF(
"{\\comment RTFDocVisitor::visitPost(DocAutoList)}\n");
689 DBG_RTF(
"{\\comment RTFDocVisitor::visitPre(DocAutoListItem)}\n");
710 DBG_RTF(
"{\\comment RTFDocVisitor::visitPost(DocAutoListItem)}\n");
715 DBG_RTF(
"{\\comment RTFDocVisitor::visitPost(DocPara)}\n");
721 DBG_RTF(
"{\\comment RTFDocVisitor::visitPost(DocPara)}\n");
737 DBG_RTF(
"{\\comment RTFDocVisitor::visitPre(DocRoot)}\n");
739 m_t <<
"{" <<
rtf_Style[
"BodyText"].reference() <<
"\n";
745 DBG_RTF(
"{\\comment RTFDocVisitor::visitPost(DocRoot)}\n");
755 DBG_RTF(
"{\\comment RTFDocVisitor::visitPre(DocSimpleSect)}\n");
759 m_t <<
"{" <<
rtf_Style[
"Heading5"].reference() <<
"\n";
804 m_t <<
"{\\s17 \\sa60 \\sb30\n";
812 DBG_RTF(
"{\\comment RTFDocVisitor::visitPost(DocSimpleSect)}\n");
822 DBG_RTF(
"{\\comment RTFDocVisitor::visitPre(DocTitle)}\n");
828 DBG_RTF(
"{\\comment RTFDocVisitor::visitPost(DocTitle)}\n");
839 DBG_RTF(
"{\\comment RTFDocVisitor::visitPre(DocSimpleSect)}\n");
848 DBG_RTF(
"{\\comment RTFDocVisitor::visitPost(DocSimpleSect)}\n");
857 DBG_RTF(
"{\\comment RTFDocVisitor::visitPre(DocSimpleListItem)}\n");
866 DBG_RTF(
"{\\comment RTFDocVisitor::visitPost(DocSimpleListItem)}\n");
872 DBG_RTF(
"{\\comment RTFDocVisitor::visitPre(DocSection)}\n");
879 int level = std::min(s->
level()+1,4);
880 heading.
sprintf(
"Heading%d",level);
885 m_t <<
"\n\\par" <<
"}\n";
886 m_t <<
"{\\tc\\tcl" << level <<
" \\v ";
895 DBG_RTF(
"{\\comment RTFDocVisitor::visitPost(DocSection)}\n");
903 DBG_RTF(
"{\\comment RTFDocVisitor::visitPre(DocHtmlList)}\n");
909 for (
const auto &opt : l->
attribs())
911 if (opt.name==
"type")
915 if (opt.name==
"start")
918 int val = opt.value.toInt(&ok);
928 DBG_RTF(
"{\\comment RTFDocVisitor::visitPost(DocHtmlList)}\n");
929 m_t <<
"\\par" <<
"}\n";
936 DBG_RTF(
"{\\comment RTFDocVisitor::visitPre(DocHtmlListItem)}\n");
942 for (
const auto &opt : l->
attribs())
944 if (opt.name==
"value")
947 int val = opt.value.toInt(&ok);
987 DBG_RTF(
"{\\comment RTFDocVisitor::visitPost(DocHtmlListItem)}\n");
993 DBG_RTF(
"{\\comment RTFDocVisitor::visitPre(DocHtmlDescList)}\n");
1002 DBG_RTF(
"{\\comment RTFDocVisitor::visitPost(DocHtmlDescList)}\n");
1011 DBG_RTF(
"{\\comment RTFDocVisitor::visitPre(DocHtmlDescTitle)}\n");
1014 m_t <<
"{" <<
rtf_Style[
"Heading5"].reference() <<
"\n";
1021 DBG_RTF(
"{\\comment RTFDocVisitor::visitPost(DocHtmlDescTitle)}\n");
1030 DBG_RTF(
"{\\comment RTFDocVisitor::visitPre(DocHtmlDescData)}\n");
1038 DBG_RTF(
"{\\comment RTFDocVisitor::visitPost(DocHtmlDescData)}\n");
1048 DBG_RTF(
"{\\comment RTFDocVisitor::visitPre(DocHtmlTable)}\n");
1056 DBG_RTF(
"{\\comment RTFDocVisitor::visitPost(DocHtmlTable)}\n");
1057 m_t <<
"\\pard\\plain\n";
1064 DBG_RTF(
"{\\comment RTFDocVisitor::visitPre(DocHtmlCaption)}\n");
1065 m_t <<
"\\pard \\qc \\b";
1066 m_t <<
"{Table \\field\\flddirty{\\*\\fldinst { SEQ Table \\\\*Arabic }}{\\fldrslt {\\noproof 1}} ";
1071 DBG_RTF(
"{\\comment RTFDocVisitor::visitPost(DocHtmlCaption)}\n");
1072 m_t <<
"}\n\\par\n";
1078 DBG_RTF(
"{\\comment RTFDocVisitor::visitPre(DocHtmlRow)}\n");
1080 m_t <<
"\\trowd \\trgaph108\\trleft-108"
1081 "\\trbrdrt\\brdrs\\brdrw10 "
1082 "\\trbrdrl\\brdrs\\brdrw10 "
1083 "\\trbrdrb\\brdrs\\brdrw10 "
1084 "\\trbrdrr\\brdrs\\brdrw10 "
1085 "\\trbrdrh\\brdrs\\brdrw10 "
1086 "\\trbrdrv\\brdrs\\brdrw10 \n";
1091 m_t <<
"\\clcbpat16";
1093 m_t <<
"\\clvertalt\\clbrdrt\\brdrs\\brdrw10 "
1094 "\\clbrdrl\\brdrs\\brdrw10 "
1095 "\\clbrdrb\\brdrs\\brdrw10 "
1096 "\\clbrdrr \\brdrs\\brdrw10 "
1098 "\\cellx" << ((i+1)*columnWidth) <<
"\n";
1100 m_t <<
"\\pard \\widctlpar\\intbl\\adjustright\n";
1107 DBG_RTF(
"{\\comment RTFDocVisitor::visitPost(DocHtmlRow)}\n");
1109 m_t <<
"\\pard \\widctlpar\\intbl\\adjustright\n";
1110 m_t <<
"{\\row }\n";
1117 DBG_RTF(
"{\\comment RTFDocVisitor::visitPre(DocHtmlCell)}\n");
1125 DBG_RTF(
"{\\comment RTFDocVisitor::visitPost(DocHtmlCell)}\n");
1157 DBG_RTF(
"{\\comment RTFDocVisitor::visitPre(DocHRef)}\n");
1171 "{\\cs37\\ul\\cf2 ";
1177 "{ HYPERLINK \"" << href->
url() <<
"\" "
1181 "{\\cs37\\ul\\cf2 ";
1194 DBG_RTF(
"{\\comment RTFDocVisitor::visitPost(DocHRef)}\n");
1211 DBG_RTF(
"{\\comment RTFDocVisitor::visitPre(DocHtmlHeader)}\n");
1215 int level = std::min(header->
level(),5);
1216 heading.
sprintf(
"Heading%d",level);
1220 m_t <<
"{\\tc\\tcl" << level <<
" ";
1227 DBG_RTF(
"{\\comment RTFDocVisitor::visitPost(DocHtmlHeader)}\n");
1236 DBG_RTF(
"{\\comment RTFDocVisitor::visitPre(DocImage)}\n");
1249 m_t <<
"\\pard \\qc ";
1251 m_t <<
"{ \\field\\flddirty {\\*\\fldinst INCLUDEPICTURE \"";
1253 m_t <<
"\" \\\\d \\\\*MERGEFORMAT}{\\fldrslt Image}}\n";
1259 m_t <<
"\\pard \\qc \\b";
1260 m_t <<
"{Image \\field\\flddirty{\\*\\fldinst { SEQ Image \\\\*Arabic }}{\\fldrslt {\\noproof 1}} ";
1266 if (hasCaption)
m_t <<
"{\\comment ";
1278 DBG_RTF(
"{\\comment RTFDocVisitor::visitPost(DocImage)}\n");
1289 if (hasCaption)
m_t <<
" }";
1312 DBG_RTF(
"{\\comment RTFDocVisitor::visitPre(DocDotFile)}\n");
1318 DBG_RTF(
"{\\comment RTFDocVisitor::visitPost(DocDotFile)}\n");
1323 DBG_RTF(
"{\\comment RTFDocVisitor::visitPre(DocMscFile)}\n");
1329 DBG_RTF(
"{\\comment RTFDocVisitor::visitPost(DocMscFile)}\n");
1335 DBG_RTF(
"{\\comment RTFDocVisitor::visitPre(DocDiaFile)}\n");
1341 DBG_RTF(
"{\\comment RTFDocVisitor::visitPost(DocDiaFile)}\n");
1348 DBG_RTF(
"{\\comment RTFDocVisitor::visitPre(DocLink)}\n");
1355 DBG_RTF(
"{\\comment RTFDocVisitor::visitPost(DocLink)}\n");
1362 DBG_RTF(
"{\\comment RTFDocVisitor::visitPre(DocRef)}\n");
1379 DBG_RTF(
"{\\comment RTFDocVisitor::visitPost(DocRef)}\n");
1387 DBG_RTF(
"{\\comment RTFDocVisitor::visitPre(DocSecRefItem)}\n");
1392 DBG_RTF(
"{\\comment RTFDocVisitor::visitPost(DocSecRefItem)}\n");
1398 DBG_RTF(
"{\\comment RTFDocVisitor::visitPre(DocSecRefList)}\n");
1409 DBG_RTF(
"{\\comment RTFDocVisitor::visitPost(DocSecRefList)}\n");
1419 DBG_RTF(
"{\\comment RTFDocVisitor::visitPre(DocParamSect)}\n");
1423 m_t <<
"{" <<
rtf_Style[
"Heading5"].reference() <<
"\n";
1454 DBG_RTF(
"{\\comment RTFDocVisitor::visitPost(DocParamSect)}\n");
1469 static int columnPos[4][5] =
1470 { { 2, 25, 100, 100, 100 },
1471 { 3, 14, 35, 100, 100 },
1472 { 3, 25, 50, 100, 100 },
1473 { 4, 14, 35, 55, 100 },
1477 DBG_RTF(
"{\\comment RTFDocVisitor::visitPre(DocParamList)}\n");
1495 m_t <<
"\\trowd \\trgaph108\\trleft426\\tblind426"
1496 "\\trbrdrt\\brdrs\\brdrw10\\brdrcf15 "
1497 "\\trbrdrl\\brdrs\\brdrw10\\brdrcf15 "
1498 "\\trbrdrb\\brdrs\\brdrw10\\brdrcf15 "
1499 "\\trbrdrr\\brdrs\\brdrw10\\brdrcf15 "
1500 "\\trbrdrh\\brdrs\\brdrw10\\brdrcf15 "
1501 "\\trbrdrv\\brdrs\\brdrw10\\brdrcf15 "<<
"\n";
1502 for (i=0;i<columnPos[config][0];i++)
1504 m_t <<
"\\clvertalt\\clbrdrt\\brdrs\\brdrw10\\brdrcf15 "
1505 "\\clbrdrl\\brdrs\\brdrw10\\brdrcf15 "
1506 "\\clbrdrb\\brdrs\\brdrw10\\brdrcf15 "
1507 "\\clbrdrr \\brdrs\\brdrw10\\brdrcf15 "
1509 "\\cellx" << (
rtf_pageWidth*columnPos[config][i+1]/100) <<
"\n";
1511 m_t <<
"\\pard \\widctlpar\\intbl\\adjustright\n";
1581 if (!first)
m_t <<
",";
else first=
FALSE;
1603 DBG_RTF(
"{\\comment RTFDocVisitor::visitPost(DocParamList)}\n");
1618 m_t <<
"\\cell }\n";
1620 m_t <<
"{\\row }\n";
1634 bool anonymousEnum = x->
file()==
"@";
1635 DBG_RTF(
"{\\comment RTFDocVisitor::visitPre(DocXRefItem)}\n");
1643 m_t <<
"{" <<
rtf_Style[
"Heading5"].reference() <<
"\n";
1666 "{\\cs37\\ul\\cf2 ";
1688 DBG_RTF(
"{\\comment RTFDocVisitor::visitPost(DocXRefItem)}\n");
1698 DBG_RTF(
"{\\comment RTFDocVisitor::visitPre(DocInternalRef)}\n");
1705 DBG_RTF(
"{\\comment RTFDocVisitor::visitPost(DocInternalRef)}\n");
1713 DBG_RTF(
"{\\comment RTFDocVisitor::visitPre(DocText)}\n");
1719 DBG_RTF(
"{\\comment RTFDocVisitor::visitPost(DocText)}\n");
1725 DBG_RTF(
"{\\comment RTFDocVisitor::visitPre(DocHtmlBlockQuote)}\n");
1735 DBG_RTF(
"{\\comment RTFDocVisitor::visitPost(DocHtmlBlockQuote)}\n");
1774 const unsigned char *p=(
const unsigned char *)str.
data();
1797 case '{':
m_t <<
"\\{";
break;
1798 case '}':
m_t <<
"\\}";
break;
1799 case '\\':
m_t <<
"\\\\";
break;
1800 case '\n':
if (verbatim)
1809 default:
m_t << (char)c;
1834 m_t <<
"{\\field {\\*\\fldinst { HYPERLINK \\\\l \"";
1837 m_t <<
"}{\\fldrslt {\\cs37\\ul\\cf2 ";
1864 const QCString &srcFile,
int srcLine)
1868 if ((i=baseName.
findRev(
'/'))!=-1)
1883 const QCString &srcFile,
int srcLine)
1887 if ((i=baseName.
findRev(
'/'))!=-1)
1900 if ((i=baseName.
findRev(
'/'))!=-1)
1913 if ((i=baseName.
findRev(
'/'))!=-1)
Node representing an HTML blockquote
Node representing an item of a auto list
void writeDiaGraphFromFile(const QCString &inFile, const QCString &outDir, const QCString &outFile, DiaOutputFormat format, const QCString &srcFile, int srcLine)
QCString writePlantUMLSource(const QCString &outDir, const QCString &fileName, const QCString &content, OutputFormat format, const QCString &engine, const QCString &srcFile, int srcLine)
Write a PlantUML compatible file.
QCString getDotImageExtension()
Node representing a Hypertext reference
Node representing a style change
Node representing a verbatim, unparsed text fragment
virtual QCString trCopyright()=0
QCString integerToRoman(int n, bool upper)
DocNodeList & paramTypes()
Node representing a simple section title
virtual QCString trPostcondition()=0
Node representing a paragraph in the documentation tree
bool isInlineImage() const
void startLink(const QCString &ref, const QCString &file, const QCString &anchor)
Node representing a dot file
void pushHidden(bool hide)
Node representing a HTML table
virtual QCString trNote()=0
bool remove(const std::string &path, bool acceptsAbsPath=true) const
Class representing a directory in the file system
void endLink(const QCString &ref)
Root node of documentation tree
uint length() const
Returns the length of the string, not counting the 0-terminator.
int findRev(char c, int index=-1, bool cs=TRUE) const
virtual QCString trExceptions()=0
Node representing a HTML list item
bool isEmpty() const
Returns TRUE iff the string is empty
void writePlantUMLFile(const QCString &fileName, bool hasCaption)
Node representing a VHDL flow chart
Node representing a HTML description data
Node representing a Html description item
Node representing a n emoji
Node representing a msc file
SrcLangExt
Language as given by extension
virtual QCString trReturns()=0
static QCString align(DocHtmlCell *cell)
void writeMscFile(const QCString &fileName, bool hasCaption, const QCString &srcFile, int srcLine)
QCString targetTitle() const
QCString exampleFile() const
Node representing a reference to a section
static PlantumlManager & instance()
Node representing an anchor
virtual QCString trPrecondition()=0
void err(const char *fmt,...)
Text streaming class that buffers data.
Root node of a text fragment
const HtmlAttribList & attribs() const
Abstract visitor that participates in the visitor pattern.
static HtmlEntityMapper * instance()
Returns the one and only instance of the HTML entity mapper
Node representing a Html description list
CodeParserInterface & getCodeParser(const QCString &langExt)
Node representing a include/dontinclude operator block
Node representing an entry in the index.
Node representing a list of section references
virtual QCString trSeeAlso()=0
Node representing a line break
Node representing a special symbol
QCString rtfFormatBmkStr(const QCString &name)
QCString extractBlock(const QCString &text, const QCString &marker)
Returns the section of text, in between a pair of markers.
const char * unicode(int index) const
Access routine to the unicode sequence for the Emoji entity
Node representing an item of a cross-referenced list
FileDef * createFileDef(const QCString &p, const QCString &n, const QCString &ref, const QCString &dn)
Node representing an image
const HtmlAttribList & attribs() const
virtual Kind kind() const =0
virtual QCString trVersion()=0
std::vector< std::unique_ptr< DocNode > > DocNodeList
Node representing a URL (or email address)
void writeDotGraphFromFile(const QCString &inFile, const QCString &outDir, const QCString &outFile, GraphOutputFormat format, const QCString &srcFile, int srcLine)
Node representing a HTML table caption
Node representing a parameter list.
virtual QCString trAttention()=0
Translator * theTranslator
Node representing a separator
QCString exampleFile() const
Node representing an block of paragraphs
Node representing a separator between two simple sections of the same type.
QCString stripPath(const QCString &s)
Node representing a citation of some bibliographic reference
virtual QCString trParameters()=0
void writeDotFile(const QCString &fileName, bool hasCaption, const QCString &srcFile, int srcLine)
Node representing a reference to some item
SrcLangExt getLanguageFromFileName(const QCString &fileName, SrcLangExt defLang)
Node representing a parameter section
const DocNodeList & children() const
Node representing a Html list
static const int maxIndentLevels
QCString integerToAlpha(int n, bool upper)
virtual QCString trRemarks()=0
void includePicturePreRTF(const QCString &name, bool isTypeRTF, bool hasCaption, bool inlineImage=FALSE)
RTFListItemInfo m_listItemInfo[maxIndentLevels]
int lineBlock(const QCString &text, const QCString &marker)
Returns the line number of the line following the line with the marker.
CodeOutputInterface & m_ci
DocParamSect::Direction direction() const
Node representing a simple section
Node representing a normal section
Node representing a horizontal ruler
QCString language() const
Node representing an included text block from file
void writeDiaFile(DocDiaFile *)
virtual void parseCode(CodeOutputInterface &codeOutIntf, const QCString &scopeName, const QCString &input, SrcLangExt lang, bool isExampleBlock, const QCString &exampleName=QCString(), const FileDef *fileDef=0, int startLine=-1, int endLine=-1, bool inlineFragment=FALSE, const MemberDef *memberDef=0, bool showLineNumbers=TRUE, const Definition *searchCtx=0, bool collectXRefs=TRUE)=0
Parses a source file or fragment with the goal to produce highlighted and cross-referenced output.
Node representing an auto List
QCString & setNum(short n)
virtual QCString trSince()=0
void visitPre(DocAutoList *)
Node representing an internal section of documentation
virtual QCString trInvariant()=0
void writeMscGraphFromFile(const QCString &inFile, const QCString &outDir, const QCString &outFile, MscOutputFormat format, const QCString &srcFile, int srcLine)
void filter(const QCString &str, bool verbatim=FALSE)
bool hasTypeSpecifier() const
std::string dirPath(bool absPath=true) const
Node representing a word that can be linked to something
const char * rtf(DocSymbol::SymType symb) const
Access routine to the RTF code of the HTML entity
#define Config_getBool(name)
void includePicturePostRTF(bool isTypeRTF, bool hasCaption, bool inlineImage=FALSE)
SrcLangExt getLanguageFromCodeLang(QCString &fileName)
Routine to handle the language attribute of the \code command
Output interface for code parser.
Node representing a link to some item
Node representing a dia file
bool startsWith(const char *s) const
Minimal replacement for QFileInfo.
const char * qPrint(const char *s)
#define Config_getString(name)
Node representing a simple list
QCString getFileNameExtension(const QCString &fn)
static void visitCaption(RTFDocVisitor *parent, const DocNodeList &children)
const char * data() const
Returns a pointer to the contents of the string in the form of a 0-terminated C string
Node representing a simple list item
QCString includeFileName() const
A model of a file symbol.
Node representing some amount of white space
static EmojiEntityMapper * instance()
Returns the one and only instance of the Emoji entity mapper
Concrete visitor implementation for RTF output.
std::string fileName() const
Node representing a HTML table cell
QCString extension() const
void generatePlantUMLOutput(const QCString &baseName, const QCString &outDir, OutputFormat format)
Convert a PlantUML file to an image.
virtual QCString trDate()=0
bool hasInOutSpecifier() const
Node representing an internal reference to some item
DocNodeList & parameters()
const char * reference() const
A bunch of utility functions.
Node representing a HTML table row
QCString right(size_t len) const
QCString getStyle(const QCString &name)
QCString & sprintf(const char *format,...)
void visitPost(DocAutoList *)
RTFDocVisitor(TextStream &t, CodeOutputInterface &ci, const QCString &langExt)
virtual QCString trTemplateParameters()=0
QCString exampleFile() const
virtual QCString trReturnValues()=0
virtual QCString trAuthor(bool first_capital, bool singular)=0
virtual QCString trWarning()=0
const HtmlAttribList & attribs() const
This is an alternative implementation of QCString.