示例#1
0
        public override Value Accum(ExecContext context, Value old, Row input)
        {
            var  arg = arg_().Exec(context, input);
            Type ltype, rtype; ltype = typeof(int); rtype = typeof(int);

            Debug.Assert(old != null);
            AvgPair oldpair = old as AvgPair;

            if (oldpair.sum_ is null)
            {
                pair_.sum_ = arg;
                Debug.Assert(oldpair.count_ == 0);
                if (arg != null)
                {
                    pair_.count_ = 1;
                }
            }
            else
            {
                dynamic lv = oldpair.sum_;
                if (!(arg is null))
                {
                    dynamic rv = arg;
                    pair_.sum_   = lv + rv;
                    pair_.count_ = oldpair.count_ + 1;
                }
            }

            return(pair_);
        }
示例#2
0
 public override Value Init(ExecContext context, Row input)
 {
     pair_        = new AvgPair();
     pair_.sum_   = arg_().Exec(context, input);
     pair_.count_ = pair_.sum_ is null ? 0 : 1;
     return(pair_);
 }