PreprocessorController Class Reference

#include <preprocessorcontrol.h>

Inheritance diagram for PreprocessorController:

Inheritance graph
[legend]
Collaboration diagram for PreprocessorController:

Collaboration graph
[legend]
List of all members.

Detailed Description

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
PreprocessorCachem_preprocessorCache
QHash< QString, QByteArraym_preLoadFiles


Constructor & Destructor Documentation

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:


Member Function Documentation

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 }

void PreprocessorController::error ( QString  type,
QString  text 
) [signal]

Referenced by evaluate(), and PreprocessorController().


Member Data Documentation

IncludeFiles PreprocessorController::m_includeFiles [private]

Definition at line 88 of file preprocessorcontrol.h.

Referenced by evaluate().

Rpp::RppTreeEvaluator PreprocessorController::m_rppTreeEvaluator [private]

Definition at line 89 of file preprocessorcontrol.h.

Referenced by evaluate(), and PreprocessorController().

PreprocessorCache& PreprocessorController::m_preprocessorCache [private]

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().


The documentation for this class was generated from the following files:
Generated on Thu Mar 15 15:36:12 2007 for Qt 4.2 User's Guide by  doxygen 1.5.1