// Copyright (c) 2021, the R8 project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

package com.android.tools.r8.apimodel;

import com.android.tools.r8.androidapi.AndroidApiClass;
import com.android.tools.r8.references.FieldReference;
import com.android.tools.r8.references.MethodReference;
import com.android.tools.r8.references.Reference;
import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.TraversalContinuation;
import java.util.function.BiFunction;

/** This is a template for generating AndroidApiDatabaseClass extending AndroidApiClass */
public class AndroidApiDatabaseClassTemplate extends AndroidApiClass {

  protected AndroidApiDatabaseClassTemplate() {
    // Code added dynamically in AndroidApiDatabaseBuilderGenerator.
    super(Reference.classFromDescriptor(placeHolderForInit()));
  }

  @Override
  public AndroidApiLevel getApiLevel() {
    // Code added dynamically in AndroidApiDatabaseBuilderGenerator.
    return placeHolderForGetApiLevel();
  }

  @Override
  public TraversalContinuation visitFields(
      BiFunction<FieldReference, AndroidApiLevel, TraversalContinuation> visitor) {
    // Code added dynamically in AndroidApiDatabaseBuilderGenerator.
    placeHolderForVisitFields();
    return TraversalContinuation.CONTINUE;
  }

  @Override
  public TraversalContinuation visitMethods(
      BiFunction<MethodReference, AndroidApiLevel, TraversalContinuation> visitor) {
    // Code added dynamically in AndroidApiDatabaseBuilderGenerator.
    placeHolderForVisitMethods();
    return TraversalContinuation.CONTINUE;
  }

  private static String placeHolderForInit() {
    return null;
  }

  private static AndroidApiLevel placeHolderForGetApiLevel() {
    return null;
  }

  private static void placeHolderForVisitFields() {}

  private static void placeHolderForVisitMethods() {}
}
