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 }