123456789101112131415161718192021222324252627282930313233343536373839404142 |
- /* very simple input/output stream interface */
- var Stream = function() {
- };
- // input streams //////////////
- /** Returns the next byte, or -1 for EOF. */
- Stream.prototype.readByte = function() {
- throw new Error("abstract method readByte() not implemented");
- };
- /** Attempts to fill the buffer; returns number of bytes read, or
- * -1 for EOF. */
- Stream.prototype.read = function(buffer, bufOffset, length) {
- var bytesRead = 0;
- while (bytesRead < length) {
- var c = this.readByte();
- if (c < 0) { // EOF
- return (bytesRead===0) ? -1 : bytesRead;
- }
- buffer[bufOffset++] = c;
- bytesRead++;
- }
- return bytesRead;
- };
- Stream.prototype.seek = function(new_pos) {
- throw new Error("abstract method seek() not implemented");
- };
- // output streams ///////////
- Stream.prototype.writeByte = function(_byte) {
- throw new Error("abstract method readByte() not implemented");
- };
- Stream.prototype.write = function(buffer, bufOffset, length) {
- var i;
- for (i=0; i<length; i++) {
- this.writeByte(buffer[bufOffset++]);
- }
- return length;
- };
- Stream.prototype.flush = function() {
- };
- module.exports = Stream;
|