summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-07-07 04:44:54 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-07-07 04:44:54 +0000
commit7bb9cc23a143a512ca97a21345ac98542e26d091 (patch)
tree96c1edc93cd5728f477e35b2541dd1b86dd24c8a /include
parent0f2d1527ab1b3b54da2e219ffe3fdd7a741ee1dc (diff)
* error.c (rb_check_typed_struct): new function to check typed
struct. * include/ruby/ruby.h (Check_TypedStruct, Data_Get_TypedStruct): new macro to check typed struct. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23981 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'include')
-rw-r--r--include/ruby/ruby.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/include/ruby/ruby.h b/include/ruby/ruby.h
index 98a2264c25..8aef106b9a 100644
--- a/include/ruby/ruby.h
+++ b/include/ruby/ruby.h
@@ -764,6 +764,8 @@ 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 *);
+void *rb_check_typed_struct(VALUE, const rb_data_type_t *);
+#define Check_TypedStruct(v,t) rb_check_typed_struct((VALUE)(v),t)
#define Data_Wrap_Struct(klass,mark,free,sval)\
rb_data_object_alloc(klass,sval,(RUBY_DATA_FUNC)mark,(RUBY_DATA_FUNC)free)
@@ -788,6 +790,10 @@ VALUE rb_data_typed_object_alloc(VALUE klass, void *datap, const rb_data_type_t
sval = (type*)DATA_PTR(obj);\
} while (0)
+#define Data_Get_TypedStruct(obj,type,data_type,sval) do {\
+ sval = (type*)rb_check_typed_struct(obj, data_type); \
+} while (0)
+
#define RSTRUCT_EMBED_LEN_MAX 3
struct RStruct {
struct RBasic basic;