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
var result = translator.getFunction (luaState, -1);
translator.popValues (luaState, oldTop);
return result;
}
/*
* Excutes a Lua chunk and returns all the chunk's return
* values in an array
*/
public object[] DoString (string chunk)
{
int oldTop = LuaLib.lua_gettop (luaState);
if (LuaLib.luaL_loadbuffer (luaState, chunk, "chunk") == 0) {
executing = true;
try {
if (LuaLib.lua_pcall (luaState, 0, -1, 0) == 0)
return translator.popValues (luaState, oldTop);
else
ThrowExceptionFromError (oldTop);
} finally {
executing = false;
}
} else
ThrowExceptionFromError (oldTop);
return null; // Never reached - keeps compiler happy
}
/// <summary>
/// Executes a Lua chnk and returns all the chunk's return values in an array.
/// </summary>
/// <param name = "chunk">Chunk to execute</param>
/// <param name = "chunkName">Name to associate with the chunk</param>
/// <returns></returns>
public object[] DoString (string chunk, string chunkName)
{
int oldTop = LuaLib.lua_gettop (luaState);
executing = true;
if (LuaLib.luaL_loadbuffer (luaState, chunk, chunkName) == 0) {
try {
if (LuaLib.lua_pcall (luaState, 0, -1, 0) == 0)
return translator.popValues (luaState, oldTop);
else
ThrowExceptionFromError (oldTop);
} finally {
executing = false;
}
} else
ThrowExceptionFromError (oldTop);
return null; // Never reached - keeps compiler happy
}
/// <summary>
/// Executes a Lua chunk and returns all the chunk's return values in an array.
/// </summary>
/// <param name = "chunk">Chunk to execute</param>
/// <param name = "chunkName">Name to associate with the chunk. Defaults to "chunk".</param>
/// <returns></returns>
public object[] DoString(byte[] chunk, string chunkName = "chunk")
{
int oldTop = LuaLib.lua_gettop(luaState);
executing = true;
if (LuaLib.luaL_loadbuffer(luaState, chunk, chunkName) == 0)
{
try
{
if (LuaLib.lua_pcall(luaState, 0, -1, 0) == 0)
return translator.popValues(luaState, oldTop);
else
ThrowExceptionFromError(oldTop);
}
finally
{
executing = false;
}
}
else
ThrowExceptionFromError(oldTop);
return null; // Never reached - keeps compiler happy
}
/// <summary>
/// Executes a Lua chunk and returns all the chunk's return values in an array.
/// </summary>
/// <param name = "chunk">Chunk to execute</param>
/// <param name = "chunkName">Name to associate with the chunk. Defaults to "chunk".</param>
/// <returns></returns>
public object[] DoString(string chunk, string chunkName = "chunk")
{
int oldTop = LuaLib.lua_gettop(luaState);
executing = true;
if (LuaLib.luaL_loadbuffer(luaState, chunk, chunkName) == 0)
{
try
{
if (LuaLib.lua_pcall(luaState, 0, -1, 0) == 0)
return translator.popValues(luaState, oldTop);
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