addInOutArray method
- String name,
- Logic source, {
- List<
int> dimensions = const [1], - int elementWidth = 1,
- int numUnpackedDimensions = 0,
inherited
Registers and returns an inOut LogicArray port to this Module with
the specified dimensions, elementWidth, and numUnpackedDimensions
named name.
This is very similar to addInOut, except for LogicArrays.
Performs validation on overall width matching for source, but not on
dimensions, elementWidth, or numUnpackedDimensions.
Implementation
LogicArray addInOutArray(
String name,
Logic source, {
List<int> dimensions = const [1],
int elementWidth = 1,
int numUnpackedDimensions = 0,
}) {
_checkForSafePortName(name);
// make sure we register all the _inOutDrivers properly
final sourceElems = TraverseableCollection<Logic>()..add(source);
for (var i = 0; i < sourceElems.length; i++) {
final sei = sourceElems[i];
_inOutDrivers.add(sei);
if (sei.isArrayMember) {
sourceElems.add(sei.parentStructure!);
}
if (sei is LogicArray) {
sourceElems.addAll(sei.elements);
}
}
final inOutArr = LogicArray.net(
name: name,
dimensions,
elementWidth,
numUnpackedDimensions: numUnpackedDimensions,
naming: Naming.reserved,
)
..gets(source)
..setAllParentModule(this);
// there may be packed arrays created by the `gets` above, so this makes
// sure we catch all of those.
_inOutDrivers.addAll(inOutArr.srcConnections);
_inOuts[name] = inOutArr;
_inOutSources[name] = source;
return inOutArr;
}