Source: classes/Item.js

/*
 * Universal module definition for module containing the Item class.
 */
(function(root, factory) {
    /* istanbul ignore next */
    if (typeof define === 'function' && define.amd) {
        define(factory);
    } else if (typeof module === 'object' && module.exports) {
        module.exports = factory();
    } else {
        root.jsccItem = factory();
    }
}(this, function() {
    //>>excludeStart("closure", pragmas.closure);
    var jscc = {
        classes: {}
    };
    //>>excludeEnd("closure");
    /**
     * Creates a new Item instance.
     * @classdesc Contains lookahead information associated with a production.
     * @param {ItemOptions=} o - Optional overrides for default property values.
     * @constructor
     * @const
     */
    jscc.classes.Item = function(o) {
        var p = o || {};
        if (typeof p.prod === 'number') {
            this.prod = /** @type {!number} */ (p.prod);
        }
        if (typeof p.dot_offset === 'number') {
            this.dot_offset = /** @type {!number} */ (p.dot_offset);
        }
        if (typeof p.lookahead !== 'undefined' && Array.isArray(p.lookahead)) {
            this.lookahead = /** @type {!Array<!number>} */ (p.lookahead);
        }
    };

    /**
     * The index within the global productions array of the production associated with this item.
     * @type {!number}
     */
    jscc.classes.Item.prototype.prod = -1;
    /**
     * The dot offset.
     * @type {!number}
     */
    jscc.classes.Item.prototype.dot_offset = 0;
    /**
     * An array of lookahead indexes.
     * @type {!Array<!number>}
     */
    jscc.classes.Item.prototype.lookahead = [];

    /**
     * The module containing the Item class.
     * @module {function(new:jscc.classes.Item, ItemOptions=)} jscc/classes/Item
     */
    return jscc.classes.Item;
}));