X Tutup
package org.python.core; public abstract class PyDescriptor extends PyObject implements Traverseproc { protected PyType dtype; protected String name; protected void checkCallerType(PyType type) { if (type == dtype || type.isSubType(dtype)) { return; } String msg = String.format("descriptor '%s' requires a '%s' object but received a '%s'", name, dtype.fastGetName(), type.fastGetName()); throw Py.TypeError(msg); } protected void checkGetterType(PyType type) { if (type == dtype || type.isSubType(dtype)) { return; } String msg = String.format("descriptor '%s' for '%s' objects doesn't apply to '%s' object", name, dtype.fastGetName(), type.fastGetName()); throw Py.TypeError(msg); } /* Traverseproc implementation */ @Override public int traverse(Visitproc visit, Object arg) { return dtype != null ? visit.visit(dtype, arg) : 0; } @Override public boolean refersDirectlyTo(PyObject ob) { return ob == dtype; } }
X Tutup