Doxygen
TemplateNodeIndexEntry类 参考

Class representing an 'indexentry' tag in a template 更多...

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

struct  Mapping
 

Public 成员函数

 TemplateNodeIndexEntry (TemplateParser *parser, TemplateNode *parent, int line, const QCString &data)
 
void render (TextStream &, TemplateContext *c)
 
- Public 成员函数 继承自 TemplateNodeCreator< TemplateNodeIndexEntry >
 TemplateNodeCreator (TemplateParser *parser, TemplateNode *parent, int line)
 
TemplateImplgetTemplate ()
 
- Public 成员函数 继承自 TemplateNode
 TemplateNode (TemplateNode *parent)
 
virtual ~TemplateNode ()
 
TemplateNodeparent ()
 

Private 属性

QCString m_name
 
std::vector< Mappingm_args
 

额外继承的成员函数

- 静态 Public 成员函数 继承自 TemplateNodeCreator< TemplateNodeIndexEntry >
static TemplateNodePtr createInstance (TemplateParser *parser, TemplateNode *parent, int line, const QCString &data)
 
- Protected 成员函数 继承自 TemplateNodeCreator< TemplateNodeIndexEntry >
void mkpath (const TemplateContextImpl *ci, const std::string &fileName)
 
- Protected 属性 继承自 TemplateNodeCreator< TemplateNodeIndexEntry >
QCString m_templateName
 
int m_line
 

详细描述

Class representing an 'indexentry' tag in a template

在文件 template.cpp4041 行定义.

构造及析构函数说明

◆ TemplateNodeIndexEntry()

TemplateNodeIndexEntry::TemplateNodeIndexEntry ( TemplateParser parser,
TemplateNode parent,
int  line,
const QCString data 
)
inline

在文件 template.cpp4050 行定义.

4052  {
4053  TRACE(("{TemplateNodeIndexEntry(%s)\n",qPrint(data)));
4054  ExpressionParser expParser(parser,line);
4055  std::vector<QCString> args = split(data," ");
4056  auto it = args.begin();
4057  if (it==args.end() || (*it).find('=')!=-1)
4058  {
4059  parser->warn(parser->templateName(),line,"Missing name for indexentry tag");
4060  }
4061  else
4062  {
4063  m_name = *it;
4064  ++it;
4065  while (it!=args.end())
4066  {
4067  QCString arg = *it;
4068  int j=arg.find('=');
4069  if (j>0)
4070  {
4071  ExprAstPtr expr = expParser.parse(arg.mid(j+1));
4072  if (expr)
4073  {
4074  m_args.emplace_back(arg.left(j),std::move(expr));
4075  }
4076  }
4077  else
4078  {
4079  parser->warn(parser->templateName(),line,"invalid argument '%s' for indexentry tag",qPrint(arg));
4080  }
4081  ++it;
4082  }
4083  }
4084  TRACE(("}TemplateNodeIndexEntry(%s)\n",qPrint(data)));
4085  }

引用了 QCString::find(), QCString::left(), m_args, m_name, QCString::mid(), ExpressionParser::parse(), qPrint(), split(), TemplateParser::templateName(), TRACE , 以及 TemplateParser::warn().

成员函数说明

◆ render()

void TemplateNodeIndexEntry::render ( TextStream ,
TemplateContext c 
)
inlinevirtual

实现了 TemplateNode.

在文件 template.cpp4086 行定义.

4087  {
4088  TemplateContextImpl *ci = dynamic_cast<TemplateContextImpl*>(c);
4089  if (ci==0) return; // should not happen
4090  if (!m_name.isEmpty())
4091  {
4093  std::vector<TemplateKeyValue> list;
4094  for (const auto &mapping : m_args)
4095  {
4096  list.emplace_back(mapping.name,mapping.value->resolve(c));
4097  }
4098  ci->addIndexEntry(m_name,list);
4099  }
4100  }

引用了 TemplateContextImpl::addIndexEntry(), QCString::isEmpty(), m_args, TemplateNodeCreator< TemplateNodeIndexEntry >::m_line, m_name, TemplateNodeCreator< TemplateNodeIndexEntry >::m_templateName , 以及 TemplateContextImpl::setLocation().

类成员变量说明

◆ m_args

std::vector<Mapping> TemplateNodeIndexEntry::m_args
private

在文件 template.cpp4103 行定义.

被这些函数引用 render() , 以及 TemplateNodeIndexEntry().

◆ m_name

QCString TemplateNodeIndexEntry::m_name
private

在文件 template.cpp4102 行定义.

被这些函数引用 render() , 以及 TemplateNodeIndexEntry().


该类的文档由以下文件生成:
TemplateNodeIndexEntry::m_args
std::vector< Mapping > m_args
Definition: template.cpp:4103
TemplateContextImpl::setLocation
void setLocation(const QCString &templateName, int line)
Definition: template.cpp:682
QCString::isEmpty
bool isEmpty() const
Returns TRUE iff the string is empty
Definition: qcstring.h:144
TemplateNodeCreator< TemplateNodeIndexEntry >
split
static std::vector< QCString > split(const QCString &str, const QCString &sep, bool allowEmptyEntries=FALSE, bool cleanup=TRUE)
Definition: template.cpp:47
TemplateParser::templateName
QCString templateName() const
Definition: template.cpp:1998
QCString::find
int find(char c, int index=0, bool cs=TRUE) const
Definition: qcstring.cpp:38
ExpressionParser
Recursive decent parser for Django style template expressions.
Definition: template.cpp:2010
TemplateNodeIndexEntry::m_name
QCString m_name
Definition: template.cpp:4102
TemplateParser::warn
void warn(const QCString &fileName, int line, const char *fmt,...) const
Definition: template.cpp:5163
QCString::left
QCString left(size_t len) const
Definition: qcstring.h:212
TRACE
#define TRACE(x)
Definition: template.cpp:40
TemplateNodeCreator< TemplateNodeIndexEntry >::m_templateName
QCString m_templateName
Definition: template.cpp:3095
TemplateNode::parent
TemplateNode * parent()
Definition: template.cpp:1941
ExprAstPtr
std::unique_ptr< ExprAst > ExprAstPtr
Definition: template.cpp:1670
QCString::mid
QCString mid(size_t index, size_t len=static_cast< size_t >(-1)) const
Definition: qcstring.h:224
TemplateContextImpl::addIndexEntry
void addIndexEntry(const QCString &indexName, const std::vector< TemplateKeyValue > &arguments)
Definition: template.cpp:2853
qPrint
const char * qPrint(const char *s)
Definition: qcstring.h:589
TemplateContextImpl
Internal class representing the implementation of a template context
Definition: template.cpp:640
TemplateNodeCreator< TemplateNodeIndexEntry >::m_line
int m_line
Definition: template.cpp:3096
QCString
This is an alternative implementation of QCString.
Definition: qcstring.h:108