diff options
Diffstat (limited to 'src/universe.c')
-rw-r--r-- | src/universe.c | 25 |
1 files changed, 8 insertions, 17 deletions
diff --git a/src/universe.c b/src/universe.c index 4689a09..d531bf2 100644 --- a/src/universe.c +++ b/src/universe.c | |||
@@ -29,6 +29,7 @@ THE SOFTWARE. | |||
29 | */ | 29 | */ |
30 | 30 | ||
31 | #include <string.h> | 31 | #include <string.h> |
32 | #include <assert.h> | ||
32 | 33 | ||
33 | #include "universe.h" | 34 | #include "universe.h" |
34 | #include "compat.h" | 35 | #include "compat.h" |
@@ -44,9 +45,9 @@ Universe* universe_create( lua_State* L) | |||
44 | { | 45 | { |
45 | Universe* U = (Universe*) lua_newuserdata( L, sizeof(Universe)); // universe | 46 | Universe* U = (Universe*) lua_newuserdata( L, sizeof(Universe)); // universe |
46 | memset( U, 0, sizeof( Universe)); | 47 | memset( U, 0, sizeof( Universe)); |
47 | push_unique_key( L, UNIVERSE_REGKEY); // universe UNIVERSE_REGKEY | 48 | STACK_CHECK( L, 1); |
48 | lua_pushvalue( L, -2); // universe UNIVERSE_REGKEY universe | 49 | REGISTRY_SET( L, UNIVERSE_REGKEY, lua_pushvalue(L, -2)); // universe |
49 | lua_rawset( L, LUA_REGISTRYINDEX); // universe | 50 | STACK_END( L, 1); |
50 | return U; | 51 | return U; |
51 | } | 52 | } |
52 | 53 | ||
@@ -54,17 +55,8 @@ Universe* universe_create( lua_State* L) | |||
54 | 55 | ||
55 | void universe_store( lua_State* L, Universe* U) | 56 | void universe_store( lua_State* L, Universe* U) |
56 | { | 57 | { |
57 | STACK_CHECK( L); | 58 | STACK_CHECK( L, 0); |
58 | push_unique_key( L, UNIVERSE_REGKEY); | 59 | REGISTRY_SET( L, UNIVERSE_REGKEY, (NULL != U) ? lua_pushlightuserdata( L, U) : lua_pushnil( L)); |
59 | if( NULL != U) | ||
60 | { | ||
61 | lua_pushlightuserdata( L, U); | ||
62 | } | ||
63 | else | ||
64 | { | ||
65 | lua_pushnil( L); | ||
66 | } | ||
67 | lua_rawset( L, LUA_REGISTRYINDEX); | ||
68 | STACK_END( L, 0); | 60 | STACK_END( L, 0); |
69 | } | 61 | } |
70 | 62 | ||
@@ -74,9 +66,8 @@ Universe* universe_get( lua_State* L) | |||
74 | { | 66 | { |
75 | Universe* universe; | 67 | Universe* universe; |
76 | STACK_GROW( L, 2); | 68 | STACK_GROW( L, 2); |
77 | STACK_CHECK( L); | 69 | STACK_CHECK( L, 0); |
78 | push_unique_key( L, UNIVERSE_REGKEY); | 70 | REGISTRY_GET( L, UNIVERSE_REGKEY); |
79 | lua_rawget( L, LUA_REGISTRYINDEX); | ||
80 | universe = lua_touserdata( L, -1); // NULL if nil | 71 | universe = lua_touserdata( L, -1); // NULL if nil |
81 | lua_pop( L, 1); | 72 | lua_pop( L, 1); |
82 | STACK_END( L, 0); | 73 | STACK_END( L, 0); |