All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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;
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy