1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5// This file is autogenerated by 6// base/android/jni_generator/jni_generator.py 7// For 8// org/chromium/example/jni_generator/SampleForTests 9 10#ifndef org_chromium_example_jni_generator_SampleForTests_JNI 11#define org_chromium_example_jni_generator_SampleForTests_JNI 12 13#include <jni.h> 14 15#include "base/android/jni_generator/jni_generator_helper.h" 16 17#include "base/android/jni_int_wrapper.h" 18 19// Step 1: forward declarations. 20namespace { 21const char kInnerStructAClassPath[] = 22 "org/chromium/example/jni_generator/SampleForTests$InnerStructA"; 23const char kSampleForTestsClassPath[] = 24 "org/chromium/example/jni_generator/SampleForTests"; 25const char kInnerStructBClassPath[] = 26 "org/chromium/example/jni_generator/SampleForTests$InnerStructB"; 27// Leaking this jclass as we cannot use LazyInstance from some threads. 28jclass g_InnerStructA_clazz = NULL; 29#define InnerStructA_clazz(env) g_InnerStructA_clazz 30// Leaking this jclass as we cannot use LazyInstance from some threads. 31jclass g_SampleForTests_clazz = NULL; 32#define SampleForTests_clazz(env) g_SampleForTests_clazz 33// Leaking this jclass as we cannot use LazyInstance from some threads. 34jclass g_InnerStructB_clazz = NULL; 35#define InnerStructB_clazz(env) g_InnerStructB_clazz 36 37} // namespace 38 39namespace base { 40namespace android { 41 42static jlong Init(JNIEnv* env, jobject jcaller, 43 jstring param); 44 45static jdouble GetDoubleFunction(JNIEnv* env, jobject jcaller); 46 47static jfloat GetFloatFunction(JNIEnv* env, jclass jcaller); 48 49static void SetNonPODDatatype(JNIEnv* env, jobject jcaller, 50 jobject rect); 51 52static jobject GetNonPODDatatype(JNIEnv* env, jobject jcaller); 53 54// Step 2: method stubs. 55static void Destroy(JNIEnv* env, jobject jcaller, 56 jlong nativeCPPClass) { 57 CPPClass* native = reinterpret_cast<CPPClass*>(nativeCPPClass); 58 CHECK_NATIVE_PTR(env, jcaller, native, "Destroy"); 59 return native->Destroy(env, jcaller); 60} 61 62static jint Method(JNIEnv* env, jobject jcaller, 63 jlong nativeCPPClass) { 64 CPPClass* native = reinterpret_cast<CPPClass*>(nativeCPPClass); 65 CHECK_NATIVE_PTR(env, jcaller, native, "Method", 0); 66 return native->Method(env, jcaller); 67} 68 69static jdouble MethodOtherP0(JNIEnv* env, jobject jcaller, 70 jlong nativePtr) { 71 CPPClass::InnerClass* native = 72 reinterpret_cast<CPPClass::InnerClass*>(nativePtr); 73 CHECK_NATIVE_PTR(env, jcaller, native, "MethodOtherP0", 0); 74 return native->MethodOtherP0(env, jcaller); 75} 76 77static void AddStructB(JNIEnv* env, jobject jcaller, 78 jlong nativeCPPClass, 79 jobject b) { 80 CPPClass* native = reinterpret_cast<CPPClass*>(nativeCPPClass); 81 CHECK_NATIVE_PTR(env, jcaller, native, "AddStructB"); 82 return native->AddStructB(env, jcaller, b); 83} 84 85static void IterateAndDoSomethingWithStructB(JNIEnv* env, jobject jcaller, 86 jlong nativeCPPClass) { 87 CPPClass* native = reinterpret_cast<CPPClass*>(nativeCPPClass); 88 CHECK_NATIVE_PTR(env, jcaller, native, "IterateAndDoSomethingWithStructB"); 89 return native->IterateAndDoSomethingWithStructB(env, jcaller); 90} 91 92static jstring ReturnAString(JNIEnv* env, jobject jcaller, 93 jlong nativeCPPClass) { 94 CPPClass* native = reinterpret_cast<CPPClass*>(nativeCPPClass); 95 CHECK_NATIVE_PTR(env, jcaller, native, "ReturnAString", NULL); 96 return native->ReturnAString(env, jcaller).Release(); 97} 98 99static base::subtle::AtomicWord g_SampleForTests_javaMethod = 0; 100static jint Java_SampleForTests_javaMethod(JNIEnv* env, jobject obj, 101 JniIntWrapper foo, 102 JniIntWrapper bar) { 103 /* Must call RegisterNativesImpl() */ 104 CHECK_CLAZZ(env, obj, 105 SampleForTests_clazz(env), 0); 106 jmethodID method_id = 107 base::android::MethodID::LazyGet< 108 base::android::MethodID::TYPE_INSTANCE>( 109 env, SampleForTests_clazz(env), 110 "javaMethod", 111 112"(" 113"I" 114"I" 115")" 116"I", 117 &g_SampleForTests_javaMethod); 118 119 jint ret = 120 env->CallIntMethod(obj, 121 method_id, as_jint(foo), as_jint(bar)); 122 jni_generator::CheckException(env); 123 return ret; 124} 125 126static base::subtle::AtomicWord g_SampleForTests_staticJavaMethod = 0; 127static jboolean Java_SampleForTests_staticJavaMethod(JNIEnv* env) { 128 /* Must call RegisterNativesImpl() */ 129 CHECK_CLAZZ(env, SampleForTests_clazz(env), 130 SampleForTests_clazz(env), false); 131 jmethodID method_id = 132 base::android::MethodID::LazyGet< 133 base::android::MethodID::TYPE_STATIC>( 134 env, SampleForTests_clazz(env), 135 "staticJavaMethod", 136 137"(" 138")" 139"Z", 140 &g_SampleForTests_staticJavaMethod); 141 142 jboolean ret = 143 env->CallStaticBooleanMethod(SampleForTests_clazz(env), 144 method_id); 145 jni_generator::CheckException(env); 146 return ret; 147} 148 149static base::subtle::AtomicWord g_SampleForTests_packagePrivateJavaMethod = 0; 150static void Java_SampleForTests_packagePrivateJavaMethod(JNIEnv* env, jobject 151 obj) { 152 /* Must call RegisterNativesImpl() */ 153 CHECK_CLAZZ(env, obj, 154 SampleForTests_clazz(env)); 155 jmethodID method_id = 156 base::android::MethodID::LazyGet< 157 base::android::MethodID::TYPE_INSTANCE>( 158 env, SampleForTests_clazz(env), 159 "packagePrivateJavaMethod", 160 161"(" 162")" 163"V", 164 &g_SampleForTests_packagePrivateJavaMethod); 165 166 env->CallVoidMethod(obj, 167 method_id); 168 jni_generator::CheckException(env); 169 170} 171 172static base::subtle::AtomicWord g_SampleForTests_methodThatThrowsException = 0; 173static void Java_SampleForTests_methodThatThrowsException(JNIEnv* env, jobject 174 obj) { 175 /* Must call RegisterNativesImpl() */ 176 CHECK_CLAZZ(env, obj, 177 SampleForTests_clazz(env)); 178 jmethodID method_id = 179 base::android::MethodID::LazyGet< 180 base::android::MethodID::TYPE_INSTANCE>( 181 env, SampleForTests_clazz(env), 182 "methodThatThrowsException", 183 184"(" 185")" 186"V", 187 &g_SampleForTests_methodThatThrowsException); 188 189 env->CallVoidMethod(obj, 190 method_id); 191 192} 193 194static base::subtle::AtomicWord g_InnerStructA_create = 0; 195static base::android::ScopedJavaLocalRef<jobject> 196 Java_InnerStructA_create(JNIEnv* env, jlong l, 197 JniIntWrapper i, 198 jstring s) { 199 /* Must call RegisterNativesImpl() */ 200 CHECK_CLAZZ(env, InnerStructA_clazz(env), 201 InnerStructA_clazz(env), NULL); 202 jmethodID method_id = 203 base::android::MethodID::LazyGet< 204 base::android::MethodID::TYPE_STATIC>( 205 env, InnerStructA_clazz(env), 206 "create", 207 208"(" 209"J" 210"I" 211"Ljava/lang/String;" 212")" 213"Lorg/chromium/example/jni_generator/SampleForTests$InnerStructA;", 214 &g_InnerStructA_create); 215 216 jobject ret = 217 env->CallStaticObjectMethod(InnerStructA_clazz(env), 218 method_id, l, as_jint(i), s); 219 jni_generator::CheckException(env); 220 return base::android::ScopedJavaLocalRef<jobject>(env, ret); 221} 222 223static base::subtle::AtomicWord g_SampleForTests_addStructA = 0; 224static void Java_SampleForTests_addStructA(JNIEnv* env, jobject obj, jobject a) 225 { 226 /* Must call RegisterNativesImpl() */ 227 CHECK_CLAZZ(env, obj, 228 SampleForTests_clazz(env)); 229 jmethodID method_id = 230 base::android::MethodID::LazyGet< 231 base::android::MethodID::TYPE_INSTANCE>( 232 env, SampleForTests_clazz(env), 233 "addStructA", 234 235"(" 236"Lorg/chromium/example/jni_generator/SampleForTests$InnerStructA;" 237")" 238"V", 239 &g_SampleForTests_addStructA); 240 241 env->CallVoidMethod(obj, 242 method_id, a); 243 jni_generator::CheckException(env); 244 245} 246 247static base::subtle::AtomicWord g_SampleForTests_iterateAndDoSomething = 0; 248static void Java_SampleForTests_iterateAndDoSomething(JNIEnv* env, jobject obj) 249 { 250 /* Must call RegisterNativesImpl() */ 251 CHECK_CLAZZ(env, obj, 252 SampleForTests_clazz(env)); 253 jmethodID method_id = 254 base::android::MethodID::LazyGet< 255 base::android::MethodID::TYPE_INSTANCE>( 256 env, SampleForTests_clazz(env), 257 "iterateAndDoSomething", 258 259"(" 260")" 261"V", 262 &g_SampleForTests_iterateAndDoSomething); 263 264 env->CallVoidMethod(obj, 265 method_id); 266 jni_generator::CheckException(env); 267 268} 269 270static base::subtle::AtomicWord g_InnerStructB_getKey = 0; 271static jlong Java_InnerStructB_getKey(JNIEnv* env, jobject obj) { 272 /* Must call RegisterNativesImpl() */ 273 CHECK_CLAZZ(env, obj, 274 InnerStructB_clazz(env), 0); 275 jmethodID method_id = 276 base::android::MethodID::LazyGet< 277 base::android::MethodID::TYPE_INSTANCE>( 278 env, InnerStructB_clazz(env), 279 "getKey", 280 281"(" 282")" 283"J", 284 &g_InnerStructB_getKey); 285 286 jlong ret = 287 env->CallLongMethod(obj, 288 method_id); 289 jni_generator::CheckException(env); 290 return ret; 291} 292 293static base::subtle::AtomicWord g_InnerStructB_getValue = 0; 294static base::android::ScopedJavaLocalRef<jstring> 295 Java_InnerStructB_getValue(JNIEnv* env, jobject obj) { 296 /* Must call RegisterNativesImpl() */ 297 CHECK_CLAZZ(env, obj, 298 InnerStructB_clazz(env), NULL); 299 jmethodID method_id = 300 base::android::MethodID::LazyGet< 301 base::android::MethodID::TYPE_INSTANCE>( 302 env, InnerStructB_clazz(env), 303 "getValue", 304 305"(" 306")" 307"Ljava/lang/String;", 308 &g_InnerStructB_getValue); 309 310 jstring ret = 311 static_cast<jstring>(env->CallObjectMethod(obj, 312 method_id)); 313 jni_generator::CheckException(env); 314 return base::android::ScopedJavaLocalRef<jstring>(env, ret); 315} 316 317// Step 3: RegisterNatives. 318 319static const JNINativeMethod kMethodsSampleForTests[] = { 320 { "nativeInit", 321"(" 322"Ljava/lang/String;" 323")" 324"J", reinterpret_cast<void*>(Init) }, 325 { "nativeDestroy", 326"(" 327"J" 328")" 329"V", reinterpret_cast<void*>(Destroy) }, 330 { "nativeGetDoubleFunction", 331"(" 332")" 333"D", reinterpret_cast<void*>(GetDoubleFunction) }, 334 { "nativeGetFloatFunction", 335"(" 336")" 337"F", reinterpret_cast<void*>(GetFloatFunction) }, 338 { "nativeSetNonPODDatatype", 339"(" 340"Landroid/graphics/Rect;" 341")" 342"V", reinterpret_cast<void*>(SetNonPODDatatype) }, 343 { "nativeGetNonPODDatatype", 344"(" 345")" 346"Ljava/lang/Object;", reinterpret_cast<void*>(GetNonPODDatatype) }, 347 { "nativeMethod", 348"(" 349"J" 350")" 351"I", reinterpret_cast<void*>(Method) }, 352 { "nativeMethodOtherP0", 353"(" 354"J" 355")" 356"D", reinterpret_cast<void*>(MethodOtherP0) }, 357 { "nativeAddStructB", 358"(" 359"J" 360"Lorg/chromium/example/jni_generator/SampleForTests$InnerStructB;" 361")" 362"V", reinterpret_cast<void*>(AddStructB) }, 363 { "nativeIterateAndDoSomethingWithStructB", 364"(" 365"J" 366")" 367"V", reinterpret_cast<void*>(IterateAndDoSomethingWithStructB) }, 368 { "nativeReturnAString", 369"(" 370"J" 371")" 372"Ljava/lang/String;", reinterpret_cast<void*>(ReturnAString) }, 373}; 374 375static bool RegisterNativesImpl(JNIEnv* env) { 376 g_InnerStructA_clazz = reinterpret_cast<jclass>(env->NewGlobalRef( 377 base::android::GetClass(env, kInnerStructAClassPath).obj())); 378 g_SampleForTests_clazz = reinterpret_cast<jclass>(env->NewGlobalRef( 379 base::android::GetClass(env, kSampleForTestsClassPath).obj())); 380 g_InnerStructB_clazz = reinterpret_cast<jclass>(env->NewGlobalRef( 381 base::android::GetClass(env, kInnerStructBClassPath).obj())); 382 383 const int kMethodsSampleForTestsSize = arraysize(kMethodsSampleForTests); 384 385 if (env->RegisterNatives(SampleForTests_clazz(env), 386 kMethodsSampleForTests, 387 kMethodsSampleForTestsSize) < 0) { 388 jni_generator::HandleRegistrationError( 389 env, SampleForTests_clazz(env), __FILE__); 390 return false; 391 } 392 393 return true; 394} 395 396} // namespace android 397} // namespace base 398 399#endif // org_chromium_example_jni_generator_SampleForTests_JNI 400