summaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2013-08-15 01:33:36 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2013-08-15 01:33:36 +0900
commitb225e4cc82f0e727b6175306e530efc2a59f4e95 (patch)
treeeb8a64a304a8468ec4e033cc578c4b6531966436 /include
parentbabc8d00865b86c77032cfe4d69ddfea3ac9f4ef (diff)
downloadmruby-b225e4cc82f0e727b6175306e530efc2a59f4e95.tar.gz
mruby-b225e4cc82f0e727b6175306e530efc2a59f4e95.zip
redesign mruby/data.h API; use DATA_PTR() for raw data pointer, DATA_GET_PTR() to type safe retrieval (TypeError will be raised), DATA_CHECK_GET_PTR() to get nil if type mismatched
Diffstat (limited to 'include')
-rw-r--r--include/mruby/data.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/include/mruby/data.h b/include/mruby/data.h
index f76dd395f..8a790f074 100644
--- a/include/mruby/data.h
+++ b/include/mruby/data.h
@@ -39,7 +39,12 @@ struct RData *mrb_data_object_alloc(mrb_state *mrb, struct RClass* klass, void *
#define DATA_TYPE(d) (RDATA(d)->type)
void mrb_data_check_type(mrb_state *mrb, mrb_value, const mrb_data_type*);
void *mrb_data_get_ptr(mrb_state *mrb, mrb_value, const mrb_data_type*);
-void *mrb_data_check_and_get(mrb_state *mrb, mrb_value, const mrb_data_type*);
+#define DATA_GET_PTR(mrb,obj,dtype,type) (type*)mrb_data_get_ptr(mrb,obj,dtype)
+void *mrb_data_check_get_ptr(mrb_state *mrb, mrb_value, const mrb_data_type*);
+#define DATA_CHECK_GET_PTR(mrb,obj,dtype,type) (type*)mrb_data_check_get_ptr(mrb,obj,dtype)
+
+/* obsolete functions and macros */
+#define mrb_data_check_and_get(mrb,obj,dtype) mrb_data_get_ptr(mrb,obj,dtype)
#define mrb_get_datatype(mrb,val,type) mrb_data_get_ptr(mrb, val, type)
#define mrb_check_datatype(mrb,val,type) mrb_data_check_and_get(mrb, val, type)
#define Data_Get_Struct(mrb,obj,type,sval) do {\