20#define EL_BASE ast_expr
25#define EL_BASE ast_node
67 dup->print_user_user =
options->print_user_user;
125 options->print_user = print_user;
146 options->print_for = print_for;
164 ctx = isl_ast_expr_list_get_ctx(args);
174 expr->
u.
op.args = args;
178 isl_ast_expr_list_free(args);
189 isl_ast_expr_list *args;
191 args = isl_ast_expr_list_alloc(ctx,
n_arg);
211 switch (expr->type) {
220 isl_ast_expr_list_copy(expr->u.op.args));
253 switch (expr->type) {
261 isl_ast_expr_list_free(expr->u.op.args);
273 return expr ? expr->ctx : NULL;
289 "expression not an int",
return NULL);
306 "expression not an identifier",
return NULL);
337 return expr->u.op.op;
354 return isl_ast_expr_list_size(expr->u.op.args);
372 return isl_ast_expr_list_get_at(expr->u.op.args,
pos);
390 return isl_ast_expr_list_copy(expr->u.op.args);
405 isl_ast_expr_list *args;
411 args = expr->u.op.args;
412 expr->u.op.args = NULL;
427 if (expr->u.op.args == args) {
428 isl_ast_expr_list_free(args);
436 isl_ast_expr_list_free(expr->u.op.args);
437 expr->u.op.args = args;
442 isl_ast_expr_list_free(args);
451 isl_ast_expr_list *args;
454 args = isl_ast_expr_list_add(args,
arg);
465 isl_ast_expr_list *args;
468 args = isl_ast_expr_list_set_at(args,
pos,
arg);
482 if (!list1 || !list2)
487 n1 = isl_ast_expr_list_size(list1);
488 n2 = isl_ast_expr_list_size(list2);
489 if (n1 < 0 || n2 < 0)
493 for (i = 0; i < n1; ++i) {
497 expr1 = isl_ast_expr_list_get_at(list1, i);
498 expr2 = isl_ast_expr_list_get_at(list2, i);
514 if (!expr1 || !expr2)
519 if (expr1->type != expr2->type)
521 switch (expr1->type) {
527 if (expr1->u.op.op != expr2->u.op.op)
598 "expecting integer value",
goto error);
625 isl_ast_expr_list *args;
634 args = isl_ast_expr_list_add(args,
arg);
657 "can only take address of access expressions",
672 isl_ast_expr_list *args;
674 if (!expr1 || !expr2)
681 args = isl_ast_expr_list_add(args, expr1);
682 args = isl_ast_expr_list_add(args, expr2);
825 arguments = isl_ast_expr_list_insert(arguments, 0, arg0);
853 isl_id_to_ast_expr *id2expr =
user;
856 isl_id_to_ast_expr_copy(id2expr));
866 isl_maybe_isl_ast_expr
m;
867 isl_ast_expr_list *args;
869 if (!expr || !id2expr)
872 switch (expr->type) {
876 m = isl_id_to_ast_expr_try_get(id2expr, expr->u.id);
894 isl_id_to_ast_expr_free(id2expr);
898 isl_id_to_ast_expr_free(id2expr);
904 return node ? node->ctx : NULL;
1046 ctx = isl_ast_node_list_get_ctx(list);
1055 isl_ast_node_list_free(list);
1077 n = isl_ast_node_list_n_ast_node(list);
1083 node = isl_ast_node_list_get_ast_node(list, 0);
1084 isl_ast_node_list_free(list);
1088 isl_ast_node_list_free(list);
1117 switch (node->type) {
1122 if (!
dup->u.i.guard || !
dup->u.i.then ||
1123 (node->u.i.else_node && !
dup->u.i.else_node))
1127 dup->u.f.degenerate = node->u.f.degenerate;
1131 if (!
dup->u.f.iterator || !
dup->u.f.init || !
dup->u.f.body)
1133 if (node->u.f.degenerate)
1137 if (!
dup->u.f.cond || !
dup->u.f.inc)
1141 dup->u.b.children = isl_ast_node_list_copy(node->u.b.children);
1142 if (!
dup->u.b.children)
1148 if (!
dup->u.m.mark || !
dup->u.m.node)
1160 if (!node->annotation)
1163 if (!
dup->annotation)
1185 if (--node->ref > 0)
1188 switch (node->type) {
1202 isl_ast_node_list_free(node->u.b.children);
1229 if (node->type !=
type)
1240 "not a block node");
1275#define NODE_TYPE for
1277#define FIELD_NAME init
1279#define FIELD_TYPE isl_ast_expr
1281#define FIELD u.f.init
1285#define NODE_TYPE for
1287#define FIELD_NAME cond
1289#define FIELD_TYPE isl_ast_expr
1291#define FIELD u.f.cond
1295#define NODE_TYPE for
1297#define FIELD_NAME inc
1299#define FIELD_TYPE isl_ast_expr
1301#define FIELD u.f.inc
1305#define NODE_TYPE for
1307#define FIELD_NAME body
1309#define FIELD_TYPE isl_ast_node
1311#define FIELD u.f.body
1364 node->u.f.degenerate = 1;
1403 if (!node->u.f.degenerate)
1421 if (!node->u.f.degenerate)
1429#define FIELD_NAME then
1431#define FIELD_TYPE isl_ast_node
1433#define FIELD u.i.then
1454 then_node = node->
u.
i.
then;
1526#define FIELD_NAME else_node
1528#define FIELD_TYPE isl_ast_node
1530#define FIELD u.i.else_node
1565 return isl_ast_node_if_set_else_node(node, child);
1581 return isl_ast_node_list_copy(node->u.b.children);
1585#define NODE_TYPE block
1587#define FIELD_NAME children
1589#define FIELD_TYPE isl_ast_node_list
1591#define FIELD u.b.children
1607 isl_ast_node_list *children;
1613 children = node->u.b.children;
1614 node->u.b.children = NULL;
1626 return isl_ast_node_block_set_children(node, children);
1660#define NODE_TYPE mark
1662#define FIELD_NAME node
1664#define FIELD_TYPE isl_ast_node
1666#define FIELD u.m.node
1701 return isl_ast_node_mark_set_node(node, child);
1706 return node ?
isl_id_copy(node->annotation) : NULL;
1718#define NODE_TYPE any
1720#define FIELD_NAME annotation
1722#define FIELD_TYPE isl_id
1724#define FIELD annotation
1733 return isl_ast_node_any_set_annotation(node, annotation);
1738 int *more,
void *
user),
1752 int *more,
void *
user),
1760 n = isl_ast_node_list_size(list);
1762 return isl_ast_node_list_free(list);
1764 for (i = 0; i <
n; ++i) {
1767 node = isl_ast_node_list_get_at(list, i);
1769 list = isl_ast_node_list_set_at(list, i, node);
1786 int *more,
void *
user),
1794 isl_ast_node_list *children;
1796 node = enter(node, &more,
user);
1802 switch (node->type) {
1807 return leave(node,
user);
1816 return leave(node,
user);
1820 return leave(node,
user);
1825 return leave(node,
user);
1830 return leave(node,
user);
1832 return leave(node,
user);
1854 int *more,
void *
user)
1861 m = data->
fn(node, data->
user);
1916 int *more,
void *
user)
1934 node = data->
fn(node, data->
user);
2123 arg = isl_ast_expr_list_get_at(expr->u.op.args,
pos);
2137#define isl_ast_expr_op_last isl_ast_expr_op_address_of
2176 return isl_id_alloc(ctx,
"isl_ast_expr_op_type_names", NULL);
2185 void (*note_free)(
void *))
2199 note = note_create(ctx);
2289 if (has_names >= 0 && has_names)
2304 expr = isl_ast_expr_list_get_at(list,
pos);
2319 n = isl_ast_expr_list_size(expr->u.op.args);
2323 for (i = 1; i <
n; ++i) {
2328 for (i = 1; i <
n; ++i) {
2347 n = isl_ast_expr_list_size(expr->u.op.args);
2353 for (i = 1; i <
n; ++i) {
2373 n = isl_ast_expr_list_size(expr->u.op.args);
2378 for (i = 1; i <
n; ++i) {
2399 switch (expr->type) {
2409 n = isl_ast_expr_list_size(expr->u.op.args);
2446 "operation should have two arguments",
2525 for (i = 0; i <
n; ++i) {
2618 "output format not supported for ast_expr",
2626#define KEY enum isl_ast_expr_op_type
2628#define KEY_ERROR isl_ast_expr_op_error
2630#define KEY_END (isl_ast_expr_op_address_of + 1)
2632#define KEY_STR op_str
2634#define KEY_EXTRACT extract_op_type
2636#define KEY_GET get_op_type
2687#define EL_BASE ast_expr
2700 isl_ast_expr_list *list;
2702 op = get_op_type(
s);
2710 list = isl_stream_yaml_read_ast_expr_list(
s);
2732#define KEY enum isl_ast_expr_type
2734#define KEY_ERROR isl_ast_expr_error
2736#define KEY_END (isl_ast_expr_int + 1)
2738#define KEY_STR expr_str
2740#define KEY_EXTRACT extract_expr_type
2742#define KEY_GET get_expr_type
2770 type = get_expr_type(
s);
2806 n = isl_ast_node_list_n_ast_node(list);
2811 for (i = 0; i <
n; ++i) {
2814 node = isl_ast_node_list_get_ast_node(list, i);
2831 switch (node->type) {
2838 if (node->u.f.degenerate) {
2857 if (node->u.f.body) {
2889 if (node->u.i.then) {
2895 if (node->u.i.else_node) {
2977 if (!force_block && !else_node && !
need_block(node)) {
3059 if (!node->u.f.degenerate) {
3082 if (!in_block || in_list)
3093 if (!in_block || in_list)
3133 switch (node->type) {
3138 node,
options->print_for_user);
3162 node,
options->print_user_user);
3259 "output format not supported for ast_node",
3277 for (i = 0; i < list->n; ++i)
3305#define EL_BASE ast_node
3313 isl_ast_node_list *children;
3315 children = isl_stream_yaml_read_ast_node_list(
s);
3334#define KEY enum isl_ast_node_type
3336#define KEY_ERROR isl_ast_node_error
3338#define KEY_END (isl_ast_node_user + 1)
3340#define KEY_STR node_first_str
3342#define KEY_EXTRACT extract_node_type
3344#define KEY_GET get_node_type
3373 int is_value, is_init;
3388 is_value = !strcmp(
key,
"value");
3389 is_init = !strcmp(
key,
"init");
3391 if (!is_value && !is_init)
3528 type = get_node_type(
s);
3537 "block cannot be detected as mapping",
3561#define ISL_AST_MACRO_FDIV_Q (1 << 0)
3562#define ISL_AST_MACRO_MIN (1 << 1)
3563#define ISL_AST_MACRO_MAX (1 << 2)
3564#define ISL_AST_MACRO_ALL (ISL_AST_MACRO_FDIV_Q | \
3565 ISL_AST_MACRO_MIN | \
3601 isl_ast_expr_list_foreach(expr->u.op.args,
3618 switch (node->type) {
3621 if (!node->u.f.degenerate) {
3632 if (node->u.i.else_node)
3661 for (i = 0; i < list->n; ++i)
3702 return isl_id_alloc(ctx,
"isl_ast_expr_op_type_printed", NULL);
3768 "(x,y) ((x) < (y) ? (x) : (y))");
3776 "(x,y) ((x) > (y) ? (x) : (y))");
3785 "(((n)<0) ? -((-(n)+(d)-1)/(d)) : (n)/(d))");
int isl_options_get_ast_print_macro_once(isl_ctx *ctx)
int isl_options_get_ast_always_print_block(isl_ctx *ctx)
int isl_options_get_ast_print_outermost_block(isl_ctx *ctx)
const char * isl_options_get_ast_iterator_type(isl_ctx *ctx)
@ isl_ast_expr_op_and_then
@ isl_ast_expr_op_address_of
@ isl_ast_expr_op_or_else
isl_stat isl_stat_non_null(void *obj)
#define isl_calloc_type(ctx, type)
#define isl_die(ctx, errno, msg, code)
void isl_ctx_deref(struct isl_ctx *ctx)
isl_bool isl_bool_ok(int b)
void isl_ctx_ref(struct isl_ctx *ctx)
isl_bool __isl_keep ISL_KEY * key
isl_stat isl_stat(* fn)(__isl_take ISL_KEY *key, __isl_take ISL_VAL *val, void *user)
isl_stat isl_stat(*) void user)
__isl_export __isl_keep const char * isl_id_get_name(__isl_keep isl_id *id)
__isl_give isl_printer * isl_printer_print_id(__isl_take isl_printer *p, __isl_keep isl_id *id)
__isl_null isl_id * isl_id_free(__isl_take isl_id *id)
isl_ctx * isl_id_get_ctx(__isl_keep isl_id *id)
void * isl_id_get_user(__isl_keep isl_id *id)
__isl_give isl_id * isl_id_copy(isl_id *id)
__isl_give isl_id * isl_id_alloc(isl_ctx *ctx, __isl_keep const char *name, void *user)
__isl_give isl_id * isl_id_set_free_user(__isl_take isl_id *id, void(*free_user)(void *user))
static int n_arg(struct isl_arg *arg)
__isl_give isl_ast_expr * isl_ast_expr_pdiv_q(__isl_take isl_ast_expr *expr1, __isl_take isl_ast_expr *expr2)
static __isl_give isl_ast_node * isl_ast_node_if_restore_else_node(__isl_take isl_ast_node *node, __isl_take isl_ast_node *child)
__isl_give isl_ast_node_list * isl_ast_node_block_get_children(__isl_keep isl_ast_node *node)
static __isl_give isl_ast_node * isl_ast_node_for_take_body(__isl_keep isl_ast_node *node)
static static __isl_give isl_ast_node_list * isl_ast_node_block_take_children(__isl_keep isl_ast_node *node)
static isl_stat isl_ast_node_check_if(__isl_keep isl_ast_node *node)
__isl_give isl_ast_print_options * isl_ast_print_options_dup(__isl_keep isl_ast_print_options *options)
__isl_give isl_ast_expr * isl_ast_expr_ge(__isl_take isl_ast_expr *expr1, __isl_take isl_ast_expr *expr2)
static void free_names(void *user)
__isl_give isl_ast_expr * isl_ast_node_for_get_iterator(__isl_keep isl_ast_node *node)
__isl_give isl_ast_expr * isl_ast_expr_substitute_ids(__isl_take isl_ast_expr *expr, __isl_take isl_id_to_ast_expr *id2expr)
__isl_give isl_ast_node * isl_ast_node_if_get_then_node(__isl_keep isl_ast_node *node)
static __isl_give isl_printer * print_ast_node_isl(__isl_take isl_printer *p, __isl_keep isl_ast_node *node)
__isl_give isl_ast_expr * isl_ast_expr_access(__isl_take isl_ast_expr *array, __isl_take isl_ast_expr_list *indices)
__isl_give isl_ast_node * isl_ast_node_copy(__isl_keep isl_ast_node *node)
__isl_give isl_ast_expr * isl_ast_expr_call(__isl_take isl_ast_expr *function, __isl_take isl_ast_expr_list *arguments)
static static __isl_give isl_ast_node * isl_ast_node_if_take_else_node(__isl_keep isl_ast_node *node)
__isl_give isl_ast_node * isl_ast_node_user_from_expr(__isl_take isl_ast_expr *expr)
__isl_give isl_printer * isl_ast_node_list_print(__isl_keep isl_ast_node_list *list, __isl_take isl_printer *p, __isl_keep isl_ast_print_options *options)
__isl_give isl_ast_expr * isl_ast_node_for_get_cond(__isl_keep isl_ast_node *node)
static __isl_give isl_printer * print_sub_expr_c(__isl_take isl_printer *p, __isl_keep isl_ast_expr *expr, int pos, int left)
__isl_give isl_id * isl_ast_node_mark_get_id(__isl_keep isl_ast_node *node)
static isl_bool next_is_sequence(__isl_keep isl_stream *s)
static isl_stat isl_ast_node_check_any(__isl_keep isl_ast_node *node)
static __isl_give isl_printer * alloc_note(__isl_take isl_printer *p, __isl_keep isl_id *id, void *(*note_create)(isl_ctx *), void(*note_free)(void *))
static __isl_give isl_ast_expr_list * isl_ast_expr_op_take_args(__isl_keep isl_ast_expr *expr)
__isl_null isl_ast_expr * isl_ast_expr_free(__isl_take isl_ast_expr *expr)
static __isl_give isl_ast_node * postorder_enter(__isl_take isl_ast_node *node, int *more, void *user)
__isl_give isl_ast_node * isl_ast_node_dup(__isl_keep isl_ast_node *node)
static __isl_give isl_ast_expr_list * isl_ast_expr_op_get_args(__isl_keep isl_ast_expr *expr)
__isl_give isl_printer * isl_ast_node_print(__isl_keep isl_ast_node *node, __isl_take isl_printer *p, __isl_take isl_ast_print_options *options)
static __isl_give isl_printer * end_block(__isl_take isl_printer *p)
__isl_give isl_ast_expr * isl_ast_expr_gt(__isl_take isl_ast_expr *expr1, __isl_take isl_ast_expr *expr2)
static __isl_give isl_ast_node * traverse(__isl_take isl_ast_node *node, __isl_give isl_ast_node *(*enter)(__isl_take isl_ast_node *node, int *more, void *user), __isl_give isl_ast_node *(*leave)(__isl_take isl_ast_node *node, void *user), void *user)
#define isl_ast_expr_op_last
static __isl_give isl_ast_node * read_body(__isl_keep isl_stream *s, __isl_take isl_ast_node *node)
#define ISL_AST_MACRO_MAX
enum isl_ast_expr_op_type isl_ast_expr_op_get_type(__isl_keep isl_ast_expr *expr)
__isl_give isl_ast_expr * isl_ast_expr_address_of(__isl_take isl_ast_expr *expr)
static __isl_give isl_printer * print_arguments(__isl_take isl_printer *p, __isl_keep isl_ast_expr *expr)
__isl_give isl_ast_node * isl_ast_node_for_mark_degenerate(__isl_take isl_ast_node *node)
__isl_give isl_ast_node * isl_ast_node_from_ast_node_list(__isl_take isl_ast_node_list *list)
isl_stat isl_ast_node_foreach_descendant_top_down(__isl_keep isl_ast_node *node, isl_bool(*fn)(__isl_keep isl_ast_node *node, void *user), void *user)
__isl_give isl_printer * isl_ast_op_type_print_macro(enum isl_ast_expr_op_type type, __isl_take isl_printer *p)
__isl_give isl_ast_print_options * isl_ast_print_options_alloc(isl_ctx *ctx)
static __isl_give isl_ast_node * read_mark(__isl_keep isl_stream *s)
static void * create_names(isl_ctx *ctx)
static int ast_node_list_required_macros(__isl_keep isl_ast_node_list *list, int macros)
isl_size isl_ast_expr_get_op_n_arg(__isl_keep isl_ast_expr *expr)
__isl_give isl_ast_expr * isl_ast_expr_op_get_arg(__isl_keep isl_ast_expr *expr, int pos)
enum isl_ast_expr_op_type isl_ast_expr_get_op_type(__isl_keep isl_ast_expr *expr)
__isl_give isl_ast_expr * isl_ast_expr_get_op_arg(__isl_keep isl_ast_expr *expr, int pos)
__isl_give isl_ast_expr * isl_ast_expr_div(__isl_take isl_ast_expr *expr1, __isl_take isl_ast_expr *expr2)
static __isl_give isl_ast_node * postorder_leave(__isl_take isl_ast_node *node, void *user)
static __isl_give isl_printer * print_call_c(__isl_take isl_printer *p, __isl_keep isl_ast_expr *expr)
__isl_give isl_ast_expr * isl_ast_expr_neg(__isl_take isl_ast_expr *arg)
static int sub_expr_need_parens(enum isl_ast_expr_op_type op, __isl_keep isl_ast_expr *expr, int left)
static __isl_give isl_printer * print_at_c(__isl_take isl_printer *p, __isl_keep isl_ast_expr_list *list, int pos)
static isl_stat eat_key(__isl_keep isl_stream *s, const char *expected)
enum isl_ast_expr_type isl_ast_expr_get_type(__isl_keep isl_ast_expr *expr)
__isl_give isl_printer * isl_ast_expr_op_type_print_macro(enum isl_ast_expr_op_type type, __isl_take isl_printer *p)
static __isl_give isl_id * names_id(isl_ctx *ctx)
static __isl_give isl_ast_node * isl_ast_node_block_restore_children(__isl_take isl_ast_node *node, __isl_take isl_ast_node_list *children)
isl_ctx * isl_ast_expr_get_ctx(__isl_keep isl_ast_expr *expr)
__isl_give isl_ast_expr * isl_ast_expr_or(__isl_take isl_ast_expr *expr1, __isl_take isl_ast_expr *expr2)
static __isl_give isl_printer * print_ast_expr_isl(__isl_take isl_printer *p, __isl_keep isl_ast_expr *expr)
__isl_give isl_printer * isl_ast_node_if_print(__isl_keep isl_ast_node *node, __isl_take isl_printer *p, __isl_take isl_ast_print_options *options)
static __isl_give isl_id * printed_id(isl_ctx *ctx)
__isl_give isl_ast_print_options * isl_ast_print_options_set_print_user(__isl_take isl_ast_print_options *options, __isl_give isl_printer *(*print_user)(__isl_take isl_printer *p, __isl_take isl_ast_print_options *options, __isl_keep isl_ast_node *node, void *user), void *user)
__isl_give isl_ast_node * isl_ast_node_if_get_else_node(__isl_keep isl_ast_node *node)
static __isl_give isl_printer * print_ast_node_c(__isl_take isl_printer *p, __isl_keep isl_ast_node *node, __isl_keep isl_ast_print_options *options, int in_block, int in_list)
static __isl_give isl_printer * start_block(__isl_take isl_printer *p)
static __isl_give isl_printer * print_body_c(__isl_take isl_printer *p, __isl_keep isl_ast_node *node, __isl_keep isl_ast_node *else_node, __isl_keep isl_ast_print_options *options, int force_block)
static void free_printed(void *user)
isl_stat isl_ast_node_foreach_ast_expr_op_type(__isl_keep isl_ast_node *node, isl_stat(*fn)(enum isl_ast_expr_op_type type, void *user), void *user)
static __isl_give isl_printer * print_if_c(__isl_take isl_printer *p, __isl_keep isl_ast_node *node, __isl_keep isl_ast_print_options *options, int new_line, int force_block)
static void * get_note(__isl_keep isl_printer *p, __isl_keep isl_id *id)
isl_stat isl_ast_node_foreach_ast_op_type(__isl_keep isl_ast_node *node, isl_stat(*fn)(enum isl_ast_expr_op_type type, void *user), void *user)
__isl_give isl_printer * isl_printer_print_ast_node(__isl_take isl_printer *p, __isl_keep isl_ast_node *node)
static __isl_give isl_ast_expr * substitute_ids(__isl_take isl_ast_expr *expr, void *user)
__isl_give isl_ast_expr * isl_ast_expr_op_add_arg(__isl_take isl_ast_expr *expr, __isl_take isl_ast_expr *arg)
__isl_give isl_ast_node * isl_ast_node_if_get_else(__isl_keep isl_ast_node *node)
static __isl_give isl_ast_node * isl_ast_node_set_annotation(__isl_take isl_ast_node *node, __isl_take isl_id *annotation)
static __isl_give isl_ast_node * isl_ast_node_mark_restore_node(__isl_take isl_ast_node *node, __isl_take isl_ast_node *child)
static __isl_give isl_ast_node * preorder_enter(__isl_take isl_ast_node *node, int *more, void *user)
static __isl_give isl_ast_expr * ast_expr_with_arguments(enum isl_ast_expr_op_type type, __isl_take isl_ast_expr *arg0, __isl_take isl_ast_expr_list *arguments)
__isl_give isl_ast_expr * isl_ast_expr_le(__isl_take isl_ast_expr *expr1, __isl_take isl_ast_expr *expr2)
isl_bool isl_ast_expr_is_equal(__isl_keep isl_ast_expr *expr1, __isl_keep isl_ast_expr *expr2)
__isl_give isl_ast_expr * isl_ast_expr_mul(__isl_take isl_ast_expr *expr1, __isl_take isl_ast_expr *expr2)
static __isl_give isl_printer * print_for_c(__isl_take isl_printer *p, __isl_keep isl_ast_node *node, __isl_keep isl_ast_print_options *options, int in_block, int in_list)
static int is_add_sub(enum isl_ast_expr_op_type op)
__isl_give isl_ast_node * isl_ast_node_alloc_block(__isl_take isl_ast_node_list *list)
__isl_give isl_id * isl_ast_expr_get_id(__isl_keep isl_ast_expr *expr)
static isl_stat entry_required_macros(__isl_take isl_ast_expr *expr, void *user)
__isl_give isl_ast_node * isl_ast_node_block_from_children(__isl_take isl_ast_node_list *list)
static __isl_give isl_ast_expr * read_int(__isl_keep isl_stream *s)
static __isl_give isl_printer * alloc_printed(__isl_take isl_printer *p, __isl_keep isl_id *id)
__isl_give isl_printer * isl_ast_node_for_print(__isl_keep isl_ast_node *node, __isl_take isl_printer *p, __isl_take isl_ast_print_options *options)
#define ISL_AST_MACRO_ALL
static __isl_give isl_ast_node_list * traverse_list(__isl_take isl_ast_node_list *list, __isl_give isl_ast_node *(*enter)(__isl_take isl_ast_node *node, int *more, void *user), __isl_give isl_ast_node *(*leave)(__isl_take isl_ast_node *node, void *user), void *user)
static int is_div_mod(enum isl_ast_expr_op_type op)
static __isl_give isl_ast_node * read_if(__isl_keep isl_stream *s)
static __isl_give isl_ast_expr * isl_ast_expr_op_restore_args(__isl_take isl_ast_expr *expr, __isl_take isl_ast_expr_list *args)
__isl_give isl_ast_node * isl_ast_node_cow(__isl_take isl_ast_node *node)
__isl_give isl_ast_print_options * isl_ast_print_options_set_print_for(__isl_take isl_ast_print_options *options, __isl_give isl_printer *(*print_for)(__isl_take isl_printer *p, __isl_take isl_ast_print_options *options, __isl_keep isl_ast_node *node, void *user), void *user)
__isl_give isl_ast_expr * isl_ast_expr_or_else(__isl_take isl_ast_expr *expr1, __isl_take isl_ast_expr *expr2)
static __isl_give isl_ast_expr * read_op(__isl_keep isl_stream *s)
__isl_give isl_ast_print_options * isl_ast_print_options_copy(__isl_keep isl_ast_print_options *options)
__isl_give isl_printer * isl_ast_op_type_set_print_name(__isl_take isl_printer *p, enum isl_ast_expr_op_type type, __isl_keep const char *name)
static isl_bool isl_ast_expr_list_is_equal(__isl_keep isl_ast_expr_list *list1, __isl_keep isl_ast_expr_list *list2)
__isl_give isl_ast_expr * isl_ast_expr_dup(__isl_keep isl_ast_expr *expr)
isl_ctx * isl_ast_print_options_get_ctx(__isl_keep isl_ast_print_options *options)
static isl_stat isl_ast_node_check_mark(__isl_keep isl_ast_node *node)
__isl_give isl_ast_expr * isl_ast_expr_alloc_int_si(isl_ctx *ctx, int i)
__isl_give isl_val * isl_ast_expr_get_val(__isl_keep isl_ast_expr *expr)
__isl_give char * isl_ast_expr_to_C_str(__isl_keep isl_ast_expr *expr)
__isl_give isl_ast_node * isl_ast_node_alloc_for(__isl_take isl_id *id)
#define ISL_AST_MACRO_MIN
__isl_give isl_ast_expr * isl_ast_expr_alloc_unary(enum isl_ast_expr_op_type type, __isl_take isl_ast_expr *arg)
__isl_give isl_printer * isl_ast_node_print_macros(__isl_keep isl_ast_node *node, __isl_take isl_printer *p)
static __isl_give isl_ast_node * isl_ast_node_if_restore_then_node(__isl_take isl_ast_node *node, __isl_take isl_ast_node *child)
static isl_stat isl_ast_node_check_for(__isl_keep isl_ast_node *node)
#define ISL_AST_MACRO_FDIV_Q
__isl_give isl_ast_expr * isl_ast_expr_and_then(__isl_take isl_ast_expr *expr1, __isl_take isl_ast_expr *expr2)
static __isl_give isl_ast_expr * alloc_op(enum isl_ast_expr_op_type op, __isl_take isl_ast_expr_list *args)
__isl_give isl_ast_expr * isl_ast_expr_alloc_binary(enum isl_ast_expr_op_type type, __isl_take isl_ast_expr *expr1, __isl_take isl_ast_expr *expr2)
__isl_give isl_ast_expr * isl_ast_expr_add(__isl_take isl_ast_expr *expr1, __isl_take isl_ast_expr *expr2)
static int need_block(__isl_keep isl_ast_node *node)
__isl_give isl_val * isl_ast_expr_int_get_val(__isl_keep isl_ast_expr *expr)
static const char * get_op_str_c(__isl_keep isl_printer *p, enum isl_ast_expr_op_type type)
static __isl_give isl_ast_node * isl_ast_node_for_restore_body(__isl_take isl_ast_node *node, __isl_take isl_ast_node *body)
static int is_and(enum isl_ast_expr_op_type op)
__isl_give isl_ast_print_options * isl_ast_print_options_cow(__isl_take isl_ast_print_options *options)
static __isl_give char * next_key(__isl_keep isl_stream *s)
static __isl_give isl_ast_node * read_for(__isl_keep isl_stream *s)
__isl_give isl_ast_expr * isl_ast_expr_from_id(__isl_take isl_id *id)
__isl_give isl_ast_expr * isl_ast_expr_sub(__isl_take isl_ast_expr *expr1, __isl_take isl_ast_expr *expr2)
__isl_give isl_ast_expr * isl_ast_expr_pdiv_r(__isl_take isl_ast_expr *expr1, __isl_take isl_ast_expr *expr2)
static isl_stat isl_ast_expr_check_op(__isl_keep isl_ast_expr *expr)
__isl_give isl_ast_node * isl_stream_read_ast_node(__isl_keep isl_stream *s)
__isl_give isl_ast_expr * isl_ast_expr_set_op_arg(__isl_take isl_ast_expr *expr, int pos, __isl_take isl_ast_expr *arg)
__isl_give isl_ast_node * isl_ast_node_alloc(isl_ctx *ctx, enum isl_ast_node_type type)
__isl_give isl_ast_node * isl_ast_node_map_descendant_bottom_up(__isl_take isl_ast_node *node, __isl_give isl_ast_node *(*fn)(__isl_take isl_ast_node *node, void *user), void *user)
static __isl_give isl_ast_node * preorder_leave(__isl_take isl_ast_node *node, void *user)
__isl_give isl_ast_expr * isl_ast_node_for_get_init(__isl_keep isl_ast_node *node)
isl_size isl_ast_expr_op_get_n_arg(__isl_keep isl_ast_expr *expr)
isl_bool isl_ast_node_for_is_degenerate(__isl_keep isl_ast_node *node)
__isl_give isl_id * isl_ast_node_get_annotation(__isl_keep isl_ast_node *node)
__isl_give isl_ast_expr * isl_ast_expr_from_val(__isl_take isl_val *v)
static int ast_expr_required_macros(__isl_keep isl_ast_expr *expr, int macros)
isl_stat isl_ast_expr_foreach_ast_expr_op_type(__isl_keep isl_ast_expr *expr, isl_stat(*fn)(enum isl_ast_expr_op_type type, void *user), void *user)
static isl_stat ast_op_type_print_macro(enum isl_ast_expr_op_type type, void *user)
static int is_or(enum isl_ast_expr_op_type op)
static void * create_printed(isl_ctx *ctx)
__isl_give isl_ast_node * isl_ast_node_mark_get_node(__isl_keep isl_ast_node *node)
__isl_null isl_ast_print_options * isl_ast_print_options_free(__isl_take isl_ast_print_options *options)
static __isl_give isl_ast_node * isl_ast_node_if_take_then_node(__isl_keep isl_ast_node *node)
__isl_null isl_ast_node * isl_ast_node_free(__isl_take isl_ast_node *node)
__isl_give isl_ast_node * isl_ast_node_if_get_then(__isl_keep isl_ast_node *node)
static int ast_node_required_macros(__isl_keep isl_ast_node *node, int macros)
__isl_give isl_ast_expr * isl_ast_expr_lt(__isl_take isl_ast_expr *expr1, __isl_take isl_ast_expr *expr2)
static __isl_give isl_printer * print_ast_node_list(__isl_take isl_printer *p, __isl_keep isl_ast_node_list *list)
static isl_stat isl_ast_node_check_block(__isl_keep isl_ast_node *node)
__isl_give isl_ast_expr * isl_stream_read_ast_expr(__isl_keep isl_stream *s)
__isl_give isl_ast_expr * isl_ast_expr_eq(__isl_take isl_ast_expr *expr1, __isl_take isl_ast_expr *expr2)
enum isl_ast_node_type isl_ast_node_get_type(__isl_keep isl_ast_node *node)
__isl_give isl_ast_expr * isl_ast_expr_and(__isl_take isl_ast_expr *expr1, __isl_take isl_ast_expr *expr2)
static isl_stat foreach_ast_expr_op_type(int macros, isl_stat(*fn)(enum isl_ast_expr_op_type type, void *user), void *user)
static isl_stat isl_ast_node_check_type(__isl_keep isl_ast_node *node, enum isl_ast_node_type type, const char *msg)
__isl_give isl_ast_expr * isl_ast_expr_cow(__isl_take isl_ast_expr *expr)
__isl_give isl_ast_node * isl_ast_node_for_get_body(__isl_keep isl_ast_node *node)
static __isl_give isl_ast_node * read_user(__isl_keep isl_stream *s)
static isl_bool already_printed_once(__isl_keep isl_printer *p, enum isl_ast_expr_op_type type)
__isl_give isl_ast_expr * isl_ast_node_if_get_cond(__isl_keep isl_ast_node *node)
static __isl_give isl_printer * print_access_c(__isl_take isl_printer *p, __isl_keep isl_ast_expr *expr)
__isl_give isl_printer * isl_ast_expr_print_macros(__isl_keep isl_ast_expr *expr, __isl_take isl_printer *p)
static isl_stat isl_ast_node_check_user(__isl_keep isl_ast_node *node)
__isl_give isl_ast_node * isl_ast_node_alloc_if(__isl_take isl_ast_expr *guard)
isl_bool isl_ast_node_if_has_else(__isl_keep isl_ast_node *node)
isl_ctx * isl_ast_node_get_ctx(__isl_keep isl_ast_node *node)
isl_bool isl_ast_node_if_has_else_node(__isl_keep isl_ast_node *node)
static __isl_give isl_printer * print_ast_expr_c(__isl_take isl_printer *p, __isl_keep isl_ast_expr *expr)
__isl_give isl_printer * isl_ast_expr_op_type_set_print_name(__isl_take isl_printer *p, enum isl_ast_expr_op_type type, __isl_keep const char *name)
__isl_give isl_printer * isl_printer_print_ast_expr(__isl_take isl_printer *p, __isl_keep isl_ast_expr *expr)
__isl_give isl_id * isl_ast_expr_id_get_id(__isl_keep isl_ast_expr *expr)
static __isl_give isl_ast_node * read_block(__isl_keep isl_stream *s)
static static __isl_give isl_ast_node * isl_ast_node_mark_take_node(__isl_keep isl_ast_node *node)
static __isl_give isl_printer * alloc_names(__isl_take isl_printer *p, __isl_keep isl_id *id)
__isl_give isl_ast_node * isl_ast_node_alloc_mark(__isl_take isl_id *id, __isl_take isl_ast_node *node)
__isl_give char * isl_ast_node_to_C_str(__isl_keep isl_ast_node *node)
__isl_give isl_ast_expr * isl_ast_expr_copy(__isl_keep isl_ast_expr *expr)
isl_stat isl_ast_expr_foreach_ast_op_type(__isl_keep isl_ast_expr *expr, isl_stat(*fn)(enum isl_ast_expr_op_type type, void *user), void *user)
static char * node_first_str[]
__isl_give isl_ast_expr * isl_ast_expr_alloc_op(isl_ctx *ctx, enum isl_ast_expr_op_type op, int n_arg)
__isl_give isl_ast_expr * isl_ast_node_for_get_inc(__isl_keep isl_ast_node *node)
__isl_give isl_ast_node * isl_ast_node_alloc_user(__isl_take isl_ast_expr *expr)
static __isl_give isl_ast_expr * read_id(__isl_keep isl_stream *s)
static __isl_give isl_printer * print_min_max_c(__isl_take isl_printer *p, __isl_keep isl_ast_expr *expr)
__isl_give isl_ast_expr * isl_ast_node_user_get_expr(__isl_keep isl_ast_node *node)
__isl_give isl_ast_node * isl_ast_node_if_set_then(__isl_take isl_ast_node *node, __isl_take isl_ast_node *child)
__isl_give isl_ast_node * isl_ast_node_for_set_init(__isl_take isl_ast_node *node, __isl_take isl_ast_expr *init)
__isl_give isl_ast_node * isl_ast_node_for_set_body(__isl_take isl_ast_node *node, __isl_take isl_ast_node *body)
__isl_give isl_ast_node * isl_ast_node_for_set_inc(__isl_take isl_ast_node *node, __isl_take isl_ast_expr *init)
__isl_give isl_ast_node * isl_ast_node_for_set_cond(__isl_take isl_ast_node *node, __isl_take isl_ast_expr *init)
__isl_give dup(__isl_keep LIST(EL) *list)
static unsigned pos(__isl_keep isl_space *space, enum isl_dim_type type)
__isl_give isl_val *(* op)(__isl_take isl_val *v)
__isl_give isl_printer * isl_printer_yaml_start_mapping(__isl_take isl_printer *p)
__isl_give isl_printer * isl_printer_yaml_next(__isl_take isl_printer *p)
__isl_null isl_printer * isl_printer_free(__isl_take isl_printer *printer)
isl_bool isl_printer_has_note(__isl_keep isl_printer *p, __isl_keep isl_id *id)
__isl_give char * isl_printer_get_str(__isl_keep isl_printer *printer)
int isl_printer_get_output_format(__isl_keep isl_printer *p)
__isl_give isl_printer * isl_printer_set_note(__isl_take isl_printer *p, __isl_take isl_id *id, __isl_take isl_id *note)
__isl_give isl_printer * isl_printer_yaml_end_mapping(__isl_take isl_printer *p)
__isl_give isl_printer * isl_printer_yaml_end_sequence(__isl_take isl_printer *p)
__isl_give isl_printer * isl_printer_yaml_start_sequence(__isl_take isl_printer *p)
__isl_give isl_printer * isl_printer_print_str(__isl_take isl_printer *p, const char *s)
__isl_give isl_printer * isl_printer_start_line(__isl_take isl_printer *p)
__isl_give isl_printer * isl_printer_indent(__isl_take isl_printer *p, int indent)
__isl_give isl_printer * isl_printer_to_str(isl_ctx *ctx)
isl_ctx * isl_printer_get_ctx(__isl_keep isl_printer *printer)
__isl_give isl_printer * isl_printer_end_line(__isl_take isl_printer *p)
__isl_give isl_id * isl_printer_get_note(__isl_keep isl_printer *p, __isl_take isl_id *id)
__isl_give isl_printer * isl_printer_set_output_format(__isl_take isl_printer *p, int output_format)
void isl_stream_error(__isl_keep isl_stream *s, struct isl_token *tok, char *msg)
void isl_token_free(struct isl_token *tok)
__isl_give isl_val * isl_stream_read_val(__isl_keep isl_stream *s)
isl_bool isl_stream_yaml_next(__isl_keep isl_stream *s)
void isl_stream_push_token(__isl_keep isl_stream *s, struct isl_token *tok)
isl_ctx * isl_stream_get_ctx(__isl_keep isl_stream *s)
isl_stat isl_stream_yaml_read_start_mapping(__isl_keep isl_stream *s)
struct isl_token * isl_stream_next_token(__isl_keep isl_stream *s)
isl_stat isl_stream_yaml_read_end_mapping(__isl_keep isl_stream *s)
__isl_give char * isl_token_get_str(isl_ctx *ctx, struct isl_token *tok)
int isl_token_get_type(struct isl_token *tok)
__isl_give isl_id * isl_stream_read_id(__isl_keep isl_stream *s)
char * op_str[isl_ast_expr_op_last+1]
char printed[isl_ast_expr_op_last+1]
enum isl_ast_expr_type type
enum isl_ast_expr_op_type op
union isl_ast_expr::@12 u
__isl_give isl_ast_node *(* fn)(__isl_take isl_ast_node *node, void *user)
isl_bool(* fn)(__isl_keep isl_ast_node *node, void *user)
struct isl_ast_node::@14::@18 e
struct isl_ast_node::@14::@19 m
struct isl_ast_node::@14::@15 b
struct isl_ast_node::@14::@16 i
union isl_ast_node::@14 u
struct isl_ast_node::@14::@17 f
isl_ast_node_list * children
enum isl_ast_node_type type
__isl_give isl_val * isl_val_copy(__isl_keep isl_val *v)
__isl_give isl_printer * isl_printer_print_val(__isl_take isl_printer *p, __isl_keep isl_val *v)
__isl_constructor __isl_give isl_val * isl_val_int_from_si(isl_ctx *ctx, long i)
isl_ctx * isl_val_get_ctx(__isl_keep isl_val *val)
__isl_null isl_val * isl_val_free(__isl_take isl_val *v)
__isl_export isl_bool isl_val_eq(__isl_keep isl_val *v1, __isl_keep isl_val *v2)
__isl_export isl_bool isl_val_is_int(__isl_keep isl_val *v)