GP-0: Fixing some javadoc

This commit is contained in:
Ryan Kurtz
2024-09-03 12:57:52 -04:00
parent 8577082976
commit 4eefa887fb
88 changed files with 671 additions and 653 deletions
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -30,8 +30,8 @@ import ghidra.util.exception.InvalidInputException;
* <a id="examples"></a>
* Example strings:
* <ul>
* <li>global{@link Namespace#DELIMITER ::}child1{@link Namespace#DELIMITER ::}child2
* <li>child1
* <li>global{@link Namespace#DELIMITER ::}child1{@link Namespace#DELIMITER ::}child2</li>
* <li>child1</li>
* </ul>
* <p>
* <a id="assumptions"></a>
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -34,11 +34,11 @@ import ghidra.program.util.ProgramSelection;
* Subclasses should override the following methods if they are interested in the corresponding
* events:
* <ul>
* <LI> {@link #programOpened(Program)}
* <LI> {@link #programClosed(Program)}
* <LI> {@link #locationChanged(ProgramLocation)}
* <LI> {@link #selectionChanged(ProgramSelection)}
* <LI> {@link #highlightChanged(ProgramSelection)}
* <LI> {@link #programOpened(Program)}</LI>
* <LI> {@link #programClosed(Program)}</LI>
* <LI> {@link #locationChanged(ProgramLocation)}</LI>
* <LI> {@link #selectionChanged(ProgramSelection)}</LI>
* <LI> {@link #highlightChanged(ProgramSelection)}</LI>
* </ul>
*/
public abstract class ProgramPlugin extends Plugin {
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -50,8 +50,8 @@ import ghidra.util.task.UnknownProgressWrappingTaskMonitor;
* <p>
* The string struct is found in a couple of different ways:
* <ul>
* <li>References from an instruction (see markupStaticStructRefsInFunction)
* <li>Iterating through data segments and making educated guesses (see markupDataSegmentStructs)
* <li>References from an instruction (see markupStaticStructRefsInFunction)</li>
* <li>Iterating through data segments and making educated guesses (see markupDataSegmentStructs)</li>
* </ul>
* Some char[] data is only referenced from Golang string structs that exist temporarily
* in registers after being set by an instruction that statically references the char[] data,
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -23,20 +23,20 @@ import javax.swing.JComponent;
* It is intended to be used by the code completion process, especially the
* CodeCompletionWindow. It encapsulates:
* <ul>
* <li> a description of the completion (what are you completing?)
* <li> the actual String that will be inserted
* <li> an optional Component that will be in the completion List
* <li> the number of characters to remove before the insertion of the completion
* <li> a description of the completion (what are you completing?)</li>
* <li> the actual String that will be inserted</li>
* <li> an optional Component that will be in the completion List</li>
* <li> the number of characters to remove before the insertion of the completion</li>
* </ul>
* <p>
* For example, if one wants to autocomplete a string "Runscr" into "runScript",
* the fields may look as follows:
* <ul>
* <li> description: "runScript (Method)"
* <li> insertion: "runScript"
* <li> component: null or JLabel("runScript (Method)")
* <li> description: "runScript (Method)"</li>
* <li> insertion: "runScript"</li>
* <li> component: null or JLabel("runScript (Method)")</li>
* <li> charsToRemove: 6 (i.e. the length of "Runscr",
* as it may be required later to correctly replace the string)
* as it may be required later to correctly replace the string)</li>
* </ul>
*/
public class CodeCompletion implements Comparable<CodeCompletion> {
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -58,9 +58,9 @@ import resources.Icons;
* Dialog that shows files used for parsing C header files. The profile has a list of source header
* files to parse, followed by parse options (compiler directives). Ghidra supplies a Windows
* profile by default in core/parserprofiles. The user can do "save as" on this default profile to
* create new profiles that will be written to the user's <home>/userprofiles directory. The
* create new profiles that will be written to the user's {@code <home>/userprofiles} directory. The
* CParserPlugin creates this directory if it doesn't exist.
*
* <p>
* The data types resulting from the parse operation can either be added to the data type manager in
* the current program, or written to an archive data file.
*
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -79,8 +79,10 @@ public class FunctionTagTable extends GhidraTable {
/**
* We need to override the renderer for the following cases:
* <li>italicize tags that cannot be edited</li>
* <li>disable rows in the source table that have already been added to the selected function </li>
* <ul>
* <li>italicize tags that cannot be edited</li>
* <li>disable rows in the source table that have already been added to the selected function </li>
* </ul>
*/
@Override
public TableCellRenderer getCellRenderer(int row, int col) {
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -398,8 +398,10 @@ public class InsertBytesWidget extends ReusableDialogComponentProvider implement
/**
* Verifies that the input entered by the user is valid. Meaning:
* <li>The string represents a hex or binary number.</li>
* <li>The string contains only full bytes.</li>
* <ul>
* <li>The string represents a hex or binary number.</li>
* <li>The string contains only full bytes.</li>
* </ul>
*
* @return true if input is valid
*/
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -40,13 +40,13 @@ import resources.Icons;
* The NextPrevCodeUnitPlugin generates a GoTo event based on where the cursor
* is located in the program. The GoTo events provided by this plugin are:
* <UL>
* <LI>Next-Previous Instruction
* <LI>Next-Previous Defined Data
* <LI>Next-Previous Undefined Data
* <LI>Next-Previous Function
* <LI>Next-Previous Non-Function
* <LI>Next-Previous Label
* <LI>Next-Previous Bookmark
* <LI>Next-Previous Instruction</LI>
* <LI>Next-Previous Defined Data</LI>
* <LI>Next-Previous Undefined Data</LI>
* <LI>Next-Previous Function</LI>
* <LI>Next-Previous Non-Function</LI>
* <LI>Next-Previous Label</LI>
* <LI>Next-Previous Bookmark</LI>
* </UL>
*/
//@formatter:off
@@ -49,11 +49,11 @@ import utilities.util.FileUtilities;
* Note: {@link GhidraBundle}, its implementations, and this class constitute a bridge between
* OSGi's {@link Bundle} and Ghidra.
* <ul>
* <li> unqualified, "bundle" will mean {@link GhidraBundle}
* <li> unqualified, "bundle" will mean {@link GhidraBundle}</li>
* <li> use of OSGi types, including {@link Bundle} and {@link Framework}, should be package scoped
* (not public)
* (not public) </li>
* <li> bundle lifecycle is simplified to "active"(same as OSGi "active" state) and "inactive"
* (OSGi "uninstalled" state)
* (OSGi "uninstalled" state)</li>
* </ul>
*/
public class BundleHost {
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -25,8 +25,8 @@ import ghidra.program.model.listing.Program;
* <p>
* Specifically this provides the following:
* <ul>
* <li>Ability to specify if this is a min/max range field
* <li>Allows hex input of the form "0x...." for hex values
* <li>Ability to specify if this is a min/max range field</li>
* <li>Allows hex input of the form "0x...." for hex values</li>
* </ul>
*/
public class RangeFilterTextField extends IntegerTextField {
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -42,8 +42,8 @@ import help.HelpService;
/**
* Displays the results of a query from the {@link ScalarSearchPlugin}. Consists of 2 components:
* <ul>
* <li>The scalar table that is displayed to the user
* <li>The range filter that allows the user to filter the scalar table via a min and max value.
* <li>The scalar table that is displayed to the user</li>
* <li>The range filter that allows the user to filter the scalar table via a min and max value.</li>
* </ul>
*/
public class ScalarSearchProvider extends ComponentProviderAdapter {
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -15,7 +15,7 @@
*/
package ghidra.app.plugin.core.string;
import static ghidra.program.util.string.FoundString.DefinedState.DEFINED;
import static ghidra.program.util.string.FoundString.DefinedState.*;
import java.util.Iterator;
@@ -31,9 +31,9 @@ import ghidra.program.util.string.FoundString;
* Basic Algorithm: Uses a defined data iterator to find all defined data in a program. For
* each defined data, strings are searched as follows:
* <ol>
* <li> is it a string? if so, add to the queue of results
* <li> is it an array? if so, are they non-primitive elements? if so, recursively search them for strings.
* <li> is it a composite (structure or union)? if so, recursively search each element of the structure.
* <li> is it a string? if so, add to the queue of results</li>
* <li> is it an array? if so, are they non-primitive elements? if so, recursively search them for strings.</li>
* <li> is it a composite (structure or union)? if so, recursively search each element of the structure.</li>
* </ol>
* <p>
* This class maintains a queue of all strings found at any given top-level data element. When
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -62,17 +62,17 @@ import ghidra.util.Msg;
* <td>{@code "\033["}</td>
* </tr>
* <tr>
* <td>{@code OSC}
* <td>{@code OSC}</td>
* <td>{@code ESC ]}</td>
* <td>{@code "\033]"}</td>
* </tr>
* <tr>
* <td>{@code ST}
* <td>{@code ST}</td>
* <td>{@code ESC \}</td>
* <td>{@code "\033\\"}</td>
* </tr>
* <tr>
* <td>{@code BEL}
* <td>{@code BEL}</td>
* <td>byte 0x07</td>
* <td>{@code "\007"}</td>
* </tr>
@@ -1,13 +1,12 @@
/* ###
* 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.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -38,10 +37,10 @@ import ghidra.util.task.TaskMonitor;
* The LSDA is comprised of:
* <ul>
* <li>A header that describes the bounds of exception handling support and encoding
* modes for values found later in the LSDA table
* modes for values found later in the LSDA table</li>
* <li>A call site table that describes each location a 'throws' occurs and where
* a corresponding catch block resides, and the actions to take.
* <li>An action table, that describes what the runtime needs to do during unwind
* a corresponding catch block resides, and the actions to take.</li>
* <li>An action table, that describes what the runtime needs to do during unwind</li>
* </ul>
* <p>
* The structures modeled here are described in detail in the C++ ABI.
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -39,16 +39,16 @@ import ghidra.util.SystemUtilities;
* <p>
* <ul>
* <li>discarded and replaced by the existing data type
* ({@link ConflictResult#USE_EXISTING})
* ({@link ConflictResult#USE_EXISTING})</li>
* <li>used to overwrite the existing data type
* ({@link ConflictResult#REPLACE_EXISTING})
* ({@link ConflictResult#REPLACE_EXISTING})</li>
* </ul>
* or the candidate data type was <b>NOT</b> matched with an existing data type,
* and the new data type is:
* <p>
* <ul>
* <li>kept, but renamed with a .conflictNNNN suffix to make it unique
* ({@link ConflictResult#RENAME_AND_ADD})
* ({@link ConflictResult#RENAME_AND_ADD})</li>
* </ul>
* <b>NOTE:</b> structures with alignment (instead of being statically laid out)
* are not treated specially and will not match other aligned or non-aligned
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -31,7 +31,6 @@ import ghidra.program.model.listing.Program;
import ghidra.program.model.mem.Memory;
import ghidra.program.model.mem.MemoryBlock;
import ghidra.program.model.util.CodeUnitInsertionException;
import ghidra.util.Msg;
import ghidra.util.classfinder.ExtensionPointProperties;
import ghidra.util.exception.CancelledException;
import ghidra.util.task.TaskMonitor;
@@ -39,11 +38,11 @@ import ghidra.util.task.TaskMonitor;
/**
* Handles marking up and program info for basic ELF note (and note-like) sections.
* <ul>
* <li>NoteAbiTag
* <li>NoteGnuBuildId
* <li>NoteGnuProperty
* <li>GnuDebugLink (not a note)
* <li>ElfComment (not a note)
* <li>NoteAbiTag</li>
* <li>NoteGnuBuildId</li>
* <li>NoteGnuProperty</li>
* <li>GnuDebugLink (not a note)</li>
* <li>ElfComment (not a note)</li>
* </ul>
* <p>
* Runs after other ElfInfoProducers that have a normal priority.
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -30,10 +30,10 @@ import ghidra.program.model.lang.Register;
* <p>
* Assigning custom storage for the return value is complicated by:
* <ul>
* <li>golang storage allocations depend on the formal ordering of the return values
* <li>stack storage must be last in a list of varnodes
* <li>golang storage allocations depend on the formal ordering of the return values</li>
* <li>stack storage must be last in a list of varnodes</li>
* <li>the decompiler maps a structure's contents to the list of varnodes in an endian-dependent
* manner.
* manner.</li>
* </ul>
* To meet these complications, the structure's layout is modified to put all items that were
* marked as being stack parameters to either the front or back of the structure.
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -28,16 +28,17 @@ import ghidra.util.task.TaskMonitor;
/**
* Handles marking up and program info for Golang binaries.
* <p>
* <ul>
* <li>NoteGoBuildId
* <li>GoBuildInfo
* <ul>
* <li>Go version
* <li>App path, main package
* <li>Module dependency list
* <li>Build settings / flags
* </ul>
* <li>NoteGoBuildId</li>
* <li>GoBuildInfo</li>
* <li>
* <ul>
* <li>Go version</li>
* <li>App path, main package</li>
* <li>Module dependency list</li>
* <li>Build settings / flags</li>
* </ul>
* </li>
* </ul>
*/
public class GolangElfInfoProducer implements ElfInfoProducer {
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -225,8 +225,8 @@ public class GoFuncData implements StructureMarkup<GoFuncData> {
* <p>
* The information that can be recovered about arguments is limited to:
* <ul>
* <li>the size of the argument
* <li>general grouping (eg. grouping of arg values as a structure or array)
* <li>the size of the argument</li>
* <li>general grouping (eg. grouping of arg values as a structure or array)</li>
* </ul>
* Return value information is unknown and always represented as an "undefined" data type.
*
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -58,22 +58,26 @@ import ghidra.util.task.UnknownProgressWrappingTaskMonitor;
* <li>Find the GoBuildInfo struct. This struct is the easiest to locate, even when the binary
* is stripped. This gives us the go pointerSize (probably same as ghidra pointer size) and the
* goVersion. This struct does not rely on StructureMapping, allowing its use before a
* DataTypeMapper is created.
* <li>Create DataTypeMapper
* <li>Find the runtime.firstmoduledata structure.
* <ul>
* <li>If there are symbols, just use the symbol or named memory block.
* <li>If stripped:
* DataTypeMapper is created.</li>
* <li>Create DataTypeMapper</li>
* <li>Find the runtime.firstmoduledata structure.</li>
* <li>
* <ul>
* <li>If there are symbols, just use the symbol or named memory block.</li>
* <li>If stripped:</li>
* <li>
* <ul>
* <li>Find the pclntab. This has a magic signature, a pointerSize, and references
* to a couple of tables that are also referenced in the moduledata structure.
* to a couple of tables that are also referenced in the moduledata structure.</li>
* <li>Search memory for a pointer to the pclntab struct. This should be the first
* field of the moduledata structure. The values that are duplicated between the
* two structures can be compared to ensure validity.
* two structures can be compared to ensure validity.</li>
* <li>Different binary formats (Elf vs PE) will determine which memory blocks to
* search.
* </ul>
* </ul>
* search.</li>
* </ul>
* </li>
* </ul>
* </li>
* </ul>
*/
public class GoRttiMapper extends DataTypeMapper implements DataTypeMapperContext {
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -196,7 +196,7 @@ public class MachHeader implements StructConverter {
/**
* Parses only this {@link MachHeader}'s {@link SegmentCommand segments}
*
* @return A {@List} of this {@link MachHeader}'s {@link SegmentCommand segments}
* @return A {@link List} of this {@link MachHeader}'s {@link SegmentCommand segments}
* @throws IOException If there was an IO-related error
*/
public List<SegmentCommand> parseSegments() throws IOException {
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -260,7 +260,7 @@ public class CParserUtils {
*
* @param filenames names of files in order to parse, could include strings with
* "#" at start, which are ignored as comments
* @param args arguments for parsing, "-D<defn>=", "-I<includepath>"
* @param args arguments for parsing, {@code -D<defn>=, -I<includepath>}
*
* @param dataFileName name of data type archive file (include the .gdt extension)
*
@@ -297,8 +297,9 @@ public class CParserUtils {
*
* @param filenames names of files in order to parse, could include strings with
* "#" at start, which are ignored as comments
* @param includePaths paths to include files, instead of using "-I<includepath>" in args
* @param args arguments for parsing, "-D<defn>=", ( "-I<includepath>" use includePaths parm instead)
* @param includePaths paths to include files, instead of using {@code -I<includepath>} in args
* @param args arguments for parsing, {@code -D<defn>=}, ( {@code -I<includepath>} use
* includePaths parm instead)
*
* @param dataFileName name of data type archive file (include the .gdt extension)
*
@@ -338,8 +339,8 @@ public class CParserUtils {
*
* @param filenames names of files in order to parse, could include strings with
* "#" at start, which are ignored as comments
* @param includePaths path to include files, could also be in args with "-I<includepath>"
* @param args arguments for parsing, "-D<defn>=", "-I<includepath>"
* @param includePaths path to include files, could also be in args with {@code -I<includepath>}
* @param args arguments for parsing, {@code -D<defn>=, -I<includepath>}
*
* @param dataFileName name of data type archive file (include the .gdt extension)
*
@@ -391,11 +392,12 @@ public class CParserUtils {
*
* @param filenames names of files in order to parse, could include strings with
* "#" at start, which are ignored as comments
* @param args arguments for parsing, "-D<defn>=", ( "-I<includepath>" use includePaths parm instead)
* @param args arguments for parsing, {@code -D<defn>=}, ({@code -I<includepath>} use
* includePaths parm instead)
*
* @param existingDTMgr datatypes will be populated into this provided DTMgr, can pass Program or File DTMgr
*
* @param languageId language identication to use for data type organization definitions (int, long, ptr size)
* @param languageId language identification to use for data type organization definitions (int, long, ptr size)
* @param compileSpecId compiler specification to use for parsing
*
* @param monitor used to cancel or provide results
@@ -431,12 +433,12 @@ public class CParserUtils {
*
* @param filenames names of files in order to parse, could include strings with
* "#" at start, which are ignored as comments
* @param includePaths paths to include files, instead of using "-I<includepath>" in args
* @param args arguments for parsing, "-D<defn>=", ( "-I<includepath>" use includePaths parm instead)
* @param includePaths paths to include files, instead of using {@code -I<includepath>} in args
* @param args arguments for parsing, {@code -D<defn>=}, ( {@code -I<includepath>} use includePaths parm instead)
*
* @param existingDTMgr datatypes will be populated into this provided DTMgr, can pass Program or File DTMgr
*
* @param languageId language identication to use for data type organization definitions (int, long, ptr size)
* @param languageId language identification to use for data type organization definitions (int, long, ptr size)
* @param compileSpecId compiler specification to use for parsing
*
* @param monitor used to cancel or provide results
@@ -508,8 +510,8 @@ public class CParserUtils {
*
* @param filenames names of files in order to parse, could include strings with
* "#" at start, which are ignored as comments
* @param includePaths paths to include files, instead of using "-I<includepath>" in args
* @param args arguments for parsing, "-D<defn>=", ( "-I<includepath>" use includePaths parm instead)
* @param includePaths paths to include files, instead of using {@code -I<includepath>} in args
* @param args arguments for parsing, {@code -D<defn>=}, ( {@code -I<includepath>} use includePaths parm instead)
*
* @param dtMgr datatypes will be populated into this provided DTMgr, can pass Program or File DTMgr
*
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -200,13 +200,13 @@ public class BoundedBufferedReader extends Reader {
* true:
* <ul>
*
* <li>The specified number of characters have been read,
* <li>The specified number of characters have been read,</li>
*
* <li>The <code>read</code> method of the underlying stream returns
* <code>-1</code>, indicating end-of-file, or
* <code>-1</code>, indicating end-of-file, or</li>
*
* <li>The <code>ready</code> method of the underlying stream returns
* <code>false</code>, indicating that further input requests would block.
* <code>false</code>, indicating that further input requests would block.</li>
*
* </ul>
* If the first <code>read</code> on the underlying stream returns
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -39,13 +39,13 @@ import ghidra.util.SystemUtilities;
* <p>
* Examples (pipes shown in red since they are hard to see):
* <ul>
* <li><b>file://dir/subdir</b> -- simplest example, locates a file on local computer filesystem.
* <li><b>file://dir/subdir/example.zip<span style="color:red">|</span>zip://readme.txt</b> -- points to a file named "readme.txt" in a zip file.
* <li><b>file://dir/subdir/example.zip<span style="color:red">|</span>zip://dir/nested.tar<span style="color:red">|</span>tar://file.txt</b> -- points to
* a file inside a TAR archive, which is inside a ZIP archive, which is on the local filesystem.
* <li><b>file://dir/subdir/example.zip?MD5=1234567<span style="color:red">|</span>zip://readme.txt?MD5=987654</b> --
* <li><b>file://dir/subdir</b> -- simplest example, locates a file on local computer filesystem.</li>
* <li><b>file://dir/subdir/example.zip</b><span style="color:red;font-weight:bold;">|</span><b>zip://readme.txt</b> -- points to a file named "readme.txt" in a zip file.</li>
* <li><b>file://dir/subdir/example.zip</b><span style="color:red;font-weight:bold;">|</span><b>zip://dir/nested.tar</b><span style="color:red;font-weight:bold;">|</span><b>tar://file.txt</b> -- points to
* a file inside a TAR archive, which is inside a ZIP archive, which is on the local filesystem.</li>
* <li><b>file://dir/subdir/example.zip?MD5=1234567</b><span style="color:red;font-weight:bold;">|</span><b>zip://readme.txt?MD5=987654</b> --
* points to a file named "readme.txt" (with a MD5 hash) in a zip file (that has another
* MD5 hash).
* MD5 hash).</li>
* </ul>
* <p>
* See {@link FSRLRoot} for examples of how FSRL and FSRLRoot's are related.
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -26,11 +26,11 @@ package ghidra.formats.gfilesystem;
* <p>
* <ul>
* <li>FSRLRoot [ file:// ]<br>
* "file://"
* "file://"</li>
* <li>{@literal FSRLRoot [ file:// ] <---- FSRL [ /filename.txt ]}<br>
* "file:///filename.txt"
* "file:///filename.txt"</li>
* <li>{@literal FSRLRoot [ file:// ] <---- FSRL [ /filename.txt ] <--- FSRLRoot [ subfs:// ]}<br>
* "file:///filename.txt|subfs://"
* "file:///filename.txt|subfs://"</li>
* </ul>
*/
public class FSRLRoot extends FSRL {
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -57,8 +57,8 @@ import ghidra.util.task.TaskMonitor;
* <p>
* NOTE:
* <ol>
* <li>NO METHODS *SHOULD* EVER BE REMOVED FROM THIS CLASS.
* <li>NO METHOD SIGNATURES *SHOULD* EVER BE CHANGED IN THIS CLASS.
* <li>NO METHODS *SHOULD* EVER BE REMOVED FROM THIS CLASS.</li>
* <li>NO METHOD SIGNATURES *SHOULD* EVER BE CHANGED IN THIS CLASS.</li>
* </ol>
* <p>
* This class is used by GhidraScript.
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -22,12 +22,12 @@ import ghidra.xml.XmlPullParser;
/**
* ByteSearch post search rule when a pattern is found. Used when a pattern must have a certain
* alignment at an offset from the location the pattern matches.
*
* <p>
* The pattern can be constructed or restored from XML of the form,
* where alignOffset=mark, alignmask=bits
*
* <align mark="0" bits="1"/>
*
* <pre>{@code
* <align mark="0" bits="1"/>
* }</pre>
*/
public class AlignRule implements PostRule {
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -185,7 +185,7 @@ public class Pattern extends DittedBitSequence {
}
/**
* Read just the post patterns from the <patternpair> tags
* Read just the post patterns from the {@code <patternpair>} tags
* @param file is the file to read from
* @param patternList collects the resulting Pattern objects
* @param pfactory is the factory for constructing postrules and matchactions
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -27,28 +27,31 @@ import ghidra.xml.XmlPullParser;
* To match, a sequence from the "pre" sequence set must first match, then one of the "post" patterns
* is matched relative to the matching "pre" pattern. This class is really a storage object for the
* patterns and provides a mechanism to read the pre/post patterns from an XML file.
*
* <p>
* The larger pattern has the idea of bits of check, which means the number of bits that are fixed to
* a value when matching (not don't care). There is a pre pattern bits of check and post pattern bits
* of check. The bits of check are used to statistically gauge the accuracy of the pattern.
*
* <p>
* An example of the XML format follows:
* <patternpairs totalbits="32" postbits="16">
* <prepatterns>
* <data>0xe12fff1. </data>
* <data>0xe12fff1e 0x46c0 </data>
* <data>0xe12fff1e 0xe1a00000 </data>
* </prepatterns>
* <pre> {@code
* <patternpairs totalbits="32" postbits="16">
* <prepatterns>
* <data>0xe12fff1. </data>
* <data>0xe12fff1e 0x46c0 </data>
* <data>0xe12fff1e 0xe1a00000 </data>
* </prepatterns>
*
* <postpatterns>
* <data> 0xe24dd... 11101001 00101101 .1...... ....0000 </data>
* <data> 11101001 00101101 .1...... ....0000 0xe24dd... </data>
* <data> 11101001 00101101 .1...... ....0000 0x........ 0xe24dd... </data>
* <align mark="0" bits="3"/>
* <setcontext name="TMode" value="0"/>
* <funcstart/>
* </postpatterns>
* </patternpairs>
* <postpatterns>
* <data> 0xe24dd... 11101001 00101101 .1...... ....0000 </data>
* <data> 11101001 00101101 .1...... ....0000 0xe24dd... </data>
* <data> 11101001 00101101 .1...... ....0000 0x........ 0xe24dd... </data>
* <align mark="0" bits="3"/>
* <setcontext name="TMode" value="0"/>
* <funcstart/>
* </postpatterns>
* </patternpairs>
* }
* </pre>
*
* Note: The post Patterns can also have a set of rules that must be satisfied along with one of the
* Pattern DittedBitSequence matches.
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -462,18 +462,18 @@ public class DecompInterface {
* The current predefined analysis class are:
* <ul>
* <li>"decompile" - this is the default, and performs all
* analysis steps suitable for producing C code.
* analysis steps suitable for producing C code.</li>
* <li>"normalize" - omits type recovery from the analysis
* and some of the final clean-up steps involved in
* making valid C code. It is suitable for creating
* normalized pcode syntax trees of the dataflow.
* normalized pcode syntax trees of the dataflow.</li>
* <li>"firstpass" - does no analysis, but produces an
* unmodified syntax tree of the dataflow from the
* <li>"register" - does ???.
* unmodified syntax tree of the dataflow from the</li>
* <li>"register" - does ???.</li>
* <li>"paramid" - does required amount of decompilation
* followed by analysis steps that send parameter
* measure information for parameter id analysis.
* raw pcode.
* raw pcode.</li>
* </ul>
*
* <p>
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -37,7 +37,7 @@ import utility.function.Dummy;
* {@link #waitForResults()}.</li>
* <li>For non-blocking usage, simply call
* {@link #process(Iterator, Consumer)}, passing the consumer of the results.</li>
* </ol>
* </ul>
* <p>
*
* @param <I> The input data needed by the supplied {@link QCallback}
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -27,11 +27,11 @@ import ghidra.util.exception.AssertException;
* <p>
* This type of node has the following layout within a single DataBuffer
* (field size in bytes):
* <pre>
* <pre>{@code
* | NodeType(1) | KeyCount(4) | PrevLeafId(4) | NextLeafId(4) | Key0(8) | RecOffset0(4) | IndFlag0(1) |...
*
* | KeyN(8) | RecOffsetN(4) | IndFlagN(1) |...<FreeSpace>... | RecN |... | Rec0 |
* </pre>
* }</pre>
* IndFlag - if not zero the record has been stored within a chained DBBuffer
* whose 4-byte integer buffer ID has been stored within this leaf at the record offset.
*/
@@ -49,17 +49,17 @@ import utilities.util.reflection.ReflectionUtilities;
* <p>
* This also provides several useful convenience methods:
* <ul>
* <li>{@link #addLocalAction(DockingActionIf)}
* <li>{@link #addToTool()}
* <li>{@link #setVisible(boolean)}
* <li>{@link #setTitle(String)}
* <li>{@link #setIcon(Icon)}
* <li>{@link #addLocalAction(DockingActionIf)}</li>
* <li>{@link #addToTool()}</li>
* <li>{@link #setVisible(boolean)}</li>
* <li>{@link #setTitle(String)}</li>
* <li>{@link #setIcon(Icon)}</li>
* </ul>
* <p>
* There are a handful of stub methods that can be overridden as desired:
* <ul>
* <li>{@link #componentActivated()} and {@link #componentDeactived()}
* <li>{@link #componentHidden()} and {@link #componentShown()}
* <li>{@link #componentActivated()} and {@link #componentDeactived()}</li>
* <li>{@link #componentHidden()} and {@link #componentShown()}</li>
* </ul>
*
* <p>
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -86,7 +86,7 @@ public class KeyBindingOverrideKeyEventDispatcher implements KeyEventDispatcher
* </ol>
* Ghidra has altered this flow to be:
* <ol>
* <li><b>Reserved keybinding actions</b>
* <li><b>Reserved keybinding actions</b></li>
* <li>KeyListeners on the focused Component</li>
* <li>InputMap and ActionMap actions for the Component</li>
* <li><b>Ghidra tool-level actions</b></li>
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -21,8 +21,8 @@ import java.util.Map.Entry;
/**
* A class that tracks:
* <ul>
* <li>placeholders that are being used for a given provider
* <li>placeholders that are no longer being used, which are available for reuse
* <li>placeholders that are being used for a given provider</li>
* <li>placeholders that are no longer being used, which are available for reuse </li>
* </ul>
*/
class PlaceholderSet {
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -51,9 +51,9 @@ public interface Draggable {
/**
* Get the drag actions supported by this drag source:
* <UL>
* <li>DnDConstants.ACTION_MOVE
* <li>DnDConstants.ACTION_COPY
* <li>DnDConstants.ACTION_COPY_OR_MOVE
* <li>DnDConstants.ACTION_MOVE</li>
* <li>DnDConstants.ACTION_COPY</li>
* <li>DnDConstants.ACTION_COPY_OR_MOVE</li>
* </UL>
*
* @return the drag actions
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -34,9 +34,7 @@ import ghidra.util.exception.AssertException;
* A utility class to easily show dialogs that require input from the user.
*
*
* <h2>Option Dialogs</h2><br>
* <blockquote>
* <p>
* <h2>Option Dialogs</h2>
* The primary type of
* dialog provided herein is the basic option dialog that allows the user to specify the buttons
* that appear on the dialog. By default, the given option text will appear as a button(s),
@@ -44,55 +42,37 @@ import ghidra.util.exception.AssertException;
* {@link #showOptionNoCancelDialog(Component, String, String, String, String, int)} methods if
* you do not want a <code>Cancel</code> button. To use this type of dialog you can use the
* various <b><code>showOptionDialog*</code></b> methods.
* </p>
* <p>
* Each of the option dialog methods will return a result, which is a number indicating the
* choice made by the user. See each method for more details.
* </p>
* </blockquote>
*
*
* <h3>Data Input and Choice Dialogs</h3><br>
* <blockquote>
* <p>
* The methods listed here allow the user to either enter data from the keyboard or to choose
* from a pre-populated list of data.
* </p>
* <blockquote>
* {@link #showInputChoiceDialog(Component, String, String, String[], String, int)}<br>
* {@link #showInputMultilineDialog(Component, String, String, String)}<br>
* {@link #showInputSingleLineDialog(Component, String, String, String)}
* </blockquote>
* </blockquote>
* <h3>Data Input and Choice Dialogs</h3>
* The methods listed here allow the user to either enter data from the keyboard or to choose
* from a pre-populated list of data.
* <ul>
* <li>{@link #showInputChoiceDialog(Component, String, String, String[], String, int)}</li>
* <li>{@link #showInputMultilineDialog(Component, String, String, String)}</li>
* <li>{@link #showInputSingleLineDialog(Component, String, String, String)}</li>
* </ul>
*
*
* <h3>Yes/No Dialogs</h3><br>
* <blockquote>
* <p>
* <h3>Yes/No Dialogs</h3>
* Finally, there are a series of methods that present <code>Yes</code> and <code>No</code> buttons in
* a dialog. There are versions that do and do not have a <code>Cancel</code> button.
* </p>
* </blockquote>
*
*
* <h3>Basic Message / Warning / Error Dialogs</h3><br>
* <blockquote>
* <p>
* <h3>Basic Message / Warning / Error Dialogs</h3>
* If you would like to display a simple message to the user, but do not require input from the
* user, then you should use the various methods of {@link Msg}, such as
* {@link Msg#showInfo(Object, Component, String, Object)}.
* </p>
* <p>
* Note, the user will be unable to select any text shown in the message area of the dialog.
* </p>
* </blockquote>
*
* <h3>"Apply to All" / "Don't Show Again"</h3><br>
* <blockquote>
* <p>For more advanced input dialog usage, to include allowing the user to tell the dialog
* <h3>"Apply to All" / "Don't Show Again"</h3>
* For more advanced input dialog usage, to include allowing the user to tell the dialog
* to remember a particular decision, or to apply a given choice to all future request, see
* {@link OptionDialogBuilder}.
* </blockquote>
*
* @see Msg
* @see OptionDialogBuilder
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -77,7 +77,7 @@ import ghidra.util.task.SwingUpdateManager;
* The simplest use case is to create a text field, create an autocompleter with a custom model, and
* then attach and show.
*
* <pre>
* <pre>{@code
* JTextField field = new JTextField();
*
* AutocompletionModel<String> model = new AutocompletionModel<String>() {
@@ -90,7 +90,7 @@ import ghidra.util.task.SwingUpdateManager;
* completer.attachTo(field);
* // ... Add the field to, e.g., a dialog, and show.
*
* </pre>
* }</pre>
*
* @param <T> the type of suggestions presented by this autocompleter.
*/
@@ -626,13 +626,13 @@ public class GhidraFileChooser extends ReusableDialogComponentProvider implement
* Sets the <code>GhidraFileChooser</code> to allow the user to just
* select files, just select
* directories, or select both files and directories. The default is
* <code>JFilesChooser.FILES_ONLY</code>.
* {@link JFileChooser#FILES_ONLY}.
*
* @param mode the type of files to be displayed:
* <ul>
* <li>GhidraFileChooser.FILES_ONLY
* <li>GhidraFileChooser.DIRECTORIES_ONLY
* <li>GhidraFileChooser.FILES_AND_DIRECTORIES
* <li>{@link GhidraFileChooser#FILES_ONLY}</li>
* <li>{@link GhidraFileChooser#DIRECTORIES_ONLY}</li>
* <li>{@link GhidraFileChooser#FILES_AND_DIRECTORIES}</li>
* </ul>
*
* @exception IllegalArgumentException if <code>mode</code> is an
@@ -1007,8 +1007,8 @@ public class GhidraFileChooser extends ReusableDialogComponentProvider implement
* <ul>
* <li>If the parent directory of the file exists, then the parent directory will be made
* the current directory and the name of the file will be put into the filename
* textfield; otherwise,
* <li>If the parent file does <b>not</b> exist, then the selection is cleared.
* textfield; otherwise,</li>
* <li>If the parent file does <b>not</b> exist, then the selection is cleared.</li>
* </ul>
* <p>
* If the given file is null, then the selected file state is cleared.
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -26,8 +26,8 @@ import utility.function.Dummy;
/**
* Default implementation of the {@link SearchListModel}. Since this model's primary purpose is
* to also implement the {@link ListModel}, this class extends the AbstractListModel.
* This model's primary type is T, but it implements the list model on SearchListEntry<T> to provide
* more information for the custom rendering that groups items into categories.
* This model's primary type is T, but it implements the list model on {@code SearchListEntry<T>}
* to provide more information for the custom rendering that groups items into categories.
*
* @param <T> The type of items to display and select.
*/
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -65,8 +65,8 @@ import utility.function.Callback;
*
* <b><u>Important Usage Notes</u></b>
* <ul>
* <li><b><a id="translation"></a>You must translate row values retrieved from the table using
* this panel.</b>
* <li><a id="translation"></a><b>You must translate row values retrieved from the table using
* this panel.</b></li>
* <p>
* Since this class wraps the given table with a new model, you must use this class to
* translate row number values. For example, when getting the selected row, the normal Java
@@ -84,14 +84,14 @@ import utility.function.Callback;
* </span>
* </pre>
*
* <li><b>This class may set a new model on the given table, which can affect how tables are sized.</b>
* <li><b>This class may set a new model on the given table, which can affect how tables are sized.</b></li>
* <p>
* If {@link JTable#getAutoCreateColumnsFromModel()} returns true, then the columns will
* be recreated and resized when this class is constructed.
* <li>The {@link TableFilter} used by this class will be passed the empty string ("") when
* {@link TableFilter#acceptsRow(Object)} is called.
* {@link TableFilter#acceptsRow(Object)} is called.</li>
* <li><b>You cannot rely on {@link JTable#getRowCount()} to access all of the table data,
* since the data may be filtered.</b>
* since the data may be filtered.</b></li>
* <p>
* To get a row count that is always all of the model's data, call
* {@link #getUnfilteredRowCount()}.
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -38,9 +38,9 @@ public class LocalDateSpinnerModel extends AbstractSpinnerModel {
* @param maxDate maximum value for spinner model. (Can be null)
* @param calendarField specifies the year, month, or day to increment/decrement. One of:
* <ul>
* <li><code>Calendar.YEAR</code>
* <li><code>Calendar.MONTH</code>
* <li><code>Calendar.DAY_OF_MONTH</code>
* <li>{@link Calendar#YEAR}</li>
* <li>{@link Calendar#MONTH}</li>
* <li>{@link Calendar#DAY_OF_MONTH}</li>
* </ul>
* <p>
*/
@@ -128,9 +128,9 @@ public class LocalDateSpinnerModel extends AbstractSpinnerModel {
*
* @param calendarField one of
* <ul>
* <li><code>Calendar.YEAR</code>
* <li><code>Calendar.MONTH</code>
* <li><code>Calendar.DAY_OF_MONTH</code>
* <li>{@link Calendar#YEAR}</li>
* <li>{@link Calendar#MONTH}</li>
* <li>{@link Calendar#DAY_OF_MONTH}</li>
* </ul>
* <p>
*
@@ -191,18 +191,18 @@ public class TableUpdateJob<T> {
* effect depends on the running job's state:
* <ul>
* <li>If the sort state hasn't happened yet, all it does is set the comparator for when
* the sort occurs.
* the sort occurs.</li>
* <li>If the sort state has already been started or completed, then this method attempts
* to stop the current process phase and cause the state machine to return to the sort
* phase.
* phase.</li>
* <li>If the current job has already entered the DONE state, then the sort cannot take
* effect in this job and a false value is returned to indicate the
* sort was not handled by this job.
* sort was not handled by this job.</li>
* </ul>
* @param newSortingContext the TableColumnComparator to use to sort the data.
* @param forceSort True signals to re-sort, even if this is already sorted
* @return true if the sort can be processed by this job, false if this job is essentially
* already completed and therefor cannot perform the sort job.
* already completed and therefore cannot perform the sort job.
*/
public synchronized boolean requestSort(TableSortingContext<T> newSortingContext,
boolean forceSort) {
@@ -225,16 +225,16 @@ public class TableUpdateJob<T> {
* depends on the running job's state:
* <ul>
* <li>If the filter state hasn't happened yet, then nothing needs to be done as this job
* will filter later anyway.
* will filter later anyway.</li>
* <li>If the filter state has already been started or completed, then this method
* attempts to stop the current process phase and cause the state machine to return to
* the filter phase.
* the filter phase.</li>
* <li>If the current job has already entered the DONE state, then the filter cannot take
* effect in this job and a false value is returned to indicate the filter was not
* handled by this job.
* handled by this job.</li>
* </ul>
* @return true if the filter can be processed by this job, false if this job is essentially
* already completed and therefor cannot perform the filter job.
* already completed and therefore cannot perform the filter job.
*/
public synchronized boolean requestFilter() {
if (currentState == DONE) {
@@ -718,7 +718,7 @@ public class TableUpdateJob<T> {
}
/**
* Wraps a comparator<T> to add progress monitoring and cancel checking
* Wraps a {@link Comparator} to add progress monitoring and cancel checking
*
* @param <T> The type of data being sorted
*/
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -30,7 +30,7 @@ import ghidra.util.exception.CancelledException;
* the Java concurrent structures (e.g., {@link AtomicBoolean}). In order to keep the values of
* this class's fields update-to-date, we have chosen to synchronize the package-level client of
* this class. <b>If this class is ever made public, then most of the methods herein need to
* be synchronized to prevent race conditions and to provide visibility.
* be synchronized to prevent race conditions and to provide visibility.</b>
*/
class BasicTaskMonitor implements TaskMonitor {
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -26,7 +26,7 @@ import java.awt.Component;
* {@link #TaskLauncher(Task, Component, int, int)}. Alternatively, for simpler uses,
* see one of the many static convenience methods.
*
* <p><b><a id="modal_usage">Modal Usage</a></b><br>
* <p><a id="modal_usage"><b>Modal Usage</b></a></p>
* Most clients of this class should not be concerned with where
* the dialog used by this class will appear. By default, it will be shown over
* the active window, which is the desired
@@ -63,13 +63,12 @@ public class TaskLauncher {
/**
* A convenience method to directly run a {@link MonitoredRunnable} in a separate
* thread as a {@link Task}, displaying a non-modal progress dialog.
* <p>
* <code>
* TaskLauncher.launchNonModal( "My task", <br>
* &nbsp;&nbsp;null, // parent<br>
* &nbsp;&nbsp;monitor -&gt; { while ( !monitor.isCanceled() ) { longRunningWork(); } }<br>
* <pre>{@code
* TaskLauncher.launchNonModal("My task",
* null, // parent
* monitor -> { while (!monitor.isCanceled()) { longRunningWork(); } }
* );
* </code>
* }</pre>
*
* <p>Note: the task created by this call will be both cancellable and have progress. If
* you task cannot be cancelled or does not have progress, then do not use this
@@ -93,13 +92,12 @@ public class TaskLauncher {
/**
* A convenience method to directly run a {@link MonitoredRunnable} in a separate
* thread as a {@link Task}, displaying a <b>modal</b> progress dialog.
* <p>
* <code>
* TaskLauncher.launchModal( "My task", <br>
* &nbsp;&nbsp;null, // parent<br>
* &nbsp;&nbsp;monitor -&gt; { while ( !monitor.isCanceled() ) { longRunningWork(); } }<br>
* <pre>{@code
* TaskLauncher.launchModal("My task",
* null, // parent
* monitor -> { while (!monitor.isCanceled()) { longRunningWork(); } }
* );
* </code>
* }</pre>
*
* <p>Note: the task created by this call will be both cancellable and have progress. If
* you task cannot be cancelled or does not have progress, then do not use this
@@ -128,11 +126,11 @@ public class TaskLauncher {
* to have it immediately go away. If you desire this default behavior, then do not use
* this convenience method.
*
* <p><code>
* TaskLauncher.launchModal( "My task", <br>
* &nbsp;&nbsp;monitor -&gt; { { foo(); }<br>
* <pre>{@code
* TaskLauncher.launchModal("My task",
* monitor -> { foo(); }
* );
* </code>
* }</pre>
*
* <p>Note: the task created by this call will not be cancellable nor have progress. If
* you need either of these behaviors, the do not use this
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -40,7 +40,7 @@ public interface PcodeUseropLibrary<T> {
/**
* The class of the empty userop library.
*
* @see {@link PcodeUseropLibrary#nil()}
* @see PcodeUseropLibrary#nil()
*/
final class EmptyPcodeUseropLibrary implements PcodeUseropLibrary<Object> {
@Override
@@ -1,13 +1,12 @@
/* ###
* 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.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -105,15 +104,15 @@ public class CountLatch {
* dormant until one of two things happen:
* <ul>
* <li>The count reaches zero due to invocations of the
* {@link #decrement} method; or
* {@link #decrement} method; or</li>
* <li>Some other thread {@linkplain Thread#interrupt interrupts}
* the current thread.
* the current thread.</li>
* </ul>
*
* <p>If the current thread:
* <ul>
* <li>has its interrupted status set on entry to this method; or
* <li>is {@linkplain Thread#interrupt interrupted} while waiting,
* <li>has its interrupted status set on entry to this method; or</li>
* <li>is {@linkplain Thread#interrupt interrupted} while waiting,</li>
* </ul>
* then {@link InterruptedException} is thrown and the current thread's
* interrupted status is cleared.
@@ -138,10 +137,10 @@ public class CountLatch {
* dormant until one of three things happen:
* <ul>
* <li>The count reaches zero due to invocations of the
* {@link #decrement} method; or
* {@link #decrement} method; or</li>
* <li>Some other thread {@linkplain Thread#interrupt interrupts}
* the current thread; or
* <li>The specified waiting time elapses.
* the current thread; or</li>
* <li>The specified waiting time elapses.</li>
* </ul>
*
* <p>If the count reaches zero then the method returns with the
@@ -149,8 +148,8 @@ public class CountLatch {
*
* <p>If the current thread:
* <ul>
* <li>has its interrupted status set on entry to this method; or
* <li>is {@linkplain Thread#interrupt interrupted} while waiting,
* <li>has its interrupted status set on entry to this method; or</li>
* <li>is {@linkplain Thread#interrupt interrupted} while waiting,</li>
* </ul>
* then {@link InterruptedException} is thrown and the current thread's
* interrupted status is cleared.
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -38,25 +38,30 @@ import util.CollectionUtils;
* a node 'a' dominates node 'b' if all paths from start to 'b' contain 'a';
* a node always dominates itself (except in 'strict dominance', which is all
* dominators except for itself)
* </LI>
*
* <LI>
* <B>post-dominance:</B>
* A node 'b' is said to post-dominate node 'a' if all paths from 'a'
* to END contain 'b'
* </LI>
*
* <LI>
* <B>immediate dominator:</B>
* the closest dominator of a node
* </LI>
*
* <LI>
* <B>dominance tree:</B>
* A dominator tree is a tree where each node's children are those nodes
* it *immediately* dominates (a idom b)
* </LI>
*
* <LI>
* <B>dominance frontier:</B>
* the immediate successors of the nodes dominated by 'a'; it is the set of
* nodes where d's dominance stops.
* </LI>
*
* <LI>
* <B>strongly connected components:</B>
@@ -64,8 +69,11 @@ import util.CollectionUtils;
* from every other vertex. The strongly connected components
* of an arbitrary directed graph form a partition into
* subgraphs that are themselves strongly connected.
* </LI>
*
* <LI>
* <B>graph density:</B>
* </LI>
* <PRE>
* E
* Density = --------
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -48,11 +48,11 @@ import ghidra.graph.viewer.vertex.VisualGraphVertexShapeTransformer;
*
* <ul>
* <li>Layout Space - the layout contains Point2D objects that represent positions of the
* vertices.
* vertices. </li>
* <li>Graph Space - the space where the Layout points are transformed as the view is moved
* around the screen (e.g., as the user pans)
* around the screen (e.g., as the user pans)</li>
* <li>View Space - the coordinate system of Java 2D rendering; scaling (zooming) transformations
* are applied at this layer
* are applied at this layer</li>
* </ul>
*
* <P> Note: vertex relative means that the value is from inside the vertex, or the vertex's
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -49,7 +49,7 @@ import utility.function.Callback;
* <LI>Results must be cached for speed, but may cleared as the graph is mutated</LI>
* <LI>Algorithms must not block the UI thread</LI>
* <LI>Related actions (i.e., hover vs. selection) should cancel any pending action, but not
* unrelated actions (e.g., a new hover request should cancel a pending hover update)
* unrelated actions (e.g., a new hover request should cancel a pending hover update)</LI>
* </UL>
*
* Based on these requirements, we need to use multi-threading. Further complicating the need

Some files were not shown because too many files have changed in this diff Show More