From d1144220cb899b24ca949ee230606f76cd4e0b99 Mon Sep 17 00:00:00 2001 From: Yukihiro Matsumoto Date: Fri, 20 Apr 2012 17:18:30 +0900 Subject: move src/mdata.h to include/mruby/data.h --- include/mruby/data.h | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 include/mruby/data.h (limited to 'include') diff --git a/include/mruby/data.h b/include/mruby/data.h new file mode 100644 index 000000000..07e0f72cd --- /dev/null +++ b/include/mruby/data.h @@ -0,0 +1,53 @@ +/********************************************************************** + + data.h - + + + Copyright (C) 2007 Yukihiro Matsumoto + +**********************************************************************/ + +#ifndef RUBY_DATA_H +#define RUBY_DATA_H 1 + +#if defined(__cplusplus) +extern "C" { +#endif + + +struct mrb_data_type { + const char *struct_name; + void (*dfree)(mrb_state *mrb, void*); +}; + +struct RData { + MRUBY_OBJECT_HEADER; + struct kh_iv *iv; + struct mrb_data_type *type; + void *data; +}; + +struct RData *mrb_data_object_alloc(mrb_state *mrb, struct RClass* klass, void *datap, const struct mrb_data_type *type); + +#define Data_Wrap_Struct(mrb,klass,type,ptr)\ + mrb_data_object_alloc(mrb,klass,ptr,type) + +#define Data_Make_Struct(mrb,klass,strct,type,sval) (\ + sval = mrb_malloc(mrb, sizeof(strct)),\ + memset(sval, 0, sizeof(strct)),\ + Data_Wrap_Struct(mrb,klass,type,sval)\ +) + +#define RDATA(obj) ((struct RData *)((obj).value.p)) +#define DATA_PTR(d) (RDATA(d)->data) +#define DATA_TYPE(d) (RDATA(d)->type) +void *mrb_check_datatype(mrb_state *mrb, mrb_value, const struct mrb_data_type*); +#define Data_Get_Struct(mrb,obj,type,sval) do {\ + sval = mrb_check_datatype(mrb, obj, type); \ +} while (0) + +#if defined(__cplusplus) +} /* extern "C" { */ +#endif + +#endif /* RUBY_DATA_H */ -- cgit v1.2.3