From f6212f9481c72e823cd05d44aebf67600f0e7f31 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Sat, 7 Feb 2015 23:12:17 -0600 Subject: [PATCH] Add a wrapper for Barvinok --- gen_wrap.py | 27 +- isl_declaration_macros.h | 4 + isl_declaration_macros_expanded.h | 4 + isl_declaration_macros_expanded_v14.h | 2429 +++++++++++++++++ regenerate-isl-declaration-macros-expanded.sh | 18 +- setup.py | 31 +- src/wrapper/wrap_isl.hpp | 14 + src/wrapper/wrap_isl_part1.cpp | 8 + test/test_isl.py | 2 + 9 files changed, 2529 insertions(+), 8 deletions(-) create mode 100644 isl_declaration_macros_expanded_v14.h diff --git a/gen_wrap.py b/gen_wrap.py index 84f450b..7735cad 100644 --- a/gen_wrap.py +++ b/gen_wrap.py @@ -1057,9 +1057,22 @@ def write_wrappers(expf, wrapf, methods): print("SKIP (%d undocumented methods): %s" % (len(undoc), ", ".join(undoc))) -def gen_wrapper(include_dirs): +ADD_VERSIONS = { + "union_pw_aff": 15, + "multi_union_pw_aff": 15, + "basic_map_list": 15, + "map_list": 15, + "union_set_list": 15, + } + + +def gen_wrapper(include_dirs, include_barvinok=False, isl_version=None): fdata = FunctionData(["."] + include_dirs) - fdata.read_header("isl_declaration_macros_expanded.h") + if isl_version is None: + fdata.read_header("isl_declaration_macros_expanded.h") + else: + fdata.read_header("isl_declaration_macros_expanded_v%d.h" + % isl_version) fdata.read_header("isl/id.h") fdata.read_header("isl/space.h") fdata.read_header("isl/set.h") @@ -1083,10 +1096,20 @@ def gen_wrapper(include_dirs): fdata.read_header("isl/ast.h") fdata.read_header("isl/ast_build.h") + if include_barvinok: + fdata.read_header("barvinok/isl.h") + for part, classes in PART_TO_CLASSES.items(): expf = open("src/wrapper/gen-expose-%s.inc" % part, "wt") wrapf = open("src/wrapper/gen-wrap-%s.inc" % part, "wt") + classes = [ + cls + for cls in classes + if isl_version is None + or ADD_VERSIONS.get(cls) is None + or ADD_VERSIONS.get(cls) <= isl_version] + write_wrappers(expf, wrapf, [ meth for cls in classes diff --git a/isl_declaration_macros.h b/isl_declaration_macros.h index 8b54595..1e638b1 100644 --- a/isl_declaration_macros.h +++ b/isl_declaration_macros.h @@ -14,10 +14,14 @@ ISL_DECLARE_LIST(pw_aff) ISL_DECLARE_LIST(constraint) ISL_DECLARE_LIST(basic_set) +#if ISLPY_ISL_VERSION >= 15 ISL_DECLARE_LIST(basic_map) +#endif ISL_DECLARE_LIST(set) +#if ISLPY_ISL_VERSION >= 15 ISL_DECLARE_LIST(map) ISL_DECLARE_LIST(union_set) +#endif ISL_DECLARE_LIST(ast_expr) ISL_DECLARE_LIST(ast_node) diff --git a/isl_declaration_macros_expanded.h b/isl_declaration_macros_expanded.h index d89409f..a8e1ed9 100644 --- a/isl_declaration_macros_expanded.h +++ b/isl_declaration_macros_expanded.h @@ -2413,11 +2413,15 @@ struct isl_pw_aff; struct isl_pw_aff_list; typedef struct isl_pw_aff_list isl_pw struct isl_constraint; struct isl_constraint_list; typedef struct isl_constraint_list isl_constraint_list; isl_ctx *isl_constraint_list_get_ctx(__isl_keep isl_constraint_list *list); __isl_give isl_constraint_list *isl_constraint_list_from_constraint( __isl_take struct isl_constraint *el); __isl_give isl_constraint_list *isl_constraint_list_alloc(isl_ctx *ctx, int n); __isl_give isl_constraint_list *isl_constraint_list_copy( __isl_keep isl_constraint_list *list); isl_constraint_list *isl_constraint_list_free( __isl_take isl_constraint_list *list); __isl_give isl_constraint_list *isl_constraint_list_add( __isl_take isl_constraint_list *list, __isl_take struct isl_constraint *el); __isl_give isl_constraint_list *isl_constraint_list_insert( __isl_take isl_constraint_list *list, unsigned pos, __isl_take struct isl_constraint *el); __isl_give isl_constraint_list *isl_constraint_list_drop( __isl_take isl_constraint_list *list, unsigned first, unsigned n); __isl_give isl_constraint_list *isl_constraint_list_concat( __isl_take isl_constraint_list *list1, __isl_take isl_constraint_list *list2); int isl_constraint_list_n_constraint(__isl_keep isl_constraint_list *list); __isl_give struct isl_constraint *isl_constraint_list_get_constraint( __isl_keep isl_constraint_list *list, int index); __isl_give struct isl_constraint_list *isl_constraint_list_set_constraint( __isl_take struct isl_constraint_list *list, int index, __isl_take struct isl_constraint *el); int isl_constraint_list_foreach(__isl_keep isl_constraint_list *list, int (*fn)(__isl_take struct isl_constraint *el, void *user), void *user); __isl_give isl_constraint_list *isl_constraint_list_sort( __isl_take isl_constraint_list *list, int (*cmp)(__isl_keep struct isl_constraint *a, __isl_keep struct isl_constraint *b, void *user), void *user); int isl_constraint_list_foreach_scc(__isl_keep isl_constraint_list *list, int (*follows)(__isl_keep struct isl_constraint *a, __isl_keep struct isl_constraint *b, void *user), void *follows_user, int (*fn)(__isl_take isl_constraint_list *scc, void *user), void *fn_user); __isl_give isl_printer *isl_printer_print_constraint_list( __isl_take isl_printer *p, __isl_keep isl_constraint_list *list); void isl_constraint_list_dump(__isl_keep isl_constraint_list *list); struct isl_basic_set; struct isl_basic_set_list; typedef struct isl_basic_set_list isl_basic_set_list; isl_ctx *isl_basic_set_list_get_ctx(__isl_keep isl_basic_set_list *list); __isl_give isl_basic_set_list *isl_basic_set_list_from_basic_set( __isl_take struct isl_basic_set *el); __isl_give isl_basic_set_list *isl_basic_set_list_alloc(isl_ctx *ctx, int n); __isl_give isl_basic_set_list *isl_basic_set_list_copy( __isl_keep isl_basic_set_list *list); isl_basic_set_list *isl_basic_set_list_free( __isl_take isl_basic_set_list *list); __isl_give isl_basic_set_list *isl_basic_set_list_add( __isl_take isl_basic_set_list *list, __isl_take struct isl_basic_set *el); __isl_give isl_basic_set_list *isl_basic_set_list_insert( __isl_take isl_basic_set_list *list, unsigned pos, __isl_take struct isl_basic_set *el); __isl_give isl_basic_set_list *isl_basic_set_list_drop( __isl_take isl_basic_set_list *list, unsigned first, unsigned n); __isl_give isl_basic_set_list *isl_basic_set_list_concat( __isl_take isl_basic_set_list *list1, __isl_take isl_basic_set_list *list2); int isl_basic_set_list_n_basic_set(__isl_keep isl_basic_set_list *list); __isl_give struct isl_basic_set *isl_basic_set_list_get_basic_set( __isl_keep isl_basic_set_list *list, int index); __isl_give struct isl_basic_set_list *isl_basic_set_list_set_basic_set( __isl_take struct isl_basic_set_list *list, int index, __isl_take struct isl_basic_set *el); int isl_basic_set_list_foreach(__isl_keep isl_basic_set_list *list, int (*fn)(__isl_take struct isl_basic_set *el, void *user), void *user); __isl_give isl_basic_set_list *isl_basic_set_list_sort( __isl_take isl_basic_set_list *list, int (*cmp)(__isl_keep struct isl_basic_set *a, __isl_keep struct isl_basic_set *b, void *user), void *user); int isl_basic_set_list_foreach_scc(__isl_keep isl_basic_set_list *list, int (*follows)(__isl_keep struct isl_basic_set *a, __isl_keep struct isl_basic_set *b, void *user), void *follows_user, int (*fn)(__isl_take isl_basic_set_list *scc, void *user), void *fn_user); __isl_give isl_printer *isl_printer_print_basic_set_list( __isl_take isl_printer *p, __isl_keep isl_basic_set_list *list); void isl_basic_set_list_dump(__isl_keep isl_basic_set_list *list); + struct isl_basic_map; struct isl_basic_map_list; typedef struct isl_basic_map_list isl_basic_map_list; isl_ctx *isl_basic_map_list_get_ctx(__isl_keep isl_basic_map_list *list); __isl_give isl_basic_map_list *isl_basic_map_list_from_basic_map( __isl_take struct isl_basic_map *el); __isl_give isl_basic_map_list *isl_basic_map_list_alloc(isl_ctx *ctx, int n); __isl_give isl_basic_map_list *isl_basic_map_list_copy( __isl_keep isl_basic_map_list *list); isl_basic_map_list *isl_basic_map_list_free( __isl_take isl_basic_map_list *list); __isl_give isl_basic_map_list *isl_basic_map_list_add( __isl_take isl_basic_map_list *list, __isl_take struct isl_basic_map *el); __isl_give isl_basic_map_list *isl_basic_map_list_insert( __isl_take isl_basic_map_list *list, unsigned pos, __isl_take struct isl_basic_map *el); __isl_give isl_basic_map_list *isl_basic_map_list_drop( __isl_take isl_basic_map_list *list, unsigned first, unsigned n); __isl_give isl_basic_map_list *isl_basic_map_list_concat( __isl_take isl_basic_map_list *list1, __isl_take isl_basic_map_list *list2); int isl_basic_map_list_n_basic_map(__isl_keep isl_basic_map_list *list); __isl_give struct isl_basic_map *isl_basic_map_list_get_basic_map( __isl_keep isl_basic_map_list *list, int index); __isl_give struct isl_basic_map_list *isl_basic_map_list_set_basic_map( __isl_take struct isl_basic_map_list *list, int index, __isl_take struct isl_basic_map *el); int isl_basic_map_list_foreach(__isl_keep isl_basic_map_list *list, int (*fn)(__isl_take struct isl_basic_map *el, void *user), void *user); __isl_give isl_basic_map_list *isl_basic_map_list_sort( __isl_take isl_basic_map_list *list, int (*cmp)(__isl_keep struct isl_basic_map *a, __isl_keep struct isl_basic_map *b, void *user), void *user); int isl_basic_map_list_foreach_scc(__isl_keep isl_basic_map_list *list, int (*follows)(__isl_keep struct isl_basic_map *a, __isl_keep struct isl_basic_map *b, void *user), void *follows_user, int (*fn)(__isl_take isl_basic_map_list *scc, void *user), void *fn_user); __isl_give isl_printer *isl_printer_print_basic_map_list( __isl_take isl_printer *p, __isl_keep isl_basic_map_list *list); void isl_basic_map_list_dump(__isl_keep isl_basic_map_list *list); + struct isl_set; struct isl_set_list; typedef struct isl_set_list isl_set_list; isl_ctx *isl_set_list_get_ctx(__isl_keep isl_set_list *list); __isl_give isl_set_list *isl_set_list_from_set( __isl_take struct isl_set *el); __isl_give isl_set_list *isl_set_list_alloc(isl_ctx *ctx, int n); __isl_give isl_set_list *isl_set_list_copy( __isl_keep isl_set_list *list); isl_set_list *isl_set_list_free( __isl_take isl_set_list *list); __isl_give isl_set_list *isl_set_list_add( __isl_take isl_set_list *list, __isl_take struct isl_set *el); __isl_give isl_set_list *isl_set_list_insert( __isl_take isl_set_list *list, unsigned pos, __isl_take struct isl_set *el); __isl_give isl_set_list *isl_set_list_drop( __isl_take isl_set_list *list, unsigned first, unsigned n); __isl_give isl_set_list *isl_set_list_concat( __isl_take isl_set_list *list1, __isl_take isl_set_list *list2); int isl_set_list_n_set(__isl_keep isl_set_list *list); __isl_give struct isl_set *isl_set_list_get_set( __isl_keep isl_set_list *list, int index); __isl_give struct isl_set_list *isl_set_list_set_set( __isl_take struct isl_set_list *list, int index, __isl_take struct isl_set *el); int isl_set_list_foreach(__isl_keep isl_set_list *list, int (*fn)(__isl_take struct isl_set *el, void *user), void *user); __isl_give isl_set_list *isl_set_list_sort( __isl_take isl_set_list *list, int (*cmp)(__isl_keep struct isl_set *a, __isl_keep struct isl_set *b, void *user), void *user); int isl_set_list_foreach_scc(__isl_keep isl_set_list *list, int (*follows)(__isl_keep struct isl_set *a, __isl_keep struct isl_set *b, void *user), void *follows_user, int (*fn)(__isl_take isl_set_list *scc, void *user), void *fn_user); __isl_give isl_printer *isl_printer_print_set_list( __isl_take isl_printer *p, __isl_keep isl_set_list *list); void isl_set_list_dump(__isl_keep isl_set_list *list); + struct isl_map; struct isl_map_list; typedef struct isl_map_list isl_map_list; isl_ctx *isl_map_list_get_ctx(__isl_keep isl_map_list *list); __isl_give isl_map_list *isl_map_list_from_map( __isl_take struct isl_map *el); __isl_give isl_map_list *isl_map_list_alloc(isl_ctx *ctx, int n); __isl_give isl_map_list *isl_map_list_copy( __isl_keep isl_map_list *list); isl_map_list *isl_map_list_free( __isl_take isl_map_list *list); __isl_give isl_map_list *isl_map_list_add( __isl_take isl_map_list *list, __isl_take struct isl_map *el); __isl_give isl_map_list *isl_map_list_insert( __isl_take isl_map_list *list, unsigned pos, __isl_take struct isl_map *el); __isl_give isl_map_list *isl_map_list_drop( __isl_take isl_map_list *list, unsigned first, unsigned n); __isl_give isl_map_list *isl_map_list_concat( __isl_take isl_map_list *list1, __isl_take isl_map_list *list2); int isl_map_list_n_map(__isl_keep isl_map_list *list); __isl_give struct isl_map *isl_map_list_get_map( __isl_keep isl_map_list *list, int index); __isl_give struct isl_map_list *isl_map_list_set_map( __isl_take struct isl_map_list *list, int index, __isl_take struct isl_map *el); int isl_map_list_foreach(__isl_keep isl_map_list *list, int (*fn)(__isl_take struct isl_map *el, void *user), void *user); __isl_give isl_map_list *isl_map_list_sort( __isl_take isl_map_list *list, int (*cmp)(__isl_keep struct isl_map *a, __isl_keep struct isl_map *b, void *user), void *user); int isl_map_list_foreach_scc(__isl_keep isl_map_list *list, int (*follows)(__isl_keep struct isl_map *a, __isl_keep struct isl_map *b, void *user), void *follows_user, int (*fn)(__isl_take isl_map_list *scc, void *user), void *fn_user); __isl_give isl_printer *isl_printer_print_map_list( __isl_take isl_printer *p, __isl_keep isl_map_list *list); void isl_map_list_dump(__isl_keep isl_map_list *list); struct isl_union_set; struct isl_union_set_list; typedef struct isl_union_set_list isl_union_set_list; isl_ctx *isl_union_set_list_get_ctx(__isl_keep isl_union_set_list *list); __isl_give isl_union_set_list *isl_union_set_list_from_union_set( __isl_take struct isl_union_set *el); __isl_give isl_union_set_list *isl_union_set_list_alloc(isl_ctx *ctx, int n); __isl_give isl_union_set_list *isl_union_set_list_copy( __isl_keep isl_union_set_list *list); isl_union_set_list *isl_union_set_list_free( __isl_take isl_union_set_list *list); __isl_give isl_union_set_list *isl_union_set_list_add( __isl_take isl_union_set_list *list, __isl_take struct isl_union_set *el); __isl_give isl_union_set_list *isl_union_set_list_insert( __isl_take isl_union_set_list *list, unsigned pos, __isl_take struct isl_union_set *el); __isl_give isl_union_set_list *isl_union_set_list_drop( __isl_take isl_union_set_list *list, unsigned first, unsigned n); __isl_give isl_union_set_list *isl_union_set_list_concat( __isl_take isl_union_set_list *list1, __isl_take isl_union_set_list *list2); int isl_union_set_list_n_union_set(__isl_keep isl_union_set_list *list); __isl_give struct isl_union_set *isl_union_set_list_get_union_set( __isl_keep isl_union_set_list *list, int index); __isl_give struct isl_union_set_list *isl_union_set_list_set_union_set( __isl_take struct isl_union_set_list *list, int index, __isl_take struct isl_union_set *el); int isl_union_set_list_foreach(__isl_keep isl_union_set_list *list, int (*fn)(__isl_take struct isl_union_set *el, void *user), void *user); __isl_give isl_union_set_list *isl_union_set_list_sort( __isl_take isl_union_set_list *list, int (*cmp)(__isl_keep struct isl_union_set *a, __isl_keep struct isl_union_set *b, void *user), void *user); int isl_union_set_list_foreach_scc(__isl_keep isl_union_set_list *list, int (*follows)(__isl_keep struct isl_union_set *a, __isl_keep struct isl_union_set *b, void *user), void *follows_user, int (*fn)(__isl_take isl_union_set_list *scc, void *user), void *fn_user); __isl_give isl_printer *isl_printer_print_union_set_list( __isl_take isl_printer *p, __isl_keep isl_union_set_list *list); void isl_union_set_list_dump(__isl_keep isl_union_set_list *list); + struct isl_ast_expr; struct isl_ast_expr_list; typedef struct isl_ast_expr_list isl_ast_expr_list; isl_ctx *isl_ast_expr_list_get_ctx(__isl_keep isl_ast_expr_list *list); __isl_give isl_ast_expr_list *isl_ast_expr_list_from_ast_expr( __isl_take struct isl_ast_expr *el); __isl_give isl_ast_expr_list *isl_ast_expr_list_alloc(isl_ctx *ctx, int n); __isl_give isl_ast_expr_list *isl_ast_expr_list_copy( __isl_keep isl_ast_expr_list *list); isl_ast_expr_list *isl_ast_expr_list_free( __isl_take isl_ast_expr_list *list); __isl_give isl_ast_expr_list *isl_ast_expr_list_add( __isl_take isl_ast_expr_list *list, __isl_take struct isl_ast_expr *el); __isl_give isl_ast_expr_list *isl_ast_expr_list_insert( __isl_take isl_ast_expr_list *list, unsigned pos, __isl_take struct isl_ast_expr *el); __isl_give isl_ast_expr_list *isl_ast_expr_list_drop( __isl_take isl_ast_expr_list *list, unsigned first, unsigned n); __isl_give isl_ast_expr_list *isl_ast_expr_list_concat( __isl_take isl_ast_expr_list *list1, __isl_take isl_ast_expr_list *list2); int isl_ast_expr_list_n_ast_expr(__isl_keep isl_ast_expr_list *list); __isl_give struct isl_ast_expr *isl_ast_expr_list_get_ast_expr( __isl_keep isl_ast_expr_list *list, int index); __isl_give struct isl_ast_expr_list *isl_ast_expr_list_set_ast_expr( __isl_take struct isl_ast_expr_list *list, int index, __isl_take struct isl_ast_expr *el); int isl_ast_expr_list_foreach(__isl_keep isl_ast_expr_list *list, int (*fn)(__isl_take struct isl_ast_expr *el, void *user), void *user); __isl_give isl_ast_expr_list *isl_ast_expr_list_sort( __isl_take isl_ast_expr_list *list, int (*cmp)(__isl_keep struct isl_ast_expr *a, __isl_keep struct isl_ast_expr *b, void *user), void *user); int isl_ast_expr_list_foreach_scc(__isl_keep isl_ast_expr_list *list, int (*follows)(__isl_keep struct isl_ast_expr *a, __isl_keep struct isl_ast_expr *b, void *user), void *follows_user, int (*fn)(__isl_take isl_ast_expr_list *scc, void *user), void *fn_user); __isl_give isl_printer *isl_printer_print_ast_expr_list( __isl_take isl_printer *p, __isl_keep isl_ast_expr_list *list); void isl_ast_expr_list_dump(__isl_keep isl_ast_expr_list *list); struct isl_ast_node; struct isl_ast_node_list; typedef struct isl_ast_node_list isl_ast_node_list; isl_ctx *isl_ast_node_list_get_ctx(__isl_keep isl_ast_node_list *list); __isl_give isl_ast_node_list *isl_ast_node_list_from_ast_node( __isl_take struct isl_ast_node *el); __isl_give isl_ast_node_list *isl_ast_node_list_alloc(isl_ctx *ctx, int n); __isl_give isl_ast_node_list *isl_ast_node_list_copy( __isl_keep isl_ast_node_list *list); isl_ast_node_list *isl_ast_node_list_free( __isl_take isl_ast_node_list *list); __isl_give isl_ast_node_list *isl_ast_node_list_add( __isl_take isl_ast_node_list *list, __isl_take struct isl_ast_node *el); __isl_give isl_ast_node_list *isl_ast_node_list_insert( __isl_take isl_ast_node_list *list, unsigned pos, __isl_take struct isl_ast_node *el); __isl_give isl_ast_node_list *isl_ast_node_list_drop( __isl_take isl_ast_node_list *list, unsigned first, unsigned n); __isl_give isl_ast_node_list *isl_ast_node_list_concat( __isl_take isl_ast_node_list *list1, __isl_take isl_ast_node_list *list2); int isl_ast_node_list_n_ast_node(__isl_keep isl_ast_node_list *list); __isl_give struct isl_ast_node *isl_ast_node_list_get_ast_node( __isl_keep isl_ast_node_list *list, int index); __isl_give struct isl_ast_node_list *isl_ast_node_list_set_ast_node( __isl_take struct isl_ast_node_list *list, int index, __isl_take struct isl_ast_node *el); int isl_ast_node_list_foreach(__isl_keep isl_ast_node_list *list, int (*fn)(__isl_take struct isl_ast_node *el, void *user), void *user); __isl_give isl_ast_node_list *isl_ast_node_list_sort( __isl_take isl_ast_node_list *list, int (*cmp)(__isl_keep struct isl_ast_node *a, __isl_keep struct isl_ast_node *b, void *user), void *user); int isl_ast_node_list_foreach_scc(__isl_keep isl_ast_node_list *list, int (*follows)(__isl_keep struct isl_ast_node *a, __isl_keep struct isl_ast_node *b, void *user), void *follows_user, int (*fn)(__isl_take isl_ast_node_list *scc, void *user), void *fn_user); __isl_give isl_printer *isl_printer_print_ast_node_list( __isl_take isl_printer *p, __isl_keep isl_ast_node_list *list); void isl_ast_node_list_dump(__isl_keep isl_ast_node_list *list); struct isl_band; struct isl_band_list; typedef struct isl_band_list isl_band_list; isl_ctx *isl_band_list_get_ctx(__isl_keep isl_band_list *list); __isl_give isl_band_list *isl_band_list_from_band( __isl_take struct isl_band *el); __isl_give isl_band_list *isl_band_list_alloc(isl_ctx *ctx, int n); __isl_give isl_band_list *isl_band_list_copy( __isl_keep isl_band_list *list); isl_band_list *isl_band_list_free( __isl_take isl_band_list *list); __isl_give isl_band_list *isl_band_list_add( __isl_take isl_band_list *list, __isl_take struct isl_band *el); __isl_give isl_band_list *isl_band_list_insert( __isl_take isl_band_list *list, unsigned pos, __isl_take struct isl_band *el); __isl_give isl_band_list *isl_band_list_drop( __isl_take isl_band_list *list, unsigned first, unsigned n); __isl_give isl_band_list *isl_band_list_concat( __isl_take isl_band_list *list1, __isl_take isl_band_list *list2); int isl_band_list_n_band(__isl_keep isl_band_list *list); __isl_give struct isl_band *isl_band_list_get_band( __isl_keep isl_band_list *list, int index); __isl_give struct isl_band_list *isl_band_list_set_band( __isl_take struct isl_band_list *list, int index, __isl_take struct isl_band *el); int isl_band_list_foreach(__isl_keep isl_band_list *list, int (*fn)(__isl_take struct isl_band *el, void *user), void *user); __isl_give isl_band_list *isl_band_list_sort( __isl_take isl_band_list *list, int (*cmp)(__isl_keep struct isl_band *a, __isl_keep struct isl_band *b, void *user), void *user); int isl_band_list_foreach_scc(__isl_keep isl_band_list *list, int (*follows)(__isl_keep struct isl_band *a, __isl_keep struct isl_band *b, void *user), void *follows_user, int (*fn)(__isl_take isl_band_list *scc, void *user), void *fn_user); __isl_give isl_printer *isl_printer_print_band_list( __isl_take isl_printer *p, __isl_keep isl_band_list *list); void isl_band_list_dump(__isl_keep isl_band_list *list); diff --git a/isl_declaration_macros_expanded_v14.h b/isl_declaration_macros_expanded_v14.h new file mode 100644 index 0000000..1775cf7 --- /dev/null +++ b/isl_declaration_macros_expanded_v14.h @@ -0,0 +1,2429 @@ +# 1 "isl_declaration_macros.h" +# 1 "" +# 1 "" +# 1 "/home/andreas/pool/include/isl/list.h" 1 +# 13 "/home/andreas/pool/include/isl/list.h" +# 1 "/home/andreas/pool/include/isl/ctx.h" 1 +# 13 "/home/andreas/pool/include/isl/ctx.h" +# 1 "/usr/include/stdio.h" 1 3 4 +# 27 "/usr/include/stdio.h" 3 4 +# 1 "/usr/include/features.h" 1 3 4 +# 352 "/usr/include/features.h" 3 4 +# 1 "/usr/include/stdc-predef.h" 1 3 4 +# 353 "/usr/include/features.h" 2 3 4 +# 374 "/usr/include/features.h" 3 4 +# 1 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 1 3 4 +# 385 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 +# 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3 4 +# 386 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 2 3 4 +# 375 "/usr/include/features.h" 2 3 4 +# 398 "/usr/include/features.h" 3 4 +# 1 "/usr/include/x86_64-linux-gnu/gnu/stubs.h" 1 3 4 +# 10 "/usr/include/x86_64-linux-gnu/gnu/stubs.h" 3 4 +# 1 "/usr/include/x86_64-linux-gnu/gnu/stubs-64.h" 1 3 4 +# 11 "/usr/include/x86_64-linux-gnu/gnu/stubs.h" 2 3 4 +# 399 "/usr/include/features.h" 2 3 4 +# 28 "/usr/include/stdio.h" 2 3 4 + + + + + +# 1 "/usr/lib/gcc/x86_64-linux-gnu/4.9/include/stddef.h" 1 3 4 +# 212 "/usr/lib/gcc/x86_64-linux-gnu/4.9/include/stddef.h" 3 4 + +# 34 "/usr/include/stdio.h" 2 3 4 + +# 1 "/usr/include/x86_64-linux-gnu/bits/types.h" 1 3 4 +# 27 "/usr/include/x86_64-linux-gnu/bits/types.h" 3 4 +# 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3 4 +# 28 "/usr/include/x86_64-linux-gnu/bits/types.h" 2 3 4 + + + + + + + + + + + + + + + + + + + + + + + + + + +# 121 "/usr/include/x86_64-linux-gnu/bits/types.h" 3 4 +# 1 "/usr/include/x86_64-linux-gnu/bits/typesizes.h" 1 3 4 +# 122 "/usr/include/x86_64-linux-gnu/bits/types.h" 2 3 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 36 "/usr/include/stdio.h" 2 3 4 +# 44 "/usr/include/stdio.h" 3 4 + + + + + + + + + + +# 64 "/usr/include/stdio.h" 3 4 + +# 74 "/usr/include/stdio.h" 3 4 +# 1 "/usr/include/libio.h" 1 3 4 +# 31 "/usr/include/libio.h" 3 4 +# 1 "/usr/include/_G_config.h" 1 3 4 +# 15 "/usr/include/_G_config.h" 3 4 +# 1 "/usr/lib/gcc/x86_64-linux-gnu/4.9/include/stddef.h" 1 3 4 +# 16 "/usr/include/_G_config.h" 2 3 4 + + + + +# 1 "/usr/include/wchar.h" 1 3 4 +# 82 "/usr/include/wchar.h" 3 4 + + + + + + + + + + + + + +# 21 "/usr/include/_G_config.h" 2 3 4 + + + + + + + + + + +# 32 "/usr/include/libio.h" 2 3 4 +# 49 "/usr/include/libio.h" 3 4 +# 1 "/usr/lib/gcc/x86_64-linux-gnu/4.9/include/stdarg.h" 1 3 4 +# 40 "/usr/lib/gcc/x86_64-linux-gnu/4.9/include/stdarg.h" 3 4 + +# 50 "/usr/include/libio.h" 2 3 4 +# 144 "/usr/include/libio.h" 3 4 + +# 154 "/usr/include/libio.h" 3 4 + + + + + + + + + + + + + +# 177 "/usr/include/libio.h" 3 4 + + + + + + + + + + +# 245 "/usr/include/libio.h" 3 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 293 "/usr/include/libio.h" 3 4 + +# 302 "/usr/include/libio.h" 3 4 + + + + + + + + + + + + + + + + + + + + + +# 338 "/usr/include/libio.h" 3 4 + + + + + + + + + + + + + + + + + + + + + +# 390 "/usr/include/libio.h" 3 4 + + + +# 434 "/usr/include/libio.h" 3 4 + + + + + + + + + + + + + + +# 464 "/usr/include/libio.h" 3 4 + + + + + + + + + + + +# 75 "/usr/include/stdio.h" 2 3 4 + + + + + +# 90 "/usr/include/stdio.h" 3 4 + +# 102 "/usr/include/stdio.h" 3 4 + + + + + + + + + + + + + +# 164 "/usr/include/stdio.h" 3 4 +# 1 "/usr/include/x86_64-linux-gnu/bits/stdio_lim.h" 1 3 4 +# 165 "/usr/include/stdio.h" 2 3 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 209 "/usr/include/stdio.h" 3 4 + + + + + + + +# 227 "/usr/include/stdio.h" 3 4 + + + + + + + + + + + + + + + + + +# 252 "/usr/include/stdio.h" 3 4 + +# 266 "/usr/include/stdio.h" 3 4 + + + + + + + + + + + + + + + +# 295 "/usr/include/stdio.h" 3 4 + +# 306 "/usr/include/stdio.h" 3 4 + +# 319 "/usr/include/stdio.h" 3 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 412 "/usr/include/stdio.h" 3 4 + + + + + + + + + + + + + + + + + + + + + + + +# 443 "/usr/include/stdio.h" 3 4 + + + + + + + + +# 463 "/usr/include/stdio.h" 3 4 + + + + + + + + + + + + + + + + + + + + + + + +# 494 "/usr/include/stdio.h" 3 4 + + + + + + + + + + + + + +# 522 "/usr/include/stdio.h" 3 4 + + + + + + + + + + + + + + + + + + +# 550 "/usr/include/stdio.h" 3 4 + + +# 561 "/usr/include/stdio.h" 3 4 + + + + + + + + + + + + + + + + + + + + + +# 594 "/usr/include/stdio.h" 3 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 638 "/usr/include/stdio.h" 3 4 + + + +# 665 "/usr/include/stdio.h" 3 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 737 "/usr/include/stdio.h" 3 4 + + + + + + + + + + + + + + + + + + + + + + + + +# 773 "/usr/include/stdio.h" 3 4 + + + + + + +# 792 "/usr/include/stdio.h" 3 4 + + + + + + + + + + + + +# 815 "/usr/include/stdio.h" 3 4 + +# 824 "/usr/include/stdio.h" 3 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 1 "/usr/include/x86_64-linux-gnu/bits/sys_errlist.h" 1 3 4 +# 26 "/usr/include/x86_64-linux-gnu/bits/sys_errlist.h" 3 4 + + +# 854 "/usr/include/stdio.h" 2 3 4 + + + + + + + + + + +# 873 "/usr/include/stdio.h" 3 4 + + + + + + + + + + + + + +# 913 "/usr/include/stdio.h" 3 4 + + + + + + + + +# 943 "/usr/include/stdio.h" 3 4 + +# 14 "/home/andreas/pool/include/isl/ctx.h" 2 +# 1 "/usr/include/stdlib.h" 1 3 4 +# 32 "/usr/include/stdlib.h" 3 4 +# 1 "/usr/lib/gcc/x86_64-linux-gnu/4.9/include/stddef.h" 1 3 4 +# 324 "/usr/lib/gcc/x86_64-linux-gnu/4.9/include/stddef.h" 3 4 + +# 33 "/usr/include/stdlib.h" 2 3 4 + + + + + + + + +# 1 "/usr/include/x86_64-linux-gnu/bits/waitflags.h" 1 3 4 +# 50 "/usr/include/x86_64-linux-gnu/bits/waitflags.h" 3 4 + + + + + + +# 42 "/usr/include/stdlib.h" 2 3 4 +# 1 "/usr/include/x86_64-linux-gnu/bits/waitstatus.h" 1 3 4 +# 64 "/usr/include/x86_64-linux-gnu/bits/waitstatus.h" 3 4 +# 1 "/usr/include/endian.h" 1 3 4 +# 36 "/usr/include/endian.h" 3 4 +# 1 "/usr/include/x86_64-linux-gnu/bits/endian.h" 1 3 4 +# 37 "/usr/include/endian.h" 2 3 4 +# 60 "/usr/include/endian.h" 3 4 +# 1 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 1 3 4 +# 28 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 3 4 +# 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3 4 +# 29 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 2 3 4 + + + + + + +# 1 "/usr/include/x86_64-linux-gnu/bits/byteswap-16.h" 1 3 4 +# 36 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 2 3 4 +# 44 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 3 4 + + + + + +# 108 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 3 4 + + + + + +# 61 "/usr/include/endian.h" 2 3 4 +# 65 "/usr/include/x86_64-linux-gnu/bits/waitstatus.h" 2 3 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 43 "/usr/include/stdlib.h" 2 3 4 +# 67 "/usr/include/stdlib.h" 3 4 + + + + + +# 95 "/usr/include/stdlib.h" 3 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 139 "/usr/include/stdlib.h" 3 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 305 "/usr/include/stdlib.h" 3 4 + + + + + + + + + +# 1 "/usr/include/x86_64-linux-gnu/sys/types.h" 1 3 4 +# 27 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 + + + + + + + + + + + + + + + + + + + + + + +# 60 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 + + + + + + + + + + + + + + + + + + + + + +# 98 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 + + + + + + + +# 115 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 + + + + + + + + +# 132 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 +# 1 "/usr/include/time.h" 1 3 4 +# 57 "/usr/include/time.h" 3 4 + + + + + + +# 73 "/usr/include/time.h" 3 4 + + + + + + +# 91 "/usr/include/time.h" 3 4 + +# 103 "/usr/include/time.h" 3 4 + +# 133 "/usr/include/x86_64-linux-gnu/sys/types.h" 2 3 4 +# 146 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 +# 1 "/usr/lib/gcc/x86_64-linux-gnu/4.9/include/stddef.h" 1 3 4 +# 147 "/usr/include/x86_64-linux-gnu/sys/types.h" 2 3 4 + + + + + + +# 194 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 + + + + + + + + + + + + +# 219 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 +# 1 "/usr/include/x86_64-linux-gnu/sys/select.h" 1 3 4 +# 30 "/usr/include/x86_64-linux-gnu/sys/select.h" 3 4 +# 1 "/usr/include/x86_64-linux-gnu/bits/select.h" 1 3 4 +# 22 "/usr/include/x86_64-linux-gnu/bits/select.h" 3 4 +# 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3 4 +# 23 "/usr/include/x86_64-linux-gnu/bits/select.h" 2 3 4 +# 31 "/usr/include/x86_64-linux-gnu/sys/select.h" 2 3 4 + + +# 1 "/usr/include/x86_64-linux-gnu/bits/sigset.h" 1 3 4 +# 22 "/usr/include/x86_64-linux-gnu/bits/sigset.h" 3 4 + + + + + + + + + +# 34 "/usr/include/x86_64-linux-gnu/sys/select.h" 2 3 4 + + + + + + + + + +# 1 "/usr/include/time.h" 1 3 4 +# 120 "/usr/include/time.h" 3 4 + + + + + +# 44 "/usr/include/x86_64-linux-gnu/sys/select.h" 2 3 4 + +# 1 "/usr/include/x86_64-linux-gnu/bits/time.h" 1 3 4 +# 30 "/usr/include/x86_64-linux-gnu/bits/time.h" 3 4 + + + + + +# 46 "/usr/include/x86_64-linux-gnu/sys/select.h" 2 3 4 + + + + + + + + + +# 64 "/usr/include/x86_64-linux-gnu/sys/select.h" 3 4 + + + + + + + + + + + + + + + + + + + +# 96 "/usr/include/x86_64-linux-gnu/sys/select.h" 3 4 + +# 106 "/usr/include/x86_64-linux-gnu/sys/select.h" 3 4 + + + + +# 118 "/usr/include/x86_64-linux-gnu/sys/select.h" 3 4 + + + + + +# 131 "/usr/include/x86_64-linux-gnu/sys/select.h" 3 4 + +# 220 "/usr/include/x86_64-linux-gnu/sys/types.h" 2 3 4 + + +# 1 "/usr/include/x86_64-linux-gnu/sys/sysmacros.h" 1 3 4 +# 24 "/usr/include/x86_64-linux-gnu/sys/sysmacros.h" 3 4 + + + + + + + + + + + + +# 58 "/usr/include/x86_64-linux-gnu/sys/sysmacros.h" 3 4 + +# 223 "/usr/include/x86_64-linux-gnu/sys/types.h" 2 3 4 + + + + + + + + + + + + + + + + + + + + + +# 270 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 +# 1 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 1 3 4 +# 21 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 3 4 +# 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3 4 +# 22 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 2 3 4 +# 60 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 3 4 + + + + + + + + + + + + + + + + + + + + +# 90 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 3 4 + + + + + + + + + + + + + + + + + +# 124 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 3 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 211 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 3 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 271 "/usr/include/x86_64-linux-gnu/sys/types.h" 2 3 4 + + + +# 315 "/usr/include/stdlib.h" 2 3 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 1 "/usr/include/alloca.h" 1 3 4 +# 24 "/usr/include/alloca.h" 3 4 +# 1 "/usr/lib/gcc/x86_64-linux-gnu/4.9/include/stddef.h" 1 3 4 +# 25 "/usr/include/alloca.h" 2 3 4 + + + + + + + + + + + + + + +# 493 "/usr/include/stdlib.h" 2 3 4 + + + + + + + + + + + + +# 513 "/usr/include/stdlib.h" 3 4 + + + + + + + +# 530 "/usr/include/stdlib.h" 3 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 578 "/usr/include/stdlib.h" 3 4 + + + + + + + + + + + + + + + + + + +# 606 "/usr/include/stdlib.h" 3 4 + +# 620 "/usr/include/stdlib.h" 3 4 + +# 642 "/usr/include/stdlib.h" 3 4 + +# 663 "/usr/include/stdlib.h" 3 4 + +# 712 "/usr/include/stdlib.h" 3 4 + + + + + + + +# 734 "/usr/include/stdlib.h" 3 4 + + + + + + + + + +# 752 "/usr/include/stdlib.h" 3 4 + + + + + + + + + + + + + + + +# 775 "/usr/include/stdlib.h" 3 4 + + + + + + + + + + + + + + + + + + + + + + + + + + +# 812 "/usr/include/stdlib.h" 3 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 899 "/usr/include/stdlib.h" 3 4 + + + + +# 951 "/usr/include/stdlib.h" 3 4 + + + + +# 1 "/usr/include/x86_64-linux-gnu/bits/stdlib-float.h" 1 3 4 +# 956 "/usr/include/stdlib.h" 2 3 4 +# 968 "/usr/include/stdlib.h" 3 4 + +# 15 "/home/andreas/pool/include/isl/ctx.h" 2 + +# 1 "/home/andreas/pool/include/isl/arg.h" 1 +# 13 "/home/andreas/pool/include/isl/arg.h" +# 1 "/usr/lib/gcc/x86_64-linux-gnu/4.9/include/stddef.h" 1 3 4 +# 147 "/usr/lib/gcc/x86_64-linux-gnu/4.9/include/stddef.h" 3 4 + +# 14 "/home/andreas/pool/include/isl/arg.h" 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 280 "/home/andreas/pool/include/isl/arg.h" + + + + +# 17 "/home/andreas/pool/include/isl/ctx.h" 2 +# 1 "/home/andreas/pool/include/isl/hash.h" 1 +# 14 "/home/andreas/pool/include/isl/hash.h" +# 1 "/home/andreas/pool/include/isl/stdint.h" 1 + + + + + + +# 1 "/usr/lib/gcc/x86_64-linux-gnu/4.9/include/stdint.h" 1 3 4 +# 9 "/usr/lib/gcc/x86_64-linux-gnu/4.9/include/stdint.h" 3 4 +# 1 "/usr/include/stdint.h" 1 3 4 +# 26 "/usr/include/stdint.h" 3 4 +# 1 "/usr/include/x86_64-linux-gnu/bits/wchar.h" 1 3 4 +# 27 "/usr/include/stdint.h" 2 3 4 +# 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3 4 +# 28 "/usr/include/stdint.h" 2 3 4 +# 48 "/usr/include/stdint.h" 3 4 + + + + + + + + +# 65 "/usr/include/stdint.h" 3 4 + + + + + + + + + + + + + + + + +# 90 "/usr/include/stdint.h" 3 4 + + + + + +# 103 "/usr/include/stdint.h" 3 4 + + + + + +# 119 "/usr/include/stdint.h" 3 4 + + + + +# 134 "/usr/include/stdint.h" 3 4 + + +# 10 "/usr/lib/gcc/x86_64-linux-gnu/4.9/include/stdint.h" 2 3 4 +# 8 "/home/andreas/pool/include/isl/stdint.h" 2 +# 15 "/home/andreas/pool/include/isl/hash.h" 2 +# 38 "/home/andreas/pool/include/isl/hash.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 18 "/home/andreas/pool/include/isl/ctx.h" 2 +# 69 "/home/andreas/pool/include/isl/ctx.h" + + + + + + + + + + + + + + + +# 103 "/home/andreas/pool/include/isl/ctx.h" + + + +# 127 "/home/andreas/pool/include/isl/ctx.h" + + +# 143 "/home/andreas/pool/include/isl/ctx.h" + + + + + + + + + + + + + + + + + + +# 238 "/home/andreas/pool/include/isl/ctx.h" + + + +# 14 "/home/andreas/pool/include/isl/list.h" 2 +# 1 "/home/andreas/pool/include/isl/printer.h" 1 +# 11 "/home/andreas/pool/include/isl/printer.h" + + + + + + + + + + + + + + + + +# 35 "/home/andreas/pool/include/isl/printer.h" + + + + + + + + + + + + + + + + + + + + + + +# 15 "/home/andreas/pool/include/isl/list.h" 2 +# 1 "" 2 +# 1 "/home/andreas/pool/include/isl/multi.h" 1 + + + +# 1 "/home/andreas/pool/include/isl/space.h" 1 +# 14 "/home/andreas/pool/include/isl/space.h" +# 1 "/home/andreas/pool/include/isl/id.h" 1 + + + + +# 1 "/home/andreas/pool/include/isl/list.h" 1 +# 6 "/home/andreas/pool/include/isl/id.h" 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 15 "/home/andreas/pool/include/isl/space.h" 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 5 "/home/andreas/pool/include/isl/multi.h" 2 + +# 1 "/home/andreas/pool/include/isl/set_type.h" 1 + + + +# 1 "/home/andreas/pool/include/isl/map_type.h" 1 +# 11 "/home/andreas/pool/include/isl/map_type.h" + + + + + + + + + + + + + + + + + + + +# 5 "/home/andreas/pool/include/isl/set_type.h" 2 +# 7 "/home/andreas/pool/include/isl/multi.h" 2 +# 1 "" 2 +# 1 "isl_declaration_macros.h" +# 9 "isl_declaration_macros.h" +struct isl_id; struct isl_id_list; typedef struct isl_id_list isl_id_list; isl_ctx *isl_id_list_get_ctx(__islpy_keep isl_id_list *list); __islpy_give isl_id_list *isl_id_list_from_id( __islpy_take struct isl_id *el); __islpy_give isl_id_list *isl_id_list_alloc(isl_ctx *ctx, int n); __islpy_give isl_id_list *isl_id_list_copy( __islpy_keep isl_id_list *list); isl_id_list *isl_id_list_free( __islpy_take isl_id_list *list); __islpy_give isl_id_list *isl_id_list_add( __islpy_take isl_id_list *list, __islpy_take struct isl_id *el); __islpy_give isl_id_list *isl_id_list_insert( __islpy_take isl_id_list *list, unsigned pos, __islpy_take struct isl_id *el); __islpy_give isl_id_list *isl_id_list_drop( __islpy_take isl_id_list *list, unsigned first, unsigned n); __islpy_give isl_id_list *isl_id_list_concat( __islpy_take isl_id_list *list1, __islpy_take isl_id_list *list2); int isl_id_list_n_id(__islpy_keep isl_id_list *list); __islpy_give struct isl_id *isl_id_list_get_id( __islpy_keep isl_id_list *list, int index); __islpy_give struct isl_id_list *isl_id_list_set_id( __islpy_take struct isl_id_list *list, int index, __islpy_take struct isl_id *el); int isl_id_list_foreach(__islpy_keep isl_id_list *list, int (*fn)(__islpy_take struct isl_id *el, void *user), void *user); __islpy_give isl_id_list *isl_id_list_sort( __islpy_take isl_id_list *list, int (*cmp)(__islpy_keep struct isl_id *a, __islpy_keep struct isl_id *b, void *user), void *user); int isl_id_list_foreach_scc(__islpy_keep isl_id_list *list, int (*follows)(__islpy_keep struct isl_id *a, __islpy_keep struct isl_id *b, void *user), void *follows_user, int (*fn)(__islpy_take isl_id_list *scc, void *user), void *fn_user); __islpy_give isl_printer *isl_printer_print_id_list( __islpy_take isl_printer *p, __islpy_keep isl_id_list *list); void isl_id_list_dump(__islpy_keep isl_id_list *list); + +struct isl_val; struct isl_val_list; typedef struct isl_val_list isl_val_list; isl_ctx *isl_val_list_get_ctx(__islpy_keep isl_val_list *list); __islpy_give isl_val_list *isl_val_list_from_val( __islpy_take struct isl_val *el); __islpy_give isl_val_list *isl_val_list_alloc(isl_ctx *ctx, int n); __islpy_give isl_val_list *isl_val_list_copy( __islpy_keep isl_val_list *list); isl_val_list *isl_val_list_free( __islpy_take isl_val_list *list); __islpy_give isl_val_list *isl_val_list_add( __islpy_take isl_val_list *list, __islpy_take struct isl_val *el); __islpy_give isl_val_list *isl_val_list_insert( __islpy_take isl_val_list *list, unsigned pos, __islpy_take struct isl_val *el); __islpy_give isl_val_list *isl_val_list_drop( __islpy_take isl_val_list *list, unsigned first, unsigned n); __islpy_give isl_val_list *isl_val_list_concat( __islpy_take isl_val_list *list1, __islpy_take isl_val_list *list2); int isl_val_list_n_val(__islpy_keep isl_val_list *list); __islpy_give struct isl_val *isl_val_list_get_val( __islpy_keep isl_val_list *list, int index); __islpy_give struct isl_val_list *isl_val_list_set_val( __islpy_take struct isl_val_list *list, int index, __islpy_take struct isl_val *el); int isl_val_list_foreach(__islpy_keep isl_val_list *list, int (*fn)(__islpy_take struct isl_val *el, void *user), void *user); __islpy_give isl_val_list *isl_val_list_sort( __islpy_take isl_val_list *list, int (*cmp)(__islpy_keep struct isl_val *a, __islpy_keep struct isl_val *b, void *user), void *user); int isl_val_list_foreach_scc(__islpy_keep isl_val_list *list, int (*follows)(__islpy_keep struct isl_val *a, __islpy_keep struct isl_val *b, void *user), void *follows_user, int (*fn)(__islpy_take isl_val_list *scc, void *user), void *fn_user); __islpy_give isl_printer *isl_printer_print_val_list( __islpy_take isl_printer *p, __islpy_keep isl_val_list *list); void isl_val_list_dump(__islpy_keep isl_val_list *list); +struct isl_aff; struct isl_aff_list; typedef struct isl_aff_list isl_aff_list; isl_ctx *isl_aff_list_get_ctx(__islpy_keep isl_aff_list *list); __islpy_give isl_aff_list *isl_aff_list_from_aff( __islpy_take struct isl_aff *el); __islpy_give isl_aff_list *isl_aff_list_alloc(isl_ctx *ctx, int n); __islpy_give isl_aff_list *isl_aff_list_copy( __islpy_keep isl_aff_list *list); isl_aff_list *isl_aff_list_free( __islpy_take isl_aff_list *list); __islpy_give isl_aff_list *isl_aff_list_add( __islpy_take isl_aff_list *list, __islpy_take struct isl_aff *el); __islpy_give isl_aff_list *isl_aff_list_insert( __islpy_take isl_aff_list *list, unsigned pos, __islpy_take struct isl_aff *el); __islpy_give isl_aff_list *isl_aff_list_drop( __islpy_take isl_aff_list *list, unsigned first, unsigned n); __islpy_give isl_aff_list *isl_aff_list_concat( __islpy_take isl_aff_list *list1, __islpy_take isl_aff_list *list2); int isl_aff_list_n_aff(__islpy_keep isl_aff_list *list); __islpy_give struct isl_aff *isl_aff_list_get_aff( __islpy_keep isl_aff_list *list, int index); __islpy_give struct isl_aff_list *isl_aff_list_set_aff( __islpy_take struct isl_aff_list *list, int index, __islpy_take struct isl_aff *el); int isl_aff_list_foreach(__islpy_keep isl_aff_list *list, int (*fn)(__islpy_take struct isl_aff *el, void *user), void *user); __islpy_give isl_aff_list *isl_aff_list_sort( __islpy_take isl_aff_list *list, int (*cmp)(__islpy_keep struct isl_aff *a, __islpy_keep struct isl_aff *b, void *user), void *user); int isl_aff_list_foreach_scc(__islpy_keep isl_aff_list *list, int (*follows)(__islpy_keep struct isl_aff *a, __islpy_keep struct isl_aff *b, void *user), void *follows_user, int (*fn)(__islpy_take isl_aff_list *scc, void *user), void *fn_user); __islpy_give isl_printer *isl_printer_print_aff_list( __islpy_take isl_printer *p, __islpy_keep isl_aff_list *list); void isl_aff_list_dump(__islpy_keep isl_aff_list *list); +struct isl_pw_aff; struct isl_pw_aff_list; typedef struct isl_pw_aff_list isl_pw_aff_list; isl_ctx *isl_pw_aff_list_get_ctx(__islpy_keep isl_pw_aff_list *list); __islpy_give isl_pw_aff_list *isl_pw_aff_list_from_pw_aff( __islpy_take struct isl_pw_aff *el); __islpy_give isl_pw_aff_list *isl_pw_aff_list_alloc(isl_ctx *ctx, int n); __islpy_give isl_pw_aff_list *isl_pw_aff_list_copy( __islpy_keep isl_pw_aff_list *list); isl_pw_aff_list *isl_pw_aff_list_free( __islpy_take isl_pw_aff_list *list); __islpy_give isl_pw_aff_list *isl_pw_aff_list_add( __islpy_take isl_pw_aff_list *list, __islpy_take struct isl_pw_aff *el); __islpy_give isl_pw_aff_list *isl_pw_aff_list_insert( __islpy_take isl_pw_aff_list *list, unsigned pos, __islpy_take struct isl_pw_aff *el); __islpy_give isl_pw_aff_list *isl_pw_aff_list_drop( __islpy_take isl_pw_aff_list *list, unsigned first, unsigned n); __islpy_give isl_pw_aff_list *isl_pw_aff_list_concat( __islpy_take isl_pw_aff_list *list1, __islpy_take isl_pw_aff_list *list2); int isl_pw_aff_list_n_pw_aff(__islpy_keep isl_pw_aff_list *list); __islpy_give struct isl_pw_aff *isl_pw_aff_list_get_pw_aff( __islpy_keep isl_pw_aff_list *list, int index); __islpy_give struct isl_pw_aff_list *isl_pw_aff_list_set_pw_aff( __islpy_take struct isl_pw_aff_list *list, int index, __islpy_take struct isl_pw_aff *el); int isl_pw_aff_list_foreach(__islpy_keep isl_pw_aff_list *list, int (*fn)(__islpy_take struct isl_pw_aff *el, void *user), void *user); __islpy_give isl_pw_aff_list *isl_pw_aff_list_sort( __islpy_take isl_pw_aff_list *list, int (*cmp)(__islpy_keep struct isl_pw_aff *a, __islpy_keep struct isl_pw_aff *b, void *user), void *user); int isl_pw_aff_list_foreach_scc(__islpy_keep isl_pw_aff_list *list, int (*follows)(__islpy_keep struct isl_pw_aff *a, __islpy_keep struct isl_pw_aff *b, void *user), void *follows_user, int (*fn)(__islpy_take isl_pw_aff_list *scc, void *user), void *fn_user); __islpy_give isl_printer *isl_printer_print_pw_aff_list( __islpy_take isl_printer *p, __islpy_keep isl_pw_aff_list *list); void isl_pw_aff_list_dump(__islpy_keep isl_pw_aff_list *list); +struct isl_constraint; struct isl_constraint_list; typedef struct isl_constraint_list isl_constraint_list; isl_ctx *isl_constraint_list_get_ctx(__islpy_keep isl_constraint_list *list); __islpy_give isl_constraint_list *isl_constraint_list_from_constraint( __islpy_take struct isl_constraint *el); __islpy_give isl_constraint_list *isl_constraint_list_alloc(isl_ctx *ctx, int n); __islpy_give isl_constraint_list *isl_constraint_list_copy( __islpy_keep isl_constraint_list *list); isl_constraint_list *isl_constraint_list_free( __islpy_take isl_constraint_list *list); __islpy_give isl_constraint_list *isl_constraint_list_add( __islpy_take isl_constraint_list *list, __islpy_take struct isl_constraint *el); __islpy_give isl_constraint_list *isl_constraint_list_insert( __islpy_take isl_constraint_list *list, unsigned pos, __islpy_take struct isl_constraint *el); __islpy_give isl_constraint_list *isl_constraint_list_drop( __islpy_take isl_constraint_list *list, unsigned first, unsigned n); __islpy_give isl_constraint_list *isl_constraint_list_concat( __islpy_take isl_constraint_list *list1, __islpy_take isl_constraint_list *list2); int isl_constraint_list_n_constraint(__islpy_keep isl_constraint_list *list); __islpy_give struct isl_constraint *isl_constraint_list_get_constraint( __islpy_keep isl_constraint_list *list, int index); __islpy_give struct isl_constraint_list *isl_constraint_list_set_constraint( __islpy_take struct isl_constraint_list *list, int index, __islpy_take struct isl_constraint *el); int isl_constraint_list_foreach(__islpy_keep isl_constraint_list *list, int (*fn)(__islpy_take struct isl_constraint *el, void *user), void *user); __islpy_give isl_constraint_list *isl_constraint_list_sort( __islpy_take isl_constraint_list *list, int (*cmp)(__islpy_keep struct isl_constraint *a, __islpy_keep struct isl_constraint *b, void *user), void *user); int isl_constraint_list_foreach_scc(__islpy_keep isl_constraint_list *list, int (*follows)(__islpy_keep struct isl_constraint *a, __islpy_keep struct isl_constraint *b, void *user), void *follows_user, int (*fn)(__islpy_take isl_constraint_list *scc, void *user), void *fn_user); __islpy_give isl_printer *isl_printer_print_constraint_list( __islpy_take isl_printer *p, __islpy_keep isl_constraint_list *list); void isl_constraint_list_dump(__islpy_keep isl_constraint_list *list); + +struct isl_basic_set; struct isl_basic_set_list; typedef struct isl_basic_set_list isl_basic_set_list; isl_ctx *isl_basic_set_list_get_ctx(__islpy_keep isl_basic_set_list *list); __islpy_give isl_basic_set_list *isl_basic_set_list_from_basic_set( __islpy_take struct isl_basic_set *el); __islpy_give isl_basic_set_list *isl_basic_set_list_alloc(isl_ctx *ctx, int n); __islpy_give isl_basic_set_list *isl_basic_set_list_copy( __islpy_keep isl_basic_set_list *list); isl_basic_set_list *isl_basic_set_list_free( __islpy_take isl_basic_set_list *list); __islpy_give isl_basic_set_list *isl_basic_set_list_add( __islpy_take isl_basic_set_list *list, __islpy_take struct isl_basic_set *el); __islpy_give isl_basic_set_list *isl_basic_set_list_insert( __islpy_take isl_basic_set_list *list, unsigned pos, __islpy_take struct isl_basic_set *el); __islpy_give isl_basic_set_list *isl_basic_set_list_drop( __islpy_take isl_basic_set_list *list, unsigned first, unsigned n); __islpy_give isl_basic_set_list *isl_basic_set_list_concat( __islpy_take isl_basic_set_list *list1, __islpy_take isl_basic_set_list *list2); int isl_basic_set_list_n_basic_set(__islpy_keep isl_basic_set_list *list); __islpy_give struct isl_basic_set *isl_basic_set_list_get_basic_set( __islpy_keep isl_basic_set_list *list, int index); __islpy_give struct isl_basic_set_list *isl_basic_set_list_set_basic_set( __islpy_take struct isl_basic_set_list *list, int index, __islpy_take struct isl_basic_set *el); int isl_basic_set_list_foreach(__islpy_keep isl_basic_set_list *list, int (*fn)(__islpy_take struct isl_basic_set *el, void *user), void *user); __islpy_give isl_basic_set_list *isl_basic_set_list_sort( __islpy_take isl_basic_set_list *list, int (*cmp)(__islpy_keep struct isl_basic_set *a, __islpy_keep struct isl_basic_set *b, void *user), void *user); int isl_basic_set_list_foreach_scc(__islpy_keep isl_basic_set_list *list, int (*follows)(__islpy_keep struct isl_basic_set *a, __islpy_keep struct isl_basic_set *b, void *user), void *follows_user, int (*fn)(__islpy_take isl_basic_set_list *scc, void *user), void *fn_user); __islpy_give isl_printer *isl_printer_print_basic_set_list( __islpy_take isl_printer *p, __islpy_keep isl_basic_set_list *list); void isl_basic_set_list_dump(__islpy_keep isl_basic_set_list *list); + + + +struct isl_set; struct isl_set_list; typedef struct isl_set_list isl_set_list; isl_ctx *isl_set_list_get_ctx(__islpy_keep isl_set_list *list); __islpy_give isl_set_list *isl_set_list_from_set( __islpy_take struct isl_set *el); __islpy_give isl_set_list *isl_set_list_alloc(isl_ctx *ctx, int n); __islpy_give isl_set_list *isl_set_list_copy( __islpy_keep isl_set_list *list); isl_set_list *isl_set_list_free( __islpy_take isl_set_list *list); __islpy_give isl_set_list *isl_set_list_add( __islpy_take isl_set_list *list, __islpy_take struct isl_set *el); __islpy_give isl_set_list *isl_set_list_insert( __islpy_take isl_set_list *list, unsigned pos, __islpy_take struct isl_set *el); __islpy_give isl_set_list *isl_set_list_drop( __islpy_take isl_set_list *list, unsigned first, unsigned n); __islpy_give isl_set_list *isl_set_list_concat( __islpy_take isl_set_list *list1, __islpy_take isl_set_list *list2); int isl_set_list_n_set(__islpy_keep isl_set_list *list); __islpy_give struct isl_set *isl_set_list_get_set( __islpy_keep isl_set_list *list, int index); __islpy_give struct isl_set_list *isl_set_list_set_set( __islpy_take struct isl_set_list *list, int index, __islpy_take struct isl_set *el); int isl_set_list_foreach(__islpy_keep isl_set_list *list, int (*fn)(__islpy_take struct isl_set *el, void *user), void *user); __islpy_give isl_set_list *isl_set_list_sort( __islpy_take isl_set_list *list, int (*cmp)(__islpy_keep struct isl_set *a, __islpy_keep struct isl_set *b, void *user), void *user); int isl_set_list_foreach_scc(__islpy_keep isl_set_list *list, int (*follows)(__islpy_keep struct isl_set *a, __islpy_keep struct isl_set *b, void *user), void *follows_user, int (*fn)(__islpy_take isl_set_list *scc, void *user), void *fn_user); __islpy_give isl_printer *isl_printer_print_set_list( __islpy_take isl_printer *p, __islpy_keep isl_set_list *list); void isl_set_list_dump(__islpy_keep isl_set_list *list); + + + + + +struct isl_ast_expr; struct isl_ast_expr_list; typedef struct isl_ast_expr_list isl_ast_expr_list; isl_ctx *isl_ast_expr_list_get_ctx(__islpy_keep isl_ast_expr_list *list); __islpy_give isl_ast_expr_list *isl_ast_expr_list_from_ast_expr( __islpy_take struct isl_ast_expr *el); __islpy_give isl_ast_expr_list *isl_ast_expr_list_alloc(isl_ctx *ctx, int n); __islpy_give isl_ast_expr_list *isl_ast_expr_list_copy( __islpy_keep isl_ast_expr_list *list); isl_ast_expr_list *isl_ast_expr_list_free( __islpy_take isl_ast_expr_list *list); __islpy_give isl_ast_expr_list *isl_ast_expr_list_add( __islpy_take isl_ast_expr_list *list, __islpy_take struct isl_ast_expr *el); __islpy_give isl_ast_expr_list *isl_ast_expr_list_insert( __islpy_take isl_ast_expr_list *list, unsigned pos, __islpy_take struct isl_ast_expr *el); __islpy_give isl_ast_expr_list *isl_ast_expr_list_drop( __islpy_take isl_ast_expr_list *list, unsigned first, unsigned n); __islpy_give isl_ast_expr_list *isl_ast_expr_list_concat( __islpy_take isl_ast_expr_list *list1, __islpy_take isl_ast_expr_list *list2); int isl_ast_expr_list_n_ast_expr(__islpy_keep isl_ast_expr_list *list); __islpy_give struct isl_ast_expr *isl_ast_expr_list_get_ast_expr( __islpy_keep isl_ast_expr_list *list, int index); __islpy_give struct isl_ast_expr_list *isl_ast_expr_list_set_ast_expr( __islpy_take struct isl_ast_expr_list *list, int index, __islpy_take struct isl_ast_expr *el); int isl_ast_expr_list_foreach(__islpy_keep isl_ast_expr_list *list, int (*fn)(__islpy_take struct isl_ast_expr *el, void *user), void *user); __islpy_give isl_ast_expr_list *isl_ast_expr_list_sort( __islpy_take isl_ast_expr_list *list, int (*cmp)(__islpy_keep struct isl_ast_expr *a, __islpy_keep struct isl_ast_expr *b, void *user), void *user); int isl_ast_expr_list_foreach_scc(__islpy_keep isl_ast_expr_list *list, int (*follows)(__islpy_keep struct isl_ast_expr *a, __islpy_keep struct isl_ast_expr *b, void *user), void *follows_user, int (*fn)(__islpy_take isl_ast_expr_list *scc, void *user), void *fn_user); __islpy_give isl_printer *isl_printer_print_ast_expr_list( __islpy_take isl_printer *p, __islpy_keep isl_ast_expr_list *list); void isl_ast_expr_list_dump(__islpy_keep isl_ast_expr_list *list); +struct isl_ast_node; struct isl_ast_node_list; typedef struct isl_ast_node_list isl_ast_node_list; isl_ctx *isl_ast_node_list_get_ctx(__islpy_keep isl_ast_node_list *list); __islpy_give isl_ast_node_list *isl_ast_node_list_from_ast_node( __islpy_take struct isl_ast_node *el); __islpy_give isl_ast_node_list *isl_ast_node_list_alloc(isl_ctx *ctx, int n); __islpy_give isl_ast_node_list *isl_ast_node_list_copy( __islpy_keep isl_ast_node_list *list); isl_ast_node_list *isl_ast_node_list_free( __islpy_take isl_ast_node_list *list); __islpy_give isl_ast_node_list *isl_ast_node_list_add( __islpy_take isl_ast_node_list *list, __islpy_take struct isl_ast_node *el); __islpy_give isl_ast_node_list *isl_ast_node_list_insert( __islpy_take isl_ast_node_list *list, unsigned pos, __islpy_take struct isl_ast_node *el); __islpy_give isl_ast_node_list *isl_ast_node_list_drop( __islpy_take isl_ast_node_list *list, unsigned first, unsigned n); __islpy_give isl_ast_node_list *isl_ast_node_list_concat( __islpy_take isl_ast_node_list *list1, __islpy_take isl_ast_node_list *list2); int isl_ast_node_list_n_ast_node(__islpy_keep isl_ast_node_list *list); __islpy_give struct isl_ast_node *isl_ast_node_list_get_ast_node( __islpy_keep isl_ast_node_list *list, int index); __islpy_give struct isl_ast_node_list *isl_ast_node_list_set_ast_node( __islpy_take struct isl_ast_node_list *list, int index, __islpy_take struct isl_ast_node *el); int isl_ast_node_list_foreach(__islpy_keep isl_ast_node_list *list, int (*fn)(__islpy_take struct isl_ast_node *el, void *user), void *user); __islpy_give isl_ast_node_list *isl_ast_node_list_sort( __islpy_take isl_ast_node_list *list, int (*cmp)(__islpy_keep struct isl_ast_node *a, __islpy_keep struct isl_ast_node *b, void *user), void *user); int isl_ast_node_list_foreach_scc(__islpy_keep isl_ast_node_list *list, int (*follows)(__islpy_keep struct isl_ast_node *a, __islpy_keep struct isl_ast_node *b, void *user), void *follows_user, int (*fn)(__islpy_take isl_ast_node_list *scc, void *user), void *fn_user); __islpy_give isl_printer *isl_printer_print_ast_node_list( __islpy_take isl_printer *p, __islpy_keep isl_ast_node_list *list); void isl_ast_node_list_dump(__islpy_keep isl_ast_node_list *list); +struct isl_band; struct isl_band_list; typedef struct isl_band_list isl_band_list; isl_ctx *isl_band_list_get_ctx(__islpy_keep isl_band_list *list); __islpy_give isl_band_list *isl_band_list_from_band( __islpy_take struct isl_band *el); __islpy_give isl_band_list *isl_band_list_alloc(isl_ctx *ctx, int n); __islpy_give isl_band_list *isl_band_list_copy( __islpy_keep isl_band_list *list); isl_band_list *isl_band_list_free( __islpy_take isl_band_list *list); __islpy_give isl_band_list *isl_band_list_add( __islpy_take isl_band_list *list, __islpy_take struct isl_band *el); __islpy_give isl_band_list *isl_band_list_insert( __islpy_take isl_band_list *list, unsigned pos, __islpy_take struct isl_band *el); __islpy_give isl_band_list *isl_band_list_drop( __islpy_take isl_band_list *list, unsigned first, unsigned n); __islpy_give isl_band_list *isl_band_list_concat( __islpy_take isl_band_list *list1, __islpy_take isl_band_list *list2); int isl_band_list_n_band(__islpy_keep isl_band_list *list); __islpy_give struct isl_band *isl_band_list_get_band( __islpy_keep isl_band_list *list, int index); __islpy_give struct isl_band_list *isl_band_list_set_band( __islpy_take struct isl_band_list *list, int index, __islpy_take struct isl_band *el); int isl_band_list_foreach(__islpy_keep isl_band_list *list, int (*fn)(__islpy_take struct isl_band *el, void *user), void *user); __islpy_give isl_band_list *isl_band_list_sort( __islpy_take isl_band_list *list, int (*cmp)(__islpy_keep struct isl_band *a, __islpy_keep struct isl_band *b, void *user), void *user); int isl_band_list_foreach_scc(__islpy_keep isl_band_list *list, int (*follows)(__islpy_keep struct isl_band *a, __islpy_keep struct isl_band *b, void *user), void *follows_user, int (*fn)(__islpy_take isl_band_list *scc, void *user), void *fn_user); __islpy_give isl_printer *isl_printer_print_band_list( __islpy_take isl_printer *p, __islpy_keep isl_band_list *list); void isl_band_list_dump(__islpy_keep isl_band_list *list); + +unsigned isl_multi_aff_dim(__islpy_keep isl_multi_aff *multi, enum isl_dim_type type); isl_ctx *isl_multi_aff_get_ctx( __islpy_keep isl_multi_aff *multi); __islpy_give isl_space *isl_multi_aff_get_space( __islpy_keep isl_multi_aff *multi); __islpy_give isl_space *isl_multi_aff_get_domain_space( __islpy_keep isl_multi_aff *multi); __islpy_give isl_multi_aff *isl_multi_aff_from_aff_list( __islpy_take isl_space *space, __islpy_take isl_aff_list *list); __islpy_give isl_multi_aff *isl_multi_aff_zero( __islpy_take isl_space *space); __islpy_give isl_multi_aff *isl_multi_aff_copy( __islpy_keep isl_multi_aff *multi); isl_multi_aff *isl_multi_aff_free( __islpy_take isl_multi_aff *multi); int isl_multi_aff_plain_is_equal( __islpy_keep isl_multi_aff *multi1, __islpy_keep isl_multi_aff *multi2); int isl_multi_aff_find_dim_by_id( __islpy_keep isl_multi_aff *multi, enum isl_dim_type type, __islpy_keep isl_id *id); __islpy_give isl_id *isl_multi_aff_get_dim_id( __islpy_take isl_multi_aff *multi, enum isl_dim_type type, unsigned pos); __islpy_give isl_multi_aff *isl_multi_aff_set_dim_name( __islpy_take isl_multi_aff *multi, enum isl_dim_type type, unsigned pos, const char *s); __islpy_give isl_multi_aff *isl_multi_aff_set_dim_id( __islpy_take isl_multi_aff *multi, enum isl_dim_type type, unsigned pos, __islpy_take isl_id *id); const char *isl_multi_aff_get_tuple_name( __islpy_keep isl_multi_aff *multi, enum isl_dim_type type); int isl_multi_aff_has_tuple_id(__islpy_keep isl_multi_aff *multi, enum isl_dim_type type); __islpy_give isl_id *isl_multi_aff_get_tuple_id( __islpy_keep isl_multi_aff *multi, enum isl_dim_type type); __islpy_give isl_multi_aff *isl_multi_aff_set_tuple_name( __islpy_take isl_multi_aff *multi, enum isl_dim_type type, const char *s); __islpy_give isl_multi_aff *isl_multi_aff_set_tuple_id( __islpy_take isl_multi_aff *multi, enum isl_dim_type type, __islpy_take isl_id *id); __islpy_give isl_multi_aff *isl_multi_aff_reset_tuple_id( __islpy_take isl_multi_aff *multi, enum isl_dim_type type); __islpy_give isl_multi_aff *isl_multi_aff_reset_user( __islpy_take isl_multi_aff *multi); int isl_multi_aff_involves_dims( __islpy_keep isl_multi_aff *multi, enum isl_dim_type type, unsigned first, unsigned n); __islpy_give isl_multi_aff *isl_multi_aff_insert_dims( __islpy_take isl_multi_aff *multi, enum isl_dim_type type, unsigned first, unsigned n); __islpy_give isl_multi_aff *isl_multi_aff_add_dims( __islpy_take isl_multi_aff *multi, enum isl_dim_type type, unsigned n); __islpy_give isl_multi_aff *isl_multi_aff_drop_dims( __islpy_take isl_multi_aff *multi, enum isl_dim_type type, unsigned first, unsigned n); __islpy_give isl_aff *isl_multi_aff_get_aff( __islpy_keep isl_multi_aff *multi, int pos); __islpy_give isl_multi_aff *isl_multi_aff_set_aff( __islpy_take isl_multi_aff *multi, int pos, __islpy_take isl_aff *el); __islpy_give isl_multi_aff *isl_multi_aff_range_splice( __islpy_take isl_multi_aff *multi1, unsigned pos, __islpy_take isl_multi_aff *multi2); __islpy_give isl_multi_aff *isl_multi_aff_splice( __islpy_take isl_multi_aff *multi1, unsigned in_pos, unsigned out_pos, __islpy_take isl_multi_aff *multi2); __islpy_give isl_multi_aff *isl_multi_aff_flat_range_product( __islpy_take isl_multi_aff *multi1, __islpy_take isl_multi_aff *multi2); __islpy_give isl_multi_aff *isl_multi_aff_range_product( __islpy_take isl_multi_aff *multi1, __islpy_take isl_multi_aff *multi2); __islpy_give isl_multi_aff *isl_multi_aff_product( __islpy_take isl_multi_aff *multi1, __islpy_take isl_multi_aff *multi2); int isl_multi_aff_range_is_wrapping( __islpy_keep isl_multi_aff *multi); __islpy_give isl_multi_aff *isl_multi_aff_range_factor_domain( __islpy_take isl_multi_aff *multi); __islpy_give isl_multi_aff *isl_multi_aff_range_factor_range( __islpy_take isl_multi_aff *multi); __islpy_give isl_multi_aff *isl_multi_aff_scale_val( __islpy_take isl_multi_aff *multi, __islpy_take isl_val *v); __islpy_give isl_multi_aff *isl_multi_aff_scale_multi_val( __islpy_take isl_multi_aff *multi, __islpy_take isl_multi_val *mv); __islpy_give isl_multi_aff *isl_multi_aff_scale_down_multi_val( __islpy_take isl_multi_aff *multi, __islpy_take isl_multi_val *mv); __islpy_give isl_multi_aff *isl_multi_aff_align_params( __islpy_take isl_multi_aff *multi, __islpy_take isl_space *model); __islpy_give isl_multi_aff *isl_multi_aff_from_range( __islpy_take isl_multi_aff *multi); +unsigned isl_multi_pw_aff_dim(__islpy_keep isl_multi_pw_aff *multi, enum isl_dim_type type); isl_ctx *isl_multi_pw_aff_get_ctx( __islpy_keep isl_multi_pw_aff *multi); __islpy_give isl_space *isl_multi_pw_aff_get_space( __islpy_keep isl_multi_pw_aff *multi); __islpy_give isl_space *isl_multi_pw_aff_get_domain_space( __islpy_keep isl_multi_pw_aff *multi); __islpy_give isl_multi_pw_aff *isl_multi_pw_aff_from_pw_aff_list( __islpy_take isl_space *space, __islpy_take isl_pw_aff_list *list); __islpy_give isl_multi_pw_aff *isl_multi_pw_aff_zero( __islpy_take isl_space *space); __islpy_give isl_multi_pw_aff *isl_multi_pw_aff_copy( __islpy_keep isl_multi_pw_aff *multi); isl_multi_pw_aff *isl_multi_pw_aff_free( __islpy_take isl_multi_pw_aff *multi); int isl_multi_pw_aff_plain_is_equal( __islpy_keep isl_multi_pw_aff *multi1, __islpy_keep isl_multi_pw_aff *multi2); int isl_multi_pw_aff_find_dim_by_id( __islpy_keep isl_multi_pw_aff *multi, enum isl_dim_type type, __islpy_keep isl_id *id); __islpy_give isl_id *isl_multi_pw_aff_get_dim_id( __islpy_take isl_multi_pw_aff *multi, enum isl_dim_type type, unsigned pos); __islpy_give isl_multi_pw_aff *isl_multi_pw_aff_set_dim_name( __islpy_take isl_multi_pw_aff *multi, enum isl_dim_type type, unsigned pos, const char *s); __islpy_give isl_multi_pw_aff *isl_multi_pw_aff_set_dim_id( __islpy_take isl_multi_pw_aff *multi, enum isl_dim_type type, unsigned pos, __islpy_take isl_id *id); const char *isl_multi_pw_aff_get_tuple_name( __islpy_keep isl_multi_pw_aff *multi, enum isl_dim_type type); int isl_multi_pw_aff_has_tuple_id(__islpy_keep isl_multi_pw_aff *multi, enum isl_dim_type type); __islpy_give isl_id *isl_multi_pw_aff_get_tuple_id( __islpy_keep isl_multi_pw_aff *multi, enum isl_dim_type type); __islpy_give isl_multi_pw_aff *isl_multi_pw_aff_set_tuple_name( __islpy_take isl_multi_pw_aff *multi, enum isl_dim_type type, const char *s); __islpy_give isl_multi_pw_aff *isl_multi_pw_aff_set_tuple_id( __islpy_take isl_multi_pw_aff *multi, enum isl_dim_type type, __islpy_take isl_id *id); __islpy_give isl_multi_pw_aff *isl_multi_pw_aff_reset_tuple_id( __islpy_take isl_multi_pw_aff *multi, enum isl_dim_type type); __islpy_give isl_multi_pw_aff *isl_multi_pw_aff_reset_user( __islpy_take isl_multi_pw_aff *multi); int isl_multi_pw_aff_involves_dims( __islpy_keep isl_multi_pw_aff *multi, enum isl_dim_type type, unsigned first, unsigned n); __islpy_give isl_multi_pw_aff *isl_multi_pw_aff_insert_dims( __islpy_take isl_multi_pw_aff *multi, enum isl_dim_type type, unsigned first, unsigned n); __islpy_give isl_multi_pw_aff *isl_multi_pw_aff_add_dims( __islpy_take isl_multi_pw_aff *multi, enum isl_dim_type type, unsigned n); __islpy_give isl_multi_pw_aff *isl_multi_pw_aff_drop_dims( __islpy_take isl_multi_pw_aff *multi, enum isl_dim_type type, unsigned first, unsigned n); __islpy_give isl_pw_aff *isl_multi_pw_aff_get_pw_aff( __islpy_keep isl_multi_pw_aff *multi, int pos); __islpy_give isl_multi_pw_aff *isl_multi_pw_aff_set_pw_aff( __islpy_take isl_multi_pw_aff *multi, int pos, __islpy_take isl_pw_aff *el); __islpy_give isl_multi_pw_aff *isl_multi_pw_aff_range_splice( __islpy_take isl_multi_pw_aff *multi1, unsigned pos, __islpy_take isl_multi_pw_aff *multi2); __islpy_give isl_multi_pw_aff *isl_multi_pw_aff_splice( __islpy_take isl_multi_pw_aff *multi1, unsigned in_pos, unsigned out_pos, __islpy_take isl_multi_pw_aff *multi2); __islpy_give isl_multi_pw_aff *isl_multi_pw_aff_flat_range_product( __islpy_take isl_multi_pw_aff *multi1, __islpy_take isl_multi_pw_aff *multi2); __islpy_give isl_multi_pw_aff *isl_multi_pw_aff_range_product( __islpy_take isl_multi_pw_aff *multi1, __islpy_take isl_multi_pw_aff *multi2); __islpy_give isl_multi_pw_aff *isl_multi_pw_aff_product( __islpy_take isl_multi_pw_aff *multi1, __islpy_take isl_multi_pw_aff *multi2); int isl_multi_pw_aff_range_is_wrapping( __islpy_keep isl_multi_pw_aff *multi); __islpy_give isl_multi_pw_aff *isl_multi_pw_aff_range_factor_domain( __islpy_take isl_multi_pw_aff *multi); __islpy_give isl_multi_pw_aff *isl_multi_pw_aff_range_factor_range( __islpy_take isl_multi_pw_aff *multi); __islpy_give isl_multi_pw_aff *isl_multi_pw_aff_scale_val( __islpy_take isl_multi_pw_aff *multi, __islpy_take isl_val *v); __islpy_give isl_multi_pw_aff *isl_multi_pw_aff_scale_multi_val( __islpy_take isl_multi_pw_aff *multi, __islpy_take isl_multi_val *mv); __islpy_give isl_multi_pw_aff *isl_multi_pw_aff_scale_down_multi_val( __islpy_take isl_multi_pw_aff *multi, __islpy_take isl_multi_val *mv); __islpy_give isl_multi_pw_aff *isl_multi_pw_aff_align_params( __islpy_take isl_multi_pw_aff *multi, __islpy_take isl_space *model); __islpy_give isl_multi_pw_aff *isl_multi_pw_aff_from_range( __islpy_take isl_multi_pw_aff *multi); +unsigned isl_multi_val_dim(__islpy_keep isl_multi_val *multi, enum isl_dim_type type); isl_ctx *isl_multi_val_get_ctx( __islpy_keep isl_multi_val *multi); __islpy_give isl_space *isl_multi_val_get_space( __islpy_keep isl_multi_val *multi); __islpy_give isl_space *isl_multi_val_get_domain_space( __islpy_keep isl_multi_val *multi); __islpy_give isl_multi_val *isl_multi_val_from_val_list( __islpy_take isl_space *space, __islpy_take isl_val_list *list); __islpy_give isl_multi_val *isl_multi_val_zero( __islpy_take isl_space *space); __islpy_give isl_multi_val *isl_multi_val_copy( __islpy_keep isl_multi_val *multi); isl_multi_val *isl_multi_val_free( __islpy_take isl_multi_val *multi); int isl_multi_val_plain_is_equal( __islpy_keep isl_multi_val *multi1, __islpy_keep isl_multi_val *multi2); int isl_multi_val_find_dim_by_id( __islpy_keep isl_multi_val *multi, enum isl_dim_type type, __islpy_keep isl_id *id); __islpy_give isl_id *isl_multi_val_get_dim_id( __islpy_take isl_multi_val *multi, enum isl_dim_type type, unsigned pos); __islpy_give isl_multi_val *isl_multi_val_set_dim_name( __islpy_take isl_multi_val *multi, enum isl_dim_type type, unsigned pos, const char *s); __islpy_give isl_multi_val *isl_multi_val_set_dim_id( __islpy_take isl_multi_val *multi, enum isl_dim_type type, unsigned pos, __islpy_take isl_id *id); const char *isl_multi_val_get_tuple_name( __islpy_keep isl_multi_val *multi, enum isl_dim_type type); int isl_multi_val_has_tuple_id(__islpy_keep isl_multi_val *multi, enum isl_dim_type type); __islpy_give isl_id *isl_multi_val_get_tuple_id( __islpy_keep isl_multi_val *multi, enum isl_dim_type type); __islpy_give isl_multi_val *isl_multi_val_set_tuple_name( __islpy_take isl_multi_val *multi, enum isl_dim_type type, const char *s); __islpy_give isl_multi_val *isl_multi_val_set_tuple_id( __islpy_take isl_multi_val *multi, enum isl_dim_type type, __islpy_take isl_id *id); __islpy_give isl_multi_val *isl_multi_val_reset_tuple_id( __islpy_take isl_multi_val *multi, enum isl_dim_type type); __islpy_give isl_multi_val *isl_multi_val_reset_user( __islpy_take isl_multi_val *multi); int isl_multi_val_involves_dims( __islpy_keep isl_multi_val *multi, enum isl_dim_type type, unsigned first, unsigned n); __islpy_give isl_multi_val *isl_multi_val_insert_dims( __islpy_take isl_multi_val *multi, enum isl_dim_type type, unsigned first, unsigned n); __islpy_give isl_multi_val *isl_multi_val_add_dims( __islpy_take isl_multi_val *multi, enum isl_dim_type type, unsigned n); __islpy_give isl_multi_val *isl_multi_val_drop_dims( __islpy_take isl_multi_val *multi, enum isl_dim_type type, unsigned first, unsigned n); __islpy_give isl_val *isl_multi_val_get_val( __islpy_keep isl_multi_val *multi, int pos); __islpy_give isl_multi_val *isl_multi_val_set_val( __islpy_take isl_multi_val *multi, int pos, __islpy_take isl_val *el); __islpy_give isl_multi_val *isl_multi_val_range_splice( __islpy_take isl_multi_val *multi1, unsigned pos, __islpy_take isl_multi_val *multi2); __islpy_give isl_multi_val *isl_multi_val_splice( __islpy_take isl_multi_val *multi1, unsigned in_pos, unsigned out_pos, __islpy_take isl_multi_val *multi2); __islpy_give isl_multi_val *isl_multi_val_flat_range_product( __islpy_take isl_multi_val *multi1, __islpy_take isl_multi_val *multi2); __islpy_give isl_multi_val *isl_multi_val_range_product( __islpy_take isl_multi_val *multi1, __islpy_take isl_multi_val *multi2); __islpy_give isl_multi_val *isl_multi_val_product( __islpy_take isl_multi_val *multi1, __islpy_take isl_multi_val *multi2); int isl_multi_val_range_is_wrapping( __islpy_keep isl_multi_val *multi); __islpy_give isl_multi_val *isl_multi_val_range_factor_domain( __islpy_take isl_multi_val *multi); __islpy_give isl_multi_val *isl_multi_val_range_factor_range( __islpy_take isl_multi_val *multi); __islpy_give isl_multi_val *isl_multi_val_scale_val( __islpy_take isl_multi_val *multi, __islpy_take isl_val *v); __islpy_give isl_multi_val *isl_multi_val_scale_multi_val( __islpy_take isl_multi_val *multi, __islpy_take isl_multi_val *mv); __islpy_give isl_multi_val *isl_multi_val_scale_down_multi_val( __islpy_take isl_multi_val *multi, __islpy_take isl_multi_val *mv); __islpy_give isl_multi_val *isl_multi_val_align_params( __islpy_take isl_multi_val *multi, __islpy_take isl_space *model); __islpy_give isl_multi_val *isl_multi_val_from_range( __islpy_take isl_multi_val *multi); diff --git a/regenerate-isl-declaration-macros-expanded.sh b/regenerate-isl-declaration-macros-expanded.sh index 2d65f19..fcef4f7 100755 --- a/regenerate-isl-declaration-macros-expanded.sh +++ b/regenerate-isl-declaration-macros-expanded.sh @@ -3,10 +3,18 @@ set -e set -x -cc -E -Iisl/include -Iisl-supplementary \ - -imacros isl/include/isl/list.h \ - -imacros isl/include/isl/multi.h \ - -o isl_declaration_macros_expanded.h \ +#INCLUDEPATH=isl/include +#OUTFILE=isl_declaration_macros_expanded.h +#DEFINES="-DISLPY_ISL_VERSION=15" + +INCLUDEPATH=$HOME/pool/include +OUTFILE=isl_declaration_macros_expanded_v14.h +DEFINES="-DISLPY_ISL_VERSION=14" + +cc -E $DEFINES -I$INCLUDEPATH -Iisl-supplementary \ + -imacros $INCLUDEPATH/isl/list.h \ + -imacros $INCLUDEPATH/isl/multi.h \ + -o $OUTFILE \ isl_declaration_macros.h -sed -i s/__islpy_/__isl_/g isl_declaration_macros_expanded.h +sed -i s/__islpy_/__isl_/g isl_declaration_macros_expanded.h diff --git a/setup.py b/setup.py index 5583a36..afbfeb7 100644 --- a/setup.py +++ b/setup.py @@ -12,6 +12,7 @@ def get_config_schema(): Switch("USE_SHIPPED_BOOST", True, "Use included Boost library"), Switch("USE_SHIPPED_ISL", True, "Use included copy of isl"), Switch("USE_SHIPPED_IMATH", True, "Use included copy of imath in isl"), + Switch("USE_BARVINOK", False, "Include wrapper for Barvinok"), IncludeDir("GMP", []), LibraryDir("GMP", []), @@ -21,6 +22,10 @@ def get_config_schema(): LibraryDir("ISL", []), Libraries("ISL", ["isl"]), + IncludeDir("BARVINOK", []), + LibraryDir("BARVINOK", []), + Libraries("BARVINOK", ["barvinok"]), + StringListOption("CXXFLAGS", [], help="Any extra C++ compiler options to include"), StringListOption("LDFLAGS", [], @@ -108,6 +113,29 @@ def main(): LIBRARY_DIRS.extend(conf["ISL_LIB_DIR"]) LIBRARIES.extend(conf["ISL_LIBNAME"]) + wrapper_dirs = conf["ISL_INC_DIR"][:] + + # {{{ configure barvinok + + if conf["USE_BARVINOK"]: + if conf["USE_SHIPPED_ISL"]: + raise RuntimeError("barvinok wrapper is not compatible with using " + "shipped isl") + if conf["USE_SHIPPED_IMATH"]: + raise RuntimeError("barvinok wrapper is not compatible with using " + "shipped imath") + + INCLUDE_DIRS.extend(conf["BARVINOK_INC_DIR"]) + LIBRARY_DIRS.extend(conf["BARVINOK_LIB_DIR"]) + LIBRARIES.extend(conf["BARVINOK_LIBNAME"]) + + wrapper_dirs.extend(conf["BARVINOK_INC_DIR"]) + + EXTRA_DEFINES["ISLPY_ISL_VERSION"] = 14 + EXTRA_DEFINES["ISLPY_INCLUDE_BARVINOK"] = 1 + + # }}} + INCLUDE_DIRS.extend(conf["ISL_INC_DIR"]) if not (conf["USE_SHIPPED_ISL"] and conf["USE_SHIPPED_IMATH"]): @@ -119,7 +147,8 @@ def main(): exec(compile(open(init_filename, "r").read(), init_filename, "exec"), conf) from gen_wrap import gen_wrapper - gen_wrapper(conf["ISL_INC_DIR"]) + gen_wrapper(wrapper_dirs, include_barvinok=conf["USE_BARVINOK"], + isl_version=EXTRA_DEFINES.get("ISLPY_ISL_VERSION")) setup(name="islpy", version=conf["VERSION_TEXT"], diff --git a/src/wrapper/wrap_isl.hpp b/src/wrapper/wrap_isl.hpp index 2df5cf3..32828b2 100644 --- a/src/wrapper/wrap_isl.hpp +++ b/src/wrapper/wrap_isl.hpp @@ -20,10 +20,16 @@ #include #include #include + +#ifdef ISLPY_INCLUDE_BARVINOK +#include +#endif + #include #include #include + // TODO: flow.h // TODO: better error reporting @@ -145,13 +151,17 @@ namespace isl MAKE_CAST_CTOR(pw_aff, aff, isl_pw_aff_from_aff); }; +#if !defined(ISLPY_ISL_VERSION) || (ISLPY_ISL_VERSION >= 15) WRAP_CLASS(union_pw_aff); +#endif WRAP_CLASS(multi_aff); WRAP_CLASS(multi_pw_aff); WRAP_CLASS(pw_multi_aff); WRAP_CLASS(union_pw_multi_aff); +#if !defined(ISLPY_ISL_VERSION) || (ISLPY_ISL_VERSION >= 15) WRAP_CLASS(multi_union_pw_aff); +#endif WRAP_CLASS(constraint); WRAP_CLASS(space); @@ -211,10 +221,14 @@ namespace isl WRAP_CLASS(constraint_list); WRAP_CLASS(basic_set_list); +#if !defined(ISLPY_ISL_VERSION) || (ISLPY_ISL_VERSION >= 15) WRAP_CLASS(basic_map_list); +#endif WRAP_CLASS(set_list); +#if !defined(ISLPY_ISL_VERSION) || (ISLPY_ISL_VERSION >= 15) WRAP_CLASS(map_list); WRAP_CLASS(union_set_list); +#endif WRAP_CLASS(ast_expr_list); WRAP_CLASS(ast_node_list); diff --git a/src/wrapper/wrap_isl_part1.cpp b/src/wrapper/wrap_isl_part1.cpp index 30f89d0..0181aaf 100644 --- a/src/wrapper/wrap_isl_part1.cpp +++ b/src/wrapper/wrap_isl_part1.cpp @@ -52,10 +52,14 @@ void islpy_expose_part1() MAKE_WRAP(pw_aff_list, PwAffList); MAKE_WRAP(basic_set_list, BasicSetList); +#if !defined(ISLPY_ISL_VERSION) || (ISLPY_ISL_VERSION >= 15) MAKE_WRAP(basic_map_list, BasicMapList); +#endif MAKE_WRAP(set_list, SetList); +#if !defined(ISLPY_ISL_VERSION) || (ISLPY_ISL_VERSION >= 15) MAKE_WRAP(map_list, MapList); MAKE_WRAP(union_set_list, UnionSetList); +#endif MAKE_WRAP(ast_expr_list, AstExprList); MAKE_WRAP(ast_node_list, AstNodeList); @@ -80,8 +84,10 @@ void islpy_expose_part1() wrap_aff.enable_pickling(); MAKE_WRAP(pw_aff, PwAff); wrap_pw_aff.enable_pickling(); +#if !defined(ISLPY_ISL_VERSION) || (ISLPY_ISL_VERSION >= 15) MAKE_WRAP(union_pw_aff, UnionPwAff); wrap_union_pw_aff.enable_pickling(); +#endif MAKE_WRAP(multi_aff, MultiAff); wrap_multi_aff.enable_pickling(); MAKE_WRAP(multi_pw_aff, MultiPwAff); @@ -90,8 +96,10 @@ void islpy_expose_part1() wrap_pw_multi_aff.enable_pickling(); MAKE_WRAP(union_pw_multi_aff, UnionPwMultiAff); wrap_union_pw_multi_aff.enable_pickling(); +#if !defined(ISLPY_ISL_VERSION) || (ISLPY_ISL_VERSION >= 15) MAKE_WRAP(multi_union_pw_aff, MultiUnionPwAff); wrap_multi_union_pw_aff.enable_pickling(); +#endif MAKE_WRAP(id, Id); wrap_id.def("__eq__", islpy::id_eq, py::args("self", "other"), diff --git a/test/test_isl.py b/test/test_isl.py index 7191e5c..1a971e1 100644 --- a/test/test_isl.py +++ b/test/test_isl.py @@ -116,6 +116,8 @@ def test_count_brick_ish(): return result print(count(a)) + if hasattr(a, "card"): + print(a.card()) if __name__ == "__main__": -- GitLab