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

Member Function Documentation

◆ clear()

void AccessStack::clear ( )
inline

Definition at line 158 of file symbolresolver.cpp.

159 {
160 m_elements.clear();
161 }
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 146 of file symbolresolver.cpp.

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

153 {
154 auto it = std::find_if(m_elements.begin(),m_elements.end(),
155 [&](const AccessElem &e) { return e.scope==scope && e.fileScope==fileScope && e.item==item && e.expScope==expScope; });
156 return it!=m_elements.end();
157 }

References m_elements.

◆ pop()

void AccessStack::pop ( )
inline

Definition at line 142 of file symbolresolver.cpp.

143 {
144 if (!m_elements.empty()) m_elements.pop_back();
145 }

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

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

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

139 {
140 m_elements.emplace_back(scope,fileScope,item,expScope);
141 }

References m_elements.

Member Data Documentation

◆ m_elements

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

Definition at line 164 of file symbolresolver.cpp.

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


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