Package ghidra.app.util.opinion
Class GdtLoader
- java.lang.Object
-
- ghidra.app.util.opinion.GdtLoader
-
- All Implemented Interfaces:
Loader
,ExtensionPoint
,java.lang.Comparable<Loader>
public class GdtLoader extends java.lang.Object implements Loader
Loads a packed Ghidra data type archive.
-
-
Field Summary
-
Fields inherited from interface ghidra.app.util.opinion.Loader
COMMAND_LINE_ARG_PREFIX
-
-
Constructor Summary
Constructors Constructor Description GdtLoader()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.Collection<LoadSpec>
findSupportedLoadSpecs(ByteProvider provider)
If thisLoader
supports loading the givenByteProvider
, this methods returns aCollection
of all supportedLoadSpec
s that contain discovered load specification information that thisLoader
will need to load.java.util.List<Option>
getDefaultOptions(ByteProvider provider, LoadSpec loadSpec, DomainObject domainObject, boolean loadIntoProgram)
Gets the defaultLoader
options.java.lang.String
getName()
java.lang.String
getPreferredFileName(ByteProvider provider)
The preferred file name to use when loading.LoaderTier
getTier()
For ordering purposes; lower tier numbers are more important (and listed first).int
getTierPriority()
For ordering purposes; lower numbers are more important (and listed first, within its tier).java.util.List<DomainObject>
load(ByteProvider provider, java.lang.String filename, DomainFolder programFolder, LoadSpec loadSpec, java.util.List<Option> options, MessageLog messageLog, java.lang.Object consumer, TaskMonitor monitor)
Loads bytes in a particular format as a newDomainObject
.boolean
loadInto(ByteProvider provider, LoadSpec loadSpec, java.util.List<Option> options, MessageLog messageLog, Program program, TaskMonitor monitor)
Loads bytes into the specifiedProgram
.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.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface ghidra.app.util.opinion.Loader
compareTo, supportsLoadIntoProgram
-
-
-
-
Method Detail
-
getDefaultOptions
public java.util.List<Option> getDefaultOptions(ByteProvider provider, LoadSpec loadSpec, DomainObject domainObject, boolean loadIntoProgram)
Description copied from interface:Loader
Gets the defaultLoader
options.- Specified by:
getDefaultOptions
in interfaceLoader
- Parameters:
provider
- The bytes of the thing being loaded.loadSpec
- TheLoadSpec
.domainObject
- TheDomainObject
being loaded.loadIntoProgram
- True if the load is adding to an existingDomainObject
; otherwise, false.- Returns:
- A list of the
Loader
's default options.
-
load
public java.util.List<DomainObject> load(ByteProvider provider, java.lang.String filename, DomainFolder programFolder, LoadSpec loadSpec, java.util.List<Option> options, MessageLog messageLog, java.lang.Object consumer, TaskMonitor monitor) throws java.io.IOException, CancelledException, DuplicateNameException, InvalidNameException, VersionException
Description copied from interface:Loader
Loads bytes in a particular format as a newDomainObject
. MultipleDomainObject
s may end up getting created, depending on the nature of the format.- Specified by:
load
in interfaceLoader
- Parameters:
provider
- The bytes to load.filename
- The name of the thing that's being loaded.programFolder
- TheDomainFolder
where the loaded thing should be saved. Could be null if the thing should not be pre-saved.loadSpec
- TheLoadSpec
to use during load.options
- The load options.messageLog
- The message log.consumer
- A consumer object forDomainObject
generated.monitor
- A cancelable task monitor.- Returns:
- A list of loaded
DomainObject
s (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 invalidDomainObject
name was used during load.VersionException
- if there was an issue with database versions, probably due to a failed language upgrade.
-
loadInto
public boolean loadInto(ByteProvider provider, LoadSpec loadSpec, java.util.List<Option> options, MessageLog messageLog, Program program, TaskMonitor monitor) throws java.io.IOException, CancelledException
Description copied from interface:Loader
Loads bytes into the specifiedProgram
. This method will not create any newProgram
s. It is only for adding to an existingProgram
.- Specified by:
loadInto
in interfaceLoader
- Parameters:
provider
- The bytes to load into theProgram
.loadSpec
- TheLoadSpec
to use during load.options
- The load options.messageLog
- The message log.program
- TheProgram
to 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.
-
validateOptions
public java.lang.String validateOptions(ByteProvider provider, LoadSpec loadSpec, java.util.List<Option> options, Program program)
Description copied from interface:Loader
Validates theLoader
's options and returns null if all options are valid; otherwise, an error message describing the problem is returned.- Specified by:
validateOptions
in interfaceLoader
- Parameters:
provider
- The bytes of the thing being loaded.loadSpec
- The proposedLoadSpec
.options
- The list ofOption
s 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
Option
s are valid; otherwise, an error message describing the problem is returned.
-
findSupportedLoadSpecs
public java.util.Collection<LoadSpec> findSupportedLoadSpecs(ByteProvider provider) throws java.io.IOException
Description copied from interface:Loader
If thisLoader
supports loading the givenByteProvider
, this methods returns aCollection
of all supportedLoadSpec
s that contain discovered load specification information that thisLoader
will need to load. If thisLoader
cannot support loading the givenByteProvider
, an emptyCollection
is returned.- Specified by:
findSupportedLoadSpecs
in interfaceLoader
- Parameters:
provider
- The bytes being loaded.- Returns:
- A
Collection
ofLoadSpec
s that thisLoader
supports loading, or an emptyCollection
if thisLoader
doesn't support loading the givenByteProvider
. - Throws:
java.io.IOException
- if there was an IO-related issue finding theLoadSpec
s.
-
getPreferredFileName
public java.lang.String getPreferredFileName(ByteProvider provider)
Description copied from interface:Loader
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
ByteProvider
if absolutely necessary.- Specified by:
getPreferredFileName
in interfaceLoader
- Parameters:
provider
- The bytes to load.- Returns:
- The preferred file name to use when loading.
-
getName
public java.lang.String getName()
Description copied from interface:Loader
-
getTier
public LoaderTier getTier()
Description copied from interface:Loader
For ordering purposes; lower tier numbers are more important (and listed first).
-
getTierPriority
public int getTierPriority()
Description copied from interface:Loader
For ordering purposes; lower numbers are more important (and listed first, within its tier).- Specified by:
getTierPriority
in interfaceLoader
- Returns:
- the ordering of the loader within its tier
-
-