001 package sysModel.classFile.attributes.visitors; 002 003 import sysModel.classFile.attributes.*; 004 005 /** 006 * An attribute visitor in which all cases call an abstract default method. 007 * 008 * @author Mathias Ricken 009 */ 010 public abstract class ADefaultAttributeVisitor <R, D> implements IAttributeVisitor<R, D> { 011 /** 012 * Abstract default case. 013 * 014 * @param host host 015 * @param param visitor-specific parameter 016 * 017 * @return visitor-specific return value 018 */ 019 public abstract R defaultCase(AAttributeInfo host, D param); 020 021 /** 022 * Case for SourceFile attribute. 023 * 024 * @param host attribute 025 * @param param visitor-specific parameter 026 * 027 * @return visitor-specific return vakue 028 */ 029 public R sourceFileCase(SourceFileAttributeInfo host, D param) { 030 return defaultCase(host, param); 031 } 032 033 /** 034 * Case for an unknown attribute. 035 * 036 * @param host attribute 037 * @param param visitor-specific parameter 038 * 039 * @return visitor-specific return vakue 040 */ 041 public R unknownCase(UnknownAttributeInfo host, D param) { 042 return defaultCase(host, param); 043 } 044 045 /** 046 * Case for Code attribute. 047 * 048 * @param host attribute 049 * @param param visitor-specific parameter 050 * 051 * @return visitor-specific return vakue 052 */ 053 public R codeCase(CodeAttributeInfo host, D param) { 054 return defaultCase(host, param); 055 } 056 }