001 package sysModel.classFile.attributes.visitors;
002
003 import sysModel.classFile.attributes.*;
004
005 /**
006 * A visitor that operates on attributes.
007 *
008 * @author Mathias Ricken
009 */
010 public interface IAttributeVisitor <R, D> {
011 /**
012 * Case for SourceFile attribute.
013 *
014 * @param host attribute
015 * @param param visitor-specific parameter
016 *
017 * @return visitor-specific return vakue
018 */
019 R sourceFileCase(SourceFileAttributeInfo host, D param);
020
021 /**
022 * Case for Code attribute.
023 *
024 * @param host attribute
025 * @param param visitor-specific parameter
026 *
027 * @return visitor-specific return vakue
028 */
029 R codeCase(CodeAttributeInfo host, D param);
030
031 /**
032 * Case for an unknown attribute.
033 *
034 * @param host attribute
035 * @param param visitor-specific parameter
036 *
037 * @return visitor-specific return vakue
038 */
039 R unknownCase(UnknownAttributeInfo host, D param);}