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

ruby-changes:12290

From: nobu <ko1@a...>
Date: Tue, 7 Jul 2009 16:54:44 +0900 (JST)
Subject: [ruby-changes:12290] Ruby:r23983 (trunk): * error.c (rb_typed_struct_is_kind_of): new function to see if the

nobu	2009-07-07 16:54:28 +0900 (Tue, 07 Jul 2009)

  New Revision: 23983

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

  Log:
    * error.c (rb_typed_struct_is_kind_of): new function to see if the
      given typed struct.

  Modified files:
    trunk/ChangeLog
    trunk/error.c
    trunk/include/ruby/ruby.h

Index: include/ruby/ruby.h
===================================================================
--- include/ruby/ruby.h	(revision 23982)
+++ include/ruby/ruby.h	(revision 23983)
@@ -764,8 +764,10 @@
 
 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 *);
+int rb_typed_struct_is_kind_of(VALUE, 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 RUBY_TYPED_DEFAULT_FREE ((void (*)(void *))-1)
 
 #define Data_Wrap_Struct(klass,mark,free,sval)\
     rb_data_object_alloc(klass,sval,(RUBY_DATA_FUNC)mark,(RUBY_DATA_FUNC)free)
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 23982)
+++ ChangeLog	(revision 23983)
@@ -1,3 +1,8 @@
+Tue Jul  7 16:54:24 2009  Nobuyoshi Nakada  <nobu@r...>
+
+	* error.c (rb_typed_struct_is_kind_of): new function to see if the
+	  given typed struct.
+
 Tue Jul  7 13:44:49 2009  Nobuyoshi Nakada  <nobu@r...>
 
 	* error.c (rb_check_typed_struct): new function to check typed
Index: error.c
===================================================================
--- error.c	(revision 23982)
+++ error.c	(revision 23983)
@@ -316,6 +316,16 @@
     }
 }
 
+int
+rb_typed_struct_is_kind_of(VALUE obj, const rb_data_type_t *data_type)
+{
+    if (SPECIAL_CONST_P(obj) || BUILTIN_TYPE(obj) != T_DATA ||
+	!RTYPEDDATA_P(obj) || RTYPEDDATA_TYPE(obj) != data_type) {
+	return 0;
+    }
+    return 1;
+}
+
 void *
 rb_check_typed_struct(VALUE obj, const rb_data_type_t *data_type)
 {

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

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