Public Member Functions | Private Attributes | List of all members
TemplateContextImpl Class Reference

Internal class representing the implementation of a template context. More...

Inheritance diagram for TemplateContextImpl:
TemplateContext

Public Member Functions

 TemplateContextImpl (const TemplateEngine *e)
 
virtual ~TemplateContextImpl ()
 
void push ()
 
void pop ()
 
void set (const char *name, const TemplateVariant &v)
 
TemplateVariant get (const QCString &name) const
 
const TemplateVariantgetRef (const QCString &name) const
 
void setOutputDirectory (const QCString &dir)
 
void setEscapeIntf (const QCString &ext, TemplateEscapeIntf *intf)
 
void selectEscapeIntf (const QCString &ext)
 
void setActiveEscapeIntf (TemplateEscapeIntf *intf)
 
void setSpacelessIntf (TemplateSpacelessIntf *intf)
 
TemplateBlockContextblockContext ()
 
TemplateVariant getPrimary (const QCString &name) const
 
void setLocation (const QCString &templateName, int line)
 
QCString templateName () const
 
int line () const
 
QCString outputDirectory () const
 
TemplateEscapeIntfescapeIntf () const
 
TemplateSpacelessIntfspacelessIntf () const
 
void enableSpaceless (bool b)
 
bool spacelessEnabled () const
 
void enableTabbing (bool b)
 
bool tabbingEnabled () const
 
void warn (const char *fileName, int line, const char *fmt,...) const
 
void openSubIndex (const QCString &indexName)
 
void closeSubIndex (const QCString &indexName)
 
void addIndexEntry (const QCString &indexName, const QValueList< TemplateKeyValue > &arguments)
 
- Public Member Functions inherited from TemplateContext
virtual ~TemplateContext ()
 

Private Attributes

const TemplateEnginem_engine
 
QCString m_templateName
 
int m_line
 
QCString m_outputDir
 
QList< QDict< TemplateVariant > > m_contextStack
 
TemplateBlockContext m_blockContext
 
QDict< TemplateEscapeIntf * > m_escapeIntfDict
 
TemplateEscapeIntfm_activeEscapeIntf
 
TemplateSpacelessIntfm_spacelessIntf
 
bool m_spacelessEnabled
 
bool m_tabbingEnabled
 
TemplateAutoRef< TemplateStructm_indices
 
QDict< QStack< TemplateVariant > > m_indexStacks
 

Detailed Description

Internal class representing the implementation of a template context.

Definition at line 511 of file template.cpp.

Constructor & Destructor Documentation

TemplateContextImpl::TemplateContextImpl ( const TemplateEngine e)

Definition at line 2299 of file template.cpp.

2300  : m_engine(e), m_templateName("<unknown>"), m_line(1), m_activeEscapeIntf(0),
2302 {
2303  m_indexStacks.setAutoDelete(TRUE);
2305  m_escapeIntfDict.setAutoDelete(TRUE);
2306  push();
2307  set("index",m_indices.get());
2308 }
T * get() const
Definition: template.h:318
const bool FALSE
Definition: qglobal.h:370
QDict< TemplateEscapeIntf * > m_escapeIntfDict
Definition: template.cpp:569
TemplateAutoRef< TemplateStruct > m_indices
Definition: template.cpp:574
const TemplateEngine * m_engine
Definition: template.cpp:563
QCString m_templateName
Definition: template.cpp:564
QList< QDict< TemplateVariant > > m_contextStack
Definition: template.cpp:567
TemplateSpacelessIntf * m_spacelessIntf
Definition: template.cpp:571
void setAutoDelete(bool enable)
Definition: qlist.h:99
const bool TRUE
Definition: qglobal.h:371
QDict< QStack< TemplateVariant > > m_indexStacks
Definition: template.cpp:575
TemplateEscapeIntf * m_activeEscapeIntf
Definition: template.cpp:570
static TemplateStruct * alloc()
Definition: template.cpp:294
TemplateContextImpl::~TemplateContextImpl ( )
virtual

Definition at line 2310 of file template.cpp.

2311 {
2312  pop();
2313 }

Member Function Documentation

void TemplateContextImpl::addIndexEntry ( const QCString indexName,
const QValueList< TemplateKeyValue > &  arguments 
)

Definition at line 2507 of file template.cpp.

2508 {
2510  //printf("TemplateContextImpl::addIndexEntry(%s)\n",indexName.data());
2511  //while (it!=arguments.end())
2512  //{
2513  // printf(" key=%s value=%s\n",(*it).key.data(),(*it).value.toString().data());
2514  // ++it;
2515  //}
2517  QStack<TemplateVariant> *stack = m_indexStacks.find(indexName);
2518  if (!stack) // no stack yet, create it!
2519  {
2520  stack = new QStack<TemplateVariant>;
2521  stack->setAutoDelete(TRUE);
2522  m_indexStacks.insert(indexName,stack);
2523  }
2524  TemplateList *list = 0;
2525  if (stack->isEmpty()) // first item, create empty list and add it to the index
2526  {
2527  list = TemplateList::alloc();
2528  stack->push(new TemplateVariant(list));
2529  m_indices->set(indexName,list); // make list available under index
2530  }
2531  else // stack not empty
2532  {
2533  if (stack->top()->type()==TemplateVariant::Struct) // already an entry in the list
2534  {
2535  // remove current entry from the stack
2536  delete stack->pop();
2537  }
2538  else // first entry after opensubindex
2539  {
2540  ASSERT(stack->top()->type()==TemplateVariant::List);
2541  }
2542  if (stack->count()>1)
2543  {
2544  TemplateVariant *tmp = stack->pop();
2545  // To prevent a cyclic dependency between parent and child which causes a memory
2546  // leak, we wrap the parent into a weak reference version.
2547  parent = new TemplateStructWeakRef(stack->top()->toStruct());
2548  stack->push(tmp);
2550  }
2551  // get list to add new item
2552  list = dynamic_cast<TemplateList*>(stack->top()->toList());
2553  }
2555  // add user specified fields to the entry
2556  for (it=arguments.begin();it!=arguments.end();++it)
2557  {
2558  entry->set((*it).key,(*it).value);
2559  }
2560  if (list->count()>0)
2561  {
2562  TemplateStruct *lastEntry = dynamic_cast<TemplateStruct*>(list->at(list->count()-1).toStruct());
2563  lastEntry->set("last",false);
2564  }
2565  entry->set("is_leaf_node",true);
2566  entry->set("first",list->count()==0);
2567  entry->set("index",list->count());
2568  entry->set("parent",parent);
2570  entry->set("last",true);
2571  stack->push(new TemplateVariant(entry));
2572  list->append(entry);
2573 }
void setAutoDelete(bool del)
Definition: qstack.h:55
static TemplateList * alloc()
Definition: template.cpp:420
QList< Entry > entry
virtual void set(const char *name, const TemplateVariant &v)
Definition: template.cpp:275
Iterator end()
Definition: qvaluelist.h:363
TemplateListIntf * toList() const
Definition: template.h:256
const bool FALSE
Definition: qglobal.h:370
Definition: qstack.h:46
Default implementation of a context value of type list.
Definition: template.h:376
static TemplateVariant getPathFunc(const void *ctx, const QValueList< TemplateVariant > &)
Definition: template.cpp:2499
static Delegate fromFunction(const void *obj, StubType func)
Definition: template.h:112
void push(const type *d)
Definition: qstack.h:58
TemplateAutoRef< TemplateStruct > m_indices
Definition: template.cpp:574
uint count() const
Definition: qstack.h:56
bool isEmpty() const
Definition: qstack.h:57
string tmp
Definition: languages.py:63
type * pop()
Definition: qstack.h:59
Variant type which can hold one value of a fixed set of types.
Definition: template.h:90
Iterator begin()
Definition: qvaluelist.h:361
TemplateStructIntf * toStruct() const
Definition: template.h:264
Type type() const
Definition: template.h:142
Default implementation of a context value of type struct.
Definition: template.h:426
Weak reference wrapper for TemplateStructIntf that provides access to the wrapped struct without hold...
Definition: template.cpp:2285
def parent(G, child, parent_type)
Definition: graph.py:67
const bool TRUE
Definition: qglobal.h:371
QDict< QStack< TemplateVariant > > m_indexStacks
Definition: template.cpp:575
type * top() const
Definition: qstack.h:63
static TemplateStruct * alloc()
Definition: template.cpp:294
#define ASSERT(x)
Definition: qglobal.h:590
TemplateBlockContext * TemplateContextImpl::blockContext ( )

Definition at line 2426 of file template.cpp.

2427 {
2428  return &m_blockContext;
2429 }
TemplateBlockContext m_blockContext
Definition: template.cpp:568
void TemplateContextImpl::closeSubIndex ( const QCString indexName)

Definition at line 2461 of file template.cpp.

2462 {
2463  printf("TemplateContextImpl::closeSubIndex(%s)\n",indexName.data());
2464  QStack<TemplateVariant> *stack = m_indexStacks.find(indexName);
2465  if (!stack || stack->count()<3)
2466  {
2467  warn(m_templateName,m_line,"closesubindex for index %s without matching open",indexName.data());
2468  }
2469  else // stack->count()>=2
2470  {
2471  if (stack->top()->type()==TemplateVariant::Struct)
2472  {
2473  delete stack->pop(); // pop struct
2474  delete stack->pop(); // pop list
2475  }
2476  else // empty list! correct "is_left_node" attribute of the parent entry
2477  {
2478  delete stack->pop(); // pop list
2479  TemplateStruct *entry = dynamic_cast<TemplateStruct*>(stack->top()->toStruct());
2480  if (entry)
2481  {
2482  entry->set("is_leaf_node",true);
2483  }
2484  }
2485  }
2486  //fprintf(stderr,"TemplateContextImpl::closeSubIndex(%s) end g_count=%d\n\n",indexName.data(),g_count);
2487 }
QList< Entry > entry
virtual void set(const char *name, const TemplateVariant &v)
Definition: template.cpp:275
Definition: qstack.h:46
const char * data() const
Definition: qcstring.h:207
QCString m_templateName
Definition: template.cpp:564
void warn(const char *fileName, int line, const char *fmt,...) const
Definition: template.cpp:2431
Default implementation of a context value of type struct.
Definition: template.h:426
QDict< QStack< TemplateVariant > > m_indexStacks
Definition: template.cpp:575
void TemplateContextImpl::enableSpaceless ( bool  b)
inline

Definition at line 547 of file template.cpp.

547  { if (b && !m_spacelessEnabled) m_spacelessIntf->reset();
549  }
virtual void reset()=0
static bool * b
Definition: config.cpp:1043
TemplateSpacelessIntf * m_spacelessIntf
Definition: template.cpp:571
void TemplateContextImpl::enableTabbing ( bool  b)
inline

Definition at line 551 of file template.cpp.

553  }
static bool * b
Definition: config.cpp:1043
virtual void enableTabbing(bool b)=0
TemplateEscapeIntf * m_activeEscapeIntf
Definition: template.cpp:570
TemplateEscapeIntf* TemplateContextImpl::escapeIntf ( ) const
inline

Definition at line 545 of file template.cpp.

545 { return m_activeEscapeIntf; }
TemplateEscapeIntf * m_activeEscapeIntf
Definition: template.cpp:570
TemplateVariant TemplateContextImpl::get ( const QCString name) const
virtual

Gets the value for a given key

Parameters
[in]nameThe name of key.
Returns
The value, which can be an invalid variant in case the key was not found.

Implements TemplateContext.

Definition at line 2325 of file template.cpp.

2326 {
2327  int i=name.find('.');
2328  if (i==-1) // simple name
2329  {
2330  return getPrimary(name);
2331  }
2332  else // obj.prop
2333  {
2334  QCString objName = name.left(i);
2335  TemplateVariant v = getPrimary(objName);
2336  QCString propName = name.mid(i+1);
2337  while (!propName.isEmpty())
2338  {
2339  //printf("getPrimary(%s) type=%d:%s\n",objName.data(),v.type(),v.toString().data());
2340  if (v.type()==TemplateVariant::Struct)
2341  {
2342  i = propName.find(".");
2343  int l = i==-1 ? propName.length() : i;
2344  v = v.toStruct()->get(propName.left(l));
2345  if (!v.isValid())
2346  {
2347  warn(m_templateName,m_line,"requesting non-existing property '%s' for object '%s'",propName.left(l).data(),objName.data());
2348  }
2349  if (i!=-1)
2350  {
2351  objName = propName.left(i);
2352  propName = propName.mid(i+1);
2353  }
2354  else
2355  {
2356  propName.resize(0);
2357  }
2358  }
2359  else if (v.type()==TemplateVariant::List)
2360  {
2361  i = propName.find(".");
2362  int l = i==-1 ? propName.length() : i;
2363  bool b;
2364  int index = propName.left(l).toInt(&b);
2365  if (b)
2366  {
2367  v = v.toList()->at(index);
2368  }
2369  else
2370  {
2371  warn(m_templateName,m_line,"list index '%s' is not valid",propName.data());
2372  break;
2373  }
2374  if (i!=-1)
2375  {
2376  propName = propName.mid(i+1);
2377  }
2378  else
2379  {
2380  propName.resize(0);
2381  }
2382  }
2383  else
2384  {
2385  warn(m_templateName,m_line,"using . on an object '%s' is not an struct or list",objName.data());
2386  return TemplateVariant();
2387  }
2388  }
2389  return v;
2390  }
2391 }
bool resize(uint newlen)
Definition: qcstring.h:225
bool isEmpty() const
Definition: qcstring.h:189
uint length() const
Definition: qcstring.h:195
virtual TemplateVariant get(const char *name) const =0
TemplateListIntf * toList() const
Definition: template.h:256
QCString left(uint len) const
Definition: qcstring.cpp:213
int find(char c, int index=0, bool cs=TRUE) const
Definition: qcstring.cpp:41
static QStrList * l
Definition: config.cpp:1044
int toInt(bool *ok=0) const
Definition: qcstring.cpp:439
const char * data() const
Definition: qcstring.h:207
bool isValid() const
Definition: template.h:161
Variant type which can hold one value of a fixed set of types.
Definition: template.h:90
QCString mid(uint index, uint len=0xffffffff) const
Definition: qcstring.cpp:246
QCString m_templateName
Definition: template.cpp:564
void warn(const char *fileName, int line, const char *fmt,...) const
Definition: template.cpp:2431
virtual TemplateVariant at(int index) const =0
TemplateVariant getPrimary(const QCString &name) const
Definition: template.cpp:2405
static bool * b
Definition: config.cpp:1043
TemplateStructIntf * toStruct() const
Definition: template.h:264
Type type() const
Definition: template.h:142
TemplateVariant TemplateContextImpl::getPrimary ( const QCString name) const

Definition at line 2405 of file template.cpp.

2406 {
2407  const TemplateVariant *v = getRef(name);
2408  return v ? *v : TemplateVariant();
2409 }
const TemplateVariant * getRef(const QCString &name) const
Definition: template.cpp:2393
Variant type which can hold one value of a fixed set of types.
Definition: template.h:90
const TemplateVariant * TemplateContextImpl::getRef ( const QCString name) const
virtual

Returns a pointer to the value corresponding to a given key.

Parameters
[in]nameThe name of key.
Returns
A pointer to the value, or 0 in case the key was not found.

Implements TemplateContext.

Definition at line 2393 of file template.cpp.

2394 {
2396  QDict<TemplateVariant> *dict;
2397  for (it.toFirst();(dict=it.current());++it)
2398  {
2399  TemplateVariant *v = dict->find(name);
2400  if (v) return v;
2401  }
2402  return 0; // not found
2403 }
Variant type which can hold one value of a fixed set of types.
Definition: template.h:90
QList< QDict< TemplateVariant > > m_contextStack
Definition: template.cpp:567
int TemplateContextImpl::line ( ) const
inline

Definition at line 543 of file template.cpp.

543 { return m_line; }
void TemplateContextImpl::openSubIndex ( const QCString indexName)

Definition at line 2440 of file template.cpp.

2441 {
2442  printf("TemplateContextImpl::openSubIndex(%s)\n",indexName.data());
2443  QStack<TemplateVariant> *stack = m_indexStacks.find(indexName);
2444  if (!stack || stack->isEmpty() || stack->top()->type()==TemplateVariant::List) // error: no stack yet or no entry
2445  {
2446  warn(m_templateName,m_line,"opensubindex for index %s without preceding indexentry",indexName.data());
2447  return;
2448  }
2449  // get the parent entry to add the list to
2450  TemplateStruct *entry = dynamic_cast<TemplateStruct*>(stack->top()->toStruct());
2451  if (entry)
2452  {
2453  // add new list to the stack
2455  stack->push(new TemplateVariant(list));
2456  entry->set("children",list);
2457  entry->set("is_leaf_node",false);
2458  }
2459 }
static TemplateList * alloc()
Definition: template.cpp:420
QList< Entry > entry
virtual void set(const char *name, const TemplateVariant &v)
Definition: template.cpp:275
Definition: qstack.h:46
Default implementation of a context value of type list.
Definition: template.h:376
const char * data() const
Definition: qcstring.h:207
Variant type which can hold one value of a fixed set of types.
Definition: template.h:90
QCString m_templateName
Definition: template.cpp:564
void warn(const char *fileName, int line, const char *fmt,...) const
Definition: template.cpp:2431
Default implementation of a context value of type struct.
Definition: template.h:426
QDict< QStack< TemplateVariant > > m_indexStacks
Definition: template.cpp:575
QCString TemplateContextImpl::outputDirectory ( ) const
inline

Definition at line 544 of file template.cpp.

544 { return m_outputDir; }
QCString m_outputDir
Definition: template.cpp:566
void TemplateContextImpl::pop ( )
virtual

Pop the current scope from the stack.

Implements TemplateContext.

Definition at line 2418 of file template.cpp.

2419 {
2420  if (!m_contextStack.removeFirst())
2421  {
2422  warn(m_templateName,m_line,"pop() called on empty context stack!\n");
2423  }
2424 }
bool removeFirst()
Definition: qlist.h:79
QCString m_templateName
Definition: template.cpp:564
void warn(const char *fileName, int line, const char *fmt,...) const
Definition: template.cpp:2431
QList< QDict< TemplateVariant > > m_contextStack
Definition: template.cpp:567
void TemplateContextImpl::push ( )
virtual

Push a new scope on the stack.

Implements TemplateContext.

Definition at line 2411 of file template.cpp.

2412 {
2413  QDict<TemplateVariant> *dict = new QDict<TemplateVariant>;
2414  dict->setAutoDelete(TRUE);
2415  m_contextStack.prepend(dict);
2416 }
void prepend(const type *d)
Definition: qlist.h:72
QList< QDict< TemplateVariant > > m_contextStack
Definition: template.cpp:567
const bool TRUE
Definition: qglobal.h:371
void TemplateContextImpl::selectEscapeIntf ( const QCString ext)
inline

Definition at line 530 of file template.cpp.

531  { TemplateEscapeIntf **ppIntf = m_escapeIntfDict.find(ext);
532  m_activeEscapeIntf = ppIntf ? *ppIntf : 0;
533  }
QDict< TemplateEscapeIntf * > m_escapeIntfDict
Definition: template.cpp:569
Interface used to escape characters in a string.
Definition: template.h:457
TemplateEscapeIntf * m_activeEscapeIntf
Definition: template.cpp:570
void TemplateContextImpl::set ( const char *  name,
const TemplateVariant v 
)
virtual

Sets a value in the current scope.

Parameters
[in]nameThe name of the value; the key in the dictionary.
[in]vThe value associated with the key.
Note
When a given key is already present, its value will be replaced by v

Implements TemplateContext.

Definition at line 2315 of file template.cpp.

2316 {
2318  if (pv)
2319  {
2320  m_contextStack.getFirst()->remove(name);
2321  }
2322  m_contextStack.getFirst()->insert(name,new TemplateVariant(v));
2323 }
static QCString name
Definition: declinfo.cpp:673
type * getFirst() const
Definition: qlist.h:95
Variant type which can hold one value of a fixed set of types.
Definition: template.h:90
QList< QDict< TemplateVariant > > m_contextStack
Definition: template.cpp:567
void TemplateContextImpl::setActiveEscapeIntf ( TemplateEscapeIntf intf)
inline

Definition at line 534 of file template.cpp.

534 { m_activeEscapeIntf = intf; }
TemplateEscapeIntf * m_activeEscapeIntf
Definition: template.cpp:570
void TemplateContextImpl::setEscapeIntf ( const QCString extension,
TemplateEscapeIntf intf 
)
inlinevirtual

Sets the interface that will be used for escaping the result of variable expansion before writing it to the output.

Implements TemplateContext.

Definition at line 525 of file template.cpp.

526  {
527  int i=(!ext.isEmpty() && ext.at(0)=='.') ? 1 : 0;
528  m_escapeIntfDict.insert(ext.mid(i),new TemplateEscapeIntf*(intf));
529  }
QDict< TemplateEscapeIntf * > m_escapeIntfDict
Definition: template.cpp:569
Interface used to escape characters in a string.
Definition: template.h:457
void TemplateContextImpl::setLocation ( const QCString templateName,
int  line 
)
inline

Definition at line 540 of file template.cpp.

int line() const
Definition: template.cpp:543
QCString m_templateName
Definition: template.cpp:564
QCString templateName() const
Definition: template.cpp:542
void TemplateContextImpl::setOutputDirectory ( const QCString dir)
inlinevirtual

When files are created (i.e. by {% create ... %}) they written to the directory dir.

Implements TemplateContext.

Definition at line 523 of file template.cpp.

524  { m_outputDir = dir; }
QCString m_outputDir
Definition: template.cpp:566
string dir
void TemplateContextImpl::setSpacelessIntf ( TemplateSpacelessIntf intf)
inlinevirtual

Sets the interface that will be used inside a spaceless block to remove any redundant whitespace.

Implements TemplateContext.

Definition at line 535 of file template.cpp.

535 { m_spacelessIntf = intf; }
TemplateSpacelessIntf * m_spacelessIntf
Definition: template.cpp:571
bool TemplateContextImpl::spacelessEnabled ( ) const
inline

Definition at line 550 of file template.cpp.

550 { return m_spacelessEnabled && m_spacelessIntf; }
TemplateSpacelessIntf * m_spacelessIntf
Definition: template.cpp:571
TemplateSpacelessIntf* TemplateContextImpl::spacelessIntf ( ) const
inline

Definition at line 546 of file template.cpp.

546 { return m_spacelessIntf; }
TemplateSpacelessIntf * m_spacelessIntf
Definition: template.cpp:571
bool TemplateContextImpl::tabbingEnabled ( ) const
inline

Definition at line 554 of file template.cpp.

554 { return m_tabbingEnabled; }
QCString TemplateContextImpl::templateName ( ) const
inline

Definition at line 542 of file template.cpp.

542 { return m_templateName; }
QCString m_templateName
Definition: template.cpp:564
void TemplateContextImpl::warn ( const char *  fileName,
int  line,
const char *  fmt,
  ... 
) const

Definition at line 2431 of file template.cpp.

2432 {
2433  va_list args;
2434  va_start(args,fmt);
2435  va_warn(fileName,line,fmt,args);
2436  va_end(args);
2438 }
int line() const
Definition: template.cpp:543
static QCString args
Definition: declinfo.cpp:674
void printIncludeContext(const char *fileName, int line) const
Definition: template.cpp:4991
fileName
Definition: dumpTree.py:9
const TemplateEngine * m_engine
Definition: template.cpp:563
void va_warn(const char *file, int line, const char *fmt, va_list args)
Definition: message.cpp:191

Member Data Documentation

TemplateEscapeIntf* TemplateContextImpl::m_activeEscapeIntf
private

Definition at line 570 of file template.cpp.

TemplateBlockContext TemplateContextImpl::m_blockContext
private

Definition at line 568 of file template.cpp.

QList< QDict<TemplateVariant> > TemplateContextImpl::m_contextStack
private

Definition at line 567 of file template.cpp.

const TemplateEngine* TemplateContextImpl::m_engine
private

Definition at line 563 of file template.cpp.

QDict<TemplateEscapeIntf*> TemplateContextImpl::m_escapeIntfDict
private

Definition at line 569 of file template.cpp.

QDict< QStack<TemplateVariant> > TemplateContextImpl::m_indexStacks
private

Definition at line 575 of file template.cpp.

TemplateAutoRef<TemplateStruct> TemplateContextImpl::m_indices
private

Definition at line 574 of file template.cpp.

int TemplateContextImpl::m_line
private

Definition at line 565 of file template.cpp.

QCString TemplateContextImpl::m_outputDir
private

Definition at line 566 of file template.cpp.

bool TemplateContextImpl::m_spacelessEnabled
private

Definition at line 572 of file template.cpp.

TemplateSpacelessIntf* TemplateContextImpl::m_spacelessIntf
private

Definition at line 571 of file template.cpp.

bool TemplateContextImpl::m_tabbingEnabled
private

Definition at line 573 of file template.cpp.

QCString TemplateContextImpl::m_templateName
private

Definition at line 564 of file template.cpp.


The documentation for this class was generated from the following file: