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

  1. package java.io;
  2.  
  3. public class LineNumberReader extends BufferedReader {
  4.    private int lineNumber = 0;
  5.    private int markedLineNumber;
  6.    private boolean skipLF;
  7.    private boolean markedSkipLF;
  8.    private static final int maxSkipBufferSize = 8192;
  9.    private char[] skipBuffer = null;
  10.  
  11.    public LineNumberReader(Reader var1) {
  12.       super(var1);
  13.    }
  14.  
  15.    public LineNumberReader(Reader var1, int var2) {
  16.       super(var1, var2);
  17.    }
  18.  
  19.    public void setLineNumber(int var1) {
  20.       this.lineNumber = var1;
  21.    }
  22.  
  23.    public int getLineNumber() {
  24.       return this.lineNumber;
  25.    }
  26.  
  27.    public int read() throws IOException {
  28.       Object var1 = super.lock;
  29.       synchronized(var1) {
  30.          int var2 = super.read();
  31.          if (this.skipLF) {
  32.             if (var2 == 10) {
  33.                var2 = super.read();
  34.             }
  35.  
  36.             this.skipLF = false;
  37.          }
  38.  
  39.          switch (var2) {
  40.             case 13:
  41.                this.skipLF = true;
  42.             case 10:
  43.                ++this.lineNumber;
  44.                byte var3 = 10;
  45.                return var3;
  46.             default:
  47.                return var2;
  48.          }
  49.       }
  50.    }
  51.  
  52.    public int read(char[] var1, int var2, int var3) throws IOException {
  53.       Object var4 = super.lock;
  54.       synchronized(var4) {
  55.          int var5 = super.read(var1, var2, var3);
  56.  
  57.          for(int var6 = var2; var6 < var2 + var5; ++var6) {
  58.             char var7 = var1[var6];
  59.             if (this.skipLF) {
  60.                this.skipLF = false;
  61.                if (var7 == '\n') {
  62.                   continue;
  63.                }
  64.             }
  65.  
  66.             switch (var7) {
  67.                case '\r':
  68.                   this.skipLF = true;
  69.                case '\n':
  70.                   ++this.lineNumber;
  71.             }
  72.          }
  73.  
  74.          return var5;
  75.       }
  76.    }
  77.  
  78.    public String readLine() throws IOException {
  79.       Object var1 = super.lock;
  80.       synchronized(var1) {
  81.          String var2 = super.readLine(this.skipLF);
  82.          this.skipLF = false;
  83.          if (var2 != null) {
  84.             ++this.lineNumber;
  85.          }
  86.  
  87.          return var2;
  88.       }
  89.    }
  90.  
  91.    public long skip(long var1) throws IOException {
  92.       if (var1 < 0L) {
  93.          throw new IllegalArgumentException("skip() value is negative");
  94.       } else {
  95.          int var3 = (int)Math.min(var1, 8192L);
  96.          Object var4 = super.lock;
  97.          synchronized(var4) {
  98.             if (this.skipBuffer == null || this.skipBuffer.length < var3) {
  99.                this.skipBuffer = new char[var3];
  100.             }
  101.  
  102.             long var5;
  103.             int var7;
  104.             for(var5 = var1; var5 > 0L; var5 -= (long)var7) {
  105.                var7 = this.read(this.skipBuffer, 0, (int)Math.min(var5, (long)var3));
  106.                if (var7 == -1) {
  107.                   break;
  108.                }
  109.             }
  110.  
  111.             long var11 = var1 - var5;
  112.             return var11;
  113.          }
  114.       }
  115.    }
  116.  
  117.    public void mark(int var1) throws IOException {
  118.       Object var2 = super.lock;
  119.       synchronized(var2) {
  120.          super.mark(var1);
  121.          this.markedLineNumber = this.lineNumber;
  122.          this.markedSkipLF = this.skipLF;
  123.       }
  124.    }
  125.  
  126.    public void reset() throws IOException {
  127.       Object var1 = super.lock;
  128.       synchronized(var1) {
  129.          super.reset();
  130.          this.lineNumber = this.markedLineNumber;
  131.          this.skipLF = this.markedSkipLF;
  132.       }
  133.    }
  134. }
  135.