001package org.dllearner.utilities;
002
003import java.util.Collection;
004
005public interface HasProgressMonitor<P extends ProgressMonitor> {
006    /**
007     * @return the current registered progress monitors
008     */
009    Collection<P> progressMonitors();
010
011    /**
012     * Register the given progress monitor.
013     * @param mon the progress monitor
014     * @return <code>true</code> (as specified by {@link java.util.Collection#add(Object)})
015     */
016    default boolean addProgressMonitor(P mon) {
017        return progressMonitors().add(mon);
018    }
019
020    /**
021     * Unregister the given progress monitor.
022     * @param mon the progress monitor
023     * @return <code>true</code> (as specified by {@link java.util.Collection#remove(Object)})
024     */
025    default boolean removeProgressMonitor(P mon) {
026        return progressMonitors().remove(mon);
027    }
028}