org.python.core.PySlot Maven / Gradle / Ivy
package org.python.core;
public class PySlot extends PyDescriptor {
public PySlot(PyType dtype, String name, int index) {
this.name = name;
this.dtype = dtype;
this.index = index;
}
public boolean implementsDescrSet() {
return true;
}
public boolean isDataDescr() {
return true;
}
public PyObject __get__(PyObject obj, PyObject type) {
if(obj != null) {
checkType((PyType)type);
return ((Slotted)obj).getSlot(index);
}
return this;
}
public void __set__(PyObject obj, PyObject value) {
checkType(obj.getType());
((Slotted)obj).setSlot(index, value);
}
public void __delete__(PyObject obj) {
checkType(obj.getType());
((Slotted)obj).setSlot(index, null);
}
public String toString() {
return "";
}
private void checkType(PyType type) {
if(type != dtype && !type.isSubType(dtype))
throw get_wrongtype(type);
}
private int index;
}