| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 | 
							- ;(function() { // closure for web browsers
 
- function Item (data, prev, next) {
 
-   this.next = next
 
-   if (next) next.prev = this
 
-   this.prev = prev
 
-   if (prev) prev.next = this
 
-   this.data = data
 
- }
 
- function FastList () {
 
-   if (!(this instanceof FastList)) return new FastList
 
-   this._head = null
 
-   this._tail = null
 
-   this.length = 0
 
- }
 
- FastList.prototype =
 
- { push: function (data) {
 
-     this._tail = new Item(data, this._tail, null)
 
-     if (!this._head) this._head = this._tail
 
-     this.length ++
 
-   }
 
- , pop: function () {
 
-     if (this.length === 0) return undefined
 
-     var t = this._tail
 
-     this._tail = t.prev
 
-     if (t.prev) {
 
-       t.prev = this._tail.next = null
 
-     }
 
-     this.length --
 
-     if (this.length === 1) this._head = this._tail
 
-     else if (this.length === 0) this._head = this._tail = null
 
-     return t.data
 
-   }
 
- , unshift: function (data) {
 
-     this._head = new Item(data, null, this._head)
 
-     if (!this._tail) this._tail = this._head
 
-     this.length ++
 
-   }
 
- , shift: function () {
 
-     if (this.length === 0) return undefined
 
-     var h = this._head
 
-     this._head = h.next
 
-     if (h.next) {
 
-       h.next = this._head.prev = null
 
-     }
 
-     this.length --
 
-     if (this.length === 1) this._tail = this._head
 
-     else if (this.length === 0) this._head = this._tail = null
 
-     return h.data
 
-   }
 
- , item: function (n) {
 
-     if (n < 0) n = this.length + n
 
-     var h = this._head
 
-     while (n-- > 0 && h) h = h.next
 
-     return h ? h.data : undefined
 
-   }
 
- , slice: function (n, m) {
 
-     if (!n) n = 0
 
-     if (!m) m = this.length
 
-     if (m < 0) m = this.length + m
 
-     if (n < 0) n = this.length + n
 
-     if (m <= n) {
 
-       throw new Error("invalid offset: "+n+","+m)
 
-     }
 
-     var len = m - n
 
-       , ret = new Array(len)
 
-       , i = 0
 
-       , h = this._head
 
-     while (n-- > 0 && h) h = h.next
 
-     while (i < len && h) {
 
-       ret[i++] = h.data
 
-       h = h.next
 
-     }
 
-     return ret
 
-   }
 
- , drop: function () {
 
-     FastList.call(this)
 
-   }
 
- }
 
- if ("undefined" !== typeof(exports)) module.exports = FastList
 
- else if ("function" === typeof(define) && define.amd) {
 
-   define("FastList", function() { return FastList })
 
- } else (function () { return this })().FastList = FastList
 
- })()
 
 
  |