| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- package info.hkzlab.dupal.analyzer.palanalisys;
- import java.util.Arrays;
- public class OutState {
- public final static int IDX_O = 0;
- public final static int IDX_IO = 1;
- public final static int IDX_HIZ = 2;
- private final int[] status;
- private final OutLink[] links;
- private int lastOutLinkIdx;
- public OutState(int o_state, int io_state, int hiz_state, int maxLinks) {
- status = new int[]{o_state, io_state, hiz_state};
- links = new OutLink[maxLinks];
- lastOutLinkIdx = 0;
- }
- public int[] getStatus() {
- return status.clone();
- }
- public OutLink getOutLinkAtIdx(int idx) {
- return links[idx];
- }
- public int addOutLink(OutLink link) {
- int idx = lastOutLinkIdx;
- lastOutLinkIdx++;
- setOutLinkAtIdx(link, idx);
- return idx;
- }
- public int getMaxLinks() {
- return links.length;
- }
- private boolean setOutLinkAtIdx(OutLink link, int idx) {
- if(links[idx] != null) return false;
- links[idx] = link;
- return true;
- }
- @Override
- public int hashCode() {
- int hash = 7;
- for(int s : status) hash = hash*31 + s;
- return hash;
- }
- @Override
- public String toString() {
- return "OS["+String.format("%08X", status[0])+"|"+String.format("%08X", status[1])+"|"+String.format("%08X", status[2])+"]";
- }
- @Override
- public boolean equals(final Object o) {
- if (this == o)
- return true;
- if (o == null)
- return false;
- if (this.getClass() != o.getClass())
- return false;
- return Arrays.equals(this.status, ((OutState) o).getStatus());
- }
- }
|