home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / java / util / StringTokenizer.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  2.4 KB  |  196 lines

  1. package java.util;
  2.  
  3. public class StringTokenizer implements Enumeration<Object> {
  4.    private int currentPosition;
  5.    private int newPosition;
  6.    private int maxPosition;
  7.    private String str;
  8.    private String delimiters;
  9.    private boolean retDelims;
  10.    private boolean delimsChanged;
  11.    private int maxDelimCodePoint;
  12.    private boolean hasSurrogates;
  13.    private int[] delimiterCodePoints;
  14.  
  15.    private void setMaxDelimCodePoint() {
  16.       if (this.delimiters == null) {
  17.          this.maxDelimCodePoint = 0;
  18.       } else {
  19.          int var1 = 0;
  20.          int var3 = 0;
  21.  
  22.          int var2;
  23.          for(int var4 = 0; var4 < this.delimiters.length(); var4 += Character.charCount(var2)) {
  24.             var2 = this.delimiters.charAt(var4);
  25.             if (var2 >= 55296 && var2 <= 57343) {
  26.                var2 = this.delimiters.codePointAt(var4);
  27.                this.hasSurrogates = true;
  28.             }
  29.  
  30.             if (var1 < var2) {
  31.                var1 = var2;
  32.             }
  33.  
  34.             ++var3;
  35.          }
  36.  
  37.          this.maxDelimCodePoint = var1;
  38.          if (this.hasSurrogates) {
  39.             this.delimiterCodePoints = new int[var3];
  40.             int var7 = 0;
  41.  
  42.             for(int var5 = 0; var7 < var3; var5 += Character.charCount(var2)) {
  43.                var2 = this.delimiters.codePointAt(var5);
  44.                this.delimiterCodePoints[var7] = var2;
  45.                ++var7;
  46.             }
  47.          }
  48.  
  49.       }
  50.    }
  51.  
  52.    public StringTokenizer(String var1, String var2, boolean var3) {
  53.       this.hasSurrogates = false;
  54.       this.currentPosition = 0;
  55.       this.newPosition = -1;
  56.       this.delimsChanged = false;
  57.       this.str = var1;
  58.       this.maxPosition = var1.length();
  59.       this.delimiters = var2;
  60.       this.retDelims = var3;
  61.       this.setMaxDelimCodePoint();
  62.    }
  63.  
  64.    public StringTokenizer(String var1, String var2) {
  65.       this(var1, var2, false);
  66.    }
  67.  
  68.    public StringTokenizer(String var1) {
  69.       this(var1, " \t\n\r\f", false);
  70.    }
  71.  
  72.    private int skipDelimiters(int var1) {
  73.       if (this.delimiters == null) {
  74.          throw new NullPointerException();
  75.       } else {
  76.          int var2 = var1;
  77.  
  78.          while(!this.retDelims && var2 < this.maxPosition) {
  79.             if (!this.hasSurrogates) {
  80.                char var4 = this.str.charAt(var2);
  81.                if (var4 > this.maxDelimCodePoint || this.delimiters.indexOf(var4) < 0) {
  82.                   break;
  83.                }
  84.  
  85.                ++var2;
  86.             } else {
  87.                int var3 = this.str.codePointAt(var2);
  88.                if (var3 > this.maxDelimCodePoint || !this.isDelimiter(var3)) {
  89.                   break;
  90.                }
  91.  
  92.                var2 += Character.charCount(var3);
  93.             }
  94.          }
  95.  
  96.          return var2;
  97.       }
  98.    }
  99.  
  100.    private int scanToken(int var1) {
  101.       int var2 = var1;
  102.  
  103.       while(var2 < this.maxPosition) {
  104.          if (!this.hasSurrogates) {
  105.             char var4 = this.str.charAt(var2);
  106.             if (var4 <= this.maxDelimCodePoint && this.delimiters.indexOf(var4) >= 0) {
  107.                break;
  108.             }
  109.  
  110.             ++var2;
  111.          } else {
  112.             int var3 = this.str.codePointAt(var2);
  113.             if (var3 <= this.maxDelimCodePoint && this.isDelimiter(var3)) {
  114.                break;
  115.             }
  116.  
  117.             var2 += Character.charCount(var3);
  118.          }
  119.       }
  120.  
  121.       if (this.retDelims && var1 == var2) {
  122.          if (!this.hasSurrogates) {
  123.             char var5 = this.str.charAt(var2);
  124.             if (var5 <= this.maxDelimCodePoint && this.delimiters.indexOf(var5) >= 0) {
  125.                ++var2;
  126.             }
  127.          } else {
  128.             int var6 = this.str.codePointAt(var2);
  129.             if (var6 <= this.maxDelimCodePoint && this.isDelimiter(var6)) {
  130.                var2 += Character.charCount(var6);
  131.             }
  132.          }
  133.       }
  134.  
  135.       return var2;
  136.    }
  137.  
  138.    private boolean isDelimiter(int var1) {
  139.       for(int var2 = 0; var2 < this.delimiterCodePoints.length; ++var2) {
  140.          if (this.delimiterCodePoints[var2] == var1) {
  141.             return true;
  142.          }
  143.       }
  144.  
  145.       return false;
  146.    }
  147.  
  148.    public boolean hasMoreTokens() {
  149.       this.newPosition = this.skipDelimiters(this.currentPosition);
  150.       return this.newPosition < this.maxPosition;
  151.    }
  152.  
  153.    public String nextToken() {
  154.       this.currentPosition = this.newPosition >= 0 && !this.delimsChanged ? this.newPosition : this.skipDelimiters(this.currentPosition);
  155.       this.delimsChanged = false;
  156.       this.newPosition = -1;
  157.       if (this.currentPosition >= this.maxPosition) {
  158.          throw new NoSuchElementException();
  159.       } else {
  160.          int var1 = this.currentPosition;
  161.          this.currentPosition = this.scanToken(this.currentPosition);
  162.          return this.str.substring(var1, this.currentPosition);
  163.       }
  164.    }
  165.  
  166.    public String nextToken(String var1) {
  167.       this.delimiters = var1;
  168.       this.delimsChanged = true;
  169.       this.setMaxDelimCodePoint();
  170.       return this.nextToken();
  171.    }
  172.  
  173.    public boolean hasMoreElements() {
  174.       return this.hasMoreTokens();
  175.    }
  176.  
  177.    public Object nextElement() {
  178.       return this.nextToken();
  179.    }
  180.  
  181.    public int countTokens() {
  182.       int var1 = 0;
  183.  
  184.       for(int var2 = this.currentPosition; var2 < this.maxPosition; ++var1) {
  185.          var2 = this.skipDelimiters(var2);
  186.          if (var2 >= this.maxPosition) {
  187.             break;
  188.          }
  189.  
  190.          var2 = this.scanToken(var2);
  191.       }
  192.  
  193.       return var1;
  194.    }
  195. }
  196.