home *** CD-ROM | disk | FTP | other *** search
- package netscape.application;
-
- import netscape.util.ClassInfo;
- import netscape.util.Codable;
- import netscape.util.CodingException;
- import netscape.util.Decoder;
- import netscape.util.Encoder;
-
- public class Range implements Codable {
- private static Range nullRange;
- public int index;
- public int length;
- static final String INDEX_KEY = "index";
- static final String LENGTH_KEY = "length";
-
- public static Range nullRange() {
- if (nullRange == null) {
- nullRange = new Range(-1, 0);
- }
-
- return nullRange;
- }
-
- public static Range rangeFromIntersection(Range var0, Range var1) {
- Range var2 = new Range(var0);
- var2.intersectWith(var1);
- return var2;
- }
-
- public static Range rangeFromUnion(Range var0, Range var1) {
- Range var2 = new Range(var0);
- var2.unionWith(var1);
- return var2;
- }
-
- public static Range rangeFromIndices(int var0, int var1) {
- return var0 < var1 ? new Range(var0, var1 - var0) : new Range(var1, var0 - var1);
- }
-
- public Range() {
- this.index = nullRange().index;
- this.length = nullRange().length;
- }
-
- public Range(int var1, int var2) {
- this.index = var1;
- this.length = var2;
- }
-
- public Range(Range var1) {
- this.index = var1.index;
- this.length = var1.length;
- }
-
- public int index() {
- return this.index;
- }
-
- public int length() {
- return this.length;
- }
-
- public int lastIndex() {
- return this.index + this.length - 1;
- }
-
- public boolean equals(Object var1) {
- if (!(var1 instanceof Range)) {
- return false;
- } else {
- Range var2 = (Range)var1;
- return var2.index == this.index && var2.length == this.length;
- }
- }
-
- public void unionWith(Range var1) {
- this.unionWith(var1.index, var1.length);
- }
-
- public void unionWith(int var1, int var2) {
- if (this.index == nullRange().index) {
- this.index = var1;
- this.length = var2;
- } else if (var1 != nullRange().index) {
- int var3;
- if (this.index < var1) {
- var3 = this.index;
- } else {
- var3 = var1;
- }
-
- int var4;
- if (this.index + this.length > var1 + var2) {
- var4 = this.index + this.length;
- } else {
- var4 = var1 + var2;
- }
-
- this.index = var3;
- this.length = var4 - var3;
- }
- }
-
- public void intersectWith(Range var1) {
- this.intersectWith(var1.index, var1.length);
- }
-
- public void intersectWith(int var1, int var2) {
- int var3;
- int var4;
- int var5;
- int var6;
- if (this.index < var1) {
- var3 = this.index;
- var4 = this.length;
- var5 = var1;
- var6 = var2;
- } else {
- var3 = var1;
- var4 = var2;
- var5 = this.index;
- var6 = this.length;
- }
-
- if (var3 + var4 <= var5) {
- this.index = nullRange().index;
- this.length = nullRange().length;
- } else {
- this.index = var5;
- if (var5 + var6 > var3 + var4) {
- this.length = var3 + var4 - var5;
- } else {
- this.length = var6;
- }
- }
- }
-
- public String toString() {
- return this.isNullRange() ? "Null range" : "(" + this.index + ", " + this.length + ")";
- }
-
- public boolean intersects(Range var1) {
- int var3 = this.index;
- int var4 = this.length;
- this.intersectWith(var1);
- boolean var2;
- if (this.index == nullRange().index) {
- var2 = false;
- } else {
- var2 = true;
- }
-
- this.index = var3;
- this.length = var4;
- return var2;
- }
-
- public boolean intersects(int var1, int var2) {
- int var4 = this.index;
- int var5 = this.length;
- this.intersectWith(var1, var2);
- boolean var3;
- if (this.index == nullRange().index) {
- var3 = false;
- } else {
- var3 = true;
- }
-
- this.index = var4;
- this.length = var5;
- return var3;
- }
-
- public boolean isNullRange() {
- return this.index == nullRange().index;
- }
-
- public boolean isEmpty() {
- return this.length == 0;
- }
-
- public boolean contains(int var1) {
- return var1 >= this.index && var1 < this.index + this.length;
- }
-
- public void describeClassInfo(ClassInfo var1) {
- var1.addClass("netscape.application.Range", 1);
- var1.addField("index", (byte)8);
- var1.addField("length", (byte)8);
- }
-
- public void encode(Encoder var1) throws CodingException {
- var1.encodeInt("index", this.index);
- var1.encodeInt("length", this.length);
- }
-
- public void decode(Decoder var1) throws CodingException {
- this.index = var1.decodeInt("index");
- this.length = var1.decodeInt("length");
- }
-
- public void finishDecoding() throws CodingException {
- }
- }
-