Esempio n. 1
0
        public static object tee(object iterable, int n)
        {
            if (n < 0)
            {
                throw PythonOps.ValueError("n cannot be negative");
            }

            object[] res = new object[n];
            if (!(iterable is TeeIterator))
            {
                IEnumerator iter     = PythonOps.GetEnumerator(iterable);
                List        dataList = new List();

                for (int i = 0; i < n; i++)
                {
                    res[i] = new TeeIterator(iter, dataList);
                }
            }
            else if (n != 0)
            {
                // if you pass in a tee you get back the original tee
                // and other iterators that share the same data.
                TeeIterator ti = iterable as TeeIterator;
                res[0] = ti;
                for (int i = 1; i < n; i++)
                {
                    res[1] = new TeeIterator(ti._iter, ti._data);
                }
            }

            return(PythonTuple.MakeTuple(res));
        }
Esempio n. 2
0
        public static object Tee(object iterable, int n)
        {
            if (n < 0)
            {
                throw Ops.SystemError("bad argument to internal function");
            }

            object[] res = new object[n];
            if (!(iterable is TeeIterator))
            {
                IEnumerator iter     = Ops.GetEnumerator(iterable);
                List        dataList = new List();

                for (int i = 0; i < n; i++)
                {
                    res[i] = new TeeIterator(iter, dataList);
                }
            }
            else if (n != 0)
            {
                // if you pass in a tee you get back the original tee
                // and other iterators that share the same data.
                TeeIterator ti = iterable as TeeIterator;
                res[0] = ti;
                for (int i = 1; i < n; i++)
                {
                    res[1] = new TeeIterator(ti.iter, ti.data);
                }
            }

            return(new Tuple(false, res));
        }
Esempio n. 3
0
        public static object Tee(object iterable, int n)
        {
            if (n < 0) throw Ops.SystemError("bad argument to internal function");

            object[] res = new object[n];
            if (!(iterable is TeeIterator)) {
                IEnumerator iter = Ops.GetEnumerator(iterable);
                List dataList = new List();

                for (int i = 0; i < n; i++) {
                    res[i] = new TeeIterator(iter, dataList);
                }

            } else if (n != 0) {
                // if you pass in a tee you get back the original tee
                // and other iterators that share the same data.
                TeeIterator ti = iterable as TeeIterator;
                res[0] = ti;
                for (int i = 1; i < n; i++) {
                    res[1] = new TeeIterator(ti.iter, ti.data);
                }
            }

            return new Tuple(false, res);
        }
Esempio n. 4
0
            public TeeIterator(object iterable)
            {
                TeeIterator other = iterable as TeeIterator;

                if (other != null)
                {
                    this._iter = other._iter;
                    this._data = other._data;
                }
                else
                {
                    this._iter = PythonOps.GetEnumerator(iterable);
                    _data      = new List();
                }
            }
Esempio n. 5
0
        public static object tee(object iterable, int n) {
            if (n < 0) throw PythonOps.ValueError("n cannot be negative");

            object[] res = new object[n];
            if (!(iterable is TeeIterator)) {
                IEnumerator iter = PythonOps.GetEnumerator(iterable);
                List dataList = new List();

                for (int i = 0; i < n; i++) {
                    res[i] = new TeeIterator(iter, dataList);
                }

            } else if (n != 0) {
                // if you pass in a tee you get back the original tee
                // and other iterators that share the same data.
                TeeIterator ti = iterable as TeeIterator;
                res[0] = ti;
                for (int i = 1; i < n; i++) {
                    res[1] = new TeeIterator(ti._iter, ti._data);
                }
            }

            return PythonTuple.MakeTuple(res);
        }