mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-06 03:50:02 +02:00
Merge branch 'GT-3362_ryanmkurtz_PR-1287_astrelsky_DocumentationFixes'
Conflicts: Ghidra/Framework/Docking/src/main/java/docking/action/DockingAction.java
This commit is contained in:
commit
6e6bdffe86
659 changed files with 1740 additions and 4136 deletions
|
@ -18,7 +18,7 @@ package generic.algorithms;
|
|||
import java.util.List;
|
||||
|
||||
/**
|
||||
* An implementation of the {@link ReducingLcs} that takes as its input a list of <T> items, where
|
||||
* An implementation of the {@link ReducingLcs} that takes as its input a list of {@literal <T>}items, where
|
||||
* the list is the 'sequence' being checked for the Longest Common Subsequence.
|
||||
*
|
||||
* @param <T> the type of the item in the sequence of items
|
||||
|
|
|
@ -35,7 +35,7 @@ import ghidra.util.task.TaskMonitor;
|
|||
* <hr>
|
||||
* <p>
|
||||
* <u>Put and Forget:</u>
|
||||
* <pre>
|
||||
* <pre>{@literal
|
||||
* QCallback<ITEM, RESULT> callback = new AbstractQCallback<ITEM, RESULT>() {
|
||||
* public RESULT process(ITEM item, TaskMonitor monitor) {
|
||||
* // do work here...
|
||||
|
@ -49,11 +49,11 @@ import ghidra.util.task.TaskMonitor;
|
|||
* ...
|
||||
* concurrentQ.add(item); // where item is one of the instances of ITEM
|
||||
*
|
||||
* </pre>
|
||||
* }</pre>
|
||||
* <hr>
|
||||
* <p>
|
||||
* <u>Put Items and Handle Results in Any Order as They Available:</u>
|
||||
* <pre>
|
||||
* <pre>{@literal
|
||||
* QCallback<ITEM, RESULT> callback = new AbstractQCallback<ITEM, RESULT>() {
|
||||
* public RESULT process(ITEM item, TaskMonitor monitor) {
|
||||
* // do work here...
|
||||
|
@ -62,14 +62,14 @@ import ghidra.util.task.TaskMonitor;
|
|||
*
|
||||
* QItemListener<ITEM, RESULT> itemListener = new QItemListener<ITEM, RESULT>() {
|
||||
* public void itemProcessed(QResult<ITEM, RESULT> result) {
|
||||
* RESULT result = result.getResult();
|
||||
* <font color="blue"><b>// work on my result...</b></font>
|
||||
* RESULT result = result.getResult();}
|
||||
* <font color="blue"><b>// work on my result...</b></font>{@code
|
||||
* }
|
||||
* };
|
||||
*
|
||||
* ConcurrentQBuilder<ITEM, RESULT> builder = new ConcurrentQBuilder<ITEM, RESULT>();
|
||||
* builder.setThreadPoolName("Thread Pool Name");
|
||||
* <font color="blue"><b>builder.setListener(itemListener);</b></font>
|
||||
* }<font color="blue"><b>builder.setListener(itemListener);</b></font>{@code
|
||||
* concurrentQ = builder.build(callback);
|
||||
* ...
|
||||
* ...
|
||||
|
@ -77,12 +77,12 @@ import ghidra.util.task.TaskMonitor;
|
|||
* concurrentQ.add(item);
|
||||
* concurrentQ.add(item);
|
||||
*
|
||||
* </pre>
|
||||
* }</pre>
|
||||
*
|
||||
* <hr>
|
||||
* <p>
|
||||
* <u>Put Items and Handle Results When All Items Have Been Processed:</u>
|
||||
* <pre>
|
||||
* <pre>{@literal
|
||||
* QCallback<ITEM, RESULT> callback = new AbstractQCallback<ITEM, RESULT>() {
|
||||
* public RESULT process(ITEM item, TaskMonitor monitor) {
|
||||
* // do work here...
|
||||
|
@ -91,7 +91,7 @@ import ghidra.util.task.TaskMonitor;
|
|||
*
|
||||
* ConcurrentQBuilder<ITEM, RESULT> builder = new ConcurrentQBuilder<ITEM, RESULT>();
|
||||
* builder.setThreadPoolName("Thread Pool Name");
|
||||
* <font color="blue"><b>builder.setCollectResults(true);</b></font>
|
||||
* }<font color="blue"><b>builder.setCollectResults(true);</b></font>{@code
|
||||
* concurrentQ = builder.getQueue(callback);
|
||||
* ...
|
||||
* ...
|
||||
|
@ -99,14 +99,14 @@ import ghidra.util.task.TaskMonitor;
|
|||
* concurrentQ.add(item);
|
||||
* concurrentQ.add(item);
|
||||
* ...
|
||||
* <font color="blue"><b>List<QResult<I, R>> results = concurrentQ.waitForResults();</b></font>
|
||||
* }<font color="blue"><b>{@literal List<QResult<I, R>> results = concurrentQ.waitForResults();}</b></font>{@literal
|
||||
* // process the results...
|
||||
*
|
||||
* </pre>
|
||||
* }</pre>
|
||||
* <hr>
|
||||
* <p>
|
||||
* <u>Put Items, <b>Blocking While Full</b>, and Handle Results in Any Order as They Available:</u>
|
||||
* <pre>
|
||||
* <pre>{@literal
|
||||
* QCallback<ITEM, RESULT> callback = new AbstractQCallback<ITEM, RESULT>() {
|
||||
* public RESULT process(ITEM item, TaskMonitor monitor) {
|
||||
* // do work here...
|
||||
|
@ -122,12 +122,12 @@ import ghidra.util.task.TaskMonitor;
|
|||
*
|
||||
* ConcurrentQBuilder<ITEM, RESULT> builder = new ConcurrentQBuilder<ITEM, RESULT>();
|
||||
* builder.setThreadPoolName("Thread Pool Name");
|
||||
* <font color="blue"><b>builder.setQueue(new LinkedBlockingQueue(100));</b></font>
|
||||
* }<font color="blue"><b>builder.setQueue(new LinkedBlockingQueue(100));</b></font>{@literal
|
||||
* concurrentQ = builder.getQueue(callback);
|
||||
* ...
|
||||
* ...
|
||||
* Iterator<ITEM> iterator = <get an iterator for 1000s of items somewhere>
|
||||
* <font color="blue"><b>concurrentQ.offer(iterator); // this call will block when the queue fills up (100 items or more)</b></font>
|
||||
* Iterator<ITEM> iterator = <get an iterator for 1000s of items somewhere>
|
||||
* }<font color="blue"><b>{@code concurrentQ.offer(iterator); // this call will block when the queue fills up (100 items or more)}</b></font>
|
||||
*
|
||||
* </pre>
|
||||
* <hr>
|
||||
|
@ -378,7 +378,7 @@ public class ConcurrentQ<I, R> {
|
|||
*
|
||||
* @return the first available result
|
||||
* @throws InterruptedException if interrupted while waiting for a result
|
||||
* @throws {@link IllegalStateException} if this queue has been set to not collect results
|
||||
* @throws IllegalStateException if this queue has been set to not collect results
|
||||
* (see the constructor).
|
||||
*/
|
||||
public QResult<I, R> waitForNextResult() throws InterruptedException {
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
/* ###
|
||||
* IP: GHIDRA
|
||||
* REVIEWED: YES
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -34,7 +33,7 @@ import java.util.concurrent.LinkedBlockingQueue;
|
|||
* <P>
|
||||
* Examples:
|
||||
* <p>
|
||||
* <pre>
|
||||
* <pre>{@literal
|
||||
* QCallback<I, R> callback = new AbstractQCallback<I, R>() {
|
||||
* public R process(I item, TaskMonitor monitor) {
|
||||
* // do work here...
|
||||
|
@ -53,7 +52,7 @@ import java.util.concurrent.LinkedBlockingQueue;
|
|||
* setMaxInProgress(1).
|
||||
* build(callback);
|
||||
*
|
||||
* </pre>
|
||||
* }</pre>
|
||||
* <p>
|
||||
*
|
||||
* Note: if you wish to take advantage of blocking when adding items to the {@link ConcurrentQ},
|
||||
|
@ -180,7 +179,7 @@ public class ConcurrentQBuilder<I, R> {
|
|||
}
|
||||
|
||||
/**
|
||||
* @see {@link ConcurrentQ#setMonitor(TaskMonitor, boolean)}
|
||||
* @see ConcurrentQ#setMonitor(TaskMonitor, boolean)
|
||||
* <p>
|
||||
* The default value is <tt>true</tt>.
|
||||
*/
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
/* ###
|
||||
* IP: GHIDRA
|
||||
* REVIEWED: YES
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -20,13 +19,13 @@ import ghidra.util.task.TaskMonitor;
|
|||
|
||||
/**
|
||||
* Interface that defines the callback to work on the items given to the
|
||||
* {@link ConcurrentQ#add(I)} methods. Each item that is processed will be handed to the
|
||||
* {@link #process(I, TaskMonitor)} method of the implementing class.
|
||||
* {@link ConcurrentQ#add(Object) ConcurrentQ.add(I)} methods. Each item that is processed will be handed to the
|
||||
* {@link #process(Object, TaskMonitor) process(I, TaskMonitor)} method of the implementing class.
|
||||
*
|
||||
* @param <I> The type of the items to be processed.
|
||||
* @param <R> The type of objects resulting from processing an item; if you don't care about the
|
||||
* return value, then make this value whatever you want, like <tt>Object</tt> or the
|
||||
* same value as {@link I} and return null from {@link #process(Object, TaskMonitor)}.
|
||||
* same value as {@link I} and return null from {@link #process(Object, TaskMonitor) process(I, TaskMonitor)}.
|
||||
*/
|
||||
public interface QCallback<I, R> {
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
/* ###
|
||||
* IP: GHIDRA
|
||||
* REVIEWED: YES
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -26,18 +25,17 @@ public interface QProgressListener<I> {
|
|||
* Notification that progress has changed during the processing of an item.
|
||||
* @param id the id of the item being processed. Since multiple items can be processed concurrently,
|
||||
* the id can be used to "demultiplex" the progress and messages being generated.
|
||||
* @param currentProgress the current value of the progress for this task.
|
||||
* @param progressMessage the last message set for this task.s
|
||||
* @param item the item that was being processed when the worker changed the max progress.
|
||||
* @param currentProgress the current value of the progress for this task.
|
||||
*/
|
||||
void progressChanged(long id, I Item, long currentProgress);
|
||||
void progressChanged(long id, I item, long currentProgress);
|
||||
|
||||
/**
|
||||
* Notification that a new task has been generated to process an item.
|
||||
* @param id the id of the item being processed.
|
||||
* @param item the item that was being processed when the worker changed the max progress.
|
||||
*/
|
||||
void taskStarted(long id, I Item);
|
||||
void taskStarted(long id, I item);
|
||||
|
||||
/**
|
||||
* Notification that a new task has completed processing for an item.
|
||||
|
@ -46,7 +44,7 @@ public interface QProgressListener<I> {
|
|||
* @param totalCount the total number of items that have been submitted to the ConcurrentQ
|
||||
* @param completedCount the total number of items that completed processing.
|
||||
*/
|
||||
void taskEnded(long id, I Item, long totalCount, long completedCount);
|
||||
void taskEnded(long id, I item, long totalCount, long completedCount);
|
||||
|
||||
/**
|
||||
* Notification that the progress mode has changed from/to indeterminate mode
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
/* ###
|
||||
* IP: GHIDRA
|
||||
* REVIEWED: YES
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -20,8 +19,8 @@ import ghidra.util.task.TaskMonitor;
|
|||
|
||||
/**
|
||||
* Interface that defines the Runnable to work on the items given to the
|
||||
* {@link ConcurrentQ#add(I)} methods. Each item that is processed will be handed to the
|
||||
* {@link #run(I, TaskMonitor)} method of the implementing class.
|
||||
* {@link ConcurrentQ#add(Object) ConcurrentQ.add(I)} methods. Each item that is processed will be handed to the
|
||||
* {@link #run(Object, TaskMonitor) run(I, TaskMonitor)} method of the implementing class.
|
||||
*
|
||||
* @param <I> The type of the items to be processed.
|
||||
*/
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
/* ###
|
||||
* IP: GHIDRA
|
||||
* REVIEWED: YES
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -46,7 +45,7 @@ public abstract class Constraint<T> {
|
|||
|
||||
/**
|
||||
* Returns true if the given object satisfies this constraint.
|
||||
* @param the object to test this constraint on.
|
||||
* @param t the object to test this constraint on.
|
||||
* @return true if the given object satisfies this constraint.
|
||||
*/
|
||||
public abstract boolean isSatisfied(T t);
|
||||
|
|
|
@ -4,19 +4,18 @@
|
|||
package generic.json;
|
||||
|
||||
public class JSONToken {
|
||||
|
||||
/**
|
||||
* JSON token description.
|
||||
* @param type type (object, array, string etc.)
|
||||
* @param start start position in JSON data string
|
||||
* @param end end position in JSON data string
|
||||
*/
|
||||
|
||||
public JSONType type;
|
||||
public int start;
|
||||
public int end;
|
||||
public int size;
|
||||
|
||||
|
||||
/**
|
||||
* JSON token description.
|
||||
* @param type the token type (object, array, string etc.)
|
||||
* @param start the start position in JSON data string
|
||||
* @param end the end position in JSON data string
|
||||
*/
|
||||
public JSONToken(JSONType type, int start, int end) {
|
||||
setType(type);
|
||||
setStart(start);
|
||||
|
|
|
@ -38,7 +38,7 @@ public class LSHCosineVector implements LSHVector {
|
|||
|
||||
/**
|
||||
* Install a set of features as an int[]. Each integer is a hash. The integers MUST already be sorted.
|
||||
* The same integer can occur more than once in the array (term frequency (TF) > 1).
|
||||
* The same integer can occur more than once in the array (term frequency (TF) > 1).
|
||||
* Weights are determined by TF and Inverse Document Frequency (IDF) of individual features
|
||||
* @param feature is the sorted array of integer hashes
|
||||
* @param wfactory is the container of weighting information
|
||||
|
|
|
@ -36,7 +36,7 @@ public abstract class LSHVectorFactory {
|
|||
/**
|
||||
* Generate an LSHVector from a feature set, individual features are integer hashes.
|
||||
* The integers MUST already be sorted.
|
||||
* The same integer can occur more than once in the array (term frequency (TF) > 1).
|
||||
* The same integer can occur more than once in the array (term frequency (TF) > 1).
|
||||
* The factory decides internally how to create weights based on term frequency and any
|
||||
* knowledge of Inverse Document Frequency (IDF)
|
||||
* @param feature is the sorted array of integer features
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
/* ###
|
||||
* IP: GHIDRA
|
||||
* REVIEWED: YES
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -37,14 +36,19 @@ public class RedBlackTree<K,V> {
|
|||
private final boolean allowDuplicateKeys;
|
||||
|
||||
/**
|
||||
* Creates a new RedBlackKeySet that can store keys between 0 and n.
|
||||
* @param n the maximum key for this set.
|
||||
* Creates a new RedBlackTree
|
||||
* @param comparator the comparator for this tree
|
||||
* @param allowDuplicateKeys true to allow duplicate keys
|
||||
*/
|
||||
public RedBlackTree(Comparator<K> comparator, boolean allowDuplicateKeys) {
|
||||
this.comparator = comparator;
|
||||
this.allowDuplicateKeys = allowDuplicateKeys;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a copy of an existing RedBlackTree
|
||||
* @param tree the existing tree to copy
|
||||
*/
|
||||
public RedBlackTree(RedBlackTree<K, V> tree) {
|
||||
this.comparator = tree.comparator;
|
||||
this.allowDuplicateKeys = tree.allowDuplicateKeys;
|
||||
|
@ -129,10 +133,10 @@ public class RedBlackTree<K,V> {
|
|||
}
|
||||
|
||||
/**
|
||||
* Finds the node with the lowest key that is >= to the given key. Returns null if all nodes
|
||||
* Finds the node with the lowest key that is >= to the given key. Returns null if all nodes
|
||||
* in the tree have keys less than the given key.
|
||||
* @param key the key to search for.
|
||||
* @return the node with the lowest key that is >= to the given key or null if no such key exists.
|
||||
* @return the node with the lowest key that is >= to the given key or null if no such key exists.
|
||||
*/
|
||||
public RedBlackNode<K,V> lowerBound(K key) {
|
||||
RedBlackNode<K,V> bestNode = null;
|
||||
|
@ -154,10 +158,10 @@ public class RedBlackTree<K,V> {
|
|||
|
||||
|
||||
/**
|
||||
* Finds the node with the lowest key that is > the given key. Returns null if all nodes
|
||||
* Finds the node with the lowest key that is > the given key. Returns null if all nodes
|
||||
* in the tree have keys less than or equal to the given key.
|
||||
* @param key the key to search for.
|
||||
* @return the node with the lowest key that is > to the given key or null if no such key exists.
|
||||
* @return the node with the lowest key that is > to the given key or null if no such key exists.
|
||||
*/
|
||||
public RedBlackNode<K,V> upperBound(K key){
|
||||
RedBlackNode<K,V> bestNode = null;
|
||||
|
@ -183,6 +187,7 @@ public class RedBlackTree<K,V> {
|
|||
* already exists, the old value will be replaced by the new value and the old value will be
|
||||
* returned.
|
||||
* @param key the key to add to the set.
|
||||
* @param value the key's value.
|
||||
* @return the old value associated with the key, or null if the key was not previously in the map.
|
||||
*/
|
||||
public Pair<RedBlackNode<K, V>, Boolean> put(K key, V value) {
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
*/
|
||||
package generic.test;
|
||||
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
|
@ -1482,7 +1482,7 @@ public abstract class AbstractGenericTest extends AbstractGTest {
|
|||
/**
|
||||
* Invoke <code>fixupGUI</code> at the beginning of your JUnit test or in
|
||||
* its setup() method to make your GUI for the JUnit test appear using the
|
||||
* system Look & Feel. The system look and feel is the default that Ghidra
|
||||
* system Look and Feel. The system look and feel is the default that Ghidra
|
||||
* uses. This will also change the default fonts for the JUnit test to be
|
||||
* the same as those in Ghidra.
|
||||
*
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
/* ###
|
||||
* IP: GHIDRA
|
||||
* REVIEWED: YES
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -92,7 +91,7 @@ public class GhidraSwinglessTimer implements GhidraTimer {
|
|||
/**
|
||||
* Creates a new repeating timer with a initial and continual delay with the given delay.
|
||||
* @param delay the delay to use for the first and subsequent timer callbacks.
|
||||
* @callback the callback the be called with the timer fires.
|
||||
* @param callback the callback the be called with the timer fires.
|
||||
*/
|
||||
public GhidraSwinglessTimer(int delay, TimerCallback callback) {
|
||||
this(delay,delay,callback);
|
||||
|
@ -102,7 +101,7 @@ public class GhidraSwinglessTimer implements GhidraTimer {
|
|||
* Creates a new repeating timer with an initial and continual delay.
|
||||
* @param initialDelay the delay to use for the first timer callbacks.
|
||||
* @param delay the delay to use for subsequent timer callbacks.
|
||||
* @callback the callback the be called with the timer fires.
|
||||
* @param callback the callback the be called with the timer fires.
|
||||
*/
|
||||
public GhidraSwinglessTimer(int initialDelay, int delay, TimerCallback callback) {
|
||||
this.callback = callback;
|
||||
|
|
|
@ -43,7 +43,7 @@ public class MultiIterator<T> implements Iterator<T> {
|
|||
* Use this constructor when the items of the iterators are naturally comparable (i.e.,
|
||||
* they implement {@link Comparable}).
|
||||
*
|
||||
* @param comparator the comparator used to find the next item
|
||||
* @param iterators the iterators that provide the data
|
||||
* @param forward true if the iterators provide data sorted ascending; false for descending
|
||||
*/
|
||||
public MultiIterator(List<PeekableIterator<T>> iterators, boolean forward) {
|
||||
|
|
|
@ -29,10 +29,9 @@ import ghidra.util.exception.ClosedException;
|
|||
public class SwingExceptionHandler implements UncaughtExceptionHandler {
|
||||
|
||||
/**
|
||||
* Handle exception caught within the EventDispatchThread.
|
||||
* Handle exception caught within the Swing event dispatch thread.
|
||||
* @param t exception
|
||||
* @throws Throwable error occurred while attempting to handle exception
|
||||
* @see java.awt.EventDispatchThread#handleException(java.lang.Throwable)
|
||||
*/
|
||||
public void handle(Throwable t) throws Throwable {
|
||||
handleUncaughtException(t);
|
||||
|
|
|
@ -804,7 +804,7 @@ public class Application {
|
|||
/**
|
||||
* Returns a list of all directories in any module that have the given module relative path. For
|
||||
* example, a relative path of "foo/bar" will return all directories that are of the form
|
||||
* <module root>/data/foo/bar
|
||||
* {@code <module root>/data/foo/bar}
|
||||
* @param relativePath the module relative path to search for.
|
||||
* @return a list of all directories in any module that have the given module relative path.
|
||||
*/
|
||||
|
@ -890,7 +890,7 @@ public class Application {
|
|||
/**
|
||||
* Returns the file relative to the named module's directory.
|
||||
* @param moduleName the name of the module.
|
||||
* @param relativeDataPath the path relative to the module's data directory.
|
||||
* @param relativePath the path relative to the module's data directory.
|
||||
* @throws FileNotFoundException if the file does not exist.
|
||||
*/
|
||||
public static ResourceFile getModuleFile(String moduleName, String relativePath)
|
||||
|
|
|
@ -36,7 +36,7 @@ public interface ModuleInitializer
|
|||
//@formatter:on
|
||||
|
||||
/**
|
||||
* @returns initializer name
|
||||
* @return initializer name
|
||||
*/
|
||||
public String getName();
|
||||
}
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
/* ###
|
||||
* IP: GHIDRA
|
||||
* REVIEWED: YES
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -45,8 +44,7 @@ public class ShutdownHookRegistry {
|
|||
/**
|
||||
* Remove a shutdown hook previously registered.
|
||||
* Hooks with a higher priority value will run first
|
||||
* @param r shutdown hook runnable
|
||||
* @param priority relative priority
|
||||
* @param hook shutdown hook
|
||||
*/
|
||||
public static synchronized void removeShutdownHook(ShutdownHook hook) {
|
||||
hooks.remove(hook);
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
/* ###
|
||||
* IP: GHIDRA
|
||||
* REVIEWED: YES
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -59,7 +58,7 @@ public interface Options {
|
|||
* from the swing thread.
|
||||
* @return either the PropertyEditor that was registered for this option or a default editor
|
||||
* for the property type if one can be found; otherwise null.
|
||||
* @throw IllegalStateException if not called from the swing thread.
|
||||
* @throws IllegalStateException if not called from the swing thread.
|
||||
*/
|
||||
public PropertyEditor getPropertyEditor(String optionName);
|
||||
|
||||
|
@ -112,7 +111,7 @@ public interface Options {
|
|||
* @param optionName the name of the option being registered.
|
||||
* @param defaultValue the defaultValue for the option. The default value must not be
|
||||
* null so that the OptionType can be determined. If the default value should be null, use
|
||||
* {@link #registerOption(String, OptionType, Object, HelpLocation, String)
|
||||
* {@link #registerOption(String, OptionType, Object, HelpLocation, String)}
|
||||
* @param help the HelpLocation for this option.
|
||||
* @param description a description of the option.
|
||||
* @throws IllegalArgumentException if the defaultValue is null
|
||||
|
@ -151,15 +150,13 @@ public interface Options {
|
|||
|
||||
/**
|
||||
* Register the options editor that will handle the editing for all the options or a sub group of options.
|
||||
* @param path the path to the sub group of options or "" for all the options.
|
||||
* @param editor the custom editor panel to be used to edit the options or sub group of options.
|
||||
*/
|
||||
public abstract void registerOptionsEditor(OptionsEditor editor);
|
||||
|
||||
/**
|
||||
* Get the editor that will handle editing all the values in this options or sub group of options.
|
||||
* @param path the path to the sub group of options or "" for all the options.
|
||||
* @return null if no options editor was registered
|
||||
* @return null if no options editor was registered
|
||||
*/
|
||||
public abstract OptionsEditor getOptionsEditor();
|
||||
|
||||
|
@ -268,8 +265,8 @@ public interface Options {
|
|||
|
||||
/**
|
||||
* Get the Date for the given option name.
|
||||
* @param optionName option name
|
||||
* @param defaultValue value that is stored and returned if there is no
|
||||
* @param pName the property name
|
||||
* @param date the default date that is stored and returned if there is no
|
||||
* option with the given name
|
||||
* @return the Date for the option
|
||||
* @throws IllegalArgumentException is a option exists with the given
|
||||
|
@ -376,7 +373,7 @@ public interface Options {
|
|||
/**
|
||||
* Sets the Date value for the option.
|
||||
* @param optionName name of the option
|
||||
* @param value
|
||||
* @param newSetting the Date to set
|
||||
*/
|
||||
public abstract void setDate(String optionName, Date newSetting);
|
||||
|
||||
|
@ -508,7 +505,7 @@ public interface Options {
|
|||
|
||||
/**
|
||||
* Returns the value as a string for the given option.
|
||||
* @param optionName the name of the option for which to retrieve the value as a string
|
||||
* @param name the name of the option for which to retrieve the value as a string
|
||||
* @return the value as a string for the given option.
|
||||
*/
|
||||
public abstract String getValueAsString(String name);
|
||||
|
@ -518,6 +515,6 @@ public interface Options {
|
|||
* @param optionName the name of the option for which to retrieve the default value as a string
|
||||
* @return the default value as a string for the given option.
|
||||
*/
|
||||
public abstract String getDefaultValueAsString(String analyzerName);
|
||||
public abstract String getDefaultValueAsString(String optionName);
|
||||
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@ import ghidra.util.ReversedListIterator;
|
|||
* Such a tree may be useful as a priority queue where the cost of an entry may change over time.
|
||||
* As such, the collections returned by {@link #entrySet()}, {@link #keySet()}, and
|
||||
* {@link #values()} all implement {@link Deque}. The order of the entries will be updated on any
|
||||
* call to {@link #put(Object, Object))}, or a call to {@link Collection#add(Object)} on the entry
|
||||
* call to {@link #put(Object, Object)}, or a call to {@link Collection#add(Object)} on the entry
|
||||
* set. Additionally, if the values are mutable objects, whose costs may change, there is an
|
||||
* {@link #update(Object)} method, which notifies the map that the given key may need to be
|
||||
* repositioned. The associated collections also implement the {@link List} interface, providing
|
||||
|
@ -38,9 +38,9 @@ import ghidra.util.ReversedListIterator;
|
|||
*
|
||||
* The underlying implementation is currently an unbalanced binary tree whose nodes also comprise a
|
||||
* doubly-linked list. Currently, it is not thread safe.
|
||||
* @TODO Consider changing to an AVL tree implementation
|
||||
* @TODO Consider implementing the {@link NavigableMap} interface
|
||||
* @TODO Consider making the implementation thread-safe
|
||||
* TODO Consider changing to an AVL tree implementation
|
||||
* TODO Consider implementing the {@link NavigableMap} interface
|
||||
* TODO Consider making the implementation thread-safe
|
||||
*
|
||||
* @param <K> the type of the keys
|
||||
* @param <V> the type of the values
|
||||
|
@ -340,7 +340,7 @@ public class DynamicValueSortedTreeMap<K, V> extends AbstractMap<K, V> {
|
|||
|
||||
/**
|
||||
* Insert a node as a successor to this node in the linked list
|
||||
* @note Called only after the node is inserted into the tree
|
||||
* NOTE: Called only after the node is inserted into the tree
|
||||
*/
|
||||
private void insertAfter(Node item) {
|
||||
item.prev = this;
|
||||
|
@ -357,7 +357,7 @@ public class DynamicValueSortedTreeMap<K, V> extends AbstractMap<K, V> {
|
|||
|
||||
/**
|
||||
* Insert a node as a predecessor to this node in the linked list
|
||||
* @note Called only after the node is inserted into the tree
|
||||
* NOTE: Called only after the node is inserted into the tree
|
||||
*/
|
||||
private void insertBefore(Node item) {
|
||||
item.prev = prev;
|
||||
|
@ -498,7 +498,7 @@ public class DynamicValueSortedTreeMap<K, V> extends AbstractMap<K, V> {
|
|||
/**
|
||||
* When searching for values, identifies which instance to find
|
||||
*
|
||||
* @TODO When/if implementing {@link NavigableMap}, this seems an appropriate place to put
|
||||
* TODO When/if implementing {@link NavigableMap}, this seems an appropriate place to put
|
||||
* FLOOR, CEILING, etc.
|
||||
*/
|
||||
private enum SearchMode {
|
||||
|
|
|
@ -41,7 +41,7 @@ import ghidra.util.Msg;
|
|||
* *.cer, *.der) or may be in a Java JKS form (*.jks). The path to this file may be
|
||||
* established in one of two ways using the absolute file path:
|
||||
* <ol>
|
||||
* <li>setting the system property <i>ghidra.cacerts</i> (takes precedence)</i>
|
||||
* <li>setting the system property <i>ghidra.cacerts</i> (takes precedence)</li>
|
||||
* <li>setting the user preference <i>ghidra.cacerts</i></li>
|
||||
* </ol>
|
||||
* <p>
|
||||
|
|
|
@ -45,7 +45,7 @@ public class SSLContextInitializer implements ModuleInitializer {
|
|||
/**
|
||||
* Initialize default SSLContext with optional reset.
|
||||
* This method is primarily intended for testing.
|
||||
* @param if true a complete reset will be done to force use of
|
||||
* @param reset if true a complete reset will be done to force use of
|
||||
* any new certificate or keystores previously used.
|
||||
* @return true if successful, else false (see logged error)
|
||||
*/
|
||||
|
|
|
@ -134,7 +134,7 @@ public interface DataConverter extends Serializable {
|
|||
* @param value value to convert to bytes
|
||||
* @param b byte array to store bytes
|
||||
* @param offset offset into byte array to put the bytes
|
||||
* @throws IndexOutOfBoundsException if (offset+2)>b.length
|
||||
* @throws IndexOutOfBoundsException if (offset+2)>b.length
|
||||
*/
|
||||
public void getBytes(short value, byte[] b, int offset);
|
||||
|
||||
|
@ -152,7 +152,7 @@ public interface DataConverter extends Serializable {
|
|||
* @param value value to convert to bytes
|
||||
* @param b byte array to store bytes
|
||||
* @param offset offset into byte array to put the bytes
|
||||
* @throws IndexOutOfBoundsException if (offset+4)>b.length
|
||||
* @throws IndexOutOfBoundsException if (offset+4)>b.length
|
||||
*/
|
||||
public void getBytes(int value, byte[] b, int offset);
|
||||
|
||||
|
@ -170,7 +170,7 @@ public interface DataConverter extends Serializable {
|
|||
* @param value value to convert to bytes
|
||||
* @param b byte array to store bytes
|
||||
* @param offset offset into byte array to put the bytes
|
||||
* @throws IndexOutOfBoundsException if (offset+8)>b.length
|
||||
* @throws IndexOutOfBoundsException if (offset+8)>b.length
|
||||
*/
|
||||
public void getBytes(long value, byte[] b, int offset);
|
||||
|
||||
|
@ -181,7 +181,7 @@ public interface DataConverter extends Serializable {
|
|||
* @param size number of least significant bytes of value to be written to the byte array
|
||||
* @param b byte array to store bytes
|
||||
* @param offset offset into byte array to put the bytes
|
||||
* @throws IndexOutOfBoundsException if (offset+size)>b.length.
|
||||
* @throws IndexOutOfBoundsException if (offset+size)>b.length.
|
||||
*/
|
||||
public void getBytes(long value, int size, byte[] b, int offset);
|
||||
|
||||
|
@ -192,7 +192,7 @@ public interface DataConverter extends Serializable {
|
|||
* @param size number of least significant bytes of value to be written to the byte array
|
||||
* @param b byte array to store bytes
|
||||
* @param offset offset into byte array to put the bytes
|
||||
* @throws IndexOutOfBoundsException if (offset+size)>b.length.
|
||||
* @throws IndexOutOfBoundsException if (offset+size)>b.length.
|
||||
*/
|
||||
public void getBytes(BigInteger value, int size, byte[] b, int offset);
|
||||
|
||||
|
|
|
@ -242,7 +242,7 @@ public final class NumericUtilities {
|
|||
/**
|
||||
* Get an unsigned aligned value corresponding to the specified unsigned value
|
||||
* which will be greater than or equal the specified value.
|
||||
* @param value value to be aligned
|
||||
* @param unsignedValue value to be aligned
|
||||
* @param alignment alignment
|
||||
* @return aligned value
|
||||
*/
|
||||
|
@ -270,7 +270,7 @@ public final class NumericUtilities {
|
|||
*
|
||||
* For example, consider the mask 00001111:01011100, and the value 00001001:00011000. This
|
||||
* will display as {@code X8:[x0x1][10xx]}. To see the correlation, consider the table:
|
||||
* <table>
|
||||
* <table><caption></caption>
|
||||
* <tr><th>Display</th><th>{@code X}</th> <th>{@code 8}</th> <th>{@code :}</th>
|
||||
* <th>{@code [x0x1]}</th><th>{@code [10xx]}</th></tr>
|
||||
* <tr><th>Mask</th> <td>{@code 0000}</td><td>{@code 1111}</td><td>{@code :}</td>
|
||||
|
@ -514,7 +514,7 @@ public final class NumericUtilities {
|
|||
* <li> 10 - renders <code>number</code> as a base-10 integer</li>
|
||||
* <li> 16 (default) - renders <code>number</code> base-16 integer</li>
|
||||
* </ul>
|
||||
* <table>
|
||||
* <table><caption></caption>
|
||||
* <tr><th>Number</th><th>Radix</th><th>DEFAULT Mode Alias</th><th><i>UNSIGNED</i> Mode Value</th><th><i>SIGNED</i> Mode Value</th></tr>
|
||||
* <tr><td> </td><td></td><td><i></i></td><td></td><td></td></tr>
|
||||
* <tr align=right><td>100</td><td>2</td><td><i>UNSIGNED</i></td><td>1100100b</td><td>1100100b</td></tr>
|
||||
|
|
|
@ -20,7 +20,7 @@ import java.util.ListIterator;
|
|||
/**
|
||||
* Wraps a {@link ListIterator} so that the operations are reversed.
|
||||
*
|
||||
* @note you must obtain an iterator that is already at its end. E.g., if you wish to traverse a
|
||||
* NOTE: you must obtain an iterator that is already at its end. E.g., if you wish to traverse a
|
||||
* list in reverse, you would use
|
||||
* {@code new ReversedListIterator<>(list.listIterator(list.size()))}.
|
||||
*
|
||||
|
|
|
@ -44,7 +44,7 @@ public class TestSuiteUtilities {
|
|||
/**
|
||||
* Build JUnit test suite for the specified package.
|
||||
* TestSuite includes sub-TestSuites for each sub-package.
|
||||
* @param pkg java package
|
||||
* @param pkgName the java package name
|
||||
* @return test suite
|
||||
*/
|
||||
public static TestSuite getTestSuite(String pkgName) {
|
||||
|
@ -53,7 +53,7 @@ public class TestSuiteUtilities {
|
|||
|
||||
/**
|
||||
* Build JUnit test suite for the specified package only.
|
||||
* @param pkg java package
|
||||
* @param pkgName the java package name
|
||||
* @return test suite
|
||||
*/
|
||||
public static TestSuite getPkgTestSuite(String pkgName) {
|
||||
|
@ -447,10 +447,10 @@ public class TestSuiteUtilities {
|
|||
/**
|
||||
* Create the Java source file a JUnit TestSuite which
|
||||
* includes all TestCases within a package directory.
|
||||
* @param baseDir
|
||||
* @param className
|
||||
* @param pkgName
|
||||
* @param recurse
|
||||
* @param baseDir the base package directory
|
||||
* @param className the class name
|
||||
* @param pkgName the java package name
|
||||
* @throws IOException
|
||||
*/
|
||||
public static void createTestSuites(File baseDir, String className, String pkgName) throws IOException {
|
||||
File dir = makeDir(baseDir, pkgName);
|
||||
|
@ -511,9 +511,9 @@ public class TestSuiteUtilities {
|
|||
* Command-line utilities.
|
||||
* <p>
|
||||
* Parameter usage:
|
||||
* <pre>
|
||||
* <pre>{@literal
|
||||
* createAllTests <baseDirPath> <className> <topPackage>
|
||||
* </pre>
|
||||
* }</pre>
|
||||
* @param args
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
|
|
|
@ -73,7 +73,7 @@ public class UserSearchUtils {
|
|||
* Create a regular expression from the given input. <b>Note:</b> the regular expression
|
||||
* created by this method is not a pure regular expression. More specifically, many
|
||||
* regular expression characters passed to this method will be escaped
|
||||
* (see {@link #escapeRegexCharacters(String, boolean, boolean)}.
|
||||
* (see {@link #escapeAllRegexCharacters(String)}.
|
||||
* <p>
|
||||
* Also, globbing characters
|
||||
* <b><u>will</u></b> be changed from a regular expression meaning to a
|
||||
|
@ -96,7 +96,7 @@ public class UserSearchUtils {
|
|||
* @param caseSensitive
|
||||
* true if the regular expression is case sensitive
|
||||
* @return Pattern the compiled regular expression
|
||||
* @throws PatternSyntaxExpression
|
||||
* @throws java.util.regex.PatternSyntaxException
|
||||
* if the input could be compiled
|
||||
*/
|
||||
public static Pattern createSearchPattern(String input, boolean caseSensitive) {
|
||||
|
@ -122,7 +122,7 @@ public class UserSearchUtils {
|
|||
* @param text
|
||||
* search string
|
||||
* @return Pattern the compiled regular expression
|
||||
* @throws PatternSyntaxExpression
|
||||
* @throws java.util.regex.PatternSyntaxException
|
||||
* if the input could be compiled
|
||||
*/
|
||||
public static Pattern createLiteralSearchPattern(String text) {
|
||||
|
|
|
@ -55,7 +55,7 @@ public class GGlassPane extends JComponent {
|
|||
/**
|
||||
* Default constructor.
|
||||
* <p>
|
||||
* <b>NOTE: </b>You must call {@link #setVisible( true )} on this component <b>after adding it
|
||||
* <b>NOTE: </b>You must call {@link #setVisible(boolean) setVisible(true)} on this component <b>after adding it
|
||||
* to the component</b>. This is because the component will set the visibility to that of
|
||||
* the previous glass pane, which is false by default.
|
||||
*/
|
||||
|
|
|
@ -24,8 +24,7 @@ import java.util.function.Consumer;
|
|||
*
|
||||
* <P>This class is different than normal accumulators in that the values are <b>not</b>
|
||||
* stored internally. As such, calls to {@link #get()}, {@link #iterator()} and
|
||||
* {@link #size()} will reflect having no data. Further, to use this class, each client
|
||||
* must override {@link #itemAdded(Object)} in order to process the data as it arrives.
|
||||
* {@link #size()} will reflect having no data.
|
||||
*
|
||||
* @param <T> the type of the item being accumulated
|
||||
*/
|
||||
|
@ -38,7 +37,7 @@ public class CallbackAccumulator<T> implements Accumulator<T> {
|
|||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param consumer the consumer that will get called each time an item is addded
|
||||
* @param consumer the consumer that will get called each time an item is added
|
||||
*/
|
||||
public CallbackAccumulator(Consumer<T> consumer) {
|
||||
this.consumer = Objects.requireNonNull(consumer, "Consumer callback cannot be null");
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
/* ###
|
||||
* IP: GHIDRA
|
||||
* REVIEWED: YES
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -90,7 +89,6 @@ public class DoubleArrayArray implements Array, Serializable {
|
|||
* @return The double array at the given index. An empty array will
|
||||
* be returned for any index not initialized to
|
||||
* another value.
|
||||
* @exception throws IndexOutOfBoundsException if the index is negative
|
||||
*/
|
||||
public double[] get(int index) {
|
||||
if (index <= starts.length) {
|
||||
|
@ -108,7 +106,6 @@ public class DoubleArrayArray implements Array, Serializable {
|
|||
}
|
||||
/** Removes the array at the given index
|
||||
* @param index index of the array to be removed
|
||||
* @exception throws IndexOutOfBoundsException if the index is negative
|
||||
*/
|
||||
public void remove(int index) {
|
||||
try {
|
||||
|
|
|
@ -63,7 +63,7 @@ public class IntArrayList implements Serializable, Saveable {
|
|||
* @param value value to store
|
||||
*
|
||||
* @throws IndexOutOfBoundsException
|
||||
* if the index is negative OR index > size
|
||||
* if the index is negative OR index > size
|
||||
*/
|
||||
public void add(int index, int value) {
|
||||
if (index < 0 || index > size) {
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
/* ###
|
||||
* IP: GHIDRA
|
||||
* REVIEWED: YES
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -121,7 +120,7 @@ public class LongArrayList implements List<Long> {
|
|||
return longs[index];
|
||||
}
|
||||
/**
|
||||
* @see ghidra.util.datastruct.LongArrayListIf#set(int, long)
|
||||
* @see LongArraySubList#set(int, long)
|
||||
*/
|
||||
public Long set(int index, Long value) {
|
||||
if (index < 0 || index >= size) {
|
||||
|
@ -133,7 +132,7 @@ public class LongArrayList implements List<Long> {
|
|||
}
|
||||
|
||||
/**
|
||||
* @see ghidra.util.datastruct.LongArrayListIf#clear()
|
||||
* @see LongArraySubList#clear()
|
||||
*/
|
||||
public void clear() {
|
||||
size = 0;
|
||||
|
@ -141,14 +140,14 @@ public class LongArrayList implements List<Long> {
|
|||
}
|
||||
|
||||
/**
|
||||
* @see ghidra.util.datastruct.LongArrayListIf#size()
|
||||
* @see LongArraySubList#size()
|
||||
*/
|
||||
public int size() {
|
||||
return size;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see ghidra.util.datastruct.LongArrayListIf#toArray()
|
||||
* @see LongArraySubList#toArray()
|
||||
*/
|
||||
public Long [] toArray() {
|
||||
Long[] values = new Long[size];
|
||||
|
|
|
@ -38,7 +38,6 @@ public class RedBlackTree<K extends Comparable<K>, V> implements Iterable<RedBla
|
|||
|
||||
/**
|
||||
* Creates a new RedBlackKeySet that can store keys between 0 and n.
|
||||
* @param n the maximum key for this set.
|
||||
*/
|
||||
public RedBlackTree() {
|
||||
}
|
||||
|
|
|
@ -115,7 +115,7 @@ public class Stack<E> implements Iterable<E> {
|
|||
* Returns the element at the specified depth in this stack.
|
||||
* 0 indicates the bottom of the stack.
|
||||
* size()-1 indicates the top of the stack.
|
||||
* @param index the depth in the stack.
|
||||
* @param depth the depth in the stack.
|
||||
* @return the element at the specified depth in this stack
|
||||
*/
|
||||
public E get(int depth) {
|
||||
|
|
|
@ -36,7 +36,7 @@ public class MultipleCauses extends Throwable {
|
|||
|
||||
/**
|
||||
* Constructs a new MultipleCauses wrapper with no causes
|
||||
* @note it is rude to leave this empty
|
||||
* NOTE: it is rude to leave this empty
|
||||
*/
|
||||
public MultipleCauses() {
|
||||
super("Multiple Causes");
|
||||
|
@ -64,7 +64,7 @@ public class MultipleCauses extends Throwable {
|
|||
/**
|
||||
* Returns the causes of the parent throwable (possibly an empty collection)
|
||||
* @return the collection of causes of the parent throwable
|
||||
* @note it is rude to leave this empty. If the parent throwable has no cause, or the cause is
|
||||
* NOTE: it is rude to leave this empty. If the parent throwable has no cause, or the cause is
|
||||
* unknown, leave its cause null.
|
||||
*/
|
||||
public synchronized Collection<Throwable> getCauses() {
|
||||
|
|
|
@ -32,7 +32,7 @@ import java.util.Hashtable;
|
|||
* <pre>
|
||||
* GhidraFileChooser chooser = new GhidraFileChooser();
|
||||
* ExtensionFileFilter filter = new ExtensionFileFilter(
|
||||
* new String{"gif", "jpg"}, "JPEG & GIF Images")
|
||||
* new String{"gif", "jpg"}, "JPEG and GIF Images")
|
||||
* chooser.addFileFilter(filter);
|
||||
*</pre>
|
||||
*/
|
||||
|
@ -78,8 +78,8 @@ public class ExtensionFileFilter implements GhidraFileFilter {
|
|||
*/
|
||||
public ExtensionFileFilter(String[] filters, String description) {
|
||||
this.filters = new Hashtable<String, ExtensionFileFilter>(filters.length);
|
||||
for (int i = 0; i < filters.length; i++) {
|
||||
addExtension(filters[i]);//add filters one by one
|
||||
for (String filter : filters) {
|
||||
addExtension(filter);//add filters one by one
|
||||
}
|
||||
setDescription(description);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
/* ###
|
||||
* IP: GHIDRA
|
||||
* REVIEWED: YES
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -389,7 +388,7 @@ public class DepthFirstSearch
|
|||
* portion of the graph with the following
|
||||
* property:
|
||||
* <ol>
|
||||
* <li>If the graph is acyclic then v[i] -> v[j] => i < j .</li>
|
||||
* <li>{@literal If the graph is acyclic then v[i] -> v[j] => i < j .}</li>
|
||||
* <li>If the graph contains cycles, then the above is true except when
|
||||
* (v[i],v[j]) is a back edge.</li>
|
||||
* </ol>
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
/* ###
|
||||
* IP: GHIDRA
|
||||
* REVIEWED: YES
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -20,7 +19,7 @@ package ghidra.util.graph;
|
|||
*
|
||||
* A simple graph is a graph with no parallel edges or loops. This class models
|
||||
* a simple digraph -- edges are directed and a single edge may go from any vertex
|
||||
* to any other vertex. It is possible to have edges A-->B and B-->A however.
|
||||
* to any other vertex. {@literal It is possible to have edges A-->B and B-->A however.}
|
||||
* Attempting to add an edge from A to B when an edge from A to B already exists
|
||||
* causes the edge weight to be increased by the defaultEdgeWeight or the weight
|
||||
* specified.
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
/* ###
|
||||
* IP: GHIDRA
|
||||
* REVIEWED: YES
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -60,9 +59,8 @@ public class ObjectAttribute<T extends KeyedObject> extends Attribute<T> {
|
|||
return false;
|
||||
}
|
||||
|
||||
/** Return the value associated to the specified KeyedObject.
|
||||
* @throws NoValueException if the value has not been set or
|
||||
* the KeyedObject does not belong to the owningSet.
|
||||
/**
|
||||
* Return the value associated to the specified KeyedObject.
|
||||
*/
|
||||
public Object getValue(KeyedObject o) //throws NoValueException
|
||||
{
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
/* ###
|
||||
* IP: GHIDRA
|
||||
* REVIEWED: YES
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -61,9 +60,8 @@ public class StringAttribute<T extends KeyedObject> extends Attribute<T> {
|
|||
return false;
|
||||
}
|
||||
|
||||
/** Return the value associated to the specied KeyedObject.
|
||||
* @throws NoValueException if the value has not been set or
|
||||
* the KeyedObject does not belong to the owningSet.
|
||||
/**
|
||||
* Return the value associated to the specied KeyedObject.
|
||||
*/
|
||||
public String getValue(KeyedObject o) //throws NoValueException
|
||||
{
|
||||
|
|
|
@ -47,7 +47,7 @@ public class HtmlLineSplitter {
|
|||
* @param maxLineLength the max desired length of each output line; 0 or less signals not
|
||||
* to wrap the line based upon length
|
||||
* @return the new lines
|
||||
* @see #wrap(String, int)
|
||||
* @see #wrap(String, int, WhitespaceHandler)
|
||||
* @see #split(String, int, boolean)
|
||||
*/
|
||||
public static List<String> split(String text, int maxLineLength) {
|
||||
|
@ -66,7 +66,7 @@ public class HtmlLineSplitter {
|
|||
* @param retainSpacing true signals to keep whitespace on line breaks; false discards
|
||||
* leading whitespace
|
||||
* @return the new lines
|
||||
* @see #wrap(String, int)
|
||||
* @see #wrap(String, int, WhitespaceHandler)
|
||||
*/
|
||||
public static List<String> split(String text, int maxLineLength, boolean retainSpacing) {
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
/* ###
|
||||
* IP: GHIDRA
|
||||
* REVIEWED: YES
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -22,8 +21,8 @@ package ghidra.util.task;
|
|||
* Pass a SwingRunnable to the RunManager if follow on work needs to be done
|
||||
* after the <code>run()</code> method completes.
|
||||
*
|
||||
* @see RunManager#run(MonitoredRunnable, String)
|
||||
* @see ghidra.util.task.RunManager#run(MonitoredRunnable, String, int)
|
||||
* @see RunManager#runNext(MonitoredRunnable, String)
|
||||
* @see RunManager#runNext(MonitoredRunnable, String, int)
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
|
@ -42,9 +42,9 @@ import utilities.util.reflection.ReflectionUtilities;
|
|||
* <li>Non-blocking update now - this is a conceptual use-case, where the client wishes to perform an
|
||||
* immediate update, but not during the current Swing event. To achieve
|
||||
* this, you could call something like:
|
||||
* <pre>
|
||||
* <pre>{@literal
|
||||
* SwingUtilities.invokeLater(() -> updateManager.updateNow());
|
||||
* </pre>
|
||||
* }</pre>
|
||||
* </li>
|
||||
* </ul>
|
||||
*
|
||||
|
|
|
@ -215,8 +215,8 @@ public abstract class AbstractWorker<T extends Job> {
|
|||
* <b>Warning: Calling this method may leave the program in a bad
|
||||
* state. Thus, it is recommended that you only do so when you known that any job that
|
||||
* could possibly be scheduled does not manipulate sensitive parts of the program; for
|
||||
* example, opening file handles that should be closed before finishing.
|
||||
* <p>
|
||||
* example, opening file handles that should be closed before finishing.</b>
|
||||
* <p><b>
|
||||
* If you are unsure
|
||||
* about whether your jobs handle interrupt correctly, then don't use this method.
|
||||
* </b>
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
/* ###
|
||||
* IP: GHIDRA
|
||||
* REVIEWED: YES
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -29,7 +28,7 @@ import java.math.BigInteger;
|
|||
* attrs.add("BAR", "foo");
|
||||
* attrs.add("PI", 3.14159);
|
||||
* </pre><br>
|
||||
* The output would be: <code>FIVE="0x20" BAR="foo" PI="3.14159".
|
||||
* The output would be: <code>FIVE="0x20" BAR="foo" PI="3.14159".</code>
|
||||
*
|
||||
*/
|
||||
public class XmlAttributes {
|
||||
|
|
|
@ -652,7 +652,7 @@ public class XmlUtilities {
|
|||
*
|
||||
* @param ele the parent element
|
||||
* @param childName the name of the children elements to return
|
||||
* @return List<Element> of elements
|
||||
* @return {@literal List<Element>} of elements
|
||||
*/
|
||||
public static List<Element> getChildren(Element ele, String childName) {
|
||||
return CollectionUtils.asList(ele.getChildren(childName), Element.class);
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
/* ###
|
||||
* IP: GHIDRA
|
||||
* REVIEWED: YES
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -34,7 +33,7 @@ public class XmlPullParserFactory {
|
|||
*
|
||||
* @param input
|
||||
* the input XML stream
|
||||
* @param name
|
||||
* @param inputName
|
||||
* the name of the stream
|
||||
* @param errHandler
|
||||
* the XML error handler
|
||||
|
@ -100,8 +99,6 @@ public class XmlPullParserFactory {
|
|||
* true if the parse should validate against the DTD
|
||||
* @throws SAXException
|
||||
* if an XML parse error occurs
|
||||
* @throws IOException
|
||||
* if an i/o error occurs
|
||||
*/
|
||||
public static XmlPullParser create(String input, String inputName, ErrorHandler errHandler,
|
||||
boolean validate) throws SAXException {
|
||||
|
|
|
@ -31,7 +31,7 @@ import utilities.util.reflection.ReflectionUtilities;
|
|||
* of the current log message. This is to be used in log4j configurations as part
|
||||
* of a pattern layout. eg:
|
||||
*
|
||||
* <PatternLayout pattern="%-5p %m %hl %n"/>
|
||||
* {@literal <PatternLayout pattern="%-5p %m %hl %n"/>}
|
||||
*
|
||||
* See generic.log4jdev.xml for a working example.
|
||||
*/
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue