[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]