Doxygen
DocPara类 参考

Node representing a paragraph in the documentation tree 更多...

#include <docparser.h>

+ 类 DocPara 继承关系图:
+ DocPara 的协作图:

Public 成员函数

 DocPara (DocParser &parser, DocNode *parent)
 
int parse ()
 
Kind kind () const override
 
bool isEmpty () const
 
void markFirst (bool v=TRUE)
 
void markLast (bool v=TRUE)
 
bool isFirst () const
 
bool isLast () const
 
int handleCommand (const QCString &cmdName, const int tok)
 
int handleHtmlStartTag (const QCString &tagName, const HtmlAttribList &tagHtmlAttribs)
 
int handleHtmlEndTag (const QCString &tagName)
 
int handleSimpleSection (DocSimpleSect::Type t, bool xmlContext=FALSE)
 
int handleXRefItem ()
 
int handleParamSection (const QCString &cmdName, DocParamSect::Type t, bool xmlContext, int direction)
 
void handleIncludeOperator (const QCString &cmdName, DocIncOperator::Type t)
 
void handleImage (const QCString &cmdName)
 
template<class T >
void handleFile (const QCString &cmdName)
 
void handleInclude (const QCString &cmdName, DocInclude::Type t)
 
void handleLink (const QCString &cmdName, bool isJavaLink)
 
void handleCite ()
 
void handleEmoji ()
 
void handleRef (const QCString &cmdName)
 
void handleSection (const QCString &cmdName)
 
void handleInheritDoc ()
 
void handleVhdlFlow ()
 
void handleIline ()
 
int handleStartCode ()
 
int handleHtmlHeader (const HtmlAttribList &tagHtmlAttribs, int level)
 
bool injectToken (int tok, const QCString &tokText)
 
const HtmlAttribListattribs () const
 
void setAttribs (const HtmlAttribList &attribs)
 
- Public 成员函数 继承自 CompAccept< DocPara >
 CompAccept (DocParser &parser)
 
void accept (DocVisitor *v) override
 
const DocNodeListchildren () const
 
DocNodeListchildren ()
 
- Public 成员函数 继承自 DocNode
 DocNode (DocParser &parser)
 
virtual ~DocNode ()
 
DocNodeparent () const
 
void setParent (DocNode *parent)
 
bool isPreformatted () const
 

Private 属性

QCString m_sectionId
 
bool m_isFirst = false
 
bool m_isLast = false
 
HtmlAttribList m_attribs
 

额外继承的成员函数

- Public 类型 继承自 DocNode
enum  Kind {
  Kind_Root = 0, Kind_Word = 1, Kind_WhiteSpace = 2, Kind_Para = 3,
  Kind_AutoList = 4, Kind_AutoListItem = 5, Kind_Symbol = 6, Kind_URL = 7,
  Kind_StyleChange = 8, Kind_SimpleSect = 9, Kind_Title = 10, Kind_SimpleList = 11,
  Kind_SimpleListItem = 12, Kind_Section = 13, Kind_Verbatim = 14, Kind_XRefItem = 15,
  Kind_HtmlList = 16, Kind_HtmlListItem = 17, Kind_HtmlDescList = 18, Kind_HtmlDescData = 19,
  Kind_HtmlDescTitle = 20, Kind_HtmlTable = 21, Kind_HtmlRow = 22, Kind_HtmlCell = 23,
  Kind_HtmlCaption = 24, Kind_LineBreak = 25, Kind_HorRuler = 26, Kind_Anchor = 27,
  Kind_IndexEntry = 28, Kind_Internal = 29, Kind_HRef = 30, Kind_Include = 31,
  Kind_IncOperator = 32, Kind_HtmlHeader = 33, Kind_Image = 34, Kind_DotFile = 35,
  Kind_Link = 36, Kind_Ref = 37, Kind_Formula = 38, Kind_SecRefItem = 39,
  Kind_SecRefList = 40, Kind_SimpleSectSep = 41, Kind_LinkedWord = 42, Kind_ParamSect = 43,
  Kind_ParamList = 44, Kind_InternalRef = 45, Kind_Copy = 46, Kind_Text = 47,
  Kind_MscFile = 48, Kind_HtmlBlockQuote = 49, Kind_VhdlFlow = 50, Kind_ParBlock = 51,
  Kind_DiaFile = 52, Kind_Emoji = 53, Kind_Sep = 54
}
 
- Protected 类型 继承自 DocNode
enum  RefType { Unknown, Anchor, Section, Table }
 
- Protected 成员函数 继承自 DocNode
void setInsidePreformatted (bool p)
 
- Protected 属性 继承自 CompAccept< DocPara >
DocNodeList m_children
 
- Protected 属性 继承自 DocNode
DocNodem_parent = 0
 
DocParserm_parser
 

详细描述

Node representing a paragraph in the documentation tree

在文件 docparser.h1178 行定义.

构造及析构函数说明

◆ DocPara()

DocPara::DocPara ( DocParser parser,
DocNode parent 
)
inline

在文件 docparser.h1181 行定义.

1181  :

引用了 DocNode::m_parent , 以及 DocNode::parent().

成员函数说明

◆ attribs()

const HtmlAttribList& DocPara::attribs ( ) const
inline

在文件 docparser.h1215 行定义.

1215 { return m_attribs; }

引用了 m_attribs.

被这些函数引用 DocRoot::parse(), setAttribs() , 以及 HtmlDocVisitor::visitPre().

◆ handleCite()

void DocPara::handleCite ( )

在文件 docparser.cpp4767 行定义.

4768 {
4769  // get the argument of the cite command.
4770  int tok=m_parser.tokenizer.lex();
4771  if (tok!=TK_WHITESPACE)
4772  {
4773  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"expected whitespace after \\%s command",
4774  qPrint("cite"));
4775  return;
4776  }
4778  tok=m_parser.tokenizer.lex();
4779  if (tok==0)
4780  {
4781  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"unexpected end of comment block while parsing the "
4782  "argument of command %s\n", qPrint("cite"));
4783  return;
4784  }
4785  else if (tok!=TK_WORD && tok!=TK_LNKWORD)
4786  {
4787  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"unexpected token %s as the argument of %s",
4788  DocTokenizer::tokToString(tok),qPrint("cite"));
4789  return;
4790  }
4792  m_children.push_back(
4793  std::make_unique<DocCite>(
4795 
4797 }

引用了 DocParserContext::context, DocParser::context, DocParserContext::fileName, DocTokenizer::getLineNr(), DocTokenizer::lex(), CompAccept< DocPara >::m_children, DocNode::m_parser, TokenInfo::name, qPrint(), TokenInfo::sectionId, DocTokenizer::setStateCite(), DocTokenizer::setStatePara(), TK_LNKWORD, TK_WHITESPACE, TK_WORD, DocParserContext::token, DocParser::tokenizer, DocTokenizer::tokToString() , 以及 warn_doc_error().

被这些函数引用 handleCommand().

◆ handleCommand()

int DocPara::handleCommand ( const QCString cmdName,
const int  tok 
)

在文件 docparser.cpp5354 行定义.

5355 {
5356  DBG(("handleCommand(%s)\n",qPrint(cmdName)));
5357  int retval = RetVal_OK;
5358  int cmdId = Mappers::cmdMapper->map(cmdName);
5359  switch (cmdId)
5360  {
5361  case CMD_UNKNOWN:
5362  m_children.push_back(std::make_unique<DocWord>(m_parser,this,TK_COMMAND_CHAR(tok) + cmdName));
5363  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"Found unknown command '%s%s'",TK_COMMAND_CHAR(tok),qPrint(cmdName));
5364  break;
5365  case CMD_EMPHASIS:
5366  m_children.push_back(std::make_unique<DocStyleChange>(m_parser,this,(uint)m_parser.context.nodeStack.size(),DocStyleChange::Italic,cmdName,TRUE));
5367  retval=m_parser.handleStyleArgument(this,m_children,cmdName);
5368  m_children.push_back(std::make_unique<DocStyleChange>(m_parser,this,(uint)m_parser.context.nodeStack.size(),DocStyleChange::Italic,cmdName,FALSE));
5369  if (retval!=TK_WORD) m_children.push_back(std::make_unique<DocWhiteSpace>(m_parser,this," "));
5370  break;
5371  case CMD_BOLD:
5372  m_children.push_back(std::make_unique<DocStyleChange>(m_parser,this,(uint)m_parser.context.nodeStack.size(),DocStyleChange::Bold,cmdName,TRUE));
5373  retval=m_parser.handleStyleArgument(this,m_children,cmdName);
5374  m_children.push_back(std::make_unique<DocStyleChange>(m_parser,this,(uint)m_parser.context.nodeStack.size(),DocStyleChange::Bold,cmdName,FALSE));
5375  if (retval!=TK_WORD) m_children.push_back(std::make_unique<DocWhiteSpace>(m_parser,this," "));
5376  break;
5377  case CMD_CODE:
5378  m_children.push_back(std::make_unique<DocStyleChange>(m_parser,this,(uint)m_parser.context.nodeStack.size(),DocStyleChange::Code,cmdName,TRUE));
5379  retval=m_parser.handleStyleArgument(this,m_children,cmdName);
5380  m_children.push_back(std::make_unique<DocStyleChange>(m_parser,this,(uint)m_parser.context.nodeStack.size(),DocStyleChange::Code,cmdName,FALSE));
5381  if (retval!=TK_WORD) m_children.push_back(std::make_unique<DocWhiteSpace>(m_parser,this," "));
5382  break;
5383  case CMD_BSLASH:
5384  m_children.push_back(std::make_unique<DocSymbol>(m_parser,this,DocSymbol::Sym_BSlash));
5385  break;
5386  case CMD_AT:
5387  m_children.push_back(std::make_unique<DocSymbol>(m_parser,this,DocSymbol::Sym_At));
5388  break;
5389  case CMD_LESS:
5390  m_children.push_back(std::make_unique<DocSymbol>(m_parser,this,DocSymbol::Sym_Less));
5391  break;
5392  case CMD_GREATER:
5393  m_children.push_back(std::make_unique<DocSymbol>(m_parser,this,DocSymbol::Sym_Greater));
5394  break;
5395  case CMD_AMP:
5396  m_children.push_back(std::make_unique<DocSymbol>(m_parser,this,DocSymbol::Sym_Amp));
5397  break;
5398  case CMD_DOLLAR:
5399  m_children.push_back(std::make_unique<DocSymbol>(m_parser,this,DocSymbol::Sym_Dollar));
5400  break;
5401  case CMD_HASH:
5402  m_children.push_back(std::make_unique<DocSymbol>(m_parser,this,DocSymbol::Sym_Hash));
5403  break;
5404  case CMD_PIPE:
5405  m_children.push_back(std::make_unique<DocSymbol>(m_parser,this,DocSymbol::Sym_Pipe));
5406  break;
5407  case CMD_DCOLON:
5408  m_children.push_back(std::make_unique<DocSymbol>(m_parser,this,DocSymbol::Sym_DoubleColon));
5409  break;
5410  case CMD_PERCENT:
5411  m_children.push_back(std::make_unique<DocSymbol>(m_parser,this,DocSymbol::Sym_Percent));
5412  break;
5413  case CMD_NDASH:
5414  m_children.push_back(std::make_unique<DocSymbol>(m_parser,this,DocSymbol::Sym_Minus));
5415  m_children.push_back(std::make_unique<DocSymbol>(m_parser,this,DocSymbol::Sym_Minus));
5416  break;
5417  case CMD_MDASH:
5418  m_children.push_back(std::make_unique<DocSymbol>(m_parser,this,DocSymbol::Sym_Minus));
5419  m_children.push_back(std::make_unique<DocSymbol>(m_parser,this,DocSymbol::Sym_Minus));
5420  m_children.push_back(std::make_unique<DocSymbol>(m_parser,this,DocSymbol::Sym_Minus));
5421  break;
5422  case CMD_QUOTE:
5423  m_children.push_back(std::make_unique<DocSymbol>(m_parser,this,DocSymbol::Sym_Quot));
5424  break;
5425  case CMD_PUNT:
5426  m_children.push_back(std::make_unique<DocSymbol>(m_parser,this,DocSymbol::Sym_Dot));
5427  break;
5428  case CMD_PLUS:
5429  m_children.push_back(std::make_unique<DocSymbol>(m_parser,this,DocSymbol::Sym_Plus));
5430  break;
5431  case CMD_MINUS:
5432  m_children.push_back(std::make_unique<DocSymbol>(m_parser,this,DocSymbol::Sym_Minus));
5433  break;
5434  case CMD_EQUAL:
5435  m_children.push_back(std::make_unique<DocSymbol>(m_parser,this,DocSymbol::Sym_Equal));
5436  break;
5437  case CMD_SA:
5441  break;
5442  case CMD_RETURN:
5445  break;
5446  case CMD_AUTHOR:
5448  break;
5449  case CMD_AUTHORS:
5451  break;
5452  case CMD_VERSION:
5454  break;
5455  case CMD_SINCE:
5457  break;
5458  case CMD_DATE:
5460  break;
5461  case CMD_NOTE:
5463  break;
5464  case CMD_WARNING:
5466  break;
5467  case CMD_PRE:
5469  break;
5470  case CMD_POST:
5472  break;
5473  case CMD_COPYRIGHT:
5475  break;
5476  case CMD_INVARIANT:
5478  break;
5479  case CMD_REMARK:
5481  break;
5482  case CMD_ATTENTION:
5484  break;
5485  case CMD_PAR:
5487  break;
5488  case CMD_LI:
5489  {
5490  DocSimpleList *sl=new DocSimpleList(m_parser,this);
5491  m_children.push_back(std::unique_ptr<DocSimpleList>(sl));
5492  retval = sl->parse();
5493  }
5494  break;
5495  case CMD_SECTION:
5496  {
5497  handleSection(cmdName);
5498  retval = RetVal_Section;
5499  }
5500  break;
5501  case CMD_SUBSECTION:
5502  {
5503  handleSection(cmdName);
5504  retval = RetVal_Subsection;
5505  }
5506  break;
5507  case CMD_SUBSUBSECTION:
5508  {
5509  handleSection(cmdName);
5510  retval = RetVal_Subsubsection;
5511  }
5512  break;
5513  case CMD_PARAGRAPH:
5514  {
5515  handleSection(cmdName);
5516  retval = RetVal_Paragraph;
5517  }
5518  break;
5519  case CMD_STARTCODE:
5520  {
5522  retval = handleStartCode();
5523  }
5524  break;
5525  case CMD_HTMLONLY:
5526  {
5528  retval = m_parser.tokenizer.lex();
5530  if (retval==0) warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"htmlonly section ended without end marker");
5532  }
5533  break;
5534  case CMD_MANONLY:
5535  {
5537  retval = m_parser.tokenizer.lex();
5539  if (retval==0) warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"manonly section ended without end marker");
5541  }
5542  break;
5543  case CMD_RTFONLY:
5544  {
5546  retval = m_parser.tokenizer.lex();
5548  if (retval==0) warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"rtfonly section ended without end marker");
5550  }
5551  break;
5552  case CMD_LATEXONLY:
5553  {
5555  retval = m_parser.tokenizer.lex();
5557  if (retval==0) warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"latexonly section ended without end marker");
5559  }
5560  break;
5561  case CMD_XMLONLY:
5562  {
5564  retval = m_parser.tokenizer.lex();
5566  if (retval==0) warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"xmlonly section ended without end marker");
5568  }
5569  break;
5570  case CMD_DBONLY:
5571  {
5573  retval = m_parser.tokenizer.lex();
5575  if (retval==0) warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"docbookonly section ended without end marker");
5577  }
5578  break;
5579  case CMD_VERBATIM:
5580  {
5582  retval = m_parser.tokenizer.lex();
5584  if (retval==0) warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"verbatim section ended without end marker");
5586  }
5587  break;
5588  case CMD_DOT:
5589  {
5592  QCString width,height;
5593  m_parser.defaultHandleTitleAndSize(CMD_DOT,dv.get(),dv->children(),width,height);
5595  retval = m_parser.tokenizer.lex();
5596  dv->setText(m_parser.context.token->verb);
5597  dv->setWidth(width);
5598  dv->setHeight(height);
5599  dv->setLocation(m_parser.context.fileName,m_parser.tokenizer.getLineNr());
5600  if (!Config_getBool(HAVE_DOT))
5601  {
5602  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"ignoring \\dot command because HAVE_DOT is not set");
5603  }
5604  else
5605  {
5606  m_children.push_back(std::move(dv));
5607  }
5608  if (retval==0) warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"dot section ended without end marker");
5610  }
5611  break;
5612  case CMD_MSC:
5613  {
5616  QCString width,height;
5617  m_parser.defaultHandleTitleAndSize(CMD_MSC,dv.get(),dv->children(),width,height);
5619  retval = m_parser.tokenizer.lex();
5620  dv->setText(m_parser.context.token->verb);
5621  dv->setWidth(width);
5622  dv->setHeight(height);
5623  dv->setLocation(m_parser.context.fileName,m_parser.tokenizer.getLineNr());
5624  m_children.push_back(std::move(dv));
5625  if (retval==0) warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"msc section ended without end marker");
5627  }
5628  break;
5629  case CMD_STARTUML:
5630  {
5631  static QCString jarPath = Config_getString(PLANTUML_JAR_PATH);
5633  retval = m_parser.tokenizer.lex();
5634 
5635  QCString fullMatch = m_parser.context.token->sectionId;
5636  QCString sectionId = "";
5637  int idx = fullMatch.find('{');
5638  int idxEnd = fullMatch.find("}",idx+1);
5639  StringVector optList;
5640  QCString engine;
5641  if (idx != -1) // options present
5642  {
5643  QCString optStr = fullMatch.mid(idx+1,idxEnd-idx-1).stripWhiteSpace();
5644  optList = split(optStr.str(),",");
5645  for (const auto &opt : optList)
5646  {
5647  if (opt.empty()) continue;
5648  bool found = false;
5649  QCString locOpt(opt);
5650  locOpt = locOpt.stripWhiteSpace().lower();
5651  if (g_plantumlEngine.find(locOpt.str())!=g_plantumlEngine.end())
5652  {
5653  if (!engine.isEmpty())
5654  {
5655  warn(m_parser.context.fileName,m_parser.tokenizer.getLineNr(), "Multiple definition of engine for '\\startuml'");
5656  }
5657  engine = locOpt;
5658  found = true;
5659  }
5660  if (!found)
5661  {
5662  if (sectionId.isEmpty())
5663  {
5664  sectionId = opt;
5665  }
5666  else
5667  {
5668  warn(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"Multiple use of of filename for '\\startuml'");
5669  }
5670  }
5671  }
5672  }
5673  else
5674  {
5675  sectionId = m_parser.context.token->sectionId;
5676  }
5677  if (engine.isEmpty()) engine = "uml";
5678 
5679  if (sectionId.isEmpty())
5680  {
5682  retval = m_parser.tokenizer.lex();
5683  assert(retval==RetVal_OK);
5684 
5685  sectionId = m_parser.context.token->sectionId;
5686  sectionId = sectionId.stripWhiteSpace();
5687  }
5688 
5689  QCString plantFile(sectionId);
5691  dv->setEngine(engine);
5693  QCString width,height;
5696  retval = m_parser.tokenizer.lex();
5697  int line = 0;
5699  if (engine == "ditaa")
5700  {
5701  dv->setUseBitmap(true);
5702  }
5703  else if (engine == "uml")
5704  {
5705  int i = trimmedVerb.find('\n');
5706  QCString firstLine = i==-1 ? trimmedVerb : trimmedVerb.left(i);
5707  if (firstLine.stripWhiteSpace() == "ditaa") dv->setUseBitmap(true);
5708  }
5709  dv->setText(trimmedVerb);
5710  dv->setWidth(width);
5711  dv->setHeight(height);
5713  if (jarPath.isEmpty())
5714  {
5715  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"ignoring \\startuml command because PLANTUML_JAR_PATH is not set");
5716  delete dv;
5717  }
5718  else
5719  {
5720  m_children.push_back(std::unique_ptr<DocVerbatim>(dv));
5721  }
5722  if (retval==0) warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"startuml section ended without end marker");
5724  }
5725  break;
5726  case CMD_ENDPARBLOCK:
5727  retval=RetVal_EndParBlock;
5728  break;
5729  case CMD_ENDCODE:
5730  case CMD_ENDHTMLONLY:
5731  case CMD_ENDMANONLY:
5732  case CMD_ENDRTFONLY:
5733  case CMD_ENDLATEXONLY:
5734  case CMD_ENDXMLONLY:
5735  case CMD_ENDDBONLY:
5736  case CMD_ENDLINK:
5737  case CMD_ENDVERBATIM:
5738  case CMD_ENDDOT:
5739  case CMD_ENDMSC:
5740  case CMD_ENDUML:
5742  break;
5743  case CMD_PARAM:
5745  break;
5746  case CMD_TPARAM:
5748  break;
5749  case CMD_RETVAL:
5750  retval = handleParamSection(cmdName,DocParamSect::RetVal);
5751  break;
5752  case CMD_EXCEPTION:
5753  retval = handleParamSection(cmdName,DocParamSect::Exception);
5754  break;
5755  case CMD_XREFITEM:
5756  retval = handleXRefItem();
5757  break;
5758  case CMD_LINEBREAK:
5759  {
5760  m_children.push_back(std::make_unique<DocLineBreak>(m_parser,this));
5761  }
5762  break;
5763  case CMD_ANCHOR:
5764  {
5765  DocAnchor *anchor = m_parser.handleAnchor(this);
5766  if (anchor)
5767  {
5768  m_children.push_back(std::unique_ptr<DocAnchor>(anchor));
5769  }
5770  }
5771  break;
5772  case CMD_ADDINDEX:
5773  {
5774  DocIndexEntry *ie = new DocIndexEntry(m_parser,this,
5777  m_children.push_back(std::unique_ptr<DocIndexEntry>(ie));
5778  retval = ie->parse();
5779  }
5780  break;
5781  case CMD_INTERNAL:
5782  retval = RetVal_Internal;
5783  break;
5784  case CMD_ENDINTERNAL:
5785  retval = RetVal_EndInternal;
5786  break;
5787  case CMD_PARBLOCK:
5788  {
5789  DocParBlock *block = new DocParBlock(m_parser,this);
5790  m_children.push_back(std::unique_ptr<DocParBlock>(block));
5791  retval = block->parse();
5792  }
5793  break;
5794  case CMD_COPYDOC: // fall through
5795  case CMD_COPYBRIEF: // fall through
5796  case CMD_COPYDETAILS:
5797  //retval = RetVal_CopyDoc;
5798  // these commands should already be resolved by processCopyDoc()
5799  break;
5800  case CMD_INCLUDE:
5802  break;
5803  case CMD_INCWITHLINES:
5805  break;
5806  case CMD_DONTINCLUDE:
5808  break;
5809  case CMD_HTMLINCLUDE:
5811  break;
5812  case CMD_LATEXINCLUDE:
5814  break;
5815  case CMD_RTFINCLUDE:
5817  break;
5818  case CMD_MANINCLUDE:
5820  break;
5821  case CMD_XMLINCLUDE:
5823  break;
5824  case CMD_DOCBOOKINCLUDE:
5826  break;
5827  case CMD_VERBINCLUDE:
5829  break;
5830  case CMD_SNIPPET:
5832  break;
5833  case CMD_SNIPWITHLINES:
5835  break;
5836  case CMD_INCLUDEDOC:
5838  break;
5839  case CMD_SNIPPETDOC:
5841  break;
5842  case CMD_SKIP:
5844  break;
5845  case CMD_UNTIL:
5847  break;
5848  case CMD_SKIPLINE:
5850  break;
5851  case CMD_LINE:
5853  break;
5854  case CMD_IMAGE:
5855  handleImage(cmdName);
5856  break;
5857  case CMD_DOTFILE:
5858  if (!Config_getBool(HAVE_DOT))
5859  {
5861  "ignoring \\dotfile command because HAVE_DOT is not set");
5862  }
5863  else
5864  {
5865  handleFile<DocDotFile>(cmdName);
5866  }
5867  break;
5868  case CMD_VHDLFLOW:
5869  handleVhdlFlow();
5870  break;
5871  case CMD_MSCFILE:
5872  handleFile<DocMscFile>(cmdName);
5873  break;
5874  case CMD_DIAFILE:
5875  handleFile<DocDiaFile>(cmdName);
5876  break;
5877  case CMD_LINK:
5878  handleLink(cmdName,FALSE);
5879  break;
5880  case CMD_JAVALINK:
5881  handleLink(cmdName,TRUE);
5882  break;
5883  case CMD_CITE:
5884  handleCite();
5885  break;
5886  case CMD_EMOJI:
5887  handleEmoji();
5888  break;
5889  case CMD_REF: // fall through
5890  case CMD_SUBPAGE:
5891  handleRef(cmdName);
5892  break;
5893  case CMD_SECREFLIST:
5894  {
5895  DocSecRefList *list = new DocSecRefList(m_parser,this);
5896  m_children.push_back(std::unique_ptr<DocSecRefList>(list));
5897  list->parse();
5898  }
5899  break;
5900  case CMD_SECREFITEM:
5902  break;
5903  case CMD_ENDSECREFLIST:
5905  break;
5906  case CMD_FORMULA:
5907  {
5908  m_children.push_back(
5909  std::make_unique<DocFormula>(
5910  m_parser,this,m_parser.context.token->id));
5911  }
5912  break;
5913  //case CMD_LANGSWITCH:
5914  // retval = handleLanguageSwitch();
5915  // break;
5916  case CMD_INTERNALREF:
5917  //warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"unexpected command %s",qPrint(m_parser.context.token->name));
5918  {
5920  if (ref)
5921  {
5922  m_children.push_back(std::unique_ptr<DocInternalRef>(ref));
5923  ref->parse();
5924  }
5926  }
5927  break;
5928  case CMD_INHERITDOC:
5929  handleInheritDoc();
5930  break;
5931  case CMD_ILINE:
5932  handleIline();
5933  break;
5934  default:
5935  // we should not get here!
5936  ASSERT(0);
5937  break;
5938  }
5939  INTERNAL_ASSERT(retval==0 || retval==RetVal_OK || retval==RetVal_SimpleSec ||
5940  retval==TK_LISTITEM || retval==TK_ENDLIST || retval==TK_NEWPARA ||
5941  retval==RetVal_Section || retval==RetVal_EndList ||
5942  retval==RetVal_Internal || retval==RetVal_SwitchLang ||
5943  retval==RetVal_EndInternal
5944  );
5945  DBG(("handleCommand(%s) end retval=%s\n",qPrint(cmdName),DocTokenizer::retvalToString(retval)));
5946  return retval;
5947 }

引用了 ASSERT, DocSimpleSect::Attention, DocSimpleSect::Author, DocSimpleSect::Authors, DocStyleChange::Bold, DocVerbatim::children(), CMD_ADDINDEX, CMD_AMP, CMD_ANCHOR, CMD_AT, CMD_ATTENTION, CMD_AUTHOR, CMD_AUTHORS, CMD_BOLD, CMD_BSLASH, CMD_CITE, CMD_CODE, CMD_COPYBRIEF, CMD_COPYDETAILS, CMD_COPYDOC, CMD_COPYRIGHT, CMD_DATE, CMD_DBONLY, CMD_DCOLON, CMD_DIAFILE, CMD_DOCBOOKINCLUDE, CMD_DOLLAR, CMD_DONTINCLUDE, CMD_DOT, CMD_DOTFILE, CMD_EMOJI, CMD_EMPHASIS, CMD_ENDCODE, CMD_ENDDBONLY, CMD_ENDDOT, CMD_ENDHTMLONLY, CMD_ENDINTERNAL, CMD_ENDLATEXONLY, CMD_ENDLINK, CMD_ENDMANONLY, CMD_ENDMSC, CMD_ENDPARBLOCK, CMD_ENDRTFONLY, CMD_ENDSECREFLIST, CMD_ENDUML, CMD_ENDVERBATIM, CMD_ENDXMLONLY, CMD_EQUAL, CMD_EXCEPTION, CMD_FORMULA, CMD_GREATER, CMD_HASH, CMD_HTMLINCLUDE, CMD_HTMLONLY, CMD_ILINE, CMD_IMAGE, CMD_INCLUDE, CMD_INCLUDEDOC, CMD_INCWITHLINES, CMD_INHERITDOC, CMD_INTERNAL, CMD_INTERNALREF, CMD_INVARIANT, CMD_JAVALINK, CMD_LATEXINCLUDE, CMD_LATEXONLY, CMD_LESS, CMD_LI, CMD_LINE, CMD_LINEBREAK, CMD_LINK, CMD_MANINCLUDE, CMD_MANONLY, CMD_MDASH, CMD_MINUS, CMD_MSC, CMD_MSCFILE, CMD_NDASH, CMD_NOTE, CMD_PAR, CMD_PARAGRAPH, CMD_PARAM, CMD_PARBLOCK, CMD_PERCENT, CMD_PIPE, CMD_PLUS, CMD_POST, CMD_PRE, CMD_PUNT, CMD_QUOTE, CMD_REF, CMD_REMARK, CMD_RETURN, CMD_RETVAL, CMD_RTFINCLUDE, CMD_RTFONLY, CMD_SA, CMD_SECREFITEM, CMD_SECREFLIST, CMD_SECTION, CMD_SINCE, CMD_SKIP, CMD_SKIPLINE, CMD_SNIPPET, CMD_SNIPPETDOC, CMD_SNIPWITHLINES, CMD_STARTCODE, CMD_STARTUML, CMD_SUBPAGE, CMD_SUBSECTION, CMD_SUBSUBSECTION, CMD_TPARAM, CMD_UNKNOWN, CMD_UNTIL, CMD_VERBATIM, CMD_VERBINCLUDE, CMD_VERSION, CMD_VHDLFLOW, CMD_WARNING, CMD_XMLINCLUDE, CMD_XMLONLY, CMD_XREFITEM, Mappers::cmdMapper, DocStyleChange::Code, Config_getBool, Config_getString, DocParserContext::context, DocParser::context, DocSimpleSect::Copyright, DocSimpleSect::Date, DBG, DocParser::defaultHandleTitleAndSize(), DocInclude::DocbookInclude, DocVerbatim::DocbookOnly, DocInclude::DontInclude, DocVerbatim::Dot, DocParserContext::exampleName, DocParamSect::Exception, FALSE, DocParserContext::fileName, QCString::find(), g_plantumlEngine, DocTokenizer::getLineNr(), Doxygen::globalScope, DocParser::handleAnchor(), handleCite(), handleEmoji(), handleIline(), handleImage(), handleInclude(), handleIncludeOperator(), handleInheritDoc(), DocParser::handleInternalRef(), handleLink(), handleParamSection(), handleRef(), handleSection(), handleSimpleSection(), handleStartCode(), DocParser::handleStyleArgument(), handleVhdlFlow(), handleXRefItem(), DocParserContext::hasReturnCommand, DocInclude::HtmlInclude, DocVerbatim::HtmlOnly, TokenInfo::id, DocInclude::Include, DocInclude::IncludeDoc, DocInclude::IncWithLines, DocParserContext::inSeeBlock, INTERNAL_ASSERT, DocSimpleSect::Invar, QCString::isEmpty(), DocParserContext::isExample, DocStyleChange::Italic, DocInclude::LatexInclude, DocVerbatim::LatexOnly, QCString::left(), DocTokenizer::lex(), DocIncOperator::Line, QCString::lower(), CompAccept< DocPara >::m_children, DocNode::m_parser, DocInclude::ManInclude, DocVerbatim::ManOnly, Mapper::map(), DocParserContext::memberDef, QCString::mid(), DocVerbatim::Msc, TokenInfo::name, DocParserContext::nodeStack, DocSimpleSect::Note, DocParamSect::Param, TokenInfo::paramDir, DocIndexEntry::parse(), DocInternalRef::parse(), DocSecRefList::parse(), DocParBlock::parse(), DocSimpleList::parse(), DocVerbatim::PlantUML, DocSimpleSect::Post, DocSimpleSect::Pre, qPrint(), DocSimpleSect::Remark, DocSimpleSect::Return, DocParamSect::RetVal, RetVal_EndInternal, RetVal_EndList, RetVal_EndParBlock, RetVal_Internal, RetVal_OK, RetVal_Paragraph, RetVal_Section, RetVal_SimpleSec, RetVal_Subsection, RetVal_Subsubsection, RetVal_SwitchLang, DocTokenizer::retvalToString(), DocInclude::RtfInclude, DocVerbatim::RtfOnly, DocParserContext::scope, TokenInfo::sectionId, DocSimpleSect::See, DocVerbatim::setEngine(), DocVerbatim::setHeight(), DocVerbatim::setLocation(), DocTokenizer::setStateCode(), DocTokenizer::setStateDbOnly(), DocTokenizer::setStateDot(), DocTokenizer::setStateHtmlOnly(), DocTokenizer::setStateLatexOnly(), DocTokenizer::setStateManOnly(), DocTokenizer::setStateMsc(), DocTokenizer::setStatePara(), DocTokenizer::setStatePlantUML(), DocTokenizer::setStatePlantUMLOpt(), DocTokenizer::setStateRtfOnly(), DocTokenizer::setStateVerbatim(), DocTokenizer::setStateXmlOnly(), DocVerbatim::setText(), DocVerbatim::setUseBitmap(), DocVerbatim::setWidth(), DocSimpleSect::Since, DocIncOperator::Skip, DocIncOperator::SkipLine, DocInclude::Snippet, DocInclude::SnippetDoc, DocInclude::SnipWithLines, split(), QCString::str(), stripLeadingAndTrailingEmptyLines(), QCString::stripWhiteSpace(), DocSymbol::Sym_Amp, DocSymbol::Sym_At, DocSymbol::Sym_BSlash, DocSymbol::Sym_Dollar, DocSymbol::Sym_Dot, DocSymbol::Sym_DoubleColon, DocSymbol::Sym_Equal, DocSymbol::Sym_Greater, DocSymbol::Sym_Hash, DocSymbol::Sym_Less, DocSymbol::Sym_Minus, DocSymbol::Sym_Percent, DocSymbol::Sym_Pipe, DocSymbol::Sym_Plus, DocSymbol::Sym_Quot, DocParamSect::TemplateParam, TK_COMMAND_CHAR, TK_ENDLIST, TK_LISTITEM, TK_NEWPARA, TK_WORD, DocParserContext::token, DocParser::tokenizer, TRUE, DocIncOperator::Until, DocSimpleSect::User, TokenInfo::verb, DocVerbatim::Verbatim, DocInclude::VerbInclude, DocSimpleSect::Version, warn(), warn_doc_error(), DocSimpleSect::Warning, DocInclude::XmlInclude , 以及 DocVerbatim::XmlOnly.

被这些函数引用 parse().

◆ handleEmoji()

void DocPara::handleEmoji ( )

在文件 docparser.cpp4799 行定义.

4800 {
4801  // get the argument of the emoji command.
4802  int tok=m_parser.tokenizer.lex();
4803  if (tok!=TK_WHITESPACE)
4804  {
4805  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"expected whitespace after \\%s command",
4806  qPrint("emoji"));
4807  return;
4808  }
4810  tok=m_parser.tokenizer.lex();
4811  if (tok==0)
4812  {
4813  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"unexpected end of comment block while parsing the "
4814  "argument of command %s\n", qPrint("emoji"));
4815  return;
4816  }
4817  else if (tok!=TK_WORD)
4818  {
4819  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"unexpected token %s as the argument of %s",
4820  DocTokenizer::tokToString(tok),qPrint("emoji"));
4821  return;
4822  }
4823  m_children.push_back(
4824  std::make_unique<DocEmoji>(
4827 }

引用了 DocParser::context, DocParserContext::fileName, DocTokenizer::getLineNr(), DocTokenizer::lex(), CompAccept< DocPara >::m_children, DocNode::m_parser, TokenInfo::name, qPrint(), DocTokenizer::setStateEmoji(), DocTokenizer::setStatePara(), TK_WHITESPACE, TK_WORD, DocParserContext::token, DocParser::tokenizer, DocTokenizer::tokToString() , 以及 warn_doc_error().

被这些函数引用 handleCommand().

◆ handleFile()

template<class T >
void DocPara::handleFile ( const QCString cmdName)

在文件 docparser.cpp5029 行定义.

5030 {
5031  QCString saveCmdName = cmdName;
5032  int tok=m_parser.tokenizer.lex();
5033  if (tok!=TK_WHITESPACE)
5034  {
5035  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"expected whitespace after \\%s command",
5036  qPrint(saveCmdName));
5037  return;
5038  }
5040  tok=m_parser.tokenizer.lex();
5042  if (tok!=TK_WORD)
5043  {
5044  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"unexpected token %s as the argument of %s",
5045  DocTokenizer::tokToString(tok),qPrint(saveCmdName));
5046  return;
5047  }
5049  auto df = std::make_unique<T>(m_parser,this,name,m_parser.context.context,m_parser.context.fileName,m_parser.tokenizer.getLineNr());
5050  if (df->parse())
5051  {
5052  m_children.push_back(std::move(df));
5053  }
5054 }

引用了 DocParserContext::context, DocParser::context, DocParserContext::fileName, DocTokenizer::getLineNr(), DocTokenizer::lex(), CompAccept< DocPara >::m_children, DocNode::m_parser, TokenInfo::name, qPrint(), DocTokenizer::setStateFile(), DocTokenizer::setStatePara(), TK_WHITESPACE, TK_WORD, DocParserContext::token, DocParser::tokenizer, DocTokenizer::tokToString() , 以及 warn_doc_error().

◆ handleHtmlEndTag()

int DocPara::handleHtmlEndTag ( const QCString tagName)

在文件 docparser.cpp6380 行定义.

6381 {
6382  DBG(("handleHtmlEndTag(%s)\n",qPrint(tagName)));
6383  int tagId = Mappers::htmlTagMapper->map(tagName);
6384  int retval=RetVal_OK;
6385  switch (tagId)
6386  {
6387  case HTML_UL:
6388  if (!insideUL(this))
6389  {
6390  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"found </ul> tag without matching <ul>");
6391  }
6392  else
6393  {
6394  retval=RetVal_EndList;
6395  }
6396  break;
6397  case HTML_OL:
6398  if (!insideOL(this))
6399  {
6400  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"found </ol> tag without matching <ol>");
6401  }
6402  else
6403  {
6404  retval=RetVal_EndList;
6405  }
6406  break;
6407  case HTML_LI:
6408  if (!insideLI(this))
6409  {
6410  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"found </li> tag without matching <li>");
6411  }
6412  else
6413  {
6414  // ignore </li> tags
6415  }
6416  break;
6417  case HTML_BLOCKQUOTE:
6418  retval=RetVal_EndBlockQuote;
6419  break;
6420  //case HTML_PRE:
6421  // if (!insidePRE(this))
6422  // {
6423  // warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"found </pre> tag without matching <pre>");
6424  // }
6425  // else
6426  // {
6427  // retval=RetVal_EndPre;
6428  // }
6429  // break;
6430  case HTML_BOLD:
6432  break;
6433  case HTML_S:
6435  break;
6436  case HTML_STRIKE:
6438  break;
6439  case HTML_DEL:
6441  break;
6442  case HTML_UNDERLINE:
6444  break;
6445  case HTML_INS:
6447  break;
6448  case HTML_CODE:
6450  break;
6451  case HTML_EMPHASIS:
6453  break;
6454  case HTML_DIV:
6456  break;
6457  case HTML_SPAN:
6459  break;
6460  case HTML_SUB:
6462  break;
6463  case HTML_SUP:
6465  break;
6466  case HTML_CENTER:
6468  break;
6469  case HTML_SMALL:
6471  break;
6472  case HTML_PRE:
6476  break;
6477  case HTML_P:
6478  retval=TK_NEWPARA;
6479  break;
6480  case HTML_DL:
6481  retval=RetVal_EndDesc;
6482  break;
6483  case HTML_DT:
6484  // ignore </dt> tag
6485  break;
6486  case HTML_DD:
6487  // ignore </dd> tag
6488  break;
6489  case HTML_TABLE:
6490  retval=RetVal_EndTable;
6491  break;
6492  case HTML_TR:
6493  // ignore </tr> tag
6494  break;
6495  case HTML_TD:
6496  // ignore </td> tag
6497  break;
6498  case HTML_TH:
6499  // ignore </th> tag
6500  break;
6501  case HTML_CAPTION:
6502  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"Unexpected tag </caption> found");
6503  break;
6504  case HTML_BR:
6505  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"Illegal </br> tag found\n");
6506  break;
6507  case HTML_H1:
6508  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"Unexpected tag </h1> found");
6509  break;
6510  case HTML_H2:
6511  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"Unexpected tag </h2> found");
6512  break;
6513  case HTML_H3:
6514  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"Unexpected tag </h3> found");
6515  break;
6516  case HTML_H4:
6517  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"Unexpected tag </h4> found");
6518  break;
6519  case HTML_H5:
6520  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"Unexpected tag </h5> found");
6521  break;
6522  case HTML_H6:
6523  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"Unexpected tag </h6> found");
6524  break;
6525  case HTML_IMG:
6526  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"Unexpected tag </img> found");
6527  break;
6528  case HTML_HR:
6529  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"Illegal </hr> tag found\n");
6530  break;
6531  case HTML_A:
6532  //warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"Unexpected tag </a> found");
6533  // ignore </a> tag (can be part of <a name=...></a>
6534  break;
6535 
6536  case XML_TERM:
6537  //m_children.push_back(std::make_unique<DocStyleChange>(this,(uint)m_parser.context.nodeStack.size(),DocStyleChange::Bold,FALSE));
6538  break;
6539  case XML_SUMMARY:
6540  case XML_REMARKS:
6541  case XML_PARA:
6542  case XML_VALUE:
6543  case XML_EXAMPLE:
6544  case XML_PARAM:
6545  case XML_LIST:
6546  case XML_TYPEPARAM:
6547  case XML_RETURNS:
6548  case XML_SEE:
6549  case XML_SEEALSO:
6550  case XML_EXCEPTION:
6551  case XML_INHERITDOC:
6552  retval = RetVal_CloseXml;
6553  break;
6554  case XML_C:
6556  break;
6557  case XML_ITEM:
6558  case XML_LISTHEADER:
6559  case XML_INCLUDE:
6560  case XML_PERMISSION:
6561  case XML_DESCRIPTION:
6562  case XML_PARAMREF:
6563  case XML_TYPEPARAMREF:
6564  // These tags are defined in .Net but are currently unsupported
6565  break;
6566  case HTML_UNKNOWN:
6567  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"Unsupported xml/html tag </%s> found", qPrint(tagName));
6568  m_children.push_back(std::make_unique<DocWord>(m_parser,this,"</"+tagName+">"));
6569  break;
6570  default:
6571  // we should not get here!
6572  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"Unexpected end tag %s\n",qPrint(tagName));
6573  ASSERT(0);
6574  break;
6575  }
6576  return retval;
6577 }

引用了 ASSERT, DocStyleChange::Bold, DocStyleChange::Center, DocStyleChange::Code, DocParser::context, DBG, DocStyleChange::Del, DocStyleChange::Div, FALSE, DocParserContext::fileName, DocTokenizer::getLineNr(), DocParser::handleStyleLeave(), HTML_A, HTML_BLOCKQUOTE, HTML_BOLD, HTML_BR, HTML_CAPTION, HTML_CENTER, HTML_CODE, HTML_DD, HTML_DEL, HTML_DIV, HTML_DL, HTML_DT, HTML_EMPHASIS, HTML_H1, HTML_H2, HTML_H3, HTML_H4, HTML_H5, HTML_H6, HTML_HR, HTML_IMG, HTML_INS, HTML_LI, HTML_OL, HTML_P, HTML_PRE, HTML_S, HTML_SMALL, HTML_SPAN, HTML_STRIKE, HTML_SUB, HTML_SUP, HTML_TABLE, HTML_TD, HTML_TH, HTML_TR, HTML_UL, HTML_UNDERLINE, HTML_UNKNOWN, Mappers::htmlTagMapper, DocStyleChange::Ins, insideLI(), insideOL(), insideUL(), DocStyleChange::Italic, CompAccept< DocPara >::m_children, DocNode::m_parser, Mapper::map(), DocStyleChange::Preformatted, qPrint(), RetVal_CloseXml, RetVal_EndBlockQuote, RetVal_EndDesc, RetVal_EndList, RetVal_EndTable, RetVal_OK, DocStyleChange::S, DocTokenizer::setInsidePre(), DocNode::setInsidePreformatted(), DocStyleChange::Small, DocStyleChange::Span, DocStyleChange::Strike, DocStyleChange::Subscript, DocStyleChange::Superscript, TK_NEWPARA, DocParser::tokenizer, DocStyleChange::Underline, warn_doc_error(), XML_C, XML_DESCRIPTION, XML_EXAMPLE, XML_EXCEPTION, XML_INCLUDE, XML_INHERITDOC, XML_ITEM, XML_LIST, XML_LISTHEADER, XML_PARA, XML_PARAM, XML_PARAMREF, XML_PERMISSION, XML_REMARKS, XML_RETURNS, XML_SEE, XML_SEEALSO, XML_SUMMARY, XML_TERM, XML_TYPEPARAM, XML_TYPEPARAMREF , 以及 XML_VALUE.

被这些函数引用 parse().

◆ handleHtmlHeader()

int DocPara::handleHtmlHeader ( const HtmlAttribList tagHtmlAttribs,
int  level 
)

在文件 docparser.cpp5275 行定义.

5276 {
5277  DocHtmlHeader *header = new DocHtmlHeader(m_parser,this,tagHtmlAttribs,level);
5278  m_children.push_back(std::unique_ptr<DocHtmlHeader>(header));
5279  int retval = header->parse();
5280  return (retval==RetVal_OK) ? TK_NEWPARA : retval;
5281 }

引用了 CompAccept< DocPara >::m_children, DocNode::m_parser, DocHtmlHeader::parse(), RetVal_OK , 以及 TK_NEWPARA.

被这些函数引用 handleHtmlStartTag().

◆ handleHtmlStartTag()

int DocPara::handleHtmlStartTag ( const QCString tagName,
const HtmlAttribList tagHtmlAttribs 
)

在文件 docparser.cpp5965 行定义.

5966 {
5967  DBG(("handleHtmlStartTag(%s,%d)\n",qPrint(tagName),tagHtmlAttribs.size()));
5968  int retval=RetVal_OK;
5969  int tagId = Mappers::htmlTagMapper->map(tagName);
5970  if (m_parser.context.token->emptyTag && !(tagId&XML_CmdMask) &&
5971  tagId!=HTML_UNKNOWN && tagId!=HTML_IMG && tagId!=HTML_BR && tagId!=HTML_HR && tagId!=HTML_P)
5972  {
5973  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"HTML tag ('<%s/>') may not use the 'empty tag' XHTML syntax.",
5974  qPrint(tagName));
5975  }
5976  switch (tagId)
5977  {
5978  case HTML_UL:
5980  {
5981  DocHtmlList *list = new DocHtmlList(m_parser,this,tagHtmlAttribs,DocHtmlList::Unordered);
5982  m_children.push_back(std::unique_ptr<DocHtmlList>(list));
5983  retval=list->parse();
5984  }
5985  break;
5986  case HTML_OL:
5988  {
5989  DocHtmlList *list = new DocHtmlList(m_parser,this,tagHtmlAttribs,DocHtmlList::Ordered);
5990  m_children.push_back(std::unique_ptr<DocHtmlList>(list));
5991  retval=list->parse();
5992  }
5993  break;
5994  case HTML_LI:
5995  if (m_parser.context.token->emptyTag) break;
5996  if (!insideUL(this) && !insideOL(this))
5997  {
5998  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"lonely <li> tag found");
5999  }
6000  else
6001  {
6002  retval=RetVal_ListItem;
6003  }
6004  break;
6005  case HTML_BOLD:
6007  break;
6008  case HTML_S:
6010  break;
6011  case HTML_STRIKE:
6013  break;
6014  case HTML_DEL:
6016  break;
6017  case HTML_UNDERLINE:
6019  break;
6020  case HTML_INS:
6022  break;
6023  case HTML_CODE:
6024  if (m_parser.context.token->emptyTag) break;
6025  if (/*getLanguageFromFileName(m_parser.context.fileName)==SrcLangExt_CSharp ||*/ m_parser.context.xmlComment)
6026  // for C# source or inside a <summary> or <remark> section we
6027  // treat <code> as an XML tag (so similar to @code)
6028  {
6030  retval = handleStartCode();
6031  }
6032  else // normal HTML markup
6033  {
6035  }
6036  break;
6037  case HTML_EMPHASIS:
6039  break;
6040  case HTML_DIV:
6042  break;
6043  case HTML_SPAN:
6045  break;
6046  case HTML_SUB:
6048  break;
6049  case HTML_SUP:
6051  break;
6052  case HTML_CENTER:
6054  break;
6055  case HTML_SMALL:
6057  break;
6058  case HTML_PRE:
6059  if (m_parser.context.token->emptyTag) break;
6063  break;
6064  case HTML_P:
6065  retval=TK_NEWPARA;
6066  break;
6067  case HTML_DL:
6069  {
6070  DocHtmlDescList *list = new DocHtmlDescList(m_parser,this,tagHtmlAttribs);
6071  m_children.push_back(std::unique_ptr<DocHtmlDescList>(list));
6072  retval=list->parse();
6073  }
6074  break;
6075  case HTML_DT:
6076  retval = RetVal_DescTitle;
6077  break;
6078  case HTML_DD:
6079  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"Unexpected tag <dd> found");
6080  break;
6081  case HTML_TABLE:
6083  {
6084  DocHtmlTable *table = new DocHtmlTable(m_parser,this,tagHtmlAttribs);
6085  m_children.push_back(std::unique_ptr<DocHtmlTable>(table));
6086  retval=table->parse();
6087  }
6088  break;
6089  case HTML_TR:
6090  retval = RetVal_TableRow;
6091  break;
6092  case HTML_TD:
6093  retval = RetVal_TableCell;
6094  break;
6095  case HTML_TH:
6096  retval = RetVal_TableHCell;
6097  break;
6098  case HTML_CAPTION:
6099  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"Unexpected tag <caption> found");
6100  break;
6101  case HTML_BR:
6102  {
6103  m_children.push_back(std::make_unique<DocLineBreak>(m_parser,this,tagHtmlAttribs));
6104  }
6105  break;
6106  case HTML_HR:
6107  {
6108  m_children.push_back(std::make_unique<DocHorRuler>(m_parser,this,tagHtmlAttribs));
6109  }
6110  break;
6111  case HTML_A:
6112  retval = m_parser.handleAHref(this,m_children,tagHtmlAttribs);
6113  break;
6114  case HTML_H1:
6115  if (!m_parser.context.token->emptyTag) retval=handleHtmlHeader(tagHtmlAttribs,1);
6116  break;
6117  case HTML_H2:
6118  if (!m_parser.context.token->emptyTag) retval=handleHtmlHeader(tagHtmlAttribs,2);
6119  break;
6120  case HTML_H3:
6121  if (!m_parser.context.token->emptyTag) retval=handleHtmlHeader(tagHtmlAttribs,3);
6122  break;
6123  case HTML_H4:
6124  if (!m_parser.context.token->emptyTag) retval=handleHtmlHeader(tagHtmlAttribs,4);
6125  break;
6126  case HTML_H5:
6127  if (!m_parser.context.token->emptyTag) retval=handleHtmlHeader(tagHtmlAttribs,5);
6128  break;
6129  case HTML_H6:
6130  if (!m_parser.context.token->emptyTag) retval=handleHtmlHeader(tagHtmlAttribs,6);
6131  break;
6132  case HTML_IMG:
6133  {
6134  m_parser.handleImg(this,m_children,tagHtmlAttribs);
6135  }
6136  break;
6137  case HTML_BLOCKQUOTE:
6139  {
6140  DocHtmlBlockQuote *block = new DocHtmlBlockQuote(m_parser,this,tagHtmlAttribs);
6141  m_children.push_back(std::unique_ptr<DocHtmlBlockQuote>(block));
6142  retval = block->parse();
6143  }
6144  break;
6145 
6146  case XML_SUMMARY:
6147  case XML_REMARKS:
6148  case XML_EXAMPLE:
6150  // fall through
6151  case XML_VALUE:
6152  case XML_PARA:
6153  if (!m_children.empty())
6154  {
6155  retval = TK_NEWPARA;
6156  }
6157  break;
6158  case XML_DESCRIPTION:
6159  if (insideTable(this))
6160  {
6161  retval=RetVal_TableCell;
6162  }
6163  break;
6164  case XML_C:
6166  break;
6167  case XML_PARAM:
6168  case XML_TYPEPARAM:
6169  {
6171  QCString paramName;
6172  if (findAttribute(tagHtmlAttribs,"name",&paramName))
6173  {
6174  if (paramName.isEmpty())
6175  {
6176  if (Config_getBool(WARN_NO_PARAMDOC))
6177  {
6178  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"empty 'name' attribute for <param%s> tag.",tagId==XML_PARAM?"":"type");
6179  }
6180  }
6181  else
6182  {
6183  retval = handleParamSection(paramName,
6185  TRUE);
6186  }
6187  }
6188  else
6189  {
6190  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"Missing 'name' attribute from <param%s> tag.",tagId==XML_PARAM?"":"type");
6191  }
6192  }
6193  break;
6194  case XML_PARAMREF:
6195  case XML_TYPEPARAMREF:
6196  {
6197  QCString paramName;
6198  if (findAttribute(tagHtmlAttribs,"name",&paramName))
6199  {
6200  //printf("paramName=%s\n",qPrint(paramName));
6201  m_children.push_back(std::make_unique<DocStyleChange>(m_parser,this,(uint)m_parser.context.nodeStack.size(),DocStyleChange::Italic,tagName,TRUE));
6202  m_children.push_back(std::make_unique<DocWord>(m_parser,this,paramName));
6203  m_children.push_back(std::make_unique<DocStyleChange>(m_parser,this,(uint)m_parser.context.nodeStack.size(),DocStyleChange::Italic,tagName,FALSE));
6204  if (retval!=TK_WORD) m_children.push_back(std::make_unique<DocWhiteSpace>(m_parser,this," "));
6205  }
6206  else
6207  {
6208  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"Missing 'name' attribute from <param%sref> tag.",tagId==XML_PARAMREF?"":"type");
6209  }
6210  }
6211  break;
6212  case XML_EXCEPTION:
6213  {
6215  QCString exceptName;
6216  if (findAttribute(tagHtmlAttribs,"cref",&exceptName))
6217  {
6218  unescapeCRef(exceptName);
6219  retval = handleParamSection(exceptName,DocParamSect::Exception,TRUE);
6220  }
6221  else
6222  {
6223  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"Missing 'cref' attribute from <exception> tag.");
6224  }
6225  }
6226  break;
6227  case XML_ITEM:
6228  case XML_LISTHEADER:
6229  if (insideTable(this))
6230  {
6231  retval=RetVal_TableRow;
6232  }
6233  else if (insideUL(this) || insideOL(this))
6234  {
6235  retval=RetVal_ListItem;
6236  }
6237  else
6238  {
6239  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"lonely <item> tag found");
6240  }
6241  break;
6242  case XML_RETURNS:
6246  break;
6247  case XML_TERM:
6248  //m_children.push_back(std::make_unique<DocStyleChange>(this,(uint)m_parser.context.nodeStack.size(),DocStyleChange::Bold,TRUE));
6249  if (insideTable(this))
6250  {
6251  retval=RetVal_TableCell;
6252  }
6253  break;
6254  case XML_SEE:
6255  // I'm not sure if <see> is the same as <seealso> or if it
6256  // should you link a member without producing a section. The
6257  // C# specification is extremely vague about this (but what else
6258  // can we expect from Microsoft...)
6259  {
6260  QCString cref;
6261  //printf("XML_SEE: empty tag=%d\n",m_parser.context.token->emptyTag);
6262  if (findAttribute(tagHtmlAttribs,"cref",&cref))
6263  {
6264  unescapeCRef(cref);
6265  if (m_parser.context.token->emptyTag) // <see cref="..."/> style
6266  {
6267  bool inSeeBlock = m_parser.context.inSeeBlock;
6268  m_parser.context.token->name = cref;
6271  m_parser.context.inSeeBlock = inSeeBlock;
6272  }
6273  else // <see cref="...">...</see> style
6274  {
6275  //DocRef *ref = new DocRef(this,cref);
6276  //m_children.append(ref);
6277  //ref->parse();
6279  DocLink *lnk = new DocLink(m_parser,this,cref);
6280  m_children.push_back(std::unique_ptr<DocLink>(lnk));
6281  QCString leftOver = lnk->parse(FALSE,TRUE);
6282  if (!leftOver.isEmpty())
6283  {
6284  m_children.push_back(std::make_unique<DocWord>(m_parser,this,leftOver));
6285  }
6286  }
6287  }
6288  else if (findAttribute(tagHtmlAttribs,"langword",&cref)) // <see langword="..."/> or <see langword="..."></see>
6289  {
6290  bool inSeeBlock = m_parser.context.inSeeBlock;
6291  m_parser.context.token->name = cref;
6293  m_children.push_back(std::make_unique<DocStyleChange>(m_parser,this,(uint)m_parser.context.nodeStack.size(),DocStyleChange::Code,tagName,TRUE));
6295  m_children.push_back(std::make_unique<DocStyleChange>(m_parser,this,(uint)m_parser.context.nodeStack.size(),DocStyleChange::Code,tagName,FALSE));
6296  m_parser.context.inSeeBlock = inSeeBlock;
6297  }
6298  else
6299  {
6300  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"Missing 'cref' or 'langword' attribute from <see> tag.");
6301  }
6302  }
6303  break;
6304  case XML_SEEALSO:
6305  {
6307  QCString cref;
6308  if (findAttribute(tagHtmlAttribs,"cref",&cref))
6309  {
6310  unescapeCRef(cref);
6311  // Look for an existing "see" section
6312  DocSimpleSect *ss=0;
6313  for (const auto &n : m_children)
6314  {
6315  if (n->kind()==Kind_SimpleSect && ((DocSimpleSect *)n.get())->type()==DocSimpleSect::See)
6316  {
6317  ss = (DocSimpleSect *)n.get();
6318  }
6319  }
6320 
6321  if (!ss) // start new section
6322  {
6324  m_children.push_back(std::unique_ptr<DocSimpleSect>(ss));
6325  }
6326 
6327  ss->appendLinkWord(cref);
6328  retval = RetVal_OK;
6329  }
6330  else
6331  {
6332  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"Missing 'cref' attribute from <seealso> tag.");
6333  }
6334  }
6335  break;
6336  case XML_LIST:
6337  {
6338  QCString type;
6339  findAttribute(tagHtmlAttribs,"type",&type);
6341  HtmlAttribList emptyList;
6342  if (type=="number")
6343  {
6344  listType=DocHtmlList::Ordered;
6345  }
6346  if (type=="table")
6347  {
6348  DocHtmlTable *table = new DocHtmlTable(m_parser,this,emptyList);
6349  m_children.push_back(std::unique_ptr<DocHtmlTable>(table));
6350  retval=table->parseXml();
6351  }
6352  else
6353  {
6354  DocHtmlList *list = new DocHtmlList(m_parser,this,emptyList,listType);
6355  m_children.push_back(std::unique_ptr<DocHtmlList>(list));
6356  retval=list->parseXml();
6357  }
6358  }
6359  break;
6360  case XML_INCLUDE:
6361  case XML_PERMISSION:
6362  // These tags are defined in .Net but are currently unsupported
6364  break;
6365  case HTML_UNKNOWN:
6366  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"Unsupported xml/html tag <%s> found", qPrint(tagName));
6367  m_children.push_back(std::make_unique<DocWord>(m_parser,this, "<"+tagName+m_parser.context.token->attribsStr+">"));
6368  break;
6369  case XML_INHERITDOC:
6370  handleInheritDoc();
6371  break;
6372  default:
6373  // we should not get here!
6374  ASSERT(0);
6375  break;
6376  }
6377  return retval;
6378 }

引用了 DocSimpleSect::appendLinkWord(), ASSERT, TokenInfo::attribs, TokenInfo::attribsStr, DocStyleChange::Bold, DocStyleChange::Center, DocStyleChange::Code, Config_getBool, DocParser::context, DBG, DocStyleChange::Del, DocStyleChange::Div, TokenInfo::emptyTag, DocParamSect::Exception, FALSE, DocParserContext::fileName, findAttribute(), DocTokenizer::getLineNr(), DocParser::handleAHref(), handleHtmlHeader(), DocParser::handleImg(), handleInheritDoc(), DocParser::handleLinkedWord(), handleParamSection(), handleSimpleSection(), handleStartCode(), DocParser::handleStyleEnter(), DocParserContext::hasReturnCommand, HTML_A, HTML_BLOCKQUOTE, HTML_BOLD, HTML_BR, HTML_CAPTION, HTML_CENTER, HTML_CODE, HTML_DD, HTML_DEL, HTML_DIV, HTML_DL, HTML_DT, HTML_EMPHASIS, HTML_H1, HTML_H2, HTML_H3, HTML_H4, HTML_H5, HTML_H6, HTML_HR, HTML_IMG, HTML_INS, HTML_LI, HTML_OL, HTML_P, HTML_PRE, HTML_S, HTML_SMALL, HTML_SPAN, HTML_STRIKE, HTML_SUB, HTML_SUP, HTML_TABLE, HTML_TD, HTML_TH, HTML_TR, HTML_UL, HTML_UNDERLINE, HTML_UNKNOWN, Mappers::htmlTagMapper, DocStyleChange::Ins, DocParserContext::inSeeBlock, insideOL(), insideTable(), insideUL(), QCString::isEmpty(), DocStyleChange::Italic, DocNode::Kind_SimpleSect, CompAccept< DocPara >::m_children, DocNode::m_parser, Mapper::map(), TokenInfo::name, DocParserContext::nodeStack, DocHtmlList::Ordered, DocParamSect::Param, DocLink::parse(), DocHtmlDescList::parse(), DocHtmlList::parse(), DocHtmlTable::parse(), DocHtmlBlockQuote::parse(), DocHtmlList::parseXml(), DocHtmlTable::parseXml(), DocStyleChange::Preformatted, qPrint(), DocSimpleSect::Return, RetVal_DescTitle, RetVal_ListItem, RetVal_OK, RetVal_TableCell, RetVal_TableHCell, RetVal_TableRow, DocStyleChange::S, DocSimpleSect::See, DocTokenizer::setInsidePre(), DocNode::setInsidePreformatted(), DocTokenizer::setStatePara(), DocTokenizer::setStateXmlCode(), DocStyleChange::Small, DocStyleChange::Span, DocStyleChange::Strike, DocStyleChange::Subscript, DocStyleChange::Superscript, DocParamSect::TemplateParam, TK_NEWPARA, TK_WORD, DocParserContext::token, DocParser::tokenizer, TRUE, DocStyleChange::Underline, unescapeCRef(), DocHtmlList::Unordered, warn_doc_error(), XML_C, XML_CmdMask, XML_DESCRIPTION, XML_EXAMPLE, XML_EXCEPTION, XML_INCLUDE, XML_INHERITDOC, XML_ITEM, XML_LIST, XML_LISTHEADER, XML_PARA, XML_PARAM, XML_PARAMREF, XML_PERMISSION, XML_REMARKS, XML_RETURNS, XML_SEE, XML_SEEALSO, XML_SUMMARY, XML_TERM, XML_TYPEPARAM, XML_TYPEPARAMREF, XML_VALUE , 以及 DocParserContext::xmlComment.

被这些函数引用 parse().

◆ handleIline()

void DocPara::handleIline ( )

在文件 docparser.cpp4851 行定义.

4852 {
4854  int tok = m_parser.tokenizer.lex();
4855  if (tok!=TK_WORD)
4856  {
4857  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"invalid argument for command '\\iline'\n");
4858  return;
4859  }
4861 }

引用了 DocParser::context, DocParserContext::fileName, DocTokenizer::getLineNr(), DocTokenizer::lex(), DocNode::m_parser, DocTokenizer::setStateIline(), DocTokenizer::setStatePara(), TK_WORD, DocParser::tokenizer , 以及 warn_doc_error().

被这些函数引用 handleCommand().

◆ handleImage()

void DocPara::handleImage ( const QCString cmdName)

在文件 docparser.cpp4915 行定义.

4916 {
4917  QCString saveCmdName = cmdName;
4918  bool inlineImage = false;
4919  QCString anchorStr;
4920 
4921  int tok=m_parser.tokenizer.lex();
4922  if (tok!=TK_WHITESPACE)
4923  {
4924  if (tok==TK_WORD)
4925  {
4926  if (m_parser.context.token->name == "{")
4927  {
4929  tok=m_parser.tokenizer.lex();
4931  StringVector optList=split(m_parser.context.token->name.str(),",");
4932  for (const auto &opt : optList)
4933  {
4934  if (opt.empty()) continue;
4935  QCString locOpt(opt);
4936  QCString locOptLow;
4937  locOpt = locOpt.stripWhiteSpace();
4938  locOptLow = locOpt.lower();
4939  if (locOptLow == "inline")
4940  {
4941  inlineImage = true;
4942  }
4943  else if (locOptLow.startsWith("anchor:"))
4944  {
4945  if (!anchorStr.isEmpty())
4946  {
4948  "multiple use of option 'anchor' for '%s' command, ignoring: '%s'",
4949  qPrint(saveCmdName),qPrint(locOpt.mid(7)));
4950  }
4951  else
4952  {
4953  anchorStr = locOpt.mid(7);
4954  }
4955  }
4956  else
4957  {
4959  "unknown option '%s' for '%s' command specified",
4960  qPrint(locOpt), qPrint(saveCmdName));
4961  }
4962  }
4963  tok=m_parser.tokenizer.lex();
4964  if (tok!=TK_WHITESPACE)
4965  {
4966  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"expected whitespace after \\%s command",
4967  qPrint(saveCmdName));
4968  return;
4969  }
4970  }
4971  }
4972  else
4973  {
4974  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"expected whitespace after \\%s command",
4975  qPrint(saveCmdName));
4976  return;
4977  }
4978  }
4979  tok=m_parser.tokenizer.lex();
4980  if (tok!=TK_WORD && tok!=TK_LNKWORD)
4981  {
4982  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"unexpected token %s as the argument of %s",
4983  DocTokenizer::tokToString(tok),qPrint(saveCmdName));
4984  return;
4985  }
4986  tok=m_parser.tokenizer.lex();
4987  if (tok!=TK_WHITESPACE)
4988  {
4989  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"expected whitespace after \\%s command",
4990  qPrint(saveCmdName));
4991  return;
4992  }
4993  DocImage::Type t;
4994  QCString imgType = m_parser.context.token->name.lower();
4995  if (imgType=="html") t=DocImage::Html;
4996  else if (imgType=="latex") t=DocImage::Latex;
4997  else if (imgType=="docbook") t=DocImage::DocBook;
4998  else if (imgType=="rtf") t=DocImage::Rtf;
4999  else if (imgType=="xml") t=DocImage::Xml;
5000  else
5001  {
5002  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"output format `%s` specified as the first argument of "
5003  "%s command is not valid",
5004  qPrint(imgType),qPrint(saveCmdName));
5005  return;
5006  }
5008  tok=m_parser.tokenizer.lex();
5010  if (tok!=TK_WORD)
5011  {
5012  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"unexpected token %s as the argument of %s",
5013  DocTokenizer::tokToString(tok),qPrint(saveCmdName));
5014  return;
5015  }
5016  if (!anchorStr.isEmpty())
5017  {
5018  DocAnchor *anchor = new DocAnchor(m_parser,this,anchorStr,true);
5019  m_children.push_back(std::unique_ptr<DocAnchor>(anchor));
5020  }
5021  HtmlAttribList attrList;
5022  DocImage *img = new DocImage(m_parser,this,attrList,
5023  m_parser.findAndCopyImage(m_parser.context.token->name,t),t,"",inlineImage);
5024  m_children.push_back(std::unique_ptr<DocImage>(img));
5025  img->parse();
5026 }

引用了 DocParser::context, DocImage::DocBook, DocParserContext::fileName, DocParser::findAndCopyImage(), DocTokenizer::getLineNr(), DocImage::Html, QCString::isEmpty(), DocImage::Latex, DocTokenizer::lex(), QCString::lower(), CompAccept< DocPara >::m_children, DocNode::m_parser, QCString::mid(), TokenInfo::name, DocImage::parse(), qPrint(), DocImage::Rtf, DocTokenizer::setStateFile(), DocTokenizer::setStateOptions(), DocTokenizer::setStatePara(), split(), QCString::startsWith(), QCString::str(), QCString::stripWhiteSpace(), TK_LNKWORD, TK_WHITESPACE, TK_WORD, DocParserContext::token, DocParser::tokenizer, DocTokenizer::tokToString(), warn_doc_error() , 以及 DocImage::Xml.

被这些函数引用 handleCommand().

◆ handleInclude()

void DocPara::handleInclude ( const QCString cmdName,
DocInclude::Type  t 
)

在文件 docparser.cpp5118 行定义.

5119 {
5120  DBG(("handleInclude(%s)\n",qPrint(cmdName)));
5121  QCString saveCmdName = cmdName;
5122  int tok=m_parser.tokenizer.lex();
5123  bool isBlock = false;
5124  if (tok==TK_WORD && m_parser.context.token->name=="{")
5125  {
5127  tok=m_parser.tokenizer.lex();
5129  StringVector optList=split(m_parser.context.token->name.str(),",");
5130  auto contains = [&optList](const char *kw)
5131  {
5132  return std::find(optList.begin(),optList.end(),kw)!=optList.end();
5133  };
5134  if (t==DocInclude::Include && contains("lineno"))
5135  {
5137  }
5138  else if (t==DocInclude::Snippet && contains("lineno"))
5139  {
5141  }
5142  else if (t==DocInclude::DontInclude && contains("lineno"))
5143  {
5145  }
5146  else if (t==DocInclude::Include && contains("doc"))
5147  {
5149  }
5150  else if (t==DocInclude::Snippet && contains("doc"))
5151  {
5153  }
5154  tok=m_parser.tokenizer.lex();
5155  if (tok!=TK_WHITESPACE)
5156  {
5157  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"expected whitespace after \\%s command",
5158  qPrint(saveCmdName));
5159  return;
5160  }
5161  }
5162  else if (tok==TK_WORD && m_parser.context.token->name=="[")
5163  {
5165  tok=m_parser.tokenizer.lex();
5166  isBlock = (m_parser.context.token->name.stripWhiteSpace() == "block");
5168  tok=m_parser.tokenizer.lex();
5169  }
5170  else if (tok!=TK_WHITESPACE)
5171  {
5172  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"expected whitespace after \\%s command",
5173  qPrint(saveCmdName));
5174  return;
5175  }
5177  tok=m_parser.tokenizer.lex();
5179  if (tok==0)
5180  {
5181  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"unexpected end of comment block while parsing the "
5182  "argument of command %s",qPrint(saveCmdName));
5183  return;
5184  }
5185  else if (tok!=TK_WORD)
5186  {
5187  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"unexpected token %s as the argument of %s",
5188  DocTokenizer::tokToString(tok),qPrint(saveCmdName));
5189  return;
5190  }
5191  QCString fileName = m_parser.context.token->name;
5192  QCString blockId;
5194  {
5195  if (fileName == "this") fileName=m_parser.context.fileName;
5197  tok=m_parser.tokenizer.lex();
5199  if (tok!=TK_WORD)
5200  {
5201  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"expected block identifier, but found token %s instead while parsing the %s command",
5202  DocTokenizer::tokToString(tok),qPrint(saveCmdName));
5203  return;
5204  }
5205  blockId = "["+m_parser.context.token->name+"]";
5206  }
5207 
5208  // This is the only place to handle the \includedoc and \snippetdoc commands,
5209  // as the content is included here as if it is really here.
5211  {
5212  QCString inc_text;
5213  int inc_line = 1;
5214  m_parser.readTextFileByName(fileName,inc_text);
5215  if (t==DocInclude::SnippetDoc)
5216  {
5217  int count;
5218  if (!blockId.isEmpty() && (count=inc_text.contains(blockId.data()))!=2)
5219  {
5220  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"block marked with %s for \\snippet should appear twice in file %s, found it %d times\n",
5221  qPrint(blockId),qPrint(fileName),count);
5222  }
5223  inc_line = lineBlock(inc_text, blockId);
5224  inc_text = extractBlock(inc_text, blockId);
5225  }
5226 
5227  Markdown markdown(fileName,inc_line);
5228  QCString strippedDoc = stripIndentation(inc_text);
5229  QCString processedDoc = Config_getBool(MARKDOWN_SUPPORT) ? markdown.process(strippedDoc,inc_line) : strippedDoc;
5230 
5232  m_parser.context.fileName = fileName;
5233  m_parser.tokenizer.setLineNr(inc_line);
5234  m_parser.internalValidatingParseDoc(this,m_children,processedDoc);
5235  m_parser.popContext();
5236  }
5237  else
5238  {
5240  m_children.push_back(std::unique_ptr<DocInclude>(inc));
5241  inc->parse();
5242  }
5243 }

引用了 Config_getBool, QCString::contains(), DocParserContext::context, DocParser::context, QCString::data(), DBG, DocInclude::DontInclude, DocInclude::DontIncWithLines, DocParserContext::exampleName, extractBlock(), DocParserContext::fileName, DocTokenizer::getLineNr(), DocInclude::Include, DocInclude::IncludeDoc, DocInclude::IncWithLines, DocParser::internalValidatingParseDoc(), QCString::isEmpty(), DocParserContext::isExample, DocTokenizer::lex(), lineBlock(), CompAccept< DocPara >::m_children, DocNode::m_parser, TokenInfo::name, DocInclude::parse(), DocParser::popContext(), Markdown::process(), DocParser::pushContext(), qPrint(), DocParser::readTextFileByName(), DocTokenizer::setLineNr(), DocTokenizer::setStateBlock(), DocTokenizer::setStateFile(), DocTokenizer::setStateOptions(), DocTokenizer::setStatePara(), DocTokenizer::setStateSnippet(), DocInclude::Snippet, DocInclude::SnippetDoc, DocInclude::SnipWithLines, split(), QCString::str(), stripIndentation(), QCString::stripWhiteSpace(), TK_WHITESPACE, TK_WORD, DocParserContext::token, DocParser::tokenizer, DocTokenizer::tokToString() , 以及 warn_doc_error().

被这些函数引用 handleCommand().

◆ handleIncludeOperator()

void DocPara::handleIncludeOperator ( const QCString cmdName,
DocIncOperator::Type  t 
)

在文件 docparser.cpp4863 行定义.

4864 {
4865  QCString saveCmdName = cmdName;
4866  DBG(("handleIncludeOperator(%s)\n",qPrint(saveCmdName)));
4867  int tok=m_parser.tokenizer.lex();
4868  if (tok!=TK_WHITESPACE)
4869  {
4870  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"expected whitespace after \\%s command",
4871  qPrint(saveCmdName));
4872  return;
4873  }
4875  tok=m_parser.tokenizer.lex();
4877  if (tok==0)
4878  {
4879  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"unexpected end of comment block while parsing the "
4880  "argument of command %s", qPrint(saveCmdName));
4881  return;
4882  }
4883  else if (tok!=TK_WORD)
4884  {
4885  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"unexpected token %s as the argument of %s",
4886  DocTokenizer::tokToString(tok),qPrint(saveCmdName));
4887  return;
4888  }
4890  DocNode *n1 = m_children.size()>=1 ? m_children.at(m_children.size()-1).get() : 0;
4891  DocNode *n2 = m_children.size()>=2 ? m_children.at(m_children.size()-2).get() : 0;
4892  bool isFirst = n1==0 || // no last node
4893  (n1->kind()!=DocNode::Kind_IncOperator &&
4895  ) || // last node is not operator or whitespace
4896  (n1->kind()==DocNode::Kind_WhiteSpace &&
4897  n2!=0 && n2->kind()!=DocNode::Kind_IncOperator
4898  ); // previous not is not operator
4899  op->markFirst(isFirst);
4900  op->markLast(TRUE);
4901  if (n1!=0 && n1->kind()==DocNode::Kind_IncOperator)
4902  {
4903  ((DocIncOperator *)n1)->markLast(FALSE);
4904  }
4905  else if (n1!=0 && n1->kind()==DocNode::Kind_WhiteSpace &&
4906  n2!=0 && n2->kind()==DocNode::Kind_IncOperator
4907  )
4908  {
4909  ((DocIncOperator *)n2)->markLast(FALSE);
4910  }
4911  m_children.push_back(std::unique_ptr<DocIncOperator>(op));
4912  op->parse();
4913 }

引用了 DocParserContext::context, DocParser::context, DBG, DocParserContext::exampleName, FALSE, DocParserContext::fileName, DocTokenizer::getLineNr(), DocParserContext::isExample, isFirst(), DocNode::kind(), DocNode::Kind_IncOperator, DocNode::Kind_WhiteSpace, DocTokenizer::lex(), CompAccept< DocPara >::m_children, DocNode::m_parser, DocIncOperator::markFirst(), DocIncOperator::markLast(), TokenInfo::name, DocIncOperator::parse(), qPrint(), DocTokenizer::setStatePara(), DocTokenizer::setStatePattern(), TK_WHITESPACE, TK_WORD, DocParserContext::token, DocParser::tokenizer, DocTokenizer::tokToString(), TRUE , 以及 warn_doc_error().

被这些函数引用 handleCommand().

◆ handleInheritDoc()

void DocPara::handleInheritDoc ( )

在文件 docparser.cpp5317 行定义.

5318 {
5319  if (m_parser.context.memberDef) // inheriting docs from a member
5320  {
5321  const MemberDef *reMd = m_parser.context.memberDef->reimplements();
5322  if (reMd) // member from which was inherited.
5323  {
5324  const MemberDef *thisMd = m_parser.context.memberDef;
5325  //printf("{InheritDocs:%s=>%s}\n",qPrint(m_parser.context.memberDef->qualifiedName()),qPrint(reMd->qualifiedName()));
5329  {
5331  }
5332  m_parser.context.memberDef=reMd;
5333  while (!m_parser.context.styleStack.empty()) m_parser.context.styleStack.pop();
5334  while (!m_parser.context.nodeStack.empty()) m_parser.context.nodeStack.pop();
5335  m_parser.context.copyStack.push_back(reMd);
5338  m_parser.context.copyStack.pop_back();
5339  auto hasParamCommand = m_parser.context.hasParamCommand;
5340  auto hasReturnCommand = m_parser.context.hasReturnCommand;
5341  auto retvalsFound = m_parser.context.retvalsFound;
5342  auto paramsFound = m_parser.context.paramsFound;
5343  m_parser.popContext();
5344  m_parser.context.hasParamCommand = hasParamCommand;
5345  m_parser.context.hasReturnCommand = hasReturnCommand;
5346  m_parser.context.retvalsFound = retvalsFound;
5347  m_parser.context.paramsFound = paramsFound;
5348  m_parser.context.memberDef = thisMd;
5349  }
5350  }
5351 }

引用了 MemberDef::briefDescription(), DocParserContext::context, DocParser::context, DocParserContext::copyStack, MemberDef::documentation(), Definition::getOuterScope(), Doxygen::globalScope, DocParserContext::hasParamCommand, DocParserContext::hasReturnCommand, DocParser::internalValidatingParseDoc(), CompAccept< DocPara >::m_children, DocNode::m_parser, DocParserContext::memberDef, Definition::name(), DocParserContext::nodeStack, DocParserContext::paramsFound, DocParser::popContext(), DocParser::pushContext(), MemberDef::reimplements(), DocParserContext::retvalsFound, DocParserContext::scope , 以及 DocParserContext::styleStack.

被这些函数引用 handleCommand() , 以及 handleHtmlStartTag().

◆ handleLink()

void DocPara::handleLink ( const QCString cmdName,
bool  isJavaLink 
)

在文件 docparser.cpp5063 行定义.

5064 {
5065  QCString saveCmdName = cmdName;
5066  int tok=m_parser.tokenizer.lex();
5067  if (tok!=TK_WHITESPACE)
5068  {
5069  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"expected whitespace after \\%s command",
5070  qPrint(saveCmdName));
5071  return;
5072  }
5074  tok=m_parser.tokenizer.lex();
5075  if (tok!=TK_WORD)
5076  {
5077  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"%s as the argument of %s",
5078  DocTokenizer::tokToString(tok),qPrint(saveCmdName));
5079  return;
5080  }
5082  DocLink *lnk = new DocLink(m_parser,this,m_parser.context.token->name);
5083  m_children.push_back(std::unique_ptr<DocLink>(lnk));
5084  QCString leftOver = lnk->parse(isJavaLink);
5085  if (!leftOver.isEmpty())
5086  {
5087  m_children.push_back(std::make_unique<DocWord>(m_parser,this,leftOver));
5088  }
5089 }

引用了 DocParser::context, DocParserContext::fileName, DocTokenizer::getLineNr(), QCString::isEmpty(), DocTokenizer::lex(), CompAccept< DocPara >::m_children, DocNode::m_parser, TokenInfo::name, DocLink::parse(), qPrint(), DocTokenizer::setStateLink(), DocTokenizer::setStatePara(), TK_WHITESPACE, TK_WORD, DocParserContext::token, DocParser::tokenizer, DocTokenizer::tokToString() , 以及 warn_doc_error().

被这些函数引用 handleCommand().

◆ handleParamSection()

int DocPara::handleParamSection ( const QCString cmdName,
DocParamSect::Type  t,
bool  xmlContext = FALSE,
int  direction = DocParamSect::Unspecified 
)

在文件 docparser.cpp4745 行定义.

4749 {
4750  DocParamSect *ps=0;
4751  if (!m_children.empty() && // previous element
4752  m_children.back()->kind()==Kind_ParamSect && // was a param sect
4753  ((DocParamSect *)m_children.back().get())->type()==t) // of same type
4754  {
4755  // append to previous section
4756  ps=(DocParamSect *)m_children.back().get();
4757  }
4758  else // start new section
4759  {
4760  ps=new DocParamSect(m_parser,this,t);
4761  m_children.push_back(std::unique_ptr<DocParamSect>(ps));
4762  }
4763  int rv=ps->parse(cmdName,xmlContext,(DocParamSect::Direction)direction);
4764  return (rv!=TK_NEWPARA) ? rv : RetVal_OK;
4765 }

引用了 DocNode::Kind_ParamSect, CompAccept< DocPara >::m_children, DocNode::m_parser, DocParamSect::parse(), RetVal_OK , 以及 TK_NEWPARA.

被这些函数引用 handleCommand() , 以及 handleHtmlStartTag().

◆ handleRef()

void DocPara::handleRef ( const QCString cmdName)

在文件 docparser.cpp5091 行定义.

5092 {
5093  QCString saveCmdName = cmdName;
5094  DBG(("handleRef(%s)\n",qPrint(saveCmdName)));
5095  int tok=m_parser.tokenizer.lex();
5096  if (tok!=TK_WHITESPACE)
5097  {
5098  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"expected whitespace after \\%s command",
5099  qPrint(saveCmdName));
5100  return;
5101  }
5103  tok=m_parser.tokenizer.lex(); // get the reference id
5104  DocRef *ref=0;
5105  if (tok!=TK_WORD)
5106  {
5107  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"unexpected token %s as the argument of %s",
5108  DocTokenizer::tokToString(tok),qPrint(saveCmdName));
5109  goto endref;
5110  }
5112  m_children.push_back(std::unique_ptr<DocRef>(ref));
5113  ref->parse();
5114 endref:
5116 }

引用了 DocParserContext::context, DocParser::context, DBG, DocParserContext::fileName, DocTokenizer::getLineNr(), DocTokenizer::lex(), CompAccept< DocPara >::m_children, DocNode::m_parser, TokenInfo::name, DocRef::parse(), qPrint(), DocTokenizer::setStatePara(), DocTokenizer::setStateRef(), TK_WHITESPACE, TK_WORD, DocParserContext::token, DocParser::tokenizer, DocTokenizer::tokToString() , 以及 warn_doc_error().

被这些函数引用 handleCommand().

◆ handleSection()

void DocPara::handleSection ( const QCString cmdName)

在文件 docparser.cpp5245 行定义.

5246 {
5247  QCString saveCmdName = cmdName;
5248  // get the argument of the section command.
5249  int tok=m_parser.tokenizer.lex();
5250  if (tok!=TK_WHITESPACE)
5251  {
5252  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"expected whitespace after \\%s command",
5253  qPrint(saveCmdName));
5254  return;
5255  }
5256  tok=m_parser.tokenizer.lex();
5257  if (tok==0)
5258  {
5259  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"unexpected end of comment block while parsing the "
5260  "argument of command %s\n", qPrint(saveCmdName));
5261  return;
5262  }
5263  else if (tok!=TK_WORD && tok!=TK_LNKWORD)
5264  {
5265  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"unexpected token %s as the argument of %s",
5266  DocTokenizer::tokToString(tok),qPrint(saveCmdName));
5267  return;
5268  }
5273 }

引用了 DocParser::context, DocParserContext::fileName, DocTokenizer::getLineNr(), DocTokenizer::lex(), DocNode::m_parser, TokenInfo::name, qPrint(), TokenInfo::sectionId, DocTokenizer::setStatePara(), DocTokenizer::setStateSkipTitle(), TK_LNKWORD, TK_WHITESPACE, TK_WORD, DocParserContext::token, DocParser::tokenizer, DocTokenizer::tokToString() , 以及 warn_doc_error().

被这些函数引用 handleCommand().

◆ handleSimpleSection()

int DocPara::handleSimpleSection ( DocSimpleSect::Type  t,
bool  xmlContext = FALSE 
)

在文件 docparser.cpp4715 行定义.

4716 {
4717  DocSimpleSect *ss=0;
4718  bool needsSeparator = FALSE;
4719  if (!m_children.empty() && // previous element
4720  m_children.back()->kind()==Kind_SimpleSect && // was a simple sect
4721  ((DocSimpleSect *)m_children.back().get())->type()==t && // of same type
4722  t!=DocSimpleSect::User) // but not user defined
4723  {
4724  // append to previous section
4725  ss=(DocSimpleSect *)m_children.back().get();
4726  needsSeparator = TRUE;
4727  }
4728  else // start new section
4729  {
4730  ss=new DocSimpleSect(m_parser,this,t);
4731  m_children.push_back(std::unique_ptr<DocSimpleSect>(ss));
4732  }
4733  int rv = RetVal_OK;
4734  if (xmlContext)
4735  {
4736  return ss->parseXml();
4737  }
4738  else
4739  {
4740  rv = ss->parse(t==DocSimpleSect::User,needsSeparator);
4741  }
4742  return (rv!=TK_NEWPARA) ? rv : RetVal_OK;
4743 }

引用了 FALSE, DocNode::Kind_SimpleSect, CompAccept< DocPara >::m_children, DocNode::m_parser, DocSimpleSect::parse(), DocSimpleSect::parseXml(), RetVal_OK, TK_NEWPARA, TRUE , 以及 DocSimpleSect::User.

被这些函数引用 handleCommand() , 以及 handleHtmlStartTag().

◆ handleStartCode()

int DocPara::handleStartCode ( )

在文件 docparser.cpp5292 行定义.

5293 {
5294  int retval = m_parser.tokenizer.lex();
5296  if (!lang.isEmpty() && lang.at(0)!='.')
5297  {
5298  lang="."+lang;
5299  }
5301  {
5302  m_parser.context.token->verb = substitute(substitute(m_parser.context.token->verb,"&lt;","<"),"&gt;",">");
5303  }
5304  // search for the first non-whitespace line, index is stored in li
5305  int i=0,li=0,l=m_parser.context.token->verb.length();
5306  while (i<l && (m_parser.context.token->verb.at(i)==' ' || m_parser.context.token->verb.at(i)=='\n'))
5307  {
5308  if (m_parser.context.token->verb.at(i)=='\n') li=i+1;
5309  i++;
5310  }
5312  if (retval==0) warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"code section ended without end marker");
5314  return retval;
5315 }

引用了 QCString::at(), DocVerbatim::Code, DocParserContext::context, DocParser::context, DocParserContext::exampleName, FALSE, DocParserContext::fileName, DocTokenizer::getLineNr(), QCString::isEmpty(), DocParserContext::isExample, QCString::length(), DocTokenizer::lex(), CompAccept< DocPara >::m_children, DocNode::m_parser, QCString::mid(), TokenInfo::name, DocTokenizer::setStatePara(), stripIndentation(), substitute(), DocParserContext::token, DocParser::tokenizer, TokenInfo::verb, warn_doc_error() , 以及 DocParserContext::xmlComment.

被这些函数引用 handleCommand() , 以及 handleHtmlStartTag().

◆ handleVhdlFlow()

void DocPara::handleVhdlFlow ( )

在文件 docparser.cpp5056 行定义.

5057 {
5058  DocVhdlFlow *vf = new DocVhdlFlow(m_parser,this);
5059  m_children.push_back(std::unique_ptr<DocVhdlFlow>(vf));
5060  vf->parse();
5061 }

引用了 CompAccept< DocPara >::m_children, DocNode::m_parser , 以及 DocVhdlFlow::parse().

被这些函数引用 handleCommand().

◆ handleXRefItem()

int DocPara::handleXRefItem ( )

在文件 docparser.cpp4829 行定义.

4830 {
4831  int retval=m_parser.tokenizer.lex();
4832  ASSERT(retval==TK_WHITESPACE);
4834  retval=m_parser.tokenizer.lex();
4835  if (retval==RetVal_OK)
4836  {
4838  if (ref->parse())
4839  {
4840  m_children.push_back(std::unique_ptr<DocXRefItem>(ref));
4841  }
4842  else
4843  {
4844  delete ref;
4845  }
4846  }
4848  return retval;
4849 }

引用了 ASSERT, DocParser::context, TokenInfo::id, DocTokenizer::lex(), CompAccept< DocPara >::m_children, DocNode::m_parser, TokenInfo::name, DocXRefItem::parse(), RetVal_OK, DocTokenizer::setStatePara(), DocTokenizer::setStateXRefItem(), TK_WHITESPACE, DocParserContext::token , 以及 DocParser::tokenizer.

被这些函数引用 handleCommand().

◆ injectToken()

bool DocPara::injectToken ( int  tok,
const QCString tokText 
)

◆ isEmpty()

bool DocPara::isEmpty ( ) const
inline

◆ isFirst()

bool DocPara::isFirst ( ) const
inline

在文件 docparser.h1188 行定义.

1188 { return m_isFirst; }

引用了 m_isFirst.

被这些函数引用 handleIncludeOperator().

◆ isLast()

bool DocPara::isLast ( ) const
inline

在文件 docparser.h1189 行定义.

1189 { return m_isLast; }

引用了 m_isLast.

被这些函数引用 LatexDocVisitor::visitPost(), RTFDocVisitor::visitPost() , 以及 ManDocVisitor::visitPost().

◆ kind()

Kind DocPara::kind ( ) const
inlineoverridevirtual

Returns the kind of node. Provides runtime type information

实现了 DocNode.

在文件 docparser.h1184 行定义.

1184 { return Kind_Para; }

引用了 DocNode::Kind_Para.

被这些函数引用 parse().

◆ markFirst()

◆ markLast()

◆ parse()

int DocPara::parse ( )

在文件 docparser.cpp6579 行定义.

6580 {
6581  DBG(("DocPara::parse() start\n"));
6582  auto ns = AutoNodeStack(m_parser,this);
6583  // handle style commands "inherited" from the previous paragraph
6585  int tok;
6586  int retval=0;
6587  while ((tok=m_parser.tokenizer.lex())) // get the next token
6588  {
6589 reparsetoken:
6590  DBG(("token %s at %d",DocTokenizer::tokToString(tok),m_parser.tokenizer.getLineNr()));
6591  if (tok==TK_WORD || tok==TK_LNKWORD || tok==TK_SYMBOL || tok==TK_URL ||
6592  tok==TK_COMMAND_AT || tok == TK_COMMAND_BS || tok==TK_HTMLTAG
6593  )
6594  {
6595  DBG((" name=%s",qPrint(m_parser.context.token->name)));
6596  }
6597  DBG(("\n"));
6598  switch(tok)
6599  {
6600  case TK_WORD:
6601  m_children.push_back(std::make_unique<DocWord>(m_parser,this,m_parser.context.token->name));
6602  break;
6603  case TK_LNKWORD:
6605  break;
6606  case TK_URL:
6607  m_children.push_back(std::make_unique<DocURL>(m_parser,this,m_parser.context.token->name,m_parser.context.token->isEMailAddr));
6608  break;
6609  case TK_WHITESPACE:
6610  {
6611  // prevent leading whitespace and collapse multiple whitespace areas
6612  DocNode::Kind k;
6613  if (insidePRE(this) || // all whitespace is relevant
6614  (
6615  // remove leading whitespace
6616  !m_children.empty() &&
6617  // and whitespace after certain constructs
6618  (k=m_children.back()->kind())!=DocNode::Kind_HtmlDescList &&
6624  /*k!=DocNode::Kind_Verbatim &&*/
6629  )
6630  )
6631  {
6632  m_children.push_back(std::make_unique<DocWhiteSpace>(m_parser,this,m_parser.context.token->chars));
6633  }
6634  }
6635  break;
6636  case TK_LISTITEM:
6637  {
6638  DBG(("found list item at %d parent=%d\n",m_parser.context.token->indent,parent()->kind()));
6639  DocNode *n=parent();
6640  while (n && n->kind()!=DocNode::Kind_AutoList) n=n->parent();
6641  if (n) // we found an auto list up in the hierarchy
6642  {
6643  DocAutoList *al = (DocAutoList *)n;
6644  DBG(("previous list item at %d\n",al->indent()));
6645  if (al->indent()>=m_parser.context.token->indent)
6646  // new item at the same or lower indent level
6647  {
6648  retval=TK_LISTITEM;
6649  goto endparagraph;
6650  }
6651  }
6652 
6653  // determine list depth
6654  int depth = 0;
6655  n=parent();
6656  while(n)
6657  {
6658  if (n->kind() == DocNode::Kind_AutoList &&
6659  ((DocAutoList*)n)->isEnumList()) depth++;
6660  n=n->parent();
6661  }
6662 
6663  // first item or sub list => create new list
6664  DocAutoList *al=0;
6665  do
6666  {
6668  m_parser.context.token->isEnumList,depth);
6669  m_children.push_back(std::unique_ptr<DocAutoList>(al));
6670  retval = al->parse();
6671  } while (retval==TK_LISTITEM && // new list
6672  al->indent()==m_parser.context.token->indent // at same indent level
6673  );
6674 
6675  // check the return value
6676  if (retval==RetVal_SimpleSec) // auto list ended due to simple section command
6677  {
6678  // Reparse the token that ended the section at this level,
6679  // so a new simple section will be started at this level.
6680  // This is the same as unputting the last read token and continuing.
6682  if (m_parser.context.token->name.left(4)=="rcs:") // RCS section
6683  {
6686  tok = TK_RCSTAG;
6687  }
6688  else // other section
6689  {
6690  tok = TK_COMMAND_BS;
6691  }
6692  DBG(("reparsing command %s\n",qPrint(m_parser.context.token->name)));
6693  goto reparsetoken;
6694  }
6695  else if (retval==TK_ENDLIST)
6696  {
6697  if (al->indent()>m_parser.context.token->indent) // end list
6698  {
6699  goto endparagraph;
6700  }
6701  else // continue with current paragraph
6702  {
6703  }
6704  }
6705  else // paragraph ended due to TK_NEWPARA, TK_LISTITEM, or EOF
6706  {
6707  goto endparagraph;
6708  }
6709  }
6710  break;
6711  case TK_ENDLIST:
6712  DBG(("Found end of list inside of paragraph at line %d\n",m_parser.tokenizer.getLineNr()));
6714  {
6716  DocAutoList *al = (DocAutoList *)parent()->parent();
6717  if (al->indent()>=m_parser.context.token->indent)
6718  {
6719  // end of list marker ends this paragraph
6720  retval=TK_ENDLIST;
6721  goto endparagraph;
6722  }
6723  else
6724  {
6725  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"End of list marker found "
6726  "has invalid indent level");
6727  }
6728  }
6729  else
6730  {
6731  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"End of list marker found without any preceding "
6732  "list items");
6733  }
6734  break;
6735  case TK_COMMAND_AT:
6736  // fall through
6737  case TK_COMMAND_BS:
6738  {
6739  // see if we have to start a simple section
6741  DocNode *n=parent();
6742  while (n &&
6745  )
6746  {
6747  n=n->parent();
6748  }
6749  if (cmd&SIMPLESECT_BIT)
6750  {
6751  if (n) // already in a simple section
6752  {
6753  // simple section cannot start in this paragraph, need
6754  // to unwind the stack and remember the command.
6756  retval=RetVal_SimpleSec;
6757  goto endparagraph;
6758  }
6759  }
6760  // see if we are in a simple list
6761  n=parent();
6762  while (n && n->kind()!=DocNode::Kind_SimpleListItem) n=n->parent();
6763  if (n)
6764  {
6765  if (cmd==CMD_LI)
6766  {
6767  retval=RetVal_ListItem;
6768  goto endparagraph;
6769  }
6770  }
6771 
6772  // handle the command
6773  retval=handleCommand(m_parser.context.token->name,tok);
6774  DBG(("handleCommand returns %s\n",DocTokenizer::retvalToString(retval)));
6775 
6776  // check the return value
6777  if (retval==RetVal_SimpleSec)
6778  {
6779  // Reparse the token that ended the section at this level,
6780  // so a new simple section will be started at this level.
6781  // This is the same as unputting the last read token and continuing.
6783  if (m_parser.context.token->name.left(4)=="rcs:") // RCS section
6784  {
6787  tok = TK_RCSTAG;
6788  }
6789  else // other section
6790  {
6791  tok = TK_COMMAND_BS;
6792  }
6793  DBG(("reparsing command %s\n",qPrint(m_parser.context.token->name)));
6794  goto reparsetoken;
6795  }
6796  else if (retval==RetVal_OK)
6797  {
6798  // the command ended normally, keep scanning for new tokens.
6799  retval = 0;
6800  }
6801  else if (retval>0 && retval<RetVal_OK)
6802  {
6803  // the command ended with a new command, reparse this token
6804  tok = retval;
6805  goto reparsetoken;
6806  }
6807  else // end of file, end of paragraph, start or end of section
6808  // or some auto list marker
6809  {
6810  goto endparagraph;
6811  }
6812  }
6813  break;
6814  case TK_HTMLTAG:
6815  {
6816  if (!m_parser.context.token->endTag) // found a start tag
6817  {
6819  }
6820  else // found an end tag
6821  {
6823  }
6824  if (retval==RetVal_OK)
6825  {
6826  // the command ended normally, keep scanner for new tokens.
6827  retval = 0;
6828  }
6829  else
6830  {
6831  goto endparagraph;
6832  }
6833  }
6834  break;
6835  case TK_SYMBOL:
6836  {
6838  if (s!=DocSymbol::Sym_Unknown)
6839  {
6840  m_children.push_back(std::make_unique<DocSymbol>(m_parser,this,s));
6841  }
6842  else
6843  {
6844  m_children.push_back(std::make_unique<DocWord>(m_parser,this,m_parser.context.token->name));
6845  warn_doc_error(m_parser.context.fileName,m_parser.tokenizer.getLineNr(),"Unsupported symbol %s found",
6847  }
6848  break;
6849  }
6850  case TK_NEWPARA:
6851  retval=TK_NEWPARA;
6852  goto endparagraph;
6853  case TK_RCSTAG:
6854  {
6855  DocNode *n=parent();
6856  while (n &&
6859  )
6860  {
6861  n=n->parent();
6862  }
6863  if (n) // already in a simple section
6864  {
6865  // simple section cannot start in this paragraph, need
6866  // to unwind the stack and remember the command.
6869  retval=RetVal_SimpleSec;
6870  goto endparagraph;
6871  }
6872 
6873  // see if we are in a simple list
6875  m_children.push_back(std::unique_ptr<DocSimpleSect>(ss));
6876  ss->parseRcs();
6877  }
6878  break;
6879  default:
6881  "Found unexpected token (id=%s)\n",DocTokenizer::tokToString(tok));
6882  break;
6883  }
6884  }
6885  retval=0;
6886 endparagraph:
6888  DBG(("DocPara::parse() end retval=%s\n",DocTokenizer::retvalToString(retval)));
6889  const DocNode *n = m_parser.context.nodeStack.top();
6891  retval==TK_NEWPARA && m_parser.context.token->name.lower() == "p")
6892  {
6893  ((DocPara *)n)->setAttribs(m_parser.context.token->attribs);
6894  }
6895  INTERNAL_ASSERT(retval==0 || retval==TK_NEWPARA || retval==TK_LISTITEM ||
6896  retval==TK_ENDLIST || retval>RetVal_OK
6897  );
6898 
6899  return retval;
6900 }

引用了 ASSERT, TokenInfo::attribs, TokenInfo::chars, CMD_LI, Mappers::cmdMapper, DocParser::context, DBG, DocSymbol::decodeSymbol(), TokenInfo::endTag, DocParserContext::fileName, DocTokenizer::getLineNr(), handleCommand(), handleHtmlEndTag(), handleHtmlStartTag(), DocParser::handleInitialStyleCommands(), DocParser::handleLinkedWord(), DocParser::handlePendingStyleCommands(), TokenInfo::indent, DocAutoList::indent(), insidePRE(), INTERNAL_ASSERT, TokenInfo::isEMailAddr, TokenInfo::isEnumList, DocNode::kind(), kind(), DocNode::Kind_AutoList, DocNode::Kind_AutoListItem, DocNode::Kind_HtmlBlockQuote, DocNode::Kind_HtmlDescList, DocNode::Kind_HtmlHeader, DocNode::Kind_HtmlList, DocNode::Kind_HtmlTable, DocNode::Kind_Para, DocNode::Kind_ParamSect, DocNode::Kind_SimpleList, DocNode::Kind_SimpleListItem, DocNode::Kind_SimpleSect, DocNode::Kind_XRefItem, QCString::left(), DocTokenizer::lex(), QCString::lower(), CompAccept< DocPara >::m_children, DocNode::m_parser, Mapper::map(), QCString::mid(), TokenInfo::name, DocParserContext::nodeStack, DocNode::parent(), DocAutoList::parse(), DocSimpleSect::parseRcs(), qPrint(), DocSimpleSect::Rcs, RetVal_ListItem, RetVal_OK, RetVal_SimpleSec, DocTokenizer::retvalToString(), SIMPLESECT_BIT, TokenInfo::simpleSectName, TokenInfo::simpleSectText, DocSymbol::Sym_Unknown, TokenInfo::text, TK_COMMAND_AT, TK_COMMAND_BS, TK_ENDLIST, TK_HTMLTAG, TK_LISTITEM, TK_LNKWORD, TK_NEWPARA, TK_RCSTAG, TK_SYMBOL, TK_URL, TK_WHITESPACE, TK_WORD, DocParserContext::token, DocParser::tokenizer, DocTokenizer::tokToString() , 以及 warn_doc_error().

被这些函数引用 DocParser::internalValidatingParseDoc(), DocAutoListItem::parse(), DocSection::parse(), DocInternal::parse(), DocParBlock::parse(), DocSimpleSect::parse(), DocParamList::parse(), DocSimpleListItem::parse(), DocHtmlListItem::parse(), DocHtmlDescData::parse(), DocHtmlCell::parse(), DocHtmlBlockQuote::parse(), DocRoot::parse(), DocSimpleSect::parseXml(), DocParamList::parseXml(), DocHtmlListItem::parseXml() , 以及 DocHtmlCell::parseXml().

◆ setAttribs()

void DocPara::setAttribs ( const HtmlAttribList attribs)
inline

在文件 docparser.h1216 行定义.

1216 { m_attribs = attribs; }

引用了 attribs() , 以及 m_attribs.

类成员变量说明

◆ m_attribs

HtmlAttribList DocPara::m_attribs
private

在文件 docparser.h1222 行定义.

被这些函数引用 attribs() , 以及 setAttribs().

◆ m_isFirst

bool DocPara::m_isFirst = false
private

在文件 docparser.h1220 行定义.

被这些函数引用 isFirst() , 以及 markFirst().

◆ m_isLast

bool DocPara::m_isLast = false
private

在文件 docparser.h1221 行定义.

被这些函数引用 isLast() , 以及 markLast().

◆ m_sectionId

QCString DocPara::m_sectionId
private

在文件 docparser.h1219 行定义.


该类的文档由以下文件生成:
DocHtmlBlockQuote
Node representing an HTML blockquote
Definition: docparser.h:1433
CMD_DOLLAR
@ CMD_DOLLAR
Definition: cmdmapper.h:42
CMD_ENDRTFONLY
@ CMD_ENDRTFONLY
Definition: cmdmapper.h:118
StringVector
std::vector< std::string > StringVector
Definition: containers.h:32
DocPara::handleLink
void handleLink(const QCString &cmdName, bool isJavaLink)
Definition: docparser.cpp:5063
DocVerbatim
Node representing a verbatim, unparsed text fragment
Definition: docparser.h:510
TokenInfo::emptyTag
bool emptyTag
Definition: doctokenizer.h:101
DocPara::handleCommand
int handleCommand(const QCString &cmdName, const int tok)
Definition: docparser.cpp:5354
insideUL
static bool insideUL(DocNode *n)
Definition: docparser.cpp:584
DocSimpleSect::appendLinkWord
void appendLinkWord(const QCString &word)
Definition: docparser.cpp:4478
DocSymbol::Sym_Amp
@ Sym_Amp
Definition: docparser.h:445
TokenInfo::endTag
bool endTag
Definition: doctokenizer.h:100
RetVal_Subsubsection
@ RetVal_Subsubsection
Definition: doctokenizer.h:64
RetVal_TableCell
@ RetVal_TableCell
Definition: doctokenizer.h:73
DocParser::popContext
void popContext()
Definition: docparser.cpp:222
DocHtmlList::parse
int parse()
Definition: docparser.cpp:4048
TokenInfo::attribsStr
QCString attribsStr
Definition: doctokenizer.h:102
CMD_SUBSECTION
@ CMD_SUBSECTION
Definition: cmdmapper.h:85
DocPara
Node representing a paragraph in the documentation tree
Definition: docparser.h:1178
DocInclude::HtmlInclude
@ HtmlInclude
Definition: docparser.h:566
HTML_UNDERLINE
@ HTML_UNDERLINE
Definition: cmdmapper.h:185
CMD_ENDMANONLY
@ CMD_ENDMANONLY
Definition: cmdmapper.h:105
CMD_ENDVERBATIM
@ CMD_ENDVERBATIM
Definition: cmdmapper.h:51
CMD_BSLASH
@ CMD_BSLASH
Definition: cmdmapper.h:38
DocSymbol::SymType
SymType
Definition: docparser.h:388
DocSimpleSect::Return
@ Return
Definition: docparser.h:1116
HTML_H5
@ HTML_H5
Definition: cmdmapper.h:179
CMD_ENDXMLONLY
@ CMD_ENDXMLONLY
Definition: cmdmapper.h:52
DocParserContext::token
TokenInfo * token
Definition: docparser.cpp:129
CMD_FORMULA
@ CMD_FORMULA
Definition: cmdmapper.h:54
DocParser::context
DocParserContext context
Definition: docparser.cpp:175
DocTokenizer::tokToString
static const char * tokToString(int token)
CMD_EMPHASIS
@ CMD_EMPHASIS
Definition: cmdmapper.h:45
CMD_LESS
@ CMD_LESS
Definition: cmdmapper.h:65
CMD_STARTCODE
@ CMD_STARTCODE
Definition: cmdmapper.h:91
insideOL
static bool insideOL(DocNode *n)
Definition: docparser.cpp:598
DocTokenizer::setStateBlock
void setStateBlock()
DocParserContext::scope
const Definition * scope
Definition: docparser.cpp:101
CMD_POST
@ CMD_POST
Definition: cmdmapper.h:74
CMD_ENDCODE
@ CMD_ENDCODE
Definition: cmdmapper.h:46
DocHtmlTable
Node representing a HTML table
Definition: docparser.h:1405
TK_WORD
@ TK_WORD
Definition: doctokenizer.h:46
XML_SEE
@ XML_SEE
Definition: cmdmapper.h:207
DocPara::handleInclude
void handleInclude(const QCString &cmdName, DocInclude::Type t)
Definition: docparser.cpp:5118
MemberDef::briefDescription
virtual QCString briefDescription(bool abbr=FALSE) const =0
DocNode::Kind_AutoListItem
@ Kind_AutoListItem
Definition: docparser.h:105
CMD_AT
@ CMD_AT
Definition: cmdmapper.h:33
DocTokenizer::setStatePlantUML
void setStatePlantUML()
XML_PARA
@ XML_PARA
Definition: cmdmapper.h:201
CMD_SECTION
@ CMD_SECTION
Definition: cmdmapper.h:83
DocSymbol::Sym_Dot
@ Sym_Dot
Definition: docparser.h:447
MemberDef::documentation
virtual QCString documentation() const =0
CompAccept< DocPara >
XML_SUMMARY
@ XML_SUMMARY
Definition: cmdmapper.h:209
DocSimpleSect::Warning
@ Warning
Definition: docparser.h:1117
RetVal_EndDesc
@ RetVal_EndDesc
Definition: doctokenizer.h:71
CMD_BOLD
@ CMD_BOLD
Definition: cmdmapper.h:37
TokenInfo::isEnumList
bool isEnumList
Definition: doctokenizer.h:82
CMD_COPYDOC
@ CMD_COPYDOC
Definition: cmdmapper.h:40
DocImage::Xml
@ Xml
Definition: docparser.h:774
DocParserContext::retvalsFound
StringMultiSet retvalsFound
Definition: docparser.cpp:115
DocHtmlTable::parse
int parse()
Definition: docparser.cpp:3551
DocPara::handleIncludeOperator
void handleIncludeOperator(const QCString &cmdName, DocIncOperator::Type t)
Definition: docparser.cpp:4863
DocPara::attribs
const HtmlAttribList & attribs() const
Definition: docparser.h:1215
HTML_LI
@ HTML_LI
Definition: cmdmapper.h:165
DocVerbatim::HtmlOnly
@ HtmlOnly
Definition: docparser.h:513
DocSymbol::Sym_Pipe
@ Sym_Pipe
Definition: docparser.h:446
QCString::length
uint length() const
Returns the length of the string, not counting the 0-terminator.
Definition: qcstring.h:147
DocStyleChange::Center
@ Center
Definition: docparser.h:349
HtmlAttribList
Class representing a list of HTML attributes.
Definition: htmlattrib.h:30
CMD_INTERNAL
@ CMD_INTERNAL
Definition: cmdmapper.h:61
DocNode::Kind_HtmlHeader
@ Kind_HtmlHeader
Definition: docparser.h:133
CMD_ENDDOT
@ CMD_ENDDOT
Definition: cmdmapper.h:101
DocHtmlHeader
Node Html heading
Definition: docparser.h:957
DocSymbol::Sym_Equal
@ Sym_Equal
Definition: docparser.h:447
TokenInfo::name
QCString name
Definition: doctokenizer.h:74
DocStyleChange::Strike
@ Strike
Definition: docparser.h:356
RetVal_OK
@ RetVal_OK
Command starting with \
Definition: doctokenizer.h:59
RetVal_CloseXml
@ RetVal_CloseXml
Definition: doctokenizer.h:78
DocParser::internalValidatingParseDoc
int internalValidatingParseDoc(DocNode *parent, DocNodeList &children, const QCString &doc)
Definition: docparser.cpp:1742
DocParserContext::nodeStack
DocNodeStack nodeStack
Definition: docparser.cpp:106
DocParser::handleInitialStyleCommands
void handleInitialStyleCommands(DocPara *parent, DocNodeList &children)
Definition: docparser.cpp:927
DocTokenizer::setStateManOnly
void setStateManOnly()
DocPara::m_attribs
HtmlAttribList m_attribs
Definition: docparser.h:1222
DocInclude::Snippet
@ Snippet
Definition: docparser.h:567
QCString::isEmpty
bool isEmpty() const
Returns TRUE iff the string is empty
Definition: qcstring.h:144
DocStyleChange::Del
@ Del
Definition: docparser.h:358
TokenInfo::chars
QCString chars
Definition: doctokenizer.h:105
CMD_LINK
@ CMD_LINK
Definition: cmdmapper.h:69
DocParser::handlePendingStyleCommands
void handlePendingStyleCommands(DocNode *parent, DocNodeList &children)
Definition: docparser.cpp:912
DocSymbol::Sym_Percent
@ Sym_Percent
Definition: docparser.h:446
DocVhdlFlow
Node representing a VHDL flow chart
Definition: docparser.h:860
DocNode
Abstract node interface with type information.
Definition: docparser.h:96
DocSymbol::Sym_Dollar
@ Sym_Dollar
Definition: docparser.h:446
DocParser::findAndCopyImage
QCString findAndCopyImage(const QCString &fileName, DocImage::Type type, bool doWarn=true)
Definition: docparser.cpp:266
DocVerbatim::Msc
@ Msc
Definition: docparser.h:513
CMD_VERSION
@ CMD_VERSION
Definition: cmdmapper.h:96
DocSimpleSect::parse
int parse(bool userTitle, bool needsSeparator)
Definition: docparser.cpp:4391
CMD_AUTHORS
@ CMD_AUTHORS
Definition: cmdmapper.h:36
DocPara::handleSection
void handleSection(const QCString &cmdName)
Definition: docparser.cpp:5245
XML_VALUE
@ XML_VALUE
Definition: cmdmapper.h:213
DocParser::handleLinkedWord
void handleLinkedWord(DocNode *parent, DocNodeList &children, bool ignoreAutoLinkFlag=FALSE)
Definition: docparser.cpp:1015
DocSymbol::Sym_Hash
@ Sym_Hash
Definition: docparser.h:446
RetVal_EndTable
@ RetVal_EndTable
Definition: doctokenizer.h:75
DocTokenizer::setStateXmlOnly
void setStateXmlOnly()
DocInclude::XmlInclude
@ XmlInclude
Definition: docparser.h:568
DocVerbatim::PlantUML
@ PlantUML
Definition: docparser.h:513
DocParser::handleStyleEnter
void handleStyleEnter(DocNode *parent, DocNodeList &children, DocStyleChange::Style s, const QCString &tagName, const HtmlAttribList *attribs)
Definition: docparser.cpp:855
HTML_CODE
@ HTML_CODE
Definition: cmdmapper.h:155
split
static std::vector< QCString > split(const QCString &str, const QCString &sep, bool allowEmptyEntries=FALSE, bool cleanup=TRUE)
Definition: template.cpp:47
RetVal_Subsection
@ RetVal_Subsection
Definition: doctokenizer.h:63
DocImage::DocBook
@ DocBook
Definition: docparser.h:774
HTML_SMALL
@ HTML_SMALL
Definition: cmdmapper.h:154
XML_REMARKS
@ XML_REMARKS
Definition: cmdmapper.h:205
CMD_CITE
@ CMD_CITE
Definition: cmdmapper.h:115
DocStyleChange::Italic
@ Italic
Definition: docparser.h:347
RetVal_TableRow
@ RetVal_TableRow
Definition: doctokenizer.h:72
DocNode::Kind_HtmlDescList
@ Kind_HtmlDescList
Definition: docparser.h:118
TokenInfo::attribs
HtmlAttribList attribs
Definition: doctokenizer.h:99
DocTokenizer::setStateDot
void setStateDot()
HTML_PRE
@ HTML_PRE
Definition: cmdmapper.h:157
CMD_PRE
@ CMD_PRE
Definition: cmdmapper.h:75
DocVerbatim::Code
@ Code
Definition: docparser.h:513
Doxygen::globalScope
static NamespaceDefMutable * globalScope
Definition: doxygen.h:102
DocStyleChange::Bold
@ Bold
Definition: docparser.h:346
DocParser::tokenizer
DocTokenizer tokenizer
Definition: docparser.cpp:176
CMD_LI
@ CMD_LI
Definition: cmdmapper.h:66
HTML_H4
@ HTML_H4
Definition: cmdmapper.h:178
DocSymbol::decodeSymbol
static SymType decodeSymbol(const QCString &symName)
Definition: docparser.cpp:1713
DocInclude::IncludeDoc
@ IncludeDoc
Definition: docparser.h:567
DocVerbatim::RtfOnly
@ RtfOnly
Definition: docparser.h:513
QCString::str
std::string str() const
Definition: qcstring.h:442
CMD_ENDDBONLY
@ CMD_ENDDBONLY
Definition: cmdmapper.h:122
CMD_LATEXONLY
@ CMD_LATEXONLY
Definition: cmdmapper.h:64
DocParamSect::TemplateParam
@ TemplateParam
Definition: docparser.h:1156
CMD_UNKNOWN
@ CMD_UNKNOWN
Definition: cmdmapper.h:29
CMD_ENDMSC
@ CMD_ENDMSC
Definition: cmdmapper.h:103
XML_RETURNS
@ XML_RETURNS
Definition: cmdmapper.h:206
TK_RCSTAG
@ TK_RCSTAG
Definition: doctokenizer.h:55
CMD_COPYRIGHT
@ CMD_COPYRIGHT
Definition: cmdmapper.h:114
CMD_SNIPPET
@ CMD_SNIPPET
Definition: cmdmapper.h:116
DocStyleChange::Span
@ Span
Definition: docparser.h:354
warn_doc_error
void warn_doc_error(const QCString &file, int line, const char *fmt,...)
Definition: message.cpp:186
DocAnchor
Node representing an anchor
Definition: docparser.h:303
CMD_SNIPPETDOC
@ CMD_SNIPPETDOC
Definition: cmdmapper.h:137
XML_EXAMPLE
@ XML_EXAMPLE
Definition: cmdmapper.h:195
DocSimpleSect::parseXml
int parseXml()
Definition: docparser.cpp:4442
DocPara::handleStartCode
int handleStartCode()
Definition: docparser.cpp:5292
DocTokenizer::setStateMsc
void setStateMsc()
DocStyleChange::Superscript
@ Superscript
Definition: docparser.h:352
TokenInfo::simpleSectText
QCString simpleSectText
Definition: doctokenizer.h:90
CMD_ANCHOR
@ CMD_ANCHOR
Definition: cmdmapper.h:32
CMD_PAR
@ CMD_PAR
Definition: cmdmapper.h:71
CMD_INCWITHLINES
@ CMD_INCWITHLINES
Definition: cmdmapper.h:106
QCString::at
char & at(size_t i)
Returns a reference to the character at index i.
Definition: qcstring.h:477
DocPara::handleHtmlEndTag
int handleHtmlEndTag(const QCString &tagName)
Definition: docparser.cpp:6380
HTML_H6
@ HTML_H6
Definition: cmdmapper.h:180
QCString::find
int find(char c, int index=0, bool cs=TRUE) const
Definition: qcstring.cpp:38
DocHtmlTable::parseXml
int parseXml()
Definition: docparser.cpp:3619
DocTokenizer::setStateXmlCode
void setStateXmlCode()
DocParser::handleAHref
int handleAHref(DocNode *parent, DocNodeList &children, const HtmlAttribList &tagHtmlAttribs)
Definition: docparser.cpp:937
DocParser::defaultHandleTitleAndSize
void defaultHandleTitleAndSize(const int cmd, DocNode *parent, DocNodeList &children, QCString &width, QCString &height)
Definition: docparser.cpp:1209
TokenInfo::indent
int indent
Definition: doctokenizer.h:83
DocParamSect::parse
int parse(const QCString &cmdName, bool xmlContext, Direction d)
Definition: docparser.cpp:4672
CMD_LINE
@ CMD_LINE
Definition: cmdmapper.h:67
DocSimpleSect::Author
@ Author
Definition: docparser.h:1116
CMD_MSC
@ CMD_MSC
Definition: cmdmapper.h:102
DocPara::handleIline
void handleIline()
Definition: docparser.cpp:4851
DocParserContext::hasReturnCommand
bool hasReturnCommand
Definition: docparser.cpp:114
DocSimpleSect::Note
@ Note
Definition: docparser.h:1117
TK_WHITESPACE
@ TK_WHITESPACE
Definition: doctokenizer.h:48
CMD_INVARIANT
@ CMD_INVARIANT
Definition: cmdmapper.h:63
DocPara::m_isLast
bool m_isLast
Definition: docparser.h:1221
DocSymbol::Sym_Minus
@ Sym_Minus
Definition: docparser.h:447
DocInclude::DocbookInclude
@ DocbookInclude
Definition: docparser.h:568
HTML_SUP
@ HTML_SUP
Definition: cmdmapper.h:159
DocIncOperator::parse
void parse()
Definition: docparser.cpp:1978
DocInclude::DontInclude
@ DontInclude
Definition: docparser.h:566
DocRef::parse
void parse()
Definition: docparser.cpp:2504
DocParserContext::exampleName
QCString exampleName
Definition: docparser.cpp:119
HTML_CAPTION
@ HTML_CAPTION
Definition: cmdmapper.h:153
CMD_ENDSECREFLIST
@ CMD_ENDSECREFLIST
Definition: cmdmapper.h:50
DocNode::Kind_IncOperator
@ Kind_IncOperator
Definition: docparser.h:132
DocSimpleList::parse
int parse()
Definition: docparser.cpp:4249
DocPara::handleInheritDoc
void handleInheritDoc()
Definition: docparser.cpp:5317
DocInclude::VerbInclude
@ VerbInclude
Definition: docparser.h:566
DocSimpleSect::parseRcs
int parseRcs()
Definition: docparser.cpp:4425
warn
void warn(const QCString &file, int line, const char *fmt,...)
Definition: message.cpp:151
TK_SYMBOL
@ TK_SYMBOL
Definition: doctokenizer.h:53
CMD_DIAFILE
@ CMD_DIAFILE
Definition: cmdmapper.h:126
DocParser::handleInternalRef
DocInternalRef * handleInternalRef(DocNode *parent)
Definition: docparser.cpp:1150
DocImage::Html
@ Html
Definition: docparser.h:774
TK_LISTITEM
@ TK_LISTITEM
Definition: doctokenizer.h:49
XML_TERM
@ XML_TERM
Definition: cmdmapper.h:210
HTML_SUB
@ HTML_SUB
Definition: cmdmapper.h:158
DocVerbatim::DocbookOnly
@ DocbookOnly
Definition: docparser.h:513
CMD_SA
@ CMD_SA
Definition: cmdmapper.h:81
DocNode::Kind_WhiteSpace
@ Kind_WhiteSpace
Definition: docparser.h:102
DocHtmlDescList
Node representing a Html description list
Definition: docparser.h:987
DocPara::handleParamSection
int handleParamSection(const QCString &cmdName, DocParamSect::Type t, bool xmlContext, int direction)
Definition: docparser.cpp:4745
XML_PARAMREF
@ XML_PARAMREF
Definition: cmdmapper.h:203
CMD_WARNING
@ CMD_WARNING
Definition: cmdmapper.h:97
DocIncOperator
Node representing a include/dontinclude operator block
Definition: docparser.h:606
QCString::contains
int contains(char c, bool cs=TRUE) const
Definition: qcstring.cpp:138
TK_COMMAND_AT
@ TK_COMMAND_AT
Definition: doctokenizer.h:51
CMD_COPYDETAILS
@ CMD_COPYDETAILS
Definition: cmdmapper.h:110
DocHtmlList::Ordered
@ Ordered
Definition: docparser.h:1096
DocImage::Type
Type
Definition: docparser.h:774
DocIndexEntry
Node representing an entry in the index.
Definition: docparser.h:682
DocSymbol::Sym_Less
@ Sym_Less
Definition: docparser.h:445
CMD_REMARK
@ CMD_REMARK
Definition: cmdmapper.h:78
DocSimpleSect::User
@ User
Definition: docparser.h:1117
DocParserContext::memberDef
const MemberDef * memberDef
Definition: docparser.cpp:117
DocSecRefList
Node representing a list of section references
Definition: docparser.h:1048
DocTokenizer::setStateLink
void setStateLink()
DocTokenizer::setStateVerbatim
void setStateVerbatim()
DocParserContext::inSeeBlock
bool inSeeBlock
Definition: docparser.cpp:103
uint
unsigned uint
Definition: qcstring.h:40
DocTokenizer::setStatePlantUMLOpt
void setStatePlantUMLOpt()
CMD_SNIPWITHLINES
@ CMD_SNIPWITHLINES
Definition: cmdmapper.h:138
HTML_IMG
@ HTML_IMG
Definition: cmdmapper.h:156
HTML_P
@ HTML_P
Definition: cmdmapper.h:174
DocParser::defaultHandleToken
bool defaultHandleToken(DocNode *parent, int tok, DocNodeList &children, bool handleWord=TRUE)
Definition: docparser.cpp:1277
DocTokenizer::setStateIline
void setStateIline()
Mappers::htmlTagMapper
static Mapper * htmlTagMapper
Definition: cmdmapper.h:235
DocParserContext::fileName
QCString fileName
Definition: docparser.cpp:110
TokenInfo::verb
QCString verb
Definition: doctokenizer.h:93
extractBlock
QCString extractBlock(const QCString &text, const QCString &marker)
Returns the section of text, in between a pair of markers.
Definition: util.cpp:6453
DocPara::isFirst
bool isFirst() const
Definition: docparser.h:1188
HTML_DL
@ HTML_DL
Definition: cmdmapper.h:168
CMD_HASH
@ CMD_HASH
Definition: cmdmapper.h:56
CMD_MANONLY
@ CMD_MANONLY
Definition: cmdmapper.h:104
MemberDef
A model of a class/file/namespace member symbol.
Definition: memberdef.h:45
insideLI
static bool insideLI(DocNode *n)
Definition: docparser.cpp:571
XML_TYPEPARAMREF
@ XML_TYPEPARAMREF
Definition: cmdmapper.h:212
DocXRefItem
Node representing an item of a cross-referenced list
Definition: docparser.h:749
XML_CmdMask
@ XML_CmdMask
Definition: cmdmapper.h:190
insidePRE
static bool insidePRE(DocNode *n)
Definition: docparser.cpp:558
DocAutoList::indent
int indent() const
Definition: docparser.h:709
DocImage
Node representing an image
Definition: docparser.h:771
QCString::stripWhiteSpace
QCString stripWhiteSpace() const
returns a copy of this string with leading and trailing whitespace removed
Definition: qcstring.h:243
DocNode::kind
virtual Kind kind() const =0
CMD_PIPE
@ CMD_PIPE
Definition: cmdmapper.h:119
CMD_ATTENTION
@ CMD_ATTENTION
Definition: cmdmapper.h:34
DocHtmlList::Unordered
@ Unordered
Definition: docparser.h:1096
DocTokenizer::setStateSkipTitle
void setStateSkipTitle()
QCString::left
QCString left(size_t len) const
Definition: qcstring.h:212
TokenInfo::text
QCString text
Definition: doctokenizer.h:77
TokenInfo::paramDir
ParamDir paramDir
Definition: doctokenizer.h:112
HTML_S
@ HTML_S
Definition: cmdmapper.h:188
DocPara::kind
Kind kind() const override
Definition: docparser.h:1184
DocNode::Kind_SimpleList
@ Kind_SimpleList
Definition: docparser.h:111
CMD_PARAM
@ CMD_PARAM
Definition: cmdmapper.h:72
RetVal_EndList
@ RetVal_EndList
Definition: doctokenizer.h:67
CMD_INCLUDEDOC
@ CMD_INCLUDEDOC
Definition: cmdmapper.h:136
DocSimpleSect::See
@ See
Definition: docparser.h:1116
DocIncOperator::Until
@ Until
Definition: docparser.h:609
DocParBlock::parse
int parse()
Definition: docparser.cpp:4213
CMD_INHERITDOC
@ CMD_INHERITDOC
Definition: cmdmapper.h:107
DocStyleChange::Ins
@ Ins
Definition: docparser.h:359
CMD_STARTUML
@ CMD_STARTUML
Definition: cmdmapper.h:130
CMD_VERBINCLUDE
@ CMD_VERBINCLUDE
Definition: cmdmapper.h:95
HTML_STRIKE
@ HTML_STRIKE
Definition: cmdmapper.h:184
DocInclude::SnipWithLines
@ SnipWithLines
Definition: docparser.h:567
XML_INHERITDOC
@ XML_INHERITDOC
Definition: cmdmapper.h:214
DocSymbol::Sym_At
@ Sym_At
Definition: docparser.h:445
CMD_GREATER
@ CMD_GREATER
Definition: cmdmapper.h:55
CMD_RETVAL
@ CMD_RETVAL
Definition: cmdmapper.h:80
DocImage::Latex
@ Latex
Definition: docparser.h:774
CMD_HTMLONLY
@ CMD_HTMLONLY
Definition: cmdmapper.h:58
DocSimpleSect::Rcs
@ Rcs
Definition: docparser.h:1117
DocParser::handleStyleArgument
int handleStyleArgument(DocNode *parent, DocNodeList &children, const QCString &cmdName)
Definition: docparser.cpp:803
DocNode::Kind_Para
@ Kind_Para
Definition: docparser.h:103
HTML_DD
@ HTML_DD
Definition: cmdmapper.h:170
SIMPLESECT_BIT
const int SIMPLESECT_BIT
Definition: cmdmapper.h:25
CMD_XMLINCLUDE
@ CMD_XMLINCLUDE
Definition: cmdmapper.h:144
DocTokenizer::retvalToString
static const char * retvalToString(int retval)
CMD_DATE
@ CMD_DATE
Definition: cmdmapper.h:41
Definition::name
virtual QCString name() const =0
CMD_AUTHOR
@ CMD_AUTHOR
Definition: cmdmapper.h:35
CMD_IMAGE
@ CMD_IMAGE
Definition: cmdmapper.h:59
DocSymbol::Sym_Unknown
@ Sym_Unknown
Definition: docparser.h:388
DocIncOperator::Skip
@ Skip
Definition: docparser.h:609
DocNode::m_parser
DocParser & m_parser
Definition: docparser.h:184
HTML_DT
@ HTML_DT
Definition: cmdmapper.h:169
RetVal_Internal
@ RetVal_Internal
Definition: doctokenizer.h:76
CMD_CODE
@ CMD_CODE
Definition: cmdmapper.h:39
DocNode::Kind_HtmlList
@ Kind_HtmlList
Definition: docparser.h:116
DocParBlock
Node representing an block of paragraphs
Definition: docparser.h:1070
DocParserContext::context
QCString context
Definition: docparser.cpp:102
DocVerbatim::ManOnly
@ ManOnly
Definition: docparser.h:513
DocPara::m_isFirst
bool m_isFirst
Definition: docparser.h:1220
DocParserContext::xmlComment
bool xmlComment
Definition: docparser.cpp:104
DocImage::Rtf
@ Rtf
Definition: docparser.h:774
CMD_SINCE
@ CMD_SINCE
Definition: cmdmapper.h:88
HTML_BLOCKQUOTE
@ HTML_BLOCKQUOTE
Definition: cmdmapper.h:183
CMD_ILINE
@ CMD_ILINE
Definition: cmdmapper.h:145
DocNode::Kind_SimpleListItem
@ Kind_SimpleListItem
Definition: docparser.h:112
QCString::lower
QCString lower() const
Definition: qcstring.h:232
DocSecRefList::parse
void parse()
Definition: docparser.cpp:2286
CMD_ENDPARBLOCK
@ CMD_ENDPARBLOCK
Definition: cmdmapper.h:125
RetVal_ListItem
@ RetVal_ListItem
Definition: doctokenizer.h:61
HTML_TD
@ HTML_TD
Definition: cmdmapper.h:161
CMD_HTMLINCLUDE
@ CMD_HTMLINCLUDE
Definition: cmdmapper.h:57
CMD_INTERNALREF
@ CMD_INTERNALREF
Definition: cmdmapper.h:62
DocTokenizer::setStateOptions
void setStateOptions()
DocTokenizer::getLineNr
int getLineNr(void)
HTML_OL
@ HTML_OL
Definition: cmdmapper.h:163
DocStyleChange::Small
@ Small
Definition: docparser.h:350
DocSymbol::Sym_DoubleColon
@ Sym_DoubleColon
Definition: docparser.h:446
DocHtmlHeader::parse
int parse()
Definition: docparser.cpp:2885
XML_LIST
@ XML_LIST
Definition: cmdmapper.h:199
DocRef
Node representing a reference to some item
Definition: docparser.h:891
DocTokenizer::setStateSnippet
void setStateSnippet()
DocSimpleSect::Date
@ Date
Definition: docparser.h:1116
DocParserContext::styleStack
DocStyleChangeStack styleStack
Definition: docparser.cpp:107
TRUE
#define TRUE
Definition: qcstring.h:36
DocSimpleSect::Authors
@ Authors
Definition: docparser.h:1116
HTML_CENTER
@ HTML_CENTER
Definition: cmdmapper.h:151
CMD_REF
@ CMD_REF
Definition: cmdmapper.h:76
CMD_MDASH
@ CMD_MDASH
Definition: cmdmapper.h:129
DocPara::handleXRefItem
int handleXRefItem()
Definition: docparser.cpp:4829
DocSymbol::Sym_Greater
@ Sym_Greater
Definition: docparser.h:445
DocParamSect
Node representing a parameter section
Definition: docparser.h:1150
DocInclude::IncWithLines
@ IncWithLines
Definition: docparser.h:567
CMD_MSCFILE
@ CMD_MSCFILE
Definition: cmdmapper.h:112
DocTokenizer::setStateEmoji
void setStateEmoji()
DocHtmlBlockQuote::parse
int parse()
Definition: docparser.cpp:4188
DocVerbatim::children
const DocNodeList & children() const
Definition: docparser.h:532
g_plantumlEngine
static const std::set< std::string > g_plantumlEngine
Definition: docparser.cpp:82
DocHtmlList
Node representing a Html list
Definition: docparser.h:1093
DocHtmlList::Type
Type
Definition: docparser.h:1096
HTML_H1
@ HTML_H1
Definition: cmdmapper.h:175
CMD_DOTFILE
@ CMD_DOTFILE
Definition: cmdmapper.h:44
CMD_UNTIL
@ CMD_UNTIL
Definition: cmdmapper.h:93
CMD_ENDHTMLONLY
@ CMD_ENDHTMLONLY
Definition: cmdmapper.h:47
lineBlock
int lineBlock(const QCString &text, const QCString &marker)
Returns the line number of the line following the line with the marker.
Definition: util.cpp:6498
MemberDef::reimplements
virtual const MemberDef * reimplements() const =0
TK_LNKWORD
@ TK_LNKWORD
Definition: doctokenizer.h:47
DocNode::Kind_ParamSect
@ Kind_ParamSect
Definition: docparser.h:143
RetVal_EndInternal
@ RetVal_EndInternal
Definition: doctokenizer.h:81
DocInternalRef::parse
void parse()
Definition: docparser.cpp:2366
CMD_PARBLOCK
@ CMD_PARBLOCK
Definition: cmdmapper.h:124
CMD_ADDINDEX
@ CMD_ADDINDEX
Definition: cmdmapper.h:30
CMD_SECREFLIST
@ CMD_SECREFLIST
Definition: cmdmapper.h:82
CMD_XMLONLY
@ CMD_XMLONLY
Definition: cmdmapper.h:99
DocSimpleSect
Node representing a simple section
Definition: docparser.h:1111
DocTokenizer::setStateRtfOnly
void setStateRtfOnly()
DocVhdlFlow::parse
void parse()
Definition: docparser.cpp:2833
CMD_PERCENT
@ CMD_PERCENT
Definition: cmdmapper.h:73
DocTokenizer::setStateCite
void setStateCite()
DocHtmlList::parseXml
int parseXml()
Definition: docparser.cpp:4123
HTML_DEL
@ HTML_DEL
Definition: cmdmapper.h:187
DocParser::pushContext
void pushContext()
Definition: docparser.cpp:208
CMD_PUNT
@ CMD_PUNT
Definition: cmdmapper.h:133
DocIncOperator::SkipLine
@ SkipLine
Definition: docparser.h:609
CMD_LINEBREAK
@ CMD_LINEBREAK
Definition: cmdmapper.h:68
CMD_JAVALINK
@ CMD_JAVALINK
Definition: cmdmapper.h:92
unescapeCRef
static void unescapeCRef(QCString &s)
Definition: docparser.cpp:241
DocInclude
Node representing an included text block from file
Definition: docparser.h:563
DocNode::Kind_HtmlTable
@ Kind_HtmlTable
Definition: docparser.h:121
DocPara::handleRef
void handleRef(const QCString &cmdName)
Definition: docparser.cpp:5091
DocStyleChange::Subscript
@ Subscript
Definition: docparser.h:351
HTML_TABLE
@ HTML_TABLE
Definition: cmdmapper.h:152
DocPara::handleEmoji
void handleEmoji()
Definition: docparser.cpp:4799
DocIndexEntry::parse
int parse()
Definition: docparser.cpp:3103
RetVal_EndBlockQuote
@ RetVal_EndBlockQuote
Definition: doctokenizer.h:79
XML_ITEM
@ XML_ITEM
Definition: cmdmapper.h:198
CMD_QUOTE
@ CMD_QUOTE
Definition: cmdmapper.h:111
DocAutoList
Node representing an auto List
Definition: docparser.h:703
CMD_SUBPAGE
@ CMD_SUBPAGE
Definition: cmdmapper.h:84
RetVal_EndParBlock
@ RetVal_EndParBlock
Definition: doctokenizer.h:82
HTML_EMPHASIS
@ HTML_EMPHASIS
Definition: cmdmapper.h:166
RetVal_SwitchLang
@ RetVal_SwitchLang
Definition: doctokenizer.h:77
DocParamSect::Exception
@ Exception
Definition: docparser.h:1156
XML_LISTHEADER
@ XML_LISTHEADER
Definition: cmdmapper.h:200
DocNode::Kind_HtmlBlockQuote
@ Kind_HtmlBlockQuote
Definition: docparser.h:149
TokenInfo::simpleSectName
QCString simpleSectName
Definition: doctokenizer.h:89
DocInclude::RtfInclude
@ RtfInclude
Definition: docparser.h:568
DocNode::setInsidePreformatted
void setInsidePreformatted(bool p)
Definition: docparser.h:181
DocInclude::SnippetDoc
@ SnippetDoc
Definition: docparser.h:567
TokenInfo::id
int id
Definition: doctokenizer.h:96
DocSymbol::Sym_Plus
@ Sym_Plus
Definition: docparser.h:447
DocInclude::parse
void parse()
Definition: docparser.cpp:1925
DocVerbatim::setLocation
void setLocation(const QCString &file, int line)
Definition: docparser.h:541
DocInclude::LatexInclude
@ LatexInclude
Definition: docparser.h:566
stripIndentation
QCString stripIndentation(const QCString &s)
Definition: util.cpp:6597
HTML_UL
@ HTML_UL
Definition: cmdmapper.h:164
HTML_A
@ HTML_A
Definition: cmdmapper.h:172
XML_TYPEPARAM
@ XML_TYPEPARAM
Definition: cmdmapper.h:211
QCString::mid
QCString mid(size_t index, size_t len=static_cast< size_t >(-1)) const
Definition: qcstring.h:224
CMD_PLUS
@ CMD_PLUS
Definition: cmdmapper.h:134
substitute
QCString substitute(const QCString &s, const QCString &src, const QCString &dst)
substitute all occurrences of src in s by dst
Definition: qcstring.cpp:465
DocTokenizer::setInsidePre
void setInsidePre(bool b)
DocTokenizer::setStateXRefItem
void setStateXRefItem()
DocSymbol::Sym_Quot
@ Sym_Quot
Definition: docparser.h:447
DocTokenizer::setStateRef
void setStateRef()
DocStyleChange::Code
@ Code
Definition: docparser.h:348
DocPara::handleCite
void handleCite()
Definition: docparser.cpp:4767
CMD_MANINCLUDE
@ CMD_MANINCLUDE
Definition: cmdmapper.h:143
CMD_AMP
@ CMD_AMP
Definition: cmdmapper.h:31
DocIncOperator::markFirst
void markFirst(bool v=TRUE)
Definition: docparser.h:636
CMD_SECREFITEM
@ CMD_SECREFITEM
Definition: cmdmapper.h:77
DocInclude::Include
@ Include
Definition: docparser.h:566
DocPara::handleHtmlStartTag
int handleHtmlStartTag(const QCString &tagName, const HtmlAttribList &tagHtmlAttribs)
Definition: docparser.cpp:5965
DocParser::handleAnchor
DocAnchor * handleAnchor(DocNode *parent)
Definition: docparser.cpp:1172
CMD_NOTE
@ CMD_NOTE
Definition: cmdmapper.h:70
Config_getBool
#define Config_getBool(name)
Definition: config.h:33
XML_DESCRIPTION
@ XML_DESCRIPTION
Definition: cmdmapper.h:194
HTML_HR
@ HTML_HR
Definition: cmdmapper.h:167
DocNode::Kind
Kind
Definition: docparser.h:100
DocParser::handleImg
void handleImg(DocNode *parent, DocNodeList &children, const HtmlAttribList &tagHtmlAttribs)
Definition: docparser.cpp:1682
HTML_DIV
@ HTML_DIV
Definition: cmdmapper.h:182
RetVal_SimpleSec
@ RetVal_SimpleSec
Definition: doctokenizer.h:60
DocNode::Kind_XRefItem
@ Kind_XRefItem
Definition: docparser.h:115
CMD_PARAGRAPH
@ CMD_PARAGRAPH
Definition: cmdmapper.h:87
CMD_DOT
@ CMD_DOT
Definition: cmdmapper.h:100
DocSymbol::Sym_BSlash
@ Sym_BSlash
Definition: docparser.h:445
DocParserContext::isExample
bool isExample
Definition: docparser.cpp:118
CMD_DBONLY
@ CMD_DBONLY
Definition: cmdmapper.h:121
DocNode::Kind_AutoList
@ Kind_AutoList
Definition: docparser.h:104
XML_PARAM
@ XML_PARAM
Definition: cmdmapper.h:202
Markdown
Helper class to process markdown formatted text
Definition: markdown.h:32
CMD_DCOLON
@ CMD_DCOLON
Definition: cmdmapper.h:113
CMD_ENDINTERNAL
@ CMD_ENDINTERNAL
Definition: cmdmapper.h:123
TokenInfo::isEMailAddr
bool isEMailAddr
Definition: doctokenizer.h:108
insideTable
static bool insideTable(DocNode *n)
Definition: docparser.cpp:611
DocTokenizer::setStateHtmlOnly
void setStateHtmlOnly()
CMD_SKIPLINE
@ CMD_SKIPLINE
Definition: cmdmapper.h:90
DocTokenizer::setLineNr
void setLineNr(int lineno)
DocVerbatim::setUseBitmap
void setUseBitmap(const bool &u)
Definition: docparser.h:540
TK_ENDLIST
@ TK_ENDLIST
Definition: doctokenizer.h:50
DocParamSect::Param
@ Param
Definition: docparser.h:1156
Definition::getOuterScope
virtual Definition * getOuterScope() const =0
TK_HTMLTAG
@ TK_HTMLTAG
Command starting with @
Definition: doctokenizer.h:52
DocVerbatim::setEngine
void setEngine(const QCString &e)
Definition: docparser.h:539
CMD_EMOJI
@ CMD_EMOJI
Definition: cmdmapper.h:139
DocSimpleSect::Copyright
@ Copyright
Definition: docparser.h:1117
DocImage::parse
void parse()
Definition: docparser.cpp:2877
DocVerbatim::LatexOnly
@ LatexOnly
Definition: docparser.h:513
QCString::startsWith
bool startsWith(const char *s) const
Definition: qcstring.h:408
DocIncOperator::Line
@ Line
Definition: docparser.h:609
RetVal_Section
@ RetVal_Section
Definition: doctokenizer.h:62
HTML_TR
@ HTML_TR
Definition: cmdmapper.h:160
qPrint
const char * qPrint(const char *s)
Definition: qcstring.h:589
INTERNAL_ASSERT
#define INTERNAL_ASSERT(x)
Definition: docparser.cpp:67
stripLeadingAndTrailingEmptyLines
QCString stripLeadingAndTrailingEmptyLines(const QCString &s, int &docLine)
Special version of QCString::stripWhiteSpace() that only strips completely blank lines.
Definition: util.cpp:5394
DocTokenizer::setStatePattern
void setStatePattern()
DocStyleChange::Preformatted
@ Preformatted
Definition: docparser.h:353
Config_getString
#define Config_getString(name)
Definition: config.h:32
CMD_MINUS
@ CMD_MINUS
Definition: cmdmapper.h:135
DocParserContext::paramsFound
StringMultiSet paramsFound
Definition: docparser.cpp:116
DocTokenizer::setStateCode
void setStateCode()
RetVal_DescTitle
@ RetVal_DescTitle
Definition: doctokenizer.h:70
RetVal_Paragraph
@ RetVal_Paragraph
Definition: doctokenizer.h:65
DocPara::handleHtmlHeader
int handleHtmlHeader(const HtmlAttribList &tagHtmlAttribs, int level)
Definition: docparser.cpp:5275
Mappers::cmdMapper
static Mapper * cmdMapper
Definition: cmdmapper.h:234
CMD_ENDLATEXONLY
@ CMD_ENDLATEXONLY
Definition: cmdmapper.h:48
CMD_ENDUML
@ CMD_ENDUML
Definition: cmdmapper.h:131
DocSimpleSect::Post
@ Post
Definition: docparser.h:1117
DocParserContext::hasParamCommand
bool hasParamCommand
Definition: docparser.cpp:113
findAttribute
static bool findAttribute(const HtmlAttribList &tagHtmlAttribs, const char *attrName, QCString *result)
Definition: docparser.cpp:5949
DocSimpleSect::Pre
@ Pre
Definition: docparser.h:1117
DocPara::handleSimpleSection
int handleSimpleSection(DocSimpleSect::Type t, bool xmlContext=FALSE)
Definition: docparser.cpp:4715
TokenInfo::sectionId
QCString sectionId
Definition: doctokenizer.h:86
DocSimpleList
Node representing a simple list
Definition: docparser.h:1082
DocSimpleSect::Remark
@ Remark
Definition: docparser.h:1117
AutoNodeStack
Definition: docparser.cpp:186
ASSERT
#define ASSERT(x)
Definition: qcstring.h:44
DocParserContext::copyStack
DefinitionStack copyStack
Definition: docparser.cpp:109
QCString::data
const char * data() const
Returns a pointer to the contents of the string in the form of a 0-terminated C string
Definition: qcstring.h:153
CMD_RETURN
@ CMD_RETURN
Definition: cmdmapper.h:79
DocStyleChange::Underline
@ Underline
Definition: docparser.h:357
Mapper::map
int map(const QCString &n)
Definition: cmdmapper.cpp:237
DocPara::handleVhdlFlow
void handleVhdlFlow()
Definition: docparser.cpp:5056
CMD_RTFONLY
@ CMD_RTFONLY
Definition: cmdmapper.h:117
DocVerbatim::XmlOnly
@ XmlOnly
Definition: docparser.h:513
CMD_VHDLFLOW
@ CMD_VHDLFLOW
Definition: cmdmapper.h:120
DocTokenizer::lex
int lex()
DocParamSect::RetVal
@ RetVal
Definition: docparser.h:1156
DocInclude::DontIncWithLines
@ DontIncWithLines
Definition: docparser.h:568
DocTokenizer::setStateFile
void setStateFile()
DocAutoList::parse
int parse()
Definition: docparser.cpp:4312
HTML_H3
@ HTML_H3
Definition: cmdmapper.h:177
HTML_BOLD
@ HTML_BOLD
Definition: cmdmapper.h:173
XML_C
@ XML_C
Definition: cmdmapper.h:192
DocStyleChange::Div
@ Div
Definition: docparser.h:355
TK_NEWPARA
@ TK_NEWPARA
Definition: doctokenizer.h:54
XML_INCLUDE
@ XML_INCLUDE
Definition: cmdmapper.h:197
CMD_EXCEPTION
@ CMD_EXCEPTION
Definition: cmdmapper.h:53
DocParser::readTextFileByName
void readTextFileByName(const QCString &file, QCString &text)
Definition: docparser.cpp:1785
HTML_INS
@ HTML_INS
Definition: cmdmapper.h:186
CMD_COPYBRIEF
@ CMD_COPYBRIEF
Definition: cmdmapper.h:109
CMD_LATEXINCLUDE
@ CMD_LATEXINCLUDE
Definition: cmdmapper.h:127
DocNode::parent
DocNode * parent() const
Definition: docparser.h:166
TK_COMMAND_CHAR
#define TK_COMMAND_CHAR(token)
Definition: docparser.cpp:55
CMD_NDASH
@ CMD_NDASH
Definition: cmdmapper.h:128
CMD_VERBATIM
@ CMD_VERBATIM
Definition: cmdmapper.h:94
DocIncOperator::markLast
void markLast(bool v=TRUE)
Definition: docparser.h:637
DocHtmlDescList::parse
int parse()
Definition: docparser.cpp:3921
DocTokenizer::setStatePara
void setStatePara()
DocParamSect::Direction
Direction
Definition: docparser.h:1158
CMD_SKIP
@ CMD_SKIP
Definition: cmdmapper.h:89
HTML_UNKNOWN
@ HTML_UNKNOWN
Definition: cmdmapper.h:150
CMD_SUBSUBSECTION
@ CMD_SUBSUBSECTION
Definition: cmdmapper.h:86
DocInternalRef
Node representing an internal reference to some item
Definition: docparser.h:919
DocNode::Kind_SimpleSect
@ Kind_SimpleSect
Definition: docparser.h:109
DBG
#define DBG(x)
Definition: docparser.cpp:58
DocTokenizer::setStateDbOnly
void setStateDbOnly()
CMD_RTFINCLUDE
@ CMD_RTFINCLUDE
Definition: cmdmapper.h:141
XML_EXCEPTION
@ XML_EXCEPTION
Definition: cmdmapper.h:196
DocVerbatim::setText
void setText(const QCString &t)
Definition: docparser.h:536
DocStyleChange::S
@ S
Definition: docparser.h:360
HTML_H2
@ HTML_H2
Definition: cmdmapper.h:176
DocVerbatim::Verbatim
@ Verbatim
Definition: docparser.h:513
DocVerbatim::setHeight
void setHeight(const QCString &h)
Definition: docparser.h:538
HTML_SPAN
@ HTML_SPAN
Definition: cmdmapper.h:181
CompAccept< DocPara >::m_children
DocNodeList m_children
Definition: docparser.h:211
XML_SEEALSO
@ XML_SEEALSO
Definition: cmdmapper.h:208
CMD_DOCBOOKINCLUDE
@ CMD_DOCBOOKINCLUDE
Definition: cmdmapper.h:142
TK_COMMAND_BS
@ TK_COMMAND_BS
Definition: doctokenizer.h:57
DocVerbatim::setWidth
void setWidth(const QCString &w)
Definition: docparser.h:537
RetVal_TableHCell
@ RetVal_TableHCell
Definition: doctokenizer.h:74
DocParser::handleStyleLeave
void handleStyleLeave(DocNode *parent, DocNodeList &children, DocStyleChange::Style s, const QCString &tagName)
Definition: docparser.cpp:867
DocInclude::ManInclude
@ ManInclude
Definition: docparser.h:568
DocPara::handleImage
void handleImage(const QCString &cmdName)
Definition: docparser.cpp:4915
CMD_ENDLINK
@ CMD_ENDLINK
Definition: cmdmapper.h:49
HTML_TH
@ HTML_TH
Definition: cmdmapper.h:162
DocSimpleSect::Invar
@ Invar
Definition: docparser.h:1117
CMD_TPARAM
@ CMD_TPARAM
Definition: cmdmapper.h:108
CMD_XREFITEM
@ CMD_XREFITEM
Definition: cmdmapper.h:98
HTML_BR
@ HTML_BR
Definition: cmdmapper.h:171
DocSimpleSect::Version
@ Version
Definition: docparser.h:1116
XML_PERMISSION
@ XML_PERMISSION
Definition: cmdmapper.h:204
DocNode::m_parent
DocNode * m_parent
Definition: docparser.h:182
TK_URL
@ TK_URL
Definition: doctokenizer.h:56
DocTokenizer::setStateLatexOnly
void setStateLatexOnly()
FALSE
#define FALSE
Definition: qcstring.h:33
DocSimpleSect::Since
@ Since
Definition: docparser.h:1116
DocXRefItem::parse
bool parse()
Definition: docparser.cpp:2124
CMD_DONTINCLUDE
@ CMD_DONTINCLUDE
Definition: cmdmapper.h:43
CMD_INCLUDE
@ CMD_INCLUDE
Definition: cmdmapper.h:60
DocSimpleSect::Attention
@ Attention
Definition: docparser.h:1117
CMD_EQUAL
@ CMD_EQUAL
Definition: cmdmapper.h:140
DocVerbatim::Dot
@ Dot
Definition: docparser.h:513
QCString
This is an alternative implementation of QCString.
Definition: qcstring.h:108