[
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();
}