home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 139 / dpcs0999.iso / Web / CFserver / data1.cab / Java / CFJava.cab / CFJavaRuntime.cab / netscape / application / Range.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-10-01  |  3.7 KB  |  205 lines

  1. package netscape.application;
  2.  
  3. import netscape.util.ClassInfo;
  4. import netscape.util.Codable;
  5. import netscape.util.CodingException;
  6. import netscape.util.Decoder;
  7. import netscape.util.Encoder;
  8.  
  9. public class Range implements Codable {
  10.    private static Range nullRange;
  11.    public int index;
  12.    public int length;
  13.    static final String INDEX_KEY = "index";
  14.    static final String LENGTH_KEY = "length";
  15.  
  16.    public static Range nullRange() {
  17.       if (nullRange == null) {
  18.          nullRange = new Range(-1, 0);
  19.       }
  20.  
  21.       return nullRange;
  22.    }
  23.  
  24.    public static Range rangeFromIntersection(Range var0, Range var1) {
  25.       Range var2 = new Range(var0);
  26.       var2.intersectWith(var1);
  27.       return var2;
  28.    }
  29.  
  30.    public static Range rangeFromUnion(Range var0, Range var1) {
  31.       Range var2 = new Range(var0);
  32.       var2.unionWith(var1);
  33.       return var2;
  34.    }
  35.  
  36.    public static Range rangeFromIndices(int var0, int var1) {
  37.       return var0 < var1 ? new Range(var0, var1 - var0) : new Range(var1, var0 - var1);
  38.    }
  39.  
  40.    public Range() {
  41.       this.index = nullRange().index;
  42.       this.length = nullRange().length;
  43.    }
  44.  
  45.    public Range(int var1, int var2) {
  46.       this.index = var1;
  47.       this.length = var2;
  48.    }
  49.  
  50.    public Range(Range var1) {
  51.       this.index = var1.index;
  52.       this.length = var1.length;
  53.    }
  54.  
  55.    public int index() {
  56.       return this.index;
  57.    }
  58.  
  59.    public int length() {
  60.       return this.length;
  61.    }
  62.  
  63.    public int lastIndex() {
  64.       return this.index + this.length - 1;
  65.    }
  66.  
  67.    public boolean equals(Object var1) {
  68.       if (!(var1 instanceof Range)) {
  69.          return false;
  70.       } else {
  71.          Range var2 = (Range)var1;
  72.          return var2.index == this.index && var2.length == this.length;
  73.       }
  74.    }
  75.  
  76.    public void unionWith(Range var1) {
  77.       this.unionWith(var1.index, var1.length);
  78.    }
  79.  
  80.    public void unionWith(int var1, int var2) {
  81.       if (this.index == nullRange().index) {
  82.          this.index = var1;
  83.          this.length = var2;
  84.       } else if (var1 != nullRange().index) {
  85.          int var3;
  86.          if (this.index < var1) {
  87.             var3 = this.index;
  88.          } else {
  89.             var3 = var1;
  90.          }
  91.  
  92.          int var4;
  93.          if (this.index + this.length > var1 + var2) {
  94.             var4 = this.index + this.length;
  95.          } else {
  96.             var4 = var1 + var2;
  97.          }
  98.  
  99.          this.index = var3;
  100.          this.length = var4 - var3;
  101.       }
  102.    }
  103.  
  104.    public void intersectWith(Range var1) {
  105.       this.intersectWith(var1.index, var1.length);
  106.    }
  107.  
  108.    public void intersectWith(int var1, int var2) {
  109.       int var3;
  110.       int var4;
  111.       int var5;
  112.       int var6;
  113.       if (this.index < var1) {
  114.          var3 = this.index;
  115.          var4 = this.length;
  116.          var5 = var1;
  117.          var6 = var2;
  118.       } else {
  119.          var3 = var1;
  120.          var4 = var2;
  121.          var5 = this.index;
  122.          var6 = this.length;
  123.       }
  124.  
  125.       if (var3 + var4 <= var5) {
  126.          this.index = nullRange().index;
  127.          this.length = nullRange().length;
  128.       } else {
  129.          this.index = var5;
  130.          if (var5 + var6 > var3 + var4) {
  131.             this.length = var3 + var4 - var5;
  132.          } else {
  133.             this.length = var6;
  134.          }
  135.       }
  136.    }
  137.  
  138.    public String toString() {
  139.       return this.isNullRange() ? "Null range" : "(" + this.index + ", " + this.length + ")";
  140.    }
  141.  
  142.    public boolean intersects(Range var1) {
  143.       int var3 = this.index;
  144.       int var4 = this.length;
  145.       this.intersectWith(var1);
  146.       boolean var2;
  147.       if (this.index == nullRange().index) {
  148.          var2 = false;
  149.       } else {
  150.          var2 = true;
  151.       }
  152.  
  153.       this.index = var3;
  154.       this.length = var4;
  155.       return var2;
  156.    }
  157.  
  158.    public boolean intersects(int var1, int var2) {
  159.       int var4 = this.index;
  160.       int var5 = this.length;
  161.       this.intersectWith(var1, var2);
  162.       boolean var3;
  163.       if (this.index == nullRange().index) {
  164.          var3 = false;
  165.       } else {
  166.          var3 = true;
  167.       }
  168.  
  169.       this.index = var4;
  170.       this.length = var5;
  171.       return var3;
  172.    }
  173.  
  174.    public boolean isNullRange() {
  175.       return this.index == nullRange().index;
  176.    }
  177.  
  178.    public boolean isEmpty() {
  179.       return this.length == 0;
  180.    }
  181.  
  182.    public boolean contains(int var1) {
  183.       return var1 >= this.index && var1 < this.index + this.length;
  184.    }
  185.  
  186.    public void describeClassInfo(ClassInfo var1) {
  187.       var1.addClass("netscape.application.Range", 1);
  188.       var1.addField("index", (byte)8);
  189.       var1.addField("length", (byte)8);
  190.    }
  191.  
  192.    public void encode(Encoder var1) throws CodingException {
  193.       var1.encodeInt("index", this.index);
  194.       var1.encodeInt("length", this.length);
  195.    }
  196.  
  197.    public void decode(Decoder var1) throws CodingException {
  198.       this.index = var1.decodeInt("index");
  199.       this.length = var1.decodeInt("length");
  200.    }
  201.  
  202.    public void finishDecoding() throws CodingException {
  203.    }
  204. }
  205.