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 callback) {} }