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

org.python.core.PyClassMethod Maven / Gradle / Ivy

package org.python.core;

public class PyClassMethod extends PyObject implements PyType.Newstyle {
    // xxx __init__

    //~ BEGIN GENERATED REGION -- DO NOT EDIT SEE gexpose.py
    /* type info */

    public static final String exposed_name="classmethod";

    public static void typeSetup(PyObject dict,PyType.Newstyle marker) {
        class exposed___get__ extends PyBuiltinMethodNarrow {

            exposed___get__(PyObject self,PyBuiltinFunction.Info info) {
                super(self,info);
            }

            public PyBuiltinFunction bind(PyObject self) {
                return new exposed___get__(self,info);
            }

            public PyObject __call__(PyObject arg0,PyObject arg1) {
                return((PyClassMethod)self).classmethod___get__(arg0,arg1);
            }

            public PyObject __call__(PyObject arg0) {
                return((PyClassMethod)self).classmethod___get__(arg0);
            }

        }
        dict.__setitem__("__get__",new PyMethodDescr("__get__",PyClassMethod.class,1,2,new exposed___get__(null,null)));
        dict.__setitem__("__new__",new PyNewWrapper(PyClassMethod.class,"__new__",1,1) {

                                                                                           public PyObject new_impl(boolean init,PyType subtype,PyObject[]args,String[]keywords) {
                                                                                               return classmethod_new(this,init,subtype,args,keywords);
                                                                                           }

                                                                                       });
    }
    //~ END GENERATED REGION -- DO NOT EDIT SEE gexpose.py
    
    protected PyObject callable;
    
    public PyClassMethod(PyObject callable) {
        if (!callable.isCallable()) {                   
            throw Py.TypeError("'" + callable.getType().fastGetName() + "' object is not callable");
        }
        this.callable = callable;
    }

    public PyObject __get__(PyObject obj) {
        return classmethod___get__(obj, null);
    }

    public PyObject __get__(PyObject obj, PyObject type) {
        return classmethod___get__(obj, type);
    }

    final PyObject classmethod___get__(PyObject obj) {
        return classmethod___get__(obj, null);
    }

    final PyObject classmethod___get__(PyObject obj, PyObject type) {
        if(type == null) {
            type = obj.getType();
        }
        return new PyMethod(type, callable, type.getType());
    }

    final static PyObject classmethod_new(PyNewWrapper new_, boolean init, PyType subtype,
            PyObject[] args, String[] keywords) {
        if (keywords.length != 0) {
            throw Py.TypeError("classmethod does not accept keyword arguments");
        }
        if (args.length != 1) {
            throw Py.TypeError("classmethod expected 1 argument, got " + args.length);
        }
        return new PyClassMethod(args[0]);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy