X-Git-Url: https://scm.cri.mines-paristech.fr/git/linpy.git/blobdiff_plain/960f0c252361dfd696359f803aae40a9b13b14a6..7b93cea1daf2889e9ee10ca9c22a1b5124404937:/linpy/islhelper.py diff --git a/linpy/islhelper.py b/linpy/islhelper.py new file mode 100644 index 0000000..c38e734 --- /dev/null +++ b/linpy/islhelper.py @@ -0,0 +1,71 @@ +# Copyright 2014 MINES ParisTech +# +# This file is part of LinPy. +# +# LinPy is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# LinPy is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LinPy. If not, see . + +import ctypes, ctypes.util + +from . import _islhelper +from ._islhelper import * + + +__all__ = [ + 'libisl', + 'isl_version', + 'mainctx', + 'isl_val_to_int', + 'isl_basic_set_to_str', 'isl_basic_set_constraints', + 'isl_set_to_str', 'isl_set_basic_sets', + 'isl_set_points', + 'isl_vertices_vertices', + 'isl_multi_aff_to_str', +] + + +libisl = ctypes.CDLL(ctypes.util.find_library('isl')) +libisl.isl_dim_set = _islhelper.dim_set + +libisl.isl_version.restype = ctypes.c_char_p +isl_version = libisl.isl_version().decode().strip()[len('isl-'):] + + +mainctx = libisl.isl_ctx_alloc() + + +libisl.isl_printer_get_str.restype = ctypes.c_char_p + +def isl_val_to_int(islval): + islpr = libisl.isl_printer_to_str(mainctx) + islpr = libisl.isl_printer_print_val(islpr, islval) + string = libisl.isl_printer_get_str(islpr).decode() + return int(string) + +def isl_basic_set_to_str(islbset): + islpr = libisl.isl_printer_to_str(mainctx) + islpr = libisl.isl_printer_print_basic_set(islpr, islbset) + string = libisl.isl_printer_get_str(islpr).decode() + return string + +def isl_set_to_str(islset): + islpr = libisl.isl_printer_to_str(mainctx) + islpr = libisl.isl_printer_print_set(islpr, islset) + string = libisl.isl_printer_get_str(islpr).decode() + return string + +def isl_multi_aff_to_str(islmaff): + islpr = libisl.isl_printer_to_str(mainctx) + islpr = libisl.isl_printer_print_multi_aff(islpr, islmaff) + string = libisl.isl_printer_get_str(islpr).decode() + return string