From 2855f876aceddff4e124f92fa739dc9c9114dddd Mon Sep 17 00:00:00 2001 From: Doug Schaefer Date: Tue, 24 Jan 2006 18:23:53 +0000 Subject: [PATCH] PDOM - Add option to skip parsing of there is no build information. --- .../model/org/eclipse/cdt/core/model/ILanguage.java | 6 ++++++ .../org/eclipse/cdt/core/dom/ast/gnu/c/GCCLanguage.java | 2 ++ .../org/eclipse/cdt/core/dom/ast/gnu/cpp/GPPLanguage.java | 2 ++ .../org/eclipse/cdt/internal/core/pdom/PDOMDatabase.java | 3 ++- 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/ILanguage.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/ILanguage.java index c8c8c0e4ee6..e992b628572 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/ILanguage.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/ILanguage.java @@ -45,6 +45,12 @@ public interface ILanguage extends IAdaptable { */ public static final int AST_SKIP_INDEXED_HEADERS = 4; + /** + * Style for getTranslationUnit. Don't parse the file if there is no build + * information for it. + */ + public static final int AST_SKIP_IF_NO_BUILD_INFO = 8; + /** * Return the language id for this language in the given PDOM. * This is to differentiate languages from eachother. diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/c/GCCLanguage.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/c/GCCLanguage.java index 4dea6698f91..196f5819a05 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/c/GCCLanguage.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/c/GCCLanguage.java @@ -89,6 +89,8 @@ public class GCCLanguage extends PlatformObject implements ILanguage { IScannerInfo buildScanInfo = provider.getScannerInformation(infoResource); if (buildScanInfo != null) scanInfo = buildScanInfo; + else if ((style & ILanguage.AST_SKIP_IF_NO_BUILD_INFO) != 0) + return null; else scanInfo = new ScannerInfo(); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/cpp/GPPLanguage.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/cpp/GPPLanguage.java index 0c79f192c35..9509cbbd694 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/cpp/GPPLanguage.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/cpp/GPPLanguage.java @@ -88,6 +88,8 @@ public class GPPLanguage extends PlatformObject implements ILanguage { IScannerInfo buildScanInfo = provider.getScannerInformation(infoResource); if (buildScanInfo != null) scanInfo = buildScanInfo; + else if ((style & ILanguage.AST_SKIP_IF_NO_BUILD_INFO) != 0) + return null; else scanInfo = new ScannerInfo(); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMDatabase.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMDatabase.java index ff9f88ef7a2..349b85ae235 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMDatabase.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMDatabase.java @@ -120,7 +120,8 @@ public class PDOMDatabase implements IPDOM { IASTTranslationUnit ast = language.getTranslationUnit((IFile)tu.getResource(), ILanguage.AST_USE_INDEX | - ILanguage.AST_SKIP_INDEXED_HEADERS); + ILanguage.AST_SKIP_INDEXED_HEADERS | + ILanguage.AST_SKIP_IF_NO_BUILD_INFO); if (ast == null) return;