初期化はNS_InitXPCOM2よりもXRE_InitEmbeddingのほうが簡単

| コメント(0) | トラックバック(0)

Gecko 1.7以前はGeckoの初期化をするために、xpcom.dll内の NS_InitXPCOM2を呼び出す必要があった。 この関数の引数にはnsIDirectoryServiceProviderを指定する必要があり、 しかもこのインターフェースはGREの 場所を返せないといけない。 はっきり行って面倒くさい。 ちゃんと動作させないと一部のインターフェースが動いてくれないので、 面倒くさいが必須の作業なのだ。 まあ面倒くさい。 このインターフェースを含む初期化処理を行う関数を自作ライブラリに用意しているのだが、 初期化用ライブラリのため暗黙の動的メモリ確保を使用するコードを書きたくなかったので、 とても神経を使った。 ていうかNewInstanceクラスメソッドとかはじめて使った。

一方、Gecko 1.8以降には追加関数としてXRE_InitEmbeddingが用意された。 こいつはxul.dll内にある関数なのだが、 非常に面倒くさいnsIDirectoryServiceProviderの実装を 肩代わりしてくれている点において、非常にありがたい。 まあこの関数をxul.dllから持ってくるコードを書かないといけないわけだが、 インターフェースの実装よりははるかに簡単だ。 Gecko内部の関数なので、Geckoの仕様が変わったりとかで初期化の仕方が変わっても、 ちゃんと追従できるのがうれしい。 こういう関数をもっと早く用意してくれれば無駄なコードを核時間が減るんだけどなあ。

そういえば以前nsAStringの実装をDelphiで実現したな。 Gecko 1.7でNS_StringContainerInitその他が実装されたときには、 血の涙を流して喜んだものだ。

トラックバック(0)

トラックバックURL: http://nesitive.net/mt/tbping/184

コメントする

アーカイブ

ウェブページ

Powered by Movable Type 4.21-ja

このブログ記事について

このページは、が2008年9月30日 22:51に書いたブログ記事です。

ひとつ前のブログ記事は「nsIWebBrowserのガワに最低限必要なもの」です。

次のブログ記事は「Delphi 2009、Unicode対応で四苦八苦」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。