001 package ps6.tigerdb; 002 003 public class DirectedStreetNumberRange { 004 private final IntSet s; 005 006 private final int isLowToHigh; // 0 means false, 1 means true, -1 means don't know 007 008 public DirectedStreetNumberRange(IntSet s, 009 boolean isLowToHigh) { 010 this.s = s; 011 if (isLowToHigh) { 012 this.isLowToHigh = 1; 013 } else { 014 this.isLowToHigh = 0; 015 } 016 } 017 018 public DirectedStreetNumberRange() { 019 this.s = new IntSet(); 020 this.isLowToHigh = -1; // don't-know value 021 } 022 023 public boolean contains(int i) { return s.contains(i); } 024 025 public String toString() { return "set:"+s+" low2high:"+unparse(isLowToHigh); } 026 027 public int size() { return s.size(); } 028 029 private String unparse(int l2h) { 030 switch(l2h) { 031 case 0: return "false"; 032 case 1: return "true"; 033 default: return "don't-know"; 034 } 035 } 036 037 public boolean sameDir(DirectedStreetNumberRange d) { 038 return d.isLowToHigh == -1 || this.isLowToHigh == -1 || 039 this.isLowToHigh == d.isLowToHigh; 040 } 041 042 public boolean couldBeLowToHigh() { 043 return (isLowToHigh == 1 || isLowToHigh == -1) ; 044 } 045 046 public String rangeAsString() { 047 return s.unparse(); 048 } 049 050 protected IntSet getSet() { 051 return s; 052 } 053 }