Feature #3066
closed
[TypedData] wrap_struct_name は必要?
Added by tad (Tadashi Saito) almost 14 years ago.
Updated almost 13 years ago.
Description
=begin
斎藤と申します。
rb_data_type_tのメンバーとして、 const char *wrap_struct_name と
いうのがありますが、これは本当に必要なものなのでしょうか。
Rubyオブジェクトの実体となる構造体の型に名前をつけるもの、のように
自分には見えますが、そもそもRubyオブジェクトになる時点で、なんらかの
クラス名が必ず付いているはずです。実際に*.cで、wrap_struct_nameと
して使われている文字列を見ましたが、自分が見た限りではクラス名その物
でした。二回同じものを指定するのは、DRYじゃないです。
また、僕が想像する範囲では、このメンバーは、将来作られるメモリ
プロファイラが、オブジェクトの種類を分かりやすく表示できるように
用意したのでは、と邪推しているのですが(間違っていたらごめんなさい)、
上記のとおりクラス名を取ればほとんど同じ事ができるはずです。
(rb_obj_classname(obj)で。)
ということでこのメンバーは不要なのではないかと思っているのですが、
どうなのでしょうか。自分の想定している使い方でなかったり、自分が
思いつかなかった意味のある使い方があって必要ならば、Closeして
ください。
=end
=begin
ささだです.
(2010/04/01 0:55), Tadashi Saito wrote::
rb_data_type_tのメンバーとして、 const char *wrap_struct_name と
いうのがありますが、これは本当に必要なものなのでしょうか。
Rubyオブジェクトの実体となる構造体の型に名前をつけるもの、のように
自分には見えますが、そもそもRubyオブジェクトになる時点で、なんらかの
クラス名が必ず付いているはずです。実際に*.cで、wrap_struct_nameと
して使われている文字列を見ましたが、自分が見た限りではクラス名その物
でした。二回同じものを指定するのは、DRYじゃないです。
また、僕が想像する範囲では、このメンバーは、将来作られるメモリ
プロファイラが、オブジェクトの種類を分かりやすく表示できるように
用意したのでは、と邪推しているのですが(間違っていたらごめんなさい)、
上記のとおりクラス名を取ればほとんど同じ事ができるはずです。
(rb_obj_classname(obj)で。)
ということでこのメンバーは不要なのではないかと思っているのですが、
どうなのでしょうか。自分の想定している使い方でなかったり、自分が
思いつかなかった意味のある使い方があって必要ならば、Closeして
ください。
プロファイラの例で欲しいのは,どういった種類の T_DATA なのか,なのでク
ラス名じゃないです.
構造体名を指定すると,その名前まで渡した構造体のオブジェクトを作るよう
なマクロはあってもいいかなー,という気はします.
--
// SASADA Koichi at atdot dot net
=end
- Status changed from Open to Rejected
Also available in: Atom
PDF
Like0
Like0Like0