1 #ifndef CLOOG_UNION_DOMAIN_H
2 #define CLOOG_UNION_DOMAIN_H
3 
4 #if defined(__cplusplus)
5 extern "C" {
6 #endif
7 
8 struct osl_scop;
9 
10 /**
11  * CloogNamedDomainList structure:
12  * this structure reprensents a node of a linked list of CloogDomain structures.
13  */
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.*/
20 };
21 typedef struct cloognameddomainlist CloogNamedDomainList;
22 
23 /**
24  * A structure representing the input domains and scattering functions.
25  */
26 struct clooguniondomain {
27 	int n_name[3];
28 	char **name[3];
29 	CloogNamedDomainList *domain;
30 	CloogNamedDomainList **next_domain;
31 };
32 typedef struct clooguniondomain CloogUnionDomain;
33 
34 enum cloog_dim_type { CLOOG_PARAM, CLOOG_ITER, CLOOG_SCAT };
35 
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 *);
47 
48 #if defined(__cplusplus)
49 }
50 #endif
51 
52 #endif
53