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

Class that manages the defines available while preprocessing files. More...

Classes

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

Public Member Functions

void addInclude (const std::string &fromFileName, const std::string &toFileName)
void store (const std::string &fileName, const DefineMap &fromMap)
void retrieve (const std::string &fileName, DefineMap &toMap)
bool alreadyProcessed (const std::string &fileName) const

Private Member Functions

DefinesPerFilefind (const std::string &fileName) const
 Helper function to return the DefinesPerFile object for a given file name.

Private Attributes

std::unordered_map< std::string, std::unique_ptr< DefinesPerFile > > m_fileMap

Friends

class DefinesPerFile

Detailed Description

Class that manages the defines available while preprocessing files.

Definition at line 112 of file pre.l.

Member Function Documentation

◆ addInclude()

void DefineManager::addInclude ( const std::string & fromFileName,
const std::string & toFileName )
inline

Definition at line 171 of file pre.l.

172 {
173 //printf("DefineManager::addInclude('%s'->'%s')\n",qPrint(fromFileName),qPrint(toFileName));
174 auto it = m_fileMap.find(fromFileName);
175 if (it==m_fileMap.end())
176 {
177 it = m_fileMap.emplace(fromFileName,std::make_unique<DefinesPerFile>(this)).first;
178 }
179 auto &dpf = it->second;
180 dpf->addInclude(toFileName);
181 }
std::unordered_map< std::string, std::unique_ptr< DefinesPerFile > > m_fileMap
Definition pre.l:223

References m_fileMap.

◆ alreadyProcessed()

bool DefineManager::alreadyProcessed ( const std::string & fileName) const
inline

Definition at line 205 of file pre.l.

206 {
207 auto it = m_fileMap.find(fileName);
208 if (it!=m_fileMap.end())
209 {
210 return it->second->stored();
211 }
212 return false;
213 }

References m_fileMap.

◆ find()

DefinesPerFile * DefineManager::find ( const std::string & fileName) const
inlineprivate

Helper function to return the DefinesPerFile object for a given file name.

Definition at line 217 of file pre.l.

218 {
219 auto it = m_fileMap.find(fileName);
220 return it!=m_fileMap.end() ? it->second.get() : nullptr;
221 }

References m_fileMap.

◆ retrieve()

void DefineManager::retrieve ( const std::string & fileName,
DefineMap & toMap )
inline

Definition at line 194 of file pre.l.

195 {
196 auto it = m_fileMap.find(fileName);
197 if (it!=m_fileMap.end())
198 {
199 auto &dpf = it->second;
200 dpf->retrieve(toMap);
201 }
202 //printf("DefineManager::retrieve(%s,#=%zu)\n",qPrint(fileName),toMap.size());
203 }

References m_fileMap.

◆ store()

void DefineManager::store ( const std::string & fileName,
const DefineMap & fromMap )
inline

Definition at line 183 of file pre.l.

184 {
185 //printf("DefineManager::store(%s,#=%zu)\n",qPrint(fileName),fromMap.size());
186 auto it = m_fileMap.find(fileName);
187 if (it==m_fileMap.end())
188 {
189 it = m_fileMap.emplace(fileName,std::make_unique<DefinesPerFile>(this)).first;
190 }
191 it->second->store(fromMap);
192 }

References m_fileMap.

◆ DefinesPerFile

friend class DefinesPerFile
friend

Definition at line 168 of file pre.l.

Member Data Documentation

◆ m_fileMap

std::unordered_map< std::string, std::unique_ptr<DefinesPerFile> > DefineManager::m_fileMap
private

Definition at line 223 of file pre.l.

Referenced by addInclude(), alreadyProcessed(), find(), retrieve(), and store().


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