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_); }
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_); }