add isl_vec_sort
authorSven Verdoolaege <skimo@kotnet.org>
Wed, 4 May 2011 13:46:49 +0000 (15:46 +0200)
committerSven Verdoolaege <skimo@kotnet.org>
Thu, 5 May 2011 10:33:47 +0000 (12:33 +0200)
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
include/isl/vec.h
isl_vec.c

index 027fd50..7757acd 100644 (file)
@@ -54,6 +54,8 @@ __isl_give isl_vec *isl_vec_add(__isl_take isl_vec *vec1,
 __isl_give isl_vec *isl_vec_extend(__isl_take isl_vec *vec, unsigned size);
 __isl_give isl_vec *isl_vec_zero_extend(__isl_take isl_vec *vec, unsigned size);
 
+__isl_give isl_vec *isl_vec_sort(__isl_take isl_vec *vec);
+
 __isl_give isl_vec *isl_vec_read_from_file(isl_ctx *ctx, FILE *input);
 
 #if defined(__cplusplus)
index 9225b48..9df16a2 100644 (file)
--- a/isl_vec.c
+++ b/isl_vec.c
@@ -238,3 +238,21 @@ error:
        isl_vec_free(vec2);
        return NULL;
 }
+
+static int qsort_int_cmp(const void *p1, const void *p2)
+{
+       const isl_int *i1 = (const isl_int *) p1;
+       const isl_int *i2 = (const isl_int *) p2;
+
+       return isl_int_cmp(*i1, *i2);
+}
+
+__isl_give isl_vec *isl_vec_sort(__isl_take isl_vec *vec)
+{
+       if (!vec)
+               return NULL;
+       
+       qsort(vec->el, vec->size, sizeof(*vec->el), &qsort_int_cmp);
+
+       return vec;
+}