39 #define Data_Wrap_Struct(mrb,klass,type,ptr)\ 40 mrb_data_object_alloc(mrb,klass,ptr,type) 42 #define Data_Make_Struct(mrb,klass,strct,type,sval,data_obj) do { \ 43 (data_obj) = Data_Wrap_Struct(mrb,klass,type,NULL);\ 44 (sval) = (strct *)mrb_malloc(mrb, sizeof(strct)); \ 45 { static const strct zero = { 0 }; *(sval) = zero; };\ 46 (data_obj)->data = (sval);\ 49 #define RDATA(obj) ((struct RData *)(mrb_ptr(obj))) 50 #define DATA_PTR(d) (RDATA(d)->data) 51 #define DATA_TYPE(d) (RDATA(d)->type) 54 #define DATA_GET_PTR(mrb,obj,dtype,type) (type*)mrb_data_get_ptr(mrb,obj,dtype) 56 #define DATA_CHECK_GET_PTR(mrb,obj,dtype,type) (type*)mrb_data_check_get_ptr(mrb,obj,dtype) 59 #define mrb_data_check_and_get(mrb,obj,dtype) mrb_data_get_ptr(mrb,obj,dtype) 60 #define mrb_get_datatype(mrb,val,type) mrb_data_get_ptr(mrb, val, type) 61 #define mrb_check_datatype(mrb,val,type) mrb_data_get_ptr(mrb, val, type) 62 #define Data_Get_Struct(mrb,obj,type,sval) do {\ 63 *(void**)&sval = mrb_data_get_ptr(mrb, obj, type); \ 69 mrb_assert(mrb_type(v) == MRB_TT_DATA);
Definition: variable.c:25
void(* dfree)(mrb_state *mrb, void *)
data type release function pointer
Definition: data.h:27
const char * struct_name
data type name
Definition: data.h:24
struct mrb_data_type mrb_data_type
Custom C wrapped data.
Class class.
Definition: class.h:17
#define MRB_BEGIN_DECL
Start declarations in C mode.
Definition: common.h:26
#define MRB_API
Declare a public MRuby API function.
Definition: common.h:73
Custom C wrapped data.
Definition: data.h:22
#define MRB_END_DECL
End declarations in C mode.
Definition: common.h:28
mruby common platform definition"
Definition: boxing_nan.h:39
#define MRB_INLINE
Declare a function as always inlined.
Definition: common.h:62