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