view paper/src/tableau.cbc @ 0:a67653fda270

Initial revision
author atsuki
date Tue, 12 Feb 2008 17:37:48 +0900
parents
children
line wrap: on
line source

code tableau(TaskPtr list)
{
    StateDB out;

    st.hash = get_memory_hash(mem,0);
    if (lookup_StateDB(&st, &state_db, &out)) {
	// found in the state database
	printf("found %d\n",count);
	while(!(list = next_task_iterator(task_iter))) {
	    // no more branch, go back to the previous one
	    TaskIteratorPtr prev_iter = task_iter->prev;
	    if (!prev_iter) {
		printf("All done count %d\n",count);
		memory_usage();
		goto ret(0),env;
	    }
	    printf("no more branch %d\n",count);
	    depth--;
	    free_task_iterator(task_iter);
	    task_iter = prev_iter;
	}
	// return to previous state
	//    here we assume task list is fixed, we don't have to
	//    recover task list itself
	restore_memory(task_iter->state->memory);
	printf("restore list %x next %x\n",(int)list,(int)(list->next));
    } else {
	// one step further
	depth++;
	task_iter = create_task_iterator(list,out,task_iter);
    }
    printf("depth %d count %d\n", depth, count++);
    goto list->phils->next(list->phils,list);
}