Groonga 3.0.9 Source Code Document
Main Page
Related Pages
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Pages
groonga
vendor
mruby-eeac4be
include
mruby
data.h
Go to the documentation of this file.
1
/*
2
** mruby/data.h - Data class
3
**
4
** See Copyright Notice in mruby.h
5
*/
6
7
#ifndef MRUBY_DATA_H
8
#define MRUBY_DATA_H 1
9
10
#if defined(__cplusplus)
11
extern
"C"
{
12
#endif
13
14
typedef
struct
mrb_data_type
{
15
const
char
*
struct_name
;
16
void (*
dfree
)(
mrb_state
*mrb,
void
*);
17
}
mrb_data_type
;
18
19
struct
RData
{
20
MRB_OBJECT_HEADER
;
21
struct
iv_tbl
*
iv
;
22
const
mrb_data_type
*
type
;
23
void
*
data
;
24
};
25
26
struct
RData
*
mrb_data_object_alloc
(
mrb_state
*mrb,
struct
RClass
* klass,
void
*datap,
const
mrb_data_type
*
type
);
27
28
#define Data_Wrap_Struct(mrb,klass,type,ptr)\
29
mrb_data_object_alloc(mrb,klass,ptr,type)
30
31
#define Data_Make_Struct(mrb,klass,strct,type,sval,data) do { \
32
sval = mrb_malloc(mrb, sizeof(strct)); \
33
{ static const strct zero = { 0 }; *sval = zero; };\
34
data = Data_Wrap_Struct(mrb,klass,type,sval);\
35
} while (0)
36
37
#define RDATA(obj) ((struct RData *)(mrb_ptr(obj)))
38
#define DATA_PTR(d) (RDATA(d)->data)
39
#define DATA_TYPE(d) (RDATA(d)->type)
40
void
mrb_data_check_type
(
mrb_state
*mrb,
mrb_value
,
const
mrb_data_type
*);
41
void
*
mrb_data_get_ptr
(
mrb_state
*mrb,
mrb_value
,
const
mrb_data_type
*);
42
#define DATA_GET_PTR(mrb,obj,dtype,type) (type*)mrb_data_get_ptr(mrb,obj,dtype)
43
void
*
mrb_data_check_get_ptr
(
mrb_state
*mrb,
mrb_value
,
const
mrb_data_type
*);
44
#define DATA_CHECK_GET_PTR(mrb,obj,dtype,type) (type*)mrb_data_check_get_ptr(mrb,obj,dtype)
45
46
/* obsolete functions and macros */
47
#define mrb_data_check_and_get(mrb,obj,dtype) mrb_data_get_ptr(mrb,obj,dtype)
48
#define mrb_get_datatype(mrb,val,type) mrb_data_get_ptr(mrb, val, type)
49
#define mrb_check_datatype(mrb,val,type) mrb_data_get_ptr(mrb, val, type)
50
#define Data_Get_Struct(mrb,obj,type,sval) do {\
51
*(void**)&sval = mrb_data_get_ptr(mrb, obj, type); \
52
} while (0)
53
54
#if defined(__cplusplus)
55
}
/* extern "C" { */
56
#endif
57
58
#endif
/* MRUBY_DATA_H */
Generated on Sun Nov 10 2013 09:49:05 for Groonga 3.0.9 Source Code Document by
1.8.1.2