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