Document::Ptr Snapshot::preprocessedDocument(const QByteArray &source, const Utils::FileName &fileName) const { Document::Ptr newDoc = Document::create(fileName.toString()); if (Document::Ptr thisDocument = document(fileName)) { newDoc->_revision = thisDocument->_revision; newDoc->_editorRevision = thisDocument->_editorRevision; newDoc->_lastModified = thisDocument->_lastModified; newDoc->_resolvedIncludes = thisDocument->_resolvedIncludes; newDoc->_unresolvedIncludes = thisDocument->_unresolvedIncludes; newDoc->setLanguageFeatures(thisDocument->languageFeatures()); } FastPreprocessor pp(*this); const QByteArray preprocessedCode = pp.run(newDoc, source); newDoc->setUtf8Source(preprocessedCode); return newDoc; }
Document::Ptr Snapshot::documentFromSource(const QByteArray &preprocessedCode, const QString &fileName) const { Document::Ptr newDoc = Document::create(fileName); if (Document::Ptr thisDocument = document(fileName)) { newDoc->_revision = thisDocument->_revision; newDoc->_editorRevision = thisDocument->_editorRevision; newDoc->_lastModified = thisDocument->_lastModified; newDoc->_resolvedIncludes = thisDocument->_resolvedIncludes; newDoc->_unresolvedIncludes = thisDocument->_unresolvedIncludes; newDoc->_definedMacros = thisDocument->_definedMacros; newDoc->_macroUses = thisDocument->_macroUses; newDoc->setLanguageFeatures(thisDocument->languageFeatures()); } newDoc->setUtf8Source(preprocessedCode); return newDoc; }
Document::Ptr Snapshot::preprocessedDocument(const QByteArray &source, const Utils::FileName &fileName, int withDefinedMacrosFromDocumentUntilLine) const { Document::Ptr newDoc = Document::create(fileName.toString()); if (Document::Ptr thisDocument = document(fileName)) { newDoc->_revision = thisDocument->_revision; newDoc->_editorRevision = thisDocument->_editorRevision; newDoc->_lastModified = thisDocument->_lastModified; newDoc->_resolvedIncludes = thisDocument->_resolvedIncludes; newDoc->_unresolvedIncludes = thisDocument->_unresolvedIncludes; newDoc->setLanguageFeatures(thisDocument->languageFeatures()); if (withDefinedMacrosFromDocumentUntilLine != -1) { newDoc->_definedMacros = macrosDefinedUntilLine(thisDocument->_definedMacros, withDefinedMacrosFromDocumentUntilLine); } } FastPreprocessor pp(*this); const bool mergeDefinedMacrosOfDocument = !newDoc->_definedMacros.isEmpty(); const QByteArray preprocessedCode = pp.run(newDoc, source, mergeDefinedMacrosOfDocument); newDoc->setUtf8Source(preprocessedCode); return newDoc; }