Package ghidra.program.database.data
Class ProgramDataTypeManager
- java.lang.Object
-
- ghidra.program.database.data.DataTypeManagerDB
-
- ghidra.program.database.data.ProgramDataTypeManager
-
- All Implemented Interfaces:
ManagerDB,DataTypeManager,DomainFileBasedDataTypeManager,FileBasedDataTypeManager,ProgramBasedDataTypeManager
public class ProgramDataTypeManager extends DataTypeManagerDB implements ManagerDB, ProgramBasedDataTypeManager
Class for managing data types in a program
-
-
Field Summary
-
Fields inherited from class ghidra.program.database.data.DataTypeManagerDB
dataOrganization, dbHandle, defaultListener, sourceArchiveAdapter, universalID
-
Fields inherited from interface ghidra.program.model.data.DataTypeManager
BAD_DATATYPE_ID, BUILT_IN_ARCHIVE_KEY, BUILT_IN_ARCHIVE_UNIVERSAL_ID, BUILT_IN_DATA_TYPES_NAME, DEFAULT_DATATYPE_ID, LOCAL_ARCHIVE_KEY, LOCAL_ARCHIVE_UNIVERSAL_ID, NULL_DATATYPE_ID
-
-
Constructor Summary
Constructors Constructor Description ProgramDataTypeManager(DBHandle handle, AddressMap addrMap, int openMode, ErrorHandler errHandler, Lock lock, TaskMonitor monitor)Constructor
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidcategoryCreated(Category newCategory)protected voidcategoryMoved(CategoryPath oldPath, Category category)protected voidcategoryRemoved(Category parent, java.lang.String name, long categoryID)protected voidcategoryRenamed(CategoryPath oldPath, Category category)voidclose()Closes this dataType managerprotected voiddataTypeAdded(DataType newDt, DataType originalDataType)voiddataTypeChanged(DataType dt)Notification when data type is changed.protected voiddataTypeDeleted(long deletedID, DataTypePath deletedDataTypePath)protected voiddataTypeMoved(DataType dt, DataTypePath oldPath, DataTypePath newPath)protected voiddataTypeNameChanged(DataType dt, java.lang.String oldName)protected voiddataTypeReplaced(long existingDtID, DataTypePath existingPath, DataType replacementDt)protected voiddeleteDataTypeIDs(java.util.LinkedList<java.lang.Long> deletedIds, TaskMonitor monitor)voidendTransaction(int transactionID, boolean commit)Ends the current transactionprotected voidfavoritesChanged(DataType dataType, boolean isFavorite)voidflushEvents()Force all pending notification events to be flushedDataOrganizationgetDataOrganization()Get the data organization associated with this data type manager.DomainFilegetDomainFile()java.lang.StringgetDomainFileID()java.lang.StringgetName()Returns this data type manager's namejava.lang.StringgetPath()PointergetPointer(DataType dt)Returns a default sized pointer to the given datatype.ProgramgetProgram()ArchiveTypegetType()Returns this manager's archive typevoidinvalidateCache(boolean all)Clears all data caches.booleanisUpdatable()Returns true if this DataTypeManager can be modified.voidprogramReady(int openMode, int currentRevision, TaskMonitor monitor)Callback from program made to each manager after the program has completed initialization.protected voidreplaceDataTypeIDs(long oldDataTypeID, long newDataTypeID)voidsetName(java.lang.String name)Sets this data type manager's namevoidsetProgram(ProgramDB p)Callback from program used to indicate all manager have been created.protected voidsourceArchiveAdded(UniversalID sourceArchiveID)voidsourceArchiveChanged(UniversalID sourceArchiveID)intstartTransaction(java.lang.String description)Starts a transaction for making changes in this data type manager.-
Methods inherited from class ghidra.program.database.data.DataTypeManagerDB
addDataType, addDataTypeManagerListener, addDataTypeToDelete, addInvalidatedListener, associateDataTypeWithArchive, clearAllSettings, clearSetting, clearSettings, contains, containsCategory, createCategory, dbError, deleteAddressRange, disassociate, doSourceArchiveUpdates, findDataType, findDataTypeForID, findDataTypes, findDataTypes, findEnumValueNames, getAllComposites, getAllDataTypes, getAllDataTypes, getAllStructures, getByteSettingsValue, getCategory, getCategory, getCategoryCount, getDataType, getDataType, getDataType, getDataType, getDataType, getDataTypeCount, getDataTypes, getDataTypes, getDataTypesContaining, getFavorites, getID, getLastChangeTimeForMyManager, getLocalSourceArchive, getLongSettingsValue, getNames, getPointer, getResolvedID, getRootCategory, getSettings, getSourceArchive, getSourceArchive, getSourceArchives, getStringSettingsValue, getUniqueName, getUniqueName, getUniversalID, getUnusedConflictName, invalidateCache, isChanged, isCreatingDataType, isEmptySetting, isFavorite, moveAddressRange, remove, removeDataTypeManagerListener, removeInvalidatedListener, removeSourceArchive, replaceDataType, replaceSourceArchive, resolve, resolveSourceArchive, setByteSettingsValue, setFavorite, setLongSettingsValue, setSettings, setStringSettingsValue, updateID, updateSourceArchiveName, updateSourceArchiveName
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface ghidra.program.model.data.DataTypeManager
addDataType, addDataTypeManagerListener, addInvalidatedListener, associateDataTypeWithArchive, contains, containsCategory, createCategory, disassociate, findDataType, findDataTypeForID, findDataTypes, findDataTypes, findEnumValueNames, getAllComposites, getAllDataTypes, getAllDataTypes, getAllStructures, getCategory, getCategory, getCategoryCount, getDataType, getDataType, getDataType, getDataType, getDataType, getDataTypeCount, getDataTypes, getDataTypesContaining, getFavorites, getID, getLastChangeTimeForMyManager, getLocalSourceArchive, getPointer, getResolvedID, getRootCategory, getSourceArchive, getSourceArchives, getUniqueName, getUniversalID, isFavorite, remove, removeDataTypeManagerListener, removeInvalidatedListener, removeSourceArchive, replaceDataType, resolve, resolveSourceArchive, setFavorite, updateSourceArchiveName, updateSourceArchiveName
-
Methods inherited from interface ghidra.program.database.ManagerDB
deleteAddressRange, moveAddressRange
-
-
-
-
Constructor Detail
-
ProgramDataTypeManager
public ProgramDataTypeManager(DBHandle handle, AddressMap addrMap, int openMode, ErrorHandler errHandler, Lock lock, TaskMonitor monitor) throws CancelledException, VersionException, java.io.IOException
Constructor- Parameters:
handle- open database handleaddrMap- the address mapopenMode- the program open modeerrHandler- the database io error handlerlock- the program synchronization lockmonitor- the progress monitor- Throws:
CancelledException- if the user cancels an upgradeVersionException- if the database does not match the expected version.java.io.IOException- if a database io error occurs.
-
-
Method Detail
-
setProgram
public void setProgram(ProgramDB p)
Description copied from interface:ManagerDBCallback 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:
setProgramin interfaceManagerDB- Parameters:
p- the program is set when all the initializations have been completed.
-
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.
-
programReady
public void programReady(int openMode, 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:
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:
java.io.IOException- if a database io error occurs.CancelledException- if the user cancelled the operation via the task monitor.
-
getName
public java.lang.String getName()
Description copied from interface:DataTypeManagerReturns this data type manager's name- Specified by:
getNamein interfaceDataTypeManager- Returns:
- the name
-
getPointer
public Pointer getPointer(DataType dt)
Description copied from interface:DataTypeManagerReturns a default sized pointer to the given datatype. The pointer size is established dynamically based upon the data organization established by the compiler specification.- Specified by:
getPointerin interfaceDataTypeManager- Overrides:
getPointerin classDataTypeManagerDB- Parameters:
dt- the pointed to data type- Returns:
- the pointer
-
setName
public void setName(java.lang.String name) throws InvalidNameExceptionDescription copied from interface:DataTypeManagerSets this data type manager's name- Specified by:
setNamein interfaceDataTypeManager- Parameters:
name- the new name- Throws:
InvalidNameException- if the given name is invalid (such as when null or empty)
-
sourceArchiveChanged
public void sourceArchiveChanged(UniversalID sourceArchiveID)
- Overrides:
sourceArchiveChangedin classDataTypeManagerDB
-
sourceArchiveAdded
protected void sourceArchiveAdded(UniversalID sourceArchiveID)
- Overrides:
sourceArchiveAddedin classDataTypeManagerDB
-
dataTypeChanged
public void dataTypeChanged(DataType dt)
Description copied from interface:DataTypeManagerNotification when data type is changed.- Specified by:
dataTypeChangedin interfaceDataTypeManager- Overrides:
dataTypeChangedin classDataTypeManagerDB- Parameters:
dt- data type that is changed
-
dataTypeAdded
protected void dataTypeAdded(DataType newDt, DataType originalDataType)
- Overrides:
dataTypeAddedin classDataTypeManagerDB
-
dataTypeReplaced
protected void dataTypeReplaced(long existingDtID, DataTypePath existingPath, DataType replacementDt)- Overrides:
dataTypeReplacedin classDataTypeManagerDB
-
dataTypeDeleted
protected void dataTypeDeleted(long deletedID, DataTypePath deletedDataTypePath)- Overrides:
dataTypeDeletedin classDataTypeManagerDB
-
dataTypeMoved
protected void dataTypeMoved(DataType dt, DataTypePath oldPath, DataTypePath newPath)
- Overrides:
dataTypeMovedin classDataTypeManagerDB
-
dataTypeNameChanged
protected void dataTypeNameChanged(DataType dt, java.lang.String oldName)
- Overrides:
dataTypeNameChangedin classDataTypeManagerDB
-
categoryCreated
protected void categoryCreated(Category newCategory)
- Overrides:
categoryCreatedin classDataTypeManagerDB
-
categoryRenamed
protected void categoryRenamed(CategoryPath oldPath, Category category)
- Overrides:
categoryRenamedin classDataTypeManagerDB
-
categoryRemoved
protected void categoryRemoved(Category parent, java.lang.String name, long categoryID)
- Overrides:
categoryRemovedin classDataTypeManagerDB
-
categoryMoved
protected void categoryMoved(CategoryPath oldPath, Category category)
- Overrides:
categoryMovedin classDataTypeManagerDB
-
favoritesChanged
protected void favoritesChanged(DataType dataType, boolean isFavorite)
- Overrides:
favoritesChangedin classDataTypeManagerDB
-
replaceDataTypeIDs
protected void replaceDataTypeIDs(long oldDataTypeID, long newDataTypeID)- Specified by:
replaceDataTypeIDsin classDataTypeManagerDB
-
deleteDataTypeIDs
protected void deleteDataTypeIDs(java.util.LinkedList<java.lang.Long> deletedIds, TaskMonitor monitor) throws CancelledException- Specified by:
deleteDataTypeIDsin classDataTypeManagerDB- Throws:
CancelledException
-
isUpdatable
public boolean isUpdatable()
Description copied from interface:DataTypeManagerReturns true if this DataTypeManager can be modified.- Specified by:
isUpdatablein interfaceDataTypeManager- Overrides:
isUpdatablein classDataTypeManagerDB- Returns:
- true if this DataTypeMangaer can be modified.
-
startTransaction
public int startTransaction(java.lang.String description)
Description copied from interface:DataTypeManagerStarts a transaction for making changes in this data type manager.- Specified by:
startTransactionin interfaceDataTypeManager- Parameters:
description- a short description of the changes to be made.- Returns:
- the transaction ID
-
flushEvents
public void flushEvents()
Description copied from interface:DataTypeManagerForce all pending notification events to be flushed- Specified by:
flushEventsin interfaceDataTypeManager
-
endTransaction
public void endTransaction(int transactionID, boolean commit)Description copied from interface:DataTypeManagerEnds the current transaction- Specified by:
endTransactionin interfaceDataTypeManager- Parameters:
transactionID- id of the transaction to endcommit- true if changes are committed, false if changes in transaction are revoked
-
close
public void close()
Description copied from interface:DataTypeManagerCloses this dataType manager- Specified by:
closein interfaceDataTypeManager
-
getProgram
public Program getProgram()
- Specified by:
getProgramin interfaceProgramBasedDataTypeManager
-
getDomainFile
public DomainFile getDomainFile()
- Specified by:
getDomainFilein interfaceDomainFileBasedDataTypeManager
-
getDomainFileID
public java.lang.String getDomainFileID()
- Specified by:
getDomainFileIDin classDataTypeManagerDB
-
getPath
public java.lang.String getPath()
- Specified by:
getPathin interfaceFileBasedDataTypeManager- Specified by:
getPathin classDataTypeManagerDB
-
getType
public ArchiveType getType()
Description copied from interface:DataTypeManagerReturns this manager's archive type- Specified by:
getTypein interfaceDataTypeManager- Returns:
- the type
-
getDataOrganization
public DataOrganization getDataOrganization()
Description copied from interface:DataTypeManagerGet the data organization associated with this data type manager. Note that the DataOrganization settings may not be changed dynamically.- Specified by:
getDataOrganizationin interfaceDataTypeManager- Overrides:
getDataOrganizationin classDataTypeManagerDB- Returns:
- data organization (will never be null)
-
-