(2012/12/20 14:27), shugo (Shugo Maeda) wrote:
> 今のdefine_typeの値の付け方にとくに意味がないのであれば、scopedかどうか(class Foo::Barのような形か)も
> フラグにしてしまった方がすっきりする気がします。
> 
> 例えば、以下のようにしてはどうでしょうか。
> 
>   下位3ビット    -> 定義のタイプ (0 = クラス, 1 = 特異クラス, 2 = モジュール, 3以上は予約)
>   下から4ビット目 -> scopedなら1、そうでなければ0
>   下から5ビット目 -> スーパークラスが指定されていれば1、そうでなければ0
> 
> 具体的には以下のような定義を考えています。
> 
>   typedef enum {
>       VM_DEFINE_TYPE_CLASS           = 0x00,
>       VM_DEFINE_TYPE_SINGLETON_CLASS = 0x01,
>       VM_DEFINE_TYPE_MODULE          = 0x02,
>       /* 0x03..0x06 is reserved */
>       VM_DEFINE_TYPE_MASK            = 0x07,
>   } rb_vm_define_type_t;
> 
>   #define VM_DEFINE_FLAG_SCOPED         0x08
>   #define VM_DEFINE_FLAG_HAS_SUPERCLASS 0x10
> 
> その方針で作成したパッチを添付します。
> i686-linux (Ubuntu 12.04)上でmake checkが通ることは確認しています。

 どうもありがとうございます.1点だけ,define_type を defineclass_type
にして頂ければ.

 コミット頂いてもいいでしょうか.

-- 
// SASADA Koichi at atdot dot net