diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-08-15 01:33:36 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-08-15 01:33:36 +0900 |
| commit | b225e4cc82f0e727b6175306e530efc2a59f4e95 (patch) | |
| tree | eb8a64a304a8468ec4e033cc578c4b6531966436 /include | |
| parent | babc8d00865b86c77032cfe4d69ddfea3ac9f4ef (diff) | |
| download | mruby-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.h | 7 |
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 {\ |
