public final boolean insert_via(BrdViaInfo p_via_info,PlaPointInt p_location,NetNosList p_net_no_arr,int p_trace_clearance_class_no,int[] p_trace_pen_halfwidth_arr,int p_max_recursion_depth,int p_max_via_recursion_depth,int p_pull_tight_accuracy,int p_pull_tight_time_limit){
  shove_fail_clear();
  changed_area_clear();
  boolean r_ok=shove_via_algo.shove_via_insert(p_via_info,p_location,p_net_no_arr,p_trace_clearance_class_no,p_trace_pen_halfwidth_arr,p_max_recursion_depth,p_max_via_recursion_depth);
  if (!r_ok)   return false;
  NetNosList opt_net_no_arr=p_max_recursion_depth <= 0 ? p_net_no_arr : NetNosList.EMPTY;
  TimeLimitStoppable t_limit=new TimeLimitStoppable(s_PREVENT_ENDLESS_LOOP);
  changed_area_optimize(opt_net_no_arr,p_pull_tight_accuracy,null,t_limit,null);
  return true;
}

public final boolean insert_via ( BrdViaInfo p_via_info , PlaPointInt p_location , NetNosList p_net_no_arr , int p_trace_clearance_class_no , int [ ] p_trace_pen_halfwidth_arr , int p_max_recursion_depth , int p_max_via_recursion_depth , int p_pull_tight_accuracy , int p_pull_tight_time_limit ) { shove_fail_clear ( ) ; changed_area_clear ( ) ; boolean r_ok = shove_via_algo . shove_via_insert ( p_via_info , p_location , p_net_no_arr , p_trace_clearance_class_no , p_trace_pen_halfwidth_arr , p_max_recursion_depth , p_max_via_recursion_depth ) ; if ( ! r_ok ) return false ; NetNosList opt_net_no_arr = p_max_recursion_depth <= 0 ? p_net_no_arr : NetNosList . EMPTY ; TimeLimitStoppable t_limit = new TimeLimitStoppable ( s_PREVENT_ENDLESS_LOOP ) ; changed_area_optimize ( opt_net_no_arr , p_pull_tight_accuracy , null , t_limit , null ) ; return true ; }
shoves aside traces , so that a via with the input parameters can be inserted without clearance violations . if the shove failed , the database may be damaged , so that an undo becomes necessesary .
