void fc_solve_state_ia_foreach( fc_solve_hard_thread_t * hard_thread, void (*ptr_function)(fcs_state_t *, fcs_state_extra_info_t *, void *), void * context ) { int p; for(p=0;p<hard_thread->num_state_packs-1;p++) { fcs_state_keyval_pair_t * state_ptr = hard_thread->state_packs[p]; fcs_state_keyval_pair_t * state_end_ptr = state_ptr + hard_thread->state_pack_len; for(; state_ptr < state_end_ptr ; state_ptr++) { ptr_function(&(state_ptr->s), &(state_ptr->info), context); } } { fcs_state_keyval_pair_t * state_ptr = hard_thread->state_packs[p]; fcs_state_keyval_pair_t * state_end_ptr = state_ptr + hard_thread->num_states_in_last_pack; for(; state_ptr < state_end_ptr ; state_ptr++) { ptr_function(&(state_ptr->s), &(state_ptr->info), context); } } }
static void show_equipment(struct dive *dive, int max, struct equipment_list *equipment_list, void*(*ptr_function)(struct dive*, int), int(*none_function)(void *), void(*set_one_function)(void*, GtkListStore*, GtkTreeIter *)) { int i, used; void *data; GtkTreeIter iter; GtkListStore *model = equipment_list->model; gtk_list_store_clear(model); used = max; do { data = ptr_function(dive, used-1); if (!none_function(data)) break; } while (--used); equipment_list->max_index = used; gtk_widget_set_sensitive(equipment_list->edit, 0); gtk_widget_set_sensitive(equipment_list->del, 0); gtk_widget_set_sensitive(equipment_list->add, used < max); for (i = 0; i < used; i++) { data = ptr_function(dive, i); gtk_list_store_append(model, &iter); set_one_function(data, model, &iter); } }
void freecell_solver_compact_allocator_foreach( fcs_compact_allocator_t * allocator, int data_width, void (*ptr_function)(void *, void *), void * context ) { int pack; char * ptr, * max_ptr; for(pack=0;pack<allocator->num_packs-1;pack++) { ptr = allocator->packs[pack]; max_ptr = ptr + ALLOCED_SIZE - data_width; while (ptr <= max_ptr) { ptr_function(ptr, context); ptr += data_width; } } /* Run the callback on the last pack */ ptr = allocator->packs[pack]; max_ptr = allocator->rollback_ptr; while (ptr <= max_ptr) { ptr_function(ptr, context); ptr += data_width; } }
void freecell_solver_state_ia_foreach(freecell_solver_hard_thread_t * hard_thread, void (*ptr_function)(fcs_state_with_locations_t *, void *), void * context) { int p,s; for(p=0;p<hard_thread->num_state_packs-1;p++) { for(s=0 ; s < hard_thread->state_pack_len ; s++) { ptr_function(&(hard_thread->state_packs[p][s]), context); } } for(s=0; s < hard_thread->num_states_in_last_pack ; s++) { ptr_function(&(hard_thread->state_packs[p][s]), context); } }