Created
July 30, 2018 11:02
-
-
Save matiasinsaurralde/4efc7c11c6cd26abeab289602b3dcb91 to your computer and use it in GitHub Desktop.
dlpython bindings
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package python | |
/* | |
#include <dlfcn.h> | |
#include <stdlib.h> | |
#include <stdio.h> | |
void* python_lib; | |
typedef struct _pyobject {} PyObject; | |
typedef struct _pythreadstate {} PyThreadState; | |
typedef struct _pygilstate {} PyGILState_STATE; | |
typedef PyObject* (*PyObject_GetAttr_f)(PyObject*, PyObject*); | |
PyObject_GetAttr_f PyObject_GetAttr_ptr; | |
PyObject* PyObject_GetAttr(PyObject* arg1, PyObject* arg0) { return PyObject_GetAttr_ptr(arg0, arg1); }; | |
typedef char* (*PyBytes_AsString_f)(PyObject*); | |
PyBytes_AsString_f PyBytes_AsString_ptr; | |
char* PyBytes_AsString(PyObject* arg0) { return PyBytes_AsString_ptr(arg0); }; | |
typedef PyObject* (*PyUnicode_FromString_f)(char*); | |
PyUnicode_FromString_f PyUnicode_FromString_ptr; | |
PyObject* PyUnicode_FromString(char* u) { return PyUnicode_FromString_ptr(u); }; | |
typedef long int (*PyLong_AsLong_f)(PyObject*); | |
PyLong_AsLong_f PyLong_AsLong_ptr; | |
long int PyLong_AsLong(PyObject* arg0) { return PyLong_AsLong_ptr(arg0); }; | |
typedef PyObject* (*PyDict_GetItemString_f)(PyObject*, char*); | |
PyDict_GetItemString_f PyDict_GetItemString_ptr; | |
PyObject* PyDict_GetItemString(PyObject* dp, char* key) { return PyDict_GetItemString_ptr(dp, key); }; | |
typedef PyObject* (*PyModule_GetDict_f)(PyObject*); | |
PyModule_GetDict_f PyModule_GetDict_ptr; | |
PyObject* PyModule_GetDict(PyObject* arg0) { return PyModule_GetDict_ptr(arg0); }; | |
typedef PyGILState_STATE (*PyGILState_Ensure_f)(); | |
PyGILState_Ensure_f PyGILState_Ensure_ptr; | |
PyGILState_STATE PyGILState_Ensure() { return PyGILState_Ensure_ptr(); }; | |
typedef void (*PyErr_Print_f)(); | |
PyErr_Print_f PyErr_Print_ptr; | |
void PyErr_Print() { return PyErr_Print_ptr(); }; | |
typedef void (*Py_Initialize_f)(); | |
Py_Initialize_f Py_Initialize_ptr; | |
void Py_Initialize() { return Py_Initialize_ptr(); }; | |
typedef int (*Py_IsInitialized_f)(); | |
Py_IsInitialized_f Py_IsInitialized_ptr; | |
int Py_IsInitialized() { return Py_IsInitialized_ptr(); }; | |
typedef PyThreadState* (*PyEval_SaveThread_f)(); | |
PyEval_SaveThread_f PyEval_SaveThread_ptr; | |
PyThreadState* PyEval_SaveThread() { return PyEval_SaveThread_ptr(); }; | |
typedef void (*PyEval_InitThreads_f)(); | |
PyEval_InitThreads_f PyEval_InitThreads_ptr; | |
void PyEval_InitThreads() { return PyEval_InitThreads_ptr(); }; | |
typedef PyObject* (*PyImport_Import_f)(PyObject*); | |
PyImport_Import_f PyImport_Import_ptr; | |
PyObject* PyImport_Import(PyObject* name) { return PyImport_Import_ptr(name); }; | |
typedef PyObject* (*PyObject_CallObject_f)(PyObject*, PyObject*); | |
PyObject_CallObject_f PyObject_CallObject_ptr; | |
PyObject* PyObject_CallObject(PyObject* args, PyObject* callable_object) { return PyObject_CallObject_ptr(callable_object, args); }; | |
*/ | |
import "C" | |
import "unsafe" | |
type dummyPtr unsafe.Pointer | |
func PyObject_GetAttr(arg0 *C.PyObject, arg1 *C.PyObject) *C.PyObject { | |
return C.PyObject_GetAttr(arg0,arg1) | |
} | |
func PyBytes_AsString(arg0 *C.PyObject) *C.char { | |
return C.PyBytes_AsString(arg0) | |
} | |
func PyUnicode_FromString(u *C.char) *C.PyObject { | |
return C.PyUnicode_FromString(u) | |
} | |
func PyLong_AsLong(arg0 *C.PyObject) C.long { | |
return C.PyLong_AsLong(arg0) | |
} | |
func PyDict_GetItemString(dp *C.PyObject, key *C.char) *C.PyObject { | |
return C.PyDict_GetItemString(dp,key) | |
} | |
func PyModule_GetDict(arg0 *C.PyObject) *C.PyObject { | |
return C.PyModule_GetDict(arg0) | |
} | |
func PyGILState_Ensure() C.PyGILState_STATE { | |
return C.PyGILState_Ensure() | |
} | |
func PyErr_Print() { | |
C.PyErr_Print() | |
} | |
func Py_Initialize() { | |
C.Py_Initialize() | |
} | |
func Py_IsInitialized() C.int { | |
return C.Py_IsInitialized() | |
} | |
func PyEval_SaveThread() *C.PyThreadState { | |
return C.PyEval_SaveThread() | |
} | |
func PyEval_InitThreads() { | |
C.PyEval_InitThreads() | |
} | |
func PyImport_Import(name *C.PyObject) *C.PyObject { | |
return C.PyImport_Import(name) | |
} | |
func PyObject_CallObject(callable_object *C.PyObject, args *C.PyObject) *C.PyObject { | |
return C.PyObject_CallObject(callable_object,args) | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment