123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- #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
|