示例#1
0
 protected override ValueProxy Promote(ValueProxy val)
 {
     return new IntegerProxy((Integer)Convert.ToDecimal(val));
 }
示例#2
0
 protected override ValueProxy Mul(ValueProxy val)
 {
     return new Int(_value * ((SByteProxy)val)._value);
 }
示例#3
0
 protected override bool Eq(ValueProxy val)
 {
     return _value == ((IntegerProxy)val)._value;
 }
示例#4
0
 protected override bool Gt(ValueProxy val)
 {
     return _value > ((SByteProxy)val)._value;
 }
示例#5
0
 protected override ValueProxy Add(ValueProxy val)
 {
     return new Int(_value + ((SByteProxy)val)._value);
 }
示例#6
0
 protected override Integer IDiv(ValueProxy val)
 {
     throw new OperatorMismatchException(Funcs.IDiv, this, val);
 }
示例#7
0
 protected override ValueProxy Promote(ValueProxy val)
 {
     return new Short(Convert.ToInt16(val));
 }
示例#8
0
 protected override bool Gt(ValueProxy val)
 {
     return(((IComparable)_value).CompareTo(val.Value) > 0);
 }
示例#9
0
 protected override ValueProxy Mod(ValueProxy value)
 {
     throw new XPath2Exception("", Resources.BinaryOperatorNotDefined, "op:mod",
                               new SequenceType(_value.GetType(), XmlTypeCardinality.One),
                               new SequenceType(value.Value.GetType(), XmlTypeCardinality.One));
 }
示例#10
0
 protected override ValueProxy Promote(ValueProxy val)
 {
     throw new NotImplementedException();
 }
示例#11
0
 protected override bool Eq(ValueProxy val)
 {
     return(_value.Equals(val.Value));
 }
示例#12
0
 protected override ValueProxy Div(ValueProxy val)
 {
     return new Float(_value / ((Float)val)._value);
 }
示例#13
0
 protected override ValueProxy Mul(ValueProxy val)
 {
     return new Float(_value * ((Float)val)._value);
 }
示例#14
0
 protected override Integer IDiv(ValueProxy value)
 {
     throw new XPath2Exception("", Properties.Resources.BinaryOperatorNotDefined, "op:idiv",
                               new SequenceType(_value.GetType(), XmlTypeCardinality.One),
                               new SequenceType(value.Value.GetType(), XmlTypeCardinality.One));
 }
示例#15
0
 protected override ValueProxy Div(ValueProxy val)
 {
     return new DecimalProxy(Convert.ToDecimal(_value) / Convert.ToDecimal(val));
 }
示例#16
0
        private IEnumerable <XPathItem> CreateEnumerator(object[] dataPool, AbstractNode expr,
                                                         XPath2NodeIterator baseIter)
        {
            XPath2NodeIterator iter    = baseIter.Clone();
            ValueNode          numexpr = expr as ValueNode;

            if (numexpr != null && numexpr.Content is Integer)
            {
                Integer pos = (Integer)numexpr.Content;
                foreach (XPathItem item in iter)
                {
                    if (pos == 1)
                    {
                        yield return(item);

                        break;
                    }
                    else
                    {
                        pos--;
                    }
                }
            }
            else
            {
                ContextProvider provider = new ContextProvider(iter);
                object          res      = Undefined.Value;
                while (iter.MoveNext())
                {
                    if (m_contextSensitive || res == Undefined.Value)
                    {
                        res = expr.Execute(provider, dataPool);
                    }
                    if (res == Undefined.Value)
                    {
                        if (!m_contextSensitive)
                        {
                            break;
                        }
                        continue;
                    }
                    XPath2NodeIterator iter2 = res as XPath2NodeIterator;
                    XPathItem          item;
                    if (iter2 != null)
                    {
                        iter2 = iter2.Clone();
                        if (!iter2.MoveNext())
                        {
                            continue;
                        }
                        item = iter2.Current.Clone();
                        if (!item.IsNode && iter2.MoveNext())
                        {
                            throw new XPath2Exception("FORG0006", Resources.FORG0006, "fn:boolean()",
                                                      new SequenceType(XmlTypeCode.AnyAtomicType, XmlTypeCardinality.OneOrMore));
                        }
                    }
                    else
                    {
                        item = res as XPathItem;
                        if (item == null)
                        {
                            item = new XPath2Item(res);
                        }
                    }
                    if (item.IsNode)
                    {
                        yield return(iter.Current);
                    }
                    else
                    {
                        if (ValueProxy.IsNumeric(item.ValueType))
                        {
                            if (CoreFuncs.OperatorEq(iter.CurrentPosition + 1, item.GetTypedValue()) == CoreFuncs.True)
                            {
                                yield return(iter.Current);

                                if (!m_contextSensitive)
                                {
                                    break;
                                }
                            }
                        }
                        else if (CoreFuncs.GetBooleanValue(item))
                        {
                            yield return(iter.Current);
                        }
                    }
                }
            }
        }
示例#17
0
 protected override bool Gt(ValueProxy val)
 {
     return String.CompareOrdinal(_value, ((StringProxy)val)._value) > 0;
 }
示例#18
0
 protected override bool Eq(ValueProxy val)
 {
     return _value == ((DecimalProxy)val)._value;
 }
示例#19
0
 protected override ValueProxy Sub(ValueProxy val)
 {
     throw new XPath2Exception("", Properties.Resources.BinaryOperatorNotDefined, "op:sub",
                               new SequenceType(Value.GetType(), XmlTypeCardinality.One),
                               new SequenceType(val.Value.GetType(), XmlTypeCardinality.One));
 }
示例#20
0
 protected override bool Gt(ValueProxy val)
 {
     return _value > ((DecimalProxy)val)._value;
 }
示例#21
0
 protected override bool Eq(ValueProxy val)
 {
     return _value == ((SByteProxy)val)._value;
 }
示例#22
0
 protected override ValueProxy Promote(ValueProxy val)
 {
     return new DecimalProxy(Convert.ToDecimal(val));
 }
示例#23
0
 protected override ValueProxy Promote(ValueProxy val)
 {
     return new SByteProxy(Convert.ToSByte(val));
 }
示例#24
0
 protected override ValueProxy Mul(ValueProxy val)
 {
     return new DecimalProxy(_value * ((DecimalProxy)val)._value);
 }
示例#25
0
 protected override ValueProxy Sub(ValueProxy val)
 {
     return new Int(_value - ((SByteProxy)val)._value);
 }
示例#26
0
 protected override Integer IDiv(ValueProxy val)
 {
     return (Integer)Math.Truncate(_value / Convert.ToDecimal(val));
 }
示例#27
0
 protected override Integer IDiv(ValueProxy val)
 {
     return (Integer)Convert.ToDecimal(_value / Convert.ToSByte(val));
 }
示例#28
0
 protected override bool Gt(ValueProxy val)
 {
     throw new OperatorMismatchException(Funcs.Gt, this, val);
 }
示例#29
0
 protected override bool Gt(ValueProxy val)
 {
     return _value > ((IntegerProxy)val)._value;
 }
示例#30
0
 protected override bool TryGt(ValueProxy val, out bool res)
 {
     res = false;
     return false;
 }
示例#31
0
 protected override ValueProxy Mul(ValueProxy val)
 {
     return new IntegerProxy(_value * ((IntegerProxy)val)._value);
 }
示例#32
0
 protected override ValueProxy Promote(ValueProxy val)
 {
     return new Bool(Convert.ToBoolean(val));
 }
示例#33
0
 protected override Integer IDiv(ValueProxy val)
 {
     return _value / Integer.ToInteger(val);
 }
示例#34
0
 protected override ValueProxy Promote(ValueProxy val)
 {
     return new Int(Convert.ToInt32(val));
 }
示例#35
0
 protected override ValueProxy Promote(ValueProxy val)
 {
     return new StringProxy(Convert.ToString(val));
 }
示例#36
0
 protected override ValueProxy Mod(ValueProxy val)
 {
     return new Int(_value % ((Short)val)._value);
 }
示例#37
0
 protected override ValueProxy Mod(ValueProxy val)
 {
     throw new OperatorMismatchException(Funcs.Mod, this, val);
 }
示例#38
0
 public ShadowProxy(ValueProxy proxy)
 {
     _value     = proxy.Value;
     _valueCode = proxy.GetValueCode();
     _isNumeric = proxy.IsNumeric();
 }