|
@@ -195,28 +195,15 @@ public class JavaDefinitionVisitor implements DefinitionVisitor<byte[]> {
|
195
|
195
|
|
196
|
196
|
final JavaMemberVisitor visitor = new JavaMemberVisitor(writer, toClass, variant);
|
197
|
197
|
|
198
|
|
-
|
199
|
198
|
final List<VariantDefinition.Option> options = variant.options;
|
200
|
|
- for (int optionNo = 0, optionsSize = options.size(); optionNo < optionsSize; optionNo++) {
|
201
|
|
- final VariantDefinition.Option option = options.get(optionNo);
|
202
|
|
- option.setTag(JavaOptionInfoTag.class, new JavaOptionInfoTag(optionNo));
|
203
|
|
- }
|
204
|
|
-
|
205
|
|
- for (final IDefinitionMember member : variant.members) {
|
206
|
|
- member.accept(visitor);
|
207
|
|
- }
|
208
|
|
-
|
209
|
|
-
|
210
|
|
-
|
211
|
|
-
|
212
|
199
|
//Each option is one of the possible child classes
|
213
|
|
- for (int optionNo = 0, optionsSize = options.size(); optionNo < optionsSize; ++optionNo) {
|
214
|
|
- final VariantDefinition.Option option = options.get(optionNo);
|
215
|
|
-
|
|
200
|
+ for (final VariantDefinition.Option option : options) {
|
216
|
201
|
final String optionClassName = variantName + "$" + option.name;
|
217
|
|
- final JavaClassInfo optionClass = new JavaClassInfo(variantName);
|
|
202
|
+ final JavaClassInfo optionClass = new JavaClassInfo(optionClassName);
|
218
|
203
|
final JavaClassWriter optionWriter = new JavaClassWriter(ClassWriter.COMPUTE_FRAMES);
|
219
|
204
|
|
|
205
|
+ option.setTag(JavaClassInfo.class, optionClass);
|
|
206
|
+
|
220
|
207
|
|
221
|
208
|
//Generic option signature
|
222
|
209
|
final String signature;
|
|
@@ -245,14 +232,13 @@ public class JavaDefinitionVisitor implements DefinitionVisitor<byte[]> {
|
245
|
232
|
|
246
|
233
|
|
247
|
234
|
//Denominator for switch-cases
|
248
|
|
- final JavaWriter getDenominator = new JavaWriter(optionWriter, new JavaMethodInfo(optionClass, "getDenominator", "()I", Modifiers.PUBLIC), null,null, null, "java/lang/Override");
|
|
235
|
+ final JavaWriter getDenominator = new JavaWriter(optionWriter, new JavaMethodInfo(optionClass, "getDenominator", "()I", Modifiers.PUBLIC), null, null, null, "java/lang/Override");
|
249
|
236
|
getDenominator.start();
|
250
|
|
- getDenominator.constant(optionNo);
|
|
237
|
+ getDenominator.constant(option.ordinal);
|
251
|
238
|
getDenominator.returnInt();
|
252
|
239
|
getDenominator.end();
|
253
|
240
|
|
254
|
241
|
|
255
|
|
-
|
256
|
242
|
//Print the option files, won't be in production
|
257
|
243
|
optionVisitor.end();
|
258
|
244
|
optionWriter.visitEnd();
|
|
@@ -263,6 +249,12 @@ public class JavaDefinitionVisitor implements DefinitionVisitor<byte[]> {
|
263
|
249
|
e.printStackTrace();
|
264
|
250
|
}
|
265
|
251
|
}
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+ for (final IDefinitionMember member : variant.members) {
|
|
255
|
+ member.accept(visitor);
|
|
256
|
+ }
|
|
257
|
+
|
266
|
258
|
visitor.end();
|
267
|
259
|
writer.visitEnd();
|
268
|
260
|
|