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);}