Package ghidra.app.decompiler.parallel

# Class ParallelDecompiler

java.lang.Object
ghidra.app.decompiler.parallel.ParallelDecompiler

public class ParallelDecompiler extends Object

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static <R> ChunkingParallelDecompiler<R>`
  `createChunkingParallelDecompiler(QCallback<Function,R> callback, TaskMonitor monitor)`
  Creates an object that can be used to perform decompilation of a limited number of functions at a time, as opposed to working over an entire range of functions at once.
  `static <R> List<R>`
  `decompileFunctions(QCallback<Function,R> callback, Program program, AddressSetView addresses, TaskMonitor monitor)`
  Decompile the given functions using multiple decompilers
  `static <R> void`
  `decompileFunctions(QCallback<Function,R> callback, Program program, Iterator<Function> functions, Consumer<R> resultsConsumer, TaskMonitor monitor)`
  Decompile the given functions using multiple decompilers.
  `static <R> List<R>`
  `decompileFunctions(QCallback<Function,R> callback, Collection<Function> functions, TaskMonitor monitor)`
  Decompile the given functions using multiple decompilers

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Method Details

  - ### decompileFunctions

    public static <R> List<R> decompileFunctions(QCallback<Function,R> callback, Program program, AddressSetView addresses, TaskMonitor monitor) throws InterruptedException, Exception
    Decompile the given functions using multiple decompilers
    Parameters:
      `callback` - the callback to be called for each item that is processed
      `program` - the program
      `addresses` - the addresses restricting which functions to decompile
      `monitor` - the task monitor
    Returns:
      the list of client results
    Throws:
      `InterruptedException` - if interrupted
      `Exception` - if any other exception occurs

  - ### decompileFunctions

    public static <R> List<R> decompileFunctions(QCallback<Function,R> callback, Collection<Function> functions, TaskMonitor monitor) throws InterruptedException, Exception
    Decompile the given functions using multiple decompilers
    Parameters:
      `callback` - the callback to be called for each item that is processed
      `functions` - the functions to decompile
      `monitor` - the task monitor
    Returns:
      the list of client results
    Throws:
      `InterruptedException` - if interrupted
      `Exception` - if any other exception occurs

  - ### decompileFunctions

    public static <R> void decompileFunctions(QCallback<Function,R> callback, Program program, Iterator<Function> functions, Consumer<R> resultsConsumer, TaskMonitor monitor) throws InterruptedException, Exception
    Decompile the given functions using multiple decompilers.

    Results will be passed to the given consumer as they are produced. Calling this method allows you to handle results as they are discovered.

    This method will wait for all processing before returning.

    Parameters:
      `callback` - the callback to be called for each that is processed
      `program` - the program
      `functions` - the functions to decompile
      `resultsConsumer` - the consumer to which results will be passed
      `monitor` - the task monitor
    Throws:
      `InterruptedException` - if interrupted
      `Exception` - if any other exception occurs

  - ### createChunkingParallelDecompiler

    public static <R> ChunkingParallelDecompiler<R> createChunkingParallelDecompiler(QCallback<Function,R> callback, TaskMonitor monitor)
    Creates an object that can be used to perform decompilation of a limited number of functions at a time, as opposed to working over an entire range of functions at once. `decompileFunctions(QCallback, Program, AddressSetView, TaskMonitor)` will create and tear down concurrent data structures on each use, making repeated calls less efficient. You would use this method when you wish to perform periodic work as results are returned and when using the callback mechanism is not sufficient such as when ordering of results is required.
    Parameters:
      `callback` - the callback required to perform work.
      `monitor` - the monitor used to report progress and to cancel
    Returns:
      the parallel decompiler used for decompiling.