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