• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.
20 namespace {
21 const char kInnerStructAClassPath[] =
22     "org/chromium/example/jni_generator/SampleForTests$InnerStructA";
23 const char kSampleForTestsClassPath[] =
24     "org/chromium/example/jni_generator/SampleForTests";
25 const char kInnerStructBClassPath[] =
26     "org/chromium/example/jni_generator/SampleForTests$InnerStructB";
27 // Leaking this jclass as we cannot use LazyInstance from some threads.
28 jclass g_InnerStructA_clazz = NULL;
29 #define InnerStructA_clazz(env) g_InnerStructA_clazz
30 // Leaking this jclass as we cannot use LazyInstance from some threads.
31 jclass g_SampleForTests_clazz = NULL;
32 #define SampleForTests_clazz(env) g_SampleForTests_clazz
33 // Leaking this jclass as we cannot use LazyInstance from some threads.
34 jclass g_InnerStructB_clazz = NULL;
35 #define InnerStructB_clazz(env) g_InnerStructB_clazz
36 
37 }  // namespace
38 
39 namespace base {
40 namespace android {
41 
42 // Step 2: method stubs.
43 
44 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& jcaller,
45     const JavaParamRef<jstring>& param);
46 
47 static jlong
Java_org_chromium_example_jni_1generator_SampleForTests_nativeInit(JNIEnv * env,jobject jcaller,jstring param)48     Java_org_chromium_example_jni_1generator_SampleForTests_nativeInit(JNIEnv*
49     env, jobject jcaller,
50     jstring param) {
51   return Init(env, JavaParamRef<jobject>(env, jcaller),
52       JavaParamRef<jstring>(env, param));
53 }
54 
55 static void
Java_org_chromium_example_jni_1generator_SampleForTests_nativeDestroy(JNIEnv * env,jobject jcaller,jlong nativeCPPClass)56     Java_org_chromium_example_jni_1generator_SampleForTests_nativeDestroy(JNIEnv*
57     env,
58     jobject jcaller,
59     jlong nativeCPPClass) {
60   CPPClass* native = reinterpret_cast<CPPClass*>(nativeCPPClass);
61   CHECK_NATIVE_PTR(env, jcaller, native, "Destroy");
62   return native->Destroy(env, JavaParamRef<jobject>(env, jcaller));
63 }
64 
65 static jdouble GetDoubleFunction(JNIEnv* env, const JavaParamRef<jobject>&
66     jcaller);
67 
68 static jdouble
Java_org_chromium_example_jni_1generator_SampleForTests_nativeGetDoubleFunction(JNIEnv * env,jobject jcaller)69     Java_org_chromium_example_jni_1generator_SampleForTests_nativeGetDoubleFunction(JNIEnv*
70     env, jobject jcaller) {
71   return GetDoubleFunction(env, JavaParamRef<jobject>(env, jcaller));
72 }
73 
74 static jfloat GetFloatFunction(JNIEnv* env, const JavaParamRef<jclass>&
75     jcaller);
76 
77 static jfloat
Java_org_chromium_example_jni_1generator_SampleForTests_nativeGetFloatFunction(JNIEnv * env,jclass jcaller)78     Java_org_chromium_example_jni_1generator_SampleForTests_nativeGetFloatFunction(JNIEnv*
79     env, jclass jcaller) {
80   return GetFloatFunction(env, JavaParamRef<jclass>(env, jcaller));
81 }
82 
83 static void SetNonPODDatatype(JNIEnv* env, const JavaParamRef<jobject>& jcaller,
84     const JavaParamRef<jobject>& rect);
85 
86 static void
Java_org_chromium_example_jni_1generator_SampleForTests_nativeSetNonPODDatatype(JNIEnv * env,jobject jcaller,jobject rect)87     Java_org_chromium_example_jni_1generator_SampleForTests_nativeSetNonPODDatatype(JNIEnv*
88     env, jobject jcaller,
89     jobject rect) {
90   return SetNonPODDatatype(env, JavaParamRef<jobject>(env, jcaller),
91       JavaParamRef<jobject>(env, rect));
92 }
93 
94 static ScopedJavaLocalRef<jobject> GetNonPODDatatype(JNIEnv* env, const
95     JavaParamRef<jobject>& jcaller);
96 
97 static jobject
Java_org_chromium_example_jni_1generator_SampleForTests_nativeGetNonPODDatatype(JNIEnv * env,jobject jcaller)98     Java_org_chromium_example_jni_1generator_SampleForTests_nativeGetNonPODDatatype(JNIEnv*
99     env, jobject jcaller) {
100   return GetNonPODDatatype(env, JavaParamRef<jobject>(env, jcaller)).Release();
101 }
102 
103 static jint
Java_org_chromium_example_jni_1generator_SampleForTests_nativeMethod(JNIEnv * env,jobject jcaller,jlong nativeCPPClass)104     Java_org_chromium_example_jni_1generator_SampleForTests_nativeMethod(JNIEnv*
105     env,
106     jobject jcaller,
107     jlong nativeCPPClass) {
108   CPPClass* native = reinterpret_cast<CPPClass*>(nativeCPPClass);
109   CHECK_NATIVE_PTR(env, jcaller, native, "Method", 0);
110   return native->Method(env, JavaParamRef<jobject>(env, jcaller));
111 }
112 
113 static jdouble
Java_org_chromium_example_jni_1generator_SampleForTests_nativeMethodOtherP0(JNIEnv * env,jobject jcaller,jlong nativePtr)114     Java_org_chromium_example_jni_1generator_SampleForTests_nativeMethodOtherP0(JNIEnv*
115     env,
116     jobject jcaller,
117     jlong nativePtr) {
118   CPPClass::InnerClass* native =
119       reinterpret_cast<CPPClass::InnerClass*>(nativePtr);
120   CHECK_NATIVE_PTR(env, jcaller, native, "MethodOtherP0", 0);
121   return native->MethodOtherP0(env, JavaParamRef<jobject>(env, jcaller));
122 }
123 
124 static void
Java_org_chromium_example_jni_1generator_SampleForTests_nativeAddStructB(JNIEnv * env,jobject jcaller,jlong nativeCPPClass,jobject b)125     Java_org_chromium_example_jni_1generator_SampleForTests_nativeAddStructB(JNIEnv*
126     env,
127     jobject jcaller,
128     jlong nativeCPPClass,
129     jobject b) {
130   CPPClass* native = reinterpret_cast<CPPClass*>(nativeCPPClass);
131   CHECK_NATIVE_PTR(env, jcaller, native, "AddStructB");
132   return native->AddStructB(env, JavaParamRef<jobject>(env, jcaller),
133       JavaParamRef<jobject>(env, b));
134 }
135 
136 static void
Java_org_chromium_example_jni_1generator_SampleForTests_nativeIterateAndDoSomethingWithStructB(JNIEnv * env,jobject jcaller,jlong nativeCPPClass)137     Java_org_chromium_example_jni_1generator_SampleForTests_nativeIterateAndDoSomethingWithStructB(JNIEnv*
138     env,
139     jobject jcaller,
140     jlong nativeCPPClass) {
141   CPPClass* native = reinterpret_cast<CPPClass*>(nativeCPPClass);
142   CHECK_NATIVE_PTR(env, jcaller, native, "IterateAndDoSomethingWithStructB");
143   return native->IterateAndDoSomethingWithStructB(env,
144       JavaParamRef<jobject>(env, jcaller));
145 }
146 
147 static jstring
Java_org_chromium_example_jni_1generator_SampleForTests_nativeReturnAString(JNIEnv * env,jobject jcaller,jlong nativeCPPClass)148     Java_org_chromium_example_jni_1generator_SampleForTests_nativeReturnAString(JNIEnv*
149     env,
150     jobject jcaller,
151     jlong nativeCPPClass) {
152   CPPClass* native = reinterpret_cast<CPPClass*>(nativeCPPClass);
153   CHECK_NATIVE_PTR(env, jcaller, native, "ReturnAString", NULL);
154   return native->ReturnAString(env, JavaParamRef<jobject>(env,
155       jcaller)).Release();
156 }
157 
158 static base::subtle::AtomicWord g_SampleForTests_javaMethod = 0;
Java_SampleForTests_javaMethod(JNIEnv * env,jobject obj,JniIntWrapper foo,JniIntWrapper bar)159 static jint Java_SampleForTests_javaMethod(JNIEnv* env, jobject obj,
160     JniIntWrapper foo,
161     JniIntWrapper bar) {
162   /* Must call RegisterNativesImpl()  */
163   CHECK_CLAZZ(env, obj,
164       SampleForTests_clazz(env), 0);
165   jmethodID method_id =
166       base::android::MethodID::LazyGet<
167       base::android::MethodID::TYPE_INSTANCE>(
168       env, SampleForTests_clazz(env),
169       "javaMethod",
170 
171 "("
172 "I"
173 "I"
174 ")"
175 "I",
176       &g_SampleForTests_javaMethod);
177 
178   jint ret =
179       env->CallIntMethod(obj,
180           method_id, as_jint(foo), as_jint(bar));
181   jni_generator::CheckException(env);
182   return ret;
183 }
184 
185 static base::subtle::AtomicWord g_SampleForTests_staticJavaMethod = 0;
Java_SampleForTests_staticJavaMethod(JNIEnv * env)186 static jboolean Java_SampleForTests_staticJavaMethod(JNIEnv* env) {
187   /* Must call RegisterNativesImpl()  */
188   CHECK_CLAZZ(env, SampleForTests_clazz(env),
189       SampleForTests_clazz(env), false);
190   jmethodID method_id =
191       base::android::MethodID::LazyGet<
192       base::android::MethodID::TYPE_STATIC>(
193       env, SampleForTests_clazz(env),
194       "staticJavaMethod",
195 
196 "("
197 ")"
198 "Z",
199       &g_SampleForTests_staticJavaMethod);
200 
201   jboolean ret =
202       env->CallStaticBooleanMethod(SampleForTests_clazz(env),
203           method_id);
204   jni_generator::CheckException(env);
205   return ret;
206 }
207 
208 static base::subtle::AtomicWord g_SampleForTests_packagePrivateJavaMethod = 0;
Java_SampleForTests_packagePrivateJavaMethod(JNIEnv * env,jobject obj)209 static void Java_SampleForTests_packagePrivateJavaMethod(JNIEnv* env, jobject
210     obj) {
211   /* Must call RegisterNativesImpl()  */
212   CHECK_CLAZZ(env, obj,
213       SampleForTests_clazz(env));
214   jmethodID method_id =
215       base::android::MethodID::LazyGet<
216       base::android::MethodID::TYPE_INSTANCE>(
217       env, SampleForTests_clazz(env),
218       "packagePrivateJavaMethod",
219 
220 "("
221 ")"
222 "V",
223       &g_SampleForTests_packagePrivateJavaMethod);
224 
225      env->CallVoidMethod(obj,
226           method_id);
227   jni_generator::CheckException(env);
228 
229 }
230 
231 static base::subtle::AtomicWord g_SampleForTests_methodThatThrowsException = 0;
Java_SampleForTests_methodThatThrowsException(JNIEnv * env,jobject obj)232 static void Java_SampleForTests_methodThatThrowsException(JNIEnv* env, jobject
233     obj) {
234   /* Must call RegisterNativesImpl()  */
235   CHECK_CLAZZ(env, obj,
236       SampleForTests_clazz(env));
237   jmethodID method_id =
238       base::android::MethodID::LazyGet<
239       base::android::MethodID::TYPE_INSTANCE>(
240       env, SampleForTests_clazz(env),
241       "methodThatThrowsException",
242 
243 "("
244 ")"
245 "V",
246       &g_SampleForTests_methodThatThrowsException);
247 
248      env->CallVoidMethod(obj,
249           method_id);
250 
251 }
252 
253 static base::subtle::AtomicWord g_InnerStructA_create = 0;
Java_InnerStructA_create(JNIEnv * env,jlong l,JniIntWrapper i,jstring s)254 static ScopedJavaLocalRef<jobject> Java_InnerStructA_create(JNIEnv* env, jlong
255     l,
256     JniIntWrapper i,
257     jstring s) {
258   /* Must call RegisterNativesImpl()  */
259   CHECK_CLAZZ(env, InnerStructA_clazz(env),
260       InnerStructA_clazz(env), NULL);
261   jmethodID method_id =
262       base::android::MethodID::LazyGet<
263       base::android::MethodID::TYPE_STATIC>(
264       env, InnerStructA_clazz(env),
265       "create",
266 
267 "("
268 "J"
269 "I"
270 "Ljava/lang/String;"
271 ")"
272 "Lorg/chromium/example/jni_generator/SampleForTests$InnerStructA;",
273       &g_InnerStructA_create);
274 
275   jobject ret =
276       env->CallStaticObjectMethod(InnerStructA_clazz(env),
277           method_id, l, as_jint(i), s);
278   jni_generator::CheckException(env);
279   return ScopedJavaLocalRef<jobject>(env, ret);
280 }
281 
282 static base::subtle::AtomicWord g_SampleForTests_addStructA = 0;
Java_SampleForTests_addStructA(JNIEnv * env,jobject obj,jobject a)283 static void Java_SampleForTests_addStructA(JNIEnv* env, jobject obj, jobject a)
284     {
285   /* Must call RegisterNativesImpl()  */
286   CHECK_CLAZZ(env, obj,
287       SampleForTests_clazz(env));
288   jmethodID method_id =
289       base::android::MethodID::LazyGet<
290       base::android::MethodID::TYPE_INSTANCE>(
291       env, SampleForTests_clazz(env),
292       "addStructA",
293 
294 "("
295 "Lorg/chromium/example/jni_generator/SampleForTests$InnerStructA;"
296 ")"
297 "V",
298       &g_SampleForTests_addStructA);
299 
300      env->CallVoidMethod(obj,
301           method_id, a);
302   jni_generator::CheckException(env);
303 
304 }
305 
306 static base::subtle::AtomicWord g_SampleForTests_iterateAndDoSomething = 0;
Java_SampleForTests_iterateAndDoSomething(JNIEnv * env,jobject obj)307 static void Java_SampleForTests_iterateAndDoSomething(JNIEnv* env, jobject obj)
308     {
309   /* Must call RegisterNativesImpl()  */
310   CHECK_CLAZZ(env, obj,
311       SampleForTests_clazz(env));
312   jmethodID method_id =
313       base::android::MethodID::LazyGet<
314       base::android::MethodID::TYPE_INSTANCE>(
315       env, SampleForTests_clazz(env),
316       "iterateAndDoSomething",
317 
318 "("
319 ")"
320 "V",
321       &g_SampleForTests_iterateAndDoSomething);
322 
323      env->CallVoidMethod(obj,
324           method_id);
325   jni_generator::CheckException(env);
326 
327 }
328 
329 static base::subtle::AtomicWord g_InnerStructB_getKey = 0;
Java_InnerStructB_getKey(JNIEnv * env,jobject obj)330 static jlong Java_InnerStructB_getKey(JNIEnv* env, jobject obj) {
331   /* Must call RegisterNativesImpl()  */
332   CHECK_CLAZZ(env, obj,
333       InnerStructB_clazz(env), 0);
334   jmethodID method_id =
335       base::android::MethodID::LazyGet<
336       base::android::MethodID::TYPE_INSTANCE>(
337       env, InnerStructB_clazz(env),
338       "getKey",
339 
340 "("
341 ")"
342 "J",
343       &g_InnerStructB_getKey);
344 
345   jlong ret =
346       env->CallLongMethod(obj,
347           method_id);
348   jni_generator::CheckException(env);
349   return ret;
350 }
351 
352 static base::subtle::AtomicWord g_InnerStructB_getValue = 0;
Java_InnerStructB_getValue(JNIEnv * env,jobject obj)353 static ScopedJavaLocalRef<jstring> Java_InnerStructB_getValue(JNIEnv* env,
354     jobject obj) {
355   /* Must call RegisterNativesImpl()  */
356   CHECK_CLAZZ(env, obj,
357       InnerStructB_clazz(env), NULL);
358   jmethodID method_id =
359       base::android::MethodID::LazyGet<
360       base::android::MethodID::TYPE_INSTANCE>(
361       env, InnerStructB_clazz(env),
362       "getValue",
363 
364 "("
365 ")"
366 "Ljava/lang/String;",
367       &g_InnerStructB_getValue);
368 
369   jstring ret =
370       static_cast<jstring>(env->CallObjectMethod(obj,
371           method_id));
372   jni_generator::CheckException(env);
373   return ScopedJavaLocalRef<jstring>(env, ret);
374 }
375 
376 // Step 3: RegisterNatives.
377 
378 static const JNINativeMethod kMethodsSampleForTests[] = {
379     { "nativeInit",
380 "("
381 "Ljava/lang/String;"
382 ")"
383 "J",
384     reinterpret_cast<void*>(Java_org_chromium_example_jni_1generator_SampleForTests_nativeInit)
385     },
386     { "nativeDestroy",
387 "("
388 "J"
389 ")"
390 "V",
391     reinterpret_cast<void*>(Java_org_chromium_example_jni_1generator_SampleForTests_nativeDestroy)
392     },
393     { "nativeGetDoubleFunction",
394 "("
395 ")"
396 "D",
397     reinterpret_cast<void*>(Java_org_chromium_example_jni_1generator_SampleForTests_nativeGetDoubleFunction)
398     },
399     { "nativeGetFloatFunction",
400 "("
401 ")"
402 "F",
403     reinterpret_cast<void*>(Java_org_chromium_example_jni_1generator_SampleForTests_nativeGetFloatFunction)
404     },
405     { "nativeSetNonPODDatatype",
406 "("
407 "Landroid/graphics/Rect;"
408 ")"
409 "V",
410     reinterpret_cast<void*>(Java_org_chromium_example_jni_1generator_SampleForTests_nativeSetNonPODDatatype)
411     },
412     { "nativeGetNonPODDatatype",
413 "("
414 ")"
415 "Ljava/lang/Object;",
416     reinterpret_cast<void*>(Java_org_chromium_example_jni_1generator_SampleForTests_nativeGetNonPODDatatype)
417     },
418     { "nativeMethod",
419 "("
420 "J"
421 ")"
422 "I",
423     reinterpret_cast<void*>(Java_org_chromium_example_jni_1generator_SampleForTests_nativeMethod)
424     },
425     { "nativeMethodOtherP0",
426 "("
427 "J"
428 ")"
429 "D",
430     reinterpret_cast<void*>(Java_org_chromium_example_jni_1generator_SampleForTests_nativeMethodOtherP0)
431     },
432     { "nativeAddStructB",
433 "("
434 "J"
435 "Lorg/chromium/example/jni_generator/SampleForTests$InnerStructB;"
436 ")"
437 "V",
438     reinterpret_cast<void*>(Java_org_chromium_example_jni_1generator_SampleForTests_nativeAddStructB)
439     },
440     { "nativeIterateAndDoSomethingWithStructB",
441 "("
442 "J"
443 ")"
444 "V",
445     reinterpret_cast<void*>(Java_org_chromium_example_jni_1generator_SampleForTests_nativeIterateAndDoSomethingWithStructB)
446     },
447     { "nativeReturnAString",
448 "("
449 "J"
450 ")"
451 "Ljava/lang/String;",
452     reinterpret_cast<void*>(Java_org_chromium_example_jni_1generator_SampleForTests_nativeReturnAString)
453     },
454 };
455 
RegisterNativesImpl(JNIEnv * env)456 static bool RegisterNativesImpl(JNIEnv* env) {
457 
458   g_InnerStructA_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
459       base::android::GetClass(env, kInnerStructAClassPath).obj()));
460   g_SampleForTests_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
461       base::android::GetClass(env, kSampleForTestsClassPath).obj()));
462   g_InnerStructB_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
463       base::android::GetClass(env, kInnerStructBClassPath).obj()));
464 
465   const int kMethodsSampleForTestsSize = arraysize(kMethodsSampleForTests);
466 
467   if (env->RegisterNatives(SampleForTests_clazz(env),
468                            kMethodsSampleForTests,
469                            kMethodsSampleForTestsSize) < 0) {
470     jni_generator::HandleRegistrationError(
471         env, SampleForTests_clazz(env), __FILE__);
472     return false;
473   }
474 
475   return true;
476 }
477 
478 }  // namespace android
479 }  // namespace base
480 
481 #endif  // org_chromium_example_jni_generator_SampleForTests_JNI
482