Doxygen
Loading...
Searching...
No Matches
AccessStack Class Reference

Helper class representing the stack of items considered while resolving the scope. More...

Classes

struct  AccessElem
 Element in the stack. More...

Public Member Functions

void push (const Definition *scope, const FileDef *fileScope, const Definition *item)
void push (const Definition *scope, const FileDef *fileScope, const Definition *item, const DString &expScope)
void pop ()
bool find (const Definition *scope, const FileDef *fileScope, const Definition *item)
bool find (const Definition *scope, const FileDef *fileScope, const Definition *item, const DString &expScope)
void clear ()

Private Attributes

std::vector< AccessElem > m_elements

Detailed Description

Helper class representing the stack of items considered while resolving the scope.

Definition at line 130 of file symbolresolver.cpp.

Member Function Documentation

◆ clear()

void AccessStack::clear ( )
inline

Definition at line 167 of file symbolresolver.cpp.

168 {
169 m_elements.clear();
170 }
std::vector< AccessElem > m_elements

References m_elements.

◆ find() [1/2]

bool AccessStack::find ( const Definition * scope,
const FileDef * fileScope,
const Definition * item )
inline

Definition at line 155 of file symbolresolver.cpp.

156 {
157 auto it = std::find_if(m_elements.begin(),m_elements.end(),
158 [&](const AccessElem &e) { return e.scope==scope && e.fileScope==fileScope && e.item==item; });
159 return it!=m_elements.end();
160 }
Element in the stack.

References m_elements.

Referenced by SymbolResolver::Private::isAccessibleFrom(), and SymbolResolver::Private::isAccessibleFromWithExpScope().

◆ find() [2/2]

bool AccessStack::find ( const Definition * scope,
const FileDef * fileScope,
const Definition * item,
const DString & expScope )
inline

Definition at line 161 of file symbolresolver.cpp.

162 {
163 auto it = std::find_if(m_elements.begin(),m_elements.end(),
164 [&](const AccessElem &e) { return e.scope==scope && e.fileScope==fileScope && e.item==item && e.expScope==expScope; });
165 return it!=m_elements.end();
166 }

References m_elements.

◆ pop()

void AccessStack::pop ( )
inline

Definition at line 151 of file symbolresolver.cpp.

152 {
153 if (!m_elements.empty()) m_elements.pop_back();
154 }

References m_elements.

Referenced by SymbolResolver::Private::isAccessibleFrom(), and SymbolResolver::Private::isAccessibleFromWithExpScope().

◆ push() [1/2]

void AccessStack::push ( const Definition * scope,
const FileDef * fileScope,
const Definition * item )
inline

Definition at line 143 of file symbolresolver.cpp.

144 {
145 m_elements.emplace_back(scope,fileScope,item);
146 }

References m_elements.

Referenced by SymbolResolver::Private::isAccessibleFrom(), and SymbolResolver::Private::isAccessibleFromWithExpScope().

◆ push() [2/2]

void AccessStack::push ( const Definition * scope,
const FileDef * fileScope,
const Definition * item,
const DString & expScope )
inline

Definition at line 147 of file symbolresolver.cpp.

148 {
149 m_elements.emplace_back(scope,fileScope,item,expScope);
150 }

References m_elements.

Member Data Documentation

◆ m_elements

std::vector<AccessElem> AccessStack::m_elements
private

Definition at line 173 of file symbolresolver.cpp.

Referenced by clear(), find(), find(), pop(), push(), and push().


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