Class ProgramDataTypeManager
- All Implemented Interfaces:
- ManagerDB,- DataTypeManager,- DomainFileBasedDataTypeManager,- FileBasedDataTypeManager,- ProgramBasedDataTypeManager
- 
Field SummaryFields inherited from class ghidra.program.database.data.DataTypeManagerDBaddrMap, dbHandle, DEFAULT_CALLING_CONVENTION_ID, defaultListener, errHandler, lock, readOnlyMode, sourceArchiveAdapter, tablePrefix, universalID, UNKNOWN_CALLING_CONVENTION_IDFields inherited from interface ghidra.program.model.data.DataTypeManagerBAD_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 SummaryConstructorsConstructorDescriptionProgramDataTypeManager(DBHandle handle, AddressMap addrMap, OpenMode openMode, ErrorHandler errHandler, Lock lock, TaskMonitor monitor) Constructor
- 
Method SummaryModifier and TypeMethodDescriptionbooleanDetermine if settings are supported for BuiltIn datatypes within this datatype manager.protected voidcategoryCreated(Category newCategory) protected voidcategoryMoved(CategoryPath oldPath, Category category) protected voidcategoryRemoved(Category parent, String name, long categoryID) protected voidcategoryRenamed(CategoryPath oldPath, Category category) voidclose()Closes this dataType managerprotected voiddataSettingChanged(Address dataAddr) Provides notification when a data instance setting has changed at a specific address.protected voiddataTypeAdded(DataType newDt, DataType originalDataType) voiddataTypeChanged(DataType dt, boolean isAutoChange) Notification when data type is changed.protected voiddataTypeDeleted(long deletedID, DataTypePath deletedDataTypePath) protected voiddataTypeMoved(DataType dt, DataTypePath oldPath, DataTypePath newPath) protected voiddataTypeNameChanged(DataType dt, String oldName) protected voiddataTypeReplaced(long existingDtID, DataTypePath existingPath, DataType replacementDt) voidNotification when data type settings have changed.protected voiddeleteDataTypesUsed(Set<Long> deletedIds) Allow extensions to perform any neccessary fixups for all datatype removals listed.booleanendTransaction(int transactionID, boolean commit) Ends the current transaction.protected voidfavoritesChanged(DataType dataType, boolean isFavorite) voidForce all pending notification events to be flushedgetName()Returns this data type manager's namegetPath()Get the program instance associated with this datatype managergetType()Returns this manager's archive typevoidinvalidateCache(boolean all) Clears all data caches.booleanReturns true if this DataTypeManager can be modified.voidlanguageChanged(TaskMonitor monitor) Update program-architecture information following a language upgrade/changeopenTransaction(String description) Open new transaction.voidprogramReady(OpenMode openMode, int currentRevision, TaskMonitor monitor) Callback from program made to each manager after the program has completed initialization.protected voidreplaceDataTypesUsed(Map<Long, Long> dataTypeReplacementMap) Allow extensions to perform any neccessary fixups to address all datatype replacements.voidSave the current data organization to facilitate future change detection and upgrades.voidSets this data type manager's namevoidCallback from program used to indicate all manager have been created.protected voidsourceArchiveAdded(UniversalID sourceArchiveID) voidsourceArchiveChanged(UniversalID sourceArchiveID) intstartTransaction(String description) Starts a transaction for making changes in this data type manager.Methods inherited from class ghidra.program.database.data.ProgramBasedDataTypeManagerDBclearAllSettings, clearSetting, deleteAddressRange, getDataSettingsAddress, getInstanceSettingsNames, getLongSettingsValue, getSettings, getStringSettingsValue, initializeOtherAdapters, invalidateCache, isChangeAllowed, isEmptySetting, moveAddressRange, setLongSettingsValue, setSettings, setStringSettingsValueMethods inherited from class ghidra.program.database.data.DataTypeManagerDBaddDataType, addDataTypeManagerListener, addDataTypes, addDataTypeToDelete, addDataTypeToReplace, addInvalidatedListener, allowsDefaultComponentSettings, associateDataTypeWithArchive, compilerSpecChanged, contains, containsCategory, createCategory, dbError, dedupeAllConflicts, dedupeConflicts, disassociate, dispose, doSourceArchiveUpdates, findDataType, findDataTypeForID, findDataTypes, findDataTypes, findEnumValueNames, fixupComposites, getAddressMap, getAllComposites, getAllDataTypes, getAllDataTypes, getAllFunctionDefinitions, getAllStructures, getCallingConvention, getCallingConventionID, getCallingConventionName, getCategory, getCategory, getCategoryCount, getChildIds, getDataMap, getDataOrganization, getDataType, getDataType, getDataType, getDataType, getDataType, getDataTypeCount, getDataTypes, getDataTypes, getDataTypesContaining, getDefaultCallingConvention, getDefinedCallingConventionNames, getFavorites, getID, getKnownCallingConventionNames, getLastChangeTimeForMyManager, getLocalSourceArchive, getPointer, getPointer, getProgramArchitecture, getProgramArchitectureSummary, getProgramArchitectureSummary, getResolvedID, getRootCategory, getSourceArchive, getSourceArchive, getSourceArchives, getUniqueName, getUniversalID, getUnusedConflictName, getUnusedConflictName, getVariableStorageManager, handleDataOrganizationChange, hasDataOrganizationChange, hasParent, isChanged, isCreatingDataType, isFavorite, isTransactionActive, migrateOldFlexArrayComponentsIfRequired, notifyRestored, readDataOrganization, remove, removeDataTypeManagerListener, removeInvalidatedListener, removeParentChildRecord, removeSourceArchive, replaceDataType, replaceSourceArchive, resolve, resolveSourceArchive, setFavorite, setProgramArchitecture, updateID, updateLastChangeTime, updateSourceArchiveName, updateSourceArchiveNameMethods inherited from class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface ghidra.program.model.data.DataTypeManageraddDataType, addDataTypeManagerListener, addDataTypes, addInvalidatedListener, allowsDefaultComponentSettings, associateDataTypeWithArchive, contains, containsCategory, createCategory, disassociate, findDataType, findDataTypeForID, findDataTypes, findDataTypes, findEnumValueNames, getAddressMap, getAllComposites, getAllDataTypes, getAllDataTypes, getAllFunctionDefinitions, getAllStructures, getCallingConvention, getCategory, getCategory, getCategoryCount, getDataOrganization, getDataType, getDataType, getDataType, getDataType, getDataType, getDataTypeCount, getDataTypes, getDataTypesContaining, getDefaultCallingConvention, getDefinedCallingConventionNames, getFavorites, getID, getKnownCallingConventionNames, getLastChangeTimeForMyManager, getLocalSourceArchive, getPointer, getPointer, getProgramArchitecture, getProgramArchitectureSummary, getResolvedID, getRootCategory, getSourceArchive, getSourceArchives, getUniqueName, getUniversalID, isFavorite, remove, removeDataTypeManagerListener, removeInvalidatedListener, removeSourceArchive, replaceDataType, resolve, resolveSourceArchive, setFavorite, updateSourceArchiveName, updateSourceArchiveName, withTransaction, withTransactionMethods inherited from interface ghidra.program.database.ManagerDBdeleteAddressRange, dispose, moveAddressRange
- 
Constructor Details- 
ProgramDataTypeManagerpublic ProgramDataTypeManager(DBHandle handle, AddressMap addrMap, OpenMode openMode, ErrorHandler errHandler, Lock lock, TaskMonitor monitor) throws CancelledException, VersionException, IOException Constructor- Parameters:
- handle- open database handle
- addrMap- the address map
- openMode- the program open mode
- errHandler- the database io error handler
- lock- the program synchronization lock
- monitor- the progress monitor
- Throws:
- CancelledException- if the user cancels an upgrade
- VersionException- if the database does not match the expected version.
- IOException- if a database IO error occurs.
 
 
- 
- 
Method Details- 
saveDataOrganizationSave the current data organization to facilitate future change detection and upgrades. This method must be invoked byProgramDBduring the final stage of program creation (i.e., openMode == CREATE).- Overrides:
- saveDataOrganizationin class- DataTypeManagerDB
- Throws:
- IOException- if failure occured while saving data organization.
 
- 
dataSettingChangedDescription copied from class:ProgramBasedDataTypeManagerDBProvides notification when a data instance setting has changed at a specific address.- Specified by:
- dataSettingChangedin class- ProgramBasedDataTypeManagerDB
- Parameters:
- dataAddr- data address
 
- 
allowsDefaultBuiltInSettingspublic boolean allowsDefaultBuiltInSettings()Description copied from interface:DataTypeManagerDetermine if settings are supported for BuiltIn datatypes within this datatype manager.- Specified by:
- allowsDefaultBuiltInSettingsin interface- DataTypeManager
- Overrides:
- allowsDefaultBuiltInSettingsin class- DataTypeManagerDB
- Returns:
- true if BuiltIn Settings are permitted
 
- 
setProgramDescription 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 interface- ManagerDB
- Parameters:
- p- the program is set when all the initializations have been completed.
 
- 
invalidateCacheDescription copied from interface:ManagerDBClears all data caches.- Specified by:
- invalidateCachein interface- ManagerDB
- 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:
- IOException- if a database io error occurs.
 
- 
programReadypublic void programReady(OpenMode openMode, int currentRevision, TaskMonitor monitor) throws IOException, CancelledException Description 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 interface- ManagerDB
- 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.
 
- 
languageChangedUpdate program-architecture information following a language upgrade/change- Parameters:
- monitor- task monitor
- Throws:
- IOException- if IO error occurs
- CancelledException- if task monitor cancelled
 
- 
getNameDescription copied from interface:DataTypeManagerReturns this data type manager's name- Specified by:
- getNamein interface- DataTypeManager
- Returns:
- the name
 
- 
setNameDescription copied from interface:DataTypeManagerSets this data type manager's name- Specified by:
- setNamein interface- DataTypeManager
- Parameters:
- name- the new name
- Throws:
- InvalidNameException- if the given name is invalid (such as when null or empty)
 
- 
sourceArchiveChanged- Overrides:
- sourceArchiveChangedin class- DataTypeManagerDB
 
- 
sourceArchiveAdded- Overrides:
- sourceArchiveAddedin class- DataTypeManagerDB
 
- 
dataTypeChangedDescription copied from class:DataTypeManagerDBNotification when data type is changed.- Overrides:
- dataTypeChangedin class- DataTypeManagerDB
- Parameters:
- dt- data type that is changed
- isAutoChange- true if change was an automatic change in response to another datatype's change (e.g., size, alignment).
 
- 
dataTypeSettingsChangedDescription copied from class:DataTypeManagerDBNotification when data type settings have changed.- Overrides:
- dataTypeSettingsChangedin class- DataTypeManagerDB
- Parameters:
- dt- data type that is changed
 
- 
dataTypeAdded- Overrides:
- dataTypeAddedin class- DataTypeManagerDB
 
- 
dataTypeReplacedprotected void dataTypeReplaced(long existingDtID, DataTypePath existingPath, DataType replacementDt) - Overrides:
- dataTypeReplacedin class- DataTypeManagerDB
 
- 
dataTypeDeleted- Overrides:
- dataTypeDeletedin class- DataTypeManagerDB
 
- 
dataTypeMoved- Overrides:
- dataTypeMovedin class- DataTypeManagerDB
 
- 
dataTypeNameChanged- Overrides:
- dataTypeNameChangedin class- DataTypeManagerDB
 
- 
categoryCreated- Overrides:
- categoryCreatedin class- DataTypeManagerDB
 
- 
categoryRenamed- Overrides:
- categoryRenamedin class- DataTypeManagerDB
 
- 
categoryRemoved- Overrides:
- categoryRemovedin class- DataTypeManagerDB
 
- 
categoryMoved- Overrides:
- categoryMovedin class- DataTypeManagerDB
 
- 
favoritesChanged- Overrides:
- favoritesChangedin class- DataTypeManagerDB
 
- 
replaceDataTypesUsedDescription copied from class:DataTypeManagerDBAllow extensions to perform any neccessary fixups to address all datatype replacements.- Specified by:
- replaceDataTypesUsedin class- DataTypeManagerDB
- Parameters:
- dataTypeReplacementMap- map of datatype replacements (oldID maps to replacementID).
 
- 
deleteDataTypesUsedDescription copied from class:DataTypeManagerDBAllow extensions to perform any neccessary fixups for all datatype removals listed.- Specified by:
- deleteDataTypesUsedin class- DataTypeManagerDB
- Parameters:
- deletedIds- list of IDs for all datatypes which are getting removed.
 
- 
isUpdatablepublic boolean isUpdatable()Description copied from interface:DataTypeManagerReturns true if this DataTypeManager can be modified.- Specified by:
- isUpdatablein interface- DataTypeManager
- Overrides:
- isUpdatablein class- DataTypeManagerDB
- Returns:
- true if this DataTypeMangaer can be modified.
 
- 
openTransactionDescription copied from interface:DataTypeManagerOpen new transaction. This should generally be done with a try-with-resources block:try (Transaction tx = dtm.openTransaction(description)) { // ... Do something }- Specified by:
- openTransactionin interface- DataTypeManager
- Parameters:
- description- a short description of the changes to be made.
- Returns:
- transaction object
- Throws:
- IllegalStateException- if this- DataTypeManagerhas already been closed.
 
- 
startTransactionDescription copied from interface:DataTypeManagerStarts a transaction for making changes in this data type manager.- Specified by:
- startTransactionin interface- DataTypeManager
- Parameters:
- description- a short description of the changes to be made.
- Returns:
- the transaction ID
 
- 
flushEventspublic void flushEvents()Description copied from interface:DataTypeManagerForce all pending notification events to be flushed- Specified by:
- flushEventsin interface- DataTypeManager
 
- 
endTransactionpublic boolean endTransaction(int transactionID, boolean commit) Description copied from interface:DataTypeManagerEnds the current transaction.NOTE: If multiple transactions are outstanding the full transaction will not be ended until all transactions have been ended. If any of the transactions indicate a false for committhe transaction will ultimately be rolled-back when the final transaction is ended.NOTE: Use of rollback ( commit=falseshould be avoided unless absolutely neccessary since it will incur overhead to revert changes and may rollback multiple concurrent transactions if they exist.NOTE: If this manager is part of a larger DomainObjectits transactions may become entangled with other transactions at a higher level. In such cases, use of theDomainObjecttransaction interface is preferred. The return value from this method cannot be relied on in such cases.- Specified by:
- endTransactionin interface- DataTypeManager
- Parameters:
- transactionID- id of the transaction to end
- commit- true if changes are committed, false if changes in transaction should be rolled back.
- Returns:
- true if this invocation was the final transaction and all changes were comitted.
 
- 
closepublic void close()Description copied from interface:DataTypeManagerCloses this dataType manager- Specified by:
- closein interface- DataTypeManager
- Overrides:
- closein class- DataTypeManagerDB
 
- 
getProgramDescription copied from interface:ProgramBasedDataTypeManagerGet the program instance associated with this datatype manager- Specified by:
- getProgramin interface- ProgramBasedDataTypeManager
- Returns:
- program instance associated with this datatype manager
 
- 
getDomainFile- Specified by:
- getDomainFilein interface- DomainFileBasedDataTypeManager
 
- 
getDomainFileID- Specified by:
- getDomainFileIDin class- DataTypeManagerDB
 
- 
getPath- Specified by:
- getPathin interface- FileBasedDataTypeManager
- Specified by:
- getPathin class- DataTypeManagerDB
 
- 
getTypeDescription copied from interface:DataTypeManagerReturns this manager's archive type- Specified by:
- getTypein interface- DataTypeManager
- Returns:
- the type
 
 
-