XPCOMで配列を使う
XPCOMのattributeに配列を入れたい場合,
nsIArrayなどでラップしないといけない。めんどくせー
読み込みのみの配列の場合は、nsIArrayを使い,削除追加をする場合は
nsIMutableArrayを使う。
例えば, nsIURIの配列を作る場合
初期化
var com = Components.classes["@mozilla.org/array;1"].createInstance(); var a = com.QueryInterface(Components.interfaces.nsIMutableArray);
値を追加
a.appendElement(element(nsIURI型), false);
値を得る
この場合は一番目の要素
var url = a.queryElementAt(0, Components.interfaces.nsIURI);
ふう。クロスプラットフォーム/クロス言語って大変なんですね。
ちなみに、配列の初期化でcomponents.classes.getserveceを使ってしまい,全配列の中身が同じになってしまいハマりました。
参考:
http://www.mozilla.org/projects/xpcom/array-guide.html#nsIArray
http://xulplanet.com/references/xpcomref/comps/c_array1.html