Beispiel #1
0
 protected ExtensionQuery(ExtensionQuery other) : base(other)
 {
     this.prefix = other.prefix;
     this.name = other.name;
     this.xsltContext = other.xsltContext;
     _queryIterator = (ResetableIterator)Clone(other._queryIterator);
 }
 /// <exception cref="System.IO.IOException"/>
 internal WrappedRecordReader(int id, RecordReader <K, U> rr, Type cmpcl, Configuration
                              conf)
 {
     // index at which values will be inserted in collector
     // key at the top of this RR
     // value assoc with khead
     this.id   = id;
     this.rr   = rr;
     this.conf = (conf == null) ? new Configuration() : conf;
     khead     = rr.CreateKey();
     vhead     = rr.CreateValue();
     try
     {
         cmp = (null == cmpcl) ? WritableComparator.Get(khead.GetType(), this.conf) : System.Activator.CreateInstance
                   (cmpcl);
     }
     catch (InstantiationException e)
     {
         throw (IOException)Sharpen.Extensions.InitCause(new IOException(), e);
     }
     catch (MemberAccessException e)
     {
         throw (IOException)Sharpen.Extensions.InitCause(new IOException(), e);
     }
     vjoin = new StreamBackedIterator <U>();
     Next();
 }
 string Dump(ResetableIterator it) {
     it = (ResetableIterator) it.Clone();
     System.Text.StringBuilder sb = new System.Text.StringBuilder();
     sb.Append("(");
     do {
         XPathNavigator nav = it.Current.Clone();
         nav.MoveToAttribute("id1", "");
         sb.Append(nav.Value);
         sb.Append(", ");
     } while (it.MoveNext());
     sb.Length = sb.Length - 2;
     sb.Append(")");
     return sb.ToString();
 }
        protected object ProcessResult(object value) {
            if (value is string        ) return value;
            if (value is double        ) return value;
            if (value is bool          ) return value;
            if (value is XPathNavigator) return value;
            if (value is Int32         ) return (double)(Int32)value;

            if (value == null) {
                queryIterator = XPathEmptyIterator.Instance;
                return this; // We map null to NodeSet to let $null/foo work well.
            }

            ResetableIterator resetable = value as ResetableIterator;
            if (resetable != null) {
                // We need Clone() value because variable may be used several times 
                // and they shouldn't 
                queryIterator = (ResetableIterator)resetable.Clone(); 
                return this;
            }
            XPathNodeIterator nodeIterator = value as XPathNodeIterator;
            if (nodeIterator != null) {
                queryIterator = new XPathArrayIterator(nodeIterator);
                return this;
            }
            IXPathNavigable navigable = value as IXPathNavigable;
            if(navigable != null) {
                return navigable.CreateNavigator();
            }

            if (value is Int16 ) return (double)(Int16)value;
            if (value is Int64 ) return (double)(Int64)value;
            if (value is UInt32) return (double)(UInt32)value;
            if (value is UInt16) return (double)(UInt16)value;
            if (value is UInt64) return (double)(UInt64)value;
            if (value is Single) return (double)(Single)value;
            if (value is Decimal) return (double)(Decimal)value;
            return value.ToString();
        }
 protected ResetableIterator(ResetableIterator other) {
     base.count = other.count;
 }
Beispiel #6
0
 public XmlIteratorQuery(ResetableIterator it)
 {
     this.it = it;
 }
 protected object ProcessResult(object value)
 {
     if (value is string)
     {
         return value;
     }
     if (value is double)
     {
         return value;
     }
     if (value is bool)
     {
         return value;
     }
     if (value is XPathNavigator)
     {
         return value;
     }
     if (value is int)
     {
         return (double) ((int) value);
     }
     if (value == null)
     {
         this.queryIterator = XPathEmptyIterator.Instance;
         return this;
     }
     ResetableIterator iterator = value as ResetableIterator;
     if (iterator != null)
     {
         this.queryIterator = (ResetableIterator) iterator.Clone();
         return this;
     }
     XPathNodeIterator nodeIterator = value as XPathNodeIterator;
     if (nodeIterator != null)
     {
         this.queryIterator = new XPathArrayIterator(nodeIterator);
         return this;
     }
     IXPathNavigable navigable = value as IXPathNavigable;
     if (navigable != null)
     {
         return navigable.CreateNavigator();
     }
     if (value is short)
     {
         return (double) ((short) value);
     }
     if (value is long)
     {
         return (double) ((long) value);
     }
     if (value is uint)
     {
         return (double) ((uint) value);
     }
     if (value is ushort)
     {
         return (double) ((ushort) value);
     }
     if (value is ulong)
     {
         return (double) ((ulong) value);
     }
     if (value is float)
     {
         return (double) ((float) value);
     }
     if (value is decimal)
     {
         return (double) ((decimal) value);
     }
     return value.ToString();
 }
Beispiel #8
0
 /// <summary>Register a given iterator at position id.</summary>
 /// <exception cref="System.IO.IOException"/>
 public virtual void Add(int id, ResetableIterator <X> i)
 {
     this.iters[id] = i;
 }
Beispiel #9
0
 protected XmlIteratorQuery(XmlIteratorQuery other) : base(other) {
     this.it = (ResetableIterator)other.it.Clone();
 }
Beispiel #10
0
 public XmlIteratorQuery(XPathNodeIterator it) {
     this.it = it as ResetableIterator;
     if (this.it == null) {
         this.it = new XPathArrayIterator(it);
     }
 }