home *** CD-ROM | disk | FTP | other *** search
/ Dynamic HTML Construction Kit / Dynamic HTML Construction Kit.iso / earthlink / nscomm / java40.jar / java / io / LineNumberReader.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-11-03  |  1.6 KB  |  173 lines

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