41#define DB_VIS_C DB_VIS_C1(m_t)
42#define DB_VIS_C1(x) x << "<!-- DB_VIS_C " << __LINE__ << " -->\n";
43#define DB_VIS_C2(y) DB_VIS_C2a(m_t,y)
44#define DB_VIS_C2a(x,y) x << "<!-- DB_VIS_C " << __LINE__ << " " << y << " -->\n";
49#define DB_VIS_C2a(x,y)
57 const char *p=s.
data();
63 case ':': result+=
"_1";
break;
64 default: result+=c;
break;
72 return (name==
"align" ||
75 name==
"cellpadding" ||
76 name==
"cellspacing" ||
88 for (
const auto &n : children)
102 if (hasCaption && !inlineImage)
111 t <<
" <informalfigure>\n";
113 t <<
" <mediaobject>\n";
114 t <<
" <imageobject>\n";
122 if (!height.
isEmpty() && !inlineImage) t <<
" width=\"50%\"";
128 t <<
" align=\"center\" valign=\"middle\" scalefit=\"0\" fileref=\"" << name <<
"\">";
129 t <<
"</imagedata>\n";
130 t <<
" </imageobject>\n";
131 if (hasCaption && !inlineImage)
140 if (hasCaption && !inlineImage)
144 t <<
" </mediaobject>\n";
145 if (hasCaption && !inlineImage)
151 t <<
" </informalfigure>\n";
230 m_t <<
"<link xlink:href=\"";
242 m_t <<
"<?linebreak?>";
251 m_t <<
"<informaltable frame='bottom'><tgroup cols='1'><colspec align='center'/><tbody><row><entry align='center'>\n";
252 m_t <<
"</entry></row></tbody></tgroup></informaltable>\n";
262 if (s.
enable())
m_t <<
"<emphasis role=\"bold\">";
else m_t <<
"</emphasis>";
265 if (s.
enable())
m_t <<
"<emphasis>";
else m_t <<
"</emphasis>";
270 if (s.
enable())
m_t <<
"<computeroutput>";
else m_t <<
"</computeroutput>";
273 if (s.
enable())
m_t <<
"<subscript>";
else m_t <<
"</subscript>";
276 if (s.
enable())
m_t <<
"<superscript>";
else m_t <<
"</superscript>";
279 if (s.
enable())
m_t <<
"<informaltable frame='none'><tgroup cols='1'><colspec align='center'/><tbody><row><entry align='center'>";
280 else m_t <<
"</entry></row></tbody></tgroup></informaltable>";
285 m_t <<
"<literallayout>";
290 m_t <<
"</literallayout>";
321 m_t <<
"<literallayout><computeroutput>";
329 m_t <<
"</computeroutput></literallayout>";
332 m_t <<
"<literallayout><computeroutput>";
334 m_t <<
"</computeroutput></literallayout>";
340 m_t <<
"<computeroutput>";
342 m_t <<
"</computeroutput>";
365 if (!fileName.isEmpty())
378 "msc {"+s.
text()+
"}",
380 if (!fileName.isEmpty())
393 for (
const auto &baseName: baseNameVector)
420 m_t <<
"<literallayout><computeroutput>";
431 m_t <<
"</computeroutput></literallayout>";
435 m_t <<
"<literallayout><computeroutput>";
443 m_t <<
"</computeroutput></literallayout>";
457 m_t <<
"<literallayout>";
459 m_t <<
"</literallayout>";
463 m_t <<
"<literallayout><computeroutput>";
472 m_t <<
"</computeroutput></literallayout>";
484 m_t <<
"<programlisting linenumbering=\"unnumbered\">";
497 std::unique_ptr<FileDef> fd;
534 else m_t <<
" <mediaobject>\n";
535 m_t <<
" <imageobject>\n";
536 m_t <<
" <imagedata ";
537 m_t <<
"align=\"center\" valign=\"middle\" scalefit=\"0\" fileref=\"" << f.
relPath() << f.
name() <<
".png\"/>\n";
538 m_t <<
" </imageobject>\n";
540 else m_t <<
" </mediaobject>\n";
547 m_t <<
"<indexterm><primary>";
549 m_t <<
"</primary></indexterm>\n";
573 if (!opt.noPar())
filter(
"[");
575 if (!opt.noPar())
filter(
"]");
591 m_t <<
"<orderedlist>\n";
595 m_t <<
"<itemizedlist>\n";
600 m_t <<
"</orderedlist>\n";
604 m_t <<
"</itemizedlist>\n";
615 m_t <<
"<listitem override=\"unchecked\">";
619 m_t <<
"<listitem override=\"checked\">";
626 m_t <<
"</listitem>";
745 m_t <<
"<formalpara><title>" <<
theTranslator->trPrecondition() <<
"</title>\n";
755 m_t <<
"<formalpara><title>" <<
theTranslator->trPostcondition() <<
"</title>\n";
765 m_t <<
"<formalpara><title>" <<
theTranslator->trCopyright() <<
"</title>\n";
775 m_t <<
"<formalpara><title>" <<
theTranslator->trInvariant() <<
"</title>\n";
806 m_t <<
"<important><title>" <<
theTranslator->trImportant() <<
"</title>\n";
817 m_t <<
"<formalpara>\n";
825 std::visit(*
this,*s.
title());
835 m_t <<
"</formalpara>\n";
843 m_t <<
"</caution>\n";
846 m_t <<
"</important>\n";
849 m_t <<
"</warning>\n";
852 m_t <<
"</formalpara>\n";
870 m_t <<
"<itemizedlist>\n";
872 m_t <<
"</itemizedlist>\n";
884 m_t <<
"</listitem>\n";
896 std::visit(*
this,*s.
title());
899 m_t <<
"</section>\n";
910 m_t <<
"<itemizedlist>\n";
913 m_t <<
"</orderedlist>\n";
915 m_t <<
"</itemizedlist>\n";
925 bool isFirst = &std::get<DocHtmlListItem>(l->
children().
front())==&s;
928 for (
const auto &opt : s.
attribs())
930 if (opt.name==
"value")
933 int val = opt.value.toInt(&ok);
938 if (value>0 || isFirst)
940 for (
const auto &opt : l->
attribs())
942 if (opt.name==
"type")
945 type =
" numeration=\"arabic\"";
946 else if (opt.value==
"a")
947 type =
" numeration=\"loweralpha\"";
948 else if (opt.value==
"A")
949 type =
" numeration=\"upperalpha\"";
950 else if (opt.value==
"i")
951 type =
" numeration=\"lowerroman\"";
952 else if (opt.value==
"I")
953 type =
" numeration=\"upperroman\"";
955 else if (value==0 && opt.name==
"start")
958 int val = opt.value.toInt(&ok);
964 if (value>0 && !isFirst)
966 m_t <<
"</orderedlist>\n";
968 if (value>0 || isFirst)
970 m_t <<
"<orderedlist";
972 if (value>0)
m_t <<
" startingnumber=\"" << value <<
"\"";
976 m_t <<
"<listitem>\n";
978 m_t <<
"</listitem>\n";
985 m_t <<
"<variablelist>\n";
987 m_t <<
"</variablelist>\n";
994 m_t <<
"<varlistentry><term>";
996 m_t <<
"</term></varlistentry>\n";
1003 m_t <<
"<listitem>";
1005 m_t <<
"</listitem>\n";
1013 m_t <<
"<informaltable frame=\"all\">\n";
1014 m_t <<
" <tgroup cols=\"" << t.
numColumns() <<
"\" align=\"left\" colsep=\"1\" rowsep=\"1\">\n";
1018 m_t <<
" <colspec colname='c" << i+1 <<
"'/>\n";
1022 std::visit(*
this,*t.
caption());
1027 m_t <<
" </tgroup>\n";
1028 m_t <<
"</informaltable>\n";
1051 for (
const auto &opt : tr.
attribs())
1064 m_t <<
"</thead><tbody>\n";
1076 for (
const auto &opt : c.
attribs())
1078 if (opt.name==
"colspan")
1081 int cols = opt.value.toInt();
1085 else if (opt.name==
"rowspan")
1087 int extraRows = opt.value.toInt() - 1;
1088 m_t <<
" morerows='" << extraRows <<
"'";
1090 else if (opt.name==
"class")
1092 if (opt.value.startsWith(
"markdownTable"))
1094 if (opt.value.endsWith(
"Right"))
1096 m_t <<
" align='right'";
1098 else if (opt.value.endsWith(
"Left"))
1100 m_t <<
" align='left'";
1102 else if (opt.value.endsWith(
"Center"))
1104 m_t <<
" align='center'";
1134 m_t <<
"</caption>\n";
1148 if (href.
url().
at(0) !=
'#')
1164 m_t <<
"<para><emphasis role=\"bold\">";
1166 m_t <<
"</emphasis></para>";
1177 std::visit(*
this,*summary);
1189 m_t <<
"<formalpara><title>";
1191 m_t <<
"</title></formalpara>\n";
1291 m_t <<
"<tocentry>";
1293 m_t <<
"</tocentry>\n";
1310 m_t <<
" <formalpara>\n";
1311 m_t <<
" <title>\n";
1321 m_t <<
"</title>\n";
1323 m_t <<
" <table frame=\"all\">\n";
1329 if (hasInOutSpecs && hasTypeSpecs) ncols += 2;
1330 else if (hasInOutSpecs || hasTypeSpecs) ncols += 1;
1332 m_t <<
" <tgroup cols=\"" << ncols <<
"\" align=\"left\" colsep=\"1\" rowsep=\"1\">\n";
1333 for (
int i = 1; i <= ncols; i++)
1335 if (i == ncols)
m_t <<
" <colspec colwidth=\"4*\"/>\n";
1336 else m_t <<
" <colspec colwidth=\"1*\"/>\n";
1338 m_t <<
" <tbody>\n";
1340 m_t <<
" </tbody>\n";
1341 m_t <<
" </tgroup>\n";
1342 m_t <<
" </table>\n";
1343 m_t <<
" </para>\n";
1344 m_t <<
" </formalpara>\n";
1388 std::visit(*
this,type);
1395 m_t <<
"<entry></entry>\n";
1407 std::visit(*
this,param);
1415 std::visit(*
this,par);
1417 m_t <<
"</entry>\n";
1426 m_t <<
"<para><link linkend=\"_";
1458 m_t <<
"<blockquote>";
1460 m_t <<
"</blockquote>";
1540 for (
const auto &bName: baseNameVector)
1547 visitPreStart(
m_t, children, hasCaption, relPath + baseName +
".png", width, height);
1572 baseName.prepend(
"msc_");
1576 visitPreStart(
m_t, children, hasCaption, relPath + baseName +
".png", width, height);
1610 baseName.prepend(
"dia_");
1614 visitPreStart(
m_t, children, hasCaption, relPath + baseName +
".png", width, height);
1648 baseName.prepend(
"dot_");
1653 visitPreStart(
m_t, children, hasCaption, relPath + baseName +
"." + imgExt, width, height);
void parseCodeFragment(OutputCodeList &codeOutList, const QCString &fileName, const QCString &blockId, const QCString &scopeName, bool showLineNumbers, bool trimLeft, bool stripCodeComments)
static CodeFragmentManager & instance()
virtual void parseCode(OutputCodeList &codeOutList, const QCString &scopeName, const QCString &input, SrcLangExt lang, bool stripCodeComments, const CodeParserOptions &options)=0
Parses a source file or fragment with the goal to produce highlighted and cross-referenced output.
Node representing an anchor.
Node representing an auto List.
Node representing an item of a auto list.
Node representing a citation of some bibliographic reference.
CiteInfoOption option() const
Node representing a dia file.
Node representing a dot file.
Node representing an emoji.
Node representing a Hypertext reference.
Node representing a horizontal ruler.
Node representing an HTML blockquote.
Node representing a HTML table caption.
Node representing a HTML table cell.
const HtmlAttribList & attribs() const
Node representing a HTML description data.
Node representing a Html description list.
Node representing a Html description item.
const DocNodeVariant * summary() const
Node representing a Html list.
const HtmlAttribList & attribs() const
Node representing a HTML list item.
const HtmlAttribList & attribs() const
Node representing a HTML table row.
const HtmlAttribList & attribs() const
Node representing a HTML table.
size_t numColumns() const
const DocNodeVariant * caption() const
Node representing an image.
bool isInlineImage() const
Node representing a include/dontinclude operator block.
bool stripCodeComments() const
QCString includeFileName() const
QCString exampleFile() const
Node representing an included text block from file.
QCString extension() const
bool stripCodeComments() const
QCString exampleFile() const
Node representing an entry in the index.
Node representing an internal section of documentation.
Node representing an internal reference to some item.
Node representing a line break.
Node representing a link to some item.
Node representing a word that can be linked to something.
Node representing a msc file.
DocNodeVariant * parent()
Node representing an block of paragraphs.
Node representing a paragraph in the documentation tree.
Node representing a parameter list.
const DocNodeList & parameters() const
const DocNodeList & paramTypes() const
DocParamSect::Direction direction() const
const DocNodeList & paragraphs() const
Node representing a parameter section.
bool hasInOutSpecifier() const
bool hasTypeSpecifier() const
Node representing a uml file.
Node representing a reference to some item.
QCString targetTitle() const
Root node of documentation tree.
Node representing a reference to a section.
Node representing a list of section references.
Node representing a normal section.
const DocNodeVariant * title() const
Node representing a separator.
Node representing a simple list.
Node representing a simple list item.
const DocNodeVariant * paragraph() const
Node representing a simple section.
const DocNodeVariant * title() const
Node representing a separator between two simple sections of the same type.
Node representing a style change.
Node representing a special symbol.
HtmlEntityMapper::SymType symbol() const
Root node of a text fragment.
Node representing a simple section title.
Node representing a URL (or email address).
Node representing a verbatim, unparsed text fragment.
QCString language() const
const DocNodeList & children() const
QCString exampleFile() const
Node representing a VHDL flow chart.
CodeParserInterface & getCodeParser(const QCString &langExt)
void pushHidden(bool hide)
Node representing some amount of white space.
Node representing a word.
Node representing an item of a cross-referenced list.
void visitPreStart(TextStream &t, const DocNodeList &children, bool hasCaption, const QCString &name, const QCString &width, const QCString &height, bool inlineImage=FALSE)
void endDiaFile(bool hasCaption)
void operator()(const DocWord &)
void filter(const QCString &str, const bool retainNewLine=false)
void visitChildren(const T &t)
void startLink(const QCString &file, const QCString &anchor)
void startDiaFile(const QCString &fileName, const QCString &relPath, const QCString &width, const QCString &height, bool hasCaption, const DocNodeList &children, const QCString &srcFile, int srcLine)
void startMscFile(const QCString &fileName, const QCString &relPath, const QCString &width, const QCString &height, bool hasCaption, const DocNodeList &children, const QCString &srcFile, int srcLine)
void startDotFile(const QCString &fileName, const QCString &relPath, const QCString &width, const QCString &height, bool hasCaption, const DocNodeList &children, const QCString &srcFile, int srcLine)
void writeMscFile(const QCString &fileName, const DocVerbatim &s, bool newFile=true)
void endPlantUmlFile(bool hasCaption)
void visitCaption(const DocNodeList &children)
void writeDiaFile(const QCString &fileName, const DocVerbatim &s)
void endDotFile(bool hasCaption)
void visitPostEnd(TextStream &t, bool hasCaption, bool inlineImage=FALSE)
void writePlantUMLFile(const QCString &fileName, const DocVerbatim &s)
void endMscFile(bool hasCaption)
DocbookDocVisitor(TextStream &t, OutputCodeList &ci, const QCString &langExt)
void startPlantUmlFile(const QCString &fileName, const QCString &relPath, const QCString &width, const QCString &height, bool hasCaption, const DocNodeList &children, const QCString &srcFile, int srcLine)
void writeDotFile(const QCString &fileName, const DocVerbatim &s, bool newFile=true)
static FileNameLinkedMap * imageNameLinkedMap
const char * unicode(int index) const
Access routine to the unicode sequence for the Emoji entity.
static EmojiEntityMapper & instance()
Returns the one and only instance of the Emoji entity mapper.
A model of a file symbol.
virtual QCString absFilePath() const =0
Minimal replacement for QFileInfo.
std::string fileName() const
std::string dirPath(bool absPath=true) const
bool empty() const
checks whether the container is empty
T & front()
access the first element
static HtmlEntityMapper & instance()
Returns the one and only instance of the HTML entity mapper.
const char * docbook(SymType symb) const
Access routine to the docbook code of the HTML entity.
Class representing a list of different code generators.
StringVector writePlantUMLSource(const QCString &outDirArg, const QCString &fileName, const QCString &content, OutputFormat format, const QCString &engine, const QCString &srcFile, int srcLine, bool inlineCode)
Write a PlantUML compatible file.
static PlantumlManager & instance()
void generatePlantUMLOutput(const QCString &baseName, const QCString &outDir, OutputFormat format)
Convert a PlantUML file to an image.
This is an alternative implementation of QCString.
size_t length() const
Returns the length of the string, not counting the 0-terminator.
QCString mid(size_t index, size_t len=static_cast< size_t >(-1)) const
char & at(size_t i)
Returns a reference to the character at index i.
bool isEmpty() const
Returns TRUE iff the string is empty.
const std::string & str() const
void reserve(size_t size)
Reserve space for size bytes without changing the string contents.
const char * data() const
Returns a pointer to the contents of the string in the form of a 0-terminated C string.
Text streaming class that buffers data.
#define Config_getBool(name)
#define Config_getString(name)
void writeDiaGraphFromFile(const QCString &inFile, const QCString &outDir, const QCString &outFile, DiaOutputFormat format, const QCString &srcFile, int srcLine)
QCString convertToDocBook(const QCString &s, const bool retainNewline)
static QCString filterId(const QCString &s)
static bool supportedHtmlAttribute(const QCString &name)
void writeDotGraphFromFile(const QCString &inFile, const QCString &outDir, const QCString &outFile, GraphOutputFormat format, const QCString &srcFile, int srcLine)
std::unique_ptr< FileDef > createFileDef(const QCString &p, const QCString &n, const QCString &ref, const QCString &dn)
Translator * theTranslator
void writeMscGraphFromFile(const QCString &inFile, const QCString &outDir, const QCString &outFile, MscOutputFormat format, const QCString &srcFile, int srcLine)
Portable versions of functions that are platform dependent.
Options to configure the code parser.
CodeParserOptions & setStartLine(int lineNr)
CodeParserOptions & setShowLineNumbers(bool enable)
CodeParserOptions & setFileDef(const FileDef *fd)
QCString writeFileContents(const QCString &baseName, const QCString &extension, const QCString &content, bool &exists)
Thread-safe function to write a string to a file.
SrcLangExt getLanguageFromFileName(const QCString &fileName, SrcLangExt defLang)
QCString stripPath(const QCString &s)
bool readInputFile(const QCString &fileName, std::string &contents, bool filter, bool isSourceCode)
read a file name fileName and optionally filter and transcode it
SrcLangExt getLanguageFromCodeLang(QCString &fileName)
Routine to handle the language attribute of the \code command.
QCString getDotImageExtension()
QCString makeBaseName(const QCString &name, const QCString &ext)
bool copyFile(const QCString &src, const QCString &dest)
Copies the contents of file with name src to the newly created file with name dest.
QCString getFileNameExtension(const QCString &fn)
FileDef * findFileDef(const FileNameLinkedMap *fnMap, const QCString &n, bool &ambig)
A bunch of utility functions.