From 19f386674eb5cfbf9c8fd6041114829f37888d17 Mon Sep 17 00:00:00 2001 From: nobu Date: Sat, 18 Jun 2011 03:05:11 +0000 Subject: * include/ruby/backward/classext.h: for evil gems. fixed #4803 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32162 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- include/ruby/backward/classext.h | 18 ++++++++++++++++++ include/ruby/intern.h | 1 + include/ruby/ruby.h | 6 +----- 3 files changed, 20 insertions(+), 5 deletions(-) create mode 100644 include/ruby/backward/classext.h (limited to 'include/ruby') diff --git a/include/ruby/backward/classext.h b/include/ruby/backward/classext.h new file mode 100644 index 0000000000..615e6f6858 --- /dev/null +++ b/include/ruby/backward/classext.h @@ -0,0 +1,18 @@ +#if defined __GNUC__ +#warning use of RClass internals is deprecated +#elif defined _MSC_VER || defined __BORLANDC__ +#pragma message("warning: use of RClass internals is deprecated") +#endif + +#ifndef RUBY_BACKWARD_CLASSEXT_H +#define RUBY_BACKWARD_CLASSEXT_H 1 + +typedef struct rb_deprecated_classext_struct { + VALUE super; +} rb_deprecated_classext_t; + +#undef RCLASS_SUPER(c) +#define RCLASS_EXT(c) ((rb_deprecated_classext_t *)RCLASS(c)->ptr) +#define RCLASS_SUPER(c) (RCLASS_EXT(c)->super) + +#endif /* RUBY_BACKWARD_CLASSEXT_H */ diff --git a/include/ruby/intern.h b/include/ruby/intern.h index bc3c4491cd..582fa8801d 100644 --- a/include/ruby/intern.h +++ b/include/ruby/intern.h @@ -519,6 +519,7 @@ VALUE rb_obj_class(VALUE); VALUE rb_class_real(VALUE); VALUE rb_class_inherited_p(VALUE, VALUE); VALUE rb_class_superclass(VALUE); +VALUE rb_class_get_superclass(VALUE); VALUE rb_convert_type(VALUE,int,const char*,const char*); VALUE rb_check_convert_type(VALUE,int,const char*,const char*); VALUE rb_check_to_integer(VALUE, const char *); diff --git a/include/ruby/ruby.h b/include/ruby/ruby.h index 38bfe3f56c..340bea102a 100644 --- a/include/ruby/ruby.h +++ b/include/ruby/ruby.h @@ -617,11 +617,7 @@ struct RClass { struct st_table *m_tbl; struct st_table *iv_index_tbl; }; -#define RCLASS_IV_TBL(c) (RCLASS(c)->ptr->iv_tbl) -#define RCLASS_CONST_TBL(c) (RCLASS(c)->ptr->const_tbl) -#define RCLASS_M_TBL(c) (RCLASS(c)->m_tbl) -#define RCLASS_SUPER(c) (RCLASS(c)->ptr->super) -#define RCLASS_IV_INDEX_TBL(c) (RCLASS(c)->iv_index_tbl) +#define RCLASS_SUPER(c) rb_class_get_superclass(c) #define RMODULE_IV_TBL(m) RCLASS_IV_TBL(m) #define RMODULE_CONST_TBL(m) RCLASS_CONST_TBL(m) #define RMODULE_M_TBL(m) RCLASS_M_TBL(m) -- cgit v1.2.3