public ShadowProxy(ValueProxy proxy) { _value = proxy.Value; _valueCode = proxy.GetValueCode(); _isNumeric = proxy.IsNumeric(); }
protected override ValueProxy Mul(ValueProxy value) { if (value.IsNumeric()) return new Proxy(DayTimeDurationValue.Multiply(_value, Convert.ToDouble(value))); throw new OperatorMismatchException(Funcs.Mul, _value, value.Value); }
protected override ValueProxy Div(ValueProxy value) { if (value.IsNumeric()) return new Proxy(DayTimeDurationValue.Divide(_value, Convert.ToDouble(value))); else if (value.GetValueCode() == DayTimeDurationValue.ProxyValueCode) return new DataEngine.CoreServices.Proxy.DecimalProxy( DayTimeDurationValue.Divide(_value, (DayTimeDurationValue)value.Value)); else throw new OperatorMismatchException(Funcs.Div, _value, value.Value); }
protected override ValueProxy Promote(ValueProxy val) { if (val.IsNumeric()) return new ShadowProxy(val); if (val.GetValueCode() == DurationValue.ProxyValueCode) { DurationValue duration = (DurationValue)val.Value; return new Proxy(new DayTimeDurationValue(duration.LowPartValue)); } throw new InvalidCastException(); }