IT翻訳 Nobuyuki の仕事部屋

ボランティアでソフトウエアーローカライズのために翻訳をしている。

Mozilla DOM Hacking Guide: Introduction to XPCOM 6

2006-01-14 23:15:24 | InDraft
今日は冬にしては珍しく激しい雨となり、雷鳴が轟いた。駄文をものする。

子供が母親から授かるのは母性の優しさである。それは家庭にあってそこここに満ち溢れている。それでは父親からは何を授かるのであろうか。その1つは社会性かもしれない。一般的に父親は家庭の外で働く。そこでの経験から学んだ事をを父は子に伝えようとする。それは、自分の子供がやがては社会に出いくことを知っているからである。それではなぜ父は自分の経験を子に伝えようとするのだろうか?父の話が子にどれくらい伝わるか彼は分かっているのだろうか。もし、彼が父の話を聞く立場にある子ならば、どれくらに真剣に父の話をきくだろうか。その何パーセントを子は自分の経験に照らし合わせて、理解できるであろうか。普通、人は自分自身経験したことはよく理解できる。しかし経験のないことを聞いて、はたしてどのくらい分かって、それが彼の記憶にとどまるのだろうか。父は本当は自分の話が子にそれほど理解されない事を知っているのかもしれない。しかしそれでも話をする動機はなんだろうか。おそらく、子に理解して欲しいと思う願いはあるだろう。子にたいする愛情の形のひとつかもしれない。また、親の義務と感じているのかもしれない。

現代は父が子に語ることは少ない時代なのだろう。いや、従来から父は子に多くを語らない存在のような気がする。しかし、子と接する中で父は少ないながらも、今こそ自分の思いを子に語る時だと感じることがあると思う。けっして機会は多くないだろう。しかし、そんな瞬間は必ずある。そのように感じれば、父は話さずにおれない。彼は子を持つ父なのだから。(^_^ゞ

原文:  青色表示
訳文:  黒色表示
注記/訂正: 赤色表示

C. nsCOMPtr

Scott Collins blessed us with the nsCOMPtr, now let's use them. nsCOMPtr's are an extension of the C++ auto_ptr, managing the reference counting operations for you, and providing several facilities for comparison, initialization, etc... An nsCOMPtr is used like an usual pointer to an interface in most cases. An usual pointer to an interface nsIFoo is declared as follows:
  nsIFoo *fooptr;


Scott Collins は私たちに nsCOMPtr を授けてくれたので、すぐにそれを使用しましょう。 nsCOMPtr は C++ auto_ptr の拡張機能で、参照カウントの操作を管理します。そして、比較、初期化などに対していくつかの機能を提供します。nsCOMPtr は大抵の場合インターフェイスへの通常のポインタのように使われます。nsIFoo インターフェイスへの通常のポインタは下記のように宣言されます:
  nsIFoo *fooptr;


An nsCOMPtr to the same nsIFoo interface is declared as follows:
  nsCOMPtr<nsIFoo> fooptr;


//同じnsIFoo インターフェイスへの nsCOMPtr は下記のように宣言されます:
  nsCOMPtr<nsIFoo> fooptr;


nsCOMPtr's is described in the next Section. For more information about nsCOMPtr's, please read the User's Guide.

nsCOMPtr を使用する場合のその他のケースは次の節で解説されます。nsCOMPtr についての詳細情報は ユーザの手引きを読んでください。

D. QueryInterface()

Consider again the class nsFoo that implements two interfaces, nsIFoo and nsIFoo2:
class nsFoo : public nsIFoo, public nsIFoo2


再び、nsIFoo と nsIFoo2 の 2 つのインターフェイスを実装する nsFoo クラスを考えてください:
class nsFoo : public nsIFoo, public nsIFoo2

            
Let's assume an instance of nsFoo was somehow created (this assertion is true most of the time). You would like to manipulate that object with a method defined on the nsIFoo interface. The goal is to retrieve a pointer to the nsIFoo interface. To do so, there are too main techniques, and the context should tell you what to use. The first technique is to use a "Getter", the second is to use a static cast on the "this" pointer.

ともかく nsFoo のインスタンスが作られることを前提としましょう(この断定はほとんど常に正しいです)。そうすると、nsIFoo インターフェイスで定義されたメソッドを使ってそのオブジェクトを操作したくなるでしょう。目的は nsIFoo インターフェイスへポインタを確保することです。そのために、主な 2 つのテクニックが存在し、コンテキストによってするべきことが分かります。最初のテクニックは "Getter" を使うことであり、次のテクニックは "this" ポインタで static なキャストを使うことです。

前節の "B. インターフェイスと参照カウント" は長い節でしたが、この” D. QueryInterface()”はもっと長いです。(・_・;