import java.util.stream.Collectors;
import net.mograsim.logic.model.verilog.model.VerilogComponentDeclaration;
+import net.mograsim.logic.model.verilog.model.expressions.Expression;
import net.mograsim.logic.model.verilog.model.signals.IOPort;
import net.mograsim.logic.model.verilog.model.signals.Signal;
{
private final String name;
private final VerilogComponentDeclaration referencedComponent;
- private final List<Signal> arguments;
+ private final List<Expression> arguments;
- public ComponentReference(String name, VerilogComponentDeclaration referencedComponent, List<Signal> arguments)
+ public ComponentReference(String name, VerilogComponentDeclaration referencedComponent, List<Expression> arguments)
{
this.name = Objects.requireNonNull(name);
this.referencedComponent = Objects.requireNonNull(referencedComponent);
return referencedComponent;
}
- public List<Signal> getArguments()
+ public List<Expression> getArguments()
{
return arguments;
}
StringBuilder sb = new StringBuilder();
sb.append(referencedComponent.getID() + " " + name);
- sb.append(arguments.stream().map(Signal::toReferenceVerilogCode).collect(Collectors.joining(", ", "(", ")")));
+ sb.append(arguments.stream().map(Expression::toVerilogCode).collect(Collectors.joining(", ", "(", ")")));
sb.append(";");
return sb.toString();
@Override
public Set<Signal> getReferencedSignals()
{
- return Set.copyOf(arguments);
+ return arguments.stream().map(Expression::getReferencedSignals).flatMap(Set::stream).collect(Collectors.toUnmodifiableSet());
}
@Override