public static void AddIoLibrary(LuaContext Context) { dynamic io = LuaObject.NewTable(); FileMetatable.__index = LuaObject.NewTable(); FileMetatable.__index.write = (LuaFunction)write; FileMetatable.__index.close = (LuaFunction)close; FileMetatable.__index.flush = (LuaFunction)flush; FileMetatable.__index.seek = (LuaFunction)seek; FileMetatable.__index.read = (LuaFunction)read; io.open = (LuaFunction)io_open; io.type = (LuaFunction)io_type; io.input = (LuaFunction)io_input; io.output = (LuaFunction)io_output; io.temp = (LuaFunction)io_temp; io.flush = (LuaFunction)io_flush; io.write = (LuaFunction)io_write; io.read = (LuaFunction)io_read; currentInput = CreateFileObject(Console.OpenStandardInput()); currentOutput = CreateFileObject(Console.OpenStandardOutput(), true); io.stdin = currentInput; io.stdout = currentOutput; io.stderr = CreateFileObject(Console.OpenStandardError(), true); Context.Set("io", io); }
public static void AddMathLibrary(LuaContext Context) { dynamic math = LuaObject.NewTable(); math.abs = (LuaFunction)math_abs; math.acos = (LuaFunction)math_acos; math.asin = (LuaFunction)math_asin; math.atan = (LuaFunction)math_atan; math.atan2 = (LuaFunction)math_atan2; math.ceil = (LuaFunction)math_ceil; math.cos = (LuaFunction)math_cos; math.cosh = (LuaFunction)math_cosh; math.exp = (LuaFunction)math_exp; math.floor = (LuaFunction)math_floor; math.log = (LuaFunction)math_log; math.max = (LuaFunction)math_max; math.min = (LuaFunction)math_min; math.pow = (LuaFunction)math_pow; math.sin = (LuaFunction)math_sin; math.sinh = (LuaFunction)math_sinh; math.sqrt = (LuaFunction)math_sqrt; math.tan = (LuaFunction)math_tan; math.tanh = (LuaFunction)math_tanh; math.pi = Math.PI; Context.Set("math", math); }
static void SetVariable(Variable Expression, LuaObject Value, LuaContext Context) { if (Expression.Prefix == null) { Context.Set(Expression.Name, Value); } else { EvalExpression(Expression.Prefix, Context)[0][Expression.Name] = Value; } }
/// <summary> /// Sets the nearest declared variable or creates a new one /// </summary> public void Set(string Name, LuaObject Value) { var obj = LuaObject.Nil; if (parent == null || variables.TryGetValue(Name, out obj)) { variables[Name] = Value; } else { parent.Set(Name, Value); } }
/// <summary> /// Creates a new Lua context with the base functions already set /// </summary> public Lua() { ctx.Set("assert", (LuaFunction)assert); ctx.Set("dofile", (LuaFunction)dofile); ctx.Set("error", (LuaFunction)error); ctx.Set("getmetatable", (LuaFunction)getmetatable); ctx.Set("setmetatable", (LuaFunction)setmetatable); ctx.Set("rawequal", (LuaFunction)rawequal); ctx.Set("rawget", (LuaFunction)rawget); ctx.Set("rawset", (LuaFunction)rawset); ctx.Set("rawlen", (LuaFunction)rawlen); ctx.Set("tonumber", (LuaFunction)tonumber); ctx.Set("tostring", (LuaFunction)tostring); ctx.Set("type", (LuaFunction)type); ctx.Set("ipairs", (LuaFunction)ipairs); ctx.Set("next", (LuaFunction)next); ctx.Set("pairs", (LuaFunction)pairs); }