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 / CharArrayReader.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  1.6 KB  |  128 lines

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