Blame isl-0.16.1/include/isl/multi.h

Packit fb9d21
#ifndef ISL_MULTI_H
Packit fb9d21
#define ISL_MULTI_H
Packit fb9d21
Packit fb9d21
#include <isl/space.h>
Packit fb9d21
#include <isl/list.h>
Packit fb9d21
#include <isl/set_type.h>
Packit fb9d21
Packit fb9d21
#if defined(__cplusplus)
Packit fb9d21
extern "C" {
Packit fb9d21
#endif
Packit fb9d21
Packit fb9d21
#define ISL_DECLARE_MULTI(BASE)						\
Packit fb9d21
unsigned isl_multi_##BASE##_dim(__isl_keep isl_multi_##BASE *multi,	\
Packit fb9d21
	enum isl_dim_type type);					\
Packit fb9d21
isl_ctx *isl_multi_##BASE##_get_ctx(					\
Packit fb9d21
	__isl_keep isl_multi_##BASE *multi);				\
Packit fb9d21
__isl_give isl_space *isl_multi_##BASE##_get_space(			\
Packit fb9d21
	__isl_keep isl_multi_##BASE *multi);				\
Packit fb9d21
__isl_give isl_space *isl_multi_##BASE##_get_domain_space(		\
Packit fb9d21
	__isl_keep isl_multi_##BASE *multi);				\
Packit fb9d21
int isl_multi_##BASE##_find_dim_by_name(				\
Packit fb9d21
	__isl_keep isl_multi_##BASE *multi,				\
Packit fb9d21
	enum isl_dim_type type, const char *name);			\
Packit fb9d21
__isl_give isl_multi_##BASE *isl_multi_##BASE##_from_##BASE##_list(	\
Packit fb9d21
	__isl_take isl_space *space, __isl_take isl_##BASE##_list *list); \
Packit fb9d21
__isl_give isl_multi_##BASE *isl_multi_##BASE##_zero(			\
Packit fb9d21
	__isl_take isl_space *space);					\
Packit fb9d21
__isl_give isl_multi_##BASE *isl_multi_##BASE##_copy(			\
Packit fb9d21
	__isl_keep isl_multi_##BASE *multi);				\
Packit fb9d21
__isl_null isl_multi_##BASE *isl_multi_##BASE##_free(			\
Packit fb9d21
	__isl_take isl_multi_##BASE *multi);				\
Packit fb9d21
isl_bool isl_multi_##BASE##_plain_is_equal(				\
Packit fb9d21
	__isl_keep isl_multi_##BASE *multi1,				\
Packit fb9d21
	__isl_keep isl_multi_##BASE *multi2);				\
Packit fb9d21
int isl_multi_##BASE##_find_dim_by_id(					\
Packit fb9d21
	__isl_keep isl_multi_##BASE *multi, enum isl_dim_type type,	\
Packit fb9d21
	__isl_keep isl_id *id);						\
Packit fb9d21
__isl_give isl_id *isl_multi_##BASE##_get_dim_id(			\
Packit fb9d21
	__isl_take isl_multi_##BASE *multi,				\
Packit fb9d21
	enum isl_dim_type type, unsigned pos);				\
Packit fb9d21
__isl_give isl_multi_##BASE *isl_multi_##BASE##_set_dim_name(		\
Packit fb9d21
	__isl_take isl_multi_##BASE *multi,				\
Packit fb9d21
	enum isl_dim_type type, unsigned pos, const char *s);		\
Packit fb9d21
__isl_give isl_multi_##BASE *isl_multi_##BASE##_set_dim_id(		\
Packit fb9d21
	__isl_take isl_multi_##BASE *multi,				\
Packit fb9d21
	enum isl_dim_type type, unsigned pos, __isl_take isl_id *id);	\
Packit fb9d21
const char *isl_multi_##BASE##_get_tuple_name(				\
Packit fb9d21
	__isl_keep isl_multi_##BASE *multi, enum isl_dim_type type);	\
Packit fb9d21
isl_bool isl_multi_##BASE##_has_tuple_id(				\
Packit fb9d21
	__isl_keep isl_multi_##BASE *multi, enum isl_dim_type type);	\
Packit fb9d21
__isl_give isl_id *isl_multi_##BASE##_get_tuple_id(			\
Packit fb9d21
	__isl_keep isl_multi_##BASE *multi, enum isl_dim_type type);	\
Packit fb9d21
__isl_give isl_multi_##BASE *isl_multi_##BASE##_set_tuple_name(		\
Packit fb9d21
	__isl_take isl_multi_##BASE *multi,				\
Packit fb9d21
	enum isl_dim_type type, const char *s);				\
Packit fb9d21
__isl_give isl_multi_##BASE *isl_multi_##BASE##_set_tuple_id(		\
Packit fb9d21
	__isl_take isl_multi_##BASE *multi,				\
Packit fb9d21
	enum isl_dim_type type, __isl_take isl_id *id);			\
Packit fb9d21
__isl_give isl_multi_##BASE *isl_multi_##BASE##_reset_tuple_id(		\
Packit fb9d21
	__isl_take isl_multi_##BASE *multi, enum isl_dim_type type);	\
Packit fb9d21
__isl_give isl_multi_##BASE *isl_multi_##BASE##_reset_user(		\
Packit fb9d21
	__isl_take isl_multi_##BASE *multi);				\
Packit fb9d21
__isl_give isl_multi_##BASE *isl_multi_##BASE##_drop_dims(		\
Packit fb9d21
	__isl_take isl_multi_##BASE *multi, enum isl_dim_type type,	\
Packit fb9d21
	unsigned first, unsigned n);					\
Packit fb9d21
__isl_give isl_##BASE *isl_multi_##BASE##_get_##BASE(			\
Packit fb9d21
	__isl_keep isl_multi_##BASE *multi, int pos);			\
Packit fb9d21
__isl_give isl_multi_##BASE *isl_multi_##BASE##_set_##BASE(		\
Packit fb9d21
	__isl_take isl_multi_##BASE *multi, int pos,			\
Packit fb9d21
	__isl_take isl_##BASE *el);					\
Packit fb9d21
__isl_give isl_multi_##BASE *isl_multi_##BASE##_range_splice(		\
Packit fb9d21
	__isl_take isl_multi_##BASE *multi1, unsigned pos,		\
Packit fb9d21
	__isl_take isl_multi_##BASE *multi2);				\
Packit fb9d21
__isl_give isl_multi_##BASE *isl_multi_##BASE##_flatten_range(		\
Packit fb9d21
	__isl_take isl_multi_##BASE *multi);				\
Packit fb9d21
__isl_export								\
Packit fb9d21
__isl_give isl_multi_##BASE *isl_multi_##BASE##_flat_range_product(	\
Packit fb9d21
	__isl_take isl_multi_##BASE *multi1,				\
Packit fb9d21
	__isl_take isl_multi_##BASE *multi2);				\
Packit fb9d21
__isl_export								\
Packit fb9d21
__isl_give isl_multi_##BASE *isl_multi_##BASE##_range_product(		\
Packit fb9d21
	__isl_take isl_multi_##BASE *multi1,				\
Packit fb9d21
	__isl_take isl_multi_##BASE *multi2);				\
Packit fb9d21
__isl_give isl_multi_##BASE *isl_multi_##BASE##_factor_range(		\
Packit fb9d21
	__isl_take isl_multi_##BASE *multi);				\
Packit fb9d21
isl_bool isl_multi_##BASE##_range_is_wrapping(				\
Packit fb9d21
	__isl_keep isl_multi_##BASE *multi);				\
Packit fb9d21
__isl_give isl_multi_##BASE *isl_multi_##BASE##_range_factor_domain(	\
Packit fb9d21
	__isl_take isl_multi_##BASE *multi);				\
Packit fb9d21
__isl_give isl_multi_##BASE *isl_multi_##BASE##_range_factor_range(	\
Packit fb9d21
	__isl_take isl_multi_##BASE *multi);				\
Packit fb9d21
__isl_give isl_multi_##BASE *isl_multi_##BASE##_scale_val(		\
Packit fb9d21
	__isl_take isl_multi_##BASE *multi, __isl_take isl_val *v);	\
Packit fb9d21
__isl_give isl_multi_##BASE *isl_multi_##BASE##_scale_down_val(		\
Packit fb9d21
	__isl_take isl_multi_##BASE *multi, __isl_take isl_val *v);	\
Packit fb9d21
__isl_give isl_multi_##BASE *isl_multi_##BASE##_scale_multi_val(	\
Packit fb9d21
	__isl_take isl_multi_##BASE *multi,				\
Packit fb9d21
	__isl_take isl_multi_val *mv);					\
Packit fb9d21
__isl_give isl_multi_##BASE *isl_multi_##BASE##_scale_down_multi_val(	\
Packit fb9d21
	__isl_take isl_multi_##BASE *multi,				\
Packit fb9d21
	__isl_take isl_multi_val *mv);					\
Packit fb9d21
__isl_give isl_multi_##BASE *isl_multi_##BASE##_mod_multi_val(		\
Packit fb9d21
	__isl_take isl_multi_##BASE *multi,				\
Packit fb9d21
	__isl_take isl_multi_val *mv);					\
Packit fb9d21
__isl_export								\
Packit fb9d21
__isl_give isl_multi_##BASE *isl_multi_##BASE##_add(			\
Packit fb9d21
	__isl_take isl_multi_##BASE *multi1,				\
Packit fb9d21
	__isl_take isl_multi_##BASE *multi2);				\
Packit fb9d21
__isl_give isl_multi_##BASE *isl_multi_##BASE##_sub(			\
Packit fb9d21
	__isl_take isl_multi_##BASE *multi1,				\
Packit fb9d21
	__isl_take isl_multi_##BASE *multi2);				\
Packit fb9d21
__isl_give isl_multi_##BASE *isl_multi_##BASE##_align_params(		\
Packit fb9d21
	__isl_take isl_multi_##BASE *multi,				\
Packit fb9d21
	__isl_take isl_space *model);					\
Packit fb9d21
__isl_give isl_multi_##BASE *isl_multi_##BASE##_from_range(		\
Packit fb9d21
	__isl_take isl_multi_##BASE *multi);
Packit fb9d21
Packit fb9d21
#define ISL_DECLARE_MULTI_NEG(BASE)					\
Packit fb9d21
__isl_give isl_multi_##BASE *isl_multi_##BASE##_neg(		 	\
Packit fb9d21
	__isl_take isl_multi_##BASE *multi);
Packit fb9d21
Packit fb9d21
#define ISL_DECLARE_MULTI_DIMS(BASE)					\
Packit fb9d21
isl_bool isl_multi_##BASE##_involves_dims(				\
Packit fb9d21
	__isl_keep isl_multi_##BASE *multi, enum isl_dim_type type,	\
Packit fb9d21
	unsigned first, unsigned n);					\
Packit fb9d21
__isl_give isl_multi_##BASE *isl_multi_##BASE##_insert_dims(		\
Packit fb9d21
	__isl_take isl_multi_##BASE *multi, enum isl_dim_type type,	\
Packit fb9d21
	unsigned first, unsigned n);					\
Packit fb9d21
__isl_give isl_multi_##BASE *isl_multi_##BASE##_add_dims(		\
Packit fb9d21
	__isl_take isl_multi_##BASE *multi, enum isl_dim_type type,	\
Packit fb9d21
	unsigned n);
Packit fb9d21
Packit fb9d21
#define ISL_DECLARE_MULTI_WITH_DOMAIN(BASE)				\
Packit fb9d21
__isl_export								\
Packit fb9d21
__isl_give isl_multi_##BASE *isl_multi_##BASE##_product(		\
Packit fb9d21
	__isl_take isl_multi_##BASE *multi1,				\
Packit fb9d21
	__isl_take isl_multi_##BASE *multi2);				\
Packit fb9d21
__isl_give isl_multi_##BASE *isl_multi_##BASE##_splice(			\
Packit fb9d21
	__isl_take isl_multi_##BASE *multi1, unsigned in_pos,		\
Packit fb9d21
	unsigned out_pos, __isl_take isl_multi_##BASE *multi2);
Packit fb9d21
Packit fb9d21
#if defined(__cplusplus)
Packit fb9d21
}
Packit fb9d21
#endif
Packit fb9d21
Packit fb9d21
#endif