// SPDX-FileCopyrightText: 2020 Roberto Posenato // // SPDX-License-Identifier: LGPL-3.0-or-later package it.univr.di.cstnu.graph; import it.unimi.dsi.fastutil.objects.Object2IntMap; import it.unimi.dsi.fastutil.objects.Object2ObjectMap; import it.unimi.dsi.fastutil.objects.ObjectSet; import it.univr.di.labeledvalue.ALabel; import it.univr.di.labeledvalue.Label; import it.univr.di.labeledvalue.LabeledALabelIntTreeMap; import it.univr.di.labeledvalue.LabeledLowerCaseValue; import javax.annotation.Nonnull; /** * Represents the behavior of a CSTNPSU edge. *
* A CSTNPSU edge is a {@link it.univr.di.cstnu.algorithms.CSTNU} edge where it is also possible to have more lower-case values. * So, lower-case values are represented as a set of lower-case values. * {@link LabeledLowerCaseValue} is NOT used. *
* In order to promote greater efficiency, some methods return a view of the internal data structures (they are all methods that return a set of {@code Entry}). * Such view could be dangerous because it could be modified directly (don't do that!) Such methods must be used only to read-only scan the labeled values or * labeled values' labels in an efficiente way. Moreover, such views are not more valid if a value is added to or removed from the edge. * * @author posenato * @version $Rev$ */ @SuppressWarnings("InterfaceWithOnlyOneDirectInheritor") public interface CSTNPSUEdge extends BasicCSTNUEdge { /** * Clears the labeled lower case values. */ void clearLowerCaseValues(); /** * Don't use this set for a scanning that requires to modify the internal map because otherwise this set becomes not valid at first modification. * * @return the set of all labeled values and all labeled lower-case ones. The labeled values have ALabel empty. */ ObjectSet>> getAllLowerCaseAndLabeledValues(); /** * @param aLabel the lower-case label * * @return the set of all labels associated to lower-case label aLabel. */ ObjectSet