mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
rename DATA API: mrb_get_datatype -> mrb_data_get_ptr; mrb_check_datatype -> mrb_data_check_and_get
This commit is contained in:
@@ -22,28 +22,37 @@ mrb_data_object_alloc(mrb_state *mrb, struct RClass *klass, void *ptr, const mrb
|
||||
return data;
|
||||
}
|
||||
|
||||
void *
|
||||
mrb_get_datatype(mrb_state *mrb, mrb_value obj, const mrb_data_type *type)
|
||||
{
|
||||
if (mrb_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 mrb_data_type *type)
|
||||
void
|
||||
mrb_data_check_type(mrb_state *mrb, mrb_value obj, const mrb_data_type *type)
|
||||
{
|
||||
if (mrb_special_const_p(obj) || (mrb_type(obj) != MRB_TT_DATA)) {
|
||||
mrb_check_type(mrb, obj, MRB_TT_DATA);
|
||||
}
|
||||
if (DATA_TYPE(obj) != type) {
|
||||
const char *etype = DATA_TYPE(obj)->struct_name;
|
||||
mrb_raisef(mrb, E_TYPE_ERROR, "wrong argument type %S (expected %S)",
|
||||
mrb_str_new_cstr(mrb, etype), mrb_str_new_cstr(mrb, type->struct_name));
|
||||
const mrb_data_type *t2 = DATA_TYPE(obj);
|
||||
|
||||
if (t2) {
|
||||
mrb_raisef(mrb, E_TYPE_ERROR, "wrong argument type %S (expected %S)",
|
||||
mrb_str_new_cstr(mrb, t2->struct_name), mrb_str_new_cstr(mrb, type->struct_name));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void *
|
||||
mrb_data_check_and_get(mrb_state *mrb, mrb_value obj, const mrb_data_type *type)
|
||||
{
|
||||
mrb_data_check_type(mrb, obj, type);
|
||||
return DATA_PTR(obj);
|
||||
}
|
||||
|
||||
void *
|
||||
mrb_data_get_ptr(mrb_state *mrb, mrb_value obj, const mrb_data_type *type)
|
||||
{
|
||||
if (mrb_special_const_p(obj) || (mrb_type(obj) != MRB_TT_DATA)) {
|
||||
return NULL;
|
||||
}
|
||||
if (DATA_TYPE(obj) != type) {
|
||||
return NULL;
|
||||
}
|
||||
return DATA_PTR(obj);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user