001package de.monochromata.anaphors.ast.reference.strategy;
002
003import de.monochromata.AbstractStrategy;
004import de.monochromata.anaphors.ast.spi.AnaphorsSpi;
005
006/**
007 * An abstract base class for strategies used to obtain referents.
008 *
009 * @param <N>  The node type in the AST
010 * @param <E>  The expression type
011 * @param <TB> The type binding type
012 * @param <S>  The scope type (optional)
013 * @param <I>  The type used to represent identifiers
014 * @param <QI> The type used to represent qualified identifiers
015 * @param <EV> The type of the event contained in the condition that is
016 *             evaluated to check when the perspectivations shall be applied.
017 * @param <PP> The type used for positions that carry perspectivations
018 */
019public abstract class AbstractReferentializationStrategy<N, E, TB, S, I, QI, EV, PP> extends AbstractStrategy
020        implements ReferentializationStrategy<E, TB, S, I, QI> {
021
022    protected final AnaphorsSpi<N, E, TB, S, I, QI, EV, PP> anaphorsSpi;
023
024    /**
025     * Used in contract testing.
026     */
027    @SuppressWarnings("unused")
028    protected AbstractReferentializationStrategy() {
029        this(null);
030    }
031
032    public AbstractReferentializationStrategy(final AnaphorsSpi<N, E, TB, S, I, QI, EV, PP> anaphorsSpi) {
033        this.anaphorsSpi = anaphorsSpi;
034    }
035
036}