#

API Docs for: 3.10.3
Show: Inherited Protected Private Deprecated

# File: yui/js/queue-base.js

    /**
     * The YUI module contains the components required for building the YUI
     * seed file.  This includes the script loading mechanism, a simple queue,
     * and the core utilities for the library.
     * @module yui
     * @submodule yui-base
     */

    /**
     * A simple FIFO queue.  Items are added to the Queue with add(1..n items) and
     * removed using next().
     *
     * @class Queue
     * @constructor
     * @param {MIXED} item* 0..n items to seed the queue.
     */
    function Queue() {
        this._init();
        this.add.apply(this, arguments);
    }

    Queue.prototype = {
        /**
         * Initialize the queue
         *
         * @method _init
         * @protected
         */
        _init: function() {
            /**
             * The collection of enqueued items
             *
             * @property _q
             * @type Array
             * @protected
             */
            this._q = [];
        },

        /**
         * Get the next item in the queue. FIFO support
         *
         * @method next
         * @return {MIXED} the next item in the queue.
         */
        next: function() {
            return this._q.shift();
        },

        /**
         * Get the last in the queue. LIFO support.
         *
         * @method last
         * @return {MIXED} the last item in the queue.
         */
        last: function() {
            return this._q.pop();
        },

        /**
         * Add 0..n items to the end of the queue.
         *
         * @method add
         * @param {MIXED} item* 0..n items.
         * @return {object} this queue.
         */
        add: function() {
            this._q.push.apply(this._q, arguments);

            return this;
        },

        /**
         * Returns the current number of queued items.
         *
         * @method size
         * @return {Number} The size.
         */
        size: function() {
            return this._q.length;
        }
    };

    Y.Queue = Queue;

    YUI.Env._loaderQueue = YUI.Env._loaderQueue || new Queue();