-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathbase.util.luaengine.c
More file actions
54 lines (42 loc) · 1.16 KB
/
base.util.luaengine.c
File metadata and controls
54 lines (42 loc) · 1.16 KB
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
/*
* Ronny Otto: added "THREADED" definition to make it compileable in
* BlitzMax threaded mode.
*/
#ifndef THREADED
#define THREADED
#endif
#include <brl.mod/blitz.mod/blitz.h>
#include <pub.mod/lua.mod/lua-5.1.4/src/lua.h>
struct BBObjectContainer {
BBObject * o;
};
void lua_boxobject( lua_State *L,BBObject *obj ){
void *p;
struct BBObjectContainer * uc = (struct BBObjectContainer *)GC_MALLOC_UNCOLLECTABLE(sizeof(struct BBObjectContainer));
uc->o = obj;
p=lua_newuserdata( L, sizeof(struct BBObjectContainer) );
*(struct BBObjectContainer**)p=uc;
}
BBObject *lua_unboxobject( lua_State *L,int index ){
void *p;
p=lua_touserdata( L,index );
if(!p) {
printf("LUA: unbox object invalid\n");
return &bbNullObject;
}
struct BBObjectContainer * uc = *(struct BBObjectContainer**)p;
return uc->o;
}
void lua_pushlightobject( lua_State *L,BBObject *obj ){
lua_pushlightuserdata( L,obj );
}
BBObject *lua_tolightobject( lua_State *L,int index ){
return (BBObject*)( lua_touserdata( L,index ) );
}
int lua_gcobject( lua_State *L ){
void *p;
p=lua_touserdata( L,1 );
struct BBObjectContainer * uc = *(struct BBObjectContainer**)p;
GC_FREE(uc);
return 0;
}