home *** CD-ROM | disk | FTP | other *** search
- package org.apache.regexp;
-
- class RECompiler$RERange {
- int size;
- int[] minRange;
- int[] maxRange;
- int num;
- // $FF: synthetic field
- private final RECompiler this$0;
-
- RECompiler$RERange(RECompiler var1) {
- this.this$0 = var1;
- this.size = 16;
- this.minRange = new int[this.size];
- this.maxRange = new int[this.size];
- this.num = 0;
- }
-
- void delete(int var1) {
- if (this.num != 0 && var1 < this.num) {
- while(true) {
- ++var1;
- if (var1 >= this.num) {
- --this.num;
- return;
- }
-
- if (var1 - 1 >= 0) {
- this.minRange[var1 - 1] = this.minRange[var1];
- this.maxRange[var1 - 1] = this.maxRange[var1];
- }
- }
- }
- }
-
- void merge(int var1, int var2) {
- for(int var3 = 0; var3 < this.num; ++var3) {
- if (var1 >= this.minRange[var3] && var2 <= this.maxRange[var3]) {
- return;
- }
-
- if (var1 <= this.minRange[var3] && var2 >= this.maxRange[var3]) {
- this.delete(var3);
- this.merge(var1, var2);
- return;
- }
-
- if (var1 >= this.minRange[var3] && var1 <= this.maxRange[var3]) {
- this.delete(var3);
- var1 = this.minRange[var3];
- this.merge(var1, var2);
- return;
- }
-
- if (var2 >= this.minRange[var3] && var2 <= this.maxRange[var3]) {
- this.delete(var3);
- var2 = this.maxRange[var3];
- this.merge(var1, var2);
- return;
- }
- }
-
- if (this.num >= this.size) {
- this.size *= 2;
- int[] var4 = new int[this.size];
- int[] var5 = new int[this.size];
- System.arraycopy(this.minRange, 0, var4, 0, this.num);
- System.arraycopy(this.maxRange, 0, var5, 0, this.num);
- this.minRange = var4;
- this.maxRange = var5;
- }
-
- this.minRange[this.num] = var1;
- this.maxRange[this.num] = var2;
- ++this.num;
- }
-
- void remove(int var1, int var2) {
- for(int var3 = 0; var3 < this.num; ++var3) {
- if (this.minRange[var3] >= var1 && this.maxRange[var3] <= var2) {
- this.delete(var3);
- --var3;
- return;
- }
-
- if (var1 >= this.minRange[var3] && var2 <= this.maxRange[var3]) {
- int var4 = this.minRange[var3];
- int var5 = this.maxRange[var3];
- this.delete(var3);
- if (var4 < var1) {
- this.merge(var4, var1 - 1);
- }
-
- if (var2 < var5) {
- this.merge(var2 + 1, var5);
- }
-
- return;
- }
-
- if (this.minRange[var3] >= var1 && this.minRange[var3] <= var2) {
- this.minRange[var3] = var2 + 1;
- return;
- }
-
- if (this.maxRange[var3] >= var1 && this.maxRange[var3] <= var2) {
- this.maxRange[var3] = var1 - 1;
- return;
- }
- }
-
- }
-
- void include(int var1, int var2, boolean var3) {
- if (var3) {
- this.merge(var1, var2);
- } else {
- this.remove(var1, var2);
- }
-
- }
-
- void include(char var1, boolean var2) {
- this.include(var1, var1, var2);
- }
- }
-