package sharpen.xobotos.generator; import org.eclipse.jdt.core.dom.ASTNode; import org.eclipse.jdt.core.dom.EnumDeclaration; import org.eclipse.jdt.core.dom.TypeDeclaration; import sharpen.core.csharp.ast.CSNode; import sharpen.xobotos.api.templates.AbstractMemberTemplate; import sharpen.xobotos.api.templates.EnumTemplate; import sharpen.xobotos.api.templates.TypeTemplate; import sharpen.xobotos.output.OutputMode; import sharpen.xobotos.output.OutputType; public abstract class AbstractTypeBuilder<T extends ASTNode, U extends CSNode, V extends AbstractMemberTemplate<T, U>> extends MemberBuilder<T, U, V> implements ITypeBuilder { protected AbstractTypeBuilder(V template, Class<U> memberType, OutputType output, T node) { super(template, memberType, output, node); } @Override public TypeTemplate findTypeTemplate(TypeDeclaration node) { return getTypeTemplate().findTypeTemplate(node); } @Override public EnumTemplate findEnumTemplate(EnumDeclaration node) { return getTypeTemplate().findEnumTemplate(node); } @Override public boolean includeMember(ASTNode node) { if (getTypeTemplate().removeMember(node)) return false; if (getOutputType().getModeForMember(node) == OutputMode.NOTHING) return false; return true; } }