// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.


// This file is autogenerated by
//     base/android/jni_generator/jni_registration_generator.py
// Please do not change its content.

#ifndef TEMP_DIR_HEADER_
#define TEMP_DIR_HEADER_

#include <jni.h>

#include <iterator>

#include "base/android/jni_generator/jni_generator_helper.h"
#include "base/android/jni_int_wrapper.h"


// Step 1: Forward declarations (classes).


// Step 2: Forward declarations (methods).

JNI_GENERATOR_EXPORT void Java_this_is_a_package_prefix_J_N_MGfHLNVl(
    JNIEnv* env,
    jclass jcaller);
JNI_GENERATOR_EXPORT jobject Java_this_is_a_package_prefix_J_N_M5EfCheU(
    JNIEnv* env,
    jclass jcaller,
    jobject sample);
JNI_GENERATOR_EXPORT jstring Java_this_is_a_package_prefix_J_N_MXQefv1w(
    JNIEnv* env,
    jclass jcaller,
    jstring stringToReverse);
JNI_GENERATOR_EXPORT jobjectArray Java_this_is_a_package_prefix_J_N_MSYtnUBS(
    JNIEnv* env,
    jclass jcaller,
    jobjectArray strs);
JNI_GENERATOR_EXPORT jobjectArray Java_this_is_a_package_prefix_J_N_MaV5G8K8(
    JNIEnv* env,
    jclass jcaller,
    jobjectArray strs);
JNI_GENERATOR_EXPORT jboolean Java_this_is_a_package_prefix_J_N_MM2Yz6XD(
    JNIEnv* env,
    jclass jcaller);
JNI_GENERATOR_EXPORT jintArray Java_this_is_a_package_prefix_J_N_MMy4dcxH(
    JNIEnv* env,
    jclass jcaller,
    jint zint,
    jintArray ints,
    jlong zlong,
    jlongArray longs,
    jshort zshort,
    jshortArray shorts,
    jchar zchar,
    jcharArray chars,
    jbyte zbyte,
    jbyteArray bytes,
    jdouble zdouble,
    jdoubleArray doubles,
    jfloat zfloat,
    jfloatArray floats,
    jboolean zbool,
    jbooleanArray bools);
JNI_GENERATOR_EXPORT void Java_this_is_a_package_prefix_J_N_MSslZIsy(
    JNIEnv* env,
    jclass jcaller,
    jclass clazz,
    jobjectArray classes,
    jthrowable throwable,
    jobjectArray throwables,
    jstring string,
    jobjectArray strings,
    jobject tStruct,
    jobjectArray structs,
    jobject obj,
    jobjectArray objects);
JNI_GENERATOR_EXPORT jthrowable Java_this_is_a_package_prefix_J_N_Mehs9t7u(
    JNIEnv* env,
    jclass jcaller);
JNI_GENERATOR_EXPORT jobjectArray Java_this_is_a_package_prefix_J_N_MQH82FhP(
    JNIEnv* env,
    jclass jcaller);
JNI_GENERATOR_EXPORT jclass Java_this_is_a_package_prefix_J_N_MyxAHj2Y(
    JNIEnv* env,
    jclass jcaller);
JNI_GENERATOR_EXPORT jobjectArray Java_this_is_a_package_prefix_J_N_MNGv55Cm(
    JNIEnv* env,
    jclass jcaller);
JNI_GENERATOR_EXPORT jstring Java_this_is_a_package_prefix_J_N_Mysjo_00024pl(
    JNIEnv* env,
    jclass jcaller);
JNI_GENERATOR_EXPORT jobjectArray Java_this_is_a_package_prefix_J_N_M3B287zk(
    JNIEnv* env,
    jclass jcaller);
JNI_GENERATOR_EXPORT jobject Java_this_is_a_package_prefix_J_N_M8UGsyhL(
    JNIEnv* env,
    jclass jcaller);
JNI_GENERATOR_EXPORT jobjectArray Java_this_is_a_package_prefix_J_N_MtYMX5wX(
    JNIEnv* env,
    jclass jcaller);
JNI_GENERATOR_EXPORT jobject Java_this_is_a_package_prefix_J_N_MIs8T9aQ(
    JNIEnv* env,
    jclass jcaller);
JNI_GENERATOR_EXPORT jobjectArray Java_this_is_a_package_prefix_J_N_MtkQGyRy(
    JNIEnv* env,
    jclass jcaller);



#endif  // TEMP_DIR_HEADER_
