summaryrefslogtreecommitdiff
path: root/include/ruby/ruby.h
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-07-18 07:31:54 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-07-18 07:31:54 +0000
commit25b9eb5e5746665ca098f7117ba207692b2bd78d (patch)
tree11dd64192d263971587945bc2f3c7e257f7edddc /include/ruby/ruby.h
parentad654fe58e0355096fba7e1ae5b5f06eea62c200 (diff)
* include/ruby/ruby.h (rb_data_type_t): restructured. [ruby-dev:41862]
add parent member. * error.c (rb_typeddata_inherited_p): new function. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28676 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'include/ruby/ruby.h')
-rw-r--r--include/ruby/ruby.h20
1 files changed, 13 insertions, 7 deletions
diff --git a/include/ruby/ruby.h b/include/ruby/ruby.h
index 03984b4d2e..4d8b06feb9 100644
--- a/include/ruby/ruby.h
+++ b/include/ruby/ruby.h
@@ -742,16 +742,21 @@ struct RData {
void *data;
};
-typedef struct rb_data_type_struct {
+typedef struct rb_data_type_struct rb_data_type_t;
+
+struct rb_data_type_struct {
const char *wrap_struct_name;
- void (*dmark)(void*);
- void (*dfree)(void*);
- size_t (*dsize)(const void *);
- void *reserved[3]; /* For future extension.
- This array *must* be filled with ZERO. */
+ struct {
+ void (*dmark)(void*);
+ void (*dfree)(void*);
+ size_t (*dsize)(const void *);
+ void *reserved[2]; /* For future extension.
+ This array *must* be filled with ZERO. */
+ } function;
+ const rb_data_type_t *parent;
void *data; /* This area can be used for any purpose
by a programmer who define the type. */
-} rb_data_type_t;
+};
struct RTypedData {
struct RBasic basic;
@@ -773,6 +778,7 @@ typedef void (*RUBY_DATA_FUNC)(void*);
VALUE rb_data_object_alloc(VALUE,void*,RUBY_DATA_FUNC,RUBY_DATA_FUNC);
VALUE rb_data_typed_object_alloc(VALUE klass, void *datap, const rb_data_type_t *);
+int rb_typeddata_inherited_p(const rb_data_type_t *child, const rb_data_type_t *parent);
int rb_typeddata_is_kind_of(VALUE, const rb_data_type_t *);
void *rb_check_typeddata(VALUE, const rb_data_type_t *);
#define Check_TypedStruct(v,t) rb_check_typeddata((VALUE)(v),t)