예제 #1
0
파일: pred.c 프로젝트: KnightKu/fileutils
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);
}
예제 #2
0
파일: simulation.c 프로젝트: dtsbourg/Oasis
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;
	}
	
}