Doxygen
TemplateNodeCreator< T > 模板类 参考

Helper class for creating template AST tag nodes and returning the template for a given node. 更多...

+ 类 TemplateNodeCreator< T > 继承关系图:
+ TemplateNodeCreator< T > 的协作图:

Public 成员函数

 TemplateNodeCreator (TemplateParser *parser, TemplateNode *parent, int line)
 
TemplateImplgetTemplate ()
 
- Public 成员函数 继承自 TemplateNode
 TemplateNode (TemplateNode *parent)
 
virtual ~TemplateNode ()
 
virtual void render (TextStream &ts, TemplateContext *c)=0
 
TemplateNodeparent ()
 

静态 Public 成员函数

static TemplateNodePtr createInstance (TemplateParser *parser, TemplateNode *parent, int line, const QCString &data)
 

Protected 成员函数

void mkpath (const TemplateContextImpl *ci, const std::string &fileName)
 

Protected 属性

QCString m_templateName
 
int m_line = 0
 

详细描述

template<class T>
class TemplateNodeCreator< T >

Helper class for creating template AST tag nodes and returning the template for a given node.

在文件 template.cpp3039 行定义.

构造及析构函数说明

◆ TemplateNodeCreator()

template<class T >
TemplateNodeCreator< T >::TemplateNodeCreator ( TemplateParser parser,
TemplateNode parent,
int  line 
)
inline

在文件 template.cpp3042 行定义.

3043  : TemplateNode(parent), m_templateName(parser->templateName()), m_line(line) {}

成员函数说明

◆ createInstance()

template<class T >
static TemplateNodePtr TemplateNodeCreator< T >::createInstance ( TemplateParser parser,
TemplateNode parent,
int  line,
const QCString data 
)
inlinestatic

在文件 template.cpp3044 行定义.

3048  {
3049  return std::make_unique<T>(parser,parent,line,data);
3050  }

◆ getTemplate()

template<class T >
TemplateImpl* TemplateNodeCreator< T >::getTemplate ( )
inline

在文件 template.cpp3051 行定义.

3052  {
3053  TemplateNode *root = this;
3054  while (root && root->parent())
3055  {
3056  root = root->parent();
3057  }
3058  return dynamic_cast<TemplateImpl*>(root);
3059  }

◆ mkpath()

template<class T >
void TemplateNodeCreator< T >::mkpath ( const TemplateContextImpl ci,
const std::string &  fileName 
)
inlineprotected

在文件 template.cpp3061 行定义.

3062  {
3063  size_t i=fileName.find('/');
3064  std::string outputDir = ci->outputDirectory().str();
3065  Dir d(outputDir);
3066  if (!d.exists())
3067  {
3068  Dir rootDir;
3069  if (!rootDir.mkdir(outputDir))
3070  {
3071  err("tag OUTPUT_DIRECTORY: Output directory '%s' does not "
3072  "exist and cannot be created\n",outputDir.c_str());
3073  return;
3074  }
3075  d.setPath(outputDir);
3076  }
3077  size_t j=0;
3078  while (i!=std::string::npos) // fileName contains path part
3079  {
3080  if (d.exists())
3081  {
3082  bool ok = d.mkdir(fileName.substr(j,i-j));
3083  if (!ok)
3084  {
3085  err("Failed to create directory '%s'\n",(fileName.substr(j,i-j)).c_str());
3086  break;
3087  }
3088  std::string dirName = outputDir+'/'+fileName.substr(0,i);
3089  d = Dir(dirName);
3090  j = i+1;
3091  }
3092  i=fileName.find('/',i+1);
3093  }
3094  }

类成员变量说明

◆ m_line

template<class T >
int TemplateNodeCreator< T >::m_line = 0
protected

在文件 template.cpp3096 行定义.

被这些函数引用 TemplateNodeBlock::render().

◆ m_templateName

template<class T >
QCString TemplateNodeCreator< T >::m_templateName
protected

在文件 template.cpp3095 行定义.

被这些函数引用 TemplateNodeBlock::render().


该类的文档由以下文件生成:
Dir
Class representing a directory in the file system
Definition: dir.h:68
QCString::str
std::string str() const
Definition: qcstring.h:442
TemplateParser::templateName
QCString templateName() const
Definition: template.cpp:1998
err
void err(const char *fmt,...)
Definition: message.cpp:203
TemplateImpl
Internal class representing the implementation of a template
Definition: template.cpp:2554
TemplateContextImpl::outputDirectory
QCString outputDirectory() const
Definition: template.cpp:686
TemplateNodeCreator::m_templateName
QCString m_templateName
Definition: template.cpp:3095
TemplateNode::parent
TemplateNode * parent()
Definition: template.cpp:1941
TemplateNode::TemplateNode
TemplateNode(TemplateNode *parent)
Definition: template.cpp:1936
TemplateNode
Base class of all nodes in a template's AST
Definition: template.cpp:1933
TemplateNodeCreator::m_line
int m_line
Definition: template.cpp:3096
Dir::mkdir
bool mkdir(const std::string &path, bool acceptsAbsPath=true) const
Definition: dir.cpp:237