mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-31 21:05:37 +02:00
new method getBinaryParser().
This commit is contained in:
parent
626262c9a0
commit
3f774dc60b
2 changed files with 69 additions and 2 deletions
|
@ -5,6 +5,7 @@ package org.eclipse.cdt.core.model;
|
||||||
* All Rights Reserved.
|
* All Rights Reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import org.eclipse.cdt.core.CCorePlugin;
|
||||||
import org.eclipse.cdt.internal.core.model.CModelManager;
|
import org.eclipse.cdt.internal.core.model.CModelManager;
|
||||||
import org.eclipse.core.resources.IFile;
|
import org.eclipse.core.resources.IFile;
|
||||||
import org.eclipse.core.resources.IFolder;
|
import org.eclipse.core.resources.IFolder;
|
||||||
|
@ -18,6 +19,8 @@ public class CoreModel {
|
||||||
|
|
||||||
private static CoreModel cmodel = null;
|
private static CoreModel cmodel = null;
|
||||||
private static CModelManager manager = null;
|
private static CModelManager manager = null;
|
||||||
|
|
||||||
|
public final static String CORE_MODEL_ID = CCorePlugin.PLUGIN_ID + ".coremodel";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates an ICElement form and IPath.
|
* Creates an ICElement form and IPath.
|
||||||
|
@ -126,6 +129,34 @@ public class CoreModel {
|
||||||
return manager.hasCCNature(project);
|
return manager.hasCCNature(project);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the the binaryParser of the Project.
|
||||||
|
*/
|
||||||
|
public static IBinaryParser getBinaryParser(IProject project) {
|
||||||
|
return manager.getBinaryParser(project);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return all the known binaryParsers formats.
|
||||||
|
*/
|
||||||
|
public static String[] getBinaryParserFormats() {
|
||||||
|
return CCorePlugin.getDefault().getBinaryParserFormats();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Save the binary parser for the project.
|
||||||
|
*/
|
||||||
|
public static void setBinaryParser(IProject project, String format) {
|
||||||
|
manager.setBinaryParser(project, format);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the BinaryParser corresponding to this format.
|
||||||
|
*/
|
||||||
|
public static IBinaryParser getBinaryParser(String format) {
|
||||||
|
return CCorePlugin.getDefault().getBinaryParser(format);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the singleton.
|
* Return the singleton.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -13,6 +13,7 @@ import java.util.Iterator;
|
||||||
import org.eclipse.cdt.core.CCProjectNature;
|
import org.eclipse.cdt.core.CCProjectNature;
|
||||||
import org.eclipse.cdt.core.CProjectNature;
|
import org.eclipse.cdt.core.CProjectNature;
|
||||||
import org.eclipse.cdt.core.model.CModelException;
|
import org.eclipse.cdt.core.model.CModelException;
|
||||||
|
import org.eclipse.cdt.core.model.CoreModel;
|
||||||
import org.eclipse.cdt.core.model.ElementChangedEvent;
|
import org.eclipse.cdt.core.model.ElementChangedEvent;
|
||||||
import org.eclipse.cdt.core.model.IArchive;
|
import org.eclipse.cdt.core.model.IArchive;
|
||||||
import org.eclipse.cdt.core.model.IBinary;
|
import org.eclipse.cdt.core.model.IBinary;
|
||||||
|
@ -41,12 +42,19 @@ import org.eclipse.core.resources.ResourcesPlugin;
|
||||||
import org.eclipse.core.runtime.CoreException;
|
import org.eclipse.core.runtime.CoreException;
|
||||||
import org.eclipse.core.runtime.IPath;
|
import org.eclipse.core.runtime.IPath;
|
||||||
import org.eclipse.core.runtime.IProgressMonitor;
|
import org.eclipse.core.runtime.IProgressMonitor;
|
||||||
|
import org.eclipse.core.runtime.QualifiedName;
|
||||||
|
|
||||||
public class CModelManager implements IResourceChangeListener {
|
public class CModelManager implements IResourceChangeListener {
|
||||||
|
|
||||||
private HashMap fParsedResources = new HashMap();
|
private HashMap fParsedResources = new HashMap();
|
||||||
|
|
||||||
|
final static String BINARY_PARSER= "binaryparser";
|
||||||
|
|
||||||
|
static QualifiedName binaryParserKey = new QualifiedName(CoreModel.CORE_MODEL_ID, BINARY_PARSER);
|
||||||
|
|
||||||
|
private static HashMap fParsers = new HashMap();
|
||||||
private static IBinaryParser defaultBinaryParser = new ElfParser();
|
private static IBinaryParser defaultBinaryParser = new ElfParser();
|
||||||
|
//private static IBinaryParser defaultBinaryParser = new PEParser();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Used to convert <code>IResourceDelta</code>s into <code>IJavaElementDelta</code>s.
|
* Used to convert <code>IResourceDelta</code>s into <code>IJavaElementDelta</code>s.
|
||||||
|
@ -341,11 +349,39 @@ public class CModelManager implements IResourceChangeListener {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IBinaryParser getBinaryParser(IProject project) {
|
public static IBinaryParser getBinaryParser(IProject project) {
|
||||||
|
// It is in the property of the project of the cdtproject
|
||||||
// For now the default is Elf.
|
// For now the default is Elf.
|
||||||
// It is in the porperty of the project of the cdtproject
|
IBinaryParser parser = (IBinaryParser)fParsers.get(project);
|
||||||
return defaultBinaryParser;
|
if (parser == null) {
|
||||||
|
String format = null;
|
||||||
|
// FIXME: Ask the .cdtproject second.
|
||||||
|
try {
|
||||||
|
if (project != null) {
|
||||||
|
format = project.getPersistentProperty(binaryParserKey);
|
||||||
|
}
|
||||||
|
} catch (CoreException e) {
|
||||||
|
}
|
||||||
|
if (format != null && format.length() > 0) {
|
||||||
|
parser = CoreModel.getDefault().getBinaryParser(format);
|
||||||
|
}
|
||||||
|
if (parser == null) {
|
||||||
|
parser = defaultBinaryParser;
|
||||||
|
}
|
||||||
|
fParsers.put(project, parser);
|
||||||
|
}
|
||||||
|
return parser;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void setBinaryParser(IProject project, String format) {
|
||||||
|
try {
|
||||||
|
if (project != null) {
|
||||||
|
project.setPersistentProperty(binaryParserKey, format);
|
||||||
|
fParsers.remove(project);
|
||||||
|
}
|
||||||
|
} catch (CoreException e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static boolean isSharedLib(IFile file) {
|
public static boolean isSharedLib(IFile file) {
|
||||||
try {
|
try {
|
||||||
IBinaryParser parser = getBinaryParser(file.getProject());
|
IBinaryParser parser = getBinaryParser(file.getProject());
|
||||||
|
|
Loading…
Add table
Reference in a new issue