Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-patch] cdt.core model patch

=========
Old patch resent, bounced.
=========
Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/ChangeLog,v
retrieving revision 1.79
diff -u -r1.79 ChangeLog
--- ChangeLog	28 Mar 2003 21:00:39 -0000	1.79
+++ ChangeLog	31 Mar 2003 03:40:21 -0000
@@ -1,3 +1,52 @@
+2003-03-30 Alain Magloire
+
+	First phase of the rewrite on how we treat Binary/Archive in the CoreModel
+	This included suggestions from Chris Songer on augmenting the binary methods
+	to include the address;
+	IBinary
+		IBinaryModule
+			IBinaryFunction
+			IBinaryVariable
+				IBinaryElement
+
+	* model/org/eclipse/cdt/core/model/IBinaryElement.java:
+	* model/org/eclipse/cdt/core/model/IBinaryModule.java:
+	* model/org/eclipse/cdt/core/model/IBinaryVariable.java:
+	* model/org/eclipse/cdt/core/model/IBinaryFunction.java:
+	New Classes.
+
+	* model/org/eclipse/cdt/internal/core/model/Binary.java:
+	* model/org/eclipse/cdt/internal/core/model/Archive.java:
+	* model/org/eclipse/cdt/internal/core/model/BinaryModule.java:
+	* model/org/eclipse/cdt/internal/core/model/BinaryFunction.java:
+	* model/org/eclipse/cdt/internal/core/model/BinaryVariable.java:
+	* model/org/eclipse/cdt/internal/core/model/BinaryElement.java:
+	Implement the IBinaryElement classes.
+
+
+	* model/org/eclipse/cdt/internal/core/model/CElement.java:
+	* model/org/eclipse/cdt/internal/core/model/CModelCache.java:
+	* model/org/eclipse/cdt/internal/core/model/Openable.java:
+	* model/org/eclipse/cdt/internal/core/model/Parent.java:
+	Change the CModelCache to save in the LRU the binaries.
+
+	* model/org/eclipse/cdt/internal/core/model/parser/ElfBinaryFile.java:
+	* model/org/eclipse/cdt/internal/core/model/parser/PEBinaryFile.java:
+	* model/org/eclipse/cdt/internal/core/model/parser/Symbol.java:
+	Implement the method getAddress().
+	Suggested by Chris Songer
+
+	* model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java:
+	* model/org/eclipse/cdt/internal/core/model/CModelManager.java:
+	Fix bug, the event was fired for the non-C resources.
+
+	* src/org/eclipse/cdt/core/CCorePlugin.java:
+	New method getDefaultBinaryParser().
+
+	* src/org/eclipse/cdt/core/IBinaryParser.java:
+	Added method getAddress() to ISymbol
+	Suggested by Chris Songer
+
 2003-03-28 David Inglis
 
 	* src/org/eclipse/cdt/core/AbstractCExtension.java
@@ -56,80 +105,80 @@
 	- ICRootInfo to ICModelInfo
 	- Move internal/core/model/IBuffer* classes to core/model/IBuffer*
 
-	index/org/eclipse/cdt/internal/core/index/IndexManager.java
-	model/org/eclipse/cdt/core/model/BufferChangedEvent.java
-	model/org/eclipse/cdt/core/model/CoreModel.java
-	model/org/eclipse/cdt/core/model/IArchive.java
-	model/org/eclipse/cdt/core/model/IArchiveContainer.java
-	model/org/eclipse/cdt/core/model/IBinary.java
-	model/org/eclipse/cdt/core/model/IBinaryContainer.java
-	odel/org/eclipse/cdt/core/model/IBinaryContainer.java
-	model/org/eclipse/cdt/core/model/IBuffer.java
-	model/org/eclipse/cdt/core/model/IBufferChangedListener.java
-	model/org/eclipse/cdt/core/model/ICContainer.java
-	model/org/eclipse/cdt/core/model/ICElement.java
-	model/org/eclipse/cdt/core/model/ICFile.java
-	model/org/eclipse/cdt/core/model/ICFolder.java
-	model/org/eclipse/cdt/core/model/ICModel.java
-	model/org/eclipse/cdt/core/model/ICOpenable.java
-	model/org/eclipse/cdt/core/model/ICProject.java
-	model/org/eclipse/cdt/core/model/ICResource.java
-	model/org/eclipse/cdt/core/model/ICRoot.java
-	model/org/eclipse/cdt/core/model/IOpenable.java
-	model/org/eclipse/cdt/core/model/ITranslationUnit.java
-	model/org/eclipse/cdt/internal/core/model/Archive.java
-	model/org/eclipse/cdt/internal/core/model/ArchiveContainer.java
-	model/org/eclipse/cdt/internal/core/model/ArchiveContainerInfo.java
-	model/org/eclipse/cdt/internal/core/model/ArchiveInfo.java
-	model/org/eclipse/cdt/internal/core/model/Binary.java
-	model/org/eclipse/cdt/internal/core/model/BinaryContainer.java
-	model/org/eclipse/cdt/internal/core/model/BinaryContainerInfo.java
-	model/org/eclipse/cdt/internal/core/model/BinaryInfo.java
-	model/org/eclipse/cdt/internal/core/model/BinaryRunner.java
-	model/org/eclipse/cdt/internal/core/model/Buffer.java
-	model/org/eclipse/cdt/internal/core/model/BufferChangedEvent.java
-	model/org/eclipse/cdt/internal/core/model/BufferManager.java
-	model/org/eclipse/cdt/internal/core/model/CContainer.java
-	model/org/eclipse/cdt/internal/core/model/CContainerInfo.java
-	model/org/eclipse/cdt/internal/core/model/CElement.java
-	model/org/eclipse/cdt/internal/core/model/CElementDelta.java
-	model/org/eclipse/cdt/internal/core/model/CElementDeltaBuilder.java
-	model/org/eclipse/cdt/internal/core/model/CElementInfo.java
-	model/org/eclipse/cdt/internal/core/model/CFile.java
-	model/org/eclipse/cdt/internal/core/model/CFileInfo.java
-	model/org/eclipse/cdt/internal/core/model/CFolder.java
-	model/org/eclipse/cdt/internal/core/model/CFolderInfo.java
-	model/org/eclipse/cdt/internal/core/model/CModel.java
-	model/org/eclipse/cdt/internal/core/model/CModelCache.java
-	model/org/eclipse/cdt/internal/core/model/CModelInfo.java
-	model/org/eclipse/cdt/internal/core/model/CModelManager.java
-	model/org/eclipse/cdt/internal/core/model/CModelOperation.java
-	model/org/eclipse/cdt/internal/core/model/CProject.java
-	model/org/eclipse/cdt/internal/core/model/CProjectInfo.java
-	model/org/eclipse/cdt/internal/core/model/CResource.java
-	model/org/eclipse/cdt/internal/core/model/CResourceInfo.java
-	model/org/eclipse/cdt/internal/core/model/CRoot.java
-	model/org/eclipse/cdt/internal/core/model/CRootInfo.java
-	model/org/eclipse/cdt/internal/core/model/CommitWorkingCopyOperation.java
-	model/org/eclipse/cdt/internal/core/model/CopyElementsOperation.java
-	model/org/eclipse/cdt/internal/core/model/CopyResourceElementsOperation.java
-	model/org/eclipse/cdt/internal/core/model/CreateElementInTUOperation.java
-	model/org/eclipse/cdt/internal/core/model/DeleteResourceElementsOperation.java
-	model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java
-	model/org/eclipse/cdt/internal/core/model/ElementCache.java
-	model/org/eclipse/cdt/internal/core/model/FieldInfo.java
-	model/org/eclipse/cdt/internal/core/model/FunctionInfo.java
-	model/org/eclipse/cdt/internal/core/model/IBuffer.java
-	model/org/eclipse/cdt/internal/core/model/IBufferChangedListener.java
-	model/org/eclipse/cdt/internal/core/model/IBufferFactory.java
-	model/org/eclipse/cdt/internal/core/model/IWorkingCopy.java
-	model/org/eclipse/cdt/internal/core/model/Openable.java
-	model/org/eclipse/cdt/internal/core/model/OpenableInfo.java
-	model/org/eclipse/cdt/internal/core/model/Parent.java
-	model/org/eclipse/cdt/internal/core/model/SourceManipulation.java
-	model/org/eclipse/cdt/internal/core/model/SourceManipulationInfo.java
-	model/org/eclipse/cdt/internal/core/model/TranslationUnit.java
-	model/org/eclipse/cdt/internal/core/model/TranslationUnitInfo.java
+	* index/org/eclipse/cdt/internal/core/index/IndexManager.java
+	* model/org/eclipse/cdt/core/model/BufferChangedEvent.java
+	* model/org/eclipse/cdt/core/model/CoreModel.java
+	* model/org/eclipse/cdt/core/model/IArchive.java
+	* model/org/eclipse/cdt/core/model/IArchiveContainer.java
+	* model/org/eclipse/cdt/core/model/IBinary.java
+	* model/org/eclipse/cdt/core/model/IBinaryContainer.java
+	* model/org/eclipse/cdt/core/model/IBinaryContainer.java
+	* model/org/eclipse/cdt/core/model/IBuffer.java
+	* model/org/eclipse/cdt/core/model/IBufferChangedListener.java
+	* model/org/eclipse/cdt/core/model/ICContainer.java
+	* model/org/eclipse/cdt/core/model/ICElement.java
+	* model/org/eclipse/cdt/core/model/ICFile.java
+	* model/org/eclipse/cdt/core/model/ICFolder.java
+	* model/org/eclipse/cdt/core/model/ICModel.java
+	* model/org/eclipse/cdt/core/model/ICOpenable.java
+	* model/org/eclipse/cdt/core/model/ICProject.java
+	* model/org/eclipse/cdt/core/model/ICResource.java
+	* model/org/eclipse/cdt/core/model/ICRoot.java
+	* model/org/eclipse/cdt/core/model/IOpenable.java
+	* model/org/eclipse/cdt/core/model/ITranslationUnit.java
+	* model/org/eclipse/cdt/internal/core/model/Archive.java
+	* model/org/eclipse/cdt/internal/core/model/ArchiveContainer.java
+	* model/org/eclipse/cdt/internal/core/model/ArchiveContainerInfo.java
+	* model/org/eclipse/cdt/internal/core/model/ArchiveInfo.java
+	* model/org/eclipse/cdt/internal/core/model/Binary.java
+	* model/org/eclipse/cdt/internal/core/model/BinaryContainer.java
+	* model/org/eclipse/cdt/internal/core/model/BinaryContainerInfo.java
+	* model/org/eclipse/cdt/internal/core/model/BinaryInfo.java
+	* model/org/eclipse/cdt/internal/core/model/BinaryRunner.java
+	* model/org/eclipse/cdt/internal/core/model/Buffer.java
+	* model/org/eclipse/cdt/internal/core/model/BufferChangedEvent.java
+	* model/org/eclipse/cdt/internal/core/model/BufferManager.java
+	* model/org/eclipse/cdt/internal/core/model/CContainer.java
+	* model/org/eclipse/cdt/internal/core/model/CContainerInfo.java
+	* model/org/eclipse/cdt/internal/core/model/CElement.java
+	* model/org/eclipse/cdt/internal/core/model/CElementDelta.java
+	* model/org/eclipse/cdt/internal/core/model/CElementDeltaBuilder.java
+	* model/org/eclipse/cdt/internal/core/model/CElementInfo.java
+	* model/org/eclipse/cdt/internal/core/model/CFile.java
+	* model/org/eclipse/cdt/internal/core/model/CFileInfo.java
+	* model/org/eclipse/cdt/internal/core/model/CFolder.java
+	* model/org/eclipse/cdt/internal/core/model/CFolderInfo.java
+	* model/org/eclipse/cdt/internal/core/model/CModel.java
+	* model/org/eclipse/cdt/internal/core/model/CModelCache.java
+	* model/org/eclipse/cdt/internal/core/model/CModelInfo.java
+	* model/org/eclipse/cdt/internal/core/model/CModelManager.java
+	* model/org/eclipse/cdt/internal/core/model/CModelOperation.java
+	* model/org/eclipse/cdt/internal/core/model/CProject.java
+	* model/org/eclipse/cdt/internal/core/model/CProjectInfo.java
+	* model/org/eclipse/cdt/internal/core/model/CResource.java
+	* model/org/eclipse/cdt/internal/core/model/CResourceInfo.java
+	* model/org/eclipse/cdt/internal/core/model/CRoot.java
+	* model/org/eclipse/cdt/internal/core/model/CRootInfo.java
+	* model/org/eclipse/cdt/internal/core/model/CommitWorkingCopyOperation.java
+	* model/org/eclipse/cdt/internal/core/model/CopyElementsOperation.java
+	* model/org/eclipse/cdt/internal/core/model/CopyResourceElementsOperation.java
+	* model/org/eclipse/cdt/internal/core/model/CreateElementInTUOperation.java
+	* model/org/eclipse/cdt/internal/core/model/DeleteResourceElementsOperation.java
+	* model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java
+	* model/org/eclipse/cdt/internal/core/model/ElementCache.java
+	* model/org/eclipse/cdt/internal/core/model/FieldInfo.java
+	* model/org/eclipse/cdt/internal/core/model/FunctionInfo.java
+	* model/org/eclipse/cdt/internal/core/model/IBuffer.java
+	* model/org/eclipse/cdt/internal/core/model/IBufferChangedListener.java
+	* model/org/eclipse/cdt/internal/core/model/IBufferFactory.java
+	* model/org/eclipse/cdt/internal/core/model/IWorkingCopy.java
+	* model/org/eclipse/cdt/internal/core/model/Openable.java
+	* model/org/eclipse/cdt/internal/core/model/OpenableInfo.java
+	* model/org/eclipse/cdt/internal/core/model/Parent.java
+	* model/org/eclipse/cdt/internal/core/model/SourceManipulation.java
+	* model/org/eclipse/cdt/internal/core/model/SourceManipulationInfo.java
+	* model/org/eclipse/cdt/internal/core/model/TranslationUnit.java
+	* model/org/eclipse/cdt/internal/core/model/TranslationUnitInfo.java
 
 
 2003-03-20 Alain Magloire
Index: model/org/eclipse/cdt/core/model/IBinaryElement.java
===================================================================
RCS file: model/org/eclipse/cdt/core/model/IBinaryElement.java
diff -N model/org/eclipse/cdt/core/model/IBinaryElement.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ model/org/eclipse/cdt/core/model/IBinaryElement.java	31 Mar 2003 03:40:22 -0000
@@ -0,0 +1,26 @@
+package org.eclipse.cdt.core.model;
+
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
+
+/**
+ */
+public interface IBinaryElement extends ICElement {
+
+	/**
+ 	 * Returns the address of the function. This method will return,
+ 	 * the address of a symbol for children of IBinaryObject.
+ 	 *
+ 	 * @exception CModelException if this element does not have address
+ 	 * information.
+ 	 */
+ 	long getAddress() throws CModelException;
+
+	/**
+ 	 * Returns the binary object the element belongs to.
+	 *
+ 	 */
+	IBinary getBinary();
+}
Index: model/org/eclipse/cdt/core/model/IBinaryFunction.java
===================================================================
RCS file: model/org/eclipse/cdt/core/model/IBinaryFunction.java
diff -N model/org/eclipse/cdt/core/model/IBinaryFunction.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ model/org/eclipse/cdt/core/model/IBinaryFunction.java	31 Mar 2003 03:40:22 -0000
@@ -0,0 +1,12 @@
+package org.eclipse.cdt.core.model;
+
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
+
+/**
+ * Represents a function.
+ */
+public interface IBinaryFunction extends IFunction, IBinaryElement {
+}
Index: model/org/eclipse/cdt/core/model/IBinaryModule.java
===================================================================
RCS file: model/org/eclipse/cdt/core/model/IBinaryModule.java
diff -N model/org/eclipse/cdt/core/model/IBinaryModule.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ model/org/eclipse/cdt/core/model/IBinaryModule.java	31 Mar 2003 03:40:23 -0000
@@ -0,0 +1,13 @@
+package org.eclipse.cdt.core.model;
+
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
+
+/**
+ */
+public interface IBinaryModule extends IParent, IBinaryElement {
+
+	IBinaryElement[] getBinaryElements();
+}
Index: model/org/eclipse/cdt/core/model/IBinaryVariable.java
===================================================================
RCS file: model/org/eclipse/cdt/core/model/IBinaryVariable.java
diff -N model/org/eclipse/cdt/core/model/IBinaryVariable.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ model/org/eclipse/cdt/core/model/IBinaryVariable.java	31 Mar 2003 03:40:23 -0000
@@ -0,0 +1,12 @@
+package org.eclipse.cdt.core.model;
+
+/*
+ * (c) Copyright IBM Corp. 2000, 2001.
+ * All Rights Reserved.
+ */
+
+/**
+ * Represents a global variable.
+ */
+public interface IBinaryVariable extends IVariable , IBinaryElement {
+}
Index: model/org/eclipse/cdt/internal/core/model/Archive.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/Archive.java,v
retrieving revision 1.5
diff -u -r1.5 Archive.java
--- model/org/eclipse/cdt/internal/core/model/Archive.java	27 Mar 2003 16:05:18 -0000	1.5
+++ model/org/eclipse/cdt/internal/core/model/Archive.java	31 Mar 2003 03:40:24 -0000
@@ -62,14 +62,7 @@
 			IBinaryObject[] objects = ar.getObjects();
 			for (int i = 0; i < objects.length; i++) {
 				final IBinaryObject obj = objects[i];
-				Binary binary = new Binary(this, res.getLocation().append(obj.getName())) {
-					protected IBinaryObject getBinaryObject(IResource res) {
-						return obj;
-					}
-				};
-
-				// Force the loading of the children inf the Info by callin getElementInfo.
-				binary.getElementInfo();
+				Binary binary = new Binary(this, res.getLocation().append(obj.getName()), obj);
 				info.addChild(binary);
 			}
 		} else {
Index: model/org/eclipse/cdt/internal/core/model/Binary.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/Binary.java,v
retrieving revision 1.5
diff -u -r1.5 Binary.java
--- model/org/eclipse/cdt/internal/core/model/Binary.java	27 Mar 2003 16:05:18 -0000	1.5
+++ model/org/eclipse/cdt/internal/core/model/Binary.java	31 Mar 2003 03:40:24 -0000
@@ -5,20 +5,18 @@
  * All Rights Reserved.
  */
  
-import java.io.IOException;
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.eclipse.cdt.core.IBinaryParser;
+import org.eclipse.cdt.core.IBinaryParser.IBinaryExecutable;
 import org.eclipse.cdt.core.IBinaryParser.IBinaryFile;
 import org.eclipse.cdt.core.IBinaryParser.IBinaryObject;
+import org.eclipse.cdt.core.IBinaryParser.IBinaryShared;
 import org.eclipse.cdt.core.IBinaryParser.ISymbol;
 import org.eclipse.cdt.core.model.CModelException;
 import org.eclipse.cdt.core.model.IBinary;
 import org.eclipse.cdt.core.model.ICElement;
 import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
@@ -26,67 +24,101 @@
 
 public class Binary extends Openable implements IBinary {
 
-	public Binary(ICElement parent, IFile file) {
-		this(parent, file.getLocation());
+	IBinaryFile binaryFile;
+
+	public Binary(ICElement parent, IFile file, IBinaryFile bin) {
+		super(parent, file, ICElement.C_BINARY);
+		binaryFile = bin;
 	}
 
-	public Binary(ICElement parent, IPath path) {
+	public Binary(ICElement parent, IPath path, IBinaryFile bin) {
 		super (parent, path, ICElement.C_BINARY);
+		binaryFile = bin;
 	}
 
-	public Binary(ICElement parent, IFile file, String name) {
-		super(parent, file, name, ICElement.C_BINARY);
-	}
 
-	public boolean hasDebug () {
-		return ((BinaryInfo)getElementInfo()).hasDebug();
+	public boolean isSharedLib() {
+		if (binaryFile != null) {
+			return binaryFile.getType() == IBinaryObject.SHARED;
+		}
+		return false;
 	}
 
 	public boolean isExecutable() {
-		return ((BinaryInfo)getElementInfo()).isExecutable();
+		if (binaryFile != null) {
+			return binaryFile.getType() == IBinaryObject.EXECUTABLE;
+		}
+		return false;
 	}
 
 	public boolean isObject() {
-		return ((BinaryInfo)getElementInfo()).isObject();
-	}
-
-	public boolean isSharedLib() {
-		return ((BinaryInfo)getElementInfo()).isSharedLib();
+		if (binaryFile != null) {
+			return binaryFile.getType() == IBinaryObject.OBJECT;
+		}
+		return false;
 	}
 
 	public boolean isCore() {
-		return ((BinaryInfo)getElementInfo()).isCore();
+		if (binaryFile != null) {
+			return binaryFile.getType() == IBinaryObject.CORE;
+		}
+		return false;
 	}
 
-	public String [] getNeededSharedLibs() {
-		return ((BinaryInfo)getElementInfo()).getNeededSharedLibs();
+	public boolean hasDebug() {
+		if (isObject() || isExecutable() || isSharedLib()) {
+			return ((IBinaryObject)binaryFile).hasDebug();
+		}
+		return false;
 	}
 
 	public String getCPU() {
-		return ((BinaryInfo)getElementInfo()).getCPU();
+		if (isObject() || isExecutable() || isSharedLib() || isCore()) {
+			return ((IBinaryObject)binaryFile).getCPU();
+		}
+		return "";
+	}
+
+	public String[] getNeededSharedLibs() {
+		if (isExecutable()) {
+			return ((IBinaryExecutable)binaryFile).getNeededSharedLibs();
+		}
+		return new String[0];
 	}
 
 	public long getText() {
-		return ((BinaryInfo)getElementInfo()).getText();
+		if (isObject() || isExecutable() || isSharedLib()) {
+			return ((IBinaryObject)binaryFile).getText();
+		}
+		return 0;
 	}
 
 	public long getData() {
-		return ((BinaryInfo)getElementInfo()).getData();
+		if (isObject() || isExecutable() || isSharedLib()) {
+			return ((IBinaryObject)binaryFile).getData();
+		}
+		return 0;
 	}
 
 	public long getBSS() {
-		return ((BinaryInfo)getElementInfo()).getBSS();
+		if (isObject() || isExecutable() || isSharedLib()) {
+			return ((IBinaryObject)binaryFile).getBSS();
+		}
+		return 0;
 	}
 
 	public String getSoname() {
-		return ((BinaryInfo)getElementInfo()).getSoname();
+		if (isSharedLib()) {
+			return ((IBinaryShared)binaryFile).getSoName();
+		}
+		return "";
 	}
 
-	/**
-	 * @see org.eclipse.cdt.core.model.IBinary#isLittleEndian()
-	 */
 	public boolean isLittleEndian() {
-		return  ((BinaryInfo)getElementInfo()).isLittleEndian();
+		if (isObject() || isExecutable() || isSharedLib() || isCore()) {
+			return ((IBinaryObject)binaryFile).isLittleEndian();
+		}
+		return false;
 	}
 
 	public CElementInfo createElementInfo() {
@@ -104,10 +136,9 @@
 
 
 	boolean computeChildren(OpenableInfo info, IResource res) {
-		IBinaryObject bin = getBinaryObject(res);
-		if (bin != null) {
+		if (isObject() || isExecutable() || isSharedLib()) {
 			Map hash = new HashMap();
-			ISymbol[] symbols = bin.getSymbols();
+			ISymbol[] symbols = ((IBinaryObject)binaryFile).getSymbols();
 			for (int i = 0; i < symbols.length; i++) {
 				switch (symbols[i].getType()) {
 					case ISymbol.FUNCTION :
@@ -119,74 +150,37 @@
 					break;
 				}
 			}
-			if (info instanceof BinaryInfo) {
-				((BinaryInfo)info).loadInfo(bin);
-			}
 		} else {
 			return false;
 		}
 		return true;
 	}
 
-	protected IBinaryObject getBinaryObject(IResource res) {
-		IBinaryObject binary = null;
-		IBinaryParser parser = null;
-		IProject project = null;
-		if (res != null) {
-			project = res.getProject();
-		}
-		if (project != null) {
-			parser = CModelManager.getDefault().getBinaryParser(project);
-		}
-		if (parser != null) {
-			try {
-				IPath path = res.getLocation();
-				IBinaryFile bfile = parser.getBinary(path);
-				if (bfile instanceof IBinaryObject) {
-					binary = (IBinaryObject) bfile;
-				}
-			} catch (IOException e) {
-			}
-		}
-		return binary;
-	}
-
 	private void addFunction(OpenableInfo info, ISymbol symbol, Map hash) {
-		ICElement parent = this;
 		String filename = filename = symbol.getFilename();
-		Function function = null;
+		BinaryFunction function = null;
 
 		// Addr2line returns the funny "??" when it can find the file.
 		if (filename != null && !filename.equals("??")) {
-			TranslationUnit tu = null;
+			BinaryModule module = null;
 			IPath path = new Path(filename);
 			if (hash.containsKey(path)) {
-				tu = (TranslationUnit) hash.get(path);
+				module = (BinaryModule)hash.get(path);
 			} else {
-				// A special ITranslationUnit we do not want the file to be parse.
-				tu = new TranslationUnit(parent, path) {
-					ArrayList array = new ArrayList(5);
-					public void addChild(ICElement e) {
-						array.add(e);
-						array.trimToSize();
-					}
-						
-					public ICElement [] getChildren() {
-						return (ICElement[])array.toArray(new ICElement[0]);
-					}
-
-					protected boolean generateInfos(OpenableInfo info, IProgressMonitor pm,
-						Map newElements, IResource underlyingResource) throws CModelException {
-							return true;
-					}
-				};
-				hash.put(path, tu);
-				info.addChild(tu);
+				// A special container we do not want the file to be parse.
+				module = new BinaryModule(this, path);
+				hash.put(path, module);
+				info.addChild(module);
 			}
-			function = new Function(tu, symbol.getName());
-			tu.addChild(function);
+			function = new BinaryFunction(module, symbol.getName());
+			function.setLines(symbol.getStartLine(), symbol.getEndLine());
+			function.setAddress(symbol.getAdress());
+			module.addChild(function);
 		} else {
-			function = new Function(parent, symbol.getName());
+			//function = new Function(parent, symbol.getName());
+			function = new BinaryFunction(this, symbol.getName());
+			function.setLines(symbol.getStartLine(), symbol.getEndLine());
+			function.setAddress(symbol.getAdress());
 			info.addChild(function);
 		}
 		//		if (function != null) {
@@ -198,40 +192,29 @@
 
 	private void addVariable(OpenableInfo info, ISymbol symbol, Map hash) {
 		String filename = filename = symbol.getFilename();
-		ICElement parent = this;
-		Variable variable = null;
+		BinaryVariable variable = null;
 		// Addr2line returns the funny "??" when it can not find the file.
 		if (filename != null && !filename.equals("??")) {
-			TranslationUnit tu = null;
+			BinaryModule module = null;
 			IPath path = new Path(filename);
 			if (hash.containsKey(path)) {
-				tu = (TranslationUnit) hash.get(path);
+				module = (BinaryModule)hash.get(path);
 			} else {
-				tu = new TranslationUnit(parent, path) {
-					ArrayList array = new ArrayList(5);
-					public void addChild(ICElement e) {
-						array.add(e);
-						array.trimToSize();
-					}
-						
-					public ICElement [] getChildren() {
-						return (ICElement[])array.toArray(new ICElement[0]);
-					}
-
-					protected boolean generateInfos(OpenableInfo info, IProgressMonitor pm,
-						Map newElements, IResource underlyingResource) throws CModelException {
-							return true;
-					}
-				};
-				hash.put(path, tu);
-				info.addChild(tu);
+				module = new BinaryModule(this, path);
+				hash.put(path, module);
+				info.addChild(module);
 			}
-			variable = new Variable(tu, symbol.getName());
-			tu.addChild(variable);
+			variable = new BinaryVariable(module, symbol.getName());
+			variable.setLines(symbol.getStartLine(), symbol.getEndLine());
+			variable.setAddress(symbol.getAdress());
+			module.addChild(variable);
 		} else {
-			variable = new Variable(parent, symbol.getName());
+			variable = new BinaryVariable(this, symbol.getName());
+			variable.setLines(symbol.getStartLine(), symbol.getEndLine());
+			variable.setAddress(symbol.getAdress());
 			info.addChild(variable);
 		}
+		
 		//if (variable != null) {
 		//	if (!external) {
 		//		variable.getVariableInfo().setAccessControl(IConstants.AccStatic);
Index: model/org/eclipse/cdt/internal/core/model/BinaryElement.java
===================================================================
RCS file: model/org/eclipse/cdt/internal/core/model/BinaryElement.java
diff -N model/org/eclipse/cdt/internal/core/model/BinaryElement.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ model/org/eclipse/cdt/internal/core/model/BinaryElement.java	31 Mar 2003 03:40:25 -0000
@@ -0,0 +1,140 @@
+/*
+ * Created on Mar 30, 2003
+ *
+ * To change the template for this generated file go to
+ * Window>Preferences>Java>Code Generation>Code and Comments
+ */
+package org.eclipse.cdt.internal.core.model;
+
+import org.eclipse.cdt.core.model.CModelException;
+import org.eclipse.cdt.core.model.IBinary;
+import org.eclipse.cdt.core.model.IBinaryElement;
+import org.eclipse.cdt.core.model.ICElement;
+import org.eclipse.cdt.core.model.ICModelStatusConstants;
+import org.eclipse.cdt.core.model.ISourceManipulation;
+import org.eclipse.cdt.core.model.ISourceRange;
+import org.eclipse.cdt.core.model.ISourceReference;
+import org.eclipse.cdt.core.model.ITranslationUnit;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.IProgressMonitor;
+
+/**
+ * @author alain
+ *
+ * To change the template for this generated type comment go to
+ * Window>Preferences>Java>Code Generation>Code and Comments
+ */
+public class BinaryElement extends CElement implements IBinaryElement, ISourceManipulation, ISourceReference {
+
+	long addr;
+
+	public BinaryElement(ICElement parent, String name, int type) {
+		super(parent, name, type);
+	}
+
+	public void setAddress(long a) {
+		addr = a;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.core.model.ISourceManipulation#copy(org.eclipse.cdt.core.model.ICElement, org.eclipse.cdt.core.model.ICElement, java.lang.String, boolean, org.eclipse.core.runtime.IProgressMonitor)
+	 */
+	public void copy(
+		ICElement container,
+		ICElement sibling,
+		String rename,
+		boolean replace,
+		IProgressMonitor monitor)
+		throws CModelException {
+		throw new CModelException(new CModelStatus(ICModelStatusConstants.READ_ONLY, this));
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.core.model.ISourceManipulation#delete(boolean, org.eclipse.core.runtime.IProgressMonitor)
+	 */
+	public void delete(boolean force, IProgressMonitor monitor)
+		throws CModelException {
+		throw new CModelException(new CModelStatus(ICModelStatusConstants.READ_ONLY, this));
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.core.model.ISourceManipulation#move(org.eclipse.cdt.core.model.ICElement, org.eclipse.cdt.core.model.ICElement, java.lang.String, boolean, org.eclipse.core.runtime.IProgressMonitor)
+	 */
+	public void move(
+		ICElement container,
+		ICElement sibling,
+		String rename,
+		boolean replace,
+		IProgressMonitor monitor)
+		throws CModelException {
+		throw new CModelException(new CModelStatus(ICModelStatusConstants.READ_ONLY, this));
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.core.model.ISourceManipulation#rename(java.lang.String, boolean, org.eclipse.core.runtime.IProgressMonitor)
+	 */
+	public void rename(String name, boolean replace, IProgressMonitor monitor)
+		throws CModelException {
+		throw new CModelException(new CModelStatus(ICModelStatusConstants.READ_ONLY, this));
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.core.model.ISourceReference#getSource()
+	 */
+	public String getSource() throws CModelException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.core.model.ISourceReference#getSourceRange()
+	 */
+	public ISourceRange getSourceRange() throws CModelException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.core.model.ISourceReference#getTranslationUnit()
+	 */
+	public ITranslationUnit getTranslationUnit() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.internal.core.model.CElement#createElementInfo()
+	 */
+	protected CElementInfo createElementInfo() {
+		return new CElementInfo(this);
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.core.model.ICElement#getResource()
+	 */
+	public IResource getResource() {
+		return null;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.core.model.IBinaryElement#getAddress()
+	 */
+	public long getAddress() throws CModelException {
+		// TODO Auto-generated method stub
+		return 0;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.core.model.IBinaryElement#getBinary()
+	 */
+	public IBinary getBinary() {
+		ICElement current = this;
+		do {
+			if (current instanceof IBinary) {
+				return (IBinary) current;
+			} 
+		} while ((current = current.getParent()) != null);
+		return null;
+	}
+
+}
Index: model/org/eclipse/cdt/internal/core/model/BinaryFunction.java
===================================================================
RCS file: model/org/eclipse/cdt/internal/core/model/BinaryFunction.java
diff -N model/org/eclipse/cdt/internal/core/model/BinaryFunction.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ model/org/eclipse/cdt/internal/core/model/BinaryFunction.java	31 Mar 2003 03:40:25 -0000
@@ -0,0 +1,101 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
+
+package org.eclipse.cdt.internal.core.model;
+
+import org.eclipse.cdt.core.model.ICElement;
+import org.eclipse.cdt.core.model.IFunction;
+
+/**
+ * @author alain
+ *
+ * To change the template for this generated type comment go to
+ * Window>Preferences>Java>Code Generation>Code and Comments
+ */
+public class BinaryFunction extends BinaryElement implements IFunction {
+
+	public BinaryFunction(ICElement parent, String name) {
+		super(parent, name, ICElement.C_FUNCTION);
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.core.model.IFunctionDeclaration#getExceptions()
+	 */
+	public String[] getExceptions() {
+		return new String[0];
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.core.model.IFunctionDeclaration#getNumberOfParameters()
+	 */
+	public int getNumberOfParameters() {
+		// TODO Auto-generated method stub
+		return 0;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.core.model.IFunctionDeclaration#getParameterInitializer(int)
+	 */
+	public String getParameterInitializer(int pos) {
+		// TODO Auto-generated method stub
+		return new String();
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.core.model.IFunctionDeclaration#getParameterTypes()
+	 */
+	public String[] getParameterTypes() {
+		// TODO Auto-generated method stub
+		return new String[0];
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.core.model.IFunctionDeclaration#getReturnType()
+	 */
+	public String getReturnType() {
+		// TODO Auto-generated method stub
+		return new String();
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.core.model.IFunctionDeclaration#getSignature()
+	 */
+	public String getSignature() {
+		return getElementName();
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.core.model.IDeclaration#isStatic()
+	 */
+	public boolean isStatic() {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.core.model.IDeclaration#isConst()
+	 */
+	public boolean isConst() {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.core.model.IDeclaration#isVolatile()
+	 */
+	public boolean isVolatile() {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.core.model.IDeclaration#getAccessControl()
+	 */
+	public int getAccessControl() {
+		// TODO Auto-generated method stub
+		return 0;
+	}
+
+}
Index: model/org/eclipse/cdt/internal/core/model/BinaryInfo.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryInfo.java,v
retrieving revision 1.8
diff -u -r1.8 BinaryInfo.java
--- model/org/eclipse/cdt/internal/core/model/BinaryInfo.java	27 Mar 2003 16:05:18 -0000	1.8
+++ model/org/eclipse/cdt/internal/core/model/BinaryInfo.java	31 Mar 2003 03:40:25 -0000
@@ -5,121 +5,11 @@
  * All Rights Reserved.
  */
 
-import java.io.IOException;
-
-import org.eclipse.cdt.core.IBinaryParser;
-import org.eclipse.cdt.core.IBinaryParser.IBinaryExecutable;
-import org.eclipse.cdt.core.IBinaryParser.IBinaryFile;
-import org.eclipse.cdt.core.IBinaryParser.IBinaryObject;
-import org.eclipse.cdt.core.IBinaryParser.IBinaryShared;
-import org.eclipse.cdt.core.model.CModelException;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.IPath;
 
 class BinaryInfo extends OpenableInfo {
 
-	int type;
-	boolean debug;
-	String cpu =  "";
-	String shared[] = new String[0];
-	long text;
-	long data;
-	long bss;
-	String soname = "";
-	boolean littleE;
-
 	public BinaryInfo(CElement element) {
 		super(element);
-	}
-
-	public String getCPU() {
-		return cpu;
-	}
-
-	public boolean isSharedLib() {
-		return type == IBinaryObject.SHARED;
-	}
-
-	public boolean isExecutable() {
-		return type == IBinaryObject.EXECUTABLE;
-	}
-
-	public boolean isObject() {
-		return type == IBinaryObject.OBJECT;
-	}
-
-	public boolean isCore() {
-		return type == IBinaryObject.CORE;
-	}
-
-	public boolean hasDebug() {
-		return debug;
-	}
-
-	public String[] getNeededSharedLibs() {
-		return shared;
-	}
-
-	public long getText() {
-		return text;
-	}
-
-	public long getData() {
-		return data;
-	}
-
-	public long getBSS() {
-		return bss;
-	}
-
-	public String getSoname() {
-		return soname;
-	}
-
-	public boolean isLittleEndian() {
-		return littleE;
-	}
-
-	protected void loadInfo() {
-		loadInfo(getBinaryObject());
-	}
-
-	protected void loadInfo(IBinaryObject bin) {
-		if (bin != null) {
-			type = bin.getType();
-			cpu =  bin.getCPU();
-			debug = bin.hasDebug();
-			if (isExecutable()) {
-				IBinaryExecutable exec = (IBinaryExecutable) bin;
-				shared = exec.getNeededSharedLibs();
-			}
-			text = bin.getText();
-			data = bin.getData();
-			bss = bin.getBSS();
-			if (isSharedLib()) {
-				IBinaryShared shared = (IBinaryShared) bin;
-				soname = shared.getSoName();
-			}
-			littleE = bin.isLittleEndian();
-		}
-	}
-	
-	private IBinaryObject getBinaryObject() {
-		IBinaryObject binary = null;
-		IProject project = getElement().getCProject().getProject();
-		IBinaryParser parser = CModelManager.getDefault().getBinaryParser(project);
-		if (parser != null) {
-			try {
-				IPath path = getElement().getUnderlyingResource().getLocation();
-				IBinaryFile bfile = parser.getBinary(path);
-				if (bfile instanceof IBinaryObject) {
-					binary = (IBinaryObject) bfile;
-				}
-			} catch (CModelException e) {
-			} catch (IOException e) {
-			}
-		}
-		return binary;
 	}
 
 }
Index: model/org/eclipse/cdt/internal/core/model/BinaryModule.java
===================================================================
RCS file: model/org/eclipse/cdt/internal/core/model/BinaryModule.java
diff -N model/org/eclipse/cdt/internal/core/model/BinaryModule.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ model/org/eclipse/cdt/internal/core/model/BinaryModule.java	31 Mar 2003 03:40:25 -0000
@@ -0,0 +1,79 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
+
+package org.eclipse.cdt.internal.core.model;
+
+import org.eclipse.cdt.core.model.CModelException;
+import org.eclipse.cdt.core.model.IBinary;
+import org.eclipse.cdt.core.model.IBinaryElement;
+import org.eclipse.cdt.core.model.IBinaryModule;
+import org.eclipse.cdt.core.model.ICElement;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.IPath;
+
+/**
+ */
+public class BinaryModule extends Parent implements IBinaryModule {
+
+	IPath path;
+
+	public BinaryModule(Binary parent, IPath p) {
+		super(parent, p.lastSegment(), ICElement.C_VCONTAINER);
+		path = p;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.core.model.IBinaryModule#getBinaryElements()
+	 */
+	public IBinaryElement[] getBinaryElements() {
+		ICElement[] e = getChildren();
+		IBinaryElement[] b = new IBinaryElement[e.length];
+		System.arraycopy(e, 0, b, 0, e.length);
+		return b;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.core.model.IBinaryElement#getAddress()
+	 */
+	public long getAddress() throws CModelException {
+		return 0;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.core.model.IBinaryElement#getBinary()
+	 */
+	public IBinary getBinary() {
+		return (IBinary)getParent();
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.core.model.ICElement#getResource()
+	 */
+	public IResource getResource() {
+		return null;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.core.model.ICElement#isReadOnly()
+	 */
+	public boolean isReadOnly() {
+		return true;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.internal.core.model.CElement#createElementInfo()
+	 */
+	protected CElementInfo createElementInfo() {
+		return new CElementInfo(this);
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.core.model.ICElement#getPath()
+	 */
+	public IPath getPath() {
+		return path;
+	}
+
+}
Index: model/org/eclipse/cdt/internal/core/model/BinaryVariable.java
===================================================================
RCS file: model/org/eclipse/cdt/internal/core/model/BinaryVariable.java
diff -N model/org/eclipse/cdt/internal/core/model/BinaryVariable.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ model/org/eclipse/cdt/internal/core/model/BinaryVariable.java	31 Mar 2003 03:40:26 -0000
@@ -0,0 +1,74 @@
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
+package org.eclipse.cdt.internal.core.model;
+
+import org.eclipse.cdt.core.model.ICElement;
+import org.eclipse.cdt.core.model.IVariable;
+
+/**
+ *
+ */
+public class BinaryVariable extends BinaryElement implements IVariable {
+
+	public BinaryVariable(ICElement parent, String name) {
+		super(parent, name, ICElement.C_VARIABLE);
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.core.model.IVariable#getInitializer()
+	 */
+	public String getInitializer() {
+		// TODO Auto-generated method stub
+		return "";
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.core.model.IVariableDeclaration#getTypeName()
+	 */
+	public String getTypeName() {
+		// TODO Auto-generated method stub
+		return "";
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.core.model.IVariableDeclaration#setTypeName(java.lang.String)
+	 */
+	public void setTypeName(String type) {
+		// TODO Auto-generated method stub
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.core.model.IDeclaration#isStatic()
+	 */
+	public boolean isStatic() {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.core.model.IDeclaration#isConst()
+	 */
+	public boolean isConst() {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.core.model.IDeclaration#isVolatile()
+	 */
+	public boolean isVolatile() {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.core.model.IDeclaration#getAccessControl()
+	 */
+	public int getAccessControl() {
+		// TODO Auto-generated method stub
+		return 0;
+	}
+
+}
Index: model/org/eclipse/cdt/internal/core/model/CContainer.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CContainer.java,v
retrieving revision 1.1
diff -u -r1.1 CContainer.java
--- model/org/eclipse/cdt/internal/core/model/CContainer.java	27 Mar 2003 16:05:18 -0000	1.1
+++ model/org/eclipse/cdt/internal/core/model/CContainer.java	31 Mar 2003 03:40:26 -0000
@@ -138,7 +138,7 @@
 		} catch (CoreException e) {
 			//System.out.println (e);
 			//CPlugin.log (e);
-			e.printStackTrace();
+			//e.printStackTrace();
 		}
 		ICElement[] children = new ICElement[vChildren.size()];
 		vChildren.toArray(children);
Index: model/org/eclipse/cdt/internal/core/model/CContainerInfo.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CContainerInfo.java,v
retrieving revision 1.1
diff -u -r1.1 CContainerInfo.java
--- model/org/eclipse/cdt/internal/core/model/CContainerInfo.java	27 Mar 2003 16:05:18 -0000	1.1
+++ model/org/eclipse/cdt/internal/core/model/CContainerInfo.java	31 Mar 2003 03:40:26 -0000
@@ -69,7 +69,7 @@
 		} catch (CoreException e) {
 			//System.out.println (e);
 			//CPlugin.log (e);
-			e.printStackTrace();
+			//e.printStackTrace();
 		}
 		setNonCResources(notChildren.toArray());	
 		return nonCResources;
Index: model/org/eclipse/cdt/internal/core/model/CElement.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CElement.java,v
retrieving revision 1.7
diff -u -r1.7 CElement.java
--- model/org/eclipse/cdt/internal/core/model/CElement.java	27 Mar 2003 17:33:05 -0000	1.7
+++ model/org/eclipse/cdt/internal/core/model/CElement.java	31 Mar 2003 03:40:28 -0000
@@ -14,6 +14,7 @@
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.Path;
 import org.eclipse.core.runtime.PlatformObject;
 
 public abstract class CElement extends PlatformObject implements ICElement {
@@ -75,7 +76,7 @@
 		} catch (CModelException e) {
 			e.printStackTrace();
 		}
-		return null;
+		return new Path(getElementName());
 	}
 
 	public boolean exists() {
@@ -155,8 +156,16 @@
 		fEndLine = endLine;
 	}
 
-
-	public abstract IResource getUnderlyingResource() throws CModelException;
+	public IResource getUnderlyingResource() throws CModelException {
+		IResource res = getResource();
+		if (res == null) {
+			ICElement p = getParent();
+			if (p != null) {
+				res = p.getUnderlyingResource();
+			}
+		}
+		return res;
+	}
 
 	public abstract IResource getResource() ;
 
@@ -292,8 +301,10 @@
 	 * <p>Subclasses that are not IOpenable's must override this method.
 	 */
 	public IOpenable getOpenableParent() {
-		
-		return (IOpenable)fParent;
+		if (fParent instanceof IOpenable) {		
+			return (IOpenable)fParent;
+		}
+		return null;
 	}
 
 
Index: model/org/eclipse/cdt/internal/core/model/CModelCache.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelCache.java,v
retrieving revision 1.2
diff -u -r1.2 CModelCache.java
--- model/org/eclipse/cdt/internal/core/model/CModelCache.java	27 Mar 2003 16:05:18 -0000	1.2
+++ model/org/eclipse/cdt/internal/core/model/CModelCache.java	31 Mar 2003 03:40:28 -0000
@@ -70,7 +70,9 @@
 		case ICElement.C_PROJECT:
 			return this.projectAndRootCache.get(element);
 		case ICElement.C_CCONTAINER:
-			return this.folderCache.get(element);		
+			return this.folderCache.get(element);
+		case ICElement.C_ARCHIVE:
+		case ICElement.C_BINARY:		
 		case ICElement.C_UNIT:
 			return this.fileCache.get(element);
 		default:
@@ -89,6 +91,8 @@
 			return this.projectAndRootCache.get(element);
 		case ICElement.C_CCONTAINER:
 			return this.folderCache.get(element);
+		case ICElement.C_ARCHIVE:
+		case ICElement.C_BINARY:		
 		case ICElement.C_UNIT:
 			return this.fileCache.peek(element);
 		default:
@@ -108,6 +112,8 @@
 		case ICElement.C_CCONTAINER:
 			this.folderCache.put(element, info);
 			break;
+		case ICElement.C_ARCHIVE:
+		case ICElement.C_BINARY:		
 		case ICElement.C_UNIT:
 			this.fileCache.put(element, info);
 			break;
@@ -127,6 +133,8 @@
 		case ICElement.C_CCONTAINER:
 			this.folderCache.remove(element);
 			break;
+		case ICElement.C_ARCHIVE:
+		case ICElement.C_BINARY:		
 		case ICElement.C_UNIT:
 			this.fileCache.remove(element);
 			break;
Index: model/org/eclipse/cdt/internal/core/model/CModelInfo.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelInfo.java,v
retrieving revision 1.1
diff -u -r1.1 CModelInfo.java
--- model/org/eclipse/cdt/internal/core/model/CModelInfo.java	27 Mar 2003 16:05:18 -0000	1.1
+++ model/org/eclipse/cdt/internal/core/model/CModelInfo.java	31 Mar 2003 03:40:28 -0000
@@ -14,11 +14,6 @@
 public class CModelInfo extends CContainerInfo {
 
 	/**
-	 * A array with all the non-java projects contained by this model
-	 */
-	Object[] nonCResources;
-
-	/**
 	 * Constructs a new C Model Info 
 	 */
 	protected CModelInfo(CElement element) {
@@ -53,13 +48,10 @@
 	 * Returns an array of non-C resources contained in the receiver.
 	 */
 	Object[] getNonCResources() {
-
-		Object[] resources = nonCResources;
-		if (resources == null) {
-			resources = computeNonCResources();
-			nonCResources = resources;
+		if (nonCResources == null) {
+			nonCResources = computeNonCResources();
 		}
-		return resources;
+		return nonCResources;
 	}
 
 }
Index: model/org/eclipse/cdt/internal/core/model/CModelManager.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelManager.java,v
retrieving revision 1.18
diff -u -r1.18 CModelManager.java
--- model/org/eclipse/cdt/internal/core/model/CModelManager.java	27 Mar 2003 17:33:05 -0000	1.18
+++ model/org/eclipse/cdt/internal/core/model/CModelManager.java	31 Mar 2003 03:40:31 -0000
@@ -26,6 +26,7 @@
 import org.eclipse.cdt.core.model.ICModel;
 import org.eclipse.cdt.core.model.ICProject;
 import org.eclipse.cdt.core.model.IElementChangedListener;
+import org.eclipse.cdt.core.model.IParent;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IFolder;
 import org.eclipse.core.resources.IProject;
@@ -210,26 +211,11 @@
 				if (bin.getType() == IBinaryFile.ARCHIVE) {
 					cfile = new Archive(parent, file);
 				} else {
-					cfile = new Binary(parent, file);
+					cfile = new Binary(parent, file, bin);
 				}
 			} else if (isTranslationUnit(file)) {
 				cfile = new TranslationUnit(parent, file);
 			} 
-			//else {
-			//	cfile = new CFile(parent, file);
-			//}
-		} else {
-			// Probably it was deleted, find it
-			if (parent instanceof CElement) {
-				ICElement[] children = ((CElement)parent).getElementInfo().getChildren();
-				for (int i = 0; i < children.length; i++) {
-					IResource res = children[i].getResource();
-					if (res != null && res.equals(file)) {
-						cfile = children[i];
-						break;
-					}
-				}
-			}
 		}
 		// Added also to the Containers
 		if (cfile != null && (cfile instanceof IBinary || cfile instanceof IArchive)) {
@@ -305,26 +291,6 @@
 		}
 	}
 
-
-	public void releaseCElement(IResource resource) {
-		ICElement celement = getCElement(resource);
-		if (celement == null) {
-			if (resource.exists()) {
-				celement = create(resource);
-			} else {
-				// Make sure they are not in the Containers.
-				CProject cproj = (CProject)create(resource.getProject());
-				if (cproj != null) {
-					Parent container = (Parent)cproj.getArchiveContainer();
-					removeChildrenContainer(container, resource);
-					container = (Parent)cproj.getBinaryContainer();
-					removeChildrenContainer(container, resource);
-				}
-			}
-		}
-		releaseCElement(celement);
-	}
-
 	public void releaseCElement(ICElement celement) {
 
 		// Guard.
@@ -349,30 +315,25 @@
 			}
 		}
 
+		if (celement instanceof IParent) {
+			CElementInfo info = ((CElement)celement).getElementInfo();
+			if (info != null) {
+				ICElement[] children = info.getChildren();
+				for (int i = 0; i < children.length; i++) {
+					releaseCElement(children[i]);
+				}
+			}
+		}
+
 		// Remove the child from the parent list.
 		Parent parent = (Parent)celement.getParent();
 		if (parent != null) {
 			parent.removeChild(celement);
 		}
 
-		if (celement instanceof CElement) {
-			CElementInfo info = ((CElement)celement).getElementInfo();
-			ICElement[] children = info.getChildren();
-			for (int i = 0; i < children.length; i++) {
-				releaseCElement(children[i]);
-			}
-		}
 		removeInfo(celement);
 	}
 
-	public ICElement getCElement(IResource res) {
-		return create(res);
-	}
-
-	public ICElement getCElement(IPath path) {
-		return create(path);
-	}
-	
 	public IBinaryParser getBinaryParser(IProject project) {
 		try {
 			return CCorePlugin.getDefault().getBinaryParser(project);
@@ -396,12 +357,15 @@
 	 */
 	public void resetBinaryParser(IProject project) {
 		if (project != null) {
-			releaseCElement(project);
-			// Fired and ICElementDelta.PARSER_CHANGED
-			CElementDelta delta = new CElementDelta(getCModel());
-			delta.binaryParserChanged(create(project));
-			registerCModelDelta(delta);
-			fire();
+			ICElement celement = create(project);
+			if (celement != null) {
+				releaseCElement(celement);
+				// Fired and ICElementDelta.PARSER_CHANGED
+				CElementDelta delta = new CElementDelta(getCModel());
+				delta.binaryParserChanged(celement);
+				registerCModelDelta(delta);
+				fire();
+			}
 		}
 	}
 	
Index: model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java,v
retrieving revision 1.2
diff -u -r1.2 DeltaProcessor.java
--- model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java	27 Mar 2003 16:05:18 -0000	1.2
+++ model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java	31 Mar 2003 03:40:33 -0000
@@ -5,17 +5,17 @@
  * All Rights Reserved.
  */
 
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IResourceDelta;
-import org.eclipse.core.runtime.IPath;
-
+import org.eclipse.cdt.core.model.CModelException;
+import org.eclipse.cdt.core.model.CoreModel;
 import org.eclipse.cdt.core.model.ICElement;
 import org.eclipse.cdt.core.model.ICElementDelta;
 import org.eclipse.cdt.core.model.ICModel;
 import org.eclipse.cdt.core.model.ICModelStatusConstants;
-import org.eclipse.cdt.core.model.CModelException;
-import org.eclipse.cdt.core.model.CoreModel;
+import org.eclipse.cdt.core.model.IParent;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.runtime.IPath;
 
 /**
  * This class is used by <code>CModelManager</code> to convert
@@ -58,9 +58,25 @@
 	 * Returns null if none was found.
 	 */
 	protected ICElement createElement(IResource resource) {
+		CModelManager manager = CModelManager.getDefault();
 		if (resource == null)
 			return null;
-		return CModelManager.getDefault().create(resource);
+		ICElement celement = manager.create(resource);
+		if (celement == null) {
+			ICElement parent = manager.create(resource.getParent());
+			// Probably it was deleted, find it
+			if (parent instanceof IParent) {
+				ICElement[] children = ((CElement)parent).getElementInfo().getChildren();
+				for (int i = 0; i < children.length; i++) {
+					IResource res = children[i].getResource();
+					if (res != null && res.equals(resource)) {
+						celement = children[i];
+						break;
+					}
+				}
+			}
+		}
+		return celement;
 	}
 
 	/**
@@ -80,39 +96,13 @@
 	}
 
 	/**
-	 * Release the Resource.
-	 * Returns null if none was found.
-	 */
-	protected void releaseCElement(IResource resource) {
-		CModelManager.getDefault().releaseCElement(resource);
-	}
-
-	/**
-	 * get the CElement from the hashtable, if it exist without
-	 * creating it.
-	 * Returns null if none was found.
-	 */
-	protected ICElement getElement(IResource res) {
-		return CModelManager.getDefault().getCElement(res);
-	}
-
-	protected ICElement getElement(IPath path) {
-		return CModelManager.getDefault().getCElement(path);
-	}
-
-	/**
 	 * Adds the given child handle to its parent's cache of children. 
 	 */
 	protected void addToParentInfo(Openable child) {
-
 		Openable parent = (Openable) child.getParent();
 		if (parent != null && parent.isOpen()) {
-			//try {
-				CElementInfo info = (CElementInfo)parent.getElementInfo();
-				info.addChild(child);
-			//} //catch (CModelException e) {
-				// do nothing - we already checked if open
-			//}
+			CElementInfo info = (CElementInfo)parent.getElementInfo();
+			info.addChild(child);
 		}
 	}
 
@@ -133,7 +123,7 @@
 		if ((delta.getFlags() & IResourceDelta.MOVED_FROM) != 0) {
 			//ICElement movedFromElement = createElement(delta.getMovedFromPath());
 			if  (movedFromElement == null)
-				movedFromElement = getElement(delta.getMovedFromPath());
+				movedFromElement = createElement(delta.getMovedFromPath());
 			fCurrentDelta.movedTo(element, movedFromElement);
 			movedFromElement = null;
 		} else {
@@ -322,7 +312,7 @@
 	protected void traverseDelta(IResourceDelta delta) {
 		try {
 			if (!updateCurrentDeltaAndIndex(delta)) {
-				fCurrentDelta.addResourceDelta(delta);
+				nonCResourcesChanged(delta);
 			}
 		} catch (CModelException e) {
 		}
@@ -332,6 +322,20 @@
 		}
 	}
 
+	protected void nonCResourcesChanged(IResourceDelta delta) {
+		fCurrentDelta.addResourceDelta(delta);
+		IResource res = delta.getResource();
+		if (res != null) {
+			ICElement celem = createElement(res.getParent());
+			if (celem instanceof CContainer) {
+				CElementInfo info = ((CContainer)celem).getElementInfo();
+				if (info instanceof CContainerInfo) {
+					((CContainerInfo)info).setNonCResources(null);
+				}
+			}
+		}
+	}
+
 	/*
 	 * Update the current delta (ie. add/remove/change the given element) and update the
 	 * correponding index.
@@ -348,50 +352,53 @@
 		switch (delta.getKind()) {
 			case IResourceDelta.ADDED :
 				element = createElement(resource);
-				if (element == null)
-					throw newInvalidElementType();
-				updateIndexAddResource(element, delta);
-				elementAdded(element, delta);
-				isProcess = true;
+				if (element != null) {
+					updateIndexAddResource(element, delta);
+					elementAdded(element, delta);
+					isProcess = true;
+				}
 				break;
 
 			case IResourceDelta.REMOVED :
-				element = getElement(resource);
+				element = createElement(resource);
 				if (element != null) {
 					updateIndexRemoveResource(element, delta);
 					elementRemoved(element, delta);
 					isProcess = true;
-				} else {
-					releaseCElement(resource);
 				}
 				break;
 
 			case IResourceDelta.CHANGED :
-				element = createElement(resource);
-				if (element == null)
-					throw newInvalidElementType();
 				int flags = delta.getFlags();
 				if ((flags & IResourceDelta.CONTENT) != 0) {
 					// content has changed
-					contentChanged(element, delta);
-					updateIndexAddResource(element, delta);
+					element = createElement(resource);
+					if (element != null) {
+						contentChanged(element, delta);
+						updateIndexAddResource(element, delta);
+						isProcess = true;
+					}
 				} else if ((flags & IResourceDelta.OPEN) != 0) {
 					// project has been opened or closed
 					IProject res = (IProject)resource;
-					if (res.isOpen()) {
-						elementOpened(element, delta);
-						updateIndexAddResource(element, delta);
-					} else {
-						elementClosed(element, delta);
-						updateIndexRemoveResource(element, delta);
+					element = createElement(resource);
+					if (element != null) {
+						if (res.isOpen()) {
+							elementOpened(element, delta);
+							updateIndexAddResource(element, delta);
+						} else {
+							elementClosed(element, delta);
+							updateIndexRemoveResource(element, delta);
+						}
+						isProcess = true;
 					}
-					// when a project is open/closed don't process children
 				} else if ((flags & IResourceDelta.DESCRIPTION) != 0) {
-					elementAdded(element, delta);
-				} // else if ((flags * IResourceDelta.MARKERS) != 0) {}
-				// else if ((flags * IResourceDelta.TYPE) != 0) {}
-				// else if ((flags * IResourceDelta.SYNC) != 0) {}
-				isProcess = true;
+					element = createElement(resource);
+					if (element != null) {
+						elementAdded(element, delta);
+						isProcess = true;
+					}
+				}
 				break;
 		}
 		return isProcess;
Index: model/org/eclipse/cdt/internal/core/model/Openable.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/Openable.java,v
retrieving revision 1.2
diff -u -r1.2 Openable.java
--- model/org/eclipse/cdt/internal/core/model/Openable.java	27 Mar 2003 17:33:05 -0000	1.2
+++ model/org/eclipse/cdt/internal/core/model/Openable.java	31 Mar 2003 03:40:34 -0000
@@ -23,7 +23,9 @@
 import org.eclipse.core.runtime.IProgressMonitor;
 
 public abstract class Openable extends Parent implements IOpenable, IBufferChangedListener {
-	
+
+	protected IResource resource;	
+
 	public Openable (ICElement parent, IPath path, int type) {
 		// Check if the file is under the workspace.
 		this (parent, ResourcesPlugin.getWorkspace().getRoot().getFileForLocation (path),
@@ -34,26 +36,14 @@
 		this (parent, resource, resource.getName(), type);
 	}
 	
-	public Openable (ICElement parent, IResource resource, String name, int type) {
-		super (parent, resource, name, type);
-	}
-
-	public IResource getUnderlyingResource() throws CModelException {
-		IResource res = getResource();
-		if (res == null) {
-			ICElement p = getParent();
-			if (p != null) {
-				res = p.getUnderlyingResource();
-			}
-		}
-		return res;
+	public Openable (ICElement parent, IResource res, String name, int type) {
+		super (parent, name, type);
+		resource = res;
 	}
 
 	public IResource getResource()  {
 		return resource;
 	}
-	
-	protected abstract CElementInfo createElementInfo ();
 
 	/**
 	 * The buffer associated with this element has changed. Registers
Index: model/org/eclipse/cdt/internal/core/model/Parent.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/Parent.java,v
retrieving revision 1.5
diff -u -r1.5 Parent.java
--- model/org/eclipse/cdt/internal/core/model/Parent.java	27 Mar 2003 17:33:05 -0000	1.5
+++ model/org/eclipse/cdt/internal/core/model/Parent.java	31 Mar 2003 03:40:34 -0000
@@ -7,30 +7,13 @@
 
 import java.util.ArrayList;
 
-import org.eclipse.cdt.core.model.CModelException;
 import org.eclipse.cdt.core.model.ICElement;
 import org.eclipse.cdt.core.model.IParent;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.IPath;
 
 public abstract class Parent extends CElement implements IParent {
-	
-	protected IResource resource;
-
-	public Parent (ICElement parent, IPath path, int type) {
-		// Check if the file is under the workspace.
-		this (parent, ResourcesPlugin.getWorkspace().getRoot().getFileForLocation (path),
-			path.lastSegment(), type);
-	}
 
 	public Parent (ICElement parent, String name, int type) {
-		this (parent, null, name, type);
-	}
-	
-	public Parent (ICElement parent, IResource resource, String name, int type) {
 		super (parent, name, type);
-		this.resource = resource;
 	}
 
 	// members
@@ -86,24 +69,6 @@
 		return getElementInfo().hasChildren();
 	}
 
-	public void setUnderlyingResource(IResource res) {
-		resource = res;
-	}
-
-	public IResource getUnderlyingResource() throws CModelException {
-		if (resource == null) {
-			ICElement p = getParent();
-			if (p != null) {
-				return p.getUnderlyingResource();
-			}
-		}
-		return resource;
-	}
-
-	public IResource getResource() {
-		return resource;
-	}
-
 	protected void setChanged () {
 		getElementInfo().setChanged();
 	}
@@ -112,5 +77,4 @@
 		return getElementInfo().hasChanged();
 	}
 
-	protected abstract CElementInfo createElementInfo ();
 }
Index: model/org/eclipse/cdt/internal/core/model/parser/ElfBinaryFile.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/parser/ElfBinaryFile.java,v
retrieving revision 1.7
diff -u -r1.7 ElfBinaryFile.java
--- model/org/eclipse/cdt/internal/core/model/parser/ElfBinaryFile.java	26 Feb 2003 21:37:33 -0000	1.7
+++ model/org/eclipse/cdt/internal/core/model/parser/ElfBinaryFile.java	31 Mar 2003 03:40:35 -0000
@@ -321,12 +321,14 @@
 			Symbol sym = new Symbol();
 			sym.type = type;
 			sym.name = array[i].toString();
+			sym.addr = array[i].st_value;
 			try {
 				// This can fail if we use addr2line
 				// but we can safely ignore the error.
 				if (header == null) {
 					sym.filename = array[i].getFilename();
-					sym.lineno = array[i].getFuncLineNumber();
+					sym.startLine = array[i].getFuncLineNumber();
+					sym.endLine = sym.startLine;
 				}
 			} catch (IOException e) {
 				//e.printStackTrace();
Index: model/org/eclipse/cdt/internal/core/model/parser/PEBinaryFile.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/parser/PEBinaryFile.java,v
retrieving revision 1.3
diff -u -r1.3 PEBinaryFile.java
--- model/org/eclipse/cdt/internal/core/model/parser/PEBinaryFile.java	26 Feb 2003 21:37:33 -0000	1.3
+++ model/org/eclipse/cdt/internal/core/model/parser/PEBinaryFile.java	31 Mar 2003 03:40:36 -0000
@@ -281,7 +281,9 @@
 				Symbol sym = new Symbol();
 				sym.filename = null;
 				sym.name = name;
-				sym.lineno = 0;
+				sym.addr = peSyms[i].n_value;
+				sym.startLine = 0;
+				sym.endLine = 0;
 				sym.type = peSyms[i].isFunction() ? ISymbol.FUNCTION : ISymbol.VARIABLE;
 				symbols.add(sym);
 			}
Index: model/org/eclipse/cdt/internal/core/model/parser/Symbol.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/parser/Symbol.java,v
retrieving revision 1.2
diff -u -r1.2 Symbol.java
--- model/org/eclipse/cdt/internal/core/model/parser/Symbol.java	27 Nov 2002 04:44:46 -0000	1.2
+++ model/org/eclipse/cdt/internal/core/model/parser/Symbol.java	31 Mar 2003 03:40:36 -0000
@@ -10,7 +10,9 @@
 public class Symbol implements ISymbol {
 
 	public String filename;
-	public int lineno;
+	public int startLine;
+	public int endLine;
+	public long addr;
 	public String name;
 	public int type;
 
@@ -21,12 +23,6 @@
 		return filename;
 	}
 
-	/**
-	 * @see org.eclipse.cdt.core.model.IBinaryParser.ISymbol#getLineNumber()
-	 */
-	public int getLineNumber() {
-		return lineno;
-	}
 
 	/**
 	 * @see org.eclipse.cdt.core.model.IBinaryParser.ISymbol#getName()
@@ -40,6 +36,27 @@
 	 */
 	public int getType() {
 		return type;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.core.IBinaryParser.ISymbol#getAdress()
+	 */
+	public long getAdress() {
+		return addr;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.core.IBinaryParser.ISymbol#getEndLine()
+	 */
+	public int getEndLine() {
+		return endLine;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.core.IBinaryParser.ISymbol#getStartLine()
+	 */
+	public int getStartLine() {
+		return startLine;
 	}
 
 }
Index: src/org/eclipse/cdt/core/CCorePlugin.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CCorePlugin.java,v
retrieving revision 1.14
diff -u -r1.14 CCorePlugin.java
--- src/org/eclipse/cdt/core/CCorePlugin.java	28 Mar 2003 21:00:39 -0000	1.14
+++ src/org/eclipse/cdt/core/CCorePlugin.java	31 Mar 2003 03:40:39 -0000
@@ -163,32 +163,40 @@
 
 	public IBinaryParser getBinaryParser(IProject project) throws CoreException {
 		IBinaryParser parser = null;
-		try {
-			ICDescriptor cdesc = (ICDescriptor) getCProjectDescription(project);
-			ICExtensionReference[] cextensions = cdesc.get(BINARY_PARSER_UNIQ_ID);
-			if (cextensions.length > 0)
-				parser = (IBinaryParser) cextensions[0].createExtension();
-		} catch (CoreException e) {
+		if (project != null) {
+			try {
+				ICDescriptor cdesc = (ICDescriptor) getCProjectDescription(project);
+				ICExtensionReference[] cextensions = cdesc.get(BINARY_PARSER_UNIQ_ID);
+				if (cextensions.length > 0)
+					parser = (IBinaryParser) cextensions[0].createExtension();
+			} catch (CoreException e) {
+			}
 		}
 		if (parser == null) {
-			String id = getPluginPreferences().getDefaultString(PREF_BINARY_PARSER);
-			if (id == null || id.length() == 0) {
-				id = DEFAULT_BINARY_PARSER_UNIQ_ID;
-			}
-			IExtensionPoint extensionPoint = getDescriptor().getExtensionPoint(BINARY_PARSER_SIMPLE_ID);
-			IExtension extension = extensionPoint.getExtension(id);
-			if (extension != null) {
-				IConfigurationElement element[] = extension.getConfigurationElements();
-				for (int i = 0; i < element.length; i++) {
-					if (element[i].getName().equalsIgnoreCase("cextension")) {
-						parser = (IBinaryParser) element[i].createExecutableExtension("run");
-						break;
-					}
+			parser = getDefaultBinaryParser();
+		}
+		return parser;
+	}
+
+	public IBinaryParser getDefaultBinaryParser() throws CoreException {
+		IBinaryParser parser = null;
+		String id = getPluginPreferences().getDefaultString(PREF_BINARY_PARSER);
+		if (id == null || id.length() == 0) {
+			id = DEFAULT_BINARY_PARSER_UNIQ_ID;
+		}
+		IExtensionPoint extensionPoint = getDescriptor().getExtensionPoint(BINARY_PARSER_SIMPLE_ID);
+		IExtension extension = extensionPoint.getExtension(id);
+		if (extension != null) {
+			IConfigurationElement element[] = extension.getConfigurationElements();
+			for (int i = 0; i < element.length; i++) {
+				if (element[i].getName().equalsIgnoreCase("cextension")) {
+					parser = (IBinaryParser) element[i].createExecutableExtension("run");
+					break;
 				}
-			} else {
-				IStatus s = new Status(IStatus.ERROR, CCorePlugin.PLUGIN_ID, -1, "No Binary Format", null);
-				throw new CoreException(s);
 			}
+		} else {
+			IStatus s = new Status(IStatus.ERROR, CCorePlugin.PLUGIN_ID, -1, "No Binary Format", null);
+			throw new CoreException(s);
 		}
 		return parser;
 	}
Index: src/org/eclipse/cdt/core/IBinaryParser.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/src/org/eclipse/cdt/core/IBinaryParser.java,v
retrieving revision 1.2
diff -u -r1.2 IBinaryParser.java
--- src/org/eclipse/cdt/core/IBinaryParser.java	26 Feb 2003 21:38:44 -0000	1.2
+++ src/org/eclipse/cdt/core/IBinaryParser.java	31 Mar 2003 03:40:39 -0000
@@ -18,73 +18,75 @@
 	/**
 	 * Represents a binary file for example an ELF executable.
 	 */
-	public interface IBinaryFile extends IAdaptable {
-		public int OBJECT = 0x1;
-		public int EXECUTABLE = 0x02;
-		public int SHARED = 0x04;
-		public int ARCHIVE = 0x08;
-		public int CORE = 0x10;
-
-		public IPath getPath();
-		public int getType();
-		public InputStream getContents();
+	interface IBinaryFile extends IAdaptable {
+		static final int OBJECT = 0x1;
+		static final int EXECUTABLE = 0x02;
+		static final int SHARED = 0x04;
+		static final int ARCHIVE = 0x08;
+		static final int CORE = 0x10;
+
+		IPath getPath();
+		int getType();
+		InputStream getContents();
 	}
 
 	/**
 	 * Represents an archive.
 	 */
-	public interface IBinaryArchive extends IBinaryFile {
-		public IBinaryObject[] getObjects();
+	interface IBinaryArchive extends IBinaryFile {
+		IBinaryObject[] getObjects();
 	}
 
 	/**
 	 * Represents a binary, for example an ELF excutable.
 	 */
-	public interface IBinaryObject extends IBinaryFile {
+	interface IBinaryObject extends IBinaryFile {
 
-		public boolean hasDebug();
+		boolean hasDebug();
 
-		public String getCPU();
+		String getCPU();
 
-		public long getText();
+		long getText();
 
-		public long getData();
+		long getData();
 
-		public long getBSS();
+		long getBSS();
         
-		public boolean isLittleEndian();
+		boolean isLittleEndian();
 
-		public ISymbol[] getSymbols();
+		ISymbol[] getSymbols();
 		
-		public String getName();
+		String getName();
 
 	}
 
 	/**
 	 * An executable.
 	 */
-	public interface IBinaryExecutable extends IBinaryObject {
-		public String[] getNeededSharedLibs();
+	interface IBinaryExecutable extends IBinaryObject {
+		String[] getNeededSharedLibs();
 	}
 
 	/**
 	 * A DLL.
 	 */
-	public interface IBinaryShared extends IBinaryExecutable {
-		public String getSoName();
+	interface IBinaryShared extends IBinaryExecutable {
+		String getSoName();
 	}
 
-	public interface ISymbol {
-		public int FUNCTION = 0x01;
-		public int VARIABLE = 0x02;
+	interface ISymbol {
+		static final int FUNCTION = 0x01;
+		static final int VARIABLE = 0x02;
 	
-		public String getName();
-		public int getLineNumber();
-		public String getFilename();
-		public int getType();
+		String getName();
+		long getAdress();
+		int getStartLine();
+		int getEndLine();
+		String getFilename();
+		int getType();
 	}
 
-	public IBinaryFile getBinary(IPath path) throws IOException;
+	IBinaryFile getBinary(IPath path) throws IOException;
 	
-	public String getFormat();
+	String getFormat();
 }




Back to the top