void pred_commit (void) { int need_print = 1; pred_item * cur = pred_head; while (cur) { if (cur->f == pred_print || cur->f == pred_exec) { need_print = 0; break; } cur = cur->next; } if (need_print) pred_add(pred_print, NULL); }
void sim_input_test (char lign[220], int *status, int *ptr) { int j; switch (*status) { case CLOCK: if ( sscanf (lign, "%d", &horloge) ) { if ( test_clock (horloge) ) { sim_save_time (horloge); *status=OASIS_SIZE_PARAMETER; break; } else { *status=EXIT; break; } } else { error_missing_time(); *status = EXIT; break; } case OASIS_SIZE_PARAMETER: if ( (sscanf(lign, "%d", &oasis)) ) { if ( (test_oasis_size_parameter (oasis) ) ) { oasis = 2*(oasis) + 1; sim_save_oasis(oasis); cell_create_tab(oasis); *status=OASIS; i=0; break; } else { *status=EXIT; break; } } else { error_missing_map_size(); *status=EXIT; break; } case OASIS: for (j=0; j<oasis;j++) { if ( (sscanf (lign, "%c", &c_cell) ) ) { if ( (test_oasis_cell(c_cell, i, j)) ) { cell_add(oasis-1+DESERT_SIZE-i, j+DESERT_SIZE, c_cell); c_cell=0; lign++; } else { *status=EXIT; break; } } } i++; if (i==oasis) { *status = PREY_NUMBER; i=0; break; } break; case PREY_NUMBER: if( (sscanf(lign, "%d", &prey_nb)) && (test_number (prey_nb, PREY_NUMBER, oasis) ) ) { sim_save_prey_nb(prey_nb); *status=PREY_COORDINATES; break; } else { error_missing_prey_number(); *status=EXIT; break; } case PREY_COORDINATES: if ( (sscanf (lign, " %d %d %d %f ", &prey_x, &prey_y, &prey_bool, &prey_energy)) ) { if(test_coordinates (i, prey_nb, oasis, PREY_COORDINATES, prey_x, prey_y, prey_energy)) { prey_add(prey_x, prey_y, prey_bool, prey_energy); if (i==prey_nb-1) { i=0; *status=PREDATOR_NUMBER; break; } if (i<prey_nb-1) { i++; break; } } else { *status=EXIT; break; } } else { *status = EXIT; break; } case PREDATOR_NUMBER: if( (sscanf(lign, "%d", &pred_nb)) && (test_number (pred_nb, PREDATOR_NUMBER, oasis) ) ) { sim_save_pred_nb(pred_nb); *status=PREDATOR_COORDINATES; break; } else { error_missing_predator_number(); *status=EXIT; break; } case PREDATOR_COORDINATES: if ( (sscanf (lign, " %d %d %f ", &pred_x, &pred_y, &pred_energy)) ) { pred_add(pred_x, pred_y, pred_energy); (*ptr)++; if(test_coordinates (i, pred_nb, oasis, PREDATOR_COORDINATES, pred_x, pred_y, pred_energy)) { if (i==pred_nb-1) { input_is_valid(); *status=CORRECT; break; } if (i<pred_nb-1) { i++; } } else { *status=EXIT; break; } } else { *status = EXIT; break; } case EXIT: break; } }