protected override ValueProxy Add(ValueProxy value) { switch (value.GetValueCode()) { case ProxyValueCode: return (new Proxy( new DayTimeDurationValue(_value.LowPartValue + ((DayTimeDurationValue)value.Value).LowPartValue))); case DateTimeValue.ProxyValueCode: return(new DateTimeValue.Proxy(DateTimeValue.Add((DateTimeValue)value.Value, _value))); case DateValue.ProxyValueCode: return(new DateValue.Proxy(DateValue.Add((DateValue)value.Value, _value))); case TimeValue.ProxyValueCode: return(new TimeValue.Proxy(TimeValue.Add((TimeValue)value.Value, _value))); default: throw new XPath2Exception("", Resources.BinaryOperatorNotDefined, "op:add", new SequenceType(_value.GetType(), XmlTypeCardinality.One), new SequenceType(value.Value.GetType(), XmlTypeCardinality.One)); } }
protected override bool Gt(ValueProxy val) { if (val.GetValueCode() != ProxyValueCode) { throw new XPath2Exception("", Resources.BinaryOperatorNotDefined, "op:add", new SequenceType(_value.GetType(), XmlTypeCardinality.One), new SequenceType(_value.Value.GetType(), XmlTypeCardinality.One)); } return(((IComparable)_value).CompareTo(((Proxy)val)._value) > 0); }
protected override bool Eq(ValueProxy val) { if (val.GetValueCode() != ProxyValueCode) { throw new XPath2Exception("", Resources.BinaryOperatorNotDefined, "op:eq", new SequenceType(_value.GetType(), XmlTypeCardinality.One), new SequenceType(val.Value.GetType(), XmlTypeCardinality.One)); } return(_value.Equals(((Proxy)val)._value)); }
protected override bool TryGt(ValueProxy val, out bool res) { res = false; if (val.GetValueCode() != DayTimeDurationValue.ProxyValueCode) { return(false); } res = ((IComparable)_value).CompareTo(val.Value) > 0; return(true); }
protected override ValueProxy Sub(ValueProxy value) { switch (value.GetValueCode()) { case DayTimeDurationValue.ProxyValueCode: return(new Proxy(new DayTimeDurationValue(_value.LowPartValue - ((DayTimeDurationValue)value.Value).LowPartValue))); default: throw new XPath2Exception("", Properties.Resources.BinaryOperatorNotDefined, "op:sub", new SequenceType(_value.GetType(), XmlTypeCardinality.One), new SequenceType(value.Value.GetType(), XmlTypeCardinality.One)); } }
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(); }
protected override ValueProxy Add(ValueProxy value) { switch (value.GetValueCode()) { case YearMonthDurationValue.ProxyValueCode: return(new Proxy(DateValue.Add(_value, (YearMonthDurationValue)value.Value))); case DayTimeDurationValue.ProxyValueCode: return(new Proxy(DateValue.Add(_value, (DayTimeDurationValue)value.Value))); default: throw new XPath2Exception("", Properties.Resources.BinaryOperatorNotDefined, "op:add", new SequenceType(_value.GetType(), XmlTypeCardinality.One), new SequenceType(value.Value.GetType(), XmlTypeCardinality.One)); } }
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 DecimalProxy(DayTimeDurationValue.Divide(_value, (DayTimeDurationValue)value.Value))); } else { throw new XPath2Exception("", Properties.Resources.BinaryOperatorNotDefined, "op:div", new SequenceType(_value.GetType(), XmlTypeCardinality.One), new SequenceType(value.Value.GetType(), XmlTypeCardinality.One)); } }
protected override ValueProxy Mul(ValueProxy val) { switch (val.GetValueCode()) { case YearMonthDurationValue.ProxyValueCode: return(new YearMonthDurationValue.Proxy( YearMonthDurationValue.Multiply((YearMonthDurationValue)val.Value, Convert.ToDouble(_value)))); case DayTimeDurationValue.ProxyValueCode: return(new DayTimeDurationValue.Proxy( DayTimeDurationValue.Multiply((DayTimeDurationValue)val.Value, Convert.ToDouble(_value)))); default: throw new XPath2Exception("", Resources.BinaryOperatorNotDefined, "op:mul", new SequenceType(Value.GetType(), XmlTypeCardinality.One), new SequenceType(val.Value.GetType(), XmlTypeCardinality.One)); } }
public ShadowProxy(ValueProxy proxy) { _value = proxy.Value; _valueCode = proxy.GetValueCode(); _isNumeric = proxy.IsNumeric(); }