001package de.monochromata.anaphors.cog.transform;
002
003import de.monochromata.anaphors.ast.ASTBasedAnaphora;
004import de.monochromata.anaphors.cog.memory.Chunk;
005
006/**
007 * An interface for the results of preparatory transformations.
008 * <p>
009 * Implementations of
010 * {@link PreparatoryTransformation#canPerform(de.monochromata.anaphors.cog.memory.Chunk, Object, Object)}
011 * may return implementations that add information that can be re-used in
012 * {@link PreparatoryTransformation#perform(CheckResult, ASTBasedAnaphora)} , e.g. when
013 * the check includes an expensive search operation whose results are supplied
014 * to {@link PreparatoryTransformation#perform(CheckResult, ASTBasedAnaphora)} .
015 *
016 * @param <N>
017 *            The node type in the AST
018 * @param <E>
019 *            The expression type
020 * @param <S>
021 *            The scope type (optional)
022 *
023 * @see PreparatoryTransformation#canPerform(de.monochromata.anaphors.cog.memory.Chunk,
024 *      Object, Object)
025 * @see PreparatoryTransformation#perform(CheckResult, ASTBasedAnaphora)
026 */
027public interface CheckResult<N, E, S> {
028
029        public Chunk<N> getChunk();
030
031        public E getDefiniteExpression();
032
033        public S getScope();
034
035        public boolean canPerformTransformation();
036
037}