From bb10a21346fb1e66f581c8ef3110649b1ecb355a Mon Sep 17 00:00:00 2001 From: nobu Date: Sat, 27 Sep 2014 01:28:47 +0000 Subject: ruby.h: deprecate plain Data * include/ruby/ruby.h (rb_data_object_alloc_deprecated): deprecate Data_Make_Struct and Data_Wrap_Struct. [EXPERIMENTAL] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47717 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/-test-/marshal/usr/usrmarshal.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) (limited to 'ext/-test-/marshal/usr') diff --git a/ext/-test-/marshal/usr/usrmarshal.c b/ext/-test-/marshal/usr/usrmarshal.c index b30bd52c13..056f0326c0 100644 --- a/ext/-test-/marshal/usr/usrmarshal.c +++ b/ext/-test-/marshal/usr/usrmarshal.c @@ -1,23 +1,38 @@ #include +static size_t +usr_size(const void *ptr) +{ + return sizeof(int); +} + +static const rb_data_type_t usrmarshal_type = { + "UsrMarshal", + {0, RUBY_DEFAULT_FREE, usr_size,}, + NULL, NULL, + RUBY_TYPED_FREE_IMMEDIATELY|RUBY_TYPED_WB_PROTECTED, +}; + static VALUE usr_alloc(VALUE klass) { int *p; - return Data_Make_Struct(klass, int, 0, RUBY_DEFAULT_FREE, p); + return TypedData_Make_Struct(klass, int, &usrmarshal_type, p); } static VALUE usr_init(VALUE self, VALUE val) { - *(int *)DATA_PTR(self) = NUM2INT(val); + int *ptr = Check_TypedStruct(self, &usrmarshal_type); + *ptr = NUM2INT(val); return self; } static VALUE usr_value(VALUE self) { - int val = *(int *)DATA_PTR(self); + int *ptr = Check_TypedStruct(self, &usrmarshal_type); + int val = *ptr; return INT2NUM(val); } -- cgit v1.2.3