lookupByRohdLine method
Reverse lookup: find all (moduleName, signalName, entry) tuples whose
ROHD source frames include the given fileSuffix and line.
fileSuffix is matched against the end of each frame's file path
(e.g. 'serializer.dart' matches 'lib/src/serialization/serializer.dart').
When line is non-null only frames on that exact line match.
Implementation
List<({String module, String signal, FlcEntry entry})> lookupByRohdLine(
String fileSuffix, {
int? line,
}) {
final results = <({String module, String signal, FlcEntry entry})>[];
for (final modEntry in _signals.entries) {
for (final sigEntry in modEntry.value.entries) {
for (final frame in sigEntry.value.frames) {
if (frame.file.endsWith(fileSuffix) &&
(line == null || frame.line == line)) {
results.add((
module: modEntry.key,
signal: sigEntry.key,
entry: sigEntry.value,
));
break; // one match per signal is enough
}
}
}
}
for (final modEntry in _instances.entries) {
for (final instEntry in modEntry.value.entries) {
for (final frame in instEntry.value.frames) {
if (frame.file.endsWith(fileSuffix) &&
(line == null || frame.line == line)) {
results.add((
module: modEntry.key,
signal: instEntry.key,
entry: instEntry.value,
));
break;
}
}
}
}
return results;
}