brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.1 KiB · fa5cb32 Raw
52 lines · c
1#define xCAT(A,B) A ## B2#define CAT(A,B) xCAT(A,B)3#define xFN(TYPE,NAME) TYPE ## _ ## NAME4#define FN(TYPE,NAME) xFN(TYPE,NAME)5#define xLIST(EL) EL ## _list6#define LIST(EL) xLIST(EL)7 8#undef SET9#define SET	CAT(isl_,SET_BASE)10#undef EL11#define EL	CAT(isl_,EL_BASE)12 13/* Check that the conversion from SET to list of EL works as expected,14 * using input described by "str".15 */16static isl_stat FN(FN(FN(test_get_list,EL_BASE),from),SET_BASE)(isl_ctx *ctx,17	const char *str)18{19	int i;20	isl_size n;21	isl_bool equal;22	SET *set, *set2;23	LIST(EL) *list;24 25	set = FN(SET,read_from_str)(ctx, str);26	list = FN(FN(SET,get),LIST(EL_BASE))(set);27 28	set2 = FN(SET,empty)(FN(SET,get_space)(set));29 30	n = FN(LIST(EL),size)(list);31	for (i = 0; i < n; i++) {32		EL *el;33		el = FN(LIST(EL),get_at)(list, i);34		set2 = FN(SET,union)(set2, FN(FN(SET,from),EL_BASE)(el));35	}36 37	equal = FN(SET,is_equal)(set, set2);38 39	FN(SET,free)(set);40	FN(SET,free)(set2);41	FN(LIST(EL),free)(list);42 43	if (n < 0 || equal < 0)44		return isl_stat_error;45 46	if (!equal)47		isl_die(ctx, isl_error_unknown, "collections are not equal",48			return isl_stat_error);49 50	return isl_stat_ok;51}52