Project

General

Profile

Feature #3066

[TypedData] wrap_struct_name は必要?

Added by tad (Tadashi Saito) over 9 years ago. Updated over 8 years ago.

Status:
Rejected
Priority:
Normal
Assignee:
-
Target version:
-

Description

=begin
斎藤と申します。

rb_data_type_tのメンバーとして、 const char *wrap_struct_name と
いうのがありますが、これは本当に必要なものなのでしょうか。

Rubyオブジェクトの実体となる構造体の型に名前をつけるもの、のように
自分には見えますが、そもそもRubyオブジェクトになる時点で、なんらかの
クラス名が必ず付いているはずです。実際に*.cで、wrap_struct_nameと
して使われている文字列を見ましたが、自分が見た限りではクラス名その物
でした。二回同じものを指定するのは、DRYじゃないです。

また、僕が想像する範囲では、このメンバーは、将来作られるメモリ
プロファイラが、オブジェクトの種類を分かりやすく表示できるように
用意したのでは、と邪推しているのですが(間違っていたらごめんなさい)、
上記のとおりクラス名を取ればほとんど同じ事ができるはずです。
(rb_obj_classname(obj)で。)

ということでこのメンバーは不要なのではないかと思っているのですが、
どうなのでしょうか。自分の想定している使い方でなかったり、自分が
思いつかなかった意味のある使い方があって必要ならば、Closeして
ください。
=end

History

#1

Updated by ko1 (Koichi Sasada) over 9 years ago

=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

#2

Updated by naruse (Yui NARUSE) over 9 years ago

  • Status changed from Open to Rejected

=begin

=end

Also available in: Atom PDF