40 lines
1.1 KiB
Python
40 lines
1.1 KiB
Python
from llvmlite.binding import ffi
|
|
|
|
# FIXME: Remove me once typed pointers are no longer supported.
|
|
from llvmlite import opaque_pointers_enabled
|
|
from ctypes import c_bool
|
|
|
|
|
|
def create_context():
|
|
return ContextRef(
|
|
ffi.lib.LLVMPY_ContextCreate(opaque_pointers_enabled))
|
|
|
|
|
|
def get_global_context():
|
|
return GlobalContextRef(
|
|
ffi.lib.LLVMPY_GetGlobalContext(opaque_pointers_enabled))
|
|
|
|
|
|
class ContextRef(ffi.ObjectRef):
|
|
def __init__(self, context_ptr):
|
|
super(ContextRef, self).__init__(context_ptr)
|
|
|
|
def _dispose(self):
|
|
ffi.lib.LLVMPY_ContextDispose(self)
|
|
|
|
|
|
class GlobalContextRef(ContextRef):
|
|
def _dispose(self):
|
|
pass
|
|
|
|
|
|
# FIXME: Remove argtypes once typed pointers are no longer supported.
|
|
ffi.lib.LLVMPY_GetGlobalContext.argtypes = [c_bool]
|
|
ffi.lib.LLVMPY_GetGlobalContext.restype = ffi.LLVMContextRef
|
|
|
|
# FIXME: Remove argtypes once typed pointers are no longer supported.
|
|
ffi.lib.LLVMPY_ContextCreate.argtypes = [c_bool]
|
|
ffi.lib.LLVMPY_ContextCreate.restype = ffi.LLVMContextRef
|
|
|
|
ffi.lib.LLVMPY_ContextDispose.argtypes = [ffi.LLVMContextRef]
|