static int test_arg(t_env *e, char **av) { int i; i = -1; if (ft_strequ(av[0], "-p")) i = update_port(e, av); else if (ft_strequ(av[0], "-x")) i = update_width(e, av); else if (ft_strequ(av[0], "-y")) i = update_height(e, av); else if (ft_strequ(av[0], "-n")) i = update_teams(e, av); else if (ft_strequ(av[0], "-c")) i = update_nb(e, av); else if (ft_strequ(av[0], "-t")) i = update_time(e, av); else usage(); return (i); }
static int update_list(int i) { struct COOR *new_ptr, *new_ptr1, *new_ptr2, *new_ptr3; double right, left; switch (i) { case 0: /* Vertical line - Just update width information */ /* update_width(a_list + v_list[col]->left,0); */ tl_area = v_list[col]->left; break; case 1: /* Bottom right corner - Point in middle of new line */ /* (growing) <- ptr2 -><- ptr1 -><- ptr3 -> (growing) */ /* (?, col) (row, col) (row, ?) */ new_ptr1 = get_ptr(); /* corner point */ new_ptr2 = get_ptr(); /* downward-growing point */ new_ptr3 = get_ptr(); /* right-growing point */ new_ptr1->bptr = new_ptr2; new_ptr1->fptr = new_ptr3; new_ptr2->bptr = new_ptr3->bptr = new_ptr1; /* if(G_is_c_null_value(&tl_area)) { new_ptr1->left = new_ptr2->right = new_ptr3->left = 0; assign_area(tl,1); } else { */ new_ptr1->left = new_ptr2->right = new_ptr3->left = tl_area; new_ptr1->right = new_ptr2->left = new_ptr3->right = area_num; assign_area(br, 1); update_width(a_list_old, 1); v_list[col] = new_ptr2; h_ptr = new_ptr3; break; case 3: /* Bottom left corner - Add point to line already under construction */ /* (fixed) -><- original h_ptr -><- new_ptr -> (growing) */ /* (row, col) (?, col) */ tl_area = h_ptr->left; new_ptr = get_ptr(); /* downward-growing point */ h_ptr->col = col; h_ptr->fptr = new_ptr; new_ptr->bptr = h_ptr; new_ptr->left = h_ptr->left; new_ptr->right = h_ptr->right; /* update_width(a_list + new_ptr->left,3); */ v_list[col] = new_ptr; h_ptr = NULPTR; break; case 4: /* Top left corner - Join two lines already under construction */ /* (fixed) -><- original v_list -><- (fixed) */ /* (row, col) */ tl_area = v_list[col]->left; equiv_areas(h_ptr->left, v_list[col]->right); equiv_areas(h_ptr->right, v_list[col]->left); v_list[col]->row = row; /* keep downward-growing point */ v_list[col]->fptr = h_ptr->bptr; /* and join it to predecessor */ h_ptr->bptr->fptr = v_list[col]; /* of right-growing point */ G_free(h_ptr); /* right-growing point disappears */ h_ptr = NULPTR; /* turn loose of pointers */ write_boundary(v_list[col]); /* try to write line */ v_list[col] = NULPTR; /* turn loose of pointers */ break; case 5: /* Top right corner - Add point to line already under construction */ /* (fixed) -><- original v_list -><- new_ptr -> (growing) */ /* (row, col) (row, ?) */ new_ptr = get_ptr(); /* right-growing point */ v_list[col]->row = row; new_ptr->bptr = v_list[col]; new_ptr->left = v_list[col]->left; new_ptr->right = v_list[col]->right; v_list[col]->fptr = new_ptr; h_ptr = new_ptr; v_list[col] = NULPTR; break; case 6: /* T upward - End one vertical and one horizontal line */ /* Start horizontal line */ v_list[col]->node = h_ptr->node = 1; left = v_list[col]->left; right = h_ptr->right; end_vline(); end_hline(); start_hline(); h_ptr->bptr->node = 1; /* where we came from is a node */ h_ptr->left = h_ptr->bptr->left = left; h_ptr->right = h_ptr->bptr->right = right; break; case 7: /* T downward - End horizontal line */ /* Start one vertical and one horizontal line */ h_ptr->node = 1; right = h_ptr->right; left = h_ptr->left; end_hline(); start_hline(); start_vline(); h_ptr->bptr->node = v_list[col]->bptr->node = 1; h_ptr->left = h_ptr->bptr->left = left; h_ptr->right = h_ptr->bptr->right = v_list[col]->left = v_list[col]->bptr->left = area_num; assign_area(br, 7); update_width(a_list_old, 7); v_list[col]->right = v_list[col]->bptr->right = right; break; case 8: /* T left - End one vertical and one horizontal line */ /* Start one vertical line */ tl_area = v_list[col]->left; h_ptr->node = v_list[col]->node = 1; right = h_ptr->right; left = v_list[col]->left; end_vline(); end_hline(); start_vline(); v_list[col]->bptr->node = 1; /* where we came from is a node */ v_list[col]->left = v_list[col]->bptr->left = left; v_list[col]->right = v_list[col]->bptr->right = right; /* update_width(a_list + v_list[col]->left,8); */ break; case 9: /* T right - End one vertical line */ /* Start one vertical and one horizontal line */ v_list[col]->node = 1; right = v_list[col]->right; left = v_list[col]->left; end_vline(); start_vline(); start_hline(); v_list[col]->bptr->node = h_ptr->bptr->node = 1; h_ptr->left = h_ptr->bptr->left = left; h_ptr->right = h_ptr->bptr->right = v_list[col]->left = v_list[col]->bptr->left = area_num; assign_area(br, 9); update_width(a_list_old, 9); v_list[col]->right = v_list[col]->bptr->right = right; break; case 10: /* Cross - End one vertical and one horizontal line */ /* Start one vertical and one horizontal line */ v_list[col]->node = h_ptr->node = 1; left = v_list[col]->left; right = h_ptr->right; end_vline(); end_hline(); start_vline(); start_hline(); v_list[col]->bptr->node = h_ptr->bptr->node = 1; h_ptr->left = h_ptr->bptr->left = left; v_list[col]->left = v_list[col]->bptr->left = h_ptr->right = h_ptr->bptr->right = area_num; assign_area(br, 10); update_width(a_list_old, 10); v_list[col]->right = v_list[col]->bptr->right = right; break; } /* switch */ return 0; } /* update_list */