-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathcdata.h
63 lines (53 loc) · 1.55 KB
/
cdata.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#ifndef CDATA_H
#define CDATA_H
#include "sol.h"
typedef enum {
SOL_MT_INT,
SOL_MT_INT8,
SOL_MT_INT16,
SOL_MT_INT32,
SOL_MT_INT64,
SOL_MT_UINT,
SOL_MT_UINT8,
SOL_MT_UINT16,
SOL_MT_UINT32,
// SOL_MT_UINT64, TODO: Not yet supported
SOL_MT_FLOAT,
SOL_MT_DOUBLE,
SOL_MT_CHAR,
SOL_MT_CSTR,
SOL_MT_CFUNC,
SOL_MT_PTR // Don't use this in add_member--use add_pointer
} sol_memtype_t;
typedef enum {
SOL_CS_MEMBER,
SOL_CS_CFUNC
} sol_spec_t;
typedef struct {
sol_spec_t type;
union {
struct {
sol_memtype_t memtype;
int offset;
sol_object_t *specs;
};
sol_cfunc_t cfunc;
};
} sol_memspec_t;
typedef struct {
void *data;
sol_object_t *specs;
} sol_cstruct_t;
sol_object_t *sol_new_cstruct_specs(sol_state_t *);
void sol_cstruct_add_member(sol_state_t *, sol_object_t *, sol_object_t *, sol_memtype_t, int);
void sol_cstruct_add_member_name(sol_state_t *, sol_object_t *, char *, sol_memtype_t, int);
void sol_cstruct_add_pointer(sol_state_t *, sol_object_t *, sol_object_t *, sol_object_t *, int);
void sol_cstruct_add_pointer_name(sol_state_t *, sol_object_t *, char *, sol_object_t *, int);
void sol_cstruct_add_func(sol_state_t *, sol_object_t *, sol_object_t *, sol_cfunc_t);
void sol_cstruct_add_func_name(sol_state_t *, sol_object_t *, char *, sol_cfunc_t);
sol_object_t *sol_new_cstruct(sol_state_t *, void *, sol_object_t *);
extern sol_ops_t sol_cstruct_spec_ops;
extern sol_ops_t sol_cstruct_ops;
sol_object_t *sol_f_cstruct_index(sol_state_t *, sol_object_t *);
sol_object_t *sol_f_cstruct_setindex(sol_state_t *, sol_object_t *);
#endif