// This file was generated by
//     //third_party/jni_zero/jni_zero.py
// For
//     J.module_N

#include <iterator>

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

extern const int64_t kJniZeroHashmoduleWhole = -7714383706413312501LL;
extern const int64_t kJniZeroHashmodulePriority = 0LL;

namespace jni_zero::internal {

// Class Index Definitions.

// CalledByNative Table and Indices.

std::atomic<jclass> cached_jclasses[0];
std::atomic<jmethodID> cached_method_ids[0];

extern const char kClassNameStringPool[] = "";
extern const uint16_t kClassNameOffsets[0] = {};

extern const CalledByNativeDescriptor kCbnDescriptors[0] = {
};

extern const char kMethodNameStringPool[] = "";

extern const char kDescriptorStringPool[] = "";


}  // namespace jni_zero::internal

// Forward Declarations.
JNI_ZERO_MUXED_ENTRYPOINT bool Muxed_org_jni_1zero_SampleModule_bar(JNIEnv* env, bool a);
JNI_ZERO_MUXED_ENTRYPOINT void Muxed_org_jni_1zero_SampleModule_foo(JNIEnv* env);

// Multiplexing Methods.
JNI_ZERO_BOUNDARY_EXPORT void Java_J_module_1N_V(JNIEnv* env, jclass jcaller) {
  return Muxed_org_jni_1zero_SampleModule_foo(env);
}
JNI_ZERO_BOUNDARY_EXPORT bool Java_J_module_1N_ZZ(JNIEnv* env, jclass jcaller, bool p0) {
  return Muxed_org_jni_1zero_SampleModule_bar(env, p0);
}

// Helper Methods.
namespace {

bool RegisterNative_J_module_1N(JNIEnv* env) {
  static const JNINativeMethod kMethods[] = {
        {"V",
         "()V",
         reinterpret_cast<void*>(Java_J_module_1N_V)},
         {"ZZ",
         "(Z)Z",
         reinterpret_cast<void*>(Java_J_module_1N_ZZ)},

  };
  jni_zero::ScopedJavaLocalRef<jclass> native_clazz =
      jni_zero::GetClass(env, "J.module_N");
  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_J_module_1N(env)) {
    return false;
  }

  return true;
}

