Version 3.18.1
Show:

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();