예제 #1
0
            public override bool TryIteratorStep(out ObjectInstance nextItem)
            {
                if (_iterator.MoveNext())
                {
                    nextItem = new ValueIteratorPosition(_engine, (string)_iterator.Current);
                    return(true);
                }

                nextItem = KeyValueIteratorPosition.Done;
                return(false);
            }
예제 #2
0
        public virtual bool TryIteratorStep(out ObjectInstance nextItem)
        {
            if (_enumerable.MoveNext())
            {
                nextItem = new ValueIteratorPosition(_engine, _enumerable.Current);
                return(true);
            }

            nextItem = ValueIteratorPosition.Done;
            return(false);
        }
예제 #3
0
            public override bool TryIteratorStep(out ObjectInstance nextItem)
            {
                if (_enumerator.MoveNext())
                {
                    var value = _enumerator.Current;
                    nextItem = new ValueIteratorPosition(_engine, FromObject(_engine, value));
                    return(true);
                }

                nextItem = KeyValueIteratorPosition.Done(_engine);
                return(false);
            }
예제 #4
0
            public override bool TryIteratorStep(out ObjectInstance nextItem)
            {
                if (_position < _set._set._list.Count)
                {
                    var value = _set._set[_position];
                    _position++;
                    nextItem = new  ValueIteratorPosition(_engine, value);
                    return(true);
                }

                nextItem = KeyValueIteratorPosition.Done;
                return(false);
            }
예제 #5
0
            public override bool TryIteratorStep(out ObjectInstance nextItem)
            {
                uint len;

                if (_typedArray is not null)
                {
                    _typedArray._viewedArrayBuffer.AssertNotDetached();
                    len = _typedArray.Length;
                }
                else
                {
                    len = _operations.GetLength();
                }

                if (!_closed && _position < len)
                {
                    JsValue value;
                    if (_typedArray is not null)
                    {
                        nextItem = _kind switch
                        {
                            ArrayIteratorType.Key => new ValueIteratorPosition(_engine, _position),
                            ArrayIteratorType.Value => new ValueIteratorPosition(_engine, _typedArray[(int)_position]),
                            _ => new KeyValueIteratorPosition(_engine, _position, _typedArray[(int)_position])
                        };
                    }
                    else
                    {
                        _operations.TryGetValue(_position, out value);
                        if (_kind == ArrayIteratorType.Key)
                        {
                            nextItem = new ValueIteratorPosition(_engine, _position);
                        }
                        else if (_kind == ArrayIteratorType.Value)
                        {
                            nextItem = new ValueIteratorPosition(_engine, value);
                        }
                        else
                        {
                            nextItem = new KeyValueIteratorPosition(_engine, _position, value);
                        }
                    }

                    _position++;
                    return(true);
                }

                _closed  = true;
                nextItem = KeyValueIteratorPosition.Done(_engine);
                return(false);
            }
예제 #6
0
            public override bool TryIteratorStep(out ObjectInstance nextItem)
            {
                var length = _operations.GetLength();

                if (!_closed && _position < length)
                {
                    nextItem = new  ValueIteratorPosition(_engine, _position++);
                    return(true);
                }

                _closed  = true;
                nextItem = KeyValueIteratorPosition.Done;
                return(false);
            }
예제 #7
0
            public override bool TryIteratorStep(out ObjectInstance nextItem)
            {
                if (!_closed && _position < _values.Count)
                {
                    var value = _values[_position];
                    _position++;
                    nextItem = new  ValueIteratorPosition(_engine, value);
                    return(true);
                }

                _closed  = true;
                nextItem = KeyValueIteratorPosition.Done;
                return(false);
            }