謎's キッチン

謎のひとりごと。Amazon欲しい物リストはこちら: https://www.amazon.co.jp/hz/wishlist/ls/CCPOV7C6JTD2

nsISimpleEnumeratorをラッピング


function list(_enum,type){
this._enum=_enum;
this.type=type;
}
list.prototype={
cache:new Array(),
get:function(aNum){
if(aNum==-1)return;
if(this.cache[aNum])return this.cache[aNum];
while(this._enum.hasMoreElements()){
this.cache.push(this._enum.getNext().QueryInterface(this.type));
if(aNum==this.cache.length-1)return this.cache[aNum];
}
return void(0);
}
}
使いかたはこんな感じに。

var entries = testDir.directoryEntries;
entries=new list(entries,Components.interfaces.nsILocalFile);
entries.get(Number.MAX_VALUE);
var test="";
for(i in entries.cache){
test+=entries.cache[i].leafName+"\n";
}
alert(test);
いきなり酷いことしてますが気にしない。
自由に利用どうぞ。

テストしてみて色々ミスってたのを修正。
処で元データが変更になった場合ってどうなってるんだろう…


XULWikiの方にも書いてきました。