Package ghidra.program.database.module
Class TreeManager
- java.lang.Object
-
- ghidra.program.database.module.TreeManager
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.StringDEFAULT_TREE_NAMEThe name of the default tree that is created when a program is created.
-
Constructor Summary
Constructors Constructor Description TreeManager(DBHandle handle, ErrorHandler errHandler, AddressMap addrMap, int openMode, Lock lock, TaskMonitor monitor)Construct a new TreeManager.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddMemoryBlock(java.lang.String name, AddressRange range)Add a memory block with the given range.ProgramModulecreateRootModule(java.lang.String treeName)Create a new tree with given name.voiddeleteAddressRange(Address startAddr, Address endAddr, TaskMonitor monitor)Remove a memory block with the given rangeProgramModulegetDefaultRootModule()Returns the root module for the default program tree.ProgramFragmentgetFragment(java.lang.String treeName, Address addr)Get the fragment that contains the given address within the tree identified by the treeName.ProgramFragmentgetFragment(java.lang.String treeName, java.lang.String name)Get the fragment with the given name that is in the tree identified by the treeName.ProgramModulegetModule(java.lang.String treeName, java.lang.String name)Get the module with the given name that is in the tree identified by the treeName.ProgramModulegetRootModule(long treeID)Get the root module for the tree that has the given ID.ProgramModulegetRootModule(java.lang.String treeName)Get the root module of the tree with the given name.java.lang.String[]getTreeNames()Get the names of all the trees in the program.voidimageBaseChanged(boolean commit)voidinvalidateCache(boolean all)Clears all data caches.voidmoveAddressRange(Address fromAddr, Address toAddr, long length, TaskMonitor monitor)Move a memory block to new place.voidprogramReady(int openMode1, int currentRevision, TaskMonitor monitor)Callback from program made to each manager after the program has completed initialization.booleanremoveTree(java.lang.String treeName)Remove the tree with the given name.voidrenameTree(java.lang.String oldName, java.lang.String newName)Rename the tree to the new name.voidsetProgram(ProgramDB program)Set the program.voidsetProgramName(java.lang.String oldName, java.lang.String newName)
-
-
-
Field Detail
-
DEFAULT_TREE_NAME
public static final java.lang.String DEFAULT_TREE_NAME
The name of the default tree that is created when a program is created.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
TreeManager
public TreeManager(DBHandle handle, ErrorHandler errHandler, AddressMap addrMap, int openMode, Lock lock, TaskMonitor monitor) throws java.io.IOException, VersionException, CancelledException
Construct a new TreeManager.- Parameters:
handle- database handleerrHandler- error handleraddrMap- map to convert addresses to longs and longs to addressesopenMode- the open mode for the program.lock- the program synchronization lockmonitor- Task monitor for upgrading- Throws:
java.io.IOException- if a database io error occurs.VersionException- if the database version is different from the expected versionCancelledException
-
-
Method Detail
-
setProgram
public void setProgram(ProgramDB program)
Set the program.- Specified by:
setProgramin interfaceManagerDB- Parameters:
program- the program is set when all the initializations have been completed.
-
programReady
public void programReady(int openMode1, int currentRevision, TaskMonitor monitor) throws java.io.IOException, CancelledExceptionDescription copied from interface:ManagerDBCallback 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:
programReadyin interfaceManagerDB- Parameters:
openMode1- 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:
java.io.IOException- if a database io error occurs.CancelledException- if the user cancelled the operation via the task monitor.- See Also:
ManagerDB.programReady(int, int, ghidra.util.task.TaskMonitor)
-
imageBaseChanged
public void imageBaseChanged(boolean commit)
-
createRootModule
public ProgramModule createRootModule(java.lang.String treeName) throws DuplicateNameException
Create a new tree with given name.- Parameters:
treeName- name of the tree (not the root module)- Returns:
- root module for the new tree
- Throws:
DuplicateNameException- if there is already tree named treeName
-
getRootModule
public ProgramModule getRootModule(java.lang.String treeName)
Get the root module of the tree with the given name.- Returns:
- root module, or null if there is no tree with the given name
-
getDefaultRootModule
public ProgramModule getDefaultRootModule()
Returns the root module for the default program tree. The default tree is the oldest tree.- Returns:
- the root module for the default program tree. The default tree is the oldest tree.
-
getTreeNames
public java.lang.String[] getTreeNames()
Get the names of all the trees in the program.- Returns:
- sorted array of tree names
-
renameTree
public void renameTree(java.lang.String oldName, java.lang.String newName) throws DuplicateNameExceptionRename the tree to the new name. This method has no effect on the name of the root module.- Parameters:
oldName- old name of root modulenewName- new name for root module- Throws:
DuplicateNameException- if newName exists as the name for another root
-
removeTree
public boolean removeTree(java.lang.String treeName)
Remove the tree with the given name.- Returns:
- true if the tree was removed
-
getModule
public ProgramModule getModule(java.lang.String treeName, java.lang.String name)
Get the module with the given name that is in the tree identified by the treeName.- Parameters:
treeName- name of the treename- module name to look for- Returns:
- null if there is no module with the given name in the tree
-
getFragment
public ProgramFragment getFragment(java.lang.String treeName, java.lang.String name)
Get the fragment with the given name that is in the tree identified by the treeName.- Parameters:
treeName- name of the treename- name of fragment to look for- Returns:
- null if there is no fragment with the given name in the tree
-
getFragment
public ProgramFragment getFragment(java.lang.String treeName, Address addr)
Get the fragment that contains the given address within the tree identified by the treeName.- Parameters:
treeName- name of the treeaddr- address contained within some fragment- Returns:
- fragment containing addr, or null if addr does not exist in memory
-
addMemoryBlock
public void addMemoryBlock(java.lang.String name, AddressRange range)Add a memory block with the given range.
-
deleteAddressRange
public void deleteAddressRange(Address startAddr, Address endAddr, TaskMonitor monitor) throws CancelledException
Remove a memory block with the given range- Specified by:
deleteAddressRangein interfaceManagerDB- Parameters:
startAddr- the first address in the range.endAddr- the last address in the range.monitor- the task monitor to use in any upgrade operations.- Throws:
CancelledException
-
moveAddressRange
public void moveAddressRange(Address fromAddr, Address toAddr, long length, TaskMonitor monitor) throws AddressOverflowException, CancelledException
Move a memory block to new place.- Specified by:
moveAddressRangein interfaceManagerDB- Parameters:
fromRange- old placetoRange- new place- Throws:
AddressOverflowException- if the length is such that a address wrap occursCancelledException- if the user cancelled the operation via the task monitor.
-
invalidateCache
public void invalidateCache(boolean all) throws java.io.IOExceptionDescription copied from interface:ManagerDBClears all data caches.- Specified by:
invalidateCachein 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.- Throws:
java.io.IOException- if a database io error occurs.
-
setProgramName
public void setProgramName(java.lang.String oldName, java.lang.String newName)
-
getRootModule
public ProgramModule getRootModule(long treeID)
Get the root module for the tree that has the given ID.- Parameters:
ID- of the tree- Returns:
- root module
-
-