From: nobu.nakada@... Date: 2002-03-03T13:30:16+09:00 Subject: [ruby-list:34167] Re: pdflib-0.7 PDF クラスの継承について なかだです。 システムのバージョンアップをしてたらXとmail関係の設定がおかしく なってしまって、遅くなりました。 At Tue, 26 Feb 2002 20:33:19 +0900, Noritsugu Nakamura wrote: > > 1.6以降ではnewの構成が変わって、組み込みクラスもinitializeを呼 > > び出すようになっています。PDFライブラリがまだそれに対応していな > > いということでしょう。 > > > > 1.7でもまたちょっと変更になってるんですが。 > > どう書くのが一番良いのでしょうか? 具体例は、rough/ext/stringioを見ていただくとして。 > 私も README.EXT.ja とか他の方の記述例を見ながらやっていて > cPDF = rb_define_class("PDF", rb_cData); > rb_define_singleton_method(cPDF, "new", rbpdf_s_open, -1); > タイプで記述していたのですが… > > なんか指針はあるでしょうか? 1.6の場合、PDF.newではインスタンスを生成してそれに対して rb_obj_call_init()を呼び出す、それ以外の初期化はPDF#initialize の中で行う、という感じです。おそらくPDF.openとPDF.newは分けたほ うがいいと思います。 1.7では、Class.newでのインスタンス生成がClass.allocateに分離さ れています。この構成はDataでも共通なので、PDF.newを再定義する必 要は通常ありません。かわりにPDF.allocateで初期化していないイン スタンスを生成するようにします。ここでは実際の構造体などを割り 当てる必要はありませんが、最低限その未初期化のインスタンスに対 するメソッドでSEGVしないように、チェックをする必要はあります。 -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦