示例#1
0
            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));
                }
            }
示例#2
0
 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);
 }
示例#3
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));
 }
示例#4
0
 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);
 }
示例#5
0
            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));
                }
            }
示例#6
0
 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();
 }
示例#7
0
            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));
                }
            }
示例#8
0
 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));
     }
 }
示例#9
0
        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));
            }
        }
示例#10
0
 public ShadowProxy(ValueProxy proxy)
 {
     _value     = proxy.Value;
     _valueCode = proxy.GetValueCode();
     _isNumeric = proxy.IsNumeric();
 }