addPortsFromJson method

void addPortsFromJson(
  1. List portInfo,
  2. Map<String, String> parameters
)

Create ports in the module based on the portInfo and parameters.

Implementation

void addPortsFromJson(
    List<dynamic> portInfo, Map<String, String> parameters) {
  final portInfoAdjusted = _getPortInfo(portInfo);
  // Create all necessary ports in the module
  for (final portDetails in portInfoAdjusted) {
    final portName = portDetails['name']!;
    final direction = PortDirection.fromString(portDetails['direction']!);
    final packedRanges = portDetails['packedRanges']?.toString() ?? '';
    final unpackedRanges = portDetails['unpackedRanges']?.toString() ?? '';
    final fullRange = unpackedRanges + packedRanges;
    //This dimensions will be the same as `LogicArray.dimensions`
    final dimensions = _getDimension(fullRange, parameters);
    var numUnpackedDimensions = 0;
    if (unpackedRanges != '') {
      numUnpackedDimensions =
          _getDimension(unpackedRanges, parameters).length;
    }
    //Single dimensional port
    if (dimensions.length == 1 && numUnpackedDimensions == 0) {
      createPort(portName, direction, width: dimensions.first);
    } else {
      // Multi-dimensional port
      final upperDimensions = List.of(dimensions);
      final elementWidth = numUnpackedDimensions < dimensions.length
          ? upperDimensions.removeLast()
          : 1;
      createArrayPort(portName, direction,
          dimensions: upperDimensions,
          elementWidth: elementWidth,
          numUnpackedDimensions: numUnpackedDimensions);
    }
  }
}