X-Git-Url: https://svn.cri.ensmp.fr/git/linpy.git/blobdiff_plain/fb070deb31a82b789e1be4ffc5dfa64b4b7a9e36..5a8e09e71168fe25cf699991936fda5094086054:/pypol/domains.py?ds=sidebyside diff --git a/pypol/domains.py b/pypol/domains.py index a2650e4..f3f551a 100644 --- a/pypol/domains.py +++ b/pypol/domains.py @@ -246,7 +246,37 @@ class Domain: value = bool(libisl.isl_set_involves_dims(islset, libisl.isl_dim_set, first, n)) 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