Class TaintFieldFactory
- All Implemented Interfaces:
ExtensionPoint
This implements an interface that is part of the core framework, even lower than the Debugger
framework. I used the "sample" module's EntropyFieldFactory for reference.
-
Field Summary
FieldsFields 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
ConstructorsModifierConstructorDescriptionprotectedTaintFieldFactory(FieldFormatModel formatModel, ListingHighlightProvider highlightProvider, Options displayOptions, Options fieldOptions) -
Method Summary
Modifier and TypeMethodDescriptionbooleanacceptsType(int category, Class<?> proxyObjectClass) Used to specify which format models this field can belong to.Generates a Field based on the given information.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'sFieldFactory.getFieldLocation(ListingField, BigInteger, int, ProgramLocation).getProgramLocation(int row, int col, ListingField bf) Returns the Program location for the given object, row, col, and groupPathnewInstance(FieldFormatModel formatModel, ListingHighlightProvider highlightProvider, ToolOptions displayOptions, 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, fieldOptionsChanged, getFieldModel, getFieldName, getFieldText, getMetrics, getMetrics, getStartX, getWidth, hasSamePath, initDisplayOptions, initFieldOptions, isEnabled, servicesChanged, setEnabled, setStartX, setWidth, simplifyTemplates, supportsLocation
-
Field Details
-
PROPERTY_NAME
- See Also:
-
COLOR
-
FIELD_NAME
- See Also:
-
-
Constructor Details
-
TaintFieldFactory
public TaintFieldFactory() -
TaintFieldFactory
protected TaintFieldFactory(FieldFormatModel formatModel, ListingHighlightProvider highlightProvider, Options displayOptions, Options fieldOptions)
-
-
Method Details
-
newInstance
public FieldFactory newInstance(FieldFormatModel formatModel, ListingHighlightProvider highlightProvider, ToolOptions displayOptions, ToolOptions fieldOptions) Description copied from class:FieldFactoryReturns a new instance of this FieldFactory that can be used to generate fields instead of being used as a prototype.- Specified by:
newInstancein classFieldFactory- Parameters:
formatModel- the model that the field belongs to.highlightProvider- the HightLightProvider.displayOptions- the Options for display properties.fieldOptions- the Options for field specific properties.- Returns:
- the factory
-
getField
Generates a Field based on the given information.This is where the most of the rendering logic is. Here, we access the property map and deserialize into a
TaintVecmanually (as compared to using a state piece as we did inTaintDebuggerRegisterColumnFactory). Once we have the complete vector, we render it for display.- Specified by:
getFieldin classFieldFactory- 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.
-
getFieldLocation
public 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'sFieldFactory.getFieldLocation(ListingField, BigInteger, int, ProgramLocation). Each FieldFactory should generate and process a unique ProgramLocation class.Because the core framework provides an API for accessing and manipulating the user's cursor, we have to provide a means to distinguish locations in our field from others. This method provides on direction of the conversion between field and program locations.
- Specified by:
getFieldLocationin classFieldFactory- 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.
-
getProgramLocation
Returns the Program location for the given object, row, col, and groupPathBecause the core framework provides an API for accessing and manipulating the user's cursor, we have to provide a means to distinguish locations in our field from others. This method provides on direction of the conversion between field and program locations.
- Specified by:
getProgramLocationin classFieldFactory- Parameters:
row- the row within this fieldcol- the col on the given row within this field.bf- the ListingField containing the cursor.- Returns:
- the location.
-
acceptsType
Description copied from class:FieldFactoryUsed to specify which format models this field can belong to.- Specified by:
acceptsTypein classFieldFactory- Parameters:
category- the category for this fieldproxyObjectClass- the type of proxy object used by this field- Returns:
- true if this class accepts the given category.
-