Doxygen
TemplateNodeVariable类 参考

Class representing a variable in a template 更多...

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

Public 成员函数

 TemplateNodeVariable (TemplateParser *parser, TemplateNode *parent, int line, const QCString &var)
 
 ~TemplateNodeVariable ()
 
void render (TextStream &ts, TemplateContext *c)
 
- Public 成员函数 继承自 TemplateNode
 TemplateNode (TemplateNode *parent)
 
virtual ~TemplateNode ()
 
TemplateNodeparent ()
 

Private 属性

QCString m_templateName
 
int m_line = 0
 
ExprAstPtr m_var
 

详细描述

Class representing a variable in a template

在文件 template.cpp2971 行定义.

构造及析构函数说明

◆ TemplateNodeVariable()

TemplateNodeVariable::TemplateNodeVariable ( TemplateParser parser,
TemplateNode parent,
int  line,
const QCString var 
)
inline

在文件 template.cpp2974 行定义.

2975  : TemplateNode(parent), m_templateName(parser->templateName()), m_line(line)
2976  {
2977  TRACE(("TemplateNodeVariable(%s)\n",qPrint(var)));
2978  ExpressionParser expParser(parser,line);
2979  m_var = expParser.parse(var);
2980  if (m_var==0)
2981  {
2982  parser->warn(m_templateName,line,"invalid expression '%s' for variable",qPrint(var));
2983  }
2984  }

引用了 m_templateName, m_var, ExpressionParser::parse(), qPrint(), TRACE , 以及 TemplateParser::warn().

◆ ~TemplateNodeVariable()

TemplateNodeVariable::~TemplateNodeVariable ( )
inline

在文件 template.cpp2985 行定义.

2986  {
2987  }

成员函数说明

◆ render()

void TemplateNodeVariable::render ( TextStream ts,
TemplateContext c 
)
inlinevirtual

实现了 TemplateNode.

在文件 template.cpp2989 行定义.

2990  {
2991  TRACE(("{TemplateNodeVariable::render\n"));
2992  TemplateContextImpl* ci = dynamic_cast<TemplateContextImpl*>(c);
2993  if (ci==0) return; // should not happen
2995  if (m_var)
2996  {
2997  TemplateVariant v = m_var->resolve(c);
2998  if (v.isFunction())
2999  {
3000  v = v.call();
3001  }
3002  if (ci->escapeIntf() && !v.raw())
3003  {
3004  if (ci->needsRecoding())
3005  {
3006  ts << ci->recode(ci->escapeIntf()->escape(v.toString()));
3007  }
3008  else
3009  {
3010  ts << ci->escapeIntf()->escape(v.toString());
3011  }
3012  }
3013  else
3014  {
3015  if (ci->needsRecoding())
3016  {
3017  ts << ci->recode(v.toString());
3018  }
3019  else
3020  {
3021  ts << v.toString();
3022  }
3023  }
3024  }
3025  TRACE(("}TemplateNodeVariable::render\n"));
3026  }

引用了 TemplateVariant::call(), TemplateEscapeIntf::escape(), TemplateContextImpl::escapeIntf(), TemplateVariant::isFunction(), m_line, m_templateName, m_var, TemplateContextImpl::needsRecoding(), TemplateVariant::raw(), TemplateContextImpl::recode(), TemplateContextImpl::setLocation(), TemplateVariant::toString() , 以及 TRACE.

类成员变量说明

◆ m_line

int TemplateNodeVariable::m_line = 0
private

在文件 template.cpp3030 行定义.

被这些函数引用 render().

◆ m_templateName

QCString TemplateNodeVariable::m_templateName
private

在文件 template.cpp3029 行定义.

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

◆ m_var

ExprAstPtr TemplateNodeVariable::m_var
private

在文件 template.cpp3031 行定义.

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


该类的文档由以下文件生成:
TemplateVariant::isFunction
constexpr bool isFunction() const
Returns TRUE if the variant holds a function value
Definition: template.h:215
TemplateContextImpl::escapeIntf
TemplateEscapeIntf * escapeIntf()
Definition: template.cpp:675
TemplateContextImpl::setLocation
void setLocation(const QCString &templateName, int line)
Definition: template.cpp:682
TemplateVariant::call
TemplateVariant call(const std::vector< TemplateVariant > &args=std::vector< TemplateVariant >())
Return the result of apply this function with args.
Definition: template.cpp:454
TemplateNodeVariable::m_var
ExprAstPtr m_var
Definition: template.cpp:3031
TemplateEscapeIntf::escape
virtual QCString escape(const QCString &input)=0
Returns the input after escaping certain characters
TemplateParser::templateName
QCString templateName() const
Definition: template.cpp:1998
ExpressionParser
Recursive decent parser for Django style template expressions.
Definition: template.cpp:2010
TemplateNodeVariable::m_line
int m_line
Definition: template.cpp:3030
TemplateParser::warn
void warn(const QCString &fileName, int line, const char *fmt,...) const
Definition: template.cpp:5163
TemplateVariant
Variant type which can hold one value of a fixed set of types.
Definition: template.h:98
TRACE
#define TRACE(x)
Definition: template.cpp:40
TemplateContextImpl::recode
QCString recode(const QCString &s)
Definition: template.cpp:2609
TemplateNodeVariable::m_templateName
QCString m_templateName
Definition: template.cpp:3029
TemplateNode::parent
TemplateNode * parent()
Definition: template.cpp:1941
TemplateVariant::raw
constexpr bool raw() const
Returns whether or not the value of the Value is raw.
Definition: template.h:245
TemplateNode::TemplateNode
TemplateNode(TemplateNode *parent)
Definition: template.cpp:1936
TemplateContextImpl::needsRecoding
bool needsRecoding() const
Definition: template.cpp:697
TemplateVariant::toString
QCString toString() const
Returns the variant as a string.
Definition: template.cpp:399
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