1*5971e316Smrgimport os 2*5971e316Smrgfrom ctypes import * 3*5971e316Smrgfrom ctypes.util import find_library 4*5971e316Smrg 5*5971e316Smrgisl_dyld_library_path = os.environ.get('ISL_DYLD_LIBRARY_PATH') 6*5971e316Smrgif isl_dyld_library_path != None: 7*5971e316Smrg os.environ['DYLD_LIBRARY_PATH'] = isl_dyld_library_path 8*5971e316Smrgtry: 9*5971e316Smrg isl = cdll.LoadLibrary(isl_dlname) 10*5971e316Smrgexcept: 11*5971e316Smrg isl = cdll.LoadLibrary(find_library("isl")) 12*5971e316Smrglibc = cdll.LoadLibrary(find_library("c")) 13*5971e316Smrg 14*5971e316Smrgclass Error(Exception): 15*5971e316Smrg pass 16*5971e316Smrg 17*5971e316Smrgclass Context: 18*5971e316Smrg defaultInstance = None 19*5971e316Smrg 20*5971e316Smrg def __init__(self): 21*5971e316Smrg ptr = isl.isl_ctx_alloc() 22*5971e316Smrg self.ptr = ptr 23*5971e316Smrg 24*5971e316Smrg def __del__(self): 25*5971e316Smrg isl.isl_ctx_free(self) 26*5971e316Smrg 27*5971e316Smrg def from_param(self): 28*5971e316Smrg return c_void_p(self.ptr) 29*5971e316Smrg 30*5971e316Smrg @staticmethod 31*5971e316Smrg def getDefaultInstance(): 32*5971e316Smrg if Context.defaultInstance == None: 33*5971e316Smrg Context.defaultInstance = Context() 34*5971e316Smrg return Context.defaultInstance 35*5971e316Smrg 36*5971e316Smrg @CFUNCTYPE(None, py_object) 37*5971e316Smrg def free_user(user): 38*5971e316Smrg pythonapi.Py_DecRef(py_object(user)) 39*5971e316Smrg 40*5971e316Smrgisl.isl_ctx_alloc.restype = c_void_p 41*5971e316Smrgisl.isl_ctx_free.argtypes = [Context] 42*5971e316Smrgisl.isl_id_alloc.restype = c_void_p 43*5971e316Smrgisl.isl_id_alloc.argtypes = [Context, c_char_p, py_object] 44*5971e316Smrgisl.isl_id_set_free_user.restype = c_void_p 45*5971e316Smrgisl.isl_id_set_free_user.argtypes = [c_void_p, c_void_p] 46*5971e316Smrgisl.isl_id_get_free_user.restype = c_void_p 47*5971e316Smrgisl.isl_id_get_free_user.argtypes = [c_void_p] 48*5971e316Smrgisl.isl_id_get_user.restype = py_object 49*5971e316Smrgisl.isl_id_get_user.argtypes = [c_void_p] 50