add isl_div_get_ctx
[platform/upstream/isl.git] / include / isl / div.h
1 /*
2  * Copyright 2008-2009 Katholieke Universiteit Leuven
3  *
4  * Use of this software is governed by the GNU LGPLv2.1 license
5  *
6  * Written by Sven Verdoolaege, K.U.Leuven, Departement
7  * Computerwetenschappen, Celestijnenlaan 200A, B-3001 Leuven, Belgium
8  */
9
10 #ifndef ISL_DIV_H
11 #define ISL_DIV_H
12
13 #include <isl/dim.h>
14 #include <isl/set.h>
15
16 #if defined(__cplusplus)
17 extern "C" {
18 #endif
19
20 struct isl_div {
21         int ref;
22         struct isl_ctx *ctx;
23
24         struct isl_basic_map    *bmap;
25         isl_int                 **line;
26 };
27 typedef struct isl_div isl_div;
28
29 isl_ctx *isl_div_get_ctx(__isl_keep isl_div *div);
30
31 struct isl_div *isl_div_alloc(struct isl_dim *dim);
32 struct isl_div *isl_basic_map_div(struct isl_basic_map *bmap, int pos);
33 struct isl_div *isl_basic_set_div(struct isl_basic_set *bset, int pos);
34 __isl_give isl_div *isl_div_copy(__isl_keep isl_div *div);
35 void isl_div_free(struct isl_div *c);
36
37 void isl_div_get_constant(__isl_keep isl_div *div, isl_int *v);
38 void isl_div_get_denominator(__isl_keep isl_div *div, isl_int *v);
39 void isl_div_get_coefficient(__isl_keep isl_div *div,
40         enum isl_dim_type type, int pos, isl_int *v);
41 void isl_div_set_constant(struct isl_div *div, isl_int v);
42 void isl_div_set_denominator(struct isl_div *div, isl_int v);
43 void isl_div_set_coefficient(struct isl_div *div,
44         enum isl_dim_type type, int pos, isl_int v);
45
46 unsigned isl_div_dim(__isl_keep isl_div *div, enum isl_dim_type type);
47 __isl_give isl_div *isl_div_div(__isl_take isl_div *div, int pos);
48
49 #if defined(__cplusplus)
50 }
51 #endif
52
53 #endif