Package ghidra.trace.model.target.iface

# Interface TraceMethod

All Superinterfaces:
  `TraceObjectInterface`

All Known Implementing Classes:
  `DBTraceObjectMethod`

public interface TraceMethod extends TraceObjectInterface
An object which can be invoked as a method

TODO: Should parameters and return type be something incorporated into Schemas?

NOTE: We might keep this around a bit longer, since some connectors may like to reflect an object model that presents methods in the tree. The connector will need to provide the means of invocation, and that may become better integrated into the UI, but at least for now, being able to show and hide them is important, so we at least need a named interface for them.

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Interface
  Description
  `static @interface`
  `TraceMethod.BoolValue`
  `static @interface`
  `TraceMethod.BytesValue`
  `static @interface`
  `TraceMethod.DoubleValue`
  `static @interface`
  `TraceMethod.FloatValue`
  `static @interface`
  `TraceMethod.IntValue`
  `static @interface`
  `TraceMethod.LongValue`
  `static @interface`
  `TraceMethod.Param`
  `static class`
  `TraceMethod.ParameterDescription<T>`
  A description of a method parameter
  `static @interface`
  `TraceMethod.StringsValue`
  `static @interface`
  `TraceMethod.StringValue`
  `static interface`
  `TraceMethod.Value<T>`

- ## Field Summary

  ### Fields inherited from interface ghidra.trace.model.target.iface.TraceObjectInterface

  `KEY_COMMENT, KEY_DISPLAY, KEY_KIND, KEY_MODIFIED, KEY_ORDER, KEY_SHORT_DISPLAY, KEY_TYPE, KEY_VALUE`

- ## Method Summary

  Static Methods
  Modifier and Type
  Method
  Description
  `static Map<String,TraceMethod.ParameterDescription<?>>`
  `makeParameters(TraceMethod.ParameterDescription<?>... params)`
  Construct a map of parameter descriptions from an array
  `static Map<String,TraceMethod.ParameterDescription<?>>`
  `makeParameters(Collection<TraceMethod.ParameterDescription<?>> params)`
  Construct a map of parameter descriptions from a collection
  `static Map<String,TraceMethod.ParameterDescription<?>>`
  `makeParameters(Stream<TraceMethod.ParameterDescription<?>> params)`
  Construct a map of parameter descriptions from a stream
  `static Map<String,Object>`
  `validateArguments(Map<String,TraceMethod.ParameterDescription<?>> parameters, Map<String,?> arguments, boolean permitExtras)`
  Validate the given arguments against the given parameters

  ### Methods inherited from interface ghidra.trace.model.target.iface.TraceObjectInterface

  `getObject`

- ## Method Details

  - ### makeParameters

    static Map<String,TraceMethod.ParameterDescription<?>> makeParameters(Stream<TraceMethod.ParameterDescription<?>> params)
    Construct a map of parameter descriptions from a stream
    Parameters:
      `params` - the descriptions
    Returns:
      a map of descriptions by name

  - ### makeParameters

    static Map<String,TraceMethod.ParameterDescription<?>> makeParameters(Collection<TraceMethod.ParameterDescription<?>> params)
    Construct a map of parameter descriptions from a collection
    Parameters:
      `params` - the descriptions
    Returns:
      a map of descriptions by name

  - ### makeParameters

    static Map<String,TraceMethod.ParameterDescription<?>> makeParameters(TraceMethod.ParameterDescription<?>... params)
    Construct a map of parameter descriptions from an array
    Parameters:
      `params` - the descriptions
    Returns:
      a map of descriptions by name

  - ### validateArguments

    static Map<String,Object> validateArguments(Map<String,TraceMethod.ParameterDescription<?>> parameters, Map<String,?> arguments, boolean permitExtras)
    Validate the given arguments against the given parameters
    Parameters:
      `parameters` - the parameter descriptions
      `arguments` - the arguments
      `permitExtras` - false to require every named argument has a named parameter
    Returns:
      the map of validated arguments