OutState.java 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package info.hkzlab.dupal.analyzer.palanalisys;
  2. import java.util.Arrays;
  3. public class OutState {
  4. public final static int IDX_O = 0;
  5. public final static int IDX_IO = 1;
  6. public final static int IDX_HIZ = 2;
  7. private final int[] status;
  8. private final OutLink[] links;
  9. private int lastOutLinkIdx;
  10. public OutState(int o_state, int io_state, int hiz_state, int maxLinks) {
  11. status = new int[]{o_state, io_state, hiz_state};
  12. links = new OutLink[maxLinks];
  13. lastOutLinkIdx = 0;
  14. }
  15. public int[] getStatus() {
  16. return status.clone();
  17. }
  18. public OutLink getOutLinkAtIdx(int idx) {
  19. return links[idx];
  20. }
  21. public int addOutLink(OutLink link) {
  22. int idx = lastOutLinkIdx;
  23. lastOutLinkIdx++;
  24. setOutLinkAtIdx(link, idx);
  25. return idx;
  26. }
  27. public int getMaxLinks() {
  28. return links.length;
  29. }
  30. private boolean setOutLinkAtIdx(OutLink link, int idx) {
  31. if(links[idx] != null) return false;
  32. links[idx] = link;
  33. return true;
  34. }
  35. @Override
  36. public int hashCode() {
  37. int hash = 7;
  38. for(int s : status) hash = hash*31 + s;
  39. return hash;
  40. }
  41. @Override
  42. public String toString() {
  43. return "OS["+String.format("%08X", status[0])+"|"+String.format("%08X", status[1])+"|"+String.format("%08X", status[2])+"]";
  44. }
  45. @Override
  46. public boolean equals(final Object o) {
  47. if (this == o)
  48. return true;
  49. if (o == null)
  50. return false;
  51. if (this.getClass() != o.getClass())
  52. return false;
  53. return Arrays.equals(this.status, ((OutState) o).getStatus());
  54. }
  55. }