• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef PANDA_RUNTIME_INTEROP_ETS_NAPI_H
17 #define PANDA_RUNTIME_INTEROP_ETS_NAPI_H
18 
19 // NOLINTBEGIN(modernize-use-using, readability-identifier-naming, cppcoreguidelines-pro-type-vararg)
20 
21 #ifdef __cplusplus
22 #include <cstdint>
23 #include <cstdarg>
24 #else
25 #include <stdint.h>
26 #include <stdarg.h>
27 #endif
28 
29 // NOLINTBEGIN(cppcoreguidelines-macro-usage)
30 
31 // Version Constants
32 #define ETS_NAPI_VERSION_1_0 0x00010000
33 
34 // General return value constants
35 #define ETS_OK 0            // success
36 #define ETS_ERR (-1)        // unknown error
37 #define ETS_ERR_VER (-2)    // ETS version error
38 #define ETS_ERR_NOMEM (-3)  // not enough memory
39 #define ETS_ERR_EXIST (-4)  // VM already created
40 #define ETS_ERR_INVAL (-5)  // invalid arguments
41 
42 // Boolean Constants
43 #define ETS_FALSE 0
44 #define ETS_TRUE 1
45 
46 // Mode Constants
47 #define ETS_COMMIT 1
48 #define ETS_ABORT 2
49 
50 // NOLINTEND(cppcoreguidelines-macro-usage)
51 
52 // Primitive Types
53 typedef uint8_t ets_boolean;
54 typedef int8_t ets_byte;
55 typedef uint16_t ets_char;
56 typedef int16_t ets_short;
57 typedef int32_t ets_int;
58 typedef int64_t ets_long;
59 typedef float ets_float;
60 typedef double ets_double;
61 typedef ets_int ets_size;
62 
63 // Reference Types
64 #ifdef __cplusplus
65 class __ets_object {};
66 class __ets_void : public __ets_object {};
67 class __ets_class : public __ets_object {};
68 class __ets_string : public __ets_object {};
69 class __ets_array : public __ets_object {};
70 class __ets_objectArray : public __ets_array {};
71 class __ets_booleanArray : public __ets_array {};
72 class __ets_byteArray : public __ets_array {};
73 class __ets_charArray : public __ets_array {};
74 class __ets_shortArray : public __ets_array {};
75 class __ets_intArray : public __ets_array {};
76 class __ets_longArray : public __ets_array {};
77 class __ets_floatArray : public __ets_array {};
78 class __ets_doubleArray : public __ets_array {};
79 class __ets_error : public __ets_object {};
80 
81 typedef __ets_object *ets_object;
82 typedef __ets_void *ets_void;
83 typedef __ets_class *ets_class;
84 typedef __ets_string *ets_string;
85 typedef __ets_array *ets_array;
86 typedef __ets_objectArray *ets_objectArray;
87 typedef __ets_booleanArray *ets_booleanArray;
88 typedef __ets_byteArray *ets_byteArray;
89 typedef __ets_charArray *ets_charArray;
90 typedef __ets_shortArray *ets_shortArray;
91 typedef __ets_intArray *ets_intArray;
92 typedef __ets_longArray *ets_longArray;
93 typedef __ets_floatArray *ets_floatArray;
94 typedef __ets_doubleArray *ets_doubleArray;
95 typedef __ets_error *ets_error;
96 typedef __ets_object *ets_weak;
97 
98 #else   // __cplusplus
99 
100 struct __ets_object;
101 typedef struct __ets_object *ets_object;
102 typedef ets_object ets_class;
103 typedef ets_object ets_string;
104 typedef ets_object ets_error;
105 typedef ets_object ets_weak;
106 typedef ets_object ets_array;
107 typedef ets_array ets_objectArray;
108 typedef ets_array ets_booleanArray;
109 typedef ets_array ets_byteArray;
110 typedef ets_array ets_charArray;
111 typedef ets_array ets_shortArray;
112 typedef ets_array ets_intArray;
113 typedef ets_array ets_longArray;
114 typedef ets_array ets_floatArray;
115 typedef ets_array ets_doubleArray;
116 #endif  // __cplusplus
117 
118 struct __ets_deferred;
119 typedef struct __ets_deferred *ets_deferred;
120 
121 // Field and Method IDs
122 struct __ets_method;
123 struct __ets_field;
124 typedef struct __ets_method *ets_method;
125 typedef struct __ets_field *ets_field;
126 
127 // The Value Type
128 typedef union ets_value {
129     ets_boolean z;
130     ets_byte b;
131     ets_char c;
132     ets_short s;
133     ets_int i;
134     ets_long j;
135     ets_float f;
136     ets_double d;
137     ets_object l;
138 } ets_value;
139 
140 // Describe native method by name, signature and function pointer
141 typedef struct {
142     const char *name;
143     const char *signature;
144     void *func;
145 } EtsNativeMethod;
146 
147 // The object reference types
148 typedef enum {
149     ETS_INVALID_REF_TYPE = 0,
150     ETS_LOCAL_REF_TYPE = 1,
151     ETS_GLOBAL_REF_TYPE = 2,
152     ETS_WEAK_GLOBAL_REF_TYPE = 3
153 } ets_objectRefType;
154 
155 #ifdef __cplusplus
156 typedef struct __EtsVM EtsVM;
157 typedef struct __EtsEnv ets_env;
158 #else
159 typedef const struct ETS_InvokeInterface *EtsVM;
160 typedef const struct ETS_NativeInterface *ets_env;
161 #endif
162 
163 // Deprecated types:
164 typedef ets_env EtsEnv;
165 
166 typedef enum {
167     ETS_OKAY,
168     ETS_INVALID_ARG,
169     ETS_GENERIC_FAILURE,
170     ETS_PENDING_EXCEPTION,
171     ETS_INVALID_VERSION,  // NOTE(v.cherkashin): This status code doesn't match to napi interface.
172                           //                     Should we probably delete this status code?
173 } ets_status;
174 
175 // clang-format off
176 // Interface Function Table
177 struct ETS_NativeInterface {
178     // NOTE(a.urakov): solve the "Array" naming problem
179     ets_int (*GetVersion)(EtsEnv *env);
180 #ifdef ETS_NAPI_DESIGN_FINISHED
181     ets_class (*DefineClass)(EtsEnv *env, const char *name, ets_object loader, const ets_byte *buf, ets_size bufLen);
182 #endif
183     ets_class (*FindClass)(EtsEnv *env, const char *name);
184 #ifdef ETS_NAPI_DESIGN_FINISHED
185     ets_method (*FromReflectedMethod)(EtsEnv *env, ets_object method);
186     ets_field (*FromReflectedField)(EtsEnv *env, ets_object field);
187     ets_object (*ToReflectedMethod)(EtsEnv *env, ets_class cls, ets_method p_method, ets_boolean isStatic);
188 #endif
189     ets_class (*GetSuperclass)(EtsEnv *env, ets_class cls);
190     ets_boolean (*IsAssignableFrom)(EtsEnv *env, ets_class cls1, ets_class cls2);
191 #ifdef ETS_NAPI_DESIGN_FINISHED
192     ets_object (*ToReflectedField)(EtsEnv *env, ets_class cls, ets_field p_field, ets_boolean isStatic);
193 #endif
194     ets_int (*ThrowError)(EtsEnv *env, ets_error obj);
195     ets_int (*ThrowErrorNew)(EtsEnv *env, ets_class cls, const char *message);
196     ets_error (*ErrorOccurred)(EtsEnv *env);
197     void (*ErrorDescribe)(EtsEnv *env);
198     void (*ErrorClear)(EtsEnv *env);
199     void (*FatalError)(EtsEnv *env, const char *message);
200     ets_int (*PushLocalFrame)(EtsEnv *env, ets_int capacity);
201     ets_object (*PopLocalFrame)(EtsEnv *env, ets_object result);
202     ets_object (*NewGlobalRef)(EtsEnv *env, ets_object obj);
203     void (*DeleteGlobalRef)(EtsEnv *env, ets_object globalRef);
204     void (*DeleteLocalRef)(EtsEnv *env, ets_object localRef);
205     ets_boolean (*IsSameObject)(EtsEnv *env, ets_object ref1, ets_object ref2);
206     ets_object (*NewLocalRef)(EtsEnv *env, ets_object ref);
207     ets_int (*EnsureLocalCapacity)(EtsEnv *env, ets_int capacity);
208     ets_object (*AllocObject)(EtsEnv *env, ets_class cls);
209     ets_object (*NewObject)(EtsEnv *env, ets_class cls, ets_method p_method, ...);
210     ets_object (*NewObjectList)(EtsEnv *env, ets_class cls, ets_method p_method, va_list args);
211     ets_object (*NewObjectArray)(EtsEnv *env, ets_class cls, ets_method p_method, const ets_value *args);
212     ets_class (*GetObjectClass)(EtsEnv *env, ets_object obj);
213     ets_boolean (*IsInstanceOf)(EtsEnv *env, ets_object obj, ets_class cls);
214     ets_method (*Getp_method)(EtsEnv *env, ets_class cls, const char *name, const char *sig);
215     ets_object (*CallObjectMethod)(EtsEnv *env, ets_object obj, ets_method p_method, ...);
216     ets_object (*CallObjectMethodList)(EtsEnv *env, ets_object obj, ets_method p_method, va_list args);
217     ets_object (*CallObjectMethodArray)(EtsEnv *env, ets_object obj, ets_method p_method, const ets_value *args);
218     ets_boolean (*CallBooleanMethod)(EtsEnv *env, ets_object obj, ets_method p_method, ...);
219     ets_boolean (*CallBooleanMethodList)(EtsEnv *env, ets_object obj, ets_method p_method, va_list args);
220     ets_boolean (*CallBooleanMethodArray)(EtsEnv *env, ets_object obj, ets_method p_method, const ets_value *args);
221     ets_byte (*CallByteMethod)(EtsEnv *env, ets_object obj, ets_method p_method, ...);
222     ets_byte (*CallByteMethodList)(EtsEnv *env, ets_object obj, ets_method p_method, va_list args);
223     ets_byte (*CallByteMethodArray)(EtsEnv *env, ets_object obj, ets_method p_method, const ets_value *args);
224     ets_char (*CallCharMethod)(EtsEnv *env, ets_object obj, ets_method p_method, ...);
225     ets_char (*CallCharMethodList)(EtsEnv *env, ets_object obj, ets_method p_method, va_list args);
226     ets_char (*CallCharMethodArray)(EtsEnv *env, ets_object obj, ets_method p_method, const ets_value *args);
227     ets_short (*CallShortMethod)(EtsEnv *env, ets_object obj, ets_method p_method, ...);
228     ets_short (*CallShortMethodList)(EtsEnv *env, ets_object obj, ets_method p_method, va_list args);
229     ets_short (*CallShortMethodArray)(EtsEnv *env, ets_object obj, ets_method p_method, const ets_value *args);
230     ets_int (*CallIntMethod)(EtsEnv *env, ets_object obj, ets_method p_method, ...);
231     ets_int (*CallIntMethodList)(EtsEnv *env, ets_object obj, ets_method p_method, va_list args);
232     ets_int (*CallIntMethodArray)(EtsEnv *env, ets_object obj, ets_method p_method, const ets_value *args);
233     ets_long (*CallLongMethod)(EtsEnv *env, ets_object obj, ets_method p_method, ...);
234     ets_long (*CallLongMethodList)(EtsEnv *env, ets_object obj, ets_method p_method, va_list args);
235     ets_long (*CallLongMethodArray)(EtsEnv *env, ets_object obj, ets_method p_method, const ets_value *args);
236     ets_float (*CallFloatMethod)(EtsEnv *env, ets_object obj, ets_method p_method, ...);
237     ets_float (*CallFloatMethodList)(EtsEnv *env, ets_object obj, ets_method p_method, va_list args);
238     ets_float (*CallFloatMethodArray)(EtsEnv *env, ets_object obj, ets_method p_method, const ets_value *args);
239     ets_double (*CallDoubleMethod)(EtsEnv *env, ets_object obj, ets_method p_method, ...);
240     ets_double (*CallDoubleMethodList)(EtsEnv *env, ets_object obj, ets_method p_method, va_list args);
241     ets_double (*CallDoubleMethodArray)(EtsEnv *env, ets_object obj, ets_method p_method, const ets_value *args);
242     void (*CallVoidMethod)(EtsEnv *env, ets_object obj, ets_method p_method, ...);
243     void (*CallVoidMethodList)(EtsEnv *env, ets_object obj, ets_method p_method, va_list args);
244     void (*CallVoidMethodArray)(EtsEnv *env, ets_object obj, ets_method p_method, const ets_value *args);
245 
246     ets_object (*CallNonvirtualObjectMethod)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method, ...);
247     ets_object (*CallNonvirtualObjectMethodList)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
248                                                  va_list args);
249     ets_object (*CallNonvirtualObjectMethodArray)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
250                                                   const ets_value *args);
251     ets_boolean (*CallNonvirtualBooleanMethod)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method, ...);
252     ets_boolean (*CallNonvirtualBooleanMethodList)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
253                                                    va_list args);
254     ets_boolean (*CallNonvirtualBooleanMethodArray)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
255                                                     const ets_value *args);
256     ets_byte (*CallNonvirtualByteMethod)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method, ...);
257     ets_byte (*CallNonvirtualByteMethodList)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
258                                              va_list args);
259     ets_byte (*CallNonvirtualByteMethodArray)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
260                                               const ets_value *args);
261     ets_char (*CallNonvirtualCharMethod)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method, ...);
262     ets_char (*CallNonvirtualCharMethodList)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
263                                              va_list args);
264     ets_char (*CallNonvirtualCharMethodArray)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
265                                               const ets_value *args);
266     ets_short (*CallNonvirtualShortMethod)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method, ...);
267     ets_short (*CallNonvirtualShortMethodList)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
268                                                va_list args);
269     ets_short (*CallNonvirtualShortMethodArray)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
270                                                 const ets_value *args);
271     ets_int (*CallNonvirtualIntMethod)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method, ...);
272     ets_int (*CallNonvirtualIntMethodList)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
273                                            va_list args);
274     ets_int (*CallNonvirtualIntMethodArray)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
275                                             const ets_value *args);
276     ets_long (*CallNonvirtualLongMethod)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method, ...);
277     ets_long (*CallNonvirtualLongMethodList)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
278                                              va_list args);
279     ets_long (*CallNonvirtualLongMethodArray)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
280                                               const ets_value *args);
281     ets_float (*CallNonvirtualFloatMethod)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method, ...);
282     ets_float (*CallNonvirtualFloatMethodList)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
283                                                va_list args);
284     ets_float (*CallNonvirtualFloatMethodArray)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
285                                                 const ets_value *args);
286     ets_double (*CallNonvirtualDoubleMethod)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method, ...);
287     ets_double (*CallNonvirtualDoubleMethodList)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
288                                                  va_list args);
289     ets_double (*CallNonvirtualDoubleMethodArray)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
290                                                   const ets_value *args);
291     void (*CallNonvirtualVoidMethod)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method, ...);
292     void (*CallNonvirtualVoidMethodList)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method, va_list args);
293     void (*CallNonvirtualVoidMethodArray)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
294                                           const ets_value *args);
295     ets_field (*Getp_field)(EtsEnv *env, ets_class cls, const char *name, const char *sig);
296     ets_object (*GetObjectField)(EtsEnv *env, ets_object obj, ets_field p_field);
297     ets_boolean (*GetBooleanField)(EtsEnv *env, ets_object obj, ets_field p_field);
298     ets_byte (*GetByteField)(EtsEnv *env, ets_object obj, ets_field p_field);
299     ets_char (*GetCharField)(EtsEnv *env, ets_object obj, ets_field p_field);
300     ets_short (*GetShortField)(EtsEnv *env, ets_object obj, ets_field p_field);
301     ets_int (*GetIntField)(EtsEnv *env, ets_object obj, ets_field p_field);
302     ets_long (*GetLongField)(EtsEnv *env, ets_object obj, ets_field p_field);
303     ets_float (*GetFloatField)(EtsEnv *env, ets_object obj, ets_field p_field);
304     ets_double (*GetDoubleField)(EtsEnv *env, ets_object obj, ets_field p_field);
305     void (*SetObjectField)(EtsEnv *env, ets_object obj, ets_field p_field, ets_object value);
306     void (*SetBooleanField)(EtsEnv *env, ets_object obj, ets_field p_field, ets_boolean value);
307     void (*SetByteField)(EtsEnv *env, ets_object obj, ets_field p_field, ets_byte value);
308     void (*SetCharField)(EtsEnv *env, ets_object obj, ets_field p_field, ets_char value);
309     void (*SetShortField)(EtsEnv *env, ets_object obj, ets_field p_field, ets_short value);
310     void (*SetIntField)(EtsEnv *env, ets_object obj, ets_field p_field, ets_int value);
311     void (*SetLongField)(EtsEnv *env, ets_object obj, ets_field p_field, ets_long value);
312     void (*SetFloatField)(EtsEnv *env, ets_object obj, ets_field p_field, ets_float value);
313     void (*SetDoubleField)(EtsEnv *env, ets_object obj, ets_field p_field, ets_double value);
314     ets_method (*GetStaticp_method)(EtsEnv *env, ets_class cls, const char *name, const char *sig);
315     ets_object (*CallStaticObjectMethod)(EtsEnv *env, ets_class cls, ets_method p_method, ...);
316     ets_object (*CallStaticObjectMethodList)(EtsEnv *env, ets_class cls, ets_method p_method, va_list args);
317     ets_object (*CallStaticObjectMethodArray)(EtsEnv *env, ets_class cls, ets_method p_method, ets_value *args);
318     ets_boolean (*CallStaticBooleanMethod)(EtsEnv *env, ets_class cls, ets_method p_method, ...);
319     ets_boolean (*CallStaticBooleanMethodList)(EtsEnv *env, ets_class cls, ets_method p_method, va_list args);
320     ets_boolean (*CallStaticBooleanMethodArray)(EtsEnv *env, ets_class cls, ets_method p_method, ets_value *args);
321     ets_byte (*CallStaticByteMethod)(EtsEnv *env, ets_class cls, ets_method p_method, ...);
322     ets_byte (*CallStaticByteMethodList)(EtsEnv *env, ets_class cls, ets_method p_method, va_list args);
323     ets_byte (*CallStaticByteMethodArray)(EtsEnv *env, ets_class cls, ets_method p_method, ets_value *args);
324     ets_char (*CallStaticCharMethod)(EtsEnv *env, ets_class cls, ets_method p_method, ...);
325     ets_char (*CallStaticCharMethodList)(EtsEnv *env, ets_class cls, ets_method p_method, va_list args);
326     ets_char (*CallStaticCharMethodArray)(EtsEnv *env, ets_class cls, ets_method p_method, ets_value *args);
327     ets_short (*CallStaticShortMethod)(EtsEnv *env, ets_class cls, ets_method p_method, ...);
328     ets_short (*CallStaticShortMethodList)(EtsEnv *env, ets_class cls, ets_method p_method, va_list args);
329     ets_short (*CallStaticShortMethodArray)(EtsEnv *env, ets_class cls, ets_method p_method, ets_value *args);
330     ets_int (*CallStaticIntMethod)(EtsEnv *env, ets_class cls, ets_method p_method, ...);
331     ets_int (*CallStaticIntMethodList)(EtsEnv *env, ets_class cls, ets_method p_method, va_list args);
332     ets_int (*CallStaticIntMethodArray)(EtsEnv *env, ets_class cls, ets_method p_method, ets_value *args);
333     ets_long (*CallStaticLongMethod)(EtsEnv *env, ets_class cls, ets_method p_method, ...);
334     ets_long (*CallStaticLongMethodList)(EtsEnv *env, ets_class cls, ets_method p_method, va_list args);
335     ets_long (*CallStaticLongMethodArray)(EtsEnv *env, ets_class cls, ets_method p_method, ets_value *args);
336     ets_float (*CallStaticFloatMethod)(EtsEnv *env, ets_class cls, ets_method p_method, ...);
337     ets_float (*CallStaticFloatMethodList)(EtsEnv *env, ets_class cls, ets_method p_method, va_list args);
338     ets_float (*CallStaticFloatMethodArray)(EtsEnv *env, ets_class cls, ets_method p_method, ets_value *args);
339     ets_double (*CallStaticDoubleMethod)(EtsEnv *env, ets_class cls, ets_method p_method, ...);
340     ets_double (*CallStaticDoubleMethodList)(EtsEnv *env, ets_class cls, ets_method p_method, va_list args);
341     ets_double (*CallStaticDoubleMethodArray)(EtsEnv *env, ets_class cls, ets_method p_method, ets_value *args);
342     void (*CallStaticVoidMethod)(EtsEnv *env, ets_class cls, ets_method p_method, ...);
343     void (*CallStaticVoidMethodList)(EtsEnv *env, ets_class cls, ets_method p_method, va_list args);
344     void (*CallStaticVoidMethodArray)(EtsEnv *env, ets_class cls, ets_method p_method, ets_value *args);
345     ets_field (*GetStaticp_field)(EtsEnv *env, ets_class cls, const char *name, const char *sig);
346     ets_object (*GetStaticObjectField)(EtsEnv *env, ets_class cls, ets_field p_field);
347     ets_boolean (*GetStaticBooleanField)(EtsEnv *env, ets_class cls, ets_field p_field);
348     ets_byte (*GetStaticByteField)(EtsEnv *env, ets_class cls, ets_field p_field);
349     ets_char (*GetStaticCharField)(EtsEnv *env, ets_class cls, ets_field p_field);
350     ets_short (*GetStaticShortField)(EtsEnv *env, ets_class cls, ets_field p_field);
351     ets_int (*GetStaticIntField)(EtsEnv *env, ets_class cls, ets_field p_field);
352     ets_long (*GetStaticLongField)(EtsEnv *env, ets_class cls, ets_field p_field);
353     ets_float (*GetStaticFloatField)(EtsEnv *env, ets_class cls, ets_field p_field);
354     ets_double (*GetStaticDoubleField)(EtsEnv *env, ets_class cls, ets_field p_field);
355     void (*SetStaticObjectField)(EtsEnv *env, ets_class cls, ets_field p_field, ets_object value);
356     void (*SetStaticBooleanField)(EtsEnv *env, ets_class cls, ets_field p_field, ets_boolean value);
357     void (*SetStaticByteField)(EtsEnv *env, ets_class cls, ets_field p_field, ets_byte value);
358     void (*SetStaticCharField)(EtsEnv *env, ets_class cls, ets_field p_field, ets_char value);
359     void (*SetStaticShortField)(EtsEnv *env, ets_class cls, ets_field p_field, ets_short value);
360     void (*SetStaticIntField)(EtsEnv *env, ets_class cls, ets_field p_field, ets_int value);
361     void (*SetStaticLongField)(EtsEnv *env, ets_class cls, ets_field p_field, ets_long value);
362     void (*SetStaticFloatField)(EtsEnv *env, ets_class cls, ets_field p_field, ets_float value);
363     void (*SetStaticDoubleField)(EtsEnv *env, ets_class cls, ets_field p_field, ets_double value);
364     ets_string (*NewString)(EtsEnv *env, const ets_char *unicodeChars, ets_size len);
365     ets_size (*GetStringLength)(EtsEnv *env, ets_string string);
366     const ets_char *(*GetStringChars)(EtsEnv *env, ets_string string, ets_boolean *isCopy);
367     void (*ReleaseStringChars)(EtsEnv *env, ets_string string, const ets_char *chars);
368     ets_string (*NewStringUTF)(EtsEnv *env, const char *bytes);
369     ets_size (*GetStringUTFLength)(EtsEnv *env, ets_string string);
370     const char *(*GetStringUTFChars)(EtsEnv *env, ets_string string, ets_boolean *isCopy);
371     void (*ReleaseStringUTFChars)(EtsEnv *env, ets_string string, const char *utf);
372     ets_size (*GetArrayLength)(EtsEnv *env, ets_array array);
373     ets_objectArray (*NewObjectsArray)(EtsEnv *env, ets_size length, ets_class element_class,
374                                       ets_object initial_element);
375     ets_object (*GetObjectArrayElement)(EtsEnv *env, ets_objectArray array, ets_size index);
376     void (*SetObjectArrayElement)(EtsEnv *env, ets_objectArray array, ets_size index, ets_object value);
377     ets_booleanArray (*NewBooleanArray)(EtsEnv *env, ets_size length);
378     ets_byteArray (*NewByteArray)(EtsEnv *env, ets_size length);
379     ets_charArray (*NewCharArray)(EtsEnv *env, ets_size length);
380     ets_shortArray (*NewShortArray)(EtsEnv *env, ets_size length);
381     ets_intArray (*NewIntArray)(EtsEnv *env, ets_size length);
382     ets_longArray (*NewLongArray)(EtsEnv *env, ets_size length);
383     ets_floatArray (*NewFloatArray)(EtsEnv *env, ets_size length);
384     ets_doubleArray (*NewDoubleArray)(EtsEnv *env, ets_size length);
385     ets_boolean *(*PinBooleanArray)(EtsEnv *env, ets_booleanArray array);
386     ets_byte *(*PinByteArray)(EtsEnv *env, ets_byteArray array);
387     ets_char *(*PinCharArray)(EtsEnv *env, ets_charArray array);
388     ets_short *(*PinShortArray)(EtsEnv *env, ets_shortArray array);
389     ets_int *(*PinIntArray)(EtsEnv *env, ets_intArray array);
390     ets_long *(*PinLongArray)(EtsEnv *env, ets_longArray array);
391     ets_float *(*PinFloatArray)(EtsEnv *env, ets_floatArray array);
392     ets_double *(*PinDoubleArray)(EtsEnv *env, ets_doubleArray array);
393     void (*UnpinBooleanArray)(EtsEnv *env, ets_booleanArray array);
394     void (*UnpinByteArray)(EtsEnv *env, ets_byteArray array);
395     void (*UnpinCharArray)(EtsEnv *env, ets_charArray array);
396     void (*UnpinShortArray)(EtsEnv *env, ets_shortArray array);
397     void (*UnpinIntArray)(EtsEnv *env, ets_intArray array);
398     void (*UnpinLongArray)(EtsEnv *env, ets_longArray array);
399     void (*UnpinFloatArray)(EtsEnv *env, ets_floatArray array);
400     void (*UnpinDoubleArray)(EtsEnv *env, ets_doubleArray array);
401     void (*GetBooleanArrayRegion)(EtsEnv *env, ets_booleanArray array, ets_size start, ets_size len, ets_boolean *buf);
402     void (*GetByteArrayRegion)(EtsEnv *env, ets_byteArray array, ets_size start, ets_size len, ets_byte *buf);
403     void (*GetCharArrayRegion)(EtsEnv *env, ets_charArray array, ets_size start, ets_size len, ets_char *buf);
404     void (*GetShortArrayRegion)(EtsEnv *env, ets_shortArray array, ets_size start, ets_size len, ets_short *buf);
405     void (*GetIntArrayRegion)(EtsEnv *env, ets_intArray array, ets_size start, ets_size len, ets_int *buf);
406     void (*GetLongArrayRegion)(EtsEnv *env, ets_longArray array, ets_size start, ets_size len, ets_long *buf);
407     void (*GetFloatArrayRegion)(EtsEnv *env, ets_floatArray array, ets_size start, ets_size len, ets_float *buf);
408     void (*GetDoubleArrayRegion)(EtsEnv *env, ets_doubleArray array, ets_size start, ets_size len, ets_double *buf);
409     void (*SetBooleanArrayRegion)(EtsEnv *env, ets_booleanArray array, ets_size start, ets_size len,
410                                   const ets_boolean *buf);
411     void (*SetByteArrayRegion)(EtsEnv *env, ets_byteArray array, ets_size start, ets_size len, const ets_byte *buf);
412     void (*SetCharArrayRegion)(EtsEnv *env, ets_charArray array, ets_size start, ets_size len, const ets_char *buf);
413     void (*SetShortArrayRegion)(EtsEnv *env, ets_shortArray array, ets_size start, ets_size len, const ets_short *buf);
414     void (*SetIntArrayRegion)(EtsEnv *env, ets_intArray array, ets_size start, ets_size len, const ets_int *buf);
415     void (*SetLongArrayRegion)(EtsEnv *env, ets_longArray array, ets_size start, ets_size len, const ets_long *buf);
416     void (*SetFloatArrayRegion)(EtsEnv *env, ets_floatArray array, ets_size start, ets_size len, const ets_float *buf);
417     void (*SetDoubleArrayRegion)(EtsEnv *env, ets_doubleArray array, ets_size start, ets_size len,
418                                  const ets_double *buf);
419     ets_int (*RegisterNatives)(EtsEnv *env, ets_class cls, const EtsNativeMethod *methods, ets_int nMethods);
420     ets_int (*UnregisterNatives)(EtsEnv *env, ets_class cls);
421     ets_int (*GetEtsVM)(EtsEnv *env, EtsVM **vm);
422     void (*GetStringRegion)(EtsEnv *env, ets_string str, ets_size start, ets_size len, ets_char *buf);
423     void (*GetStringUTFRegion)(EtsEnv *env, ets_string str, ets_size start, ets_size len, char *buf);
424     ets_weak (*NewWeakGlobalRef)(EtsEnv *env, ets_object obj);
425     void (*DeleteWeakGlobalRef)(EtsEnv *env, ets_weak obj);
426     ets_boolean (*ErrorCheck)(EtsEnv *env);
427 #ifdef ETS_NAPI_DESIGN_FINISHED
428     ets_object (*NewDirectByteBuffer)(EtsEnv *env, void *address, ets_long capacity);
429     void *(*GetDirectBufferAddress)(EtsEnv *env, ets_object buf);
430     ets_long (*GetDirectBufferCapacity)(EtsEnv *env, ets_object buf);
431 #endif
432     ets_objectRefType (*GetObjectRefType)(EtsEnv *env, ets_object obj);
433 
434     /* 227 methods */
435 
436     // Promise API
437     ets_status (*PromiseCreate)(EtsEnv *env, ets_deferred *deferred, ets_object *promise);
438     ets_status (*DeferredResolve)(EtsEnv *env, ets_deferred deferred, ets_object resolution);
439     ets_status (*DeferredReject)(EtsEnv *env, ets_deferred deferred, ets_object rejection);
440 };
441 // clang-format on
442 
443 // Invocation API Functions
444 typedef enum {
445     ETS_LOG_LEVEL,
446     ETS_MOBILE_LOG,
447     ETS_BOOT_FILE,
448     ETS_AOT_FILE,
449     ETS_ARK_FILE,
450     ETS_JIT,
451     ETS_NO_JIT,
452     ETS_AOT,
453     ETS_NO_AOT,
454     ETS_GC_TRIGGER_TYPE,
455     ETS_GC_TYPE,
456     ETS_RUN_GC_IN_PLACE,
457     ETS_INTERPRETER_TYPE
458 } EtsOptionType;
459 
460 typedef struct EtsVMOption {
461     EtsOptionType option;
462     const void *extraInfo;
463 } EtsVMOption;
464 
465 typedef struct EtsVMInitArgs {
466     ets_int version;
467     ets_int nOptions;
468     EtsVMOption *options;
469 } EtsVMInitArgs;
470 
471 typedef enum {
472     ETS_MOBILE_LOG_LEVEL_UNKNOWN = 0,
473     ETS_MOBILE_LOG_LEVEL_DEFAULT,
474     ETS_MOBILE_LOG_LEVEL_VERBOSE,
475     ETS_MOBILE_LOG_LEVEL_DEBUG,
476     ETS_MOBILE_LOG_LEVEL_INFO,
477     ETS_MOBILE_LOG_LEVEL_WARN,
478     ETS_MOBILE_LOG_LEVEL_ERROR,
479     ETS_MOBILE_LOG_LEVEL_FATAL,
480     ETS_MOBILE_LOG_LEVEL_SILENT
481 } EtsMobileLogggerLevel;
482 
483 #ifdef __cplusplus
484 extern "C" {
485 #endif
486 
487 #define ETS_EXPORT __attribute__((visibility("default")))
488 #define ETS_IMPORT
489 #define ETS_CALL
490 
491 ets_int ETS_GetDefaultVMInitArgs(EtsVMInitArgs *vmArgs);
492 ets_int ETS_GetCreatedVMs(EtsVM **vmBuf, ets_size bufLen, ets_size *nVms);
493 ets_int ETS_CreateVM(EtsVM **pVm, EtsEnv **pEnv, EtsVMInitArgs *vmArgs);
494 
495 #ifdef __cplusplus
496 }
497 #endif
498 
499 struct ETS_InvokeInterface {
500     ets_int (*DestroyEtsVM)(EtsVM *vm);
501     ets_int (*GetEnv)(EtsVM *vm, EtsEnv **pEnv, ets_int version);
502 };
503 
504 struct __EtsVM {
505     // NOLINTNEXTLINE(misc-non-private-member-variables-in-classes)
506     const struct ETS_InvokeInterface *invokeInterface;
507 
508 #ifdef __cplusplus
DestroyEtsVM__EtsVM509     ets_int DestroyEtsVM()
510     {
511         return invokeInterface->DestroyEtsVM(this);
512     }
513 
GetEnv__EtsVM514     ets_int GetEnv(EtsEnv **pEnv, ets_int version)
515     {
516         return invokeInterface->GetEnv(this, pEnv, version);
517     }
518 #endif
519 };
520 
521 struct __EtsEnv {
522     // NOLINTNEXTLINE(misc-non-private-member-variables-in-classes)
523     const struct ETS_NativeInterface *nativeInterface;
524 
525 #ifdef __cplusplus
526 
GetVersion__EtsEnv527     ets_int GetVersion()
528     {
529         return nativeInterface->GetVersion(this);
530     }
531     // DefineClass,
FindClass__EtsEnv532     ets_class FindClass(const char *name)
533     {
534         return nativeInterface->FindClass(this, name);
535     }
536     // FromReflectedMethod,
537     // FromReflectedField,
538     // ToReflectedMethod,
GetSuperclass__EtsEnv539     ets_class GetSuperclass(ets_class cls)
540     {
541         return nativeInterface->GetSuperclass(this, cls);
542     }
IsAssignableFrom__EtsEnv543     ets_boolean IsAssignableFrom(ets_class cls1, ets_class cls2)
544     {
545         return nativeInterface->IsAssignableFrom(this, cls1, cls2);
546     }
547     // ToReflectedField,
ThrowError__EtsEnv548     ets_int ThrowError(ets_error obj)
549     {
550         return nativeInterface->ThrowError(this, obj);
551     }
ThrowErrorNew__EtsEnv552     ets_int ThrowErrorNew(ets_class cls, const char *message)
553     {
554         return nativeInterface->ThrowErrorNew(this, cls, message);
555     }
ErrorOccurred__EtsEnv556     ets_error ErrorOccurred()
557     {
558         return nativeInterface->ErrorOccurred(this);
559     }
ErrorDescribe__EtsEnv560     void ErrorDescribe()
561     {
562         nativeInterface->ErrorDescribe(this);
563     }
ErrorClear__EtsEnv564     void ErrorClear()
565     {
566         nativeInterface->ErrorClear(this);
567     }
FatalError__EtsEnv568     void FatalError(const char *message)
569     {
570         nativeInterface->FatalError(this, message);
571     }
PushLocalFrame__EtsEnv572     ets_int PushLocalFrame(ets_int capacity)
573     {
574         return nativeInterface->PushLocalFrame(this, capacity);
575     }
PopLocalFrame__EtsEnv576     ets_object PopLocalFrame(ets_object result)
577     {
578         return nativeInterface->PopLocalFrame(this, result);
579     }
NewGlobalRef__EtsEnv580     ets_object NewGlobalRef(ets_object obj)
581     {
582         return nativeInterface->NewGlobalRef(this, obj);
583     }
DeleteGlobalRef__EtsEnv584     void DeleteGlobalRef(ets_object globalRef)
585     {
586         nativeInterface->DeleteGlobalRef(this, globalRef);
587     }
DeleteLocalRef__EtsEnv588     void DeleteLocalRef(ets_object localRef)
589     {
590         nativeInterface->DeleteLocalRef(this, localRef);
591     }
IsSameObject__EtsEnv592     ets_boolean IsSameObject(ets_object ref1, ets_object ref2)
593     {
594         return nativeInterface->IsSameObject(this, ref1, ref2);
595     }
NewLocalRef__EtsEnv596     ets_object NewLocalRef(ets_object ref)
597     {
598         return nativeInterface->NewLocalRef(this, ref);
599     }
EnsureLocalCapacity__EtsEnv600     ets_int EnsureLocalCapacity(ets_int capacity)
601     {
602         return nativeInterface->EnsureLocalCapacity(this, capacity);
603     }
AllocObject__EtsEnv604     ets_object AllocObject(ets_class cls)
605     {
606         return nativeInterface->AllocObject(this, cls);
607     }
NewObject__EtsEnv608     ets_object NewObject(ets_class cls, ets_method p_method, ...)
609     {
610         va_list args;
611         va_start(args, p_method);
612         ets_object ret = nativeInterface->NewObjectList(this, cls, p_method, args);
613         va_end(args);
614         return ret;
615     }
NewObjectList__EtsEnv616     ets_object NewObjectList(ets_class cls, ets_method p_method, va_list args)
617     {
618         return nativeInterface->NewObjectList(this, cls, p_method, args);
619     }
NewObjectArray__EtsEnv620     ets_object NewObjectArray(ets_class cls, ets_method p_method, const ets_value *args)
621     {
622         return nativeInterface->NewObjectArray(this, cls, p_method, args);
623     }
GetObjectClass__EtsEnv624     ets_class GetObjectClass(ets_object obj)
625     {
626         return nativeInterface->GetObjectClass(this, obj);
627     }
IsInstanceOf__EtsEnv628     ets_boolean IsInstanceOf(ets_object obj, ets_class cls)
629     {
630         return nativeInterface->IsInstanceOf(this, obj, cls);
631     }
Getp_method__EtsEnv632     ets_method Getp_method(ets_class cls, const char *name, const char *sig)
633     {
634         return nativeInterface->Getp_method(this, cls, name, sig);
635     }
CallObjectMethod__EtsEnv636     ets_object CallObjectMethod(ets_object obj, ets_method method_id, ...)
637     {
638         va_list args;
639         va_start(args, method_id);
640         ets_object res = nativeInterface->CallObjectMethodList(this, obj, method_id, args);
641         va_end(args);
642         return res;
643     }
CallObjectMethodList__EtsEnv644     ets_object CallObjectMethodList(ets_object obj, ets_method method_id, va_list args)
645     {
646         return nativeInterface->CallObjectMethodList(this, obj, method_id, args);
647     }
CallObjectMethodArray__EtsEnv648     ets_object CallObjectMethodArray(ets_object obj, ets_method method_id, const ets_value *args)
649     {
650         return nativeInterface->CallObjectMethodArray(this, obj, method_id, args);
651     }
CallBooleanMethod__EtsEnv652     ets_boolean CallBooleanMethod(ets_object obj, ets_method method_id, ...)
653     {
654         va_list args;
655         va_start(args, method_id);
656         ets_boolean res = nativeInterface->CallBooleanMethodList(this, obj, method_id, args);
657         va_end(args);
658         return res;
659     }
CallBooleanMethodList__EtsEnv660     ets_boolean CallBooleanMethodList(ets_object obj, ets_method method_id, va_list args)
661     {
662         return nativeInterface->CallBooleanMethodList(this, obj, method_id, args);
663     }
CallBooleanMethodArray__EtsEnv664     ets_boolean CallBooleanMethodArray(ets_object obj, ets_method method_id, const ets_value *args)
665     {
666         return nativeInterface->CallBooleanMethodArray(this, obj, method_id, args);
667     }
CallByteMethod__EtsEnv668     ets_byte CallByteMethod(ets_object obj, ets_method method_id, ...)
669     {
670         va_list args;
671         va_start(args, method_id);
672         ets_byte res = nativeInterface->CallByteMethodList(this, obj, method_id, args);
673         va_end(args);
674         return res;
675     }
CallByteMethodList__EtsEnv676     ets_byte CallByteMethodList(ets_object obj, ets_method method_id, va_list args)
677     {
678         return nativeInterface->CallByteMethodList(this, obj, method_id, args);
679     }
CallByteMethodArray__EtsEnv680     ets_byte CallByteMethodArray(ets_object obj, ets_method method_id, const ets_value *args)
681     {
682         return nativeInterface->CallByteMethodArray(this, obj, method_id, args);
683     }
CallCharMethod__EtsEnv684     ets_char CallCharMethod(ets_object obj, ets_method method_id, ...)
685     {
686         va_list args;
687         va_start(args, method_id);
688         ets_char res = nativeInterface->CallCharMethodList(this, obj, method_id, args);
689         va_end(args);
690         return res;
691     }
CallCharMethodList__EtsEnv692     ets_char CallCharMethodList(ets_object obj, ets_method method_id, va_list args)
693     {
694         return nativeInterface->CallCharMethodList(this, obj, method_id, args);
695     }
CallCharMethodArray__EtsEnv696     ets_char CallCharMethodArray(ets_object obj, ets_method method_id, const ets_value *args)
697     {
698         return nativeInterface->CallCharMethodArray(this, obj, method_id, args);
699     }
CallShortMethod__EtsEnv700     ets_short CallShortMethod(ets_object obj, ets_method method_id, ...)
701     {
702         va_list args;
703         va_start(args, method_id);
704         ets_short res = nativeInterface->CallShortMethodList(this, obj, method_id, args);
705         va_end(args);
706         return res;
707     }
CallShortMethodList__EtsEnv708     ets_short CallShortMethodList(ets_object obj, ets_method method_id, va_list args)
709     {
710         return nativeInterface->CallShortMethodList(this, obj, method_id, args);
711     }
CallShortMethodArray__EtsEnv712     ets_short CallShortMethodArray(ets_object obj, ets_method method_id, const ets_value *args)
713     {
714         return nativeInterface->CallShortMethodArray(this, obj, method_id, args);
715     }
CallIntMethod__EtsEnv716     ets_int CallIntMethod(ets_object obj, ets_method method_id, ...)
717     {
718         va_list args;
719         va_start(args, method_id);
720         ets_int res = nativeInterface->CallIntMethodList(this, obj, method_id, args);
721         va_end(args);
722         return res;
723     }
CallIntMethodList__EtsEnv724     ets_int CallIntMethodList(ets_object obj, ets_method method_id, va_list args)
725     {
726         return nativeInterface->CallIntMethodList(this, obj, method_id, args);
727     }
CallIntMethodArray__EtsEnv728     ets_int CallIntMethodArray(ets_object obj, ets_method method_id, const ets_value *args)
729     {
730         return nativeInterface->CallIntMethodArray(this, obj, method_id, args);
731     }
CallLongMethod__EtsEnv732     ets_long CallLongMethod(ets_object obj, ets_method method_id, ...)
733     {
734         va_list args;
735         va_start(args, method_id);
736         ets_long res = nativeInterface->CallLongMethodList(this, obj, method_id, args);
737         va_end(args);
738         return res;
739     }
CallLongMethodList__EtsEnv740     ets_long CallLongMethodList(ets_object obj, ets_method method_id, va_list args)
741     {
742         return nativeInterface->CallLongMethodList(this, obj, method_id, args);
743     }
CallLongMethodArray__EtsEnv744     ets_long CallLongMethodArray(ets_object obj, ets_method method_id, const ets_value *args)
745     {
746         return nativeInterface->CallLongMethodArray(this, obj, method_id, args);
747     }
CallFloatMethod__EtsEnv748     ets_float CallFloatMethod(ets_object obj, ets_method method_id, ...)
749     {
750         va_list args;
751         va_start(args, method_id);
752         ets_float res = nativeInterface->CallFloatMethodList(this, obj, method_id, args);
753         va_end(args);
754         return res;
755     }
CallFloatMethodList__EtsEnv756     ets_float CallFloatMethodList(ets_object obj, ets_method method_id, va_list args)
757     {
758         return nativeInterface->CallFloatMethodList(this, obj, method_id, args);
759     }
CallFloatMethodArray__EtsEnv760     ets_float CallFloatMethodArray(ets_object obj, ets_method method_id, const ets_value *args)
761     {
762         return nativeInterface->CallFloatMethodArray(this, obj, method_id, args);
763     }
CallDoubleMethod__EtsEnv764     ets_double CallDoubleMethod(ets_object obj, ets_method method_id, ...)
765     {
766         va_list args;
767         va_start(args, method_id);
768         ets_double res = nativeInterface->CallDoubleMethodList(this, obj, method_id, args);
769         va_end(args);
770         return res;
771     }
CallDoubleMethodList__EtsEnv772     ets_double CallDoubleMethodList(ets_object obj, ets_method method_id, va_list args)
773     {
774         return nativeInterface->CallDoubleMethodList(this, obj, method_id, args);
775     }
CallDoubleMethodArray__EtsEnv776     ets_double CallDoubleMethodArray(ets_object obj, ets_method method_id, const ets_value *args)
777     {
778         return nativeInterface->CallDoubleMethodArray(this, obj, method_id, args);
779     }
CallVoidMethod__EtsEnv780     void CallVoidMethod(ets_object obj, ets_method method_id, ...)
781     {
782         va_list args;
783         va_start(args, method_id);
784         nativeInterface->CallVoidMethodList(this, obj, method_id, args);
785         va_end(args);
786     }
CallVoidMethodList__EtsEnv787     void CallVoidMethodList(ets_object obj, ets_method method_id, va_list args)
788     {
789         nativeInterface->CallVoidMethodList(this, obj, method_id, args);
790     }
CallVoidMethodArray__EtsEnv791     void CallVoidMethodArray(ets_object obj, ets_method method_id, const ets_value *args)
792     {
793         nativeInterface->CallVoidMethodArray(this, obj, method_id, args);
794     }
CallNonvirtualObjectMethod__EtsEnv795     ets_object CallNonvirtualObjectMethod(ets_object obj, ets_class cls, ets_method method_id, ...)
796     {
797         va_list args;
798         va_start(args, method_id);
799         ets_object res = nativeInterface->CallNonvirtualObjectMethodList(this, obj, cls, method_id, args);
800         va_end(args);
801         return res;
802     }
CallNonvirtualObjectMethodList__EtsEnv803     ets_object CallNonvirtualObjectMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args)
804     {
805         return nativeInterface->CallNonvirtualObjectMethodList(this, obj, cls, method_id, args);
806     }
CallNonvirtualObjectMethodArray__EtsEnv807     ets_object CallNonvirtualObjectMethodArray(ets_object obj, ets_class cls, ets_method method_id,
808                                                const ets_value *args)
809     {
810         return nativeInterface->CallNonvirtualObjectMethodArray(this, obj, cls, method_id, args);
811     }
CallNonvirtualBooleanMethod__EtsEnv812     ets_boolean CallNonvirtualBooleanMethod(ets_object obj, ets_class cls, ets_method method_id, ...)
813     {
814         va_list args;
815         va_start(args, method_id);
816         ets_boolean res = nativeInterface->CallNonvirtualBooleanMethodList(this, obj, cls, method_id, args);
817         va_end(args);
818         return res;
819     }
CallNonvirtualBooleanMethodList__EtsEnv820     ets_boolean CallNonvirtualBooleanMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args)
821     {
822         return nativeInterface->CallNonvirtualBooleanMethodList(this, obj, cls, method_id, args);
823     }
CallNonvirtualBooleanMethodArray__EtsEnv824     ets_boolean CallNonvirtualBooleanMethodArray(ets_object obj, ets_class cls, ets_method method_id,
825                                                  const ets_value *args)
826     {
827         return nativeInterface->CallNonvirtualBooleanMethodArray(this, obj, cls, method_id, args);
828     }
CallNonvirtualByteMethod__EtsEnv829     ets_byte CallNonvirtualByteMethod(ets_object obj, ets_class cls, ets_method method_id, ...)
830     {
831         va_list args;
832         va_start(args, method_id);
833         ets_byte res = nativeInterface->CallNonvirtualByteMethodList(this, obj, cls, method_id, args);
834         va_end(args);
835         return res;
836     }
CallNonvirtualByteMethodList__EtsEnv837     ets_byte CallNonvirtualByteMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args)
838     {
839         return nativeInterface->CallNonvirtualByteMethodList(this, obj, cls, method_id, args);
840     }
CallNonvirtualByteMethodArray__EtsEnv841     ets_byte CallNonvirtualByteMethodArray(ets_object obj, ets_class cls, ets_method method_id, const ets_value *args)
842     {
843         return nativeInterface->CallNonvirtualByteMethodArray(this, obj, cls, method_id, args);
844     }
CallNonvirtualCharMethod__EtsEnv845     ets_char CallNonvirtualCharMethod(ets_object obj, ets_class cls, ets_method method_id, ...)
846     {
847         va_list args;
848         va_start(args, method_id);
849         ets_char res = nativeInterface->CallNonvirtualCharMethodList(this, obj, cls, method_id, args);
850         va_end(args);
851         return res;
852     }
CallNonvirtualCharMethodList__EtsEnv853     ets_char CallNonvirtualCharMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args)
854     {
855         return nativeInterface->CallNonvirtualCharMethodList(this, obj, cls, method_id, args);
856     }
CallNonvirtualCharMethodArray__EtsEnv857     ets_char CallNonvirtualCharMethodArray(ets_object obj, ets_class cls, ets_method method_id, const ets_value *args)
858     {
859         return nativeInterface->CallNonvirtualCharMethodArray(this, obj, cls, method_id, args);
860     }
CallNonvirtualShortMethod__EtsEnv861     ets_short CallNonvirtualShortMethod(ets_object obj, ets_class cls, ets_method method_id, ...)
862     {
863         va_list args;
864         va_start(args, method_id);
865         ets_short res = nativeInterface->CallNonvirtualShortMethodList(this, obj, cls, method_id, args);
866         va_end(args);
867         return res;
868     }
CallNonvirtualShortMethodList__EtsEnv869     ets_short CallNonvirtualShortMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args)
870     {
871         return nativeInterface->CallNonvirtualShortMethodList(this, obj, cls, method_id, args);
872     }
CallNonvirtualShortMethodArray__EtsEnv873     ets_short CallNonvirtualShortMethodArray(ets_object obj, ets_class cls, ets_method method_id, const ets_value *args)
874     {
875         return nativeInterface->CallNonvirtualShortMethodArray(this, obj, cls, method_id, args);
876     }
CallNonvirtualIntMethod__EtsEnv877     ets_int CallNonvirtualIntMethod(ets_object obj, ets_class cls, ets_method method_id, ...)
878     {
879         va_list args;
880         va_start(args, method_id);
881         ets_int res = nativeInterface->CallNonvirtualIntMethodList(this, obj, cls, method_id, args);
882         va_end(args);
883         return res;
884     }
CallNonvirtualIntMethodList__EtsEnv885     ets_int CallNonvirtualIntMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args)
886     {
887         return nativeInterface->CallNonvirtualIntMethodList(this, obj, cls, method_id, args);
888     }
CallNonvirtualIntMethodArray__EtsEnv889     ets_int CallNonvirtualIntMethodArray(ets_object obj, ets_class cls, ets_method method_id, const ets_value *args)
890     {
891         return nativeInterface->CallNonvirtualIntMethodArray(this, obj, cls, method_id, args);
892     }
CallNonvirtualLongMethod__EtsEnv893     ets_long CallNonvirtualLongMethod(ets_object obj, ets_class cls, ets_method method_id, ...)
894     {
895         va_list args;
896         va_start(args, method_id);
897         ets_long res = nativeInterface->CallNonvirtualLongMethodList(this, obj, cls, method_id, args);
898         va_end(args);
899         return res;
900     }
CallNonvirtualLongMethodList__EtsEnv901     ets_long CallNonvirtualLongMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args)
902     {
903         return nativeInterface->CallNonvirtualLongMethodList(this, obj, cls, method_id, args);
904     }
CallNonvirtualLongMethodArray__EtsEnv905     ets_long CallNonvirtualLongMethodArray(ets_object obj, ets_class cls, ets_method method_id, const ets_value *args)
906     {
907         return nativeInterface->CallNonvirtualLongMethodArray(this, obj, cls, method_id, args);
908     }
CallNonvirtualFloatMethod__EtsEnv909     ets_float CallNonvirtualFloatMethod(ets_object obj, ets_class cls, ets_method method_id, ...)
910     {
911         va_list args;
912         va_start(args, method_id);
913         ets_float res = nativeInterface->CallNonvirtualFloatMethodList(this, obj, cls, method_id, args);
914         va_end(args);
915         return res;
916     }
CallNonvirtualFloatMethodList__EtsEnv917     ets_float CallNonvirtualFloatMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args)
918     {
919         return nativeInterface->CallNonvirtualFloatMethodList(this, obj, cls, method_id, args);
920     }
CallNonvirtualFloatMethodArray__EtsEnv921     ets_float CallNonvirtualFloatMethodArray(ets_object obj, ets_class cls, ets_method method_id, const ets_value *args)
922     {
923         return nativeInterface->CallNonvirtualFloatMethodArray(this, obj, cls, method_id, args);
924     }
CallNonvirtualDoubleMethod__EtsEnv925     ets_double CallNonvirtualDoubleMethod(ets_object obj, ets_class cls, ets_method method_id, ...)
926     {
927         va_list args;
928         va_start(args, method_id);
929         ets_double res = nativeInterface->CallNonvirtualDoubleMethodList(this, obj, cls, method_id, args);
930         va_end(args);
931         return res;
932     }
CallNonvirtualDoubleMethodList__EtsEnv933     ets_double CallNonvirtualDoubleMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args)
934     {
935         return nativeInterface->CallNonvirtualDoubleMethodList(this, obj, cls, method_id, args);
936     }
CallNonvirtualDoubleMethodArray__EtsEnv937     ets_double CallNonvirtualDoubleMethodArray(ets_object obj, ets_class cls, ets_method method_id,
938                                                const ets_value *args)
939     {
940         return nativeInterface->CallNonvirtualDoubleMethodArray(this, obj, cls, method_id, args);
941     }
CallNonvirtualVoidMethod__EtsEnv942     void CallNonvirtualVoidMethod(ets_object obj, ets_class cls, ets_method method_id, ...)
943     {
944         va_list args;
945         va_start(args, method_id);
946         nativeInterface->CallNonvirtualVoidMethodList(this, obj, cls, method_id, args);
947         va_end(args);
948     }
CallNonvirtualVoidMethodList__EtsEnv949     void CallNonvirtualVoidMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args)
950     {
951         nativeInterface->CallNonvirtualVoidMethodList(this, obj, cls, method_id, args);
952     }
CallNonvirtualVoidMethodArray__EtsEnv953     void CallNonvirtualVoidMethodArray(ets_object obj, ets_class cls, ets_method method_id, const ets_value *args)
954     {
955         nativeInterface->CallNonvirtualVoidMethodArray(this, obj, cls, method_id, args);
956     }
Getp_field__EtsEnv957     ets_field Getp_field(ets_class cls, const char *name, const char *sig)
958     {
959         return nativeInterface->Getp_field(this, cls, name, sig);
960     }
GetObjectField__EtsEnv961     ets_object GetObjectField(ets_object obj, ets_field p_field)
962     {
963         return nativeInterface->GetObjectField(this, obj, p_field);
964     }
GetBooleanField__EtsEnv965     ets_boolean GetBooleanField(ets_object obj, ets_field p_field)
966     {
967         return nativeInterface->GetBooleanField(this, obj, p_field);
968     }
GetByteField__EtsEnv969     ets_byte GetByteField(ets_object obj, ets_field p_field)
970     {
971         return nativeInterface->GetByteField(this, obj, p_field);
972     }
GetCharField__EtsEnv973     ets_char GetCharField(ets_object obj, ets_field p_field)
974     {
975         return nativeInterface->GetCharField(this, obj, p_field);
976     }
GetShortField__EtsEnv977     ets_short GetShortField(ets_object obj, ets_field p_field)
978     {
979         return nativeInterface->GetShortField(this, obj, p_field);
980     }
GetIntField__EtsEnv981     ets_int GetIntField(ets_object obj, ets_field p_field)
982     {
983         return nativeInterface->GetIntField(this, obj, p_field);
984     }
GetLongField__EtsEnv985     ets_long GetLongField(ets_object obj, ets_field p_field)
986     {
987         return nativeInterface->GetLongField(this, obj, p_field);
988     }
GetFloatField__EtsEnv989     ets_float GetFloatField(ets_object obj, ets_field p_field)
990     {
991         return nativeInterface->GetFloatField(this, obj, p_field);
992     }
GetDoubleField__EtsEnv993     ets_double GetDoubleField(ets_object obj, ets_field p_field)
994     {
995         return nativeInterface->GetDoubleField(this, obj, p_field);
996     }
SetObjectField__EtsEnv997     void SetObjectField(ets_object obj, ets_field p_field, ets_object value)
998     {
999         return nativeInterface->SetObjectField(this, obj, p_field, value);
1000     }
SetBooleanField__EtsEnv1001     void SetBooleanField(ets_object obj, ets_field p_field, ets_boolean value)
1002     {
1003         return nativeInterface->SetBooleanField(this, obj, p_field, value);
1004     }
SetByteField__EtsEnv1005     void SetByteField(ets_object obj, ets_field p_field, ets_byte value)
1006     {
1007         return nativeInterface->SetByteField(this, obj, p_field, value);
1008     }
SetCharField__EtsEnv1009     void SetCharField(ets_object obj, ets_field p_field, ets_char value)
1010     {
1011         return nativeInterface->SetCharField(this, obj, p_field, value);
1012     }
SetShortField__EtsEnv1013     void SetShortField(ets_object obj, ets_field p_field, ets_short value)
1014     {
1015         return nativeInterface->SetShortField(this, obj, p_field, value);
1016     }
SetIntField__EtsEnv1017     void SetIntField(ets_object obj, ets_field p_field, ets_int value)
1018     {
1019         return nativeInterface->SetIntField(this, obj, p_field, value);
1020     }
SetLongField__EtsEnv1021     void SetLongField(ets_object obj, ets_field p_field, ets_long value)
1022     {
1023         return nativeInterface->SetLongField(this, obj, p_field, value);
1024     }
SetFloatField__EtsEnv1025     void SetFloatField(ets_object obj, ets_field p_field, ets_float value)
1026     {
1027         return nativeInterface->SetFloatField(this, obj, p_field, value);
1028     }
SetDoubleField__EtsEnv1029     void SetDoubleField(ets_object obj, ets_field p_field, ets_double value)
1030     {
1031         return nativeInterface->SetDoubleField(this, obj, p_field, value);
1032     }
GetStaticp_method__EtsEnv1033     ets_method GetStaticp_method(ets_class cls, const char *name, const char *sig)
1034     {
1035         return nativeInterface->GetStaticp_method(this, cls, name, sig);
1036     }
CallStaticObjectMethod__EtsEnv1037     ets_object CallStaticObjectMethod(ets_class cls, ets_method method_id, ...)
1038     {
1039         va_list args;
1040         va_start(args, method_id);
1041         ets_object res = nativeInterface->CallStaticObjectMethodList(this, cls, method_id, args);
1042         va_end(args);
1043         return res;
1044     }
CallStaticObjectMethodList__EtsEnv1045     ets_object CallStaticObjectMethodList(ets_class cls, ets_method method_id, va_list args)
1046     {
1047         return nativeInterface->CallStaticObjectMethodList(this, cls, method_id, args);
1048     }
CallStaticObjectMethodArray__EtsEnv1049     ets_object CallStaticObjectMethodArray(ets_class cls, ets_method method_id, ets_value *args)
1050     {
1051         return nativeInterface->CallStaticObjectMethodArray(this, cls, method_id, args);
1052     }
CallStaticBooleanMethod__EtsEnv1053     ets_boolean CallStaticBooleanMethod(ets_class cls, ets_method method_id, ...)
1054     {
1055         va_list args;
1056         va_start(args, method_id);
1057         ets_boolean res = nativeInterface->CallStaticBooleanMethodList(this, cls, method_id, args);
1058         va_end(args);
1059         return res;
1060     }
CallStaticBooleanMethodList__EtsEnv1061     ets_boolean CallStaticBooleanMethodList(ets_class cls, ets_method method_id, va_list args)
1062     {
1063         return nativeInterface->CallStaticBooleanMethodList(this, cls, method_id, args);
1064     }
CallStaticBooleanMethodArray__EtsEnv1065     ets_boolean CallStaticBooleanMethodArray(ets_class cls, ets_method method_id, ets_value *args)
1066     {
1067         return nativeInterface->CallStaticBooleanMethodArray(this, cls, method_id, args);
1068     }
CallStaticByteMethod__EtsEnv1069     ets_byte CallStaticByteMethod(ets_class cls, ets_method method_id, ...)
1070     {
1071         va_list args;
1072         va_start(args, method_id);
1073         ets_byte res = nativeInterface->CallStaticByteMethodList(this, cls, method_id, args);
1074         va_end(args);
1075         return res;
1076     }
CallStaticByteMethodList__EtsEnv1077     ets_byte CallStaticByteMethodList(ets_class cls, ets_method method_id, va_list args)
1078     {
1079         return nativeInterface->CallStaticByteMethodList(this, cls, method_id, args);
1080     }
CallStaticByteMethodArray__EtsEnv1081     ets_byte CallStaticByteMethodArray(ets_class cls, ets_method method_id, ets_value *args)
1082     {
1083         return nativeInterface->CallStaticByteMethodArray(this, cls, method_id, args);
1084     }
CallStaticCharMethod__EtsEnv1085     ets_char CallStaticCharMethod(ets_class cls, ets_method method_id, ...)
1086     {
1087         va_list args;
1088         va_start(args, method_id);
1089         ets_char res = nativeInterface->CallStaticCharMethodList(this, cls, method_id, args);
1090         va_end(args);
1091         return res;
1092     }
CallStaticCharMethodList__EtsEnv1093     ets_char CallStaticCharMethodList(ets_class cls, ets_method method_id, va_list args)
1094     {
1095         return nativeInterface->CallStaticCharMethodList(this, cls, method_id, args);
1096     }
CallStaticCharMethodArray__EtsEnv1097     ets_char CallStaticCharMethodArray(ets_class cls, ets_method method_id, ets_value *args)
1098     {
1099         return nativeInterface->CallStaticCharMethodArray(this, cls, method_id, args);
1100     }
CallStaticShortMethod__EtsEnv1101     ets_short CallStaticShortMethod(ets_class cls, ets_method method_id, ...)
1102     {
1103         va_list args;
1104         va_start(args, method_id);
1105         ets_short res = nativeInterface->CallStaticShortMethodList(this, cls, method_id, args);
1106         va_end(args);
1107         return res;
1108     }
CallStaticShortMethodList__EtsEnv1109     ets_short CallStaticShortMethodList(ets_class cls, ets_method method_id, va_list args)
1110     {
1111         return nativeInterface->CallStaticShortMethodList(this, cls, method_id, args);
1112     }
CallStaticShortMethodArray__EtsEnv1113     ets_short CallStaticShortMethodArray(ets_class cls, ets_method method_id, ets_value *args)
1114     {
1115         return nativeInterface->CallStaticShortMethodArray(this, cls, method_id, args);
1116     }
CallStaticIntMethod__EtsEnv1117     ets_int CallStaticIntMethod(ets_class cls, ets_method method_id, ...)
1118     {
1119         va_list args;
1120         va_start(args, method_id);
1121         ets_int res = nativeInterface->CallStaticIntMethodList(this, cls, method_id, args);
1122         va_end(args);
1123         return res;
1124     }
CallStaticIntMethodList__EtsEnv1125     ets_int CallStaticIntMethodList(ets_class cls, ets_method method_id, va_list args)
1126     {
1127         return nativeInterface->CallStaticIntMethodList(this, cls, method_id, args);
1128     }
CallStaticIntMethodArray__EtsEnv1129     ets_int CallStaticIntMethodArray(ets_class cls, ets_method method_id, ets_value *args)
1130     {
1131         return nativeInterface->CallStaticIntMethodArray(this, cls, method_id, args);
1132     }
CallStaticLongMethod__EtsEnv1133     ets_long CallStaticLongMethod(ets_class cls, ets_method method_id, ...)
1134     {
1135         va_list args;
1136         va_start(args, method_id);
1137         ets_long res = nativeInterface->CallStaticLongMethodList(this, cls, method_id, args);
1138         va_end(args);
1139         return res;
1140     }
CallStaticLongMethodList__EtsEnv1141     ets_long CallStaticLongMethodList(ets_class cls, ets_method method_id, va_list args)
1142     {
1143         return nativeInterface->CallStaticLongMethodList(this, cls, method_id, args);
1144     }
CallStaticLongMethodArray__EtsEnv1145     ets_long CallStaticLongMethodArray(ets_class cls, ets_method method_id, ets_value *args)
1146     {
1147         return nativeInterface->CallStaticLongMethodArray(this, cls, method_id, args);
1148     }
CallStaticFloatMethod__EtsEnv1149     ets_float CallStaticFloatMethod(ets_class cls, ets_method method_id, ...)
1150     {
1151         va_list args;
1152         va_start(args, method_id);
1153         ets_float res = nativeInterface->CallStaticFloatMethodList(this, cls, method_id, args);
1154         va_end(args);
1155         return res;
1156     }
CallStaticFloatMethodList__EtsEnv1157     ets_float CallStaticFloatMethodList(ets_class cls, ets_method method_id, va_list args)
1158     {
1159         return nativeInterface->CallStaticFloatMethodList(this, cls, method_id, args);
1160     }
CallStaticFloatMethodArray__EtsEnv1161     ets_float CallStaticFloatMethodArray(ets_class cls, ets_method method_id, ets_value *args)
1162     {
1163         return nativeInterface->CallStaticFloatMethodArray(this, cls, method_id, args);
1164     }
CallStaticDoubleMethod__EtsEnv1165     ets_double CallStaticDoubleMethod(ets_class cls, ets_method method_id, ...)
1166     {
1167         va_list args;
1168         va_start(args, method_id);
1169         ets_double res = nativeInterface->CallStaticDoubleMethodList(this, cls, method_id, args);
1170         va_end(args);
1171         return res;
1172     }
CallStaticDoubleMethodList__EtsEnv1173     ets_double CallStaticDoubleMethodList(ets_class cls, ets_method method_id, va_list args)
1174     {
1175         return nativeInterface->CallStaticDoubleMethodList(this, cls, method_id, args);
1176     }
CallStaticDoubleMethodArray__EtsEnv1177     ets_double CallStaticDoubleMethodArray(ets_class cls, ets_method method_id, ets_value *args)
1178     {
1179         return nativeInterface->CallStaticDoubleMethodArray(this, cls, method_id, args);
1180     }
CallStaticVoidMethod__EtsEnv1181     void CallStaticVoidMethod(ets_class cls, ets_method method_id, ...)
1182     {
1183         va_list args;
1184         va_start(args, method_id);
1185         nativeInterface->CallStaticVoidMethodList(this, cls, method_id, args);
1186         va_end(args);
1187     }
CallStaticVoidMethodList__EtsEnv1188     void CallStaticVoidMethodList(ets_class cls, ets_method method_id, va_list args)
1189     {
1190         nativeInterface->CallStaticVoidMethodList(this, cls, method_id, args);
1191     }
CallStaticVoidMethodArray__EtsEnv1192     void CallStaticVoidMethodArray(ets_class cls, ets_method method_id, ets_value *args)
1193     {
1194         nativeInterface->CallStaticVoidMethodArray(this, cls, method_id, args);
1195     }
GetStaticp_field__EtsEnv1196     ets_field GetStaticp_field(ets_class cls, const char *name, const char *sig)
1197     {
1198         return nativeInterface->GetStaticp_field(this, cls, name, sig);
1199     }
GetStaticObjectField__EtsEnv1200     ets_object GetStaticObjectField(ets_class cls, ets_field p_field)
1201     {
1202         return nativeInterface->GetStaticObjectField(this, cls, p_field);
1203     }
GetStaticBooleanField__EtsEnv1204     ets_boolean GetStaticBooleanField(ets_class cls, ets_field p_field)
1205     {
1206         return nativeInterface->GetStaticBooleanField(this, cls, p_field);
1207     }
GetStaticByteField__EtsEnv1208     ets_byte GetStaticByteField(ets_class cls, ets_field p_field)
1209     {
1210         return nativeInterface->GetStaticByteField(this, cls, p_field);
1211     }
GetStaticCharField__EtsEnv1212     ets_char GetStaticCharField(ets_class cls, ets_field p_field)
1213     {
1214         return nativeInterface->GetStaticCharField(this, cls, p_field);
1215     }
GetStaticShortField__EtsEnv1216     ets_short GetStaticShortField(ets_class cls, ets_field p_field)
1217     {
1218         return nativeInterface->GetStaticShortField(this, cls, p_field);
1219     }
GetStaticIntField__EtsEnv1220     ets_int GetStaticIntField(ets_class cls, ets_field p_field)
1221     {
1222         return nativeInterface->GetStaticIntField(this, cls, p_field);
1223     }
GetStaticLongField__EtsEnv1224     ets_long GetStaticLongField(ets_class cls, ets_field p_field)
1225     {
1226         return nativeInterface->GetStaticLongField(this, cls, p_field);
1227     }
GetStaticFloatField__EtsEnv1228     ets_float GetStaticFloatField(ets_class cls, ets_field p_field)
1229     {
1230         return nativeInterface->GetStaticFloatField(this, cls, p_field);
1231     }
GetStaticDoubleField__EtsEnv1232     ets_double GetStaticDoubleField(ets_class cls, ets_field p_field)
1233     {
1234         return nativeInterface->GetStaticDoubleField(this, cls, p_field);
1235     }
SetStaticObjectField__EtsEnv1236     void SetStaticObjectField(ets_class cls, ets_field p_field, ets_object value)
1237     {
1238         return nativeInterface->SetStaticObjectField(this, cls, p_field, value);
1239     }
SetStaticBooleanField__EtsEnv1240     void SetStaticBooleanField(ets_class cls, ets_field p_field, ets_boolean value)
1241     {
1242         return nativeInterface->SetStaticBooleanField(this, cls, p_field, value);
1243     }
SetStaticByteField__EtsEnv1244     void SetStaticByteField(ets_class cls, ets_field p_field, ets_byte value)
1245     {
1246         return nativeInterface->SetStaticByteField(this, cls, p_field, value);
1247     }
SetStaticCharField__EtsEnv1248     void SetStaticCharField(ets_class cls, ets_field p_field, ets_char value)
1249     {
1250         return nativeInterface->SetStaticCharField(this, cls, p_field, value);
1251     }
SetStaticShortField__EtsEnv1252     void SetStaticShortField(ets_class cls, ets_field p_field, ets_short value)
1253     {
1254         return nativeInterface->SetStaticShortField(this, cls, p_field, value);
1255     }
SetStaticIntField__EtsEnv1256     void SetStaticIntField(ets_class cls, ets_field p_field, ets_int value)
1257     {
1258         return nativeInterface->SetStaticIntField(this, cls, p_field, value);
1259     }
SetStaticLongField__EtsEnv1260     void SetStaticLongField(ets_class cls, ets_field p_field, ets_long value)
1261     {
1262         return nativeInterface->SetStaticLongField(this, cls, p_field, value);
1263     }
SetStaticFloatField__EtsEnv1264     void SetStaticFloatField(ets_class cls, ets_field p_field, ets_float value)
1265     {
1266         return nativeInterface->SetStaticFloatField(this, cls, p_field, value);
1267     }
SetStaticDoubleField__EtsEnv1268     void SetStaticDoubleField(ets_class cls, ets_field p_field, ets_double value)
1269     {
1270         return nativeInterface->SetStaticDoubleField(this, cls, p_field, value);
1271     }
NewString__EtsEnv1272     ets_string NewString(const ets_char *unicode_chars, ets_size len)
1273     {
1274         return nativeInterface->NewString(this, unicode_chars, len);
1275     }
GetStringLength__EtsEnv1276     ets_size GetStringLength(ets_string string)
1277     {
1278         return nativeInterface->GetStringLength(this, string);
1279     }
GetStringChars__EtsEnv1280     const ets_char *GetStringChars(ets_string string, ets_boolean *is_copy)
1281     {
1282         return nativeInterface->GetStringChars(this, string, is_copy);
1283     }
ReleaseStringChars__EtsEnv1284     void ReleaseStringChars(ets_string string, const ets_char *chars)
1285     {
1286         nativeInterface->ReleaseStringChars(this, string, chars);
1287     }
NewStringUTF__EtsEnv1288     ets_string NewStringUTF(const char *bytes)
1289     {
1290         return nativeInterface->NewStringUTF(this, bytes);
1291     }
GetStringUTFLength__EtsEnv1292     ets_size GetStringUTFLength(ets_string string)
1293     {
1294         return nativeInterface->GetStringUTFLength(this, string);
1295     }
GetStringUTFChars__EtsEnv1296     const char *GetStringUTFChars(ets_string string, ets_boolean *is_copy)
1297     {
1298         return nativeInterface->GetStringUTFChars(this, string, is_copy);
1299     }
ReleaseStringUTFChars__EtsEnv1300     void ReleaseStringUTFChars(ets_string string, const char *chars)
1301     {
1302         nativeInterface->ReleaseStringUTFChars(this, string, chars);
1303     }
GetArrayLength__EtsEnv1304     ets_size GetArrayLength(ets_array array)
1305     {
1306         return nativeInterface->GetArrayLength(this, array);
1307     }
NewObjectsArray__EtsEnv1308     ets_objectArray NewObjectsArray(ets_size length, ets_class element_class, ets_object initial_element)
1309     {
1310         return nativeInterface->NewObjectsArray(this, length, element_class, initial_element);
1311     }
GetObjectArrayElement__EtsEnv1312     ets_object GetObjectArrayElement(ets_objectArray array, ets_size index)
1313     {
1314         return nativeInterface->GetObjectArrayElement(this, array, index);
1315     }
1316 
SetObjectArrayElement__EtsEnv1317     void SetObjectArrayElement(ets_objectArray array, ets_size index, ets_object value)
1318     {
1319         nativeInterface->SetObjectArrayElement(this, array, index, value);
1320     }
1321 
1322     // SetObjectArrayElement,
NewBooleanArray__EtsEnv1323     ets_booleanArray NewBooleanArray(ets_size length)
1324     {
1325         return nativeInterface->NewBooleanArray(this, length);
1326     }
NewByteArray__EtsEnv1327     ets_byteArray NewByteArray(ets_size length)
1328     {
1329         return nativeInterface->NewByteArray(this, length);
1330     }
NewCharArray__EtsEnv1331     ets_charArray NewCharArray(ets_size length)
1332     {
1333         return nativeInterface->NewCharArray(this, length);
1334     }
NewShortArray__EtsEnv1335     ets_shortArray NewShortArray(ets_size length)
1336     {
1337         return nativeInterface->NewShortArray(this, length);
1338     }
NewIntArray__EtsEnv1339     ets_intArray NewIntArray(ets_size length)
1340     {
1341         return nativeInterface->NewIntArray(this, length);
1342     }
NewLongArray__EtsEnv1343     ets_longArray NewLongArray(ets_size length)
1344     {
1345         return nativeInterface->NewLongArray(this, length);
1346     }
NewFloatArray__EtsEnv1347     ets_floatArray NewFloatArray(ets_size length)
1348     {
1349         return nativeInterface->NewFloatArray(this, length);
1350     }
NewDoubleArray__EtsEnv1351     ets_doubleArray NewDoubleArray(ets_size length)
1352     {
1353         return nativeInterface->NewDoubleArray(this, length);
1354     }
PinBooleanArray__EtsEnv1355     ets_boolean *PinBooleanArray(ets_booleanArray array)
1356     {
1357         return nativeInterface->PinBooleanArray(this, array);
1358     }
PinByteArray__EtsEnv1359     ets_byte *PinByteArray(ets_byteArray array)
1360     {
1361         return nativeInterface->PinByteArray(this, array);
1362     }
PinCharArray__EtsEnv1363     ets_char *PinCharArray(ets_charArray array)
1364     {
1365         return nativeInterface->PinCharArray(this, array);
1366     }
PinShortArray__EtsEnv1367     ets_short *PinShortArray(ets_shortArray array)
1368     {
1369         return nativeInterface->PinShortArray(this, array);
1370     }
PinIntArray__EtsEnv1371     ets_int *PinIntArray(ets_intArray array)
1372     {
1373         return nativeInterface->PinIntArray(this, array);
1374     }
PinLongArray__EtsEnv1375     ets_long *PinLongArray(ets_longArray array)
1376     {
1377         return nativeInterface->PinLongArray(this, array);
1378     }
PinFloatArray__EtsEnv1379     ets_float *PinFloatArray(ets_floatArray array)
1380     {
1381         return nativeInterface->PinFloatArray(this, array);
1382     }
PinDoubleArray__EtsEnv1383     ets_double *PinDoubleArray(ets_doubleArray array)
1384     {
1385         return nativeInterface->PinDoubleArray(this, array);
1386     }
UnpinBooleanArray__EtsEnv1387     void UnpinBooleanArray(ets_booleanArray array)
1388     {
1389         return nativeInterface->UnpinBooleanArray(this, array);
1390     }
UnpinByteArray__EtsEnv1391     void UnpinByteArray(ets_byteArray array)
1392     {
1393         return nativeInterface->UnpinByteArray(this, array);
1394     }
UnpinCharArray__EtsEnv1395     void UnpinCharArray(ets_charArray array)
1396     {
1397         return nativeInterface->UnpinCharArray(this, array);
1398     }
UnpinShortArray__EtsEnv1399     void UnpinShortArray(ets_shortArray array)
1400     {
1401         return nativeInterface->UnpinShortArray(this, array);
1402     }
UnpinIntArray__EtsEnv1403     void UnpinIntArray(ets_intArray array)
1404     {
1405         return nativeInterface->UnpinIntArray(this, array);
1406     }
UnpinLongArray__EtsEnv1407     void UnpinLongArray(ets_longArray array)
1408     {
1409         return nativeInterface->UnpinLongArray(this, array);
1410     }
UnpinFloatArray__EtsEnv1411     void UnpinFloatArray(ets_floatArray array)
1412     {
1413         return nativeInterface->UnpinFloatArray(this, array);
1414     }
UnpinDoubleArray__EtsEnv1415     void UnpinDoubleArray(ets_doubleArray array)
1416     {
1417         return nativeInterface->UnpinDoubleArray(this, array);
1418     }
GetBooleanArrayRegion__EtsEnv1419     void GetBooleanArrayRegion(ets_booleanArray array, ets_size start, ets_size len, ets_boolean *buf)
1420     {
1421         return nativeInterface->GetBooleanArrayRegion(this, array, start, len, buf);
1422     }
GetByteArrayRegion__EtsEnv1423     void GetByteArrayRegion(ets_byteArray array, ets_size start, ets_size len, ets_byte *buf)
1424     {
1425         return nativeInterface->GetByteArrayRegion(this, array, start, len, buf);
1426     }
GetCharArrayRegion__EtsEnv1427     void GetCharArrayRegion(ets_charArray array, ets_size start, ets_size len, ets_char *buf)
1428     {
1429         return nativeInterface->GetCharArrayRegion(this, array, start, len, buf);
1430     }
GetShortArrayRegion__EtsEnv1431     void GetShortArrayRegion(ets_shortArray array, ets_size start, ets_size len, ets_short *buf)
1432     {
1433         return nativeInterface->GetShortArrayRegion(this, array, start, len, buf);
1434     }
GetIntArrayRegion__EtsEnv1435     void GetIntArrayRegion(ets_intArray array, ets_size start, ets_size len, ets_int *buf)
1436     {
1437         return nativeInterface->GetIntArrayRegion(this, array, start, len, buf);
1438     }
GetLongArrayRegion__EtsEnv1439     void GetLongArrayRegion(ets_longArray array, ets_size start, ets_size len, ets_long *buf)
1440     {
1441         return nativeInterface->GetLongArrayRegion(this, array, start, len, buf);
1442     }
GetFloatArrayRegion__EtsEnv1443     void GetFloatArrayRegion(ets_floatArray array, ets_size start, ets_size len, ets_float *buf)
1444     {
1445         return nativeInterface->GetFloatArrayRegion(this, array, start, len, buf);
1446     }
GetDoubleArrayRegion__EtsEnv1447     void GetDoubleArrayRegion(ets_doubleArray array, ets_size start, ets_size len, ets_double *buf)
1448     {
1449         return nativeInterface->GetDoubleArrayRegion(this, array, start, len, buf);
1450     }
SetBooleanArrayRegion__EtsEnv1451     void SetBooleanArrayRegion(ets_booleanArray array, ets_size start, ets_size length, const ets_boolean *buf)
1452     {
1453         nativeInterface->SetBooleanArrayRegion(this, array, start, length, buf);
1454     }
SetByteArrayRegion__EtsEnv1455     void SetByteArrayRegion(ets_byteArray array, ets_size start, ets_size length, const ets_byte *buf)
1456     {
1457         nativeInterface->SetByteArrayRegion(this, array, start, length, buf);
1458     }
SetCharArrayRegion__EtsEnv1459     void SetCharArrayRegion(ets_charArray array, ets_size start, ets_size length, const ets_char *buf)
1460     {
1461         nativeInterface->SetCharArrayRegion(this, array, start, length, buf);
1462     }
SetShortArrayRegion__EtsEnv1463     void SetShortArrayRegion(ets_shortArray array, ets_size start, ets_size length, const ets_short *buf)
1464     {
1465         nativeInterface->SetShortArrayRegion(this, array, start, length, buf);
1466     }
SetIntArrayRegion__EtsEnv1467     void SetIntArrayRegion(ets_intArray array, ets_size start, ets_size length, const ets_int *buf)
1468     {
1469         nativeInterface->SetIntArrayRegion(this, array, start, length, buf);
1470     }
SetLongArrayRegion__EtsEnv1471     void SetLongArrayRegion(ets_longArray array, ets_size start, ets_size length, const ets_long *buf)
1472     {
1473         nativeInterface->SetLongArrayRegion(this, array, start, length, buf);
1474     }
SetFloatArrayRegion__EtsEnv1475     void SetFloatArrayRegion(ets_floatArray array, ets_size start, ets_size length, const ets_float *buf)
1476     {
1477         nativeInterface->SetFloatArrayRegion(this, array, start, length, buf);
1478     }
SetDoubleArrayRegion__EtsEnv1479     void SetDoubleArrayRegion(ets_doubleArray array, ets_size start, ets_size length, const ets_double *buf)
1480     {
1481         nativeInterface->SetDoubleArrayRegion(this, array, start, length, buf);
1482     }
RegisterNatives__EtsEnv1483     ets_int RegisterNatives(ets_class cls, const EtsNativeMethod *methods, ets_int nMethods)
1484     {
1485         return nativeInterface->RegisterNatives(this, cls, methods, nMethods);
1486     }
UnregisterNatives__EtsEnv1487     ets_int UnregisterNatives(ets_class cls)
1488     {
1489         return nativeInterface->UnregisterNatives(this, cls);
1490     }
GetEtsVM__EtsEnv1491     ets_int GetEtsVM(EtsVM **vm)
1492     {
1493         return nativeInterface->GetEtsVM(this, vm);
1494     }
GetStringRegion__EtsEnv1495     void GetStringRegion(ets_string str, ets_size start, ets_size len, ets_char *buf)
1496     {
1497         nativeInterface->GetStringRegion(this, str, start, len, buf);
1498     }
GetStringUTFRegion__EtsEnv1499     void GetStringUTFRegion(ets_string str, ets_size start, ets_size len, char *buf)
1500     {
1501         nativeInterface->GetStringUTFRegion(this, str, start, len, buf);
1502     }
NewWeakGlobalRef__EtsEnv1503     ets_weak NewWeakGlobalRef(ets_object obj)
1504     {
1505         return nativeInterface->NewWeakGlobalRef(this, obj);
1506     }
DeleteWeakGlobalRef__EtsEnv1507     void DeleteWeakGlobalRef(ets_weak obj)
1508     {
1509         nativeInterface->DeleteWeakGlobalRef(this, obj);
1510     }
ErrorCheck__EtsEnv1511     ets_boolean ErrorCheck()
1512     {
1513         return nativeInterface->ErrorCheck(this);
1514     }
1515     // NewDirectByteBuffer,
1516     // GetDirectBufferAddress,
1517     // GetDirectBufferCapacity,
GetObjectRefType__EtsEnv1518     ets_objectRefType GetObjectRefType(ets_object obj)
1519     {
1520         return nativeInterface->GetObjectRefType(this, obj);
1521     }
1522 
1523     // Promise
PromiseCreate__EtsEnv1524     ets_status PromiseCreate(ets_deferred *deferred, ets_object *promise)
1525     {
1526         return nativeInterface->PromiseCreate(this, deferred, promise);
1527     }
DeferredResolve__EtsEnv1528     ets_status DeferredResolve(ets_deferred deferred, ets_object resolution)
1529     {
1530         return nativeInterface->DeferredResolve(this, deferred, resolution);
1531     }
DeferredReject__EtsEnv1532     ets_status DeferredReject(ets_deferred deferred, ets_object rejection)
1533     {
1534         return nativeInterface->DeferredReject(this, deferred, rejection);
1535     }
1536 #endif
1537 };
1538 
1539 // NOLINTEND(modernize-use-using, readability-identifier-naming, cppcoreguidelines-pro-type-vararg)
1540 
1541 #endif  // PANDA_RUNTIME_INTEROP_ETS_NAPI_H
1542