| Clazz.load (["java.io.Reader"], "java.io.BufferedReader", ["java.io.IOException", "java.lang.IllegalArgumentException", "$.IndexOutOfBoundsException", "JU.SB"], function () { | |
| c$ = Clazz.decorateAsClass (function () { | |
| this.$in = null; | |
| this.cb = null; | |
| this.nChars = 0; | |
| this.nextChar = 0; | |
| this.markedChar = -1; | |
| this.readAheadLimit = 0; | |
| this.skipLF = false; | |
| this.markedSkipLF = false; | |
| Clazz.instantialize (this, arguments); | |
| }, java.io, "BufferedReader", java.io.Reader); | |
| Clazz.defineMethod (c$, "setSize", | |
| function (sz) { | |
| if (sz <= 0) throw new IllegalArgumentException ("Buffer size <= 0"); | |
| this.cb = Clazz.newCharArray (sz, '\0'); | |
| this.nextChar = this.nChars = 0; | |
| }, "~N"); | |
| Clazz.makeConstructor (c$, | |
| function ($in) { | |
| Clazz.superConstructor (this, java.io.BufferedReader, [$in]); | |
| this.$in = $in; | |
| this.setSize (8192); | |
| }, "java.io.Reader"); | |
| Clazz.defineMethod (c$, "ensureOpen", | |
| function () { | |
| if (this.$in == null) throw new java.io.IOException ("Stream closed"); | |
| }); | |
| Clazz.defineMethod (c$, "fill", | |
| function () { | |
| var dst; | |
| if (this.markedChar <= -1) { | |
| dst = 0; | |
| } else { | |
| var delta = this.nextChar - this.markedChar; | |
| if (delta >= this.readAheadLimit) { | |
| this.markedChar = -2; | |
| this.readAheadLimit = 0; | |
| dst = 0; | |
| } else { | |
| if (this.readAheadLimit <= this.cb.length) { | |
| System.arraycopy (this.cb, this.markedChar, this.cb, 0, delta); | |
| this.markedChar = 0; | |
| dst = delta; | |
| } else { | |
| var ncb = Clazz.newCharArray (this.readAheadLimit, '\0'); | |
| System.arraycopy (this.cb, this.markedChar, ncb, 0, delta); | |
| this.cb = ncb; | |
| this.markedChar = 0; | |
| dst = delta; | |
| }this.nextChar = this.nChars = delta; | |
| }}var n; | |
| do { | |
| n = this.$in.read (this.cb, dst, this.cb.length - dst); | |
| } while (n == 0); | |
| if (n > 0) { | |
| this.nChars = dst + n; | |
| this.nextChar = dst; | |
| }}); | |
| Clazz.defineMethod (c$, "read1", | |
| function (cbuf, off, len) { | |
| if (this.nextChar >= this.nChars) { | |
| if (len >= this.cb.length && this.markedChar <= -1 && !this.skipLF) { | |
| return this.$in.read (cbuf, off, len); | |
| }this.fill (); | |
| }if (this.nextChar >= this.nChars) return -1; | |
| if (this.skipLF) { | |
| this.skipLF = false; | |
| if (this.cb[this.nextChar] == '\n') { | |
| this.nextChar++; | |
| if (this.nextChar >= this.nChars) this.fill (); | |
| if (this.nextChar >= this.nChars) return -1; | |
| }}var n = Math.min (len, this.nChars - this.nextChar); | |
| System.arraycopy (this.cb, this.nextChar, cbuf, off, n); | |
| this.nextChar += n; | |
| return n; | |
| }, "~A,~N,~N"); | |
| Clazz.defineMethod (c$, "read", | |
| function (cbuf, off, len) { | |
| { | |
| this.ensureOpen (); | |
| if ((off < 0) || (off > cbuf.length) || (len < 0) || ((off + len) > cbuf.length) || ((off + len) < 0)) { | |
| throw new IndexOutOfBoundsException (); | |
| } else if (len == 0) { | |
| return 0; | |
| }var n = this.read1 (cbuf, off, len); | |
| if (n <= 0) return n; | |
| while ((n < len) && this.$in.ready ()) { | |
| var n1 = this.read1 (cbuf, off + n, len - n); | |
| if (n1 <= 0) break; | |
| n += n1; | |
| } | |
| return n; | |
| }}, "~A,~N,~N"); | |
| Clazz.defineMethod (c$, "readLine1", | |
| function (ignoreLF) { | |
| var s = null; | |
| var startChar; | |
| { | |
| this.ensureOpen (); | |
| var omitLF = ignoreLF || this.skipLF; | |
| for (; ; ) { | |
| if (this.nextChar >= this.nChars) this.fill (); | |
| if (this.nextChar >= this.nChars) { | |
| if (s != null && s.length () > 0) return s.toString (); | |
| return null; | |
| }var eol = false; | |
| var c = String.fromCharCode (0); | |
| var i; | |
| if (omitLF && (this.cb[this.nextChar] == '\n')) this.nextChar++; | |
| this.skipLF = false; | |
| omitLF = false; | |
| charLoop : for (i = this.nextChar; i < this.nChars; i++) { | |
| c = this.cb[i]; | |
| if ((c == '\n') || (c == '\r')) { | |
| eol = true; | |
| break charLoop; | |
| }} | |
| startChar = this.nextChar; | |
| this.nextChar = i; | |
| if (eol) { | |
| var str; | |
| if (s == null) { | |
| str = String.instantialize (this.cb, startChar, i - startChar); | |
| } else { | |
| s.appendCB (this.cb, startChar, i - startChar); | |
| str = s.toString (); | |
| }this.nextChar++; | |
| if (c == '\r') { | |
| this.skipLF = true; | |
| }return str; | |
| }if (s == null) s = JU.SB.newN (80); | |
| s.appendCB (this.cb, startChar, i - startChar); | |
| } | |
| }}, "~B"); | |
| Clazz.defineMethod (c$, "readLine", | |
| function () { | |
| return this.readLine1 (false); | |
| }); | |
| Clazz.overrideMethod (c$, "skip", | |
| function (n) { | |
| if (n < 0) { | |
| throw new IllegalArgumentException ("skip value is negative"); | |
| }{ | |
| this.ensureOpen (); | |
| var r = n; | |
| while (r > 0) { | |
| if (this.nextChar >= this.nChars) this.fill (); | |
| if (this.nextChar >= this.nChars) break; | |
| if (this.skipLF) { | |
| this.skipLF = false; | |
| if (this.cb[this.nextChar] == '\n') { | |
| this.nextChar++; | |
| }}var d = this.nChars - this.nextChar; | |
| if (r <= d) { | |
| this.nextChar += r; | |
| r = 0; | |
| break; | |
| }r -= d; | |
| this.nextChar = this.nChars; | |
| } | |
| return n - r; | |
| }}, "~N"); | |
| Clazz.defineMethod (c$, "ready", | |
| function () { | |
| { | |
| this.ensureOpen (); | |
| if (this.skipLF) { | |
| if (this.nextChar >= this.nChars && this.$in.ready ()) { | |
| this.fill (); | |
| }if (this.nextChar < this.nChars) { | |
| if (this.cb[this.nextChar] == '\n') this.nextChar++; | |
| this.skipLF = false; | |
| }}return (this.nextChar < this.nChars) || this.$in.ready (); | |
| }}); | |
| Clazz.overrideMethod (c$, "markSupported", | |
| function () { | |
| return true; | |
| }); | |
| Clazz.overrideMethod (c$, "mark", | |
| function (readAheadLimit) { | |
| if (readAheadLimit < 0) { | |
| throw new IllegalArgumentException ("Read-ahead limit < 0"); | |
| }{ | |
| this.ensureOpen (); | |
| this.readAheadLimit = readAheadLimit; | |
| this.markedChar = this.nextChar; | |
| this.markedSkipLF = this.skipLF; | |
| }}, "~N"); | |
| Clazz.overrideMethod (c$, "reset", | |
| function () { | |
| { | |
| this.ensureOpen (); | |
| if (this.markedChar < 0) throw new java.io.IOException ((this.markedChar == -2) ? "Mark invalid" : "Stream not marked"); | |
| this.nextChar = this.markedChar; | |
| this.skipLF = this.markedSkipLF; | |
| }}); | |
| Clazz.defineMethod (c$, "close", | |
| function () { | |
| { | |
| if (this.$in == null) return; | |
| this.$in.close (); | |
| this.$in = null; | |
| this.cb = null; | |
| }}); | |
| Clazz.defineStatics (c$, | |
| "INVALIDATED", -2, | |
| "UNMARKED", -1, | |
| "DEFAULT_CHAR_BUFFER_SIZE", 8192, | |
| "DEFAULT_EXPECTED_LINE_LENGTH", 80); | |
| }); | |