home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2005 July / PCpro_2005_07.ISO / files / wintools / FullSync / FullSyncInstaller.exe / org / apache / regexp / RECompiler$RERange.class (.txt) < prev    next >
Encoding:
Java Class File  |  2005-03-08  |  1.3 KB  |  127 lines

  1. package org.apache.regexp;
  2.  
  3. class RECompiler$RERange {
  4.    int size;
  5.    int[] minRange;
  6.    int[] maxRange;
  7.    int num;
  8.    // $FF: synthetic field
  9.    private final RECompiler this$0;
  10.  
  11.    RECompiler$RERange(RECompiler var1) {
  12.       this.this$0 = var1;
  13.       this.size = 16;
  14.       this.minRange = new int[this.size];
  15.       this.maxRange = new int[this.size];
  16.       this.num = 0;
  17.    }
  18.  
  19.    void delete(int var1) {
  20.       if (this.num != 0 && var1 < this.num) {
  21.          while(true) {
  22.             ++var1;
  23.             if (var1 >= this.num) {
  24.                --this.num;
  25.                return;
  26.             }
  27.  
  28.             if (var1 - 1 >= 0) {
  29.                this.minRange[var1 - 1] = this.minRange[var1];
  30.                this.maxRange[var1 - 1] = this.maxRange[var1];
  31.             }
  32.          }
  33.       }
  34.    }
  35.  
  36.    void merge(int var1, int var2) {
  37.       for(int var3 = 0; var3 < this.num; ++var3) {
  38.          if (var1 >= this.minRange[var3] && var2 <= this.maxRange[var3]) {
  39.             return;
  40.          }
  41.  
  42.          if (var1 <= this.minRange[var3] && var2 >= this.maxRange[var3]) {
  43.             this.delete(var3);
  44.             this.merge(var1, var2);
  45.             return;
  46.          }
  47.  
  48.          if (var1 >= this.minRange[var3] && var1 <= this.maxRange[var3]) {
  49.             this.delete(var3);
  50.             var1 = this.minRange[var3];
  51.             this.merge(var1, var2);
  52.             return;
  53.          }
  54.  
  55.          if (var2 >= this.minRange[var3] && var2 <= this.maxRange[var3]) {
  56.             this.delete(var3);
  57.             var2 = this.maxRange[var3];
  58.             this.merge(var1, var2);
  59.             return;
  60.          }
  61.       }
  62.  
  63.       if (this.num >= this.size) {
  64.          this.size *= 2;
  65.          int[] var4 = new int[this.size];
  66.          int[] var5 = new int[this.size];
  67.          System.arraycopy(this.minRange, 0, var4, 0, this.num);
  68.          System.arraycopy(this.maxRange, 0, var5, 0, this.num);
  69.          this.minRange = var4;
  70.          this.maxRange = var5;
  71.       }
  72.  
  73.       this.minRange[this.num] = var1;
  74.       this.maxRange[this.num] = var2;
  75.       ++this.num;
  76.    }
  77.  
  78.    void remove(int var1, int var2) {
  79.       for(int var3 = 0; var3 < this.num; ++var3) {
  80.          if (this.minRange[var3] >= var1 && this.maxRange[var3] <= var2) {
  81.             this.delete(var3);
  82.             --var3;
  83.             return;
  84.          }
  85.  
  86.          if (var1 >= this.minRange[var3] && var2 <= this.maxRange[var3]) {
  87.             int var4 = this.minRange[var3];
  88.             int var5 = this.maxRange[var3];
  89.             this.delete(var3);
  90.             if (var4 < var1) {
  91.                this.merge(var4, var1 - 1);
  92.             }
  93.  
  94.             if (var2 < var5) {
  95.                this.merge(var2 + 1, var5);
  96.             }
  97.  
  98.             return;
  99.          }
  100.  
  101.          if (this.minRange[var3] >= var1 && this.minRange[var3] <= var2) {
  102.             this.minRange[var3] = var2 + 1;
  103.             return;
  104.          }
  105.  
  106.          if (this.maxRange[var3] >= var1 && this.maxRange[var3] <= var2) {
  107.             this.maxRange[var3] = var1 - 1;
  108.             return;
  109.          }
  110.       }
  111.  
  112.    }
  113.  
  114.    void include(int var1, int var2, boolean var3) {
  115.       if (var3) {
  116.          this.merge(var1, var2);
  117.       } else {
  118.          this.remove(var1, var2);
  119.       }
  120.  
  121.    }
  122.  
  123.    void include(char var1, boolean var2) {
  124.       this.include(var1, var1, var2);
  125.    }
  126. }
  127.