Doxygen
VariableContext类 参考

#include <scopedtypevariant.h>

Public 类型

using Scope = std::unordered_map< std::string, ScopedTypeVariant >
 

Public 成员函数

void pushScope ()
 
void popScope ()
 
void clear ()
 
void clearExceptGlobal ()
 
void addVariable (const QCString &name, ScopedTypeVariant stv)
 
const ScopedTypeVariantfindVariable (const QCString &name)
 
bool atGlobalScope () const
 

Private 属性

Scope m_globalScope
 
std::vector< Scopem_scopes
 

详细描述

Represents a stack of variable to class mappings as found in the code. Each scope is enclosed in pushScope() and popScope() calls. Variables are added by calling addVariables() and one can search for variable using findVariable().

在文件 scopedtypevariant.h179 行定义.

成员类型定义说明

◆ Scope

using VariableContext::Scope = std::unordered_map<std::string,ScopedTypeVariant>

在文件 scopedtypevariant.h182 行定义.

成员函数说明

◆ addVariable()

void VariableContext::addVariable ( const QCString name,
ScopedTypeVariant  stv 
)
inline

在文件 scopedtypevariant.h204 行定义.

205  {
206  Scope *scope = m_scopes.empty() ? &m_globalScope : &m_scopes.back();
207  scope->emplace(std::make_pair(name.str(),std::move(stv))); // add it to a list
208  }

引用了 m_globalScope, m_scopes , 以及 QCString::str().

◆ atGlobalScope()

bool VariableContext::atGlobalScope ( ) const
inline

在文件 scopedtypevariant.h234 行定义.

234 { return m_scopes.empty(); }

引用了 m_scopes.

◆ clear()

void VariableContext::clear ( )
inline

在文件 scopedtypevariant.h195 行定义.

196  {
197  m_scopes.clear();
198  m_globalScope.clear();
199  }

引用了 m_globalScope , 以及 m_scopes.

◆ clearExceptGlobal()

void VariableContext::clearExceptGlobal ( )
inline

在文件 scopedtypevariant.h200 行定义.

201  {
202  m_scopes.clear();
203  }

引用了 m_scopes.

◆ findVariable()

const ScopedTypeVariant* VariableContext::findVariable ( const QCString name)
inline

在文件 scopedtypevariant.h209 行定义.

210  {
211  const ScopedTypeVariant *result = 0;
212  if (name.isEmpty()) return result;
213 
214  // search from inner to outer scope
215  auto it = std::rbegin(m_scopes);
216  while (it != std::rend(m_scopes))
217  {
218  auto it2 = it->find(name.str());
219  if (it2 != std::end(*it))
220  {
221  result = &it2->second;
222  return result;
223  }
224  ++it;
225  }
226  // nothing found -> also try the global scope
227  auto it2 = m_globalScope.find(name.str());
228  if (it2 != m_globalScope.end())
229  {
230  result = &it2->second;
231  }
232  return result;
233  }

引用了 end(), QCString::isEmpty(), m_globalScope, m_scopes , 以及 QCString::str().

◆ popScope()

void VariableContext::popScope ( )
inline

在文件 scopedtypevariant.h188 行定义.

189  {
190  if (!m_scopes.empty())
191  {
192  m_scopes.pop_back();
193  }
194  }

引用了 m_scopes.

◆ pushScope()

void VariableContext::pushScope ( )
inline

在文件 scopedtypevariant.h184 行定义.

185  {
186  m_scopes.push_back(Scope());
187  }

引用了 m_scopes.

类成员变量说明

◆ m_globalScope

Scope VariableContext::m_globalScope
private

在文件 scopedtypevariant.h237 行定义.

被这些函数引用 addVariable(), clear() , 以及 findVariable().

◆ m_scopes

std::vector<Scope> VariableContext::m_scopes
private

该类的文档由以下文件生成:
ScopedTypeVariant
Definition: scopedtypevariant.h:45
QCString::isEmpty
bool isEmpty() const
Returns TRUE iff the string is empty
Definition: qcstring.h:144
QCString::str
std::string str() const
Definition: qcstring.h:442
VariableContext::m_scopes
std::vector< Scope > m_scopes
Definition: scopedtypevariant.h:238
VariableContext::m_globalScope
Scope m_globalScope
Definition: scopedtypevariant.h:237
end
DirIterator end(const DirIterator &) noexcept
Definition: dir.cpp:128
VariableContext::Scope
std::unordered_map< std::string, ScopedTypeVariant > Scope
Definition: scopedtypevariant.h:182