GP-1994 refined datatype search and add ability to specify a program's

preferred root-namespace category node
This commit is contained in:
ghidra1 2022-05-06 15:11:39 -04:00
parent 4b600847eb
commit d7fc209657
12 changed files with 734 additions and 179 deletions

View file

@ -60,8 +60,12 @@ public abstract class DomainObjectAdapter implements DomainObject {
private ArrayList<Object> consumers;
protected Map<String, String> metadata = new LinkedHashMap<String, String>();
// A flag indicating whether the domain object has changed. Any methods of this domain object
// which cause its state to change must set this flag to true
// FIXME: (see GP-2003) "changed" flag is improperly manipulated by various methods.
// In general, comitted transactions will trigger all valid cases of setting flag to true,
// there may be a few cases where setting it to false may be appropriate. Without a transation
// it's unclear why it should ever need to get set true.
// A flag indicating whether the domain object has changed.
protected boolean changed = false;
// a flag indicating that this object is temporary

View file

@ -214,9 +214,6 @@ public abstract class DomainObjectAdapterDB extends DomainObjectAdapter
return changeSet;
}
/**
* @see db.util.ErrorHandler#dbError(java.io.IOException)
*/
@Override
public void dbError(IOException e) {
fatalErrorOccurred = true;
@ -238,9 +235,6 @@ public abstract class DomainObjectAdapterDB extends DomainObjectAdapter
return names;
}
/**
* @see ghidra.framework.model.DomainObject#getOptions(java.lang.String)
*/
@Override
public Options getOptions(String propertyListName) {
return new SubOptions(options, propertyListName, propertyListName + Options.DELIMITER);
@ -259,25 +253,16 @@ public abstract class DomainObjectAdapterDB extends DomainObjectAdapter
options.performAlterations(propertyAlterations);
}
/**
* @see ghidra.framework.model.DomainObject#canLock()
*/
@Override
public boolean canLock() {
return transactionMgr.getCurrentTransaction() == null && !closed;
}
/**
* @see ghidra.framework.model.DomainObject#isLocked()
*/
@Override
public boolean isLocked() {
return transactionMgr.isLocked();
}
/**
* @see ghidra.framework.model.DomainObject#lock(String)
*/
@Override
public boolean lock(String reason) {
return transactionMgr.lock(reason);
@ -308,17 +293,11 @@ public abstract class DomainObjectAdapterDB extends DomainObjectAdapter
return transactionMgr.lockForSnapshot(this, hasProgress, title);
}
/**
* @see ghidra.framework.model.DomainObject#forceLock(boolean, String)
*/
@Override
public void forceLock(boolean rollback, String reason) {
transactionMgr.forceLock(rollback, reason);
}
/**
* @see ghidra.framework.model.DomainObject#unlock()
*/
@Override
public void unlock() {
transactionMgr.unlock();
@ -336,9 +315,6 @@ public abstract class DomainObjectAdapterDB extends DomainObjectAdapter
return startTransaction(description, null);
}
/**
* @see ghidra.framework.model.UndoableDomainObject#startTransaction(java.lang.String)
*/
@Override
public int startTransaction(String description, AbortedTransactionListener listener) {
int id = -1;
@ -359,9 +335,6 @@ public abstract class DomainObjectAdapterDB extends DomainObjectAdapter
return id;
}
/**
* @see ghidra.framework.model.UndoableDomainObject#endTransaction(int, boolean)
*/
@Override
public void endTransaction(int transactionID, boolean commit) {
transactionMgr.endTransaction(this, transactionID, commit, true);
@ -395,65 +368,41 @@ public abstract class DomainObjectAdapterDB extends DomainObjectAdapter
return transactionMgr.getUndoStackDepth();
}
/**
* @see ghidra.framework.model.Undoable#canRedo()
*/
@Override
public boolean canRedo() {
return transactionMgr.canRedo();
}
/**
* @see ghidra.framework.model.Undoable#canUndo()
*/
@Override
public boolean canUndo() {
return transactionMgr.canUndo();
}
/**
* @see ghidra.framework.model.Undoable#getRedoName()
*/
@Override
public String getRedoName() {
return transactionMgr.getRedoName();
}
/**
* @see ghidra.framework.model.Undoable#getUndoName()
*/
@Override
public String getUndoName() {
return transactionMgr.getUndoName();
}
/**
* @see ghidra.framework.model.UndoableDomainObject#getCurrentTransaction()
*/
@Override
public Transaction getCurrentTransaction() {
return transactionMgr.getCurrentTransaction();
}
/**
* @see ghidra.framework.model.Undoable#redo()
*/
@Override
public void redo() throws IOException {
transactionMgr.redo();
}
/**
* @see ghidra.framework.model.Undoable#undo()
*/
@Override
public void undo() throws IOException {
transactionMgr.undo();
}
/**
* @see ghidra.framework.model.DomainObject#isChanged()
*/
@Override
public boolean isChanged() {
if (dbh == null) {
@ -484,9 +433,6 @@ public abstract class DomainObjectAdapterDB extends DomainObjectAdapter
return true;
}
/**
* @see ghidra.framework.model.Undoable#clearUndo()
*/
@Override
public void clearUndo() {
clearUndo(true);
@ -500,9 +446,6 @@ public abstract class DomainObjectAdapterDB extends DomainObjectAdapter
options.clearCache();
}
/**
* @see ghidra.framework.model.DomainObject#canSave()
*/
@Override
public synchronized boolean canSave() {
DomainFile df = getDomainFile();
@ -512,9 +455,6 @@ public abstract class DomainObjectAdapterDB extends DomainObjectAdapter
return dbh.canUpdate();
}
/**
* @see ghidra.framework.model.DomainObject#save(java.lang.String, ghidra.util.task.TaskMonitor)
*/
@Override
public void save(String comment, TaskMonitor monitor) throws IOException, CancelledException {
if (!canSave()) {
@ -554,9 +494,6 @@ public abstract class DomainObjectAdapterDB extends DomainObjectAdapter
}
}
/**
* @see ghidra.framework.model.DomainObject#saveToPackedFile(java.io.File, ghidra.util.task.TaskMonitor)
*/
@Override
public void saveToPackedFile(File outputFile, TaskMonitor monitor)
throws IOException, CancelledException {
@ -620,17 +557,11 @@ public abstract class DomainObjectAdapterDB extends DomainObjectAdapter
}
}
/**
* @see ghidra.framework.model.DomainObject#isClosed()
*/
@Override
public boolean isClosed() {
return closed;
}
/**
* @see ghidra.framework.model.UndoableDomainObject#hasTerminatedTransaction()
*/
@Override
public boolean hasTerminatedTransaction() {
return transactionMgr.hasTerminatedTransaction();