Add OpenScop support
[cloog.git] / include / cloog / union_domain.h
blob5c6ff86fdca688bfa35bda3ecc6ab1699de37398
1 #ifndef CLOOG_UNION_DOMAIN_H
2 #define CLOOG_UNION_DOMAIN_H
4 #if defined(__cplusplus)
5 extern "C" {
6 #endif
8 struct osl_scop;
10 /**
11 * CloogNamedDomainList structure:
12 * this structure reprensents a node of a linked list of CloogDomain structures.
14 struct cloognameddomainlist {
15 CloogDomain *domain; /**< An element of the list. */
16 CloogScattering *scattering; /**< Scattering function for domain. */
17 char *name; /**< Name of the domain. */
18 void *usr; /**< A pointer for library user's convenience. */
19 struct cloognameddomainlist *next;/**< Pointer to the next element of the list.*/
21 typedef struct cloognameddomainlist CloogNamedDomainList;
23 /**
24 * A structure representing the input domains and scattering functions.
26 struct clooguniondomain {
27 int n_name[3];
28 char **name[3];
29 CloogNamedDomainList *domain;
30 CloogNamedDomainList **next_domain;
32 typedef struct clooguniondomain CloogUnionDomain;
34 enum cloog_dim_type { CLOOG_PARAM, CLOOG_ITER, CLOOG_SCAT };
36 CloogUnionDomain *cloog_union_domain_read(FILE *file, int nb_par,
37 CloogOptions *options);
38 CloogUnionDomain *cloog_union_domain_alloc(int nb_par);
39 CloogUnionDomain *cloog_union_domain_add_domain(CloogUnionDomain *ud,
40 const char *name, CloogDomain *domain, CloogScattering *scattering,
41 void *usr);
42 CloogUnionDomain *cloog_union_domain_set_name(CloogUnionDomain *ud,
43 enum cloog_dim_type type, int index, const char *name);
44 void cloog_union_domain_free(CloogUnionDomain *ud);
45 CloogUnionDomain *cloog_union_domain_from_osl_scop(CloogState *,
46 struct osl_scop *);
48 #if defined(__cplusplus)
50 #endif
52 #endif