private GSCore execAdd(GSCoreCollection args) { GSCoreDataType dataType = args.getArithmeticDataType(); switch (dataType) { case GSCoreDataType.String: case GSCoreDataType.Void: { string[] arr = getStringArray(args); StringBuilder sb = new StringBuilder(); foreach (string s in arr) { if (sb.Length > 0) { sb.Append(' '); } sb.Append(s); } return(new GSString() { Value = sb.ToString() }); } case GSCoreDataType.Double: { double[] arr = getDoubleArray(args); double sum = 0; for (int i = 0; i < arr.Length; i++) { sum += arr[i]; } return(new GSNumber() { DoubleValue = sum }); } case GSCoreDataType.Integer: case GSCoreDataType.Boolean: { long[] arr = getIntegerArray(args); long sum = 0; for (int i = 0; i < arr.Length; i++) { sum += arr[i]; } return(new GSNumber() { IntegerValue = sum }); } default: break; } return(new GSString()); }
private GSCore execLt(GSCoreCollection arg1) { GSBoolean bv = new GSBoolean(); GSCoreDataType dt = arg1.getArithmeticDataType(); if (dt == GSCoreDataType.Double) { bv.Value = (arg1[0].getDoubleValue() < arg1[1].getDoubleValue()); } else if (dt == GSCoreDataType.Integer) { bv.Value = (arg1[0].getIntegerValue() < arg1[1].getIntegerValue()); } else if (dt == GSCoreDataType.String) { bv.Value = (arg1[0].getStringValue().CompareTo(arg1[1].getStringValue()) < 0); } return(bv); }
private GSCore execSub(GSCoreCollection args) { GSCoreDataType dataType = args.getArithmeticDataType(); switch (dataType) { case GSCoreDataType.Double: { double[] arr = getDoubleArray(args); double sum = arr[0]; for (int i = 1; i < arr.Length; i++) { sum -= arr[i]; } return(new GSNumber() { DoubleValue = sum }); } case GSCoreDataType.Integer: case GSCoreDataType.Boolean: { long[] arr = getIntegerArray(args); long sum = arr[0]; for (int i = 1; i < arr.Length; i++) { sum -= arr[i]; } return(new GSNumber() { IntegerValue = sum }); } default: break; } return(new GSString()); }