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
+ islbset = self._toislbasicset(self.equalities, self.inequalities, self.symbols)
+ vertices = libisl.isl_basic_set_compute_vertices(islbset);
+ vertices = islhelper.isl_vertices_vertices(vertices)
+ for vertex in vertices:
+ expr = libisl.isl_vertex_get_expr(vertex);
+ if islhelper.isl_version < '0.13':
+ string = islhelper.isl_set_to_str(expr)
+ else:
+ string = islhelper.isl_multi_aff_to_str(expr)
+ print(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
+ if not self.isbounded():
+ raise ValueError('domain must be unbounded')
+ from .polyhedra import Universe, Eq
+ islset = self._toislset(self.polyhedra, self.symbols)
+ islpoints = islhelper.isl_set_points(islset)
+ points = []
+ for islpoint in islpoints:
+ point = {}
+ for index, symbol in enumerate(self.symbols):
+ coordinate = libisl.isl_point_get_coordinate_val(islpoint,
+ libisl.isl_dim_set, index)
+ coordinate = islhelper.isl_val_to_int(coordinate)
+ point[symbol] = coordinate
+ points.append(point)
+ return points
@classmethod
def _fromislset(cls, islset, symbols):
'isl_set_to_str', 'isl_set_basic_sets',
'isl_set_points',
'isl_vertices_vertices',
+ 'isl_multi_aff_to_str',
]
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