1214501Srpaulo/* 2214501Srpaulo * Copyright 2008-2009 Katholieke Universiteit Leuven 3214501Srpaulo * 4214501Srpaulo * Use of this software is governed by the MIT license 5252726Srpaulo * 6252726Srpaulo * Written by Sven Verdoolaege, K.U.Leuven, Departement 7214501Srpaulo * Computerwetenschappen, Celestijnenlaan 200A, B-3001 Leuven, Belgium 8214501Srpaulo */ 9214501Srpaulo 10214501Srpaulo#ifndef ISL_VEC_H 11214501Srpaulo#define ISL_VEC_H 12214501Srpaulo 13214501Srpaulo#include <stdio.h> 14214501Srpaulo 15214501Srpaulo#include <isl/ctx.h> 16214501Srpaulo#include <isl/val_type.h> 17214501Srpaulo#include <isl/printer.h> 18214501Srpaulo 19214501Srpaulo#if defined(__cplusplus) 20214501Srpauloextern "C" { 21214501Srpaulo#endif 22214501Srpaulo 23214501Srpaulostruct isl_vec; 24214501Srpaulotypedef struct isl_vec isl_vec; 25214501Srpaulo 26214501Srpaulo__isl_give isl_vec *isl_vec_alloc(isl_ctx *ctx, unsigned size); 27214501Srpaulo__isl_give isl_vec *isl_vec_zero(isl_ctx *ctx, unsigned size); 28214501Srpaulo__isl_give isl_vec *isl_vec_copy(__isl_keep isl_vec *vec); 29214501Srpaulo__isl_null isl_vec *isl_vec_free(__isl_take isl_vec *vec); 30214501Srpaulo 31214501Srpauloisl_ctx *isl_vec_get_ctx(__isl_keep isl_vec *vec); 32214501Srpaulo 33214501Srpauloisl_size isl_vec_size(__isl_keep isl_vec *vec); 34214501Srpaulo__isl_give isl_val *isl_vec_get_element_val(__isl_keep isl_vec *vec, int pos); 35214501Srpaulo__isl_give isl_vec *isl_vec_set_element_si(__isl_take isl_vec *vec, 36214501Srpaulo int pos, int v); 37214501Srpaulo__isl_give isl_vec *isl_vec_set_element_val(__isl_take isl_vec *vec, 38214501Srpaulo int pos, __isl_take isl_val *v); 39214501Srpaulo 40214501Srpauloisl_bool isl_vec_is_equal(__isl_keep isl_vec *vec1, __isl_keep isl_vec *vec2); 41214501Srpauloint isl_vec_cmp_element(__isl_keep isl_vec *vec1, __isl_keep isl_vec *vec2, 42214501Srpaulo int pos); 43214501Srpaulo 44214501Srpaulovoid isl_vec_dump(__isl_keep isl_vec *vec); 45214501Srpaulo__isl_give isl_printer *isl_printer_print_vec(__isl_take isl_printer *printer, 46214501Srpaulo __isl_keep isl_vec *vec); 47214501Srpaulo 48214501Srpaulo__isl_give isl_vec *isl_vec_ceil(__isl_take isl_vec *vec); 49214501Srpaulo__isl_give isl_vec *isl_vec_normalize(__isl_take isl_vec *vec); 50214501Srpaulo__isl_give isl_vec *isl_vec_set_si(__isl_take isl_vec *vec, int v); 51214501Srpaulo__isl_give isl_vec *isl_vec_set_val(__isl_take isl_vec *vec, 52214501Srpaulo __isl_take isl_val *v); 53214501Srpaulo__isl_give isl_vec *isl_vec_clr(__isl_take isl_vec *vec); 54214501Srpaulo__isl_give isl_vec *isl_vec_neg(__isl_take isl_vec *vec); 55214501Srpaulo__isl_give isl_vec *isl_vec_add(__isl_take isl_vec *vec1, 56214501Srpaulo __isl_take isl_vec *vec2); 57214501Srpaulo__isl_give isl_vec *isl_vec_extend(__isl_take isl_vec *vec, unsigned size); 58214501Srpaulo__isl_give isl_vec *isl_vec_zero_extend(__isl_take isl_vec *vec, unsigned size); 59214501Srpaulo__isl_give isl_vec *isl_vec_concat(__isl_take isl_vec *vec1, 60214501Srpaulo __isl_take isl_vec *vec2); 61214501Srpaulo 62214501Srpaulo__isl_give isl_vec *isl_vec_sort(__isl_take isl_vec *vec); 63214501Srpaulo 64214501Srpaulo__isl_give isl_vec *isl_vec_read_from_file(isl_ctx *ctx, FILE *input); 65214501Srpaulo 66214501Srpaulo__isl_give isl_vec *isl_vec_drop_els(__isl_take isl_vec *vec, 67214501Srpaulo unsigned pos, unsigned n); 68214501Srpaulo__isl_give isl_vec *isl_vec_add_els(__isl_take isl_vec *vec, unsigned n); 69214501Srpaulo__isl_give isl_vec *isl_vec_insert_els(__isl_take isl_vec *vec, 70214501Srpaulo unsigned pos, unsigned n); 71214501Srpaulo__isl_give isl_vec *isl_vec_insert_zero_els(__isl_take isl_vec *vec, 72214501Srpaulo unsigned pos, unsigned n); 73214501Srpaulo__isl_give isl_vec *isl_vec_move_els(__isl_take isl_vec *vec, 74214501Srpaulo unsigned dst_col, unsigned src_col, unsigned n); 75214501Srpaulo 76214501Srpaulo#if defined(__cplusplus) 77214501Srpaulo} 78214501Srpaulo#endif 79214501Srpaulo 80214501Srpaulo#endif 81214501Srpaulo