Package ghidra.program.model.util
Interface PropertyMap
-
- All Known Subinterfaces:
IntPropertyMap
,LongPropertyMap
,ObjectPropertyMap
,SettingsPropertyMap
,StringPropertyMap
,VoidPropertyMap
- All Known Implementing Classes:
DefaultIntPropertyMap
,DefaultLongPropertyMap
,DefaultObjectPropertyMap
,DefaultPropertyMap
,DefaultSettingsPropertyMap
,DefaultStringPropertyMap
,DefaultVoidPropertyMap
,IntPropertyMapDB
,LongPropertyMapDB
,ObjectPropertyMapDB
,PropertyMapDB
,StringPropertyMapDB
,UnsupportedMapDB
,VoidPropertyMapDB
public interface PropertyMap
Interface to define a map containing properties over a set of addresses.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description void
applyValue(PropertyVisitor visitor, Address addr)
Applies a property value at the indicated address without knowing its type (String, int, long, etc.) by using the property visitor.Address
getFirstPropertyAddress()
Get the first Address where a property value exists.Address
getLastPropertyAddress()
Get the last Address where a property value exists.java.lang.String
getName()
Get the name for this property map.Address
getNextPropertyAddress(Address addr)
Get the next address where the property value exists.java.lang.Object
getObject(Address addr)
Returns the property value stored at the specified address or null if no property found.Address
getPreviousPropertyAddress(Address addr)
Get the previous Address where a property value exists.AddressIterator
getPropertyIterator()
Returns an iterator over the addresses that a property value.AddressIterator
getPropertyIterator(Address start, boolean forward)
Returns an iterator over the address having a property value.AddressIterator
getPropertyIterator(Address start, Address end)
Returns an iterator over the indices having a property value.AddressIterator
getPropertyIterator(Address start, Address end, boolean forward)
Returns an iterator over addresses that have a property value.AddressIterator
getPropertyIterator(AddressSetView asv)
Returns an iterator over the addresses that have a property value and are in the given address set.AddressIterator
getPropertyIterator(AddressSetView asv, boolean forward)
Returns an iterator over the addresses that have a property value and are in the given address set.int
getSize()
Get the number of properties in the map.boolean
hasProperty(Address addr)
returns whether there is a property value at addr.boolean
intersects(Address start, Address end)
Given two addresses, indicate whether there is an address in that range (inclusive) having the property.boolean
intersects(AddressSetView set)
Indicate whether there is an address within the set which exists within this map.void
moveRange(Address start, Address end, Address newStart)
Moves the properties defined in the range from the start address thru the end address to now be located beginning at the newStart address.boolean
remove(Address addr)
Remove the property value at the given address.boolean
removeRange(Address start, Address end)
Removes all property values within a given range.
-
-
-
Method Detail
-
getName
java.lang.String getName()
Get the name for this property map.
-
intersects
boolean intersects(Address start, Address end)
Given two addresses, indicate whether there is an address in that range (inclusive) having the property.- Parameters:
start
- the start of the range.end
- the end of the range.- Returns:
- boolean true if at least one address in the range has the property, false otherwise.
-
intersects
boolean intersects(AddressSetView set)
Indicate whether there is an address within the set which exists within this map.- Parameters:
set
- set of addresses- Returns:
- boolean true if at least one address in the set has the property, false otherwise.
-
removeRange
boolean removeRange(Address start, Address end)
Removes all property values within a given range.- Parameters:
start
- begin rangeend
- end range, inclusive- Returns:
- true if any property value was removed; return false otherwise.
-
remove
boolean remove(Address addr)
Remove the property value at the given address.- Parameters:
addr
- the address where the property should be removed- Returns:
- true if the property value was removed, false otherwise.
-
hasProperty
boolean hasProperty(Address addr)
returns whether there is a property value at addr.- Parameters:
addr
- the address in question
-
getObject
java.lang.Object getObject(Address addr)
Returns the property value stored at the specified address or null if no property found.- Parameters:
addr
- property address- Returns:
- property value
-
getNextPropertyAddress
Address getNextPropertyAddress(Address addr)
Get the next address where the property value exists.- Parameters:
addr
- the address from which to begin the search (exclusive).- Throws:
NoSuchIndexException
- thrown if there is no address with a property value after the given address.
-
getPreviousPropertyAddress
Address getPreviousPropertyAddress(Address addr)
Get the previous Address where a property value exists.- Parameters:
addr
- the address from which to begin the search (exclusive).- Throws:
NoSuchIndexException
- when there is no address with a property value before the given address.
-
getFirstPropertyAddress
Address getFirstPropertyAddress()
Get the first Address where a property value exists.
-
getLastPropertyAddress
Address getLastPropertyAddress()
Get the last Address where a property value exists.- Throws:
NoSuchIndexException
- thrown if there is no address having the property value.
-
getSize
int getSize()
Get the number of properties in the map.
-
getPropertyIterator
AddressIterator getPropertyIterator(Address start, Address end)
Returns an iterator over the indices having a property value.- Throws:
TypeMismatchException
- thrown if the property does not have values of typeObject
.
-
getPropertyIterator
AddressIterator getPropertyIterator(Address start, Address end, boolean forward)
Returns an iterator over addresses that have a property value.- Parameters:
forward
- if true will iterate in increasing address order, otherwise it will start at the end and iterate in decreasing address order- Throws:
TypeMismatchException
- thrown if the property does not have values of typeObject
.
-
getPropertyIterator
AddressIterator getPropertyIterator()
Returns an iterator over the addresses that a property value.- Throws:
TypeMismatchException
- thrown if the property does not have values of typeObject
.
-
getPropertyIterator
AddressIterator getPropertyIterator(AddressSetView asv)
Returns an iterator over the addresses that have a property value and are in the given address set.- Parameters:
asv
- the set of addresses to iterate over.
-
getPropertyIterator
AddressIterator getPropertyIterator(AddressSetView asv, boolean forward)
Returns an iterator over the addresses that have a property value and are in the given address set.- Parameters:
forward
- if true will iterate in increasing address order, otherwise it will start at the end and iterate in decreasing address order
-
getPropertyIterator
AddressIterator getPropertyIterator(Address start, boolean forward)
Returns an iterator over the address having a property value.- Parameters:
start
- the starting addressforward
- if true will iterate in increasing address order, otherwise it will start at the end and iterate in decreasing address order- Throws:
TypeMismatchException
- thrown if the property does not have values of typeObject
.
-
applyValue
void applyValue(PropertyVisitor visitor, Address addr)
Applies a property value at the indicated address without knowing its type (String, int, long, etc.) by using the property visitor.- Parameters:
visitor
- the property visitor that lets you apply the property without knowing its specific type ahead of time.addr
- the address where the property is to be applied.
-
moveRange
void moveRange(Address start, Address end, Address newStart)
Moves the properties defined in the range from the start address thru the end address to now be located beginning at the newStart address. The moved properties will be located at the same relative location to the newStart address as they were previously to the start address.- Parameters:
start
- the start of the range to move.end
- the end of the range to move.newStart
- the new start location of the range of properties after the move.
-
-