Doxygen
Loading...
Searching...
No Matches
DefineManager::DefinesPerFile Class Reference

Local class used to hold the defines for a single file. More...

Collaboration diagram for DefineManager::DefinesPerFile:

Public Member Functions

 DefinesPerFile (DefineManager *parent)
 Creates an empty container for defines.
void addInclude (const std::string &fileName)
void store (const DefineMap &fromMap)
void retrieve (DefineMap &toMap)
void retrieveRec (DefineMap &toMap, StringUnorderedSet &includeStack)
bool stored () const

Private Attributes

DefineManagerm_parent
DefineMap m_defines
StringUnorderedSet m_includedFiles
bool m_stored = false

Detailed Description

Local class used to hold the defines for a single file.

Definition at line 116 of file pre.l.

Constructor & Destructor Documentation

◆ DefinesPerFile()

DefineManager::DefinesPerFile::DefinesPerFile ( DefineManager * parent)
inline

Creates an empty container for defines.

Definition at line 120 of file pre.l.

122 {
123 }
DefineManager * m_parent
Definition pre.l:162
constexpr DocNodeVariant * parent(DocNodeVariant *n)
returns the parent node of a given node n or nullptr if the node has no parent.
Definition docnode.h:1327

Referenced by retrieveRec().

Member Function Documentation

◆ addInclude()

void DefineManager::DefinesPerFile::addInclude ( const std::string & fileName)
inline

Definition at line 124 of file pre.l.

125 {
126 m_includedFiles.insert(fileName);
127 }
StringUnorderedSet m_includedFiles
Definition pre.l:164

References m_includedFiles.

◆ retrieve()

void DefineManager::DefinesPerFile::retrieve ( DefineMap & toMap)
inline

Definition at line 137 of file pre.l.

138 {
139 StringUnorderedSet includeStack;
140 retrieveRec(toMap,includeStack);
141 }
void retrieveRec(DefineMap &toMap, StringUnorderedSet &includeStack)
Definition pre.l:142
std::unordered_set< std::string > StringUnorderedSet
Definition containers.h:29

◆ retrieveRec()

void DefineManager::DefinesPerFile::retrieveRec ( DefineMap & toMap,
StringUnorderedSet & includeStack )
inline

Definition at line 142 of file pre.l.

143 {
144 //printf(" retrieveRec #includedFiles=%zu\n",m_includedFiles.size());
145 for (auto incFile : m_includedFiles)
146 {
147 DefinesPerFile *dpf = m_parent->find(incFile);
148 if (dpf && includeStack.find(incFile)==includeStack.end())
149 {
150 includeStack.insert(incFile);
151 dpf->retrieveRec(toMap,includeStack);
152 //printf(" retrieveRec: processing include %s: #toMap=%zu\n",qPrint(incFile),toMap.size());
153 }
154 }
155 for (auto &[name,define] : m_defines)
156 {
157 toMap.emplace(name,define);
158 }
159 }
DefinesPerFile(DefineManager *parent)
Creates an empty container for defines.
Definition pre.l:120

References DefinesPerFile(), m_includedFiles, m_parent, and retrieveRec().

Referenced by retrieveRec().

◆ store()

void DefineManager::DefinesPerFile::store ( const DefineMap & fromMap)
inline

Definition at line 128 of file pre.l.

129 {
130 for (auto &[name,define] : fromMap)
131 {
132 m_defines.emplace(name,define);
133 }
134 //printf(" m_defines.size()=%zu\n",m_defines.size());
135 m_stored=true;
136 }

References m_defines.

◆ stored()

bool DefineManager::DefinesPerFile::stored ( ) const
inline

Definition at line 160 of file pre.l.

160{ return m_stored; }

References m_defines, and m_parent.

Member Data Documentation

◆ m_defines

DefineMap DefineManager::DefinesPerFile::m_defines
private

Definition at line 163 of file pre.l.

Referenced by store(), and stored().

◆ m_includedFiles

StringUnorderedSet DefineManager::DefinesPerFile::m_includedFiles
private

Definition at line 164 of file pre.l.

Referenced by addInclude(), and retrieveRec().

◆ m_parent

DefineManager* DefineManager::DefinesPerFile::m_parent
private

Definition at line 162 of file pre.l.

Referenced by retrieveRec(), and stored().

◆ m_stored

bool DefineManager::DefinesPerFile::m_stored = false
private

Definition at line 165 of file pre.l.


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