java repeat_Java Value.repeat方法代码示例

import com.cburch.logisim.data.Value; //导入方法依赖的package包/类

@Override

public void propagate(InstanceState state) {

// get attributes

BitWidth data = state.getAttributeValue(StdAttr.WIDTH);

BitWidth select = state.getAttributeValue(Plexers.ATTR_SELECT);

Boolean threeState = state.getAttributeValue(Plexers.ATTR_TRISTATE);

boolean enable = state.getAttributeValue(Plexers.ATTR_ENABLE).booleanValue();

int outputs = 1 << select.getWidth();

Value en = enable ? state.getPort(outputs + 1) : Value.TRUE;

// determine output values

Value others; // the default output

if (threeState.booleanValue()) {

others = Value.createUnknown(data);

} else {

others = Value.createKnown(data, 0);

}

int outIndex = -1; // the special output

Value out = null;

if (en == Value.FALSE) {

Object opt = state.getAttributeValue(Plexers.ATTR_DISABLED);

Value base = opt == Plexers.DISABLED_ZERO ? Value.FALSE : Value.UNKNOWN;

others = Value.repeat(base, data.getWidth());

} else if (en == Value.ERROR && state.isPortConnected(outputs + 1)) {

others = Value.createError(data);

} else {

Value sel = state.getPort(outputs);

if (sel.isFullyDefined()) {

outIndex = sel.toIntValue();

out = state.getPort(outputs + (enable ? 2 : 1));

} else if (sel.isErrorValue()) {

others = Value.createError(data);

} else {

others = Value.createUnknown(data);

}

}

// now propagate them

for (int i = 0; i < outputs; i++) {

state.setPort(i, i == outIndex ? out : others, Plexers.DELAY);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值