Skip to main content
aboutsummaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorJohn Camelon2005-04-06 02:29:09 +0000
committerJohn Camelon2005-04-06 02:29:09 +0000
commit082daae88faf0367c387cc0b06503afef0f3275f (patch)
treeab411bf37bd47db4cb8dd8767ef845b7c03f661a /core
parent8b59056395eb6c26e898030e7e1cd1b78d4db999 (diff)
downloadorg.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')
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner2/BaseScanner.java26
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner2/DOMScanner.java7
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner2/Scanner2.java27
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

Back to the top