123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- var terminology_1 = require("../encoding/terminology");
- /**
- * A stream represents an ordered sequence of tokens.
- */
- var Stream = /** @class */ (function () {
- /**
- *
- * @constructor
- * @param {!(Array.<number>|Uint8Array)} tokens Array of tokens that provide
- * the stream.
- */
- function Stream(tokens) {
- /** @type {!Array.<number>} */
- this.tokens = Array.from(tokens);
- // Reversed as push/pop is more efficient than shift/unshift.
- this.tokens.reverse();
- }
- /**
- * @return {boolean} True if end-of-stream has been hit.
- */
- Stream.prototype.endOfStream = function () {
- return !this.tokens.length;
- };
- /**
- * When a token is read from a stream, the first token in the
- * stream must be returned and subsequently removed, and
- * end-of-stream must be returned otherwise.
- *
- * @return {number} Get the next token from the stream, or
- * end_of_stream.
- */
- Stream.prototype.read = function () {
- if (!this.tokens.length)
- return terminology_1.end_of_stream;
- return this.tokens.pop();
- };
- /**
- * When one or more tokens are prepended to a stream, those tokens
- * must be inserted, in given order, before the first token in the
- * stream.
- *
- * @param {(number|!Array.<number>)} token The token(s) to prepend to the
- * stream.
- */
- Stream.prototype.prepend = function (token) {
- if (Array.isArray(token)) {
- var tokens = (token);
- while (tokens.length)
- this.tokens.push(tokens.pop());
- }
- else {
- this.tokens.push(token);
- }
- };
- /**
- * When one or more tokens are pushed to a stream, those tokens
- * must be inserted, in given order, after the last token in the
- * stream.
- *
- * @param {(number|!Array.<number>)} token The tokens(s) to push to the
- * stream.
- */
- Stream.prototype.push = function (token) {
- if (Array.isArray(token)) {
- var tokens = (token);
- while (tokens.length)
- this.tokens.unshift(tokens.shift());
- }
- else {
- this.tokens.unshift(token);
- }
- };
- return Stream;
- }());
- exports.Stream = Stream;
- //# sourceMappingURL=Stream.js.map
|