diff options
author | John Camelon | 2005-04-06 02:29:09 +0000 |
---|---|---|
committer | John Camelon | 2005-04-06 02:29:09 +0000 |
commit | 082daae88faf0367c387cc0b06503afef0f3275f (patch) | |
tree | ab411bf37bd47db4cb8dd8767ef845b7c03f661a /core | |
parent | 8b59056395eb6c26e898030e7e1cd1b78d4db999 (diff) | |
download | org.eclipse.cdt-082daae88faf0367c387cc0b06503afef0f3275f.tar.gz org.eclipse.cdt-082daae88faf0367c387cc0b06503afef0f3275f.tar.xz org.eclipse.cdt-082daae88faf0367c387cc0b06503afef0f3275f.zip |
Removal of old file cache from DOMScanner.
Diffstat (limited to 'core')
3 files changed, 36 insertions, 24 deletions
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner2/BaseScanner.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner2/BaseScanner.java index 04b516e0ff1..c43fd37ee66 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner2/BaseScanner.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner2/BaseScanner.java @@ -111,8 +111,6 @@ abstract class BaseScanner implements IScanner { protected ExpressionEvaluator expressionEvaluator; - protected final CharArrayObjectMap fileCache = new CharArrayObjectMap(100); - // The context stack protected static final int bufferInitialSize = 8; @@ -1226,9 +1224,6 @@ abstract class BaseScanner implements IScanner { additionalKeywords = configuration.getAdditionalKeywords(); - if (reader.filename != null) - fileCache.put(reader.filename, reader); - setupBuiltInMacros(configuration); if (info.getDefinedSymbols() != null) { @@ -2865,25 +2860,8 @@ abstract class BaseScanner implements IScanner { fileNameArray); } - protected CodeReader createReader(String path, String fileName) { - String finalPath = ScannerUtility.createReconciledPath(path, fileName); - char[] finalPathc = finalPath.toCharArray(); - CodeReader reader = (CodeReader) fileCache.get(finalPathc); - if (reader != null) - return reader; // found the file in the cache - - // create a new reader on this file (if the file does not exist we will - // get null) - reader = createReaderDuple(finalPath); - if (reader == null) - return null; // the file was not found - - if (reader.filename != null) - // put the full requested path in the cache -- it is more likely - // to match next time than the reader.filename - fileCache.put(finalPathc, reader); - return reader; - } + protected abstract CodeReader createReader(String path, String fileName); + private int findIncludePos(String[] paths, File currentDirectory) { for (int i = 0; i < paths.length; ++i) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner2/DOMScanner.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner2/DOMScanner.java index 6e38c1a476b..748fca641a7 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner2/DOMScanner.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner2/DOMScanner.java @@ -446,4 +446,11 @@ public class DOMScanner extends BaseScanner { protected void afterReplaceAllMacros() { --fsmCount; } + + protected CodeReader createReader(String path, String fileName){ + String finalPath = ScannerUtility.createReconciledPath(path, fileName); + CodeReader reader = createReaderDuple(finalPath); + return reader; + } + }
\ No newline at end of file diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner2/Scanner2.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner2/Scanner2.java index 6adf368a311..25d8d8ea3fc 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner2/Scanner2.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner2/Scanner2.java @@ -23,6 +23,7 @@ import org.eclipse.cdt.core.parser.ParserFactory; import org.eclipse.cdt.core.parser.ParserLanguage; import org.eclipse.cdt.core.parser.ParserMode; import org.eclipse.cdt.core.parser.ast.IASTFactory; +import org.eclipse.cdt.core.parser.util.CharArrayObjectMap; import org.eclipse.cdt.internal.core.parser.ast.EmptyIterator; import org.eclipse.cdt.internal.core.parser.token.ImagedExpansionToken; import org.eclipse.cdt.internal.core.parser.token.ImagedToken; @@ -54,6 +55,9 @@ public class Scanner2 extends BaseScanner { this.expressionEvaluator = new ExpressionEvaluator(callbackManager, spf); this.workingCopies = workingCopies; postConstructorSetup(reader, info); + if (reader.filename != null) + fileCache.put(reader.filename, reader); + } /* @@ -225,6 +229,8 @@ public class Scanner2 extends BaseScanner { protected static final ScannerProblemFactory spf = new ScannerProblemFactory(); + protected final CharArrayObjectMap fileCache = new CharArrayObjectMap(100); + /* * (non-Javadoc) * @@ -331,5 +337,26 @@ public class Scanner2 extends BaseScanner { */ protected void processPragma(int startPos, int endPos) { } + + protected CodeReader createReader(String path, String fileName){ + String finalPath = ScannerUtility.createReconciledPath(path, fileName); + char[] finalPathc = finalPath.toCharArray(); + CodeReader reader = (CodeReader) fileCache.get(finalPathc); + if (reader != null) + return reader; // found the file in the cache + + // create a new reader on this file (if the file does not exist we will + // get null) + reader = createReaderDuple(finalPath); + if (reader == null) + return null; // the file was not found + + if (reader.filename != null) + // put the full requested path in the cache -- it is more likely + // to match next time than the reader.filename + fileCache.put(finalPathc, reader); + return reader; + } + }
\ No newline at end of file |