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

  1. package java.io;
  2.  
  3. public class LineNumberInputStream extends FilterInputStream {
  4.    int pushBack = -1;
  5.    int lineNumber;
  6.    int markLineNumber;
  7.    int markPushBack = -1;
  8.  
  9.    public LineNumberInputStream(InputStream var1) {
  10.       super(var1);
  11.    }
  12.  
  13.    public int read() throws IOException {
  14.       int var1 = this.pushBack;
  15.       if (var1 != -1) {
  16.          this.pushBack = -1;
  17.       } else {
  18.          var1 = super.in.read();
  19.       }
  20.  
  21.       switch (var1) {
  22.          case 13:
  23.             this.pushBack = super.in.read();
  24.             if (this.pushBack == 10) {
  25.                this.pushBack = -1;
  26.             }
  27.          case 10:
  28.             ++this.lineNumber;
  29.             return 10;
  30.          default:
  31.             return var1;
  32.       }
  33.    }
  34.  
  35.    public int read(byte[] var1, int var2, int var3) throws IOException {
  36.       if (var1 == null) {
  37.          throw new NullPointerException();
  38.       } else if (var2 >= 0 && var2 <= var1.length && var3 >= 0 && var2 + var3 <= var1.length && var2 + var3 >= 0) {
  39.          if (var3 == 0) {
  40.             return 0;
  41.          } else {
  42.             int var4 = this.read();
  43.             if (var4 == -1) {
  44.                return -1;
  45.             } else {
  46.                var1[var2] = (byte)var4;
  47.                int var5 = 1;
  48.  
  49.                try {
  50.                   for(; var5 < var3; ++var5) {
  51.                      var4 = this.read();
  52.                      if (var4 == -1) {
  53.                         break;
  54.                      }
  55.  
  56.                      if (var1 != null) {
  57.                         var1[var2 + var5] = (byte)var4;
  58.                      }
  59.                   }
  60.                } catch (IOException var7) {
  61.                }
  62.  
  63.                return var5;
  64.             }
  65.          }
  66.       } else {
  67.          throw new IndexOutOfBoundsException();
  68.       }
  69.    }
  70.  
  71.    public long skip(long var1) throws IOException {
  72.       short var3 = 2048;
  73.       long var4 = var1;
  74.       if (var1 <= 0L) {
  75.          return 0L;
  76.       } else {
  77.          int var7;
  78.          for(byte[] var6 = new byte[var3]; var4 > 0L; var4 -= (long)var7) {
  79.             var7 = this.read(var6, 0, (int)Math.min((long)var3, var4));
  80.             if (var7 < 0) {
  81.                break;
  82.             }
  83.          }
  84.  
  85.          return var1 - var4;
  86.       }
  87.    }
  88.  
  89.    public void setLineNumber(int var1) {
  90.       this.lineNumber = var1;
  91.    }
  92.  
  93.    public int getLineNumber() {
  94.       return this.lineNumber;
  95.    }
  96.  
  97.    public int available() throws IOException {
  98.       return this.pushBack == -1 ? super.available() / 2 : super.available() / 2 + 1;
  99.    }
  100.  
  101.    public void mark(int var1) {
  102.       this.markLineNumber = this.lineNumber;
  103.       this.markPushBack = this.pushBack;
  104.       super.in.mark(var1);
  105.    }
  106.  
  107.    public void reset() throws IOException {
  108.       this.lineNumber = this.markLineNumber;
  109.       this.pushBack = this.markPushBack;
  110.       super.in.reset();
  111.    }
  112. }
  113.