Commit 296814ea authored by Mangatome's avatar Mangatome
Browse files

DoString binary chunks and simplifications

- Simplified DoString for strings by replacing DoString(string,string)
and DoString(string) by a single method DoString(string[,string]).
- Added DoString(byte[][,string]) to allow for usage of binary chunks.
parent 4cfc1f2b
...@@ -440,57 +440,68 @@ end ...@@ -440,57 +440,68 @@ end
var result = translator.getFunction (luaState, -1); var result = translator.getFunction (luaState, -1);
translator.popValues (luaState, oldTop); translator.popValues (luaState, oldTop);
return result; return result;
} }
/* /// <summary>
* Excutes a Lua chunk and returns all the chunk's return /// Executes a Lua chunk and returns all the chunk's return values in an array.
* values in an array /// </summary>
*/ /// <param name = "chunk">Chunk to execute</param>
public object[] DoString (string chunk) /// <param name = "chunkName">Name to associate with the chunk. Defaults to "chunk".</param>
{ /// <returns></returns>
int oldTop = LuaLib.lua_gettop (luaState); public object[] DoString(byte[] chunk, string chunkName = "chunk")
{
if (LuaLib.luaL_loadbuffer (luaState, chunk, "chunk") == 0) { int oldTop = LuaLib.lua_gettop(luaState);
executing = true; executing = true;
try { if (LuaLib.luaL_loadbuffer(luaState, chunk, chunkName) == 0)
if (LuaLib.lua_pcall (luaState, 0, -1, 0) == 0) {
return translator.popValues (luaState, oldTop); try
else {
ThrowExceptionFromError (oldTop); if (LuaLib.lua_pcall(luaState, 0, -1, 0) == 0)
} finally { return translator.popValues(luaState, oldTop);
executing = false; else
} ThrowExceptionFromError(oldTop);
} else }
ThrowExceptionFromError (oldTop); finally
{
return null; // Never reached - keeps compiler happy executing = false;
} }
}
/// <summary> else
/// Executes a Lua chnk and returns all the chunk's return values in an array. ThrowExceptionFromError(oldTop);
/// </summary>
/// <param name = "chunk">Chunk to execute</param> return null; // Never reached - keeps compiler happy
/// <param name = "chunkName">Name to associate with the chunk</param> }
/// <returns></returns>
public object[] DoString (string chunk, string chunkName) /// <summary>
{ /// Executes a Lua chunk and returns all the chunk's return values in an array.
int oldTop = LuaLib.lua_gettop (luaState); /// </summary>
executing = true; /// <param name = "chunk">Chunk to execute</param>
/// <param name = "chunkName">Name to associate with the chunk. Defaults to "chunk".</param>
if (LuaLib.luaL_loadbuffer (luaState, chunk, chunkName) == 0) { /// <returns></returns>
try { public object[] DoString(string chunk, string chunkName = "chunk")
if (LuaLib.lua_pcall (luaState, 0, -1, 0) == 0) {
return translator.popValues (luaState, oldTop); int oldTop = LuaLib.lua_gettop(luaState);
else executing = true;
ThrowExceptionFromError (oldTop);
} finally { if (LuaLib.luaL_loadbuffer(luaState, chunk, chunkName) == 0)
executing = false; {
} try
} else {
ThrowExceptionFromError (oldTop); if (LuaLib.lua_pcall(luaState, 0, -1, 0) == 0)
return translator.popValues(luaState, oldTop);
return null; // Never reached - keeps compiler happy else
ThrowExceptionFromError(oldTop);
}
finally
{
executing = false;
}
}
else
ThrowExceptionFromError(oldTop);
return null; // Never reached - keeps compiler happy
} }
/* /*
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment