001package de.monochromata.anaphors.ast.chain; 002 003import java.util.List; 004 005import de.monochromata.anaphors.ast.ASTBasedAnaphora; 006import de.monochromata.anaphors.ast.AnaphorPart; 007import de.monochromata.anaphors.ast.RelatedExpressionPart; 008import de.monochromata.anaphors.ast.relatedexp.RelatedExpression; 009 010/** 011 * @param <N> The node type in the AST 012 * @param <E> The expression type 013 * @param <T> The type type 014 * @param <B> The binding type 015 * @param <TB> The type binding type 016 * @param <S> The scope type (optional) 017 * @param <I> The type used to represent identifiers 018 * @param <QI> The type used to represent qualified identifiers 019 * @param <AT> The type used for attachments to chain elements that have an 020 * anaphor part. The attachment may be used to stored e.g. an old 021 * anaphora relation. 022 * @param <R> The sub-type of related expression to use 023 * @param <A> The sub-type of AST-based anaphora to use 024 * @param <C> The sub-type of chain element to use 025 */ 026public interface ChainElementFactory<N, E, T, B, TB extends B, S, I, QI, AT, R extends RelatedExpression<N, T, B, TB, S, QI, R>, A extends ASTBasedAnaphora<N, E, T, B, TB, S, I, QI, R, A>, C extends ChainElement<N, E, T, B, TB, S, I, QI, AT, R, A, C>> { 027 028 C create(C previous, List<C> next, RelatedExpressionPart<N, E, T, B, TB, S, I, QI, R> relatedExpression, 029 AnaphorPart<N, E, T, B, TB, S, I, QI, R, A> anaphor, AT anaphorAttachment); 030 031}