[483] | 1 | define(["dojo/_base/kernel", "dojo/_base/array", "./_base"], function(dojo, darray, dxc){ |
---|
| 2 | |
---|
| 3 | dxc.Queue=function(/*array?*/ arr){ |
---|
| 4 | // summary: |
---|
| 5 | // return an object of type dojox.collections.Queue |
---|
| 6 | var q=[]; |
---|
| 7 | if (arr){ |
---|
| 8 | q=q.concat(arr); |
---|
| 9 | } |
---|
| 10 | this.count=q.length; |
---|
| 11 | this.clear=function(){ |
---|
| 12 | // summary: |
---|
| 13 | // clears the internal collection |
---|
| 14 | q=[]; |
---|
| 15 | this.count=q.length; |
---|
| 16 | }; |
---|
| 17 | this.clone=function(){ |
---|
| 18 | // summary: |
---|
| 19 | // creates a new Queue based on this one |
---|
| 20 | return new dxc.Queue(q); // dojox.collections.Queue |
---|
| 21 | }; |
---|
| 22 | this.contains=function(/*object*/ o){ |
---|
| 23 | // summary: |
---|
| 24 | // Check to see if the passed object is an element in this queue |
---|
| 25 | for(var i=0; i<q.length; i++){ |
---|
| 26 | if (q[i]==o){ |
---|
| 27 | return true; // bool |
---|
| 28 | } |
---|
| 29 | } |
---|
| 30 | return false; // bool |
---|
| 31 | }; |
---|
| 32 | this.copyTo=function(/*array*/ arr, /*int*/ i){ |
---|
| 33 | // summary: |
---|
| 34 | // Copy the contents of this queue into the passed array at index i. |
---|
| 35 | arr.splice(i,0,q); |
---|
| 36 | }; |
---|
| 37 | this.dequeue=function(){ |
---|
| 38 | // summary: |
---|
| 39 | // shift the first element off the queue and return it |
---|
| 40 | var r=q.shift(); |
---|
| 41 | this.count=q.length; |
---|
| 42 | return r; // object |
---|
| 43 | }; |
---|
| 44 | this.enqueue=function(/*object*/ o){ |
---|
| 45 | // summary: |
---|
| 46 | // put the passed object at the end of the queue |
---|
| 47 | this.count=q.push(o); |
---|
| 48 | }; |
---|
| 49 | this.forEach=function(/*function*/ fn, /*object?*/ scope){ |
---|
| 50 | // summary: |
---|
| 51 | // functional iterator, following the mozilla spec. |
---|
| 52 | dojo.forEach(q, fn, scope); |
---|
| 53 | }; |
---|
| 54 | this.getIterator=function(){ |
---|
| 55 | // summary: |
---|
| 56 | // get an Iterator based on this queue. |
---|
| 57 | return new dxc.Iterator(q); // dojox.collections.Iterator |
---|
| 58 | }; |
---|
| 59 | this.peek=function(){ |
---|
| 60 | // summary: |
---|
| 61 | // get the next element in the queue without altering the queue. |
---|
| 62 | return q[0]; |
---|
| 63 | }; |
---|
| 64 | this.toArray=function(){ |
---|
| 65 | // summary: |
---|
| 66 | // return an array based on the internal array of the queue. |
---|
| 67 | return [].concat(q); |
---|
| 68 | }; |
---|
| 69 | }; |
---|
| 70 | return dxc.Queue; |
---|
| 71 | }); |
---|