xref: /netbsd-src/external/mit/isl/dist/python/isl.py.top (revision 5971e316fdea024efff6be8f03536623db06833e)
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