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

ruby-changes:13060

From: nobu <ko1@a...>
Date: Wed, 9 Sep 2009 12:01:51 +0900 (JST)
Subject: [ruby-changes:13060] Ruby:r24807 (trunk): * file.c (stat_data_type): typed.

nobu	2009-09-09 12:01:37 +0900 (Wed, 09 Sep 2009)

  New Revision: 24807

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=24807

  Log:
    * file.c (stat_data_type): typed.

  Modified files:
    trunk/ChangeLog
    trunk/file.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 24806)
+++ ChangeLog	(revision 24807)
@@ -1,4 +1,4 @@
-Wed Sep  9 11:55:07 2009  Nobuyoshi Nakada  <nobu@r...>
+Wed Sep  9 12:01:36 2009  Nobuyoshi Nakada  <nobu@r...>
 
 	* dir.c (dir_data_type): typed.
 
@@ -7,6 +7,8 @@
 
 	* error.c (name_err_mesg_data_type): typed.
 
+	* file.c (stat_data_type): typed.
+
 Wed Sep  9 11:11:33 2009  Nobuyoshi Nakada  <nobu@r...>
 
 	* include/ruby/ruby.h (rb_data_type_struct): constified dsize.
Index: file.c
===================================================================
--- file.c	(revision 24806)
+++ file.c	(revision 24807)
@@ -180,6 +180,17 @@
     return rb_obj_taint(rb_str_dup(fptr->pathv));
 }
 
+static size_t
+stat_memsize(const void *p)
+{
+    return p ? sizeof(struct stat) : 0;
+}
+
+static const rb_data_type_t stat_data_type = {
+    "stat",
+    NULL, RUBY_TYPED_DEFAULT_FREE, stat_memsize,
+};
+
 static VALUE
 stat_new_0(VALUE klass, struct stat *st)
 {
@@ -189,7 +200,7 @@
 	nst = ALLOC(struct stat);
 	*nst = *st;
     }
-    return Data_Wrap_Struct(klass, NULL, -1, nst);
+    return TypedData_Wrap_Struct(klass, &stat_data_type, nst);
 }
 
 static VALUE
@@ -202,7 +213,7 @@
 get_stat(VALUE self)
 {
     struct stat* st;
-    Data_Get_Struct(self, struct stat, st);
+    TypedData_Get_Struct(self, struct stat, &stat_data_type, st);
     if (!st) rb_raise(rb_eTypeError, "uninitialized File::Stat");
     return st;
 }
@@ -679,7 +690,7 @@
     };
 
     struct stat* st;
-    Data_Get_Struct(self, struct stat, st);
+    TypedData_Get_Struct(self, struct stat, &stat_data_type, st);
     if (!st) {
         return rb_sprintf("#<%s: uninitialized>", rb_obj_classname(self));
     }

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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