• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  * Copyright (c) 2021-2025 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     ETS_VERIFICATION_MODE
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 #ifdef _MSC_VER
488 #define ETS_EXPORT  __declspec(dllexport)
489 #else
490 #define ETS_EXPORT __attribute__((visibility("default")))
491 #endif
492 #define ETS_IMPORT
493 #define ETS_CALL
494 
495 ETS_EXPORT ets_int ETS_GetDefaultVMInitArgs(EtsVMInitArgs *vmArgs);
496 ETS_EXPORT ets_int ETS_GetCreatedVMs(EtsVM **vmBuf, ets_size bufLen, ets_size *nVms);
497 ETS_EXPORT ets_int ETS_CreateVM(EtsVM **pVm, EtsEnv **pEnv, EtsVMInitArgs *vmArgs);
498 
499 #ifdef __cplusplus
500 }
501 #endif
502 
503 struct ETS_InvokeInterface {
504     ets_int (*DestroyEtsVM)(EtsVM *vm);
505     ets_int (*GetEnv)(EtsVM *vm, EtsEnv **pEnv, ets_int version);
506 };
507 
508 struct __EtsVM {
509     // NOLINTNEXTLINE(misc-non-private-member-variables-in-classes)
510     const struct ETS_InvokeInterface *invoke_interface;
511 
512 #ifdef __cplusplus
DestroyEtsVM__EtsVM513     ets_int DestroyEtsVM()
514     {
515         return invoke_interface->DestroyEtsVM(this);
516     }
517 
GetEnv__EtsVM518     ets_int GetEnv(EtsEnv **pEnv, ets_int version)
519     {
520         return invoke_interface->GetEnv(this, pEnv, version);
521     }
522 #endif
523 };
524 
525 struct __EtsEnv {
526     // NOLINTNEXTLINE(misc-non-private-member-variables-in-classes)
527     const struct ETS_NativeInterface *native_interface;
528 
529 #ifdef __cplusplus
530 
GetVersion__EtsEnv531     ets_int GetVersion()
532     {
533         return native_interface->GetVersion(this);
534     }
535     // DefineClass,
FindClass__EtsEnv536     ets_class FindClass(const char *name)
537     {
538         return native_interface->FindClass(this, name);
539     }
540     // FromReflectedMethod,
541     // FromReflectedField,
542     // ToReflectedMethod,
GetSuperclass__EtsEnv543     ets_class GetSuperclass(ets_class cls)
544     {
545         return native_interface->GetSuperclass(this, cls);
546     }
IsAssignableFrom__EtsEnv547     ets_boolean IsAssignableFrom(ets_class cls1, ets_class cls2)
548     {
549         return native_interface->IsAssignableFrom(this, cls1, cls2);
550     }
551     // ToReflectedField,
ThrowError__EtsEnv552     ets_int ThrowError(ets_error obj)
553     {
554         return native_interface->ThrowError(this, obj);
555     }
ThrowErrorNew__EtsEnv556     ets_int ThrowErrorNew(ets_class cls, const char *message)
557     {
558         return native_interface->ThrowErrorNew(this, cls, message);
559     }
ErrorOccurred__EtsEnv560     ets_error ErrorOccurred()
561     {
562         return native_interface->ErrorOccurred(this);
563     }
ErrorDescribe__EtsEnv564     void ErrorDescribe()
565     {
566         native_interface->ErrorDescribe(this);
567     }
ErrorClear__EtsEnv568     void ErrorClear()
569     {
570         native_interface->ErrorClear(this);
571     }
FatalError__EtsEnv572     void FatalError(const char *message)
573     {
574         native_interface->FatalError(this, message);
575     }
PushLocalFrame__EtsEnv576     ets_int PushLocalFrame(ets_int capacity)
577     {
578         return native_interface->PushLocalFrame(this, capacity);
579     }
PopLocalFrame__EtsEnv580     ets_object PopLocalFrame(ets_object result)
581     {
582         return native_interface->PopLocalFrame(this, result);
583     }
NewGlobalRef__EtsEnv584     ets_object NewGlobalRef(ets_object obj)
585     {
586         return native_interface->NewGlobalRef(this, obj);
587     }
DeleteGlobalRef__EtsEnv588     void DeleteGlobalRef(ets_object globalRef)
589     {
590         native_interface->DeleteGlobalRef(this, globalRef);
591     }
DeleteLocalRef__EtsEnv592     void DeleteLocalRef(ets_object localRef)
593     {
594         native_interface->DeleteLocalRef(this, localRef);
595     }
IsSameObject__EtsEnv596     ets_boolean IsSameObject(ets_object ref1, ets_object ref2)
597     {
598         return native_interface->IsSameObject(this, ref1, ref2);
599     }
NewLocalRef__EtsEnv600     ets_object NewLocalRef(ets_object ref)
601     {
602         return native_interface->NewLocalRef(this, ref);
603     }
EnsureLocalCapacity__EtsEnv604     ets_int EnsureLocalCapacity(ets_int capacity)
605     {
606         return native_interface->EnsureLocalCapacity(this, capacity);
607     }
AllocObject__EtsEnv608     ets_object AllocObject(ets_class cls)
609     {
610         return native_interface->AllocObject(this, cls);
611     }
NewObject__EtsEnv612     ets_object NewObject(ets_class cls, ets_method p_method, ...)
613     {
614         va_list args;
615         va_start(args, p_method);
616         ets_object ret = native_interface->NewObjectList(this, cls, p_method, args);
617         va_end(args);
618         return ret;
619     }
NewObjectList__EtsEnv620     ets_object NewObjectList(ets_class cls, ets_method p_method, va_list args)
621     {
622         return native_interface->NewObjectList(this, cls, p_method, args);
623     }
NewObjectArray__EtsEnv624     ets_object NewObjectArray(ets_class cls, ets_method p_method, const ets_value *args)
625     {
626         return native_interface->NewObjectArray(this, cls, p_method, args);
627     }
GetObjectClass__EtsEnv628     ets_class GetObjectClass(ets_object obj)
629     {
630         return native_interface->GetObjectClass(this, obj);
631     }
IsInstanceOf__EtsEnv632     ets_boolean IsInstanceOf(ets_object obj, ets_class cls)
633     {
634         return native_interface->IsInstanceOf(this, obj, cls);
635     }
Getp_method__EtsEnv636     ets_method Getp_method(ets_class cls, const char *name, const char *sig)
637     {
638         return native_interface->Getp_method(this, cls, name, sig);
639     }
CallObjectMethod__EtsEnv640     ets_object CallObjectMethod(ets_object obj, ets_method method_id, ...)
641     {
642         va_list args;
643         va_start(args, method_id);
644         ets_object res = native_interface->CallObjectMethodList(this, obj, method_id, args);
645         va_end(args);
646         return res;
647     }
CallObjectMethodList__EtsEnv648     ets_object CallObjectMethodList(ets_object obj, ets_method method_id, va_list args)
649     {
650         return native_interface->CallObjectMethodList(this, obj, method_id, args);
651     }
CallObjectMethodArray__EtsEnv652     ets_object CallObjectMethodArray(ets_object obj, ets_method method_id, const ets_value *args)
653     {
654         return native_interface->CallObjectMethodArray(this, obj, method_id, args);
655     }
CallBooleanMethod__EtsEnv656     ets_boolean CallBooleanMethod(ets_object obj, ets_method method_id, ...)
657     {
658         va_list args;
659         va_start(args, method_id);
660         ets_boolean res = native_interface->CallBooleanMethodList(this, obj, method_id, args);
661         va_end(args);
662         return res;
663     }
CallBooleanMethodList__EtsEnv664     ets_boolean CallBooleanMethodList(ets_object obj, ets_method method_id, va_list args)
665     {
666         return native_interface->CallBooleanMethodList(this, obj, method_id, args);
667     }
CallBooleanMethodArray__EtsEnv668     ets_boolean CallBooleanMethodArray(ets_object obj, ets_method method_id, const ets_value *args)
669     {
670         return native_interface->CallBooleanMethodArray(this, obj, method_id, args);
671     }
CallByteMethod__EtsEnv672     ets_byte CallByteMethod(ets_object obj, ets_method method_id, ...)
673     {
674         va_list args;
675         va_start(args, method_id);
676         ets_byte res = native_interface->CallByteMethodList(this, obj, method_id, args);
677         va_end(args);
678         return res;
679     }
CallByteMethodList__EtsEnv680     ets_byte CallByteMethodList(ets_object obj, ets_method method_id, va_list args)
681     {
682         return native_interface->CallByteMethodList(this, obj, method_id, args);
683     }
CallByteMethodArray__EtsEnv684     ets_byte CallByteMethodArray(ets_object obj, ets_method method_id, const ets_value *args)
685     {
686         return native_interface->CallByteMethodArray(this, obj, method_id, args);
687     }
CallCharMethod__EtsEnv688     ets_char CallCharMethod(ets_object obj, ets_method method_id, ...)
689     {
690         va_list args;
691         va_start(args, method_id);
692         ets_char res = native_interface->CallCharMethodList(this, obj, method_id, args);
693         va_end(args);
694         return res;
695     }
CallCharMethodList__EtsEnv696     ets_char CallCharMethodList(ets_object obj, ets_method method_id, va_list args)
697     {
698         return native_interface->CallCharMethodList(this, obj, method_id, args);
699     }
CallCharMethodArray__EtsEnv700     ets_char CallCharMethodArray(ets_object obj, ets_method method_id, const ets_value *args)
701     {
702         return native_interface->CallCharMethodArray(this, obj, method_id, args);
703     }
CallShortMethod__EtsEnv704     ets_short CallShortMethod(ets_object obj, ets_method method_id, ...)
705     {
706         va_list args;
707         va_start(args, method_id);
708         ets_short res = native_interface->CallShortMethodList(this, obj, method_id, args);
709         va_end(args);
710         return res;
711     }
CallShortMethodList__EtsEnv712     ets_short CallShortMethodList(ets_object obj, ets_method method_id, va_list args)
713     {
714         return native_interface->CallShortMethodList(this, obj, method_id, args);
715     }
CallShortMethodArray__EtsEnv716     ets_short CallShortMethodArray(ets_object obj, ets_method method_id, const ets_value *args)
717     {
718         return native_interface->CallShortMethodArray(this, obj, method_id, args);
719     }
CallIntMethod__EtsEnv720     ets_int CallIntMethod(ets_object obj, ets_method method_id, ...)
721     {
722         va_list args;
723         va_start(args, method_id);
724         ets_int res = native_interface->CallIntMethodList(this, obj, method_id, args);
725         va_end(args);
726         return res;
727     }
CallIntMethodList__EtsEnv728     ets_int CallIntMethodList(ets_object obj, ets_method method_id, va_list args)
729     {
730         return native_interface->CallIntMethodList(this, obj, method_id, args);
731     }
CallIntMethodArray__EtsEnv732     ets_int CallIntMethodArray(ets_object obj, ets_method method_id, const ets_value *args)
733     {
734         return native_interface->CallIntMethodArray(this, obj, method_id, args);
735     }
CallLongMethod__EtsEnv736     ets_long CallLongMethod(ets_object obj, ets_method method_id, ...)
737     {
738         va_list args;
739         va_start(args, method_id);
740         ets_long res = native_interface->CallLongMethodList(this, obj, method_id, args);
741         va_end(args);
742         return res;
743     }
CallLongMethodList__EtsEnv744     ets_long CallLongMethodList(ets_object obj, ets_method method_id, va_list args)
745     {
746         return native_interface->CallLongMethodList(this, obj, method_id, args);
747     }
CallLongMethodArray__EtsEnv748     ets_long CallLongMethodArray(ets_object obj, ets_method method_id, const ets_value *args)
749     {
750         return native_interface->CallLongMethodArray(this, obj, method_id, args);
751     }
CallFloatMethod__EtsEnv752     ets_float CallFloatMethod(ets_object obj, ets_method method_id, ...)
753     {
754         va_list args;
755         va_start(args, method_id);
756         ets_float res = native_interface->CallFloatMethodList(this, obj, method_id, args);
757         va_end(args);
758         return res;
759     }
CallFloatMethodList__EtsEnv760     ets_float CallFloatMethodList(ets_object obj, ets_method method_id, va_list args)
761     {
762         return native_interface->CallFloatMethodList(this, obj, method_id, args);
763     }
CallFloatMethodArray__EtsEnv764     ets_float CallFloatMethodArray(ets_object obj, ets_method method_id, const ets_value *args)
765     {
766         return native_interface->CallFloatMethodArray(this, obj, method_id, args);
767     }
CallDoubleMethod__EtsEnv768     ets_double CallDoubleMethod(ets_object obj, ets_method method_id, ...)
769     {
770         va_list args;
771         va_start(args, method_id);
772         ets_double res = native_interface->CallDoubleMethodList(this, obj, method_id, args);
773         va_end(args);
774         return res;
775     }
CallDoubleMethodList__EtsEnv776     ets_double CallDoubleMethodList(ets_object obj, ets_method method_id, va_list args)
777     {
778         return native_interface->CallDoubleMethodList(this, obj, method_id, args);
779     }
CallDoubleMethodArray__EtsEnv780     ets_double CallDoubleMethodArray(ets_object obj, ets_method method_id, const ets_value *args)
781     {
782         return native_interface->CallDoubleMethodArray(this, obj, method_id, args);
783     }
CallVoidMethod__EtsEnv784     void CallVoidMethod(ets_object obj, ets_method method_id, ...)
785     {
786         va_list args;
787         va_start(args, method_id);
788         native_interface->CallVoidMethodList(this, obj, method_id, args);
789         va_end(args);
790     }
CallVoidMethodList__EtsEnv791     void CallVoidMethodList(ets_object obj, ets_method method_id, va_list args)
792     {
793         native_interface->CallVoidMethodList(this, obj, method_id, args);
794     }
CallVoidMethodArray__EtsEnv795     void CallVoidMethodArray(ets_object obj, ets_method method_id, const ets_value *args)
796     {
797         native_interface->CallVoidMethodArray(this, obj, method_id, args);
798     }
CallNonvirtualObjectMethod__EtsEnv799     ets_object CallNonvirtualObjectMethod(ets_object obj, ets_class cls, ets_method method_id, ...)
800     {
801         va_list args;
802         va_start(args, method_id);
803         ets_object res = native_interface->CallNonvirtualObjectMethodList(this, obj, cls, method_id, args);
804         va_end(args);
805         return res;
806     }
CallNonvirtualObjectMethodList__EtsEnv807     ets_object CallNonvirtualObjectMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args)
808     {
809         return native_interface->CallNonvirtualObjectMethodList(this, obj, cls, method_id, args);
810     }
CallNonvirtualObjectMethodArray__EtsEnv811     ets_object CallNonvirtualObjectMethodArray(ets_object obj, ets_class cls, ets_method method_id,
812                                                const ets_value *args)
813     {
814         return native_interface->CallNonvirtualObjectMethodArray(this, obj, cls, method_id, args);
815     }
CallNonvirtualBooleanMethod__EtsEnv816     ets_boolean CallNonvirtualBooleanMethod(ets_object obj, ets_class cls, ets_method method_id, ...)
817     {
818         va_list args;
819         va_start(args, method_id);
820         ets_boolean res = native_interface->CallNonvirtualBooleanMethodList(this, obj, cls, method_id, args);
821         va_end(args);
822         return res;
823     }
CallNonvirtualBooleanMethodList__EtsEnv824     ets_boolean CallNonvirtualBooleanMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args)
825     {
826         return native_interface->CallNonvirtualBooleanMethodList(this, obj, cls, method_id, args);
827     }
CallNonvirtualBooleanMethodArray__EtsEnv828     ets_boolean CallNonvirtualBooleanMethodArray(ets_object obj, ets_class cls, ets_method method_id,
829                                                  const ets_value *args)
830     {
831         return native_interface->CallNonvirtualBooleanMethodArray(this, obj, cls, method_id, args);
832     }
CallNonvirtualByteMethod__EtsEnv833     ets_byte CallNonvirtualByteMethod(ets_object obj, ets_class cls, ets_method method_id, ...)
834     {
835         va_list args;
836         va_start(args, method_id);
837         ets_byte res = native_interface->CallNonvirtualByteMethodList(this, obj, cls, method_id, args);
838         va_end(args);
839         return res;
840     }
CallNonvirtualByteMethodList__EtsEnv841     ets_byte CallNonvirtualByteMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args)
842     {
843         return native_interface->CallNonvirtualByteMethodList(this, obj, cls, method_id, args);
844     }
CallNonvirtualByteMethodArray__EtsEnv845     ets_byte CallNonvirtualByteMethodArray(ets_object obj, ets_class cls, ets_method method_id, const ets_value *args)
846     {
847         return native_interface->CallNonvirtualByteMethodArray(this, obj, cls, method_id, args);
848     }
CallNonvirtualCharMethod__EtsEnv849     ets_char CallNonvirtualCharMethod(ets_object obj, ets_class cls, ets_method method_id, ...)
850     {
851         va_list args;
852         va_start(args, method_id);
853         ets_char res = native_interface->CallNonvirtualCharMethodList(this, obj, cls, method_id, args);
854         va_end(args);
855         return res;
856     }
CallNonvirtualCharMethodList__EtsEnv857     ets_char CallNonvirtualCharMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args)
858     {
859         return native_interface->CallNonvirtualCharMethodList(this, obj, cls, method_id, args);
860     }
CallNonvirtualCharMethodArray__EtsEnv861     ets_char CallNonvirtualCharMethodArray(ets_object obj, ets_class cls, ets_method method_id, const ets_value *args)
862     {
863         return native_interface->CallNonvirtualCharMethodArray(this, obj, cls, method_id, args);
864     }
CallNonvirtualShortMethod__EtsEnv865     ets_short CallNonvirtualShortMethod(ets_object obj, ets_class cls, ets_method method_id, ...)
866     {
867         va_list args;
868         va_start(args, method_id);
869         ets_short res = native_interface->CallNonvirtualShortMethodList(this, obj, cls, method_id, args);
870         va_end(args);
871         return res;
872     }
CallNonvirtualShortMethodList__EtsEnv873     ets_short CallNonvirtualShortMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args)
874     {
875         return native_interface->CallNonvirtualShortMethodList(this, obj, cls, method_id, args);
876     }
CallNonvirtualShortMethodArray__EtsEnv877     ets_short CallNonvirtualShortMethodArray(ets_object obj, ets_class cls, ets_method method_id, const ets_value *args)
878     {
879         return native_interface->CallNonvirtualShortMethodArray(this, obj, cls, method_id, args);
880     }
CallNonvirtualIntMethod__EtsEnv881     ets_int CallNonvirtualIntMethod(ets_object obj, ets_class cls, ets_method method_id, ...)
882     {
883         va_list args;
884         va_start(args, method_id);
885         ets_int res = native_interface->CallNonvirtualIntMethodList(this, obj, cls, method_id, args);
886         va_end(args);
887         return res;
888     }
CallNonvirtualIntMethodList__EtsEnv889     ets_int CallNonvirtualIntMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args)
890     {
891         return native_interface->CallNonvirtualIntMethodList(this, obj, cls, method_id, args);
892     }
CallNonvirtualIntMethodArray__EtsEnv893     ets_int CallNonvirtualIntMethodArray(ets_object obj, ets_class cls, ets_method method_id, const ets_value *args)
894     {
895         return native_interface->CallNonvirtualIntMethodArray(this, obj, cls, method_id, args);
896     }
CallNonvirtualLongMethod__EtsEnv897     ets_long CallNonvirtualLongMethod(ets_object obj, ets_class cls, ets_method method_id, ...)
898     {
899         va_list args;
900         va_start(args, method_id);
901         ets_long res = native_interface->CallNonvirtualLongMethodList(this, obj, cls, method_id, args);
902         va_end(args);
903         return res;
904     }
CallNonvirtualLongMethodList__EtsEnv905     ets_long CallNonvirtualLongMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args)
906     {
907         return native_interface->CallNonvirtualLongMethodList(this, obj, cls, method_id, args);
908     }
CallNonvirtualLongMethodArray__EtsEnv909     ets_long CallNonvirtualLongMethodArray(ets_object obj, ets_class cls, ets_method method_id, const ets_value *args)
910     {
911         return native_interface->CallNonvirtualLongMethodArray(this, obj, cls, method_id, args);
912     }
CallNonvirtualFloatMethod__EtsEnv913     ets_float CallNonvirtualFloatMethod(ets_object obj, ets_class cls, ets_method method_id, ...)
914     {
915         va_list args;
916         va_start(args, method_id);
917         ets_float res = native_interface->CallNonvirtualFloatMethodList(this, obj, cls, method_id, args);
918         va_end(args);
919         return res;
920     }
CallNonvirtualFloatMethodList__EtsEnv921     ets_float CallNonvirtualFloatMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args)
922     {
923         return native_interface->CallNonvirtualFloatMethodList(this, obj, cls, method_id, args);
924     }
CallNonvirtualFloatMethodArray__EtsEnv925     ets_float CallNonvirtualFloatMethodArray(ets_object obj, ets_class cls, ets_method method_id, const ets_value *args)
926     {
927         return native_interface->CallNonvirtualFloatMethodArray(this, obj, cls, method_id, args);
928     }
CallNonvirtualDoubleMethod__EtsEnv929     ets_double CallNonvirtualDoubleMethod(ets_object obj, ets_class cls, ets_method method_id, ...)
930     {
931         va_list args;
932         va_start(args, method_id);
933         ets_double res = native_interface->CallNonvirtualDoubleMethodList(this, obj, cls, method_id, args);
934         va_end(args);
935         return res;
936     }
CallNonvirtualDoubleMethodList__EtsEnv937     ets_double CallNonvirtualDoubleMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args)
938     {
939         return native_interface->CallNonvirtualDoubleMethodList(this, obj, cls, method_id, args);
940     }
CallNonvirtualDoubleMethodArray__EtsEnv941     ets_double CallNonvirtualDoubleMethodArray(ets_object obj, ets_class cls, ets_method method_id,
942                                                const ets_value *args)
943     {
944         return native_interface->CallNonvirtualDoubleMethodArray(this, obj, cls, method_id, args);
945     }
CallNonvirtualVoidMethod__EtsEnv946     void CallNonvirtualVoidMethod(ets_object obj, ets_class cls, ets_method method_id, ...)
947     {
948         va_list args;
949         va_start(args, method_id);
950         native_interface->CallNonvirtualVoidMethodList(this, obj, cls, method_id, args);
951         va_end(args);
952     }
CallNonvirtualVoidMethodList__EtsEnv953     void CallNonvirtualVoidMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args)
954     {
955         native_interface->CallNonvirtualVoidMethodList(this, obj, cls, method_id, args);
956     }
CallNonvirtualVoidMethodArray__EtsEnv957     void CallNonvirtualVoidMethodArray(ets_object obj, ets_class cls, ets_method method_id, const ets_value *args)
958     {
959         native_interface->CallNonvirtualVoidMethodArray(this, obj, cls, method_id, args);
960     }
Getp_field__EtsEnv961     ets_field Getp_field(ets_class cls, const char *name, const char *sig)
962     {
963         return native_interface->Getp_field(this, cls, name, sig);
964     }
GetObjectField__EtsEnv965     ets_object GetObjectField(ets_object obj, ets_field p_field)
966     {
967         return native_interface->GetObjectField(this, obj, p_field);
968     }
GetBooleanField__EtsEnv969     ets_boolean GetBooleanField(ets_object obj, ets_field p_field)
970     {
971         return native_interface->GetBooleanField(this, obj, p_field);
972     }
GetByteField__EtsEnv973     ets_byte GetByteField(ets_object obj, ets_field p_field)
974     {
975         return native_interface->GetByteField(this, obj, p_field);
976     }
GetCharField__EtsEnv977     ets_char GetCharField(ets_object obj, ets_field p_field)
978     {
979         return native_interface->GetCharField(this, obj, p_field);
980     }
GetShortField__EtsEnv981     ets_short GetShortField(ets_object obj, ets_field p_field)
982     {
983         return native_interface->GetShortField(this, obj, p_field);
984     }
GetIntField__EtsEnv985     ets_int GetIntField(ets_object obj, ets_field p_field)
986     {
987         return native_interface->GetIntField(this, obj, p_field);
988     }
GetLongField__EtsEnv989     ets_long GetLongField(ets_object obj, ets_field p_field)
990     {
991         return native_interface->GetLongField(this, obj, p_field);
992     }
GetFloatField__EtsEnv993     ets_float GetFloatField(ets_object obj, ets_field p_field)
994     {
995         return native_interface->GetFloatField(this, obj, p_field);
996     }
GetDoubleField__EtsEnv997     ets_double GetDoubleField(ets_object obj, ets_field p_field)
998     {
999         return native_interface->GetDoubleField(this, obj, p_field);
1000     }
SetObjectField__EtsEnv1001     void SetObjectField(ets_object obj, ets_field p_field, ets_object value)
1002     {
1003         return native_interface->SetObjectField(this, obj, p_field, value);
1004     }
SetBooleanField__EtsEnv1005     void SetBooleanField(ets_object obj, ets_field p_field, ets_boolean value)
1006     {
1007         return native_interface->SetBooleanField(this, obj, p_field, value);
1008     }
SetByteField__EtsEnv1009     void SetByteField(ets_object obj, ets_field p_field, ets_byte value)
1010     {
1011         return native_interface->SetByteField(this, obj, p_field, value);
1012     }
SetCharField__EtsEnv1013     void SetCharField(ets_object obj, ets_field p_field, ets_char value)
1014     {
1015         return native_interface->SetCharField(this, obj, p_field, value);
1016     }
SetShortField__EtsEnv1017     void SetShortField(ets_object obj, ets_field p_field, ets_short value)
1018     {
1019         return native_interface->SetShortField(this, obj, p_field, value);
1020     }
SetIntField__EtsEnv1021     void SetIntField(ets_object obj, ets_field p_field, ets_int value)
1022     {
1023         return native_interface->SetIntField(this, obj, p_field, value);
1024     }
SetLongField__EtsEnv1025     void SetLongField(ets_object obj, ets_field p_field, ets_long value)
1026     {
1027         return native_interface->SetLongField(this, obj, p_field, value);
1028     }
SetFloatField__EtsEnv1029     void SetFloatField(ets_object obj, ets_field p_field, ets_float value)
1030     {
1031         return native_interface->SetFloatField(this, obj, p_field, value);
1032     }
SetDoubleField__EtsEnv1033     void SetDoubleField(ets_object obj, ets_field p_field, ets_double value)
1034     {
1035         return native_interface->SetDoubleField(this, obj, p_field, value);
1036     }
GetStaticp_method__EtsEnv1037     ets_method GetStaticp_method(ets_class cls, const char *name, const char *sig)
1038     {
1039         return native_interface->GetStaticp_method(this, cls, name, sig);
1040     }
CallStaticObjectMethod__EtsEnv1041     ets_object CallStaticObjectMethod(ets_class cls, ets_method method_id, ...)
1042     {
1043         va_list args;
1044         va_start(args, method_id);
1045         ets_object res = native_interface->CallStaticObjectMethodList(this, cls, method_id, args);
1046         va_end(args);
1047         return res;
1048     }
CallStaticObjectMethodList__EtsEnv1049     ets_object CallStaticObjectMethodList(ets_class cls, ets_method method_id, va_list args)
1050     {
1051         return native_interface->CallStaticObjectMethodList(this, cls, method_id, args);
1052     }
CallStaticObjectMethodArray__EtsEnv1053     ets_object CallStaticObjectMethodArray(ets_class cls, ets_method method_id, ets_value *args)
1054     {
1055         return native_interface->CallStaticObjectMethodArray(this, cls, method_id, args);
1056     }
CallStaticBooleanMethod__EtsEnv1057     ets_boolean CallStaticBooleanMethod(ets_class cls, ets_method method_id, ...)
1058     {
1059         va_list args;
1060         va_start(args, method_id);
1061         ets_boolean res = native_interface->CallStaticBooleanMethodList(this, cls, method_id, args);
1062         va_end(args);
1063         return res;
1064     }
CallStaticBooleanMethodList__EtsEnv1065     ets_boolean CallStaticBooleanMethodList(ets_class cls, ets_method method_id, va_list args)
1066     {
1067         return native_interface->CallStaticBooleanMethodList(this, cls, method_id, args);
1068     }
CallStaticBooleanMethodArray__EtsEnv1069     ets_boolean CallStaticBooleanMethodArray(ets_class cls, ets_method method_id, ets_value *args)
1070     {
1071         return native_interface->CallStaticBooleanMethodArray(this, cls, method_id, args);
1072     }
CallStaticByteMethod__EtsEnv1073     ets_byte CallStaticByteMethod(ets_class cls, ets_method method_id, ...)
1074     {
1075         va_list args;
1076         va_start(args, method_id);
1077         ets_byte res = native_interface->CallStaticByteMethodList(this, cls, method_id, args);
1078         va_end(args);
1079         return res;
1080     }
CallStaticByteMethodList__EtsEnv1081     ets_byte CallStaticByteMethodList(ets_class cls, ets_method method_id, va_list args)
1082     {
1083         return native_interface->CallStaticByteMethodList(this, cls, method_id, args);
1084     }
CallStaticByteMethodArray__EtsEnv1085     ets_byte CallStaticByteMethodArray(ets_class cls, ets_method method_id, ets_value *args)
1086     {
1087         return native_interface->CallStaticByteMethodArray(this, cls, method_id, args);
1088     }
CallStaticCharMethod__EtsEnv1089     ets_char CallStaticCharMethod(ets_class cls, ets_method method_id, ...)
1090     {
1091         va_list args;
1092         va_start(args, method_id);
1093         ets_char res = native_interface->CallStaticCharMethodList(this, cls, method_id, args);
1094         va_end(args);
1095         return res;
1096     }
CallStaticCharMethodList__EtsEnv1097     ets_char CallStaticCharMethodList(ets_class cls, ets_method method_id, va_list args)
1098     {
1099         return native_interface->CallStaticCharMethodList(this, cls, method_id, args);
1100     }
CallStaticCharMethodArray__EtsEnv1101     ets_char CallStaticCharMethodArray(ets_class cls, ets_method method_id, ets_value *args)
1102     {
1103         return native_interface->CallStaticCharMethodArray(this, cls, method_id, args);
1104     }
CallStaticShortMethod__EtsEnv1105     ets_short CallStaticShortMethod(ets_class cls, ets_method method_id, ...)
1106     {
1107         va_list args;
1108         va_start(args, method_id);
1109         ets_short res = native_interface->CallStaticShortMethodList(this, cls, method_id, args);
1110         va_end(args);
1111         return res;
1112     }
CallStaticShortMethodList__EtsEnv1113     ets_short CallStaticShortMethodList(ets_class cls, ets_method method_id, va_list args)
1114     {
1115         return native_interface->CallStaticShortMethodList(this, cls, method_id, args);
1116     }
CallStaticShortMethodArray__EtsEnv1117     ets_short CallStaticShortMethodArray(ets_class cls, ets_method method_id, ets_value *args)
1118     {
1119         return native_interface->CallStaticShortMethodArray(this, cls, method_id, args);
1120     }
CallStaticIntMethod__EtsEnv1121     ets_int CallStaticIntMethod(ets_class cls, ets_method method_id, ...)
1122     {
1123         va_list args;
1124         va_start(args, method_id);
1125         ets_int res = native_interface->CallStaticIntMethodList(this, cls, method_id, args);
1126         va_end(args);
1127         return res;
1128     }
CallStaticIntMethodList__EtsEnv1129     ets_int CallStaticIntMethodList(ets_class cls, ets_method method_id, va_list args)
1130     {
1131         return native_interface->CallStaticIntMethodList(this, cls, method_id, args);
1132     }
CallStaticIntMethodArray__EtsEnv1133     ets_int CallStaticIntMethodArray(ets_class cls, ets_method method_id, ets_value *args)
1134     {
1135         return native_interface->CallStaticIntMethodArray(this, cls, method_id, args);
1136     }
CallStaticLongMethod__EtsEnv1137     ets_long CallStaticLongMethod(ets_class cls, ets_method method_id, ...)
1138     {
1139         va_list args;
1140         va_start(args, method_id);
1141         ets_long res = native_interface->CallStaticLongMethodList(this, cls, method_id, args);
1142         va_end(args);
1143         return res;
1144     }
CallStaticLongMethodList__EtsEnv1145     ets_long CallStaticLongMethodList(ets_class cls, ets_method method_id, va_list args)
1146     {
1147         return native_interface->CallStaticLongMethodList(this, cls, method_id, args);
1148     }
CallStaticLongMethodArray__EtsEnv1149     ets_long CallStaticLongMethodArray(ets_class cls, ets_method method_id, ets_value *args)
1150     {
1151         return native_interface->CallStaticLongMethodArray(this, cls, method_id, args);
1152     }
CallStaticFloatMethod__EtsEnv1153     ets_float CallStaticFloatMethod(ets_class cls, ets_method method_id, ...)
1154     {
1155         va_list args;
1156         va_start(args, method_id);
1157         ets_float res = native_interface->CallStaticFloatMethodList(this, cls, method_id, args);
1158         va_end(args);
1159         return res;
1160     }
CallStaticFloatMethodList__EtsEnv1161     ets_float CallStaticFloatMethodList(ets_class cls, ets_method method_id, va_list args)
1162     {
1163         return native_interface->CallStaticFloatMethodList(this, cls, method_id, args);
1164     }
CallStaticFloatMethodArray__EtsEnv1165     ets_float CallStaticFloatMethodArray(ets_class cls, ets_method method_id, ets_value *args)
1166     {
1167         return native_interface->CallStaticFloatMethodArray(this, cls, method_id, args);
1168     }
CallStaticDoubleMethod__EtsEnv1169     ets_double CallStaticDoubleMethod(ets_class cls, ets_method method_id, ...)
1170     {
1171         va_list args;
1172         va_start(args, method_id);
1173         ets_double res = native_interface->CallStaticDoubleMethodList(this, cls, method_id, args);
1174         va_end(args);
1175         return res;
1176     }
CallStaticDoubleMethodList__EtsEnv1177     ets_double CallStaticDoubleMethodList(ets_class cls, ets_method method_id, va_list args)
1178     {
1179         return native_interface->CallStaticDoubleMethodList(this, cls, method_id, args);
1180     }
CallStaticDoubleMethodArray__EtsEnv1181     ets_double CallStaticDoubleMethodArray(ets_class cls, ets_method method_id, ets_value *args)
1182     {
1183         return native_interface->CallStaticDoubleMethodArray(this, cls, method_id, args);
1184     }
CallStaticVoidMethod__EtsEnv1185     void CallStaticVoidMethod(ets_class cls, ets_method method_id, ...)
1186     {
1187         va_list args;
1188         va_start(args, method_id);
1189         native_interface->CallStaticVoidMethodList(this, cls, method_id, args);
1190         va_end(args);
1191     }
CallStaticVoidMethodList__EtsEnv1192     void CallStaticVoidMethodList(ets_class cls, ets_method method_id, va_list args)
1193     {
1194         native_interface->CallStaticVoidMethodList(this, cls, method_id, args);
1195     }
CallStaticVoidMethodArray__EtsEnv1196     void CallStaticVoidMethodArray(ets_class cls, ets_method method_id, ets_value *args)
1197     {
1198         native_interface->CallStaticVoidMethodArray(this, cls, method_id, args);
1199     }
GetStaticp_field__EtsEnv1200     ets_field GetStaticp_field(ets_class cls, const char *name, const char *sig)
1201     {
1202         return native_interface->GetStaticp_field(this, cls, name, sig);
1203     }
GetStaticObjectField__EtsEnv1204     ets_object GetStaticObjectField(ets_class cls, ets_field p_field)
1205     {
1206         return native_interface->GetStaticObjectField(this, cls, p_field);
1207     }
GetStaticBooleanField__EtsEnv1208     ets_boolean GetStaticBooleanField(ets_class cls, ets_field p_field)
1209     {
1210         return native_interface->GetStaticBooleanField(this, cls, p_field);
1211     }
GetStaticByteField__EtsEnv1212     ets_byte GetStaticByteField(ets_class cls, ets_field p_field)
1213     {
1214         return native_interface->GetStaticByteField(this, cls, p_field);
1215     }
GetStaticCharField__EtsEnv1216     ets_char GetStaticCharField(ets_class cls, ets_field p_field)
1217     {
1218         return native_interface->GetStaticCharField(this, cls, p_field);
1219     }
GetStaticShortField__EtsEnv1220     ets_short GetStaticShortField(ets_class cls, ets_field p_field)
1221     {
1222         return native_interface->GetStaticShortField(this, cls, p_field);
1223     }
GetStaticIntField__EtsEnv1224     ets_int GetStaticIntField(ets_class cls, ets_field p_field)
1225     {
1226         return native_interface->GetStaticIntField(this, cls, p_field);
1227     }
GetStaticLongField__EtsEnv1228     ets_long GetStaticLongField(ets_class cls, ets_field p_field)
1229     {
1230         return native_interface->GetStaticLongField(this, cls, p_field);
1231     }
GetStaticFloatField__EtsEnv1232     ets_float GetStaticFloatField(ets_class cls, ets_field p_field)
1233     {
1234         return native_interface->GetStaticFloatField(this, cls, p_field);
1235     }
GetStaticDoubleField__EtsEnv1236     ets_double GetStaticDoubleField(ets_class cls, ets_field p_field)
1237     {
1238         return native_interface->GetStaticDoubleField(this, cls, p_field);
1239     }
SetStaticObjectField__EtsEnv1240     void SetStaticObjectField(ets_class cls, ets_field p_field, ets_object value)
1241     {
1242         return native_interface->SetStaticObjectField(this, cls, p_field, value);
1243     }
SetStaticBooleanField__EtsEnv1244     void SetStaticBooleanField(ets_class cls, ets_field p_field, ets_boolean value)
1245     {
1246         return native_interface->SetStaticBooleanField(this, cls, p_field, value);
1247     }
SetStaticByteField__EtsEnv1248     void SetStaticByteField(ets_class cls, ets_field p_field, ets_byte value)
1249     {
1250         return native_interface->SetStaticByteField(this, cls, p_field, value);
1251     }
SetStaticCharField__EtsEnv1252     void SetStaticCharField(ets_class cls, ets_field p_field, ets_char value)
1253     {
1254         return native_interface->SetStaticCharField(this, cls, p_field, value);
1255     }
SetStaticShortField__EtsEnv1256     void SetStaticShortField(ets_class cls, ets_field p_field, ets_short value)
1257     {
1258         return native_interface->SetStaticShortField(this, cls, p_field, value);
1259     }
SetStaticIntField__EtsEnv1260     void SetStaticIntField(ets_class cls, ets_field p_field, ets_int value)
1261     {
1262         return native_interface->SetStaticIntField(this, cls, p_field, value);
1263     }
SetStaticLongField__EtsEnv1264     void SetStaticLongField(ets_class cls, ets_field p_field, ets_long value)
1265     {
1266         return native_interface->SetStaticLongField(this, cls, p_field, value);
1267     }
SetStaticFloatField__EtsEnv1268     void SetStaticFloatField(ets_class cls, ets_field p_field, ets_float value)
1269     {
1270         return native_interface->SetStaticFloatField(this, cls, p_field, value);
1271     }
SetStaticDoubleField__EtsEnv1272     void SetStaticDoubleField(ets_class cls, ets_field p_field, ets_double value)
1273     {
1274         return native_interface->SetStaticDoubleField(this, cls, p_field, value);
1275     }
NewString__EtsEnv1276     ets_string NewString(const ets_char *unicode_chars, ets_size len)
1277     {
1278         return native_interface->NewString(this, unicode_chars, len);
1279     }
GetStringLength__EtsEnv1280     ets_size GetStringLength(ets_string string)
1281     {
1282         return native_interface->GetStringLength(this, string);
1283     }
GetStringChars__EtsEnv1284     const ets_char *GetStringChars(ets_string string, ets_boolean *is_copy)
1285     {
1286         return native_interface->GetStringChars(this, string, is_copy);
1287     }
ReleaseStringChars__EtsEnv1288     void ReleaseStringChars(ets_string string, const ets_char *chars)
1289     {
1290         native_interface->ReleaseStringChars(this, string, chars);
1291     }
NewStringUTF__EtsEnv1292     ets_string NewStringUTF(const char *bytes)
1293     {
1294         return native_interface->NewStringUTF(this, bytes);
1295     }
GetStringUTFLength__EtsEnv1296     ets_size GetStringUTFLength(ets_string string)
1297     {
1298         return native_interface->GetStringUTFLength(this, string);
1299     }
GetStringUTFChars__EtsEnv1300     const char *GetStringUTFChars(ets_string string, ets_boolean *is_copy)
1301     {
1302         return native_interface->GetStringUTFChars(this, string, is_copy);
1303     }
ReleaseStringUTFChars__EtsEnv1304     void ReleaseStringUTFChars(ets_string string, const char *chars)
1305     {
1306         native_interface->ReleaseStringUTFChars(this, string, chars);
1307     }
GetArrayLength__EtsEnv1308     ets_size GetArrayLength(ets_array array)
1309     {
1310         return native_interface->GetArrayLength(this, array);
1311     }
NewObjectsArray__EtsEnv1312     ets_objectArray NewObjectsArray(ets_size length, ets_class element_class, ets_object initial_element)
1313     {
1314         return native_interface->NewObjectsArray(this, length, element_class, initial_element);
1315     }
GetObjectArrayElement__EtsEnv1316     ets_object GetObjectArrayElement(ets_objectArray array, ets_size index)
1317     {
1318         return native_interface->GetObjectArrayElement(this, array, index);
1319     }
1320 
SetObjectArrayElement__EtsEnv1321     void SetObjectArrayElement(ets_objectArray array, ets_size index, ets_object value)
1322     {
1323         native_interface->SetObjectArrayElement(this, array, index, value);
1324     }
1325 
1326     // SetObjectArrayElement,
NewBooleanArray__EtsEnv1327     ets_booleanArray NewBooleanArray(ets_size length)
1328     {
1329         return native_interface->NewBooleanArray(this, length);
1330     }
NewByteArray__EtsEnv1331     ets_byteArray NewByteArray(ets_size length)
1332     {
1333         return native_interface->NewByteArray(this, length);
1334     }
NewCharArray__EtsEnv1335     ets_charArray NewCharArray(ets_size length)
1336     {
1337         return native_interface->NewCharArray(this, length);
1338     }
NewShortArray__EtsEnv1339     ets_shortArray NewShortArray(ets_size length)
1340     {
1341         return native_interface->NewShortArray(this, length);
1342     }
NewIntArray__EtsEnv1343     ets_intArray NewIntArray(ets_size length)
1344     {
1345         return native_interface->NewIntArray(this, length);
1346     }
NewLongArray__EtsEnv1347     ets_longArray NewLongArray(ets_size length)
1348     {
1349         return native_interface->NewLongArray(this, length);
1350     }
NewFloatArray__EtsEnv1351     ets_floatArray NewFloatArray(ets_size length)
1352     {
1353         return native_interface->NewFloatArray(this, length);
1354     }
NewDoubleArray__EtsEnv1355     ets_doubleArray NewDoubleArray(ets_size length)
1356     {
1357         return native_interface->NewDoubleArray(this, length);
1358     }
PinBooleanArray__EtsEnv1359     ets_boolean *PinBooleanArray(ets_booleanArray array)
1360     {
1361         return native_interface->PinBooleanArray(this, array);
1362     }
PinByteArray__EtsEnv1363     ets_byte *PinByteArray(ets_byteArray array)
1364     {
1365         return native_interface->PinByteArray(this, array);
1366     }
PinCharArray__EtsEnv1367     ets_char *PinCharArray(ets_charArray array)
1368     {
1369         return native_interface->PinCharArray(this, array);
1370     }
PinShortArray__EtsEnv1371     ets_short *PinShortArray(ets_shortArray array)
1372     {
1373         return native_interface->PinShortArray(this, array);
1374     }
PinIntArray__EtsEnv1375     ets_int *PinIntArray(ets_intArray array)
1376     {
1377         return native_interface->PinIntArray(this, array);
1378     }
PinLongArray__EtsEnv1379     ets_long *PinLongArray(ets_longArray array)
1380     {
1381         return native_interface->PinLongArray(this, array);
1382     }
PinFloatArray__EtsEnv1383     ets_float *PinFloatArray(ets_floatArray array)
1384     {
1385         return native_interface->PinFloatArray(this, array);
1386     }
PinDoubleArray__EtsEnv1387     ets_double *PinDoubleArray(ets_doubleArray array)
1388     {
1389         return native_interface->PinDoubleArray(this, array);
1390     }
UnpinBooleanArray__EtsEnv1391     void UnpinBooleanArray(ets_booleanArray array)
1392     {
1393         return native_interface->UnpinBooleanArray(this, array);
1394     }
UnpinByteArray__EtsEnv1395     void UnpinByteArray(ets_byteArray array)
1396     {
1397         return native_interface->UnpinByteArray(this, array);
1398     }
UnpinCharArray__EtsEnv1399     void UnpinCharArray(ets_charArray array)
1400     {
1401         return native_interface->UnpinCharArray(this, array);
1402     }
UnpinShortArray__EtsEnv1403     void UnpinShortArray(ets_shortArray array)
1404     {
1405         return native_interface->UnpinShortArray(this, array);
1406     }
UnpinIntArray__EtsEnv1407     void UnpinIntArray(ets_intArray array)
1408     {
1409         return native_interface->UnpinIntArray(this, array);
1410     }
UnpinLongArray__EtsEnv1411     void UnpinLongArray(ets_longArray array)
1412     {
1413         return native_interface->UnpinLongArray(this, array);
1414     }
UnpinFloatArray__EtsEnv1415     void UnpinFloatArray(ets_floatArray array)
1416     {
1417         return native_interface->UnpinFloatArray(this, array);
1418     }
UnpinDoubleArray__EtsEnv1419     void UnpinDoubleArray(ets_doubleArray array)
1420     {
1421         return native_interface->UnpinDoubleArray(this, array);
1422     }
GetBooleanArrayRegion__EtsEnv1423     void GetBooleanArrayRegion(ets_booleanArray array, ets_size start, ets_size len, ets_boolean *buf)
1424     {
1425         return native_interface->GetBooleanArrayRegion(this, array, start, len, buf);
1426     }
GetByteArrayRegion__EtsEnv1427     void GetByteArrayRegion(ets_byteArray array, ets_size start, ets_size len, ets_byte *buf)
1428     {
1429         return native_interface->GetByteArrayRegion(this, array, start, len, buf);
1430     }
GetCharArrayRegion__EtsEnv1431     void GetCharArrayRegion(ets_charArray array, ets_size start, ets_size len, ets_char *buf)
1432     {
1433         return native_interface->GetCharArrayRegion(this, array, start, len, buf);
1434     }
GetShortArrayRegion__EtsEnv1435     void GetShortArrayRegion(ets_shortArray array, ets_size start, ets_size len, ets_short *buf)
1436     {
1437         return native_interface->GetShortArrayRegion(this, array, start, len, buf);
1438     }
GetIntArrayRegion__EtsEnv1439     void GetIntArrayRegion(ets_intArray array, ets_size start, ets_size len, ets_int *buf)
1440     {
1441         return native_interface->GetIntArrayRegion(this, array, start, len, buf);
1442     }
GetLongArrayRegion__EtsEnv1443     void GetLongArrayRegion(ets_longArray array, ets_size start, ets_size len, ets_long *buf)
1444     {
1445         return native_interface->GetLongArrayRegion(this, array, start, len, buf);
1446     }
GetFloatArrayRegion__EtsEnv1447     void GetFloatArrayRegion(ets_floatArray array, ets_size start, ets_size len, ets_float *buf)
1448     {
1449         return native_interface->GetFloatArrayRegion(this, array, start, len, buf);
1450     }
GetDoubleArrayRegion__EtsEnv1451     void GetDoubleArrayRegion(ets_doubleArray array, ets_size start, ets_size len, ets_double *buf)
1452     {
1453         return native_interface->GetDoubleArrayRegion(this, array, start, len, buf);
1454     }
SetBooleanArrayRegion__EtsEnv1455     void SetBooleanArrayRegion(ets_booleanArray array, ets_size start, ets_size length, const ets_boolean *buf)
1456     {
1457         native_interface->SetBooleanArrayRegion(this, array, start, length, buf);
1458     }
SetByteArrayRegion__EtsEnv1459     void SetByteArrayRegion(ets_byteArray array, ets_size start, ets_size length, const ets_byte *buf)
1460     {
1461         native_interface->SetByteArrayRegion(this, array, start, length, buf);
1462     }
SetCharArrayRegion__EtsEnv1463     void SetCharArrayRegion(ets_charArray array, ets_size start, ets_size length, const ets_char *buf)
1464     {
1465         native_interface->SetCharArrayRegion(this, array, start, length, buf);
1466     }
SetShortArrayRegion__EtsEnv1467     void SetShortArrayRegion(ets_shortArray array, ets_size start, ets_size length, const ets_short *buf)
1468     {
1469         native_interface->SetShortArrayRegion(this, array, start, length, buf);
1470     }
SetIntArrayRegion__EtsEnv1471     void SetIntArrayRegion(ets_intArray array, ets_size start, ets_size length, const ets_int *buf)
1472     {
1473         native_interface->SetIntArrayRegion(this, array, start, length, buf);
1474     }
SetLongArrayRegion__EtsEnv1475     void SetLongArrayRegion(ets_longArray array, ets_size start, ets_size length, const ets_long *buf)
1476     {
1477         native_interface->SetLongArrayRegion(this, array, start, length, buf);
1478     }
SetFloatArrayRegion__EtsEnv1479     void SetFloatArrayRegion(ets_floatArray array, ets_size start, ets_size length, const ets_float *buf)
1480     {
1481         native_interface->SetFloatArrayRegion(this, array, start, length, buf);
1482     }
SetDoubleArrayRegion__EtsEnv1483     void SetDoubleArrayRegion(ets_doubleArray array, ets_size start, ets_size length, const ets_double *buf)
1484     {
1485         native_interface->SetDoubleArrayRegion(this, array, start, length, buf);
1486     }
RegisterNatives__EtsEnv1487     ets_int RegisterNatives(ets_class cls, const EtsNativeMethod *methods, ets_int nMethods)
1488     {
1489         return native_interface->RegisterNatives(this, cls, methods, nMethods);
1490     }
UnregisterNatives__EtsEnv1491     ets_int UnregisterNatives(ets_class cls)
1492     {
1493         return native_interface->UnregisterNatives(this, cls);
1494     }
GetEtsVM__EtsEnv1495     ets_int GetEtsVM(EtsVM **vm)
1496     {
1497         return native_interface->GetEtsVM(this, vm);
1498     }
GetStringRegion__EtsEnv1499     void GetStringRegion(ets_string str, ets_size start, ets_size len, ets_char *buf)
1500     {
1501         native_interface->GetStringRegion(this, str, start, len, buf);
1502     }
GetStringUTFRegion__EtsEnv1503     void GetStringUTFRegion(ets_string str, ets_size start, ets_size len, char *buf)
1504     {
1505         native_interface->GetStringUTFRegion(this, str, start, len, buf);
1506     }
NewWeakGlobalRef__EtsEnv1507     ets_weak NewWeakGlobalRef(ets_object obj)
1508     {
1509         return native_interface->NewWeakGlobalRef(this, obj);
1510     }
DeleteWeakGlobalRef__EtsEnv1511     void DeleteWeakGlobalRef(ets_weak obj)
1512     {
1513         native_interface->DeleteWeakGlobalRef(this, obj);
1514     }
ErrorCheck__EtsEnv1515     ets_boolean ErrorCheck()
1516     {
1517         return native_interface->ErrorCheck(this);
1518     }
1519     // NewDirectByteBuffer,
1520     // GetDirectBufferAddress,
1521     // GetDirectBufferCapacity,
GetObjectRefType__EtsEnv1522     ets_objectRefType GetObjectRefType(ets_object obj)
1523     {
1524         return native_interface->GetObjectRefType(this, obj);
1525     }
1526 
1527     // Promise
PromiseCreate__EtsEnv1528     ets_status PromiseCreate(ets_deferred *deferred, ets_object *promise)
1529     {
1530         return native_interface->PromiseCreate(this, deferred, promise);
1531     }
DeferredResolve__EtsEnv1532     ets_status DeferredResolve(ets_deferred deferred, ets_object resolution)
1533     {
1534         return native_interface->DeferredResolve(this, deferred, resolution);
1535     }
DeferredReject__EtsEnv1536     ets_status DeferredReject(ets_deferred deferred, ets_object rejection)
1537     {
1538         return native_interface->DeferredReject(this, deferred, rejection);
1539     }
1540 #endif
1541 };
1542 
1543 // NOLINTEND(modernize-use-using, readability-identifier-naming, cppcoreguidelines-pro-type-vararg)
1544 
1545 #endif  // PANDA_RUNTIME_INTEROP_ETS_NAPI_H
1546