Package ghidra.app.util.opinion

# Class AbstractProgramWrapperLoader

java.lang.Object
ghidra.app.util.opinion.AbstractProgramLoader
ghidra.app.util.opinion.AbstractProgramWrapperLoader

All Implemented Interfaces:
  `Loader`, `ExtensionPoint`, `Comparable<Loader>`

Direct Known Subclasses:
  `DefLoader`, `DyldCacheLoader`, `MapLoader`, `Omf51Loader`, `OmfLoader`, `PefLoader`, `SomLoader`, `UnixAoutLoader`

public abstract class AbstractProgramWrapperLoader extends AbstractProgramLoader
An abstract `Loader` that provides a convenience wrapper around `AbstractProgramLoader`, minimizing the amount of work a subclass needs to do to load a `Program`

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from interface ghidra.app.util.opinion.Loader

  `Loader.ImporterSettings`

- ## Field Summary

  ### 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, loggingDisabled, OPTIONS_PROJECT_SAVE_STATE_KEY`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `AbstractProgramWrapperLoader()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `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).
  `protected abstract void`
  `load(Program program, Loader.ImporterSettings settings)`
  Loads bytes in a particular format into the given `Program`.
  `protected List<Loaded<Program>>`
  `loadProgram(Loader.ImporterSettings settings)`
  Loads bytes in a particular format as a new `Loaded` `Program`.
  `protected void`
  `loadProgramInto(Program program, Loader.ImporterSettings settings)`
  Loads program bytes into the specified `Program`.

  ### Methods inherited from class ghidra.app.util.opinion.AbstractProgramLoader

  `addExternalBlock, createDefaultMemoryBlocks, createProgram, createProgram, generateBlockName, getDefaultOptions, getLanguageService, load, loadInto, markAsFunction, postLoadCleanup, postLoadProgramFixups, setProgramProperties, shouldApplyProcessorLabelsByDefault, validateOptions`

  ### 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, findSupportedLoadSpecs, getName, getPreferredFileName, loadsIntoNewFolder, supportsLoadIntoProgram, supportsLoadIntoProgram`

- ## Constructor Details

  - ### AbstractProgramWrapperLoader

    public AbstractProgramWrapperLoader()

- ## Method Details

  - ### load

    protected abstract void load(Program program, Loader.ImporterSettings settings) throws CancelledException, IOException
    Loads bytes in a particular format into the given `Program`.
    Parameters:
      `program` - The `Program` to load into.
      `settings` - The `Loader.ImporterSettings`.
    Throws:
      `IOException` - if there was an IO-related problem loading.
      `CancelledException` - if the user cancelled the load.

  - ### loadProgram

    protected List<Loaded<Program>> loadProgram(Loader.ImporterSettings settings) throws IOException, CancelledException
    Description copied from class: `AbstractProgramLoader`
    Loads bytes in a particular format as a new `Loaded` `Program`. Multiple `Program`s may end up getting created, depending on the nature of the format.

    Note that when the load completes, the returned `Loaded` `Program`s are not saved to a project. That is the responsibility of the caller (see `Loaded.save(TaskMonitor)`).

    It is also the responsibility of the caller to close the returned `Loaded` `Program`s with `Loaded.close()` when they are no longer needed.

    Specified by:
      `loadProgram` in class `AbstractProgramLoader`
    Parameters:
      `settings` - The `Loader.ImporterSettings`.
    Returns:
      A `List` of one or more `Loaded` `Program`s (created but not saved).
    Throws:
      `IOException` - if there was an IO-related problem loading.
      `CancelledException` - if the user cancelled the load.

  - ### loadProgramInto

    protected void loadProgramInto(Program program, Loader.ImporterSettings settings) throws CancelledException, LoadException, IOException
    Description copied from class: `AbstractProgramLoader`
    Loads program bytes into the specified `Program`. This method will not create any new `Program`s. It is only for adding to an existing `Program`.

    NOTE: The loading that occurs in this method will automatically be done in a transaction.

    Specified by:
      `loadProgramInto` in class `AbstractProgramLoader`
    Parameters:
      `program` - The `Program` to load into.
      `settings` - The `Loader.ImporterSettings`.
    Throws:
      `CancelledException` - if the user cancelled the load.
      `LoadException` - if the load failed in an expected way.
      `IOException` - if there was an IO-related problem loading.

  - ### getTier

    public LoaderTier getTier()
    Description copied from interface: `Loader`
    For 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: `Loader`
    For ordering purposes; lower numbers are more important (and listed first, within its tier).
    Returns:
      the ordering of the loader within its tier