cdc.util.enums.SynthesisMaskSupport Maven / Gradle / Ivy
package cdc.util.enums;
import java.util.Map;
public interface SynthesisMaskSupport, V> {
/**
* @return The class of the synthesis mask.
*/
public Class getSynthesisMaskClass();
/**
* @return The value list type.
*/
public ListType getType();
/**
* @return {@code true} if {@code null} is a valid synthesis mask value.
*/
public boolean isNullable();
/**
* @return A new synthesis mask with all values set to {@link SynthesisStatus#UNDEFINED}.
*/
public M create();
/**
* Creates a synthesis mask for a map.
*
* @param map The map giving statuses.
* @return A synthesis mask matching {@code map}.
*/
public M create(Map map);
/**
* Creates a synthesis mask with values set to the same status.
*
* @param status The status.
* @return A synthesis mask with all values set to {@code status}.
*/
public M create(SynthesisStatus status);
/**
* Creates a synthesis mask from a standard mask.
*
* All set values in {@code mask} are mapped to {@link SynthesisStatus#ALL}.
* All clear values in {@code mask} are mapped to {@link SynthesisStatus#NONE}.
*
* @param mask The mask.
* @return The synthesis mask corresponding to {@code mask}.
*/
public M create(Mask, V> mask);
}