Clazz.declarePackage ("JU"); Clazz.load (["java.io.FilterOutputStream"], "JU.DeflaterOutputStream", ["java.io.IOException", "java.lang.IndexOutOfBoundsException"], function () { c$ = Clazz.decorateAsClass (function () { this.deflater = null; this.buffer = null; this.closed = false; this.syncFlush = false; this.buf1 = null; this.mydeflater = false; this.close_out = true; Clazz.instantialize (this, arguments); }, JU, "DeflaterOutputStream", java.io.FilterOutputStream); Clazz.prepareFields (c$, function () { this.buf1 = Clazz.newByteArray (1, 0); }); Clazz.defineMethod (c$, "jzSetDOS", function (out, deflater, size, close_out) { this.jzSetFOS (out); if (size == 0) size = 512; this.deflater = deflater; this.buffer = Clazz.newByteArray (size, 0); this.close_out = close_out; }, "java.io.OutputStream,JU.Deflater,~N,~B"); Clazz.overrideMethod (c$, "writeByteAsInt", function (b) { this.buf1[0] = (b & 0xff); this.write (this.buf1, 0, 1); }, "~N"); Clazz.defineMethod (c$, "write", function (b, off, len) { if (this.deflater.finished ()) throw new java.io.IOException ("finished"); if ( new Boolean ( new Boolean (off < 0 | len < 0).valueOf () | off + len > b.length).valueOf ()) throw new IndexOutOfBoundsException (); if (len == 0) return; var flush = this.syncFlush ? 2 : 0; this.deflater.setInput (b, off, len, true); while (this.deflater.avail_in > 0) { var err = this.deflate (flush); if (err == 1) break; } }, "~A,~N,~N"); Clazz.defineMethod (c$, "finish", function () { while (!this.deflater.finished ()) { this.deflate (4); } }); Clazz.overrideMethod (c$, "close", function () { if (!this.closed) { this.finish (); if (this.mydeflater) { this.deflater.end (); }if (this.close_out) this.out.close (); this.closed = true; }}); Clazz.defineMethod (c$, "deflate", function (flush) { this.deflater.setOutput (this.buffer, 0, this.buffer.length); var err = this.deflater.deflate (flush); switch (err) { case 0: case 1: break; case -5: if (this.deflater.avail_in <= 0 && flush != 4) { break; }default: throw new java.io.IOException ("failed to deflate"); } var len = this.deflater.next_out_index; if (len > 0) { this.out.write (this.buffer, 0, len); }return err; }, "~N"); Clazz.overrideMethod (c$, "flush", function () { if (this.syncFlush && !this.deflater.finished ()) { while (true) { var err = this.deflate (2); if (this.deflater.next_out_index < this.buffer.length) break; if (err == 1) break; } }this.out.flush (); }); Clazz.defineMethod (c$, "getTotalIn", function () { return this.deflater.getTotalIn (); }); Clazz.defineMethod (c$, "getTotalOut", function () { return this.deflater.getTotalOut (); }); Clazz.defineMethod (c$, "setSyncFlush", function (syncFlush) { this.syncFlush = syncFlush; }, "~B"); Clazz.defineMethod (c$, "getSyncFlush", function () { return this.syncFlush; }); Clazz.defineMethod (c$, "getDeflater", function () { return this.deflater; }); Clazz.defineStatics (c$, "DEFAULT_BUFSIZE", 512); });