Package ghidra.program.model.data
Class BuiltInDataTypeManager
- java.lang.Object
-
- ghidra.program.database.data.DataTypeManagerDB
-
- ghidra.program.model.data.StandAloneDataTypeManager
-
- ghidra.program.model.data.BuiltInDataTypeManager
-
- All Implemented Interfaces:
DataTypeManager
public class BuiltInDataTypeManager extends StandAloneDataTypeManager
Data type manager for built in types that do not live anywhere except in memory.
-
-
Field Summary
-
Fields inherited from class ghidra.program.model.data.StandAloneDataTypeManager
name
-
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
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description DataType
addDataType(DataType originalDataType, DataTypeConflictHandler handler)
Returns a data type after adding it to this data manager.void
associateDataTypeWithArchive(DataType datatype, SourceArchive archive)
void
close()
Closes this dataType manager.Category
createCategory(CategoryPath path)
void
endTransaction(int transactionID, boolean commit)
Ends the current transactionstatic BuiltInDataTypeManager
getDataTypeManager()
Returns shared instance of built-in data-type manager.ArchiveType
getType()
protected void
populateBuiltInTypes()
Add the built in data types to the default built in folder if they were not found in any other category.boolean
remove(DataType dataType, TaskMonitor monitor)
Remove the given datatype from this managerDataType
replaceDataType(DataType existingDt, DataType replacementDt, boolean updateCategoryPath)
Replace an existing dataType with another.DataType
resolve(DataType dataType, DataTypeConflictHandler handler)
Returns a dataType that is "in" (ie suitable implementation) this Manager, creating a new one if necessary.protected UniversalID
resolveSourceArchiveID(DataType dataType)
void
setName(java.lang.String name)
Sets this data type manager's name.int
startTransaction(java.lang.String description)
Starts a transaction for making changes in this data type manager.-
Methods inherited from class ghidra.program.model.data.StandAloneDataTypeManager
deleteDataTypeIDs, finalize, flushEvents, getDomainFileID, getName, getPath, replaceDataTypeIDs
-
Methods inherited from class ghidra.program.database.data.DataTypeManagerDB
addDataTypeManagerListener, addDataTypeToDelete, addInvalidatedListener, categoryCreated, categoryMoved, categoryRemoved, categoryRenamed, clearAllSettings, clearSetting, clearSettings, contains, containsCategory, dataTypeAdded, dataTypeChanged, dataTypeDeleted, dataTypeMoved, dataTypeNameChanged, dataTypeReplaced, dbError, deleteAddressRange, disassociate, doSourceArchiveUpdates, favoritesChanged, findDataType, findDataTypeForID, findDataTypes, findDataTypes, findEnumValueNames, getAllComposites, getAllDataTypes, getAllDataTypes, getAllStructures, getByteSettingsValue, getCategory, getCategory, getCategoryCount, getDataOrganization, getDataType, getDataType, getDataType, getDataType, getDataType, getDataTypeCount, getDataTypes, getDataTypes, getDataTypesContaining, getFavorites, getID, getLastChangeTimeForMyManager, getLocalSourceArchive, getLongSettingsValue, getNames, getPointer, getPointer, getResolvedID, getRootCategory, getSettings, getSourceArchive, getSourceArchive, getSourceArchives, getStringSettingsValue, getUniqueName, getUniqueName, getUniversalID, getUnusedConflictName, invalidateCache, isChanged, isCreatingDataType, isEmptySetting, isFavorite, isUpdatable, moveAddressRange, removeDataTypeManagerListener, removeInvalidatedListener, removeSourceArchive, replaceSourceArchive, resolveSourceArchive, setByteSettingsValue, setFavorite, setLongSettingsValue, setSettings, setStringSettingsValue, sourceArchiveAdded, sourceArchiveChanged, updateID, updateSourceArchiveName, updateSourceArchiveName
-
-
-
-
Method Detail
-
getDataTypeManager
public static BuiltInDataTypeManager getDataTypeManager()
Returns shared instance of built-in data-type manager.
-
startTransaction
public int startTransaction(java.lang.String description)
Description copied from interface:DataTypeManager
Starts a transaction for making changes in this data type manager.- Specified by:
startTransaction
in interfaceDataTypeManager
- Overrides:
startTransaction
in classStandAloneDataTypeManager
- Parameters:
description
- a short description of the changes to be made.
-
endTransaction
public void endTransaction(int transactionID, boolean commit)
Description copied from interface:DataTypeManager
Ends the current transaction- Specified by:
endTransaction
in interfaceDataTypeManager
- Overrides:
endTransaction
in classStandAloneDataTypeManager
- Parameters:
transactionID
- id of the transaction to endcommit
- if true the changes are commited, otherwise all changes in transaction are revoked.
-
createCategory
public Category createCategory(CategoryPath path)
- Specified by:
createCategory
in interfaceDataTypeManager
- Overrides:
createCategory
in classDataTypeManagerDB
-
close
public void close()
Description copied from interface:DataTypeManager
Closes this dataType manager.- Specified by:
close
in interfaceDataTypeManager
- Overrides:
close
in classStandAloneDataTypeManager
-
populateBuiltInTypes
protected void populateBuiltInTypes()
Add the built in data types to the default built in folder if they were not found in any other category.
-
resolveSourceArchiveID
protected UniversalID resolveSourceArchiveID(DataType dataType)
-
getType
public ArchiveType getType()
- Specified by:
getType
in interfaceDataTypeManager
- Overrides:
getType
in classStandAloneDataTypeManager
-
resolve
public DataType resolve(DataType dataType, DataTypeConflictHandler handler)
Description copied from interface:DataTypeManager
Returns a dataType that is "in" (ie suitable implementation) this Manager, creating a new one if necessary. Also the returned dataType will be in a category in this dataTypeManager that is equivalent to the category of the passed in dataType.- Specified by:
resolve
in interfaceDataTypeManager
- Overrides:
resolve
in classDataTypeManagerDB
- Parameters:
dataType
- the dataType to be resolved.handler
- used to resolve conflicts with existing dataTypes.- Returns:
- an equivalent dataType that "belongs" to this dataTypeManager.
-
addDataType
public DataType addDataType(DataType originalDataType, DataTypeConflictHandler handler)
Description copied from interface:DataTypeManager
Returns a data type after adding it to this data manager. The returned dataType will be in a category in this dataTypeManager that is equivalent to the category of the passed in dataType.- Specified by:
addDataType
in interfaceDataTypeManager
- Overrides:
addDataType
in classDataTypeManagerDB
- Parameters:
originalDataType
- the dataType to be resolved.handler
- used to resolve conflicts with existing dataTypes.- Returns:
- an equivalent dataType that "belongs" to this dataTypeManager.
-
setName
public void setName(java.lang.String name) throws InvalidNameException
Description copied from interface:DataTypeManager
Sets this data type manager's name.- Specified by:
setName
in interfaceDataTypeManager
- Overrides:
setName
in classStandAloneDataTypeManager
- Parameters:
name
- the new name- Throws:
InvalidNameException
-
associateDataTypeWithArchive
public void associateDataTypeWithArchive(DataType datatype, SourceArchive archive)
- Specified by:
associateDataTypeWithArchive
in interfaceDataTypeManager
- Overrides:
associateDataTypeWithArchive
in classDataTypeManagerDB
-
remove
public boolean remove(DataType dataType, TaskMonitor monitor)
Description copied from interface:DataTypeManager
Remove the given datatype from this manager- Specified by:
remove
in interfaceDataTypeManager
- Overrides:
remove
in classDataTypeManagerDB
- Parameters:
dataType
- the dataType to be removed.monitor
- the task monitor
-
replaceDataType
public DataType replaceDataType(DataType existingDt, DataType replacementDt, boolean updateCategoryPath) throws DataTypeDependencyException
Description copied from interface:DataTypeManager
Replace an existing dataType with another. All instances and references will be updated to use the replacement dataType.- Specified by:
replaceDataType
in interfaceDataTypeManager
- Overrides:
replaceDataType
in classDataTypeManagerDB
- Parameters:
existingDt
- the dataType to be replaced.replacementDt
- the dataType to use as the replacement.updateCategoryPath
- if true, the replacementDt will have its categoryPath changed to the exitingDt's path.- Returns:
- the resolved replacement dataType.
- Throws:
DataTypeDependencyException
- if the replacement datatype depends on the existing dataType;
-
-