Package ghidra.app.util.viewer.field

# Class XRefFieldFactory

java.lang.Object
ghidra.app.util.viewer.field.FieldFactory
ghidra.app.util.viewer.field.XRefFieldFactory

All Implemented Interfaces:
  `ExtensionPoint`

Direct Known Subclasses:
  `VariableXRefFieldFactory`, `XRefHeaderFieldFactory`

public class XRefFieldFactory extends FieldFactory
Cross-reference Field Factory

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static enum`
  `XRefFieldFactory.SORT_CHOICE`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected String`
  `delim`
  `protected boolean`
  `displayBlockName`
  `protected boolean`
  `displayLocalNamespace`
  `protected boolean`
  `displayNonLocalNamespace`
  `protected boolean`
  `displayRefType`
  `static final String`
  `FIELD_NAME`
  `protected boolean`
  `groupByFunction`
  `protected String`
  `localPrefixText`
  `protected int`
  `maxXRefs`
  `protected XRefFieldFactory.SORT_CHOICE`
  `sortChoice`
  `protected Comparator<Reference>`
  `typeComparator`
  `protected boolean`
  `useLocalPrefixOverride`

  ### Fields inherited from class ghidra.app.util.viewer.field.FieldFactory

  `BASE_LISTING_FONT_ID, baseFont, colorOptionName, enabled, FONT_OPTION_NAME, hlProvider, model, name, startX, style, styleOptionName, width`

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  ``
  `XRefFieldFactory()`
  ``
  `XRefFieldFactory(FieldFormatModel model, ListingHighlightProvider hlProvider, Options displayOptions, ToolOptions fieldOptions)`
  Constructor
  `protected`
  `XRefFieldFactory(String name)`
  `protected`
  `XRefFieldFactory(String name, FieldFormatModel model, ListingHighlightProvider hlProvider, Options displayOptions, ToolOptions fieldOptions)`
  Constructs a new XRefFieldFactory based on the provider and model.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `acceptsType(int category, Class<?> proxyObjectClass)`
  Used to specify which format models this field can belong to.
  `protected FieldLocation`
  `createFieldLocation(int xrefPos, int xrefIndex, ListingTextField field, BigInteger index, int fieldNum)`
  `protected AttributedString`
  `createRefTypeAttributedString(Reference reference, AttributedString referenceString)`
  `void`
  `fieldOptionsChanged(Options options, String optionName, Object oldValue, Object newValue)`
  Notifications that the field options changed.
  `protected String`
  `getBlockName(Program pgm, Address addr)`
  `ListingField`
  `getField(ProxyObj<?> proxy, int varWidth)`
  Generates a Field based on the given information.
  `FieldLocation`
  `getFieldLocation(ListingField bf, BigInteger index, int fieldNum, ProgramLocation loc)`
  Return a FieldLocation that corresponds to the given index, fieldNum, and ProgramLocation IF and ONLY IF the given programLocation is the type generated by this class's `FieldFactory.getFieldLocation(ListingField, BigInteger, int, ProgramLocation)`.
  `protected String`
  `getPrefix(Program program, Reference reference, Function currentFunction)`
  `protected Program`
  `getProgram(Object obj)`
  `ProgramLocation`
  `getProgramLocation(int row, int col, ListingField listingField)`
  Returns the Program location for the given object, row, col, and groupPath
  `protected Address`
  `getXRefLocation(Object obj)`
  Get an address location for this object.
  `FieldFactory`
  `newInstance(FieldFormatModel formatModel, ListingHighlightProvider provider, ToolOptions toolOptions, ToolOptions fieldOptions)`
  Returns a new instance of this FieldFactory that can be used to generate fields instead of being used as a prototype.

  ### Methods inherited from class ghidra.app.util.viewer.field.FieldFactory

  `displayOptionsChanged, getFieldModel, getFieldName, getFieldText, getMetrics, getMetrics, getStartX, getWidth, hasSamePath, initDisplayOptions, initFieldOptions, isEnabled, servicesChanged, setEnabled, setStartX, setWidth, simplifyTemplates, supportsLocation`

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

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

- ## Field Details

  - ### FIELD_NAME

    public static final String FIELD_NAME
    See Also:
      - Constant Field Values

  - ### sortChoice

    protected XRefFieldFactory.SORT_CHOICE sortChoice

  - ### delim

    protected String delim

  - ### displayBlockName

    protected boolean displayBlockName

  - ### groupByFunction

    protected boolean groupByFunction

  - ### maxXRefs

    protected int maxXRefs

  - ### displayRefType

    protected boolean displayRefType

  - ### typeComparator

    protected Comparator<Reference> typeComparator

  - ### displayLocalNamespace

    protected boolean displayLocalNamespace

  - ### displayNonLocalNamespace

    protected boolean displayNonLocalNamespace

  - ### useLocalPrefixOverride

    protected boolean useLocalPrefixOverride

  - ### localPrefixText

    protected String localPrefixText

- ## Constructor Details

  - ### XRefFieldFactory

    public XRefFieldFactory()

  - ### XRefFieldFactory

    protected XRefFieldFactory(String name)

  - ### XRefFieldFactory

    public XRefFieldFactory(FieldFormatModel model, ListingHighlightProvider hlProvider, Options displayOptions, ToolOptions fieldOptions)
    Constructor
    Parameters:
      `model` - the model that the field belongs to.
      `hlProvider` - the HightLightProvider.
      `displayOptions` - the Options for display properties.
      `fieldOptions` - the Options for field specific properties.

  - ### XRefFieldFactory

    protected XRefFieldFactory(String name, FieldFormatModel model, ListingHighlightProvider hlProvider, Options displayOptions, ToolOptions fieldOptions)
    Constructs a new XRefFieldFactory based on the provider and model.
    Parameters:
      `name` - the owner of this field factory
      `model` - the model that the field belongs to.
      `hlProvider` - the HightLightProvider.
      `displayOptions` - the Options for display properties.
      `fieldOptions` - the Options for field specific properties.

- ## Method Details

  - ### fieldOptionsChanged

    public void fieldOptionsChanged(Options options, String optionName, Object oldValue, Object newValue)
    Description copied from class: `FieldFactory`
    Notifications that the field options changed.
    Overrides:
      `fieldOptionsChanged` in class `FieldFactory`
    Parameters:
      `options` - the Field Options object that changed.
      `optionName` - the name of the property that changed.
      `oldValue` - the old value of the property.
      `newValue` - the new value of the property.

  - ### getField

    public ListingField getField(ProxyObj<?> proxy, int varWidth)
    Description copied from class: `FieldFactory`
    Generates a Field based on the given information.
    Specified by:
      `getField` in class `FieldFactory`
    Parameters:
      `proxy` - The object that the generated field will report some information about.
      `varWidth` - the additional distance along the x axis to place the generated field.
    Returns:
      the newly generated FactoryField that shows some property or information about the given object.

  - ### createRefTypeAttributedString

    protected AttributedString createRefTypeAttributedString(Reference reference, AttributedString referenceString)

  - ### getPrefix

    protected String getPrefix(Program program, Reference reference, Function currentFunction)

  - ### getFieldLocation

    public FieldLocation getFieldLocation(ListingField bf, BigInteger index, int fieldNum, ProgramLocation loc)
    Description copied from class: `FieldFactory`
    Return a FieldLocation that corresponds to the given index, fieldNum, and ProgramLocation IF and ONLY IF the given programLocation is the type generated by this class's `FieldFactory.getFieldLocation(ListingField, BigInteger, int, ProgramLocation)`. Each FieldFactory should generate and process a unique ProgramLocation class.
    Specified by:
      `getFieldLocation` in class `FieldFactory`
    Parameters:
      `bf` - the ListingField at the current cursor.
      `index` - the line index (corresponds to an address)
      `fieldNum` - the index of field within the layout to try and get a FieldLocation.
      `loc` - the ProgramLocation to be converted into a FieldLocation.
    Returns:
      the location.

  - ### createFieldLocation

    protected FieldLocation createFieldLocation(int xrefPos, int xrefIndex, ListingTextField field, BigInteger index, int fieldNum)

  - ### getProgramLocation

    public ProgramLocation getProgramLocation(int row, int col, ListingField listingField)
    Description copied from class: `FieldFactory`
    Returns the Program location for the given object, row, col, and groupPath
    Specified by:
      `getProgramLocation` in class `FieldFactory`
    Parameters:
      `row` - the row within this field
      `col` - the col on the given row within this field.
      `listingField` - the ListingField containing the cursor.
    Returns:
      the location.

  - ### getBlockName

    protected String getBlockName(Program pgm, Address addr)

  - ### getXRefLocation

    protected Address getXRefLocation(Object obj)
    Get an address location for this object.
    Parameters:
      `obj` - object to get location from
    Returns:
      the address

  - ### getProgram

    protected Program getProgram(Object obj)

  - ### acceptsType

    public boolean acceptsType(int category, Class<?> proxyObjectClass)
    Description copied from class: `FieldFactory`
    Used to specify which format models this field can belong to.
    Specified by:
      `acceptsType` in class `FieldFactory`
    Parameters:
      `category` - the category for this field
      `proxyObjectClass` - the type of proxy object used by this field
    Returns:
      true if this class accepts the given category.

  - ### newInstance

    public FieldFactory newInstance(FieldFormatModel formatModel, ListingHighlightProvider provider, ToolOptions toolOptions, ToolOptions fieldOptions)
    Description copied from class: `FieldFactory`
    Returns a new instance of this FieldFactory that can be used to generate fields instead of being used as a prototype.
    Specified by:
      `newInstance` in class `FieldFactory`
    Parameters:
      `formatModel` - the model that the field belongs to.
      `provider` - the HightLightProvider.
      `toolOptions` - the Options for display properties.
      `fieldOptions` - the Options for field specific properties.
    Returns:
      the factory