}
var Stream = (function() {
- function constructor(arrayBuffer, dict) {
+ function constructor(arrayBuffer, start, length, dict) {
this.bytes = new Uint8Array(arrayBuffer);
- this.pos = 0;
- this.start = 0;
+ this.start = start || 0;
+ this.pos = this.start;
+ this.length = (start + length) || arrayBuffer.byteLength;
this.dict = dict;
}
constructor.prototype = {
- get length() {
- return this.bytes.length;
- },
getByte: function() {
var bytes = this.bytes;
- if (this.pos >= bytes.length)
+ if (this.pos >= this.length)
return -1;
return bytes[this.pos++];
},
lookChar: function() {
var bytes = this.bytes;
- if (this.pos >= bytes.length)
+ if (this.pos >= this.length)
return;
return String.fromCharCode(bytes[this.pos]);
},
moveStart: function() {
this.start = this.pos;
},
- makeSubStream: function(pos, length, dict) {
- var buffer = this.bytes.buffer;
- if (length)
- return new Stream(new Uint8Array(buffer, pos, length), dict);
- return new Stream(new Uint8Array(buffer, pos), dict);
+ makeSubStream: function(start, length, dict) {
+ return new Stream(this.bytes.buffer, start, length, dict);
}
};