KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > proguard > classfile > attribute > visitor > MultiAttributeVisitor


1 /*
2  * ProGuard -- shrinking, optimization, obfuscation, and preverification
3  * of Java bytecode.
4  *
5  * Copyright (c) 2002-2007 Eric Lafortune (eric@graphics.cornell.edu)
6  *
7  * This program is free software; you can redistribute it and/or modify it
8  * under the terms of the GNU General Public License as published by the Free
9  * Software Foundation; either version 2 of the License, or (at your option)
10  * any later version.
11  *
12  * This program is distributed in the hope that it will be useful, but WITHOUT
13  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
15  * more details.
16  *
17  * You should have received a copy of the GNU General Public License along
18  * with this program; if not, write to the Free Software Foundation, Inc.,
19  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20  */

21 package proguard.classfile.attribute.visitor;
22
23 import proguard.classfile.*;
24 import proguard.classfile.attribute.*;
25 import proguard.classfile.attribute.annotation.*;
26 import proguard.classfile.attribute.preverification.*;
27
28 /**
29  * This AttributeVisitor delegates all visits to each AttributeVisitor
30  * in a given list.
31  *
32  * @author Eric Lafortune
33  */

34 public class MultiAttributeVisitor implements AttributeVisitor
35 {
36     private AttributeVisitor[] attributeVisitors;
37
38
39     public MultiAttributeVisitor()
40     {
41     }
42
43
44     public MultiAttributeVisitor(AttributeVisitor[] attributeVisitors)
45     {
46         this.attributeVisitors = attributeVisitors;
47     }
48
49
50     public void addAttributeVisitor(AttributeVisitor attributeVisitor)
51     {
52         incrementArraySize();
53
54         attributeVisitors[attributeVisitors.length - 1] = attributeVisitor;
55     }
56
57
58     private void incrementArraySize()
59     {
60         if (attributeVisitors == null)
61         {
62             attributeVisitors = new AttributeVisitor[1];
63         }
64         else
65         {
66             AttributeVisitor[] newAttributeVisitors =
67                 new AttributeVisitor[attributeVisitors.length + 1];
68             System.arraycopy(attributeVisitors, 0,
69                              newAttributeVisitors, 0,
70                              attributeVisitors.length);
71             attributeVisitors = newAttributeVisitors;
72         }
73     }
74
75
76     // Implementations for AttributeVisitor.
77

78
79     public void visitUnknownAttribute(Clazz clazz, UnknownAttribute unknownAttribute)
80     {
81         for (int index = 0; index < attributeVisitors.length; index++)
82         {
83             attributeVisitors[index].visitUnknownAttribute(clazz, unknownAttribute);
84         }
85     }
86
87
88     public void visitSourceFileAttribute(Clazz clazz, SourceFileAttribute sourceFileAttribute)
89     {
90         for (int index = 0; index < attributeVisitors.length; index++)
91         {
92             attributeVisitors[index].visitSourceFileAttribute(clazz, sourceFileAttribute);
93         }
94     }
95
96
97     public void visitSourceDirAttribute(Clazz clazz, SourceDirAttribute sourceDirAttribute)
98     {
99         for (int index = 0; index < attributeVisitors.length; index++)
100         {
101             attributeVisitors[index].visitSourceDirAttribute(clazz, sourceDirAttribute);
102         }
103     }
104
105
106     public void visitInnerClassesAttribute(Clazz clazz, InnerClassesAttribute innerClassesAttribute)
107     {
108         for (int index = 0; index < attributeVisitors.length; index++)
109         {
110             attributeVisitors[index].visitInnerClassesAttribute(clazz, innerClassesAttribute);
111         }
112     }
113
114
115     public void visitEnclosingMethodAttribute(Clazz clazz, EnclosingMethodAttribute enclosingMethodAttribute)
116     {
117         for (int index = 0; index < attributeVisitors.length; index++)
118         {
119             attributeVisitors[index].visitEnclosingMethodAttribute(clazz, enclosingMethodAttribute);
120         }
121     }
122
123
124     public void visitDeprecatedAttribute(Clazz clazz, DeprecatedAttribute deprecatedAttribute)
125     {
126         for (int index = 0; index < attributeVisitors.length; index++)
127         {
128             attributeVisitors[index].visitDeprecatedAttribute(clazz, deprecatedAttribute);
129         }
130     }
131
132
133     public void visitSyntheticAttribute(Clazz clazz, SyntheticAttribute syntheticAttribute)
134     {
135         for (int index = 0; index < attributeVisitors.length; index++)
136         {
137             attributeVisitors[index].visitSyntheticAttribute(clazz, syntheticAttribute);
138         }
139     }
140
141
142     public void visitSignatureAttribute(Clazz clazz, SignatureAttribute syntheticAttribute)
143     {
144         for (int index = 0; index < attributeVisitors.length; index++)
145         {
146             attributeVisitors[index].visitSignatureAttribute(clazz, syntheticAttribute);
147         }
148     }
149
150
151     public void visitDeprecatedAttribute(Clazz clazz, Field field, DeprecatedAttribute deprecatedAttribute)
152     {
153         for (int index = 0; index < attributeVisitors.length; index++)
154         {
155             attributeVisitors[index].visitDeprecatedAttribute(clazz, field, deprecatedAttribute);
156         }
157     }
158
159
160     public void visitSyntheticAttribute(Clazz clazz, Field field, SyntheticAttribute syntheticAttribute)
161     {
162         for (int index = 0; index < attributeVisitors.length; index++)
163         {
164             attributeVisitors[index].visitSyntheticAttribute(clazz, field, syntheticAttribute);
165         }
166     }
167
168
169     public void visitSignatureAttribute(Clazz clazz, Field field, SignatureAttribute syntheticAttribute)
170     {
171         for (int index = 0; index < attributeVisitors.length; index++)
172         {
173             attributeVisitors[index].visitSignatureAttribute(clazz, field, syntheticAttribute);
174         }
175     }
176
177
178     public void visitDeprecatedAttribute(Clazz clazz, Method method, DeprecatedAttribute deprecatedAttribute)
179     {
180         for (int index = 0; index < attributeVisitors.length; index++)
181         {
182             attributeVisitors[index].visitDeprecatedAttribute(clazz, method, deprecatedAttribute);
183         }
184     }
185
186
187     public void visitSyntheticAttribute(Clazz clazz, Method method, SyntheticAttribute syntheticAttribute)
188     {
189         for (int index = 0; index < attributeVisitors.length; index++)
190         {
191             attributeVisitors[index].visitSyntheticAttribute(clazz, method, syntheticAttribute);
192         }
193     }
194
195
196     public void visitSignatureAttribute(Clazz clazz, Method method, SignatureAttribute syntheticAttribute)
197     {
198         for (int index = 0; index < attributeVisitors.length; index++)
199         {
200             attributeVisitors[index].visitSignatureAttribute(clazz, method, syntheticAttribute);
201         }
202     }
203
204
205     public void visitConstantValueAttribute(Clazz clazz, Field field, ConstantValueAttribute constantValueAttribute)
206     {
207         for (int index = 0; index < attributeVisitors.length; index++)
208         {
209             attributeVisitors[index].visitConstantValueAttribute(clazz, field, constantValueAttribute);
210         }
211     }
212
213
214     public void visitExceptionsAttribute(Clazz clazz, Method method, ExceptionsAttribute exceptionsAttribute)
215     {
216         for (int index = 0; index < attributeVisitors.length; index++)
217         {
218             attributeVisitors[index].visitExceptionsAttribute(clazz, method, exceptionsAttribute);
219         }
220     }
221
222
223     public void visitCodeAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute)
224     {
225         for (int index = 0; index < attributeVisitors.length; index++)
226         {
227             attributeVisitors[index].visitCodeAttribute(clazz, method, codeAttribute);
228         }
229     }
230
231
232     public void visitStackMapAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, StackMapAttribute stackMapAttribute)
233     {
234         for (int index = 0; index < attributeVisitors.length; index++)
235         {
236             attributeVisitors[index].visitStackMapAttribute(clazz, method, codeAttribute, stackMapAttribute);
237         }
238     }
239
240
241     public void visitStackMapTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, StackMapTableAttribute stackMapTableAttribute)
242     {
243         for (int index = 0; index < attributeVisitors.length; index++)
244         {
245             attributeVisitors[index].visitStackMapTableAttribute(clazz, method, codeAttribute, stackMapTableAttribute);
246         }
247     }
248
249
250     public void visitLineNumberTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, LineNumberTableAttribute lineNumberTableAttribute)
251     {
252         for (int index = 0; index < attributeVisitors.length; index++)
253         {
254             attributeVisitors[index].visitLineNumberTableAttribute(clazz, method, codeAttribute, lineNumberTableAttribute);
255         }
256     }
257
258
259     public void visitLocalVariableTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, LocalVariableTableAttribute localVariableTableAttribute)
260     {
261         for (int index = 0; index < attributeVisitors.length; index++)
262         {
263             attributeVisitors[index].visitLocalVariableTableAttribute(clazz, method, codeAttribute, localVariableTableAttribute);
264         }
265     }
266
267
268     public void visitLocalVariableTypeTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, LocalVariableTypeTableAttribute localVariableTypeTableAttribute)
269     {
270         for (int index = 0; index < attributeVisitors.length; index++)
271         {
272             attributeVisitors[index].visitLocalVariableTypeTableAttribute(clazz, method, codeAttribute, localVariableTypeTableAttribute);
273         }
274     }
275
276
277     public void visitRuntimeVisibleAnnotationsAttribute(Clazz clazz, RuntimeVisibleAnnotationsAttribute runtimeVisibleAnnotationsAttribute)
278     {
279         for (int index = 0; index < attributeVisitors.length; index++)
280         {
281             attributeVisitors[index].visitRuntimeVisibleAnnotationsAttribute(clazz, runtimeVisibleAnnotationsAttribute);
282         }
283     }
284
285
286     public void visitRuntimeInvisibleAnnotationsAttribute(Clazz clazz, RuntimeInvisibleAnnotationsAttribute runtimeInvisibleAnnotationsAttribute)
287     {
288         for (int index = 0; index < attributeVisitors.length; index++)
289         {
290             attributeVisitors[index].visitRuntimeInvisibleAnnotationsAttribute(clazz, runtimeInvisibleAnnotationsAttribute);
291         }
292     }
293
294
295     public void visitRuntimeVisibleAnnotationsAttribute(Clazz clazz, Field field, RuntimeVisibleAnnotationsAttribute runtimeVisibleAnnotationsAttribute)
296     {
297         for (int index = 0; index < attributeVisitors.length; index++)
298         {
299             attributeVisitors[index].visitRuntimeVisibleAnnotationsAttribute(clazz, field, runtimeVisibleAnnotationsAttribute);
300         }
301     }
302
303
304     public void visitRuntimeInvisibleAnnotationsAttribute(Clazz clazz, Field field, RuntimeInvisibleAnnotationsAttribute runtimeInvisibleAnnotationsAttribute)
305     {
306         for (int index = 0; index < attributeVisitors.length; index++)
307         {
308             attributeVisitors[index].visitRuntimeInvisibleAnnotationsAttribute(clazz, field, runtimeInvisibleAnnotationsAttribute);
309         }
310     }
311
312
313     public void visitRuntimeVisibleAnnotationsAttribute(Clazz clazz, Method method, RuntimeVisibleAnnotationsAttribute runtimeVisibleAnnotationsAttribute)
314     {
315         for (int index = 0; index < attributeVisitors.length; index++)
316         {
317             attributeVisitors[index].visitRuntimeVisibleAnnotationsAttribute(clazz, method, runtimeVisibleAnnotationsAttribute);
318         }
319     }
320
321
322     public void visitRuntimeInvisibleAnnotationsAttribute(Clazz clazz, Method method, RuntimeInvisibleAnnotationsAttribute runtimeInvisibleAnnotationsAttribute)
323     {
324         for (int index = 0; index < attributeVisitors.length; index++)
325         {
326             attributeVisitors[index].visitRuntimeInvisibleAnnotationsAttribute(clazz, method, runtimeInvisibleAnnotationsAttribute);
327         }
328     }
329
330
331     public void visitRuntimeVisibleParameterAnnotationsAttribute(Clazz clazz, Method method, RuntimeVisibleParameterAnnotationsAttribute runtimeVisibleParameterAnnotationsAttribute)
332     {
333         for (int index = 0; index < attributeVisitors.length; index++)
334         {
335             attributeVisitors[index].visitRuntimeVisibleParameterAnnotationsAttribute(clazz, method, runtimeVisibleParameterAnnotationsAttribute);
336         }
337     }
338
339
340     public void visitRuntimeInvisibleParameterAnnotationsAttribute(Clazz clazz, Method method, RuntimeInvisibleParameterAnnotationsAttribute runtimeInvisibleParameterAnnotationsAttribute)
341     {
342         for (int index = 0; index < attributeVisitors.length; index++)
343         {
344             attributeVisitors[index].visitRuntimeInvisibleParameterAnnotationsAttribute(clazz, method, runtimeInvisibleParameterAnnotationsAttribute);
345         }
346     }
347
348
349     public void visitAnnotationDefaultAttribute(Clazz clazz, Method method, AnnotationDefaultAttribute annotationDefaultAttribute)
350     {
351         for (int index = 0; index < attributeVisitors.length; index++)
352         {
353             attributeVisitors[index].visitAnnotationDefaultAttribute(clazz, method, annotationDefaultAttribute);
354         }
355     }
356 }
357
Popular Tags