use num_bigint::BigInt;
use crate::PortSlice;
use crate::connection::connected_item::{Tieoff, Unused};
use crate::port_slice::{ConvertibleToPortSlice, PortDirectionality};
impl PortSlice {
pub fn tieoff<T: Into<BigInt>>(&self, value: T) {
let big_int_value = value.into();
self.port
.get_port_connections_define_if_missing()
.write()
.add(
self.to_port_slice(),
Tieoff::new(big_int_value, self.width()),
);
}
pub fn unused(&self) {
self.port
.get_port_connections_define_if_missing()
.write()
.add(self.to_port_slice(), Unused::new());
}
pub fn unused_or_tieoff<T: Into<BigInt>>(&self, value: T) {
match self.get_directionality() {
PortDirectionality::Driver | PortDirectionality::InOut => {
self.unused();
}
PortDirectionality::Receiver => {
self.tieoff(value);
}
}
}
}