home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1999 April / DPPCPRO0499.ISO / April / Notes / 50b2wic.exe / DATA1.CAB / NotesProgramFilesJavaSupport / rt.jar / java / io / PushbackReader.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-04-23  |  1.9 KB  |  149 lines

  1. package java.io;
  2.  
  3. public class PushbackReader extends FilterReader {
  4.    private char[] buf;
  5.    private int pos;
  6.  
  7.    public PushbackReader(Reader var1, int var2) {
  8.       super(var1);
  9.       this.buf = new char[var2];
  10.       this.pos = var2;
  11.    }
  12.  
  13.    public PushbackReader(Reader var1) {
  14.       this(var1, 1);
  15.    }
  16.  
  17.    private void ensureOpen() throws IOException {
  18.       if (this.buf == null) {
  19.          throw new IOException("Stream closed");
  20.       }
  21.    }
  22.  
  23.    public int read() throws IOException {
  24.       Object var2 = super.lock;
  25.       synchronized(var2){}
  26.  
  27.       int var1;
  28.       try {
  29.          this.ensureOpen();
  30.          if (this.pos >= this.buf.length) {
  31.             var1 = super.read();
  32.             return var1;
  33.          }
  34.  
  35.          var1 = this.buf[this.pos++];
  36.       } catch (Throwable var5) {
  37.          throw var5;
  38.       }
  39.  
  40.       return var1;
  41.    }
  42.  
  43.    public int read(char[] var1, int var2, int var3) throws IOException {
  44.       Object var5 = super.lock;
  45.       synchronized(var5){}
  46.  
  47.       int var4;
  48.       try {
  49.          this.ensureOpen();
  50.          if (var3 <= 0) {
  51.             var4 = 0;
  52.             return var4;
  53.          }
  54.  
  55.          int var7 = this.buf.length - this.pos;
  56.          if (var7 > 0) {
  57.             if (var3 < var7) {
  58.                var7 = var3;
  59.             }
  60.  
  61.             System.arraycopy(this.buf, this.pos, var1, var2, var7);
  62.             this.pos += var7;
  63.             var2 += var7;
  64.             var3 -= var7;
  65.          }
  66.  
  67.          if (var3 <= 0) {
  68.             var4 = var7;
  69.             return var4;
  70.          }
  71.  
  72.          var3 = super.read(var1, var2, var3);
  73.          if (var3 == -1) {
  74.             var4 = var7 == 0 ? -1 : var7;
  75.             return var4;
  76.          }
  77.  
  78.          var4 = var7 + var3;
  79.       } catch (Throwable var9) {
  80.          throw var9;
  81.       }
  82.  
  83.       return var4;
  84.    }
  85.  
  86.    public void unread(int var1) throws IOException {
  87.       Object var2 = super.lock;
  88.       synchronized(var2){}
  89.  
  90.       try {
  91.          this.ensureOpen();
  92.          if (this.pos == 0) {
  93.             throw new IOException("Pushback buffer overflow");
  94.          }
  95.  
  96.          this.buf[--this.pos] = (char)var1;
  97.       } catch (Throwable var4) {
  98.          throw var4;
  99.       }
  100.  
  101.    }
  102.  
  103.    public void unread(char[] var1, int var2, int var3) throws IOException {
  104.       Object var4 = super.lock;
  105.       synchronized(var4){}
  106.  
  107.       try {
  108.          this.ensureOpen();
  109.          if (var3 > this.pos) {
  110.             throw new IOException("Pushback buffer overflow");
  111.          }
  112.  
  113.          this.pos -= var3;
  114.          System.arraycopy(var1, var2, this.buf, this.pos, var3);
  115.       } catch (Throwable var6) {
  116.          throw var6;
  117.       }
  118.  
  119.    }
  120.  
  121.    public void unread(char[] var1) throws IOException {
  122.       this.unread(var1, 0, var1.length);
  123.    }
  124.  
  125.    public boolean ready() throws IOException {
  126.       Object var2 = super.lock;
  127.       synchronized(var2){}
  128.  
  129.       boolean var1;
  130.       try {
  131.          this.ensureOpen();
  132.          var1 = this.pos < this.buf.length || super.ready();
  133.       } catch (Throwable var5) {
  134.          throw var5;
  135.       }
  136.  
  137.       return var1;
  138.    }
  139.  
  140.    public boolean markSupported() {
  141.       return false;
  142.    }
  143.  
  144.    public void close() throws IOException {
  145.       super.close();
  146.       this.buf = null;
  147.    }
  148. }
  149.