findSubFieldSignals method

List<({String fieldLabel, SignalOccurrence? signal, int startBit, int width})> findSubFieldSignals(
  1. SignalOccurrence parentSignal
)

Finds the sub-field SignalOccurrence entries for a struct/array signal.

Given a parentSignal that has logicType metadata (struct fields or array dims), looks up the expected sub-field signal names in this occurrence's signal list using the Namer/Sanitizer naming convention: {parentSignalName}_{fieldName}

Returns a list of resolved sub-field signals in field order. Entries may be null if a particular sub-field signal wasn't found (e.g. the netlist didn't emit it, or it was optimized away).

Implementation

List<({SignalOccurrence? signal, String fieldLabel, int width, int startBit})>
    findSubFieldSignals(SignalOccurrence parentSignal) {
  final descriptors = parentSignal.subFieldDescriptors;
  if (descriptors.isEmpty) {
    return const [];
  }

  return descriptors.map((d) {
    final idx = signalIndexByName(d.expectedName);
    final sig = idx >= 0 ? signals[idx] : null;
    return (
      signal: sig,
      fieldLabel: d.fieldLabel,
      width: d.width,
      startBit: d.startBit,
    );
  }).toList();
}