#ifndef CLOOG_UNION_DOMAIN_H #define CLOOG_UNION_DOMAIN_H #if defined(__cplusplus) extern "C" { #endif struct osl_scop; /** * CloogNamedDomainList structure: * this structure reprensents a node of a linked list of CloogDomain structures. */ struct cloognameddomainlist { CloogDomain *domain; /**< An element of the list. */ CloogScattering *scattering; /**< Scattering function for domain. */ char *name; /**< Name of the domain. */ void *usr; /**< A pointer for library user's convenience. */ struct cloognameddomainlist *next;/**< Pointer to the next element of the list.*/ }; typedef struct cloognameddomainlist CloogNamedDomainList; /** * A structure representing the input domains and scattering functions. */ struct clooguniondomain { int n_name[3]; char **name[3]; CloogNamedDomainList *domain; CloogNamedDomainList **next_domain; }; typedef struct clooguniondomain CloogUnionDomain; enum cloog_dim_type { CLOOG_PARAM, CLOOG_ITER, CLOOG_SCAT }; CloogUnionDomain *cloog_union_domain_read(FILE *file, int nb_par, CloogOptions *options); CloogUnionDomain *cloog_union_domain_alloc(int nb_par); CloogUnionDomain *cloog_union_domain_add_domain(CloogUnionDomain *ud, const char *name, CloogDomain *domain, CloogScattering *scattering, void *usr); CloogUnionDomain *cloog_union_domain_set_name(CloogUnionDomain *ud, enum cloog_dim_type type, int index, const char *name); void cloog_union_domain_free(CloogUnionDomain *ud); CloogUnionDomain *cloog_union_domain_from_osl_scop(CloogState *, struct osl_scop *); #if defined(__cplusplus) } #endif #endif