public static DynValue pairs(ScriptExecutionContext executionContext, CallbackArguments args) { DynValue table = args[0]; DynValue meta = executionContext.GetMetamethodTailCall(table, "__pairs", args.GetArray()); return meta ?? DynValue.NewTuple(DynValue.NewCallback(next), table); }
public static DynValue ipairs(ScriptExecutionContext executionContext, CallbackArguments args) { var table = args[0]; var meta = executionContext.GetMetamethodTailCall(table, "__ipairs", args.GetArray()); return meta ?? DynValue.NewTuple(DynValue.NewCallback(__next_i), table, DynValue.NewNumber(0)); }
public static DynValue assert(ScriptExecutionContext executionContext, CallbackArguments args) { var v = args[0]; var message = args[1]; if (!v.CastToBool()) { if (message.IsNil()) throw new ScriptRuntimeException("assertion failed!") {DoNotDecorateMessage = true}; throw new ScriptRuntimeException(message.ToPrintString()) {DoNotDecorateMessage = true}; } return DynValue.NewTupleNested(args.GetArray()); }
public static DynValue assert(ScriptExecutionContext executionContext, CallbackArguments args) { var v = args[0]; var message = args[1]; if (!v.CastToBool()) { if (message.IsNil()) { throw new ScriptRuntimeException("assertion failed!"); // { DoNotDecorateMessage = true }; } throw new ScriptRuntimeException(message.ToPrintString()); // { DoNotDecorateMessage = true }; } return(DynValue.NewTupleNested(args.GetArray())); }
public static DynValue resume(ScriptExecutionContext executionContext, CallbackArguments args) { DynValue handle = args.AsType(0, "resume", DataType.Thread); try { DynValue ret = handle.Coroutine.Resume(args.GetArray(1)); List <DynValue> retval = new List <DynValue>(); retval.Add(DynValue.True); if (ret.Type == DataType.Tuple) { for (int i = 0; i < ret.Tuple.Length; i++) { var v = ret.Tuple[i]; if ((i == ret.Tuple.Length - 1) && (v.Type == DataType.Tuple)) { retval.AddRange(v.Tuple); } else { retval.Add(v); } } } else { retval.Add(ret); } return(DynValue.NewTuple(retval.ToArray())); } catch (ScriptRuntimeException ex) { return(DynValue.NewTuple( DynValue.False, DynValue.NewString(ex.Message))); } }
public static DynValue resume(ScriptExecutionContext executionContext, CallbackArguments args) { DynValue handle = args.AsType(0, "resume", DataType.Thread); try { DynValue ret = handle.Coroutine.Resume(args.GetArray(1)); List<DynValue> retval = new List<DynValue>(); retval.Add(DynValue.True); if (ret.Type == DataType.Tuple) { for (int i = 0; i < ret.Tuple.Length; i++) { var v = ret.Tuple[i]; if ((i == ret.Tuple.Length - 1) && (v.Type == DataType.Tuple)) { retval.AddRange(v.Tuple); } else { retval.Add(v); } } } else { retval.Add(ret); } return DynValue.NewTuple(retval.ToArray()); } catch (ScriptRuntimeException ex) { return DynValue.NewTuple( DynValue.False, DynValue.NewString(ex.Message)); } }
static DynValue ipairs(ScriptExecutionContext executionContext, CallbackArguments args) { DynValue table = args[0]; DynValue meta = executionContext.GetMetamethodTailCall(table, "__ipairs", args.GetArray()); return(meta ?? DynValue.NewTuple(DynValue.NewCallback(__next_i), table, DynValue.NewNumber(0))); }
static DynValue CallBack(ScriptExecutionContext ctx, CallbackArguments args) { var name = ctx.m_Callback.Name; var arguments = args.GetArray(); // do stuff ClientCommand Command = new ClientCommand((LOU.CommandType)Enum.Parse(typeof(LOU.CommandType), name)); for (int i = 0; i < arguments.Length; i++) { switch (arguments[i].Type) { case DataType.Number: Command.CommandParams.Add(i.ToString(), arguments[i].Number.ToString()); break; case DataType.String: Command.CommandParams.Add(i.ToString(), arguments[i].String); break; default: Command.CommandParams.Add(i.ToString(), arguments[i].ToString()); break; } } if (MainForm.CurrentClientProcessId != -1 && MainForm.ClientCommandsMemoryMap != null) { int ClientCommandId = 0; Queue <ClientCommand> ClientCommandsQueue; ClientCommand[] ClientCommandsArray; MainForm.ClientCommandsMemoryMap.ReadMemoryMap(out ClientCommandId, out ClientCommandsArray); if (ClientCommandsArray == null) { ClientCommandsQueue = new Queue <ClientCommand>(); } else { ClientCommandsQueue = new Queue <ClientCommand>(ClientCommandsArray); } if (ClientCommandsQueue.Count > 100) { throw new Exception("Too many commands in the queue. Cannot continue."); } ClientCommandsQueue.Enqueue(Command); int AssignedClientCommandId = ClientCommandId + ClientCommandsQueue.Count; MainForm.ClientCommandsMemoryMap.WriteMemoryMap(ClientCommandId, ClientCommandsQueue.ToArray()); Debug.WriteLine("Command inserted, assigned CommandId=" + AssignedClientCommandId.ToString()); Stopwatch timeout = new Stopwatch(); timeout.Start(); while (ClientCommandId < AssignedClientCommandId && timeout.ElapsedMilliseconds < 3000) { Debug.WriteLine("Waiting for command to be executed, Current CommandId=" + ClientCommandId.ToString() + ", Assigned CommandId=" + AssignedClientCommandId.ToString()); Thread.Sleep(50); MainForm.ClientCommandsMemoryMap.ReadMemoryMap(out ClientCommandId, out ClientCommandsArray); } timeout.Stop(); if (timeout.ElapsedMilliseconds >= 3000) { Debug.WriteLine("Timed out!"); } MainForm.RefreshClientStatus(); } return(DynValue.Nil); }
public static DynValue yield(ScriptExecutionContext executionContext, CallbackArguments args) { return(DynValue.NewYieldReq(args.GetArray())); }
public static DynValue __wrap_wrapper(ScriptExecutionContext executionContext, CallbackArguments args) { DynValue handle = (DynValue)executionContext.AdditionalData; return(handle.Coroutine.Resume(args.GetArray())); }
public static DynValue yield(ScriptExecutionContext executionContext, CallbackArguments args) { return DynValue.NewYieldReq(args.GetArray()); }
public static DynValue __wrap_wrapper(ScriptExecutionContext executionContext, CallbackArguments args) { DynValue handle = (DynValue)executionContext.AdditionalData; return handle.Coroutine.Resume(args.GetArray()); }
public static DynValue ipairs(ScriptExecutionContext executionContext, CallbackArguments args) { DynValue table = args[0]; if (table == null || table.Type == DataType.Nil) { throw new System.ApplicationException("attempt to index nil"); } DynValue meta = executionContext.GetMetamethodTailCall(table, "__ipairs", args.GetArray()); return(meta ?? DynValue.NewTuple(DynValue.NewCallback(__next_i), table, DynValue.NewNumber(0))); }