#ifndef LGLIB_TYPES_H
#define LGLIB_TYPES_H
#include <lua.h>
#include <glib.h>
#ifndef LGLIB_OBJREGISTRY
#define LGLIB_OBJREGISTRY ( "lglib.obj_registry" )
#endif
typedef struct {
int reference;
lua_State *L;
} lglib_callback_t;
void lglib_callback_destroy (lglib_callback_t *cb);
#define LGLIB_DECLARE(WHAT, TYPE) \
typedef struct { \
TYPE *WHAT; \
} lglib_##WHAT##_t; \
\
lglib_##WHAT##_t *luaL_checklglib_##WHAT (lua_State *L, int index); \
lglib_##WHAT##_t *lglib_##WHAT##_bless (lua_State *L, TYPE *WHAT);
LGLIB_DECLARE (main_context, GMainContext)
LGLIB_DECLARE (source, GSource)
#undef LGLIB_DECLARE
#endif