package org.simantics.structural.synchronization.base;
import java.util.function.BiConsumer;
public interface SolverNameUtil {
String getFreshName(String parentName, String name);
String ensureNameIsVariationOf(String parentName, int id, String name);
/**
* The name utility can internally keep track of
* suggested name -> generated
* fresh name
associations that it has had to perform during its
* lifetime in {@link #getFreshName(String, String)}. If the implementation
* keeps track of these renames, the purpose of this method is to check
* whether at the time of invocation it is possible to rename the solver
* components to their suggested names or not. For every rename that is
* performed, the specified consumer shall be invoked with the arguments
* (previous name, new name)
after the rename has been
* performed.
*
*
* This method is intended to be invoked right at the end of
* synchronization.
*
* @param callback
* a binary consumer that takes as first argument the previous
* name of the renamed component and as second argument the new
* (current) name of the component or null
to skip
* callback invocation
*/
default void applySuggestedNames(BiConsumer