// This file was generated by
//     //third_party/jni_zero/jni_zero.py
// For
//     this.is.a.package.prefix.org.jni_zero.GEN_JNI

#include <iterator>

#include "overridden/jni_zero_internal.h"
#include "header.h"

// Forward Declarations.
JNI_ZERO_BOUNDARY_EXPORT jobject Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1bar(
    JNIEnv* env,
    jclass jcaller,
    jobject sample);
JNI_ZERO_BOUNDARY_EXPORT void Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1foo(
    JNIEnv* env,
    jclass jcaller);
JNI_ZERO_BOUNDARY_EXPORT bool Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1hasPhalange(
    JNIEnv* env,
    jclass jcaller);
JNI_ZERO_BOUNDARY_EXPORT jobject Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1returnClass(
    JNIEnv* env,
    jclass jcaller);
JNI_ZERO_BOUNDARY_EXPORT jobject Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1returnClasses(
    JNIEnv* env,
    jclass jcaller);
JNI_ZERO_BOUNDARY_EXPORT jobject Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1returnConvertedAppObjects(
    JNIEnv* env,
    jclass jcaller,
    jobject __arrayClazz);
JNI_ZERO_BOUNDARY_EXPORT jobject Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1returnConvertedInts(
    JNIEnv* env,
    jclass jcaller);
JNI_ZERO_BOUNDARY_EXPORT jobject Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1returnConvertedString(
    JNIEnv* env,
    jclass jcaller);
JNI_ZERO_BOUNDARY_EXPORT jobject Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1returnConvertedStrings(
    JNIEnv* env,
    jclass jcaller);
JNI_ZERO_BOUNDARY_EXPORT jobject Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1returnObject(
    JNIEnv* env,
    jclass jcaller);
JNI_ZERO_BOUNDARY_EXPORT jobject Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1returnObjects(
    JNIEnv* env,
    jclass jcaller);
JNI_ZERO_BOUNDARY_EXPORT jobject Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1returnString(
    JNIEnv* env,
    jclass jcaller);
JNI_ZERO_BOUNDARY_EXPORT jobject Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1returnStrings(
    JNIEnv* env,
    jclass jcaller);
JNI_ZERO_BOUNDARY_EXPORT jobject Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1returnStruct(
    JNIEnv* env,
    jclass jcaller);
JNI_ZERO_BOUNDARY_EXPORT jobject Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1returnStructs(
    JNIEnv* env,
    jclass jcaller);
JNI_ZERO_BOUNDARY_EXPORT jobject Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1returnThrowable(
    JNIEnv* env,
    jclass jcaller);
JNI_ZERO_BOUNDARY_EXPORT jobject Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1returnThrowables(
    JNIEnv* env,
    jclass jcaller);
JNI_ZERO_BOUNDARY_EXPORT jobject Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1revString(
    JNIEnv* env,
    jclass jcaller,
    jobject stringToReverse);
JNI_ZERO_BOUNDARY_EXPORT jobject Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1sendSamplesToNative(
    JNIEnv* env,
    jclass jcaller,
    jobject strs);
JNI_ZERO_BOUNDARY_EXPORT jobject Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1sendToNative(
    JNIEnv* env,
    jclass jcaller,
    jobject strs);
JNI_ZERO_BOUNDARY_EXPORT jobject Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1testAllPrimitives(
    JNIEnv* env,
    jclass jcaller,
    int32_t zint,
    jobject ints,
    int64_t zlong,
    jobject longs,
    int16_t zshort,
    jobject shorts,
    uint16_t zchar,
    jobject chars,
    int8_t zbyte,
    jobject bytes,
    double zdouble,
    jobject doubles,
    float zfloat,
    jobject floats,
    bool zbool,
    jobject bools);
JNI_ZERO_BOUNDARY_EXPORT void Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1testSpecialTypes(
    JNIEnv* env,
    jclass jcaller,
    jobject clazz,
    jobject classes,
    jobject throwable,
    jobject throwables,
    jobject string,
    jobject strings,
    jobject convertedString,
    jobject convertedStrings,
    jobject optionalString,
    jobject funcType,
    jobject tStruct,
    jobject structs,
    jobject obj,
    jobject convertedObj,
    jobject objects,
    jobject nestedInterface,
    jobject view,
    jobject context,
    jobject convertedObjects);

// Helper Methods.
namespace {

bool RegisterNative_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI(JNIEnv* env) {
  static const JNINativeMethod kMethods[] = {
        {"org_jni_1zero_SampleForAnnotationProcessor_bar",
         "(Ljava/lang/Object;)Ljava/lang/Object;",
         reinterpret_cast<void*>(Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1bar)},
         {"org_jni_1zero_SampleForAnnotationProcessor_foo",
         "()V",
         reinterpret_cast<void*>(Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1foo)},
         {"org_jni_1zero_SampleForAnnotationProcessor_hasPhalange",
         "()Z",
         reinterpret_cast<void*>(Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1hasPhalange)},
         {"org_jni_1zero_SampleForAnnotationProcessor_returnClass",
         "()Ljava/lang/Object;",
         reinterpret_cast<void*>(Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1returnClass)},
         {"org_jni_1zero_SampleForAnnotationProcessor_returnClasses",
         "()Ljava/lang/Object;",
         reinterpret_cast<void*>(Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1returnClasses)},
         {"org_jni_1zero_SampleForAnnotationProcessor_returnConvertedAppObjects",
         "(Ljava/lang/Object;)Ljava/lang/Object;",
         reinterpret_cast<void*>(Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1returnConvertedAppObjects)},
         {"org_jni_1zero_SampleForAnnotationProcessor_returnConvertedInts",
         "()Ljava/lang/Object;",
         reinterpret_cast<void*>(Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1returnConvertedInts)},
         {"org_jni_1zero_SampleForAnnotationProcessor_returnConvertedString",
         "()Ljava/lang/Object;",
         reinterpret_cast<void*>(Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1returnConvertedString)},
         {"org_jni_1zero_SampleForAnnotationProcessor_returnConvertedStrings",
         "()Ljava/lang/Object;",
         reinterpret_cast<void*>(Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1returnConvertedStrings)},
         {"org_jni_1zero_SampleForAnnotationProcessor_returnObject",
         "()Ljava/lang/Object;",
         reinterpret_cast<void*>(Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1returnObject)},
         {"org_jni_1zero_SampleForAnnotationProcessor_returnObjects",
         "()Ljava/lang/Object;",
         reinterpret_cast<void*>(Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1returnObjects)},
         {"org_jni_1zero_SampleForAnnotationProcessor_returnString",
         "()Ljava/lang/Object;",
         reinterpret_cast<void*>(Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1returnString)},
         {"org_jni_1zero_SampleForAnnotationProcessor_returnStrings",
         "()Ljava/lang/Object;",
         reinterpret_cast<void*>(Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1returnStrings)},
         {"org_jni_1zero_SampleForAnnotationProcessor_returnStruct",
         "()Ljava/lang/Object;",
         reinterpret_cast<void*>(Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1returnStruct)},
         {"org_jni_1zero_SampleForAnnotationProcessor_returnStructs",
         "()Ljava/lang/Object;",
         reinterpret_cast<void*>(Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1returnStructs)},
         {"org_jni_1zero_SampleForAnnotationProcessor_returnThrowable",
         "()Ljava/lang/Object;",
         reinterpret_cast<void*>(Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1returnThrowable)},
         {"org_jni_1zero_SampleForAnnotationProcessor_returnThrowables",
         "()Ljava/lang/Object;",
         reinterpret_cast<void*>(Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1returnThrowables)},
         {"org_jni_1zero_SampleForAnnotationProcessor_revString",
         "(Ljava/lang/Object;)Ljava/lang/Object;",
         reinterpret_cast<void*>(Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1revString)},
         {"org_jni_1zero_SampleForAnnotationProcessor_sendSamplesToNative",
         "(Ljava/lang/Object;)Ljava/lang/Object;",
         reinterpret_cast<void*>(Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1sendSamplesToNative)},
         {"org_jni_1zero_SampleForAnnotationProcessor_sendToNative",
         "(Ljava/lang/Object;)Ljava/lang/Object;",
         reinterpret_cast<void*>(Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1sendToNative)},
         {"org_jni_1zero_SampleForAnnotationProcessor_testAllPrimitives",
         "(ILjava/lang/Object;JLjava/lang/Object;SLjava/lang/Object;CLjava/lang/Object;BLjava/lang/Object;DLjava/lang/Object;FLjava/lang/Object;ZLjava/lang/Object;)Ljava/lang/Object;",
         reinterpret_cast<void*>(Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1testAllPrimitives)},
         {"org_jni_1zero_SampleForAnnotationProcessor_testSpecialTypes",
         "(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V",
         reinterpret_cast<void*>(Java_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI_org_1jni_11zero_1SampleForAnnotationProcessor_1testSpecialTypes)},

  };
  jni_zero::ScopedJavaLocalRef<jclass> native_clazz =
      jni_zero::GetClass(env, "this.is.a.package.prefix.org.jni_zero.GEN_JNI");
  if (env->RegisterNatives(native_clazz.obj(), kMethods, std::size(kMethods)) < 0) {
    jni_zero::internal::HandleRegistrationError(env, native_clazz.obj(), __FILE__);
    return false;
  }

  return true;
}

}  // namespace

// Main Register Function.
bool RegisterNatives(JNIEnv* env) {
  // Register natives in a proxy.
  if (!RegisterNative_this_is_a_package_prefix_org_jni_1zero_GEN_1JNI(env)) {
    return false;
  }

  return true;
}

