aboutsummaryrefslogtreecommitdiff
path: root/project/QBarInterpreter/src/com/modulus/qbar/lang/QBSyntheticIterator.java
blob: 0fdfed5ec7c36015341f648ccd56f1069d69879d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package com.modulus.qbar.lang;

import com.modulus.qbar.core.QBFunction;
import com.modulus.qbar.core.QBObject;
import com.modulus.qbar.core.parser.Core;

public class QBSyntheticIterator extends QBIterator<QBObject>{
	private static final long serialVersionUID = -1890206471197459684L;
	private QBFunction next;
	private QBFunction hasNext;
	private QBObject wrapped;
	
	public QBSyntheticIterator(QBObject iterable, QBObject wrapped) {
		super(iterable);
		
		this.wrapped = wrapped;
		this.next = (QBFunction) wrapped.get("next");
		this.hasNext = (QBFunction) wrapped.get("hasNext");
	}

	@Override
	public boolean hasNext() {
		return Core.QBObjectIsTrue( hasNext.execute( new QBObject[]{wrapped} ) );
	}

	@Override
	protected QBObject nextObject() {
		return next.execute( new QBObject[]{wrapped} );
	}

}