示例#1
0
        public static CLBinaryOperator LoadBinaryDivide(int priority = TimesPriority, bool valOnLeft = true, bool valOnRight = true)
        {
            BinaryDivide = CLOperators.BinaryOperators.GetOrNull("/") ?? new CLBinaryOperator("/", priority, valOnLeft, valOnRight);
            BinaryDivide.AddFunction(tNum, tNum, BinDivideNumbers);
            BinaryDivide.AddFunction(tNum, tLst, (left, right, vars, context) => BinDivideNumbers(left, ListToNum(right), vars, context));
            BinaryDivide.AddFunction(tLst, tNum, BinDivideList);
            BinaryDivide.AddFunction(tLst, tLst, (left, right, vars, context) => BinDivideList(left, ListToNum(right), vars, context));
            BinaryDivide.AddFunction(tStr, tNum, BinDivideStringException);
            BinaryDivide.AddFunction(tNum, tStr, BinDivideStringException);

            return(BinaryDivide);
        }
示例#2
0
        // Returns the quotient of a list's items over a number.
        public static CalcValue BinDivideList(CalcObject left, CalcObject right, CLLocalStore vars, CLContextProvider context)
        {
            CalcList   lstLeft  = left as CalcList;
            CalcNumber numRight = right as CalcNumber;

            // We will *not* do string checking here
            // It's entirely possible someone writes a string divider and this function will use it.

            CalcValue[] lstRet = new CalcValue[lstLeft.Count];

            for (int i = 0; i < lstRet.Length; i++)
            {
                lstRet[i] = BinaryDivide.Run(lstLeft[i], numRight, vars, context);
            }

            return(new CalcList(lstRet));
        }