public RecursiveIteratorIterator(Env env,
                                         Value value,
                                         @Optional int mode, //0 == LEAVES_ONLY
                                         @Optional int flags)
        {
            RecursiveIterator iter = RecursiveIteratorProxy.create(value);

            _iterStack = new ArrayList <RecursiveIterator>();
            _iterStack.add(iter);

            _mode = mode;
        }
        public override void next(Env env)
        {
            RecursiveIterator currentIter = getInnerIterator();

            currentIter.next(env);

            if (!currentIter.valid(env) && _iterStack.size() > 1)
            {
                _iterStack.remove(_iterStack.size() - 1);

                next(env);

                return;
            }

            if (currentIter.hasChildren(env))
            {
                RecursiveIterator recursiveIter = currentIter.getChildren(env);

                _iterStack.add(recursiveIter);
            }
        }
Beispiel #3
0
 public RecursiveFilterIterator(Context ctx, RecursiveIterator iterator) : this(ctx)
 {
     __construct(iterator);
 }