use LuaReference::SetFromExpression

This commit is contained in:
Glenn Maynard
2006-09-22 02:08:00 +00:00
parent 2335fe585b
commit 591ef06969
+13 -3
View File
@@ -543,11 +543,13 @@ bool LuaHelpers::RunExpressionB( const RString &str )
{ {
Lua *L = LUA->Get(); Lua *L = LUA->Get();
if( !LuaHelpers::RunScript(L, "return " + str, "", 1) ) LuaReference val;
if( !val.SetFromExpression(str) )
{ {
LUA->Release( L ); LUA->Release( L );
return false; return false;
} }
val.PushSelf( L );
/* Don't accept a function as a return value. */ /* Don't accept a function as a return value. */
if( lua_isfunction( L, -1 ) ) if( lua_isfunction( L, -1 ) )
@@ -563,12 +565,16 @@ bool LuaHelpers::RunExpressionB( const RString &str )
float LuaHelpers::RunExpressionF( const RString &str ) float LuaHelpers::RunExpressionF( const RString &str )
{ {
Lua *L = LUA->Get(); Lua *L = LUA->Get();
if( !LuaHelpers::RunScript(L, "return " + str, "", 1) )
LuaReference val;
if( !val.SetFromExpression(str) )
{ {
LUA->Release( L ); LUA->Release( L );
return 0; return 0;
} }
val.PushSelf( L );
/* Don't accept a function as a return value. */ /* Don't accept a function as a return value. */
if( lua_isfunction( L, -1 ) ) if( lua_isfunction( L, -1 ) )
RageException::Throw( "Result is a function; did you forget \"()\"?" ); RageException::Throw( "Result is a function; did you forget \"()\"?" );
@@ -588,11 +594,15 @@ int LuaHelpers::RunExpressionI( const RString &str )
bool LuaHelpers::RunExpressionS( const RString &str, RString &sOut ) bool LuaHelpers::RunExpressionS( const RString &str, RString &sOut )
{ {
Lua *L = LUA->Get(); Lua *L = LUA->Get();
if( !LuaHelpers::RunScript(L, "return " + str, "", 1) )
LuaReference val;
if( !val.SetFromExpression(str) )
{ {
LUA->Release( L ); LUA->Release( L );
sOut = "";
return false; return false;
} }
val.PushSelf( L );
/* Don't accept a function as a return value. */ /* Don't accept a function as a return value. */
if( lua_isfunction( L, -1 ) ) if( lua_isfunction( L, -1 ) )