Polly 22.0.0git
isl_vertices.c File Reference
#include <isl_map_private.h>
#include <isl_aff_private.h>
#include <isl/set.h>
#include <isl_seq.h>
#include <isl_tab.h>
#include <isl_space_private.h>
#include <isl_morph.h>
#include <isl_vertices_private.h>
#include <isl_mat_private.h>
#include <isl_vec_private.h>

Go to the source code of this file.

Classes

struct  isl_vertex_list
struct  isl_chamber_list
struct  isl_facet_todo

Macros

#define SELECTED   1
#define DESELECTED   -1
#define UNSELECTED   0

Functions

static __isl_give isl_verticescompute_chambers (__isl_take isl_basic_set *bset, __isl_take isl_vertices *vertices)
__isl_give isl_verticesisl_vertices_copy (__isl_keep isl_vertices *vertices)
__isl_null isl_verticesisl_vertices_free (__isl_take isl_vertices *vertices)
static struct isl_vertex_listfree_vertex_list (struct isl_vertex_list *list)
static __isl_give isl_verticesvertices_from_list (__isl_keep isl_basic_set *bset, int n_vertices, struct isl_vertex_list *list)
static isl_bool add_vertex (struct isl_vertex_list **list, __isl_keep isl_basic_set *bset, struct isl_tab *tab)
static __isl_give isl_verticesvertices_empty (__isl_keep isl_basic_set *bset)
static __isl_give isl_verticesvertices_0D (__isl_keep isl_basic_set *bset)
static isl_bool is_independent (__isl_keep isl_mat *facets, int n, isl_int *f)
static isl_bool can_select (__isl_keep isl_basic_set *bset, int level, struct isl_tab *tab, __isl_keep isl_mat *facets, int selected, int *selection)
static __isl_give isl_verticeslower_dim_vertices (__isl_take isl_basic_set *bset)
static __isl_give isl_verticeslower_dim_vertices_free (__isl_take isl_basic_set *bset, __isl_take isl_basic_set *copy, struct isl_tab *tab)
static __isl_give isl_basic_setdetect_implicit_equality_constraints (__isl_keep isl_basic_set *bset, struct isl_tab *tab)
__isl_give isl_verticesisl_basic_set_compute_vertices (__isl_keep isl_basic_set *bset)
static void free_chamber_list (struct isl_chamber_list *list)
static isl_bool bset_covers_tab (__isl_keep isl_basic_set *bset, struct isl_tab *tab)
static __isl_give isl_verticesvertices_add_chambers (__isl_take isl_vertices *vertices, int n_chambers, struct isl_chamber_list *list)
static isl_bool can_intersect (struct isl_tab *tab, __isl_keep isl_basic_set *bset)
static int add_chamber (struct isl_chamber_list **list, __isl_keep isl_vertices *vertices, struct isl_tab *tab, int *selection)
static void free_todo (struct isl_facet_todo *todo)
static struct isl_facet_todocreate_todo (struct isl_tab *tab, int con)
static int init_todo (struct isl_facet_todo **next, struct isl_tab *tab)
static int has_opposite (struct isl_facet_todo *todo, struct isl_facet_todo **list)
static int update_todo (struct isl_facet_todo *first, struct isl_tab *tab)
isl_ctxisl_vertex_get_ctx (__isl_keep isl_vertex *vertex)
isl_size isl_vertex_get_id (__isl_keep isl_vertex *vertex)
__isl_give isl_basic_setisl_vertex_get_domain (__isl_keep isl_vertex *vertex)
__isl_give isl_multi_affisl_vertex_get_expr (__isl_keep isl_vertex *vertex)
static __isl_give isl_vertexisl_vertex_alloc (__isl_take isl_vertices *vertices, int id)
__isl_null isl_vertexisl_vertex_free (__isl_take isl_vertex *vertex)
isl_ctxisl_cell_get_ctx (__isl_keep isl_cell *cell)
__isl_give isl_basic_setisl_cell_get_domain (__isl_keep isl_cell *cell)
static __isl_give isl_cellisl_cell_alloc (__isl_take isl_vertices *vertices, __isl_take isl_basic_set *dom, int id)
__isl_null isl_cellisl_cell_free (__isl_take isl_cell *cell)
static struct isl_tabtab_for_shifted_cone (__isl_keep isl_basic_set *bset)
static __isl_give isl_vecisl_basic_set_interior_point (__isl_keep isl_basic_set *bset)
isl_stat isl_vertices_foreach_disjoint_cell (__isl_keep isl_vertices *vertices, isl_stat(*fn)(__isl_take isl_cell *cell, void *user), void *user)
isl_stat isl_vertices_foreach_cell (__isl_keep isl_vertices *vertices, isl_stat(*fn)(__isl_take isl_cell *cell, void *user), void *user)
isl_stat isl_vertices_foreach_vertex (__isl_keep isl_vertices *vertices, isl_stat(*fn)(__isl_take isl_vertex *vertex, void *user), void *user)
isl_stat isl_cell_foreach_vertex (__isl_keep isl_cell *cell, isl_stat(*fn)(__isl_take isl_vertex *vertex, void *user), void *user)
isl_ctxisl_vertices_get_ctx (__isl_keep isl_vertices *vertices)
isl_size isl_vertices_get_n_vertices (__isl_keep isl_vertices *vertices)
__isl_give isl_verticesisl_morph_vertices (__isl_take isl_morph *morph, __isl_take isl_vertices *vertices)
static isl_stat call_on_simplex (__isl_keep isl_cell *cell, int *simplex_ids, int n_simplex, int *other_ids, int n_other, isl_stat(*fn)(__isl_take isl_cell *simplex, void *user), void *user)
static int vertex_on_facet (__isl_keep isl_basic_set *vertex, __isl_keep isl_basic_set *bset, int facet, __isl_keep isl_vec *v)
static isl_stat triangulate (__isl_keep isl_cell *cell, __isl_keep isl_vec *v, int *simplex_ids, int n_simplex, int *other_ids, int n_other, isl_stat(*fn)(__isl_take isl_cell *simplex, void *user), void *user)
isl_stat isl_cell_foreach_simplex (__isl_take isl_cell *cell, isl_stat(*fn)(__isl_take isl_cell *simplex, void *user), void *user)

Macro Definition Documentation

◆ DESELECTED

#define DESELECTED   -1

Definition at line 23 of file isl_vertices.c.

Referenced by can_select(), and isl_basic_set_compute_vertices().

◆ SELECTED

#define SELECTED   1

Definition at line 22 of file isl_vertices.c.

Referenced by isl_basic_set_compute_vertices().

◆ UNSELECTED

#define UNSELECTED   0

Definition at line 24 of file isl_vertices.c.

Referenced by isl_basic_set_compute_vertices().

Function Documentation

◆ add_chamber()

◆ add_vertex()

◆ bset_covers_tab()

isl_bool bset_covers_tab ( __isl_keep isl_basic_set * bset,
struct isl_tab * tab )
static

◆ call_on_simplex()

isl_stat call_on_simplex ( __isl_keep isl_cell * cell,
int * simplex_ids,
int n_simplex,
int * other_ids,
int n_other,
isl_stat(* fn )(__isl_take isl_cell *simplex, void *user),
void * user )
static

◆ can_intersect()

◆ can_select()

◆ compute_chambers()

◆ create_todo()

◆ detect_implicit_equality_constraints()

◆ free_chamber_list()

void free_chamber_list ( struct isl_chamber_list * list)
static

◆ free_todo()

◆ free_vertex_list()

◆ has_opposite()

int has_opposite ( struct isl_facet_todo * todo,
struct isl_facet_todo ** list )
static

◆ init_todo()

◆ is_independent()

isl_bool is_independent ( __isl_keep isl_mat * facets,
int n,
isl_int * f )
static

◆ isl_basic_set_compute_vertices()

◆ isl_basic_set_interior_point()

◆ isl_cell_alloc()

◆ isl_cell_foreach_simplex()

◆ isl_cell_foreach_vertex()

isl_stat isl_cell_foreach_vertex ( __isl_keep isl_cell * cell,
isl_stat(* fn )(__isl_take isl_vertex *vertex, void *user),
void * user )

◆ isl_cell_free()

◆ isl_cell_get_ctx()

isl_ctx * isl_cell_get_ctx ( __isl_keep isl_cell * cell)

Definition at line 1120 of file isl_vertices.c.

References __isl_keep.

Referenced by call_on_simplex(), isl_cell_foreach_simplex(), and triangulate().

◆ isl_cell_get_domain()

__isl_give isl_basic_set * isl_cell_get_domain ( __isl_keep isl_cell * cell)

Definition at line 1125 of file isl_vertices.c.

References __isl_give, __isl_keep, isl_basic_set, and isl_basic_set_copy().

Referenced by add_cell().

◆ isl_morph_vertices()

◆ isl_vertex_alloc()

◆ isl_vertex_free()

__isl_null isl_vertex * isl_vertex_free ( __isl_take isl_vertex * vertex)

Definition at line 1110 of file isl_vertices.c.

References __isl_null, __isl_take, isl_vertices_free(), and isl_vertex::vertex.

Referenced by find_vertex().

◆ isl_vertex_get_ctx()

isl_ctx * isl_vertex_get_ctx ( __isl_keep isl_vertex * vertex)

Definition at line 1041 of file isl_vertices.c.

References __isl_keep, and isl_vertices_get_ctx().

Referenced by find_vertex().

◆ isl_vertex_get_domain()

◆ isl_vertex_get_expr()

◆ isl_vertex_get_id()

isl_size isl_vertex_get_id ( __isl_keep isl_vertex * vertex)

Definition at line 1046 of file isl_vertices.c.

References __isl_keep, and isl_size_error.

◆ isl_vertices_copy()

◆ isl_vertices_foreach_cell()

isl_stat isl_vertices_foreach_cell ( __isl_keep isl_vertices * vertices,
isl_stat(* fn )(__isl_take isl_cell *cell, void *user),
void * user )

◆ isl_vertices_foreach_disjoint_cell()

◆ isl_vertices_foreach_vertex()

isl_stat isl_vertices_foreach_vertex ( __isl_keep isl_vertices * vertices,
isl_stat(* fn )(__isl_take isl_vertex *vertex, void *user),
void * user )

◆ isl_vertices_free()

◆ isl_vertices_get_ctx()

isl_ctx * isl_vertices_get_ctx ( __isl_keep isl_vertices * vertices)

◆ isl_vertices_get_n_vertices()

isl_size isl_vertices_get_n_vertices ( __isl_keep isl_vertices * vertices)

Definition at line 1399 of file isl_vertices.c.

References __isl_keep, and isl_size_error.

Referenced by test_vertices().

◆ lower_dim_vertices()

◆ lower_dim_vertices_free()

__isl_give isl_vertices * lower_dim_vertices_free ( __isl_take isl_basic_set * bset,
__isl_take isl_basic_set * copy,
struct isl_tab * tab )
static

◆ tab_for_shifted_cone()

◆ triangulate()

isl_stat triangulate ( __isl_keep isl_cell * cell,
__isl_keep isl_vec * v,
int * simplex_ids,
int n_simplex,
int * other_ids,
int n_other,
isl_stat(* fn )(__isl_take isl_cell *simplex, void *user),
void * user )
static

◆ update_todo()

◆ vertex_on_facet()

int vertex_on_facet ( __isl_keep isl_basic_set * vertex,
__isl_keep isl_basic_set * bset,
int facet,
__isl_keep isl_vec * v )
static

◆ vertices_0D()

◆ vertices_add_chambers()

__isl_give isl_vertices * vertices_add_chambers ( __isl_take isl_vertices * vertices,
int n_chambers,
struct isl_chamber_list * list )
static

◆ vertices_empty()

◆ vertices_from_list()