Public Member Functions | Private Member Functions | Private Attributes | List of all members
HtmlDocVisitor Class Reference

Concrete visitor implementation for HTML output. More...

#include <htmldocvisitor.h>

Inheritance diagram for HtmlDocVisitor:
DocVisitor

Public Member Functions

 HtmlDocVisitor (FTextStream &t, CodeOutputInterface &ci, Definition *ctx)
 
void visit (DocWord *)
 
void visit (DocLinkedWord *)
 
void visit (DocWhiteSpace *)
 
void visit (DocSymbol *)
 
void visit (DocURL *)
 
void visit (DocLineBreak *)
 
void visit (DocHorRuler *)
 
void visit (DocStyleChange *)
 
void visit (DocVerbatim *)
 
void visit (DocAnchor *)
 
void visit (DocInclude *)
 
void visit (DocIncOperator *)
 
void visit (DocFormula *)
 
void visit (DocIndexEntry *)
 
void visit (DocSimpleSectSep *)
 
void visit (DocCite *)
 
void visitPre (DocAutoList *)
 
void visitPost (DocAutoList *)
 
void visitPre (DocAutoListItem *)
 
void visitPost (DocAutoListItem *)
 
void visitPre (DocPara *)
 
void visitPost (DocPara *)
 
void visitPre (DocRoot *)
 
void visitPost (DocRoot *)
 
void visitPre (DocSimpleSect *)
 
void visitPost (DocSimpleSect *)
 
void visitPre (DocTitle *)
 
void visitPost (DocTitle *)
 
void visitPre (DocSimpleList *)
 
void visitPost (DocSimpleList *)
 
void visitPre (DocSimpleListItem *)
 
void visitPost (DocSimpleListItem *)
 
void visitPre (DocSection *)
 
void visitPost (DocSection *)
 
void visitPre (DocHtmlList *)
 
void visitPost (DocHtmlList *)
 
void visitPre (DocHtmlListItem *)
 
void visitPost (DocHtmlListItem *)
 
void visitPre (DocHtmlDescList *)
 
void visitPost (DocHtmlDescList *)
 
void visitPre (DocHtmlDescTitle *)
 
void visitPost (DocHtmlDescTitle *)
 
void visitPre (DocHtmlDescData *)
 
void visitPost (DocHtmlDescData *)
 
void visitPre (DocHtmlTable *)
 
void visitPost (DocHtmlTable *)
 
void visitPre (DocHtmlRow *)
 
void visitPost (DocHtmlRow *)
 
void visitPre (DocHtmlCell *)
 
void visitPost (DocHtmlCell *)
 
void visitPre (DocHtmlCaption *)
 
void visitPost (DocHtmlCaption *)
 
void visitPre (DocInternal *)
 
void visitPost (DocInternal *)
 
void visitPre (DocHRef *)
 
void visitPost (DocHRef *)
 
void visitPre (DocHtmlHeader *)
 
void visitPost (DocHtmlHeader *)
 
void visitPre (DocImage *)
 
void visitPost (DocImage *)
 
void visitPre (DocDotFile *)
 
void visitPost (DocDotFile *)
 
void visitPre (DocMscFile *)
 
void visitPost (DocMscFile *)
 
void visitPre (DocDiaFile *)
 
void visitPost (DocDiaFile *)
 
void visitPre (DocLink *)
 
void visitPost (DocLink *)
 
void visitPre (DocRef *)
 
void visitPost (DocRef *)
 
void visitPre (DocSecRefItem *)
 
void visitPost (DocSecRefItem *)
 
void visitPre (DocSecRefList *)
 
void visitPost (DocSecRefList *)
 
void visitPre (DocParamSect *)
 
void visitPost (DocParamSect *)
 
void visitPre (DocParamList *)
 
void visitPost (DocParamList *)
 
void visitPre (DocXRefItem *)
 
void visitPost (DocXRefItem *)
 
void visitPre (DocInternalRef *)
 
void visitPost (DocInternalRef *)
 
void visitPre (DocCopy *)
 
void visitPost (DocCopy *)
 
void visitPre (DocText *)
 
void visitPost (DocText *)
 
void visitPre (DocHtmlBlockQuote *)
 
void visitPost (DocHtmlBlockQuote *)
 
void visitPre (DocVhdlFlow *)
 
void visitPost (DocVhdlFlow *)
 
void visitPre (DocParBlock *)
 
void visitPost (DocParBlock *)
 
- Public Member Functions inherited from DocVisitor
 DocVisitor (int id)
 
virtual ~DocVisitor ()
 
int id () const
 

Private Member Functions

void writeObfuscatedMailAddress (const QCString &url)
 
void filter (const char *str)
 
void filterQuotedCdataAttr (const char *str)
 
void startLink (const QCString &ref, const QCString &file, const QCString &relPath, const QCString &anchor, const QCString &tooltip="")
 
void endLink ()
 
void writeDotFile (const QCString &fileName, const QCString &relPath, const QCString &context)
 
void writeMscFile (const QCString &fileName, const QCString &relPath, const QCString &context)
 
void writeDiaFile (const QCString &fileName, const QCString &relPath, const QCString &context)
 
void writePlantUMLFile (const QCString &fileName, const QCString &relPath, const QCString &context)
 
void pushEnabled ()
 
void popEnabled ()
 
void forceEndParagraph (DocNode *n)
 
void forceStartParagraph (DocNode *n)
 

Private Attributes

FTextStreamm_t
 
CodeOutputInterfacem_ci
 
bool m_insidePre
 
bool m_hide
 
QStack< boolm_enabled
 
Definitionm_ctx
 
QCString m_langExt
 

Detailed Description

Concrete visitor implementation for HTML output.

Definition at line 33 of file htmldocvisitor.h.

Constructor & Destructor Documentation

HtmlDocVisitor::HtmlDocVisitor ( FTextStream t,
CodeOutputInterface ci,
Definition ctx 
)

Definition at line 149 of file htmldocvisitor.cpp.

152  m_hide(FALSE), m_ctx(ctx)
153 {
154  if (ctx) m_langExt=ctx->getDefFileExtension();
155 }
CodeOutputInterface & m_ci
const bool FALSE
Definition: qglobal.h:370
QCString m_langExt
const int DocVisitor_Html
Definition: docvisitor.h:23
QCString getDefFileExtension() const
FTextStream & m_t
DocVisitor(int id)
Definition: docvisitor.h:94
Definition * m_ctx

Member Function Documentation

void HtmlDocVisitor::endLink ( )
private

Definition at line 1933 of file htmldocvisitor.cpp.

1934 {
1935  m_t << "</a>";
1936 }
FTextStream & m_t
void HtmlDocVisitor::filter ( const char *  str)
private

Definition at line 1871 of file htmldocvisitor.cpp.

1872 {
1873  if (str==0) return;
1874  const char *p=str;
1875  char c;
1876  while (*p)
1877  {
1878  c=*p++;
1879  switch(c)
1880  {
1881  case '<': m_t << "&lt;"; break;
1882  case '>': m_t << "&gt;"; break;
1883  case '&': m_t << "&amp;"; break;
1884  default: m_t << c;
1885  }
1886  }
1887 }
FTextStream & m_t
p
Definition: test.py:223
static QCString str
void HtmlDocVisitor::filterQuotedCdataAttr ( const char *  str)
private

Escape basic entities to produce a valid CDATA attribute value, assume that the outer quoting will be using the double quote "

Definition at line 1891 of file htmldocvisitor.cpp.

1892 {
1893  if (str==0) return;
1894  const char *p=str;
1895  char c;
1896  while (*p)
1897  {
1898  c=*p++;
1899  switch(c)
1900  {
1901  case '&': m_t << "&amp;"; break;
1902  case '"': m_t << "&quot;"; break;
1903  case '<': m_t << "&lt;"; break;
1904  case '>': m_t << "&gt;"; break;
1905  default: m_t << c;
1906  }
1907  }
1908 }
FTextStream & m_t
p
Definition: test.py:223
static QCString str
void HtmlDocVisitor::forceEndParagraph ( DocNode n)
private

Used for items found inside a paragraph, which due to XHTML restrictions have to be outside of the paragraph. This method will forcefully end the current paragraph and forceStartParagraph() will restart it.

Definition at line 2086 of file htmldocvisitor.cpp.

2087 {
2088  //printf("forceEndParagraph(%p) %d\n",n,n->kind());
2089  if (n->parent() && n->parent()->kind()==DocNode::Kind_Para)
2090  {
2091  DocPara *para = (DocPara*)n->parent();
2092  int nodeIndex = para->children().findRef(n);
2093  nodeIndex--;
2094  if (nodeIndex<0) return; // first node
2095  while (nodeIndex>=0 &&
2096  para->children().at(nodeIndex)->kind()==DocNode::Kind_WhiteSpace
2097  )
2098  {
2099  nodeIndex--;
2100  }
2101  if (nodeIndex>=0)
2102  {
2103  DocNode *n = para->children().at(nodeIndex);
2104  //printf("n=%p kind=%d outside=%d\n",n,n->kind(),mustBeOutsideParagraph(n));
2105  if (mustBeOutsideParagraph(n)) return;
2106  }
2107  nodeIndex--;
2108  bool styleOutsideParagraph=insideStyleChangeThatIsOutsideParagraph(para,nodeIndex);
2109  bool isFirst;
2110  bool isLast;
2111  getParagraphContext(para,isFirst,isLast);
2112  //printf("forceEnd first=%d last=%d styleOutsideParagraph=%d\n",isFirst,isLast,styleOutsideParagraph);
2113  if (isFirst && isLast) return;
2114  if (styleOutsideParagraph) return;
2115 
2116  m_t << "</p>";
2117  }
2118 }
DocNode * parent() const
Definition: docparser.h:147
int findRef(const type *d) const
Definition: qlist.h:89
type * at(uint i) const
Definition: qlist.h:94
virtual Kind kind() const =0
FTextStream & m_t
static bool mustBeOutsideParagraph(DocNode *n)
static int getParagraphContext(DocPara *p, bool &isFirst, bool &isLast)
const QList< DocNode > & children() const
Definition: docparser.h:185
static bool insideStyleChangeThatIsOutsideParagraph(DocPara *para, int nodeIndex)
void HtmlDocVisitor::forceStartParagraph ( DocNode n)
private

Used for items found inside a paragraph, which due to XHTML restrictions have to be outside of the paragraph. This method will forcefully start the paragraph, that was previously ended by forceEndParagraph().

Definition at line 2124 of file htmldocvisitor.cpp.

2125 {
2126  //printf("forceStartParagraph(%p) %d\n",n,n->kind());
2127  if (n->parent() && n->parent()->kind()==DocNode::Kind_Para) // if we are inside a paragraph
2128  {
2129  DocPara *para = (DocPara*)n->parent();
2130  int nodeIndex = para->children().findRef(n);
2131  int numNodes = para->children().count();
2132  bool styleOutsideParagraph=insideStyleChangeThatIsOutsideParagraph(para,nodeIndex);
2133  if (styleOutsideParagraph) return;
2134  nodeIndex++;
2135  if (nodeIndex==numNodes) return; // last node
2136  while (nodeIndex<numNodes &&
2137  para->children().at(nodeIndex)->kind()==DocNode::Kind_WhiteSpace
2138  )
2139  {
2140  nodeIndex++;
2141  }
2142  if (nodeIndex<numNodes)
2143  {
2144  DocNode *n = para->children().at(nodeIndex);
2145  if (mustBeOutsideParagraph(n)) return;
2146  }
2147  else
2148  {
2149  return; // only whitespace at the end!
2150  }
2151 
2152  bool isFirst;
2153  bool isLast;
2154  getParagraphContext(para,isFirst,isLast);
2155  //printf("forceStart first=%d last=%d\n",isFirst,isLast);
2156  if (isFirst && isLast) return;
2157 
2158  m_t << "<p>";
2159  }
2160 }
DocNode * parent() const
Definition: docparser.h:147
int findRef(const type *d) const
Definition: qlist.h:89
type * at(uint i) const
Definition: qlist.h:94
virtual Kind kind() const =0
uint count() const
Definition: qlist.h:66
FTextStream & m_t
static bool mustBeOutsideParagraph(DocNode *n)
static int getParagraphContext(DocPara *p, bool &isFirst, bool &isLast)
const QList< DocNode > & children() const
Definition: docparser.h:185
static bool insideStyleChangeThatIsOutsideParagraph(DocPara *para, int nodeIndex)
void HtmlDocVisitor::popEnabled ( )
private

Definition at line 1943 of file htmldocvisitor.cpp.

1944 {
1945  bool *v=m_enabled.pop();
1946  ASSERT(v!=0);
1947  m_hide = *v;
1948  delete v;
1949 }
type * pop()
Definition: qstack.h:59
QStack< bool > m_enabled
#define ASSERT(x)
Definition: qglobal.h:590
void HtmlDocVisitor::pushEnabled ( )
private

Definition at line 1938 of file htmldocvisitor.cpp.

1939 {
1940  m_enabled.push(new bool(m_hide));
1941 }
void push(const type *d)
Definition: qstack.h:58
QStack< bool > m_enabled
void HtmlDocVisitor::startLink ( const QCString ref,
const QCString file,
const QCString relPath,
const QCString anchor,
const QCString tooltip = "" 
)
private

Definition at line 1910 of file htmldocvisitor.cpp.

1913 {
1914  //printf("HtmlDocVisitor: file=%s anchor=%s\n",file.data(),anchor.data());
1915  if (!ref.isEmpty()) // link to entity imported via tag file
1916  {
1917  m_t << "<a class=\"elRef\" ";
1918  m_t << externalLinkTarget() << externalRef(relPath,ref,FALSE);
1919  }
1920  else // local link
1921  {
1922  m_t << "<a class=\"el\" ";
1923  }
1924  m_t << "href=\"";
1925  m_t << externalRef(relPath,ref,TRUE);
1926  if (!file.isEmpty()) m_t << file << Doxygen::htmlFileExtension;
1927  if (!anchor.isEmpty()) m_t << "#" << anchor;
1928  m_t << "\"";
1929  if (!tooltip.isEmpty()) m_t << " title=\"" << convertToHtml(tooltip) << "\"";
1930  m_t << ">";
1931 }
bool isEmpty() const
Definition: qcstring.h:189
static QCString htmlFileExtension
Definition: doxygen.h:130
const bool FALSE
Definition: qglobal.h:370
FTextStream & m_t
QCString convertToHtml(const char *s, bool keepEntities)
Definition: util.cpp:5746
QCString externalLinkTarget()
Definition: util.cpp:7850
const bool TRUE
Definition: qglobal.h:371
QCString externalRef(const QCString &relPath, const QCString &ref, bool href)
Definition: util.cpp:7856
void HtmlDocVisitor::visit ( DocWord w)
virtual

Implements DocVisitor.

Definition at line 161 of file htmldocvisitor.cpp.

162 {
163  //printf("word: %s\n",w->word().data());
164  if (m_hide) return;
165  filter(w->word());
166 }
QCString word() const
Definition: docparser.h:199
void filter(const char *str)
void HtmlDocVisitor::visit ( DocLinkedWord w)
virtual

Implements DocVisitor.

Definition at line 168 of file htmldocvisitor.cpp.

169 {
170  if (m_hide) return;
171  //printf("linked word: %s\n",w->word().data());
172  startLink(w->ref(),w->file(),w->relPath(),w->anchor(),w->tooltip());
173  filter(w->word());
174  endLink();
175 }
QCString ref() const
Definition: docparser.h:219
void startLink(const QCString &ref, const QCString &file, const QCString &relPath, const QCString &anchor, const QCString &tooltip="")
QCString tooltip() const
Definition: docparser.h:221
QCString word() const
Definition: docparser.h:215
void filter(const char *str)
QCString file() const
Definition: docparser.h:217
QCString relPath() const
Definition: docparser.h:218
QCString anchor() const
Definition: docparser.h:220
void HtmlDocVisitor::visit ( DocWhiteSpace w)
virtual

Implements DocVisitor.

Definition at line 177 of file htmldocvisitor.cpp.

178 {
179  if (m_hide) return;
180  if (m_insidePre)
181  {
182  m_t << w->chars();
183  }
184  else
185  {
186  m_t << " ";
187  }
188 }
FTextStream & m_t
QCString chars() const
Definition: docparser.h:434
void HtmlDocVisitor::visit ( DocSymbol s)
virtual

Implements DocVisitor.

Definition at line 190 of file htmldocvisitor.cpp.

191 {
192  if (m_hide) return;
193  const char *res = HtmlEntityMapper::instance()->html(s->symbol());
194  if (res)
195  {
196  m_t << res;
197  }
198  else
199  {
200  err("HTML: non supported HTML-entity found: %s\n",HtmlEntityMapper::instance()->html(s->symbol(),TRUE));
201  }
202 }
static HtmlEntityMapper * instance()
Definition: htmlentity.cpp:341
FTextStream & m_t
const char * html(DocSymbol::SymType symb, bool useInPrintf=FALSE) const
Access routine to the html code of the HTML entity.
Definition: htmlentity.cpp:386
void err(const char *fmt,...)
Definition: message.cpp:226
SymType symbol() const
Definition: docparser.h:418
const bool TRUE
Definition: qglobal.h:371
void HtmlDocVisitor::visit ( DocURL u)
virtual

Implements DocVisitor.

Definition at line 218 of file htmldocvisitor.cpp.

219 {
220  if (m_hide) return;
221  if (u->isEmail()) // mail address
222  {
223  QCString url = u->url();
225  uint size=5,i;
226  for (i=0;i<url.length();)
227  {
228  filter(url.mid(i,size));
229  if (i<url.length()-size) m_t << "<span style=\"display: none;\">.nosp@m.</span>";
230  i+=size;
231  if (size==5) size=4; else size=5;
232  }
233  m_t << "</a>";
234  }
235  else // web address
236  {
237  m_t << "<a href=\"";
238  m_t << u->url() << "\">";
239  filter(u->url());
240  m_t << "</a>";
241  }
242 }
QCString url() const
Definition: docparser.h:239
uint length() const
Definition: qcstring.h:195
bool isEmail() const
Definition: docparser.h:242
decltype(auto) constexpr size(T &&obj)
ADL-aware version of std::size.
Definition: StdUtils.h:92
FTextStream & m_t
void writeObfuscatedMailAddress(const QCString &url)
QCString mid(uint index, uint len=0xffffffff) const
Definition: qcstring.cpp:246
void filter(const char *str)
unsigned uint
Definition: qglobal.h:351
void HtmlDocVisitor::visit ( DocLineBreak )
virtual

Implements DocVisitor.

Definition at line 244 of file htmldocvisitor.cpp.

245 {
246  if (m_hide) return;
247  m_t << "<br />\n";
248 }
FTextStream & m_t
void HtmlDocVisitor::visit ( DocHorRuler hr)
virtual

Implements DocVisitor.

Definition at line 250 of file htmldocvisitor.cpp.

251 {
252  if (m_hide) return;
253  forceEndParagraph(hr);
254  m_t << "<hr/>\n";
256 }
FTextStream & m_t
void forceEndParagraph(DocNode *n)
void forceStartParagraph(DocNode *n)
void HtmlDocVisitor::visit ( DocStyleChange s)
virtual

Implements DocVisitor.

Definition at line 258 of file htmldocvisitor.cpp.

259 {
260  if (m_hide) return;
261  switch (s->style())
262  {
264  if (s->enable()) m_t << "<b" << htmlAttribsToString(s->attribs()) << ">"; else m_t << "</b>";
265  break;
267  if (s->enable()) m_t << "<em" << htmlAttribsToString(s->attribs()) << ">"; else m_t << "</em>";
268  break;
270  if (s->enable()) m_t << "<code" << htmlAttribsToString(s->attribs()) << ">"; else m_t << "</code>";
271  break;
273  if (s->enable()) m_t << "<sub" << htmlAttribsToString(s->attribs()) << ">"; else m_t << "</sub>";
274  break;
276  if (s->enable()) m_t << "<sup" << htmlAttribsToString(s->attribs()) << ">"; else m_t << "</sup>";
277  break;
279  if (s->enable())
280  {
282  m_t << "<center" << htmlAttribsToString(s->attribs()) << ">";
283  }
284  else
285  {
286  m_t << "</center>";
288  }
289  break;
291  if (s->enable()) m_t << "<small" << htmlAttribsToString(s->attribs()) << ">"; else m_t << "</small>";
292  break;
294  if (s->enable())
295  {
297  m_t << "<pre" << htmlAttribsToString(s->attribs()) << ">";
299  }
300  else
301  {
303  m_t << "</pre>";
305  }
306  break;
307  case DocStyleChange::Div:
308  if (s->enable())
309  {
311  m_t << "<div" << htmlAttribsToString(s->attribs()) << ">";
312  }
313  else
314  {
315  m_t << "</div>";
317  }
318  break;
320  if (s->enable()) m_t << "<span" << htmlAttribsToString(s->attribs()) << ">"; else m_t << "</span>";
321  break;
322 
323  }
324 }
const bool FALSE
Definition: qglobal.h:370
FTextStream & m_t
Style style() const
Definition: docparser.h:329
static QString htmlAttribsToString(const HtmlAttribList &attribs)
void forceEndParagraph(DocNode *n)
const HtmlAttribList & attribs() const
Definition: docparser.h:334
bool enable() const
Definition: docparser.h:331
const bool TRUE
Definition: qglobal.h:371
void forceStartParagraph(DocNode *n)
void HtmlDocVisitor::visit ( DocVerbatim s)
virtual

Implements DocVisitor.

Definition at line 353 of file htmldocvisitor.cpp.

354 {
355  if (m_hide) return;
356  QCString lang = m_langExt;
357  if (!s->language().isEmpty()) // explicit language setting
358  {
359  lang = s->language();
360  }
361  SrcLangExt langExt = getLanguageFromFileName(lang);
362  switch(s->type())
363  {
364  case DocVerbatim::Code:
366  m_t << PREFRAG_START;
368  ->parseCode(m_ci,
369  s->context(),
370  s->text(),
371  langExt,
372  s->isExample(),
373  s->exampleFile(),
374  0, // fileDef
375  -1, // startLine
376  -1, // endLine
377  FALSE, // inlineFragment
378  0, // memberDef
379  TRUE, // show line numbers
380  m_ctx // search context
381  );
382  m_t << PREFRAG_END;
384  break;
385  case DocVerbatim::Verbatim:
387  m_t << /*PREFRAG_START <<*/ "<pre class=\"fragment\">";
388  filter(s->text());
389  m_t << "</pre>" /*<< PREFRAG_END*/;
391  break;
392  case DocVerbatim::HtmlOnly:
393  if (s->isBlock()) forceEndParagraph(s);
394  m_t << s->text();
395  if (s->isBlock()) forceStartParagraph(s);
396  break;
397  case DocVerbatim::ManOnly:
399  case DocVerbatim::XmlOnly:
402  /* nothing */
403  break;
404 
405  case DocVerbatim::Dot:
406  {
407  static int dotindex = 1;
408  QCString fileName(4096);
409 
411  fileName.sprintf("%s%d%s",
412  (Config_getString("HTML_OUTPUT")+"/inline_dotgraph_").data(),
413  dotindex++,
414  ".dot"
415  );
417  if (!file.open(IO_WriteOnly))
418  {
419  err("Could not open file %s for writing\n",fileName.data());
420  }
421  else
422  {
423  file.writeBlock( s->text(), s->text().length() );
424  file.close();
425 
426  m_t << "<div align=\"center\">" << endl;
428  visitPreCaption(m_t, s);
429  visitCaption(this, s->children());
430  visitPostCaption(m_t, s);
431  m_t << "</div>" << endl;
432 
433  if (Config_getBool("DOT_CLEANUP")) file.remove();
434  }
436  }
437  break;
438  case DocVerbatim::Msc:
439  {
441 
442  static int mscindex = 1;
443  QCString baseName(4096);
444 
445  baseName.sprintf("%s%d",
446  (Config_getString("HTML_OUTPUT")+"/inline_mscgraph_").data(),
447  mscindex++
448  );
449  QFile file(baseName+".msc");
450  if (!file.open(IO_WriteOnly))
451  {
452  err("Could not open file %s.msc for writing\n",baseName.data());
453  }
454  else
455  {
456  QCString text = "msc {";
457  text+=s->text();
458  text+="}";
459 
460  file.writeBlock( text, text.length() );
461  file.close();
462 
463  m_t << "<div align=\"center\">" << endl;
464  writeMscFile(baseName+".msc",s->relPath(),s->context());
465  visitPreCaption(m_t, s);
466  visitCaption(this, s->children());
467  visitPostCaption(m_t, s);
468  m_t << "</div>" << endl;
469 
470  if (Config_getBool("DOT_CLEANUP")) file.remove();
471  }
473  }
474  break;
476  {
478 
479  static QCString htmlOutput = Config_getString("HTML_OUTPUT");
480  QCString baseName = writePlantUMLSource(htmlOutput,s->exampleFile(),s->text());
481  m_t << "<div align=\"center\">" << endl;
482  writePlantUMLFile(baseName,s->relPath(),s->context());
483  visitPreCaption(m_t, s);
484  visitCaption(this, s->children());
485  visitPostCaption(m_t, s);
486  m_t << "</div>" << endl;
488  }
489  break;
490  }
491 }
QCString exampleFile() const
Definition: docparser.h:454
ParserInterface * getParser(const char *extension)
Definition: parserintf.h:191
void writePlantUMLFile(const QCString &fileName, const QCString &relPath, const QCString &context)
CodeOutputInterface & m_ci
bool isEmpty() const
Definition: qcstring.h:189
uint length() const
Definition: qcstring.h:195
#define IO_WriteOnly
Definition: qiodevice.h:62
static void visitPreCaption(FTextStream &t, DocVerbatim *s)
const bool FALSE
Definition: qglobal.h:370
static void visitPostCaption(FTextStream &t, DocVerbatim *s)
QCString writePlantUMLSource(const QCString &outDir, const QCString &fileName, const QCString &content)
Definition: plantuml.cpp:25
QCString m_langExt
#define PREFRAG_END
Definition: htmlgen.h:27
SrcLangExt
Definition: types.h:41
bool isExample() const
Definition: docparser.h:453
static ParserManager * parserManager
Definition: doxygen.h:141
#define PREFRAG_START
Definition: htmlgen.h:26
QCString text() const
Definition: docparser.h:450
fileName
Definition: dumpTree.py:9
FTextStream & m_t
const QList< DocNode > & children() const
Definition: docparser.h:461
const char * data() const
Definition: qcstring.h:207
#define Config_getString(val)
Definition: config.cpp:660
#define Config_getBool(val)
Definition: config.cpp:664
bool isBlock() const
Definition: docparser.h:457
void err(const char *fmt,...)
Definition: message.cpp:226
QCString relPath() const
Definition: docparser.h:455
QCString language() const
Definition: docparser.h:456
The QFile class is an I/O device that operates on files.
Definition: qfile.h:50
QCString & sprintf(const char *format,...)
Definition: qcstring.cpp:27
void filter(const char *str)
void forceEndParagraph(DocNode *n)
static void visitCaption(HtmlDocVisitor *parent, QList< DocNode > children)
QCString context() const
Definition: docparser.h:451
SrcLangExt getLanguageFromFileName(const QCString fileName)
Definition: util.cpp:7061
Definition * m_ctx
static QCString baseName
Definition: scanner.cpp:10890
void writeDotFile(const QCString &fileName, const QCString &relPath, const QCString &context)
Type type() const
Definition: docparser.h:449
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 bool TRUE
Definition: qglobal.h:371
void forceStartParagraph(DocNode *n)
QTextStream & endl(QTextStream &s)
void writeMscFile(const QCString &fileName, const QCString &relPath, const QCString &context)
void HtmlDocVisitor::visit ( DocAnchor anc)
virtual

Implements DocVisitor.

Definition at line 493 of file htmldocvisitor.cpp.

494 {
495  if (m_hide) return;
496  m_t << "<a class=\"anchor\" id=\"" << anc->anchor() << "\"></a>";
497 }
QCString anchor() const
Definition: docparser.h:277
FTextStream & m_t
void HtmlDocVisitor::visit ( DocInclude inc)
virtual

Implements DocVisitor.

Definition at line 499 of file htmldocvisitor.cpp.

500 {
501  if (m_hide) return;
502  SrcLangExt langExt = getLanguageFromFileName(inc->extension());
503  switch(inc->type())
504  {
505  case DocInclude::Include:
506  forceEndParagraph(inc);
507  m_t << PREFRAG_START;
509  ->parseCode(m_ci,
510  inc->context(),
511  inc->text(),
512  langExt,
513  inc->isExample(),
514  inc->exampleFile(),
515  0, // fileDef
516  -1, // startLine
517  -1, // endLine
518  TRUE, // inlineFragment
519  0, // memberDef
520  FALSE, // show line numbers
521  m_ctx // search context
522  );
523  m_t << PREFRAG_END;
524  forceStartParagraph(inc);
525  break;
527  {
528  forceEndParagraph(inc);
529  m_t << PREFRAG_START;
530  QFileInfo cfi( inc->file() );
531  FileDef fd( cfi.dirPath().utf8(), cfi.fileName().utf8() );
533  ->parseCode(m_ci,
534  inc->context(),
535  inc->text(),
536  langExt,
537  inc->isExample(),
538  inc->exampleFile(),
539  &fd, // fileDef,
540  -1, // start line
541  -1, // end line
542  FALSE, // inline fragment
543  0, // memberDef
544  TRUE, // show line numbers
545  m_ctx // search context
546  );
547  m_t << PREFRAG_END;
548  forceStartParagraph(inc);
549  }
550  break;
552  break;
554  m_t << inc->text();
555  break;
557  break;
559  forceEndParagraph(inc);
560  m_t << /*PREFRAG_START <<*/ "<pre class=\"fragment\">";
561  filter(inc->text());
562  m_t << "</pre>" /*<< PREFRAG_END*/;
563  forceStartParagraph(inc);
564  break;
565  case DocInclude::Snippet:
566  {
567  forceEndParagraph(inc);
568  m_t << PREFRAG_START;
570  ->parseCode(m_ci,
571  inc->context(),
572  extractBlock(inc->text(),inc->blockId()),
573  langExt,
574  inc->isExample(),
575  inc->exampleFile(),
576  0,
577  -1, // startLine
578  -1, // endLine
579  TRUE, // inlineFragment
580  0, // memberDef
581  TRUE, // show line number
582  m_ctx // search context
583  );
584  m_t << PREFRAG_END;
585  forceStartParagraph(inc);
586  }
587  break;
588  }
589 }
ParserInterface * getParser(const char *extension)
Definition: parserintf.h:191
CodeOutputInterface & m_ci
static TemplateVariant parseCode(MemberDef *md, const QCString &scopeName, const QCString &relPath, const QCString &code, int startLine=-1, int endLine=-1, bool showLineNumbers=FALSE)
Definition: context.cpp:1266
QCString blockId() const
Definition: docparser.h:505
QCString text() const
Definition: docparser.h:503
const bool FALSE
Definition: qglobal.h:370
#define PREFRAG_END
Definition: htmlgen.h:27
Type type() const
Definition: docparser.h:502
SrcLangExt
Definition: types.h:41
QCString extractBlock(const QCString text, const QCString marker)
Definition: util.cpp:7998
static ParserManager * parserManager
Definition: doxygen.h:141
#define PREFRAG_START
Definition: htmlgen.h:26
FTextStream & m_t
bool isExample() const
Definition: docparser.h:506
void filter(const char *str)
void forceEndParagraph(DocNode *n)
QCString file() const
Definition: docparser.h:495
SrcLangExt getLanguageFromFileName(const QCString fileName)
Definition: util.cpp:7061
Definition * m_ctx
QCString exampleFile() const
Definition: docparser.h:507
QCString context() const
Definition: docparser.h:504
QCString extension() const
Definition: docparser.h:496
The QFileInfo class provides system-independent file information.
Definition: qfileinfo.h:51
const bool TRUE
Definition: qglobal.h:371
void forceStartParagraph(DocNode *n)
void HtmlDocVisitor::visit ( DocIncOperator op)
virtual

Implements DocVisitor.

Definition at line 591 of file htmldocvisitor.cpp.

592 {
593  //printf("DocIncOperator: type=%d first=%d, last=%d text=`%s'\n",
594  // op->type(),op->isFirst(),op->isLast(),op->text().data());
595  if (op->isFirst())
596  {
597  if (!m_hide) m_t << PREFRAG_START;
598  pushEnabled();
599  m_hide=TRUE;
600  }
602  if (op->type()!=DocIncOperator::Skip)
603  {
604  popEnabled();
605  if (!m_hide)
606  {
608  ->parseCode(
609  m_ci,
610  op->context(),
611  op->text(),
612  langExt,
613  op->isExample(),
614  op->exampleFile(),
615  0, // fileDef
616  -1, // startLine
617  -1, // endLine
618  FALSE, // inline fragment
619  0, // memberDef
620  TRUE, // show line numbers
621  m_ctx // search context
622  );
623  }
624  pushEnabled();
625  m_hide=TRUE;
626  }
627  if (op->isLast())
628  {
629  popEnabled();
630  if (!m_hide) m_t << PREFRAG_END;
631  }
632  else
633  {
634  if (!m_hide) m_t << endl;
635  }
636 }
Type type() const
Definition: docparser.h:532
ParserInterface * getParser(const char *extension)
Definition: parserintf.h:191
CodeOutputInterface & m_ci
bool isFirst() const
Definition: docparser.h:537
const bool FALSE
Definition: qglobal.h:370
QCString m_langExt
#define PREFRAG_END
Definition: htmlgen.h:27
SrcLangExt
Definition: types.h:41
QCString exampleFile() const
Definition: docparser.h:542
static ParserManager * parserManager
Definition: doxygen.h:141
#define PREFRAG_START
Definition: htmlgen.h:26
FTextStream & m_t
bool isExample() const
Definition: docparser.h:541
QCString context() const
Definition: docparser.h:535
QCString text() const
Definition: docparser.h:533
bool isLast() const
Definition: docparser.h:538
SrcLangExt getLanguageFromFileName(const QCString fileName)
Definition: util.cpp:7061
Definition * m_ctx
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 bool TRUE
Definition: qglobal.h:371
QTextStream & endl(QTextStream &s)
void HtmlDocVisitor::visit ( DocFormula f)
virtual

Implements DocVisitor.

Definition at line 638 of file htmldocvisitor.cpp.

639 {
640  if (m_hide) return;
641  bool bDisplay = !f->isInline();
642  if (bDisplay)
643  {
645  m_t << "<p class=\"formulaDsp\">" << endl;
646  }
647 
648  if (Config_getBool("USE_MATHJAX"))
649  {
650  QCString text = f->text();
651  bool closeInline = FALSE;
652  if (!bDisplay && !text.isEmpty() && text.at(0)=='$' &&
653  text.at(text.length()-1)=='$')
654  {
655  closeInline=TRUE;
656  text = text.mid(1,text.length()-2);
657  m_t << "\\(";
658  }
659  m_t << convertToHtml(text);
660  if (closeInline)
661  {
662  m_t << "\\)";
663  }
664  }
665  else
666  {
667  m_t << "<img class=\"formula"
668  << (bDisplay ? "Dsp" : "Inl");
669  m_t << "\" alt=\"";
671  m_t << "\"";
672  // TODO: cache image dimensions on formula generation and give height/width
673  // for faster preloading and better rendering of the page
674  m_t << " src=\"" << f->relPath() << f->name() << ".png\"/>";
675 
676  }
677  if (bDisplay)
678  {
679  m_t << endl << "</p>" << endl;
681  }
682 }
bool isEmpty() const
Definition: qcstring.h:189
QCString relPath() const
Definition: docparser.h:564
uint length() const
Definition: qcstring.h:195
char & at(uint i) const
Definition: qcstring.h:326
const bool FALSE
Definition: qglobal.h:370
QCString text() const
Definition: docparser.h:563
FTextStream & m_t
QCString convertToHtml(const char *s, bool keepEntities)
Definition: util.cpp:5746
#define Config_getBool(val)
Definition: config.cpp:664
bool isInline()
Definition: docparser.h:567
QCString mid(uint index, uint len=0xffffffff) const
Definition: qcstring.cpp:246
void forceEndParagraph(DocNode *n)
void filterQuotedCdataAttr(const char *str)
const bool TRUE
Definition: qglobal.h:371
void forceStartParagraph(DocNode *n)
QTextStream & endl(QTextStream &s)
QCString name() const
Definition: docparser.h:562
void HtmlDocVisitor::visit ( DocIndexEntry e)
virtual

Implements DocVisitor.

Definition at line 684 of file htmldocvisitor.cpp.

685 {
686  QCString anchor = convertIndexWordToAnchor(e->entry());
687  if (e->member())
688  {
689  anchor.prepend(e->member()->anchor()+"_");
690  }
691  m_t << "<a name=\"" << anchor << "\"></a>";
692  //printf("*** DocIndexEntry: word='%s' scope='%s' member='%s'\n",
693  // e->entry().data(),
694  // e->scope() ? e->scope()->name().data() : "<null>",
695  // e->member() ? e->member()->name().data() : "<null>"
696  // );
697  Doxygen::indexList->addIndexItem(e->scope(),e->member(),anchor,e->entry());
698 }
MemberDef * member() const
Definition: docparser.h:585
Definition * scope() const
Definition: docparser.h:584
static QCString convertIndexWordToAnchor(const QString &word)
void addIndexItem(Definition *context, MemberDef *md, const char *sectionAnchor=0, const char *title=0)
Definition: index.h:142
FTextStream & m_t
QCString & prepend(const char *s)
Definition: qcstring.cpp:387
QCString anchor() const
Definition: memberdef.cpp:1031
QCString entry() const
Definition: docparser.h:586
static IndexList * indexList
Definition: doxygen.h:149
void HtmlDocVisitor::visit ( DocSimpleSectSep )
virtual

Implements DocVisitor.

Definition at line 700 of file htmldocvisitor.cpp.

701 {
702  m_t << "</dd>" << endl;
703  m_t << "<dd>" << endl;
704 }
FTextStream & m_t
QTextStream & endl(QTextStream &s)
void HtmlDocVisitor::visit ( DocCite cite)
virtual

Implements DocVisitor.

Definition at line 706 of file htmldocvisitor.cpp.

707 {
708  if (m_hide) return;
709  if (!cite->file().isEmpty())
710  {
711  startLink(cite->ref(),cite->file(),cite->relPath(),cite->anchor());
712  }
713  else
714  {
715  m_t << "<b>[";
716  }
717  filter(cite->text());
718  if (!cite->file().isEmpty())
719  {
720  endLink();
721  }
722  else
723  {
724  m_t << "]</b>";
725  }
726 }
QCString text() const
Definition: docparser.h:296
bool isEmpty() const
Definition: qcstring.h:189
void startLink(const QCString &ref, const QCString &file, const QCString &relPath, const QCString &anchor, const QCString &tooltip="")
QCString ref() const
Definition: docparser.h:294
QCString file() const
Definition: docparser.h:292
FTextStream & m_t
void filter(const char *str)
QCString anchor() const
Definition: docparser.h:295
QCString relPath() const
Definition: docparser.h:293
void HtmlDocVisitor::visitPost ( DocAutoList l)
virtual

Implements DocVisitor.

Definition at line 758 of file htmldocvisitor.cpp.

759 {
760  //printf("DocAutoList::visitPost\n");
761  if (m_hide) return;
762  if (l->isEnumList())
763  {
764  m_t << "</ol>";
765  }
766  else
767  {
768  m_t << "</ul>";
769  }
770  if (!l->isPreformatted()) m_t << "\n";
772 }
FTextStream & m_t
bool isEnumList() const
Definition: docparser.h:621
bool isPreformatted() const
Definition: docparser.h:158
void forceStartParagraph(DocNode *n)
void HtmlDocVisitor::visitPost ( DocAutoListItem li)
virtual

Implements DocVisitor.

Definition at line 780 of file htmldocvisitor.cpp.

781 {
782  if (m_hide) return;
783  m_t << "</li>";
784  if (!li->isPreformatted()) m_t << "\n";
785 }
FTextStream & m_t
bool isPreformatted() const
Definition: docparser.h:158
void HtmlDocVisitor::visitPost ( DocPara p)
virtual

Implements DocVisitor.

Definition at line 1036 of file htmldocvisitor.cpp.

1037 {
1038  bool needsTag = FALSE;
1039  if (p->parent())
1040  {
1041  switch (p->parent()->kind())
1042  {
1043  case DocNode::Kind_Section:
1052  case DocNode::Kind_Copy:
1055  needsTag = TRUE;
1056  break;
1057  case DocNode::Kind_Root:
1058  needsTag = !((DocRoot*)p->parent())->singleLine();
1059  break;
1060  default:
1061  needsTag = FALSE;
1062  }
1063  }
1064 
1065  // if the last element of a paragraph is something that should be outside of
1066  // the paragraph (<ul>,<dl>,<table>) then that will already have ended the
1067  // paragraph and we don't need to do it here
1068  int nodeIndex = p->children().count()-1;
1069  if (nodeIndex>=0)
1070  {
1071  while (nodeIndex>=0 && p->children().at(nodeIndex)->kind()==DocNode::Kind_WhiteSpace)
1072  {
1073  nodeIndex--;
1074  }
1075  if (nodeIndex>=0)
1076  {
1077  DocNode *n = p->children().at(nodeIndex);
1078  if (mustBeOutsideParagraph(n))
1079  {
1080  needsTag = FALSE;
1081  }
1082  }
1083  }
1084 
1085  bool isFirst;
1086  bool isLast;
1087  getParagraphContext(p,isFirst,isLast);
1088  //printf("endPara first=%d last=%d\n",isFirst,isLast);
1089  if (isFirst && isLast) needsTag=FALSE;
1090 
1091  //printf("DocPara::visitPost needsTag=%d\n",needsTag);
1092 
1093  if (needsTag) m_t << "</p>\n";
1094 
1095 }
DocNode * parent() const
Definition: docparser.h:147
const bool FALSE
Definition: qglobal.h:370
type * at(uint i) const
Definition: qlist.h:94
virtual Kind kind() const =0
uint count() const
Definition: qlist.h:66
FTextStream & m_t
std::void_t< T > n
static bool mustBeOutsideParagraph(DocNode *n)
static int getParagraphContext(DocPara *p, bool &isFirst, bool &isLast)
const bool TRUE
Definition: qglobal.h:371
const QList< DocNode > & children() const
Definition: docparser.h:185
void HtmlDocVisitor::visitPost ( DocRoot )
virtual

Implements DocVisitor.

Definition at line 1101 of file htmldocvisitor.cpp.

1102 {
1103 }
void HtmlDocVisitor::visitPost ( DocSimpleSect s)
virtual

Implements DocVisitor.

Definition at line 1154 of file htmldocvisitor.cpp.

1155 {
1156  if (m_hide) return;
1157  m_t << "</dd></dl>\n";
1159 }
FTextStream & m_t
void forceStartParagraph(DocNode *n)
void HtmlDocVisitor::visitPost ( DocTitle )
virtual

Implements DocVisitor.

Definition at line 1165 of file htmldocvisitor.cpp.

1166 {
1167  if (m_hide) return;
1168  m_t << "</dt><dd>";
1169 }
FTextStream & m_t
void HtmlDocVisitor::visitPost ( DocSimpleList sl)
virtual

Implements DocVisitor.

Definition at line 1180 of file htmldocvisitor.cpp.

1181 {
1182  if (m_hide) return;
1183  m_t << "</ul>";
1184  if (!sl->isPreformatted()) m_t << "\n";
1185  forceStartParagraph(sl);
1186 }
FTextStream & m_t
bool isPreformatted() const
Definition: docparser.h:158
void forceStartParagraph(DocNode *n)
void HtmlDocVisitor::visitPost ( DocSimpleListItem li)
virtual

Implements DocVisitor.

Definition at line 1194 of file htmldocvisitor.cpp.

1195 {
1196  if (m_hide) return;
1197  m_t << "</li>";
1198  if (!li->isPreformatted()) m_t << "\n";
1199 }
FTextStream & m_t
bool isPreformatted() const
Definition: docparser.h:158
void HtmlDocVisitor::visitPost ( DocSection s)
virtual

Implements DocVisitor.

Definition at line 1212 of file htmldocvisitor.cpp.

1213 {
1215 }
void forceStartParagraph(DocNode *n)
void HtmlDocVisitor::visitPost ( DocHtmlList s)
virtual

Implements DocVisitor.

Definition at line 1231 of file htmldocvisitor.cpp.

1232 {
1233  if (m_hide) return;
1234  if (s->type()==DocHtmlList::Ordered)
1235  {
1236  m_t << "</ol>";
1237  }
1238  else
1239  {
1240  m_t << "</ul>";
1241  }
1242  if (!s->isPreformatted()) m_t << "\n";
1244 }
Type type() const
Definition: docparser.h:1034
FTextStream & m_t
bool isPreformatted() const
Definition: docparser.h:158
void forceStartParagraph(DocNode *n)
void HtmlDocVisitor::visitPost ( DocHtmlListItem )
virtual

Implements DocVisitor.

Definition at line 1253 of file htmldocvisitor.cpp.

1254 {
1255  if (m_hide) return;
1256  m_t << "</li>\n";
1257 }
FTextStream & m_t
void HtmlDocVisitor::visitPost ( DocHtmlDescList dl)
virtual

Implements DocVisitor.

Definition at line 1266 of file htmldocvisitor.cpp.

1267 {
1268  if (m_hide) return;
1269  m_t << "</dl>\n";
1270  forceStartParagraph(dl);
1271 }
FTextStream & m_t
void forceStartParagraph(DocNode *n)
void HtmlDocVisitor::visitPost ( DocHtmlDescTitle )
virtual

Implements DocVisitor.

Definition at line 1279 of file htmldocvisitor.cpp.

1280 {
1281  if (m_hide) return;
1282  m_t << "</dt>\n";
1283 }
FTextStream & m_t
void HtmlDocVisitor::visitPost ( DocHtmlDescData )
virtual

Implements DocVisitor.

Definition at line 1291 of file htmldocvisitor.cpp.

1292 {
1293  if (m_hide) return;
1294  m_t << "</dd>\n";
1295 }
FTextStream & m_t
void HtmlDocVisitor::visitPost ( DocHtmlTable t)
virtual

Implements DocVisitor.

Definition at line 1319 of file htmldocvisitor.cpp.

1320 {
1321  if (m_hide) return;
1322  m_t << "</table>\n";
1324 }
FTextStream & m_t
void forceStartParagraph(DocNode *n)
void HtmlDocVisitor::visitPost ( DocHtmlRow )
virtual

Implements DocVisitor.

Definition at line 1332 of file htmldocvisitor.cpp.

1333 {
1334  if (m_hide) return;
1335  m_t << "</tr>\n";
1336 }
FTextStream & m_t
void HtmlDocVisitor::visitPost ( DocHtmlCell c)
virtual

Implements DocVisitor.

Definition at line 1351 of file htmldocvisitor.cpp.

1352 {
1353  if (m_hide) return;
1354  if (c->isHeading()) m_t << "</th>"; else m_t << "</td>";
1355 }
FTextStream & m_t
bool isHeading() const
Definition: docparser.h:1260
void HtmlDocVisitor::visitPost ( DocHtmlCaption )
virtual

Implements DocVisitor.

Definition at line 1367 of file htmldocvisitor.cpp.

1368 {
1369  if (m_hide) return;
1370  m_t << "</caption>\n";
1371 }
FTextStream & m_t
void HtmlDocVisitor::visitPost ( DocInternal )
virtual

Implements DocVisitor.

Definition at line 1380 of file htmldocvisitor.cpp.

1381 {
1382  if (m_hide) return;
1383  //forceStartParagraph(i);
1384 }
void HtmlDocVisitor::visitPost ( DocHRef )
virtual

Implements DocVisitor.

Definition at line 1401 of file htmldocvisitor.cpp.

1402 {
1403  if (m_hide) return;
1404  m_t << "</a>";
1405 }
FTextStream & m_t
void HtmlDocVisitor::visitPost ( DocHtmlHeader header)
virtual

Implements DocVisitor.

Definition at line 1415 of file htmldocvisitor.cpp.

1416 {
1417  if (m_hide) return;
1418  m_t << "</h" << header->level() << ">\n";
1419  forceStartParagraph(header);
1420 }
int level() const
Definition: docparser.h:894
FTextStream & m_t
void forceStartParagraph(DocNode *n)
void HtmlDocVisitor::visitPost ( DocImage img)
virtual

Implements DocVisitor.

Definition at line 1460 of file htmldocvisitor.cpp.

1461 {
1462  if (img->type()==DocImage::Html)
1463  {
1464  if (m_hide) return;
1465  if (img->hasCaption())
1466  {
1467  m_t << "</div>";
1468  }
1469  m_t << "</div>" << endl;
1470  forceStartParagraph(img);
1471  }
1472  else // other format
1473  {
1474  popEnabled();
1475  }
1476 }
FTextStream & m_t
bool hasCaption() const
Definition: docparser.h:696
Type type() const
Definition: docparser.h:694
void forceStartParagraph(DocNode *n)
QTextStream & endl(QTextStream &s)
void HtmlDocVisitor::visitPost ( DocDotFile df)
virtual

Implements DocVisitor.

Definition at line 1489 of file htmldocvisitor.cpp.

1490 {
1491  if (m_hide) return;
1492  if (df->hasCaption())
1493  {
1494  m_t << "</div>" << endl;
1495  }
1496  m_t << "</div>" << endl;
1497 }
FTextStream & m_t
bool hasCaption() const
Definition: docparser.h:725
QTextStream & endl(QTextStream &s)
void HtmlDocVisitor::visitPost ( DocMscFile df)
virtual

Implements DocVisitor.

Definition at line 1509 of file htmldocvisitor.cpp.

1510 {
1511  if (m_hide) return;
1512  if (df->hasCaption())
1513  {
1514  m_t << "</div>" << endl;
1515  }
1516  m_t << "</div>" << endl;
1517 }
FTextStream & m_t
bool hasCaption() const
Definition: docparser.h:749
QTextStream & endl(QTextStream &s)
void HtmlDocVisitor::visitPost ( DocDiaFile df)
virtual

Implements DocVisitor.

Definition at line 1529 of file htmldocvisitor.cpp.

1530 {
1531  if (m_hide) return;
1532  if (df->hasCaption())
1533  {
1534  m_t << "</div>" << endl;
1535  }
1536  m_t << "</div>" << endl;
1537 }
bool hasCaption() const
Definition: docparser.h:773
FTextStream & m_t
QTextStream & endl(QTextStream &s)
void HtmlDocVisitor::visitPost ( DocLink )
virtual

Implements DocVisitor.

Definition at line 1545 of file htmldocvisitor.cpp.

1546 {
1547  if (m_hide) return;
1548  endLink();
1549 }
void HtmlDocVisitor::visitPost ( DocRef ref)
virtual

Implements DocVisitor.

Definition at line 1563 of file htmldocvisitor.cpp.

1564 {
1565  if (m_hide) return;
1566  if (!ref->file().isEmpty()) endLink();
1567  //m_t << " ";
1568 }
bool isEmpty() const
Definition: qcstring.h:189
QCString file() const
Definition: docparser.h:827
void HtmlDocVisitor::visitPost ( DocSecRefItem )
virtual

Implements DocVisitor.

Definition at line 1583 of file htmldocvisitor.cpp.

1584 {
1585  if (m_hide) return;
1586  m_t << "</a></li>\n";
1587 }
FTextStream & m_t
void HtmlDocVisitor::visitPost ( DocSecRefList s)
virtual

Implements DocVisitor.

Definition at line 1597 of file htmldocvisitor.cpp.

1598 {
1599  if (m_hide) return;
1600  m_t << "</ul>" << endl;
1601  m_t << "</div>" << endl;
1603 }
FTextStream & m_t
void forceStartParagraph(DocNode *n)
QTextStream & endl(QTextStream &s)
void HtmlDocVisitor::visitPost ( DocParamSect s)
virtual

Implements DocVisitor.

Definition at line 1657 of file htmldocvisitor.cpp.

1658 {
1659  if (m_hide) return;
1660  m_t << " </table>" << endl;
1661  m_t << " </dd>" << endl;
1662  m_t << "</dl>" << endl;
1664 }
FTextStream & m_t
void forceStartParagraph(DocNode *n)
QTextStream & endl(QTextStream &s)
void HtmlDocVisitor::visitPost ( DocParamList )
virtual

Implements DocVisitor.

Definition at line 1739 of file htmldocvisitor.cpp.

1740 {
1741  //printf("DocParamList::visitPost\n");
1742  if (m_hide) return;
1743  m_t << "</td></tr>" << endl;
1744 }
FTextStream & m_t
QTextStream & endl(QTextStream &s)
void HtmlDocVisitor::visitPost ( DocXRefItem x)
virtual

Implements DocVisitor.

Definition at line 1769 of file htmldocvisitor.cpp.

1770 {
1771  if (m_hide) return;
1772  if (x->title().isEmpty()) return;
1773  m_t << "</dd></dl>" << endl;
1775 }
bool isEmpty() const
Definition: qcstring.h:189
FTextStream & m_t
QCString title() const
Definition: docparser.h:671
void forceStartParagraph(DocNode *n)
QTextStream & endl(QTextStream &s)
void HtmlDocVisitor::visitPost ( DocInternalRef )
virtual

Implements DocVisitor.

Definition at line 1783 of file htmldocvisitor.cpp.

1784 {
1785  if (m_hide) return;
1786  endLink();
1787  m_t << " ";
1788 }
FTextStream & m_t
void HtmlDocVisitor::visitPost ( DocCopy )
virtual

Implements DocVisitor.

Definition at line 1794 of file htmldocvisitor.cpp.

1795 {
1796 }
void HtmlDocVisitor::visitPost ( DocText )
virtual

Implements DocVisitor.

Definition at line 1802 of file htmldocvisitor.cpp.

1803 {
1804 }
void HtmlDocVisitor::visitPost ( DocHtmlBlockQuote b)
virtual

Implements DocVisitor.

Definition at line 1821 of file htmldocvisitor.cpp.

1822 {
1823  if (m_hide) return;
1824  m_t << "</blockquote>" << endl;
1826 }
FTextStream & m_t
void forceStartParagraph(DocNode *n)
QTextStream & endl(QTextStream &s)
void HtmlDocVisitor::visitPost ( DocVhdlFlow vf)
virtual

Implements DocVisitor.

Definition at line 1849 of file htmldocvisitor.cpp.

1850 {
1851  if (m_hide) return;
1852  if (VhdlDocGen::getFlowMember()) // use VHDL flow chart creator
1853  {
1854  m_t << "</p>";
1855  forceStartParagraph(vf);
1856  }
1857 }
static const MemberDef * getFlowMember()
Definition: vhdldocgen.cpp:95
FTextStream & m_t
void forceStartParagraph(DocNode *n)
void HtmlDocVisitor::visitPost ( DocParBlock )
virtual

Implements DocVisitor.

Definition at line 1864 of file htmldocvisitor.cpp.

1865 {
1866  if (m_hide) return;
1867 }
void HtmlDocVisitor::visitPre ( DocAutoList l)
virtual

Implements DocVisitor.

Definition at line 734 of file htmldocvisitor.cpp.

735 {
736  //printf("DocAutoList::visitPre\n");
737  if (m_hide) return;
739  if (l->isEnumList())
740  {
741  //
742  // Do list type based on depth:
743  // 1.
744  // a.
745  // i.
746  // A.
747  // 1. (repeat)...
748  //
749  m_t << "<ol type=\"" << types[l->depth() % NUM_HTML_LIST_TYPES] << "\">";
750  }
751  else
752  {
753  m_t << "<ul>";
754  }
755  if (!l->isPreformatted()) m_t << "\n";
756 }
FTextStream & m_t
void forceEndParagraph(DocNode *n)
static const int NUM_HTML_LIST_TYPES
static const char types[][NUM_HTML_LIST_TYPES]
bool isEnumList() const
Definition: docparser.h:621
bool isPreformatted() const
Definition: docparser.h:158
int depth() const
Definition: docparser.h:623
void HtmlDocVisitor::visitPre ( DocAutoListItem )
virtual

Implements DocVisitor.

Definition at line 774 of file htmldocvisitor.cpp.

775 {
776  if (m_hide) return;
777  m_t << "<li>";
778 }
FTextStream & m_t
void HtmlDocVisitor::visitPre ( DocPara p)
virtual

Implements DocVisitor.

Definition at line 957 of file htmldocvisitor.cpp.

958 {
959  if (m_hide) return;
960 
961  //printf("DocPara::visitPre: parent of kind %d ",
962  // p->parent() ? p->parent()->kind() : -1);
963 
964  bool needsTag = FALSE;
965  if (p && p->parent())
966  {
967  switch (p->parent()->kind())
968  {
978  case DocNode::Kind_Copy:
981  needsTag = TRUE;
982  break;
983  case DocNode::Kind_Root:
984  needsTag = !((DocRoot*)p->parent())->singleLine();
985  break;
986  default:
987  needsTag = FALSE;
988  }
989  }
990 
991  // if the first element of a paragraph is something that should be outside of
992  // the paragraph (<ul>,<dl>,<table>,..) then that will already started the
993  // paragraph and we don't need to do it here
994  uint nodeIndex = 0;
995  if (p && nodeIndex<p->children().count())
996  {
997  while (nodeIndex<p->children().count() &&
998  p->children().at(nodeIndex)->kind()==DocNode::Kind_WhiteSpace)
999  {
1000  nodeIndex++;
1001  }
1002  if (nodeIndex<p->children().count())
1003  {
1004  DocNode *n = p->children().at(nodeIndex);
1005  if (mustBeOutsideParagraph(n))
1006  {
1007  needsTag = FALSE;
1008  }
1009  }
1010  }
1011 
1012  // check if this paragraph is the first or last child of a <li> or <dd>.
1013  // this allows us to mark the tag with a special class so we can
1014  // fix the otherwise ugly spacing.
1015  int t;
1016  static const char *contexts[7] =
1017  { "", // 0
1018  " class=\"startli\"", // 1
1019  " class=\"startdd\"", // 2
1020  " class=\"endli\"", // 3
1021  " class=\"enddd\"", // 4
1022  " class=\"starttd\"", // 5
1023  " class=\"endtd\"" // 6
1024  };
1025  bool isFirst;
1026  bool isLast;
1027  t = getParagraphContext(p,isFirst,isLast);
1028  //printf("startPara first=%d last=%d\n",isFirst,isLast);
1029  if (isFirst && isLast) needsTag=FALSE;
1030 
1031  //printf(" needsTag=%d\n",needsTag);
1032  // write the paragraph tag (if needed)
1033  if (needsTag) m_t << "<p" << contexts[t] << ">";
1034 }
DocNode * parent() const
Definition: docparser.h:147
const bool FALSE
Definition: qglobal.h:370
type * at(uint i) const
Definition: qlist.h:94
virtual Kind kind() const =0
FTextStream & m_t
std::void_t< T > n
static bool mustBeOutsideParagraph(DocNode *n)
static int getParagraphContext(DocPara *p, bool &isFirst, bool &isLast)
unsigned uint
Definition: qglobal.h:351
const bool TRUE
Definition: qglobal.h:371
const QList< DocNode > & children() const
Definition: docparser.h:185
void HtmlDocVisitor::visitPre ( DocRoot )
virtual

Implements DocVisitor.

Definition at line 1097 of file htmldocvisitor.cpp.

1098 {
1099 }
void HtmlDocVisitor::visitPre ( DocSimpleSect s)
virtual

Implements DocVisitor.

Definition at line 1105 of file htmldocvisitor.cpp.

1106 {
1107  if (m_hide) return;
1108  forceEndParagraph(s);
1109  m_t << "<dl class=\"section " << s->typeString() << "\"><dt>";
1110  switch(s->type())
1111  {
1112  case DocSimpleSect::See:
1113  m_t << theTranslator->trSeeAlso(); break;
1114  case DocSimpleSect::Return:
1115  m_t << theTranslator->trReturns(); break;
1116  case DocSimpleSect::Author:
1117  m_t << theTranslator->trAuthor(TRUE,TRUE); break;
1118  case DocSimpleSect::Authors:
1119  m_t << theTranslator->trAuthor(TRUE,FALSE); break;
1120  case DocSimpleSect::Version:
1121  m_t << theTranslator->trVersion(); break;
1122  case DocSimpleSect::Since:
1123  m_t << theTranslator->trSince(); break;
1124  case DocSimpleSect::Date:
1125  m_t << theTranslator->trDate(); break;
1126  case DocSimpleSect::Note:
1127  m_t << theTranslator->trNote(); break;
1129  m_t << theTranslator->trWarning(); break;
1130  case DocSimpleSect::Pre:
1131  m_t << theTranslator->trPrecondition(); break;
1132  case DocSimpleSect::Post:
1133  m_t << theTranslator->trPostcondition(); break;
1135  m_t << theTranslator->trCopyright(); break;
1136  case DocSimpleSect::Invar:
1137  m_t << theTranslator->trInvariant(); break;
1138  case DocSimpleSect::Remark:
1139  m_t << theTranslator->trRemarks(); break;
1141  m_t << theTranslator->trAttention(); break;
1142  case DocSimpleSect::User: break;
1143  case DocSimpleSect::Rcs: break;
1144  case DocSimpleSect::Unknown: break;
1145  }
1146 
1147  // special case 1: user defined title
1148  if (s->type()!=DocSimpleSect::User && s->type()!=DocSimpleSect::Rcs)
1149  {
1150  m_t << "</dt><dd>";
1151  }
1152 }
virtual QCString trPrecondition()=0
virtual QCString trSince()=0
virtual QCString trAttention()=0
QCString typeString() const
Definition: docparser.cpp:4622
virtual QCString trInvariant()=0
virtual QCString trPostcondition()=0
const bool FALSE
Definition: qglobal.h:370
virtual QCString trWarning()=0
virtual QCString trCopyright()=0
virtual QCString trReturns()=0
virtual QCString trDate()=0
virtual QCString trNote()=0
FTextStream & m_t
virtual QCString trAuthor(bool first_capital, bool singular)=0
virtual QCString trVersion()=0
Type type() const
Definition: docparser.h:1057
void forceEndParagraph(DocNode *n)
Translator * theTranslator
Definition: language.cpp:157
virtual QCString trRemarks()=0
virtual QCString trSeeAlso()=0
const bool TRUE
Definition: qglobal.h:371
void HtmlDocVisitor::visitPre ( DocTitle )
virtual

Implements DocVisitor.

Definition at line 1161 of file htmldocvisitor.cpp.

1162 {
1163 }
void HtmlDocVisitor::visitPre ( DocSimpleList sl)
virtual

Implements DocVisitor.

Definition at line 1171 of file htmldocvisitor.cpp.

1172 {
1173  if (m_hide) return;
1174  forceEndParagraph(sl);
1175  m_t << "<ul>";
1176  if (!sl->isPreformatted()) m_t << "\n";
1177 
1178 }
FTextStream & m_t
void forceEndParagraph(DocNode *n)
bool isPreformatted() const
Definition: docparser.h:158
void HtmlDocVisitor::visitPre ( DocSimpleListItem )
virtual

Implements DocVisitor.

Definition at line 1188 of file htmldocvisitor.cpp.

1189 {
1190  if (m_hide) return;
1191  m_t << "<li>";
1192 }
FTextStream & m_t
void HtmlDocVisitor::visitPre ( DocSection s)
virtual

Implements DocVisitor.

Definition at line 1201 of file htmldocvisitor.cpp.

1202 {
1203  if (m_hide) return;
1204  forceEndParagraph(s);
1205  m_t << "<h" << s->level() << ">";
1206  m_t << "<a class=\"anchor\" id=\"" << s->anchor();
1207  m_t << "\"></a>" << endl;
1209  m_t << "</h" << s->level() << ">\n";
1210 }
QCString convertCharEntitiesToUTF8(const QCString &s)
Definition: util.cpp:5822
int level() const
Definition: docparser.h:942
QCString anchor() const
Definition: docparser.h:944
FTextStream & m_t
const char * data() const
Definition: qcstring.h:207
QCString title() const
Definition: docparser.h:943
void filter(const char *str)
void forceEndParagraph(DocNode *n)
QTextStream & endl(QTextStream &s)
void HtmlDocVisitor::visitPre ( DocHtmlList s)
virtual

Implements DocVisitor.

Definition at line 1217 of file htmldocvisitor.cpp.

1218 {
1219  if (m_hide) return;
1220  forceEndParagraph(s);
1221  if (s->type()==DocHtmlList::Ordered)
1222  {
1223  m_t << "<ol" << htmlAttribsToString(s->attribs()) << ">\n";
1224  }
1225  else
1226  {
1227  m_t << "<ul" << htmlAttribsToString(s->attribs()) << ">\n";
1228  }
1229 }
Type type() const
Definition: docparser.h:1034
const HtmlAttribList & attribs() const
Definition: docparser.h:1036
FTextStream & m_t
static QString htmlAttribsToString(const HtmlAttribList &attribs)
void forceEndParagraph(DocNode *n)
void HtmlDocVisitor::visitPre ( DocHtmlListItem i)
virtual

Implements DocVisitor.

Definition at line 1246 of file htmldocvisitor.cpp.

1247 {
1248  if (m_hide) return;
1249  m_t << "<li" << htmlAttribsToString(i->attribs()) << ">";
1250  if (!i->isPreformatted()) m_t << "\n";
1251 }
FTextStream & m_t
const HtmlAttribList & attribs() const
Definition: docparser.h:1226
static QString htmlAttribsToString(const HtmlAttribList &attribs)
bool isPreformatted() const
Definition: docparser.h:158
void HtmlDocVisitor::visitPre ( DocHtmlDescList dl)
virtual

Implements DocVisitor.

Definition at line 1259 of file htmldocvisitor.cpp.

1260 {
1261  if (m_hide) return;
1262  forceEndParagraph(dl);
1263  m_t << "<dl" << htmlAttribsToString(dl->attribs()) << ">\n";
1264 }
const HtmlAttribList & attribs() const
Definition: docparser.h:927
FTextStream & m_t
static QString htmlAttribsToString(const HtmlAttribList &attribs)
void forceEndParagraph(DocNode *n)
void HtmlDocVisitor::visitPre ( DocHtmlDescTitle dt)
virtual

Implements DocVisitor.

Definition at line 1273 of file htmldocvisitor.cpp.

1274 {
1275  if (m_hide) return;
1276  m_t << "<dt" << htmlAttribsToString(dt->attribs()) << ">";
1277 }
FTextStream & m_t
static QString htmlAttribsToString(const HtmlAttribList &attribs)
const HtmlAttribList & attribs() const
Definition: docparser.h:912
void HtmlDocVisitor::visitPre ( DocHtmlDescData dd)
virtual

Implements DocVisitor.

Definition at line 1285 of file htmldocvisitor.cpp.

1286 {
1287  if (m_hide) return;
1288  m_t << "<dd" << htmlAttribsToString(dd->attribs()) << ">";
1289 }
const HtmlAttribList & attribs() const
Definition: docparser.h:1242
FTextStream & m_t
static QString htmlAttribsToString(const HtmlAttribList &attribs)
void HtmlDocVisitor::visitPre ( DocHtmlTable t)
virtual

Implements DocVisitor.

Definition at line 1297 of file htmldocvisitor.cpp.

1298 {
1299  if (m_hide) return;
1300 
1301  forceEndParagraph(t);
1302 
1303  if (t->hasCaption())
1304  {
1305  m_t << "<a class=\"anchor\" id=\"" << t->caption()->anchor() << "\"></a>\n";
1306  }
1307 
1308  QString attrs = htmlAttribsToString(t->attribs());
1309  if (attrs.isEmpty())
1310  {
1311  m_t << "<table class=\"doxtable\">\n";
1312  }
1313  else
1314  {
1315  m_t << "<table " << htmlAttribsToString(t->attribs()) << ">\n";
1316  }
1317 }
bool isEmpty() const
Definition: qstring.h:682
DocHtmlCaption * caption() const
Definition: docparser.h:1359
const HtmlAttribList & attribs() const
Definition: docparser.h:1354
The QString class provides an abstraction of Unicode text and the classic C null-terminated char arra...
Definition: qstring.h:350
FTextStream & m_t
static QString htmlAttribsToString(const HtmlAttribList &attribs)
void forceEndParagraph(DocNode *n)
QCString anchor() const
Definition: docparser.h:1298
bool hasCaption()
Definition: docparser.h:1353
void HtmlDocVisitor::visitPre ( DocHtmlRow tr)
virtual

Implements DocVisitor.

Definition at line 1326 of file htmldocvisitor.cpp.

1327 {
1328  if (m_hide) return;
1329  m_t << "<tr" << htmlAttribsToString(tr->attribs()) << ">\n";
1330 }
FTextStream & m_t
static QString htmlAttribsToString(const HtmlAttribList &attribs)
const HtmlAttribList & attribs() const
Definition: docparser.h:1317
void HtmlDocVisitor::visitPre ( DocHtmlCell c)
virtual

Implements DocVisitor.

Definition at line 1338 of file htmldocvisitor.cpp.

1339 {
1340  if (m_hide) return;
1341  if (c->isHeading())
1342  {
1343  m_t << "<th" << htmlAttribsToString(c->attribs()) << ">";
1344  }
1345  else
1346  {
1347  m_t << "<td" << htmlAttribsToString(c->attribs()) << ">";
1348  }
1349 }
const HtmlAttribList & attribs() const
Definition: docparser.h:1267
FTextStream & m_t
bool isHeading() const
Definition: docparser.h:1260
static QString htmlAttribsToString(const HtmlAttribList &attribs)
void HtmlDocVisitor::visitPre ( DocHtmlCaption c)
virtual

Implements DocVisitor.

Definition at line 1357 of file htmldocvisitor.cpp.

1358 {
1359  if (m_hide) return;
1360  bool hasAlign = FALSE;
1362  HtmlAttrib *att;
1363  QCString id;
1364  m_t << "<caption" << htmlAttribsToString(c->attribs()) << ">";
1365 }
const bool FALSE
Definition: qglobal.h:370
const HtmlAttribList & attribs() const
Definition: docparser.h:1294
FTextStream & m_t
int id() const
Definition: docvisitor.h:96
Html attribute list iterator.
Definition: htmlattrib.h:71
static QString htmlAttribsToString(const HtmlAttribList &attribs)
void HtmlDocVisitor::visitPre ( DocInternal )
virtual

Implements DocVisitor.

Definition at line 1373 of file htmldocvisitor.cpp.

1374 {
1375  if (m_hide) return;
1376  //forceEndParagraph(i);
1377  //m_t << "<p><b>" << theTranslator->trForInternalUseOnly() << "</b></p>" << endl;
1378 }
void HtmlDocVisitor::visitPre ( DocHRef href)
virtual

Implements DocVisitor.

Definition at line 1386 of file htmldocvisitor.cpp.

1387 {
1388  if (m_hide) return;
1389  if (href->url().left(7)=="mailto:")
1390  {
1391  writeObfuscatedMailAddress(href->url().mid(7));
1392  }
1393  else
1394  {
1395  QCString url = correctURL(href->url(),href->relPath());
1396  m_t << "<a href=\"" << convertToXML(url) << "\""
1397  << htmlAttribsToString(href->attribs()) << ">";
1398  }
1399 }
QCString convertToXML(const char *s)
Definition: util.cpp:5717
QCString relPath() const
Definition: docparser.h:877
QCString left(uint len) const
Definition: qcstring.cpp:213
QCString correctURL(const QCString &url, const QCString &relPath)
Definition: util.cpp:8084
const HtmlAttribList & attribs() const
Definition: docparser.h:880
FTextStream & m_t
QCString url() const
Definition: docparser.h:876
void writeObfuscatedMailAddress(const QCString &url)
static QString htmlAttribsToString(const HtmlAttribList &attribs)
QCString mid(uint index, uint len=0xffffffff) const
Definition: qcstring.cpp:246
void HtmlDocVisitor::visitPre ( DocHtmlHeader header)
virtual

Implements DocVisitor.

Definition at line 1407 of file htmldocvisitor.cpp.

1408 {
1409  if (m_hide) return;
1410  forceEndParagraph(header);
1411  m_t << "<h" << header->level()
1412  << htmlAttribsToString(header->attribs()) << ">";
1413 }
const HtmlAttribList & attribs() const
Definition: docparser.h:896
int level() const
Definition: docparser.h:894
FTextStream & m_t
static QString htmlAttribsToString(const HtmlAttribList &attribs)
void forceEndParagraph(DocNode *n)
void HtmlDocVisitor::visitPre ( DocImage img)
virtual

Implements DocVisitor.

Definition at line 1422 of file htmldocvisitor.cpp.

1423 {
1424  if (img->type()==DocImage::Html)
1425  {
1426  forceEndParagraph(img);
1427  if (m_hide) return;
1428  QString baseName=img->name();
1429  int i;
1430  if ((i=baseName.findRev('/'))!=-1 || (i=baseName.findRev('\\'))!=-1)
1431  {
1432  baseName=baseName.right(baseName.length()-i-1);
1433  }
1434  m_t << "<div class=\"image\">" << endl;
1435  QCString url = img->url();
1436  if (url.isEmpty())
1437  {
1438  m_t << "<img src=\"" << img->relPath() << img->name() << "\" alt=\""
1439  << baseName << "\"" << htmlAttribsToString(img->attribs())
1440  << "/>" << endl;
1441  }
1442  else
1443  {
1444  m_t << "<img src=\"" << correctURL(url,img->relPath()) << "\" "
1445  << htmlAttribsToString(img->attribs())
1446  << "/>" << endl;
1447  }
1448  if (img->hasCaption())
1449  {
1450  m_t << "<div class=\"caption\">" << endl;
1451  }
1452  }
1453  else // other format -> skip
1454  {
1455  pushEnabled();
1456  m_hide=TRUE;
1457  }
1458 }
QCString name() const
Definition: docparser.h:695
bool isEmpty() const
Definition: qcstring.h:189
The QString class provides an abstraction of Unicode text and the classic C null-terminated char arra...
Definition: qstring.h:350
QCString correctURL(const QCString &url, const QCString &relPath)
Definition: util.cpp:8084
FTextStream & m_t
uint length() const
Definition: qstring.h:679
bool hasCaption() const
Definition: docparser.h:696
int findRev(QChar c, int index=-1, bool cs=TRUE) const
Definition: qstring.cpp:13021
static QString htmlAttribsToString(const HtmlAttribList &attribs)
void forceEndParagraph(DocNode *n)
QCString relPath() const
Definition: docparser.h:699
const HtmlAttribList & attribs() const
Definition: docparser.h:701
static QCString baseName
Definition: scanner.cpp:10890
QCString url() const
Definition: docparser.h:700
Type type() const
Definition: docparser.h:694
const bool TRUE
Definition: qglobal.h:371
QString right(uint len) const
Definition: qstring.cpp:13231
QTextStream & endl(QTextStream &s)
void HtmlDocVisitor::visitPre ( DocDotFile df)
virtual

Implements DocVisitor.

Definition at line 1478 of file htmldocvisitor.cpp.

1479 {
1480  if (m_hide) return;
1481  m_t << "<div class=\"dotgraph\">" << endl;
1482  writeDotFile(df->file(),df->relPath(),df->context());
1483  if (df->hasCaption())
1484  {
1485  m_t << "<div class=\"caption\">" << endl;
1486  }
1487 }
QCString file() const
Definition: docparser.h:723
QCString relPath() const
Definition: docparser.h:724
QCString context() const
Definition: docparser.h:728
FTextStream & m_t
bool hasCaption() const
Definition: docparser.h:725
void writeDotFile(const QCString &fileName, const QCString &relPath, const QCString &context)
QTextStream & endl(QTextStream &s)
void HtmlDocVisitor::visitPre ( DocMscFile df)
virtual

Implements DocVisitor.

Definition at line 1499 of file htmldocvisitor.cpp.

1500 {
1501  if (m_hide) return;
1502  m_t << "<div class=\"mscgraph\">" << endl;
1503  writeMscFile(df->file(),df->relPath(),df->context());
1504  if (df->hasCaption())
1505  {
1506  m_t << "<div class=\"caption\">" << endl;
1507  }
1508 }
QCString file() const
Definition: docparser.h:747
QCString context() const
Definition: docparser.h:752
FTextStream & m_t
bool hasCaption() const
Definition: docparser.h:749
QCString relPath() const
Definition: docparser.h:748
QTextStream & endl(QTextStream &s)
void writeMscFile(const QCString &fileName, const QCString &relPath, const QCString &context)
void HtmlDocVisitor::visitPre ( DocDiaFile df)
virtual

Implements DocVisitor.

Definition at line 1519 of file htmldocvisitor.cpp.

1520 {
1521  if (m_hide) return;
1522  m_t << "<div class=\"diagraph\">" << endl;
1523  writeDiaFile(df->file(),df->relPath(),df->context());
1524  if (df->hasCaption())
1525  {
1526  m_t << "<div class=\"caption\">" << endl;
1527  }
1528 }
bool hasCaption() const
Definition: docparser.h:773
QCString file() const
Definition: docparser.h:771
QCString context() const
Definition: docparser.h:776
QCString relPath() const
Definition: docparser.h:772
FTextStream & m_t
QTextStream & endl(QTextStream &s)
void writeDiaFile(const QCString &fileName, const QCString &relPath, const QCString &context)
void HtmlDocVisitor::visitPre ( DocLink lnk)
virtual

Implements DocVisitor.

Definition at line 1539 of file htmldocvisitor.cpp.

1540 {
1541  if (m_hide) return;
1542  startLink(lnk->ref(),lnk->file(),lnk->relPath(),lnk->anchor());
1543 }
void startLink(const QCString &ref, const QCString &file, const QCString &relPath, const QCString &anchor, const QCString &tooltip="")
void HtmlDocVisitor::visitPre ( DocRef ref)
virtual

Implements DocVisitor.

Definition at line 1551 of file htmldocvisitor.cpp.

1552 {
1553  if (m_hide) return;
1554  if (!ref->file().isEmpty())
1555  {
1556  // when ref->isSubPage()==TRUE we use ref->file() for HTML and
1557  // ref->anchor() for LaTeX/RTF
1558  startLink(ref->ref(),ref->file(),ref->relPath(),ref->isSubPage() ? QCString() : ref->anchor());
1559  }
1560  if (!ref->hasLinkText()) filter(ref->targetTitle());
1561 }
bool isEmpty() const
Definition: qcstring.h:189
void startLink(const QCString &ref, const QCString &file, const QCString &relPath, const QCString &anchor, const QCString &tooltip="")
QCString file() const
Definition: docparser.h:827
bool isSubPage() const
Definition: docparser.h:836
QCString targetTitle() const
Definition: docparser.h:831
QCString ref() const
Definition: docparser.h:829
QCString relPath() const
Definition: docparser.h:828
void filter(const char *str)
bool hasLinkText() const
Definition: docparser.h:832
void HtmlDocVisitor::visitPre ( DocSecRefItem ref)
virtual

Implements DocVisitor.

Definition at line 1570 of file htmldocvisitor.cpp.

1571 {
1572  if (m_hide) return;
1573  QString refName=ref->file();
1574  if (refName.right(Doxygen::htmlFileExtension.length())!=
1576  {
1577  refName+=Doxygen::htmlFileExtension;
1578  }
1579  m_t << "<li><a href=\"" << refName << "#" << ref->anchor() << "\">";
1580 
1581 }
QCString file() const
Definition: docparser.h:966
uint length() const
Definition: qcstring.h:195
static QCString htmlFileExtension
Definition: doxygen.h:130
The QString class provides an abstraction of Unicode text and the classic C null-terminated char arra...
Definition: qstring.h:350
QCString anchor() const
Definition: docparser.h:967
FTextStream & m_t
QString right(uint len) const
Definition: qstring.cpp:13231
void HtmlDocVisitor::visitPre ( DocSecRefList s)
virtual

Implements DocVisitor.

Definition at line 1589 of file htmldocvisitor.cpp.

1590 {
1591  if (m_hide) return;
1592  forceEndParagraph(s);
1593  m_t << "<div class=\"multicol\">" << endl;
1594  m_t << "<ul>" << endl;
1595 }
FTextStream & m_t
void forceEndParagraph(DocNode *n)
QTextStream & endl(QTextStream &s)
void HtmlDocVisitor::visitPre ( DocParamSect s)
virtual

Implements DocVisitor.

Definition at line 1624 of file htmldocvisitor.cpp.

1625 {
1626  if (m_hide) return;
1627  forceEndParagraph(s);
1629  QCString heading;
1630  switch(s->type())
1631  {
1632  case DocParamSect::Param:
1633  heading=theTranslator->trParameters();
1634  className="params";
1635  break;
1636  case DocParamSect::RetVal:
1637  heading=theTranslator->trReturnValues();
1638  className="retval";
1639  break;
1641  heading=theTranslator->trExceptions();
1642  className="exception";
1643  break;
1646  className="tparams";
1647  break;
1648  default:
1649  ASSERT(0);
1650  }
1651  m_t << "<dl class=\"" << className << "\"><dt>";
1652  m_t << heading;
1653  m_t << "</dt><dd>" << endl;
1654  m_t << " <table class=\"" << className << "\">" << endl;
1655 }
Type type() const
Definition: docparser.h:1101
static QCString className
Definition: declinfo.cpp:669
virtual QCString trExceptions()=0
virtual QCString trParameters()=0
FTextStream & m_t
virtual QCString trReturnValues()=0
void forceEndParagraph(DocNode *n)
virtual QCString trTemplateParameters()=0
Translator * theTranslator
Definition: language.cpp:157
QTextStream & endl(QTextStream &s)
#define ASSERT(x)
Definition: qglobal.h:590
void HtmlDocVisitor::visitPre ( DocParamList pl)
virtual

Implements DocVisitor.

Definition at line 1666 of file htmldocvisitor.cpp.

1667 {
1668  //printf("DocParamList::visitPre\n");
1669  if (m_hide) return;
1670  m_t << " <tr>";
1671  DocParamSect *sect = 0;
1672  if (pl->parent()->kind()==DocNode::Kind_ParamSect)
1673  {
1674  sect=(DocParamSect*)pl->parent();
1675  }
1676  if (sect && sect->hasInOutSpecifier())
1677  {
1678  m_t << "<td class=\"paramdir\">";
1680  {
1681  m_t << "[";
1682  if (pl->direction()==DocParamSect::In)
1683  {
1684  m_t << "in";
1685  }
1686  else if (pl->direction()==DocParamSect::Out)
1687  {
1688  m_t << "out";
1689  }
1690  else if (pl->direction()==DocParamSect::InOut)
1691  {
1692  m_t << "in,out";
1693  }
1694  m_t << "]";
1695  }
1696  m_t << "</td>";
1697  }
1698  if (sect && sect->hasTypeSpecifier())
1699  {
1700  m_t << "<td class=\"paramtype\">";
1702  DocNode *type;
1703  bool first=TRUE;
1704  for (li.toFirst();(type=li.current());++li)
1705  {
1706  if (!first) m_t << "&#160;|&#160;"; else first=FALSE;
1707  if (type->kind()==DocNode::Kind_Word)
1708  {
1709  visit((DocWord*)type);
1710  }
1711  else if (type->kind()==DocNode::Kind_LinkedWord)
1712  {
1713  visit((DocLinkedWord*)type);
1714  }
1715  }
1716  m_t << "</td>";
1717  }
1718  m_t << "<td class=\"paramname\">";
1719  //QStrListIterator li(pl->parameters());
1720  //const char *s;
1722  DocNode *param;
1723  bool first=TRUE;
1724  for (li.toFirst();(param=li.current());++li)
1725  {
1726  if (!first) m_t << ","; else first=FALSE;
1727  if (param->kind()==DocNode::Kind_Word)
1728  {
1729  visit((DocWord*)param);
1730  }
1731  else if (param->kind()==DocNode::Kind_LinkedWord)
1732  {
1733  visit((DocLinkedWord*)param);
1734  }
1735  }
1736  m_t << "</td><td>";
1737 }
DocNode * parent() const
Definition: docparser.h:147
const bool FALSE
Definition: qglobal.h:370
const QList< DocNode > & paramTypes()
Definition: docparser.h:1170
virtual Kind kind() const =0
FTextStream & m_t
void visit(DocWord *)
type * current() const
Definition: qlist.h:146
DocParamSect::Direction direction() const
Definition: docparser.h:1172
bool hasInOutSpecifier() const
Definition: docparser.h:1103
const QList< DocNode > & parameters()
Definition: docparser.h:1169
bool hasTypeSpecifier() const
Definition: docparser.h:1104
static QCString type
Definition: declinfo.cpp:672
const bool TRUE
Definition: qglobal.h:371
void HtmlDocVisitor::visitPre ( DocXRefItem x)
virtual

Implements DocVisitor.

Definition at line 1746 of file htmldocvisitor.cpp.

1747 {
1748  if (m_hide) return;
1749  if (x->title().isEmpty()) return;
1750 
1751  forceEndParagraph(x);
1752  bool anonymousEnum = x->file()=="@";
1753  if (!anonymousEnum)
1754  {
1755  m_t << "<dl class=\"" << x->key() << "\"><dt><b><a class=\"el\" href=\""
1756  << x->relPath() << x->file() << Doxygen::htmlFileExtension
1757  << "#" << x->anchor() << "\">";
1758  }
1759  else
1760  {
1761  m_t << "<dl class=\"" << x->key() << "\"><dt><b>";
1762  }
1763  filter(x->title());
1764  m_t << ":";
1765  if (!anonymousEnum) m_t << "</a>";
1766  m_t << "</b></dt><dd>";
1767 }
bool isEmpty() const
Definition: qcstring.h:189
static QCString htmlFileExtension
Definition: doxygen.h:130
QCString relPath() const
Definition: docparser.h:672
QCString anchor() const
Definition: docparser.h:670
FTextStream & m_t
QCString key() const
Definition: docparser.h:673
void filter(const char *str)
void forceEndParagraph(DocNode *n)
QCString file() const
Definition: docparser.h:669
QCString title() const
Definition: docparser.h:671
void HtmlDocVisitor::visitPre ( DocInternalRef ref)
virtual

Implements DocVisitor.

Definition at line 1777 of file htmldocvisitor.cpp.

1778 {
1779  if (m_hide) return;
1780  startLink(0,ref->file(),ref->relPath(),ref->anchor());
1781 }
void startLink(const QCString &ref, const QCString &file, const QCString &relPath, const QCString &anchor, const QCString &tooltip="")
QCString anchor() const
Definition: docparser.h:859
QCString relPath() const
Definition: docparser.h:858
QCString file() const
Definition: docparser.h:857
void HtmlDocVisitor::visitPre ( DocCopy )
virtual

Implements DocVisitor.

Definition at line 1790 of file htmldocvisitor.cpp.

1791 {
1792 }
void HtmlDocVisitor::visitPre ( DocText )
virtual

Implements DocVisitor.

Definition at line 1798 of file htmldocvisitor.cpp.

1799 {
1800 }
void HtmlDocVisitor::visitPre ( DocHtmlBlockQuote b)
virtual

Implements DocVisitor.

Definition at line 1806 of file htmldocvisitor.cpp.

1807 {
1808  if (m_hide) return;
1809  forceEndParagraph(b);
1810  QString attrs = htmlAttribsToString(b->attribs());
1811  if (attrs.isEmpty())
1812  {
1813  m_t << "<blockquote class=\"doxtable\">\n";
1814  }
1815  else
1816  {
1817  m_t << "<blockquote " << htmlAttribsToString(b->attribs()) << ">\n";
1818  }
1819 }
bool isEmpty() const
Definition: qstring.h:682
const HtmlAttribList & attribs() const
Definition: docparser.h:1382
The QString class provides an abstraction of Unicode text and the classic C null-terminated char arra...
Definition: qstring.h:350
FTextStream & m_t
static QString htmlAttribsToString(const HtmlAttribList &attribs)
void forceEndParagraph(DocNode *n)
void HtmlDocVisitor::visitPre ( DocVhdlFlow vf)
virtual

Implements DocVisitor.

Definition at line 1828 of file htmldocvisitor.cpp.

1829 {
1830  if (m_hide) return;
1831  if (VhdlDocGen::getFlowMember()) // use VHDL flow chart creator
1832  {
1833  forceEndParagraph(vf);
1835  m_t << "<p>";
1836  m_t << "flowchart: " ; // TODO: translate me
1837  m_t << "<a href=\"";
1838  m_t << fname.data();
1839  m_t << ".svg\">";
1841  m_t << "</a>";
1842  if (vf->hasCaption())
1843  {
1844  m_t << "<br />";
1845  }
1846  }
1847 }
static QCString convertNameToFileName()
static const MemberDef * getFlowMember()
Definition: vhdldocgen.cpp:95
bool hasCaption()
Definition: docparser.h:794
const QCString & name() const
Definition: definition.h:114
FTextStream & m_t
const char * data() const
Definition: qcstring.h:207
void forceEndParagraph(DocNode *n)
void HtmlDocVisitor::visitPre ( DocParBlock )
virtual

Implements DocVisitor.

Definition at line 1859 of file htmldocvisitor.cpp.

1860 {
1861  if (m_hide) return;
1862 }
void HtmlDocVisitor::writeDiaFile ( const QCString fileName,
const QCString relPath,
const QCString context 
)
private

Definition at line 1994 of file htmldocvisitor.cpp.

1997 {
1999  int i;
2000  if ((i=baseName.findRev('/'))!=-1) // strip path
2001  {
2002  baseName=baseName.right(baseName.length()-i-1);
2003  }
2004  if ((i=baseName.find('.'))!=-1) // strip extension
2005  {
2006  baseName=baseName.left(i);
2007  }
2008  baseName.prepend("dia_");
2009  QCString outDir = Config_getString("HTML_OUTPUT");
2010  writeDiaGraphFromFile(fileName,outDir,baseName,DIA_BITMAP);
2011 
2012  m_t << "<img src=\"" << relPath << baseName << ".png" << "\" />" << endl;
2013 }
uint length() const
Definition: qcstring.h:195
QCString left(uint len) const
Definition: qcstring.cpp:213
int find(char c, int index=0, bool cs=TRUE) const
Definition: qcstring.cpp:41
int findRev(char c, int index=-1, bool cs=TRUE) const
Definition: qcstring.cpp:95
fileName
Definition: dumpTree.py:9
FTextStream & m_t
QCString right(uint len) const
Definition: qcstring.cpp:231
QCString & prepend(const char *s)
Definition: qcstring.cpp:387
#define Config_getString(val)
Definition: config.cpp:660
void writeDiaGraphFromFile(const char *inFile, const char *outDir, const char *outFile, DiaOutputFormat format)
Definition: dia.cpp:28
static QCString baseName
Definition: scanner.cpp:10890
Definition: dia.h:24
QTextStream & endl(QTextStream &s)
void HtmlDocVisitor::writeDotFile ( const QCString fileName,
const QCString relPath,
const QCString context 
)
private

Definition at line 1951 of file htmldocvisitor.cpp.

1953 {
1955  int i;
1956  if ((i=baseName.findRev('/'))!=-1)
1957  {
1958  baseName=baseName.right(baseName.length()-i-1);
1959  }
1960  if ((i=baseName.find('.'))!=-1) // strip extension
1961  {
1962  baseName=baseName.left(i);
1963  }
1964  baseName.prepend("dot_");
1965  QCString outDir = Config_getString("HTML_OUTPUT");
1966  writeDotGraphFromFile(fn,outDir,baseName,GOF_BITMAP);
1967  writeDotImageMapFromFile(m_t,fn,outDir,relPath,baseName,context);
1968 }
uint length() const
Definition: qcstring.h:195
void writeDotImageMapFromFile(FTextStream &t, const QCString &inFile, const QCString &outDir, const QCString &relPath, const QCString &baseName, const QCString &context, int graphId)
Definition: dot.cpp:4255
QCString left(uint len) const
Definition: qcstring.cpp:213
int find(char c, int index=0, bool cs=TRUE) const
Definition: qcstring.cpp:41
int findRev(char c, int index=-1, bool cs=TRUE) const
Definition: qcstring.cpp:95
QAsciiDict< Entry > fn
FTextStream & m_t
QCString right(uint len) const
Definition: qcstring.cpp:231
QCString & prepend(const char *s)
Definition: qcstring.cpp:387
void writeDotGraphFromFile(const char *inFile, const char *outDir, const char *outFile, GraphOutputFormat format)
Definition: dot.cpp:4203
#define Config_getString(val)
Definition: config.cpp:660
static QCString baseName
Definition: scanner.cpp:10890
Definition: dot.h:42
void HtmlDocVisitor::writeMscFile ( const QCString fileName,
const QCString relPath,
const QCString context 
)
private

Definition at line 1970 of file htmldocvisitor.cpp.

1973 {
1975  int i;
1976  if ((i=baseName.findRev('/'))!=-1) // strip path
1977  {
1978  baseName=baseName.right(baseName.length()-i-1);
1979  }
1980  if ((i=baseName.find('.'))!=-1) // strip extension
1981  {
1982  baseName=baseName.left(i);
1983  }
1984  baseName.prepend("msc_");
1985  QCString outDir = Config_getString("HTML_OUTPUT");
1986  QCString imgExt = getDotImageExtension();
1987  MscOutputFormat mscFormat = MSC_BITMAP;
1988  if ("svg" == imgExt)
1989  mscFormat = MSC_SVG;
1990  writeMscGraphFromFile(fileName,outDir,baseName,mscFormat);
1991  writeMscImageMapFromFile(m_t,fileName,outDir,relPath,baseName,context,mscFormat);
1992 }
void writeMscGraphFromFile(const char *inFile, const char *outDir, const char *outFile, MscOutputFormat format)
Definition: msc.cpp:92
uint length() const
Definition: qcstring.h:195
QCString left(uint len) const
Definition: qcstring.cpp:213
int find(char c, int index=0, bool cs=TRUE) const
Definition: qcstring.cpp:41
int findRev(char c, int index=-1, bool cs=TRUE) const
Definition: qcstring.cpp:95
fileName
Definition: dumpTree.py:9
FTextStream & m_t
QCString right(uint len) const
Definition: qcstring.cpp:231
QCString & prepend(const char *s)
Definition: qcstring.cpp:387
Definition: msc.h:24
#define Config_getString(val)
Definition: config.cpp:660
Definition: msc.h:24
QCString getDotImageExtension(void)
Definition: util.cpp:8562
MscOutputFormat
Definition: msc.h:24
static QCString baseName
Definition: scanner.cpp:10890
void writeMscImageMapFromFile(FTextStream &t, const QCString &inFile, const QCString &outDir, const QCString &relPath, const QCString &baseName, const QCString &context, MscOutputFormat format)
Definition: msc.cpp:194
void HtmlDocVisitor::writeObfuscatedMailAddress ( const QCString url)
private

Definition at line 204 of file htmldocvisitor.cpp.

205 {
206  m_t << "<a href=\"#\" onclick=\"location.href='mai'+'lto:'";
207  uint i;
208  int size=3;
209  for (i=0;i<url.length();)
210  {
211  m_t << "+'" << url.mid(i,size) << "'";
212  i+=size;
213  if (size==3) size=2; else size=3;
214  }
215  m_t << "; return false;\">";
216 }
uint length() const
Definition: qcstring.h:195
decltype(auto) constexpr size(T &&obj)
ADL-aware version of std::size.
Definition: StdUtils.h:92
FTextStream & m_t
QCString mid(uint index, uint len=0xffffffff) const
Definition: qcstring.cpp:246
unsigned uint
Definition: qglobal.h:351
void HtmlDocVisitor::writePlantUMLFile ( const QCString fileName,
const QCString relPath,
const QCString context 
)
private

Definition at line 2015 of file htmldocvisitor.cpp.

2018 {
2020  int i;
2021  if ((i=baseName.findRev('/'))!=-1) // strip path
2022  {
2023  baseName=baseName.right(baseName.length()-i-1);
2024  }
2025  if ((i=baseName.findRev('.'))!=-1) // strip extension
2026  {
2027  baseName=baseName.left(i);
2028  }
2029  static QCString outDir = Config_getString("HTML_OUTPUT");
2030  QCString imgExt = getDotImageExtension();
2031  if (imgExt=="svg")
2032  {
2033  generatePlantUMLOutput(fileName,outDir,PUML_SVG);
2034  //m_t << "<iframe scrolling=\"no\" frameborder=\"0\" src=\"" << relPath << baseName << ".svg" << "\" />" << endl;
2035  //m_t << "<p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p>";
2036  //m_t << "</iframe>" << endl;
2037  m_t << "<object type=\"image/svg+xml\" data=\"" << relPath << baseName << ".svg\"></object>" << endl;
2038  }
2039  else
2040  {
2041  generatePlantUMLOutput(fileName,outDir,PUML_BITMAP);
2042  m_t << "<img src=\"" << relPath << baseName << ".png" << "\" />" << endl;
2043  }
2044 }
uint length() const
Definition: qcstring.h:195
QCString left(uint len) const
Definition: qcstring.cpp:213
int findRev(char c, int index=-1, bool cs=TRUE) const
Definition: qcstring.cpp:95
fileName
Definition: dumpTree.py:9
FTextStream & m_t
QCString right(uint len) const
Definition: qcstring.cpp:231
#define Config_getString(val)
Definition: config.cpp:660
QCString getDotImageExtension(void)
Definition: util.cpp:8562
void generatePlantUMLOutput(const char *baseName, const char *outDir, PlantUMLOutputFormat format)
Definition: plantuml.cpp:54
static QCString baseName
Definition: scanner.cpp:10890
QTextStream & endl(QTextStream &s)

Member Data Documentation

CodeOutputInterface& HtmlDocVisitor::m_ci
private

Definition at line 169 of file htmldocvisitor.h.

Definition* HtmlDocVisitor::m_ctx
private

Definition at line 173 of file htmldocvisitor.h.

QStack<bool> HtmlDocVisitor::m_enabled
private

Definition at line 172 of file htmldocvisitor.h.

bool HtmlDocVisitor::m_hide
private

Definition at line 171 of file htmldocvisitor.h.

bool HtmlDocVisitor::m_insidePre
private

Definition at line 170 of file htmldocvisitor.h.

QCString HtmlDocVisitor::m_langExt
private

Definition at line 174 of file htmldocvisitor.h.

FTextStream& HtmlDocVisitor::m_t
private

Definition at line 168 of file htmldocvisitor.h.


The documentation for this class was generated from the following files: