


#include <isl/ctx.h>
#include <isl/id_type.h>
#include <isl/list.h>
#include <isl/multi.h>
#include <isl/printer_type.h>
#include <isl/stdint.h>





isl_ctx *isl_id_list_get_ctx(__isl_keep isl_id_list *list);	__isl_constructor								__isl_give isl_id_list *isl_id_list_from_id(				__isl_take isl_id *el);					__isl_constructor								__isl_give isl_id_list *isl_id_list_alloc(isl_ctx *ctx, int n);	__isl_give isl_id_list *isl_id_list_copy(				__isl_keep isl_id_list *list);				__isl_null isl_id_list *isl_id_list_free(				__isl_take isl_id_list *list);				__isl_export									__isl_give isl_id_list *isl_id_list_add(				__isl_take isl_id_list *list,					__isl_take isl_id *el);					__isl_export									__isl_give isl_id_list *isl_id_list_insert(				__isl_take isl_id_list *list, unsigned pos,				__isl_take isl_id *el);					__isl_export									__isl_give isl_id_list *isl_id_list_drop(				__isl_take isl_id_list *list, unsigned first, unsigned n);	__isl_export									__isl_give isl_id_list *isl_id_list_clear(				__isl_take isl_id_list *list);				__isl_give isl_id_list *isl_id_list_swap(				__isl_take isl_id_list *list, unsigned pos1,			unsigned pos2);							__isl_give isl_id_list *isl_id_list_reverse(				__isl_take isl_id_list *list);				__isl_export									__isl_give isl_id_list *isl_id_list_concat(				__isl_take isl_id_list *list1,					__isl_take isl_id_list *list2);				__isl_export									isl_size isl_id_list_size(__isl_keep isl_id_list *list);	isl_size isl_id_list_n_id(__isl_keep isl_id_list *list);	__isl_export									__isl_give isl_id *isl_id_list_get_at(					__isl_keep isl_id_list *list, int index);			__isl_give struct isl_id *isl_id_list_get_id(				__isl_keep isl_id_list *list, int index);			__isl_give struct isl_id_list *isl_id_list_set_id(			__isl_take struct isl_id_list *list, int index,			__isl_take struct isl_id *el);				__isl_export									isl_stat isl_id_list_foreach(__isl_keep isl_id_list *list,		isl_stat (*fn)(__isl_take isl_id *el, void *user),			void *user);							isl_bool isl_id_list_every(__isl_keep isl_id_list *list,		isl_bool (*test)(__isl_keep isl_id *el, void *user),			void *user);							__isl_give isl_id_list *isl_id_list_map(				__isl_take isl_id_list *list,					__isl_give isl_id * (*fn)(__isl_take isl_id *el,				void *user),							void *user);							__isl_give isl_id_list *isl_id_list_sort(				__isl_take isl_id_list *list,					int (*cmp)(__isl_keep struct isl_id *a,					__isl_keep struct isl_id *b,						void *user), void *user);				isl_stat isl_id_list_foreach_scc(__isl_keep isl_id_list *list,		isl_bool (*follows)(__isl_keep struct isl_id *a,					__isl_keep struct isl_id *b, void *user),		void *follows_user,							isl_stat (*fn)(__isl_take isl_id_list *scc, void *user),		void *fn_user);							__isl_give char *isl_id_list_to_str(					__isl_keep isl_id_list *list);				__isl_give isl_printer *isl_printer_print_id_list(				__isl_take isl_printer *p, __isl_keep isl_id_list *list);	void isl_id_list_dump(__isl_keep isl_id_list *list);

isl_ctx *isl_multi_id_get_ctx(						__isl_keep isl_multi_id *multi);				__isl_export								__isl_give isl_space *isl_multi_id_get_space(				__isl_keep isl_multi_id *multi);				__isl_give isl_space *isl_multi_id_get_domain_space(			__isl_keep isl_multi_id *multi);				__isl_export								__isl_give isl_id_list *isl_multi_id_get_list(			__isl_keep isl_multi_id *multi);				__isl_constructor							__isl_give isl_multi_id *isl_multi_id_from_id_list(		__isl_take isl_space *space, __isl_take isl_id_list *list); __isl_give isl_multi_id *isl_multi_id_copy(				__isl_keep isl_multi_id *multi);				__isl_null isl_multi_id *isl_multi_id_free(				__isl_take isl_multi_id *multi);				__isl_export								isl_bool isl_multi_id_plain_is_equal(					__isl_keep isl_multi_id *multi1,					__isl_keep isl_multi_id *multi2);				__isl_give isl_multi_id *isl_multi_id_reset_user(			__isl_take isl_multi_id *multi);				__isl_export								isl_size isl_multi_id_size(__isl_keep isl_multi_id *multi);	__isl_export								__isl_give isl_id *isl_multi_id_get_at(				__isl_keep isl_multi_id *multi, int pos);			__isl_give isl_id *isl_multi_id_get_id(				__isl_keep isl_multi_id *multi, int pos);			__isl_export								__isl_give isl_multi_id *isl_multi_id_set_at(				__isl_take isl_multi_id *multi, int pos,				__isl_take isl_id *el);					__isl_give isl_multi_id *isl_multi_id_set_id(			__isl_take isl_multi_id *multi, int pos,				__isl_take isl_id *el);					__isl_give isl_multi_id *isl_multi_id_range_splice(			__isl_take isl_multi_id *multi1, unsigned pos,			__isl_take isl_multi_id *multi2);				__isl_give isl_multi_id *isl_multi_id_flatten_range(			__isl_take isl_multi_id *multi);				__isl_export								__isl_give isl_multi_id *isl_multi_id_flat_range_product(		__isl_take isl_multi_id *multi1,					__isl_take isl_multi_id *multi2);				__isl_export								__isl_give isl_multi_id *isl_multi_id_range_product(			__isl_take isl_multi_id *multi1,					__isl_take isl_multi_id *multi2);				__isl_give isl_multi_id *isl_multi_id_factor_range(			__isl_take isl_multi_id *multi);				isl_bool isl_multi_id_range_is_wrapping(					__isl_keep isl_multi_id *multi);				__isl_give isl_multi_id *isl_multi_id_range_factor_domain(		__isl_take isl_multi_id *multi);				__isl_give isl_multi_id *isl_multi_id_range_factor_range(		__isl_take isl_multi_id *multi);				__isl_give isl_multi_id *isl_multi_id_align_params(			__isl_take isl_multi_id *multi,					__isl_take isl_space *model);					__isl_give isl_multi_id *isl_multi_id_from_range(			__isl_take isl_multi_id *multi);

isl_ctx *isl_id_get_ctx(__isl_keep isl_id *id);
uint32_t isl_id_get_hash(__isl_keep 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_copy(isl_id *id);
__isl_null isl_id *isl_id_free(__isl_take isl_id *id);

void *isl_id_get_user(__isl_keep isl_id *id);
__isl_export
__isl_keep const char *isl_id_get_name(__isl_keep isl_id *id);

__isl_give isl_id *isl_id_set_free_user(__isl_take isl_id *id,
	void (*free_user)(void *user));

__isl_constructor
__isl_give isl_id *isl_id_read_from_str(isl_ctx *ctx, const char *str);
__isl_give char *isl_id_to_str(__isl_keep isl_id *id);
__isl_give isl_printer *isl_printer_print_id(__isl_take isl_printer *p,
	__isl_keep isl_id *id);
void isl_id_dump(__isl_keep isl_id *id);

__isl_constructor
__isl_give isl_multi_id *isl_multi_id_read_from_str(isl_ctx *ctx,
	const char *str);
__isl_give isl_printer *isl_printer_print_multi_id(__isl_take isl_printer *p,
	__isl_keep isl_multi_id *mi);
void isl_multi_id_dump(__isl_keep isl_multi_id *mi);
__isl_give char *isl_multi_id_to_str(__isl_keep isl_multi_id *mi);
