mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-04 18:29:37 +02:00
GP-3015: Add scanSymbolsByName, javadocs, checks, refactor assembler
This commit is contained in:
parent
98ab3aec4c
commit
bc43f20c3c
17 changed files with 801 additions and 466 deletions
|
@ -380,6 +380,11 @@ public class DBTraceProgramViewSymbolTable implements SymbolTable {
|
|||
}));
|
||||
}
|
||||
|
||||
@Override
|
||||
public SymbolIterator scanSymbolsByName(String startName) {
|
||||
return new SymbolIteratorAdapter(symbolManager.allSymbols().scanByName(startName));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getNumSymbols() {
|
||||
return symbolManager.allSymbols().size(true);
|
||||
|
|
|
@ -88,6 +88,10 @@ public abstract class AbstractDBTraceSymbolSingleTypeView<T extends AbstractDBTr
|
|||
return Collections2.filter(view, s -> predicate.test(s.name));
|
||||
}
|
||||
|
||||
public Iterator<? extends T> scanByName(String startName) {
|
||||
return symbolsByName.tail(startName, true).values().iterator();
|
||||
}
|
||||
|
||||
public T getByKey(long key) {
|
||||
return store.getObjectAt(key);
|
||||
}
|
||||
|
|
|
@ -15,13 +15,14 @@
|
|||
*/
|
||||
package ghidra.trace.database.symbol;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.google.common.collect.Collections2;
|
||||
|
||||
import generic.CatenatedCollection;
|
||||
import ghidra.trace.model.symbol.*;
|
||||
import ghidra.util.MergeSortingIterator;
|
||||
|
||||
public class DBTraceSymbolMultipleTypesView<T extends AbstractDBTraceSymbol>
|
||||
implements TraceSymbolView<T> {
|
||||
|
@ -73,4 +74,11 @@ public class DBTraceSymbolMultipleTypesView<T extends AbstractDBTraceSymbol>
|
|||
return new CatenatedCollection<>(
|
||||
Collections2.transform(parts, p -> p.getWithMatchingName(glob, caseSensitive)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterator<? extends T> scanByName(String startName) {
|
||||
List<Iterator<? extends T>> iterators =
|
||||
parts.stream().map(p -> p.scanByName(startName)).collect(Collectors.toList());
|
||||
return new MergeSortingIterator<>(iterators, Comparator.comparing(s -> s.getName()));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
package ghidra.trace.model.symbol;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Iterator;
|
||||
|
||||
public interface TraceSymbolView<T extends TraceSymbol> {
|
||||
|
||||
|
@ -55,4 +56,6 @@ public interface TraceSymbolView<T extends TraceSymbol> {
|
|||
* @return the collection of matching symbols
|
||||
*/
|
||||
Collection<? extends T> getWithMatchingName(String glob, boolean caseSensitive);
|
||||
|
||||
Iterator<? extends T> scanByName(String startName);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue