Package ghidra.program.database.symbol
Class EquateManager
java.lang.Object
ghidra.program.database.symbol.EquateManager
- All Implemented Interfaces:
ErrorHandler
,ManagerDB
,EquateTable
Implementation of the Equate Table
-
Field Summary
-
Constructor Summary
ConstructorDescriptionEquateManager
(DBHandle handle, AddressMap addrMap, OpenMode openMode, Lock lock, TaskMonitor monitor) Constructor -
Method Summary
Modifier and TypeMethodDescriptioncreateEquate
(String name, long value) Creates a new equatevoid
Notification that an IO exception occurred.void
deleteAddressRange
(Address startAddr, Address endAddr, TaskMonitor monitor) Removes all equates defined in the given range.static String
formatNameForEquate
(UniversalID dtID, long equateValue) Formats a string to the equate format given the enum UUID and the value for the equate.static String
formatNameForEquateError
(long equateValue) Formats a string to the equate error format given the value.static UniversalID
getDataTypeUUID
(String formattedEquateName) Pulls out the enum data type UUID given a formatted equate name.Returns the first equate found that is associated with the given value at the given reference address and operand position;Returns the equate with the given name, null if no such equate existsReturns an address iterator over all the addresses where equates have been set.getEquateAddresses
(Address startAddr) Return an address iterator over each address with an equate reference starting at the start address.Return an address iterator over each address with an equate reference that is in the specified address set.Returns an iterator over all equates.getEquates
(long value) Returns all equates defined for value.getEquates
(Address reference) Returns the equates (one for each scalar and opIndex) at the given reference address.getEquates
(Address reference, int opIndex) Returns the equates (one for each scalar) at the given reference address and operand position; For an instruction a given operand can have multiple scalars.static long
getEquateValueFromFormattedName
(String formattedEquateName) Pulls out the value of the equate given the formatted equate name.void
invalidateCache
(boolean all) Clears all data caches.void
moveAddressRange
(Address fromAddr, Address toAddr, long length, TaskMonitor monitor) Move all objects within an address range to a new location.void
programReady
(OpenMode openMode, int currentRevision, TaskMonitor monitor) Callback from program made to each manager after the program has completed initialization.boolean
removeEquate
(String name) Removes the equate from the program.void
setProgram
(ProgramDB program) Callback from program used to indicate all manager have been created.
-
Field Details
-
DATATYPE_TAG
- See Also:
-
ERROR_TAG
- See Also:
-
FORMAT_DELIMITER
- See Also:
-
-
Constructor Details
-
EquateManager
public EquateManager(DBHandle handle, AddressMap addrMap, OpenMode openMode, Lock lock, TaskMonitor monitor) throws VersionException, IOException Constructor- Parameters:
handle
- database handleaddrMap
- map that converts addresses to longs and longs to addressesopenMode
- one of ProgramDB.CREATE, UPDATE, UPGRADE, or READ_ONLYlock
- the program synchronization lockmonitor
- the progress monitor used when upgrading.- Throws:
VersionException
- if the database version doesn't match the current version.IOException
- if a database error occurs.
-
-
Method Details
-
setProgram
Description copied from interface:ManagerDB
Callback from program used to indicate all manager have been created. When this method is invoked, all managers have been instantiated but may not be fully initialized.- Specified by:
setProgram
in interfaceManagerDB
- Parameters:
program
- the program is set when all the initializations have been completed.
-
programReady
public void programReady(OpenMode openMode, int currentRevision, TaskMonitor monitor) throws IOException, CancelledException Description copied from interface:ManagerDB
Callback from program made to each manager after the program has completed initialization. This method may be used by managers to perform additional upgrading which may have been deferred.- Specified by:
programReady
in interfaceManagerDB
- Parameters:
openMode
- the mode that the program is being opened.currentRevision
- current program revision. If openMode is UPGRADE, this value reflects the pre-upgrade value.monitor
- the task monitor to use in any upgrade operations.- Throws:
IOException
- if a database io error occurs.CancelledException
- if the user cancelled the operation via the task monitor.
-
dbError
Description copied from interface:ErrorHandler
Notification that an IO exception occurred.- Specified by:
dbError
in interfaceErrorHandler
- Parameters:
e
-IOException
which was cause of error
-
createEquate
public Equate createEquate(String name, long value) throws DuplicateNameException, InvalidInputException Description copied from interface:EquateTable
Creates a new equate- Specified by:
createEquate
in interfaceEquateTable
- Parameters:
name
- the name to associate with the given value.value
- the value to associate with the given name.- Returns:
- the equate
- Throws:
DuplicateNameException
- thrown if name is already in use as an equate.InvalidInputException
- if name contains blank characters, is zero length, or is null
-
getEquate
Description copied from interface:EquateTable
Returns the first equate found that is associated with the given value at the given reference address and operand position;- Specified by:
getEquate
in interfaceEquateTable
- Parameters:
reference
- address where the equate is used.opIndex
- the operand index of the operand where the equate is used.scalarValue
- the value where the equate is used.- Returns:
- the equate or null if there is no such equate.
-
getEquates
Description copied from interface:EquateTable
Returns the equates (one for each scalar) at the given reference address and operand position; For an instruction a given operand can have multiple scalars.- Specified by:
getEquates
in interfaceEquateTable
- Parameters:
reference
- address where the equate is used.opIndex
- the operand index of the operand where the equate is used.- Returns:
- the list of equates or empty list if there is no such equate.
-
getEquates
Description copied from interface:EquateTable
Returns the equates (one for each scalar and opIndex) at the given reference address. For an instruction a given operand can have multiple scalars.- Specified by:
getEquates
in interfaceEquateTable
- Parameters:
reference
- address where the equate is used.- Returns:
- the list of equates or empty list if there is no such equate.
-
getEquate
Description copied from interface:EquateTable
Returns the equate with the given name, null if no such equate exists- Specified by:
getEquate
in interfaceEquateTable
- Parameters:
name
- the of the equate to be retrieved- Returns:
- the equate
-
getEquateAddresses
Description copied from interface:EquateTable
Returns an address iterator over all the addresses where equates have been set.- Specified by:
getEquateAddresses
in interfaceEquateTable
- Returns:
- the iterator
-
getEquateAddresses
Description copied from interface:EquateTable
Return an address iterator over each address with an equate reference starting at the start address.- Specified by:
getEquateAddresses
in interfaceEquateTable
- Parameters:
startAddr
- start address- Returns:
- an AddressIterator over addresses with defined equate references
-
getEquateAddresses
Description copied from interface:EquateTable
Return an address iterator over each address with an equate reference that is in the specified address set.- Specified by:
getEquateAddresses
in interfaceEquateTable
- Parameters:
set
- the address set- Returns:
- AddressIterator over addresses with defined equate references
-
getEquates
Description copied from interface:EquateTable
Returns an iterator over all equates.- Specified by:
getEquates
in interfaceEquateTable
- Returns:
- the iterator
-
getEquates
Description copied from interface:EquateTable
Returns all equates defined for value.- Specified by:
getEquates
in interfaceEquateTable
- Parameters:
value
- the value to get all equates for.- Returns:
- the equates
-
deleteAddressRange
public void deleteAddressRange(Address startAddr, Address endAddr, TaskMonitor monitor) throws CancelledException Description copied from interface:EquateTable
Removes all equates defined in the given range.- Specified by:
deleteAddressRange
in interfaceEquateTable
- Specified by:
deleteAddressRange
in interfaceManagerDB
- Parameters:
startAddr
- start of the rangeendAddr
- end of the rangemonitor
- task monitor to cancel the remove operation- Throws:
CancelledException
- if the operation was cancelled.
-
removeEquate
Description copied from interface:EquateTable
Removes the equate from the program.- Specified by:
removeEquate
in interfaceEquateTable
- Parameters:
name
- the name of the equate to remove.- Returns:
- true if the equate existed, false otherwise.
-
invalidateCache
public void invalidateCache(boolean all) Description copied from interface:ManagerDB
Clears all data caches.- Specified by:
invalidateCache
in interfaceManagerDB
- Parameters:
all
- if false, some managers may not need to update their cache if they can tell that its not necessary. If this flag is true, then all managers should clear their cache no matter what.
-
moveAddressRange
public void moveAddressRange(Address fromAddr, Address toAddr, long length, TaskMonitor monitor) throws CancelledException Description copied from interface:ManagerDB
Move all objects within an address range to a new location.- Specified by:
moveAddressRange
in interfaceManagerDB
- Parameters:
fromAddr
- the first address of the range to be moved.toAddr
- the address where to the range is to be moved.length
- the number of addresses to move.monitor
- the task monitor to use in any upgrade operations.- Throws:
CancelledException
- if the user cancelled the operation via the task monitor.
-
formatNameForEquate
Formats a string to the equate format given the enum UUID and the value for the equate. The formatted strings are used when setting equates from datatypes so that information can be stored with an equate to point back to that datatype.- Parameters:
dtID
- The enum's data type UUIDequateValue
- The value intended for the equate- Returns:
- The formatted equate name
-
formatNameForEquateError
Formats a string to the equate error format given the value. Used for rendering formatted equates that do not point back to a datatype.- Parameters:
equateValue
- The value of the equate- Returns:
- The error formatted equate name
-
getDataTypeUUID
Pulls out the enum data type UUID given a formatted equate name. This UUID should point back to a datatype.- Parameters:
formattedEquateName
- The formatted equate name to pull the UUID from- Returns:
- The enum data type UUID or null if the given name is not formatted.
-
getEquateValueFromFormattedName
Pulls out the value of the equate given the formatted equate name. The value stored in the equate info is a decimal.- Parameters:
formattedEquateName
- The formatted equate name to pull the value from- Returns:
- The value of the equate, or -1 if the given name is not formatted.
-