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< AccessElemm_elements

Detailed Description

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

Definition at line 117 of file symbolresolver.cpp.

Member Function Documentation

◆ clear()

void AccessStack::clear ( )
inline

Definition at line 154 of file symbolresolver.cpp.

155 {
156 m_elements.clear();
157 }
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 142 of file symbolresolver.cpp.

143 {
144 auto it = std::find_if(m_elements.begin(),m_elements.end(),
145 [&](const AccessElem &e) { return e.scope==scope && e.fileScope==fileScope && e.item==item; });
146 return it!=m_elements.end();
147 }
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 148 of file symbolresolver.cpp.

149 {
150 auto it = std::find_if(m_elements.begin(),m_elements.end(),
151 [&](const AccessElem &e) { return e.scope==scope && e.fileScope==fileScope && e.item==item && e.expScope==expScope; });
152 return it!=m_elements.end();
153 }

References m_elements.

◆ pop()

void AccessStack::pop ( )
inline

Definition at line 138 of file symbolresolver.cpp.

139 {
140 if (!m_elements.empty()) m_elements.pop_back();
141 }

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 130 of file symbolresolver.cpp.

131 {
132 m_elements.emplace_back(scope,fileScope,item);
133 }

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 134 of file symbolresolver.cpp.

135 {
136 m_elements.emplace_back(scope,fileScope,item,expScope);
137 }

References m_elements.

Member Data Documentation

◆ m_elements

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

Definition at line 160 of file symbolresolver.cpp.

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


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