static bool collect_from_each(sf_any_t item, void *context) { struct collect_context *collect_context = context; sf_any_t collected_item = collect_context->collect_from(item, collect_context->context); collect_context->collected_items = sf_list(collected_item, collect_context->collected_items); return true; }
static bool filter_each(sf_any_t item, void *context) { struct filter_context *filter_context = context; if (filter_context->is_included(item, filter_context->context)) { filter_context->included_items = sf_list(item, filter_context->included_items); } return true; }
static void add_failure(sf_list_t *_sf_test_failures, char const *file, int line, char const *format, ...) { va_list arguments; va_start(arguments, format); sf_string_t message = sf_string_from_format_and_arguments(format, arguments); va_end(arguments); sf_test_failure_t test_failure = sf_test_failure(file, line, message); *_sf_test_failures = sf_list(test_failure, *_sf_test_failures); }
sf_array_t sf_test_items_array(struct sf_test_item const **test_items, int count) { if (not count) return NULL; assert(test_items); sf_list_t list = NULL; for (int i = 0; i < count; ++i) { list = sf_list(sf_test_item(test_items[i]), list); } return sf_array_from_collection(list); }
cprint(R); } /* Intersect each cube with the cofactored cube */ foreach_set(L, last, p) { INLINEset_and(p, p, cl); SET(p, ACTIVE); } foreach_set(R, last, p) { INLINEset_and(p, p, cr); SET(p, ACTIVE); } /* Sort the arrays for a distance-1 merge */ (void) set_copy(cube.temp[0], cube.var_mask[var]); qsort((char *) (L1 = sf_list(L)), L->count, sizeof(pset), (qsort_compare_func) d1_order); qsort((char *) (R1 = sf_list(R)), R->count, sizeof(pset), (qsort_compare_func) d1_order); /* Perform distance-1 merge */ compl_d1merge(L1, R1); /* Perform lifting */ switch(lifting) { case USE_COMPL_LIFT_ONSET: T = cubeunlist(T1); compl_lift_onset(L1, T, cr, var); compl_lift_onset(R1, T, cl, var); free_cover(T); break; case USE_COMPL_LIFT_ONSET_COMPLEX: T = cubeunlist(T1);
cprint(R); } // Intersect each cube with the cofactored cube foreach_set(L, last, p) { set_and(p, p, cl); SET(p, ACTIVE); } foreach_set(R, last, p) { set_and(p, p, cr); SET(p, ACTIVE); } /* Sort the arrays for a distance-1 merge */ set_copy(CUBE.temp[0], CUBE.var_mask[var]); qsort((char *) (L1 = sf_list(L)), L->count, sizeof(set *), d1_order); qsort((char *) (R1 = sf_list(R)), R->count, sizeof(set *), d1_order); /* Perform distance-1 merge */ compl_d1merge(L1, R1); /* Perform lifting */ switch(lifting) { case USE_COMPL_LIFT_ONSET: T = cubeunlist(T1); compl_lift_onset(L1, T, cr, var); compl_lift_onset(R1, T, cl, var); sf_free(T); break; case USE_COMPL_LIFT_ONSET_COMPLEX: T = cubeunlist(T1);