/* * File: ReversibleEvaluator.java * Authors: Justin Basilico * Project: Cognitive Foundry Common Core * * Copyright 2012 Cognitive Foundry. All rights reserved. */ package gov.sandia.cognition.evaluator; /** * Represents a {@link Evaluator} whose evaluation can be reversed. The * reverse is just another {@code Evaluator}. It is required that the * converter's range must be part of the domain of the reverse converter. * * @param <InputType> * The input type to evaluate from. * @param <OutputType> * The output type to evaluate to. * @param <ReverseType> * The type of reverse evaluator. * @author Justin Basilico * @since 3.3.3 */ public interface ReversibleEvaluator<InputType, OutputType, ReverseType extends Evaluator<? super OutputType, ? extends InputType>> extends Evaluator<InputType, OutputType> { /** * Gets the data converter that performs the reverse conversion. * * @return The reverse converter. */ public ReverseType reverse(); }