org.python.core.PyCallIter Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jython-standalone Show documentation
Show all versions of jython-standalone Show documentation
Jython is an implementation of the high-level, dynamic, object-oriented
language Python written in 100% Pure Java, and seamlessly integrated with
the Java platform. It thus allows you to run Python on any Java platform.
package org.python.core;
public class PyCallIter extends PyIterator {
private PyObject callable;
private PyObject sentinel;
public PyCallIter(PyObject callable, PyObject sentinel) {
if (!callable.isCallable()) {
throw Py.TypeError("iter(v, w): v must be callable");
}
this.callable = callable;
this.sentinel = sentinel;
}
public PyObject __iternext__() {
if (callable == null) {
return null;
}
PyObject result;
try {
result = callable.__call__();
} catch (PyException exc) {
if (exc.match(Py.StopIteration)) {
callable = null;
stopException = exc;
return null;
}
throw exc;
}
if (result._eq(sentinel).__nonzero__()) {
callable = null;
return null;
}
return result;
}
}