Exemplo n.º 1
0
        public override bool CanJoin(RuntimeData runtime, INumber val)
        {
            if (val is Number || val is Fraction)
            {
                return(true);
            }

            return(val.CanJoin(runtime, null));
        }
Exemplo n.º 2
0
        public void AddItem(RuntimeData runtime, INumber val)
        {
            var v = val.Eval(runtime);

            if (v is Number && (v as Number).Value == 1)
            {
                return;
            }

            if (val is AdditionFormula && (val as AdditionFormula).Count == 1)
            {
                this.AddItem(runtime, (val as AdditionFormula).Items[0]);
                return;
            }
            if (val is MultipleFormula)
            {
                foreach (var item in (val as MultipleFormula).items)
                {
                    this.AddItem(runtime, item);
                }
                return;
            }

            for (int i = 0; i < this.items.Count; i++)
            {
                if (runtime.Setting.DoOptimize && (
                        this.items[i].CanJoin(runtime, val) ||
                        val.CanJoin(runtime, this.items[i])))
                {
                    this.items[i] =
                        this.items[i].Multiple(runtime, val);
                    return;
                }
            }

            this.items.Add(v);
        }