1
/* Copyright (C) 2004 - 2009 Versant Inc. http://www.db4o.com */
4
using System.Collections;
5
using Db4objects.Db4o.Internal.Handlers.Array;
6
using Db4objects.Db4o.Reflect;
8
namespace Db4objects.Db4o.Internal.Handlers.Array
10
/// <exclude></exclude>
11
public class MultidimensionalArrayIterator : IEnumerator
13
private readonly IReflectArray _reflectArray;
15
private readonly object[] _array;
17
private int _currentElement;
19
private IEnumerator _delegate;
21
public MultidimensionalArrayIterator(IReflectArray reflectArray, object[] array)
23
_reflectArray = reflectArray;
28
public virtual object Current
32
if (_delegate == null)
34
return _array[_currentElement];
36
return _delegate.Current;
40
public virtual bool MoveNext()
42
if (_delegate != null)
44
if (_delegate.MoveNext())
51
if (_currentElement >= _array.Length)
55
object obj = _array[_currentElement];
56
Type clazz = obj.GetType();
59
if (clazz.GetElementType().IsArray)
61
_delegate = new Db4objects.Db4o.Internal.Handlers.Array.MultidimensionalArrayIterator
62
(_reflectArray, (object[])obj);
66
_delegate = new ReflectArrayIterator(_reflectArray, obj);
73
public virtual void Reset()