This partially reverts b605dab7a8352158ee0d399b8c3433f9a8b495a3, dropping the changes to isl. This is an external library, so we shouldn't modify it unless strictly necessary.
50 lines
1.3 KiB
Plaintext
50 lines
1.3 KiB
Plaintext
import os
|
|
from ctypes import *
|
|
from ctypes.util import find_library
|
|
|
|
isl_dyld_library_path = os.environ.get('ISL_DYLD_LIBRARY_PATH')
|
|
if isl_dyld_library_path != None:
|
|
os.environ['DYLD_LIBRARY_PATH'] = isl_dyld_library_path
|
|
try:
|
|
isl = cdll.LoadLibrary(isl_dlname)
|
|
except:
|
|
isl = cdll.LoadLibrary(find_library("isl"))
|
|
libc = cdll.LoadLibrary(find_library("c"))
|
|
|
|
class Error(Exception):
|
|
pass
|
|
|
|
class Context:
|
|
defaultInstance = None
|
|
|
|
def __init__(self):
|
|
ptr = isl.isl_ctx_alloc()
|
|
self.ptr = ptr
|
|
|
|
def __del__(self):
|
|
isl.isl_ctx_free(self)
|
|
|
|
def from_param(self):
|
|
return c_void_p(self.ptr)
|
|
|
|
@staticmethod
|
|
def getDefaultInstance():
|
|
if Context.defaultInstance == None:
|
|
Context.defaultInstance = Context()
|
|
return Context.defaultInstance
|
|
|
|
@CFUNCTYPE(None, py_object)
|
|
def free_user(user):
|
|
pythonapi.Py_DecRef(py_object(user))
|
|
|
|
isl.isl_ctx_alloc.restype = c_void_p
|
|
isl.isl_ctx_free.argtypes = [Context]
|
|
isl.isl_id_alloc.restype = c_void_p
|
|
isl.isl_id_alloc.argtypes = [Context, c_char_p, py_object]
|
|
isl.isl_id_set_free_user.restype = c_void_p
|
|
isl.isl_id_set_free_user.argtypes = [c_void_p, c_void_p]
|
|
isl.isl_id_get_free_user.restype = c_void_p
|
|
isl.isl_id_get_free_user.argtypes = [c_void_p]
|
|
isl.isl_id_get_user.restype = py_object
|
|
isl.isl_id_get_user.argtypes = [c_void_p]
|