mruby  2.0.1
mruby is the lightweight implementation of the Ruby language
Classes | Macros | Typedefs | Functions
data.h File Reference

More...

#include "common.h"
Include dependency graph for data.h:

Go to the source code of this file.

Classes

struct  mrb_data_type
 Custom C wrapped data. More...
 
struct  RData
 

Macros

#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, data_obj)
 
#define RDATA(obj)   ((struct RData *)(mrb_ptr(obj)))
 
#define DATA_PTR(d)   (RDATA(d)->data)
 
#define DATA_TYPE(d)   (RDATA(d)->type)
 
#define DATA_GET_PTR(mrb, obj, dtype, type)   (type*)mrb_data_get_ptr(mrb,obj,dtype)
 
#define DATA_CHECK_GET_PTR(mrb, obj, dtype, type)   (type*)mrb_data_check_get_ptr(mrb,obj,dtype)
 
#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_get_ptr(mrb, val, type)
 
#define Data_Get_Struct(mrb, obj, type, sval)
 

Typedefs

typedef struct mrb_data_type mrb_data_type
 Custom C wrapped data. More...
 

Functions

struct RDatamrb_data_object_alloc (mrb_state *mrb, struct RClass *klass, void *datap, const mrb_data_type *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_get_ptr (mrb_state *mrb, mrb_value, const mrb_data_type *)
 
static void mrb_data_init (mrb_value v, void *ptr, const mrb_data_type *type)
 

Detailed Description

See Copyright Notice in mruby.h

Macro Definition Documentation

◆ Data_Get_Struct

#define Data_Get_Struct (   mrb,
  obj,
  type,
  sval 
)
Value:
do {\
*(void**)&sval = mrb_data_get_ptr(mrb, obj, type); \
} while (0)

◆ Data_Make_Struct

#define Data_Make_Struct (   mrb,
  klass,
  strct,
  type,
  sval,
  data_obj 
)
Value:
do { \
(data_obj) = Data_Wrap_Struct(mrb,klass,type,NULL);\
(sval) = (strct *)mrb_malloc(mrb, sizeof(strct)); \
{ static const strct zero = { 0 }; *(sval) = zero; };\
(data_obj)->data = (sval);\
} while (0)

Typedef Documentation

◆ mrb_data_type

typedef struct mrb_data_type mrb_data_type

Custom C wrapped data.

Defining Ruby wrappers around native objects. Custom data type description.