Example #1
0
        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());
        }
Example #2
0
        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);
        }
Example #3
0
        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());
        }