home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / javax / swing / text / html / parser / ContentModelState.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  2.1 KB  |  200 lines

  1. package javax.swing.text.html.parser;
  2.  
  3. class ContentModelState {
  4.    ContentModel model;
  5.    long value;
  6.    ContentModelState next;
  7.  
  8.    public ContentModelState(ContentModel var1) {
  9.       this(var1, (ContentModelState)null, 0L);
  10.    }
  11.  
  12.    ContentModelState(Object var1, ContentModelState var2) {
  13.       this(var1, var2, 0L);
  14.    }
  15.  
  16.    ContentModelState(Object var1, ContentModelState var2, long var3) {
  17.       this.model = (ContentModel)var1;
  18.       this.next = var2;
  19.       this.value = var3;
  20.    }
  21.  
  22.    public ContentModel getModel() {
  23.       ContentModel var1 = this.model;
  24.  
  25.       for(int var2 = 0; (long)var2 < this.value; ++var2) {
  26.          if (var1.next == null) {
  27.             return null;
  28.          }
  29.  
  30.          var1 = var1.next;
  31.       }
  32.  
  33.       return var1;
  34.    }
  35.  
  36.    public boolean terminate() {
  37.       switch (this.model.type) {
  38.          case 38:
  39.             ContentModel var4 = (ContentModel)this.model.content;
  40.  
  41.             for(int var5 = 0; var4 != null; var4 = var4.next) {
  42.                if ((this.value & 1L << var5) == 0L && !var4.empty()) {
  43.                   return false;
  44.                }
  45.  
  46.                ++var5;
  47.             }
  48.  
  49.             return this.next == null || this.next.terminate();
  50.          case 43:
  51.             if (this.value == 0L && !this.model.empty()) {
  52.                return false;
  53.             }
  54.          case 42:
  55.          case 63:
  56.             return this.next == null || this.next.terminate();
  57.          case 44:
  58.             ContentModel var2 = (ContentModel)this.model.content;
  59.  
  60.             for(int var3 = 0; (long)var3 < this.value; var2 = var2.next) {
  61.                ++var3;
  62.             }
  63.  
  64.             while(var2 != null && var2.empty()) {
  65.                var2 = var2.next;
  66.             }
  67.  
  68.             if (var2 != null) {
  69.                return false;
  70.             }
  71.  
  72.             return this.next == null || this.next.terminate();
  73.          case 124:
  74.             for(ContentModel var1 = (ContentModel)this.model.content; var1 != null; var1 = var1.next) {
  75.                if (var1.empty()) {
  76.                   return this.next == null || this.next.terminate();
  77.                }
  78.             }
  79.  
  80.             return false;
  81.          default:
  82.             return false;
  83.       }
  84.    }
  85.  
  86.    public Element first() {
  87.       switch (this.model.type) {
  88.          case 38:
  89.          case 42:
  90.          case 63:
  91.          case 124:
  92.             return null;
  93.          case 43:
  94.             return this.model.first();
  95.          case 44:
  96.             ContentModel var1 = (ContentModel)this.model.content;
  97.  
  98.             for(int var2 = 0; (long)var2 < this.value; var1 = var1.next) {
  99.                ++var2;
  100.             }
  101.  
  102.             return var1.first();
  103.          default:
  104.             return this.model.first();
  105.       }
  106.    }
  107.  
  108.    public ContentModelState advance(Object var1) {
  109.       switch (this.model.type) {
  110.          case 38:
  111.             ContentModel var6 = (ContentModel)this.model.content;
  112.             boolean var7 = true;
  113.  
  114.             for(int var5 = 0; var6 != null; var6 = var6.next) {
  115.                if ((this.value & 1L << var5) == 0L) {
  116.                   if (var6.first(var1)) {
  117.                      return (new ContentModelState(var6, new ContentModelState(this.model, this.next, this.value | 1L << var5))).advance(var1);
  118.                   }
  119.  
  120.                   if (!var6.empty()) {
  121.                      var7 = false;
  122.                   }
  123.                }
  124.  
  125.                ++var5;
  126.             }
  127.  
  128.             if (var7) {
  129.                if (this.next != null) {
  130.                   return this.next.advance(var1);
  131.                }
  132.  
  133.                return null;
  134.             }
  135.             break;
  136.          case 42:
  137.             if (this.model.first(var1)) {
  138.                return (new ContentModelState(this.model.content, this)).advance(var1);
  139.             }
  140.  
  141.             if (this.next != null) {
  142.                return this.next.advance(var1);
  143.             }
  144.  
  145.             return null;
  146.          case 43:
  147.             if (this.model.first(var1)) {
  148.                return (new ContentModelState(this.model.content, new ContentModelState(this.model, this.next, this.value + 1L))).advance(var1);
  149.             }
  150.  
  151.             if (this.value != 0L) {
  152.                if (this.next != null) {
  153.                   return this.next.advance(var1);
  154.                }
  155.  
  156.                return null;
  157.             }
  158.             break;
  159.          case 44:
  160.             ContentModel var3 = (ContentModel)this.model.content;
  161.  
  162.             for(int var4 = 0; (long)var4 < this.value; var3 = var3.next) {
  163.                ++var4;
  164.             }
  165.  
  166.             if (var3.first(var1) || var3.empty()) {
  167.                if (var3.next == null) {
  168.                   return (new ContentModelState(var3, this.next)).advance(var1);
  169.                }
  170.  
  171.                return (new ContentModelState(var3, new ContentModelState(this.model, this.next, this.value + 1L))).advance(var1);
  172.             }
  173.             break;
  174.          case 63:
  175.             if (this.model.first(var1)) {
  176.                return (new ContentModelState(this.model.content, this.next)).advance(var1);
  177.             }
  178.  
  179.             if (this.next != null) {
  180.                return this.next.advance(var1);
  181.             }
  182.  
  183.             return null;
  184.          case 124:
  185.             for(ContentModel var2 = (ContentModel)this.model.content; var2 != null; var2 = var2.next) {
  186.                if (var2.first(var1)) {
  187.                   return (new ContentModelState(var2, this.next)).advance(var1);
  188.                }
  189.             }
  190.             break;
  191.          default:
  192.             if (this.model.content == var1) {
  193.                return this.next;
  194.             }
  195.       }
  196.  
  197.       return null;
  198.    }
  199. }
  200.