
/*
   DO NOT EDIT THIS FILE!

   This file is automatically generated by hpy.tools.autogen.hpyfunc.autogen_cpython_hpyfunc_trampoline_h
   See also hpy.tools.autogen and hpy/tools/public_api.h

   Run this to regenerate:
       make autogen

*/

typedef HPy (*_HPyCFunction_NOARGS)(HPyContext *, HPy);
#define _HPyFunc_TRAMPOLINE_HPyFunc_NOARGS(SYM, IMPL) \
    static cpy_PyObject *SYM(cpy_PyObject *self) \
    { \
        _HPyCFunction_NOARGS func = (_HPyCFunction_NOARGS)IMPL; \
        return _h2py(func(_HPyGetContext(), _py2h(self))); \
    }
typedef HPy (*_HPyCFunction_O)(HPyContext *, HPy, HPy);
#define _HPyFunc_TRAMPOLINE_HPyFunc_O(SYM, IMPL) \
    static cpy_PyObject *SYM(cpy_PyObject *self, cpy_PyObject *arg) \
    { \
        _HPyCFunction_O func = (_HPyCFunction_O)IMPL; \
        return _h2py(func(_HPyGetContext(), _py2h(self), _py2h(arg))); \
    }
typedef HPy (*_HPyCFunction_UNARYFUNC)(HPyContext *, HPy);
#define _HPyFunc_TRAMPOLINE_HPyFunc_UNARYFUNC(SYM, IMPL) \
    static cpy_PyObject *SYM(cpy_PyObject *arg0) \
    { \
        _HPyCFunction_UNARYFUNC func = (_HPyCFunction_UNARYFUNC)IMPL; \
        return _h2py(func(_HPyGetContext(), _py2h(arg0))); \
    }
typedef HPy (*_HPyCFunction_BINARYFUNC)(HPyContext *, HPy, HPy);
#define _HPyFunc_TRAMPOLINE_HPyFunc_BINARYFUNC(SYM, IMPL) \
    static cpy_PyObject *SYM(cpy_PyObject *arg0, cpy_PyObject *arg1) \
    { \
        _HPyCFunction_BINARYFUNC func = (_HPyCFunction_BINARYFUNC)IMPL; \
        return _h2py(func(_HPyGetContext(), _py2h(arg0), _py2h(arg1))); \
    }
typedef HPy (*_HPyCFunction_TERNARYFUNC)(HPyContext *, HPy, HPy, HPy);
#define _HPyFunc_TRAMPOLINE_HPyFunc_TERNARYFUNC(SYM, IMPL) \
    static cpy_PyObject *SYM(cpy_PyObject *arg0, cpy_PyObject *arg1, cpy_PyObject *arg2) \
    { \
        _HPyCFunction_TERNARYFUNC func = (_HPyCFunction_TERNARYFUNC)IMPL; \
        return _h2py(func(_HPyGetContext(), _py2h(arg0), _py2h(arg1), _py2h(arg2))); \
    }
typedef int (*_HPyCFunction_INQUIRY)(HPyContext *, HPy);
#define _HPyFunc_TRAMPOLINE_HPyFunc_INQUIRY(SYM, IMPL) \
    static int SYM(cpy_PyObject *arg0) \
    { \
        _HPyCFunction_INQUIRY func = (_HPyCFunction_INQUIRY)IMPL; \
        return (func(_HPyGetContext(), _py2h(arg0))); \
    }
typedef HPy_ssize_t (*_HPyCFunction_LENFUNC)(HPyContext *, HPy);
#define _HPyFunc_TRAMPOLINE_HPyFunc_LENFUNC(SYM, IMPL) \
    static HPy_ssize_t SYM(cpy_PyObject *arg0) \
    { \
        _HPyCFunction_LENFUNC func = (_HPyCFunction_LENFUNC)IMPL; \
        return (func(_HPyGetContext(), _py2h(arg0))); \
    }
typedef HPy (*_HPyCFunction_SSIZEARGFUNC)(HPyContext *, HPy, HPy_ssize_t);
#define _HPyFunc_TRAMPOLINE_HPyFunc_SSIZEARGFUNC(SYM, IMPL) \
    static cpy_PyObject *SYM(cpy_PyObject *arg0, HPy_ssize_t arg1) \
    { \
        _HPyCFunction_SSIZEARGFUNC func = (_HPyCFunction_SSIZEARGFUNC)IMPL; \
        return _h2py(func(_HPyGetContext(), _py2h(arg0), (arg1))); \
    }
typedef HPy (*_HPyCFunction_SSIZESSIZEARGFUNC)(HPyContext *, HPy, HPy_ssize_t, HPy_ssize_t);
#define _HPyFunc_TRAMPOLINE_HPyFunc_SSIZESSIZEARGFUNC(SYM, IMPL) \
    static cpy_PyObject *SYM(cpy_PyObject *arg0, HPy_ssize_t arg1, HPy_ssize_t arg2) \
    { \
        _HPyCFunction_SSIZESSIZEARGFUNC func = (_HPyCFunction_SSIZESSIZEARGFUNC)IMPL; \
        return _h2py(func(_HPyGetContext(), _py2h(arg0), (arg1), (arg2))); \
    }
typedef int (*_HPyCFunction_SSIZEOBJARGPROC)(HPyContext *, HPy, HPy_ssize_t, HPy);
#define _HPyFunc_TRAMPOLINE_HPyFunc_SSIZEOBJARGPROC(SYM, IMPL) \
    static int SYM(cpy_PyObject *arg0, HPy_ssize_t arg1, cpy_PyObject *arg2) \
    { \
        _HPyCFunction_SSIZEOBJARGPROC func = (_HPyCFunction_SSIZEOBJARGPROC)IMPL; \
        return (func(_HPyGetContext(), _py2h(arg0), (arg1), _py2h(arg2))); \
    }
typedef int (*_HPyCFunction_SSIZESSIZEOBJARGPROC)(HPyContext *, HPy, HPy_ssize_t, HPy_ssize_t, HPy);
#define _HPyFunc_TRAMPOLINE_HPyFunc_SSIZESSIZEOBJARGPROC(SYM, IMPL) \
    static int SYM(cpy_PyObject *arg0, HPy_ssize_t arg1, HPy_ssize_t arg2, cpy_PyObject *arg3) \
    { \
        _HPyCFunction_SSIZESSIZEOBJARGPROC func = (_HPyCFunction_SSIZESSIZEOBJARGPROC)IMPL; \
        return (func(_HPyGetContext(), _py2h(arg0), (arg1), (arg2), _py2h(arg3))); \
    }
typedef int (*_HPyCFunction_OBJOBJARGPROC)(HPyContext *, HPy, HPy, HPy);
#define _HPyFunc_TRAMPOLINE_HPyFunc_OBJOBJARGPROC(SYM, IMPL) \
    static int SYM(cpy_PyObject *arg0, cpy_PyObject *arg1, cpy_PyObject *arg2) \
    { \
        _HPyCFunction_OBJOBJARGPROC func = (_HPyCFunction_OBJOBJARGPROC)IMPL; \
        return (func(_HPyGetContext(), _py2h(arg0), _py2h(arg1), _py2h(arg2))); \
    }
typedef void (*_HPyCFunction_FREEFUNC)(HPyContext *, void *);
#define _HPyFunc_TRAMPOLINE_HPyFunc_FREEFUNC(SYM, IMPL) \
    static void SYM(void *arg0) \
    { \
        _HPyCFunction_FREEFUNC func = (_HPyCFunction_FREEFUNC)IMPL; \
        func(_HPyGetContext(), (arg0)); \
        return; \
    }
typedef HPy (*_HPyCFunction_GETATTRFUNC)(HPyContext *, HPy, char *);
#define _HPyFunc_TRAMPOLINE_HPyFunc_GETATTRFUNC(SYM, IMPL) \
    static cpy_PyObject *SYM(cpy_PyObject *arg0, char *arg1) \
    { \
        _HPyCFunction_GETATTRFUNC func = (_HPyCFunction_GETATTRFUNC)IMPL; \
        return _h2py(func(_HPyGetContext(), _py2h(arg0), (arg1))); \
    }
typedef HPy (*_HPyCFunction_GETATTROFUNC)(HPyContext *, HPy, HPy);
#define _HPyFunc_TRAMPOLINE_HPyFunc_GETATTROFUNC(SYM, IMPL) \
    static cpy_PyObject *SYM(cpy_PyObject *arg0, cpy_PyObject *arg1) \
    { \
        _HPyCFunction_GETATTROFUNC func = (_HPyCFunction_GETATTROFUNC)IMPL; \
        return _h2py(func(_HPyGetContext(), _py2h(arg0), _py2h(arg1))); \
    }
typedef int (*_HPyCFunction_SETATTRFUNC)(HPyContext *, HPy, char *, HPy);
#define _HPyFunc_TRAMPOLINE_HPyFunc_SETATTRFUNC(SYM, IMPL) \
    static int SYM(cpy_PyObject *arg0, char *arg1, cpy_PyObject *arg2) \
    { \
        _HPyCFunction_SETATTRFUNC func = (_HPyCFunction_SETATTRFUNC)IMPL; \
        return (func(_HPyGetContext(), _py2h(arg0), (arg1), _py2h(arg2))); \
    }
typedef int (*_HPyCFunction_SETATTROFUNC)(HPyContext *, HPy, HPy, HPy);
#define _HPyFunc_TRAMPOLINE_HPyFunc_SETATTROFUNC(SYM, IMPL) \
    static int SYM(cpy_PyObject *arg0, cpy_PyObject *arg1, cpy_PyObject *arg2) \
    { \
        _HPyCFunction_SETATTROFUNC func = (_HPyCFunction_SETATTROFUNC)IMPL; \
        return (func(_HPyGetContext(), _py2h(arg0), _py2h(arg1), _py2h(arg2))); \
    }
typedef HPy (*_HPyCFunction_REPRFUNC)(HPyContext *, HPy);
#define _HPyFunc_TRAMPOLINE_HPyFunc_REPRFUNC(SYM, IMPL) \
    static cpy_PyObject *SYM(cpy_PyObject *arg0) \
    { \
        _HPyCFunction_REPRFUNC func = (_HPyCFunction_REPRFUNC)IMPL; \
        return _h2py(func(_HPyGetContext(), _py2h(arg0))); \
    }
typedef HPy_hash_t (*_HPyCFunction_HASHFUNC)(HPyContext *, HPy);
#define _HPyFunc_TRAMPOLINE_HPyFunc_HASHFUNC(SYM, IMPL) \
    static HPy_hash_t SYM(cpy_PyObject *arg0) \
    { \
        _HPyCFunction_HASHFUNC func = (_HPyCFunction_HASHFUNC)IMPL; \
        return (func(_HPyGetContext(), _py2h(arg0))); \
    }
typedef HPy (*_HPyCFunction_GETITERFUNC)(HPyContext *, HPy);
#define _HPyFunc_TRAMPOLINE_HPyFunc_GETITERFUNC(SYM, IMPL) \
    static cpy_PyObject *SYM(cpy_PyObject *arg0) \
    { \
        _HPyCFunction_GETITERFUNC func = (_HPyCFunction_GETITERFUNC)IMPL; \
        return _h2py(func(_HPyGetContext(), _py2h(arg0))); \
    }
typedef HPy (*_HPyCFunction_ITERNEXTFUNC)(HPyContext *, HPy);
#define _HPyFunc_TRAMPOLINE_HPyFunc_ITERNEXTFUNC(SYM, IMPL) \
    static cpy_PyObject *SYM(cpy_PyObject *arg0) \
    { \
        _HPyCFunction_ITERNEXTFUNC func = (_HPyCFunction_ITERNEXTFUNC)IMPL; \
        return _h2py(func(_HPyGetContext(), _py2h(arg0))); \
    }
typedef HPy (*_HPyCFunction_DESCRGETFUNC)(HPyContext *, HPy, HPy, HPy);
#define _HPyFunc_TRAMPOLINE_HPyFunc_DESCRGETFUNC(SYM, IMPL) \
    static cpy_PyObject *SYM(cpy_PyObject *arg0, cpy_PyObject *arg1, cpy_PyObject *arg2) \
    { \
        _HPyCFunction_DESCRGETFUNC func = (_HPyCFunction_DESCRGETFUNC)IMPL; \
        return _h2py(func(_HPyGetContext(), _py2h(arg0), _py2h(arg1), _py2h(arg2))); \
    }
typedef int (*_HPyCFunction_DESCRSETFUNC)(HPyContext *, HPy, HPy, HPy);
#define _HPyFunc_TRAMPOLINE_HPyFunc_DESCRSETFUNC(SYM, IMPL) \
    static int SYM(cpy_PyObject *arg0, cpy_PyObject *arg1, cpy_PyObject *arg2) \
    { \
        _HPyCFunction_DESCRSETFUNC func = (_HPyCFunction_DESCRSETFUNC)IMPL; \
        return (func(_HPyGetContext(), _py2h(arg0), _py2h(arg1), _py2h(arg2))); \
    }
typedef HPy (*_HPyCFunction_GETTER)(HPyContext *, HPy, void *);
#define _HPyFunc_TRAMPOLINE_HPyFunc_GETTER(SYM, IMPL) \
    static cpy_PyObject *SYM(cpy_PyObject *arg0, void *arg1) \
    { \
        _HPyCFunction_GETTER func = (_HPyCFunction_GETTER)IMPL; \
        return _h2py(func(_HPyGetContext(), _py2h(arg0), (arg1))); \
    }
typedef int (*_HPyCFunction_SETTER)(HPyContext *, HPy, HPy, void *);
#define _HPyFunc_TRAMPOLINE_HPyFunc_SETTER(SYM, IMPL) \
    static int SYM(cpy_PyObject *arg0, cpy_PyObject *arg1, void *arg2) \
    { \
        _HPyCFunction_SETTER func = (_HPyCFunction_SETTER)IMPL; \
        return (func(_HPyGetContext(), _py2h(arg0), _py2h(arg1), (arg2))); \
    }
typedef int (*_HPyCFunction_OBJOBJPROC)(HPyContext *, HPy, HPy);
#define _HPyFunc_TRAMPOLINE_HPyFunc_OBJOBJPROC(SYM, IMPL) \
    static int SYM(cpy_PyObject *arg0, cpy_PyObject *arg1) \
    { \
        _HPyCFunction_OBJOBJPROC func = (_HPyCFunction_OBJOBJPROC)IMPL; \
        return (func(_HPyGetContext(), _py2h(arg0), _py2h(arg1))); \
    }
typedef void (*_HPyCFunction_DESTRUCTOR)(HPyContext *, HPy);
#define _HPyFunc_TRAMPOLINE_HPyFunc_DESTRUCTOR(SYM, IMPL) \
    static void SYM(cpy_PyObject *arg0) \
    { \
        _HPyCFunction_DESTRUCTOR func = (_HPyCFunction_DESTRUCTOR)IMPL; \
        func(_HPyGetContext(), _py2h(arg0)); \
        return; \
    }
