Exemplo n.º 1
0
  private static void generateConstructor(
      ClassDefinition classDefinition,
      CachedInstanceBinder cachedInstanceBinder,
      int projectionCount) {
    MethodDefinition constructorDefinition = classDefinition.declareConstructor(a(PUBLIC));
    FieldDefinition inputDictionaries =
        classDefinition.declareField(a(PRIVATE, FINAL), "inputDictionaries", Block[].class);
    FieldDefinition outputDictionaries =
        classDefinition.declareField(a(PRIVATE, FINAL), "outputDictionaries", Block[].class);

    BytecodeBlock body = constructorDefinition.getBody();
    Variable thisVariable = constructorDefinition.getThis();

    body.comment("super();").append(thisVariable).invokeConstructor(Object.class);

    body.append(
        thisVariable.setField(inputDictionaries, newArray(type(Block[].class), projectionCount)));
    body.append(
        thisVariable.setField(outputDictionaries, newArray(type(Block[].class), projectionCount)));
    cachedInstanceBinder.generateInitializations(thisVariable, body);
    body.ret();
  }