Hatena::Groupmoz-addon

Ci.nsIZIGOROu

2008-05-08ばっしゅー

xpcomstub をリリースしました

| 15:41 |  xpcomstub をリリースしました - Ci.nsIZIGOROu を含むブックマーク はてなブックマーク -  xpcomstub をリリースしました - Ci.nsIZIGOROu

XPCShellを使って特定のinterfaceのスタブを作る - Ci.nsIZIGOROu - Mozilla 拡張機能勉強会 を少しまとめてCodeReposにうpりました。

ダウンロード

使い方

まずxpcshellが必要です。

さらに環境変数ないしはxpcomstub.shのXPCSHELL変数にお使いのxpcshellのパスを記述する必要があります。

*1

そこまで出来たら後は簡単。

usage: xpcomstub.sh [-c class_name] [-a add_args] ifaces

  -c ) The class name of generated source code.
  -a ) Add method args via nsIScriptableInterfaceInfo (not implements yet)

って感じの使い方*2で、実際には

$ /path/to/xpcomstub -c MyTreeView nsITreeView

とかそういう感じで使います。

これを実行すると、

var MyTreeView = function() {};
MyTreeView.prototype = {
  rowCount: function() {},
  selection: function() {},
  getRowProperties: function() {},
  getCellProperties: function() {},
  getColumnProperties: function() {},
  isContainer: function() {},
  isContainerOpen: function() {},
  isContainerEmpty: function() {},
  isSeparator: function() {},
  isSorted: function() {},
  canDrop: function() {},
  drop: function() {},
  getParentIndex: function() {},
  hasNextSibling: function() {},
  getLevel: function() {},
  getImageSrc: function() {},
  getProgressMode: function() {},
  getCellValue: function() {},
  getCellText: function() {},
  setTree: function() {},
  toggleOpenState: function() {},
  cycleHeader: function() {},
  selectionChanged: function() {},
  cycleCell: function() {},
  isEditable: function() {},
  setCellValue: function() {},
  setCellText: function() {},
  performAction: function() {},
  performActionOnRow: function() {},
  performActionOnCell: function() {},
  QueryInterface: function(aIID) {
    if (aIID.equals(Components.interfaces.nsITreeView) || aIID.equals(Components.interfaces.nsISupports)) {
      return true;
    }
    throw Components.results.NS_NOINTERFACE;
  }
};

こんな感じの出力を吐いておしまい。

KNOWN ISSUE

  • メソッドの引数をつけてない
    • nsIParamInfoで名前取れないので今の所やってない、IDL経由にすべきなんだけどなぁ。

TODO

  • CORBA::XPIDL を使って再実装(ぇ
  • ただPerlにしたときJavaScript::Swellの出力がbeautify.jsと比べて微妙だったので、どうしたもんかなと。

*1:良く考えたらパスが通ってると言う風にすりゃ良かったな

*2:とか言いつつヘルプメッセージ出してないw

ChayaChaya2012/12/15 21:22That's an astute answer to a trkicy question

vjmogqpzvjmogqpz2012/12/16 17:55F3Dvme <a href="http://hlcbrxfmibkm.com/">hlcbrxfmibkm</a>

ummzidoazummzidoaz2012/12/17 00:37kFtSgb , [url=http://rzchhuzozgjh.com/]rzchhuzozgjh[/url], [link=http://hrjzrqstvkmw.com/]hrjzrqstvkmw[/link], http://cnlcwwehwqiy.com/

flutqdwemegflutqdwemeg2012/12/21 07:193wFzRy , [url=http://lwxnfluepzac.com/]lwxnfluepzac[/url], [link=http://rwedkxigxvnw.com/]rwedkxigxvnw[/link], http://rznvomnuzgpd.com/