jni_internal.h revision ea4dca856f8c19299a1858d2cc1f35b03ca0f694
1df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers// Copyright 2011 Google Inc. All Rights Reserved.
2df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers
3df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers#ifndef ART_SRC_JNI_INTERNAL_H_
4df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers#define ART_SRC_JNI_INTERNAL_H_
5df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers
6df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers#include "jni.h"
7578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom
8578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom#include "assembler.h"
9578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom#include "macros.h"
10df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers
11df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogersnamespace art {
12df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers
13df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers// TODO: This is a place holder for a true JNIEnv used to provide limited
14df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers// functionality for the JNI compiler
15df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogersclass JniEnvironment {
16df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers public:
17df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers  explicit JniEnvironment();
18df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers
19df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers  static Offset MonitorEnterOffset() {
20df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers    return Offset(OFFSETOF_MEMBER(JniEnvironment, monitor_enter_));
21df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers  }
22df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers
23df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers  static Offset MonitorExitOffset() {
24df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers    return Offset(OFFSETOF_MEMBER(JniEnvironment, monitor_exit_));
25df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers  }
26df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers
27df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers private:
28ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  struct JNINativeInterface_* functions_;
29ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
30df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers  void (*monitor_enter_)(JniEnvironment*, jobject);
31df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers  void (*monitor_exit_)(JniEnvironment*, jobject);
322ed144c2b49ae1da6c464d7a1be0062870530802Carl Shapiro
332ed144c2b49ae1da6c464d7a1be0062870530802Carl Shapiro  DISALLOW_COPY_AND_ASSIGN(JniEnvironment);
342ed144c2b49ae1da6c464d7a1be0062870530802Carl Shapiro};
352ed144c2b49ae1da6c464d7a1be0062870530802Carl Shapiro
36ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiroclass JniNativeInterface {
372ed144c2b49ae1da6c464d7a1be0062870530802Carl Shapiro public:
38ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static struct JNINativeInterface* GetInterface() {
39ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro    return &native_interface_;
40ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  }
41ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro private:
42ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jint GetVersion(JNIEnv* env);
43ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
44ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jclass DefineClass(JNIEnv* env,
45ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                            const char* name,
46ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                            jobject loader,
47ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                            const jbyte* buf,
48ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                            jsize len);
49ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jclass FindClass(JNIEnv* env, const char* name);
50ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
51ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jmethodID FromReflectedMethod(JNIEnv* env, jobject method);
52ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jfieldID FromReflectedField(JNIEnv* env, jobject field);
53ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jobject ToReflectedMethod(JNIEnv* env,
54ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   jclass cls,
55ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   jmethodID methodID,
56ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   jboolean isStatic);
57ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
58ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jclass GetSuperclass(JNIEnv* env, jclass sub);
59ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jboolean IsAssignableFrom(JNIEnv* env, jclass sub, jclass sup);
60ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jobject ToReflectedField(JNIEnv* env,
61ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                  jclass cls,
62ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                  jfieldID fieldID,
63ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                  jboolean isStatic);
64ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
65ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jint Throw(JNIEnv* env, jthrowable obj);
66ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jint ThrowNew(JNIEnv* env, jclass clazz, const char* msg);
67ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jthrowable ExceptionOccurred(JNIEnv* env);
68ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void ExceptionDescribe(JNIEnv* env);
69ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void ExceptionClear(JNIEnv* env);
70ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void FatalError(JNIEnv* env, const char* msg);
71ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
72ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jint PushLocalFrame(JNIEnv* env, jint cap);
73ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jobject PopLocalFrame(JNIEnv* env, jobject res);
74ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
75ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jobject NewGlobalRef(JNIEnv* env, jobject lobj);
76ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void DeleteGlobalRef(JNIEnv* env, jobject gref);
77ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void DeleteLocalRef(JNIEnv* env, jobject obj);
78ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jboolean IsSameObject(JNIEnv* env, jobject obj1, jobject obj2);
79ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
80ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jobject NewLocalRef(JNIEnv* env, jobject ref);
81ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jint EnsureLocalCapacity(JNIEnv* env, jint);
82ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
83ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jobject AllocObject(JNIEnv* env, jclass clazz);
84ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jobject NewObject(JNIEnv* env, jclass clazz, jmethodID methodID, ...);
85ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jobject NewObjectV(JNIEnv* env,
86ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                            jclass clazz,
87ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                            jmethodID methodID,
88ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                            va_list args);
89ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jobject NewObjectA(JNIEnv* env,
90ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                            jclass clazz,
91ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                            jmethodID methodID,
92ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                            jvalue* args);
93ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
94ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jclass GetObjectClass(JNIEnv* env, jobject obj);
95ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jboolean IsInstanceOf(JNIEnv* env, jobject obj, jclass clazz);
96ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
97ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jmethodID GetMethodID(JNIEnv* env,
98ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                               jclass clazz,
99ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                               const char* name,
100ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                               const char* sig);
101ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
102ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jobject CallObjectMethod(JNIEnv* env,
103ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                  jobject obj,
104ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                  jmethodID methodID,
105ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                  ...);
106ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jobject CallObjectMethodV(JNIEnv* env,
107ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   jobject obj,
108ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   jmethodID methodID,
109ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   va_list args);
110ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jobject CallObjectMethodA(JNIEnv* env,
111ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   jobject obj,
112ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   jmethodID methodID,
113ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   jvalue*  args);
114ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
115ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jboolean CallBooleanMethod(JNIEnv* env,
116ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                    jobject obj,
117ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                    jmethodID methodID,
118ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                    ...);
119ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jboolean CallBooleanMethodV(JNIEnv* env,
120ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                     jobject obj,
121ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                     jmethodID methodID,
122ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                     va_list args);
123ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jboolean CallBooleanMethodA(JNIEnv* env,
124ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                     jobject obj,
125ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                     jmethodID methodID,
126ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                     jvalue*  args);
127ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
128ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jbyte CallByteMethod(JNIEnv* env,
129ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                              jobject obj,
130ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                              jmethodID methodID,
131ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                              ...);
132ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jbyte CallByteMethodV(JNIEnv* env,
133ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                               jobject obj,
134ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                               jmethodID methodID,
135ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                               va_list args);
136ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jbyte CallByteMethodA(JNIEnv* env,
137ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                               jobject obj,
138ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                               jmethodID methodID,
139ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                               jvalue* args);
140ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
141ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jchar CallCharMethod(JNIEnv* env,
142ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                              jobject obj,
143ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                              jmethodID methodID,
144ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                              ...);
145ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jchar CallCharMethodV(JNIEnv* env,
146ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                               jobject obj,
147ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                               jmethodID methodID,
148ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                               va_list args);
149ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jchar CallCharMethodA(JNIEnv* env,
150ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                               jobject obj,
151ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                               jmethodID methodID,
152ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                               jvalue* args);
153ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
154ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jshort CallShortMethod(JNIEnv* env,
155ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                jobject obj,
156ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                jmethodID methodID,
157ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                ...);
158ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jshort CallShortMethodV(JNIEnv* env,
159ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jobject obj,
160ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jmethodID methodID,
161ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 va_list args);
162ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jshort CallShortMethodA(JNIEnv* env,
163ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jobject obj,
164ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jmethodID methodID,
165ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jvalue* args);
166ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
167ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jint CallIntMethod(JNIEnv* env,
168ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                            jobject obj,
169ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                            jmethodID methodID,
170ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                            ...);
171ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jint CallIntMethodV(JNIEnv* env,
172ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                             jobject obj,
173ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                             jmethodID methodID,
174ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                             va_list args);
175ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jint CallIntMethodA(JNIEnv* env,
176ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                             jobject obj,
177ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                             jmethodID methodID,
178ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                             jvalue* args);
179ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
180ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jlong CallLongMethod(JNIEnv* env,
181ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                              jobject obj,
182ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                              jmethodID methodID,
183ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                              ...);
184ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jlong CallLongMethodV(JNIEnv* env,
185ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                               jobject obj,
186ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                               jmethodID methodID,
187ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                               va_list args);
188ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jlong CallLongMethodA(JNIEnv* env,
189ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                               jobject obj,
190ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                               jmethodID methodID,
191ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                               jvalue* args);
192ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
193ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jfloat CallFloatMethod(JNIEnv* env,
194ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                jobject obj,
195ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                jmethodID methodID,
196ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                ...);
197ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jfloat CallFloatMethodV(JNIEnv* env,
198ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jobject obj,
199ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jmethodID methodID,
200ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 va_list args);
201ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jfloat CallFloatMethodA(JNIEnv* env,
202ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jobject obj,
203ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jmethodID methodID,
204ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jvalue* args);
205ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
206ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jdouble CallDoubleMethod(JNIEnv* env,
207ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                  jobject obj,
208ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                  jmethodID methodID,
209ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                  ...);
210ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jdouble CallDoubleMethodV(JNIEnv* env,
211ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   jobject obj,
212ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   jmethodID methodID,
213ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   va_list args);
214ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jdouble CallDoubleMethodA(JNIEnv* env,
215ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   jobject obj,
216ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   jmethodID methodID,
217ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   jvalue* args);
218ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
219ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void CallVoidMethod(JNIEnv* env,
220ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                             jobject obj,
221ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                             jmethodID methodID,
222ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                             ...);
223ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void CallVoidMethodV(JNIEnv* env,
224ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                              jobject obj,
225ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                              jmethodID methodID,
226ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                              va_list args);
227ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void CallVoidMethodA(JNIEnv* env,
228ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                              jobject obj,
229ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                              jmethodID methodID,
230ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                              jvalue*  args);
231ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
232ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jobject CallNonvirtualObjectMethod(JNIEnv* env,
233ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                            jobject obj,
234ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                            jclass clazz,
235ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                            jmethodID methodID,
236ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                            ...);
237ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jobject CallNonvirtualObjectMethodV(JNIEnv* env,
238ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                             jobject obj,
239ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                             jclass clazz,
240ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                             jmethodID methodID,
241ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                             va_list args);
242ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jobject CallNonvirtualObjectMethodA(JNIEnv* env,
243ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                             jobject obj,
244ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                             jclass clazz,
245ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                             jmethodID methodID,
246ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                             jvalue*  args);
247ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
248ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jboolean CallNonvirtualBooleanMethod(JNIEnv* env,
249ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                              jobject obj,
250ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                              jclass clazz,
251ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                              jmethodID methodID,
252ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                              ...);
253ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jboolean CallNonvirtualBooleanMethodV(JNIEnv* env,
254ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                               jobject obj,
255ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                               jclass clazz,
256ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                               jmethodID methodID,
257ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                               va_list args);
258ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jboolean CallNonvirtualBooleanMethodA(JNIEnv* env,
259ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                               jobject obj,
260ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                               jclass clazz,
261ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                               jmethodID methodID,
262ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                               jvalue*  args);
263ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
264ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jbyte CallNonvirtualByteMethod(JNIEnv* env,
265ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                        jobject obj,
266ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                        jclass clazz,
267ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                        jmethodID methodID,
268ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                        ...);
269ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jbyte CallNonvirtualByteMethodV(JNIEnv* env,
270ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         jobject obj,
271ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         jclass clazz,
272ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         jmethodID methodID,
273ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         va_list args);
274ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jbyte CallNonvirtualByteMethodA(JNIEnv* env,
275ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         jobject obj,
276ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         jclass clazz,
277ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         jmethodID methodID,
278ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         jvalue* args);
279ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
280ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jchar CallNonvirtualCharMethod(JNIEnv* env,
281ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                        jobject obj,
282ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                        jclass clazz,
283ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                        jmethodID methodID,
284ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                        ...);
285ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jchar CallNonvirtualCharMethodV(JNIEnv* env,
286ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         jobject obj,
287ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         jclass clazz,
288ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         jmethodID methodID,
289ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         va_list args);
290ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jchar CallNonvirtualCharMethodA(JNIEnv* env,
291ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         jobject obj,
292ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         jclass clazz,
293ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         jmethodID methodID,
294ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         jvalue* args);
295ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
296ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jshort CallNonvirtualShortMethod(JNIEnv* env,
297ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                          jobject obj,
298ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                          jclass clazz,
299ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                          jmethodID methodID,
300ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                          ...);
301ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jshort CallNonvirtualShortMethodV(JNIEnv* env,
302ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                           jobject obj,
303ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                           jclass clazz,
304ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                           jmethodID methodID,
305ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                           va_list args);
306ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jshort CallNonvirtualShortMethodA(JNIEnv* env,
307ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                           jobject obj,
308ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                           jclass clazz,
309ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                           jmethodID methodID,
310ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                           jvalue* args);
311ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
312ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jint CallNonvirtualIntMethod(JNIEnv* env,
313ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                      jobject obj,
314ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                      jclass clazz,
315ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                      jmethodID methodID,
316ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                      ...);
317ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jint CallNonvirtualIntMethodV(JNIEnv* env,
318ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                       jobject obj,
319ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                       jclass clazz,
320ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                       jmethodID methodID,
321ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                       va_list args);
322ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jint CallNonvirtualIntMethodA(JNIEnv* env,
323ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                       jobject obj,
324ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                       jclass clazz,
325ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                       jmethodID methodID,
326ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                       jvalue* args);
327ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
328ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jlong CallNonvirtualLongMethod(JNIEnv* env,
329ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                        jobject obj,
330ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                        jclass clazz,
331ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                        jmethodID methodID,
332ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                        ...);
333ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jlong CallNonvirtualLongMethodV(JNIEnv* env,
334ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         jobject obj,
335ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         jclass clazz,
336ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         jmethodID methodID,
337ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         va_list args);
338ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jlong CallNonvirtualLongMethodA(JNIEnv* env,
339ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         jobject obj,
340ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         jclass clazz,
341ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         jmethodID methodID,
342ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         jvalue* args);
343ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
344ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jfloat CallNonvirtualFloatMethod(JNIEnv* env,
345ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                          jobject obj,
346ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                          jclass clazz,
347ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                          jmethodID methodID,
348ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                          ...);
349ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jfloat CallNonvirtualFloatMethodV(JNIEnv* env,
350ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                           jobject obj,
351ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                           jclass clazz,
352ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                           jmethodID methodID,
353ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                           va_list args);
354ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jfloat CallNonvirtualFloatMethodA(JNIEnv* env,
355ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                           jobject obj,
356ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                           jclass clazz,
357ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                           jmethodID methodID,
358ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                           jvalue* args);
359ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
360ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jdouble CallNonvirtualDoubleMethod(JNIEnv* env,
361ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                            jobject obj,
362ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                            jclass clazz,
363ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                            jmethodID methodID,
364ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                            ...);
365ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jdouble CallNonvirtualDoubleMethodV(JNIEnv* env,
366ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                             jobject obj,
367ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                             jclass clazz,
368ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                             jmethodID methodID,
369ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                             va_list args);
370ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jdouble CallNonvirtualDoubleMethodA(JNIEnv* env,
371ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                             jobject obj,
372ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                             jclass clazz,
373ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                             jmethodID methodID,
374ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                             jvalue* args);
375ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
376ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void CallNonvirtualVoidMethod(JNIEnv* env,
377ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                       jobject obj,
378ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                       jclass clazz,
379ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                       jmethodID methodID,
380ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                       ...);
381ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void CallNonvirtualVoidMethodV(JNIEnv* env,
382ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                        jobject obj,
383ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                        jclass clazz,
384ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                        jmethodID methodID,
385ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                        va_list args);
386ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void CallNonvirtualVoidMethodA(JNIEnv* env,
387ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                        jobject obj,
388ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                        jclass clazz,
389ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                        jmethodID methodID,
390ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                        jvalue*  args);
391ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
392ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jfieldID GetFieldID(JNIEnv* env,
393ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                             jclass clazz,
394ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                             const char* name,
395ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                             const char* sig);
3962ed144c2b49ae1da6c464d7a1be0062870530802Carl Shapiro
397ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jobject GetObjectField(JNIEnv* env, jobject obj, jfieldID fieldID);
398ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jboolean GetBooleanField(JNIEnv* env, jobject obj, jfieldID fieldID);
399ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jbyte GetByteField(JNIEnv* env, jobject obj, jfieldID fieldID);
400ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jchar GetCharField(JNIEnv* env, jobject obj, jfieldID fieldID);
401ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jshort GetShortField(JNIEnv* env, jobject obj, jfieldID fieldID);
402ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jint GetIntField(JNIEnv* env, jobject obj, jfieldID fieldID);
403ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jlong GetLongField(JNIEnv* env, jobject obj, jfieldID fieldID);
404ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jfloat GetFloatField(JNIEnv* env, jobject obj, jfieldID fieldID);
405ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jdouble GetDoubleField(JNIEnv* env, jobject obj, jfieldID fieldID);
4062ed144c2b49ae1da6c464d7a1be0062870530802Carl Shapiro
407ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void SetObjectField(JNIEnv* env,
408ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                             jobject obj,
409ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                             jfieldID fieldID,
410ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                             jobject val);
411ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void SetBooleanField(JNIEnv* env,
412ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                              jobject obj,
413ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                              jfieldID fieldID,
414ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                              jboolean val);
415ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void SetByteField(JNIEnv* env,
416ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                           jobject obj,
417ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                           jfieldID fieldID,
418ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                           jbyte val);
419ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void SetCharField(JNIEnv* env,
420ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                           jobject obj,
421ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                           jfieldID fieldID,
422ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                           jchar val);
423ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void SetShortField(JNIEnv* env,
424ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                            jobject obj,
425ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                            jfieldID fieldID,
426ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                            jshort val);
427ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void SetIntField(JNIEnv* env, jobject obj, jfieldID fieldID, jint val);
428ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void SetLongField(JNIEnv* env,
429ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                           jobject obj,
430ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                           jfieldID fieldID,
431ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                           jlong val);
432ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void SetFloatField(JNIEnv* env,
433ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                            jobject obj,
434ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                            jfieldID fieldID,
435ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                            jfloat val);
436ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void SetDoubleField(JNIEnv* env,
437ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                             jobject obj,
438ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                             jfieldID fieldID,
439ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                             jdouble val);
4402ed144c2b49ae1da6c464d7a1be0062870530802Carl Shapiro
441ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jmethodID GetStaticMethodID(JNIEnv* env,
442ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                     jclass clazz,
443ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                     const char* name,
444ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                     const char* sig);
4452ed144c2b49ae1da6c464d7a1be0062870530802Carl Shapiro
446ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jobject CallStaticObjectMethod(JNIEnv* env,
447ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                        jclass clazz,
448ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                        jmethodID methodID,
449ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                        ...);
450ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jobject CallStaticObjectMethodV(JNIEnv* env,
451ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         jclass clazz,
452ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         jmethodID methodID,
453ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         va_list args);
454ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jobject CallStaticObjectMethodA(JNIEnv* env,
455ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         jclass clazz,
456ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         jmethodID methodID,
457ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         jvalue* args);
4582ed144c2b49ae1da6c464d7a1be0062870530802Carl Shapiro
459ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jboolean CallStaticBooleanMethod(JNIEnv* env,
460ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                          jclass clazz,
461ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                          jmethodID methodID,
462ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                          ...);
463ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jboolean CallStaticBooleanMethodV(JNIEnv* env,
464ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                           jclass clazz,
465ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                           jmethodID methodID,
466ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                           va_list args);
467ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jboolean CallStaticBooleanMethodA(JNIEnv* env,
468ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                           jclass clazz,
469ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                           jmethodID methodID,
470ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                           jvalue* args);
471ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
472ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jbyte CallStaticByteMethod(JNIEnv* env,
473ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                    jclass clazz,
474ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                    jmethodID methodID,
475ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                    ...);
476ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jbyte CallStaticByteMethodV(JNIEnv* env,
477ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                     jclass clazz,
478ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                     jmethodID methodID,
479ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                     va_list args);
480ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jbyte CallStaticByteMethodA(JNIEnv* env,
481ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                     jclass clazz,
482ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                     jmethodID methodID,
483ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                     jvalue* args);
484ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
485ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jchar CallStaticCharMethod(JNIEnv* env,
486ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                    jclass clazz,
487ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                    jmethodID methodID,
488ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                    ...);
489ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jchar CallStaticCharMethodV(JNIEnv* env,
490ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                     jclass clazz,
491ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                     jmethodID methodID,
492ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                     va_list args);
493ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jchar CallStaticCharMethodA(JNIEnv* env,
494ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                     jclass clazz,
495ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                     jmethodID methodID,
496ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                     jvalue* args);
497ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
498ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jshort CallStaticShortMethod(JNIEnv* env,
499ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                      jclass clazz,
500ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                      jmethodID methodID,
501ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                      ...);
502ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jshort CallStaticShortMethodV(JNIEnv* env,
503ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                       jclass clazz,
504ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                       jmethodID methodID,
505ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                       va_list args);
506ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jshort CallStaticShortMethodA(JNIEnv* env,
507ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                       jclass clazz,
508ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                       jmethodID methodID,
509ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                       jvalue* args);
510ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
511ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jint CallStaticIntMethod(JNIEnv* env,
512ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                  jclass clazz,
513ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                  jmethodID methodID,
514ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                  ...);
515ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jint CallStaticIntMethodV(JNIEnv* env,
516ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   jclass clazz,
517ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   jmethodID methodID,
518ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   va_list args);
519ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jint CallStaticIntMethodA(JNIEnv* env,
520ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   jclass clazz,
521ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   jmethodID methodID,
522ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   jvalue* args);
523ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
524ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jlong CallStaticLongMethod(JNIEnv* env,
525ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                    jclass clazz,
526ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                    jmethodID methodID,
527ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                    ...);
528ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jlong CallStaticLongMethodV(JNIEnv* env,
529ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                     jclass clazz,
530ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                     jmethodID methodID,
531ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                     va_list args);
532ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jlong CallStaticLongMethodA(JNIEnv* env,
533ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                     jclass clazz,
534ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                     jmethodID methodID,
535ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                     jvalue* args);
536ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
537ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jfloat CallStaticFloatMethod(JNIEnv* env,
538ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                      jclass clazz,
539ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                      jmethodID methodID,
540ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                      ...);
541ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jfloat CallStaticFloatMethodV(JNIEnv* env,
542ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                       jclass clazz,
543ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                       jmethodID methodID,
544ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                       va_list args);
545ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jfloat CallStaticFloatMethodA(JNIEnv* env,
546ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                       jclass clazz,
547ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                       jmethodID methodID,
548ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                       jvalue* args);
549ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
550ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jdouble CallStaticDoubleMethod(JNIEnv* env,
551ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                        jclass clazz,
552ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                        jmethodID methodID,
553ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                        ...);
554ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jdouble CallStaticDoubleMethodV(JNIEnv* env,
555ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         jclass clazz,
556ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         jmethodID methodID,
557ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         va_list args);
558ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jdouble CallStaticDoubleMethodA(JNIEnv* env,
559ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         jclass clazz,
560ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         jmethodID methodID,
561ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         jvalue* args);
562ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
563ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void CallStaticVoidMethod(JNIEnv* env,
564ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   jclass cls,
565ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   jmethodID methodID,
566ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   ...);
567ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void CallStaticVoidMethodV(JNIEnv* env,
568ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                    jclass cls,
569ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                    jmethodID methodID,
570ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                    va_list args);
571ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void CallStaticVoidMethodA(JNIEnv* env,
572ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                    jclass cls,
573ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                    jmethodID methodID,
574ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                    jvalue*  args);
575ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
576ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jfieldID GetStaticFieldID(JNIEnv* env,
577ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   jclass clazz,
578ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   const char* name,
579ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   const char* sig);
580ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jobject GetStaticObjectField(JNIEnv* env,
581ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                      jclass clazz,
582ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                      jfieldID fieldID);
583ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jboolean GetStaticBooleanField(JNIEnv* env,
584ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                        jclass clazz,
585ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                        jfieldID fieldID);
586ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jbyte GetStaticByteField(JNIEnv* env, jclass clazz, jfieldID fieldID);
587ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jchar GetStaticCharField(JNIEnv* env, jclass clazz, jfieldID fieldID);
588ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jshort GetStaticShortField(JNIEnv* env,
589ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                    jclass clazz,
590ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                    jfieldID fieldID);
591ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jint GetStaticIntField(JNIEnv* env, jclass clazz, jfieldID fieldID);
592ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jlong GetStaticLongField(JNIEnv* env, jclass clazz, jfieldID fieldID);
593ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jfloat GetStaticFloatField(JNIEnv* env,
594ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                    jclass clazz,
595ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                    jfieldID fieldID);
596ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jdouble GetStaticDoubleField(JNIEnv* env,
597ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                      jclass clazz,
598ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                      jfieldID fieldID);
599ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
600ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void SetStaticObjectField(JNIEnv* env,
601ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   jclass clazz,
602ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   jfieldID fieldID,
603ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   jobject value);
604ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void SetStaticBooleanField(JNIEnv* env,
605ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                    jclass clazz,
606ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                    jfieldID fieldID,
607ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                    jboolean value);
608ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void SetStaticByteField(JNIEnv* env,
609ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jclass clazz,
610ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jfieldID fieldID,
611ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jbyte value);
612ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void SetStaticCharField(JNIEnv* env,
613ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jclass clazz,
614ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jfieldID fieldID,
615ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jchar value);
616ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void SetStaticShortField(JNIEnv* env,
617ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                  jclass clazz,
618ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                  jfieldID fieldID,
619ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                  jshort value);
620ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void SetStaticIntField(JNIEnv* env,
621ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                jclass clazz,
622ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                jfieldID fieldID,
623ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                jint value);
624ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void SetStaticLongField(JNIEnv* env,
625ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jclass clazz,
626ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jfieldID fieldID,
627ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jlong value);
628ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void SetStaticFloatField(JNIEnv* env,
629ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                  jclass clazz,
630ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                  jfieldID fieldID,
631ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                  jfloat value);
632ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void SetStaticDoubleField(JNIEnv* env,
633ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   jclass clazz,
634ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   jfieldID fieldID,
635ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   jdouble value);
636ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
637ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jstring NewString(JNIEnv* env, const jchar* unicode, jsize len);
638ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jsize GetStringLength(JNIEnv* env, jstring str);
639ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static const jchar* GetStringChars(JNIEnv* env,
640ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                     jstring str,
641ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                     jboolean* isCopy);
642ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void ReleaseStringChars(JNIEnv* env, jstring str, const jchar* chars);
643ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jstring NewStringUTF(JNIEnv* env, const char* utf);
644ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jsize GetStringUTFLength(JNIEnv* env, jstring str);
645ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static const char* GetStringUTFChars(JNIEnv* env,
646ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                       jstring str,
647ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                       jboolean* isCopy);
648ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void ReleaseStringUTFChars(JNIEnv* env,
649ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                    jstring str,
650ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                    const char* chars);
651ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
652ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jsize GetArrayLength(JNIEnv* env, jarray array);
653ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
654ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jobjectArray NewObjectArray(JNIEnv* env,
655ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                     jsize len,
656ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                     jclass clazz,
657ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                     jobject init);
658ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jobject GetObjectArrayElement(JNIEnv* env,
659ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                       jobjectArray array,
660ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                       jsize index);
661ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void SetObjectArrayElement(JNIEnv* env,
662ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                    jobjectArray array,
663ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                    jsize index,
664ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                    jobject val);
665ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
666ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jbooleanArray NewBooleanArray(JNIEnv* env, jsize len);
667ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jbyteArray NewByteArray(JNIEnv* env, jsize len);
668ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jcharArray NewCharArray(JNIEnv* env, jsize len);
669ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jshortArray NewShortArray(JNIEnv* env, jsize len);
670ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jintArray NewIntArray(JNIEnv* env, jsize len);
671ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jlongArray NewLongArray(JNIEnv* env, jsize len);
672ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jfloatArray NewFloatArray(JNIEnv* env, jsize len);
673ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jdoubleArray NewDoubleArray(JNIEnv* env, jsize len);
674ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
675ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jboolean*  GetBooleanArrayElements(JNIEnv* env,
676ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                            jbooleanArray array,
677ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                            jboolean* isCopy);
678ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jbyte*  GetByteArrayElements(JNIEnv* env,
679ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                      jbyteArray array,
680ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                      jboolean* isCopy);
681ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jchar*  GetCharArrayElements(JNIEnv* env,
682ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                      jcharArray array,
683ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                      jboolean* isCopy);
684ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jshort*  GetShortArrayElements(JNIEnv* env,
685ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                        jshortArray array,
686ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                        jboolean* isCopy);
687ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jint*  GetIntArrayElements(JNIEnv* env,
688ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                    jintArray array,
689ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                    jboolean* isCopy);
690ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jlong*  GetLongArrayElements(JNIEnv* env,
691ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                      jlongArray array,
692ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                      jboolean* isCopy);
693ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jfloat*  GetFloatArrayElements(JNIEnv* env,
694ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                        jfloatArray array,
695ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                        jboolean* isCopy);
696ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jdouble*  GetDoubleArrayElements(JNIEnv* env,
697ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                          jdoubleArray array,
698ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                          jboolean* isCopy);
699ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
700ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void ReleaseBooleanArrayElements(JNIEnv* env,
701ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                          jbooleanArray array,
702ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                          jboolean* elems,
703ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                          jint mode);
704ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void ReleaseByteArrayElements(JNIEnv* env,
705ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                       jbyteArray array,
706ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                       jbyte* elems,
707ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                       jint mode);
708ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void ReleaseCharArrayElements(JNIEnv* env,
709ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                       jcharArray array,
710ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                       jchar* elems,
711ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                       jint mode);
712ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void ReleaseShortArrayElements(JNIEnv* env,
713ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                        jshortArray array,
714ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                        jshort* elems,
715ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                        jint mode);
716ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void ReleaseIntArrayElements(JNIEnv* env,
717ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                      jintArray array,
718ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                      jint* elems,
719ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                      jint mode);
720ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void ReleaseLongArrayElements(JNIEnv* env,
721ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                       jlongArray array,
722ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                       jlong* elems,
723ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                       jint mode);
724ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void ReleaseFloatArrayElements(JNIEnv* env,
725ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                        jfloatArray array,
726ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                        jfloat* elems,
727ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                        jint mode);
728ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void ReleaseDoubleArrayElements(JNIEnv* env,
729ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         jdoubleArray array,
730ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         jdouble* elems,
731ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         jint mode);
732ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
733ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void GetBooleanArrayRegion(JNIEnv* env,
734ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                    jbooleanArray array,
735ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                    jsize start,
736ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                    jsize l,
737ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                    jboolean* buf);
738ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void GetByteArrayRegion(JNIEnv* env,
739ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jbyteArray array,
740ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jsize start,
741ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jsize len,
742ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jbyte* buf);
743ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void GetCharArrayRegion(JNIEnv* env,
744ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jcharArray array,
745ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jsize start,
746ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jsize len,
747ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jchar* buf);
748ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void GetShortArrayRegion(JNIEnv* env,
749ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                  jshortArray array,
750ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                  jsize start,
751ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                  jsize len,
752ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                  jshort* buf);
753ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void GetIntArrayRegion(JNIEnv* env,
754ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                jintArray array,
755ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                jsize start,
756ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                jsize len,
757ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                jint* buf);
758ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void GetLongArrayRegion(JNIEnv* env,
759ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jlongArray array,
760ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jsize start,
761ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jsize len,
762ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jlong* buf);
763ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void GetFloatArrayRegion(JNIEnv* env,
764ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                  jfloatArray array,
765ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                  jsize start,
766ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                  jsize len,
767ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                  jfloat* buf);
768ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void GetDoubleArrayRegion(JNIEnv* env,
769ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   jdoubleArray array,
770ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   jsize start,
771ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   jsize len,
772ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   jdouble* buf);
773ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
774ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void SetBooleanArrayRegion(JNIEnv* env,
775ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                    jbooleanArray array,
776ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                    jsize start,
777ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                    jsize l,
778ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                    const jboolean* buf);
779ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void SetByteArrayRegion(JNIEnv* env,
780ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jbyteArray array,
781ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jsize start,
782ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jsize len,
783ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 const jbyte* buf);
784ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void SetCharArrayRegion(JNIEnv* env,
785ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jcharArray array,
786ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jsize start,
787ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jsize len,
788ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 const jchar* buf);
789ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void SetShortArrayRegion(JNIEnv* env,
790ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                  jshortArray array,
791ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                  jsize start,
792ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                  jsize len,
793ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                  const jshort* buf);
794ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void SetIntArrayRegion(JNIEnv* env,
795ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                jintArray array,
796ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                jsize start,
797ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                jsize len,
798ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                const jint* buf);
799ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void SetLongArrayRegion(JNIEnv* env,
800ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jlongArray array,
801ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jsize start,
802ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jsize len,
803ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 const jlong* buf);
804ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void SetFloatArrayRegion(JNIEnv* env,
805ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                  jfloatArray array,
806ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                  jsize start,
807ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                  jsize len,
808ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                  const jfloat* buf);
809ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void SetDoubleArrayRegion(JNIEnv* env,
810ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   jdoubleArray array,
811ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   jsize start,
812ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   jsize len,
813ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                   const jdouble* buf);
814ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
815ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jint RegisterNatives(JNIEnv* env,
816ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                              jclass clazz,
817ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                              const JNINativeMethod* methods,
818ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                              jint nMethods);
819ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jint UnregisterNatives(JNIEnv* env, jclass clazz);
820ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
821ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jint MonitorEnter(JNIEnv* env, jobject obj);
822ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jint MonitorExit(JNIEnv* env, jobject obj);
823ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
824ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jint GetJavaVM(JNIEnv* env, JavaVM* *vm);
825ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
826ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void GetStringRegion(JNIEnv* env,
827ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                              jstring str,
828ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                              jsize start,
829ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                              jsize len,
830ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                              jchar* buf);
831ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void GetStringUTFRegion(JNIEnv* env,
832ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jstring str,
833ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jsize start,
834ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 jsize len,
835ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                 char* buf);
836ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
837ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void* GetPrimitiveArrayCritical(JNIEnv* env,
838ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         jarray array,
839ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                         jboolean* isCopy);
840ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void ReleasePrimitiveArrayCritical(JNIEnv* env,
841ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                            jarray array,
842ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                            void* carray,
843ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                            jint mode);
844ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
845ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static const jchar* GetStringCritical(JNIEnv* env,
846ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                        jstring s,
847ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                        jboolean* isCopy);
848ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void ReleaseStringCritical(JNIEnv* env, jstring s, const jchar* cstr);
849ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
850ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jweak NewWeakGlobalRef(JNIEnv* env, jobject obj);
851ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void DeleteWeakGlobalRef(JNIEnv* env, jweak obj);
852ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
853ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jboolean ExceptionCheck(JNIEnv* env);
854ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
855ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jobject NewDirectByteBuffer(JNIEnv* env,
856ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                     void* address,
857ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                     jlong capacity);
858ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static void* GetDirectBufferAddress(JNIEnv* env, jobject buf);
859ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jlong GetDirectBufferCapacity(JNIEnv* env, jobject buf);
860ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
861ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jobjectRefType GetObjectRefType(JNIEnv* env, jobject obj);
862ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
863ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static struct JNINativeInterface native_interface_;
864ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  DISALLOW_IMPLICIT_CONSTRUCTORS(JniNativeInterface);
865ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro};
866ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
867ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiroclass JniInvokeInterface {
868ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro public:
869ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static struct JNIInvokeInterface* GetInterface() {
870ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro    return &invoke_interface_;
871ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  }
8722ed144c2b49ae1da6c464d7a1be0062870530802Carl Shapiro private:
873ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jint DestroyJavaVM(JavaVM* vm);
874ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jint AttachCurrentThread(JavaVM* vm, JNIEnv** penv, void* thr_args);
875ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jint DetachCurrentThread(JavaVM* vm);
876ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jint GetEnv(JavaVM* vm, void** penv, int version);
877ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static jint AttachCurrentThreadAsDaemon(JavaVM* vm,
878ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                          JNIEnv** penv,
879ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro                                          void* thr_args);
880ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  static struct JNIInvokeInterface invoke_interface_;
881ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro  DISALLOW_IMPLICIT_CONSTRUCTORS(JniInvokeInterface);
882df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers};
883df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers
884df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers}  // namespace art
885ea4dca856f8c19299a1858d2cc1f35b03ca0f694Carl Shapiro
886df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers#endif  // ART_SRC_JNI_INTERNAL_H_
887