public Value ArrayRemoveAt(FunctionCallArgs parameters) { int valueIndex = (int)parameters.Values[1].NumericValue; parameters.Values[0].Array.RemoveAt(valueIndex); return(null); }
public Value TimespanTotalMilliseconds(FunctionCallArgs parameters) { return(new Value() { Type = Value.DataType.Numeric, NumericValue = (decimal)parameters.Values[0].TimeSpanValue.TotalMilliseconds }); }
public Value Read(FunctionCallArgs parameters) { string line = Console.ReadLine(); return(new Value() { StringValue = line }); }
public Value ArrayLength(FunctionCallArgs parameters) { Value value = new Value() { Type = Value.DataType.Numeric, NumericValue = parameters.Values[0].Array.Count }; return(value); }
public Value ArrayNew(FunctionCallArgs parameters) { Value result = new Value() { Type = Value.DataType.Array, Array = parameters.Values }; return(result); }
public Value RandomFunction(FunctionCallArgs parameters) { Random rnd = new Random(DateTime.Now.Millisecond); string line = Console.ReadLine(); return(new Value() { NumericValue = rnd.Next() }); }
public Value GetDirectories(FunctionCallArgs parameters) { Value result = new Value() { Type = Value.DataType.Array, Array = new List <Value>() }; return(result); }
public Value MapNew(FunctionCallArgs parameters) { Value result = new Value() { Type = Value.DataType.Map, Map = new Dictionary <string, Value>() }; return(result); }
public Value StructureNew(FunctionCallArgs parameters) { Value result = new Value() { Type = Value.DataType.Structure, Structure = new Dictionary <string, Value>() }; return(result); }
InstructionResult ExecuteInstructionFunction(Instruction instruction) { InstructionResult result = new InstructionResult(); InstructionFunction instructionFunction = instruction as InstructionFunction; List <Value> values = new List <Value>(); foreach (var parameter in instructionFunction.Parameters) { Value value = CopyValue(ExecuteInstruction(parameter).Value); values.Add(value); } if (_embededFunctions.ContainsKey(instructionFunction.FunctionName)) { FunctionCallArgs functionCallArgs = new FunctionCallArgs() { Interpreter = this, Name = instructionFunction.FunctionName, Values = values }; result.Value = _embededFunctions[instructionFunction.FunctionName](functionCallArgs); } else { Function previousFunction = _currentFunction; _currentFunction = _program.Functions.FirstOrDefault(f => f.Name == instructionFunction.FunctionName); ThrowExceptionOnCondition(_currentFunction == null, instruction, 30002, new string[] { instructionFunction.FunctionName }); _stack.AddRange(values); int numberOfValueToAdd = _currentFunction.Variables.Count - _currentFunction.ParametersCount; for (int i = 0; i < numberOfValueToAdd; i++) { _stack.Add(new Value()); } result = ExecuteBloc(_currentFunction.Instructions.ToArray()); _stack.RemoveRange(_stack.Count - _currentFunction.Variables.Count, _currentFunction.Variables.Count); _currentFunction = previousFunction; } result.Value = ResolvePath(result.Value, instructionFunction.Path); result.Return = false; return(result); }
public Value Date(FunctionCallArgs parameters) { DateTime dateTime = new DateTime(); if (parameters.Values.Count == 0) { dateTime = DateTime.Now; } else if (parameters.Values.Count == 3) { int year = (int)parameters.Values[0].NumericValue; int month = (int)parameters.Values[1].NumericValue; int day = (int)parameters.Values[2].NumericValue; dateTime = new DateTime(year, month, day); } else if (parameters.Values.Count == 6) { int year = (int)parameters.Values[0].NumericValue; int month = (int)parameters.Values[1].NumericValue; int day = (int)parameters.Values[2].NumericValue; int hour = (int)parameters.Values[3].NumericValue; int minute = (int)parameters.Values[4].NumericValue; int second = (int)parameters.Values[5].NumericValue; dateTime = new DateTime(year, month, day, hour, minute, second); } else if (parameters.Values.Count == 7) { int year = (int)parameters.Values[0].NumericValue; int month = (int)parameters.Values[1].NumericValue; int day = (int)parameters.Values[2].NumericValue; int hour = (int)parameters.Values[3].NumericValue; int minute = (int)parameters.Values[4].NumericValue; int second = (int)parameters.Values[5].NumericValue; int millisecond = (int)parameters.Values[6].NumericValue; dateTime = new DateTime(year, month, day, hour, minute, second, millisecond); } return(new Value() { Type = Value.DataType.DateTime, DateTimeValue = dateTime }); }
public Value GetFiles(FunctionCallArgs parameters) { Value result = new Value() { Type = Value.DataType.Array, Array = new List <Value>() }; System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(parameters.Values[0].StringValue); foreach (var file in dir.GetFiles()) { Value value = CreateFileInfo(file); result.Array.Add(value); } return(result); }
public Value Print(FunctionCallArgs parameters) { switch (parameters.Values[0].Type) { case Value.DataType.String: Console.WriteLine(parameters.Values[0].StringValue); break; case Value.DataType.Numeric: Console.WriteLine(parameters.Values[0].NumericValue); break; case Value.DataType.Boolean: Console.WriteLine(parameters.Values[0].BoolValue); break; } return(new Value()); }
public Value ArrayPush(FunctionCallArgs parameters) { parameters.Values[0].Array.Add(parameters.Values[1]); return(null); }
public Value Sleep(FunctionCallArgs parameters) { System.Threading.Thread.Sleep(Math.Max((int)parameters.Values[0].NumericValue, 0)); return(null); }
public Value ArrayClear(FunctionCallArgs parameters) { parameters.Values[0].Array.Clear(); return(null); }