diff options
Diffstat (limited to 'src/etc.c')
| -rw-r--r-- | src/etc.c | 20 |
1 files changed, 13 insertions, 7 deletions
@@ -8,6 +8,7 @@ #include "mruby/string.h" #include "error.h" #include "mruby/numeric.h" +#include "mruby/data.h" #ifndef FALSE #define FALSE 0 @@ -17,13 +18,6 @@ #define TRUE 1 #endif -void -ruby_xfree(void *x) -{ - //if (x) - // vm_xfree(&mrb_objspace, x); -} - struct RData* mrb_data_object_alloc(mrb_state *mrb, struct RClass *klass, void *ptr, const struct mrb_data_type *type) { @@ -37,6 +31,18 @@ mrb_data_object_alloc(mrb_state *mrb, struct RClass *klass, void *ptr, const str } void * +mrb_get_datatype(mrb_state *mrb, mrb_value obj, const struct mrb_data_type *type) +{ + if (SPECIAL_CONST_P(obj) || (mrb_type(obj) != MRB_TT_DATA)) { + return NULL; + } + if (DATA_TYPE(obj) != type) { + return NULL; + } + return DATA_PTR(obj); +} + +void * mrb_check_datatype(mrb_state *mrb, mrb_value obj, const struct mrb_data_type *type) { static const char mesg[] = "wrong argument type %s (expected %s)"; |
