package org.python.modules.random;

import java.util.Random;
import org.python.core.PyObject;
import org.python.core.PyType;

public class PyRandom extends PyObject {
    //~ BEGIN GENERATED REGION -- DO NOT EDIT SEE gexpose.py
    /* type info */

    public static final String exposed_name="random";

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

            private PyRandom self;

            public PyObject getSelf() {
                return self;
            }

            exposed_random(PyRandom self,PyBuiltinFunction.Info info) {
                super(info);
                this.self=self;
            }

            public PyBuiltinFunction makeBound(PyObject self) {
                return new exposed_random((PyRandom)self,info);
            }

            public PyObject __call__() {
                return self.random_random();
            }

            public PyObject inst_call(PyObject gself) {
                PyRandom self=(PyRandom)gself;
                return self.random_random();
            }

        }
        dict.__setitem__("random",new PyMethodDescr("random",PyRandom.class,0,0,new exposed_random(null,null)));
        class exposed_seed extends PyBuiltinFunctionNarrow {

            private PyRandom self;

            public PyObject getSelf() {
                return self;
            }

            exposed_seed(PyRandom self,PyBuiltinFunction.Info info) {
                super(info);
                this.self=self;
            }

            public PyBuiltinFunction makeBound(PyObject self) {
                return new exposed_seed((PyRandom)self,info);
            }

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

            public PyObject inst_call(PyObject gself,PyObject arg0) {
                PyRandom self=(PyRandom)gself;
                return self.random_seed(arg0);
            }

            public PyObject __call__() {
                return self.random_seed();
            }

            public PyObject inst_call(PyObject gself) {
                PyRandom self=(PyRandom)gself;
                return self.random_seed();
            }

        }
        dict.__setitem__("seed",new PyMethodDescr("seed",PyRandom.class,0,1,new exposed_seed(null,null)));
        class exposed_getstate extends PyBuiltinFunctionNarrow {

            private PyRandom self;

            public PyObject getSelf() {
                return self;
            }

            exposed_getstate(PyRandom self,PyBuiltinFunction.Info info) {
                super(info);
                this.self=self;
            }

            public PyBuiltinFunction makeBound(PyObject self) {
                return new exposed_getstate((PyRandom)self,info);
            }

            public PyObject __call__() {
                return self.random_getstate();
            }

            public PyObject inst_call(PyObject gself) {
                PyRandom self=(PyRandom)gself;
                return self.random_getstate();
            }

        }
        dict.__setitem__("getstate",new PyMethodDescr("getstate",PyRandom.class,0,0,new exposed_getstate(null,null)));
        class exposed_setstate extends PyBuiltinFunctionNarrow {

            private PyRandom self;

            public PyObject getSelf() {
                return self;
            }

            exposed_setstate(PyRandom self,PyBuiltinFunction.Info info) {
                super(info);
                this.self=self;
            }

            public PyBuiltinFunction makeBound(PyObject self) {
                return new exposed_setstate((PyRandom)self,info);
            }

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

            public PyObject inst_call(PyObject gself,PyObject arg0) {
                PyRandom self=(PyRandom)gself;
                return self.random_setstate(arg0);
            }

        }
        dict.__setitem__("setstate",new PyMethodDescr("setstate",PyRandom.class,1,1,new exposed_setstate(null,null)));
        class exposed_jumpahead extends PyBuiltinFunctionNarrow {

            private PyRandom self;

            public PyObject getSelf() {
                return self;
            }

            exposed_jumpahead(PyRandom self,PyBuiltinFunction.Info info) {
                super(info);
                this.self=self;
            }

            public PyBuiltinFunction makeBound(PyObject self) {
                return new exposed_jumpahead((PyRandom)self,info);
            }

            public PyObject __call__() {
                return self.random_jumpahead();
            }

            public PyObject inst_call(PyObject gself) {
                PyRandom self=(PyRandom)gself;
                return self.random_jumpahead();
            }

        }
        dict.__setitem__("jumpahead",new PyMethodDescr("jumpahead",PyRandom.class,0,0,new exposed_jumpahead(null,null)));
        class exposed_randrange extends PyBuiltinFunctionNarrow {

            private PyRandom self;

            public PyObject getSelf() {
                return self;
            }

            exposed_randrange(PyRandom self,PyBuiltinFunction.Info info) {
                super(info);
                this.self=self;
            }

            public PyBuiltinFunction makeBound(PyObject self) {
                return new exposed_randrange((PyRandom)self,info);
            }

            public PyObject __call__() {
                return self.random_randrange();
            }

            public PyObject inst_call(PyObject gself) {
                PyRandom self=(PyRandom)gself;
                return self.random_randrange();
            }

        }
        dict.__setitem__("randrange",new PyMethodDescr("randrange",PyRandom.class,0,0,new exposed_randrange(null,null)));
        class exposed___init__ extends PyBuiltinFunctionWide {

            private PyRandom self;

            public PyObject getSelf() {
                return self;
            }

            exposed___init__(PyRandom self,PyBuiltinFunction.Info info) {
                super(info);
                this.self=self;
            }

            public PyBuiltinFunction makeBound(PyObject self) {
                return new exposed___init__((PyRandom)self,info);
            }

            public PyObject inst_call(PyObject self,PyObject[]args) {
                return inst_call(self,args,Py.NoKeywords);
            }

            public PyObject __call__(PyObject[]args) {
                return __call__(args,Py.NoKeywords);
            }

            public PyObject __call__(PyObject[]args,String[]keywords) {
                self.random_init(args,keywords);
                return Py.None;
            }

            public PyObject inst_call(PyObject gself,PyObject[]args,String[]keywords) {
                PyRandom self=(PyRandom)gself;
                self.random_init(args,keywords);
                return Py.None;
            }

        }
        dict.__setitem__("__init__",new PyMethodDescr("__init__",PyRandom.class,-1,-1,new exposed___init__(null,null)));
        dict.__setitem__("__new__",new PyNewWrapper(PyRandom.class,"__new__",-1,-1) {

                                                                                        public PyObject new_impl(boolean init,PyType subtype,PyObject[]args,String[]keywords) {
                                                                                            PyRandom newobj;
                                                                                            if (for_type==subtype) {
                                                                                                newobj=new PyRandom();
                                                                                                if (init)
                                                                                                    newobj.random_init(args,keywords);
                                                                                            } else {
                                                                                                newobj=new PyRandomDerived(subtype);
                                                                                            }
                                                                                            return newobj;
                                                                                        }

                                                                                    });
    }
    //~ END GENERATED REGION -- DO NOT EDIT SEE gexpose.py

    private static final PyType RANDOMTYPE = PyType.fromClass(PyRandom.class);

    public PyRandom() {
        this(RANDOMTYPE);
    }

    public PyRandom(PyType subType) {
        super(subType);
    }

}