Package ghidra.app.util.opinion
Interface Loader
-
- All Superinterfaces:
java.lang.Comparable<Loader>,ExtensionPoint
- All Known Implementing Classes:
AbstractLibrarySupportLoader,AbstractProgramLoader,BinaryLoader,CoffLoader,DbgLoader,DefLoader,DyldCacheLoader,ElfLoader,GdtLoader,GzfLoader,IntelHexLoader,MachoLoader,MapLoader,MotorolaHexLoader,MSCoffLoader,MzLoader,NeLoader,OmfLoader,PefLoader,PeLoader,XmlLoader
public interface Loader extends ExtensionPoint, java.lang.Comparable<Loader>
An interface that all loaders must implement. A particular loader implementation should be designed to identify one and only one file format.NOTE: ALL loader CLASSES MUST END IN "Loader". If not, the
ClassSearcherwill not find them.
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.StringCOMMAND_LINE_ARG_PREFIX
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description default intcompareTo(Loader o)java.util.Collection<LoadSpec>findSupportedLoadSpecs(ByteProvider provider)If thisLoadersupports loading the givenByteProvider, this methods returns aCollectionof all supportedLoadSpecs that contain discovered load specification information that thisLoaderwill need to load.java.util.List<Option>getDefaultOptions(ByteProvider provider, LoadSpec loadSpec, DomainObject domainObject, boolean loadIntoProgram)Gets the defaultLoaderoptions.java.lang.StringgetName()default java.lang.StringgetPreferredFileName(ByteProvider provider)The preferred file name to use when loading.LoaderTiergetTier()For ordering purposes; lower tier numbers are more important (and listed first).intgetTierPriority()For ordering purposes; lower numbers are more important (and listed first, within its tier).java.util.List<DomainObject>load(ByteProvider provider, java.lang.String name, DomainFolder folder, LoadSpec loadSpec, java.util.List<Option> options, MessageLog messageLog, java.lang.Object consumer, TaskMonitor monitor)Loads bytes in a particular format as a newDomainObject.booleanloadInto(ByteProvider provider, LoadSpec loadSpec, java.util.List<Option> options, MessageLog messageLog, Program program, TaskMonitor monitor)Loads bytes into the specifiedProgram.default booleansupportsLoadIntoProgram()java.lang.StringvalidateOptions(ByteProvider provider, LoadSpec loadSpec, java.util.List<Option> options, Program program)Validates theLoader's options and returns null if all options are valid; otherwise, an error message describing the problem is returned.
-
-
-
Field Detail
-
COMMAND_LINE_ARG_PREFIX
static final java.lang.String COMMAND_LINE_ARG_PREFIX
- See Also:
- Constant Field Values
-
-
Method Detail
-
findSupportedLoadSpecs
java.util.Collection<LoadSpec> findSupportedLoadSpecs(ByteProvider provider) throws java.io.IOException
If thisLoadersupports loading the givenByteProvider, this methods returns aCollectionof all supportedLoadSpecs that contain discovered load specification information that thisLoaderwill need to load. If thisLoadercannot support loading the givenByteProvider, an emptyCollectionis returned.- Parameters:
provider- The bytes being loaded.- Returns:
- A
CollectionofLoadSpecs that thisLoadersupports loading, or an emptyCollectionif thisLoaderdoesn't support loading the givenByteProvider. - Throws:
java.io.IOException- if there was an IO-related issue finding theLoadSpecs.
-
load
java.util.List<DomainObject> load(ByteProvider provider, java.lang.String name, DomainFolder folder, LoadSpec loadSpec, java.util.List<Option> options, MessageLog messageLog, java.lang.Object consumer, TaskMonitor monitor) throws java.io.IOException, CancelledException, DuplicateNameException, InvalidNameException, VersionException
Loads bytes in a particular format as a newDomainObject. MultipleDomainObjects may end up getting created, depending on the nature of the format.- Parameters:
provider- The bytes to load.name- The name of the thing that's being loaded.folder- TheDomainFolderwhere the loaded thing should be saved. Could be null if the thing should not be pre-saved.loadSpec- TheLoadSpecto use during load.options- The load options.messageLog- The message log.consumer- A consumer object forDomainObjectgenerated.monitor- A cancelable task monitor.- Returns:
- A list of loaded
DomainObjects (element 0 corresponds to primary loaded object). - Throws:
java.io.IOException- if there was an IO-related problem loading.CancelledException- if the user cancelled the load.DuplicateNameException- if the load resulted in a naming conflict with theDomainObject.InvalidNameException- if an invalidDomainObjectname was used during load.VersionException- if there was an issue with database versions, probably due to a failed language upgrade.
-
loadInto
boolean loadInto(ByteProvider provider, LoadSpec loadSpec, java.util.List<Option> options, MessageLog messageLog, Program program, TaskMonitor monitor) throws java.io.IOException, CancelledException
Loads bytes into the specifiedProgram. This method will not create any newPrograms. It is only for adding to an existingProgram.- Parameters:
provider- The bytes to load into theProgram.loadSpec- TheLoadSpecto use during load.options- The load options.messageLog- The message log.program- TheProgramto load into.monitor- A cancelable task monitor.- Returns:
- True if the file was successfully loaded; otherwise, false.
- Throws:
java.io.IOException- if there was an IO-related problem loading.CancelledException- if the user cancelled the load.
-
getDefaultOptions
java.util.List<Option> getDefaultOptions(ByteProvider provider, LoadSpec loadSpec, DomainObject domainObject, boolean loadIntoProgram)
Gets the defaultLoaderoptions.- Parameters:
provider- The bytes of the thing being loaded.loadSpec- TheLoadSpec.domainObject- TheDomainObjectbeing loaded.loadIntoProgram- True if the load is adding to an existingDomainObject; otherwise, false.- Returns:
- A list of the
Loader's default options.
-
validateOptions
java.lang.String validateOptions(ByteProvider provider, LoadSpec loadSpec, java.util.List<Option> options, Program program)
Validates theLoader's options and returns null if all options are valid; otherwise, an error message describing the problem is returned.- Parameters:
provider- The bytes of the thing being loaded.loadSpec- The proposedLoadSpec.options- The list ofOptions to validate.program- existing program if the loader is adding to an existing program. If it is a fresh import, then this will be null.- Returns:
- null if all
Options are valid; otherwise, an error message describing the problem is returned.
-
getName
java.lang.String getName()
Gets theLoader's name, which is used both for display purposes, and to identify theLoaderin the opinion files.- Returns:
- The
Loader's name.
-
getTier
LoaderTier getTier()
For ordering purposes; lower tier numbers are more important (and listed first).- Returns:
- the tier of the loader
-
getTierPriority
int getTierPriority()
For ordering purposes; lower numbers are more important (and listed first, within its tier).- Returns:
- the ordering of the loader within its tier
-
getPreferredFileName
default java.lang.String getPreferredFileName(ByteProvider provider)
The preferred file name to use when loading.The default behavior of this method is to return the (cleaned up) name of the given
ByteProvider.NOTE: This method may get called frequently, so only parse the given
ByteProviderif absolutely necessary.- Parameters:
provider- The bytes to load.- Returns:
- The preferred file name to use when loading.
-
supportsLoadIntoProgram
default boolean supportsLoadIntoProgram()
-
-