#include <preprocessorcontrol.h>
Inheritance diagram for PreprocessorController:


Definition at line 72 of file preprocessorcontrol.h.
Public Slots | |
| void | includeSlot (::Rpp::Source *&includee, const::Rpp::Source *includer, const QString &filename,::Rpp::RppTreeEvaluator::IncludeType includeType) |
| void | readFile (QByteArray &contents, QString filename) |
Signals | |
| void | error (QString type, QString text) |
Public Member Functions | |
| PreprocessorController (IncludeFiles includefiles, PreprocessorCache &preprocessorCache, QStringList preLoadFilesFilenames=QStringList()) | |
| TokenEngine::TokenSectionSequence | evaluate (const QString &filename, Rpp::DefineMap *activedefinitions) |
Private Attributes | |
| IncludeFiles | m_includeFiles |
| Rpp::RppTreeEvaluator | m_rppTreeEvaluator |
| PreprocessorCache & | m_preprocessorCache |
| QHash< QString, QByteArray > | m_preLoadFiles |
| PreprocessorController::PreprocessorController | ( | IncludeFiles | includefiles, | |
| PreprocessorCache & | preprocessorCache, | |||
| QStringList | preLoadFilesFilenames = QStringList() | |||
| ) |
Definition at line 234 of file preprocessorcontrol.cpp.
References buffer, QFile::close(), QObject::connect(), error(), includeSlot(), m_preLoadFiles, m_preprocessorCache, m_rppTreeEvaluator, QFile::open(), QIODevice::readAll(), readFile(), QIODevice::ReadOnly, SIGNAL, SLOT, QTest::stream, and QHash< Key, T >::unite().
00237 :m_includeFiles(includeFiles), 00238 m_preprocessorCache(preprocessorCache) 00239 { 00240 // Load qt3 headers from resources. The headers are stored as 00241 // QHash<QString, QByteArray>, serialized using QDataStream. The hash 00242 // maps filename -> contents. 00243 if (preLoadFilesFilenames != QStringList()) { 00244 foreach (QString filename, preLoadFilesFilenames) { 00245 QFile f(filename); 00246 if (f.open(QIODevice::ReadOnly)) { 00247 QByteArray buffer = f.readAll(); 00248 f.close(); 00249 QDataStream stream(buffer); 00250 QHash<QString, QByteArray> files; 00251 stream >> files; 00252 m_preLoadFiles.unite(files); 00253 } 00254 } 00255 } 00256 00257 //connect include callback 00258 connect(&m_rppTreeEvaluator, 00259 SIGNAL(includeCallback(::Rpp::Source *&, const ::Rpp::Source *, 00260 const QString &, ::Rpp::RppTreeEvaluator::IncludeType)), 00261 SLOT(includeSlot(::Rpp::Source *&, const ::Rpp::Source *, 00262 const QString &, ::Rpp::RppTreeEvaluator::IncludeType))); 00263 00264 // connect readFile callback 00265 connect(&m_preprocessorCache, SIGNAL(readFile(QByteArray&,QString)), 00266 SLOT(readFile(QByteArray&,QString))); 00267 00268 //connect error handlers 00269 connect(&m_preprocessorCache , SIGNAL(error(QString,QString)), 00270 this, SIGNAL(error(QString,QString))); 00271 }
Here is the call graph for this function:

| TokenSectionSequence PreprocessorController::evaluate | ( | const QString & | filename, | |
| Rpp::DefineMap * | activedefinitions | |||
| ) |
Definition at line 327 of file preprocessorcontrol.cpp.
References emit, error(), Rpp::RppTreeEvaluator::evaluate(), QFile::exists(), m_includeFiles, m_preprocessorCache, m_rppTreeEvaluator, IncludeFiles::resolve(), and PreprocessorCache::sourceTree().
Referenced by defaultMacros(), RppPreprocessor::evaluate(), ProjectPorter::portFile(), and ProjectPorter::portProject().
00328 { 00329 QString resolvedFilename = m_includeFiles.resolve(filename); 00330 if(!QFile::exists(resolvedFilename)) 00331 emit error("Error", "Could not find file: " + filename); 00332 Source *source = m_preprocessorCache.sourceTree(resolvedFilename); 00333 00334 return m_rppTreeEvaluator.evaluate(source, activedefinitions); 00335 }
Here is the call graph for this function:

| void PreprocessorController::includeSlot | ( | ::Rpp::Source *& | includee, | |
| const ::Rpp::Source * | includer, | |||
| const QString & | filename, | |||
| ::Rpp::RppTreeEvaluator::IncludeType | includeType | |||
| ) | [slot] |
Referenced by PreprocessorController().
| void PreprocessorController::readFile | ( | QByteArray & | contents, | |
| QString | filename | |||
| ) | [slot] |
Definition at line 307 of file preprocessorcontrol.cpp.
References QHash< Key, T >::contains(), QFile::exists(), QIODevice::isOpen(), m_preLoadFiles, QFile::open(), QIODevice::readAll(), QIODevice::ReadOnly, and QHash< Key, T >::value().
Referenced by PreprocessorController().
00308 { 00309 if (m_preLoadFiles.contains(filename)) { 00310 contents = m_preLoadFiles.value(filename); 00311 return; 00312 } 00313 00314 QFile f(filename); 00315 if (!f.exists()) 00316 return; 00317 f.open(QIODevice::ReadOnly); 00318 if (!f.isOpen()) 00319 return; 00320 contents = f.readAll(); 00321 }
Referenced by evaluate(), and PreprocessorController().
Definition at line 89 of file preprocessorcontrol.h.
Referenced by evaluate(), and PreprocessorController().
Definition at line 90 of file preprocessorcontrol.h.
Referenced by evaluate(), and PreprocessorController().
QHash<QString, QByteArray> PreprocessorController::m_preLoadFiles [private] |
Definition at line 91 of file preprocessorcontrol.h.
Referenced by PreprocessorController(), and readFile().
1.5.1