Просмотр исходного кода

Remove push/get_lightdata from LuaStack. All supported types must have corresponding get/push, this allows type/alive-checking

Daniele Bartolini 12 лет назад
Родитель
Сommit
8c6edff894
3 измененных файлов с 21 добавлено и 20 удалено
  1. 4 4
      engine/lua/LuaDevice.cpp
  2. 4 4
      engine/lua/LuaResourcePackage.cpp
  3. 13 12
      engine/lua/LuaStack.h

+ 4 - 4
engine/lua/LuaDevice.cpp

@@ -98,7 +98,7 @@ CE_EXPORT int device_create_world(lua_State* L)
 {
 	LuaStack stack(L);
 
-	stack.push_lightdata(device()->create_world());
+	stack.push_world(device()->create_world());
 
 	return 1;
 }
@@ -108,7 +108,7 @@ CE_EXPORT int device_destroy_world(lua_State* L)
 {
 	LuaStack stack(L);
 
-	device()->destroy_world((World*) stack.get_lightdata(1));
+	device()->destroy_world(stack.get_world(1));
 
 	return 0;
 }
@@ -132,7 +132,7 @@ CE_EXPORT int device_create_resource_package(lua_State* L)
 	LuaStack stack(L);
 
 	const char* package = stack.get_string(1);
-	stack.push_lightdata(device()->create_resource_package(package));
+	stack.push_resource_package(device()->create_resource_package(package));
 
 	return 1;
 }
@@ -142,7 +142,7 @@ CE_EXPORT int device_destroy_resource_package(lua_State* L)
 {
 	LuaStack stack(L);
 
-	ResourcePackage* package = (ResourcePackage*) stack.get_lightdata(1);
+	ResourcePackage* package = stack.get_resource_package(1);
 	device()->destroy_resource_package(package);
 
 	return 0;

+ 4 - 4
engine/lua/LuaResourcePackage.cpp

@@ -36,7 +36,7 @@ CE_EXPORT int resource_package_load(lua_State* L)
 {
 	LuaStack stack(L);
 
-	ResourcePackage* package = (ResourcePackage*) stack.get_lightdata(1);
+	ResourcePackage* package = stack.get_resource_package(1);
 	package->load();
 
 	return 0;
@@ -47,7 +47,7 @@ CE_EXPORT int resource_package_unload(lua_State* L)
 {
 	LuaStack stack(L);
 
-	ResourcePackage* package = (ResourcePackage*) stack.get_lightdata(1);
+	ResourcePackage* package = stack.get_resource_package(1);
 	package->unload();
 
 	return 0;
@@ -58,7 +58,7 @@ CE_EXPORT int resource_package_flush(lua_State* L)
 {
 	LuaStack stack(L);
 
-	ResourcePackage* package = (ResourcePackage*) stack.get_lightdata(1);
+	ResourcePackage* package = stack.get_resource_package(1);
 	package->flush();
 
 	return 0;
@@ -69,7 +69,7 @@ CE_EXPORT int resource_package_has_loaded(lua_State* L)
 {
 	LuaStack stack(L);
 
-	ResourcePackage* package = (ResourcePackage*) stack.get_lightdata(1);
+	ResourcePackage* package = stack.get_resource_package(1);
 	stack.push_bool(package->has_loaded());
 
 	return 1;

+ 13 - 12
engine/lua/LuaStack.h

@@ -42,6 +42,7 @@ class Camera;
 class World;
 class Mesh;
 class Sprite;
+class ResourcePackage;
 typedef Id SoundInstanceId;
 
 void clear_lua_temporaries();
@@ -118,12 +119,6 @@ public:
 		lua_pushlstring(m_state, s, len);
 	}
 
-	//-----------------------------------------------------------------------------
-	void push_lightdata(void* data)
-	{
-		lua_pushlightuserdata(m_state, data);
-	}
-
 	//-----------------------------------------------------------------------------
 	bool get_bool(int32_t index)
 	{
@@ -148,12 +143,6 @@ public:
 		return luaL_checkstring(m_state, index);
 	}
 
-	//-----------------------------------------------------------------------------
-	void* get_lightdata(int32_t index)
-	{
-		return lua_touserdata(m_state, index);	
-	}
-
 	/// Pushes an empty table onto the stack.
 	/// When you want to set keys on the table, you have to use LuaStack::push_key_begin()
 	/// and LuaStack::push_key_end() as in the following example:
@@ -186,6 +175,18 @@ public:
 		lua_settable(m_state, -3);
 	}
 
+	//-----------------------------------------------------------------------------
+	void push_resource_package(ResourcePackage* package)
+	{
+		lua_pushlightuserdata(m_state, package);
+	}
+
+	//-----------------------------------------------------------------------------
+	ResourcePackage* get_resource_package(int32_t index)
+	{
+		return (ResourcePackage*) lua_touserdata(m_state, index);
+	}
+
 	//-----------------------------------------------------------------------------
 	void push_world(World* world)
 	{