• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  * Copyright (c) 2021-2024 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_class : public __ets_object {};
67 class __ets_string : public __ets_object {};
68 class __ets_array : public __ets_object {};
69 class __ets_objectArray : public __ets_array {};
70 class __ets_booleanArray : public __ets_array {};
71 class __ets_byteArray : public __ets_array {};
72 class __ets_charArray : public __ets_array {};
73 class __ets_shortArray : public __ets_array {};
74 class __ets_intArray : public __ets_array {};
75 class __ets_longArray : public __ets_array {};
76 class __ets_floatArray : public __ets_array {};
77 class __ets_doubleArray : public __ets_array {};
78 class __ets_error : public __ets_object {};
79 
80 typedef __ets_object *ets_object;
81 typedef __ets_class *ets_class;
82 typedef __ets_string *ets_string;
83 typedef __ets_array *ets_array;
84 typedef __ets_objectArray *ets_objectArray;
85 typedef __ets_booleanArray *ets_booleanArray;
86 typedef __ets_byteArray *ets_byteArray;
87 typedef __ets_charArray *ets_charArray;
88 typedef __ets_shortArray *ets_shortArray;
89 typedef __ets_intArray *ets_intArray;
90 typedef __ets_longArray *ets_longArray;
91 typedef __ets_floatArray *ets_floatArray;
92 typedef __ets_doubleArray *ets_doubleArray;
93 typedef __ets_error *ets_error;
94 typedef __ets_object *ets_weak;
95 
96 #else   // __cplusplus
97 
98 struct __ets_object;
99 typedef struct __ets_object *ets_object;
100 typedef ets_object ets_class;
101 typedef ets_object ets_string;
102 typedef ets_object ets_error;
103 typedef ets_object ets_weak;
104 typedef ets_object ets_array;
105 typedef ets_array ets_objectArray;
106 typedef ets_array ets_booleanArray;
107 typedef ets_array ets_byteArray;
108 typedef ets_array ets_charArray;
109 typedef ets_array ets_shortArray;
110 typedef ets_array ets_intArray;
111 typedef ets_array ets_longArray;
112 typedef ets_array ets_floatArray;
113 typedef ets_array ets_doubleArray;
114 #endif  // __cplusplus
115 
116 struct __ets_deferred;
117 typedef struct __ets_deferred *ets_deferred;
118 
119 // Field and Method IDs
120 struct __ets_method;
121 struct __ets_field;
122 typedef struct __ets_method *ets_method;
123 typedef struct __ets_field *ets_field;
124 
125 // The Value Type
126 typedef union ets_value {
127     ets_boolean z;
128     ets_byte b;
129     ets_char c;
130     ets_short s;
131     ets_int i;
132     ets_long j;
133     ets_float f;
134     ets_double d;
135     ets_object l;
136 } ets_value;
137 
138 // Describe native method by name, signature and function pointer
139 typedef struct {
140     const char *name;
141     const char *signature;
142     void *func;
143 } EtsNativeMethod;
144 
145 // The object reference types
146 typedef enum {
147     ETS_INVALID_REF_TYPE = 0,
148     ETS_LOCAL_REF_TYPE = 1,
149     ETS_GLOBAL_REF_TYPE = 2,
150     ETS_WEAK_GLOBAL_REF_TYPE = 3
151 } ets_objectRefType;
152 
153 #ifdef __cplusplus
154 typedef struct __EtsVM EtsVM;
155 typedef struct __EtsEnv ets_env;
156 #else
157 typedef const struct ETS_InvokeInterface *EtsVM;
158 typedef const struct ETS_NativeInterface *ets_env;
159 #endif
160 
161 // Deprecated types:
162 typedef ets_env EtsEnv;
163 
164 typedef enum {
165     ETS_OKAY,
166     ETS_INVALID_ARG,
167     ETS_GENERIC_FAILURE,
168     ETS_PENDING_EXCEPTION,
169     ETS_INVALID_VERSION,  // NOTE(v.cherkashin): This status code doesn't match to napi interface.
170                           //                     Should we probably delete this status code?
171 } ets_status;
172 
173 // clang-format off
174 // Interface Function Table
175 struct ETS_NativeInterface {
176     // NOTE(a.urakov): solve the "Array" naming problem
177     ets_int (*GetVersion)(EtsEnv *env);
178 #ifdef ETS_NAPI_DESIGN_FINISHED
179     ets_class (*DefineClass)(EtsEnv *env, const char *name, ets_object loader, const ets_byte *buf, ets_size bufLen);
180 #endif
181     ets_class (*FindClass)(EtsEnv *env, const char *name);
182 #ifdef ETS_NAPI_DESIGN_FINISHED
183     ets_method (*FromReflectedMethod)(EtsEnv *env, ets_object method);
184     ets_field (*FromReflectedField)(EtsEnv *env, ets_object field);
185     ets_object (*ToReflectedMethod)(EtsEnv *env, ets_class cls, ets_method p_method, ets_boolean isStatic);
186 #endif
187     ets_class (*GetSuperclass)(EtsEnv *env, ets_class cls);
188     ets_boolean (*IsAssignableFrom)(EtsEnv *env, ets_class cls1, ets_class cls2);
189 #ifdef ETS_NAPI_DESIGN_FINISHED
190     ets_object (*ToReflectedField)(EtsEnv *env, ets_class cls, ets_field p_field, ets_boolean isStatic);
191 #endif
192     ets_int (*ThrowError)(EtsEnv *env, ets_error obj);
193     ets_int (*ThrowErrorNew)(EtsEnv *env, ets_class cls, const char *message);
194     ets_error (*ErrorOccurred)(EtsEnv *env);
195     void (*ErrorDescribe)(EtsEnv *env);
196     void (*ErrorClear)(EtsEnv *env);
197     void (*FatalError)(EtsEnv *env, const char *message);
198     ets_int (*PushLocalFrame)(EtsEnv *env, ets_int capacity);
199     ets_object (*PopLocalFrame)(EtsEnv *env, ets_object result);
200     ets_object (*NewGlobalRef)(EtsEnv *env, ets_object obj);
201     void (*DeleteGlobalRef)(EtsEnv *env, ets_object globalRef);
202     void (*DeleteLocalRef)(EtsEnv *env, ets_object localRef);
203     ets_boolean (*IsSameObject)(EtsEnv *env, ets_object ref1, ets_object ref2);
204     ets_object (*NewLocalRef)(EtsEnv *env, ets_object ref);
205     ets_int (*EnsureLocalCapacity)(EtsEnv *env, ets_int capacity);
206     ets_object (*AllocObject)(EtsEnv *env, ets_class cls);
207     ets_object (*NewObject)(EtsEnv *env, ets_class cls, ets_method p_method, ...);
208     ets_object (*NewObjectList)(EtsEnv *env, ets_class cls, ets_method p_method, va_list args);
209     ets_object (*NewObjectArray)(EtsEnv *env, ets_class cls, ets_method p_method, const ets_value *args);
210     ets_class (*GetObjectClass)(EtsEnv *env, ets_object obj);
211     ets_boolean (*IsInstanceOf)(EtsEnv *env, ets_object obj, ets_class cls);
212     ets_method (*Getp_method)(EtsEnv *env, ets_class cls, const char *name, const char *sig);
213     ets_object (*CallObjectMethod)(EtsEnv *env, ets_object obj, ets_method p_method, ...);
214     ets_object (*CallObjectMethodList)(EtsEnv *env, ets_object obj, ets_method p_method, va_list args);
215     ets_object (*CallObjectMethodArray)(EtsEnv *env, ets_object obj, ets_method p_method, const ets_value *args);
216     ets_boolean (*CallBooleanMethod)(EtsEnv *env, ets_object obj, ets_method p_method, ...);
217     ets_boolean (*CallBooleanMethodList)(EtsEnv *env, ets_object obj, ets_method p_method, va_list args);
218     ets_boolean (*CallBooleanMethodArray)(EtsEnv *env, ets_object obj, ets_method p_method, const ets_value *args);
219     ets_byte (*CallByteMethod)(EtsEnv *env, ets_object obj, ets_method p_method, ...);
220     ets_byte (*CallByteMethodList)(EtsEnv *env, ets_object obj, ets_method p_method, va_list args);
221     ets_byte (*CallByteMethodArray)(EtsEnv *env, ets_object obj, ets_method p_method, const ets_value *args);
222     ets_char (*CallCharMethod)(EtsEnv *env, ets_object obj, ets_method p_method, ...);
223     ets_char (*CallCharMethodList)(EtsEnv *env, ets_object obj, ets_method p_method, va_list args);
224     ets_char (*CallCharMethodArray)(EtsEnv *env, ets_object obj, ets_method p_method, const ets_value *args);
225     ets_short (*CallShortMethod)(EtsEnv *env, ets_object obj, ets_method p_method, ...);
226     ets_short (*CallShortMethodList)(EtsEnv *env, ets_object obj, ets_method p_method, va_list args);
227     ets_short (*CallShortMethodArray)(EtsEnv *env, ets_object obj, ets_method p_method, const ets_value *args);
228     ets_int (*CallIntMethod)(EtsEnv *env, ets_object obj, ets_method p_method, ...);
229     ets_int (*CallIntMethodList)(EtsEnv *env, ets_object obj, ets_method p_method, va_list args);
230     ets_int (*CallIntMethodArray)(EtsEnv *env, ets_object obj, ets_method p_method, const ets_value *args);
231     ets_long (*CallLongMethod)(EtsEnv *env, ets_object obj, ets_method p_method, ...);
232     ets_long (*CallLongMethodList)(EtsEnv *env, ets_object obj, ets_method p_method, va_list args);
233     ets_long (*CallLongMethodArray)(EtsEnv *env, ets_object obj, ets_method p_method, const ets_value *args);
234     ets_float (*CallFloatMethod)(EtsEnv *env, ets_object obj, ets_method p_method, ...);
235     ets_float (*CallFloatMethodList)(EtsEnv *env, ets_object obj, ets_method p_method, va_list args);
236     ets_float (*CallFloatMethodArray)(EtsEnv *env, ets_object obj, ets_method p_method, const ets_value *args);
237     ets_double (*CallDoubleMethod)(EtsEnv *env, ets_object obj, ets_method p_method, ...);
238     ets_double (*CallDoubleMethodList)(EtsEnv *env, ets_object obj, ets_method p_method, va_list args);
239     ets_double (*CallDoubleMethodArray)(EtsEnv *env, ets_object obj, ets_method p_method, const ets_value *args);
240     void (*CallVoidMethod)(EtsEnv *env, ets_object obj, ets_method p_method, ...);
241     void (*CallVoidMethodList)(EtsEnv *env, ets_object obj, ets_method p_method, va_list args);
242     void (*CallVoidMethodArray)(EtsEnv *env, ets_object obj, ets_method p_method, const ets_value *args);
243 
244     ets_object (*CallNonvirtualObjectMethod)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method, ...);
245     ets_object (*CallNonvirtualObjectMethodList)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
246                                                  va_list args);
247     ets_object (*CallNonvirtualObjectMethodArray)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
248                                                   const ets_value *args);
249     ets_boolean (*CallNonvirtualBooleanMethod)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method, ...);
250     ets_boolean (*CallNonvirtualBooleanMethodList)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
251                                                    va_list args);
252     ets_boolean (*CallNonvirtualBooleanMethodArray)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
253                                                     const ets_value *args);
254     ets_byte (*CallNonvirtualByteMethod)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method, ...);
255     ets_byte (*CallNonvirtualByteMethodList)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
256                                              va_list args);
257     ets_byte (*CallNonvirtualByteMethodArray)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
258                                               const ets_value *args);
259     ets_char (*CallNonvirtualCharMethod)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method, ...);
260     ets_char (*CallNonvirtualCharMethodList)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
261                                              va_list args);
262     ets_char (*CallNonvirtualCharMethodArray)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
263                                               const ets_value *args);
264     ets_short (*CallNonvirtualShortMethod)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method, ...);
265     ets_short (*CallNonvirtualShortMethodList)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
266                                                va_list args);
267     ets_short (*CallNonvirtualShortMethodArray)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
268                                                 const ets_value *args);
269     ets_int (*CallNonvirtualIntMethod)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method, ...);
270     ets_int (*CallNonvirtualIntMethodList)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
271                                            va_list args);
272     ets_int (*CallNonvirtualIntMethodArray)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
273                                             const ets_value *args);
274     ets_long (*CallNonvirtualLongMethod)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method, ...);
275     ets_long (*CallNonvirtualLongMethodList)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
276                                              va_list args);
277     ets_long (*CallNonvirtualLongMethodArray)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
278                                               const ets_value *args);
279     ets_float (*CallNonvirtualFloatMethod)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method, ...);
280     ets_float (*CallNonvirtualFloatMethodList)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
281                                                va_list args);
282     ets_float (*CallNonvirtualFloatMethodArray)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
283                                                 const ets_value *args);
284     ets_double (*CallNonvirtualDoubleMethod)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method, ...);
285     ets_double (*CallNonvirtualDoubleMethodList)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
286                                                  va_list args);
287     ets_double (*CallNonvirtualDoubleMethodArray)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
288                                                   const ets_value *args);
289     void (*CallNonvirtualVoidMethod)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method, ...);
290     void (*CallNonvirtualVoidMethodList)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method, va_list args);
291     void (*CallNonvirtualVoidMethodArray)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
292                                           const ets_value *args);
293     ets_field (*Getp_field)(EtsEnv *env, ets_class cls, const char *name, const char *sig);
294     ets_object (*GetObjectField)(EtsEnv *env, ets_object obj, ets_field p_field);
295     ets_boolean (*GetBooleanField)(EtsEnv *env, ets_object obj, ets_field p_field);
296     ets_byte (*GetByteField)(EtsEnv *env, ets_object obj, ets_field p_field);
297     ets_char (*GetCharField)(EtsEnv *env, ets_object obj, ets_field p_field);
298     ets_short (*GetShortField)(EtsEnv *env, ets_object obj, ets_field p_field);
299     ets_int (*GetIntField)(EtsEnv *env, ets_object obj, ets_field p_field);
300     ets_long (*GetLongField)(EtsEnv *env, ets_object obj, ets_field p_field);
301     ets_float (*GetFloatField)(EtsEnv *env, ets_object obj, ets_field p_field);
302     ets_double (*GetDoubleField)(EtsEnv *env, ets_object obj, ets_field p_field);
303     void (*SetObjectField)(EtsEnv *env, ets_object obj, ets_field p_field, ets_object value);
304     void (*SetBooleanField)(EtsEnv *env, ets_object obj, ets_field p_field, ets_boolean value);
305     void (*SetByteField)(EtsEnv *env, ets_object obj, ets_field p_field, ets_byte value);
306     void (*SetCharField)(EtsEnv *env, ets_object obj, ets_field p_field, ets_char value);
307     void (*SetShortField)(EtsEnv *env, ets_object obj, ets_field p_field, ets_short value);
308     void (*SetIntField)(EtsEnv *env, ets_object obj, ets_field p_field, ets_int value);
309     void (*SetLongField)(EtsEnv *env, ets_object obj, ets_field p_field, ets_long value);
310     void (*SetFloatField)(EtsEnv *env, ets_object obj, ets_field p_field, ets_float value);
311     void (*SetDoubleField)(EtsEnv *env, ets_object obj, ets_field p_field, ets_double value);
312     ets_method (*GetStaticp_method)(EtsEnv *env, ets_class cls, const char *name, const char *sig);
313     ets_object (*CallStaticObjectMethod)(EtsEnv *env, ets_class cls, ets_method p_method, ...);
314     ets_object (*CallStaticObjectMethodList)(EtsEnv *env, ets_class cls, ets_method p_method, va_list args);
315     ets_object (*CallStaticObjectMethodArray)(EtsEnv *env, ets_class cls, ets_method p_method, ets_value *args);
316     ets_boolean (*CallStaticBooleanMethod)(EtsEnv *env, ets_class cls, ets_method p_method, ...);
317     ets_boolean (*CallStaticBooleanMethodList)(EtsEnv *env, ets_class cls, ets_method p_method, va_list args);
318     ets_boolean (*CallStaticBooleanMethodArray)(EtsEnv *env, ets_class cls, ets_method p_method, ets_value *args);
319     ets_byte (*CallStaticByteMethod)(EtsEnv *env, ets_class cls, ets_method p_method, ...);
320     ets_byte (*CallStaticByteMethodList)(EtsEnv *env, ets_class cls, ets_method p_method, va_list args);
321     ets_byte (*CallStaticByteMethodArray)(EtsEnv *env, ets_class cls, ets_method p_method, ets_value *args);
322     ets_char (*CallStaticCharMethod)(EtsEnv *env, ets_class cls, ets_method p_method, ...);
323     ets_char (*CallStaticCharMethodList)(EtsEnv *env, ets_class cls, ets_method p_method, va_list args);
324     ets_char (*CallStaticCharMethodArray)(EtsEnv *env, ets_class cls, ets_method p_method, ets_value *args);
325     ets_short (*CallStaticShortMethod)(EtsEnv *env, ets_class cls, ets_method p_method, ...);
326     ets_short (*CallStaticShortMethodList)(EtsEnv *env, ets_class cls, ets_method p_method, va_list args);
327     ets_short (*CallStaticShortMethodArray)(EtsEnv *env, ets_class cls, ets_method p_method, ets_value *args);
328     ets_int (*CallStaticIntMethod)(EtsEnv *env, ets_class cls, ets_method p_method, ...);
329     ets_int (*CallStaticIntMethodList)(EtsEnv *env, ets_class cls, ets_method p_method, va_list args);
330     ets_int (*CallStaticIntMethodArray)(EtsEnv *env, ets_class cls, ets_method p_method, ets_value *args);
331     ets_long (*CallStaticLongMethod)(EtsEnv *env, ets_class cls, ets_method p_method, ...);
332     ets_long (*CallStaticLongMethodList)(EtsEnv *env, ets_class cls, ets_method p_method, va_list args);
333     ets_long (*CallStaticLongMethodArray)(EtsEnv *env, ets_class cls, ets_method p_method, ets_value *args);
334     ets_float (*CallStaticFloatMethod)(EtsEnv *env, ets_class cls, ets_method p_method, ...);
335     ets_float (*CallStaticFloatMethodList)(EtsEnv *env, ets_class cls, ets_method p_method, va_list args);
336     ets_float (*CallStaticFloatMethodArray)(EtsEnv *env, ets_class cls, ets_method p_method, ets_value *args);
337     ets_double (*CallStaticDoubleMethod)(EtsEnv *env, ets_class cls, ets_method p_method, ...);
338     ets_double (*CallStaticDoubleMethodList)(EtsEnv *env, ets_class cls, ets_method p_method, va_list args);
339     ets_double (*CallStaticDoubleMethodArray)(EtsEnv *env, ets_class cls, ets_method p_method, ets_value *args);
340     void (*CallStaticVoidMethod)(EtsEnv *env, ets_class cls, ets_method p_method, ...);
341     void (*CallStaticVoidMethodList)(EtsEnv *env, ets_class cls, ets_method p_method, va_list args);
342     void (*CallStaticVoidMethodArray)(EtsEnv *env, ets_class cls, ets_method p_method, ets_value *args);
343     ets_field (*GetStaticp_field)(EtsEnv *env, ets_class cls, const char *name, const char *sig);
344     ets_object (*GetStaticObjectField)(EtsEnv *env, ets_class cls, ets_field p_field);
345     ets_boolean (*GetStaticBooleanField)(EtsEnv *env, ets_class cls, ets_field p_field);
346     ets_byte (*GetStaticByteField)(EtsEnv *env, ets_class cls, ets_field p_field);
347     ets_char (*GetStaticCharField)(EtsEnv *env, ets_class cls, ets_field p_field);
348     ets_short (*GetStaticShortField)(EtsEnv *env, ets_class cls, ets_field p_field);
349     ets_int (*GetStaticIntField)(EtsEnv *env, ets_class cls, ets_field p_field);
350     ets_long (*GetStaticLongField)(EtsEnv *env, ets_class cls, ets_field p_field);
351     ets_float (*GetStaticFloatField)(EtsEnv *env, ets_class cls, ets_field p_field);
352     ets_double (*GetStaticDoubleField)(EtsEnv *env, ets_class cls, ets_field p_field);
353     void (*SetStaticObjectField)(EtsEnv *env, ets_class cls, ets_field p_field, ets_object value);
354     void (*SetStaticBooleanField)(EtsEnv *env, ets_class cls, ets_field p_field, ets_boolean value);
355     void (*SetStaticByteField)(EtsEnv *env, ets_class cls, ets_field p_field, ets_byte value);
356     void (*SetStaticCharField)(EtsEnv *env, ets_class cls, ets_field p_field, ets_char value);
357     void (*SetStaticShortField)(EtsEnv *env, ets_class cls, ets_field p_field, ets_short value);
358     void (*SetStaticIntField)(EtsEnv *env, ets_class cls, ets_field p_field, ets_int value);
359     void (*SetStaticLongField)(EtsEnv *env, ets_class cls, ets_field p_field, ets_long value);
360     void (*SetStaticFloatField)(EtsEnv *env, ets_class cls, ets_field p_field, ets_float value);
361     void (*SetStaticDoubleField)(EtsEnv *env, ets_class cls, ets_field p_field, ets_double value);
362     ets_string (*NewString)(EtsEnv *env, const ets_char *unicodeChars, ets_size len);
363     ets_size (*GetStringLength)(EtsEnv *env, ets_string string);
364     const ets_char *(*GetStringChars)(EtsEnv *env, ets_string string, ets_boolean *isCopy);
365     void (*ReleaseStringChars)(EtsEnv *env, ets_string string, const ets_char *chars);
366     ets_string (*NewStringUTF)(EtsEnv *env, const char *bytes);
367     ets_size (*GetStringUTFLength)(EtsEnv *env, ets_string string);
368     const char *(*GetStringUTFChars)(EtsEnv *env, ets_string string, ets_boolean *isCopy);
369     void (*ReleaseStringUTFChars)(EtsEnv *env, ets_string string, const char *utf);
370     ets_size (*GetArrayLength)(EtsEnv *env, ets_array array);
371     ets_objectArray (*NewObjectsArray)(EtsEnv *env, ets_size length, ets_class element_class,
372                                       ets_object initial_element);
373     ets_object (*GetObjectArrayElement)(EtsEnv *env, ets_objectArray array, ets_size index);
374     void (*SetObjectArrayElement)(EtsEnv *env, ets_objectArray array, ets_size index, ets_object value);
375     ets_booleanArray (*NewBooleanArray)(EtsEnv *env, ets_size length);
376     ets_byteArray (*NewByteArray)(EtsEnv *env, ets_size length);
377     ets_charArray (*NewCharArray)(EtsEnv *env, ets_size length);
378     ets_shortArray (*NewShortArray)(EtsEnv *env, ets_size length);
379     ets_intArray (*NewIntArray)(EtsEnv *env, ets_size length);
380     ets_longArray (*NewLongArray)(EtsEnv *env, ets_size length);
381     ets_floatArray (*NewFloatArray)(EtsEnv *env, ets_size length);
382     ets_doubleArray (*NewDoubleArray)(EtsEnv *env, ets_size length);
383     ets_boolean *(*PinBooleanArray)(EtsEnv *env, ets_booleanArray array);
384     ets_byte *(*PinByteArray)(EtsEnv *env, ets_byteArray array);
385     ets_char *(*PinCharArray)(EtsEnv *env, ets_charArray array);
386     ets_short *(*PinShortArray)(EtsEnv *env, ets_shortArray array);
387     ets_int *(*PinIntArray)(EtsEnv *env, ets_intArray array);
388     ets_long *(*PinLongArray)(EtsEnv *env, ets_longArray array);
389     ets_float *(*PinFloatArray)(EtsEnv *env, ets_floatArray array);
390     ets_double *(*PinDoubleArray)(EtsEnv *env, ets_doubleArray array);
391     void (*UnpinBooleanArray)(EtsEnv *env, ets_booleanArray array);
392     void (*UnpinByteArray)(EtsEnv *env, ets_byteArray array);
393     void (*UnpinCharArray)(EtsEnv *env, ets_charArray array);
394     void (*UnpinShortArray)(EtsEnv *env, ets_shortArray array);
395     void (*UnpinIntArray)(EtsEnv *env, ets_intArray array);
396     void (*UnpinLongArray)(EtsEnv *env, ets_longArray array);
397     void (*UnpinFloatArray)(EtsEnv *env, ets_floatArray array);
398     void (*UnpinDoubleArray)(EtsEnv *env, ets_doubleArray array);
399     void (*GetBooleanArrayRegion)(EtsEnv *env, ets_booleanArray array, ets_size start, ets_size len, ets_boolean *buf);
400     void (*GetByteArrayRegion)(EtsEnv *env, ets_byteArray array, ets_size start, ets_size len, ets_byte *buf);
401     void (*GetCharArrayRegion)(EtsEnv *env, ets_charArray array, ets_size start, ets_size len, ets_char *buf);
402     void (*GetShortArrayRegion)(EtsEnv *env, ets_shortArray array, ets_size start, ets_size len, ets_short *buf);
403     void (*GetIntArrayRegion)(EtsEnv *env, ets_intArray array, ets_size start, ets_size len, ets_int *buf);
404     void (*GetLongArrayRegion)(EtsEnv *env, ets_longArray array, ets_size start, ets_size len, ets_long *buf);
405     void (*GetFloatArrayRegion)(EtsEnv *env, ets_floatArray array, ets_size start, ets_size len, ets_float *buf);
406     void (*GetDoubleArrayRegion)(EtsEnv *env, ets_doubleArray array, ets_size start, ets_size len, ets_double *buf);
407     void (*SetBooleanArrayRegion)(EtsEnv *env, ets_booleanArray array, ets_size start, ets_size len,
408                                   const ets_boolean *buf);
409     void (*SetByteArrayRegion)(EtsEnv *env, ets_byteArray array, ets_size start, ets_size len, const ets_byte *buf);
410     void (*SetCharArrayRegion)(EtsEnv *env, ets_charArray array, ets_size start, ets_size len, const ets_char *buf);
411     void (*SetShortArrayRegion)(EtsEnv *env, ets_shortArray array, ets_size start, ets_size len, const ets_short *buf);
412     void (*SetIntArrayRegion)(EtsEnv *env, ets_intArray array, ets_size start, ets_size len, const ets_int *buf);
413     void (*SetLongArrayRegion)(EtsEnv *env, ets_longArray array, ets_size start, ets_size len, const ets_long *buf);
414     void (*SetFloatArrayRegion)(EtsEnv *env, ets_floatArray array, ets_size start, ets_size len, const ets_float *buf);
415     void (*SetDoubleArrayRegion)(EtsEnv *env, ets_doubleArray array, ets_size start, ets_size len,
416                                  const ets_double *buf);
417     ets_int (*RegisterNatives)(EtsEnv *env, ets_class cls, const EtsNativeMethod *methods, ets_int nMethods);
418     ets_int (*UnregisterNatives)(EtsEnv *env, ets_class cls);
419     ets_int (*GetEtsVM)(EtsEnv *env, EtsVM **vm);
420     void (*GetStringRegion)(EtsEnv *env, ets_string str, ets_size start, ets_size len, ets_char *buf);
421     void (*GetStringUTFRegion)(EtsEnv *env, ets_string str, ets_size start, ets_size len, char *buf);
422     ets_weak (*NewWeakGlobalRef)(EtsEnv *env, ets_object obj);
423     void (*DeleteWeakGlobalRef)(EtsEnv *env, ets_weak obj);
424     ets_boolean (*ErrorCheck)(EtsEnv *env);
425 #ifdef ETS_NAPI_DESIGN_FINISHED
426     ets_object (*NewDirectByteBuffer)(EtsEnv *env, void *address, ets_long capacity);
427     void *(*GetDirectBufferAddress)(EtsEnv *env, ets_object buf);
428     ets_long (*GetDirectBufferCapacity)(EtsEnv *env, ets_object buf);
429 #endif
430     ets_objectRefType (*GetObjectRefType)(EtsEnv *env, ets_object obj);
431 
432     /* 227 methods */
433 
434     // Promise API
435     ets_status (*PromiseCreate)(EtsEnv *env, ets_deferred *deferred, ets_object *promise);
436     ets_status (*DeferredResolve)(EtsEnv *env, ets_deferred deferred, ets_object resolution);
437     ets_status (*DeferredReject)(EtsEnv *env, ets_deferred deferred, ets_object rejection);
438 };
439 // clang-format on
440 
441 // Invocation API Functions
442 typedef enum {
443     ETS_LOG_LEVEL,
444     ETS_MOBILE_LOG,
445     ETS_BOOT_FILE,
446     ETS_AOT_FILE,
447     ETS_ARK_FILE,
448     ETS_JIT,
449     ETS_NO_JIT,
450     ETS_AOT,
451     ETS_NO_AOT,
452     ETS_GC_TRIGGER_TYPE,
453     ETS_GC_TYPE,
454     ETS_RUN_GC_IN_PLACE,
455     ETS_INTERPRETER_TYPE,
456     ETS_NATIVE_LIBRARY_PATH
457 } EtsOptionType;
458 
459 typedef struct EtsVMOption {
460     EtsOptionType option;
461     const void *extraInfo;
462 } EtsVMOption;
463 
464 typedef struct EtsVMInitArgs {
465     ets_int version;
466     ets_int nOptions;
467     EtsVMOption *options;
468 } EtsVMInitArgs;
469 
470 typedef enum {
471     ETS_MOBILE_LOG_LEVEL_UNKNOWN = 0,
472     ETS_MOBILE_LOG_LEVEL_DEFAULT,
473     ETS_MOBILE_LOG_LEVEL_VERBOSE,
474     ETS_MOBILE_LOG_LEVEL_DEBUG,
475     ETS_MOBILE_LOG_LEVEL_INFO,
476     ETS_MOBILE_LOG_LEVEL_WARN,
477     ETS_MOBILE_LOG_LEVEL_ERROR,
478     ETS_MOBILE_LOG_LEVEL_FATAL,
479     ETS_MOBILE_LOG_LEVEL_SILENT
480 } EtsMobileLogggerLevel;
481 
482 #ifdef __cplusplus
483 extern "C" {
484 #endif
485 
486 #define ETS_EXPORT __attribute__((visibility("default")))
487 #define ETS_IMPORT
488 #define ETS_CALL
489 
490 ETS_EXPORT ets_int ETS_GetDefaultVMInitArgs(EtsVMInitArgs *vmArgs);
491 ETS_EXPORT ets_int ETS_GetCreatedVMs(EtsVM **vmBuf, ets_size bufLen, ets_size *nVms);
492 ETS_EXPORT ets_int ETS_CreateVM(EtsVM **pVm, EtsEnv **pEnv, EtsVMInitArgs *vmArgs);
493 
494 #ifdef __cplusplus
495 }
496 #endif
497 
498 struct ETS_InvokeInterface {
499     ets_int (*DestroyEtsVM)(EtsVM *vm);
500     ets_int (*GetEnv)(EtsVM *vm, EtsEnv **pEnv, ets_int version);
501 };
502 
503 struct __EtsVM {
504     // NOLINTNEXTLINE(misc-non-private-member-variables-in-classes)
505     const struct ETS_InvokeInterface *invoke_interface;
506 
507 #ifdef __cplusplus
DestroyEtsVM__EtsVM508     ets_int DestroyEtsVM()
509     {
510         return invoke_interface->DestroyEtsVM(this);
511     }
512 
GetEnv__EtsVM513     ets_int GetEnv(EtsEnv **pEnv, ets_int version)
514     {
515         return invoke_interface->GetEnv(this, pEnv, version);
516     }
517 #endif
518 };
519 
520 struct __EtsEnv {
521     // NOLINTNEXTLINE(misc-non-private-member-variables-in-classes)
522     const struct ETS_NativeInterface *native_interface;
523 
524 #ifdef __cplusplus
525 
GetVersion__EtsEnv526     ets_int GetVersion()
527     {
528         return native_interface->GetVersion(this);
529     }
530     // DefineClass,
FindClass__EtsEnv531     ets_class FindClass(const char *name)
532     {
533         return native_interface->FindClass(this, name);
534     }
535     // FromReflectedMethod,
536     // FromReflectedField,
537     // ToReflectedMethod,
GetSuperclass__EtsEnv538     ets_class GetSuperclass(ets_class cls)
539     {
540         return native_interface->GetSuperclass(this, cls);
541     }
IsAssignableFrom__EtsEnv542     ets_boolean IsAssignableFrom(ets_class cls1, ets_class cls2)
543     {
544         return native_interface->IsAssignableFrom(this, cls1, cls2);
545     }
546     // ToReflectedField,
ThrowError__EtsEnv547     ets_int ThrowError(ets_error obj)
548     {
549         return native_interface->ThrowError(this, obj);
550     }
ThrowErrorNew__EtsEnv551     ets_int ThrowErrorNew(ets_class cls, const char *message)
552     {
553         return native_interface->ThrowErrorNew(this, cls, message);
554     }
ErrorOccurred__EtsEnv555     ets_error ErrorOccurred()
556     {
557         return native_interface->ErrorOccurred(this);
558     }
ErrorDescribe__EtsEnv559     void ErrorDescribe()
560     {
561         native_interface->ErrorDescribe(this);
562     }
ErrorClear__EtsEnv563     void ErrorClear()
564     {
565         native_interface->ErrorClear(this);
566     }
FatalError__EtsEnv567     void FatalError(const char *message)
568     {
569         native_interface->FatalError(this, message);
570     }
PushLocalFrame__EtsEnv571     ets_int PushLocalFrame(ets_int capacity)
572     {
573         return native_interface->PushLocalFrame(this, capacity);
574     }
PopLocalFrame__EtsEnv575     ets_object PopLocalFrame(ets_object result)
576     {
577         return native_interface->PopLocalFrame(this, result);
578     }
NewGlobalRef__EtsEnv579     ets_object NewGlobalRef(ets_object obj)
580     {
581         return native_interface->NewGlobalRef(this, obj);
582     }
DeleteGlobalRef__EtsEnv583     void DeleteGlobalRef(ets_object globalRef)
584     {
585         native_interface->DeleteGlobalRef(this, globalRef);
586     }
DeleteLocalRef__EtsEnv587     void DeleteLocalRef(ets_object localRef)
588     {
589         native_interface->DeleteLocalRef(this, localRef);
590     }
IsSameObject__EtsEnv591     ets_boolean IsSameObject(ets_object ref1, ets_object ref2)
592     {
593         return native_interface->IsSameObject(this, ref1, ref2);
594     }
NewLocalRef__EtsEnv595     ets_object NewLocalRef(ets_object ref)
596     {
597         return native_interface->NewLocalRef(this, ref);
598     }
EnsureLocalCapacity__EtsEnv599     ets_int EnsureLocalCapacity(ets_int capacity)
600     {
601         return native_interface->EnsureLocalCapacity(this, capacity);
602     }
AllocObject__EtsEnv603     ets_object AllocObject(ets_class cls)
604     {
605         return native_interface->AllocObject(this, cls);
606     }
NewObject__EtsEnv607     ets_object NewObject(ets_class cls, ets_method p_method, ...)
608     {
609         va_list args;
610         va_start(args, p_method);
611         ets_object ret = native_interface->NewObjectList(this, cls, p_method, args);
612         va_end(args);
613         return ret;
614     }
NewObjectList__EtsEnv615     ets_object NewObjectList(ets_class cls, ets_method p_method, va_list args)
616     {
617         return native_interface->NewObjectList(this, cls, p_method, args);
618     }
NewObjectArray__EtsEnv619     ets_object NewObjectArray(ets_class cls, ets_method p_method, const ets_value *args)
620     {
621         return native_interface->NewObjectArray(this, cls, p_method, args);
622     }
GetObjectClass__EtsEnv623     ets_class GetObjectClass(ets_object obj)
624     {
625         return native_interface->GetObjectClass(this, obj);
626     }
IsInstanceOf__EtsEnv627     ets_boolean IsInstanceOf(ets_object obj, ets_class cls)
628     {
629         return native_interface->IsInstanceOf(this, obj, cls);
630     }
Getp_method__EtsEnv631     ets_method Getp_method(ets_class cls, const char *name, const char *sig)
632     {
633         return native_interface->Getp_method(this, cls, name, sig);
634     }
CallObjectMethod__EtsEnv635     ets_object CallObjectMethod(ets_object obj, ets_method method_id, ...)
636     {
637         va_list args;
638         va_start(args, method_id);
639         ets_object res = native_interface->CallObjectMethodList(this, obj, method_id, args);
640         va_end(args);
641         return res;
642     }
CallObjectMethodList__EtsEnv643     ets_object CallObjectMethodList(ets_object obj, ets_method method_id, va_list args)
644     {
645         return native_interface->CallObjectMethodList(this, obj, method_id, args);
646     }
CallObjectMethodArray__EtsEnv647     ets_object CallObjectMethodArray(ets_object obj, ets_method method_id, const ets_value *args)
648     {
649         return native_interface->CallObjectMethodArray(this, obj, method_id, args);
650     }
CallBooleanMethod__EtsEnv651     ets_boolean CallBooleanMethod(ets_object obj, ets_method method_id, ...)
652     {
653         va_list args;
654         va_start(args, method_id);
655         ets_boolean res = native_interface->CallBooleanMethodList(this, obj, method_id, args);
656         va_end(args);
657         return res;
658     }
CallBooleanMethodList__EtsEnv659     ets_boolean CallBooleanMethodList(ets_object obj, ets_method method_id, va_list args)
660     {
661         return native_interface->CallBooleanMethodList(this, obj, method_id, args);
662     }
CallBooleanMethodArray__EtsEnv663     ets_boolean CallBooleanMethodArray(ets_object obj, ets_method method_id, const ets_value *args)
664     {
665         return native_interface->CallBooleanMethodArray(this, obj, method_id, args);
666     }
CallByteMethod__EtsEnv667     ets_byte CallByteMethod(ets_object obj, ets_method method_id, ...)
668     {
669         va_list args;
670         va_start(args, method_id);
671         ets_byte res = native_interface->CallByteMethodList(this, obj, method_id, args);
672         va_end(args);
673         return res;
674     }
CallByteMethodList__EtsEnv675     ets_byte CallByteMethodList(ets_object obj, ets_method method_id, va_list args)
676     {
677         return native_interface->CallByteMethodList(this, obj, method_id, args);
678     }
CallByteMethodArray__EtsEnv679     ets_byte CallByteMethodArray(ets_object obj, ets_method method_id, const ets_value *args)
680     {
681         return native_interface->CallByteMethodArray(this, obj, method_id, args);
682     }
CallCharMethod__EtsEnv683     ets_char CallCharMethod(ets_object obj, ets_method method_id, ...)
684     {
685         va_list args;
686         va_start(args, method_id);
687         ets_char res = native_interface->CallCharMethodList(this, obj, method_id, args);
688         va_end(args);
689         return res;
690     }
CallCharMethodList__EtsEnv691     ets_char CallCharMethodList(ets_object obj, ets_method method_id, va_list args)
692     {
693         return native_interface->CallCharMethodList(this, obj, method_id, args);
694     }
CallCharMethodArray__EtsEnv695     ets_char CallCharMethodArray(ets_object obj, ets_method method_id, const ets_value *args)
696     {
697         return native_interface->CallCharMethodArray(this, obj, method_id, args);
698     }
CallShortMethod__EtsEnv699     ets_short CallShortMethod(ets_object obj, ets_method method_id, ...)
700     {
701         va_list args;
702         va_start(args, method_id);
703         ets_short res = native_interface->CallShortMethodList(this, obj, method_id, args);
704         va_end(args);
705         return res;
706     }
CallShortMethodList__EtsEnv707     ets_short CallShortMethodList(ets_object obj, ets_method method_id, va_list args)
708     {
709         return native_interface->CallShortMethodList(this, obj, method_id, args);
710     }
CallShortMethodArray__EtsEnv711     ets_short CallShortMethodArray(ets_object obj, ets_method method_id, const ets_value *args)
712     {
713         return native_interface->CallShortMethodArray(this, obj, method_id, args);
714     }
CallIntMethod__EtsEnv715     ets_int CallIntMethod(ets_object obj, ets_method method_id, ...)
716     {
717         va_list args;
718         va_start(args, method_id);
719         ets_int res = native_interface->CallIntMethodList(this, obj, method_id, args);
720         va_end(args);
721         return res;
722     }
CallIntMethodList__EtsEnv723     ets_int CallIntMethodList(ets_object obj, ets_method method_id, va_list args)
724     {
725         return native_interface->CallIntMethodList(this, obj, method_id, args);
726     }
CallIntMethodArray__EtsEnv727     ets_int CallIntMethodArray(ets_object obj, ets_method method_id, const ets_value *args)
728     {
729         return native_interface->CallIntMethodArray(this, obj, method_id, args);
730     }
CallLongMethod__EtsEnv731     ets_long CallLongMethod(ets_object obj, ets_method method_id, ...)
732     {
733         va_list args;
734         va_start(args, method_id);
735         ets_long res = native_interface->CallLongMethodList(this, obj, method_id, args);
736         va_end(args);
737         return res;
738     }
CallLongMethodList__EtsEnv739     ets_long CallLongMethodList(ets_object obj, ets_method method_id, va_list args)
740     {
741         return native_interface->CallLongMethodList(this, obj, method_id, args);
742     }
CallLongMethodArray__EtsEnv743     ets_long CallLongMethodArray(ets_object obj, ets_method method_id, const ets_value *args)
744     {
745         return native_interface->CallLongMethodArray(this, obj, method_id, args);
746     }
CallFloatMethod__EtsEnv747     ets_float CallFloatMethod(ets_object obj, ets_method method_id, ...)
748     {
749         va_list args;
750         va_start(args, method_id);
751         ets_float res = native_interface->CallFloatMethodList(this, obj, method_id, args);
752         va_end(args);
753         return res;
754     }
CallFloatMethodList__EtsEnv755     ets_float CallFloatMethodList(ets_object obj, ets_method method_id, va_list args)
756     {
757         return native_interface->CallFloatMethodList(this, obj, method_id, args);
758     }
CallFloatMethodArray__EtsEnv759     ets_float CallFloatMethodArray(ets_object obj, ets_method method_id, const ets_value *args)
760     {
761         return native_interface->CallFloatMethodArray(this, obj, method_id, args);
762     }
CallDoubleMethod__EtsEnv763     ets_double CallDoubleMethod(ets_object obj, ets_method method_id, ...)
764     {
765         va_list args;
766         va_start(args, method_id);
767         ets_double res = native_interface->CallDoubleMethodList(this, obj, method_id, args);
768         va_end(args);
769         return res;
770     }
CallDoubleMethodList__EtsEnv771     ets_double CallDoubleMethodList(ets_object obj, ets_method method_id, va_list args)
772     {
773         return native_interface->CallDoubleMethodList(this, obj, method_id, args);
774     }
CallDoubleMethodArray__EtsEnv775     ets_double CallDoubleMethodArray(ets_object obj, ets_method method_id, const ets_value *args)
776     {
777         return native_interface->CallDoubleMethodArray(this, obj, method_id, args);
778     }
CallVoidMethod__EtsEnv779     void CallVoidMethod(ets_object obj, ets_method method_id, ...)
780     {
781         va_list args;
782         va_start(args, method_id);
783         native_interface->CallVoidMethodList(this, obj, method_id, args);
784         va_end(args);
785     }
CallVoidMethodList__EtsEnv786     void CallVoidMethodList(ets_object obj, ets_method method_id, va_list args)
787     {
788         native_interface->CallVoidMethodList(this, obj, method_id, args);
789     }
CallVoidMethodArray__EtsEnv790     void CallVoidMethodArray(ets_object obj, ets_method method_id, const ets_value *args)
791     {
792         native_interface->CallVoidMethodArray(this, obj, method_id, args);
793     }
CallNonvirtualObjectMethod__EtsEnv794     ets_object CallNonvirtualObjectMethod(ets_object obj, ets_class cls, ets_method method_id, ...)
795     {
796         va_list args;
797         va_start(args, method_id);
798         ets_object res = native_interface->CallNonvirtualObjectMethodList(this, obj, cls, method_id, args);
799         va_end(args);
800         return res;
801     }
CallNonvirtualObjectMethodList__EtsEnv802     ets_object CallNonvirtualObjectMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args)
803     {
804         return native_interface->CallNonvirtualObjectMethodList(this, obj, cls, method_id, args);
805     }
CallNonvirtualObjectMethodArray__EtsEnv806     ets_object CallNonvirtualObjectMethodArray(ets_object obj, ets_class cls, ets_method method_id,
807                                                const ets_value *args)
808     {
809         return native_interface->CallNonvirtualObjectMethodArray(this, obj, cls, method_id, args);
810     }
CallNonvirtualBooleanMethod__EtsEnv811     ets_boolean CallNonvirtualBooleanMethod(ets_object obj, ets_class cls, ets_method method_id, ...)
812     {
813         va_list args;
814         va_start(args, method_id);
815         ets_boolean res = native_interface->CallNonvirtualBooleanMethodList(this, obj, cls, method_id, args);
816         va_end(args);
817         return res;
818     }
CallNonvirtualBooleanMethodList__EtsEnv819     ets_boolean CallNonvirtualBooleanMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args)
820     {
821         return native_interface->CallNonvirtualBooleanMethodList(this, obj, cls, method_id, args);
822     }
CallNonvirtualBooleanMethodArray__EtsEnv823     ets_boolean CallNonvirtualBooleanMethodArray(ets_object obj, ets_class cls, ets_method method_id,
824                                                  const ets_value *args)
825     {
826         return native_interface->CallNonvirtualBooleanMethodArray(this, obj, cls, method_id, args);
827     }
CallNonvirtualByteMethod__EtsEnv828     ets_byte CallNonvirtualByteMethod(ets_object obj, ets_class cls, ets_method method_id, ...)
829     {
830         va_list args;
831         va_start(args, method_id);
832         ets_byte res = native_interface->CallNonvirtualByteMethodList(this, obj, cls, method_id, args);
833         va_end(args);
834         return res;
835     }
CallNonvirtualByteMethodList__EtsEnv836     ets_byte CallNonvirtualByteMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args)
837     {
838         return native_interface->CallNonvirtualByteMethodList(this, obj, cls, method_id, args);
839     }
CallNonvirtualByteMethodArray__EtsEnv840     ets_byte CallNonvirtualByteMethodArray(ets_object obj, ets_class cls, ets_method method_id, const ets_value *args)
841     {
842         return native_interface->CallNonvirtualByteMethodArray(this, obj, cls, method_id, args);
843     }
CallNonvirtualCharMethod__EtsEnv844     ets_char CallNonvirtualCharMethod(ets_object obj, ets_class cls, ets_method method_id, ...)
845     {
846         va_list args;
847         va_start(args, method_id);
848         ets_char res = native_interface->CallNonvirtualCharMethodList(this, obj, cls, method_id, args);
849         va_end(args);
850         return res;
851     }
CallNonvirtualCharMethodList__EtsEnv852     ets_char CallNonvirtualCharMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args)
853     {
854         return native_interface->CallNonvirtualCharMethodList(this, obj, cls, method_id, args);
855     }
CallNonvirtualCharMethodArray__EtsEnv856     ets_char CallNonvirtualCharMethodArray(ets_object obj, ets_class cls, ets_method method_id, const ets_value *args)
857     {
858         return native_interface->CallNonvirtualCharMethodArray(this, obj, cls, method_id, args);
859     }
CallNonvirtualShortMethod__EtsEnv860     ets_short CallNonvirtualShortMethod(ets_object obj, ets_class cls, ets_method method_id, ...)
861     {
862         va_list args;
863         va_start(args, method_id);
864         ets_short res = native_interface->CallNonvirtualShortMethodList(this, obj, cls, method_id, args);
865         va_end(args);
866         return res;
867     }
CallNonvirtualShortMethodList__EtsEnv868     ets_short CallNonvirtualShortMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args)
869     {
870         return native_interface->CallNonvirtualShortMethodList(this, obj, cls, method_id, args);
871     }
CallNonvirtualShortMethodArray__EtsEnv872     ets_short CallNonvirtualShortMethodArray(ets_object obj, ets_class cls, ets_method method_id, const ets_value *args)
873     {
874         return native_interface->CallNonvirtualShortMethodArray(this, obj, cls, method_id, args);
875     }
CallNonvirtualIntMethod__EtsEnv876     ets_int CallNonvirtualIntMethod(ets_object obj, ets_class cls, ets_method method_id, ...)
877     {
878         va_list args;
879         va_start(args, method_id);
880         ets_int res = native_interface->CallNonvirtualIntMethodList(this, obj, cls, method_id, args);
881         va_end(args);
882         return res;
883     }
CallNonvirtualIntMethodList__EtsEnv884     ets_int CallNonvirtualIntMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args)
885     {
886         return native_interface->CallNonvirtualIntMethodList(this, obj, cls, method_id, args);
887     }
CallNonvirtualIntMethodArray__EtsEnv888     ets_int CallNonvirtualIntMethodArray(ets_object obj, ets_class cls, ets_method method_id, const ets_value *args)
889     {
890         return native_interface->CallNonvirtualIntMethodArray(this, obj, cls, method_id, args);
891     }
CallNonvirtualLongMethod__EtsEnv892     ets_long CallNonvirtualLongMethod(ets_object obj, ets_class cls, ets_method method_id, ...)
893     {
894         va_list args;
895         va_start(args, method_id);
896         ets_long res = native_interface->CallNonvirtualLongMethodList(this, obj, cls, method_id, args);
897         va_end(args);
898         return res;
899     }
CallNonvirtualLongMethodList__EtsEnv900     ets_long CallNonvirtualLongMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args)
901     {
902         return native_interface->CallNonvirtualLongMethodList(this, obj, cls, method_id, args);
903     }
CallNonvirtualLongMethodArray__EtsEnv904     ets_long CallNonvirtualLongMethodArray(ets_object obj, ets_class cls, ets_method method_id, const ets_value *args)
905     {
906         return native_interface->CallNonvirtualLongMethodArray(this, obj, cls, method_id, args);
907     }
CallNonvirtualFloatMethod__EtsEnv908     ets_float CallNonvirtualFloatMethod(ets_object obj, ets_class cls, ets_method method_id, ...)
909     {
910         va_list args;
911         va_start(args, method_id);
912         ets_float res = native_interface->CallNonvirtualFloatMethodList(this, obj, cls, method_id, args);
913         va_end(args);
914         return res;
915     }
CallNonvirtualFloatMethodList__EtsEnv916     ets_float CallNonvirtualFloatMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args)
917     {
918         return native_interface->CallNonvirtualFloatMethodList(this, obj, cls, method_id, args);
919     }
CallNonvirtualFloatMethodArray__EtsEnv920     ets_float CallNonvirtualFloatMethodArray(ets_object obj, ets_class cls, ets_method method_id, const ets_value *args)
921     {
922         return native_interface->CallNonvirtualFloatMethodArray(this, obj, cls, method_id, args);
923     }
CallNonvirtualDoubleMethod__EtsEnv924     ets_double CallNonvirtualDoubleMethod(ets_object obj, ets_class cls, ets_method method_id, ...)
925     {
926         va_list args;
927         va_start(args, method_id);
928         ets_double res = native_interface->CallNonvirtualDoubleMethodList(this, obj, cls, method_id, args);
929         va_end(args);
930         return res;
931     }
CallNonvirtualDoubleMethodList__EtsEnv932     ets_double CallNonvirtualDoubleMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args)
933     {
934         return native_interface->CallNonvirtualDoubleMethodList(this, obj, cls, method_id, args);
935     }
CallNonvirtualDoubleMethodArray__EtsEnv936     ets_double CallNonvirtualDoubleMethodArray(ets_object obj, ets_class cls, ets_method method_id,
937                                                const ets_value *args)
938     {
939         return native_interface->CallNonvirtualDoubleMethodArray(this, obj, cls, method_id, args);
940     }
CallNonvirtualVoidMethod__EtsEnv941     void CallNonvirtualVoidMethod(ets_object obj, ets_class cls, ets_method method_id, ...)
942     {
943         va_list args;
944         va_start(args, method_id);
945         native_interface->CallNonvirtualVoidMethodList(this, obj, cls, method_id, args);
946         va_end(args);
947     }
CallNonvirtualVoidMethodList__EtsEnv948     void CallNonvirtualVoidMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args)
949     {
950         native_interface->CallNonvirtualVoidMethodList(this, obj, cls, method_id, args);
951     }
CallNonvirtualVoidMethodArray__EtsEnv952     void CallNonvirtualVoidMethodArray(ets_object obj, ets_class cls, ets_method method_id, const ets_value *args)
953     {
954         native_interface->CallNonvirtualVoidMethodArray(this, obj, cls, method_id, args);
955     }
Getp_field__EtsEnv956     ets_field Getp_field(ets_class cls, const char *name, const char *sig)
957     {
958         return native_interface->Getp_field(this, cls, name, sig);
959     }
GetObjectField__EtsEnv960     ets_object GetObjectField(ets_object obj, ets_field p_field)
961     {
962         return native_interface->GetObjectField(this, obj, p_field);
963     }
GetBooleanField__EtsEnv964     ets_boolean GetBooleanField(ets_object obj, ets_field p_field)
965     {
966         return native_interface->GetBooleanField(this, obj, p_field);
967     }
GetByteField__EtsEnv968     ets_byte GetByteField(ets_object obj, ets_field p_field)
969     {
970         return native_interface->GetByteField(this, obj, p_field);
971     }
GetCharField__EtsEnv972     ets_char GetCharField(ets_object obj, ets_field p_field)
973     {
974         return native_interface->GetCharField(this, obj, p_field);
975     }
GetShortField__EtsEnv976     ets_short GetShortField(ets_object obj, ets_field p_field)
977     {
978         return native_interface->GetShortField(this, obj, p_field);
979     }
GetIntField__EtsEnv980     ets_int GetIntField(ets_object obj, ets_field p_field)
981     {
982         return native_interface->GetIntField(this, obj, p_field);
983     }
GetLongField__EtsEnv984     ets_long GetLongField(ets_object obj, ets_field p_field)
985     {
986         return native_interface->GetLongField(this, obj, p_field);
987     }
GetFloatField__EtsEnv988     ets_float GetFloatField(ets_object obj, ets_field p_field)
989     {
990         return native_interface->GetFloatField(this, obj, p_field);
991     }
GetDoubleField__EtsEnv992     ets_double GetDoubleField(ets_object obj, ets_field p_field)
993     {
994         return native_interface->GetDoubleField(this, obj, p_field);
995     }
SetObjectField__EtsEnv996     void SetObjectField(ets_object obj, ets_field p_field, ets_object value)
997     {
998         return native_interface->SetObjectField(this, obj, p_field, value);
999     }
SetBooleanField__EtsEnv1000     void SetBooleanField(ets_object obj, ets_field p_field, ets_boolean value)
1001     {
1002         return native_interface->SetBooleanField(this, obj, p_field, value);
1003     }
SetByteField__EtsEnv1004     void SetByteField(ets_object obj, ets_field p_field, ets_byte value)
1005     {
1006         return native_interface->SetByteField(this, obj, p_field, value);
1007     }
SetCharField__EtsEnv1008     void SetCharField(ets_object obj, ets_field p_field, ets_char value)
1009     {
1010         return native_interface->SetCharField(this, obj, p_field, value);
1011     }
SetShortField__EtsEnv1012     void SetShortField(ets_object obj, ets_field p_field, ets_short value)
1013     {
1014         return native_interface->SetShortField(this, obj, p_field, value);
1015     }
SetIntField__EtsEnv1016     void SetIntField(ets_object obj, ets_field p_field, ets_int value)
1017     {
1018         return native_interface->SetIntField(this, obj, p_field, value);
1019     }
SetLongField__EtsEnv1020     void SetLongField(ets_object obj, ets_field p_field, ets_long value)
1021     {
1022         return native_interface->SetLongField(this, obj, p_field, value);
1023     }
SetFloatField__EtsEnv1024     void SetFloatField(ets_object obj, ets_field p_field, ets_float value)
1025     {
1026         return native_interface->SetFloatField(this, obj, p_field, value);
1027     }
SetDoubleField__EtsEnv1028     void SetDoubleField(ets_object obj, ets_field p_field, ets_double value)
1029     {
1030         return native_interface->SetDoubleField(this, obj, p_field, value);
1031     }
GetStaticp_method__EtsEnv1032     ets_method GetStaticp_method(ets_class cls, const char *name, const char *sig)
1033     {
1034         return native_interface->GetStaticp_method(this, cls, name, sig);
1035     }
CallStaticObjectMethod__EtsEnv1036     ets_object CallStaticObjectMethod(ets_class cls, ets_method method_id, ...)
1037     {
1038         va_list args;
1039         va_start(args, method_id);
1040         ets_object res = native_interface->CallStaticObjectMethodList(this, cls, method_id, args);
1041         va_end(args);
1042         return res;
1043     }
CallStaticObjectMethodList__EtsEnv1044     ets_object CallStaticObjectMethodList(ets_class cls, ets_method method_id, va_list args)
1045     {
1046         return native_interface->CallStaticObjectMethodList(this, cls, method_id, args);
1047     }
CallStaticObjectMethodArray__EtsEnv1048     ets_object CallStaticObjectMethodArray(ets_class cls, ets_method method_id, ets_value *args)
1049     {
1050         return native_interface->CallStaticObjectMethodArray(this, cls, method_id, args);
1051     }
CallStaticBooleanMethod__EtsEnv1052     ets_boolean CallStaticBooleanMethod(ets_class cls, ets_method method_id, ...)
1053     {
1054         va_list args;
1055         va_start(args, method_id);
1056         ets_boolean res = native_interface->CallStaticBooleanMethodList(this, cls, method_id, args);
1057         va_end(args);
1058         return res;
1059     }
CallStaticBooleanMethodList__EtsEnv1060     ets_boolean CallStaticBooleanMethodList(ets_class cls, ets_method method_id, va_list args)
1061     {
1062         return native_interface->CallStaticBooleanMethodList(this, cls, method_id, args);
1063     }
CallStaticBooleanMethodArray__EtsEnv1064     ets_boolean CallStaticBooleanMethodArray(ets_class cls, ets_method method_id, ets_value *args)
1065     {
1066         return native_interface->CallStaticBooleanMethodArray(this, cls, method_id, args);
1067     }
CallStaticByteMethod__EtsEnv1068     ets_byte CallStaticByteMethod(ets_class cls, ets_method method_id, ...)
1069     {
1070         va_list args;
1071         va_start(args, method_id);
1072         ets_byte res = native_interface->CallStaticByteMethodList(this, cls, method_id, args);
1073         va_end(args);
1074         return res;
1075     }
CallStaticByteMethodList__EtsEnv1076     ets_byte CallStaticByteMethodList(ets_class cls, ets_method method_id, va_list args)
1077     {
1078         return native_interface->CallStaticByteMethodList(this, cls, method_id, args);
1079     }
CallStaticByteMethodArray__EtsEnv1080     ets_byte CallStaticByteMethodArray(ets_class cls, ets_method method_id, ets_value *args)
1081     {
1082         return native_interface->CallStaticByteMethodArray(this, cls, method_id, args);
1083     }
CallStaticCharMethod__EtsEnv1084     ets_char CallStaticCharMethod(ets_class cls, ets_method method_id, ...)
1085     {
1086         va_list args;
1087         va_start(args, method_id);
1088         ets_char res = native_interface->CallStaticCharMethodList(this, cls, method_id, args);
1089         va_end(args);
1090         return res;
1091     }
CallStaticCharMethodList__EtsEnv1092     ets_char CallStaticCharMethodList(ets_class cls, ets_method method_id, va_list args)
1093     {
1094         return native_interface->CallStaticCharMethodList(this, cls, method_id, args);
1095     }
CallStaticCharMethodArray__EtsEnv1096     ets_char CallStaticCharMethodArray(ets_class cls, ets_method method_id, ets_value *args)
1097     {
1098         return native_interface->CallStaticCharMethodArray(this, cls, method_id, args);
1099     }
CallStaticShortMethod__EtsEnv1100     ets_short CallStaticShortMethod(ets_class cls, ets_method method_id, ...)
1101     {
1102         va_list args;
1103         va_start(args, method_id);
1104         ets_short res = native_interface->CallStaticShortMethodList(this, cls, method_id, args);
1105         va_end(args);
1106         return res;
1107     }
CallStaticShortMethodList__EtsEnv1108     ets_short CallStaticShortMethodList(ets_class cls, ets_method method_id, va_list args)
1109     {
1110         return native_interface->CallStaticShortMethodList(this, cls, method_id, args);
1111     }
CallStaticShortMethodArray__EtsEnv1112     ets_short CallStaticShortMethodArray(ets_class cls, ets_method method_id, ets_value *args)
1113     {
1114         return native_interface->CallStaticShortMethodArray(this, cls, method_id, args);
1115     }
CallStaticIntMethod__EtsEnv1116     ets_int CallStaticIntMethod(ets_class cls, ets_method method_id, ...)
1117     {
1118         va_list args;
1119         va_start(args, method_id);
1120         ets_int res = native_interface->CallStaticIntMethodList(this, cls, method_id, args);
1121         va_end(args);
1122         return res;
1123     }
CallStaticIntMethodList__EtsEnv1124     ets_int CallStaticIntMethodList(ets_class cls, ets_method method_id, va_list args)
1125     {
1126         return native_interface->CallStaticIntMethodList(this, cls, method_id, args);
1127     }
CallStaticIntMethodArray__EtsEnv1128     ets_int CallStaticIntMethodArray(ets_class cls, ets_method method_id, ets_value *args)
1129     {
1130         return native_interface->CallStaticIntMethodArray(this, cls, method_id, args);
1131     }
CallStaticLongMethod__EtsEnv1132     ets_long CallStaticLongMethod(ets_class cls, ets_method method_id, ...)
1133     {
1134         va_list args;
1135         va_start(args, method_id);
1136         ets_long res = native_interface->CallStaticLongMethodList(this, cls, method_id, args);
1137         va_end(args);
1138         return res;
1139     }
CallStaticLongMethodList__EtsEnv1140     ets_long CallStaticLongMethodList(ets_class cls, ets_method method_id, va_list args)
1141     {
1142         return native_interface->CallStaticLongMethodList(this, cls, method_id, args);
1143     }
CallStaticLongMethodArray__EtsEnv1144     ets_long CallStaticLongMethodArray(ets_class cls, ets_method method_id, ets_value *args)
1145     {
1146         return native_interface->CallStaticLongMethodArray(this, cls, method_id, args);
1147     }
CallStaticFloatMethod__EtsEnv1148     ets_float CallStaticFloatMethod(ets_class cls, ets_method method_id, ...)
1149     {
1150         va_list args;
1151         va_start(args, method_id);
1152         ets_float res = native_interface->CallStaticFloatMethodList(this, cls, method_id, args);
1153         va_end(args);
1154         return res;
1155     }
CallStaticFloatMethodList__EtsEnv1156     ets_float CallStaticFloatMethodList(ets_class cls, ets_method method_id, va_list args)
1157     {
1158         return native_interface->CallStaticFloatMethodList(this, cls, method_id, args);
1159     }
CallStaticFloatMethodArray__EtsEnv1160     ets_float CallStaticFloatMethodArray(ets_class cls, ets_method method_id, ets_value *args)
1161     {
1162         return native_interface->CallStaticFloatMethodArray(this, cls, method_id, args);
1163     }
CallStaticDoubleMethod__EtsEnv1164     ets_double CallStaticDoubleMethod(ets_class cls, ets_method method_id, ...)
1165     {
1166         va_list args;
1167         va_start(args, method_id);
1168         ets_double res = native_interface->CallStaticDoubleMethodList(this, cls, method_id, args);
1169         va_end(args);
1170         return res;
1171     }
CallStaticDoubleMethodList__EtsEnv1172     ets_double CallStaticDoubleMethodList(ets_class cls, ets_method method_id, va_list args)
1173     {
1174         return native_interface->CallStaticDoubleMethodList(this, cls, method_id, args);
1175     }
CallStaticDoubleMethodArray__EtsEnv1176     ets_double CallStaticDoubleMethodArray(ets_class cls, ets_method method_id, ets_value *args)
1177     {
1178         return native_interface->CallStaticDoubleMethodArray(this, cls, method_id, args);
1179     }
CallStaticVoidMethod__EtsEnv1180     void CallStaticVoidMethod(ets_class cls, ets_method method_id, ...)
1181     {
1182         va_list args;
1183         va_start(args, method_id);
1184         native_interface->CallStaticVoidMethodList(this, cls, method_id, args);
1185         va_end(args);
1186     }
CallStaticVoidMethodList__EtsEnv1187     void CallStaticVoidMethodList(ets_class cls, ets_method method_id, va_list args)
1188     {
1189         native_interface->CallStaticVoidMethodList(this, cls, method_id, args);
1190     }
CallStaticVoidMethodArray__EtsEnv1191     void CallStaticVoidMethodArray(ets_class cls, ets_method method_id, ets_value *args)
1192     {
1193         native_interface->CallStaticVoidMethodArray(this, cls, method_id, args);
1194     }
GetStaticp_field__EtsEnv1195     ets_field GetStaticp_field(ets_class cls, const char *name, const char *sig)
1196     {
1197         return native_interface->GetStaticp_field(this, cls, name, sig);
1198     }
GetStaticObjectField__EtsEnv1199     ets_object GetStaticObjectField(ets_class cls, ets_field p_field)
1200     {
1201         return native_interface->GetStaticObjectField(this, cls, p_field);
1202     }
GetStaticBooleanField__EtsEnv1203     ets_boolean GetStaticBooleanField(ets_class cls, ets_field p_field)
1204     {
1205         return native_interface->GetStaticBooleanField(this, cls, p_field);
1206     }
GetStaticByteField__EtsEnv1207     ets_byte GetStaticByteField(ets_class cls, ets_field p_field)
1208     {
1209         return native_interface->GetStaticByteField(this, cls, p_field);
1210     }
GetStaticCharField__EtsEnv1211     ets_char GetStaticCharField(ets_class cls, ets_field p_field)
1212     {
1213         return native_interface->GetStaticCharField(this, cls, p_field);
1214     }
GetStaticShortField__EtsEnv1215     ets_short GetStaticShortField(ets_class cls, ets_field p_field)
1216     {
1217         return native_interface->GetStaticShortField(this, cls, p_field);
1218     }
GetStaticIntField__EtsEnv1219     ets_int GetStaticIntField(ets_class cls, ets_field p_field)
1220     {
1221         return native_interface->GetStaticIntField(this, cls, p_field);
1222     }
GetStaticLongField__EtsEnv1223     ets_long GetStaticLongField(ets_class cls, ets_field p_field)
1224     {
1225         return native_interface->GetStaticLongField(this, cls, p_field);
1226     }
GetStaticFloatField__EtsEnv1227     ets_float GetStaticFloatField(ets_class cls, ets_field p_field)
1228     {
1229         return native_interface->GetStaticFloatField(this, cls, p_field);
1230     }
GetStaticDoubleField__EtsEnv1231     ets_double GetStaticDoubleField(ets_class cls, ets_field p_field)
1232     {
1233         return native_interface->GetStaticDoubleField(this, cls, p_field);
1234     }
SetStaticObjectField__EtsEnv1235     void SetStaticObjectField(ets_class cls, ets_field p_field, ets_object value)
1236     {
1237         return native_interface->SetStaticObjectField(this, cls, p_field, value);
1238     }
SetStaticBooleanField__EtsEnv1239     void SetStaticBooleanField(ets_class cls, ets_field p_field, ets_boolean value)
1240     {
1241         return native_interface->SetStaticBooleanField(this, cls, p_field, value);
1242     }
SetStaticByteField__EtsEnv1243     void SetStaticByteField(ets_class cls, ets_field p_field, ets_byte value)
1244     {
1245         return native_interface->SetStaticByteField(this, cls, p_field, value);
1246     }
SetStaticCharField__EtsEnv1247     void SetStaticCharField(ets_class cls, ets_field p_field, ets_char value)
1248     {
1249         return native_interface->SetStaticCharField(this, cls, p_field, value);
1250     }
SetStaticShortField__EtsEnv1251     void SetStaticShortField(ets_class cls, ets_field p_field, ets_short value)
1252     {
1253         return native_interface->SetStaticShortField(this, cls, p_field, value);
1254     }
SetStaticIntField__EtsEnv1255     void SetStaticIntField(ets_class cls, ets_field p_field, ets_int value)
1256     {
1257         return native_interface->SetStaticIntField(this, cls, p_field, value);
1258     }
SetStaticLongField__EtsEnv1259     void SetStaticLongField(ets_class cls, ets_field p_field, ets_long value)
1260     {
1261         return native_interface->SetStaticLongField(this, cls, p_field, value);
1262     }
SetStaticFloatField__EtsEnv1263     void SetStaticFloatField(ets_class cls, ets_field p_field, ets_float value)
1264     {
1265         return native_interface->SetStaticFloatField(this, cls, p_field, value);
1266     }
SetStaticDoubleField__EtsEnv1267     void SetStaticDoubleField(ets_class cls, ets_field p_field, ets_double value)
1268     {
1269         return native_interface->SetStaticDoubleField(this, cls, p_field, value);
1270     }
NewString__EtsEnv1271     ets_string NewString(const ets_char *unicode_chars, ets_size len)
1272     {
1273         return native_interface->NewString(this, unicode_chars, len);
1274     }
GetStringLength__EtsEnv1275     ets_size GetStringLength(ets_string string)
1276     {
1277         return native_interface->GetStringLength(this, string);
1278     }
GetStringChars__EtsEnv1279     const ets_char *GetStringChars(ets_string string, ets_boolean *is_copy)
1280     {
1281         return native_interface->GetStringChars(this, string, is_copy);
1282     }
ReleaseStringChars__EtsEnv1283     void ReleaseStringChars(ets_string string, const ets_char *chars)
1284     {
1285         native_interface->ReleaseStringChars(this, string, chars);
1286     }
NewStringUTF__EtsEnv1287     ets_string NewStringUTF(const char *bytes)
1288     {
1289         return native_interface->NewStringUTF(this, bytes);
1290     }
GetStringUTFLength__EtsEnv1291     ets_size GetStringUTFLength(ets_string string)
1292     {
1293         return native_interface->GetStringUTFLength(this, string);
1294     }
GetStringUTFChars__EtsEnv1295     const char *GetStringUTFChars(ets_string string, ets_boolean *is_copy)
1296     {
1297         return native_interface->GetStringUTFChars(this, string, is_copy);
1298     }
ReleaseStringUTFChars__EtsEnv1299     void ReleaseStringUTFChars(ets_string string, const char *chars)
1300     {
1301         native_interface->ReleaseStringUTFChars(this, string, chars);
1302     }
GetArrayLength__EtsEnv1303     ets_size GetArrayLength(ets_array array)
1304     {
1305         return native_interface->GetArrayLength(this, array);
1306     }
NewObjectsArray__EtsEnv1307     ets_objectArray NewObjectsArray(ets_size length, ets_class element_class, ets_object initial_element)
1308     {
1309         return native_interface->NewObjectsArray(this, length, element_class, initial_element);
1310     }
GetObjectArrayElement__EtsEnv1311     ets_object GetObjectArrayElement(ets_objectArray array, ets_size index)
1312     {
1313         return native_interface->GetObjectArrayElement(this, array, index);
1314     }
1315 
SetObjectArrayElement__EtsEnv1316     void SetObjectArrayElement(ets_objectArray array, ets_size index, ets_object value)
1317     {
1318         native_interface->SetObjectArrayElement(this, array, index, value);
1319     }
1320 
1321     // SetObjectArrayElement,
NewBooleanArray__EtsEnv1322     ets_booleanArray NewBooleanArray(ets_size length)
1323     {
1324         return native_interface->NewBooleanArray(this, length);
1325     }
NewByteArray__EtsEnv1326     ets_byteArray NewByteArray(ets_size length)
1327     {
1328         return native_interface->NewByteArray(this, length);
1329     }
NewCharArray__EtsEnv1330     ets_charArray NewCharArray(ets_size length)
1331     {
1332         return native_interface->NewCharArray(this, length);
1333     }
NewShortArray__EtsEnv1334     ets_shortArray NewShortArray(ets_size length)
1335     {
1336         return native_interface->NewShortArray(this, length);
1337     }
NewIntArray__EtsEnv1338     ets_intArray NewIntArray(ets_size length)
1339     {
1340         return native_interface->NewIntArray(this, length);
1341     }
NewLongArray__EtsEnv1342     ets_longArray NewLongArray(ets_size length)
1343     {
1344         return native_interface->NewLongArray(this, length);
1345     }
NewFloatArray__EtsEnv1346     ets_floatArray NewFloatArray(ets_size length)
1347     {
1348         return native_interface->NewFloatArray(this, length);
1349     }
NewDoubleArray__EtsEnv1350     ets_doubleArray NewDoubleArray(ets_size length)
1351     {
1352         return native_interface->NewDoubleArray(this, length);
1353     }
PinBooleanArray__EtsEnv1354     ets_boolean *PinBooleanArray(ets_booleanArray array)
1355     {
1356         return native_interface->PinBooleanArray(this, array);
1357     }
PinByteArray__EtsEnv1358     ets_byte *PinByteArray(ets_byteArray array)
1359     {
1360         return native_interface->PinByteArray(this, array);
1361     }
PinCharArray__EtsEnv1362     ets_char *PinCharArray(ets_charArray array)
1363     {
1364         return native_interface->PinCharArray(this, array);
1365     }
PinShortArray__EtsEnv1366     ets_short *PinShortArray(ets_shortArray array)
1367     {
1368         return native_interface->PinShortArray(this, array);
1369     }
PinIntArray__EtsEnv1370     ets_int *PinIntArray(ets_intArray array)
1371     {
1372         return native_interface->PinIntArray(this, array);
1373     }
PinLongArray__EtsEnv1374     ets_long *PinLongArray(ets_longArray array)
1375     {
1376         return native_interface->PinLongArray(this, array);
1377     }
PinFloatArray__EtsEnv1378     ets_float *PinFloatArray(ets_floatArray array)
1379     {
1380         return native_interface->PinFloatArray(this, array);
1381     }
PinDoubleArray__EtsEnv1382     ets_double *PinDoubleArray(ets_doubleArray array)
1383     {
1384         return native_interface->PinDoubleArray(this, array);
1385     }
UnpinBooleanArray__EtsEnv1386     void UnpinBooleanArray(ets_booleanArray array)
1387     {
1388         return native_interface->UnpinBooleanArray(this, array);
1389     }
UnpinByteArray__EtsEnv1390     void UnpinByteArray(ets_byteArray array)
1391     {
1392         return native_interface->UnpinByteArray(this, array);
1393     }
UnpinCharArray__EtsEnv1394     void UnpinCharArray(ets_charArray array)
1395     {
1396         return native_interface->UnpinCharArray(this, array);
1397     }
UnpinShortArray__EtsEnv1398     void UnpinShortArray(ets_shortArray array)
1399     {
1400         return native_interface->UnpinShortArray(this, array);
1401     }
UnpinIntArray__EtsEnv1402     void UnpinIntArray(ets_intArray array)
1403     {
1404         return native_interface->UnpinIntArray(this, array);
1405     }
UnpinLongArray__EtsEnv1406     void UnpinLongArray(ets_longArray array)
1407     {
1408         return native_interface->UnpinLongArray(this, array);
1409     }
UnpinFloatArray__EtsEnv1410     void UnpinFloatArray(ets_floatArray array)
1411     {
1412         return native_interface->UnpinFloatArray(this, array);
1413     }
UnpinDoubleArray__EtsEnv1414     void UnpinDoubleArray(ets_doubleArray array)
1415     {
1416         return native_interface->UnpinDoubleArray(this, array);
1417     }
GetBooleanArrayRegion__EtsEnv1418     void GetBooleanArrayRegion(ets_booleanArray array, ets_size start, ets_size len, ets_boolean *buf)
1419     {
1420         return native_interface->GetBooleanArrayRegion(this, array, start, len, buf);
1421     }
GetByteArrayRegion__EtsEnv1422     void GetByteArrayRegion(ets_byteArray array, ets_size start, ets_size len, ets_byte *buf)
1423     {
1424         return native_interface->GetByteArrayRegion(this, array, start, len, buf);
1425     }
GetCharArrayRegion__EtsEnv1426     void GetCharArrayRegion(ets_charArray array, ets_size start, ets_size len, ets_char *buf)
1427     {
1428         return native_interface->GetCharArrayRegion(this, array, start, len, buf);
1429     }
GetShortArrayRegion__EtsEnv1430     void GetShortArrayRegion(ets_shortArray array, ets_size start, ets_size len, ets_short *buf)
1431     {
1432         return native_interface->GetShortArrayRegion(this, array, start, len, buf);
1433     }
GetIntArrayRegion__EtsEnv1434     void GetIntArrayRegion(ets_intArray array, ets_size start, ets_size len, ets_int *buf)
1435     {
1436         return native_interface->GetIntArrayRegion(this, array, start, len, buf);
1437     }
GetLongArrayRegion__EtsEnv1438     void GetLongArrayRegion(ets_longArray array, ets_size start, ets_size len, ets_long *buf)
1439     {
1440         return native_interface->GetLongArrayRegion(this, array, start, len, buf);
1441     }
GetFloatArrayRegion__EtsEnv1442     void GetFloatArrayRegion(ets_floatArray array, ets_size start, ets_size len, ets_float *buf)
1443     {
1444         return native_interface->GetFloatArrayRegion(this, array, start, len, buf);
1445     }
GetDoubleArrayRegion__EtsEnv1446     void GetDoubleArrayRegion(ets_doubleArray array, ets_size start, ets_size len, ets_double *buf)
1447     {
1448         return native_interface->GetDoubleArrayRegion(this, array, start, len, buf);
1449     }
SetBooleanArrayRegion__EtsEnv1450     void SetBooleanArrayRegion(ets_booleanArray array, ets_size start, ets_size length, const ets_boolean *buf)
1451     {
1452         native_interface->SetBooleanArrayRegion(this, array, start, length, buf);
1453     }
SetByteArrayRegion__EtsEnv1454     void SetByteArrayRegion(ets_byteArray array, ets_size start, ets_size length, const ets_byte *buf)
1455     {
1456         native_interface->SetByteArrayRegion(this, array, start, length, buf);
1457     }
SetCharArrayRegion__EtsEnv1458     void SetCharArrayRegion(ets_charArray array, ets_size start, ets_size length, const ets_char *buf)
1459     {
1460         native_interface->SetCharArrayRegion(this, array, start, length, buf);
1461     }
SetShortArrayRegion__EtsEnv1462     void SetShortArrayRegion(ets_shortArray array, ets_size start, ets_size length, const ets_short *buf)
1463     {
1464         native_interface->SetShortArrayRegion(this, array, start, length, buf);
1465     }
SetIntArrayRegion__EtsEnv1466     void SetIntArrayRegion(ets_intArray array, ets_size start, ets_size length, const ets_int *buf)
1467     {
1468         native_interface->SetIntArrayRegion(this, array, start, length, buf);
1469     }
SetLongArrayRegion__EtsEnv1470     void SetLongArrayRegion(ets_longArray array, ets_size start, ets_size length, const ets_long *buf)
1471     {
1472         native_interface->SetLongArrayRegion(this, array, start, length, buf);
1473     }
SetFloatArrayRegion__EtsEnv1474     void SetFloatArrayRegion(ets_floatArray array, ets_size start, ets_size length, const ets_float *buf)
1475     {
1476         native_interface->SetFloatArrayRegion(this, array, start, length, buf);
1477     }
SetDoubleArrayRegion__EtsEnv1478     void SetDoubleArrayRegion(ets_doubleArray array, ets_size start, ets_size length, const ets_double *buf)
1479     {
1480         native_interface->SetDoubleArrayRegion(this, array, start, length, buf);
1481     }
RegisterNatives__EtsEnv1482     ets_int RegisterNatives(ets_class cls, const EtsNativeMethod *methods, ets_int nMethods)
1483     {
1484         return native_interface->RegisterNatives(this, cls, methods, nMethods);
1485     }
UnregisterNatives__EtsEnv1486     ets_int UnregisterNatives(ets_class cls)
1487     {
1488         return native_interface->UnregisterNatives(this, cls);
1489     }
GetEtsVM__EtsEnv1490     ets_int GetEtsVM(EtsVM **vm)
1491     {
1492         return native_interface->GetEtsVM(this, vm);
1493     }
GetStringRegion__EtsEnv1494     void GetStringRegion(ets_string str, ets_size start, ets_size len, ets_char *buf)
1495     {
1496         native_interface->GetStringRegion(this, str, start, len, buf);
1497     }
GetStringUTFRegion__EtsEnv1498     void GetStringUTFRegion(ets_string str, ets_size start, ets_size len, char *buf)
1499     {
1500         native_interface->GetStringUTFRegion(this, str, start, len, buf);
1501     }
NewWeakGlobalRef__EtsEnv1502     ets_weak NewWeakGlobalRef(ets_object obj)
1503     {
1504         return native_interface->NewWeakGlobalRef(this, obj);
1505     }
DeleteWeakGlobalRef__EtsEnv1506     void DeleteWeakGlobalRef(ets_weak obj)
1507     {
1508         native_interface->DeleteWeakGlobalRef(this, obj);
1509     }
ErrorCheck__EtsEnv1510     ets_boolean ErrorCheck()
1511     {
1512         return native_interface->ErrorCheck(this);
1513     }
1514     // NewDirectByteBuffer,
1515     // GetDirectBufferAddress,
1516     // GetDirectBufferCapacity,
GetObjectRefType__EtsEnv1517     ets_objectRefType GetObjectRefType(ets_object obj)
1518     {
1519         return native_interface->GetObjectRefType(this, obj);
1520     }
1521 
1522     // Promise
PromiseCreate__EtsEnv1523     ets_status PromiseCreate(ets_deferred *deferred, ets_object *promise)
1524     {
1525         return native_interface->PromiseCreate(this, deferred, promise);
1526     }
DeferredResolve__EtsEnv1527     ets_status DeferredResolve(ets_deferred deferred, ets_object resolution)
1528     {
1529         return native_interface->DeferredResolve(this, deferred, resolution);
1530     }
DeferredReject__EtsEnv1531     ets_status DeferredReject(ets_deferred deferred, ets_object rejection)
1532     {
1533         return native_interface->DeferredReject(this, deferred, rejection);
1534     }
1535 #endif
1536 };
1537 
1538 // NOLINTEND(modernize-use-using, readability-identifier-naming, cppcoreguidelines-pro-type-vararg)
1539 
1540 #endif  // PANDA_RUNTIME_INTEROP_ETS_NAPI_H
1541