1#ifndef CLOOG_UNION_DOMAIN_H 2#define CLOOG_UNION_DOMAIN_H 3 4#if defined(__cplusplus) 5extern "C" { 6#endif 7 8struct osl_scop; 9 10/** 11 * CloogNamedDomainList structure: 12 * this structure reprensents a node of a linked list of CloogDomain structures. 13 */ 14struct 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}; 21typedef struct cloognameddomainlist CloogNamedDomainList; 22 23/** 24 * A structure representing the input domains and scattering functions. 25 */ 26struct clooguniondomain { 27 int n_name[3]; 28 char **name[3]; 29 CloogNamedDomainList *domain; 30 CloogNamedDomainList **next_domain; 31}; 32typedef struct clooguniondomain CloogUnionDomain; 33 34enum cloog_dim_type { CLOOG_PARAM, CLOOG_ITER, CLOOG_SCAT }; 35 36CloogUnionDomain *cloog_union_domain_read(FILE *file, int nb_par, 37 CloogOptions *options); 38CloogUnionDomain *cloog_union_domain_alloc(int nb_par); 39CloogUnionDomain *cloog_union_domain_add_domain(CloogUnionDomain *ud, 40 const char *name, CloogDomain *domain, CloogScattering *scattering, 41 void *usr); 42CloogUnionDomain *cloog_union_domain_set_name(CloogUnionDomain *ud, 43 enum cloog_dim_type type, int index, const char *name); 44void cloog_union_domain_free(CloogUnionDomain *ud); 45CloogUnionDomain *cloog_union_domain_from_osl_scop(CloogState *, 46 struct osl_scop *); 47 48#if defined(__cplusplus) 49} 50#endif 51 52#endif 53