ruby-changes:35664
From: suke <ko1@a...>
Date: Tue, 30 Sep 2014 18:47:54 +0900 (JST)
Subject: [ruby-changes:35664] suke:r47746 (trunk): * ext/win32ole/win32ole_typelib.c: use typed data.
suke 2014-09-30 18:47:38 +0900 (Tue, 30 Sep 2014) New Revision: 47746 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=47746 Log: * ext/win32ole/win32ole_typelib.c: use typed data. Modified files: trunk/ChangeLog trunk/ext/win32ole/win32ole_typelib.c Index: ChangeLog =================================================================== --- ChangeLog (revision 47745) +++ ChangeLog (revision 47746) @@ -1,3 +1,7 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1 +Tue Sep 30 18:46:31 2014 Masaki Suketa <masaki.suketa@n...> + + * ext/win32ole/win32ole_typelib.c: use typed data. + Tue Sep 30 09:51:46 2014 SHIBATA Hiroshi <shibata.hiroshi@g...> * common.mk: fixed broken reference of update-config_files task Index: ext/win32ole/win32ole_typelib.c =================================================================== --- ext/win32ole/win32ole_typelib.c (revision 47745) +++ ext/win32ole/win32ole_typelib.c (revision 47746) @@ -9,7 +9,8 @@ static VALUE oletypelib_path(VALUE guid, https://github.com/ruby/ruby/blob/trunk/ext/win32ole/win32ole_typelib.c#L9 static HRESULT oletypelib_from_guid(VALUE guid, VALUE version, ITypeLib **ppTypeLib); static VALUE foletypelib_s_typelibs(VALUE self); static VALUE oletypelib_set_member(VALUE self, ITypeLib *pTypeLib); -static void oletypelib_free(struct oletypelibdata *poletypelib); +static void oletypelib_free(void *ptr); +static size_t oletypelib_size(const void *ptr); static VALUE foletypelib_s_allocate(VALUE klass); static VALUE oletypelib_search_registry(VALUE self, VALUE typelib); static void oletypelib_get_libattr(ITypeLib *pTypeLib, TLIBATTR **ppTLibAttr); @@ -30,6 +31,12 @@ static VALUE typelib_file_from_clsid(VAL https://github.com/ruby/ruby/blob/trunk/ext/win32ole/win32ole_typelib.c#L31 static VALUE foletypelib_ole_types(VALUE self); static VALUE foletypelib_inspect(VALUE self); +static const rb_data_type_t oletypelib_datatype = { + "win32ole_typelib", + {NULL, oletypelib_free, oletypelib_size,}, + NULL, NULL, RUBY_TYPED_FREE_IMMEDIATELY +}; + static VALUE reg_get_typelib_file_path(HKEY hkey) { @@ -99,7 +106,7 @@ ITypeLib * https://github.com/ruby/ruby/blob/trunk/ext/win32ole/win32ole_typelib.c#L106 itypelib(VALUE self) { struct oletypelibdata *ptlib; - Data_Get_Struct(self, struct oletypelibdata, ptlib); + TypedData_Get_Struct(self, struct oletypelibdata, &oletypelib_datatype, ptlib); return ptlib->pTypeLib; } @@ -182,25 +189,32 @@ static VALUE https://github.com/ruby/ruby/blob/trunk/ext/win32ole/win32ole_typelib.c#L189 oletypelib_set_member(VALUE self, ITypeLib *pTypeLib) { struct oletypelibdata *ptlib; - Data_Get_Struct(self, struct oletypelibdata, ptlib); + TypedData_Get_Struct(self, struct oletypelibdata, &oletypelib_datatype, ptlib); ptlib->pTypeLib = pTypeLib; return self; } static void -oletypelib_free(struct oletypelibdata *poletypelib) +oletypelib_free(void *ptr) { + struct oletypelibdata *poletypelib = ptr; OLE_FREE(poletypelib->pTypeLib); free(poletypelib); } +static size_t +oletypelib_size(const void *ptr) +{ + return ptr ? sizeof(struct oletypelibdata) : 0; +} + static VALUE foletypelib_s_allocate(VALUE klass) { struct oletypelibdata *poletypelib; VALUE obj; ole_initialize(); - obj = Data_Make_Struct(klass, struct oletypelibdata, 0, oletypelib_free, poletypelib); + obj = TypedData_Make_Struct(klass, struct oletypelibdata, &oletypelib_datatype, poletypelib); poletypelib->pTypeLib = NULL; return obj; } -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/