001    package edu.rice.cs.cunit.classFile.attributes.visitors;
002    
003    import edu.rice.cs.cunit.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 ConstantValue attribute.
023         *
024         * @param host  attribute
025         * @param param visitor-specific parameter
026         *
027         * @return visitor-specific return vakue
028         */
029        R constantValueCase(ConstantValueAttributeInfo host, D param);
030    
031        /**
032         * Case for Code attribute.
033         *
034         * @param host  attribute
035         * @param param visitor-specific parameter
036         *
037         * @return visitor-specific return vakue
038         */
039        R codeCase(CodeAttributeInfo host, D param);
040    
041        /**
042         * Case for Exceptions attribute.
043         *
044         * @param host  attribute
045         * @param param visitor-specific parameter
046         *
047         * @return visitor-specific return vakue
048         */
049        R exceptionsCase(ExceptionsAttributeInfo host, D param);
050    
051        /**
052         * Case for LineNumberTable attribute.
053         *
054         * @param host  attribute
055         * @param param visitor-specific parameter
056         *
057         * @return visitor-specific return vakue
058         */
059        R lineNumberTableCase(LineNumberTableAttributeInfo host, D param);
060    
061        /**
062         * Case for LocalVariableTable attribute.
063         *
064         * @param host  attribute
065         * @param param visitor-specific parameter
066         *
067         * @return visitor-specific return vakue
068         */
069        R localVariableTableCase(LocalVariableTableAttributeInfo host, D param);
070    
071        /**
072         * Case for LocalVariableTypeTable attribute.
073         *
074         * @param host  attribute
075         * @param param visitor-specific parameter
076         *
077         * @return visitor-specific return vakue
078         */
079        R localVariableTypeTableCase(LocalVariableTypeTableAttributeInfo host, D param);
080    
081        /**
082         * Case for Signature attribute.
083         *
084         * @param host  attribute
085         * @param param visitor-specific parameter
086         *
087         * @return visitor-specific return vakue
088         */
089        R signatureCase(SignatureAttributeInfo host, D param);
090    
091        /**
092         * Case for an AnnotationDefault attribute.
093         *
094         * @param host  attribute
095         * @param param visitor-specific parameter
096         *
097         * @return visitor-specific return vakue
098         */
099        R annotationDefaultCase(AnnotationDefaultAttributeInfo host, D param);
100    
101        /**
102         * Case for a RuntimeVisibleAnnotations attribute.
103         *
104         * @param host  attribute
105         * @param param visitor-specific parameter
106         *
107         * @return visitor-specific return vakue
108         */
109        R runtimeVisibleAnnotationsCase(RuntimeVisibleAnnotationsAttributeInfo host, D param);
110    
111        /**
112         * Case for a RuntimeInvisibleParameterAnnotations attribute.
113         *
114         * @param host  attribute
115         * @param param visitor-specific parameter
116         *
117         * @return visitor-specific return vakue
118         */
119        R runtimeInvisibleAnnotationsCase(RuntimeInvisibleAnnotationsAttributeInfo host, D param);
120    
121        /**
122         * Case for a RuntimeVisibleParameterAnnotations attribute.
123         *
124         * @param host  attribute
125         * @param param visitor-specific parameter
126         *
127         * @return visitor-specific return vakue
128         */
129        R runtimeVisibleParameterAnnotationsCase(RuntimeVisibleParameterAnnotationsAttributeInfo host, D param);
130    
131        /**
132         * Case for a RuntimeInvisibleParameterAnnotations attribute.
133         *
134         * @param host  attribute
135         * @param param visitor-specific parameter
136         *
137         * @return visitor-specific return vakue
138         */
139        R runtimeInvisibleParameterAnnotationsCase(RuntimeInvisibleParameterAnnotationsAttributeInfo host, D param);
140    
141        /**
142         * Case for a InnerClasses attribute.
143         *
144         * @param host  attribute
145         * @param param visitor-specific parameter
146         *
147         * @return visitor-specific return vakue
148         */
149        R innerClassesCase(InnerClassesAttributeInfo host, D param);
150    
151        /**
152         * Case for a Synthetic attribute.
153         *
154         * @param host  attribute
155         * @param param visitor-specific parameter
156         *
157         * @return visitor-specific return vakue
158         */
159        R syntheticCase(SyntheticAttributeInfo host, D param);
160    
161        /**
162         * Case for a EnclosingMethod attribute.
163         *
164         * @param host  attribute
165         * @param param visitor-specific parameter
166         *
167         * @return visitor-specific return vakue
168         */
169        R enclosingMethodCase(EnclosingMethodAttributeInfo host, D param);
170    
171        /**
172         * Case for a Deprecated attribute.
173         *
174         * @param host  attribute
175         * @param param visitor-specific parameter
176         *
177         * @return visitor-specific return vakue
178         */
179        R deprecatedCase(DeprecatedAttributeInfo host, D param);
180    
181        /**
182         * Case for a Instrumentation attribute.
183         *
184         * @param host  attribute
185         * @param param visitor-specific parameter
186         *
187         * @return visitor-specific return vakue
188         */
189        R instrumentationCase(InstrumentationAttributeInfo host, D param);
190    
191        /**
192         * Case for an unknown attribute.
193         *
194         * @param host  attribute
195         * @param param visitor-specific parameter
196         *
197         * @return visitor-specific return vakue
198         */
199        R unknownCase(UnknownAttributeInfo host, D param);
200    
201        // non-standard:
202    
203        /**
204         * Case for a (non-standard) RuntimeInvisibleLocalVariableAnnotations attribute.
205         *
206         * @param host  attribute
207         * @param param visitor-specific parameter
208         *
209         * @return visitor-specific return vakue
210         */
211        R runtimeInvisibleLocalVariableAnnotationsCase(RuntimeInvisibleLocalVariableAnnotationsAttributeInfo host, D param);
212    
213        /**
214         * Case for a (non-standard) RuntimeVisibleLocalVariableAnnotations attribute.
215         *
216         * @param host  attribute
217         * @param param visitor-specific parameter
218         *
219         * @return visitor-specific return vakue
220         */
221        R runtimeVisibleLocalVariableAnnotationsCase(RuntimeVisibleLocalVariableAnnotationsAttributeInfo host, D param);
222    }