diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2021-08-21 16:42:50 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2021-08-21 16:48:13 +0900 |
commit | 8f755ad6c88f5a2318c0f810f872b9e54daa517c (patch) | |
tree | 527c997a93d3d75443ebc8ea9c62d31456b1fc4c | |
parent | e2b2b577b664a39011ea9137d643b2eac7785c7d (diff) | |
download | ruby-8f755ad6c88f5a2318c0f810f872b9e54daa517c.tar.gz |
[DOC] mention rb_define_alloc_func [ci skip]
-rw-r--r-- | doc/extension.ja.rdoc | 23 | ||||
-rw-r--r-- | doc/extension.rdoc | 28 |
2 files changed, 27 insertions, 24 deletions
diff --git a/doc/extension.ja.rdoc b/doc/extension.ja.rdoc index 1f23d833ba..37b4cb1453 100644 --- a/doc/extension.ja.rdoc +++ b/doc/extension.ja.rdoc @@ -698,7 +698,8 @@ Cの世界で定義されたデータ(構造体)をRubyのオブジェクトと このマクロの戻り値は生成されたオブジェクトを表すVALUE値です. klassはこのオブジェクトのクラスです.klassは, Objectクラスか -ら派生し, 必ずrb_undef_alloc_func(klass)を呼び出してください. +ら派生し, 必ずrb_define_alloc_funcかrb_undef_alloc_funcを呼 +び出してallocatorを設定してください. data_typeはこの構造体をRubyが管理するための情報を記述した const rb_data_type_t型へのポインタです. @@ -708,16 +709,16 @@ rb_data_type_tは次のように定義されています. typedef struct rb_data_type_struct rb_data_type_t; struct rb_data_type_struct { - const char *wrap_struct_name; - struct { - void (*dmark)(void*); - void (*dfree)(void*); - size_t (*dsize)(const void *); - void *reserved[2]; - } function; - const rb_data_type_t *parent; - void *data; - VALUE flags; + const char *wrap_struct_name; + struct { + void (*dmark)(void*); + void (*dfree)(void*); + size_t (*dsize)(const void *); + void *reserved[2]; + } function; + const rb_data_type_t *parent; + void *data; + VALUE flags; }; wrap_struct_nameはこの構造体を識別する名前です.主に統計情報 diff --git a/doc/extension.rdoc b/doc/extension.rdoc index f8e0a1ec3d..fc83801b3d 100644 --- a/doc/extension.rdoc +++ b/doc/extension.rdoc @@ -657,8 +657,10 @@ with the next macro. TypedData_Wrap_Struct() returns a created Ruby object as a VALUE. -The klass argument is the class for the object. It is recommended -that klass derives from rb_cObject. +The klass argument is the class for the object. The klass should +derive from rb_cObject, and the allocator must be set by calling +rb_define_alloc_func or rb_undef_alloc_func. + data_type is a pointer to a const rb_data_type_t which describes how Ruby should manage the struct. @@ -668,17 +670,17 @@ member of the struct. typedef struct rb_data_type_struct rb_data_type_t; struct rb_data_type_struct { - const char *wrap_struct_name; - struct { - void (*dmark)(void*); - void (*dfree)(void*); - size_t (*dsize)(const void *); - void (*dcompact)(void*); - void *reserved[1]; - } function; - const rb_data_type_t *parent; - void *data; - VALUE flags; + const char *wrap_struct_name; + struct { + void (*dmark)(void*); + void (*dfree)(void*); + size_t (*dsize)(const void *); + void (*dcompact)(void*); + void *reserved[1]; + } function; + const rb_data_type_t *parent; + void *data; + VALUE flags; }; wrap_struct_name is an identifier of this instance of the struct. |