diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexUpdateTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexUpdateTests.java index 191d05670d7..c70c79fe080 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexUpdateTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexUpdateTests.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2008 Wind River Systems, Inc. and others. + * Copyright (c) 2007, 2009 Wind River Systems, Inc. and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -795,7 +795,7 @@ public class IndexUpdateTests extends IndexTestBase { assertEquals(0, tpars[0].getParameterID()); assertEquals("T", tpars[0].getName()); assertNull(tpars[0].getDefaultValue()); - pdomid= ((PDOMNode)((IAdaptable) tpars[0]).getAdapter(PDOMNode.class)).getId(); + pdomid= ((PDOMNode)((IAdaptable) tpars[0]).getAdapter(PDOMNode.class)).getRecord(); } finally { fIndex.releaseReadLock(); } @@ -895,7 +895,7 @@ public class IndexUpdateTests extends IndexTestBase { assertTrue(tpars[0] instanceof ICPPTemplateTypeParameter); assertEquals(0, tpars[0].getParameterID()); assertEquals("U", tpars[0].getName()); - assertEquals(pdomid, ((PDOMNode)((IAdaptable) tpars[0]).getAdapter(PDOMNode.class)).getId()); + assertEquals(pdomid, ((PDOMNode)((IAdaptable) tpars[0]).getAdapter(PDOMNode.class)).getBindingID()); } finally { fIndex.releaseReadLock(); } diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/PDOMPrettyPrinter.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/PDOMPrettyPrinter.java index 24a3847bd18..fc82c4bea6a 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/PDOMPrettyPrinter.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/PDOMPrettyPrinter.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2007 Symbian Software Systems and others. + * Copyright (c) 2006, 2009 Symbian Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -26,6 +26,7 @@ import org.eclipse.cdt.internal.core.index.IIndexFragment; import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.db.IBTreeVisitor; import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; +import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; import org.eclipse.core.runtime.CoreException; @@ -76,29 +77,42 @@ public class PDOMPrettyPrinter implements IPDOMVisitor { * @param index * @param linkageID */ - public static void dumpLinkage(IIndex index, final String linkageID) { + public static void dumpLinkage(IIndex index, final int linkageID) { final IPDOMVisitor v= new PDOMPrettyPrinter(); IIndexFragment[] frg= ((CIndex)index).getPrimaryFragments(); for (IIndexFragment element : frg) { final PDOM pdom = (PDOM) element; - try { - pdom.getLinkage(linkageID).getIndex().accept( - new IBTreeVisitor() { - public int compare(int record) throws CoreException { - return 0; - } - public boolean visit(int record) throws CoreException { - if(record==0) return false; - PDOMNode node= pdom.getLinkage(linkageID).getNode(record); - if(v.visit(node)) - node.accept(v); - v.leave(node); - return true; - } - }); - } catch(CoreException ce) { - CCorePlugin.log(ce); + dumpLinkage(pdom, linkageID, v); + } + } + + public static void dumpLinkage(PDOM pdom, final int linkageID) { + final IPDOMVisitor v= new PDOMPrettyPrinter(); + dumpLinkage(pdom, linkageID, v); + } + + private static void dumpLinkage(final PDOM pdom, final int linkageID, final IPDOMVisitor v) { + try { + final PDOMLinkage linkage = pdom.getLinkage(linkageID); + if (linkage != null) { + linkage.getIndex().accept(new IBTreeVisitor() { + public int compare(int record) throws CoreException { + return 0; + } + + public boolean visit(int record) throws CoreException { + if (record == 0) + return false; + PDOMNode node = linkage.getNode(record); + if (v.visit(node)) + node.accept(v); + v.leave(node); + return true; + } + }); } + } catch(CoreException ce) { + CCorePlugin.log(ce); } } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/IIndexFragmentBinding.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/IIndexFragmentBinding.java index d7e3a9da080..241a04fba82 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/IIndexFragmentBinding.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/IIndexFragmentBinding.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2008 Wind River Systems, Inc. and others. + * Copyright (c) 2006, 2009 Wind River Systems, Inc. and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -62,5 +62,5 @@ public interface IIndexFragmentBinding extends IIndexBinding { * Returns a unique id for the binding within the fragment * @since 5.1 */ - int getId(); + int getBindingID(); } \ No newline at end of file diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CPPCompositesFactory.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CPPCompositesFactory.java index 5c65ca71854..ac0e7c6e6d3 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CPPCompositesFactory.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CPPCompositesFactory.java @@ -329,9 +329,9 @@ public class CPPCompositesFactory extends AbstractCompositeFactory { } public static Object createInstanceCacheKey(ICompositesFactory cf,IIndexFragmentBinding rbinding) { - return new Key(Thread.currentThread().getId(), cf.hashCode(), rbinding.getId()); + return new Key(Thread.currentThread().getId(), cf.hashCode(), rbinding.getBindingID()); } public static Object createSpecializationKey(ICompositesFactory cf,IIndexFragmentBinding rbinding) { - return new Key(Thread.currentThread().getId(), cf.hashCode(), rbinding.getId()+1); + return new Key(Thread.currentThread().getId(), cf.hashCode(), rbinding.getBindingID()+1); } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOM.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOM.java index 49618d74c89..df79e13fb9f 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOM.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOM.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2005, 2008 QNX Software Systems and others. + * Copyright (c) 2005, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -54,6 +54,7 @@ import org.eclipse.cdt.core.index.IIndexLocationConverter; import org.eclipse.cdt.core.index.IIndexMacro; import org.eclipse.cdt.core.index.IIndexMacroContainer; import org.eclipse.cdt.core.index.IndexFilter; +import org.eclipse.cdt.internal.core.dom.Linkage; import org.eclipse.cdt.internal.core.index.IIndexCBindingConstants; import org.eclipse.cdt.internal.core.index.IIndexFragment; import org.eclipse.cdt.internal.core.index.IIndexFragmentBinding; @@ -221,7 +222,7 @@ public class PDOM extends PlatformObject implements IPDOM { // Local caches protected Database db; private BTree fileIndex; - private Map fLinkageIDCache = new HashMap(); + private Map fLinkageIDCache = new HashMap(); private File fPath; private IIndexLocationConverter locationConverter; private Map fPDOMLinkageFactoryCache; @@ -269,8 +270,41 @@ public class PDOM extends PlatformObject implements IPDOM { return version >= MIN_SUPPORTED_VERSION && version <= MAX_SUPPORTED_VERSION; } + private void readLinkages() throws CoreException { + int record= getFirstLinkageRecord(); + while (record != 0) { + String linkageID= PDOMLinkage.getLinkageID(this, record).getString(); + IPDOMLinkageFactory factory= fPDOMLinkageFactoryCache.get(linkageID); + if (factory != null) { + PDOMLinkage linkage= factory.getLinkage(this, record); + fLinkageIDCache.put(linkage.getLinkageID(), linkage); + } + record= PDOMLinkage.getNextLinkageRecord(this, record); + } + } + + private PDOMLinkage createLinkage(int linkageID) throws CoreException { + PDOMLinkage pdomLinkage= fLinkageIDCache.get(linkageID); + if (pdomLinkage == null) { + final String linkageName= Linkage.getLinkageName(linkageID); + IPDOMLinkageFactory factory= fPDOMLinkageFactoryCache.get(linkageName); + if (factory != null) { + return factory.createLinkage(this); + } + } + return pdomLinkage; + } + + public PDOMLinkage getLinkage(int linkageID) throws CoreException { + return fLinkageIDCache.get(linkageID); + } + + private Collection getLinkageList() { + return fLinkageIDCache.values(); + } + public void accept(IPDOMVisitor visitor) throws CoreException { - for (PDOMLinkage linkage : fLinkageIDCache.values()) { + for (PDOMLinkage linkage : getLinkageList()) { linkage.accept(visitor); } } @@ -306,7 +340,14 @@ public class PDOM extends PlatformObject implements IPDOM { } public PDOMFile getFile(int linkageID, IIndexFileLocation location) throws CoreException { - return PDOMFile.findFile(this, getFileIndex(), location, linkageID, locationConverter); + PDOMLinkage linkage= getLinkage(linkageID); + if (linkage == null) + return null; + return PDOMFile.findFile(linkage, getFileIndex(), location, locationConverter); + } + + public PDOMFile getFile(PDOMLinkage linkage, IIndexFileLocation location) throws CoreException { + return PDOMFile.findFile(linkage, getFileIndex(), location, locationConverter); } public IIndexFragmentFile[] getFiles(IIndexFileLocation location) throws CoreException { @@ -320,7 +361,7 @@ public class PDOM extends PlatformObject implements IPDOM { return 0; } public boolean visit(int record) throws CoreException { - PDOMFile file = new PDOMFile(PDOM.this, record); + PDOMFile file = PDOMFile.recreateFile(PDOM.this, record); locations.add(file); return true; } @@ -329,9 +370,10 @@ public class PDOM extends PlatformObject implements IPDOM { } protected IIndexFragmentFile addFile(int linkageID, IIndexFileLocation location) throws CoreException { - IIndexFragmentFile file = getFile(linkageID, location); + PDOMLinkage linkage= createLinkage(linkageID); + IIndexFragmentFile file = getFile(linkage, location); if (file == null) { - PDOMFile pdomFile = new PDOMFile(this, location, linkageID); + PDOMFile pdomFile = new PDOMFile(linkage, location, linkageID); getFileIndex().insert(pdomFile.getRecord()); file= pdomFile; } @@ -472,7 +514,7 @@ public class PDOM extends PlatformObject implements IPDOM { monitor= new NullProgressMonitor(); } BindingFinder finder = new BindingFinder(pattern, isFullyQualified, filter, monitor); - for (PDOMLinkage linkage : fLinkageIDCache.values()) { + for (PDOMLinkage linkage : getLinkageList()) { if (filter.acceptLinkage(linkage)) { try { linkage.accept(finder); @@ -491,11 +533,13 @@ public class PDOM extends PlatformObject implements IPDOM { if (monitor == null) { monitor= new NullProgressMonitor(); } - MacroContainerPatternCollector finder = new MacroContainerPatternCollector(this, pattern, monitor); - for (PDOMLinkage linkage : fLinkageIDCache.values()) { + List result= new ArrayList(); + for (PDOMLinkage linkage : getLinkageList()) { if (filter.acceptLinkage(linkage)) { try { + MacroContainerPatternCollector finder = new MacroContainerPatternCollector(linkage, pattern, monitor); linkage.getMacroIndex().accept(finder); + result.addAll(Arrays.asList(finder.getMacroContainers())); } catch (CoreException e) { if (e.getStatus() != Status.OK_STATUS) throw e; @@ -504,7 +548,7 @@ public class PDOM extends PlatformObject implements IPDOM { } } } - return finder.getMacroContainers(); + return result.toArray(new IIndexFragmentBinding[result.size()]); } public IIndexFragmentBinding[] findBindings(char[][] names, IndexFilter filter, IProgressMonitor monitor) throws CoreException { @@ -513,7 +557,7 @@ public class PDOM extends PlatformObject implements IPDOM { } ArrayList result= new ArrayList(); ArrayList nodes= new ArrayList(); - for (PDOMLinkage linkage : fLinkageIDCache.values()) { + for (PDOMLinkage linkage : getLinkageList()) { if (filter.acceptLinkage(linkage)) { nodes.add(linkage); for (int i=0; i < names.length-1; i++) { @@ -539,80 +583,25 @@ public class PDOM extends PlatformObject implements IPDOM { return result.toArray(new IIndexFragmentBinding[result.size()]); } - private void readLinkages() throws CoreException { - // populate the linkage cache - int record= getFirstLinkageRecord(); - while (record != 0) { - String linkageID= PDOMLinkage.getId(this, record).getString(); - IPDOMLinkageFactory factory= fPDOMLinkageFactoryCache.get(linkageID); - if (factory != null) { - PDOMLinkage linkage= factory.getLinkage(this, record); - fLinkageIDCache.put(linkageID, linkage); - } - record= PDOMLinkage.getNextLinkageRecord(this, record); - } - } - - public PDOMLinkage getLinkage(String linkageID) { - return fLinkageIDCache.get(linkageID); - } - - public PDOMLinkage createLinkage(String linkageID) throws CoreException { - PDOMLinkage pdomLinkage= fLinkageIDCache.get(linkageID); - if (pdomLinkage == null) { - // Need to create it - IPDOMLinkageFactory factory= fPDOMLinkageFactoryCache.get(linkageID); - if (factory != null) { - return factory.createLinkage(this); - } - } - return pdomLinkage; - } - - public PDOMLinkage getLinkage(int record) throws CoreException { - if (record == 0) - return null; - - // First check the cache. We do a linear search since there will be very few linkages - // in a given database. - Iterator i = fLinkageIDCache.values().iterator(); - while (i.hasNext()) { - PDOMLinkage linkage = i.next(); - if (linkage.getRecord() == record) - return linkage; - } - - String id = PDOMLinkage.getId(this, record).getString(); - return createLinkage(id); - } - + private int getFirstLinkageRecord() throws CoreException { return db.getInt(LINKAGES); } public IIndexLinkage[] getLinkages() { - Collection values = fLinkageIDCache.values(); + Collection values = getLinkageList(); return values.toArray(new IIndexLinkage[values.size()]); } public PDOMLinkage[] getLinkageImpls() { - Collection values = fLinkageIDCache.values(); + Collection values = getLinkageList(); return values.toArray(new PDOMLinkage[values.size()]); } public void insertLinkage(PDOMLinkage linkage) throws CoreException { linkage.setNext(db.getInt(LINKAGES)); db.putInt(LINKAGES, linkage.getRecord()); - fLinkageIDCache.put(linkage.getLinkageName(), linkage); - } - - public PDOMBinding getBinding(int record) throws CoreException { - if (record == 0) - return null; - else { - PDOMNode node = PDOMNode.getLinkage(this, record).getNode(record); - return node instanceof PDOMBinding ? (PDOMBinding)node : null; - } + fLinkageIDCache.put(linkage.getLinkageID(), linkage); } // Read-write lock rules. Readers don't conflict with other readers, @@ -726,7 +715,7 @@ public class PDOM extends PlatformObject implements IPDOM { } protected PDOMLinkage adaptLinkage(ILinkage linkage) throws CoreException { - return fLinkageIDCache.get(linkage.getLinkageName()); + return fLinkageIDCache.get(linkage.getLinkageID()); } public IIndexFragmentBinding adaptBinding(IBinding binding) throws CoreException { @@ -849,7 +838,7 @@ public class PDOM extends PlatformObject implements IPDOM { public IIndexFragmentBinding[] findBindingsForPrefix(char[] prefix, boolean filescope, IndexFilter filter, IProgressMonitor monitor) throws CoreException { ArrayList result= new ArrayList(); - for (PDOMLinkage linkage : fLinkageIDCache.values()) { + for (PDOMLinkage linkage : getLinkageList()) { if (filter.acceptLinkage(linkage)) { PDOMBinding[] bindings; BindingCollector visitor = new BindingCollector(linkage, prefix, filter, true, false); @@ -874,7 +863,7 @@ public class PDOM extends PlatformObject implements IPDOM { public IIndexFragmentBinding[] findBindings(char[] name, boolean filescope, IndexFilter filter, IProgressMonitor monitor) throws CoreException { ArrayList result= new ArrayList(); - for (PDOMLinkage linkage : fLinkageIDCache.values()) { + for (PDOMLinkage linkage : getLinkageList()) { if (filter.acceptLinkage(linkage)) { PDOMBinding[] bindings; BindingCollector visitor = new BindingCollector(linkage, name, filter, false, true); @@ -899,17 +888,17 @@ public class PDOM extends PlatformObject implements IPDOM { public IIndexMacro[] findMacros(char[] prefix, boolean isPrefix, boolean isCaseSensitive, IndexFilter filter, IProgressMonitor monitor) throws CoreException { ArrayList result= new ArrayList(); - MacroContainerCollector visitor = new MacroContainerCollector(this, prefix, isPrefix, isCaseSensitive); - visitor.setMonitor(monitor); try { - for (PDOMLinkage linkage : fLinkageIDCache.values()) { + for (PDOMLinkage linkage : getLinkageList()) { if (filter.acceptLinkage(linkage)) { + MacroContainerCollector visitor = new MacroContainerCollector(linkage, prefix, isPrefix, isCaseSensitive); + visitor.setMonitor(monitor); linkage.getMacroIndex().accept(visitor); + for (PDOMMacroContainer mcont : visitor.getMacroList()) { + result.addAll(Arrays.asList(mcont.getDefinitions())); + } } } - for (PDOMMacroContainer mcont : visitor.getMacroList()) { - result.addAll(Arrays.asList(mcont.getDefinitions())); - } } catch (OperationCanceledException e) { } @@ -1004,7 +993,7 @@ public class PDOM extends PlatformObject implements IPDOM { final int inputLinkage= binding.getLinkage().getLinkageID(); if (inputLinkage == ILinkage.C_LINKAGE_ID || inputLinkage == ILinkage.CPP_LINKAGE_ID) { final char[] name= binding.getNameCharArray(); - for (PDOMLinkage linkage : fLinkageIDCache.values()) { + for (PDOMLinkage linkage : getLinkageList()) { final int linkageID = linkage.getLinkageID(); if (linkageID != inputLinkage) { if (linkageID == ILinkage.C_LINKAGE_ID || linkageID == ILinkage.CPP_LINKAGE_ID) { @@ -1021,7 +1010,7 @@ public class PDOM extends PlatformObject implements IPDOM { private PDOMBinding[] getCBindingForCPP(IBinding binding) throws CoreException { PDOMBinding result= null; - PDOMLinkage c= getLinkage(ILinkage.C_LINKAGE_NAME); + PDOMLinkage c= getLinkage(ILinkage.C_LINKAGE_ID); if (c == null) { return PDOMBinding.EMPTY_PDOMBINDING_ARRAY; } @@ -1029,29 +1018,29 @@ public class PDOM extends PlatformObject implements IPDOM { if (binding instanceof ICPPFunction) { ICPPFunction func = (ICPPFunction) binding; if (func.isExternC()) { - result = FindBinding.findBinding(c.getIndex(), this, func.getNameCharArray(), - new int[] { IIndexCBindingConstants.CFUNCTION }, 0); + result = FindBinding.findBinding(c.getIndex(), c, + func.getNameCharArray(), new int[] { IIndexCBindingConstants.CFUNCTION }, 0); } } else if (binding instanceof ICPPVariable) { ICPPVariable var = (ICPPVariable) binding; if (var.isExternC()) { - result = FindBinding.findBinding(c.getIndex(), this, var.getNameCharArray(), - new int[] { IIndexCBindingConstants.CVARIABLE }, 0); + result = FindBinding.findBinding(c.getIndex(), c, + var.getNameCharArray(), new int[] { IIndexCBindingConstants.CVARIABLE }, 0); } } else if (binding instanceof IEnumeration) { - result= FindBinding.findBinding(c.getIndex(), this, binding.getNameCharArray(), - new int[] {IIndexCBindingConstants.CENUMERATION }, 0); + result= FindBinding.findBinding(c.getIndex(), c, + binding.getNameCharArray(), new int[] {IIndexCBindingConstants.CENUMERATION }, 0); } else if (binding instanceof IEnumerator) { - result= FindBinding.findBinding(c.getIndex(), this, binding.getNameCharArray(), - new int[] {IIndexCBindingConstants.CENUMERATOR }, 0); + result= FindBinding.findBinding(c.getIndex(), c, + binding.getNameCharArray(), new int[] {IIndexCBindingConstants.CENUMERATOR }, 0); } else if (binding instanceof ITypedef) { - result= FindBinding.findBinding(c.getIndex(), this, binding.getNameCharArray(), - new int[] {IIndexCBindingConstants.CTYPEDEF }, 0); + result= FindBinding.findBinding(c.getIndex(), c, + binding.getNameCharArray(), new int[] {IIndexCBindingConstants.CTYPEDEF }, 0); } else if (binding instanceof ICompositeType) { final int key= ((ICompositeType) binding).getKey(); if (key == ICompositeType.k_struct || key == ICompositeType.k_union) { - result= FindBinding.findBinding(c.getIndex(), this, binding.getNameCharArray(), - new int[] {IIndexCBindingConstants.CSTRUCTURE }, 0); + result= FindBinding.findBinding(c.getIndex(), c, + binding.getNameCharArray(), new int[] {IIndexCBindingConstants.CSTRUCTURE }, 0); if (result instanceof ICompositeType && ((ICompositeType) result).getKey() != key) { result= null; } @@ -1063,7 +1052,7 @@ public class PDOM extends PlatformObject implements IPDOM { } private PDOMBinding[] getCPPBindingForC(IBinding binding) throws CoreException { - PDOMLinkage cpp= getLinkage(ILinkage.CPP_LINKAGE_NAME); + PDOMLinkage cpp= getLinkage(ILinkage.CPP_LINKAGE_ID); if (cpp == null) { return PDOMBinding.EMPTY_PDOMBINDING_ARRAY; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMLanguage.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMLanguage.java deleted file mode 100644 index ad6a169e852..00000000000 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMLanguage.java +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005, 2006 QNX Software Systems and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * QNX - Initial API and implementation - *******************************************************************************/ - -package org.eclipse.cdt.internal.core.pdom; - -import org.eclipse.cdt.internal.core.pdom.db.Database; -import org.eclipse.cdt.internal.core.pdom.db.IString; -import org.eclipse.core.runtime.CoreException; - -/** - * @author Doug Schaefer - * - */ -public class PDOMLanguage { - - private PDOM pdom; - private int record; - - private static final int NEXT = 0; // int - private static final int ID = 4; // char - private static final int NAME = 6; // string - - private static int RECORD_SIZE = 10; - - public PDOMLanguage(PDOM pdom, int record) { - this.pdom = pdom; - this.record = record; - } - - public PDOMLanguage(PDOM pdom, String name, int id, int next) throws CoreException { - this.pdom = pdom; - Database db = pdom.getDB(); - record = db.malloc(RECORD_SIZE); - db.putInt(record + NEXT, next); - db.putChar(record + ID, (char)id); - db.putInt(record + NAME, db.newString(name).getRecord()); - } - - public int getRecord() { - return record; - } - - public int getId() throws CoreException { - return pdom.getDB().getChar(record + ID); - } - - public IString getName() throws CoreException { - Database db = pdom.getDB(); - int rec = db.getInt(record + NAME); - return db.getString(rec); - } - - public PDOMLanguage getNext() throws CoreException { - int nextrec = pdom.getDB().getInt(record + NEXT); - return nextrec != 0 ? new PDOMLanguage(pdom, nextrec) : null; - } - - public boolean equals(String id) throws CoreException { - return getName().equals(id); - } - -} diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/WritablePDOM.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/WritablePDOM.java index 7452c1372df..40d22f4d3ae 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/WritablePDOM.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/WritablePDOM.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2008 Wind River Systems, Inc. and others. + * Copyright (c) 2006, 2009 Wind River Systems, Inc. and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -121,7 +121,7 @@ public class WritablePDOM extends PDOM implements IWritableIndexFragment { return 0; } public boolean visit(int record) throws CoreException { - PDOMFile file = new PDOMFile(WritablePDOM.this, record); + PDOMFile file = PDOMFile.recreateFile(WritablePDOM.this, record); pdomfiles.add(file); return true; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/PDOMNodeLinkedList.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/PDOMNodeLinkedList.java index 5e7fce6e5b1..fa4d75cde22 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/PDOMNodeLinkedList.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/PDOMNodeLinkedList.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2005, 2007 QNX Software Systems and others. + * Copyright (c) 2005, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -14,7 +14,6 @@ package org.eclipse.cdt.internal.core.pdom.db; import org.eclipse.cdt.core.dom.IPDOMVisitor; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; import org.eclipse.core.runtime.CoreException; @@ -25,7 +24,6 @@ import org.eclipse.core.runtime.CoreException; * */ public class PDOMNodeLinkedList { - private PDOM pdom; private int offset; private PDOMLinkage linkage; private boolean allowsNull; @@ -33,8 +31,7 @@ public class PDOMNodeLinkedList { private static final int FIRST_MEMBER = 0; protected static final int RECORD_SIZE = 4; - public PDOMNodeLinkedList(PDOM pdom, int offset, PDOMLinkage linkage, boolean allowsNulls) { - this.pdom = pdom; + public PDOMNodeLinkedList(PDOMLinkage linkage, int offset, boolean allowsNulls) { this.offset = offset; this.linkage = linkage; this.allowsNull = allowsNulls; @@ -43,12 +40,11 @@ public class PDOMNodeLinkedList { /** * Creates an object representing a linked list at the specified offset of the specified pdom. * The linked list created may not hold null items - * @param pdom - * @param offset * @param linkage + * @param offset */ - public PDOMNodeLinkedList(PDOM pdom, int offset, PDOMLinkage linkage) { - this(pdom, offset, linkage, false); + public PDOMNodeLinkedList(PDOMLinkage linkage, int offset) { + this(linkage, offset, false); } protected int getRecordSize() { @@ -56,7 +52,7 @@ public class PDOMNodeLinkedList { } public void accept(IPDOMVisitor visitor) throws CoreException { - Database db = pdom.getDB(); + Database db = linkage.getDB(); int firstItem = db.getInt(offset + FIRST_MEMBER); if (firstItem == 0) return; @@ -81,7 +77,7 @@ public class PDOMNodeLinkedList { } private ListItem getFirstMemberItem() throws CoreException { - Database db = pdom.getDB(); + Database db = linkage.getDB(); int item = db.getInt(offset + FIRST_MEMBER); return item != 0 ? new ListItem(db, item) : null; } @@ -93,7 +89,7 @@ public class PDOMNodeLinkedList { * @return The node at position {@code pos}, or {@code null} if no such node exists. */ public PDOMNode getNodeAt(int pos) throws CoreException { - Database db = pdom.getDB(); + Database db = linkage.getDB(); int firstItem = db.getInt(offset + FIRST_MEMBER); if (firstItem == 0) { return null; @@ -120,7 +116,7 @@ public class PDOMNodeLinkedList { } protected void addMember(int record) throws CoreException { - Database db = pdom.getDB(); + Database db = linkage.getDB(); ListItem firstMember = getFirstMemberItem(); if (firstMember == null) { firstMember = new ListItem(db); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/FindBinding.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/FindBinding.java index 3ca400531f4..b845f5d6a29 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/FindBinding.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/FindBinding.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2008 Symbian Software Systems and others. + * Copyright (c) 2006, 2009 Symbian Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -13,8 +13,8 @@ package org.eclipse.cdt.internal.core.pdom.dom; import org.eclipse.cdt.core.dom.IPDOMNode; import org.eclipse.cdt.core.dom.IPDOMVisitor; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.db.BTree; +import org.eclipse.cdt.internal.core.pdom.db.Database; import org.eclipse.cdt.internal.core.pdom.db.IBTreeComparator; import org.eclipse.cdt.internal.core.pdom.db.IBTreeVisitor; import org.eclipse.cdt.internal.core.pdom.db.IString; @@ -26,22 +26,24 @@ import org.eclipse.core.runtime.OperationCanceledException; */ public class FindBinding { public static class DefaultBindingBTreeComparator implements IBTreeComparator { - protected PDOM pdom; + protected final PDOMLinkage linkage; + protected final Database database; - public DefaultBindingBTreeComparator(PDOM pdom) { - this.pdom = pdom; + public DefaultBindingBTreeComparator(PDOMLinkage linkage) { + this.linkage = linkage; + this.database= linkage.getDB(); } public int compare(int record1, int record2) throws CoreException { - IString nm1 = PDOMNamedNode.getDBName(pdom, record1); - IString nm2 = PDOMNamedNode.getDBName(pdom, record2); + IString nm1 = PDOMNamedNode.getDBName(database, record1); + IString nm2 = PDOMNamedNode.getDBName(database, record2); int cmp= nm1.compareCompatibleWithIgnoreCase(nm2); if (cmp == 0) { - int t1= PDOMBinding.getLocalToFileRec(pdom, record1); - int t2= PDOMBinding.getLocalToFileRec(pdom, record2); + int t1= PDOMBinding.getLocalToFileRec(database, record1); + int t2= PDOMBinding.getLocalToFileRec(database, record2); if (t1 == t2) { - t1 = PDOMNode.getNodeType(pdom, record1); - t2 = PDOMNode.getNodeType(pdom, record2); + t1 = PDOMNode.getNodeType(database, record1); + t2 = PDOMNode.getNodeType(database, record2); } cmp= t1 < t2 ? -1 : (t1 > t2 ? 1 : 0); } @@ -50,14 +52,14 @@ public class FindBinding { } public static class DefaultFindBindingVisitor implements IBTreeVisitor, IPDOMVisitor { - protected final PDOM fPdom; + protected final PDOMLinkage fLinkage; private final char[] fName; private final int[] fConstants; private final int fLocalToFile; protected PDOMBinding fResult; - protected DefaultFindBindingVisitor(PDOM pdom, char[] name, int[] constants, int localToFile) { - fPdom = pdom; + protected DefaultFindBindingVisitor(PDOMLinkage linkage, char[] name, int[] constants, int localToFile) { + fLinkage = linkage; fName = name; fConstants = constants; fLocalToFile= localToFile; @@ -65,10 +67,11 @@ public class FindBinding { // IBTreeVisitor public int compare(int record) throws CoreException { - IString nm1 = PDOMNamedNode.getDBName(fPdom, record); + final Database db = fLinkage.getDB(); + IString nm1 = PDOMNamedNode.getDBName(db, record); int cmp= nm1.compareCompatibleWithIgnoreCase(fName); if (cmp == 0) { - int t1= PDOMBinding.getLocalToFileRec(fPdom, record); + int t1= PDOMBinding.getLocalToFileRec(db, record); int t2= fLocalToFile; cmp= t1 < t2 ? -1 : (t1 > t2 ? 1 : 0); } @@ -77,7 +80,7 @@ public class FindBinding { // IBTreeVisitor public boolean visit(int record) throws CoreException { - final PDOMNamedNode nnode = (PDOMNamedNode) PDOMNode.getLinkage(fPdom, record).getNode(record); + final PDOMNamedNode nnode = (PDOMNamedNode) fLinkage.getNode(record); if (nnode instanceof PDOMBinding) { final PDOMBinding binding = (PDOMBinding) nnode; if (matches(binding)) { @@ -120,11 +123,8 @@ public class FindBinding { } public static class NestedBindingsBTreeComparator extends DefaultBindingBTreeComparator { - protected PDOMLinkage linkage; - public NestedBindingsBTreeComparator(PDOMLinkage linkage) { - super(linkage.pdom); - this.linkage= linkage; + super(linkage); } @Override @@ -142,30 +142,29 @@ public class FindBinding { } public static class MacroBTreeComparator implements IBTreeComparator { - final private PDOM fPDom; + final private Database db; - public MacroBTreeComparator(PDOM pdom) { - fPDom= pdom; + public MacroBTreeComparator(Database database) { + db= database; } public int compare(int record1, int record2) throws CoreException { - return compare(PDOMNamedNode.getDBName(fPDom, record1), PDOMNamedNode.getDBName(fPDom, record2)); // compare names + return compare(PDOMNamedNode.getDBName(db, record1), PDOMNamedNode.getDBName(db, record2)); // compare names } private int compare(IString nameInDB, IString nameInDB2) throws CoreException { return nameInDB.compareCompatibleWithIgnoreCase(nameInDB2); } } - public static PDOMBinding findBinding(BTree btree, final PDOM pdom, final char[] name, final int[] constants, - final int localToFileRec) throws CoreException { - final DefaultFindBindingVisitor visitor = new DefaultFindBindingVisitor(pdom, name, constants, localToFileRec); + public static PDOMBinding findBinding(BTree btree, final PDOMLinkage linkage, final char[] name, + final int[] constants, final int localToFileRec) throws CoreException { + final DefaultFindBindingVisitor visitor = new DefaultFindBindingVisitor(linkage, name, constants, localToFileRec); btree.accept(visitor); return visitor.getResult(); } - - public static PDOMBinding findBinding(IPDOMNode node, final PDOM pdom, final char[] name, final int[] constants, + public static PDOMBinding findBinding(IPDOMNode node, final PDOMLinkage linkage, final char[] name, final int[] constants, int localToFileRec) throws CoreException { - final DefaultFindBindingVisitor visitor = new DefaultFindBindingVisitor(pdom, name, constants, localToFileRec); + final DefaultFindBindingVisitor visitor = new DefaultFindBindingVisitor(linkage, name, constants, localToFileRec); try { node.accept(visitor); } catch (OperationCanceledException e) { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/MacroContainerCollector.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/MacroContainerCollector.java index 0507df21f9b..23681cb9685 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/MacroContainerCollector.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/MacroContainerCollector.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2008 Wind River Systems, Inc. and others. + * Copyright (c) 2007, 2009 Wind River Systems, Inc. and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -13,7 +13,6 @@ package org.eclipse.cdt.internal.core.pdom.dom; import java.util.ArrayList; import java.util.List; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.db.IBTreeVisitor; import org.eclipse.cdt.internal.core.pdom.db.IString; import org.eclipse.core.runtime.CoreException; @@ -25,7 +24,7 @@ import org.eclipse.core.runtime.OperationCanceledException; * @since 4.0.2 */ public final class MacroContainerCollector implements IBTreeVisitor { - private final PDOM pdom; + private final PDOMLinkage linkage; private final char[] name; private final boolean prefixLookup; private final boolean caseSensitive; @@ -39,9 +38,9 @@ public final class MacroContainerCollector implements IBTreeVisitor { * Collects all nodes with given name, passing the filter. If prefixLookup is set to * true a binding is considered if its name starts with the given prefix. */ - public MacroContainerCollector(PDOM pdom, char[] name, boolean prefixLookup, boolean caseSensitive) { + public MacroContainerCollector(PDOMLinkage linkage, char[] name, boolean prefixLookup, boolean caseSensitive) { this.name= name; - this.pdom= pdom; + this.linkage= linkage; this.prefixLookup= prefixLookup; this.caseSensitive= caseSensitive; } @@ -57,7 +56,7 @@ public final class MacroContainerCollector implements IBTreeVisitor { final public int compare(int record) throws CoreException { if (monitor != null) checkCancelled(); - IString rhsName= PDOMNamedNode.getDBName(pdom, record); + IString rhsName= PDOMNamedNode.getDBName(linkage.getDB(), record); return compare(rhsName); } @@ -87,7 +86,7 @@ public final class MacroContainerCollector implements IBTreeVisitor { if (record == 0) return true; - macros.add(new PDOMMacroContainer(pdom, record)); + macros.add(new PDOMMacroContainer(linkage, record)); return true; // look for more } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/MacroContainerFinder.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/MacroContainerFinder.java index 392a14033aa..a30de333710 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/MacroContainerFinder.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/MacroContainerFinder.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008 Wind River Systems, Inc. and others. + * Copyright (c) 2008, 2009 Wind River Systems, Inc. and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -10,7 +10,6 @@ *******************************************************************************/ package org.eclipse.cdt.internal.core.pdom.dom; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.db.IBTreeVisitor; import org.eclipse.cdt.internal.core.pdom.db.IString; import org.eclipse.core.runtime.CoreException; @@ -19,7 +18,7 @@ import org.eclipse.core.runtime.CoreException; * Visitor to find a macro container in a BTree. */ public final class MacroContainerFinder implements IBTreeVisitor { - private final PDOM fPdom; + private final PDOMLinkage fLinkage; private final char[] fName; private PDOMMacroContainer fMacroContainer; @@ -27,13 +26,13 @@ public final class MacroContainerFinder implements IBTreeVisitor { * Collects all nodes with given name, passing the filter. If prefixLookup is set to * true a binding is considered if its name starts with the given prefix. */ - public MacroContainerFinder(PDOM pdom, char[] name) { + public MacroContainerFinder(PDOMLinkage linkage, char[] name) { fName= name; - fPdom= pdom; + fLinkage= linkage; } final public int compare(int record) throws CoreException { - IString name= PDOMNamedNode.getDBName(fPdom, record); + IString name= PDOMNamedNode.getDBName(fLinkage.getDB(), record); return compare(name); } @@ -44,7 +43,7 @@ public final class MacroContainerFinder implements IBTreeVisitor { final public boolean visit(int record) throws CoreException { if (record == 0) return true; - fMacroContainer= new PDOMMacroContainer(fPdom, record); + fMacroContainer= new PDOMMacroContainer(fLinkage, record); return false; // we are done. } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/MacroContainerPatternCollector.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/MacroContainerPatternCollector.java index a5c977b3843..e71747da257 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/MacroContainerPatternCollector.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/MacroContainerPatternCollector.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2008 Wind River Systems, Inc. and others. + * Copyright (c) 2007, 2009 Wind River Systems, Inc. and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -14,7 +14,6 @@ import java.util.ArrayList; import java.util.List; import java.util.regex.Pattern; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.db.IBTreeVisitor; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; @@ -25,7 +24,7 @@ import org.eclipse.core.runtime.OperationCanceledException; * @since 4.0.2 */ public final class MacroContainerPatternCollector implements IBTreeVisitor { - private final PDOM fPDOM; + private final PDOMLinkage fLinkage; private final List macros = new ArrayList(); private final Pattern fPattern; @@ -33,8 +32,8 @@ public final class MacroContainerPatternCollector implements IBTreeVisitor { private int fMonitorCheckCounter= 0; - public MacroContainerPatternCollector(PDOM pdom, Pattern pattern, IProgressMonitor monitor) { - fPDOM= pdom; + public MacroContainerPatternCollector(PDOMLinkage linkage, Pattern pattern, IProgressMonitor monitor) { + fLinkage= linkage; fPattern= pattern; fMonitor= monitor; } @@ -50,9 +49,9 @@ public final class MacroContainerPatternCollector implements IBTreeVisitor { if (record == 0) return true; - String name= PDOMNamedNode.getDBName(fPDOM, record).getString(); + String name= PDOMNamedNode.getDBName(fLinkage.getDB(), record).getString(); if (fPattern.matcher(name).matches()) { - macros.add(new PDOMMacroContainer(fPDOM, record)); + macros.add(new PDOMMacroContainer(fLinkage, record)); } return true; // look for more } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/NamedNodeCollector.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/NamedNodeCollector.java index 053c6de6b7f..a10aad42653 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/NamedNodeCollector.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/NamedNodeCollector.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2008 Wind River Systems, Inc. and others. + * Copyright (c) 2007, 2009 Wind River Systems, Inc. and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -64,7 +64,7 @@ public class NamedNodeCollector implements IBTreeVisitor, IPDOMVisitor { final public int compare(int record) throws CoreException { if (monitor != null) checkCancelled(); - IString rhsName= PDOMNamedNode.getDBName(linkage.getPDOM(), record); + IString rhsName= PDOMNamedNode.getDBName(linkage.getDB(), record); return compare(rhsName); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMArrayType.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMArrayType.java index eab4f3c5b9c..ddb7b932fdd 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMArrayType.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMArrayType.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2008 Wind River Systems, Inc. and others. + * Copyright (c) 2006, 2009 Wind River Systems, Inc. and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -21,8 +21,6 @@ import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer; import org.eclipse.cdt.internal.core.index.ArrayTypeClone; import org.eclipse.cdt.internal.core.index.IIndexBindingConstants; import org.eclipse.cdt.internal.core.index.IIndexType; -import org.eclipse.cdt.internal.core.pdom.PDOM; -import org.eclipse.cdt.internal.core.pdom.db.Database; import org.eclipse.core.runtime.CoreException; public class PDOMArrayType extends PDOMNode implements IIndexType, IArrayType, ITypeContainer { @@ -31,19 +29,17 @@ public class PDOMArrayType extends PDOMNode implements IIndexType, IArrayType, I @SuppressWarnings("hiding") private static final int RECORD_SIZE= TYPE+4; - public PDOMArrayType(PDOM pdom, int record) { - super(pdom, record); + public PDOMArrayType(PDOMLinkage linkage, int record) { + super(linkage, record); } - public PDOMArrayType(PDOM pdom, PDOMNode parent, IArrayType type) throws CoreException { - super(pdom, parent); - Database db = pdom.getDB(); - + public PDOMArrayType(PDOMLinkage linkage, PDOMNode parent, IArrayType type) throws CoreException { + super(linkage, parent); try { - PDOMNode targetTypeNode = getLinkageImpl().addType(this, type.getType()); + PDOMNode targetTypeNode = getLinkage().addType(this, type.getType()); if (targetTypeNode != null) { int typeRec = targetTypeNode.getRecord(); - db.putInt(record + TYPE, typeRec); + getDB().putInt(record + TYPE, typeRec); } } catch (DOMException e) { CCorePlugin.log(e); @@ -66,7 +62,7 @@ public class PDOMArrayType extends PDOMNode implements IIndexType, IArrayType, I public IType getType() { try { - PDOMNode node = getLinkageImpl().getNode(pdom.getDB().getInt(record + TYPE)); + PDOMNode node = getLinkage().getNode(getDB().getInt(record + TYPE)); return node instanceof IType ? (IType)node : null; } catch (CoreException e) { CCorePlugin.log(e); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMBinding.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMBinding.java index 7d0b6afc2d6..e0a9af4707b 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMBinding.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMBinding.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2005, 2008 QNX Software Systems and others. + * Copyright (c) 2005, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -48,12 +48,12 @@ public abstract class PDOMBinding extends PDOMNamedNode implements IPDOMBinding @SuppressWarnings("hiding") protected static final int RECORD_SIZE = PDOMNamedNode.RECORD_SIZE + 16; - protected PDOMBinding(PDOM pdom, PDOMNode parent, char[] name) throws CoreException { - super(pdom, parent, name); + protected PDOMBinding(PDOMLinkage linkage, PDOMNode parent, char[] name) throws CoreException { + super(linkage, parent, name); } - public PDOMBinding(PDOM pdom, int record) { - super(pdom, record); + public PDOMBinding(PDOMLinkage linkage, int record) { + super(linkage, record); } @SuppressWarnings("unchecked") @@ -81,13 +81,8 @@ public abstract class PDOMBinding extends PDOMNamedNode implements IPDOMBinding && db.getInt(record + FIRST_REF_OFFSET) == 0; } - @Override - public int getRecord() { - return record; - } - public final boolean hasDeclaration() throws CoreException { - Database db = pdom.getDB(); + Database db = getDB(); return db.getInt(record + FIRST_DECL_OFFSET) != 0 || db.getInt(record + FIRST_DEF_OFFSET) != 0; } @@ -120,50 +115,50 @@ public abstract class PDOMBinding extends PDOMNamedNode implements IPDOMBinding } public PDOMName getFirstDeclaration() throws CoreException { - int namerec = pdom.getDB().getInt(record + FIRST_DECL_OFFSET); - return namerec != 0 ? new PDOMName(pdom, namerec) : null; + int namerec = getDB().getInt(record + FIRST_DECL_OFFSET); + return namerec != 0 ? new PDOMName(getLinkage(), namerec) : null; } public void setFirstDeclaration(PDOMName name) throws CoreException { int namerec = name != null ? name.getRecord() : 0; - pdom.getDB().putInt(record + FIRST_DECL_OFFSET, namerec); + getDB().putInt(record + FIRST_DECL_OFFSET, namerec); } public PDOMName getFirstDefinition() throws CoreException { - int namerec = pdom.getDB().getInt(record + FIRST_DEF_OFFSET); - return namerec != 0 ? new PDOMName(pdom, namerec) : null; + int namerec = getDB().getInt(record + FIRST_DEF_OFFSET); + return namerec != 0 ? new PDOMName(getLinkage(), namerec) : null; } public void setFirstDefinition(PDOMName name) throws CoreException { int namerec = name != null ? name.getRecord() : 0; - pdom.getDB().putInt(record + FIRST_DEF_OFFSET, namerec); + getDB().putInt(record + FIRST_DEF_OFFSET, namerec); } public PDOMName getFirstReference() throws CoreException { - int namerec = pdom.getDB().getInt(record + FIRST_REF_OFFSET); - return namerec != 0 ? new PDOMName(pdom, namerec) : null; + int namerec = getDB().getInt(record + FIRST_REF_OFFSET); + return namerec != 0 ? new PDOMName(getLinkage(), namerec) : null; } public void setFirstReference(PDOMName name) throws CoreException { int namerec = name != null ? name.getRecord() : 0; - pdom.getDB().putInt(record + FIRST_REF_OFFSET, namerec); + getDB().putInt(record + FIRST_REF_OFFSET, namerec); } public final PDOMFile getLocalToFile() throws CoreException { - final int filerec = getLocalToFileRec(pdom, record); - return filerec == 0 ? null : new PDOMFile(pdom, filerec); + final int filerec = getLocalToFileRec(getDB(), record); + return filerec == 0 ? null : new PDOMFile(getLinkage(), filerec); } public final int getLocalToFileRec() throws CoreException { - return pdom.getDB().getInt(record + LOCAL_TO_FILE); + return getLocalToFileRec(getDB(), record); } - public static int getLocalToFileRec(PDOM pdom, int record) throws CoreException { - return pdom.getDB().getInt(record + LOCAL_TO_FILE); + public static int getLocalToFileRec(Database db, int record) throws CoreException { + return db.getInt(record + LOCAL_TO_FILE); } public final void setLocalToFileRec(int rec) throws CoreException { - pdom.getDB().putInt(record + LOCAL_TO_FILE, rec); + getDB().putInt(record + LOCAL_TO_FILE, rec); } public String getName() { @@ -218,7 +213,7 @@ public abstract class PDOMBinding extends PDOMNamedNode implements IPDOMBinding } public IIndexFragment getFragment() { - return pdom; + return getPDOM(); } @Override @@ -230,7 +225,7 @@ public abstract class PDOMBinding extends PDOMNamedNode implements IPDOMBinding @Override public String toString() { try { - return getName() + " " + getConstantNameForValue(getLinkageImpl(), getNodeType()); //$NON-NLS-1$ + return getName() + " " + getConstantNameForValue(getLinkage(), getNodeType()); //$NON-NLS-1$ } catch (CoreException ce) { return getName() + " " + getNodeType(); //$NON-NLS-1$ } @@ -301,7 +296,7 @@ public abstract class PDOMBinding extends PDOMNamedNode implements IPDOMBinding } final public boolean isFileLocal() throws CoreException { - return pdom.getDB().getInt(record + LOCAL_TO_FILE) != 0; + return getDB().getInt(record + LOCAL_TO_FILE) != 0; } public boolean hasDefinition() throws CoreException { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMFile.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMFile.java index d14ae36435f..8058144a1aa 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMFile.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMFile.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2005, 2008 QNX Software Systems and others. + * Copyright (c) 2005, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -21,7 +21,6 @@ import java.util.Iterator; import java.util.List; import org.eclipse.cdt.core.CCorePlugin; -import org.eclipse.cdt.core.dom.ILinkage; import org.eclipse.cdt.core.dom.IPDOMNode; import org.eclipse.cdt.core.dom.ast.IASTName; import org.eclipse.cdt.core.dom.ast.IASTPreprocessorMacroDefinition; @@ -36,7 +35,6 @@ import org.eclipse.cdt.core.index.IIndexInclude; import org.eclipse.cdt.core.index.IIndexLocationConverter; import org.eclipse.cdt.core.index.IIndexMacro; import org.eclipse.cdt.core.index.IIndexName; -import org.eclipse.cdt.internal.core.dom.Linkage; import org.eclipse.cdt.internal.core.index.IIndexFragment; import org.eclipse.cdt.internal.core.index.IIndexFragmentFile; import org.eclipse.cdt.internal.core.index.IIndexFragmentName; @@ -59,10 +57,9 @@ import org.eclipse.core.runtime.Status; * @author Doug Schaefer */ public class PDOMFile implements IIndexFragmentFile { - private final PDOM pdom; + private final PDOMLinkage fLinkage; private final int record; private IIndexFileLocation location; - private PDOMLinkage fLinkage; private static final int FIRST_NAME = 0; private static final int FIRST_INCLUDE = 4; @@ -95,17 +92,17 @@ public class PDOMFile implements IIndexFragmentFile { } } - public PDOMFile(PDOM pdom, int record) { - this.pdom = pdom; + public PDOMFile(PDOMLinkage linkage, int record) { + fLinkage = linkage; this.record = record; } - public PDOMFile(PDOM pdom, IIndexFileLocation location, int linkageID) throws CoreException { - this.pdom = pdom; + public PDOMFile(PDOMLinkage linkage, IIndexFileLocation location, int linkageID) throws CoreException { + fLinkage = linkage; this.location= location; - Database db = pdom.getDB(); + Database db = fLinkage.getDB(); record = db.malloc(RECORD_SIZE); - String locationString = pdom.getLocationConverter().toInternalFormat(location); + String locationString = fLinkage.getPDOM().getLocationConverter().toInternalFormat(location); if (locationString==null) throw new CoreException(CCorePlugin.createStatus(Messages.getString("PDOMFile.toInternalProblem")+location.getURI())); //$NON-NLS-1$ IString locationDBString = db.newString(locationString); @@ -128,14 +125,14 @@ public class PDOMFile implements IIndexFragmentFile { return true; if (obj instanceof PDOMFile) { PDOMFile other = (PDOMFile)obj; - return pdom.equals(other.pdom) && record == other.record; + return fLinkage.getPDOM().equals(other.getLinkage().getPDOM()) && record == other.record; } return false; } @Override public final int hashCode() { - return System.identityHashCode(pdom) + 41*record; + return System.identityHashCode(fLinkage.getPDOM()) + 41*record; } /** @@ -146,7 +143,7 @@ public class PDOMFile implements IIndexFragmentFile { * @throws CoreException */ public void setInternalLocation(String internalLocation) throws CoreException { - Database db = pdom.getDB(); + Database db = fLinkage.getDB(); int oldRecord = db.getInt(record + LOCATION_REPRESENTATION); db.free(oldRecord); db.putInt(record + LOCATION_REPRESENTATION, db.newString(internalLocation).getRecord()); @@ -154,63 +151,63 @@ public class PDOMFile implements IIndexFragmentFile { } public int getLinkageID() throws CoreException { - Database db = pdom.getDB(); + Database db = fLinkage.getDB(); return db.getInt(record + LINKAGE_ID); } public long getTimestamp() throws CoreException { - Database db = pdom.getDB(); + Database db = fLinkage.getDB(); return db.getLong(record + TIME_STAMP); } public void setTimestamp(long timestamp) throws CoreException { - Database db= pdom.getDB(); + Database db= fLinkage.getDB(); db.putLong(record + TIME_STAMP, timestamp); } public int getScannerConfigurationHashcode() throws CoreException { - Database db = pdom.getDB(); + Database db = fLinkage.getDB(); return db.getInt(record + SCANNER_CONFIG_HASH); } public void setScannerConfigurationHashcode(int hashcode) throws CoreException { - Database db= pdom.getDB(); + Database db= fLinkage.getDB(); db.putInt(record + SCANNER_CONFIG_HASH, hashcode); } private PDOMName getFirstName() throws CoreException { - int namerec = pdom.getDB().getInt(record + FIRST_NAME); - return namerec != 0 ? new PDOMName(pdom, namerec) : null; + int namerec = fLinkage.getDB().getInt(record + FIRST_NAME); + return namerec != 0 ? new PDOMName(fLinkage, namerec) : null; } private void setFirstName(PDOMName firstName) throws CoreException { int namerec = firstName != null ? firstName.getRecord() : 0; - pdom.getDB().putInt(record + FIRST_NAME, namerec); + fLinkage.getDB().putInt(record + FIRST_NAME, namerec); } private PDOMMacroReferenceName getFirstMacroReference() throws CoreException { - int namerec = pdom.getDB().getInt(record + FIRST_MACRO_REFERENCE); - return namerec != 0 ? new PDOMMacroReferenceName(pdom, namerec) : null; + int namerec = fLinkage.getDB().getInt(record + FIRST_MACRO_REFERENCE); + return namerec != 0 ? new PDOMMacroReferenceName(fLinkage, namerec) : null; } private void setFirstMacroReference(PDOMMacroReferenceName firstName) throws CoreException { int namerec = firstName != null ? firstName.getRecord() : 0; - pdom.getDB().putInt(record + FIRST_MACRO_REFERENCE, namerec); + fLinkage.getDB().putInt(record + FIRST_MACRO_REFERENCE, namerec); } public PDOMInclude getFirstInclude() throws CoreException { - int increc = pdom.getDB().getInt(record + FIRST_INCLUDE); - return increc != 0 ? new PDOMInclude(pdom, increc) : null; + int increc = fLinkage.getDB().getInt(record + FIRST_INCLUDE); + return increc != 0 ? new PDOMInclude(fLinkage, increc) : null; } public void setFirstInclude(PDOMInclude include) throws CoreException { int rec = include != null ? include.getRecord() : 0; - pdom.getDB().putInt(record + FIRST_INCLUDE, rec); + fLinkage.getDB().putInt(record + FIRST_INCLUDE, rec); } public PDOMInclude getFirstIncludedBy() throws CoreException { - int rec = pdom.getDB().getInt(record + FIRST_INCLUDED_BY); - return rec != 0 ? new PDOMInclude(pdom, rec) : null; + int rec = fLinkage.getDB().getInt(record + FIRST_INCLUDED_BY); + return rec != 0 ? new PDOMInclude(fLinkage, rec) : null; } public IIndexInclude getParsedInContext() throws CoreException { @@ -219,17 +216,17 @@ public class PDOMFile implements IIndexFragmentFile { public void setFirstIncludedBy(PDOMInclude includedBy) throws CoreException { int rec = includedBy != null ? includedBy.getRecord() : 0; - pdom.getDB().putInt(record + FIRST_INCLUDED_BY, rec); + fLinkage.getDB().putInt(record + FIRST_INCLUDED_BY, rec); } public PDOMMacro getFirstMacro() throws CoreException { - int rec = pdom.getDB().getInt(record + FIRST_MACRO); - return rec != 0 ? new PDOMMacro(pdom, rec) : null; + int rec = fLinkage.getDB().getInt(record + FIRST_MACRO); + return rec != 0 ? new PDOMMacro(fLinkage, rec) : null; } public void setFirstMacro(PDOMMacro macro) throws CoreException { int rec = macro != null ? macro.getRecord() : 0; - pdom.getDB().putInt(record + FIRST_MACRO, rec); + fLinkage.getDB().putInt(record + FIRST_MACRO, rec); } public void addMacros(IASTPreprocessorStatement[] macros) throws CoreException { @@ -242,11 +239,11 @@ public class PDOMFile implements IIndexFragmentFile { if (stmt instanceof IASTPreprocessorMacroDefinition) { IASTPreprocessorMacroDefinition macro= (IASTPreprocessorMacroDefinition) stmt; PDOMMacroContainer container= linkage.getMacroContainer(macro.getName().getSimpleID()); - pdomMacro = new PDOMMacro(pdom, container, macro, this); + pdomMacro = new PDOMMacro(fLinkage, container, macro, this); } else if (stmt instanceof IASTPreprocessorUndefStatement) { IASTPreprocessorUndefStatement undef= (IASTPreprocessorUndefStatement) stmt; PDOMMacroContainer container= linkage.getMacroContainer(undef.getMacroName().getSimpleID()); - pdomMacro = new PDOMMacro(pdom, container, undef, this); + pdomMacro = new PDOMMacro(fLinkage, container, undef, this); } if (pdomMacro != null) { if (lastMacro == null) { @@ -259,14 +256,7 @@ public class PDOMFile implements IIndexFragmentFile { } } - PDOMLinkage getLinkage() throws CoreException { - if (fLinkage == null) { - final String linkageName = Linkage.getLinkageName(getLinkageID()); - fLinkage= pdom.createLinkage(linkageName); - if (fLinkage == null) { - throw new CoreException(createStatus("Unsupported linkage: " + linkageName)); //$NON-NLS-1$ - } - } + final PDOMLinkage getLinkage() { return fLinkage; } @@ -315,7 +305,7 @@ public class PDOMFile implements IIndexFragmentFile { } PDOMBinding pdomBinding = linkage.addBinding(name); if (pdomBinding != null) { - final PDOMName result= new PDOMName(pdom, name, this, pdomBinding, caller); + final PDOMName result= new PDOMName(fLinkage, name, this, pdomBinding, caller); linkage.onCreateName(this, name, result); return result; } @@ -327,7 +317,7 @@ public class PDOMFile implements IIndexFragmentFile { private IIndexFragmentName createPDOMMacroReferenceName(PDOMLinkage linkage, IASTName name) throws CoreException { PDOMMacroContainer cont= linkage.getMacroContainer(name.getSimpleID()); - return new PDOMMacroReferenceName(pdom, name, this, cont); + return new PDOMMacroReferenceName(fLinkage, name, this, cont); } public void clear(Collection contextsRemoved) throws CoreException { @@ -397,7 +387,7 @@ public class PDOMFile implements IIndexFragmentFile { for (final IncludeInformation info : includeInfos) { final PDOMFile targetFile= (PDOMFile) info.fTargetFile; - PDOMInclude pdomInclude = new PDOMInclude(pdom, info.fStatement, this, targetFile); + PDOMInclude pdomInclude = new PDOMInclude(fLinkage, info.fStatement, this, targetFile); if (targetFile != null) { assert targetFile.getIndexFragment() instanceof IWritableIndexFragment; targetFile.addIncludedBy(pdomInclude, info.fIsContext); @@ -453,7 +443,7 @@ public class PDOMFile implements IIndexFragmentFile { } public IIndexFragment getIndexFragment() { - return pdom; + return fLinkage.getPDOM(); } public IIndexName[] findNames(int offset, int length) throws CoreException { @@ -497,16 +487,19 @@ public class PDOMFile implements IIndexFragmentFile { return result.toArray(new IIndexName[result.size()]); } - public static PDOMFile findFile(PDOM pdom, BTree btree, IIndexFileLocation location, int linkageID, IIndexLocationConverter strategy) + public static PDOMFile findFile(PDOMLinkage linkage, BTree btree, IIndexFileLocation location, IIndexLocationConverter strategy) throws CoreException { String internalRepresentation= strategy.toInternalFormat(location); int record= 0; if (internalRepresentation != null) { - Finder finder = new Finder(pdom.getDB(), internalRepresentation, linkageID); + Finder finder = new Finder(linkage.getDB(), internalRepresentation, linkage.getLinkageID()); btree.accept(finder); record= finder.getRecord(); } - return record != 0 ? new PDOMFile(pdom, record) : null; + if (record != 0) { + return new PDOMFile(linkage, record); + } + return null; } public static IIndexFragmentFile[] findFiles(PDOM pdom, BTree btree, IIndexFileLocation location, IIndexLocationConverter strategy) @@ -518,13 +511,23 @@ public class PDOMFile implements IIndexFragmentFile { int[] records= finder.getRecords(); PDOMFile[] result= new PDOMFile[records.length]; for (int i = 0; i < result.length; i++) { - result[i]= new PDOMFile(pdom, records[i]); + result[i] = recreateFile(pdom, records[i]); } return result; } return new IIndexFragmentFile[0]; } + public static PDOMFile recreateFile(PDOM pdom, final int record) throws CoreException { + final Database db= pdom.getDB(); + final int linkageID= db.getInt(record + PDOMFile.LINKAGE_ID); + PDOMLinkage linkage= pdom.getLinkage(linkageID); + if (linkage == null) + throw new CoreException(createStatus("Invalid linkage ID in database")); //$NON-NLS-1$ + PDOMFile file= new PDOMFile(linkage, record); + return file; + } + private static class Finder implements IBTreeVisitor { private static final int[] EMPTY = {}; private final Database db; @@ -586,9 +589,9 @@ public class PDOMFile implements IIndexFragmentFile { public IIndexFileLocation getLocation() throws CoreException { if (location == null) { - Database db = pdom.getDB(); + Database db = fLinkage.getDB(); String raw = db.getString(db.getInt(record + LOCATION_REPRESENTATION)).getString(); - location= pdom.getLocationConverter().fromInternalFormat(raw); + location= fLinkage.getPDOM().getLocationConverter().fromInternalFormat(raw); if (location == null) { URI uri; try { @@ -621,26 +624,22 @@ public class PDOMFile implements IIndexFragmentFile { } public int getFirstUsingDirectiveRec() throws CoreException { - return pdom.getDB().getInt(record + FIRST_USING_DIRECTIVE); + return fLinkage.getDB().getInt(record + FIRST_USING_DIRECTIVE); } public void setFirstUsingDirectiveRec(int rec) throws CoreException { - pdom.getDB().putInt(record + FIRST_USING_DIRECTIVE, rec); + fLinkage.getDB().putInt(record + FIRST_USING_DIRECTIVE, rec); } /* (non-Javadoc) * @see org.eclipse.cdt.core.index.IIndexFile#getUsingDirectives() */ public ICPPUsingDirective[] getUsingDirectives() throws CoreException { - PDOMLinkage linkage= pdom.getLinkage(ILinkage.CPP_LINKAGE_NAME); - if (linkage != null) { - return linkage.getUsingDirectives(this); - } - return ICPPUsingDirective.EMPTY_ARRAY; + return fLinkage.getUsingDirectives(this); } // required because we cannot reference CCorePlugin in order for StandaloneIndexer to work - private IStatus createStatus(String msg) { + private static IStatus createStatus(String msg) { return new Status(IStatus.ERROR, "org.eclipse.cdt.core", IStatus.ERROR, msg, null); //$NON-NLS-1$ } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMInclude.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMInclude.java index 31bf73834a2..3034d9cfd9f 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMInclude.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMInclude.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2007 QNX Software Systems and others. + * Copyright (c) 2006, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -20,7 +20,6 @@ import org.eclipse.cdt.core.index.IIndexFileLocation; import org.eclipse.cdt.internal.core.index.IIndexFragment; import org.eclipse.cdt.internal.core.index.IIndexFragmentFile; import org.eclipse.cdt.internal.core.index.IIndexFragmentInclude; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.db.Database; import org.eclipse.cdt.internal.core.pdom.db.IString; import org.eclipse.core.runtime.CoreException; @@ -46,20 +45,20 @@ public class PDOMInclude implements IIndexFragmentInclude { private static final int FLAG_UNRESOLVED_INCLUDE = 4; private static final int FLAG_RESOLVED_BY_HEURISTICS= 8; - private final PDOM pdom; + private final PDOMLinkage linkage; private final int record; // cached fields private String fName= null; - public PDOMInclude(PDOM pdom, int record) { - this.pdom = pdom; + public PDOMInclude(PDOMLinkage pdom, int record) { + this.linkage = pdom; this.record = record; } - public PDOMInclude(PDOM pdom, IASTPreprocessorIncludeStatement include, PDOMFile containerFile, PDOMFile targetFile) throws CoreException { - this.pdom = pdom; - this.record = pdom.getDB().malloc(RECORD_SIZE); + public PDOMInclude(PDOMLinkage linkage, IASTPreprocessorIncludeStatement include, PDOMFile containerFile, PDOMFile targetFile) throws CoreException { + this.linkage = linkage; + this.record = linkage.getDB().malloc(RECORD_SIZE); IASTName name= include.getName(); IASTFileLocation loc= name.getFileLocation(); // includes generated by -include or -macro don't have a location @@ -102,7 +101,7 @@ public class PDOMInclude implements IIndexFragmentInclude { } // Delete our record - pdom.getDB().free(record); + linkage.getDB().free(record); } private void removeThisFromIncludedByChain() throws CoreException { @@ -121,7 +120,7 @@ public class PDOMInclude implements IIndexFragmentInclude { if (isResolved()) { return null; } - final Database db = pdom.getDB(); + final Database db = linkage.getDB(); return db.getString(db.getInt(record + INCLUDES_FILE_OR_NAME)); } @@ -129,63 +128,63 @@ public class PDOMInclude implements IIndexFragmentInclude { if (!isResolved()) { return null; } - int rec = pdom.getDB().getInt(record + INCLUDES_FILE_OR_NAME); - return rec != 0 ? new PDOMFile(pdom, rec) : null; + int rec = linkage.getDB().getInt(record + INCLUDES_FILE_OR_NAME); + return rec != 0 ? new PDOMFile(linkage, rec) : null; } private void setIncludes(PDOMFile includes, char[] name) throws CoreException { int rec= 0; if (includes == null) { - rec= pdom.getDB().newString(name).getRecord(); + rec= linkage.getDB().newString(name).getRecord(); } else { rec= includes.getRecord(); } - pdom.getDB().putInt(record + INCLUDES_FILE_OR_NAME, rec); + linkage.getDB().putInt(record + INCLUDES_FILE_OR_NAME, rec); } public IIndexFile getIncludedBy() throws CoreException { - int rec = pdom.getDB().getInt(record + INCLUDED_BY); - return rec != 0 ? new PDOMFile(pdom, rec) : null; + int rec = linkage.getDB().getInt(record + INCLUDED_BY); + return rec != 0 ? new PDOMFile(linkage, rec) : null; } private void setIncludedBy(PDOMFile includedBy) throws CoreException { int rec = includedBy != null ? includedBy.getRecord() : 0; - pdom.getDB().putInt(record + INCLUDED_BY, rec); + linkage.getDB().putInt(record + INCLUDED_BY, rec); } public PDOMInclude getNextInIncludes() throws CoreException { - int rec = pdom.getDB().getInt(record + INCLUDES_NEXT); - return rec != 0 ? new PDOMInclude(pdom, rec) : null; + int rec = linkage.getDB().getInt(record + INCLUDES_NEXT); + return rec != 0 ? new PDOMInclude(linkage, rec) : null; } public void setNextInIncludes(PDOMInclude include) throws CoreException { int rec = include != null ? include.getRecord() : 0; - pdom.getDB().putInt(record + INCLUDES_NEXT, rec); + linkage.getDB().putInt(record + INCLUDES_NEXT, rec); } public PDOMInclude getNextInIncludedBy() throws CoreException { - int rec = pdom.getDB().getInt(record + INCLUDED_BY_NEXT); - return rec != 0 ? new PDOMInclude(pdom, rec) : null; + int rec = linkage.getDB().getInt(record + INCLUDED_BY_NEXT); + return rec != 0 ? new PDOMInclude(linkage, rec) : null; } public void setNextInIncludedBy(PDOMInclude include) throws CoreException { int rec = include != null ? include.getRecord() : 0; - pdom.getDB().putInt(record + INCLUDED_BY_NEXT, rec); + linkage.getDB().putInt(record + INCLUDED_BY_NEXT, rec); } public PDOMInclude getPrevInIncludedBy() throws CoreException { int rec = getPrevInIncludedByRecord(); - return rec != 0 ? new PDOMInclude(pdom, rec) : null; + return rec != 0 ? new PDOMInclude(linkage, rec) : null; } int getPrevInIncludedByRecord() throws CoreException { - return pdom.getDB().getInt(record + INCLUDED_BY_PREV); + return linkage.getDB().getInt(record + INCLUDED_BY_PREV); } public void setPrevInIncludedBy(PDOMInclude include) throws CoreException { int rec = include != null ? include.getRecord() : 0; - pdom.getDB().putInt(record + INCLUDED_BY_PREV, rec); + linkage.getDB().putInt(record + INCLUDED_BY_PREV, rec); } public IIndexFileLocation getIncludedByLocation() throws CoreException { @@ -200,20 +199,20 @@ public class PDOMInclude implements IIndexFragmentInclude { } public IIndexFragment getFragment() { - return pdom; + return linkage.getPDOM(); } private void setNameOffsetAndLength(int offset, short length) throws CoreException { - pdom.getDB().putInt(record + NODE_OFFSET_OFFSET, offset); - pdom.getDB().putShort(record + NODE_LENGTH_OFFSET, length); + linkage.getDB().putInt(record + NODE_OFFSET_OFFSET, offset); + linkage.getDB().putShort(record + NODE_LENGTH_OFFSET, length); } private void setFlag(byte flag) throws CoreException { - pdom.getDB().putByte(record + FLAG_OFFSET, flag); + linkage.getDB().putByte(record + FLAG_OFFSET, flag); } private int getFlag() throws CoreException { - return pdom.getDB().getByte(record + FLAG_OFFSET); + return linkage.getDB().getByte(record + FLAG_OFFSET); } public boolean isSystemInclude() throws CoreException { @@ -233,11 +232,11 @@ public class PDOMInclude implements IIndexFragmentInclude { } public int getNameOffset() throws CoreException { - return pdom.getDB().getInt(record + NODE_OFFSET_OFFSET); + return linkage.getDB().getInt(record + NODE_OFFSET_OFFSET); } public int getNameLength() throws CoreException { - return pdom.getDB().getShort(record + NODE_LENGTH_OFFSET) & 0xffff; + return linkage.getDB().getShort(record + NODE_LENGTH_OFFSET) & 0xffff; } public String getName() throws CoreException { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMLinkage.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMLinkage.java index a19690844a6..d37091e13e5 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMLinkage.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMLinkage.java @@ -65,20 +65,39 @@ public abstract class PDOMLinkage extends PDOMNamedNode implements IIndexLinkage protected static final int LINKAGE= 0; // special one for myself private BTree fMacroIndex= null; + private final PDOM fPDOM; + private final Database fDatabase; public PDOMLinkage(PDOM pdom, int record) { - super(pdom, record); + super(null, record); + fPDOM= pdom; + fDatabase= pdom.getDB(); } protected PDOMLinkage(PDOM pdom, String languageId, char[] name) throws CoreException { - super(pdom, null, name); - Database db = pdom.getDB(); + super(pdom.getDB(), name); + final Database db= pdom.getDB(); - // id + fPDOM= pdom; + fDatabase= db; db.putInt(record + ID_OFFSET, db.newString(languageId).getRecord()); - pdom.insertLinkage(this); } + + @Override + public final PDOM getPDOM() { + return fPDOM; + } + + @Override + public final PDOMLinkage getLinkage() throws CoreException { + return this; + } + + @Override + public final Database getDB() { + return fDatabase; + } @Override protected int getRecordSize() { @@ -90,7 +109,7 @@ public abstract class PDOMLinkage extends PDOMNamedNode implements IIndexLinkage return LINKAGE; } - public static IString getId(PDOM pdom, int record) throws CoreException { + public static IString getLinkageID(PDOM pdom, int record) throws CoreException { Database db = pdom.getDB(); int namerec = db.getInt(record + ID_OFFSET); return db.getString(namerec); @@ -101,11 +120,11 @@ public abstract class PDOMLinkage extends PDOMNamedNode implements IIndexLinkage } public void setNext(int nextrec) throws CoreException { - pdom.getDB().putInt(record + NEXT_OFFSET, nextrec); + getDB().putInt(record + NEXT_OFFSET, nextrec); } public BTree getIndex() throws CoreException { - return new BTree(pdom.getDB(), record + INDEX_OFFSET, getIndexComparator()); + return new BTree(getDB(), record + INDEX_OFFSET, getIndexComparator()); } /** @@ -113,7 +132,7 @@ public abstract class PDOMLinkage extends PDOMNamedNode implements IIndexLinkage * @throws CoreException */ public BTree getNestedBindingsIndex() throws CoreException { - return new BTree(getPDOM().getDB(), record + NESTED_BINDINGS_INDEX, getNestedBindingsComparator()); + return new BTree(fDatabase, record + NESTED_BINDINGS_INDEX, getNestedBindingsComparator()); } @Override @@ -138,35 +157,38 @@ public abstract class PDOMLinkage extends PDOMNamedNode implements IIndexLinkage } } - @Override - public PDOMLinkage getLinkage() throws CoreException { - return this; - } @Override public final void addChild(PDOMNode child) throws CoreException { getIndex().insert(child.getRecord()); } + + public final PDOMBinding getBinding(int record) throws CoreException { + final PDOMNode node= getNode(record); + if (node instanceof PDOMBinding) + return (PDOMBinding) node; + return null; + } public PDOMNode getNode(int record) throws CoreException { - switch (PDOMNode.getNodeType(pdom, record)) { + switch (PDOMNode.getNodeType(fDatabase, record)) { case POINTER_TYPE: - return new PDOMPointerType(pdom, record); + return new PDOMPointerType(this, record); case ARRAY_TYPE: - return new PDOMArrayType(pdom, record); + return new PDOMArrayType(this, record); case QUALIFIER_TYPE: - return new PDOMQualifierType(pdom, record); + return new PDOMQualifierType(this, record); } return null; } public PDOMNode addType(PDOMNode parent, IType type) throws CoreException { if (type instanceof IPointerType) - return new PDOMPointerType(pdom, parent, (IPointerType)type); + return new PDOMPointerType(this, parent, (IPointerType)type); else if (type instanceof IArrayType) - return new PDOMArrayType(pdom, parent, (IArrayType) type); + return new PDOMArrayType(this, parent, (IArrayType) type); else if (type instanceof IQualifierType) - return new PDOMQualifierType(pdom, parent, (IQualifierType)type); + return new PDOMQualifierType(this, parent, (IQualifierType)type); else return null; } @@ -198,7 +220,7 @@ public abstract class PDOMLinkage extends PDOMNamedNode implements IIndexLinkage return pdomBinding; } } - return (PDOMBinding) pdom.getCachedResult(binding); + return (PDOMBinding) fPDOM.getCachedResult(binding); } public abstract PDOMBinding adaptBinding(IBinding binding) throws CoreException; public abstract PDOMBinding addBinding(IASTName name) throws CoreException; @@ -218,8 +240,8 @@ public abstract class PDOMLinkage extends PDOMNamedNode implements IIndexLinkage } protected PDOMFile getLocalToFile(IBinding binding, PDOMBinding glob) throws CoreException { - if (pdom instanceof WritablePDOM) { - final WritablePDOM wpdom= (WritablePDOM) pdom; + if (fPDOM instanceof WritablePDOM) { + final WritablePDOM wpdom= (WritablePDOM) fPDOM; try { if (binding instanceof IField) { return null; @@ -333,45 +355,45 @@ public abstract class PDOMLinkage extends PDOMNamedNode implements IIndexLinkage public BTree getMacroIndex() { if (fMacroIndex == null) { - fMacroIndex= new BTree(pdom.getDB(), record + MACRO_BTREE, new FindBinding.MacroBTreeComparator(pdom)); + fMacroIndex= new BTree(getDB(), record + MACRO_BTREE, new FindBinding.MacroBTreeComparator(fDatabase)); } return fMacroIndex; } public PDOMMacroContainer findMacroContainer(final char[] name) throws CoreException { - return findMacroContainer(name, pdom.createKeyForCache(record, name)); + return findMacroContainer(name, fPDOM.createKeyForCache(record, name)); } private PDOMMacroContainer findMacroContainer(final char[] name, final String key) throws CoreException { - Object result= pdom.getCachedResult(key); + Object result= fPDOM.getCachedResult(key); if (result instanceof PDOMMacroContainer) { return ((PDOMMacroContainer) result); } assert result==null; - MacroContainerFinder visitor = new MacroContainerFinder(pdom, name); + MacroContainerFinder visitor = new MacroContainerFinder(this, name); getMacroIndex().accept(visitor); PDOMMacroContainer container= visitor.getMacroContainer(); if (container != null) { - pdom.putCachedResult(key, container); + fPDOM.putCachedResult(key, container); } return container; } public PDOMMacroContainer getMacroContainer(char[] name) throws CoreException { - String key= pdom.createKeyForCache(record, name); + String key= fPDOM.createKeyForCache(record, name); PDOMMacroContainer result= findMacroContainer(name, key); if (result == null) { - result= new PDOMMacroContainer(pdom, this, name); + result= new PDOMMacroContainer(this, name); getMacroIndex().insert(result.getRecord()); - pdom.putCachedResult(key, result); + fPDOM.putCachedResult(key, result); } return result; } public void removeMacroContainer (PDOMMacroContainer container) throws CoreException { - String key= pdom.createKeyForCache(record, container.getNameCharArray()); - pdom.putCachedResult(key, null); + String key= fPDOM.createKeyForCache(record, container.getNameCharArray()); + fPDOM.putCachedResult(key, null); getMacroIndex().delete(container.getRecord()); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMMacro.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMMacro.java index 16dd0a893ea..8c387de7de2 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMMacro.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMMacro.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2008 QNX Software Systems and others. + * Copyright (c) 2006, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -58,7 +58,7 @@ public class PDOMMacro implements IIndexMacro, IPDOMBinding, IASTFileLocation { private static final char[][] UNINITIALIZED= {}; private static final char[] UNINITIALIZED1= {}; - private final PDOM fPDOM; + private final PDOMLinkage fLinkage; private final int fRecord; private char[][] fParameterList= UNINITIALIZED; @@ -66,20 +66,20 @@ public class PDOMMacro implements IIndexMacro, IPDOMBinding, IASTFileLocation { private PDOMMacroContainer fContainer; private PDOMMacroDefinitionName fDefinition; - public PDOMMacro(PDOM pdom, int record) { - fPDOM = pdom; + public PDOMMacro(PDOMLinkage linkage, int record) { + fLinkage = linkage; fRecord = record; } - public PDOMMacro(PDOM pdom, PDOMMacroContainer container, IASTPreprocessorMacroDefinition macro, + public PDOMMacro(PDOMLinkage linkage, PDOMMacroContainer container, IASTPreprocessorMacroDefinition macro, PDOMFile file) throws CoreException { - this(pdom, container, file, macro.getName()); + this(linkage, container, file, macro.getName()); final IASTName name = macro.getName(); final IMacroBinding binding= (IMacroBinding) name.getBinding(); final char[][] params= binding.getParameterList(); - final Database db= pdom.getDB(); + final Database db= linkage.getDB(); db.putInt(fRecord + EXPANSION, db.newString(binding.getExpansionImage()).getRecord()); if (params != null) { StringBuilder buf= new StringBuilder(); @@ -91,15 +91,15 @@ public class PDOMMacro implements IIndexMacro, IPDOMBinding, IASTFileLocation { } } - public PDOMMacro(PDOM pdom, PDOMMacroContainer container, IASTPreprocessorUndefStatement undef, + public PDOMMacro(PDOMLinkage linkage, PDOMMacroContainer container, IASTPreprocessorUndefStatement undef, PDOMFile file) throws CoreException { - this(pdom, container, file, undef.getMacroName()); + this(linkage, container, file, undef.getMacroName()); } - private PDOMMacro(PDOM pdom, PDOMMacroContainer container, PDOMFile file, IASTName name) + private PDOMMacro(PDOMLinkage linkage, PDOMMacroContainer container, PDOMFile file, IASTName name) throws CoreException { - final Database db= pdom.getDB(); - fPDOM = pdom; + final Database db= linkage.getDB(); + fLinkage = linkage; fRecord = db.malloc(RECORD_SIZE); fContainer= container; @@ -113,7 +113,7 @@ public class PDOMMacro implements IIndexMacro, IPDOMBinding, IASTFileLocation { } public PDOM getPDOM() { - return fPDOM; + return fLinkage.getPDOM(); } public int getRecord() { @@ -149,26 +149,26 @@ public class PDOMMacro implements IIndexMacro, IPDOMBinding, IASTFileLocation { public PDOMMacroContainer getContainer() throws CoreException { if (fContainer == null) { - fContainer= new PDOMMacroContainer(fPDOM, fPDOM.getDB().getInt(fRecord + CONTAINER)); + fContainer= new PDOMMacroContainer(fLinkage, fLinkage.getDB().getInt(fRecord + CONTAINER)); } return fContainer; } private IString getExpansionInDB() throws CoreException { - Database db = fPDOM.getDB(); + Database db = fLinkage.getDB(); int rec = db.getInt(fRecord + EXPANSION); return rec == 0 ? null : db.getString(rec); } private IString getParamListInDB() throws CoreException { - Database db = fPDOM.getDB(); + Database db = fLinkage.getDB(); int rec = db.getInt(fRecord + PARAMETERS); return rec == 0 ? null : db.getString(rec); } public PDOMMacro getNextMacro() throws CoreException { - int rec = fPDOM.getDB().getInt(fRecord + NEXT_IN_FILE); - return rec != 0 ? new PDOMMacro(fPDOM, rec) : null; + int rec = fLinkage.getDB().getInt(fRecord + NEXT_IN_FILE); + return rec != 0 ? new PDOMMacro(fLinkage, rec) : null; } public void setNextMacro(PDOMMacro macro) throws CoreException { @@ -176,7 +176,7 @@ public class PDOMMacro implements IIndexMacro, IPDOMBinding, IASTFileLocation { } private void setNextMacro(int rec) throws CoreException { - fPDOM.getDB().putInt(fRecord + NEXT_IN_FILE, rec); + fLinkage.getDB().putInt(fRecord + NEXT_IN_FILE, rec); } private PDOMMacro getPrevInContainer() throws CoreException { @@ -197,12 +197,12 @@ public class PDOMMacro implements IIndexMacro, IPDOMBinding, IASTFileLocation { private void setMacroField(int offset, PDOMMacro macro) throws CoreException { int namerec = macro != null ? macro.getRecord() : 0; - fPDOM.getDB().putInt(fRecord + offset, namerec); + fLinkage.getDB().putInt(fRecord + offset, namerec); } private PDOMMacro getMacroField(int offset) throws CoreException { - int namerec= fPDOM.getDB().getInt(fRecord + offset); - return namerec != 0 ? new PDOMMacro(fPDOM, namerec) : null; + int namerec= fLinkage.getDB().getInt(fRecord + offset); + return namerec != 0 ? new PDOMMacro(fLinkage, namerec) : null; } public char[][] getParameterList() { @@ -232,7 +232,7 @@ public class PDOMMacro implements IIndexMacro, IPDOMBinding, IASTFileLocation { public boolean isMacroDefinition() throws CoreException { if (fExpansion == UNINITIALIZED1) { - return fPDOM.getDB().getInt(fRecord + EXPANSION) != 0; + return fLinkage.getDB().getInt(fRecord + EXPANSION) != 0; } return fExpansion != null; } @@ -264,8 +264,8 @@ public class PDOMMacro implements IIndexMacro, IPDOMBinding, IASTFileLocation { } public PDOMFile getFile() throws CoreException { - int filerec = fPDOM.getDB().getInt(fRecord + FILE); - return filerec != 0 ? new PDOMFile(fPDOM, filerec) : null; + int filerec = fLinkage.getDB().getInt(fRecord + FILE); + return filerec != 0 ? new PDOMFile(fLinkage, filerec) : null; } public int getEndingLineNumber() { @@ -303,7 +303,7 @@ public class PDOMMacro implements IIndexMacro, IPDOMBinding, IASTFileLocation { public int getNodeLength() { try { - return fPDOM.getDB().getShort(fRecord + NAME_LENGTH); + return fLinkage.getDB().getShort(fRecord + NAME_LENGTH); } catch (CoreException e) { CCorePlugin.log(e); return 0; @@ -312,7 +312,7 @@ public class PDOMMacro implements IIndexMacro, IPDOMBinding, IASTFileLocation { public int getNodeOffset() { try { - return fPDOM.getDB().getInt(fRecord + NAME_OFFSET); + return fLinkage.getDB().getInt(fRecord + NAME_OFFSET); } catch (CoreException e) { CCorePlugin.log(e); return 0; @@ -390,7 +390,7 @@ public class PDOMMacro implements IIndexMacro, IPDOMBinding, IASTFileLocation { } public IIndexFragment getFragment() { - return fPDOM; + return fLinkage.getPDOM(); } public boolean hasDeclaration() throws CoreException { @@ -408,7 +408,7 @@ public class PDOMMacro implements IIndexMacro, IPDOMBinding, IASTFileLocation { public void accept(IPDOMVisitor visitor) { } - public int getId() { + public int getBindingID() { return fRecord; } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMMacroContainer.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMMacroContainer.java index d0509607093..d5cf2ce0708 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMMacroContainer.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMMacroContainer.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008 Wind River Systems, Inc. and others. + * Copyright (c) 2008, 2009 Wind River Systems, Inc. and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -21,7 +21,6 @@ import org.eclipse.cdt.core.parser.util.CharArrayUtils; import org.eclipse.cdt.internal.core.index.IIndexBindingConstants; import org.eclipse.cdt.internal.core.index.IIndexFragment; import org.eclipse.cdt.internal.core.index.IIndexScope; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.db.Database; import org.eclipse.core.runtime.CoreException; @@ -36,12 +35,12 @@ public class PDOMMacroContainer extends PDOMNamedNode implements IIndexMacroCont @SuppressWarnings("hiding") protected static final int RECORD_SIZE = PDOMNamedNode.RECORD_SIZE + 8; - public PDOMMacroContainer(PDOM pdom, PDOMLinkage linkage, char[] name) throws CoreException { - super(pdom, linkage, name); + public PDOMMacroContainer(PDOMLinkage linkage, char[] name) throws CoreException { + super(linkage, linkage, name); } - PDOMMacroContainer(PDOM pdom, int record) { - super(pdom, record); + PDOMMacroContainer(PDOMLinkage linkage, int record) { + super(linkage, record); } @Override @@ -55,7 +54,7 @@ public class PDOMMacroContainer extends PDOMNamedNode implements IIndexMacroCont } public boolean isOrphaned() throws CoreException { - Database db = pdom.getDB(); + Database db = getDB(); return db.getInt(record + FIRST_DEF_OFFSET) == 0 && db.getInt(record + FIRST_REF_OFFSET) == 0; } @@ -79,23 +78,23 @@ public class PDOMMacroContainer extends PDOMNamedNode implements IIndexMacroCont } public PDOMMacro getFirstDefinition() throws CoreException { - int namerec = pdom.getDB().getInt(record + FIRST_DEF_OFFSET); - return namerec != 0 ? new PDOMMacro(pdom, namerec) : null; + int namerec = getDB().getInt(record + FIRST_DEF_OFFSET); + return namerec != 0 ? new PDOMMacro(getLinkage(), namerec) : null; } void setFirstDefinition(PDOMMacro macro) throws CoreException { int namerec = macro != null ? macro.getRecord() : 0; - pdom.getDB().putInt(record + FIRST_DEF_OFFSET, namerec); + getDB().putInt(record + FIRST_DEF_OFFSET, namerec); } public PDOMMacroReferenceName getFirstReference() throws CoreException { - int namerec = pdom.getDB().getInt(record + FIRST_REF_OFFSET); - return namerec != 0 ? new PDOMMacroReferenceName(pdom, namerec) : null; + int namerec = getDB().getInt(record + FIRST_REF_OFFSET); + return namerec != 0 ? new PDOMMacroReferenceName(getLinkage(), namerec) : null; } void setFirstReference(PDOMMacroReferenceName nextName) throws CoreException { int namerec = nextName != null ? nextName.getRecord() : 0; - pdom.getDB().putInt(record + FIRST_REF_OFFSET, namerec); + getDB().putInt(record + FIRST_REF_OFFSET, namerec); } public IIndexMacro[] getDefinitions() throws CoreException { @@ -123,7 +122,7 @@ public class PDOMMacroContainer extends PDOMNamedNode implements IIndexMacroCont * @see org.eclipse.cdt.internal.core.index.IIndexFragmentBinding#getFragment() */ public IIndexFragment getFragment() { - return pdom; + return getPDOM(); } public IIndexScope getScope() { @@ -135,7 +134,7 @@ public class PDOMMacroContainer extends PDOMNamedNode implements IIndexMacroCont } public boolean hasDefinition() throws CoreException { - return pdom.getDB().getInt(record + FIRST_DEF_OFFSET) != 0; + return getDB().getInt(record + FIRST_DEF_OFFSET) != 0; } public IIndexFile getLocalToFile() throws CoreException { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMMacroReferenceName.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMMacroReferenceName.java index a0f4f0b1a8a..96fad1faa25 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMMacroReferenceName.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMMacroReferenceName.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2005, 2008 QNX Software Systems and others. + * Copyright (c) 2005, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -21,7 +21,6 @@ import org.eclipse.cdt.core.parser.util.CharArrayUtils; import org.eclipse.cdt.internal.core.index.IIndexFragment; import org.eclipse.cdt.internal.core.index.IIndexFragmentBinding; import org.eclipse.cdt.internal.core.index.IIndexFragmentName; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.db.Database; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; @@ -30,7 +29,7 @@ import org.eclipse.core.runtime.IPath; * Represents declarations, definitions and references to bindings, except for macros. */ public final class PDOMMacroReferenceName implements IIndexFragmentName, IASTFileLocation { - private final PDOM pdom; + private final PDOMLinkage linkage; private final int record; private static final int FILE_REC_OFFSET = 0; @@ -43,10 +42,10 @@ public final class PDOMMacroReferenceName implements IIndexFragmentName, IASTFil private static final int RECORD_SIZE = 26; - public PDOMMacroReferenceName(PDOM pdom, IASTName name, PDOMFile file, + public PDOMMacroReferenceName(PDOMLinkage linkage, IASTName name, PDOMFile file, PDOMMacroContainer container) throws CoreException { - this.pdom = pdom; - Database db = pdom.getDB(); + this.linkage = linkage; + Database db = linkage.getDB(); record = db.malloc(RECORD_SIZE); db.putInt(record + CONTAINER_REC_OFFSET, container.getRecord()); @@ -59,8 +58,8 @@ public final class PDOMMacroReferenceName implements IIndexFragmentName, IASTFil container.addReference(this); } - public PDOMMacroReferenceName(PDOM pdom, int nameRecord) { - this.pdom = pdom; + public PDOMMacroReferenceName(PDOMLinkage linkage, int nameRecord) { + this.linkage = linkage; this.record = nameRecord; } @@ -69,21 +68,21 @@ public final class PDOMMacroReferenceName implements IIndexFragmentName, IASTFil } private int getRecField(int offset) throws CoreException { - return pdom.getDB().getInt(record + offset); + return linkage.getDB().getInt(record + offset); } private void setRecField(int offset, int fieldrec) throws CoreException { - pdom.getDB().putInt(record + offset, fieldrec); + linkage.getDB().putInt(record + offset, fieldrec); } public PDOMMacroContainer getContainer() throws CoreException { int bindingrec = getRecField(CONTAINER_REC_OFFSET); - return new PDOMMacroContainer(pdom, bindingrec); + return new PDOMMacroContainer(linkage, bindingrec); } private PDOMMacroReferenceName getNameField(int offset) throws CoreException { int namerec = getRecField(offset); - return namerec != 0 ? new PDOMMacroReferenceName(pdom, namerec) : null; + return namerec != 0 ? new PDOMMacroReferenceName(linkage, namerec) : null; } private void setNameField(int offset, PDOMMacroReferenceName name) throws CoreException { @@ -108,8 +107,8 @@ public final class PDOMMacroReferenceName implements IIndexFragmentName, IASTFil } public PDOMFile getFile() throws CoreException { - int filerec = pdom.getDB().getInt(record + FILE_REC_OFFSET); - return filerec != 0 ? new PDOMFile(pdom, filerec) : null; + int filerec = linkage.getDB().getInt(record + FILE_REC_OFFSET); + return filerec != 0 ? new PDOMFile(linkage, filerec) : null; } PDOMMacroReferenceName getNextInFile() throws CoreException { @@ -205,7 +204,7 @@ public final class PDOMMacroReferenceName implements IIndexFragmentName, IASTFil public int getNodeLength() { try { - return (pdom.getDB().getShort(record + NODE_LENGTH_OFFSET)) & 0xffff; + return (linkage.getDB().getShort(record + NODE_LENGTH_OFFSET)) & 0xffff; } catch (CoreException e) { CCorePlugin.log(e); return 0; @@ -214,7 +213,7 @@ public final class PDOMMacroReferenceName implements IIndexFragmentName, IASTFil public int getNodeOffset() { try { - return pdom.getDB().getInt(record + NODE_OFFSET_OFFSET); + return linkage.getDB().getInt(record + NODE_OFFSET_OFFSET); } catch (CoreException e) { CCorePlugin.log(e); return 0; @@ -235,11 +234,11 @@ public final class PDOMMacroReferenceName implements IIndexFragmentName, IASTFil nextName.setPrevInContainer(prevName); // Delete our record - pdom.getDB().free(record); + linkage.getDB().free(record); } public IIndexFragment getIndexFragment() { - return pdom; + return linkage.getPDOM(); } public IIndexName[] getEnclosedNames() throws CoreException { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMName.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMName.java index e61707a97a5..495e882d508 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMName.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMName.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2005, 2008 QNX Software Systems and others. + * Copyright (c) 2005, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -22,7 +22,6 @@ import org.eclipse.cdt.core.index.IndexLocationFactory; import org.eclipse.cdt.core.parser.util.CharArrayUtils; import org.eclipse.cdt.internal.core.index.IIndexFragment; import org.eclipse.cdt.internal.core.index.IIndexFragmentName; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.db.Database; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; @@ -31,7 +30,7 @@ import org.eclipse.core.runtime.IPath; * @author Doug Schaefer */ public final class PDOMName implements IIndexFragmentName, IASTFileLocation { - private final PDOM pdom; + private final PDOMLinkage linkage; private final int record; private static final int FILE_REC_OFFSET = 0; @@ -57,10 +56,10 @@ public final class PDOMName implements IIndexFragmentName, IASTFileLocation { public static final int WRITE_ACCESS = 0x40; - public PDOMName(PDOM pdom, IASTName name, PDOMFile file, PDOMBinding binding, PDOMName caller) + public PDOMName(PDOMLinkage linkage, IASTName name, PDOMFile file, PDOMBinding binding, PDOMName caller) throws CoreException { - this.pdom = pdom; - Database db = pdom.getDB(); + this.linkage = linkage; + Database db = linkage.getDB(); record = db.malloc(RECORD_SIZE); // What kind of name are we @@ -105,8 +104,8 @@ public final class PDOMName implements IIndexFragmentName, IASTFileLocation { return IS_REFERENCE; } - public PDOMName(PDOM pdom, int nameRecord) { - this.pdom = pdom; + public PDOMName(PDOMLinkage linkage, int nameRecord) { + this.linkage = linkage; this.record = nameRecord; } @@ -115,16 +114,16 @@ public final class PDOMName implements IIndexFragmentName, IASTFileLocation { } private int getRecField(int offset) throws CoreException { - return pdom.getDB().getInt(record + offset); + return linkage.getDB().getInt(record + offset); } private void setRecField(int offset, int fieldrec) throws CoreException { - pdom.getDB().putInt(record + offset, fieldrec); + linkage.getDB().putInt(record + offset, fieldrec); } public PDOMBinding getBinding() throws CoreException { int bindingrec = getRecField(BINDING_REC_OFFSET); - return pdom.getBinding(bindingrec); + return linkage.getBinding(bindingrec); } public void setBinding(PDOMBinding binding) throws CoreException { @@ -134,7 +133,7 @@ public final class PDOMName implements IIndexFragmentName, IASTFileLocation { private PDOMName getNameField(int offset) throws CoreException { int namerec = getRecField(offset); - return namerec != 0 ? new PDOMName(pdom, namerec) : null; + return namerec != 0 ? new PDOMName(linkage, namerec) : null; } private void setNameField(int offset, PDOMName name) throws CoreException { @@ -159,17 +158,17 @@ public final class PDOMName implements IIndexFragmentName, IASTFileLocation { } public PDOMFile getFile() throws CoreException { - int filerec = pdom.getDB().getInt(record + FILE_REC_OFFSET); - return filerec != 0 ? new PDOMFile(pdom, filerec) : null; + int filerec = linkage.getDB().getInt(record + FILE_REC_OFFSET); + return filerec != 0 ? new PDOMFile(linkage, filerec) : null; } public IIndexName getEnclosingDefinition() throws CoreException { int namerec = getEnclosingDefinitionRecord(); - return namerec != 0 ? new PDOMName(pdom, namerec) : null; + return namerec != 0 ? new PDOMName(linkage, namerec) : null; } int getEnclosingDefinitionRecord() throws CoreException { - return pdom.getDB().getInt(record + CALLER_REC_OFFSET); + return linkage.getDB().getInt(record + CALLER_REC_OFFSET); } public PDOMName getNextInFile() throws CoreException { @@ -190,9 +189,9 @@ public final class PDOMName implements IIndexFragmentName, IASTFileLocation { public char[] getSimpleID() { try { - Database db = pdom.getDB(); + Database db = linkage.getDB(); int bindingRec = db.getInt(record + BINDING_REC_OFFSET); - PDOMBinding binding = pdom.getBinding(bindingRec); + PDOMBinding binding = linkage.getBinding(bindingRec); return binding != null ? binding.getNameCharArray() : null; } catch (CoreException e) { CCorePlugin.log(e); @@ -206,25 +205,25 @@ public final class PDOMName implements IIndexFragmentName, IASTFileLocation { } private int getFlags(int mask) throws CoreException { - return pdom.getDB().getByte(record + FLAGS) & mask; + return linkage.getDB().getByte(record + FLAGS) & mask; } public void setIsFriendSpecifier(boolean val) throws CoreException { - int flags= pdom.getDB().getByte(record + FLAGS) & 0xff; + int flags= linkage.getDB().getByte(record + FLAGS) & 0xff; if (val) flags |= IS_FRIEND_SPEC; else flags &= ~IS_FRIEND_SPEC; - pdom.getDB().putByte(record + FLAGS, (byte) flags); + linkage.getDB().putByte(record + FLAGS, (byte) flags); } public void setIsBaseSpecifier(boolean val) throws CoreException { - int flags= pdom.getDB().getByte(record + FLAGS) & 0xff; + int flags= linkage.getDB().getByte(record + FLAGS) & 0xff; if (val) flags |= IS_INHERITANCE_SPEC; else flags &= ~IS_INHERITANCE_SPEC; - pdom.getDB().putByte(record + FLAGS, (byte) flags); + linkage.getDB().putByte(record + FLAGS, (byte) flags); } public boolean isFriendSpecifier() throws CoreException { @@ -312,7 +311,7 @@ public final class PDOMName implements IIndexFragmentName, IASTFileLocation { public int getNodeLength() { try { - return (pdom.getDB().getShort(record + NODE_LENGTH_OFFSET)) & 0xffff; + return (linkage.getDB().getShort(record + NODE_LENGTH_OFFSET)) & 0xffff; } catch (CoreException e) { CCorePlugin.log(e); return 0; @@ -321,7 +320,7 @@ public final class PDOMName implements IIndexFragmentName, IASTFileLocation { public int getNodeOffset() { try { - return pdom.getDB().get3ByteUnsignedInt(record + NODE_OFFSET_OFFSET); + return linkage.getDB().get3ByteUnsignedInt(record + NODE_OFFSET_OFFSET); } catch (CoreException e) { CCorePlugin.log(e); return 0; @@ -352,11 +351,11 @@ public final class PDOMName implements IIndexFragmentName, IASTFileLocation { nextName.setPrevInBinding(prevName); // Delete our record - pdom.getDB().free(record); + linkage.getDB().free(record); } public IIndexFragment getIndexFragment() { - return pdom; + return linkage.getPDOM(); } public IIndexName[] getEnclosedNames() throws CoreException { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMNamedNode.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMNamedNode.java index 7354e047308..86c4991e229 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMNamedNode.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMNamedNode.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2008 QNX Software Systems and others. + * Copyright (c) 2006, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -20,7 +20,6 @@ import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.index.IIndexBinding; import org.eclipse.cdt.core.parser.util.CharArrayUtils; import org.eclipse.cdt.internal.core.index.IIndexFragmentBinding; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.db.Database; import org.eclipse.cdt.internal.core.pdom.db.IString; import org.eclipse.core.runtime.CoreException; @@ -43,30 +42,35 @@ public abstract class PDOMNamedNode extends PDOMNode { private char[] fName; - public PDOMNamedNode(PDOM pdom, int record) { - super(pdom, record); + public PDOMNamedNode(PDOMLinkage linkage, int record) { + super(linkage, record); } - public PDOMNamedNode(PDOM pdom, PDOMNode parent, char[] name) throws CoreException { - super(pdom, parent); + public PDOMNamedNode(PDOMLinkage linkage, PDOMNode parent, char[] name) throws CoreException { + super(linkage, parent); fName= name; - Database db = pdom.getDB(); - db.putInt(record + NAME, - name != null ? db.newString(name).getRecord() : 0); + final Database db = linkage.getDB(); + db.putInt(record + NAME, name != null ? db.newString(name).getRecord() : 0); } + /** + * For linkages, only. + */ + protected PDOMNamedNode(Database db, char[] name) throws CoreException { + super(db); + fName= name; + db.putInt(record + NAME, name != null ? db.newString(name).getRecord() : 0); + } + @Override abstract protected int getRecordSize(); public IString getDBName() throws CoreException { - Database db = pdom.getDB(); - int namerec = db.getInt(record + NAME); - return db.getString(namerec); + return getDBName(getDB(), record); } - public static IString getDBName(PDOM pdom, int record) throws CoreException { - Database db = pdom.getDB(); + public static IString getDBName(Database db, int record) throws CoreException { int namerec = db.getInt(record + NAME); return db.getString(namerec); } @@ -96,7 +100,7 @@ public abstract class PDOMNamedNode extends PDOMNode { IString name= getDBName(); if (!name.equals(nameCharArray)) { name.delete(); - final Database db= pdom.getDB(); + final Database db= getDB(); db.putInt(record + NAME, db.newString(nameCharArray).getRecord()); } fName= nameCharArray; @@ -105,7 +109,7 @@ public abstract class PDOMNamedNode extends PDOMNode { @Override public void delete(PDOMLinkage linkage) throws CoreException { - final Database db = pdom.getDB(); + final Database db = getDB(); final int namerec= db.getInt(record + NAME); if (namerec != 0) { db.free(namerec); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMNode.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMNode.java index 454bdc66edb..98db8afb614 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMNode.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMNode.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2005, 2008 QNX Software Systems and others. + * Copyright (c) 2005, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -31,42 +31,58 @@ public abstract class PDOMNode implements IInternalPDOMNode { protected static final int RECORD_SIZE = 8; - protected final PDOM pdom; + private final PDOMLinkage fLinkage; protected final int record; private int cachedParentRecord; - protected PDOMNode(PDOM pdom, int record) { - this.pdom = pdom; + protected PDOMNode(PDOMLinkage linkage, int record) { + fLinkage = linkage; this.record = record; } - - protected PDOMNode(PDOM pdom, PDOMNode parent) throws CoreException { - this.pdom = pdom; - Database db = pdom.getDB(); - - record = db.malloc(getRecordSize()); - // type + protected PDOMNode(PDOMLinkage linkage, PDOMNode parent) throws CoreException { + this(linkage.getDB(), linkage, parent == null ? 0 : parent.getRecord()); + } + + /** + * For linkages, only. + */ + protected PDOMNode(Database db) throws CoreException { + this(db, null, 0); + } + + protected PDOMNode(Database db, PDOMLinkage linkage, int parentRec) throws CoreException { + this.fLinkage = linkage; + + record = db.malloc(getRecordSize()); db.putInt(record + TYPE, getNodeType()); - // parent - cachedParentRecord= parent != null ? parent.getRecord() : 0; - db.putInt(record + PARENT, cachedParentRecord); + cachedParentRecord= parentRec; + db.putInt(record + PARENT, parentRec); + } + + protected Database getDB() { + return fLinkage.getDB(); + } + + public PDOM getPDOM() { + return fLinkage.getPDOM(); + } + + public PDOMLinkage getLinkage() throws CoreException { + return fLinkage; } protected abstract int getRecordSize(); public abstract int getNodeType(); - public PDOM getPDOM() { - return pdom; - } - public int getRecord() { + public final int getRecord() { return record; } - public int getId() { + public final int getBindingID() { return record; } @@ -77,7 +93,7 @@ public abstract class PDOMNode implements IInternalPDOMNode { */ public boolean isChildOf(PDOMNode other) { try { - return other.pdom == pdom && other.record == getParentNodeRec(); + return other.fLinkage == fLinkage && other.record == getParentNodeRec(); } catch (CoreException e) { return false; } @@ -89,7 +105,7 @@ public abstract class PDOMNode implements IInternalPDOMNode { return true; if (obj instanceof PDOMNode) { PDOMNode other = (PDOMNode)obj; - return pdom == other.pdom && record == other.record; + return getPDOM() == other.getPDOM() && record == other.record; } return super.equals(obj); @@ -97,53 +113,33 @@ public abstract class PDOMNode implements IInternalPDOMNode { @Override public final int hashCode() { - return System.identityHashCode(pdom) + 41*record; + return System.identityHashCode(getPDOM()) + 41*record; } public void accept(IPDOMVisitor visitor) throws CoreException { // No children here. } - public static int getNodeType(PDOM pdom, int record) throws CoreException { - return pdom.getDB().getInt(record + TYPE); + public static int getNodeType(Database db, int record) throws CoreException { + return db.getInt(record + TYPE); } public int getParentNodeRec() throws CoreException { if (cachedParentRecord != 0) { return cachedParentRecord; } - return cachedParentRecord= pdom.getDB().getInt(record + PARENT); + return cachedParentRecord= getDB().getInt(record + PARENT); } public PDOMNode getParentNode() throws CoreException { int parentrec = getParentNodeRec(); - return parentrec != 0 ? getLinkageImpl().getNode(parentrec) : null; + return parentrec != 0 ? getLinkage().getNode(parentrec) : null; } - public PDOMLinkage getLinkage() throws CoreException { - return getLinkage(pdom, record); - } - - public final PDOMLinkage getLinkageImpl() throws CoreException { - return getLinkage(); - } - - public static PDOMLinkage getLinkage(PDOM pdom, int record) throws CoreException { - Database db = pdom.getDB(); - int linkagerec = record; - int parentrec = db.getInt(linkagerec + PARENT); - while (parentrec != 0) { - linkagerec = parentrec; - parentrec = db.getInt(linkagerec + PARENT); - } - - return pdom.getLinkage(linkagerec); - } - public void addChild(PDOMNode child) throws CoreException { // nothing here } - + /** * Convenience method for fetching a byte from the database. * @param offset Location of the byte. @@ -151,17 +147,7 @@ public abstract class PDOMNode implements IInternalPDOMNode { */ protected byte getByte(int offset) { try { - return pdom.getDB().getByte(offset); - } - catch (CoreException e) { - CCorePlugin.log(e); - return 0; - } - } - - protected int getInt(int offset) { - try { - return pdom.getDB().getInt(offset); + return getDB().getByte(offset); } catch (CoreException e) { CCorePlugin.log(e); @@ -187,6 +173,6 @@ public abstract class PDOMNode implements IInternalPDOMNode { * @throws CoreException */ public void delete(PDOMLinkage linkage) throws CoreException { - pdom.getDB().free(record); + getDB().free(record); } } \ No newline at end of file diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMPointerType.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMPointerType.java index deea0e52ff1..056c129b0a7 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMPointerType.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMPointerType.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2008 QNX Software Systems and others. + * Copyright (c) 2006, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -24,7 +24,6 @@ import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer; import org.eclipse.cdt.internal.core.index.IIndexBindingConstants; import org.eclipse.cdt.internal.core.index.IIndexType; import org.eclipse.cdt.internal.core.index.PointerTypeClone; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.db.Database; import org.eclipse.core.runtime.CoreException; @@ -43,14 +42,14 @@ public class PDOMPointerType extends PDOMNode implements IPointerType, private static final int CONST = 0x1; private static final int VOLATILE = 0x2; - public PDOMPointerType(PDOM pdom, int record) { - super(pdom, record); + public PDOMPointerType(PDOMLinkage linkage, int record) { + super(linkage, record); } - public PDOMPointerType(PDOM pdom, PDOMNode parent, IPointerType type) throws CoreException { - super(pdom, parent); + public PDOMPointerType(PDOMLinkage linkage, PDOMNode parent, IPointerType type) throws CoreException { + super(linkage, parent); - Database db = pdom.getDB(); + Database db = getDB(); try { // type @@ -58,7 +57,7 @@ public class PDOMPointerType extends PDOMNode implements IPointerType, byte flags = 0; if (type != null) { IType targetType= type.getType(); - PDOMNode targetTypeNode = getLinkageImpl().addType(this, targetType); + PDOMNode targetTypeNode = getLinkage().addType(this, targetType); if (targetTypeNode != null) typeRec = targetTypeNode.getRecord(); if (type.isConst()) @@ -84,12 +83,12 @@ public class PDOMPointerType extends PDOMNode implements IPointerType, } private byte getFlags() throws CoreException { - return pdom.getDB().getByte(record + FLAGS); + return getDB().getByte(record + FLAGS); } public IType getType() { try { - PDOMNode node = getLinkageImpl().getNode(pdom.getDB().getInt(record + TYPE)); + PDOMNode node = getLinkage().getNode(getDB().getInt(record + TYPE)); return node instanceof IType ? (IType)node : null; } catch (CoreException e) { CCorePlugin.log(e); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMQualifierType.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMQualifierType.java index c74d848920d..0d17134339b 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMQualifierType.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMQualifierType.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2008 QNX Software Systems and others. + * Copyright (c) 2006, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -24,7 +24,6 @@ import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer; import org.eclipse.cdt.internal.core.index.IIndexBindingConstants; import org.eclipse.cdt.internal.core.index.IIndexType; import org.eclipse.cdt.internal.core.index.QualifierTypeClone; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.db.Database; import org.eclipse.core.runtime.CoreException; @@ -44,20 +43,20 @@ public class PDOMQualifierType extends PDOMNode implements IQualifierType, ICQua private static final int VOLATILE = 0x2; private static final int RESTRICT = 0x4; - public PDOMQualifierType(PDOM pdom, int record) { - super(pdom, record); + public PDOMQualifierType(PDOMLinkage linkage, int record) { + super(linkage, record); } - public PDOMQualifierType(PDOM pdom, PDOMNode parent, IQualifierType type) throws CoreException { - super(pdom, parent); + public PDOMQualifierType(PDOMLinkage linkage, PDOMNode parent, IQualifierType type) throws CoreException { + super(linkage, parent); - Database db = pdom.getDB(); + Database db = getDB(); // type try { if (type != null) { IType targetType = type.getType(); - PDOMNode targetTypeNode = getLinkageImpl().addType(this, targetType); + PDOMNode targetTypeNode = getLinkage().addType(this, targetType); if (targetTypeNode != null) { db.putInt(record + TYPE, targetTypeNode.getRecord()); } @@ -88,7 +87,7 @@ public class PDOMQualifierType extends PDOMNode implements IQualifierType, ICQua public IType getType() { try { - PDOMNode node = getLinkageImpl().getNode(pdom.getDB().getInt(record + TYPE)); + PDOMNode node = getLinkage().getNode(getDB().getInt(record + TYPE)); return node instanceof IType ? (IType)node : null; } catch (CoreException e) { CCorePlugin.log(e); @@ -97,7 +96,7 @@ public class PDOMQualifierType extends PDOMNode implements IQualifierType, ICQua } private byte getFlags() throws CoreException { - return pdom.getDB().getByte(record + FLAGS); + return getDB().getByte(record + FLAGS); } public boolean isConst() { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCBasicType.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCBasicType.java index 1fff188d416..f852a8d88eb 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCBasicType.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCBasicType.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2008 QNX Software Systems and others. + * Copyright (c) 2006, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -21,8 +21,8 @@ import org.eclipse.cdt.core.dom.ast.c.ICBasicType; import org.eclipse.cdt.internal.core.Util; import org.eclipse.cdt.internal.core.index.IIndexCBindingConstants; import org.eclipse.cdt.internal.core.index.IIndexType; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.db.Database; +import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; import org.eclipse.core.runtime.CoreException; @@ -45,15 +45,15 @@ class PDOMCBasicType extends PDOMNode implements ICBasicType, IIndexType { public static final int IS_IMAGINARY = 0x20; public static final int IS_COMPLEX = 0x40; - public PDOMCBasicType(PDOM pdom, int record) { - super(pdom, record); + public PDOMCBasicType(PDOMLinkage linkage, int record) { + super(linkage, record); } - public PDOMCBasicType(PDOM pdom, PDOMNode parent, ICBasicType type) throws CoreException { - super(pdom, parent); + public PDOMCBasicType(PDOMLinkage linkage, PDOMNode parent, ICBasicType type) throws CoreException { + super(linkage, parent); try { - Database db = pdom.getDB(); + Database db = getDB(); db.putChar(record + TYPE_ID, (char)type.getType()); char flags = 0; @@ -84,7 +84,7 @@ class PDOMCBasicType extends PDOMNode implements ICBasicType, IIndexType { public int getType() { try { - return pdom.getDB().getChar(record + TYPE_ID); + return getDB().getChar(record + TYPE_ID); } catch (CoreException e) { CCorePlugin.log(e); return 0; @@ -142,7 +142,7 @@ class PDOMCBasicType extends PDOMNode implements ICBasicType, IIndexType { } private char getFlags() throws CoreException { - return pdom.getDB().getChar(record + FLAGS); + return getDB().getChar(record + FLAGS); } private boolean flagSet(int flag) { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCEnumeration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCEnumeration.java index 770accf1853..9918633f030 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCEnumeration.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCEnumeration.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2008 QNX Software Systems and others. + * Copyright (c) 2006, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -22,9 +22,9 @@ import org.eclipse.cdt.core.dom.ast.IType; import org.eclipse.cdt.core.dom.ast.ITypedef; import org.eclipse.cdt.internal.core.index.IIndexCBindingConstants; import org.eclipse.cdt.internal.core.index.IIndexType; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.dom.PDOMASTAdapter; import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; +import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNotImplementedError; import org.eclipse.core.runtime.CoreException; @@ -39,13 +39,13 @@ class PDOMCEnumeration extends PDOMBinding implements IEnumeration, IIndexType { @SuppressWarnings("hiding") protected static final int RECORD_SIZE = PDOMBinding.RECORD_SIZE + 4; - public PDOMCEnumeration(PDOM pdom, PDOMNode parent, IEnumeration enumeration) + public PDOMCEnumeration(PDOMLinkage linkage, PDOMNode parent, IEnumeration enumeration) throws CoreException { - super(pdom, parent, enumeration.getNameCharArray()); + super(linkage, parent, enumeration.getNameCharArray()); } - public PDOMCEnumeration(PDOM pdom, int record) { - super(pdom, record); + public PDOMCEnumeration(PDOMLinkage linkage, int record) { + super(linkage, record); } @Override @@ -77,14 +77,14 @@ class PDOMCEnumeration extends PDOMBinding implements IEnumeration, IIndexType { } private PDOMCEnumerator getFirstEnumerator() throws CoreException { - int value = pdom.getDB().getInt(record + FIRST_ENUMERATOR); - return value != 0 ? new PDOMCEnumerator(pdom, value) : null; + int value = getDB().getInt(record + FIRST_ENUMERATOR); + return value != 0 ? new PDOMCEnumerator(getLinkage(), value) : null; } public void addEnumerator(PDOMCEnumerator enumerator) throws CoreException { PDOMCEnumerator first = getFirstEnumerator(); enumerator.setNextEnumerator(first); - pdom.getDB().putInt(record + FIRST_ENUMERATOR, enumerator.getRecord()); + getDB().putInt(record + FIRST_ENUMERATOR, enumerator.getRecord()); } public boolean isSameType(IType type) { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCEnumerator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCEnumerator.java index e0d8670ae4d..5206011f68a 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCEnumerator.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCEnumerator.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2008 QNX Software Systems and others. + * Copyright (c) 2006, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -18,7 +18,6 @@ import org.eclipse.cdt.core.dom.ast.IType; import org.eclipse.cdt.core.dom.ast.IValue; import org.eclipse.cdt.internal.core.dom.parser.Value; import org.eclipse.cdt.internal.core.index.IIndexCBindingConstants; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.db.Database; import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; @@ -37,18 +36,18 @@ class PDOMCEnumerator extends PDOMBinding implements IEnumerator { @SuppressWarnings("hiding") protected static final int RECORD_SIZE = PDOMBinding.RECORD_SIZE + 12; - public PDOMCEnumerator(PDOM pdom, PDOMNode parent, IEnumerator enumerator, PDOMCEnumeration enumeration) + public PDOMCEnumerator(PDOMLinkage linkage, PDOMNode parent, IEnumerator enumerator, PDOMCEnumeration enumeration) throws CoreException { - super(pdom, parent, enumerator.getNameCharArray()); + super(linkage, parent, enumerator.getNameCharArray()); - final Database db = pdom.getDB(); + final Database db = getDB(); db.putInt(record + ENUMERATION, enumeration.getRecord()); storeValue(db, enumerator); enumeration.addEnumerator(this); } - public PDOMCEnumerator(PDOM pdom, int record) { - super(pdom, record); + public PDOMCEnumerator(PDOMLinkage linkage, int record) { + super(linkage, record); } @Override @@ -72,23 +71,23 @@ class PDOMCEnumerator extends PDOMBinding implements IEnumerator { @Override public void update(PDOMLinkage linkage, IBinding newBinding) throws CoreException { if (newBinding instanceof IEnumerator) - storeValue(pdom.getDB(), (IEnumerator) newBinding); + storeValue(getDB(), (IEnumerator) newBinding); } public PDOMCEnumerator getNextEnumerator() throws CoreException { - int value = pdom.getDB().getInt(record + NEXT_ENUMERATOR); - return value != 0 ? new PDOMCEnumerator(pdom, value) : null; + int value = getDB().getInt(record + NEXT_ENUMERATOR); + return value != 0 ? new PDOMCEnumerator(getLinkage(), value) : null; } public void setNextEnumerator(PDOMCEnumerator enumerator) throws CoreException { int value = enumerator != null ? enumerator.getRecord() : 0; - pdom.getDB().putInt(record + NEXT_ENUMERATOR, value); + getDB().putInt(record + NEXT_ENUMERATOR, value); } public IType getType() throws DOMException { try { - return new PDOMCEnumeration(pdom, pdom.getDB().getInt(record + ENUMERATION)); + return new PDOMCEnumeration(getLinkage(), getDB().getInt(record + ENUMERATION)); } catch (CoreException e) { CCorePlugin.log(e); return null; @@ -97,7 +96,7 @@ class PDOMCEnumerator extends PDOMBinding implements IEnumerator { public IValue getValue() { try { - int val= pdom.getDB().getInt(record + VALUE); + int val= getDB().getInt(record + VALUE); return Value.create(val); } catch (CoreException e) { CCorePlugin.log(e); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCField.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCField.java index 0b6ef675741..2a2dcd77f02 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCField.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCField.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2008 QNX Software Systems and others. + * Copyright (c) 2006, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -16,8 +16,8 @@ import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.ast.ICompositeType; import org.eclipse.cdt.core.dom.ast.IField; import org.eclipse.cdt.internal.core.index.IIndexCBindingConstants; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.dom.IPDOMMemberOwner; +import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; import org.eclipse.core.runtime.CoreException; @@ -27,12 +27,12 @@ import org.eclipse.core.runtime.CoreException; */ class PDOMCField extends PDOMCVariable implements IField { - public PDOMCField(PDOM pdom, IPDOMMemberOwner parent, IField field) throws CoreException { - super(pdom, (PDOMNode) parent, field); + public PDOMCField(PDOMLinkage linkage, IPDOMMemberOwner parent, IField field) throws CoreException { + super(linkage, (PDOMNode) parent, field); } - public PDOMCField(PDOM pdom, int record) { - super(pdom, record); + public PDOMCField(PDOMLinkage linkage, int record) { + super(linkage, record); } @Override diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCFunction.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCFunction.java index 2e8ff884b44..e747de0e14e 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCFunction.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCFunction.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2007 QNX Software Systems and others. + * Copyright (c) 2006, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -23,7 +23,6 @@ import org.eclipse.cdt.core.dom.ast.IParameter; import org.eclipse.cdt.core.dom.ast.IScope; import org.eclipse.cdt.internal.core.Util; import org.eclipse.cdt.internal.core.index.IIndexCBindingConstants; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; @@ -64,8 +63,12 @@ class PDOMCFunction extends PDOMBinding implements IFunction { @SuppressWarnings("hiding") public static final int RECORD_SIZE = PDOMBinding.RECORD_SIZE + 13; - public PDOMCFunction(PDOM pdom, PDOMNode parent, IFunction function) throws CoreException { - super(pdom, parent, function.getNameCharArray()); + public PDOMCFunction(PDOMLinkage linkage, int record) { + super(linkage, record); + } + + public PDOMCFunction(PDOMLinkage linkage, PDOMNode parent, IFunction function) throws CoreException { + super(linkage, parent, function.getNameCharArray()); IFunctionType type; IParameter[] parameters; @@ -77,9 +80,9 @@ class PDOMCFunction extends PDOMBinding implements IFunction { } catch(DOMException e) { throw new CoreException(Util.createStatus(e)); } - setType(getLinkageImpl(), type); + setType(getLinkage(), type); setParameters(parameters); - pdom.getDB().putByte(record + ANNOTATIONS, annotations); + getDB().putByte(record + ANNOTATIONS, annotations); } @Override @@ -107,7 +110,7 @@ class PDOMCFunction extends PDOMBinding implements IFunction { if (oldParams != null) { oldParams.delete(linkage); } - pdom.getDB().putByte(record + ANNOTATIONS, newAnnotation); + getDB().putByte(record + ANNOTATIONS, newAnnotation); } } @@ -119,32 +122,29 @@ class PDOMCFunction extends PDOMBinding implements IFunction { rec= typeNode.getRecord(); } } - pdom.getDB().putInt(record + FUNCTION_TYPE, rec); + getDB().putInt(record + FUNCTION_TYPE, rec); } private void setParameters(IParameter[] params) throws CoreException { - pdom.getDB().putInt(record + NUM_PARAMS, params.length); - pdom.getDB().putInt(record + FIRST_PARAM, 0); + getDB().putInt(record + NUM_PARAMS, params.length); + getDB().putInt(record + FIRST_PARAM, 0); for (int i = 0; i < params.length; ++i) { - setFirstParameter(new PDOMCParameter(pdom, this, params[i])); + setFirstParameter(new PDOMCParameter(getLinkage(), this, params[i])); } } public PDOMCParameter getFirstParameter() throws CoreException { - int rec = pdom.getDB().getInt(record + FIRST_PARAM); - return rec != 0 ? new PDOMCParameter(pdom, rec) : null; + int rec = getDB().getInt(record + FIRST_PARAM); + return rec != 0 ? new PDOMCParameter(getLinkage(), rec) : null; } public void setFirstParameter(PDOMCParameter param) throws CoreException { if (param != null) param.setNextParameter(getFirstParameter()); int rec = param != null ? param.getRecord() : 0; - pdom.getDB().putInt(record + FIRST_PARAM, rec); + getDB().putInt(record + FIRST_PARAM, rec); } - public PDOMCFunction(PDOM pdom, int record) { - super(pdom, record); - } @Override protected int getRecordSize() { @@ -165,8 +165,8 @@ class PDOMCFunction extends PDOMBinding implements IFunction { * both the IType and IBinding interfaces. */ try { - int offset= pdom.getDB().getInt(record + FUNCTION_TYPE); - return offset==0 ? null : new PDOMCFunctionType(pdom, offset); + int offset= getDB().getInt(record + FUNCTION_TYPE); + return offset==0 ? null : new PDOMCFunctionType(getLinkage(), offset); } catch(CoreException ce) { CCorePlugin.log(ce); return null; @@ -183,7 +183,7 @@ class PDOMCFunction extends PDOMBinding implements IFunction { public IParameter[] getParameters() throws DOMException { try { - int n = pdom.getDB().getInt(record + NUM_PARAMS); + int n = getDB().getInt(record + NUM_PARAMS); IParameter[] params = new IParameter[n]; PDOMCParameter param = getFirstParameter(); while (param != null) { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCFunctionType.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCFunctionType.java index d8be997e353..5a0bf4a5c35 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCFunctionType.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCFunctionType.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2008 Symbian Software Systems and others. + * Copyright (c) 2007, 2009 Symbian Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -27,7 +27,6 @@ import org.eclipse.cdt.core.dom.ast.ITypedef; import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil; import org.eclipse.cdt.internal.core.index.IIndexCBindingConstants; import org.eclipse.cdt.internal.core.index.IIndexType; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.db.PDOMNodeLinkedList; import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; @@ -53,16 +52,15 @@ public class PDOMCFunctionType extends PDOMNode implements IIndexType, IFunction @SuppressWarnings("hiding") protected static final int RECORD_SIZE= PDOMNode.RECORD_SIZE + 8; - public PDOMCFunctionType(PDOM pdom, int record) { - super(pdom, record); + public PDOMCFunctionType(PDOMLinkage linkage, int record) { + super(linkage, record); } - public PDOMCFunctionType(PDOM pdom, PDOMNode parent, IFunctionType type) throws CoreException { - super(pdom, parent); + public PDOMCFunctionType(PDOMLinkage linkage, PDOMNode parent, IFunctionType type) throws CoreException { + super(linkage, parent); try { - PDOMLinkage linkage= parent.getLinkageImpl(); - PDOMNodeLinkedList list= new PDOMNodeLinkedList(pdom, record + TYPELIST, parent.getLinkageImpl(), true); + PDOMNodeLinkedList list= new PDOMNodeLinkedList(parent.getLinkage(), record + TYPELIST, true); setReturnType(type.getReturnType()); IType[] pt= type.getParameterTypes(); for (int i = 0; i < pt.length; i++) { @@ -81,7 +79,7 @@ public class PDOMCFunctionType extends PDOMNode implements IIndexType, IFunction @Override public void delete(final PDOMLinkage linkage) throws CoreException { linkage.deleteType(getReturnType(), record); - PDOMNodeLinkedList list = new PDOMNodeLinkedList(pdom, record + TYPELIST, getLinkageImpl(), true); + PDOMNodeLinkedList list = new PDOMNodeLinkedList(getLinkage(), record + TYPELIST, true); list.accept(new IPDOMVisitor() { public void leave(IPDOMNode node) throws CoreException { } @@ -152,7 +150,7 @@ public class PDOMCFunctionType extends PDOMNode implements IIndexType, IFunction public IType[] getParameterTypes() { final List result= new ArrayList(); try { - PDOMNodeLinkedList list = new PDOMNodeLinkedList(pdom, record + TYPELIST, getLinkageImpl(), true); + PDOMNodeLinkedList list = new PDOMNodeLinkedList(getLinkage(), record + TYPELIST, true); list.accept(new IPDOMVisitor() { public void leave(IPDOMNode node) throws CoreException { result.add((IType)node); @@ -169,7 +167,7 @@ public class PDOMCFunctionType extends PDOMNode implements IIndexType, IFunction public IType getReturnType() { try { - PDOMNode node = getLinkageImpl().getNode(pdom.getDB().getInt(record + RETURN_TYPE)); + PDOMNode node = getLinkage().getNode(getDB().getInt(record + RETURN_TYPE)); if (node instanceof IType) { return (IType) node; } @@ -180,9 +178,9 @@ public class PDOMCFunctionType extends PDOMNode implements IIndexType, IFunction } public void setReturnType(IType type) throws CoreException { - PDOMNode typeNode = getLinkageImpl().addType(this, type); + PDOMNode typeNode = getLinkage().addType(this, type); if (typeNode != null) { - pdom.getDB().putInt(record + RETURN_TYPE, typeNode.getRecord()); + getDB().putInt(record + RETURN_TYPE, typeNode.getRecord()); } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCLinkage.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCLinkage.java index 9dcfa95cca2..625026c5a75 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCLinkage.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCLinkage.java @@ -90,12 +90,12 @@ class PDOMCLinkage extends PDOMLinkage implements IIndexCBindingConstants { if (pdomBinding == null) { pdomBinding = createBinding(parent, binding, localToFileHolder[0]); if (pdomBinding != null) { - pdom.putCachedResult(inputBinding, pdomBinding); + getPDOM().putCachedResult(inputBinding, pdomBinding); } return pdomBinding; } - pdom.putCachedResult(inputBinding, pdomBinding); + getPDOM().putCachedResult(inputBinding, pdomBinding); } if (shouldUpdate(pdomBinding, fromName)) { @@ -109,30 +109,30 @@ class PDOMCLinkage extends PDOMLinkage implements IIndexCBindingConstants { if (binding instanceof IField) { // must be before IVariable if (parent instanceof IPDOMMemberOwner) - pdomBinding = new PDOMCField(pdom, (IPDOMMemberOwner)parent, (IField) binding); + pdomBinding = new PDOMCField(this, (IPDOMMemberOwner)parent, (IField) binding); } else if (binding instanceof IVariable) { IVariable var= (IVariable) binding; - pdomBinding = new PDOMCVariable(pdom, parent, var); + pdomBinding = new PDOMCVariable(this, parent, var); } else if (binding instanceof IFunction) { IFunction func= (IFunction) binding; - pdomBinding = new PDOMCFunction(pdom, parent, func); + pdomBinding = new PDOMCFunction(this, parent, func); } else if (binding instanceof ICompositeType) { - pdomBinding = new PDOMCStructure(pdom, parent, (ICompositeType) binding); + pdomBinding = new PDOMCStructure(this, parent, (ICompositeType) binding); } else if (binding instanceof IEnumeration) { - pdomBinding = new PDOMCEnumeration(pdom, parent, (IEnumeration) binding); + pdomBinding = new PDOMCEnumeration(this, parent, (IEnumeration) binding); } else if (binding instanceof IEnumerator) { try { IType enumeration= ((IEnumerator)binding).getType(); if (enumeration instanceof IEnumeration) { PDOMBinding pdomEnumeration = adaptBinding((IEnumeration) enumeration); if (pdomEnumeration instanceof PDOMCEnumeration) - pdomBinding = new PDOMCEnumerator(pdom, parent, (IEnumerator) binding, (PDOMCEnumeration)pdomEnumeration); + pdomBinding = new PDOMCEnumerator(this, parent, (IEnumerator) binding, (PDOMCEnumeration)pdomEnumeration); } } catch (DOMException e) { CCorePlugin.log(e); } } else if (binding instanceof ITypedef) { - pdomBinding = new PDOMCTypedef(pdom, parent, (ITypedef)binding); + pdomBinding = new PDOMCTypedef(this, parent, (ITypedef)binding); } if (pdomBinding != null) { @@ -251,7 +251,7 @@ class PDOMCLinkage extends PDOMLinkage implements IIndexCBindingConstants { result= doAdaptBinding(parent, binding, localToFileHolder); if (result != null) { - pdom.putCachedResult(inputBinding, result); + getPDOM().putCachedResult(inputBinding, result); } return result; } @@ -275,22 +275,22 @@ class PDOMCLinkage extends PDOMLinkage implements IIndexCBindingConstants { if (parent == this) { final int[] bindingTypes = new int[] {getBindingType(binding)}; final char[] nameChars = binding.getNameCharArray(); - PDOMBinding nonLocal= FindBinding.findBinding(getIndex(), getPDOM(), nameChars, bindingTypes, 0); + PDOMBinding nonLocal= FindBinding.findBinding(getIndex(), this, nameChars, bindingTypes, 0); int localToFileRec= getLocalToFileRec(inheritFileLocal, binding, nonLocal); if (localToFileRec == 0) return nonLocal; localToFileHolder[0]= localToFileRec; - return FindBinding.findBinding(getIndex(), getPDOM(), nameChars, bindingTypes, localToFileRec); + return FindBinding.findBinding(getIndex(), this, nameChars, bindingTypes, localToFileRec); } if (parent instanceof IPDOMMemberOwner) { final int[] bindingTypes = new int[] {getBindingType(binding)}; final char[] nameChars = binding.getNameCharArray(); - PDOMBinding nonLocal= FindBinding.findBinding(parent, getPDOM(), nameChars, bindingTypes, 0); + PDOMBinding nonLocal= FindBinding.findBinding(parent, this, nameChars, bindingTypes, 0); int localToFileRec= getLocalToFileRec(inheritFileLocal, binding, nonLocal); if (localToFileRec == 0) return nonLocal; localToFileHolder[0]= localToFileRec; - return FindBinding.findBinding(parent, getPDOM(), nameChars, bindingTypes, localToFileRec); + return FindBinding.findBinding(parent, this, nameChars, bindingTypes, localToFileRec); } return null; } @@ -300,27 +300,27 @@ class PDOMCLinkage extends PDOMLinkage implements IIndexCBindingConstants { if (record == 0) return null; - switch (PDOMNode.getNodeType(pdom, record)) { + switch (PDOMNode.getNodeType(getDB(), record)) { case CVARIABLE: - return new PDOMCVariable(pdom, record); + return new PDOMCVariable(this, record); case CFUNCTION: - return new PDOMCFunction(pdom, record); + return new PDOMCFunction(this, record); case CSTRUCTURE: - return new PDOMCStructure(pdom, record); + return new PDOMCStructure(this, record); case CFIELD: - return new PDOMCField(pdom, record); + return new PDOMCField(this, record); case CENUMERATION: - return new PDOMCEnumeration(pdom, record); + return new PDOMCEnumeration(this, record); case CENUMERATOR: - return new PDOMCEnumerator(pdom, record); + return new PDOMCEnumerator(this, record); case CTYPEDEF: - return new PDOMCTypedef(pdom, record); + return new PDOMCTypedef(this, record); case CPARAMETER: - return new PDOMCParameter(pdom, record); + return new PDOMCParameter(this, record); case CBASICTYPE: - return new PDOMCBasicType(pdom, record); + return new PDOMCBasicType(this, record); case CFUNCTIONTYPE: - return new PDOMCFunctionType(pdom, record); + return new PDOMCFunctionType(this, record); } return super.getNode(record); @@ -332,9 +332,9 @@ class PDOMCLinkage extends PDOMLinkage implements IIndexCBindingConstants { return null; if (type instanceof ICBasicType) { - return new PDOMCBasicType(pdom, parent, (ICBasicType)type); + return new PDOMCBasicType(this, parent, (ICBasicType)type); } else if(type instanceof IFunctionType) { - return new PDOMCFunctionType(pdom, parent, (IFunctionType)type); + return new PDOMCFunctionType(this, parent, (IFunctionType)type); } else if (type instanceof IBinding) { return addBinding((IBinding)type, null); } @@ -344,6 +344,6 @@ class PDOMCLinkage extends PDOMLinkage implements IIndexCBindingConstants { @Override public IBTreeComparator getIndexComparator() { - return new FindBinding.DefaultBindingBTreeComparator(getPDOM()); + return new FindBinding.DefaultBindingBTreeComparator(this); } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCParameter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCParameter.java index d0bf39d8ae6..be01aadf459 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCParameter.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCParameter.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2008 QNX Software Systems and others. + * Copyright (c) 2006, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -24,7 +24,6 @@ import org.eclipse.cdt.internal.core.Util; import org.eclipse.cdt.internal.core.index.IIndexCBindingConstants; import org.eclipse.cdt.internal.core.index.IIndexFragment; import org.eclipse.cdt.internal.core.index.IIndexScope; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.db.Database; import org.eclipse.cdt.internal.core.pdom.dom.IPDOMBinding; import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; @@ -49,22 +48,22 @@ class PDOMCParameter extends PDOMNamedNode implements IParameter, IPDOMBinding { assert RECORD_SIZE <= 22; // 23 would yield a 32-byte block } - public PDOMCParameter(PDOM pdom, int record) { - super(pdom, record); + public PDOMCParameter(PDOMLinkage linkage, int record) { + super(linkage, record); } - public PDOMCParameter(PDOM pdom, PDOMNode parent, IParameter param) + public PDOMCParameter(PDOMLinkage linkage, PDOMNode parent, IParameter param) throws CoreException { - super(pdom, parent, param.getNameCharArray()); + super(linkage, parent, param.getNameCharArray()); - Database db = pdom.getDB(); + Database db = getDB(); db.putInt(record + NEXT_PARAM, 0); try { if(!(param instanceof IProblemBinding)) { IType type = param.getType(); if (type != null) { - PDOMNode typeNode = getLinkageImpl().addType(this, type); + PDOMNode typeNode = getLinkage().addType(this, type); db.putInt(record + TYPE, typeNode != null ? typeNode.getRecord() : 0); } byte flags = encodeFlags(param); @@ -87,12 +86,12 @@ class PDOMCParameter extends PDOMNamedNode implements IParameter, IPDOMBinding { public void setNextParameter(PDOMCParameter nextParam) throws CoreException { int rec = nextParam != null ? nextParam.getRecord() : 0; - pdom.getDB().putInt(record + NEXT_PARAM, rec); + getDB().putInt(record + NEXT_PARAM, rec); } public PDOMCParameter getNextParameter() throws CoreException { - int rec = pdom.getDB().getInt(record + NEXT_PARAM); - return rec != 0 ? new PDOMCParameter(pdom, rec) : null; + int rec = getDB().getInt(record + NEXT_PARAM); + return rec != 0 ? new PDOMCParameter(getLinkage(), rec) : null; } public IASTInitializer getDefaultValue() { @@ -102,8 +101,8 @@ class PDOMCParameter extends PDOMNamedNode implements IParameter, IPDOMBinding { public IType getType() { try { - PDOMLinkage linkage = getLinkageImpl(); - PDOMNode node = linkage.getNode(pdom.getDB().getInt(record + TYPE)); + PDOMLinkage linkage = getLinkage(); + PDOMNode node = linkage.getNode(getDB().getInt(record + TYPE)); return node instanceof IType ? (IType)node : null; } catch (CoreException e) { CCorePlugin.log(e); @@ -153,7 +152,7 @@ class PDOMCParameter extends PDOMNamedNode implements IParameter, IPDOMBinding { } public IIndexFragment getFragment() { - return pdom; + return getPDOM(); } public boolean hasDefinition() throws CoreException { @@ -222,7 +221,7 @@ class PDOMCParameter extends PDOMNamedNode implements IParameter, IPDOMBinding { protected boolean hasFlag(byte flag, boolean defValue) { try { - byte myflags= pdom.getDB().getByte(record + FLAGS); + byte myflags= getDB().getByte(record + FLAGS); return (myflags & flag) == flag; } catch (CoreException e) { CCorePlugin.log(e); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCStructure.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCStructure.java index cc5423e6619..fc3e91034c9 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCStructure.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCStructure.java @@ -56,15 +56,15 @@ public class PDOMCStructure extends PDOMBinding implements ICompositeType, ICCom @SuppressWarnings("hiding") protected static final int RECORD_SIZE = MEMBERLIST + 6; - public PDOMCStructure(PDOM pdom, PDOMNode parent, ICompositeType compType) throws CoreException { - super(pdom, parent, compType.getNameCharArray()); + public PDOMCStructure(PDOMLinkage linkage, PDOMNode parent, ICompositeType compType) throws CoreException { + super(linkage, parent, compType.getNameCharArray()); setKind(compType); setAnonymous(compType); // linked list is initialized by malloc zeroing allocated storage } - public PDOMCStructure(PDOM pdom, int record) { - super(pdom, record); + public PDOMCStructure(PDOMLinkage linkage, int record) { + super(linkage, record); } public EScopeKind getKind() { @@ -83,7 +83,7 @@ public class PDOMCStructure extends PDOMBinding implements ICompositeType, ICCom private void setKind(ICompositeType ct) throws CoreException { try { - pdom.getDB().putByte(record + KEY, (byte) ct.getKey()); + getDB().putByte(record + KEY, (byte) ct.getKey()); } catch (DOMException e) { throw new CoreException(Util.createStatus(e)); } @@ -91,7 +91,7 @@ public class PDOMCStructure extends PDOMBinding implements ICompositeType, ICCom private void setAnonymous(ICompositeType ct) throws CoreException { try { - pdom.getDB().putByte(record + ANONYMOUS, (byte) (ct.isAnonymous() ? 1 : 0)); + getDB().putByte(record + ANONYMOUS, (byte) (ct.isAnonymous() ? 1 : 0)); } catch (DOMException e) { throw new CoreException(Util.createStatus(e)); } @@ -101,7 +101,7 @@ public class PDOMCStructure extends PDOMBinding implements ICompositeType, ICCom @Override public void accept(IPDOMVisitor visitor) throws CoreException { super.accept(visitor); - new PDOMNodeLinkedList(pdom, record+MEMBERLIST, getLinkageImpl()).accept(visitor); + new PDOMNodeLinkedList(getLinkage(), record+MEMBERLIST).accept(visitor); } @Override @@ -116,7 +116,7 @@ public class PDOMCStructure extends PDOMBinding implements ICompositeType, ICCom public int getKey() throws DOMException { try { - return pdom.getDB().getByte(record + KEY); + return getDB().getByte(record + KEY); } catch (CoreException e) { CCorePlugin.log(e); return ICompositeType.k_struct; // or something @@ -125,7 +125,7 @@ public class PDOMCStructure extends PDOMBinding implements ICompositeType, ICCom public boolean isAnonymous() throws DOMException { try { - return pdom.getDB().getByte(record + ANONYMOUS) != 0; + return getDB().getByte(record + ANONYMOUS) != 0; } catch (CoreException e) { CCorePlugin.log(e); return false; @@ -198,6 +198,7 @@ public class PDOMCStructure extends PDOMBinding implements ICompositeType, ICCom } public IField findField(String name) throws DOMException { + final PDOM pdom = getPDOM(); final String key= pdom.createKeyForCache(record, name.toCharArray()); IField result= (IField) pdom.getCachedResult(key); if (result != null) { @@ -259,7 +260,7 @@ public class PDOMCStructure extends PDOMBinding implements ICompositeType, ICCom @Override public void addChild(PDOMNode member) throws CoreException { - new PDOMNodeLinkedList(pdom, record+MEMBERLIST, getLinkageImpl()).addMember(member); + new PDOMNodeLinkedList(getLinkage(), record+MEMBERLIST).addMember(member); } @Override diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCTypedef.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCTypedef.java index e60d3869350..f2511457364 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCTypedef.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCTypedef.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2007 QNX Software Systems and others. + * Copyright (c) 2006, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -23,7 +23,6 @@ import org.eclipse.cdt.internal.core.Util; import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer; import org.eclipse.cdt.internal.core.index.IIndexCBindingConstants; import org.eclipse.cdt.internal.core.index.IIndexType; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; @@ -39,20 +38,20 @@ class PDOMCTypedef extends PDOMBinding implements ITypedef, ITypeContainer, IInd @SuppressWarnings("hiding") protected static final int RECORD_SIZE = PDOMBinding.RECORD_SIZE + 4; - public PDOMCTypedef(PDOM pdom, PDOMNode parent, ITypedef typedef) + public PDOMCTypedef(PDOMLinkage linkage, PDOMNode parent, ITypedef typedef) throws CoreException { - super(pdom, parent, typedef.getNameCharArray()); + super(linkage, parent, typedef.getNameCharArray()); try { IType type = typedef.getType(); - setType(parent.getLinkageImpl(), type); + setType(parent.getLinkage(), type); } catch (DOMException e) { throw new CoreException(Util.createStatus(e)); } } - public PDOMCTypedef(PDOM pdom, int record) { - super(pdom, record); + public PDOMCTypedef(PDOMLinkage linkage, int record) { + super(linkage, record); } @Override @@ -78,7 +77,7 @@ class PDOMCTypedef extends PDOMBinding implements ITypedef, ITypeContainer, IInd linkage.deleteType((IType) typeNode, record); typeNode= null; } - pdom.getDB().putInt(record + TYPE, typeNode != null ? typeNode.getRecord() : 0); + getDB().putInt(record + TYPE, typeNode != null ? typeNode.getRecord() : 0); } private boolean introducesRecursion(IType type, char[] tdname) throws DOMException { @@ -123,8 +122,8 @@ class PDOMCTypedef extends PDOMBinding implements ITypedef, ITypeContainer, IInd public IType getType() { try { - int typeRec = pdom.getDB().getInt(record + TYPE); - return (IType)getLinkageImpl().getNode(typeRec); + int typeRec = getDB().getInt(record + TYPE); + return (IType)getLinkage().getNode(typeRec); } catch (CoreException e) { CCorePlugin.log(e); return null; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCVariable.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCVariable.java index d70c70bc41f..f836dd3dbe6 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCVariable.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCVariable.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2008 QNX Software Systems and others. + * Copyright (c) 2006, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -22,7 +22,6 @@ import org.eclipse.cdt.core.dom.ast.IVariable; import org.eclipse.cdt.internal.core.Util; import org.eclipse.cdt.internal.core.dom.parser.c.CVariableReadWriteFlags; import org.eclipse.cdt.internal.core.index.IIndexCBindingConstants; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.db.Database; import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; @@ -60,12 +59,12 @@ class PDOMCVariable extends PDOMBinding implements IVariable { @SuppressWarnings("hiding") protected static final int RECORD_SIZE = PDOMBinding.RECORD_SIZE + 9; - public PDOMCVariable(PDOM pdom, PDOMNode parent, IVariable variable) throws CoreException { - super(pdom, parent, variable.getNameCharArray()); + public PDOMCVariable(PDOMLinkage linkage, PDOMNode parent, IVariable variable) throws CoreException { + super(linkage, parent, variable.getNameCharArray()); try { - final Database db = pdom.getDB(); - setType(parent.getLinkageImpl(), variable.getType()); + final Database db = getDB(); + setType(parent.getLinkage(), variable.getType()); db.putByte(record + ANNOTATIONS, PDOMCAnnotation.encodeAnnotation(variable)); setValue(db, variable); @@ -83,7 +82,7 @@ class PDOMCVariable extends PDOMBinding implements IVariable { @Override public void update(final PDOMLinkage linkage, IBinding newBinding) throws CoreException { if (newBinding instanceof IVariable) { - final Database db = pdom.getDB(); + final Database db = getDB(); IVariable var= (IVariable) newBinding; IType mytype= getType(); int valueRec= db.getInt(record + VALUE_OFFSET); @@ -104,11 +103,11 @@ class PDOMCVariable extends PDOMBinding implements IVariable { private void setType(final PDOMLinkage linkage, final IType type) throws CoreException { final PDOMNode typeNode = linkage.addType(this, type); - pdom.getDB().putInt(record + TYPE_OFFSET, typeNode != null ? typeNode.getRecord() : 0); + getDB().putInt(record + TYPE_OFFSET, typeNode != null ? typeNode.getRecord() : 0); } - public PDOMCVariable(PDOM pdom, int record) { - super(pdom, record); + public PDOMCVariable(PDOMLinkage linkage, int record) { + super(linkage, record); } @Override @@ -123,8 +122,8 @@ class PDOMCVariable extends PDOMBinding implements IVariable { public IType getType() { try { - int typeRec = pdom.getDB().getInt(record + TYPE_OFFSET); - return (IType)getLinkageImpl().getNode(typeRec); + int typeRec = getDB().getInt(record + TYPE_OFFSET); + return (IType)getLinkage().getNode(typeRec); } catch (CoreException e) { CCorePlugin.log(e); return null; @@ -133,7 +132,7 @@ class PDOMCVariable extends PDOMBinding implements IVariable { public IValue getInitialValue() { try { - final Database db = pdom.getDB(); + final Database db = getDB(); int valRec = db.getInt(record + VALUE_OFFSET); return PDOMValue.restore(db, getLinkage(), valRec); } catch (CoreException e) { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/CPPFindBinding.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/CPPFindBinding.java index 1346650c74c..37eaab6b732 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/CPPFindBinding.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/CPPFindBinding.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2008 Symbian Software Systems and others. + * Copyright (c) 2006, 2009 Symbian Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -14,7 +14,6 @@ package org.eclipse.cdt.internal.core.pdom.dom.cpp; import org.eclipse.cdt.core.dom.ast.DOMException; import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.internal.core.index.IndexCPPSignatureUtil; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.db.BTree; import org.eclipse.cdt.internal.core.pdom.dom.FindBinding; import org.eclipse.cdt.internal.core.pdom.dom.IPDOMOverloader; @@ -32,15 +31,15 @@ import org.eclipse.core.runtime.OperationCanceledException; public class CPPFindBinding extends FindBinding { public static class CPPBindingBTreeComparator extends FindBinding.DefaultBindingBTreeComparator { - public CPPBindingBTreeComparator(PDOM pdom) { - super(pdom); + public CPPBindingBTreeComparator(PDOMLinkage linkage) { + super(linkage); } @Override public int compare(int record1, int record2) throws CoreException { int cmp = super.compare(record1, record2); if (cmp == 0) { - PDOMBinding binding1 = pdom.getBinding(record1); - PDOMBinding binding2 = pdom.getBinding(record2); + PDOMBinding binding1 = linkage.getBinding(record1); + PDOMBinding binding2 = linkage.getBinding(record2); if (binding1 instanceof IPDOMOverloader && binding2 instanceof IPDOMOverloader) { int ty1 = ((IPDOMOverloader) binding1).getSignatureHash(); int ty2 = ((IPDOMOverloader) binding2).getSignatureHash(); @@ -54,8 +53,8 @@ public class CPPFindBinding extends FindBinding { public static class CPPFindBindingVisitor extends FindBinding.DefaultFindBindingVisitor { private final int fConstant; private final int fSigHash; - public CPPFindBindingVisitor(PDOM pdom, char[] name, int constant, int hash, int localToFile) { - super(pdom, name, new int[] {constant}, localToFile); + public CPPFindBindingVisitor(PDOMLinkage linkage, char[] name, int constant, int hash, int localToFile) { + super(linkage, name, new int[] {constant}, localToFile); fConstant= constant; fSigHash= hash; } @@ -64,10 +63,10 @@ public class CPPFindBinding extends FindBinding { public int compare(int record) throws CoreException { int cmp= super.compare(record); if (cmp == 0) { - int c1 = PDOMNode.getNodeType(fPdom, record); + int c1 = PDOMNode.getNodeType(fLinkage.getDB(), record); int c2= fConstant; if (c1 == c2) { - PDOMBinding binding = fPdom.getBinding(record); + PDOMBinding binding = fLinkage.getBinding(record); if (binding instanceof IPDOMOverloader) { c1 = ((IPDOMOverloader) binding).getSignatureHash(); c2= fSigHash; @@ -80,7 +79,7 @@ public class CPPFindBinding extends FindBinding { @Override public boolean visit(int record) throws CoreException { - fResult= fPdom.getBinding(record); + fResult= fLinkage.getBinding(record); return false; } @@ -96,16 +95,16 @@ public class CPPFindBinding extends FindBinding { } } - public static PDOMBinding findBinding(BTree btree, final PDOM pdom, final char[] name, + public static PDOMBinding findBinding(BTree btree, final PDOMLinkage linkage, final char[] name, final int c2, final int ty2, int localToFileRec) throws CoreException { - CPPFindBindingVisitor visitor= new CPPFindBindingVisitor(pdom, name, c2, ty2, localToFileRec); + CPPFindBindingVisitor visitor= new CPPFindBindingVisitor(linkage, name, c2, ty2, localToFileRec); btree.accept(visitor); return visitor.getResult(); } - public static PDOMBinding findBinding(PDOMNode node, PDOM pdom, char[] name, int constant, + public static PDOMBinding findBinding(PDOMNode node, PDOMLinkage linkage, char[] name, int constant, int sigHash, int localToFileRec) throws CoreException { - CPPFindBindingVisitor visitor= new CPPFindBindingVisitor(pdom, name, constant, sigHash, + CPPFindBindingVisitor visitor= new CPPFindBindingVisitor(linkage, name, constant, sigHash, localToFileRec); try { node.accept(visitor); @@ -122,10 +121,10 @@ public class CPPFindBinding extends FindBinding { } catch (DOMException e) { } if (hash != null) { - return findBinding(btree, linkage.getPDOM(), binding.getNameCharArray(), + return findBinding(btree, linkage, binding.getNameCharArray(), linkage.getBindingType(binding), hash.intValue(), localToFileRec); } - return findBinding(btree, linkage.getPDOM(), binding.getNameCharArray(), + return findBinding(btree, linkage, binding.getNameCharArray(), new int[] {linkage.getBindingType(binding)}, localToFileRec); } @@ -137,10 +136,10 @@ public class CPPFindBinding extends FindBinding { } catch (DOMException e) { } if (hash != null) { - return findBinding(node, linkage.getPDOM(), binding.getNameCharArray(), + return findBinding(node, linkage, binding.getNameCharArray(), linkage.getBindingType(binding), hash.intValue(), localToFileRec); } - return findBinding(node, linkage.getPDOM(), binding.getNameCharArray(), + return findBinding(node, linkage, binding.getNameCharArray(), new int[] {linkage.getBindingType(binding)}, localToFileRec); } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPArgumentList.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPArgumentList.java index b136f535f58..9716d98b765 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPArgumentList.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPArgumentList.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008 Wind River Systems, Inc. and others. + * Copyright (c) 2008, 2009 Wind River Systems, Inc. and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -32,7 +32,7 @@ public class PDOMCPPArgumentList { */ public static int putArguments(PDOMNode parent, ICPPTemplateArgument[] templateArguments) throws CoreException { final PDOMLinkage linkage= parent.getLinkage(); - final Database db= linkage.getPDOM().getDB(); + final Database db= linkage.getDB(); final short len= (short) Math.min(templateArguments.length, (Database.MAX_MALLOC_SIZE-2)/8); final int block= db.malloc(2+8*len); int p= block; @@ -62,7 +62,7 @@ public class PDOMCPPArgumentList { */ public static void clearArguments(PDOMNode parent, final int record) throws CoreException { final PDOMLinkage linkage= parent.getLinkage(); - final Database db= linkage.getPDOM().getDB(); + final Database db= linkage.getDB(); final short len= db.getShort(record); Assert.isTrue(len >= 0 && len <= (Database.MAX_MALLOC_SIZE-2)/8); @@ -85,7 +85,7 @@ public class PDOMCPPArgumentList { */ public static ICPPTemplateArgument[] getArguments(PDOMNode parent, int rec) throws CoreException { final PDOMLinkage linkage= parent.getLinkage(); - final Database db= linkage.getPDOM().getDB(); + final Database db= linkage.getDB(); final short len= db.getShort(rec); Assert.isTrue(len >= 0 && len <= (Database.MAX_MALLOC_SIZE-2)/8); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPBase.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPBase.java index 08b2a50f94c..f35ea1ea951 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPBase.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPBase.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2008 QNX Software Systems and others. + * Copyright (c) 2006, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -17,9 +17,9 @@ import org.eclipse.cdt.core.dom.ast.DOMException; import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.cpp.ICPPBase; import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInternalBase; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.db.Database; import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; +import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; import org.eclipse.cdt.internal.core.pdom.dom.PDOMName; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNotImplementedError; import org.eclipse.core.runtime.CoreException; @@ -35,19 +35,19 @@ class PDOMCPPBase implements ICPPBase, ICPPInternalBase { protected static final int RECORD_SIZE = 9; - protected final PDOM pdom; - protected final int record; + private final PDOMLinkage linkage; + private final int record; private PDOMBinding fCachedBaseClass; - public PDOMCPPBase(PDOM pdom, int record) { - this.pdom = pdom; + public PDOMCPPBase(PDOMLinkage linkage, int record) { + this.linkage = linkage; this.record = record; } - public PDOMCPPBase(PDOM pdom, PDOMName baseClassSpec, boolean isVirtual, int visibility) throws CoreException { - this.pdom = pdom; - Database db = pdom.getDB(); + public PDOMCPPBase(PDOMLinkage linkage, PDOMName baseClassSpec, boolean isVirtual, int visibility) throws CoreException { + this.linkage = linkage; + Database db = getDB(); this.record = db.malloc(RECORD_SIZE); int baserec = baseClassSpec != null ? baseClassSpec.getRecord() : 0; @@ -57,29 +57,33 @@ class PDOMCPPBase implements ICPPBase, ICPPInternalBase { db.putByte(record + FLAGS, flags); } + private Database getDB() { + return linkage.getDB(); + } + public int getRecord() { return record; } public void setNextBase(PDOMCPPBase nextBase) throws CoreException { int rec = nextBase != null ? nextBase.getRecord() : 0; - pdom.getDB().putInt(record + NEXTBASE, rec); + getDB().putInt(record + NEXTBASE, rec); } public PDOMCPPBase getNextBase() throws CoreException { - int rec = pdom.getDB().getInt(record + NEXTBASE); - return rec != 0 ? new PDOMCPPBase(pdom, rec) : null; + int rec = getDB().getInt(record + NEXTBASE); + return rec != 0 ? new PDOMCPPBase(linkage, rec) : null; } private int getFlags() throws CoreException { - return pdom.getDB().getByte(record + FLAGS); + return getDB().getByte(record + FLAGS); } public PDOMName getBaseClassSpecifierName() { try { - int rec = pdom.getDB().getInt(record + BASECLASS_SPECIFIER); + int rec = getDB().getInt(record + BASECLASS_SPECIFIER); if (rec != 0) { - return new PDOMName(pdom, rec); + return new PDOMName(linkage, rec); } } catch (CoreException e) { CCorePlugin.log(e); @@ -126,7 +130,7 @@ class PDOMCPPBase implements ICPPBase, ICPPInternalBase { } public void delete() throws CoreException { - pdom.getDB().free(record); + getDB().free(record); } public void setBaseClass(IBinding binding) { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPBasicType.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPBasicType.java index fe3db146083..70d69360f9c 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPBasicType.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPBasicType.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2008 QNX Software Systems and others. + * Copyright (c) 2006, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -22,8 +22,8 @@ import org.eclipse.cdt.core.dom.ast.ITypedef; import org.eclipse.cdt.core.dom.ast.cpp.ICPPBasicType; import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants; import org.eclipse.cdt.internal.core.index.IIndexType; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.db.Database; +import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; import org.eclipse.core.runtime.CoreException; @@ -40,19 +40,19 @@ class PDOMCPPBasicType extends PDOMNode implements ICPPBasicType, IIndexType { protected short fFlags= -1; - public PDOMCPPBasicType(PDOM pdom, int record) { - super(pdom, record); + public PDOMCPPBasicType(PDOMLinkage linkage, int record) { + super(linkage, record); } - public PDOMCPPBasicType(PDOM pdom, PDOMNode parent, ICPPBasicType type) throws CoreException { - this(pdom, parent, type, encodeFlags(type)); + public PDOMCPPBasicType(PDOMLinkage linkage, PDOMNode parent, ICPPBasicType type) throws CoreException { + this(linkage, parent, type, encodeFlags(type)); } - protected PDOMCPPBasicType(PDOM pdom, PDOMNode parent, ICPPBasicType type, final short flags) throws CoreException { - super(pdom, parent); + protected PDOMCPPBasicType(PDOMLinkage linkage, PDOMNode parent, ICPPBasicType type, final short flags) throws CoreException { + super(linkage, parent); fFlags= flags; - Database db = pdom.getDB(); + Database db = getDB(); db.putShort(record + TYPE_ID, getTypeCode(type)); db.putShort(record + QUALIFIER_FLAGS, flags); } @@ -94,7 +94,7 @@ class PDOMCPPBasicType extends PDOMNode implements ICPPBasicType, IIndexType { public int getType() { try { - return pdom.getDB().getShort(record + TYPE_ID); + return getDB().getShort(record + TYPE_ID); } catch (CoreException e) { CCorePlugin.log(e); return 0; @@ -109,7 +109,7 @@ class PDOMCPPBasicType extends PDOMNode implements ICPPBasicType, IIndexType { public int getQualifierBits() { if (fFlags == -1) { try { - fFlags= pdom.getDB().getShort(record + QUALIFIER_FLAGS); + fFlags= getDB().getShort(record + QUALIFIER_FLAGS); } catch (CoreException e) { CCorePlugin.log(e); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPBinding.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPBinding.java index 6a84debe92c..393f4826908 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPBinding.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPBinding.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2007 Symbian Corporation and others. + * Copyright (c) 2006, 2009 Symbian Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -23,8 +23,8 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPBinding; import org.eclipse.cdt.core.dom.ast.cpp.ICPPNamespace; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateInstance; import org.eclipse.cdt.core.parser.util.CharArrayUtils; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; +import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; import org.eclipse.core.runtime.CoreException; @@ -36,11 +36,11 @@ abstract class PDOMCPPBinding extends PDOMBinding implements ICPPBinding { @SuppressWarnings("hiding") protected static final int RECORD_SIZE= PDOMBinding.RECORD_SIZE + 0; - public PDOMCPPBinding(PDOM pdom, int record) { - super(pdom, record); + public PDOMCPPBinding(PDOMLinkage linkage, int record) { + super(linkage, record); } - public PDOMCPPBinding(PDOM pdom, PDOMNode parent, char[] name) throws CoreException { - super(pdom, parent, name); + public PDOMCPPBinding(PDOMLinkage linkage, PDOMNode parent, char[] name) throws CoreException { + super(linkage, parent, name); } protected boolean isSameOwner(IBinding owner1, IBinding owner2) { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassInstance.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassInstance.java index 7c6ed89cb2a..708f86dd49c 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassInstance.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassInstance.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2008 QNX Software Systems and others. + * Copyright (c) 2007, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -23,8 +23,8 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateDefinition; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateInstance; import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates; import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; +import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; import org.eclipse.core.runtime.CoreException; @@ -41,16 +41,16 @@ class PDOMCPPClassInstance extends PDOMCPPClassSpecialization implements ICPPTem @SuppressWarnings("hiding") protected static final int RECORD_SIZE = PDOMCPPClassSpecialization.RECORD_SIZE + 4; - public PDOMCPPClassInstance(PDOM pdom, PDOMNode parent, ICPPClassType classType, PDOMBinding orig) + public PDOMCPPClassInstance(PDOMLinkage linkage, PDOMNode parent, ICPPClassType classType, PDOMBinding orig) throws CoreException { - super(pdom, parent, classType, orig); + super(linkage, parent, classType, orig); final ICPPTemplateInstance asInstance= (ICPPTemplateInstance) classType; final int argListRec= PDOMCPPArgumentList.putArguments(this, asInstance.getTemplateArguments()); - pdom.getDB().putInt(record + ARGUMENTS, argListRec); + getDB().putInt(record + ARGUMENTS, argListRec); } - public PDOMCPPClassInstance(PDOM pdom, int bindingRecord) { - super(pdom, bindingRecord); + public PDOMCPPClassInstance(PDOMLinkage linkage, int bindingRecord) { + super(linkage, bindingRecord); } @Override diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassSpecialization.java index 8e06165a060..2c461e96a83 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassSpecialization.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassSpecialization.java @@ -42,10 +42,10 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPClassSpecializationScope import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates; import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants; import org.eclipse.cdt.internal.core.index.IIndexType; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.db.PDOMNodeLinkedList; import org.eclipse.cdt.internal.core.pdom.dom.IPDOMMemberOwner; import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; +import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; import org.eclipse.cdt.internal.core.pdom.dom.PDOMName; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; import org.eclipse.core.runtime.CoreException; @@ -68,13 +68,13 @@ class PDOMCPPClassSpecialization extends PDOMCPPSpecialization implements private ICPPClassScope fScope; private ObjectMap specializationMap= null; - public PDOMCPPClassSpecialization(PDOM pdom, PDOMNode parent, ICPPClassType classType, PDOMBinding specialized) + public PDOMCPPClassSpecialization(PDOMLinkage linkage, PDOMNode parent, ICPPClassType classType, PDOMBinding specialized) throws CoreException { - super(pdom, parent, (ICPPSpecialization) classType, specialized); + super(linkage, parent, (ICPPSpecialization) classType, specialized); } - public PDOMCPPClassSpecialization(PDOM pdom, int bindingRecord) { - super(pdom, bindingRecord); + public PDOMCPPClassSpecialization(PDOMLinkage linkage, int bindingRecord) { + super(linkage, bindingRecord); } @Override @@ -95,7 +95,7 @@ class PDOMCPPClassSpecialization extends PDOMCPPSpecialization implements public IBinding specializeMember(IBinding original) { if (specializationMap == null) { final Integer key= record+PDOMCPPLinkage.CACHE_INSTANCE_SCOPE; - Object cached= pdom.getCachedResult(key); + Object cached= getPDOM().getCachedResult(key); if (cached != null) { specializationMap= (ObjectMap) cached; } else { @@ -112,7 +112,7 @@ class PDOMCPPClassSpecialization extends PDOMCPPSpecialization implements } catch (CoreException e) { CCorePlugin.log(e); } - specializationMap= (ObjectMap) pdom.putCachedResult(key, newMap, false); + specializationMap= (ObjectMap) getPDOM().putCachedResult(key, newMap, false); } } synchronized (specializationMap) { @@ -148,13 +148,13 @@ class PDOMCPPClassSpecialization extends PDOMCPPSpecialization implements public PDOMCPPBase getFirstBase() throws CoreException { - int rec = pdom.getDB().getInt(record + FIRSTBASE); - return rec != 0 ? new PDOMCPPBase(pdom, rec) : null; + int rec = getDB().getInt(record + FIRSTBASE); + return rec != 0 ? new PDOMCPPBase(getLinkage(), rec) : null; } private void setFirstBase(PDOMCPPBase base) throws CoreException { int rec = base != null ? base.getRecord() : 0; - pdom.getDB().putInt(record + FIRSTBASE, rec); + getDB().putInt(record + FIRSTBASE, rec); } public void addBase(PDOMCPPBase base) throws CoreException { @@ -195,7 +195,7 @@ class PDOMCPPClassSpecialization extends PDOMCPPSpecialization implements // this is an explicit specialization Integer key= record + PDOMCPPLinkage.CACHE_BASES; - ICPPBase[] bases= (ICPPBase[]) pdom.getCachedResult(key); + ICPPBase[] bases= (ICPPBase[]) getPDOM().getCachedResult(key); if (bases != null) return bases; @@ -205,7 +205,7 @@ class PDOMCPPClassSpecialization extends PDOMCPPSpecialization implements list.add(base); Collections.reverse(list); bases = list.toArray(new ICPPBase[list.size()]); - pdom.putCachedResult(key, bases); + getPDOM().putCachedResult(key, bases); return bases; } catch (CoreException e) { CCorePlugin.log(e); @@ -355,13 +355,13 @@ class PDOMCPPClassSpecialization extends PDOMCPPSpecialization implements @Override public void addChild(PDOMNode member) throws CoreException { - PDOMNodeLinkedList list = new PDOMNodeLinkedList(pdom, record + MEMBERLIST, getLinkageImpl()); + PDOMNodeLinkedList list = new PDOMNodeLinkedList(getLinkage(), record + MEMBERLIST); list.addMember(member); } public void acceptUncached(IPDOMVisitor visitor) throws CoreException { - PDOMNodeLinkedList list = new PDOMNodeLinkedList(pdom, record + MEMBERLIST, getLinkageImpl()); + PDOMNodeLinkedList list = new PDOMNodeLinkedList(getLinkage(), record + MEMBERLIST); list.accept(visitor); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassTemplate.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassTemplate.java index 98ef3cca37e..d1d24d95149 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassTemplate.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassTemplate.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2008 QNX Software Systems and others. + * Copyright (c) 2007, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -35,7 +35,6 @@ import org.eclipse.cdt.core.parser.util.CharArrayUtils; import org.eclipse.cdt.internal.core.dom.parser.ProblemBinding; import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInstanceCache; import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.db.Database; import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; @@ -58,20 +57,20 @@ public class PDOMCPPClassTemplate extends PDOMCPPClassType private ICPPTemplateParameter[] params; // Cached template parameters. - public PDOMCPPClassTemplate(PDOM pdom, PDOMCPPLinkage linkage, PDOMNode parent, ICPPClassTemplate template) throws CoreException, DOMException { - super(pdom, parent, template); + public PDOMCPPClassTemplate(PDOMCPPLinkage linkage, PDOMNode parent, ICPPClassTemplate template) throws CoreException, DOMException { + super(linkage, parent, template); - final Database db = pdom.getDB(); + final Database db = getDB(); final ICPPTemplateParameter[] origParams= template.getTemplateParameters(); - final IPDOMCPPTemplateParameter[] params = PDOMTemplateParameterArray.createPDOMTemplateParameters(pdom, this, origParams); + final IPDOMCPPTemplateParameter[] params = PDOMTemplateParameterArray.createPDOMTemplateParameters(linkage, this, origParams); int rec= PDOMTemplateParameterArray.putArray(db, params); db.putInt(record + PARAMETERS, rec); db.putShort(record + RELEVANT_PARAMETERS, (short) params.length); linkage.new ConfigureTemplateParameters(origParams, params); } - public PDOMCPPClassTemplate(PDOM pdom, int bindingRecord) { - super(pdom, bindingRecord); + public PDOMCPPClassTemplate(PDOMLinkage linkage, int bindingRecord) { + super(linkage, bindingRecord); } @Override @@ -87,7 +86,7 @@ public class PDOMCPPClassTemplate extends PDOMCPPClassType public ICPPTemplateParameter[] getTemplateParameters() { if (params == null) { try { - final Database db = pdom.getDB(); + final Database db = getDB(); int rec= db.getInt(record + PARAMETERS); int count= Math.max(0, db.getShort(record + RELEVANT_PARAMETERS)); if (rec == 0 || count == 0) { @@ -124,7 +123,7 @@ public class PDOMCPPClassTemplate extends PDOMCPPClassType } private void updateTemplateParameters(PDOMLinkage linkage, ICPPTemplateParameter[] newParams) throws CoreException, DOMException { - final Database db = pdom.getDB(); + final Database db = getDB(); int rec= db.getInt(record + PARAMETERS); IPDOMCPPTemplateParameter[] allParams; if (rec == 0) { @@ -170,7 +169,7 @@ public class PDOMCPPClassTemplate extends PDOMCPPClassType newAllParams[j]= allParams[idx]; allParams[idx]= null; } else { - newAllParams[j]= PDOMTemplateParameterArray.createPDOMTemplateParameter(pdom, this, newParams[j]); + newAllParams[j]= PDOMTemplateParameterArray.createPDOMTemplateParameter(getLinkage(), this, newParams[j]); } } int pos= newParamLength; @@ -197,14 +196,14 @@ public class PDOMCPPClassTemplate extends PDOMCPPClassType } private PDOMCPPClassTemplatePartialSpecialization getFirstPartial() throws CoreException { - int value = pdom.getDB().getInt(record + FIRST_PARTIAL); - return value != 0 ? new PDOMCPPClassTemplatePartialSpecialization(pdom, value) : null; + int value = getDB().getInt(record + FIRST_PARTIAL); + return value != 0 ? new PDOMCPPClassTemplatePartialSpecialization(getLinkage(), value) : null; } public void addPartial(PDOMCPPClassTemplatePartialSpecialization partial) throws CoreException { PDOMCPPClassTemplatePartialSpecialization first = getFirstPartial(); partial.setNextPartial(first); - pdom.getDB().putInt(record + FIRST_PARTIAL, partial.getRecord()); + getDB().putInt(record + FIRST_PARTIAL, partial.getRecord()); } public ICPPClassTemplatePartialSpecialization[] getPartialSpecializations() throws DOMException { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassTemplatePartialSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassTemplatePartialSpecialization.java index f32770b0b50..047038786a3 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassTemplatePartialSpecialization.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassTemplatePartialSpecialization.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2008 QNX Software Systems and others. + * Copyright (c) 2007, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -28,10 +28,10 @@ import org.eclipse.cdt.internal.core.Util; import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates; import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants; import org.eclipse.cdt.internal.core.index.IndexCPPSignatureUtil; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.db.Database; import org.eclipse.cdt.internal.core.pdom.dom.IPDOMOverloader; import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; +import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNotImplementedError; import org.eclipse.core.runtime.CoreException; @@ -53,29 +53,29 @@ class PDOMCPPClassTemplatePartialSpecialization extends PDOMCPPClassTemplate @SuppressWarnings("hiding") protected static final int RECORD_SIZE = PDOMCPPClassTemplate.RECORD_SIZE + 16; - public PDOMCPPClassTemplatePartialSpecialization(PDOM pdom, PDOMCPPLinkage linkage, - PDOMNode parent, ICPPClassTemplatePartialSpecialization partial, PDOMCPPClassTemplate primary) + public PDOMCPPClassTemplatePartialSpecialization(PDOMCPPLinkage linkage, PDOMNode parent, + ICPPClassTemplatePartialSpecialization partial, PDOMCPPClassTemplate primary) throws CoreException, DOMException { - super(pdom, linkage, parent, partial); - pdom.getDB().putInt(record + PRIMARY, primary.getRecord()); + super(linkage, parent, partial); + getDB().putInt(record + PRIMARY, primary.getRecord()); primary.addPartial(this); try { Integer sigHash = IndexCPPSignatureUtil.getSignatureHash(partial); - pdom.getDB().putInt(record + SIGNATURE_HASH, sigHash != null ? sigHash.intValue() : 0); + getDB().putInt(record + SIGNATURE_HASH, sigHash != null ? sigHash.intValue() : 0); } catch (DOMException e) { throw new CoreException(Util.createStatus(e)); } linkage.new ConfigurePartialSpecialization(this, partial); } - public PDOMCPPClassTemplatePartialSpecialization(PDOM pdom, + public PDOMCPPClassTemplatePartialSpecialization(PDOMLinkage linkage, int bindingRecord) { - super(pdom, bindingRecord); + super(linkage, bindingRecord); } public int getSignatureHash() throws CoreException { - return pdom.getDB().getInt(record + SIGNATURE_HASH); + return getDB().getInt(record + SIGNATURE_HASH); } @Override @@ -89,18 +89,18 @@ class PDOMCPPClassTemplatePartialSpecialization extends PDOMCPPClassTemplate } public PDOMCPPClassTemplatePartialSpecialization getNextPartial() throws CoreException { - int value = pdom.getDB().getInt(record + NEXT_PARTIAL); - return value != 0 ? new PDOMCPPClassTemplatePartialSpecialization(pdom, value) : null; + int value = getDB().getInt(record + NEXT_PARTIAL); + return value != 0 ? new PDOMCPPClassTemplatePartialSpecialization(getLinkage(), value) : null; } public void setNextPartial(PDOMCPPClassTemplatePartialSpecialization partial) throws CoreException { int value = partial != null ? partial.getRecord() : 0; - pdom.getDB().putInt(record + NEXT_PARTIAL, value); + getDB().putInt(record + NEXT_PARTIAL, value); } public ICPPClassTemplate getPrimaryClassTemplate() { try { - return new PDOMCPPClassTemplate(pdom, pdom.getDB().getInt(record + PRIMARY)); + return new PDOMCPPClassTemplate(getLinkage(), getDB().getInt(record + PRIMARY)); } catch (CoreException e) { CCorePlugin.log(e); return null; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassTemplatePartialSpecializationSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassTemplatePartialSpecializationSpecialization.java index 33c8ddd1057..b61de53c353 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassTemplatePartialSpecializationSpecialization.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassTemplatePartialSpecializationSpecialization.java @@ -21,9 +21,9 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateArgument; import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates; import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.db.Database; import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; +import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; import org.eclipse.core.runtime.CoreException; @@ -41,20 +41,20 @@ class PDOMCPPClassTemplatePartialSpecializationSpecialization extends PDOMCPPCla private ICPPClassTemplate fPrimaryTemplate; - public PDOMCPPClassTemplatePartialSpecializationSpecialization(PDOM pdom, - PDOMCPPLinkage linkage, PDOMNode parent, PDOMBinding specialized, - ICPPClassTemplatePartialSpecialization partial, PDOMCPPClassTemplateSpecialization primary) throws CoreException { - super(pdom, parent, partial, specialized); + public PDOMCPPClassTemplatePartialSpecializationSpecialization(PDOMCPPLinkage linkage, + PDOMNode parent, PDOMBinding specialized, ICPPClassTemplatePartialSpecialization partial, + PDOMCPPClassTemplateSpecialization primary) throws CoreException { + super(linkage, parent, partial, specialized); - pdom.getDB().putInt(record + PRIMARY_TEMPLATE, primary.getRecord()); + getDB().putInt(record + PRIMARY_TEMPLATE, primary.getRecord()); primary.addPartial(this); linkage.new ConfigurePartialSpecialization(this, partial); } - public PDOMCPPClassTemplatePartialSpecializationSpecialization(PDOM pdom, int bindingRecord) { - super(pdom, bindingRecord); + public PDOMCPPClassTemplatePartialSpecializationSpecialization(PDOMLinkage linkage, int bindingRecord) { + super(linkage, bindingRecord); } @Override @@ -73,13 +73,13 @@ class PDOMCPPClassTemplatePartialSpecializationSpecialization extends PDOMCPPCla } public PDOMCPPClassTemplatePartialSpecializationSpecialization getNextPartial() throws CoreException { - int value = pdom.getDB().getInt(record + NEXT_PARTIAL); - return value != 0 ? new PDOMCPPClassTemplatePartialSpecializationSpecialization(pdom, value) : null; + int value = getDB().getInt(record + NEXT_PARTIAL); + return value != 0 ? new PDOMCPPClassTemplatePartialSpecializationSpecialization(getLinkage(), value) : null; } public void setNextPartial(PDOMCPPClassTemplatePartialSpecializationSpecialization partial) throws CoreException { int value = partial != null ? partial.getRecord() : 0; - pdom.getDB().putInt(record + NEXT_PARTIAL, value); + getDB().putInt(record + NEXT_PARTIAL, value); } @Override @@ -124,8 +124,8 @@ class PDOMCPPClassTemplatePartialSpecializationSpecialization extends PDOMCPPCla public ICPPClassTemplate getPrimaryClassTemplate() { if (fPrimaryTemplate == null) { try { - int specializedRec = pdom.getDB().getInt(record + PRIMARY_TEMPLATE); - fPrimaryTemplate= (ICPPClassTemplate) getLinkageImpl().getNode(specializedRec); + int specializedRec = getDB().getInt(record + PRIMARY_TEMPLATE); + fPrimaryTemplate= (ICPPClassTemplate) getLinkage().getNode(specializedRec); } catch (CoreException e) { CCorePlugin.log(e); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassTemplateSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassTemplateSpecialization.java index d78b31614fd..86cb78e5d98 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassTemplateSpecialization.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassTemplateSpecialization.java @@ -31,8 +31,8 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameter; import org.eclipse.cdt.core.parser.util.CharArrayUtils; import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInstanceCache; import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; +import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; import org.eclipse.core.runtime.CoreException; @@ -46,13 +46,13 @@ class PDOMCPPClassTemplateSpecialization extends PDOMCPPClassSpecialization @SuppressWarnings("hiding") protected static final int RECORD_SIZE = PDOMCPPClassSpecialization.RECORD_SIZE+4; - public PDOMCPPClassTemplateSpecialization(PDOM pdom, PDOMNode parent, ICPPClassTemplate template, PDOMBinding specialized) + public PDOMCPPClassTemplateSpecialization(PDOMLinkage linkage, PDOMNode parent, ICPPClassTemplate template, PDOMBinding specialized) throws CoreException { - super(pdom, parent, template, specialized); + super(linkage, parent, template, specialized); } - public PDOMCPPClassTemplateSpecialization(PDOM pdom, int bindingRecord) { - super(pdom, bindingRecord); + public PDOMCPPClassTemplateSpecialization(PDOMLinkage linkage, int bindingRecord) { + super(linkage, bindingRecord); } @Override @@ -159,14 +159,14 @@ class PDOMCPPClassTemplateSpecialization extends PDOMCPPClassSpecialization } private PDOMCPPClassTemplatePartialSpecializationSpecialization getFirstPartial() throws CoreException { - int value = pdom.getDB().getInt(record + FIRST_PARTIAL); - return value != 0 ? new PDOMCPPClassTemplatePartialSpecializationSpecialization(pdom, value) : null; + int value = getDB().getInt(record + FIRST_PARTIAL); + return value != 0 ? new PDOMCPPClassTemplatePartialSpecializationSpecialization(getLinkage(), value) : null; } public void addPartial(PDOMCPPClassTemplatePartialSpecializationSpecialization pspecspec) throws CoreException { PDOMCPPClassTemplatePartialSpecializationSpecialization first = getFirstPartial(); pspecspec.setNextPartial(first); - pdom.getDB().putInt(record + FIRST_PARTIAL, pspecspec.getRecord()); + getDB().putInt(record + FIRST_PARTIAL, pspecspec.getRecord()); } public ICPPClassTemplatePartialSpecialization[] getPartialSpecializations() throws DOMException { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassType.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassType.java index dde008f36ad..0a93808a6fe 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassType.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassType.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2005, 2008 QNX Software Systems and others. + * Copyright (c) 2005, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -38,7 +38,6 @@ import org.eclipse.cdt.internal.core.Util; import org.eclipse.cdt.internal.core.dom.parser.ProblemBinding; import org.eclipse.cdt.internal.core.dom.parser.cpp.ClassTypeHelper; import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.db.PDOMNodeLinkedList; import org.eclipse.cdt.internal.core.pdom.dom.IPDOMMemberOwner; import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; @@ -66,16 +65,16 @@ class PDOMCPPClassType extends PDOMCPPBinding implements IPDOMCPPClassType, IPDO private ICPPClassScope fScope; - public PDOMCPPClassType(PDOM pdom, PDOMNode parent, ICPPClassType classType) throws CoreException { - super(pdom, parent, classType.getNameCharArray()); + public PDOMCPPClassType(PDOMLinkage linkage, PDOMNode parent, ICPPClassType classType) throws CoreException { + super(linkage, parent, classType.getNameCharArray()); setKind(classType); setAnonymous(classType); // linked list is initialized by storage being zero'd by malloc } - public PDOMCPPClassType(PDOM pdom, int bindingRecord) { - super(pdom, bindingRecord); + public PDOMCPPClassType(PDOMLinkage linkage, int bindingRecord) { + super(linkage, bindingRecord); } @Override @@ -100,7 +99,7 @@ class PDOMCPPClassType extends PDOMCPPBinding implements IPDOMCPPClassType, IPDO private void setKind(ICPPClassType ct) throws CoreException { try { - pdom.getDB().putByte(record + KEY, (byte) ct.getKey()); + getDB().putByte(record + KEY, (byte) ct.getKey()); } catch (DOMException e) { throw new CoreException(Util.createStatus(e)); } @@ -108,7 +107,7 @@ class PDOMCPPClassType extends PDOMCPPBinding implements IPDOMCPPClassType, IPDO private void setAnonymous(ICPPClassType ct) throws CoreException { try { - pdom.getDB().putByte(record + ANONYMOUS, (byte) (ct.isAnonymous() ? 1 : 0)); + getDB().putByte(record + ANONYMOUS, (byte) (ct.isAnonymous() ? 1 : 0)); } catch (DOMException e) { throw new CoreException(Util.createStatus(e)); } @@ -121,8 +120,8 @@ class PDOMCPPClassType extends PDOMCPPBinding implements IPDOMCPPClassType, IPDO @Override public void addChild(PDOMNode member) throws CoreException { - pdom.removeCachedResult(record + PDOMCPPLinkage.CACHE_MEMBERS); - PDOMNodeLinkedList list = new PDOMNodeLinkedList(pdom, record + MEMBERLIST, getLinkageImpl()); + getPDOM().removeCachedResult(record + PDOMCPPLinkage.CACHE_MEMBERS); + PDOMNodeLinkedList list = new PDOMNodeLinkedList(getLinkage(), record + MEMBERLIST); list.addMember(member); } @@ -136,29 +135,29 @@ class PDOMCPPClassType extends PDOMCPPBinding implements IPDOMCPPClassType, IPDO */ public void acceptUncached(IPDOMVisitor visitor) throws CoreException { super.accept(visitor); - PDOMNodeLinkedList list = new PDOMNodeLinkedList(pdom, record + MEMBERLIST, getLinkageImpl()); + PDOMNodeLinkedList list = new PDOMNodeLinkedList(getLinkage(), record + MEMBERLIST); list.accept(visitor); } private PDOMCPPBase getFirstBase() throws CoreException { - int rec = pdom.getDB().getInt(record + FIRSTBASE); - return rec != 0 ? new PDOMCPPBase(pdom, rec) : null; + int rec = getDB().getInt(record + FIRSTBASE); + return rec != 0 ? new PDOMCPPBase(getLinkage(), rec) : null; } private void setFirstBase(PDOMCPPBase base) throws CoreException { int rec = base != null ? base.getRecord() : 0; - pdom.getDB().putInt(record + FIRSTBASE, rec); + getDB().putInt(record + FIRSTBASE, rec); } public void addBase(PDOMCPPBase base) throws CoreException { - pdom.removeCachedResult(record+PDOMCPPLinkage.CACHE_BASES); + getPDOM().removeCachedResult(record+PDOMCPPLinkage.CACHE_BASES); PDOMCPPBase firstBase = getFirstBase(); base.setNextBase(firstBase); setFirstBase(base); } public void removeBase(PDOMName pdomName) throws CoreException { - pdom.removeCachedResult(record+PDOMCPPLinkage.CACHE_BASES); + getPDOM().removeCachedResult(record+PDOMCPPLinkage.CACHE_BASES); PDOMCPPBase base= getFirstBase(); PDOMCPPBase predecessor= null; @@ -189,13 +188,13 @@ class PDOMCPPClassType extends PDOMCPPBinding implements IPDOMCPPClassType, IPDO } private PDOMCPPFriend getFirstFriend() throws CoreException { - int rec = pdom.getDB().getInt(record + FIRSTFRIEND); - return rec != 0 ? new PDOMCPPFriend(pdom, rec) : null; + int rec = getDB().getInt(record + FIRSTFRIEND); + return rec != 0 ? new PDOMCPPFriend(getLinkage(), rec) : null; } private void setFirstFriend(PDOMCPPFriend friend) throws CoreException { int rec = friend != null ? friend.getRecord() : 0; - pdom.getDB().putInt(record + FIRSTFRIEND, rec); + getDB().putInt(record + FIRSTFRIEND, rec); } public void removeFriend(PDOMName pdomName) throws CoreException { @@ -230,7 +229,7 @@ class PDOMCPPClassType extends PDOMCPPBinding implements IPDOMCPPClassType, IPDO public int getKey() throws DOMException { try { - return pdom.getDB().getByte(record + KEY); + return getDB().getByte(record + KEY); } catch (CoreException e) { CCorePlugin.log(e); return ICPPClassType.k_class; // or something @@ -239,7 +238,7 @@ class PDOMCPPClassType extends PDOMCPPBinding implements IPDOMCPPClassType, IPDO public boolean isAnonymous() throws DOMException { try { - return pdom.getDB().getByte(record + ANONYMOUS) != 0; + return getDB().getByte(record + ANONYMOUS) != 0; } catch (CoreException e) { CCorePlugin.log(e); return false; @@ -280,7 +279,7 @@ class PDOMCPPClassType extends PDOMCPPBinding implements IPDOMCPPClassType, IPDO public ICPPBase[] getBases() throws DOMException { Integer key= record + PDOMCPPLinkage.CACHE_BASES; - ICPPBase[] bases= (ICPPBase[]) pdom.getCachedResult(key); + ICPPBase[] bases= (ICPPBase[]) getPDOM().getCachedResult(key); if (bases != null) return bases; @@ -290,7 +289,7 @@ class PDOMCPPClassType extends PDOMCPPBinding implements IPDOMCPPClassType, IPDO list.add(base); Collections.reverse(list); bases = list.toArray(new ICPPBase[list.size()]); - pdom.putCachedResult(key, bases); + getPDOM().putCachedResult(key, bases); return bases; } catch (CoreException e) { CCorePlugin.log(e); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPConstructor.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPConstructor.java index af9d69cfa1e..60295c78b04 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPConstructor.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPConstructor.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2007 Wind River Systems, Inc. and others. + * Copyright (c) 2006, 2009 Wind River Systems, Inc. and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -15,18 +15,18 @@ import org.eclipse.cdt.core.dom.ast.DOMException; import org.eclipse.cdt.core.dom.ast.IASTName; import org.eclipse.cdt.core.dom.ast.cpp.ICPPConstructor; import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants; -import org.eclipse.cdt.internal.core.pdom.PDOM; +import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; import org.eclipse.core.runtime.CoreException; class PDOMCPPConstructor extends PDOMCPPMethod implements ICPPConstructor { - public PDOMCPPConstructor(PDOM pdom, PDOMNode parent, ICPPConstructor method) throws CoreException, DOMException { - super(pdom, parent, method); + public PDOMCPPConstructor(PDOMLinkage linkage, PDOMNode parent, ICPPConstructor method) throws CoreException, DOMException { + super(linkage, parent, method); } - public PDOMCPPConstructor(PDOM pdom, int record) { - super(pdom, record); + public PDOMCPPConstructor(PDOMLinkage linkage, int record) { + super(linkage, record); } public boolean isExplicit() throws DOMException { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPConstructorInstance.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPConstructorInstance.java index 99fc56ce8ea..bebd7b214eb 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPConstructorInstance.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPConstructorInstance.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007 QNX Software Systems and others. + * Copyright (c) 2007, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -14,8 +14,8 @@ import org.eclipse.cdt.core.dom.ast.DOMException; import org.eclipse.cdt.core.dom.ast.cpp.ICPPConstructor; import org.eclipse.cdt.core.dom.ast.cpp.ICPPMethod; import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; +import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; import org.eclipse.core.runtime.CoreException; @@ -32,13 +32,13 @@ public class PDOMCPPConstructorInstance extends PDOMCPPMethodInstance implements @SuppressWarnings("hiding") protected static final int RECORD_SIZE = PDOMCPPMethodInstance.RECORD_SIZE + 0; - public PDOMCPPConstructorInstance(PDOM pdom, PDOMNode parent, ICPPMethod method, PDOMBinding instantiated) + public PDOMCPPConstructorInstance(PDOMLinkage linkage, PDOMNode parent, ICPPMethod method, PDOMBinding instantiated) throws CoreException { - super(pdom, parent, method, instantiated); + super(linkage, parent, method, instantiated); } - public PDOMCPPConstructorInstance(PDOM pdom, int bindingRecord) { - super(pdom, bindingRecord); + public PDOMCPPConstructorInstance(PDOMLinkage linkage, int bindingRecord) { + super(linkage, bindingRecord); } @Override diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPConstructorSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPConstructorSpecialization.java index 26793da8f07..17388c8a777 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPConstructorSpecialization.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPConstructorSpecialization.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007 QNX Software Systems and others. + * Copyright (c) 2007, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -13,8 +13,8 @@ package org.eclipse.cdt.internal.core.pdom.dom.cpp; import org.eclipse.cdt.core.dom.ast.DOMException; import org.eclipse.cdt.core.dom.ast.cpp.ICPPConstructor; import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; +import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; import org.eclipse.core.runtime.CoreException; @@ -31,12 +31,12 @@ class PDOMCPPConstructorSpecialization extends @SuppressWarnings("hiding") protected static final int RECORD_SIZE = PDOMCPPMethodSpecialization.RECORD_SIZE + 0; - public PDOMCPPConstructorSpecialization(PDOM pdom, PDOMNode parent, ICPPConstructor constructor, PDOMBinding specialized) throws CoreException { - super(pdom, parent, constructor, specialized); + public PDOMCPPConstructorSpecialization(PDOMLinkage linkage, PDOMNode parent, ICPPConstructor constructor, PDOMBinding specialized) throws CoreException { + super(linkage, parent, constructor, specialized); } - public PDOMCPPConstructorSpecialization(PDOM pdom, int bindingRecord) { - super(pdom, bindingRecord); + public PDOMCPPConstructorSpecialization(PDOMLinkage linkage, int bindingRecord) { + super(linkage, bindingRecord); } @Override diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPConstructorTemplate.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPConstructorTemplate.java index b495bff62e6..8efeb0e2526 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPConstructorTemplate.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPConstructorTemplate.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007 QNX Software Systems and others. + * Copyright (c) 2007, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -13,7 +13,7 @@ package org.eclipse.cdt.internal.core.pdom.dom.cpp; import org.eclipse.cdt.core.dom.ast.DOMException; import org.eclipse.cdt.core.dom.ast.cpp.ICPPConstructor; import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants; -import org.eclipse.cdt.internal.core.pdom.PDOM; +import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; import org.eclipse.core.runtime.CoreException; @@ -24,13 +24,13 @@ import org.eclipse.core.runtime.CoreException; class PDOMCPPConstructorTemplate extends PDOMCPPMethodTemplate implements ICPPConstructor { - public PDOMCPPConstructorTemplate(PDOM pdom, PDOMCPPLinkage linkage, PDOMNode parent, ICPPConstructor method) + public PDOMCPPConstructorTemplate(PDOMCPPLinkage linkage, PDOMNode parent, ICPPConstructor method) throws CoreException, DOMException { - super(pdom, linkage, parent, method); + super(linkage, parent, method); } - public PDOMCPPConstructorTemplate(PDOM pdom, int record) { - super(pdom, record); + public PDOMCPPConstructorTemplate(PDOMLinkage linkage, int record) { + super(linkage, record); } public boolean isExplicit() throws DOMException { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPConstructorTemplateSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPConstructorTemplateSpecialization.java index 39222b45604..551821f5884 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPConstructorTemplateSpecialization.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPConstructorTemplateSpecialization.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007 QNX Software Systems and others. + * Copyright (c) 2007, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -13,8 +13,8 @@ package org.eclipse.cdt.internal.core.pdom.dom.cpp; import org.eclipse.cdt.core.dom.ast.DOMException; import org.eclipse.cdt.core.dom.ast.cpp.ICPPConstructor; import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; +import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; import org.eclipse.core.runtime.CoreException; @@ -29,15 +29,15 @@ class PDOMCPPConstructorTemplateSpecialization extends * The size in bytes of a PDOMCPPConstructorTemplateSpecialization record in the database. */ @SuppressWarnings("hiding") - protected static final int RECORD_SIZE = PDOMCPPMethodTemplateSpecialization.RECORD_SIZE + 0; + protected static final int RECORD_SIZE = PDOMCPPFunctionSpecialization.RECORD_SIZE + 0; - public PDOMCPPConstructorTemplateSpecialization(PDOM pdom, PDOMNode parent, ICPPConstructor constructor, PDOMBinding specialized) + public PDOMCPPConstructorTemplateSpecialization(PDOMLinkage linkage, PDOMNode parent, ICPPConstructor constructor, PDOMBinding specialized) throws CoreException { - super(pdom, parent, constructor, specialized); + super(linkage, parent, constructor, specialized); } - public PDOMCPPConstructorTemplateSpecialization(PDOM pdom, int bindingRecord) { - super(pdom, bindingRecord); + public PDOMCPPConstructorTemplateSpecialization(PDOMLinkage linkage, int bindingRecord) { + super(linkage, bindingRecord); } @Override diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPDeferredClassInstance.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPDeferredClassInstance.java index b32a8c858d9..0d5df864e55 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPDeferredClassInstance.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPDeferredClassInstance.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2008 QNX Software Systems and others. + * Copyright (c) 2007, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -36,10 +36,10 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPDeferredClassInstance; import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates; import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants; import org.eclipse.cdt.internal.core.index.IIndexType; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.db.PDOMNodeLinkedList; import org.eclipse.cdt.internal.core.pdom.dom.IPDOMMemberOwner; import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; +import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; import org.eclipse.core.runtime.CoreException; @@ -59,16 +59,16 @@ class PDOMCPPDeferredClassInstance extends PDOMCPPSpecialization implements ICPP private ICPPScope unknownScope; - public PDOMCPPDeferredClassInstance(PDOM pdom, PDOMNode parent, ICPPDeferredClassInstance classType, PDOMBinding instantiated) + public PDOMCPPDeferredClassInstance(PDOMLinkage linkage, PDOMNode parent, ICPPDeferredClassInstance classType, PDOMBinding instantiated) throws CoreException { - super(pdom, parent, classType, instantiated); + super(linkage, parent, classType, instantiated); final int argListRec= PDOMCPPArgumentList.putArguments(this, classType.getTemplateArguments()); - pdom.getDB().putInt(record+ARGUMENTS, argListRec); + getDB().putInt(record+ARGUMENTS, argListRec); } - public PDOMCPPDeferredClassInstance(PDOM pdom, int bindingRecord) { - super(pdom, bindingRecord); + public PDOMCPPDeferredClassInstance(PDOMLinkage linkage, int bindingRecord) { + super(linkage, bindingRecord); } @Override @@ -114,14 +114,14 @@ class PDOMCPPDeferredClassInstance extends PDOMCPPSpecialization implements ICPP @Override public void addChild(PDOMNode member) throws CoreException { - PDOMNodeLinkedList list = new PDOMNodeLinkedList(pdom, record + MEMBERLIST, getLinkageImpl()); + PDOMNodeLinkedList list = new PDOMNodeLinkedList(getLinkage(), record + MEMBERLIST); list.addMember(member); } @Override public void accept(IPDOMVisitor visitor) throws CoreException { super.accept(visitor); - PDOMNodeLinkedList list = new PDOMNodeLinkedList(pdom, record + MEMBERLIST, getLinkageImpl()); + PDOMNodeLinkedList list = new PDOMNodeLinkedList(getLinkage(), record + MEMBERLIST); list.accept(visitor); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumeration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumeration.java index e96e7da998e..b31e6c3075f 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumeration.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumeration.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2008 QNX Software Systems and others. + * Copyright (c) 2006, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -24,8 +24,8 @@ import org.eclipse.cdt.core.dom.ast.ITypedef; import org.eclipse.cdt.core.parser.util.CharArrayUtils; import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants; import org.eclipse.cdt.internal.core.index.IIndexType; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; +import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNotImplementedError; import org.eclipse.core.runtime.CoreException; @@ -40,13 +40,13 @@ class PDOMCPPEnumeration extends PDOMCPPBinding implements IEnumeration, IIndexT @SuppressWarnings("hiding") protected static final int RECORD_SIZE = PDOMBinding.RECORD_SIZE + 4; - public PDOMCPPEnumeration(PDOM pdom, PDOMNode parent, IEnumeration enumeration) + public PDOMCPPEnumeration(PDOMLinkage linkage, PDOMNode parent, IEnumeration enumeration) throws CoreException { - super(pdom, parent, enumeration.getNameCharArray()); + super(linkage, parent, enumeration.getNameCharArray()); } - public PDOMCPPEnumeration(PDOM pdom, int record) { - super(pdom, record); + public PDOMCPPEnumeration(PDOMLinkage linkage, int record) { + super(linkage, record); } @Override @@ -86,14 +86,14 @@ class PDOMCPPEnumeration extends PDOMCPPBinding implements IEnumeration, IIndexT } private PDOMCPPEnumerator getFirstEnumerator() throws CoreException { - int value = pdom.getDB().getInt(record + FIRST_ENUMERATOR); - return value != 0 ? new PDOMCPPEnumerator(pdom, value) : null; + int value = getDB().getInt(record + FIRST_ENUMERATOR); + return value != 0 ? new PDOMCPPEnumerator(getLinkage(), value) : null; } public void addEnumerator(PDOMCPPEnumerator enumerator) throws CoreException { PDOMCPPEnumerator first = getFirstEnumerator(); enumerator.setNextEnumerator(first); - pdom.getDB().putInt(record + FIRST_ENUMERATOR, enumerator.getRecord()); + getDB().putInt(record + FIRST_ENUMERATOR, enumerator.getRecord()); } public boolean isSameType(IType type) { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumerator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumerator.java index 92152a9275e..08ecd1ad3cf 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumerator.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumerator.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2008 QNX Software Systems and others. + * Copyright (c) 2006, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -20,7 +20,6 @@ import org.eclipse.cdt.core.dom.ast.IType; import org.eclipse.cdt.core.dom.ast.IValue; import org.eclipse.cdt.internal.core.dom.parser.Value; import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.db.Database; import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; @@ -39,18 +38,18 @@ class PDOMCPPEnumerator extends PDOMCPPBinding implements IEnumerator { @SuppressWarnings("hiding") protected static final int RECORD_SIZE = PDOMBinding.RECORD_SIZE + 12; - public PDOMCPPEnumerator(PDOM pdom, PDOMNode parent, IEnumerator enumerator, PDOMCPPEnumeration enumeration) + public PDOMCPPEnumerator(PDOMLinkage linkage, PDOMNode parent, IEnumerator enumerator, PDOMCPPEnumeration enumeration) throws CoreException { - super(pdom, parent, enumerator.getNameCharArray()); + super(linkage, parent, enumerator.getNameCharArray()); - final Database db = pdom.getDB(); + final Database db = getDB(); db.putInt(record + ENUMERATION, enumeration.getRecord()); storeValue(db, enumerator); enumeration.addEnumerator(this); } - public PDOMCPPEnumerator(PDOM pdom, int record) { - super(pdom, record); + public PDOMCPPEnumerator(PDOMLinkage linkage, int record) { + super(linkage, record); } @Override @@ -74,22 +73,22 @@ class PDOMCPPEnumerator extends PDOMCPPBinding implements IEnumerator { @Override public void update(PDOMLinkage linkage, IBinding newBinding) throws CoreException { if (newBinding instanceof IEnumerator) - storeValue(pdom.getDB(), (IEnumerator) newBinding); + storeValue(getDB(), (IEnumerator) newBinding); } public PDOMCPPEnumerator getNextEnumerator() throws CoreException { - int value = pdom.getDB().getInt(record + NEXT_ENUMERATOR); - return value != 0 ? new PDOMCPPEnumerator(pdom, value) : null; + int value = getDB().getInt(record + NEXT_ENUMERATOR); + return value != 0 ? new PDOMCPPEnumerator(getLinkage(), value) : null; } public void setNextEnumerator(PDOMCPPEnumerator enumerator) throws CoreException { int value = enumerator != null ? enumerator.getRecord() : 0; - pdom.getDB().putInt(record + NEXT_ENUMERATOR, value); + getDB().putInt(record + NEXT_ENUMERATOR, value); } public IType getType() throws DOMException { try { - return new PDOMCPPEnumeration(pdom, pdom.getDB().getInt(record + ENUMERATION)); + return new PDOMCPPEnumeration(getLinkage(), getDB().getInt(record + ENUMERATION)); } catch (CoreException e) { CCorePlugin.log(e); return null; @@ -98,7 +97,7 @@ class PDOMCPPEnumerator extends PDOMCPPBinding implements IEnumerator { public IValue getValue() { try { - int val= pdom.getDB().getInt(record + VALUE); + int val= getDB().getInt(record + VALUE); return Value.create(val); } catch (CoreException e) { CCorePlugin.log(e); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPField.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPField.java index 3d0b2ce6580..e84bc82fd54 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPField.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPField.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2005, 2008 QNX Software Systems and others. + * Copyright (c) 2005, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -16,7 +16,7 @@ import org.eclipse.cdt.core.dom.ast.ICompositeType; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType; import org.eclipse.cdt.core.dom.ast.cpp.ICPPField; import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants; -import org.eclipse.cdt.internal.core.pdom.PDOM; +import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; import org.eclipse.core.runtime.CoreException; @@ -26,13 +26,13 @@ import org.eclipse.core.runtime.CoreException; */ class PDOMCPPField extends PDOMCPPVariable implements ICPPField { - public PDOMCPPField(PDOM pdom, PDOMNode parent, ICPPField field) + public PDOMCPPField(PDOMLinkage linkage, PDOMNode parent, ICPPField field) throws CoreException { - super(pdom, parent, field); + super(linkage, parent, field); } - public PDOMCPPField(PDOM pdom, int bindingRecord) { - super(pdom, bindingRecord); + public PDOMCPPField(PDOMLinkage linkage, int bindingRecord) { + super(linkage, bindingRecord); } // @Override diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFieldSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFieldSpecialization.java index 87d0640a6ed..14e76f9f5a0 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFieldSpecialization.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFieldSpecialization.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2008 QNX Software Systems and others. + * Copyright (c) 2007, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -21,7 +21,6 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPField; import org.eclipse.cdt.core.dom.ast.cpp.ICPPSpecialization; import org.eclipse.cdt.internal.core.Util; import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.db.Database; import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; @@ -49,15 +48,14 @@ class PDOMCPPFieldSpecialization extends PDOMCPPSpecialization implements @SuppressWarnings("hiding") protected static final int RECORD_SIZE = PDOMCPPSpecialization.RECORD_SIZE + 8; - public PDOMCPPFieldSpecialization(PDOM pdom, PDOMNode parent, + public PDOMCPPFieldSpecialization(PDOMLinkage linkage, PDOMNode parent, ICPPField field, PDOMBinding specialized) throws CoreException { - super(pdom, parent, (ICPPSpecialization) field, specialized); + super(linkage, parent, (ICPPSpecialization) field, specialized); try { - final Database db = pdom.getDB(); + final Database db = getDB(); IType type = field.getType(); - final PDOMLinkage linkage = getLinkage(); PDOMNode typeNode = linkage.addType(this, type); if (typeNode != null) { db.putInt(record + TYPE, typeNode.getRecord()); @@ -70,8 +68,8 @@ class PDOMCPPFieldSpecialization extends PDOMCPPSpecialization implements } } - public PDOMCPPFieldSpecialization(PDOM pdom, int bindingRecord) { - super(pdom, bindingRecord); + public PDOMCPPFieldSpecialization(PDOMLinkage linkage, int bindingRecord) { + super(linkage, bindingRecord); } @Override @@ -94,7 +92,7 @@ class PDOMCPPFieldSpecialization extends PDOMCPPSpecialization implements public IType getType() throws DOMException { try { - PDOMNode node = getLinkageImpl().getNode(pdom.getDB().getInt(record + TYPE)); + PDOMNode node = getLinkage().getNode(getDB().getInt(record + TYPE)); if (node instanceof IType) { return (IType) node; } @@ -106,7 +104,7 @@ class PDOMCPPFieldSpecialization extends PDOMCPPSpecialization implements public IValue getInitialValue() { try { - final Database db = pdom.getDB(); + final Database db = getDB(); int valRec = db.getInt(record + VALUE_OFFSET); return PDOMValue.restore(db, getLinkage(), valRec); } catch (CoreException e) { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFriend.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFriend.java index a7edc368a59..95e770e4ff3 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFriend.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFriend.java @@ -1,10 +1,19 @@ +/******************************************************************************* + * Copyright (c) 2008, 2009 Wind River Systems, Inc. and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Markus Schorn - initial API and implementation + *******************************************************************************/ package org.eclipse.cdt.internal.core.pdom.dom.cpp; import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants; -import org.eclipse.cdt.internal.core.pdom.PDOM; -import org.eclipse.cdt.internal.core.pdom.db.Database; +import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; import org.eclipse.cdt.internal.core.pdom.dom.PDOMName; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; import org.eclipse.core.runtime.CoreException; @@ -17,16 +26,15 @@ class PDOMCPPFriend extends PDOMNode { @SuppressWarnings("hiding") protected static final int RECORD_SIZE = PDOMNode.RECORD_SIZE + 8; - public PDOMCPPFriend(PDOM pdom, int record) { - super(pdom, record); + public PDOMCPPFriend(PDOMLinkage linkage, int record) { + super(linkage, record); } - public PDOMCPPFriend(PDOM pdom, PDOMName friendSpec) throws CoreException { - super(pdom, null); - Database db = pdom.getDB(); + public PDOMCPPFriend(PDOMLinkage linkage, PDOMName friendSpec) throws CoreException { + super(linkage, null); int friendrec = friendSpec != null ? friendSpec.getRecord() : 0; - db.putInt(record + FRIEND_SPECIFIER, friendrec); + linkage.getDB().putInt(record + FRIEND_SPECIFIER, friendrec); } @Override @@ -40,8 +48,8 @@ class PDOMCPPFriend extends PDOMNode { } public PDOMName getSpecifierName() throws CoreException { - int rec = pdom.getDB().getInt(record + FRIEND_SPECIFIER); - if (rec != 0) return new PDOMName(pdom, rec); + int rec = getDB().getInt(record + FRIEND_SPECIFIER); + if (rec != 0) return new PDOMName(getLinkage(), rec); return null; } @@ -60,16 +68,16 @@ class PDOMCPPFriend extends PDOMNode { public void setNextFriend(PDOMCPPFriend nextFriend) throws CoreException { int rec = nextFriend != null ? nextFriend.getRecord() : 0; - pdom.getDB().putInt(record + NEXT_FRIEND, rec); + getDB().putInt(record + NEXT_FRIEND, rec); } public PDOMCPPFriend getNextFriend() throws CoreException { - int rec = pdom.getDB().getInt(record + NEXT_FRIEND); - return rec != 0 ? new PDOMCPPFriend(pdom, rec) : null; + int rec = getDB().getInt(record + NEXT_FRIEND); + return rec != 0 ? new PDOMCPPFriend(getLinkage(), rec) : null; } public void delete() throws CoreException { - pdom.getDB().free(record); + getDB().free(record); } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunction.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunction.java index 096a0561160..ff99eaeb9e3 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunction.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunction.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2005, 2008 QNX Software Systems and others. + * Copyright (c) 2005, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -26,7 +26,6 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPMethod; import org.eclipse.cdt.internal.core.Util; import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants; import org.eclipse.cdt.internal.core.index.IndexCPPSignatureUtil; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.db.Database; import org.eclipse.cdt.internal.core.pdom.dom.IPDOMOverloader; import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; @@ -81,11 +80,11 @@ class PDOMCPPFunction extends PDOMCPPBinding implements ICPPFunction, IPDOMOverl @SuppressWarnings("hiding") protected static final int RECORD_SIZE = PDOMCPPBinding.RECORD_SIZE + 21; - public PDOMCPPFunction(PDOM pdom, PDOMNode parent, ICPPFunction function, boolean setTypes) throws CoreException, DOMException { - super(pdom, parent, function.getNameCharArray()); - Database db = pdom.getDB(); + public PDOMCPPFunction(PDOMLinkage linkage, PDOMNode parent, ICPPFunction function, boolean setTypes) throws CoreException, DOMException { + super(linkage, parent, function.getNameCharArray()); + Database db = getDB(); Integer sigHash = IndexCPPSignatureUtil.getSignatureHash(function); - pdom.getDB().putInt(record + SIGNATURE_HASH, sigHash != null ? sigHash.intValue() : 0); + getDB().putInt(record + SIGNATURE_HASH, sigHash != null ? sigHash.intValue() : 0); if (setTypes) { initData(function.getType(), function.getParameters()); @@ -129,7 +128,7 @@ class PDOMCPPFunction extends PDOMCPPBinding implements ICPPFunction, IPDOMOverl if (oldParams != null) { oldParams.delete(linkage); } - final Database db = pdom.getDB(); + final Database db = getDB(); db.putByte(record + ANNOTATION, newAnnotation); int oldRec = db.getInt(record+EXCEPTION_SPEC); @@ -155,32 +154,32 @@ class PDOMCPPFunction extends PDOMCPPBinding implements ICPPFunction, IPDOMOverl } private void setParameters(PDOMCPPFunctionType pft, IParameter[] params) throws CoreException { - final Database db= pdom.getDB(); + final Database db= getDB(); db.putInt(record + NUM_PARAMS, params.length); db.putInt(record + FIRST_PARAM, 0); IType[] paramTypes= pft.getParameterTypes(); for (int i= 0; i < params.length; ++i) { int ptRecord= i < paramTypes.length && paramTypes[i] != null ? ((PDOMNode) paramTypes[i]).getRecord() : 0; - setFirstParameter(new PDOMCPPParameter(pdom, this, params[i], ptRecord)); + setFirstParameter(new PDOMCPPParameter(getLinkage(), this, params[i], ptRecord)); } } private PDOMCPPFunctionType setType(ICPPFunctionType ft) throws CoreException { - PDOMCPPFunctionType pft = (PDOMCPPFunctionType) getLinkageImpl().addType(this, ft); - pdom.getDB().putInt(record + FUNCTION_TYPE, pft.getRecord()); + PDOMCPPFunctionType pft = (PDOMCPPFunctionType) getLinkage().addType(this, ft); + getDB().putInt(record + FUNCTION_TYPE, pft.getRecord()); return pft; } public int getSignatureHash() throws CoreException { - return pdom.getDB().getInt(record + SIGNATURE_HASH); + return getDB().getInt(record + SIGNATURE_HASH); } - public static int getSignatureHash(PDOM pdom, int record) throws CoreException { - return pdom.getDB().getInt(record + SIGNATURE_HASH); + public static int getSignatureHash(PDOMLinkage linkage, int record) throws CoreException { + return linkage.getDB().getInt(record + SIGNATURE_HASH); } - public PDOMCPPFunction(PDOM pdom, int bindingRecord) { - super(pdom, bindingRecord); + public PDOMCPPFunction(PDOMLinkage linkage, int bindingRecord) { + super(linkage, bindingRecord); } @Override @@ -194,15 +193,15 @@ class PDOMCPPFunction extends PDOMCPPBinding implements ICPPFunction, IPDOMOverl } private PDOMCPPParameter getFirstParameter() throws CoreException { - int rec = pdom.getDB().getInt(record + FIRST_PARAM); - return rec != 0 ? new PDOMCPPParameter(pdom, rec) : null; + int rec = getDB().getInt(record + FIRST_PARAM); + return rec != 0 ? new PDOMCPPParameter(getLinkage(), rec) : null; } private void setFirstParameter(PDOMCPPParameter param) throws CoreException { if (param != null) param.setNextParameter(getFirstParameter()); int rec = param != null ? param.getRecord() : 0; - pdom.getDB().putInt(record + FIRST_PARAM, rec); + getDB().putInt(record + FIRST_PARAM, rec); } public boolean isInline() throws DOMException { @@ -223,7 +222,7 @@ class PDOMCPPFunction extends PDOMCPPBinding implements ICPPFunction, IPDOMOverl public IParameter[] getParameters() throws DOMException { try { - int n = pdom.getDB().getInt(record + NUM_PARAMS); + int n = getDB().getInt(record + NUM_PARAMS); IParameter[] params = new IParameter[n]; PDOMCPPParameter param = getFirstParameter(); while (param != null) { @@ -239,8 +238,8 @@ class PDOMCPPFunction extends PDOMCPPBinding implements ICPPFunction, IPDOMOverl public ICPPFunctionType getType() { try { - int offset= pdom.getDB().getInt(record + FUNCTION_TYPE); - return offset==0 ? null : new PDOMCPPFunctionType(pdom, offset); + int offset= getDB().getInt(record + FUNCTION_TYPE); + return offset==0 ? null : new PDOMCPPFunctionType(getLinkage(), offset); } catch(CoreException ce) { CCorePlugin.log(ce); return null; @@ -287,7 +286,7 @@ class PDOMCPPFunction extends PDOMCPPBinding implements ICPPFunction, IPDOMOverl IFunctionType t = getType(); result.append(t != null ? ASTTypeUtil.getParameterTypeString(t) : "()"); //$NON-NLS-1$ try { - result.append(" " + getConstantNameForValue(getLinkageImpl(), getNodeType())); //$NON-NLS-1$ + result.append(" " + getConstantNameForValue(getLinkage(), getNodeType())); //$NON-NLS-1$ } catch (CoreException e) { result.append(" " + getNodeType()); //$NON-NLS-1$ } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionInstance.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionInstance.java index 92bce6424e4..05aa35f67e4 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionInstance.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionInstance.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2008 QNX Software Systems and others. + * Copyright (c) 2007, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -22,9 +22,9 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateDefinition; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateInstance; import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates; import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.db.Database; import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; +import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; import org.eclipse.core.runtime.CoreException; @@ -40,13 +40,13 @@ class PDOMCPPFunctionInstance extends PDOMCPPFunctionSpecialization implements I @SuppressWarnings("hiding") protected static final int RECORD_SIZE = PDOMCPPFunctionSpecialization.RECORD_SIZE + 8; - public PDOMCPPFunctionInstance(PDOM pdom, PDOMNode parent, ICPPFunction function, PDOMBinding orig) + public PDOMCPPFunctionInstance(PDOMLinkage linkage, PDOMNode parent, ICPPFunction function, PDOMBinding orig) throws CoreException { - super(pdom, parent, function, orig); + super(linkage, parent, function, orig); final ICPPTemplateInstance asInstance= (ICPPTemplateInstance) function; final int argListRec= PDOMCPPArgumentList.putArguments(this, asInstance.getTemplateArguments()); - final Database db = pdom.getDB(); + final Database db = getDB(); db.putInt(record+ARGUMENTS, argListRec); try { @@ -57,8 +57,8 @@ class PDOMCPPFunctionInstance extends PDOMCPPFunctionSpecialization implements I } } - public PDOMCPPFunctionInstance(PDOM pdom, int bindingRecord) { - super(pdom, bindingRecord); + public PDOMCPPFunctionInstance(PDOMLinkage linkage, int bindingRecord) { + super(linkage, bindingRecord); } @Override @@ -118,7 +118,7 @@ class PDOMCPPFunctionInstance extends PDOMCPPFunctionSpecialization implements I } result.append("} "); try { - result.append(getConstantNameForValue(getLinkageImpl(), getNodeType())); + result.append(getConstantNameForValue(getLinkage(), getNodeType())); } catch (CoreException ce) { result.append(getNodeType()); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionSpecialization.java index 2a5cf1b9fce..5c45f6c3806 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionSpecialization.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionSpecialization.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2008 QNX Software Systems and others. + * Copyright (c) 2007, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -24,9 +24,9 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPParameter; import org.eclipse.cdt.core.dom.ast.cpp.ICPPSpecialization; import org.eclipse.cdt.internal.core.Util; import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.db.Database; import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; +import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNotImplementedError; import org.eclipse.cdt.internal.core.pdom.dom.c.PDOMCAnnotation; @@ -71,14 +71,14 @@ class PDOMCPPFunctionSpecialization extends PDOMCPPSpecialization implements ICP @SuppressWarnings("hiding") protected static final int RECORD_SIZE = PDOMCPPSpecialization.RECORD_SIZE + 17; - public PDOMCPPFunctionSpecialization(PDOM pdom, PDOMNode parent, ICPPFunction function, PDOMBinding specialized) throws CoreException { - super(pdom, parent, (ICPPSpecialization) function, specialized); + public PDOMCPPFunctionSpecialization(PDOMLinkage linkage, PDOMNode parent, ICPPFunction function, PDOMBinding specialized) throws CoreException { + super(linkage, parent, (ICPPSpecialization) function, specialized); - Database db = pdom.getDB(); + Database db = getDB(); try { IFunctionType ft= function.getType(); if (ft != null) { - PDOMNode typeNode = getLinkageImpl().addType(this, ft); + PDOMNode typeNode = getLinkage().addType(this, ft); if (typeNode != null) { db.putInt(record + FUNCTION_TYPE, typeNode.getRecord()); } @@ -98,8 +98,8 @@ class PDOMCPPFunctionSpecialization extends PDOMCPPSpecialization implements ICP int typeRecord= i= 0 && len <= (Database.MAX_MALLOC_SIZE-2)/12); @@ -92,7 +92,7 @@ public class PDOMCPPTemplateParameterMap { */ public static CPPTemplateParameterMap getMap(PDOMNode parent, int rec) throws CoreException { final PDOMLinkage linkage= parent.getLinkage(); - final Database db= linkage.getPDOM().getDB(); + final Database db= linkage.getDB(); final short len= db.getShort(rec); Assert.isTrue(len >= 0 && len <= (Database.MAX_MALLOC_SIZE-2)/12); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTemplateTemplateParameter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTemplateTemplateParameter.java index 3b33939eaed..a6a7bfeb2f1 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTemplateTemplateParameter.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTemplateTemplateParameter.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008 Wind River Systems, Inc. and others. + * Copyright (c) 2008, 2009 Wind River Systems, Inc. and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -37,7 +37,6 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPUnknownBinding; import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPUnknownType; import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants; import org.eclipse.cdt.internal.core.index.IIndexType; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.db.Database; import org.eclipse.cdt.internal.core.pdom.db.PDOMNodeLinkedList; import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; @@ -66,20 +65,20 @@ public class PDOMCPPTemplateTemplateParameter extends PDOMCPPBinding private int fCachedParamID= -1; private IPDOMCPPTemplateParameter[] params; - public PDOMCPPTemplateTemplateParameter(PDOM pdom, PDOMNode parent, ICPPTemplateTemplateParameter param) + public PDOMCPPTemplateTemplateParameter(PDOMLinkage linkage, PDOMNode parent, ICPPTemplateTemplateParameter param) throws CoreException, DOMException { - super(pdom, parent, param.getNameCharArray()); + super(linkage, parent, param.getNameCharArray()); - final Database db = pdom.getDB(); + final Database db = getDB(); db.putInt(record + PARAMETERID, param.getParameterID()); final ICPPTemplateParameter[] origParams= param.getTemplateParameters(); - final IPDOMCPPTemplateParameter[] params = PDOMTemplateParameterArray.createPDOMTemplateParameters(pdom, this, origParams); + final IPDOMCPPTemplateParameter[] params = PDOMTemplateParameterArray.createPDOMTemplateParameters(linkage, this, origParams); int rec= PDOMTemplateParameterArray.putArray(db, params); - pdom.getDB().putInt(record + PARAMETERS, rec); + getDB().putInt(record + PARAMETERS, rec); } - public PDOMCPPTemplateTemplateParameter(PDOM pdom, int bindingRecord) { - super(pdom, bindingRecord); + public PDOMCPPTemplateTemplateParameter(PDOMLinkage linkage, int bindingRecord) { + super(linkage, bindingRecord); } @Override @@ -110,7 +109,7 @@ public class PDOMCPPTemplateTemplateParameter extends PDOMCPPBinding private void readParamID() { if (fCachedParamID == -1) { try { - final Database db = pdom.getDB(); + final Database db = getDB(); fCachedParamID= db.getInt(record + PARAMETERID); } catch (CoreException e) { CCorePlugin.log(e); @@ -121,13 +120,13 @@ public class PDOMCPPTemplateTemplateParameter extends PDOMCPPBinding @Override public void addChild(PDOMNode member) throws CoreException { - PDOMNodeLinkedList list = new PDOMNodeLinkedList(pdom, record + MEMBERLIST, getLinkageImpl()); + PDOMNodeLinkedList list = new PDOMNodeLinkedList(getLinkage(), record + MEMBERLIST); list.addMember(member); } @Override public void accept(IPDOMVisitor visitor) throws CoreException { - PDOMNodeLinkedList list = new PDOMNodeLinkedList(pdom, record + MEMBERLIST, getLinkageImpl()); + PDOMNodeLinkedList list = new PDOMNodeLinkedList(getLinkage(), record + MEMBERLIST); list.accept(visitor); } @@ -144,7 +143,7 @@ public class PDOMCPPTemplateTemplateParameter extends PDOMCPPBinding public IType getDefault() { try { - PDOMNode node = getLinkageImpl().getNode(pdom.getDB().getInt(record + DEFAULT_TYPE)); + PDOMNode node = getLinkage().getNode(getDB().getInt(record + DEFAULT_TYPE)); if (node instanceof IType) { return (IType) node; } @@ -184,7 +183,7 @@ public class PDOMCPPTemplateTemplateParameter extends PDOMCPPBinding IType dflt= val.getTypeValue(); if (dflt != null) { final Database db= getPDOM().getDB(); - PDOMNode typeNode = getLinkageImpl().addType(this, dflt); + PDOMNode typeNode = getLinkage().addType(this, dflt); if (typeNode != null) { db.putInt(record + DEFAULT_TYPE, typeNode.getRecord()); } @@ -198,7 +197,7 @@ public class PDOMCPPTemplateTemplateParameter extends PDOMCPPBinding @Override public void update(PDOMLinkage linkage, IBinding newBinding) throws CoreException { if (newBinding instanceof ICPPTemplateTemplateParameter) { - final Database db = pdom.getDB(); + final Database db = getDB(); ICPPTemplateTemplateParameter ttp= (ICPPTemplateTemplateParameter) newBinding; updateName(newBinding.getNameCharArray()); IType newDefault= null; @@ -209,7 +208,7 @@ public class PDOMCPPTemplateTemplateParameter extends PDOMCPPBinding } if (newDefault != null) { IType mytype= getDefault(); - PDOMNode typeNode = getLinkageImpl().addType(this, newDefault); + PDOMNode typeNode = getLinkage().addType(this, newDefault); if (typeNode != null) { db.putInt(record + DEFAULT_TYPE, typeNode.getRecord()); if (mytype != null) @@ -219,7 +218,7 @@ public class PDOMCPPTemplateTemplateParameter extends PDOMCPPBinding int oldRec= db.getInt(record + PARAMETERS); IPDOMCPPTemplateParameter[] oldParams= getTemplateParameters(); try { - params= PDOMTemplateParameterArray.createPDOMTemplateParameters(pdom, this, ttp.getTemplateParameters()); + params= PDOMTemplateParameterArray.createPDOMTemplateParameters(getLinkage(), this, ttp.getTemplateParameters()); int newRec= PDOMTemplateParameterArray.putArray(db, params); db.putInt(record + PARAMETERS, newRec); if (oldRec != 0) @@ -238,7 +237,7 @@ public class PDOMCPPTemplateTemplateParameter extends PDOMCPPBinding if (type instanceof PDOMNode) { ((PDOMNode) type).delete(linkage); } - Database db= pdom.getDB(); + Database db= getDB(); int valueRec= db.getInt(record + DEFAULT_TYPE); if (valueRec != 0) db.getString(valueRec).delete(); @@ -255,7 +254,7 @@ public class PDOMCPPTemplateTemplateParameter extends PDOMCPPBinding public IPDOMCPPTemplateParameter[] getTemplateParameters() { if (params == null) { try { - int rec= pdom.getDB().getInt(record + PARAMETERS); + int rec= getDB().getInt(record + PARAMETERS); if (rec == 0) { params= IPDOMCPPTemplateParameter.EMPTY_ARRAY; } else { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTemplateTypeParameter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTemplateTypeParameter.java index a62d741794f..c621836ae8e 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTemplateTypeParameter.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTemplateTypeParameter.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2008 QNX Software Systems and others. + * Copyright (c) 2007, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -29,7 +29,6 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPUnknownBinding; import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPUnknownType; import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants; import org.eclipse.cdt.internal.core.index.IIndexType; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.db.Database; import org.eclipse.cdt.internal.core.pdom.db.PDOMNodeLinkedList; import org.eclipse.cdt.internal.core.pdom.dom.IPDOMMemberOwner; @@ -57,16 +56,16 @@ class PDOMCPPTemplateTypeParameter extends PDOMCPPBinding implements IPDOMMember private ICPPScope fUnknownScope; private int fCachedParamID= -1; - public PDOMCPPTemplateTypeParameter(PDOM pdom, PDOMNode parent, ICPPTemplateTypeParameter param) + public PDOMCPPTemplateTypeParameter(PDOMLinkage linkage, PDOMNode parent, ICPPTemplateTypeParameter param) throws CoreException { - super(pdom, parent, param.getNameCharArray()); + super(linkage, parent, param.getNameCharArray()); - final Database db = pdom.getDB(); + final Database db = getDB(); db.putInt(record + PARAMETERID, param.getParameterID()); } - public PDOMCPPTemplateTypeParameter(PDOM pdom, int bindingRecord) { - super(pdom, bindingRecord); + public PDOMCPPTemplateTypeParameter(PDOMLinkage linkage, int bindingRecord) { + super(linkage, bindingRecord); } @Override @@ -97,7 +96,7 @@ class PDOMCPPTemplateTypeParameter extends PDOMCPPBinding implements IPDOMMember private void readParamID() { if (fCachedParamID == -1) { try { - final Database db = pdom.getDB(); + final Database db = getDB(); fCachedParamID= db.getInt(record + PARAMETERID); } catch (CoreException e) { CCorePlugin.log(e); @@ -108,13 +107,13 @@ class PDOMCPPTemplateTypeParameter extends PDOMCPPBinding implements IPDOMMember @Override public void addChild(PDOMNode member) throws CoreException { - PDOMNodeLinkedList list = new PDOMNodeLinkedList(pdom, record + MEMBERLIST, getLinkageImpl()); + PDOMNodeLinkedList list = new PDOMNodeLinkedList(getLinkage(), record + MEMBERLIST); list.addMember(member); } @Override public void accept(IPDOMVisitor visitor) throws CoreException { - PDOMNodeLinkedList list = new PDOMNodeLinkedList(pdom, record + MEMBERLIST, getLinkageImpl()); + PDOMNodeLinkedList list = new PDOMNodeLinkedList(getLinkage(), record + MEMBERLIST); list.accept(visitor); } @@ -131,7 +130,7 @@ class PDOMCPPTemplateTypeParameter extends PDOMCPPBinding implements IPDOMMember public IType getDefault() { try { - PDOMNode node = getLinkageImpl().getNode(pdom.getDB().getInt(record + DEFAULT_TYPE)); + PDOMNode node = getLinkage().getNode(getDB().getInt(record + DEFAULT_TYPE)); if (node instanceof IType) { return (IType) node; } @@ -171,7 +170,7 @@ class PDOMCPPTemplateTypeParameter extends PDOMCPPBinding implements IPDOMMember IType dflt= val.getTypeValue(); if (dflt != null) { final Database db= getPDOM().getDB(); - PDOMNode typeNode = getLinkageImpl().addType(this, dflt); + PDOMNode typeNode = getLinkage().addType(this, dflt); if (typeNode != null) { db.putInt(record + DEFAULT_TYPE, typeNode.getRecord()); } @@ -194,9 +193,9 @@ class PDOMCPPTemplateTypeParameter extends PDOMCPPBinding implements IPDOMMember // ignore } if (newDefault != null) { - final Database db = pdom.getDB(); + final Database db = getDB(); IType mytype= getDefault(); - PDOMNode typeNode = getLinkageImpl().addType(this, newDefault); + PDOMNode typeNode = getLinkage().addType(this, newDefault); if (typeNode != null) { db.putInt(record + DEFAULT_TYPE, typeNode.getRecord()); if (mytype != null) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTypeList.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTypeList.java index b69802b747f..c29a426af5c 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTypeList.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTypeList.java @@ -1,3 +1,13 @@ +/******************************************************************************* + * Copyright (c) 2008, 2009 Wind River Systems, Inc. and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Markus Schorn - initial API and implementation + *******************************************************************************/ package org.eclipse.cdt.internal.core.pdom.dom.cpp; import org.eclipse.cdt.core.dom.ast.IType; @@ -8,11 +18,9 @@ import org.eclipse.core.runtime.Assert; import org.eclipse.core.runtime.CoreException; /** - * Stores a typelist - * TODO could refactor to have common base shared by {@link PDOMCPPArgumentList} using generics + * Stores a list of types */ class PDOMCPPTypeList { - protected static final int NODE_SIZE = 4; /** @@ -24,7 +32,7 @@ class PDOMCPPTypeList { return 0; final PDOMLinkage linkage= parent.getLinkage(); - final Database db= linkage.getPDOM().getDB(); + final Database db= linkage.getDB(); final short len = (short)Math.min(types.length, (Database.MAX_MALLOC_SIZE-2)/NODE_SIZE); final int block = db.malloc(2+ NODE_SIZE*len); int p = block; @@ -47,7 +55,7 @@ class PDOMCPPTypeList { return null; final PDOMLinkage linkage= parent.getLinkage(); - final Database db= linkage.getPDOM().getDB(); + final Database db= linkage.getDB(); final short len = db.getShort(rec); if (len == 0) @@ -72,7 +80,7 @@ class PDOMCPPTypeList { return; final PDOMLinkage linkage= parent.getLinkage(); - final Database db= linkage.getPDOM().getDB(); + final Database db= linkage.getDB(); final short len= db.getShort(record); Assert.isTrue(len >= 0 && len <= (Database.MAX_MALLOC_SIZE-2)/NODE_SIZE); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTypedef.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTypedef.java index a4cc6bd43f4..dfea4efe94c 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTypedef.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTypedef.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2008 QNX Software Systems and others. + * Copyright (c) 2006, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -23,7 +23,6 @@ import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer; import org.eclipse.cdt.internal.core.index.CPPTypedefClone; import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants; import org.eclipse.cdt.internal.core.index.IIndexType; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; @@ -39,17 +38,17 @@ class PDOMCPPTypedef extends PDOMCPPBinding implements ITypedef, ITypeContainer, @SuppressWarnings("hiding") protected static final int RECORD_SIZE = PDOMBinding.RECORD_SIZE + 4; - public PDOMCPPTypedef(PDOM pdom, PDOMNode parent, ITypedef typedef) throws CoreException { - super(pdom, parent, typedef.getNameCharArray()); + public PDOMCPPTypedef(PDOMLinkage linkage, PDOMNode parent, ITypedef typedef) throws CoreException { + super(linkage, parent, typedef.getNameCharArray()); try { - setType(parent.getLinkageImpl(), typedef.getType()); + setType(parent.getLinkage(), typedef.getType()); } catch (DOMException e) { throw new CoreException(Util.createStatus(e)); } } - public PDOMCPPTypedef(PDOM pdom, int record) { - super(pdom, record); + public PDOMCPPTypedef(PDOMLinkage linkage, int record) { + super(linkage, record); } @Override @@ -75,7 +74,7 @@ class PDOMCPPTypedef extends PDOMCPPBinding implements ITypedef, ITypeContainer, linkage.deleteType((IType) typeNode, record); typeNode= null; } - pdom.getDB().putInt(record + TYPE, typeNode != null ? typeNode.getRecord() : 0); + getDB().putInt(record + TYPE, typeNode != null ? typeNode.getRecord() : 0); } private boolean introducesRecursion(IType type, int parentRec, char[] tdname) throws DOMException { @@ -128,7 +127,7 @@ class PDOMCPPTypedef extends PDOMCPPBinding implements ITypedef, ITypeContainer, public IType getType() { try { - PDOMNode node = getLinkageImpl().getNode(pdom.getDB().getInt(record + TYPE)); + PDOMNode node = getLinkage().getNode(getDB().getInt(record + TYPE)); return node instanceof IType ? (IType)node : null; } catch (CoreException e) { CCorePlugin.log(e); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTypedefSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTypedefSpecialization.java index d42e124ccd1..1eb10688ac0 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTypedefSpecialization.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTypedefSpecialization.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007 QNX Software Systems and others. + * Copyright (c) 2007, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -22,8 +22,8 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPTypedefSpecialization; import org.eclipse.cdt.internal.core.index.CPPTypedefClone; import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants; import org.eclipse.cdt.internal.core.index.IIndexType; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; +import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; import org.eclipse.core.runtime.CoreException; @@ -38,9 +38,9 @@ class PDOMCPPTypedefSpecialization extends PDOMCPPSpecialization @SuppressWarnings("hiding") protected static final int RECORD_SIZE = PDOMCPPSpecialization.RECORD_SIZE + 4; - public PDOMCPPTypedefSpecialization(PDOM pdom, PDOMNode parent, ITypedef typedef, PDOMBinding specialized) + public PDOMCPPTypedefSpecialization(PDOMLinkage linkage, PDOMNode parent, ITypedef typedef, PDOMBinding specialized) throws CoreException { - super(pdom, parent, (ICPPSpecialization) typedef, specialized); + super(linkage, parent, (ICPPSpecialization) typedef, specialized); try { if (typedef instanceof CPPTypedefSpecialization) { @@ -52,9 +52,9 @@ class PDOMCPPTypedefSpecialization extends PDOMCPPSpecialization IType type = typedef.getType(); // The following may try to add the same typedef specialization to the index again. // We protect against infinite recursion using a counter inside typedef. - PDOMNode typeNode = parent.getLinkageImpl().addType(this, type); + PDOMNode typeNode = parent.getLinkage().addType(this, type); if (typeNode != null) - pdom.getDB().putInt(record + TYPE, typeNode.getRecord()); + getDB().putInt(record + TYPE, typeNode.getRecord()); } catch (DOMException e) { throw new CoreException(Util.createStatus(e)); } finally { @@ -64,8 +64,8 @@ class PDOMCPPTypedefSpecialization extends PDOMCPPSpecialization } } - public PDOMCPPTypedefSpecialization(PDOM pdom, int record) { - super(pdom, record); + public PDOMCPPTypedefSpecialization(PDOMLinkage linkage, int record) { + super(linkage, record); } @Override @@ -80,7 +80,7 @@ class PDOMCPPTypedefSpecialization extends PDOMCPPSpecialization public IType getType() throws DOMException { try { - PDOMNode node = getLinkageImpl().getNode(pdom.getDB().getInt(record + TYPE)); + PDOMNode node = getLinkage().getNode(getDB().getInt(record + TYPE)); return node instanceof IType ? (IType)node : null; } catch (CoreException e) { CCorePlugin.log(e); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPUnknownClassInstance.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPUnknownClassInstance.java index 7dad127f5d3..12fc4160621 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPUnknownClassInstance.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPUnknownClassInstance.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008 Google, Inc and others. + * Copyright (c) 2008, 2009 Google, Inc and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -21,7 +21,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateArgument; import org.eclipse.cdt.core.parser.util.CharArrayUtils; import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPUnknownClassInstance; import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants; -import org.eclipse.cdt.internal.core.pdom.PDOM; +import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; import org.eclipse.core.runtime.CoreException; @@ -38,15 +38,15 @@ class PDOMCPPUnknownClassInstance extends PDOMCPPUnknownClassType implements ICP // Cached values. ICPPTemplateArgument[] arguments; - public PDOMCPPUnknownClassInstance(PDOM pdom, PDOMNode parent, ICPPUnknownClassInstance classInstance) throws CoreException { - super(pdom, parent, classInstance); + public PDOMCPPUnknownClassInstance(PDOMLinkage linkage, PDOMNode parent, ICPPUnknownClassInstance classInstance) throws CoreException { + super(linkage, parent, classInstance); int rec= PDOMCPPArgumentList.putArguments(this, classInstance.getArguments()); - pdom.getDB().putInt(record + ARGUMENTS, rec); + getDB().putInt(record + ARGUMENTS, rec); } - public PDOMCPPUnknownClassInstance(PDOM pdom, int bindingRecord) { - super(pdom, bindingRecord); + public PDOMCPPUnknownClassInstance(PDOMLinkage linkage, int bindingRecord) { + super(linkage, bindingRecord); } @Override diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPUnknownClassType.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPUnknownClassType.java index 3b9504b105e..4280f087a72 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPUnknownClassType.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPUnknownClassType.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008 Google, Inc and others. + * Copyright (c) 2008, 2009 Google, Inc and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -39,7 +39,6 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPSemantics; import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants; import org.eclipse.cdt.internal.core.index.IIndexScope; import org.eclipse.cdt.internal.core.index.IIndexType; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.db.PDOMNodeLinkedList; import org.eclipse.cdt.internal.core.pdom.dom.IPDOMMemberOwner; import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; @@ -59,15 +58,15 @@ class PDOMCPPUnknownClassType extends PDOMCPPBinding implements ICPPClassScope, private ICPPScope unknownScope; - public PDOMCPPUnknownClassType(PDOM pdom, PDOMNode parent, ICPPUnknownClassType classType) throws CoreException { - super(pdom, parent, classType.getNameCharArray()); + public PDOMCPPUnknownClassType(PDOMLinkage linkage, PDOMNode parent, ICPPUnknownClassType classType) throws CoreException { + super(linkage, parent, classType.getNameCharArray()); setKind(classType); // linked list is initialized by storage being zero'd by malloc } - public PDOMCPPUnknownClassType(PDOM pdom, int bindingRecord) { - super(pdom, bindingRecord); + public PDOMCPPUnknownClassType(PDOMLinkage linkage, int bindingRecord) { + super(linkage, bindingRecord); } public EScopeKind getKind() { @@ -85,7 +84,7 @@ class PDOMCPPUnknownClassType extends PDOMCPPBinding implements ICPPClassScope, private void setKind(ICPPClassType ct) throws CoreException { try { - pdom.getDB().putByte(record + KEY, (byte) ct.getKey()); + getDB().putByte(record + KEY, (byte) ct.getKey()); } catch (DOMException e) { throw new CoreException(Util.createStatus(e)); } @@ -93,7 +92,7 @@ class PDOMCPPUnknownClassType extends PDOMCPPBinding implements ICPPClassScope, @Override public void addChild(PDOMNode member) throws CoreException { - PDOMNodeLinkedList list = new PDOMNodeLinkedList(pdom, record + MEMBERLIST, getLinkageImpl()); + PDOMNodeLinkedList list = new PDOMNodeLinkedList(getLinkage(), record + MEMBERLIST); list.addMember(member); } @@ -110,7 +109,7 @@ class PDOMCPPUnknownClassType extends PDOMCPPBinding implements ICPPClassScope, @Override public void accept(IPDOMVisitor visitor) throws CoreException { super.accept(visitor); - PDOMNodeLinkedList list = new PDOMNodeLinkedList(pdom, record + MEMBERLIST, getLinkageImpl()); + PDOMNodeLinkedList list = new PDOMNodeLinkedList(getLinkage(), record + MEMBERLIST); list.accept(visitor); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPUsingDeclaration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPUsingDeclaration.java index fc659857b8d..b93cea14267 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPUsingDeclaration.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPUsingDeclaration.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008 Google, Inc and others. + * Copyright (c) 2008, 2009 Google, Inc and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -15,7 +15,6 @@ import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.cpp.ICPPUsingDeclaration; import org.eclipse.cdt.core.parser.util.ArrayUtil; import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; @@ -41,31 +40,31 @@ class PDOMCPPUsingDeclaration extends PDOMCPPBinding implements ICPPUsingDeclara private IBinding[] delegates; - public PDOMCPPUsingDeclaration(PDOM pdom, PDOMNode parent, ICPPUsingDeclaration using) + public PDOMCPPUsingDeclaration(PDOMLinkage linkage, PDOMNode parent, ICPPUsingDeclaration using) throws CoreException { - super(pdom, parent, using.getNameCharArray()); + super(linkage, parent, using.getNameCharArray()); IBinding[] delegates= using.getDelegates(); int nextRecord = 0; for (int i = delegates.length; --i >= 0;) { PDOMCPPUsingDeclaration simpleUsing = i > 0 ? - new PDOMCPPUsingDeclaration(pdom, parent, getNameCharArray()) : this; - simpleUsing.setTargetBinding(parent.getLinkageImpl(), delegates[i]); - pdom.getDB().putInt(record + NEXT_DELEGATE, nextRecord); + new PDOMCPPUsingDeclaration(linkage, parent, getNameCharArray()) : this; + simpleUsing.setTargetBinding(parent.getLinkage(), delegates[i]); + getDB().putInt(record + NEXT_DELEGATE, nextRecord); nextRecord = simpleUsing.getRecord(); } } - public PDOMCPPUsingDeclaration(PDOM pdom, int record) { - super(pdom, record); + public PDOMCPPUsingDeclaration(PDOMLinkage linkage, int record) { + super(linkage, record); } - private PDOMCPPUsingDeclaration(PDOM pdom, PDOMNode parent, char[] name) throws CoreException { - super(pdom, parent, name); + private PDOMCPPUsingDeclaration(PDOMLinkage linkage, PDOMNode parent, char[] name) throws CoreException { + super(linkage, parent, name); } private void setTargetBinding(PDOMLinkage linkage, IBinding delegate) throws CoreException { - PDOMBinding target = getLinkageImpl().adaptBinding(delegate); - pdom.getDB().putInt(record + TARGET_BINDING, target != null ? target.getRecord() : 0); + PDOMBinding target = getLinkage().adaptBinding(delegate); + getDB().putInt(record + TARGET_BINDING, target != null ? target.getRecord() : 0); } @Override @@ -99,13 +98,13 @@ class PDOMCPPUsingDeclaration extends PDOMCPPBinding implements ICPPUsingDeclara } private PDOMCPPUsingDeclaration getNext() throws CoreException { - int nextRecord = pdom.getDB().getInt(record + NEXT_DELEGATE); - return nextRecord != 0 ? new PDOMCPPUsingDeclaration(pdom, nextRecord) : null; + int nextRecord = getDB().getInt(record + NEXT_DELEGATE); + return nextRecord != 0 ? new PDOMCPPUsingDeclaration(getLinkage(), nextRecord) : null; } private IBinding getBinding() { try { - return (IBinding) getLinkageImpl().getNode( + return (IBinding) getLinkage().getNode( getPDOM().getDB().getInt(record + TARGET_BINDING)); } catch (CoreException e) { CCorePlugin.log(e); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPUsingDirective.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPUsingDirective.java index dd957b2264b..8b04cec317c 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPUsingDirective.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPUsingDirective.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008 Wind River Systems, Inc. and others. + * Copyright (c) 2008, 2009 Wind River Systems, Inc. and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -46,7 +46,7 @@ public class PDOMCPPUsingDirective implements ICPPUsingDirective, IPDOMNode { } public PDOMCPPUsingDirective(PDOMCPPLinkage linkage, int prevRecInFile, PDOMCPPNamespace containerNS, PDOMBinding nominated) throws CoreException { - final Database db= linkage.getPDOM().getDB(); + final Database db= linkage.getDB(); final int containerRec= containerNS == null ? 0 : containerNS.getRecord(); final int nominatedRec= nominated.getRecord(); @@ -62,7 +62,7 @@ public class PDOMCPPUsingDirective implements ICPPUsingDirective, IPDOMNode { */ public ICPPNamespaceScope getNominatedScope() { try { - int rec = fLinkage.getPDOM().getDB().getInt(fRecord + NOMINATED_NAMESPACE); + int rec = fLinkage.getDB().getInt(fRecord + NOMINATED_NAMESPACE); PDOMNode node= fLinkage.getNode(rec); if (node instanceof ICPPNamespace) { return ((ICPPNamespace) node).getNamespaceScope(); @@ -80,7 +80,7 @@ public class PDOMCPPUsingDirective implements ICPPUsingDirective, IPDOMNode { */ public IScope getContainingScope() { try { - int rec = fLinkage.getPDOM().getDB().getInt(fRecord + CONTAINER_NAMESPACE); + int rec = fLinkage.getDB().getInt(fRecord + CONTAINER_NAMESPACE); if (rec != 0) { PDOMNode node= fLinkage.getNode(rec); if (node instanceof PDOMCPPNamespace) { @@ -105,7 +105,7 @@ public class PDOMCPPUsingDirective implements ICPPUsingDirective, IPDOMNode { } public int getPreviousRec() throws CoreException { - final Database db= fLinkage.getPDOM().getDB(); + final Database db= fLinkage.getDB(); return db.getInt(fRecord + PREV_DIRECTIVE_OF_FILE); } @@ -116,6 +116,6 @@ public class PDOMCPPUsingDirective implements ICPPUsingDirective, IPDOMNode { } public void delete(PDOMLinkage linkage) throws CoreException { - fLinkage.getPDOM().getDB().free(fRecord); + fLinkage.getDB().free(fRecord); } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPVariable.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPVariable.java index a7f1cc12b2b..2d4a8614df5 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPVariable.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPVariable.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2005, 2008 QNX Software Systems and others. + * Copyright (c) 2005, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -23,7 +23,6 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPVariable; import org.eclipse.cdt.internal.core.Util; import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVariableReadWriteFlags; import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.db.Database; import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; @@ -62,13 +61,13 @@ class PDOMCPPVariable extends PDOMCPPBinding implements ICPPVariable { @SuppressWarnings("hiding") protected static final int RECORD_SIZE = PDOMBinding.RECORD_SIZE + 9; - public PDOMCPPVariable(PDOM pdom, PDOMNode parent, IVariable variable) throws CoreException { - super(pdom, parent, variable.getNameCharArray()); + public PDOMCPPVariable(PDOMLinkage linkage, PDOMNode parent, IVariable variable) throws CoreException { + super(linkage, parent, variable.getNameCharArray()); try { // Find the type record - Database db = pdom.getDB(); - setType(parent.getLinkageImpl(), variable.getType()); + Database db = getDB(); + setType(parent.getLinkage(), variable.getType()); db.putByte(record + ANNOTATIONS, encodeFlags(variable)); setValue(db, variable); } catch (DOMException e) { @@ -85,7 +84,7 @@ class PDOMCPPVariable extends PDOMCPPBinding implements ICPPVariable { @Override public void update(final PDOMLinkage linkage, IBinding newBinding) throws CoreException { if (newBinding instanceof IVariable) { - final Database db = pdom.getDB(); + final Database db = getDB(); IVariable var= (IVariable) newBinding; IType mytype= getType(); int valueRec= db.getInt(record + VALUE_OFFSET); @@ -107,15 +106,15 @@ class PDOMCPPVariable extends PDOMCPPBinding implements ICPPVariable { private void setType(final PDOMLinkage linkage, IType newType) throws CoreException, DOMException { PDOMNode typeNode = linkage.addType(this, newType); - pdom.getDB().putInt(record + TYPE_OFFSET, typeNode != null ? typeNode.getRecord() : 0); + getDB().putInt(record + TYPE_OFFSET, typeNode != null ? typeNode.getRecord() : 0); } protected byte encodeFlags(IVariable variable) throws DOMException { return PDOMCPPAnnotation.encodeAnnotation(variable); } - public PDOMCPPVariable(PDOM pdom, int record) { - super(pdom, record); + public PDOMCPPVariable(PDOMLinkage linkage, int record) { + super(linkage, record); } @Override @@ -135,8 +134,8 @@ class PDOMCPPVariable extends PDOMCPPBinding implements ICPPVariable { public IType getType() { try { - int typeRec = pdom.getDB().getInt(record + TYPE_OFFSET); - return (IType)getLinkageImpl().getNode(typeRec); + int typeRec = getDB().getInt(record + TYPE_OFFSET); + return (IType)getLinkage().getNode(typeRec); } catch (CoreException e) { CCorePlugin.log(e); return null; @@ -145,7 +144,7 @@ class PDOMCPPVariable extends PDOMCPPBinding implements ICPPVariable { public IValue getInitialValue() { try { - final Database db = pdom.getDB(); + final Database db = getDB(); int valRec = db.getInt(record + VALUE_OFFSET); return PDOMValue.restore(db, getLinkage(), valRec); } catch (CoreException e) { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMGPPBasicType.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMGPPBasicType.java index 1ef2da2bd85..2351f580465 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMGPPBasicType.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMGPPBasicType.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007 Wind River Systems, Inc. and others. + * Copyright (c) 2007, 2009 Wind River Systems, Inc. and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -15,18 +15,18 @@ import org.eclipse.cdt.core.dom.ast.DOMException; import org.eclipse.cdt.core.dom.ast.IType; import org.eclipse.cdt.core.dom.ast.gnu.cpp.IGPPBasicType; import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants; -import org.eclipse.cdt.internal.core.pdom.PDOM; +import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; import org.eclipse.core.runtime.CoreException; class PDOMGPPBasicType extends PDOMCPPBasicType implements IGPPBasicType { - public PDOMGPPBasicType(PDOM pdom, int record) { - super(pdom, record); + public PDOMGPPBasicType(PDOMLinkage linkage, int record) { + super(linkage, record); } - public PDOMGPPBasicType(PDOM pdom, PDOMNode parent, IGPPBasicType type) throws CoreException { - super(pdom, parent, type, encodeGPPFlags(type)); + public PDOMGPPBasicType(PDOMLinkage linkage, PDOMNode parent, IGPPBasicType type) throws CoreException { + super(linkage, parent, type, encodeGPPFlags(type)); } @Override diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMTemplateParameterArray.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMTemplateParameterArray.java index f1e4a6e7ce4..64dd3fe6a2f 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMTemplateParameterArray.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMTemplateParameterArray.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008 Wind River Systems, Inc. and others. + * Copyright (c) 2008, 2009 Wind River Systems, Inc. and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -15,7 +15,6 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateNonTypeParameter; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameter; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateTemplateParameter; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateTypeParameter; -import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.db.Database; import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; @@ -48,7 +47,7 @@ public class PDOMTemplateParameterArray { */ public static IPDOMCPPTemplateParameter[] getArray(PDOMNode parent, int rec) throws CoreException { final PDOMLinkage linkage= parent.getLinkage(); - final Database db= linkage.getPDOM().getDB(); + final Database db= linkage.getDB(); final short len= db.getShort(rec); Assert.isTrue(len >= 0 && len <= (Database.MAX_MALLOC_SIZE-2)/8); @@ -68,10 +67,10 @@ public class PDOMTemplateParameterArray { /** * Creates template parameters in the pdom */ - public static IPDOMCPPTemplateParameter[] createPDOMTemplateParameters(PDOM pdom, PDOMNode parent, ICPPTemplateParameter[] origParams) throws CoreException, DOMException { + public static IPDOMCPPTemplateParameter[] createPDOMTemplateParameters(PDOMLinkage linkage, PDOMNode parent, ICPPTemplateParameter[] origParams) throws CoreException, DOMException { IPDOMCPPTemplateParameter[] params= new IPDOMCPPTemplateParameter[origParams.length]; for (int i = 0; i < origParams.length; i++) { - params[i]= createPDOMTemplateParameter(pdom, parent, origParams[i]); + params[i]= createPDOMTemplateParameter(linkage, parent, origParams[i]); } return params; } @@ -79,14 +78,14 @@ public class PDOMTemplateParameterArray { /** * Creates a template parameter in the pdom */ - public static IPDOMCPPTemplateParameter createPDOMTemplateParameter(PDOM pdom, PDOMNode parent, ICPPTemplateParameter origParam) throws CoreException, DOMException { + public static IPDOMCPPTemplateParameter createPDOMTemplateParameter(PDOMLinkage linkage, PDOMNode parent, ICPPTemplateParameter origParam) throws CoreException, DOMException { IPDOMCPPTemplateParameter param= null; if (origParam instanceof ICPPTemplateNonTypeParameter) { - param= new PDOMCPPTemplateNonTypeParameter(pdom, parent, (ICPPTemplateNonTypeParameter) origParam); + param= new PDOMCPPTemplateNonTypeParameter(linkage, parent, (ICPPTemplateNonTypeParameter) origParam); } else if (origParam instanceof ICPPTemplateTypeParameter) { - param= new PDOMCPPTemplateTypeParameter(pdom, parent, (ICPPTemplateTypeParameter) origParam); + param= new PDOMCPPTemplateTypeParameter(linkage, parent, (ICPPTemplateTypeParameter) origParam); } else if (origParam instanceof ICPPTemplateTemplateParameter) { - param= new PDOMCPPTemplateTemplateParameter(pdom, parent, (ICPPTemplateTemplateParameter) origParam); + param= new PDOMCPPTemplateTemplateParameter(linkage, parent, (ICPPTemplateTemplateParameter) origParam); } return param; } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/indexview/CountNodeAction.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/indexview/CountNodeAction.java index 420427e708c..bf7ce268296 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/indexview/CountNodeAction.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/indexview/CountNodeAction.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2005, 2007 QNX Software Systems + * Copyright (c) 2005, 2009 QNX Software Systems * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -91,7 +91,7 @@ public class CountNodeAction extends IndexAction { public boolean visit(int record) throws CoreException { if (record != 0) { - PDOMFile file = new PDOMFile(pdom, record); + PDOMFile file = PDOMFile.recreateFile(pdom, record); ++count[FILES]; PDOMMacro macro = file.getFirstMacro(); while (macro != null) {