public void Set(ScriptExecutionEnvironment environment, ScriptVariable value) { if (_variable == null) { environment.Console.Warn("Cannot use index for null variable"); return; } if (_index == null) { environment.Console.Warn("Cannot use null as index"); return; } ListVariable list = _variable as ListVariable; StringVariable key = _index as StringVariable; if (list != null && key != null) { list[key.Value] = value; return; } int indexInt = _index.ToInteger(); if (!_variable.SetIndexedValue(indexInt, value)) { environment.Console.Warn(string.Format("Invalid index : {0}", _index.ToString())); } }
public ScriptVariable Get(ScriptExecutionEnvironment environment) { if (_variable == null) { environment.Console.Warn("Cannot use indexer for null variable"); return(null); } if (_index == null) { environment.Console.Warn("Cannot use null as indexer"); return(null); } ListVariable list = _variable as ListVariable; StringVariable key = _index as StringVariable; if (list != null && key != null) { return(list[key.Value]); } int indexInt = _index.ToInteger(); ScriptVariable ret; if (!_variable.GetIndexedValue(indexInt, out ret)) { environment.Console.Warn(string.Format("Invalid index : {0}", _index.ToString())); ret = null; } return(ret); }
public override IVariableAccessor GetAccessor(ScriptExecutionEnvironment env) { ScriptVariable variable = this.Variable.Calculate(env); ScriptVariable index; if (this.Index == null) { ListVariable list = variable as ListVariable; if (list != null) { index = new NumberVariable(list.Value.Count); } else { env.Console.Warn("Cannot use empty index except for List"); return(new NullAccessor()); } } else { index = this.Index.Calculate(env); } return(new IndexedVariableAccessor(variable, index)); }
public ComponentIconListPointer(ILimnorDesigner designer, ListVariable pointer, MethodClass method) : base(designer, pointer, method) { }
public ScriptVariable Call(IList <ScriptVariable> args, ScriptConsole console) { _progress.Initialize(0, "Initializing..."); if (args == null) { throw new ArgumentNullException("args", "args cannot be null"); } if (args.Count < 1) { args = new List <ScriptVariable> { null } } ; if (args[0] == null) { args[0] = new ListVariable(); } IList <ScriptVariable> objectNamesVar = args[0].ToList(); if (objectNamesVar.Any(n => n.IsNull())) { throw new ArgumentException(global::MotionDataHandler.Properties.Settings.Default.Msg_ObjectNameCannotBeNull, "args"); } List <string> objectNames = objectNamesVar.Select(n => n.ToString()).ToList(); MotionDataSet dataSet = console.MotionDataSet; MotionProcEnv env2 = new MotionProcEnv(console); List <MotionObjectInfo> infoList = new List <MotionObjectInfo>(); foreach (string objectName in objectNames) { MotionObjectInfo info = dataSet.GetObjectInfoByName(objectName); if (info == null) { throw new ArgumentException(global::MotionDataHandler.Properties.Settings.Default.Msg_ObjectNotFound + ": " + objectName, "args"); } infoList.Add(info); } foreach (MotionObjectInfo info in infoList) { if (!_operation.FilterSelection(info)) { throw new ArgumentException(global::MotionDataHandler.Properties.Settings.Default.Msg_InvalidTargetObjectSpecified + ": " + info.Name, "args"); } } string errorMessage = ""; if (!_operation.ValidateSelection(infoList, ref errorMessage)) { if (errorMessage == null) { errorMessage = ""; } throw new ArgumentException(global::MotionDataHandler.Properties.Settings.Default.Msg_ImproperObjectSelection + ": " + errorMessage, "args"); } IList <ProcParam <MotionProcEnv> > parameters = _operation.GetParameters() ?? new ProcParam <MotionProcEnv> [0]; if (args.Count != parameters.Count + 1) { throw new ArgumentException(string.Format(global::MotionDataHandler.Properties.Settings.Default.Msg_NumberOfArgumentsRequired, parameters.Count + 1)); } for (int i = 0; i < parameters.Count; i++) { if (!parameters[i].FromScriptVariable(env2, args[i + 1], ref errorMessage)) { throw new ArgumentException(string.Format(global::MotionDataHandler.Properties.Settings.Default.Msg_InvalidNthArgument + ": {1}", i + 1, errorMessage ?? ""), "args"); } } if (!_operation.ValidateArguments(parameters, ref errorMessage)) { throw new ArgumentException(string.Format(global::MotionDataHandler.Properties.Settings.Default.Msg_InvalidArgument + ": {0}", errorMessage ?? ""), "args"); } IMotionOperationGeneral general = _operation as IMotionOperationGeneral; if (general != null) { _progress.Initialize(0, "Operation"); general.Operate(infoList, parameters, dataSet, _progress); return(new ListVariable(infoList.Select(info => new StringVariable(info.Name)))); } IMotionOperationEditObject edit = _operation as IMotionOperationEditObject; if (edit != null) { _progress.Initialize(dataSet.FrameLength, "Edit Object"); foreach (MotionFrame frame in dataSet.EnumerateFrame()) { IList <MotionObject> results = edit.EditObject(infoList, parameters, new ReadOnlyMotionFrame(frame), false); int count = Math.Min(results.Count, infoList.Count); for (int i = 0; i < count; i++) { frame[infoList[i]] = results[i]; } _progress.CurrentValue++; } dataSet.DoFrameListChanged(); return(new ListVariable(infoList.Select(info => new StringVariable(info.Name)))); } IMotionOperationOutputSequence output = _operation as IMotionOperationOutputSequence; if (output != null) { _progress.Initialize(0, "Output"); IList <Sequence.SequenceData> sequences = output.OutputSequence(infoList, parameters, dataSet.EnumerateFrame().Select(frame => new ReadOnlyMotionFrame(frame)), _progress); foreach (Sequence.SequenceData sequence in sequences) { console.SequenceController.AddSequence(sequence); } return(new ListVariable(sequences.Select(s => new StringVariable(s.Title)))); } IMotionOperationCreateObject create = _operation as IMotionOperationCreateObject; if (create != null) { _progress.Initialize(dataSet.FrameLength, "Create Object"); IList <MotionObjectInfo> newInfoList = create.GetNewObjectInfoList(infoList, parameters); MotionFrame firstFrame = dataSet.GetFrameByIndex(0); if (firstFrame != null) { IList <MotionObject> newObjects = create.CreateObjects(infoList, parameters, new ReadOnlyMotionFrame(firstFrame), false) ?? new MotionObject[0]; if (newObjects.Count != newInfoList.Count) { throw new InvalidOperationException(global::MotionDataHandler.Properties.Settings.Default.Msg_CreateObjectLengthMismatch); } } foreach (MotionObjectInfo newInfo in newInfoList) { dataSet.AddObject(newInfo); } foreach (MotionFrame frame in dataSet.EnumerateFrame()) { IList <MotionObject> newObjects = create.CreateObjects(infoList, parameters, new ReadOnlyMotionFrame(frame), false) ?? new MotionObject[0]; int count = Math.Min(newObjects.Count, newInfoList.Count); for (int i = 0; i < count; i++) { frame[newInfoList[i]] = newObjects[i]; } _progress.CurrentValue++; } dataSet.DoObjectInfoSetChanged(); dataSet.DoFrameListChanged(); return(new ListVariable(newInfoList.Select(info => new StringVariable(info.Name)))); } return(null); }
public ComponentIconStringCollection(ILimnorDesigner designer, ListVariable pointer, MethodClass method) : base(designer, pointer, method) { }
public void SetValue(ListVariable value) { Value = value.Value; }
public object ObjRef() { var tag = (SerializationCode)Byte(); if (Config.SerTrace) { Console.WriteLine("Reading {0} from {1}...", tag, rpointer - 1); } int i, j; switch (tag) { case SerializationCode.Null: return(null); case SerializationCode.ForeignRef: i = Int(); j = Int(); return(unit_map[i].bynum[j]); case SerializationCode.SelfRef: i = Int(); return(unit.bynum[i]); case SerializationCode.NewUnitRef: return(LoadNewUnit(false)); case SerializationCode.FakeUnitRef: return(LoadNewUnit(true)); case SerializationCode.RuntimeUnit: return(RuntimeUnit.Thaw(this)); case SerializationCode.SubInfo: return(SubInfo.Thaw(this)); case SerializationCode.STable: return(STable.Thaw(this)); case SerializationCode.StashEnt: return(StashEnt.Thaw(this)); case SerializationCode.Rat: return(Rat.Thaw(this)); case SerializationCode.FatRat: return(FatRat.Thaw(this)); case SerializationCode.Complex: return(Complex.Thaw(this)); case SerializationCode.BigInteger: return(BigInteger.Thaw(this)); case SerializationCode.VarDeque: return(VarDeque.Thaw(this)); case SerializationCode.VarHash: return(VarHash.Thaw(this)); case SerializationCode.DispatchEnt: return(DispatchEnt.Thaw(this)); //case SerializationCode.RxFrame: // return RxFrame.Thaw(this); case SerializationCode.P6how: return(P6how.Thaw(this)); case SerializationCode.CC: return(CC.Thaw(this)); case SerializationCode.AltInfo: return(AltInfo.Thaw(this)); case SerializationCode.Signature: return(Signature.Thaw(this)); case SerializationCode.Parameter: return(Parameter.Thaw(this)); case SerializationCode.ReflectObj: return(ReflectObj.Thaw(this)); case SerializationCode.P6opaque: return(P6opaque.Thaw(this)); case SerializationCode.Frame: return(Frame.Thaw(this)); //Cursor, case SerializationCode.String: return(Register(String())); case SerializationCode.ArrP6any: return(RefsARegister <P6any>()); case SerializationCode.ArrVariable: return(RefsARegister <Variable>()); case SerializationCode.ArrString: return(RefsARegister <string>()); case SerializationCode.ArrCC: return(RefsARegister <CC>()); case SerializationCode.Boolean: return(Register(Byte() != 0)); case SerializationCode.Int: return(Register(Int())); case SerializationCode.Double: return(Register(Double())); case SerializationCode.Type: return(Register(Type.GetType(String(), true))); case SerializationCode.ListVariable: return(ListVariable.Thaw(this)); case SerializationCode.RWVariable: case SerializationCode.RWVariable_1: return(RWVariable.Thaw(this, (int)tag - (int)SerializationCode.RWVariable)); case SerializationCode.SubstrLValue: return(SubstrLValue.Thaw(this)); case SerializationCode.TiedVariable: return(TiedVariable.Thaw(this)); case SerializationCode.Blackhole: return(Builtins.Blackhole.Thaw(this)); case SerializationCode.SubViviHook: return(SubViviHook.Thaw(this)); case SerializationCode.ArrayViviHook: return(ArrayViviHook.Thaw(this)); case SerializationCode.NewArrayViviHook: return(NewArrayViviHook.Thaw(this)); case SerializationCode.HashViviHook: return(HashViviHook.Thaw(this)); case SerializationCode.NewHashViviHook: return(NewHashViviHook.Thaw(this)); case SerializationCode.LADNone: return(Register(new LADNone())); case SerializationCode.LADNull: return(Register(new LADNull())); case SerializationCode.LADDot: return(Register(new LADDot())); case SerializationCode.LADDispatcher: return(Register(new LADDispatcher())); case SerializationCode.LADImp: return(Register(new LADImp())); case SerializationCode.LADStr: return(LADStr.Thaw(this)); case SerializationCode.LADStrNoCase: return(LADStrNoCase.Thaw(this)); case SerializationCode.LADMethod: return(LADMethod.Thaw(this)); case SerializationCode.LADParam: return(LADParam.Thaw(this)); case SerializationCode.LADQuant: return(LADQuant.Thaw(this)); case SerializationCode.LADSequence: return(LADSequence.Thaw(this)); case SerializationCode.LADAny: return(LADAny.Thaw(this)); case SerializationCode.LADCC: return(LADCC.Thaw(this)); default: throw new ThawException("unexpected object tag " + tag); } }
/// <summary> /// Información de depuración /// </summary> protected override string GetDebugInfo(int indent) { return(Environment.NewLine + base.GetIndent(indent) + " Variable: " + IndexVariable.GetDebugInfo() + " List: " + ListVariable.GetDebugInfo()); }