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 }