ISLEman
docparser.h
1 /******************************************************************************
2  *
3  *
4  *
5  *
6  * Copyright (C) 1997-2015 by Dimitri van Heesch.
7  *
8  * Permission to use, copy, modify, and distribute this software and its
9  * documentation under the terms of the GNU General Public License is hereby
10  * granted. No representations are made about the suitability of this software
11  * for any purpose. It is provided "as is" without express or implied warranty.
12  * See the GNU General Public License for more details.
13  *
14  * Documents produced by Doxygen are derivative works derived from the
15  * input used in their production; they are not affected by this license.
16  *
17  */
18 
19 #ifndef _DOCPARSER_H
20 #define _DOCPARSER_H
21 
22 #include <stdio.h>
23 
24 #include <qlist.h>
25 #include <qcstring.h>
26 
27 #include "docvisitor.h"
28 #include "htmlattrib.h"
29 
30 class DocNode;
31 class MemberDef;
32 class Definition;
33 class MemberGroup;
34 class SectionDict;
35 
36 //---------------------------------------------------------------------------
37 
38 
59 DocRoot *validatingParseDoc(const char *fileName,int startLine,
60  Definition *context, MemberDef *md,
61  const char *input,bool indexWords,
62  bool isExample,const char *exampleName=0,
63  bool singleLine=FALSE,bool linkFromIndex=FALSE);
64 
68 DocText *validatingParseText(const char *input);
69 
71 void docFindSections(const char *input,
72  Definition *d,
73  MemberGroup *m,
74  const char *fileName);
75 
76 //---------------------------------------------------------------------------
77 
79 class DocNode
80 {
81  public:
83  enum Kind { Kind_Root = 0,
84  Kind_Word = 1,
85  Kind_WhiteSpace = 2,
86  Kind_Para = 3,
87  Kind_AutoList = 4,
88  Kind_AutoListItem = 5,
89  Kind_Symbol = 6,
90  Kind_URL = 7,
91  Kind_StyleChange = 8,
92  Kind_SimpleSect = 9,
93  Kind_Title = 10,
94  Kind_SimpleList = 11,
95  Kind_SimpleListItem = 12,
96  Kind_Section = 13,
97  Kind_Verbatim = 14,
98  Kind_XRefItem = 15,
99  Kind_HtmlList = 16,
100  Kind_HtmlListItem = 17,
101  Kind_HtmlDescList = 18,
102  Kind_HtmlDescData = 19,
103  Kind_HtmlDescTitle = 20,
104  Kind_HtmlTable = 21,
105  Kind_HtmlRow = 22,
106  Kind_HtmlCell = 23,
107  Kind_HtmlCaption = 24,
108  Kind_LineBreak = 25,
109  Kind_HorRuler = 26,
110  Kind_Anchor = 27,
111  Kind_IndexEntry = 28,
112  Kind_Internal = 29,
113  Kind_HRef = 30,
114  Kind_Include = 31,
115  Kind_IncOperator = 32,
116  Kind_HtmlHeader = 33,
117  Kind_Image = 34,
118  Kind_DotFile = 35,
119  Kind_Link = 36,
120  Kind_Ref = 37,
121  Kind_Formula = 38,
122  Kind_SecRefItem = 39,
123  Kind_SecRefList = 40,
124  Kind_SimpleSectSep = 41,
125  Kind_LinkedWord = 42,
126  Kind_ParamSect = 43,
127  Kind_ParamList = 44,
128  Kind_InternalRef = 45,
129  Kind_Copy = 46,
130  Kind_Text = 47,
131  Kind_MscFile = 48,
132  Kind_HtmlBlockQuote = 49,
133  Kind_VhdlFlow = 50,
134  Kind_ParBlock = 51,
135  Kind_DiaFile = 52
136  };
138  DocNode() : m_parent(0), m_insidePre(FALSE) {}
139 
141  virtual ~DocNode() {}
142 
144  virtual Kind kind() const = 0;
145 
147  DocNode *parent() const { return m_parent; }
148 
150  void setParent(DocNode *parent) { m_parent = parent; }
151 
155  virtual void accept(DocVisitor *v) = 0;
156 
158  bool isPreformatted() const { return m_insidePre; }
159 
160  protected:
162  void setInsidePreformatted(bool p) { m_insidePre = p; }
163  DocNode *m_parent;
164  private:
165 
166  bool m_insidePre;
167 };
168 
172 template<class T> class CompAccept
173 {
174  public:
175  CompAccept() { m_children.setAutoDelete(TRUE); }
176  virtual ~CompAccept() {}
177  void accept(T *obj, DocVisitor *v)
178  {
179  v->visitPre(obj);
180  QListIterator<DocNode> cli(m_children);
181  DocNode *n;
182  for (cli.toFirst();(n=cli.current());++cli) n->accept(v);
183  v->visitPost(obj);
184  }
185  const QList<DocNode> &children() const { return m_children; }
186  QList<DocNode> &children() { return m_children; }
187 
188  protected:
189  QList<DocNode> m_children;
190 };
191 
192 
195 class DocWord : public DocNode
196 {
197  public:
198  DocWord(DocNode *parent,const QCString &word);
199  QCString word() const { return m_word; }
200  Kind kind() const { return Kind_Word; }
201  void accept(DocVisitor *v) { v->visit(this); }
202 
203  private:
204  QCString m_word;
205 };
206 
209 class DocLinkedWord : public DocNode
210 {
211  public:
212  DocLinkedWord(DocNode *parent,const QCString &word,
213  const QCString &ref,const QCString &file,
214  const QCString &anchor,const QCString &tooltip);
215  QCString word() const { return m_word; }
216  Kind kind() const { return Kind_LinkedWord; }
217  QCString file() const { return m_file; }
218  QCString relPath() const { return m_relPath; }
219  QCString ref() const { return m_ref; }
220  QCString anchor() const { return m_anchor; }
221  QCString tooltip() const { return m_tooltip; }
222  void accept(DocVisitor *v) { v->visit(this); }
223 
224  private:
225  QCString m_word;
226  QCString m_ref;
227  QCString m_file;
228  QCString m_relPath;
229  QCString m_anchor;
230  QCString m_tooltip;
231 };
232 
234 class DocURL : public DocNode
235 {
236  public:
237  DocURL(DocNode *parent,const QCString &url,bool isEmail) :
238  m_url(url), m_isEmail(isEmail) { m_parent=parent; }
239  QCString url() const { return m_url; }
240  Kind kind() const { return Kind_URL; }
241  void accept(DocVisitor *v) { v->visit(this); }
242  bool isEmail() const { return m_isEmail; }
243 
244  private:
245  QCString m_url;
246  bool m_isEmail;
247 };
248 
250 class DocLineBreak : public DocNode
251 {
252  public:
253  DocLineBreak(DocNode *parent) { m_parent=parent; }
254  Kind kind() const { return Kind_LineBreak; }
255  void accept(DocVisitor *v) { v->visit(this); }
256 
257  private:
258 };
259 
261 class DocHorRuler : public DocNode
262 {
263  public:
264  DocHorRuler(DocNode *parent) { m_parent = parent; }
265  Kind kind() const { return Kind_HorRuler; }
266  void accept(DocVisitor *v) { v->visit(this); }
267 
268  private:
269 };
270 
272 class DocAnchor : public DocNode
273 {
274  public:
275  DocAnchor(DocNode *parent,const QCString &id,bool newAnchor);
276  Kind kind() const { return Kind_Anchor; }
277  QCString anchor() const { return m_anchor; }
278  QCString file() const { return m_file; }
279  void accept(DocVisitor *v) { v->visit(this); }
280 
281  private:
282  QCString m_anchor;
283  QCString m_file;
284 };
285 
287 class DocCite : public DocNode
288 {
289  public:
290  DocCite(DocNode *parent,const QCString &target,const QCString &context);
291  Kind kind() const { return Kind_Ref; }
292  QCString file() const { return m_file; }
293  QCString relPath() const { return m_relPath; }
294  QCString ref() const { return m_ref; }
295  QCString anchor() const { return m_anchor; }
296  QCString text() const { return m_text; }
297  void accept(DocVisitor *v) { v->visit(this); }
298 
299  private:
300  QCString m_file;
301  QCString m_relPath;
302  QCString m_ref;
303  QCString m_anchor;
304  QCString m_text;
305 };
306 
307 
309 class DocStyleChange : public DocNode
310 {
311  public:
312  enum Style { Bold = (1<<0),
313  Italic = (1<<1),
314  Code = (1<<2),
315  Center = (1<<3),
316  Small = (1<<4),
317  Subscript = (1<<5),
318  Superscript = (1<<6),
319  Preformatted = (1<<7),
320  Span = (1<<8),
321  Div = (1<<9)
322  };
323 
324  DocStyleChange(DocNode *parent,uint position,Style s,bool enable,
325  const HtmlAttribList *attribs=0) :
326  m_position(position), m_style(s), m_enable(enable)
327  { m_parent = parent; if (attribs) m_attribs=*attribs; }
328  Kind kind() const { return Kind_StyleChange; }
329  Style style() const { return m_style; }
330  const char *styleString() const;
331  bool enable() const { return m_enable; }
332  uint position() const { return m_position; }
333  void accept(DocVisitor *v) { v->visit(this); }
334  const HtmlAttribList &attribs() const { return m_attribs; }
335 
336  private:
337  uint m_position;
338  Style m_style;
339  bool m_enable;
340  HtmlAttribList m_attribs;
341 };
342 
344 class DocSymbol : public DocNode
345 {
346  public:
347  enum SymType { Sym_Unknown = -1,
348  Sym_nbsp, Sym_iexcl, Sym_cent, Sym_pound, Sym_curren,
349  Sym_yen, Sym_brvbar, Sym_sect, Sym_uml, Sym_copy,
350  Sym_ordf, Sym_laquo, Sym_not, Sym_shy, Sym_reg,
351  Sym_macr, Sym_deg, Sym_plusmn, Sym_sup2, Sym_sup3,
352  Sym_acute, Sym_micro, Sym_para, Sym_middot, Sym_cedil,
353  Sym_sup1, Sym_ordm, Sym_raquo, Sym_frac14, Sym_frac12,
354  Sym_frac34, Sym_iquest, Sym_Agrave, Sym_Aacute, Sym_Acirc,
355  Sym_Atilde, Sym_Auml, Sym_Aring, Sym_AElig, Sym_Ccedil,
356  Sym_Egrave, Sym_Eacute, Sym_Ecirc, Sym_Euml, Sym_Igrave,
357  Sym_Iacute, Sym_Icirc, Sym_Iuml, Sym_ETH, Sym_Ntilde,
358  Sym_Ograve, Sym_Oacute, Sym_Ocirc, Sym_Otilde, Sym_Ouml,
359  Sym_times, Sym_Oslash, Sym_Ugrave, Sym_Uacute, Sym_Ucirc,
360  Sym_Uuml, Sym_Yacute, Sym_THORN, Sym_szlig, Sym_agrave,
361  Sym_aacute, Sym_acirc, Sym_atilde, Sym_auml, Sym_aring,
362  Sym_aelig, Sym_ccedil, Sym_egrave, Sym_eacute, Sym_ecirc,
363  Sym_euml, Sym_igrave, Sym_iacute, Sym_icirc, Sym_iuml,
364  Sym_eth, Sym_ntilde, Sym_ograve, Sym_oacute, Sym_ocirc,
365  Sym_otilde, Sym_ouml, Sym_divide, Sym_oslash, Sym_ugrave,
366  Sym_uacute, Sym_ucirc, Sym_uuml, Sym_yacute, Sym_thorn,
367  Sym_yuml, Sym_fnof, Sym_Alpha, Sym_Beta, Sym_Gamma,
368  Sym_Delta, Sym_Epsilon, Sym_Zeta, Sym_Eta, Sym_Theta,
369  Sym_Iota, Sym_Kappa, Sym_Lambda, Sym_Mu, Sym_Nu,
370  Sym_Xi, Sym_Omicron, Sym_Pi, Sym_Rho, Sym_Sigma,
371  Sym_Tau, Sym_Upsilon, Sym_Phi, Sym_Chi, Sym_Psi,
372  Sym_Omega, Sym_alpha, Sym_beta, Sym_gamma, Sym_delta,
373  Sym_epsilon, Sym_zeta, Sym_eta, Sym_theta, Sym_iota,
374  Sym_kappa, Sym_lambda, Sym_mu, Sym_nu, Sym_xi,
375  Sym_omicron, Sym_pi, Sym_rho, Sym_sigmaf, Sym_sigma,
376  Sym_tau, Sym_upsilon, Sym_phi, Sym_chi, Sym_psi,
377  Sym_omega, Sym_thetasym, Sym_upsih, Sym_piv, Sym_bull,
378  Sym_hellip, Sym_prime, Sym_Prime, Sym_oline, Sym_frasl,
379  Sym_weierp, Sym_image, Sym_real, Sym_trade, Sym_alefsym,
380  Sym_larr, Sym_uarr, Sym_rarr, Sym_darr, Sym_harr,
381  Sym_crarr, Sym_lArr, Sym_uArr, Sym_rArr, Sym_dArr,
382  Sym_hArr, Sym_forall, Sym_part, Sym_exist, Sym_empty,
383  Sym_nabla, Sym_isin, Sym_notin, Sym_ni, Sym_prod,
384  Sym_sum, Sym_minus, Sym_lowast, Sym_radic, Sym_prop,
385  Sym_infin, Sym_ang, Sym_and, Sym_or, Sym_cap,
386  Sym_cup, Sym_int, Sym_there4, Sym_sim, Sym_cong,
387  Sym_asymp, Sym_ne, Sym_equiv, Sym_le, Sym_ge,
388  Sym_sub, Sym_sup, Sym_nsub, Sym_sube, Sym_supe,
389  Sym_oplus, Sym_otimes, Sym_perp, Sym_sdot, Sym_lceil,
390  Sym_rceil, Sym_lfloor, Sym_rfloor, Sym_lang, Sym_rang,
391  Sym_loz, Sym_spades, Sym_clubs, Sym_hearts, Sym_diams,
392  Sym_quot, Sym_amp, Sym_lt, Sym_gt, Sym_OElig,
393  Sym_oelig, Sym_Scaron, Sym_scaron, Sym_Yuml, Sym_circ,
394  Sym_tilde, Sym_ensp, Sym_emsp, Sym_thinsp, Sym_zwnj,
395  Sym_zwj, Sym_lrm, Sym_rlm, Sym_ndash, Sym_mdash,
396  Sym_lsquo, Sym_rsquo, Sym_sbquo, Sym_ldquo, Sym_rdquo,
397  Sym_bdquo, Sym_dagger, Sym_Dagger, Sym_permil, Sym_lsaquo,
398  Sym_rsaquo, Sym_euro,
399 
400  /* doxygen extensions */
401  Sym_tm, Sym_apos,
402 
403  /* doxygen commands mapped */
404  Sym_BSlash, Sym_At, Sym_Less, Sym_Greater, Sym_Amp,
405  Sym_Dollar, Sym_Hash, Sym_DoubleColon, Sym_Percent, Sym_Pipe,
406  Sym_Quot, Sym_Minus, Sym_Plus, Sym_Dot
407  };
408  enum PerlType { Perl_unknown = 0, Perl_string, Perl_char, Perl_symbol, Perl_umlaut,
409  Perl_acute, Perl_grave, Perl_circ, Perl_slash, Perl_tilde,
410  Perl_cedilla, Perl_ring
411  };
412  typedef struct PerlSymb {
413  const char *symb;
414  const PerlType type;
415  }PerlSymb;
416  DocSymbol(DocNode *parent,SymType s) :
417  m_symbol(s) { m_parent = parent; }
418  SymType symbol() const { return m_symbol; }
419  Kind kind() const { return Kind_Symbol; }
420  void accept(DocVisitor *v) { v->visit(this); }
421  static SymType decodeSymbol(const QCString &symName);
422 
423  private:
424  SymType m_symbol;
425 };
426 
428 class DocWhiteSpace : public DocNode
429 {
430  public:
431  DocWhiteSpace(DocNode *parent,const QCString &chars) :
432  m_chars(chars) { m_parent = parent; }
433  Kind kind() const { return Kind_WhiteSpace; }
434  QCString chars() const { return m_chars; }
435  void accept(DocVisitor *v) { v->visit(this); }
436  private:
437  QCString m_chars;
438 };
439 
441 class DocVerbatim : public DocNode
442 {
443  public:
444  enum Type { Code, HtmlOnly, ManOnly, LatexOnly, RtfOnly, XmlOnly, Verbatim, Dot, Msc, DocbookOnly, PlantUML };
445  DocVerbatim(DocNode *parent,const QCString &context,
446  const QCString &text, Type t,bool isExample,
447  const QCString &exampleFile,bool isBlock=FALSE,const QCString &lang=QCString());
448  Kind kind() const { return Kind_Verbatim; }
449  Type type() const { return m_type; }
450  QCString text() const { return m_text; }
451  QCString context() const { return m_context; }
452  void accept(DocVisitor *v) { v->visit(this); }
453  bool isExample() const { return m_isExample; }
454  QCString exampleFile() const { return m_exampleFile; }
455  QCString relPath() const { return m_relPath; }
456  QCString language() const { return m_lang; }
457  bool isBlock() const { return m_isBlock; }
458  bool hasCaption() const { return !m_children.isEmpty(); }
459  QCString width() const { return m_width; }
460  QCString height() const { return m_height; }
461  const QList<DocNode> &children() const { return m_children; }
462  QList<DocNode> &children() { return m_children; }
463  void setText(const QCString &t) { m_text=t; }
464  void setWidth(const QCString &w) { m_width=w; }
465  void setHeight(const QCString &h) { m_height=h; }
466 
467  private:
468  QCString m_context;
469  QCString m_text;
470  Type m_type;
471  bool m_isExample;
472  QCString m_exampleFile;
473  QCString m_relPath;
474  QCString m_lang;
475  bool m_isBlock;
476  QCString m_width;
477  QCString m_height;
478  QList<DocNode> m_children;
479 };
480 
481 
483 class DocInclude : public DocNode
484 {
485  public:
486  enum Type { Include, DontInclude, VerbInclude, HtmlInclude, LatexInclude,
487  IncWithLines, Snippet , IncludeDoc, SnippetDoc, SnipWithLines};
488  DocInclude(DocNode *parent,const QCString &file,
489  const QCString context, Type t,
490  bool isExample,const QCString exampleFile,
491  const QCString blockId) :
492  m_file(file), m_context(context), m_type(t),
493  m_isExample(isExample), m_exampleFile(exampleFile),
494  m_blockId(blockId) { m_parent = parent; }
495  Kind kind() const { return Kind_Include; }
496  QCString file() const { return m_file; }
497  QCString extension() const { int i=m_file.findRev('.');
498  if (i!=-1)
499  return m_file.right(m_file.length()-i);
500  else
501  return "";
502  }
503  Type type() const { return m_type; }
504  QCString text() const { return m_text; }
505  QCString context() const { return m_context; }
506  QCString blockId() const { return m_blockId; }
507  bool isExample() const { return m_isExample; }
508  QCString exampleFile() const { return m_exampleFile; }
509  void accept(DocVisitor *v) { v->visit(this); }
510  void parse();
511 
512  private:
513  QCString m_file;
514  QCString m_context;
515  QCString m_text;
516  Type m_type;
517  bool m_isExample;
518  QCString m_exampleFile;
519  QCString m_blockId;
520 };
521 
523 class DocIncOperator : public DocNode
524 {
525  public:
526  enum Type { Line, SkipLine, Skip, Until };
527  DocIncOperator(DocNode *parent,Type t,const QCString &pat,
528  const QCString &context,bool isExample,const QCString &exampleFile) :
529  m_type(t), m_pattern(pat), m_context(context),
530  m_isFirst(FALSE), m_isLast(FALSE),
531  m_isExample(isExample), m_exampleFile(exampleFile) { m_parent = parent; }
532  Kind kind() const { return Kind_IncOperator; }
533  Type type() const { return m_type; }
534  QCString text() const { return m_text; }
535  QCString pattern() const { return m_pattern; }
536  QCString context() const { return m_context; }
537  void accept(DocVisitor *v) { v->visit(this); }
538  bool isFirst() const { return m_isFirst; }
539  bool isLast() const { return m_isLast; }
540  void markFirst(bool v=TRUE) { m_isFirst = v; }
541  void markLast(bool v=TRUE) { m_isLast = v; }
542  bool isExample() const { return m_isExample; }
543  QCString exampleFile() const { return m_exampleFile; }
544  void parse();
545 
546  private:
547  Type m_type;
548  QCString m_text;
549  QCString m_pattern;
550  QCString m_context;
551  bool m_isFirst;
552  bool m_isLast;
553  bool m_isExample;
554  QCString m_exampleFile;
555 };
556 
558 class DocFormula : public DocNode
559 {
560  public:
561  DocFormula(DocNode *parent,int id);
562  Kind kind() const { return Kind_Formula; }
563  QCString name() const { return m_name; }
564  QCString text() const { return m_text; }
565  QCString relPath() const { return m_relPath; }
566  int id() const { return m_id; }
567  void accept(DocVisitor *v) { v->visit(this); }
568  bool isInline() { return m_text.length()>0 ? m_text.at(0)!='\\' : TRUE; }
569 
570  private:
571  QCString m_name;
572  QCString m_text;
573  QCString m_relPath;
574  int m_id;
575 };
576 
578 class DocIndexEntry : public DocNode
579 {
580  public:
582  : m_scope(scope), m_member(md){ m_parent = parent; }
583  Kind kind() const { return Kind_IndexEntry; }
584  int parse();
585  Definition *scope() const { return m_scope; }
586  MemberDef *member() const { return m_member; }
587  QCString entry() const { return m_entry; }
588  void accept(DocVisitor *v) { v->visit(this); }
589 
590  private:
591  QCString m_entry;
592  Definition *m_scope;
593  MemberDef *m_member;
594 };
595 
596 //-----------------------------------------------------------------------
597 
599 class DocCopy : public DocNode
600 {
601  public:
602  DocCopy(DocNode *parent,const QCString &link,bool copyBrief,bool copyDetails)
603  : m_link(link),
604  m_copyBrief(copyBrief), m_copyDetails(copyDetails) { m_parent = parent; }
605  Kind kind() const { return Kind_Copy; }
606  QCString link() const { return m_link; }
607  void accept(DocVisitor * /*v*/) { /*CompAccept<DocCopy>::accept(this,v);*/ }
608  void parse(QList<DocNode> &children);
609 
610  private:
611  QCString m_link;
612  bool m_copyBrief;
613  bool m_copyDetails;
614 };
615 
617 class DocAutoList : public CompAccept<DocAutoList>, public DocNode
618 {
619  public:
620  DocAutoList(DocNode *parent,int indent,bool isEnumList,int depth);
621  Kind kind() const { return Kind_AutoList; }
622  bool isEnumList() const { return m_isEnumList; }
623  int indent() const { return m_indent; }
624  int depth() const { return m_depth; }
626  int parse();
627 
628  private:
629  int m_indent;
630  bool m_isEnumList;
631  int m_depth;
632 };
633 
635 class DocAutoListItem : public CompAccept<DocAutoListItem>, public DocNode
636 {
637  public:
638  DocAutoListItem(DocNode *parent,int indent,int num);
639  Kind kind() const { return Kind_AutoListItem; }
640  int itemNumber() const { return m_itemNum; }
642  int parse();
643 
644  private:
645  int m_indent;
646  int m_itemNum;
647 };
648 
649 
650 
652 class DocTitle : public CompAccept<DocTitle>, public DocNode
653 {
654  public:
655  DocTitle(DocNode *parent) { m_parent = parent; }
656  void parse();
657  void parseFromString(const QCString &title);
658  Kind kind() const { return Kind_Title; }
660 
661  private:
662 };
663 
665 class DocXRefItem : public CompAccept<DocXRefItem>, public DocNode
666 {
667  public:
668  DocXRefItem(DocNode *parent,int id,const char *key);
669  Kind kind() const { return Kind_XRefItem; }
670  QCString file() const { return m_file; }
671  QCString anchor() const { return m_anchor; }
672  QCString title() const { return m_title; }
673  QCString relPath() const { return m_relPath; }
674  QCString key() const { return m_key; }
676  bool parse();
677 
678  private:
679  int m_id;
680  QCString m_key;
681  QCString m_file;
682  QCString m_anchor;
683  QCString m_title;
684  QCString m_relPath;
685 };
686 
688 class DocImage : public CompAccept<DocImage>, public DocNode
689 {
690  public:
691  enum Type { Html, Latex, Rtf, DocBook };
692  DocImage(DocNode *parent,const HtmlAttribList &attribs,
693  const QCString &name,Type t,const QCString &url=QCString());
694  Kind kind() const { return Kind_Image; }
695  Type type() const { return m_type; }
696  QCString name() const { return m_name; }
697  bool hasCaption() const { return !m_children.isEmpty(); }
698  QCString width() const { return m_width; }
699  QCString height() const { return m_height; }
700  QCString relPath() const { return m_relPath; }
701  QCString url() const { return m_url; }
702  const HtmlAttribList &attribs() const { return m_attribs; }
704  void parse();
705 
706  private:
707  HtmlAttribList m_attribs;
708  QCString m_name;
709  Type m_type;
710  QCString m_width;
711  QCString m_height;
712  QCString m_relPath;
713  QCString m_url;
714 };
715 
717 class DocDotFile : public CompAccept<DocDotFile>, public DocNode
718 {
719  public:
720  DocDotFile(DocNode *parent,const QCString &name,const QCString &context);
721  void parse();
722  Kind kind() const { return Kind_DotFile; }
723  QCString name() const { return m_name; }
724  QCString file() const { return m_file; }
725  QCString relPath() const { return m_relPath; }
726  bool hasCaption() const { return !m_children.isEmpty(); }
727  QCString width() const { return m_width; }
728  QCString height() const { return m_height; }
729  QCString context() const { return m_context; }
731  private:
732  QCString m_name;
733  QCString m_file;
734  QCString m_relPath;
735  QCString m_width;
736  QCString m_height;
737  QCString m_context;
738 };
739 
741 class DocMscFile : public CompAccept<DocMscFile>, public DocNode
742 {
743  public:
744  DocMscFile(DocNode *parent,const QCString &name,const QCString &context);
745  void parse();
746  Kind kind() const { return Kind_MscFile; }
747  QCString name() const { return m_name; }
748  QCString file() const { return m_file; }
749  QCString relPath() const { return m_relPath; }
750  bool hasCaption() const { return !m_children.isEmpty(); }
751  QCString width() const { return m_width; }
752  QCString height() const { return m_height; }
753  QCString context() const { return m_context; }
755  private:
756  QCString m_name;
757  QCString m_file;
758  QCString m_relPath;
759  QCString m_width;
760  QCString m_height;
761  QCString m_context;
762 };
763 
765 class DocDiaFile : public CompAccept<DocDiaFile>, public DocNode
766 {
767  public:
768  DocDiaFile(DocNode *parent,const QCString &name,const QCString &context);
769  void parse();
770  Kind kind() const { return Kind_DiaFile; }
771  QCString name() const { return m_name; }
772  QCString file() const { return m_file; }
773  QCString relPath() const { return m_relPath; }
774  bool hasCaption() const { return !m_children.isEmpty(); }
775  QCString width() const { return m_width; }
776  QCString height() const { return m_height; }
777  QCString context() const { return m_context; }
779  private:
780  QCString m_name;
781  QCString m_file;
782  QCString m_relPath;
783  QCString m_width;
784  QCString m_height;
785  QCString m_context;
786 };
787 
789 class DocVhdlFlow : public CompAccept<DocVhdlFlow>, public DocNode
790 {
791  public:
793  void parse();
794  Kind kind() const { return Kind_VhdlFlow; }
795  bool hasCaption() { return !m_children.isEmpty(); }
797  private:
798 };
799 
801 class DocLink : public CompAccept<DocLink>, public DocNode
802 {
803  public:
804  DocLink(DocNode *parent,const QCString &target);
805  QCString parse(bool,bool isXmlLink=FALSE);
806  Kind kind() const { return Kind_Link; }
807  QCString file() const { return m_file; }
808  QCString relPath() const { return m_relPath; }
809  QCString ref() const { return m_ref; }
810  QCString anchor() const { return m_anchor; }
812 
813  private:
814  QCString m_file;
815  QCString m_relPath;
816  QCString m_ref;
817  QCString m_anchor;
818  QCString m_refText;
819 };
820 
822 class DocRef : public CompAccept<DocRef>, public DocNode
823 {
824  public:
825  DocRef(DocNode *parent,const QCString &target,const QCString &context);
826  void parse();
827  Kind kind() const { return Kind_Ref; }
828  QCString file() const { return m_file; }
829  QCString relPath() const { return m_relPath; }
830  QCString ref() const { return m_ref; }
831  QCString anchor() const { return m_anchor; }
832  QCString targetTitle() const { return m_text; }
833  bool hasLinkText() const { return !m_children.isEmpty(); }
834  bool refToAnchor() const { return m_refType==Anchor; }
835  bool refToSection() const { return m_refType==Section; }
836  bool refToTable() const { return m_refType==Table; }
837  bool isSubPage() const { return m_isSubPage; }
839 
840  private:
841  enum RefType { Unknown, Anchor, Section, Table };
842  RefType m_refType;
843  bool m_isSubPage;
844  QCString m_file;
845  QCString m_relPath;
846  QCString m_ref;
847  QCString m_anchor;
848  QCString m_text;
849 };
850 
852 class DocInternalRef : public CompAccept<DocInternalRef>, public DocNode
853 {
854  public:
855  DocInternalRef(DocNode *parent,const QCString &target);
856  void parse();
857  Kind kind() const { return Kind_Ref; }
858  QCString file() const { return m_file; }
859  QCString relPath() const { return m_relPath; }
860  QCString anchor() const { return m_anchor; }
862 
863  private:
864  QCString m_file;
865  QCString m_relPath;
866  QCString m_anchor;
867 };
868 
870 class DocHRef : public CompAccept<DocHRef>, public DocNode
871 {
872  public:
873  DocHRef(DocNode *parent,const HtmlAttribList &attribs,const QCString &url,
874  const QCString &relPath) :
875  m_attribs(attribs), m_url(url), m_relPath(relPath) { m_parent = parent; }
876  int parse();
877  QCString url() const { return m_url; }
878  QCString relPath() const { return m_relPath; }
879  Kind kind() const { return Kind_HRef; }
881  const HtmlAttribList &attribs() const { return m_attribs; }
882 
883  private:
884  HtmlAttribList m_attribs;
885  QCString m_url;
886  QCString m_relPath;
887 };
888 
890 class DocHtmlHeader : public CompAccept<DocHtmlHeader>, public DocNode
891 {
892  public:
893  DocHtmlHeader(DocNode *parent,const HtmlAttribList &attribs,int level) :
894  m_level(level), m_attribs(attribs) { m_parent = parent; }
895  int level() const { return m_level; }
896  Kind kind() const { return Kind_HtmlHeader; }
897  const HtmlAttribList &attribs() const { return m_attribs; }
899  int parse();
900 
901  private:
902  int m_level;
903  HtmlAttribList m_attribs;
904 };
905 
907 class DocHtmlDescTitle : public CompAccept<DocHtmlDescTitle>, public DocNode
908 {
909  public:
910  DocHtmlDescTitle(DocNode *parent,const HtmlAttribList &attribs) :
911  m_attribs(attribs) { m_parent = parent; }
912  Kind kind() const { return Kind_HtmlDescTitle; }
913  const HtmlAttribList &attribs() const { return m_attribs; }
915  int parse();
916 
917  private:
918  HtmlAttribList m_attribs;
919 };
920 
922 class DocHtmlDescList : public CompAccept<DocHtmlDescList>, public DocNode
923 {
924  public:
925  DocHtmlDescList(DocNode *parent,const HtmlAttribList &attribs) :
926  m_attribs(attribs) { m_parent = parent; }
927  Kind kind() const { return Kind_HtmlDescList; }
928  const HtmlAttribList &attribs() const { return m_attribs; }
930  int parse();
931 
932  private:
933  HtmlAttribList m_attribs;
934 };
935 
937 class DocSection : public CompAccept<DocSection>, public DocNode
938 {
939  public:
940  DocSection(DocNode *parent,int level,const QCString &id) :
941  m_level(level), m_id(id) { m_parent = parent; }
942  Kind kind() const { return Kind_Section; }
943  int level() const { return m_level; }
944  QCString title() const { return m_title; }
945  QCString anchor() const { return m_anchor; }
946  QCString id() const { return m_id; }
947  QCString file() const { return m_file; }
949  int parse();
950 
951  private:
952  int m_level;
953  QCString m_id;
954  QCString m_title;
955  QCString m_anchor;
956  QCString m_file;
957 };
958 
960 class DocSecRefItem : public CompAccept<DocSecRefItem>, public DocNode
961 {
962  public:
963  DocSecRefItem(DocNode *parent,const QCString &target) :
964  m_target(target) { m_parent = parent; }
965  Kind kind() const { return Kind_SecRefItem; }
966  QCString target() const { return m_target; }
967  QCString file() const { return m_file; }
968  QCString anchor() const { return m_anchor; }
970  void parse();
971 
972  private:
973  QCString m_target;
974  QCString m_file;
975  QCString m_anchor;
976 };
977 
979 class DocSecRefList : public CompAccept<DocSecRefList>, public DocNode
980 {
981  public:
982  DocSecRefList(DocNode *parent) { m_parent = parent; }
983  void parse();
984  Kind kind() const { return Kind_SecRefList; }
986 
987  private:
988 };
989 
991 class DocInternal : public CompAccept<DocInternal>, public DocNode
992 {
993  public:
994  DocInternal(DocNode *parent) { m_parent = parent; }
995  int parse(int);
996  Kind kind() const { return Kind_Internal; }
998 
999  private:
1000 };
1001 
1003 class DocParBlock : public CompAccept<DocParBlock>, public DocNode
1004 {
1005  public:
1006  DocParBlock(DocNode *parent) { m_parent = parent; }
1007  int parse();
1008  Kind kind() const { return Kind_ParBlock; }
1010 
1011  private:
1012 };
1013 
1014 
1016 class DocSimpleList : public CompAccept<DocSimpleList>, public DocNode
1017 {
1018  public:
1019  DocSimpleList(DocNode *parent) { m_parent = parent; }
1020  Kind kind() const { return Kind_SimpleList; }
1022  int parse();
1023 
1024  private:
1025 };
1026 
1028 class DocHtmlList : public CompAccept<DocHtmlList>, public DocNode
1029 {
1030  public:
1031  enum Type { Unordered, Ordered };
1032  DocHtmlList(DocNode *parent,const HtmlAttribList &attribs,Type t) :
1033  m_type(t), m_attribs(attribs) { m_parent = parent; }
1034  Kind kind() const { return Kind_HtmlList; }
1035  Type type() const { return m_type; }
1037  const HtmlAttribList &attribs() const { return m_attribs; }
1038  int parse();
1039  int parseXml();
1040 
1041  private:
1042  Type m_type;
1043  HtmlAttribList m_attribs;
1044 };
1045 
1047 class DocSimpleSect : public CompAccept<DocSimpleSect>, public DocNode
1048 {
1049  public:
1050  enum Type
1051  {
1052  Unknown, See, Return, Author, Authors, Version, Since, Date,
1053  Note, Warning, Copyright, Pre, Post, Invar, Remark, Attention, User, Rcs
1054  };
1055  DocSimpleSect(DocNode *parent,Type t);
1056  virtual ~DocSimpleSect();
1057  Kind kind() const { return Kind_SimpleSect; }
1058  Type type() const { return m_type; }
1059  QCString typeString() const;
1060  void accept(DocVisitor *v);
1061  int parse(bool userTitle,bool needsSeparator);
1062  int parseRcs();
1063  int parseXml();
1064  void appendLinkWord(const QCString &word);
1065 
1066  private:
1067  Type m_type;
1068  DocTitle * m_title;
1069 };
1070 
1075 {
1076  public:
1077  DocSimpleSectSep(DocNode *parent) { m_parent = parent; }
1078  Kind kind() const { return Kind_SimpleSectSep; }
1079  void accept(DocVisitor *v) { v->visit(this); }
1080 
1081  private:
1082 };
1083 
1085 class DocParamSect : public CompAccept<DocParamSect>, public DocNode
1086 {
1087  friend class DocParamList;
1088  public:
1089  enum Type
1090  {
1091  Unknown, Param, RetVal, Exception, TemplateParam
1092  };
1093  enum Direction
1094  {
1095  In=1, Out=2, InOut=3, Unspecified=0
1096  };
1097  DocParamSect(DocNode *parent,Type t)
1098  : m_type(t), m_hasInOutSpecifier(FALSE), m_hasTypeSpecifier(FALSE)
1099  { m_parent = parent; }
1100  int parse(const QCString &cmdName,bool xmlContext,Direction d);
1101  Kind kind() const { return Kind_ParamSect; }
1102  Type type() const { return m_type; }
1104  bool hasInOutSpecifier() const { return m_hasInOutSpecifier; }
1105  bool hasTypeSpecifier() const { return m_hasTypeSpecifier; }
1106 
1107  private:
1108  Type m_type;
1109  bool m_hasInOutSpecifier;
1110  bool m_hasTypeSpecifier;
1111 };
1112 
1114 class DocPara : public CompAccept<DocPara>, public DocNode
1115 {
1116  public:
1117  DocPara(DocNode *parent) :
1118  m_isFirst(FALSE), m_isLast(FALSE) { m_parent = parent; }
1119  int parse();
1120  Kind kind() const { return Kind_Para; }
1121  bool isEmpty() const { return m_children.isEmpty(); }
1123  void markFirst(bool v=TRUE) { m_isFirst=v; }
1124  void markLast(bool v=TRUE) { m_isLast=v; }
1125  bool isFirst() const { return m_isFirst; }
1126  bool isLast() const { return m_isLast; }
1127 
1128  int handleCommand(const QCString &cmdName);
1129  int handleHtmlStartTag(const QCString &tagName,const HtmlAttribList &tagHtmlAttribs);
1130  int handleHtmlEndTag(const QCString &tagName);
1131  int handleSimpleSection(DocSimpleSect::Type t,bool xmlContext=FALSE);
1132  int handleXRefItem();
1133  int handleParamSection(const QCString &cmdName,DocParamSect::Type t,
1134  bool xmlContext,
1135  int direction);
1136  void handleIncludeOperator(const QCString &cmdName,DocIncOperator::Type t);
1137  void handleImage(const QCString &cmdName);
1138  template<class T> void handleFile(const QCString &cmdName);
1139  void handleInclude(const QCString &cmdName,DocInclude::Type t);
1140  void handleLink(const QCString &cmdName,bool isJavaLink);
1141  void handleCite();
1142  void handleRef(const QCString &cmdName);
1143  void handleSection(const QCString &cmdName);
1144  void handleInheritDoc();
1145  void handleVhdlFlow();
1146  int handleStartCode();
1147  int handleHtmlHeader(const HtmlAttribList &tagHtmlAttribs,int level);
1148 
1149  bool injectToken(int tok,const QCString &tokText);
1150 
1151  private:
1152  QCString m_sectionId;
1153  bool m_isFirst;
1154  bool m_isLast;
1155 };
1156 
1158 class DocParamList : public DocNode
1159 {
1160  public:
1161  DocParamList(DocNode *parent,DocParamSect::Type t,DocParamSect::Direction d)
1162  : m_type(t), m_dir(d), m_isFirst(TRUE), m_isLast(TRUE)
1163  { m_paragraphs.setAutoDelete(TRUE);
1164  m_params.setAutoDelete(TRUE);
1165  m_paramTypes.setAutoDelete(TRUE);
1166  m_parent = parent;
1167  }
1168  virtual ~DocParamList() { }
1169  Kind kind() const { return Kind_ParamList; }
1170  const QList<DocNode> &parameters() { return m_params; }
1171  const QList<DocNode> &paramTypes() { return m_paramTypes; }
1172  DocParamSect::Type type() const { return m_type; }
1173  DocParamSect::Direction direction() const { return m_dir; }
1174  void markFirst(bool b=TRUE) { m_isFirst=b; }
1175  void markLast(bool b=TRUE) { m_isLast=b; }
1176  bool isFirst() const { return m_isFirst; }
1177  bool isLast() const { return m_isLast; }
1179  {
1180  v->visitPre(this);
1181  QListIterator<DocPara> cli(m_paragraphs);
1182  DocNode *n;
1183  for (cli.toFirst();(n=cli.current());++cli) n->accept(v);
1184  v->visitPost(this);
1185  }
1186  int parse(const QCString &cmdName);
1187  int parseXml(const QCString &paramName);
1188 
1189  private:
1190  QList<DocPara> m_paragraphs;
1191  QList<DocNode> m_params;
1192  QList<DocNode> m_paramTypes;
1193  DocParamSect::Type m_type;
1194  DocParamSect::Direction m_dir;
1195  bool m_isFirst;
1196  bool m_isLast;
1197 };
1198 
1201 {
1202  public:
1204  { m_paragraph=new DocPara(this); m_parent = parent; }
1205  int parse();
1206  virtual ~DocSimpleListItem() { delete m_paragraph; }
1207  Kind kind() const { return Kind_SimpleListItem; }
1209  {
1210  v->visitPre(this);
1211  m_paragraph->accept(v);
1212  v->visitPost(this);
1213  }
1214 
1215  private:
1216  DocPara *m_paragraph;
1217 };
1218 
1220 class DocHtmlListItem : public CompAccept<DocHtmlListItem>, public DocNode
1221 {
1222  public:
1223  DocHtmlListItem(DocNode *parent,const HtmlAttribList &attribs,int num) :
1224  m_attribs(attribs), m_itemNum(num) { m_parent = parent; }
1225  Kind kind() const { return Kind_HtmlListItem; }
1226  int itemNumber() const { return m_itemNum; }
1227  const HtmlAttribList &attribs() const { return m_attribs; }
1229  int parse();
1230  int parseXml();
1231 
1232  private:
1233  HtmlAttribList m_attribs;
1234  int m_itemNum;
1235 };
1236 
1238 class DocHtmlDescData : public CompAccept<DocHtmlDescData>, public DocNode
1239 {
1240  public:
1241  DocHtmlDescData(DocNode *parent) { m_parent = parent; }
1242  Kind kind() const { return Kind_HtmlDescData; }
1243  const HtmlAttribList &attribs() const { return m_attribs; }
1245  int parse();
1246 
1247  private:
1248  HtmlAttribList m_attribs;
1249 };
1250 
1252 class DocHtmlCell : public CompAccept<DocHtmlCell>, public DocNode
1253 {
1254  friend class DocHtmlTable;
1255  public:
1256  enum Alignment { Left, Right, Center };
1257  DocHtmlCell(DocNode *parent,const HtmlAttribList &attribs,bool isHeading) :
1258  m_isHeading(isHeading),
1259  m_isFirst(FALSE), m_isLast(FALSE), m_attribs(attribs),
1260  m_rowIdx(-1), m_colIdx(-1) { m_parent = parent; }
1261  bool isHeading() const { return m_isHeading; }
1262  bool isFirst() const { return m_isFirst; }
1263  bool isLast() const { return m_isLast; }
1264  Kind kind() const { return Kind_HtmlCell; }
1266  void markFirst(bool v=TRUE) { m_isFirst=v; }
1267  void markLast(bool v=TRUE) { m_isLast=v; }
1268  const HtmlAttribList &attribs() const { return m_attribs; }
1269  int parse();
1270  int parseXml();
1271  int rowIndex() const { return m_rowIdx; }
1272  int columnIndex() const { return m_colIdx; }
1273  int rowSpan() const;
1274  int colSpan() const;
1275  Alignment alignment() const;
1276 
1277  private:
1278  void setRowIndex(int idx) { m_rowIdx = idx; }
1279  void setColumnIndex(int idx) { m_colIdx = idx; }
1280  bool m_isHeading;
1281  bool m_isFirst;
1282  bool m_isLast;
1283  HtmlAttribList m_attribs;
1284  int m_rowIdx;
1285  int m_colIdx;
1286 };
1287 
1289 class DocHtmlCaption : public CompAccept<DocHtmlCaption>, public DocNode
1290 {
1291  public:
1292  DocHtmlCaption(DocNode *parent,const HtmlAttribList &attribs);
1293  Kind kind() const { return Kind_HtmlCaption; }
1295  const HtmlAttribList &attribs() const { return m_attribs; }
1296  int parse();
1297  bool hasCaptionId() const { return m_hasCaptionId; }
1298  QCString file() const { return m_file; }
1299  QCString anchor() const { return m_anchor; }
1300 
1301  private:
1302  HtmlAttribList m_attribs;
1303  bool m_hasCaptionId;
1304  QCString m_file;
1305  QCString m_anchor;
1306 };
1307 
1309 class DocHtmlRow : public CompAccept<DocHtmlRow>, public DocNode
1310 {
1311  friend class DocHtmlTable;
1312  public:
1313  DocHtmlRow(DocNode *parent,const HtmlAttribList &attribs) :
1314  m_attribs(attribs), m_visibleCells(-1), m_rowIdx(-1) { m_parent = parent; }
1315  Kind kind() const { return Kind_HtmlRow; }
1316  uint numCells() const { return m_children.count(); }
1318  const HtmlAttribList &attribs() const { return m_attribs; }
1319  int parse();
1320  int parseXml(bool header);
1321  bool isHeading() const { // a row is a table heading if all cells are marked as such
1322  bool heading=TRUE;
1323  QListIterator<DocNode> it(m_children);
1324  DocNode *n;
1325  for (;(n=it.current());++it)
1326  {
1327  if (n->kind()==Kind_HtmlCell)
1328  {
1329  heading = heading && ((DocHtmlCell*)n)->isHeading();
1330  }
1331  }
1332  return m_children.count()>0 && heading;
1333  }
1334  void setVisibleCells(int n) { m_visibleCells = n; }
1335  int visibleCells() const { return m_visibleCells; }
1336  int rowIndex() const { return m_rowIdx; }
1337 
1338  private:
1339  void setRowIndex(int idx) { m_rowIdx = idx; }
1340  HtmlAttribList m_attribs;
1341  int m_visibleCells;
1342  int m_rowIdx;
1343 };
1344 
1346 class DocHtmlTable : public CompAccept<DocHtmlTable>, public DocNode
1347 {
1348  public:
1349  DocHtmlTable(DocNode *parent,const HtmlAttribList &attribs)
1350  : m_attribs(attribs) { m_caption=0; m_parent = parent; }
1351  ~DocHtmlTable() { delete m_caption; }
1352  Kind kind() const { return Kind_HtmlTable; }
1353  uint numRows() const { return m_children.count(); }
1354  bool hasCaption() { return m_caption!=0; }
1355  const HtmlAttribList &attribs() const { return m_attribs; }
1356  int parse();
1357  int parseXml();
1358  uint numColumns() const { return m_numCols; }
1359  void accept(DocVisitor *v);
1360  DocHtmlCaption *caption() const { return m_caption; }
1361  DocHtmlRow *firstRow() const {
1362  DocNode *n = m_children.getFirst();
1363  if (n && n->kind()==Kind_HtmlRow) return (DocHtmlRow*)n;
1364  return 0;
1365  }
1366 
1367  private:
1368  void computeTableGrid();
1369  DocHtmlCaption *m_caption;
1370  HtmlAttribList m_attribs;
1371  int m_numCols;
1372 };
1373 
1375 class DocHtmlBlockQuote : public CompAccept<DocHtmlBlockQuote>, public DocNode
1376 {
1377  public:
1379  : m_attribs(attribs) { m_parent = parent; }
1380  Kind kind() const { return Kind_HtmlBlockQuote; }
1381  int parse();
1383  const HtmlAttribList &attribs() const { return m_attribs; }
1384 
1385  private:
1386  HtmlAttribList m_attribs;
1387 };
1388 
1390 class DocText : public CompAccept<DocText>, public DocNode
1391 {
1392  public:
1393  DocText() {}
1394  Kind kind() const { return Kind_Text; }
1396  void parse();
1397  bool isEmpty() const { return m_children.isEmpty(); }
1398 };
1399 
1401 class DocRoot : public CompAccept<DocRoot>, public DocNode
1402 {
1403  public:
1404  DocRoot(bool indent,bool sl) : m_indent(indent), m_singleLine(sl) {}
1405  Kind kind() const { return Kind_Root; }
1407  void parse();
1408  bool indent() const { return m_indent; }
1409  bool singleLine() const { return m_singleLine; }
1410  bool isEmpty() const { return m_children.isEmpty(); }
1411 
1412  private:
1413  bool m_indent;
1414  bool m_singleLine;
1415 };
1416 
1417 
1418 #endif
Kind kind() const
Definition: docparser.h:1380
Kind kind() const
Definition: docparser.h:1008
Node representing an HTML blockquote.
Definition: docparser.h:1375
Kind kind() const
Definition: docparser.h:1169
void accept(DocVisitor *v)
Definition: docparser.h:452
Node representing an URL (or email address)
Definition: docparser.h:234
void accept(DocVisitor *v)
Definition: docparser.h:1178
Definition: docparser.h:412
Node representing a word.
Definition: docparser.h:195
Node representing some amount of white space.
Definition: docparser.h:428
void accept(DocVisitor *v)
Definition: docparser.h:898
Kind kind() const
Definition: docparser.h:265
void accept(DocVisitor *v)
Definition: docparser.h:1265
Node representing a Hypertext reference.
Definition: docparser.h:870
void accept(DocVisitor *v)
Definition: docparser.h:1036
Kind
Definition: docparser.h:83
Root node of a text fragment.
Definition: docparser.h:1390
Kind kind() const
Definition: docparser.h:896
void accept(DocVisitor *v)
Definition: docparser.h:297
Node representing a horizonal ruler.
Definition: docparser.h:261
The common base class of all entity definitions found in the sources.
Definition: definition.h:92
void accept(DocVisitor *v)
Definition: docparser.h:537
void accept(DocVisitor *v)
Definition: docparser.h:730
Node representing a simple section title.
Definition: docparser.h:652
void accept(DocVisitor *v)
Definition: docparser.h:279
Kind kind() const
Definition: docparser.h:419
void accept(DocVisitor *v)
Definition: docparser.h:778
A model of a class/file/namespace member symbol.
Definition: memberdef.h:43
Kind kind() const
Definition: docparser.h:794
virtual Kind kind() const =0
Kind kind() const
Definition: docparser.h:694
void accept(DocVisitor *v)
Definition: docparser.h:1406
Node representing a reference to some item.
Definition: docparser.h:822
void accept(DocVisitor *v)
Definition: docparser.h:588
Kind kind() const
Definition: docparser.h:1352
Kind kind() const
Definition: docparser.h:254
virtual ~DocNode()
Definition: docparser.h:141
void accept(DocVisitor *v)
Definition: docparser.h:1244
void accept(DocVisitor *v)
Definition: docparser.h:838
Node representing a style change.
Definition: docparser.h:309
Node representing an auto List.
Definition: docparser.h:617
void accept(DocVisitor *v)
Definition: docparser.h:796
Kind kind() const
Definition: docparser.h:1120
Node representing a citation of some bibliographic reference.
Definition: docparser.h:287
void accept(DocVisitor *v)
Definition: docparser.h:703
Node representing a HTML table caption.
Definition: docparser.h:1289
Kind kind() const
Definition: docparser.h:1020
Root node of documentation tree.
Definition: docparser.h:1401
Node representing a HTML table cell.
Definition: docparser.h:1252
Node representing an entry in the index.
Definition: docparser.h:578
void accept(DocVisitor *v)
Definition: docparser.h:1208
bool isPreformatted() const
Definition: docparser.h:158
Node representing a simple section.
Definition: docparser.h:1047
Node representing a paragraph in the documentation tree.
Definition: docparser.h:1114
void accept(DocVisitor *v)
Definition: docparser.h:1317
Kind kind() const
Definition: docparser.h:1207
Kind kind() const
Definition: docparser.h:532
Kind kind() const
Definition: docparser.h:984
void accept(DocVisitor *v)
Definition: docparser.h:997
Kind kind() const
Definition: docparser.h:1225
Node representing a special symbol.
Definition: docparser.h:344
void setInsidePreformatted(bool p)
Definition: docparser.h:162
Abstract visitor that participates in the visitor pattern.
Definition: docvisitor.h:90
void accept(DocVisitor *v)
Definition: docparser.h:420
Kind kind() const
Definition: docparser.h:1315
Node representing a VHDL flow chart.
Definition: docparser.h:789
Kind kind() const
Definition: docparser.h:276
Node representing a Html description list.
Definition: docparser.h:922
Node representing a HTML list item.
Definition: docparser.h:1220
Node representing a msc file.
Definition: docparser.h:741
Node representing a verbatim, unparsed text fragment.
Definition: docparser.h:441
A class representing a group of members.
Definition: membergroup.h:40
Node representing a Html description item.
Definition: docparser.h:907
Node Html heading.
Definition: docparser.h:890
void accept(DocVisitor *v)
Definition: docparser.h:754
Default accept implementation for compound nodes in the abstract syntax tree.
Definition: docparser.h:172
Kind kind() const
Definition: docparser.h:879
void accept(DocVisitor *v)
Definition: docparser.h:1294
Node representing a HTML table.
Definition: docparser.h:1346
Kind kind() const
Definition: docparser.h:1101
Kind kind() const
Definition: docparser.h:770
Kind kind() const
Definition: docparser.h:216
Kind kind() const
Definition: docparser.h:200
Kind kind() const
Definition: docparser.h:1264
void accept(DocVisitor *v)
Definition: docparser.h:222
void accept(DocVisitor *v)
Definition: docparser.h:1122
void accept(DocVisitor *v)
Definition: docparser.h:255
Node representing a dia file.
Definition: docparser.h:765
void accept(DocVisitor *v)
Definition: docparser.h:266
void accept(DocVisitor *v)
Definition: docparser.h:567
void accept(DocVisitor *v)
Definition: docparser.h:641
Node representing a HTML table row.
Definition: docparser.h:1309
void setParent(DocNode *parent)
Definition: docparser.h:150
Kind kind() const
Definition: docparser.h:1405
void accept(DocVisitor *v)
Definition: docparser.h:1079
Kind kind() const
Definition: docparser.h:621
Kind kind() const
Definition: docparser.h:857
void accept(DocVisitor *v)
Definition: docparser.h:1382
Node representing a line break.
Definition: docparser.h:250
Definition: qlist.h:126
Node representing a list of section references.
Definition: docparser.h:979
void accept(DocVisitor *v)
Definition: docparser.h:625
Kind kind() const
Definition: docparser.h:495
Kind kind() const
Definition: docparser.h:240
Node representing a reference to a section.
Definition: docparser.h:960
void accept(DocVisitor *v)
Definition: docparser.h:929
void accept(DocVisitor *v)
Definition: docparser.h:1228
Kind kind() const
Definition: docparser.h:562
Node representing an item of a cross-referenced list.
Definition: docparser.h:558
void accept(DocVisitor *v)
Definition: docparser.h:333
void accept(DocVisitor *v)
Definition: docparser.h:1395
Kind kind() const
Definition: docparser.h:669
Node representing a parameter section.
Definition: docparser.h:1085
void accept(DocVisitor *v)
Definition: docparser.h:675
DocNode * parent() const
Definition: docparser.h:147
void accept(DocVisitor *v)
Definition: docparser.h:659
Kind kind() const
Definition: docparser.h:658
void accept(DocVisitor *v)
Definition: docparser.h:985
Kind kind() const
Definition: docparser.h:328
Node representing an image.
Definition: docparser.h:688
Kind kind() const
Definition: docparser.h:291
Node representing a parameter list.
Definition: docparser.h:1158
void accept(DocVisitor *v)
Definition: docparser.h:861
void accept(DocVisitor *v)
Definition: docparser.h:1009
Kind kind() const
Definition: docparser.h:942
void accept(DocVisitor *v)
Definition: docparser.h:1021
DocNode()
Definition: docparser.h:138
Kind kind() const
Definition: docparser.h:1078
Node representing a normal section.
Definition: docparser.h:937
Node representing a Html list.
Definition: docparser.h:1028
void accept(DocVisitor *)
Definition: docparser.h:607
Node representing an internal reference to some item.
Definition: docparser.h:852
Kind kind() const
Definition: docparser.h:433
Node representing an included text block from file.
Definition: docparser.h:483
Node representing an block of paragraphs.
Definition: docparser.h:1003
Kind kind() const
Definition: docparser.h:1242
Kind kind() const
Definition: docparser.h:583
Node representing an anchor.
Definition: docparser.h:272
Kind kind() const
Definition: docparser.h:448
Abstract node interface with type information.
Definition: docparser.h:79
Kind kind() const
Definition: docparser.h:746
void accept(DocVisitor *v)
Definition: docparser.h:880
Kind kind() const
Definition: docparser.h:996
Node representing a separator between two simple sections of the same type.
Definition: docparser.h:1074
Node representing a simple list item.
Definition: docparser.h:1200
Kind kind() const
Definition: docparser.h:927
Unsorted dictionary of SectionInfo objects.
Definition: section.h:68
bool isEmpty() const
Returns TRUE iff the string is empty.
Definition: qcstring.h:189
void accept(DocVisitor *v)
Definition: docparser.h:914
void accept(DocVisitor *v)
Definition: docparser.h:1103
void accept(DocVisitor *v)
Definition: docparser.h:509
Kind kind() const
Definition: docparser.h:639
Node representing a HTML description data.
Definition: docparser.h:1238
Kind kind() const
Definition: docparser.h:722
A list of Html attributes.
Definition: htmlattrib.h:32
Kind kind() const
Definition: docparser.h:1293
This is an alternative implementation of QCString.
Definition: qcstring.h:131
Kind kind() const
Definition: docparser.h:965
Kind kind() const
Definition: docparser.h:605
Kind kind() const
Definition: docparser.h:827
void accept(DocVisitor *v)
Definition: docparser.h:435
Node representing a word that can be linked to something.
Definition: docparser.h:209
Kind kind() const
Definition: docparser.h:912
Node representing a simple list.
Definition: docparser.h:1016
Kind kind() const
Definition: docparser.h:1034
Kind kind() const
Definition: docparser.h:1057
Node representing a dot file.
Definition: docparser.h:717
void accept(DocVisitor *v)
Definition: docparser.h:241
virtual void accept(DocVisitor *v)=0
Node representing an item of a auto list.
Definition: docparser.h:635
Kind kind() const
Definition: docparser.h:1394
void accept(DocVisitor *v)
Definition: docparser.h:969
void accept(DocVisitor *v)
Definition: docparser.h:201
Node representing an internal section of documentation.
Definition: docparser.h:991
Node representing an item of a cross-referenced list.
Definition: docparser.h:665
Node representing a include/dontinclude operator block.
Definition: docparser.h:523
Node representing a copy of documentation block.
Definition: docparser.h:599
void accept(DocVisitor *v)
Definition: docparser.h:948