Package ghidra.app.util.opinion
Class XmlLoader
- java.lang.Object
-
- ghidra.app.util.opinion.AbstractProgramLoader
-
- ghidra.app.util.opinion.XmlLoader
-
- All Implemented Interfaces:
Loader,ExtensionPoint,java.lang.Comparable<Loader>
public class XmlLoader extends AbstractProgramLoader
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface ghidra.util.classfinder.ExtensionPoint
ExtensionPoint.Exclude, ExtensionPoint.Util
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.StringXML_SRC_NAME-
Fields inherited from class ghidra.app.util.opinion.AbstractProgramLoader
ANCHOR_LABELS_OPTION_NAME, APPLY_LABELS_OPTION_NAME
-
Fields inherited from interface ghidra.app.util.opinion.Loader
COMMAND_LINE_ARG_PREFIX
-
-
Constructor Summary
Constructors Constructor Description XmlLoader()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description 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()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).protected java.util.List<Program>loadProgram(ByteProvider provider, java.lang.String programName, DomainFolder programFolder, LoadSpec loadSpec, java.util.List<Option> options, MessageLog log, java.lang.Object consumer, TaskMonitor monitor)Loads program bytes in a particular format as a newProgram.protected booleanloadProgramInto(ByteProvider provider, LoadSpec loadSpec, java.util.List<Option> options, MessageLog log, Program prog, TaskMonitor monitor)Loads program bytes into the specifiedProgram.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.-
Methods inherited from class ghidra.app.util.opinion.AbstractProgramLoader
createDefaultMemoryBlocks, createProgram, generateBlockName, getLanguageService, load, loadInto, postLoadProgramFixups, release, shouldApplyProcessorLabelsByDefault
-
-
-
-
Field Detail
-
XML_SRC_NAME
public static final java.lang.String XML_SRC_NAME
- See Also:
- Constant Field Values
-
-
Method Detail
-
getTier
public LoaderTier getTier()
Description copied from interface:LoaderFor ordering purposes; lower tier numbers are more important (and listed first).- Returns:
- the tier of the loader
-
getTierPriority
public int getTierPriority()
Description copied from interface:LoaderFor ordering purposes; lower numbers are more important (and listed first, within its tier).- Returns:
- the ordering of the loader within its tier
-
supportsLoadIntoProgram
public boolean supportsLoadIntoProgram()
Description copied from interface:Loader
-
findSupportedLoadSpecs
public java.util.Collection<LoadSpec> findSupportedLoadSpecs(ByteProvider provider) throws java.io.IOException
Description copied from interface:LoaderIf 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.
-
getPreferredFileName
public java.lang.String getPreferredFileName(ByteProvider provider)
Description copied from interface:LoaderThe 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.
-
loadProgram
protected java.util.List<Program> loadProgram(ByteProvider provider, java.lang.String programName, DomainFolder programFolder, LoadSpec loadSpec, java.util.List<Option> options, MessageLog log, java.lang.Object consumer, TaskMonitor monitor) throws java.io.IOException, CancelledException
Description copied from class:AbstractProgramLoaderLoads program bytes in a particular format as a newProgram. MultiplePrograms may end up getting created, depending on the nature of the format.- Specified by:
loadProgramin classAbstractProgramLoader- Parameters:
provider- The bytes to load.programName- The name of theProgramthat's being loaded.programFolder- 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.log- The message log.consumer- A consumer object forPrograms generated.monitor- A cancelable task monitor.- Returns:
- A list of loaded
Programs (element 0 corresponds to primary loadedProgram). - Throws:
java.io.IOException- if there was an IO-related problem loading.CancelledException- if the user cancelled the load.
-
loadProgramInto
protected boolean loadProgramInto(ByteProvider provider, LoadSpec loadSpec, java.util.List<Option> options, MessageLog log, Program prog, TaskMonitor monitor) throws java.io.IOException, CancelledException
Description copied from class:AbstractProgramLoaderLoads program bytes into the specifiedProgram. This method will not create any newPrograms. It is only for adding to an existingProgram.NOTE: The loading that occurs in this method will automatically be done in a transaction.
- Specified by:
loadProgramIntoin classAbstractProgramLoader- Parameters:
provider- The bytes to load into theProgram.loadSpec- TheLoadSpecto use during load.options- The load options.log- The message log.prog- 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
public java.util.List<Option> getDefaultOptions(ByteProvider provider, LoadSpec loadSpec, DomainObject domainObject, boolean loadIntoProgram)
Description copied from interface:LoaderGets the defaultLoaderoptions.- Specified by:
getDefaultOptionsin interfaceLoader- Overrides:
getDefaultOptionsin classAbstractProgramLoader- 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.
-
getName
public java.lang.String getName()
Description copied from interface:LoaderGets theLoader's name, which is used both for display purposes, and to identify theLoaderin the opinion files.- Returns:
- The
Loader's name.
-
validateOptions
public java.lang.String validateOptions(ByteProvider provider, LoadSpec loadSpec, java.util.List<Option> options, Program program)
Description copied from interface:LoaderValidates theLoader's options and returns null if all options are valid; otherwise, an error message describing the problem is returned.- Specified by:
validateOptionsin interfaceLoader- Overrides:
validateOptionsin classAbstractProgramLoader- 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.
-
-