#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