Merge remote-tracking branch 'origin/GP-2-dragonmacher-spelling-fixes'

This commit is contained in:
Ryan Kurtz 2021-10-27 13:38:40 -04:00
commit 2ef4f26120
16 changed files with 312 additions and 301 deletions

View file

@ -751,7 +751,7 @@ public class DataTypeMergeManager implements MergeResolver {
/** /**
* Set category path. If name conflict occurs within new category * Set category path. If name conflict occurs within new category
* the specified dt will remain within its current category * the specified dt will remain within its current category
* @param dt datatype whoose category is to changed * @param dt datatype whose category is to changed
* @param newPath new category path * @param newPath new category path
*/ */
private void setCategoryPath(DataType dt, CategoryPath newPath) { private void setCategoryPath(DataType dt, CategoryPath newPath) {
@ -2222,8 +2222,9 @@ public class DataTypeMergeManager implements MergeResolver {
UniversalID resultDtUniversalID = resultDt.getUniversalID(); UniversalID resultDtUniversalID = resultDt.getUniversalID();
UniversalID myDtUniversalID = myDt.getUniversalID(); UniversalID myDtUniversalID = myDt.getUniversalID();
// UniversalID can be null if data type is BuiltIn. // UniversalID can be null if data type is BuiltIn.
if (!resultSourceArchive.getSourceArchiveID().equals( if (!resultSourceArchive.getSourceArchiveID()
mySourceArchive.getSourceArchiveID()) || .equals(
mySourceArchive.getSourceArchiveID()) ||
!Objects.equals(resultDtUniversalID, myDtUniversalID)) { !Objects.equals(resultDtUniversalID, myDtUniversalID)) {
return false; return false;
} }
@ -2237,7 +2238,7 @@ public class DataTypeMergeManager implements MergeResolver {
private void cleanUpDataTypes() { private void cleanUpDataTypes() {
// clean up data types // clean up data types
List<Long> keys = new ArrayList<Long>(cleanupPlaceHolderList.keySet()); List<Long> keys = new ArrayList<>(cleanupPlaceHolderList.keySet());
for (long key : keys) { for (long key : keys) {
CleanUpInfo cleanUpInfo = cleanupPlaceHolderList.get(key); CleanUpInfo cleanUpInfo = cleanupPlaceHolderList.get(key);
cleanUpInfo.cleanUp(); cleanUpInfo.cleanUp();
@ -2649,11 +2650,6 @@ public class DataTypeMergeManager implements MergeResolver {
} }
} }
/**
* @param compID
* @param dataTypeManager
* @return
*/
private DataType resolve(long id, DataTypeManager dtm, private DataType resolve(long id, DataTypeManager dtm,
Map<Long, DataType> resolvedDataTypes) { Map<Long, DataType> resolvedDataTypes) {
DataType dt = getResolvedComponent(id, resolvedDataTypes); DataType dt = getResolvedComponent(id, resolvedDataTypes);
@ -2945,7 +2941,7 @@ public class DataTypeMergeManager implements MergeResolver {
/** /**
* Processes my data types that were added and determines whether each is actually a * Processes my data types that were added and determines whether each is actually a
* conflict, an added data type, or a changed data type relative to the Latest check in. * conflict, an added data type, or a changed data type relative to the Latest check in.
* @param myDtAdds * @param myDtAdds the data type IDs
*/ */
private void processAddIDs(long[] myDtAdds) { private void processAddIDs(long[] myDtAdds) {
myDtAddedList = new ArrayList<>(); myDtAddedList = new ArrayList<>();

View file

@ -28,43 +28,43 @@ public class DatabaseUtils {
/** /**
* Reassign the long key assigned to a contiguous group of records within a table. * Reassign the long key assigned to a contiguous group of records within a table.
* A shift in the key value is computed as the difference of oldStart and newStart. * A shift in the key value is computed as the difference of oldStart and newStart.
* Existing records whoose keys lie within the new range will be removed prior to * Existing records whose keys lie within the new range will be removed prior to
* moving the target set of records. * moving the target set of records.
* @param table table within which records should be moved. * @param table table within which records should be moved.
* @param oldStart old key value for start of range * @param oldStart old key value for start of range
* @param newStart new key value for start of range * @param newStart new key value for start of range
* @param size determines the range of keys to be moved (oldStart to oldStart+size-1, inclusive) * @param size determines the range of keys to be moved (oldStart to oldStart+size-1, inclusive)
* @throws IOException * @throws IOException if there is an error moving the records
*/ */
public static void moveRecords(Table table, long oldStart, long newStart, long size) throws IOException{ public static void moveRecords(Table table, long oldStart, long newStart, long size)
throws IOException {
if (oldStart == newStart) { if (oldStart == newStart) {
return; return;
} }
if (size <= 0) { if (size <= 0) {
throw new IllegalArgumentException("size must be > 0"); throw new IllegalArgumentException("size must be > 0");
} }
if ((oldStart + size -1 < 0) || (newStart+size-1 <0)){ if ((oldStart + size - 1 < 0) || (newStart + size - 1 < 0)) {
throw new IllegalArgumentException("Illegal range: end range overflow"); throw new IllegalArgumentException("Illegal range: end range overflow");
} }
DBHandle tmp = new DBHandle(); DBHandle tmp = new DBHandle();
Table tmpTable = tmp.createTable("tmp", table.getSchema()); Table tmpTable = tmp.createTable("tmp", table.getSchema());
long txID = tmp.startTransaction(); long txID = tmp.startTransaction();
long keyDiff = newStart - oldStart; long keyDiff = newStart - oldStart;
RecordIterator it = table.iterator(oldStart, oldStart+size-1, oldStart); RecordIterator it = table.iterator(oldStart, oldStart + size - 1, oldStart);
while(it.hasNext()) { while (it.hasNext()) {
DBRecord rec = it.next(); DBRecord rec = it.next();
rec.setKey(rec.getKey()+keyDiff); rec.setKey(rec.getKey() + keyDiff);
tmpTable.putRecord(rec); tmpTable.putRecord(rec);
} }
table.deleteRecords(oldStart, oldStart+size-1); table.deleteRecords(oldStart, oldStart + size - 1);
table.deleteRecords(newStart, newStart+size-1); table.deleteRecords(newStart, newStart + size - 1);
it = tmpTable.iterator(newStart, newStart+size-1, newStart); it = tmpTable.iterator(newStart, newStart + size - 1, newStart);
while(it.hasNext()) { while (it.hasNext()) {
DBRecord rec = it.next(); DBRecord rec = it.next();
table.putRecord(rec); table.putRecord(rec);
} }

View file

@ -20,7 +20,7 @@ import java.util.ArrayList;
import java.util.NoSuchElementException; import java.util.NoSuchElementException;
/** /**
* <code>FieldIndexTable</code> provides a simplified index table whoose key is * <code>FieldIndexTable</code> provides a simplified index table whose key is
* a fixed or variable length {@link IndexField} which consists of a concatenation of * a fixed or variable length {@link IndexField} which consists of a concatenation of
* the index field value and associated primary table key. * the index field value and associated primary table key.
*/ */
@ -40,8 +40,10 @@ public class FieldIndexTable extends IndexTable {
* @throws IOException thrown if IO error occurs * @throws IOException thrown if IO error occurs
*/ */
FieldIndexTable(Table primaryTable, int colIndex) throws IOException { FieldIndexTable(Table primaryTable, int colIndex) throws IOException {
this(primaryTable, primaryTable.getDBHandle().getMasterTable().createTableRecord( this(primaryTable, primaryTable.getDBHandle()
primaryTable.getName(), getIndexTableSchema(primaryTable, colIndex), colIndex)); .getMasterTable()
.createTableRecord(
primaryTable.getName(), getIndexTableSchema(primaryTable, colIndex), colIndex));
} }
/** /**

View file

@ -448,7 +448,7 @@ abstract class LongKeyRecordNode extends LongKeyNode implements RecordNode {
abstract DBRecord getRecord(Schema schema, int index) throws IOException; abstract DBRecord getRecord(Schema schema, int index) throws IOException;
/** /**
* Get the first record whoose key is less than the specified key. * Get the first record whose key is less than the specified key.
* @param key record key * @param key record key
* @param schema record data schema * @param schema record data schema
* @return Record requested or null if record not found. * @return Record requested or null if record not found.
@ -470,7 +470,7 @@ abstract class LongKeyRecordNode extends LongKeyNode implements RecordNode {
} }
/** /**
* Get the first record whoose key is greater than the specified key. * Get the first record whose key is greater than the specified key.
* @param key record key * @param key record key
* @param schema record data schema * @param schema record data schema
* @return Record requested or null if record not found. * @return Record requested or null if record not found.
@ -492,7 +492,7 @@ abstract class LongKeyRecordNode extends LongKeyNode implements RecordNode {
} }
/** /**
* Get the first record whoose key is less than or equal to the specified * Get the first record whose key is less than or equal to the specified
* key. * key.
* @param key record key * @param key record key
* @param schema record data schema * @param schema record data schema
@ -512,7 +512,7 @@ abstract class LongKeyRecordNode extends LongKeyNode implements RecordNode {
} }
/** /**
* Get the first record whoose key is greater than or equal to the specified * Get the first record whose key is greater than or equal to the specified
* key. * key.
* @param key record key * @param key record key
* @param schema record data schema * @param schema record data schema

View file

@ -1,6 +1,5 @@
/* ### /* ###
* IP: GHIDRA * IP: GHIDRA
* REVIEWED: YES
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -16,14 +15,14 @@
*/ */
package db.buffers; package db.buffers;
import ghidra.util.datastruct.IntIntHashtable;
import ghidra.util.exception.AssertException;
import ghidra.util.exception.NoValueException;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.*; import java.util.*;
import ghidra.util.datastruct.IntIntHashtable;
import ghidra.util.exception.AssertException;
import ghidra.util.exception.NoValueException;
/** /**
* <code>VersionFile</code> records buffer changes and parameters necessary to reconstruct an * <code>VersionFile</code> records buffer changes and parameters necessary to reconstruct an
* older version of a LocalBufferFile. * older version of a LocalBufferFile.
@ -44,7 +43,8 @@ class RecoveryFile {
private static final String TIMESTAMP_HI_PARM = RECOVERY_PARM_PREFIX + "TimestampHi"; private static final String TIMESTAMP_HI_PARM = RECOVERY_PARM_PREFIX + "TimestampHi";
private static final String TIMESTAMP_LOW_PARM = RECOVERY_PARM_PREFIX + "TimestampLow"; private static final String TIMESTAMP_LOW_PARM = RECOVERY_PARM_PREFIX + "TimestampLow";
private static final String MAP_BUFFER_INDEX_PARM = RECOVERY_PARM_PREFIX + "MapIndex"; private static final String MAP_BUFFER_INDEX_PARM = RECOVERY_PARM_PREFIX + "MapIndex";
private static final String FREE_LIST_BUFFER_INDEX_PARM = RECOVERY_PARM_PREFIX + "FreeListIndex"; private static final String FREE_LIST_BUFFER_INDEX_PARM =
RECOVERY_PARM_PREFIX + "FreeListIndex";
private static final String FREE_LIST_SIZE_PARM = RECOVERY_PARM_PREFIX + "FreeListSize"; private static final String FREE_LIST_SIZE_PARM = RECOVERY_PARM_PREFIX + "FreeListSize";
private static final String INDEX_COUNT_PARM = RECOVERY_PARM_PREFIX + "BufferCount"; private static final String INDEX_COUNT_PARM = RECOVERY_PARM_PREFIX + "BufferCount";
@ -77,7 +77,8 @@ class RecoveryFile {
* Construct a new recovery file for update/output. * Construct a new recovery file for update/output.
* @param srcBf the original source buffer file to which this file applies. * @param srcBf the original source buffer file to which this file applies.
* @param rfile version buffer file to be updated/created * @param rfile version buffer file to be updated/created
* @throws IOException if vfile already exists or an IO error occurs * @param create true to create the file
* @throws IOException if the file already exists or an IO error occurs
*/ */
RecoveryFile(LocalBufferFile srcBf, File rfile, boolean create) throws IOException { RecoveryFile(LocalBufferFile srcBf, File rfile, boolean create) throws IOException {
@ -94,10 +95,10 @@ class RecoveryFile {
// Mark as invalid // Mark as invalid
recoveryFile.setParameter(IS_VALID_PARM, INVALID); recoveryFile.setParameter(IS_VALID_PARM, INVALID);
// Save original and source file ID as user paramater values // Save original and source file ID as user parameter values
srcFileId = srcBf.getFileId(); srcFileId = srcBf.getFileId();
recoveryFile.setParameter(SRC_FILE_ID_HI_PARM, (int)(srcFileId >>> 32)); recoveryFile.setParameter(SRC_FILE_ID_HI_PARM, (int) (srcFileId >>> 32));
recoveryFile.setParameter(SRC_FILE_ID_LOW_PARM, (int)(srcFileId & 0xffffffffL)); recoveryFile.setParameter(SRC_FILE_ID_LOW_PARM, (int) (srcFileId & 0xffffffffL));
vfIndexProvider = new IndexProvider(); vfIndexProvider = new IndexProvider();
@ -117,7 +118,8 @@ class RecoveryFile {
throw new IOException("Recovery file not associated with source file"); throw new IOException("Recovery file not associated with source file");
} }
vfIndexProvider = new IndexProvider(recoveryFile.getIndexCount(), recoveryFile.getFreeIndexes()); vfIndexProvider =
new IndexProvider(recoveryFile.getIndexCount(), recoveryFile.getFreeIndexes());
} }
} }
@ -126,14 +128,14 @@ class RecoveryFile {
* Construct a read-only recovery file * Construct a read-only recovery file
* @param srcBf the original source buffer file to which this file applies. * @param srcBf the original source buffer file to which this file applies.
* @param rfile version buffer file to be updated/created * @param rfile version buffer file to be updated/created
* @throws IOException * @throws IOException if the file already exists or an IO error occurs
* @throws IOException if vfile already exists or an IO error occurs
*/ */
RecoveryFile(LocalBufferFile srcBf, File rfile) throws IOException { RecoveryFile(LocalBufferFile srcBf, File rfile) throws IOException {
recoveryFile = new LocalBufferFile(rfile, true); recoveryFile = new LocalBufferFile(rfile, true);
readOnly = true; readOnly = true;
parseFile(); parseFile();
valid = (recoveryFile.getParameter(IS_VALID_PARM) == VALID && srcFileId == srcBf.getFileId()); valid =
(recoveryFile.getParameter(IS_VALID_PARM) == VALID && srcFileId == srcBf.getFileId());
} }
private void setModified() { private void setModified() {
@ -156,13 +158,11 @@ class RecoveryFile {
return timestamp; return timestamp;
} }
/**
* Close the version file.
*/
void close() throws IOException { void close() throws IOException {
if (recoveryFile == null) if (recoveryFile == null) {
return; return;
}
if (!readOnly && modified && !recoveryFile.isReadOnly()) { if (!readOnly && modified && !recoveryFile.isReadOnly()) {
saveBufferMap(); saveBufferMap();
@ -171,8 +171,8 @@ class RecoveryFile {
recoveryFile.setFreeIndexes(vfIndexProvider.getFreeIndexes()); recoveryFile.setFreeIndexes(vfIndexProvider.getFreeIndexes());
long t = (new Date()).getTime(); long t = (new Date()).getTime();
recoveryFile.setParameter(TIMESTAMP_HI_PARM, (int)(t >>> 32)); recoveryFile.setParameter(TIMESTAMP_HI_PARM, (int) (t >>> 32));
recoveryFile.setParameter(TIMESTAMP_LOW_PARM, (int)(t & 0xffffffffL)); recoveryFile.setParameter(TIMESTAMP_LOW_PARM, (int) (t & 0xffffffffL));
recoveryFile.setParameter(IS_VALID_PARM, VALID); // mark as valid recoveryFile.setParameter(IS_VALID_PARM, VALID); // mark as valid
} }
@ -188,14 +188,15 @@ class RecoveryFile {
} }
try { try {
timestamp = ((long)recoveryFile.getParameter(TIMESTAMP_HI_PARM) << 32) | timestamp = ((long) recoveryFile.getParameter(TIMESTAMP_HI_PARM) << 32) |
(recoveryFile.getParameter(TIMESTAMP_LOW_PARM) & 0xffffffffL); (recoveryFile.getParameter(TIMESTAMP_LOW_PARM) & 0xffffffffL);
} catch (NoSuchElementException e) { }
catch (NoSuchElementException e) {
// Not as good - better than nothing // Not as good - better than nothing
timestamp = recoveryFile.getFile().lastModified(); timestamp = recoveryFile.getFile().lastModified();
} }
srcFileId = ((long)recoveryFile.getParameter(SRC_FILE_ID_HI_PARM) << 32) | srcFileId = ((long) recoveryFile.getParameter(SRC_FILE_ID_HI_PARM) << 32) |
(recoveryFile.getParameter(SRC_FILE_ID_LOW_PARM) & 0xffffffffL); (recoveryFile.getParameter(SRC_FILE_ID_LOW_PARM) & 0xffffffffL);
indexCnt = recoveryFile.getParameter(INDEX_COUNT_PARM); indexCnt = recoveryFile.getParameter(INDEX_COUNT_PARM);
@ -204,7 +205,8 @@ class RecoveryFile {
readFreeIndexList(); readFreeIndexList();
} catch (NoSuchElementException e) { }
catch (NoSuchElementException e) {
throw new IOException("Corrupt recovery file"); throw new IOException("Corrupt recovery file");
} }
@ -264,7 +266,8 @@ class RecoveryFile {
try { try {
offset = buf.putInt(offset, realIndexes[i]); offset = buf.putInt(offset, realIndexes[i]);
offset = buf.putInt(offset, bufferIndexMap.get(realIndexes[i])); offset = buf.putInt(offset, bufferIndexMap.get(realIndexes[i]));
} catch (NoValueException e) { }
catch (NoValueException e) {
throw new AssertException(); throw new AssertException();
} }
} }
@ -414,18 +417,19 @@ class RecoveryFile {
/** /**
* Set the current index count for the file * Set the current index count for the file
* @param newIndexCnt * @param newIndexCount the count
*/ */
void setIndexCount(int newIndexCnt) { void setIndexCount(int newIndexCount) {
setModified(); setModified();
for (int index = indexCnt; index < newIndexCnt; index++) { for (int index = indexCnt; index < newIndexCount; index++) {
removeBuffer(index); removeBuffer(index);
} }
indexCnt = newIndexCnt; indexCnt = newIndexCount;
} }
/** /**
* Returns the index count for the file * Returns the index count for the file
* @return the count
*/ */
int getIndexCount() { int getIndexCount() {
return indexCnt; return indexCnt;
@ -433,20 +437,20 @@ class RecoveryFile {
/** /**
* Set the free index list * Set the free index list
* @param freeIndexes * @param freeIndexes the indexes
*/ */
void setFreeIndexList(int[] freeIndexes) { void setFreeIndexList(int[] freeIndexes) {
setModified(); setModified();
this.freeIndexes = freeIndexes.clone(); this.freeIndexes = freeIndexes.clone();
Arrays.sort(this.freeIndexes); Arrays.sort(this.freeIndexes);
for (int i = 0; i < freeIndexes.length; i++) { for (int index : freeIndexes) {
removeBuffer(freeIndexes[i]); removeBuffer(index);
} }
} }
/** /**
* Returns the list of free indexes associated with the original * Returns the list of free indexes associated with the original buffer file.
* buffer file. * @return the indexes
*/ */
int[] getFreeIndexList() { int[] getFreeIndexList() {
return freeIndexes; return freeIndexes;
@ -455,7 +459,6 @@ class RecoveryFile {
/** /**
* Store buffer which has been modified in the target. * Store buffer which has been modified in the target.
* @param buf modified buffer * @param buf modified buffer
* @param id buffer ID
* @throws IOException if an IO error occurs * @throws IOException if an IO error occurs
*/ */
void putBuffer(DataBuffer buf) throws IOException { void putBuffer(DataBuffer buf) throws IOException {
@ -470,7 +473,8 @@ class RecoveryFile {
int id = buf.getId(); int id = buf.getId();
try { try {
vfIndex = bufferIndexMap.get(id); vfIndex = bufferIndexMap.get(id);
} catch (NoValueException e) { }
catch (NoValueException e) {
vfIndex = vfIndexProvider.allocateIndex(); vfIndex = vfIndexProvider.allocateIndex();
bufferIndexMap.put(id, vfIndex); bufferIndexMap.put(id, vfIndex);
} }
@ -480,7 +484,7 @@ class RecoveryFile {
/** /**
* Remove a buffer previously stored to the snapshot * Remove a buffer previously stored to the snapshot
* by removing it from the map. It is OK to invoke * by removing it from the map. It is OK to invoke
* this method for an index whoose buffer was never * this method for an index whose buffer was never
* put into this file. * put into this file.
* @param id buffer ID * @param id buffer ID
*/ */
@ -489,7 +493,9 @@ class RecoveryFile {
try { try {
int vfIndex = bufferIndexMap.remove(id); int vfIndex = bufferIndexMap.remove(id);
vfIndexProvider.freeIndex(vfIndex); vfIndexProvider.freeIndex(vfIndex);
} catch (NoValueException e) { }
catch (NoValueException e) {
// ignore?
} }
} }
@ -508,7 +514,8 @@ class RecoveryFile {
int vfIndex; int vfIndex;
try { try {
vfIndex = bufferIndexMap.get(id); vfIndex = bufferIndexMap.get(id);
} catch (NoValueException e) { }
catch (NoValueException e) {
return null; return null;
} }
recoveryFile.get(buf, vfIndex); recoveryFile.get(buf, vfIndex);
@ -518,6 +525,7 @@ class RecoveryFile {
/** /**
* Returns list of buffer indexes stored within this file. * Returns list of buffer indexes stored within this file.
* These indexes reflect those buffers which have been modified and stored. * These indexes reflect those buffers which have been modified and stored.
* @return the indexes
*/ */
int[] getBufferIndexes() { int[] getBufferIndexes() {
return bufferIndexMap.getKeys(); return bufferIndexMap.getKeys();
@ -525,24 +533,26 @@ class RecoveryFile {
/** /**
* Returns file ID for original source buffer file which may be produced with this version file. * Returns file ID for original source buffer file which may be produced with this version file.
* @return the id
*/ */
long getSourceFileID() { long getSourceFileID() {
return srcFileId; return srcFileId;
} }
/** /**
* Returns a list of parameters defined within the original beffer file. * Returns a list of parameters defined within the original buffer file.
* @throws IOException * @return the names
* @throws IOException if the recovery file is null
*/ */
String[] getUserParameterNames() throws IOException { String[] getUserParameterNames() throws IOException {
if (recoveryFile == null) { if (recoveryFile == null) {
throw new IOException("Version file is closed"); throw new IOException("Version file is closed");
} }
String[] allNames = recoveryFile.getParameterNames(); String[] allNames = recoveryFile.getParameterNames();
ArrayList<String> list = new ArrayList<String>(); ArrayList<String> list = new ArrayList<>();
for (int i = 0; i < allNames.length; i++) { for (String name : allNames) {
if (!allNames[i].startsWith(RECOVERY_PARM_PREFIX)) { if (!name.startsWith(RECOVERY_PARM_PREFIX)) {
list.add(allNames[i]); list.add(name);
} }
} }
String[] names = new String[list.size()]; String[] names = new String[list.size()];
@ -554,7 +564,7 @@ class RecoveryFile {
* Get a parameter value associated with the original buffer file. * Get a parameter value associated with the original buffer file.
* @param name parameter name * @param name parameter name
* @return parameter value * @return parameter value
* @throws IOException * @throws IOException if the recovery file is null
*/ */
int getParameter(String name) throws IOException { int getParameter(String name) throws IOException {
if (recoveryFile == null) { if (recoveryFile == null) {
@ -571,10 +581,10 @@ class RecoveryFile {
// Remember recovery parameters // Remember recovery parameters
String[] allNames = recoveryFile.getParameterNames(); String[] allNames = recoveryFile.getParameterNames();
Hashtable<String,Integer> recoveryProps = new Hashtable<String,Integer>(); Hashtable<String, Integer> recoveryProps = new Hashtable<>();
for (int i = 0; i < allNames.length; i++) { for (String name : allNames) {
if (allNames[i].startsWith(RECOVERY_PARM_PREFIX)) { if (name.startsWith(RECOVERY_PARM_PREFIX)) {
recoveryProps.put(allNames[i], new Integer(recoveryFile.getParameter(allNames[i]))); recoveryProps.put(name, recoveryFile.getParameter(name));
} }
} }
@ -586,14 +596,14 @@ class RecoveryFile {
while (iter.hasNext()) { while (iter.hasNext()) {
String name = iter.next(); String name = iter.next();
recoveryFile.setParameter( recoveryFile.setParameter(
name, recoveryProps.get(name).intValue()); name, recoveryProps.get(name).intValue());
} }
} }
/** /**
* Set user parameter * Set user parameter
* @param name * @param name the name
* @param value * @param value the value
*/ */
void setParameter(String name, int value) { void setParameter(String name, int value) {
setModified(); setModified();

View file

@ -287,7 +287,7 @@ public class VersionedDatabase extends Database {
/** /**
* Open a specific version of this database for non-update use. * Open a specific version of this database for non-update use.
* @param version database version or LATEST_VERSION for current version * @param version database version or LATEST_VERSION for current version
* @param minChangeDataVer the minimum database version whoose change data * @param minChangeDataVer the minimum database version whose change data
* should be associated with the returned buffer file. A value of -1 indicates that * should be associated with the returned buffer file. A value of -1 indicates that
* change data is not required. * change data is not required.
* @return buffer file for non-update use. * @return buffer file for non-update use.

View file

@ -256,7 +256,7 @@ abstract class CompositeDBAdapter {
abstract Field[] getRecordIdsForSourceArchive(long archiveID) throws IOException; abstract Field[] getRecordIdsForSourceArchive(long archiveID) throws IOException;
/** /**
* Get composite record whoose sourceID and datatypeID match the specified Universal IDs. * Get composite record whose sourceID and datatypeID match the specified Universal IDs.
* @param sourceID universal source archive ID * @param sourceID universal source archive ID
* @param datatypeID universal datatype ID * @param datatypeID universal datatype ID
* @return composite record found or null * @return composite record found or null

View file

@ -159,16 +159,17 @@ abstract class EnumDBAdapter {
/** /**
* Updates the enumeration data type table with the provided record. * Updates the enumeration data type table with the provided record.
* @param record the new record * @param record the new record
* @param setLastChangedTime true means change the last change time in the record to the * @param setLastChangeTime true means change the last change time in the record to the
* current time before putting the record in the database. * current time before putting the record in the database.
* @throws IOException if the database can't be accessed. * @throws IOException if the database can't be accessed.
*/ */
abstract void updateRecord(DBRecord record, boolean setLastChangeTime) throws IOException; abstract void updateRecord(DBRecord record, boolean setLastChangeTime) throws IOException;
/** /**
* Remove the record for the given enumeration ID, and remove all of its * Remove the record for the given enumeration ID, and remove all of its associated value
* associated value records. * records.
* @param enumID ID of enumerated data type to delete * @param enumID ID of enumerated data type to delete
* @return true if successful
* @throws IOException if there was a problem accessing the database * @throws IOException if there was a problem accessing the database
*/ */
abstract boolean removeRecord(long enumID) throws IOException; abstract boolean removeRecord(long enumID) throws IOException;
@ -198,7 +199,7 @@ abstract class EnumDBAdapter {
abstract Field[] getRecordIdsForSourceArchive(long archiveID) throws IOException; abstract Field[] getRecordIdsForSourceArchive(long archiveID) throws IOException;
/** /**
* Get enum record whoose sourceID and datatypeID match the specified Universal IDs. * Get enum record whose sourceID and datatypeID match the specified Universal IDs.
* @param sourceID universal source archive ID * @param sourceID universal source archive ID
* @param datatypeID universal datatype ID * @param datatypeID universal datatype ID
* @return enum record found or null * @return enum record found or null

View file

@ -187,7 +187,7 @@ abstract class FunctionDefinitionDBAdapter {
/** /**
* Updates the function definition data type table with the provided record. * Updates the function definition data type table with the provided record.
* @param record the new record * @param record the new record
* @param setLastChangedTime true means change the last change time in the record to the * @param setLastChangeTime true means change the last change time in the record to the
* current time before putting the record in the database. * current time before putting the record in the database.
* @throws IOException if the database can't be accessed. * @throws IOException if the database can't be accessed.
*/ */
@ -218,7 +218,7 @@ abstract class FunctionDefinitionDBAdapter {
abstract Field[] getRecordIdsForSourceArchive(long archiveID) throws IOException; abstract Field[] getRecordIdsForSourceArchive(long archiveID) throws IOException;
/** /**
* Get function definition record whoose sourceID and datatypeID match the specified Universal IDs. * Get function definition record whose sourceID and datatypeID match the specified Universal IDs.
* @param sourceID universal source archive ID * @param sourceID universal source archive ID
* @param datatypeID universal datatype ID * @param datatypeID universal datatype ID
* @return function definition record found or null * @return function definition record found or null

View file

@ -156,7 +156,7 @@ abstract class TypedefDBAdapter {
/** /**
* Updates the type definition data type table with the provided record. * Updates the type definition data type table with the provided record.
* @param record the new record * @param record the new record
* @param setLastChangedTime true means change the last change time in the record to the * @param setLastChangeTime true means change the last change time in the record to the
* current time before putting the record in the database. * current time before putting the record in the database.
* @throws IOException if the database can't be accessed. * @throws IOException if the database can't be accessed.
*/ */
@ -187,7 +187,7 @@ abstract class TypedefDBAdapter {
abstract Field[] getRecordIdsForSourceArchive(long archiveID) throws IOException; abstract Field[] getRecordIdsForSourceArchive(long archiveID) throws IOException;
/** /**
* Get typedef record whoose sourceID and datatypeID match the specified Universal IDs. * Get typedef record whose sourceID and datatypeID match the specified Universal IDs.
* @param sourceID universal source archive ID * @param sourceID universal source archive ID
* @param datatypeID universal datatype ID * @param datatypeID universal datatype ID
* @return typedef record found or null * @return typedef record found or null

View file

@ -1,6 +1,5 @@
/* ### /* ###
* IP: GHIDRA * IP: GHIDRA
* REVIEWED: YES
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -16,13 +15,13 @@
*/ */
package ghidra.program.database.oldfunction; package ghidra.program.database.oldfunction;
import db.DBHandle;
import ghidra.program.database.map.AddressMap; import ghidra.program.database.map.AddressMap;
import ghidra.program.database.util.SharedRangeMapDB; import ghidra.program.database.util.SharedRangeMapDB;
import ghidra.program.model.address.AddressSet; import ghidra.program.model.address.AddressSet;
import ghidra.program.model.address.AddressSetView; import ghidra.program.model.address.AddressSetView;
import ghidra.util.datastruct.IndexRange; import ghidra.util.datastruct.IndexRange;
import ghidra.util.datastruct.IndexRangeIterator; import ghidra.util.datastruct.IndexRangeIterator;
import db.DBHandle;
/** /**
* *
@ -52,7 +51,8 @@ class OldFunctionMapDB {
/** /**
* Get the address set which makes up a function. * Get the address set which makes up a function.
* @param functionKey * @param functionKey the function key
* @return the addresses
*/ */
synchronized AddressSetView getBody(long functionKey) { synchronized AddressSetView getBody(long functionKey) {
AddressSet body = new AddressSet(); AddressSet body = new AddressSet();
@ -81,7 +81,7 @@ class OldFunctionMapDB {
// } // }
// //
// /** // /**
// * Get all function keys whoose body contains the specified address. // * Get all function keys whose body contains the specified address.
// * @param addr // * @param addr
// * @return a LongField function key iterator. // * @return a LongField function key iterator.
// */ // */
@ -91,7 +91,7 @@ class OldFunctionMapDB {
// } // }
// //
// /** // /**
// * Get all function keys whoose body overlaps the specified address set. // * Get all function keys whose body overlaps the specified address set.
// * @param set // * @param set
// * @return a LongField function key iterator. // * @return a LongField function key iterator.
// */ // */

View file

@ -38,7 +38,7 @@ public interface CompositeInternal extends Composite {
public final static int DEFAULT_PACKING = 0; public final static int DEFAULT_PACKING = 0;
/** /**
* The stored packing value which corresponds to a composite whoose packing has been disabled. * The stored packing value which corresponds to a composite whose packing has been disabled.
* In the case of structures this will permit explicit component placement by * In the case of structures this will permit explicit component placement by
* offset within the structure and undefined filler components will be used. * offset within the structure and undefined filler components will be used.
* This is the initial state of all newly instantiated structures. * This is the initial state of all newly instantiated structures.

View file

@ -102,7 +102,7 @@ public interface DataTypeManager {
* This method provides the added benefit of equivalence caching * This method provides the added benefit of equivalence caching
* for improved performance. * for improved performance.
* <br> * <br>
* WARNING: This is an experimental method whoose use may cause the GUI and * WARNING: This is an experimental method whose use may cause the GUI and
* task monitor to become unresponsive due to extended hold times on the manager lock. * task monitor to become unresponsive due to extended hold times on the manager lock.
* @param dataTypes collection of datatypes * @param dataTypes collection of datatypes
* @param handler conflict handler * @param handler conflict handler

View file

@ -194,7 +194,7 @@ public class VariableUtilities {
/** /**
* Perform variable storage checks using the specified datatype. * Perform variable storage checks using the specified datatype.
* @param storage variable storage whoose size must match the specified data type size * @param storage variable storage whose size must match the specified data type size
* @param dataType a datatype checked using {@link #checkDataType(DataType, boolean, int, Program)} * @param dataType a datatype checked using {@link #checkDataType(DataType, boolean, int, Program)}
* @param allowSizeMismatch if true size mismatch will be ignore * @param allowSizeMismatch if true size mismatch will be ignore
* @throws InvalidInputException * @throws InvalidInputException

View file

@ -1,6 +1,5 @@
/* ### /* ###
* IP: GHIDRA * IP: GHIDRA
* REVIEWED: YES
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -19,18 +18,20 @@ package ghidra.program.model.symbol;
import ghidra.program.model.address.Address; import ghidra.program.model.address.Address;
/** /**
* <code>OffsetReference</code> is a memory reference whoose "to" address is * <code>OffsetReference</code> is a memory reference whose "to" address is
* computed from a base address plus an offset. * computed from a base address plus an offset.
*/ */
public interface OffsetReference extends Reference { public interface OffsetReference extends Reference {
/** /**
* Returns the offset. * Returns the offset.
* @return the offset
*/ */
public long getOffset(); public long getOffset();
/** /**
* Returns the base address. * Returns the base address.
* @return the address
*/ */
public Address getBaseAddress(); public Address getBaseAddress();

View file

@ -1,6 +1,5 @@
/* ### /* ###
* IP: GHIDRA * IP: GHIDRA
* REVIEWED: YES
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -17,18 +16,20 @@
package ghidra.program.model.symbol; package ghidra.program.model.symbol;
/** /**
* <code>ShiftedReference</code> is a memory reference whoose "to" address is * <code>ShiftedReference</code> is a memory reference whose "to" address is
* computed from a base value left shifted by a shift amount. * computed from a base value left shifted by a shift amount.
*/ */
public interface ShiftedReference extends Reference { public interface ShiftedReference extends Reference {
/** /**
* Returns the left shift amount. * Returns the left shift amount.
* @return the shift
*/ */
public int getShift(); public int getShift();
/** /**
* Returns the base value. * Returns the base value.
* @return the value
*/ */
public long getValue(); public long getValue();
} }