Example #1
0
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);
        }
    }
}
Example #2
0
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);
	}
}
Example #3
0
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;
    }
}
Example #4
0
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);
    }
}