Subversion Repositories Applications.papyrus

Rev

Blame | Last modification | View Log | RSS feed

if(!dojo._hasResource["dojox.collections._base"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
dojo._hasResource["dojox.collections._base"] = true;
dojo.provide("dojox.collections._base");

dojox.collections.DictionaryEntry=function(/* string */k, /* object */v){
        //      summary
        //      return an object of type dojox.collections.DictionaryEntry
        this.key=k;
        this.value=v;
        this.valueOf=function(){ 
                return this.value;      //      object
        };
        this.toString=function(){ 
                return String(this.value);      //      string 
        };
}

/*      Iterators
 *      The collections.Iterators (Iterator and DictionaryIterator) are built to
 *      work with the Collections included in this module.  However, they *can*
 *      be used with arrays and objects, respectively, should one choose to do so.
 */
dojox.collections.Iterator=function(/* array */arr){
        //      summary
        //      return an object of type dojox.collections.Iterator
        var a=arr;
        var position=0;
        this.element=a[position]||null;
        this.atEnd=function(){
                //      summary
                //      Test to see if the internal cursor has reached the end of the internal collection.
                return (position>=a.length);    //      bool
        };
        this.get=function(){
                //      summary
                //      Get the next member in the collection.
                if(this.atEnd()){
                        return null;            //      object
                }
                this.element=a[position++];
                return this.element;    //      object
        };
        this.map=function(/* function */fn, /* object? */scope){
                //      summary
                //      Functional iteration with optional scope.
                return dojo.map(a, fn, scope);
        };
        this.reset=function(){
                //      summary
                //      reset the internal cursor.
                position=0;
                this.element=a[position];
        };
}

/*      Notes:
 *      The DictionaryIterator no longer supports a key and value property;
 *      the reality is that you can use this to iterate over a JS object
 *      being used as a hashtable.
 */
dojox.collections.DictionaryIterator=function(/* object */obj){
        //      summary
        //      return an object of type dojox.collections.DictionaryIterator
        var a=[];       //      Create an indexing array
        var testObject={};
        for(var p in obj){
                if(!testObject[p]){
                        a.push(obj[p]); //      fill it up
                }
        }
        var position=0;
        this.element=a[position]||null;
        this.atEnd=function(){
                //      summary
                //      Test to see if the internal cursor has reached the end of the internal collection.
                return (position>=a.length);    //      bool
        };
        this.get=function(){
                //      summary
                //      Get the next member in the collection.
                if(this.atEnd()){
                        return null;            //      object
                }
                this.element=a[position++];
                return this.element;    //      object
        };
        this.map=function(/* function */fn, /* object? */scope){
                //      summary
                //      Functional iteration with optional scope.
                return dojo.map(a, fn, scope);
        };
        this.reset=function() { 
                //      summary
                //      reset the internal cursor.
                position=0; 
                this.element=a[position];
        };
};

}