X-Git-Url: https://scm.cri.ensmp.fr/git/linpy.git/blobdiff_plain/2c6add2e9a2fbc48a6421ecd22f2f7fa9cbb15a0..f933aea6fd6030396e0305dd169753a5d1c9b90e:/pypol/domains.py diff --git a/pypol/domains.py b/pypol/domains.py index 3034764..05c9c8f 100644 --- a/pypol/domains.py +++ b/pypol/domains.py @@ -249,6 +249,36 @@ class Domain: libisl.isl_set_free(islset) return value + def vertices(self): + if self.isbounded(): + islbset = self._toislbasicset(self.equalities, self.inequalities, self.symbols) + vertices = libisl.isl_basic_set_compute_vertices(islbset); + vertexes = islhelper.isl_vertices_vertices(vertices) + #vertex = libisl.isl_vertices_get_n_vertices(vertices) + for verts in vertexes: + expr = libisl.isl_vertex_get_expr(verts); + this = islhelper.isl_set_to_str(expr) + print(this) + else: + raise TypeError('set must be bounded') + return string + + def points(self): + bounds = {} + coordinates = [] + symbols = self.symbols + if self.isbounded(): + islset = self._toislset(self.polyhedra, self.symbols) + points = islhelper.isl_set_points(islset) + for sym in symbols: + for point in points: + coordinate = libisl.isl_point_get_coordinate_val(point, libisl.isl_dim_set, symbols.index(sym)) + coordinate = islhelper.isl_val_to_int(coordinate) + coordinates.append(coordinate) + else: + raise TypeError('set must be bounded') + return coordinates + @classmethod def _fromislset(cls, islset, symbols): from .polyhedra import Polyhedron