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 / java / io / StringReader.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  1.5 KB  |  109 lines

  1. package java.io;
  2.  
  3. public class StringReader extends Reader {
  4.    private String str;
  5.    private int length;
  6.    private int next = 0;
  7.    private int mark = 0;
  8.  
  9.    public StringReader(String var1) {
  10.       this.str = var1;
  11.       this.length = var1.length();
  12.    }
  13.  
  14.    private void ensureOpen() throws IOException {
  15.       if (this.str == null) {
  16.          throw new IOException("Stream closed");
  17.       }
  18.    }
  19.  
  20.    public int read() throws IOException {
  21.       Object var1 = super.lock;
  22.       synchronized(var1) {
  23.          this.ensureOpen();
  24.          if (this.next >= this.length) {
  25.             byte var2 = -1;
  26.             return var2;
  27.          } else {
  28.             char var3 = this.str.charAt(this.next++);
  29.             return var3;
  30.          }
  31.       }
  32.    }
  33.  
  34.    public int read(char[] var1, int var2, int var3) throws IOException {
  35.       Object var4 = super.lock;
  36.       synchronized(var4) {
  37.          this.ensureOpen();
  38.          if (var2 >= 0 && var2 <= var1.length && var3 >= 0 && var2 + var3 <= var1.length && var2 + var3 >= 0) {
  39.             if (var3 == 0) {
  40.                byte var10 = 0;
  41.                return var10;
  42.             } else if (this.next >= this.length) {
  43.                byte var5 = -1;
  44.                return var5;
  45.             } else {
  46.                int var6 = Math.min(this.length - this.next, var3);
  47.                this.str.getChars(this.next, this.next + var6, var1, var2);
  48.                this.next += var6;
  49.                return var6;
  50.             }
  51.          } else {
  52.             throw new IndexOutOfBoundsException();
  53.          }
  54.       }
  55.    }
  56.  
  57.    public long skip(long var1) throws IOException {
  58.       Object var3 = super.lock;
  59.       synchronized(var3) {
  60.          this.ensureOpen();
  61.          if (this.next >= this.length) {
  62.             long var4 = 0L;
  63.             return var4;
  64.          } else {
  65.             long var6 = Math.min((long)(this.length - this.next), var1);
  66.             this.next = (int)((long)this.next + var6);
  67.             return var6;
  68.          }
  69.       }
  70.    }
  71.  
  72.    public boolean ready() throws IOException {
  73.       Object var1 = super.lock;
  74.       synchronized(var1) {
  75.          this.ensureOpen();
  76.          boolean var2 = true;
  77.          return var2;
  78.       }
  79.    }
  80.  
  81.    public boolean markSupported() {
  82.       return true;
  83.    }
  84.  
  85.    public void mark(int var1) throws IOException {
  86.       if (var1 < 0) {
  87.          throw new IllegalArgumentException("Read-ahead limit < 0");
  88.       } else {
  89.          Object var2 = super.lock;
  90.          synchronized(var2) {
  91.             this.ensureOpen();
  92.             this.mark = this.next;
  93.          }
  94.       }
  95.    }
  96.  
  97.    public void reset() throws IOException {
  98.       Object var1 = super.lock;
  99.       synchronized(var1) {
  100.          this.ensureOpen();
  101.          this.next = this.mark;
  102.       }
  103.    }
  104.  
  105.    public void close() {
  106.       this.str = null;
  107.    }
  108. }
  109.