addPortsFromJson method
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);
}
}
}