#pragma once

#define PY_SSIZE_T_CLEAN
#include <Python.h>

#include "ptr.h"

namespace NPyBind {
#if PY_MAJOR_VERSION >= 3

#define PYBIND_MODINIT(name) PyMODINIT_FUNC PyInit_##name()

    inline PyObject* ModInitReturn(TPyObjectPtr&& modptr) {
        return modptr.Release();
    }

#else

#define PYBIND_MODINIT(name) PyMODINIT_FUNC init##name()

    inline void ModInitReturn(TPyObjectPtr&&) {
    }

#endif
}