• 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 <cstddef>
23 #include <cstdint>
24 #include <cstdarg>
25 #else
26 #include <stddef.h>
27 #include <stdint.h>
28 #include <stdarg.h>
29 #endif
30 
31 // NOLINTBEGIN(cppcoreguidelines-macro-usage)
32 
33 // Version Constants
34 #define ETS_NAPI_VERSION_1_0 0x00010000
35 
36 // General return value constants
37 #define ETS_OK 0            // success
38 #define ETS_ERR (-1)        // unknown error
39 #define ETS_ERR_VER (-2)    // ETS version error
40 #define ETS_ERR_NOMEM (-3)  // not enough memory
41 #define ETS_ERR_EXIST (-4)  // VM already created
42 #define ETS_ERR_INVAL (-5)  // invalid arguments
43 
44 // Boolean Constants
45 #define ETS_FALSE 0
46 #define ETS_TRUE 1
47 
48 // Mode Constants
49 #define ETS_COMMIT 1
50 #define ETS_ABORT 2
51 
52 // NOLINTEND(cppcoreguidelines-macro-usage)
53 
54 // Primitive Types
55 typedef uint8_t ets_boolean;
56 typedef int8_t ets_byte;
57 typedef uint16_t ets_char;
58 typedef int16_t ets_short;
59 typedef int32_t ets_int;
60 typedef int64_t ets_long;
61 typedef float ets_float;
62 typedef double ets_double;
63 typedef ets_int ets_size;
64 
65 // Reference Types
66 #ifdef __cplusplus
67 class __ets_object {};
68 class __ets_class : public __ets_object {};
69 class __ets_string : public __ets_object {};
70 class __ets_array : public __ets_object {};
71 class __ets_arraybuffer : public __ets_object {};
72 class __ets_objectArray : public __ets_array {};
73 class __ets_booleanArray : public __ets_array {};
74 class __ets_byteArray : public __ets_array {};
75 class __ets_charArray : public __ets_array {};
76 class __ets_shortArray : public __ets_array {};
77 class __ets_intArray : public __ets_array {};
78 class __ets_longArray : public __ets_array {};
79 class __ets_floatArray : public __ets_array {};
80 class __ets_doubleArray : public __ets_array {};
81 class __ets_error : public __ets_object {};
82 
83 typedef __ets_object *ets_object;
84 typedef __ets_class *ets_class;
85 typedef __ets_string *ets_string;
86 typedef __ets_array *ets_array;
87 typedef __ets_arraybuffer *ets_arraybuffer;
88 typedef __ets_objectArray *ets_objectArray;
89 typedef __ets_booleanArray *ets_booleanArray;
90 typedef __ets_byteArray *ets_byteArray;
91 typedef __ets_charArray *ets_charArray;
92 typedef __ets_shortArray *ets_shortArray;
93 typedef __ets_intArray *ets_intArray;
94 typedef __ets_longArray *ets_longArray;
95 typedef __ets_floatArray *ets_floatArray;
96 typedef __ets_doubleArray *ets_doubleArray;
97 typedef __ets_error *ets_error;
98 typedef __ets_object *ets_weak;
99 
100 #else   // __cplusplus
101 
102 struct __ets_object;
103 typedef struct __ets_object *ets_object;
104 typedef ets_object ets_class;
105 typedef ets_object ets_string;
106 typedef ets_object ets_error;
107 typedef ets_object ets_weak;
108 typedef ets_object ets_array;
109 typedef ets_object ets_arraybuffer;
110 typedef ets_array ets_objectArray;
111 typedef ets_array ets_booleanArray;
112 typedef ets_array ets_byteArray;
113 typedef ets_array ets_charArray;
114 typedef ets_array ets_shortArray;
115 typedef ets_array ets_intArray;
116 typedef ets_array ets_longArray;
117 typedef ets_array ets_floatArray;
118 typedef ets_array ets_doubleArray;
119 #endif  // __cplusplus
120 
121 struct __ets_deferred;
122 typedef struct __ets_deferred *ets_deferred;
123 
124 // Field and Method IDs
125 struct __ets_method;
126 struct __ets_field;
127 typedef struct __ets_method *ets_method;
128 typedef struct __ets_field *ets_field;
129 
130 // The Value Type
131 typedef union ets_value {
132     ets_boolean z;
133     ets_byte b;
134     ets_char c;
135     ets_short s;
136     ets_int i;
137     ets_long j;
138     ets_float f;
139     ets_double d;
140     ets_object l;
141 } ets_value;
142 
143 // Describe native method by name, signature and function pointer
144 typedef struct {
145     const char *name;
146     const char *signature;
147     void *func;
148 } EtsNativeMethod;
149 
150 // The object reference types
151 typedef enum {
152     ETS_INVALID_REF_TYPE = 0,
153     ETS_LOCAL_REF_TYPE = 1,
154     ETS_GLOBAL_REF_TYPE = 2,
155     ETS_WEAK_GLOBAL_REF_TYPE = 3
156 } ets_objectRefType;
157 
158 #ifdef __cplusplus
159 typedef struct __EtsVM EtsVM;
160 typedef struct __EtsEnv ets_env;
161 #else
162 typedef const struct ETS_InvokeInterface *EtsVM;
163 typedef const struct ETS_NativeInterface *ets_env;
164 #endif
165 
166 // Deprecated types:
167 typedef ets_env EtsEnv;
168 
169 typedef void (*EtsFinalize)(void *finalizeData, void *finalizeHint);
170 
171 typedef enum {
172     ETS_OKAY,
173     ETS_INVALID_ARG,
174     ETS_GENERIC_FAILURE,
175     ETS_PENDING_EXCEPTION,
176     ETS_DETACHABLE_ARRAYBUFFER_EXPECTED,
177     ETS_INVALID_VERSION,  // NOTE(v.cherkashin): This status code doesn't match to napi interface.
178                           //                     Should we probably delete this status code?
179 } ets_status;
180 
181 // clang-format off
182 // Interface Function Table
183 struct ETS_NativeInterface {
184     // NOTE(a.urakov): solve the "Array" naming problem
185     ets_int (*GetVersion)(EtsEnv *env);
186 #ifdef ETS_NAPI_DESIGN_FINISHED
187     ets_class (*DefineClass)(EtsEnv *env, const char *name, ets_object loader, const ets_byte *buf, ets_size bufLen);
188 #endif
189     ets_class (*FindClass)(EtsEnv *env, const char *name);
190 #ifdef ETS_NAPI_DESIGN_FINISHED
191     ets_method (*FromReflectedMethod)(EtsEnv *env, ets_object method);
192     ets_field (*FromReflectedField)(EtsEnv *env, ets_object field);
193     ets_object (*ToReflectedMethod)(EtsEnv *env, ets_class cls, ets_method p_method, ets_boolean isStatic);
194 #endif
195     ets_class (*GetSuperclass)(EtsEnv *env, ets_class cls);
196     ets_boolean (*IsAssignableFrom)(EtsEnv *env, ets_class cls1, ets_class cls2);
197 #ifdef ETS_NAPI_DESIGN_FINISHED
198     ets_object (*ToReflectedField)(EtsEnv *env, ets_class cls, ets_field p_field, ets_boolean isStatic);
199 #endif
200     ets_int (*ThrowError)(EtsEnv *env, ets_error obj);
201     ets_int (*ThrowErrorNew)(EtsEnv *env, ets_class cls, const char *message);
202     ets_error (*ErrorOccurred)(EtsEnv *env);
203     void (*ErrorDescribe)(EtsEnv *env);
204     void (*ErrorClear)(EtsEnv *env);
205     void (*FatalError)(EtsEnv *env, const char *message);
206     ets_int (*PushLocalFrame)(EtsEnv *env, ets_int capacity);
207     ets_object (*PopLocalFrame)(EtsEnv *env, ets_object result);
208     ets_object (*NewGlobalRef)(EtsEnv *env, ets_object obj);
209     void (*DeleteGlobalRef)(EtsEnv *env, ets_object globalRef);
210     void (*DeleteLocalRef)(EtsEnv *env, ets_object localRef);
211     ets_boolean (*IsSameObject)(EtsEnv *env, ets_object ref1, ets_object ref2);
212     ets_object (*NewLocalRef)(EtsEnv *env, ets_object ref);
213     ets_int (*EnsureLocalCapacity)(EtsEnv *env, ets_int capacity);
214     ets_object (*AllocObject)(EtsEnv *env, ets_class cls);
215     ets_object (*NewObject)(EtsEnv *env, ets_class cls, ets_method p_method, ...);
216     ets_object (*NewObjectList)(EtsEnv *env, ets_class cls, ets_method p_method, va_list args);
217     ets_object (*NewObjectArray)(EtsEnv *env, ets_class cls, ets_method p_method, const ets_value *args);
218     ets_class (*GetObjectClass)(EtsEnv *env, ets_object obj);
219     ets_boolean (*IsInstanceOf)(EtsEnv *env, ets_object obj, ets_class cls);
220     ets_method (*Getp_method)(EtsEnv *env, ets_class cls, const char *name, const char *sig);
221     ets_object (*CallObjectMethod)(EtsEnv *env, ets_object obj, ets_method p_method, ...);
222     ets_object (*CallObjectMethodList)(EtsEnv *env, ets_object obj, ets_method p_method, va_list args);
223     ets_object (*CallObjectMethodArray)(EtsEnv *env, ets_object obj, ets_method p_method, const ets_value *args);
224     ets_boolean (*CallBooleanMethod)(EtsEnv *env, ets_object obj, ets_method p_method, ...);
225     ets_boolean (*CallBooleanMethodList)(EtsEnv *env, ets_object obj, ets_method p_method, va_list args);
226     ets_boolean (*CallBooleanMethodArray)(EtsEnv *env, ets_object obj, ets_method p_method, const ets_value *args);
227     ets_byte (*CallByteMethod)(EtsEnv *env, ets_object obj, ets_method p_method, ...);
228     ets_byte (*CallByteMethodList)(EtsEnv *env, ets_object obj, ets_method p_method, va_list args);
229     ets_byte (*CallByteMethodArray)(EtsEnv *env, ets_object obj, ets_method p_method, const ets_value *args);
230     ets_char (*CallCharMethod)(EtsEnv *env, ets_object obj, ets_method p_method, ...);
231     ets_char (*CallCharMethodList)(EtsEnv *env, ets_object obj, ets_method p_method, va_list args);
232     ets_char (*CallCharMethodArray)(EtsEnv *env, ets_object obj, ets_method p_method, const ets_value *args);
233     ets_short (*CallShortMethod)(EtsEnv *env, ets_object obj, ets_method p_method, ...);
234     ets_short (*CallShortMethodList)(EtsEnv *env, ets_object obj, ets_method p_method, va_list args);
235     ets_short (*CallShortMethodArray)(EtsEnv *env, ets_object obj, ets_method p_method, const ets_value *args);
236     ets_int (*CallIntMethod)(EtsEnv *env, ets_object obj, ets_method p_method, ...);
237     ets_int (*CallIntMethodList)(EtsEnv *env, ets_object obj, ets_method p_method, va_list args);
238     ets_int (*CallIntMethodArray)(EtsEnv *env, ets_object obj, ets_method p_method, const ets_value *args);
239     ets_long (*CallLongMethod)(EtsEnv *env, ets_object obj, ets_method p_method, ...);
240     ets_long (*CallLongMethodList)(EtsEnv *env, ets_object obj, ets_method p_method, va_list args);
241     ets_long (*CallLongMethodArray)(EtsEnv *env, ets_object obj, ets_method p_method, const ets_value *args);
242     ets_float (*CallFloatMethod)(EtsEnv *env, ets_object obj, ets_method p_method, ...);
243     ets_float (*CallFloatMethodList)(EtsEnv *env, ets_object obj, ets_method p_method, va_list args);
244     ets_float (*CallFloatMethodArray)(EtsEnv *env, ets_object obj, ets_method p_method, const ets_value *args);
245     ets_double (*CallDoubleMethod)(EtsEnv *env, ets_object obj, ets_method p_method, ...);
246     ets_double (*CallDoubleMethodList)(EtsEnv *env, ets_object obj, ets_method p_method, va_list args);
247     ets_double (*CallDoubleMethodArray)(EtsEnv *env, ets_object obj, ets_method p_method, const ets_value *args);
248     void (*CallVoidMethod)(EtsEnv *env, ets_object obj, ets_method p_method, ...);
249     void (*CallVoidMethodList)(EtsEnv *env, ets_object obj, ets_method p_method, va_list args);
250     void (*CallVoidMethodArray)(EtsEnv *env, ets_object obj, ets_method p_method, const ets_value *args);
251 
252     ets_object (*CallNonvirtualObjectMethod)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method, ...);
253     ets_object (*CallNonvirtualObjectMethodList)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
254                                                  va_list args);
255     ets_object (*CallNonvirtualObjectMethodArray)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
256                                                   const ets_value *args);
257     ets_boolean (*CallNonvirtualBooleanMethod)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method, ...);
258     ets_boolean (*CallNonvirtualBooleanMethodList)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
259                                                    va_list args);
260     ets_boolean (*CallNonvirtualBooleanMethodArray)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
261                                                     const ets_value *args);
262     ets_byte (*CallNonvirtualByteMethod)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method, ...);
263     ets_byte (*CallNonvirtualByteMethodList)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
264                                              va_list args);
265     ets_byte (*CallNonvirtualByteMethodArray)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
266                                               const ets_value *args);
267     ets_char (*CallNonvirtualCharMethod)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method, ...);
268     ets_char (*CallNonvirtualCharMethodList)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
269                                              va_list args);
270     ets_char (*CallNonvirtualCharMethodArray)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
271                                               const ets_value *args);
272     ets_short (*CallNonvirtualShortMethod)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method, ...);
273     ets_short (*CallNonvirtualShortMethodList)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
274                                                va_list args);
275     ets_short (*CallNonvirtualShortMethodArray)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
276                                                 const ets_value *args);
277     ets_int (*CallNonvirtualIntMethod)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method, ...);
278     ets_int (*CallNonvirtualIntMethodList)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
279                                            va_list args);
280     ets_int (*CallNonvirtualIntMethodArray)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
281                                             const ets_value *args);
282     ets_long (*CallNonvirtualLongMethod)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method, ...);
283     ets_long (*CallNonvirtualLongMethodList)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
284                                              va_list args);
285     ets_long (*CallNonvirtualLongMethodArray)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
286                                               const ets_value *args);
287     ets_float (*CallNonvirtualFloatMethod)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method, ...);
288     ets_float (*CallNonvirtualFloatMethodList)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
289                                                va_list args);
290     ets_float (*CallNonvirtualFloatMethodArray)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
291                                                 const ets_value *args);
292     ets_double (*CallNonvirtualDoubleMethod)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method, ...);
293     ets_double (*CallNonvirtualDoubleMethodList)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
294                                                  va_list args);
295     ets_double (*CallNonvirtualDoubleMethodArray)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
296                                                   const ets_value *args);
297     void (*CallNonvirtualVoidMethod)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method, ...);
298     void (*CallNonvirtualVoidMethodList)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method, va_list args);
299     void (*CallNonvirtualVoidMethodArray)(EtsEnv *env, ets_object obj, ets_class cls, ets_method p_method,
300                                           const ets_value *args);
301     ets_field (*Getp_field)(EtsEnv *env, ets_class cls, const char *name, const char *sig);
302     ets_object (*GetObjectField)(EtsEnv *env, ets_object obj, ets_field p_field);
303     ets_boolean (*GetBooleanField)(EtsEnv *env, ets_object obj, ets_field p_field);
304     ets_byte (*GetByteField)(EtsEnv *env, ets_object obj, ets_field p_field);
305     ets_char (*GetCharField)(EtsEnv *env, ets_object obj, ets_field p_field);
306     ets_short (*GetShortField)(EtsEnv *env, ets_object obj, ets_field p_field);
307     ets_int (*GetIntField)(EtsEnv *env, ets_object obj, ets_field p_field);
308     ets_long (*GetLongField)(EtsEnv *env, ets_object obj, ets_field p_field);
309     ets_float (*GetFloatField)(EtsEnv *env, ets_object obj, ets_field p_field);
310     ets_double (*GetDoubleField)(EtsEnv *env, ets_object obj, ets_field p_field);
311     void (*SetObjectField)(EtsEnv *env, ets_object obj, ets_field p_field, ets_object value);
312     void (*SetBooleanField)(EtsEnv *env, ets_object obj, ets_field p_field, ets_boolean value);
313     void (*SetByteField)(EtsEnv *env, ets_object obj, ets_field p_field, ets_byte value);
314     void (*SetCharField)(EtsEnv *env, ets_object obj, ets_field p_field, ets_char value);
315     void (*SetShortField)(EtsEnv *env, ets_object obj, ets_field p_field, ets_short value);
316     void (*SetIntField)(EtsEnv *env, ets_object obj, ets_field p_field, ets_int value);
317     void (*SetLongField)(EtsEnv *env, ets_object obj, ets_field p_field, ets_long value);
318     void (*SetFloatField)(EtsEnv *env, ets_object obj, ets_field p_field, ets_float value);
319     void (*SetDoubleField)(EtsEnv *env, ets_object obj, ets_field p_field, ets_double value);
320     ets_method (*GetStaticp_method)(EtsEnv *env, ets_class cls, const char *name, const char *sig);
321     ets_object (*CallStaticObjectMethod)(EtsEnv *env, ets_class cls, ets_method p_method, ...);
322     ets_object (*CallStaticObjectMethodList)(EtsEnv *env, ets_class cls, ets_method p_method, va_list args);
323     ets_object (*CallStaticObjectMethodArray)(EtsEnv *env, ets_class cls, ets_method p_method, ets_value *args);
324     ets_boolean (*CallStaticBooleanMethod)(EtsEnv *env, ets_class cls, ets_method p_method, ...);
325     ets_boolean (*CallStaticBooleanMethodList)(EtsEnv *env, ets_class cls, ets_method p_method, va_list args);
326     ets_boolean (*CallStaticBooleanMethodArray)(EtsEnv *env, ets_class cls, ets_method p_method, ets_value *args);
327     ets_byte (*CallStaticByteMethod)(EtsEnv *env, ets_class cls, ets_method p_method, ...);
328     ets_byte (*CallStaticByteMethodList)(EtsEnv *env, ets_class cls, ets_method p_method, va_list args);
329     ets_byte (*CallStaticByteMethodArray)(EtsEnv *env, ets_class cls, ets_method p_method, ets_value *args);
330     ets_char (*CallStaticCharMethod)(EtsEnv *env, ets_class cls, ets_method p_method, ...);
331     ets_char (*CallStaticCharMethodList)(EtsEnv *env, ets_class cls, ets_method p_method, va_list args);
332     ets_char (*CallStaticCharMethodArray)(EtsEnv *env, ets_class cls, ets_method p_method, ets_value *args);
333     ets_short (*CallStaticShortMethod)(EtsEnv *env, ets_class cls, ets_method p_method, ...);
334     ets_short (*CallStaticShortMethodList)(EtsEnv *env, ets_class cls, ets_method p_method, va_list args);
335     ets_short (*CallStaticShortMethodArray)(EtsEnv *env, ets_class cls, ets_method p_method, ets_value *args);
336     ets_int (*CallStaticIntMethod)(EtsEnv *env, ets_class cls, ets_method p_method, ...);
337     ets_int (*CallStaticIntMethodList)(EtsEnv *env, ets_class cls, ets_method p_method, va_list args);
338     ets_int (*CallStaticIntMethodArray)(EtsEnv *env, ets_class cls, ets_method p_method, ets_value *args);
339     ets_long (*CallStaticLongMethod)(EtsEnv *env, ets_class cls, ets_method p_method, ...);
340     ets_long (*CallStaticLongMethodList)(EtsEnv *env, ets_class cls, ets_method p_method, va_list args);
341     ets_long (*CallStaticLongMethodArray)(EtsEnv *env, ets_class cls, ets_method p_method, ets_value *args);
342     ets_float (*CallStaticFloatMethod)(EtsEnv *env, ets_class cls, ets_method p_method, ...);
343     ets_float (*CallStaticFloatMethodList)(EtsEnv *env, ets_class cls, ets_method p_method, va_list args);
344     ets_float (*CallStaticFloatMethodArray)(EtsEnv *env, ets_class cls, ets_method p_method, ets_value *args);
345     ets_double (*CallStaticDoubleMethod)(EtsEnv *env, ets_class cls, ets_method p_method, ...);
346     ets_double (*CallStaticDoubleMethodList)(EtsEnv *env, ets_class cls, ets_method p_method, va_list args);
347     ets_double (*CallStaticDoubleMethodArray)(EtsEnv *env, ets_class cls, ets_method p_method, ets_value *args);
348     void (*CallStaticVoidMethod)(EtsEnv *env, ets_class cls, ets_method p_method, ...);
349     void (*CallStaticVoidMethodList)(EtsEnv *env, ets_class cls, ets_method p_method, va_list args);
350     void (*CallStaticVoidMethodArray)(EtsEnv *env, ets_class cls, ets_method p_method, ets_value *args);
351     ets_field (*GetStaticp_field)(EtsEnv *env, ets_class cls, const char *name, const char *sig);
352     ets_object (*GetStaticObjectField)(EtsEnv *env, ets_class cls, ets_field p_field);
353     ets_boolean (*GetStaticBooleanField)(EtsEnv *env, ets_class cls, ets_field p_field);
354     ets_byte (*GetStaticByteField)(EtsEnv *env, ets_class cls, ets_field p_field);
355     ets_char (*GetStaticCharField)(EtsEnv *env, ets_class cls, ets_field p_field);
356     ets_short (*GetStaticShortField)(EtsEnv *env, ets_class cls, ets_field p_field);
357     ets_int (*GetStaticIntField)(EtsEnv *env, ets_class cls, ets_field p_field);
358     ets_long (*GetStaticLongField)(EtsEnv *env, ets_class cls, ets_field p_field);
359     ets_float (*GetStaticFloatField)(EtsEnv *env, ets_class cls, ets_field p_field);
360     ets_double (*GetStaticDoubleField)(EtsEnv *env, ets_class cls, ets_field p_field);
361     void (*SetStaticObjectField)(EtsEnv *env, ets_class cls, ets_field p_field, ets_object value);
362     void (*SetStaticBooleanField)(EtsEnv *env, ets_class cls, ets_field p_field, ets_boolean value);
363     void (*SetStaticByteField)(EtsEnv *env, ets_class cls, ets_field p_field, ets_byte value);
364     void (*SetStaticCharField)(EtsEnv *env, ets_class cls, ets_field p_field, ets_char value);
365     void (*SetStaticShortField)(EtsEnv *env, ets_class cls, ets_field p_field, ets_short value);
366     void (*SetStaticIntField)(EtsEnv *env, ets_class cls, ets_field p_field, ets_int value);
367     void (*SetStaticLongField)(EtsEnv *env, ets_class cls, ets_field p_field, ets_long value);
368     void (*SetStaticFloatField)(EtsEnv *env, ets_class cls, ets_field p_field, ets_float value);
369     void (*SetStaticDoubleField)(EtsEnv *env, ets_class cls, ets_field p_field, ets_double value);
370     ets_string (*NewString)(EtsEnv *env, const ets_char *unicodeChars, ets_size len);
371     ets_size (*GetStringLength)(EtsEnv *env, ets_string string);
372     const ets_char *(*GetStringChars)(EtsEnv *env, ets_string string, ets_boolean *isCopy);
373     void (*ReleaseStringChars)(EtsEnv *env, ets_string string, const ets_char *chars);
374     ets_string (*NewStringUTF)(EtsEnv *env, const char *bytes);
375     ets_size (*GetStringUTFLength)(EtsEnv *env, ets_string string);
376     const char *(*GetStringUTFChars)(EtsEnv *env, ets_string string, ets_boolean *isCopy);
377     void (*ReleaseStringUTFChars)(EtsEnv *env, ets_string string, const char *utf);
378     ets_size (*GetArrayLength)(EtsEnv *env, ets_array array);
379     ets_objectArray (*NewObjectsArray)(EtsEnv *env, ets_size length, ets_class element_class,
380                                       ets_object initial_element);
381     ets_object (*GetObjectArrayElement)(EtsEnv *env, ets_objectArray array, ets_size index);
382     void (*SetObjectArrayElement)(EtsEnv *env, ets_objectArray array, ets_size index, ets_object value);
383     ets_booleanArray (*NewBooleanArray)(EtsEnv *env, ets_size length);
384     ets_byteArray (*NewByteArray)(EtsEnv *env, ets_size length);
385     ets_charArray (*NewCharArray)(EtsEnv *env, ets_size length);
386     ets_shortArray (*NewShortArray)(EtsEnv *env, ets_size length);
387     ets_intArray (*NewIntArray)(EtsEnv *env, ets_size length);
388     ets_longArray (*NewLongArray)(EtsEnv *env, ets_size length);
389     ets_floatArray (*NewFloatArray)(EtsEnv *env, ets_size length);
390     ets_doubleArray (*NewDoubleArray)(EtsEnv *env, ets_size length);
391     ets_boolean *(*PinBooleanArray)(EtsEnv *env, ets_booleanArray array);
392     ets_byte *(*PinByteArray)(EtsEnv *env, ets_byteArray array);
393     ets_char *(*PinCharArray)(EtsEnv *env, ets_charArray array);
394     ets_short *(*PinShortArray)(EtsEnv *env, ets_shortArray array);
395     ets_int *(*PinIntArray)(EtsEnv *env, ets_intArray array);
396     ets_long *(*PinLongArray)(EtsEnv *env, ets_longArray array);
397     ets_float *(*PinFloatArray)(EtsEnv *env, ets_floatArray array);
398     ets_double *(*PinDoubleArray)(EtsEnv *env, ets_doubleArray array);
399     void (*UnpinBooleanArray)(EtsEnv *env, ets_booleanArray array);
400     void (*UnpinByteArray)(EtsEnv *env, ets_byteArray array);
401     void (*UnpinCharArray)(EtsEnv *env, ets_charArray array);
402     void (*UnpinShortArray)(EtsEnv *env, ets_shortArray array);
403     void (*UnpinIntArray)(EtsEnv *env, ets_intArray array);
404     void (*UnpinLongArray)(EtsEnv *env, ets_longArray array);
405     void (*UnpinFloatArray)(EtsEnv *env, ets_floatArray array);
406     void (*UnpinDoubleArray)(EtsEnv *env, ets_doubleArray array);
407     void (*GetBooleanArrayRegion)(EtsEnv *env, ets_booleanArray array, ets_size start, ets_size len, ets_boolean *buf);
408     void (*GetByteArrayRegion)(EtsEnv *env, ets_byteArray array, ets_size start, ets_size len, ets_byte *buf);
409     void (*GetCharArrayRegion)(EtsEnv *env, ets_charArray array, ets_size start, ets_size len, ets_char *buf);
410     void (*GetShortArrayRegion)(EtsEnv *env, ets_shortArray array, ets_size start, ets_size len, ets_short *buf);
411     void (*GetIntArrayRegion)(EtsEnv *env, ets_intArray array, ets_size start, ets_size len, ets_int *buf);
412     void (*GetLongArrayRegion)(EtsEnv *env, ets_longArray array, ets_size start, ets_size len, ets_long *buf);
413     void (*GetFloatArrayRegion)(EtsEnv *env, ets_floatArray array, ets_size start, ets_size len, ets_float *buf);
414     void (*GetDoubleArrayRegion)(EtsEnv *env, ets_doubleArray array, ets_size start, ets_size len, ets_double *buf);
415     void (*SetBooleanArrayRegion)(EtsEnv *env, ets_booleanArray array, ets_size start, ets_size len,
416                                   const ets_boolean *buf);
417     void (*SetByteArrayRegion)(EtsEnv *env, ets_byteArray array, ets_size start, ets_size len, const ets_byte *buf);
418     void (*SetCharArrayRegion)(EtsEnv *env, ets_charArray array, ets_size start, ets_size len, const ets_char *buf);
419     void (*SetShortArrayRegion)(EtsEnv *env, ets_shortArray array, ets_size start, ets_size len, const ets_short *buf);
420     void (*SetIntArrayRegion)(EtsEnv *env, ets_intArray array, ets_size start, ets_size len, const ets_int *buf);
421     void (*SetLongArrayRegion)(EtsEnv *env, ets_longArray array, ets_size start, ets_size len, const ets_long *buf);
422     void (*SetFloatArrayRegion)(EtsEnv *env, ets_floatArray array, ets_size start, ets_size len, const ets_float *buf);
423     void (*SetDoubleArrayRegion)(EtsEnv *env, ets_doubleArray array, ets_size start, ets_size len,
424                                  const ets_double *buf);
425     ets_int (*RegisterNatives)(EtsEnv *env, ets_class cls, const EtsNativeMethod *methods, ets_int nMethods);
426     ets_int (*UnregisterNatives)(EtsEnv *env, ets_class cls);
427     ets_int (*GetEtsVM)(EtsEnv *env, EtsVM **vm);
428     void (*GetStringRegion)(EtsEnv *env, ets_string str, ets_size start, ets_size len, ets_char *buf);
429     void (*GetStringUTFRegion)(EtsEnv *env, ets_string str, ets_size start, ets_size len, char *buf);
430     ets_weak (*NewWeakGlobalRef)(EtsEnv *env, ets_object obj);
431     void (*DeleteWeakGlobalRef)(EtsEnv *env, ets_weak obj);
432     ets_boolean (*ErrorCheck)(EtsEnv *env);
433 #ifdef ETS_NAPI_DESIGN_FINISHED
434     ets_object (*NewDirectByteBuffer)(EtsEnv *env, void *address, ets_long capacity);
435     void *(*GetDirectBufferAddress)(EtsEnv *env, ets_object buf);
436     ets_long (*GetDirectBufferCapacity)(EtsEnv *env, ets_object buf);
437 #endif
438     ets_objectRefType (*GetObjectRefType)(EtsEnv *env, ets_object obj);
439 
440     /* 227 methods */
441 
442     // Promise API
443     ets_status (*PromiseCreate)(EtsEnv *env, ets_deferred *deferred, ets_object *promise);
444     ets_status (*DeferredResolve)(EtsEnv *env, ets_deferred deferred, ets_object resolution);
445     ets_status (*DeferredReject)(EtsEnv *env, ets_deferred deferred, ets_object rejection);
446 
447     // ArrayBuffer
448     ets_status (*ArrayBufferCreate)(EtsEnv *env, size_t byteLength, void **data, ets_arraybuffer *result);
449     ets_status (*ArrayBufferCreateExternal)(EtsEnv *env, void *externalData, size_t byteLength,
450                                             EtsFinalize finalizeCb, void *finalizeHint, ets_arraybuffer *result);
451     ets_status (*ArrayBufferGetInfo)(EtsEnv *env, ets_arraybuffer buffer, void **resultData,
452                                      size_t *resultByteLength);
453     ets_status (*ArrayBufferDetach)(EtsEnv *env, ets_arraybuffer buffer);
454     ets_status (*ArrayBufferIsDetached)(EtsEnv *env, ets_arraybuffer buffer, bool *result);
455 };
456 // clang-format on
457 
458 // Invocation API Functions
459 typedef enum {
460     ETS_LOG_LEVEL,
461     ETS_MOBILE_LOG,
462     ETS_BOOT_FILE,
463     ETS_AOT_FILE,
464     ETS_ARK_FILE,
465     ETS_JIT,
466     ETS_NO_JIT,
467     ETS_AOT,
468     ETS_NO_AOT,
469     ETS_GC_TRIGGER_TYPE,
470     ETS_GC_TYPE,
471     ETS_RUN_GC_IN_PLACE,
472     ETS_INTERPRETER_TYPE,
473     ETS_NATIVE_LIBRARY_PATH,
474     ETS_VERIFICATION_MODE
475 } EtsOptionType;
476 
477 typedef struct EtsVMOption {
478     EtsOptionType option;
479     const void *extraInfo;
480 } EtsVMOption;
481 
482 typedef struct EtsVMInitArgs {
483     ets_int version;
484     ets_int nOptions;
485     EtsVMOption *options;
486 } EtsVMInitArgs;
487 
488 typedef enum {
489     ETS_MOBILE_LOG_LEVEL_UNKNOWN = 0,
490     ETS_MOBILE_LOG_LEVEL_DEFAULT,
491     ETS_MOBILE_LOG_LEVEL_VERBOSE,
492     ETS_MOBILE_LOG_LEVEL_DEBUG,
493     ETS_MOBILE_LOG_LEVEL_INFO,
494     ETS_MOBILE_LOG_LEVEL_WARN,
495     ETS_MOBILE_LOG_LEVEL_ERROR,
496     ETS_MOBILE_LOG_LEVEL_FATAL,
497     ETS_MOBILE_LOG_LEVEL_SILENT
498 } EtsMobileLogggerLevel;
499 
500 #ifdef __cplusplus
501 extern "C" {
502 #endif
503 
504 #define ETS_EXPORT __attribute__((visibility("default")))
505 #define ETS_IMPORT
506 #define ETS_CALL
507 
508 ETS_EXPORT ets_int ETS_GetDefaultVMInitArgs(EtsVMInitArgs *vmArgs);
509 ETS_EXPORT ets_int ETS_GetCreatedVMs(EtsVM **vmBuf, ets_size bufLen, ets_size *nVms);
510 ETS_EXPORT ets_int ETS_CreateVM(EtsVM **pVm, EtsEnv **pEnv, EtsVMInitArgs *vmArgs);
511 
512 #ifdef __cplusplus
513 }
514 #endif
515 
516 struct ETS_InvokeInterface {
517     ets_int (*DestroyEtsVM)(EtsVM *vm);
518     ets_int (*GetEnv)(EtsVM *vm, EtsEnv **pEnv, ets_int version);
519     // CC-OFFNXT(G.NAM.03-CPP) project code style
520     ets_int (*AttachThread)(EtsVM *vm, EtsEnv **resultEnv, void **resultJsEnv);
521     ets_int (*DetachThread)(EtsVM *vm);
522 };
523 
524 struct __EtsVM {
525     // NOLINTNEXTLINE(misc-non-private-member-variables-in-classes)
526     const struct ETS_InvokeInterface *invoke_interface;
527 
528 #ifdef __cplusplus
DestroyEtsVM__EtsVM529     ets_int DestroyEtsVM()
530     {
531         return invoke_interface->DestroyEtsVM(this);
532     }
533 
GetEnv__EtsVM534     ets_int GetEnv(EtsEnv **pEnv, ets_int version)
535     {
536         return invoke_interface->GetEnv(this, pEnv, version);
537     }
538 
AttachThread__EtsVM539     ets_int AttachThread(EtsEnv **resultEnv, void **resultJsEnv)
540     {
541         return invoke_interface->AttachThread(this, resultEnv, resultJsEnv);
542     }
543 
DetachThread__EtsVM544     ets_int DetachThread()
545     {
546         return invoke_interface->DetachThread(this);
547     }
548 #endif
549 };
550 
551 struct __EtsEnv {
552     // NOLINTNEXTLINE(misc-non-private-member-variables-in-classes)
553     const struct ETS_NativeInterface *native_interface;
554 
555 #ifdef __cplusplus
556 
GetVersion__EtsEnv557     ets_int GetVersion()
558     {
559         return native_interface->GetVersion(this);
560     }
561     // DefineClass,
FindClass__EtsEnv562     ets_class FindClass(const char *name)
563     {
564         return native_interface->FindClass(this, name);
565     }
566     // FromReflectedMethod,
567     // FromReflectedField,
568     // ToReflectedMethod,
GetSuperclass__EtsEnv569     ets_class GetSuperclass(ets_class cls)
570     {
571         return native_interface->GetSuperclass(this, cls);
572     }
IsAssignableFrom__EtsEnv573     ets_boolean IsAssignableFrom(ets_class cls1, ets_class cls2)
574     {
575         return native_interface->IsAssignableFrom(this, cls1, cls2);
576     }
577     // ToReflectedField,
ThrowError__EtsEnv578     ets_int ThrowError(ets_error obj)
579     {
580         return native_interface->ThrowError(this, obj);
581     }
ThrowErrorNew__EtsEnv582     ets_int ThrowErrorNew(ets_class cls, const char *message)
583     {
584         return native_interface->ThrowErrorNew(this, cls, message);
585     }
ErrorOccurred__EtsEnv586     ets_error ErrorOccurred()
587     {
588         return native_interface->ErrorOccurred(this);
589     }
ErrorDescribe__EtsEnv590     void ErrorDescribe()
591     {
592         native_interface->ErrorDescribe(this);
593     }
ErrorClear__EtsEnv594     void ErrorClear()
595     {
596         native_interface->ErrorClear(this);
597     }
FatalError__EtsEnv598     void FatalError(const char *message)
599     {
600         native_interface->FatalError(this, message);
601     }
PushLocalFrame__EtsEnv602     ets_int PushLocalFrame(ets_int capacity)
603     {
604         return native_interface->PushLocalFrame(this, capacity);
605     }
PopLocalFrame__EtsEnv606     ets_object PopLocalFrame(ets_object result)
607     {
608         return native_interface->PopLocalFrame(this, result);
609     }
NewGlobalRef__EtsEnv610     ets_object NewGlobalRef(ets_object obj)
611     {
612         return native_interface->NewGlobalRef(this, obj);
613     }
DeleteGlobalRef__EtsEnv614     void DeleteGlobalRef(ets_object globalRef)
615     {
616         native_interface->DeleteGlobalRef(this, globalRef);
617     }
DeleteLocalRef__EtsEnv618     void DeleteLocalRef(ets_object localRef)
619     {
620         native_interface->DeleteLocalRef(this, localRef);
621     }
IsSameObject__EtsEnv622     ets_boolean IsSameObject(ets_object ref1, ets_object ref2)
623     {
624         return native_interface->IsSameObject(this, ref1, ref2);
625     }
NewLocalRef__EtsEnv626     ets_object NewLocalRef(ets_object ref)
627     {
628         return native_interface->NewLocalRef(this, ref);
629     }
EnsureLocalCapacity__EtsEnv630     ets_int EnsureLocalCapacity(ets_int capacity)
631     {
632         return native_interface->EnsureLocalCapacity(this, capacity);
633     }
AllocObject__EtsEnv634     ets_object AllocObject(ets_class cls)
635     {
636         return native_interface->AllocObject(this, cls);
637     }
NewObject__EtsEnv638     ets_object NewObject(ets_class cls, ets_method p_method, ...)
639     {
640         va_list args;
641         va_start(args, p_method);
642         ets_object ret = native_interface->NewObjectList(this, cls, p_method, args);
643         va_end(args);
644         return ret;
645     }
NewObjectList__EtsEnv646     ets_object NewObjectList(ets_class cls, ets_method p_method, va_list args)
647     {
648         return native_interface->NewObjectList(this, cls, p_method, args);
649     }
NewObjectArray__EtsEnv650     ets_object NewObjectArray(ets_class cls, ets_method p_method, const ets_value *args)
651     {
652         return native_interface->NewObjectArray(this, cls, p_method, args);
653     }
GetObjectClass__EtsEnv654     ets_class GetObjectClass(ets_object obj)
655     {
656         return native_interface->GetObjectClass(this, obj);
657     }
IsInstanceOf__EtsEnv658     ets_boolean IsInstanceOf(ets_object obj, ets_class cls)
659     {
660         return native_interface->IsInstanceOf(this, obj, cls);
661     }
Getp_method__EtsEnv662     ets_method Getp_method(ets_class cls, const char *name, const char *sig)
663     {
664         return native_interface->Getp_method(this, cls, name, sig);
665     }
CallObjectMethod__EtsEnv666     ets_object CallObjectMethod(ets_object obj, ets_method method_id, ...)
667     {
668         va_list args;
669         va_start(args, method_id);
670         ets_object res = native_interface->CallObjectMethodList(this, obj, method_id, args);
671         va_end(args);
672         return res;
673     }
CallObjectMethodList__EtsEnv674     ets_object CallObjectMethodList(ets_object obj, ets_method method_id, va_list args)
675     {
676         return native_interface->CallObjectMethodList(this, obj, method_id, args);
677     }
CallObjectMethodArray__EtsEnv678     ets_object CallObjectMethodArray(ets_object obj, ets_method method_id, const ets_value *args)
679     {
680         return native_interface->CallObjectMethodArray(this, obj, method_id, args);
681     }
CallBooleanMethod__EtsEnv682     ets_boolean CallBooleanMethod(ets_object obj, ets_method method_id, ...)
683     {
684         va_list args;
685         va_start(args, method_id);
686         ets_boolean res = native_interface->CallBooleanMethodList(this, obj, method_id, args);
687         va_end(args);
688         return res;
689     }
CallBooleanMethodList__EtsEnv690     ets_boolean CallBooleanMethodList(ets_object obj, ets_method method_id, va_list args)
691     {
692         return native_interface->CallBooleanMethodList(this, obj, method_id, args);
693     }
CallBooleanMethodArray__EtsEnv694     ets_boolean CallBooleanMethodArray(ets_object obj, ets_method method_id, const ets_value *args)
695     {
696         return native_interface->CallBooleanMethodArray(this, obj, method_id, args);
697     }
CallByteMethod__EtsEnv698     ets_byte CallByteMethod(ets_object obj, ets_method method_id, ...)
699     {
700         va_list args;
701         va_start(args, method_id);
702         ets_byte res = native_interface->CallByteMethodList(this, obj, method_id, args);
703         va_end(args);
704         return res;
705     }
CallByteMethodList__EtsEnv706     ets_byte CallByteMethodList(ets_object obj, ets_method method_id, va_list args)
707     {
708         return native_interface->CallByteMethodList(this, obj, method_id, args);
709     }
CallByteMethodArray__EtsEnv710     ets_byte CallByteMethodArray(ets_object obj, ets_method method_id, const ets_value *args)
711     {
712         return native_interface->CallByteMethodArray(this, obj, method_id, args);
713     }
CallCharMethod__EtsEnv714     ets_char CallCharMethod(ets_object obj, ets_method method_id, ...)
715     {
716         va_list args;
717         va_start(args, method_id);
718         ets_char res = native_interface->CallCharMethodList(this, obj, method_id, args);
719         va_end(args);
720         return res;
721     }
CallCharMethodList__EtsEnv722     ets_char CallCharMethodList(ets_object obj, ets_method method_id, va_list args)
723     {
724         return native_interface->CallCharMethodList(this, obj, method_id, args);
725     }
CallCharMethodArray__EtsEnv726     ets_char CallCharMethodArray(ets_object obj, ets_method method_id, const ets_value *args)
727     {
728         return native_interface->CallCharMethodArray(this, obj, method_id, args);
729     }
CallShortMethod__EtsEnv730     ets_short CallShortMethod(ets_object obj, ets_method method_id, ...)
731     {
732         va_list args;
733         va_start(args, method_id);
734         ets_short res = native_interface->CallShortMethodList(this, obj, method_id, args);
735         va_end(args);
736         return res;
737     }
CallShortMethodList__EtsEnv738     ets_short CallShortMethodList(ets_object obj, ets_method method_id, va_list args)
739     {
740         return native_interface->CallShortMethodList(this, obj, method_id, args);
741     }
CallShortMethodArray__EtsEnv742     ets_short CallShortMethodArray(ets_object obj, ets_method method_id, const ets_value *args)
743     {
744         return native_interface->CallShortMethodArray(this, obj, method_id, args);
745     }
CallIntMethod__EtsEnv746     ets_int CallIntMethod(ets_object obj, ets_method method_id, ...)
747     {
748         va_list args;
749         va_start(args, method_id);
750         ets_int res = native_interface->CallIntMethodList(this, obj, method_id, args);
751         va_end(args);
752         return res;
753     }
CallIntMethodList__EtsEnv754     ets_int CallIntMethodList(ets_object obj, ets_method method_id, va_list args)
755     {
756         return native_interface->CallIntMethodList(this, obj, method_id, args);
757     }
CallIntMethodArray__EtsEnv758     ets_int CallIntMethodArray(ets_object obj, ets_method method_id, const ets_value *args)
759     {
760         return native_interface->CallIntMethodArray(this, obj, method_id, args);
761     }
CallLongMethod__EtsEnv762     ets_long CallLongMethod(ets_object obj, ets_method method_id, ...)
763     {
764         va_list args;
765         va_start(args, method_id);
766         ets_long res = native_interface->CallLongMethodList(this, obj, method_id, args);
767         va_end(args);
768         return res;
769     }
CallLongMethodList__EtsEnv770     ets_long CallLongMethodList(ets_object obj, ets_method method_id, va_list args)
771     {
772         return native_interface->CallLongMethodList(this, obj, method_id, args);
773     }
CallLongMethodArray__EtsEnv774     ets_long CallLongMethodArray(ets_object obj, ets_method method_id, const ets_value *args)
775     {
776         return native_interface->CallLongMethodArray(this, obj, method_id, args);
777     }
CallFloatMethod__EtsEnv778     ets_float CallFloatMethod(ets_object obj, ets_method method_id, ...)
779     {
780         va_list args;
781         va_start(args, method_id);
782         ets_float res = native_interface->CallFloatMethodList(this, obj, method_id, args);
783         va_end(args);
784         return res;
785     }
CallFloatMethodList__EtsEnv786     ets_float CallFloatMethodList(ets_object obj, ets_method method_id, va_list args)
787     {
788         return native_interface->CallFloatMethodList(this, obj, method_id, args);
789     }
CallFloatMethodArray__EtsEnv790     ets_float CallFloatMethodArray(ets_object obj, ets_method method_id, const ets_value *args)
791     {
792         return native_interface->CallFloatMethodArray(this, obj, method_id, args);
793     }
CallDoubleMethod__EtsEnv794     ets_double CallDoubleMethod(ets_object obj, ets_method method_id, ...)
795     {
796         va_list args;
797         va_start(args, method_id);
798         ets_double res = native_interface->CallDoubleMethodList(this, obj, method_id, args);
799         va_end(args);
800         return res;
801     }
CallDoubleMethodList__EtsEnv802     ets_double CallDoubleMethodList(ets_object obj, ets_method method_id, va_list args)
803     {
804         return native_interface->CallDoubleMethodList(this, obj, method_id, args);
805     }
CallDoubleMethodArray__EtsEnv806     ets_double CallDoubleMethodArray(ets_object obj, ets_method method_id, const ets_value *args)
807     {
808         return native_interface->CallDoubleMethodArray(this, obj, method_id, args);
809     }
CallVoidMethod__EtsEnv810     void CallVoidMethod(ets_object obj, ets_method method_id, ...)
811     {
812         va_list args;
813         va_start(args, method_id);
814         native_interface->CallVoidMethodList(this, obj, method_id, args);
815         va_end(args);
816     }
CallVoidMethodList__EtsEnv817     void CallVoidMethodList(ets_object obj, ets_method method_id, va_list args)
818     {
819         native_interface->CallVoidMethodList(this, obj, method_id, args);
820     }
CallVoidMethodArray__EtsEnv821     void CallVoidMethodArray(ets_object obj, ets_method method_id, const ets_value *args)
822     {
823         native_interface->CallVoidMethodArray(this, obj, method_id, args);
824     }
CallNonvirtualObjectMethod__EtsEnv825     ets_object CallNonvirtualObjectMethod(ets_object obj, ets_class cls, ets_method method_id, ...)
826     {
827         va_list args;
828         va_start(args, method_id);
829         ets_object res = native_interface->CallNonvirtualObjectMethodList(this, obj, cls, method_id, args);
830         va_end(args);
831         return res;
832     }
CallNonvirtualObjectMethodList__EtsEnv833     ets_object CallNonvirtualObjectMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args)
834     {
835         return native_interface->CallNonvirtualObjectMethodList(this, obj, cls, method_id, args);
836     }
CallNonvirtualObjectMethodArray__EtsEnv837     ets_object CallNonvirtualObjectMethodArray(ets_object obj, ets_class cls, ets_method method_id,
838                                                const ets_value *args)
839     {
840         return native_interface->CallNonvirtualObjectMethodArray(this, obj, cls, method_id, args);
841     }
CallNonvirtualBooleanMethod__EtsEnv842     ets_boolean CallNonvirtualBooleanMethod(ets_object obj, ets_class cls, ets_method method_id, ...)
843     {
844         va_list args;
845         va_start(args, method_id);
846         ets_boolean res = native_interface->CallNonvirtualBooleanMethodList(this, obj, cls, method_id, args);
847         va_end(args);
848         return res;
849     }
CallNonvirtualBooleanMethodList__EtsEnv850     ets_boolean CallNonvirtualBooleanMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args)
851     {
852         return native_interface->CallNonvirtualBooleanMethodList(this, obj, cls, method_id, args);
853     }
CallNonvirtualBooleanMethodArray__EtsEnv854     ets_boolean CallNonvirtualBooleanMethodArray(ets_object obj, ets_class cls, ets_method method_id,
855                                                  const ets_value *args)
856     {
857         return native_interface->CallNonvirtualBooleanMethodArray(this, obj, cls, method_id, args);
858     }
CallNonvirtualByteMethod__EtsEnv859     ets_byte CallNonvirtualByteMethod(ets_object obj, ets_class cls, ets_method method_id, ...)
860     {
861         va_list args;
862         va_start(args, method_id);
863         ets_byte res = native_interface->CallNonvirtualByteMethodList(this, obj, cls, method_id, args);
864         va_end(args);
865         return res;
866     }
CallNonvirtualByteMethodList__EtsEnv867     ets_byte CallNonvirtualByteMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args)
868     {
869         return native_interface->CallNonvirtualByteMethodList(this, obj, cls, method_id, args);
870     }
CallNonvirtualByteMethodArray__EtsEnv871     ets_byte CallNonvirtualByteMethodArray(ets_object obj, ets_class cls, ets_method method_id, const ets_value *args)
872     {
873         return native_interface->CallNonvirtualByteMethodArray(this, obj, cls, method_id, args);
874     }
CallNonvirtualCharMethod__EtsEnv875     ets_char CallNonvirtualCharMethod(ets_object obj, ets_class cls, ets_method method_id, ...)
876     {
877         va_list args;
878         va_start(args, method_id);
879         ets_char res = native_interface->CallNonvirtualCharMethodList(this, obj, cls, method_id, args);
880         va_end(args);
881         return res;
882     }
CallNonvirtualCharMethodList__EtsEnv883     ets_char CallNonvirtualCharMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args)
884     {
885         return native_interface->CallNonvirtualCharMethodList(this, obj, cls, method_id, args);
886     }
CallNonvirtualCharMethodArray__EtsEnv887     ets_char CallNonvirtualCharMethodArray(ets_object obj, ets_class cls, ets_method method_id, const ets_value *args)
888     {
889         return native_interface->CallNonvirtualCharMethodArray(this, obj, cls, method_id, args);
890     }
CallNonvirtualShortMethod__EtsEnv891     ets_short CallNonvirtualShortMethod(ets_object obj, ets_class cls, ets_method method_id, ...)
892     {
893         va_list args;
894         va_start(args, method_id);
895         ets_short res = native_interface->CallNonvirtualShortMethodList(this, obj, cls, method_id, args);
896         va_end(args);
897         return res;
898     }
CallNonvirtualShortMethodList__EtsEnv899     ets_short CallNonvirtualShortMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args)
900     {
901         return native_interface->CallNonvirtualShortMethodList(this, obj, cls, method_id, args);
902     }
CallNonvirtualShortMethodArray__EtsEnv903     ets_short CallNonvirtualShortMethodArray(ets_object obj, ets_class cls, ets_method method_id, const ets_value *args)
904     {
905         return native_interface->CallNonvirtualShortMethodArray(this, obj, cls, method_id, args);
906     }
CallNonvirtualIntMethod__EtsEnv907     ets_int CallNonvirtualIntMethod(ets_object obj, ets_class cls, ets_method method_id, ...)
908     {
909         va_list args;
910         va_start(args, method_id);
911         ets_int res = native_interface->CallNonvirtualIntMethodList(this, obj, cls, method_id, args);
912         va_end(args);
913         return res;
914     }
CallNonvirtualIntMethodList__EtsEnv915     ets_int CallNonvirtualIntMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args)
916     {
917         return native_interface->CallNonvirtualIntMethodList(this, obj, cls, method_id, args);
918     }
CallNonvirtualIntMethodArray__EtsEnv919     ets_int CallNonvirtualIntMethodArray(ets_object obj, ets_class cls, ets_method method_id, const ets_value *args)
920     {
921         return native_interface->CallNonvirtualIntMethodArray(this, obj, cls, method_id, args);
922     }
CallNonvirtualLongMethod__EtsEnv923     ets_long CallNonvirtualLongMethod(ets_object obj, ets_class cls, ets_method method_id, ...)
924     {
925         va_list args;
926         va_start(args, method_id);
927         ets_long res = native_interface->CallNonvirtualLongMethodList(this, obj, cls, method_id, args);
928         va_end(args);
929         return res;
930     }
CallNonvirtualLongMethodList__EtsEnv931     ets_long CallNonvirtualLongMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args)
932     {
933         return native_interface->CallNonvirtualLongMethodList(this, obj, cls, method_id, args);
934     }
CallNonvirtualLongMethodArray__EtsEnv935     ets_long CallNonvirtualLongMethodArray(ets_object obj, ets_class cls, ets_method method_id, const ets_value *args)
936     {
937         return native_interface->CallNonvirtualLongMethodArray(this, obj, cls, method_id, args);
938     }
CallNonvirtualFloatMethod__EtsEnv939     ets_float CallNonvirtualFloatMethod(ets_object obj, ets_class cls, ets_method method_id, ...)
940     {
941         va_list args;
942         va_start(args, method_id);
943         ets_float res = native_interface->CallNonvirtualFloatMethodList(this, obj, cls, method_id, args);
944         va_end(args);
945         return res;
946     }
CallNonvirtualFloatMethodList__EtsEnv947     ets_float CallNonvirtualFloatMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args)
948     {
949         return native_interface->CallNonvirtualFloatMethodList(this, obj, cls, method_id, args);
950     }
CallNonvirtualFloatMethodArray__EtsEnv951     ets_float CallNonvirtualFloatMethodArray(ets_object obj, ets_class cls, ets_method method_id, const ets_value *args)
952     {
953         return native_interface->CallNonvirtualFloatMethodArray(this, obj, cls, method_id, args);
954     }
CallNonvirtualDoubleMethod__EtsEnv955     ets_double CallNonvirtualDoubleMethod(ets_object obj, ets_class cls, ets_method method_id, ...)
956     {
957         va_list args;
958         va_start(args, method_id);
959         ets_double res = native_interface->CallNonvirtualDoubleMethodList(this, obj, cls, method_id, args);
960         va_end(args);
961         return res;
962     }
CallNonvirtualDoubleMethodList__EtsEnv963     ets_double CallNonvirtualDoubleMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args)
964     {
965         return native_interface->CallNonvirtualDoubleMethodList(this, obj, cls, method_id, args);
966     }
CallNonvirtualDoubleMethodArray__EtsEnv967     ets_double CallNonvirtualDoubleMethodArray(ets_object obj, ets_class cls, ets_method method_id,
968                                                const ets_value *args)
969     {
970         return native_interface->CallNonvirtualDoubleMethodArray(this, obj, cls, method_id, args);
971     }
CallNonvirtualVoidMethod__EtsEnv972     void CallNonvirtualVoidMethod(ets_object obj, ets_class cls, ets_method method_id, ...)
973     {
974         va_list args;
975         va_start(args, method_id);
976         native_interface->CallNonvirtualVoidMethodList(this, obj, cls, method_id, args);
977         va_end(args);
978     }
CallNonvirtualVoidMethodList__EtsEnv979     void CallNonvirtualVoidMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args)
980     {
981         native_interface->CallNonvirtualVoidMethodList(this, obj, cls, method_id, args);
982     }
CallNonvirtualVoidMethodArray__EtsEnv983     void CallNonvirtualVoidMethodArray(ets_object obj, ets_class cls, ets_method method_id, const ets_value *args)
984     {
985         native_interface->CallNonvirtualVoidMethodArray(this, obj, cls, method_id, args);
986     }
Getp_field__EtsEnv987     ets_field Getp_field(ets_class cls, const char *name, const char *sig)
988     {
989         return native_interface->Getp_field(this, cls, name, sig);
990     }
GetObjectField__EtsEnv991     ets_object GetObjectField(ets_object obj, ets_field p_field)
992     {
993         return native_interface->GetObjectField(this, obj, p_field);
994     }
GetBooleanField__EtsEnv995     ets_boolean GetBooleanField(ets_object obj, ets_field p_field)
996     {
997         return native_interface->GetBooleanField(this, obj, p_field);
998     }
GetByteField__EtsEnv999     ets_byte GetByteField(ets_object obj, ets_field p_field)
1000     {
1001         return native_interface->GetByteField(this, obj, p_field);
1002     }
GetCharField__EtsEnv1003     ets_char GetCharField(ets_object obj, ets_field p_field)
1004     {
1005         return native_interface->GetCharField(this, obj, p_field);
1006     }
GetShortField__EtsEnv1007     ets_short GetShortField(ets_object obj, ets_field p_field)
1008     {
1009         return native_interface->GetShortField(this, obj, p_field);
1010     }
GetIntField__EtsEnv1011     ets_int GetIntField(ets_object obj, ets_field p_field)
1012     {
1013         return native_interface->GetIntField(this, obj, p_field);
1014     }
GetLongField__EtsEnv1015     ets_long GetLongField(ets_object obj, ets_field p_field)
1016     {
1017         return native_interface->GetLongField(this, obj, p_field);
1018     }
GetFloatField__EtsEnv1019     ets_float GetFloatField(ets_object obj, ets_field p_field)
1020     {
1021         return native_interface->GetFloatField(this, obj, p_field);
1022     }
GetDoubleField__EtsEnv1023     ets_double GetDoubleField(ets_object obj, ets_field p_field)
1024     {
1025         return native_interface->GetDoubleField(this, obj, p_field);
1026     }
SetObjectField__EtsEnv1027     void SetObjectField(ets_object obj, ets_field p_field, ets_object value)
1028     {
1029         return native_interface->SetObjectField(this, obj, p_field, value);
1030     }
SetBooleanField__EtsEnv1031     void SetBooleanField(ets_object obj, ets_field p_field, ets_boolean value)
1032     {
1033         return native_interface->SetBooleanField(this, obj, p_field, value);
1034     }
SetByteField__EtsEnv1035     void SetByteField(ets_object obj, ets_field p_field, ets_byte value)
1036     {
1037         return native_interface->SetByteField(this, obj, p_field, value);
1038     }
SetCharField__EtsEnv1039     void SetCharField(ets_object obj, ets_field p_field, ets_char value)
1040     {
1041         return native_interface->SetCharField(this, obj, p_field, value);
1042     }
SetShortField__EtsEnv1043     void SetShortField(ets_object obj, ets_field p_field, ets_short value)
1044     {
1045         return native_interface->SetShortField(this, obj, p_field, value);
1046     }
SetIntField__EtsEnv1047     void SetIntField(ets_object obj, ets_field p_field, ets_int value)
1048     {
1049         return native_interface->SetIntField(this, obj, p_field, value);
1050     }
SetLongField__EtsEnv1051     void SetLongField(ets_object obj, ets_field p_field, ets_long value)
1052     {
1053         return native_interface->SetLongField(this, obj, p_field, value);
1054     }
SetFloatField__EtsEnv1055     void SetFloatField(ets_object obj, ets_field p_field, ets_float value)
1056     {
1057         return native_interface->SetFloatField(this, obj, p_field, value);
1058     }
SetDoubleField__EtsEnv1059     void SetDoubleField(ets_object obj, ets_field p_field, ets_double value)
1060     {
1061         return native_interface->SetDoubleField(this, obj, p_field, value);
1062     }
GetStaticp_method__EtsEnv1063     ets_method GetStaticp_method(ets_class cls, const char *name, const char *sig)
1064     {
1065         return native_interface->GetStaticp_method(this, cls, name, sig);
1066     }
CallStaticObjectMethod__EtsEnv1067     ets_object CallStaticObjectMethod(ets_class cls, ets_method method_id, ...)
1068     {
1069         va_list args;
1070         va_start(args, method_id);
1071         ets_object res = native_interface->CallStaticObjectMethodList(this, cls, method_id, args);
1072         va_end(args);
1073         return res;
1074     }
CallStaticObjectMethodList__EtsEnv1075     ets_object CallStaticObjectMethodList(ets_class cls, ets_method method_id, va_list args)
1076     {
1077         return native_interface->CallStaticObjectMethodList(this, cls, method_id, args);
1078     }
CallStaticObjectMethodArray__EtsEnv1079     ets_object CallStaticObjectMethodArray(ets_class cls, ets_method method_id, ets_value *args)
1080     {
1081         return native_interface->CallStaticObjectMethodArray(this, cls, method_id, args);
1082     }
CallStaticBooleanMethod__EtsEnv1083     ets_boolean CallStaticBooleanMethod(ets_class cls, ets_method method_id, ...)
1084     {
1085         va_list args;
1086         va_start(args, method_id);
1087         ets_boolean res = native_interface->CallStaticBooleanMethodList(this, cls, method_id, args);
1088         va_end(args);
1089         return res;
1090     }
CallStaticBooleanMethodList__EtsEnv1091     ets_boolean CallStaticBooleanMethodList(ets_class cls, ets_method method_id, va_list args)
1092     {
1093         return native_interface->CallStaticBooleanMethodList(this, cls, method_id, args);
1094     }
CallStaticBooleanMethodArray__EtsEnv1095     ets_boolean CallStaticBooleanMethodArray(ets_class cls, ets_method method_id, ets_value *args)
1096     {
1097         return native_interface->CallStaticBooleanMethodArray(this, cls, method_id, args);
1098     }
CallStaticByteMethod__EtsEnv1099     ets_byte CallStaticByteMethod(ets_class cls, ets_method method_id, ...)
1100     {
1101         va_list args;
1102         va_start(args, method_id);
1103         ets_byte res = native_interface->CallStaticByteMethodList(this, cls, method_id, args);
1104         va_end(args);
1105         return res;
1106     }
CallStaticByteMethodList__EtsEnv1107     ets_byte CallStaticByteMethodList(ets_class cls, ets_method method_id, va_list args)
1108     {
1109         return native_interface->CallStaticByteMethodList(this, cls, method_id, args);
1110     }
CallStaticByteMethodArray__EtsEnv1111     ets_byte CallStaticByteMethodArray(ets_class cls, ets_method method_id, ets_value *args)
1112     {
1113         return native_interface->CallStaticByteMethodArray(this, cls, method_id, args);
1114     }
CallStaticCharMethod__EtsEnv1115     ets_char CallStaticCharMethod(ets_class cls, ets_method method_id, ...)
1116     {
1117         va_list args;
1118         va_start(args, method_id);
1119         ets_char res = native_interface->CallStaticCharMethodList(this, cls, method_id, args);
1120         va_end(args);
1121         return res;
1122     }
CallStaticCharMethodList__EtsEnv1123     ets_char CallStaticCharMethodList(ets_class cls, ets_method method_id, va_list args)
1124     {
1125         return native_interface->CallStaticCharMethodList(this, cls, method_id, args);
1126     }
CallStaticCharMethodArray__EtsEnv1127     ets_char CallStaticCharMethodArray(ets_class cls, ets_method method_id, ets_value *args)
1128     {
1129         return native_interface->CallStaticCharMethodArray(this, cls, method_id, args);
1130     }
CallStaticShortMethod__EtsEnv1131     ets_short CallStaticShortMethod(ets_class cls, ets_method method_id, ...)
1132     {
1133         va_list args;
1134         va_start(args, method_id);
1135         ets_short res = native_interface->CallStaticShortMethodList(this, cls, method_id, args);
1136         va_end(args);
1137         return res;
1138     }
CallStaticShortMethodList__EtsEnv1139     ets_short CallStaticShortMethodList(ets_class cls, ets_method method_id, va_list args)
1140     {
1141         return native_interface->CallStaticShortMethodList(this, cls, method_id, args);
1142     }
CallStaticShortMethodArray__EtsEnv1143     ets_short CallStaticShortMethodArray(ets_class cls, ets_method method_id, ets_value *args)
1144     {
1145         return native_interface->CallStaticShortMethodArray(this, cls, method_id, args);
1146     }
CallStaticIntMethod__EtsEnv1147     ets_int CallStaticIntMethod(ets_class cls, ets_method method_id, ...)
1148     {
1149         va_list args;
1150         va_start(args, method_id);
1151         ets_int res = native_interface->CallStaticIntMethodList(this, cls, method_id, args);
1152         va_end(args);
1153         return res;
1154     }
CallStaticIntMethodList__EtsEnv1155     ets_int CallStaticIntMethodList(ets_class cls, ets_method method_id, va_list args)
1156     {
1157         return native_interface->CallStaticIntMethodList(this, cls, method_id, args);
1158     }
CallStaticIntMethodArray__EtsEnv1159     ets_int CallStaticIntMethodArray(ets_class cls, ets_method method_id, ets_value *args)
1160     {
1161         return native_interface->CallStaticIntMethodArray(this, cls, method_id, args);
1162     }
CallStaticLongMethod__EtsEnv1163     ets_long CallStaticLongMethod(ets_class cls, ets_method method_id, ...)
1164     {
1165         va_list args;
1166         va_start(args, method_id);
1167         ets_long res = native_interface->CallStaticLongMethodList(this, cls, method_id, args);
1168         va_end(args);
1169         return res;
1170     }
CallStaticLongMethodList__EtsEnv1171     ets_long CallStaticLongMethodList(ets_class cls, ets_method method_id, va_list args)
1172     {
1173         return native_interface->CallStaticLongMethodList(this, cls, method_id, args);
1174     }
CallStaticLongMethodArray__EtsEnv1175     ets_long CallStaticLongMethodArray(ets_class cls, ets_method method_id, ets_value *args)
1176     {
1177         return native_interface->CallStaticLongMethodArray(this, cls, method_id, args);
1178     }
CallStaticFloatMethod__EtsEnv1179     ets_float CallStaticFloatMethod(ets_class cls, ets_method method_id, ...)
1180     {
1181         va_list args;
1182         va_start(args, method_id);
1183         ets_float res = native_interface->CallStaticFloatMethodList(this, cls, method_id, args);
1184         va_end(args);
1185         return res;
1186     }
CallStaticFloatMethodList__EtsEnv1187     ets_float CallStaticFloatMethodList(ets_class cls, ets_method method_id, va_list args)
1188     {
1189         return native_interface->CallStaticFloatMethodList(this, cls, method_id, args);
1190     }
CallStaticFloatMethodArray__EtsEnv1191     ets_float CallStaticFloatMethodArray(ets_class cls, ets_method method_id, ets_value *args)
1192     {
1193         return native_interface->CallStaticFloatMethodArray(this, cls, method_id, args);
1194     }
CallStaticDoubleMethod__EtsEnv1195     ets_double CallStaticDoubleMethod(ets_class cls, ets_method method_id, ...)
1196     {
1197         va_list args;
1198         va_start(args, method_id);
1199         ets_double res = native_interface->CallStaticDoubleMethodList(this, cls, method_id, args);
1200         va_end(args);
1201         return res;
1202     }
CallStaticDoubleMethodList__EtsEnv1203     ets_double CallStaticDoubleMethodList(ets_class cls, ets_method method_id, va_list args)
1204     {
1205         return native_interface->CallStaticDoubleMethodList(this, cls, method_id, args);
1206     }
CallStaticDoubleMethodArray__EtsEnv1207     ets_double CallStaticDoubleMethodArray(ets_class cls, ets_method method_id, ets_value *args)
1208     {
1209         return native_interface->CallStaticDoubleMethodArray(this, cls, method_id, args);
1210     }
CallStaticVoidMethod__EtsEnv1211     void CallStaticVoidMethod(ets_class cls, ets_method method_id, ...)
1212     {
1213         va_list args;
1214         va_start(args, method_id);
1215         native_interface->CallStaticVoidMethodList(this, cls, method_id, args);
1216         va_end(args);
1217     }
CallStaticVoidMethodList__EtsEnv1218     void CallStaticVoidMethodList(ets_class cls, ets_method method_id, va_list args)
1219     {
1220         native_interface->CallStaticVoidMethodList(this, cls, method_id, args);
1221     }
CallStaticVoidMethodArray__EtsEnv1222     void CallStaticVoidMethodArray(ets_class cls, ets_method method_id, ets_value *args)
1223     {
1224         native_interface->CallStaticVoidMethodArray(this, cls, method_id, args);
1225     }
GetStaticp_field__EtsEnv1226     ets_field GetStaticp_field(ets_class cls, const char *name, const char *sig)
1227     {
1228         return native_interface->GetStaticp_field(this, cls, name, sig);
1229     }
GetStaticObjectField__EtsEnv1230     ets_object GetStaticObjectField(ets_class cls, ets_field p_field)
1231     {
1232         return native_interface->GetStaticObjectField(this, cls, p_field);
1233     }
GetStaticBooleanField__EtsEnv1234     ets_boolean GetStaticBooleanField(ets_class cls, ets_field p_field)
1235     {
1236         return native_interface->GetStaticBooleanField(this, cls, p_field);
1237     }
GetStaticByteField__EtsEnv1238     ets_byte GetStaticByteField(ets_class cls, ets_field p_field)
1239     {
1240         return native_interface->GetStaticByteField(this, cls, p_field);
1241     }
GetStaticCharField__EtsEnv1242     ets_char GetStaticCharField(ets_class cls, ets_field p_field)
1243     {
1244         return native_interface->GetStaticCharField(this, cls, p_field);
1245     }
GetStaticShortField__EtsEnv1246     ets_short GetStaticShortField(ets_class cls, ets_field p_field)
1247     {
1248         return native_interface->GetStaticShortField(this, cls, p_field);
1249     }
GetStaticIntField__EtsEnv1250     ets_int GetStaticIntField(ets_class cls, ets_field p_field)
1251     {
1252         return native_interface->GetStaticIntField(this, cls, p_field);
1253     }
GetStaticLongField__EtsEnv1254     ets_long GetStaticLongField(ets_class cls, ets_field p_field)
1255     {
1256         return native_interface->GetStaticLongField(this, cls, p_field);
1257     }
GetStaticFloatField__EtsEnv1258     ets_float GetStaticFloatField(ets_class cls, ets_field p_field)
1259     {
1260         return native_interface->GetStaticFloatField(this, cls, p_field);
1261     }
GetStaticDoubleField__EtsEnv1262     ets_double GetStaticDoubleField(ets_class cls, ets_field p_field)
1263     {
1264         return native_interface->GetStaticDoubleField(this, cls, p_field);
1265     }
SetStaticObjectField__EtsEnv1266     void SetStaticObjectField(ets_class cls, ets_field p_field, ets_object value)
1267     {
1268         return native_interface->SetStaticObjectField(this, cls, p_field, value);
1269     }
SetStaticBooleanField__EtsEnv1270     void SetStaticBooleanField(ets_class cls, ets_field p_field, ets_boolean value)
1271     {
1272         return native_interface->SetStaticBooleanField(this, cls, p_field, value);
1273     }
SetStaticByteField__EtsEnv1274     void SetStaticByteField(ets_class cls, ets_field p_field, ets_byte value)
1275     {
1276         return native_interface->SetStaticByteField(this, cls, p_field, value);
1277     }
SetStaticCharField__EtsEnv1278     void SetStaticCharField(ets_class cls, ets_field p_field, ets_char value)
1279     {
1280         return native_interface->SetStaticCharField(this, cls, p_field, value);
1281     }
SetStaticShortField__EtsEnv1282     void SetStaticShortField(ets_class cls, ets_field p_field, ets_short value)
1283     {
1284         return native_interface->SetStaticShortField(this, cls, p_field, value);
1285     }
SetStaticIntField__EtsEnv1286     void SetStaticIntField(ets_class cls, ets_field p_field, ets_int value)
1287     {
1288         return native_interface->SetStaticIntField(this, cls, p_field, value);
1289     }
SetStaticLongField__EtsEnv1290     void SetStaticLongField(ets_class cls, ets_field p_field, ets_long value)
1291     {
1292         return native_interface->SetStaticLongField(this, cls, p_field, value);
1293     }
SetStaticFloatField__EtsEnv1294     void SetStaticFloatField(ets_class cls, ets_field p_field, ets_float value)
1295     {
1296         return native_interface->SetStaticFloatField(this, cls, p_field, value);
1297     }
SetStaticDoubleField__EtsEnv1298     void SetStaticDoubleField(ets_class cls, ets_field p_field, ets_double value)
1299     {
1300         return native_interface->SetStaticDoubleField(this, cls, p_field, value);
1301     }
NewString__EtsEnv1302     ets_string NewString(const ets_char *unicode_chars, ets_size len)
1303     {
1304         return native_interface->NewString(this, unicode_chars, len);
1305     }
GetStringLength__EtsEnv1306     ets_size GetStringLength(ets_string string)
1307     {
1308         return native_interface->GetStringLength(this, string);
1309     }
GetStringChars__EtsEnv1310     const ets_char *GetStringChars(ets_string string, ets_boolean *is_copy)
1311     {
1312         return native_interface->GetStringChars(this, string, is_copy);
1313     }
ReleaseStringChars__EtsEnv1314     void ReleaseStringChars(ets_string string, const ets_char *chars)
1315     {
1316         native_interface->ReleaseStringChars(this, string, chars);
1317     }
NewStringUTF__EtsEnv1318     ets_string NewStringUTF(const char *bytes)
1319     {
1320         return native_interface->NewStringUTF(this, bytes);
1321     }
GetStringUTFLength__EtsEnv1322     ets_size GetStringUTFLength(ets_string string)
1323     {
1324         return native_interface->GetStringUTFLength(this, string);
1325     }
GetStringUTFChars__EtsEnv1326     const char *GetStringUTFChars(ets_string string, ets_boolean *is_copy)
1327     {
1328         return native_interface->GetStringUTFChars(this, string, is_copy);
1329     }
ReleaseStringUTFChars__EtsEnv1330     void ReleaseStringUTFChars(ets_string string, const char *chars)
1331     {
1332         native_interface->ReleaseStringUTFChars(this, string, chars);
1333     }
GetArrayLength__EtsEnv1334     ets_size GetArrayLength(ets_array array)
1335     {
1336         return native_interface->GetArrayLength(this, array);
1337     }
NewObjectsArray__EtsEnv1338     ets_objectArray NewObjectsArray(ets_size length, ets_class element_class, ets_object initial_element)
1339     {
1340         return native_interface->NewObjectsArray(this, length, element_class, initial_element);
1341     }
GetObjectArrayElement__EtsEnv1342     ets_object GetObjectArrayElement(ets_objectArray array, ets_size index)
1343     {
1344         return native_interface->GetObjectArrayElement(this, array, index);
1345     }
1346 
SetObjectArrayElement__EtsEnv1347     void SetObjectArrayElement(ets_objectArray array, ets_size index, ets_object value)
1348     {
1349         native_interface->SetObjectArrayElement(this, array, index, value);
1350     }
1351 
1352     // SetObjectArrayElement,
NewBooleanArray__EtsEnv1353     ets_booleanArray NewBooleanArray(ets_size length)
1354     {
1355         return native_interface->NewBooleanArray(this, length);
1356     }
NewByteArray__EtsEnv1357     ets_byteArray NewByteArray(ets_size length)
1358     {
1359         return native_interface->NewByteArray(this, length);
1360     }
NewCharArray__EtsEnv1361     ets_charArray NewCharArray(ets_size length)
1362     {
1363         return native_interface->NewCharArray(this, length);
1364     }
NewShortArray__EtsEnv1365     ets_shortArray NewShortArray(ets_size length)
1366     {
1367         return native_interface->NewShortArray(this, length);
1368     }
NewIntArray__EtsEnv1369     ets_intArray NewIntArray(ets_size length)
1370     {
1371         return native_interface->NewIntArray(this, length);
1372     }
NewLongArray__EtsEnv1373     ets_longArray NewLongArray(ets_size length)
1374     {
1375         return native_interface->NewLongArray(this, length);
1376     }
NewFloatArray__EtsEnv1377     ets_floatArray NewFloatArray(ets_size length)
1378     {
1379         return native_interface->NewFloatArray(this, length);
1380     }
NewDoubleArray__EtsEnv1381     ets_doubleArray NewDoubleArray(ets_size length)
1382     {
1383         return native_interface->NewDoubleArray(this, length);
1384     }
PinBooleanArray__EtsEnv1385     ets_boolean *PinBooleanArray(ets_booleanArray array)
1386     {
1387         return native_interface->PinBooleanArray(this, array);
1388     }
PinByteArray__EtsEnv1389     ets_byte *PinByteArray(ets_byteArray array)
1390     {
1391         return native_interface->PinByteArray(this, array);
1392     }
PinCharArray__EtsEnv1393     ets_char *PinCharArray(ets_charArray array)
1394     {
1395         return native_interface->PinCharArray(this, array);
1396     }
PinShortArray__EtsEnv1397     ets_short *PinShortArray(ets_shortArray array)
1398     {
1399         return native_interface->PinShortArray(this, array);
1400     }
PinIntArray__EtsEnv1401     ets_int *PinIntArray(ets_intArray array)
1402     {
1403         return native_interface->PinIntArray(this, array);
1404     }
PinLongArray__EtsEnv1405     ets_long *PinLongArray(ets_longArray array)
1406     {
1407         return native_interface->PinLongArray(this, array);
1408     }
PinFloatArray__EtsEnv1409     ets_float *PinFloatArray(ets_floatArray array)
1410     {
1411         return native_interface->PinFloatArray(this, array);
1412     }
PinDoubleArray__EtsEnv1413     ets_double *PinDoubleArray(ets_doubleArray array)
1414     {
1415         return native_interface->PinDoubleArray(this, array);
1416     }
UnpinBooleanArray__EtsEnv1417     void UnpinBooleanArray(ets_booleanArray array)
1418     {
1419         return native_interface->UnpinBooleanArray(this, array);
1420     }
UnpinByteArray__EtsEnv1421     void UnpinByteArray(ets_byteArray array)
1422     {
1423         return native_interface->UnpinByteArray(this, array);
1424     }
UnpinCharArray__EtsEnv1425     void UnpinCharArray(ets_charArray array)
1426     {
1427         return native_interface->UnpinCharArray(this, array);
1428     }
UnpinShortArray__EtsEnv1429     void UnpinShortArray(ets_shortArray array)
1430     {
1431         return native_interface->UnpinShortArray(this, array);
1432     }
UnpinIntArray__EtsEnv1433     void UnpinIntArray(ets_intArray array)
1434     {
1435         return native_interface->UnpinIntArray(this, array);
1436     }
UnpinLongArray__EtsEnv1437     void UnpinLongArray(ets_longArray array)
1438     {
1439         return native_interface->UnpinLongArray(this, array);
1440     }
UnpinFloatArray__EtsEnv1441     void UnpinFloatArray(ets_floatArray array)
1442     {
1443         return native_interface->UnpinFloatArray(this, array);
1444     }
UnpinDoubleArray__EtsEnv1445     void UnpinDoubleArray(ets_doubleArray array)
1446     {
1447         return native_interface->UnpinDoubleArray(this, array);
1448     }
GetBooleanArrayRegion__EtsEnv1449     void GetBooleanArrayRegion(ets_booleanArray array, ets_size start, ets_size len, ets_boolean *buf)
1450     {
1451         return native_interface->GetBooleanArrayRegion(this, array, start, len, buf);
1452     }
GetByteArrayRegion__EtsEnv1453     void GetByteArrayRegion(ets_byteArray array, ets_size start, ets_size len, ets_byte *buf)
1454     {
1455         return native_interface->GetByteArrayRegion(this, array, start, len, buf);
1456     }
GetCharArrayRegion__EtsEnv1457     void GetCharArrayRegion(ets_charArray array, ets_size start, ets_size len, ets_char *buf)
1458     {
1459         return native_interface->GetCharArrayRegion(this, array, start, len, buf);
1460     }
GetShortArrayRegion__EtsEnv1461     void GetShortArrayRegion(ets_shortArray array, ets_size start, ets_size len, ets_short *buf)
1462     {
1463         return native_interface->GetShortArrayRegion(this, array, start, len, buf);
1464     }
GetIntArrayRegion__EtsEnv1465     void GetIntArrayRegion(ets_intArray array, ets_size start, ets_size len, ets_int *buf)
1466     {
1467         return native_interface->GetIntArrayRegion(this, array, start, len, buf);
1468     }
GetLongArrayRegion__EtsEnv1469     void GetLongArrayRegion(ets_longArray array, ets_size start, ets_size len, ets_long *buf)
1470     {
1471         return native_interface->GetLongArrayRegion(this, array, start, len, buf);
1472     }
GetFloatArrayRegion__EtsEnv1473     void GetFloatArrayRegion(ets_floatArray array, ets_size start, ets_size len, ets_float *buf)
1474     {
1475         return native_interface->GetFloatArrayRegion(this, array, start, len, buf);
1476     }
GetDoubleArrayRegion__EtsEnv1477     void GetDoubleArrayRegion(ets_doubleArray array, ets_size start, ets_size len, ets_double *buf)
1478     {
1479         return native_interface->GetDoubleArrayRegion(this, array, start, len, buf);
1480     }
SetBooleanArrayRegion__EtsEnv1481     void SetBooleanArrayRegion(ets_booleanArray array, ets_size start, ets_size length, const ets_boolean *buf)
1482     {
1483         native_interface->SetBooleanArrayRegion(this, array, start, length, buf);
1484     }
SetByteArrayRegion__EtsEnv1485     void SetByteArrayRegion(ets_byteArray array, ets_size start, ets_size length, const ets_byte *buf)
1486     {
1487         native_interface->SetByteArrayRegion(this, array, start, length, buf);
1488     }
SetCharArrayRegion__EtsEnv1489     void SetCharArrayRegion(ets_charArray array, ets_size start, ets_size length, const ets_char *buf)
1490     {
1491         native_interface->SetCharArrayRegion(this, array, start, length, buf);
1492     }
SetShortArrayRegion__EtsEnv1493     void SetShortArrayRegion(ets_shortArray array, ets_size start, ets_size length, const ets_short *buf)
1494     {
1495         native_interface->SetShortArrayRegion(this, array, start, length, buf);
1496     }
SetIntArrayRegion__EtsEnv1497     void SetIntArrayRegion(ets_intArray array, ets_size start, ets_size length, const ets_int *buf)
1498     {
1499         native_interface->SetIntArrayRegion(this, array, start, length, buf);
1500     }
SetLongArrayRegion__EtsEnv1501     void SetLongArrayRegion(ets_longArray array, ets_size start, ets_size length, const ets_long *buf)
1502     {
1503         native_interface->SetLongArrayRegion(this, array, start, length, buf);
1504     }
SetFloatArrayRegion__EtsEnv1505     void SetFloatArrayRegion(ets_floatArray array, ets_size start, ets_size length, const ets_float *buf)
1506     {
1507         native_interface->SetFloatArrayRegion(this, array, start, length, buf);
1508     }
SetDoubleArrayRegion__EtsEnv1509     void SetDoubleArrayRegion(ets_doubleArray array, ets_size start, ets_size length, const ets_double *buf)
1510     {
1511         native_interface->SetDoubleArrayRegion(this, array, start, length, buf);
1512     }
RegisterNatives__EtsEnv1513     ets_int RegisterNatives(ets_class cls, const EtsNativeMethod *methods, ets_int nMethods)
1514     {
1515         return native_interface->RegisterNatives(this, cls, methods, nMethods);
1516     }
UnregisterNatives__EtsEnv1517     ets_int UnregisterNatives(ets_class cls)
1518     {
1519         return native_interface->UnregisterNatives(this, cls);
1520     }
GetEtsVM__EtsEnv1521     ets_int GetEtsVM(EtsVM **vm)
1522     {
1523         return native_interface->GetEtsVM(this, vm);
1524     }
GetStringRegion__EtsEnv1525     void GetStringRegion(ets_string str, ets_size start, ets_size len, ets_char *buf)
1526     {
1527         native_interface->GetStringRegion(this, str, start, len, buf);
1528     }
GetStringUTFRegion__EtsEnv1529     void GetStringUTFRegion(ets_string str, ets_size start, ets_size len, char *buf)
1530     {
1531         native_interface->GetStringUTFRegion(this, str, start, len, buf);
1532     }
NewWeakGlobalRef__EtsEnv1533     ets_weak NewWeakGlobalRef(ets_object obj)
1534     {
1535         return native_interface->NewWeakGlobalRef(this, obj);
1536     }
DeleteWeakGlobalRef__EtsEnv1537     void DeleteWeakGlobalRef(ets_weak obj)
1538     {
1539         native_interface->DeleteWeakGlobalRef(this, obj);
1540     }
ErrorCheck__EtsEnv1541     ets_boolean ErrorCheck()
1542     {
1543         return native_interface->ErrorCheck(this);
1544     }
1545     // NewDirectByteBuffer,
1546     // GetDirectBufferAddress,
1547     // GetDirectBufferCapacity,
GetObjectRefType__EtsEnv1548     ets_objectRefType GetObjectRefType(ets_object obj)
1549     {
1550         return native_interface->GetObjectRefType(this, obj);
1551     }
1552 
1553     // Promise
PromiseCreate__EtsEnv1554     ets_status PromiseCreate(ets_deferred *deferred, ets_object *promise)
1555     {
1556         return native_interface->PromiseCreate(this, deferred, promise);
1557     }
DeferredResolve__EtsEnv1558     ets_status DeferredResolve(ets_deferred deferred, ets_object resolution)
1559     {
1560         return native_interface->DeferredResolve(this, deferred, resolution);
1561     }
DeferredReject__EtsEnv1562     ets_status DeferredReject(ets_deferred deferred, ets_object rejection)
1563     {
1564         return native_interface->DeferredReject(this, deferred, rejection);
1565     }
1566 
1567     // ArrayBuffer
ArrayBufferCreate__EtsEnv1568     ets_status ArrayBufferCreate(size_t byteLength, void **data, ets_arraybuffer *result)
1569     {
1570         return native_interface->ArrayBufferCreate(this, byteLength, data, result);
1571     }
ArrayBufferCreateExternal__EtsEnv1572     ets_status ArrayBufferCreateExternal(void *externalData, size_t byteLength, EtsFinalize finalizeCb,
1573                                          void *finalizeHint, ets_arraybuffer *result)
1574     {
1575         return native_interface->ArrayBufferCreateExternal(this, externalData, byteLength, finalizeCb, finalizeHint,
1576                                                            result);
1577     }
ArrayBufferGetInfo__EtsEnv1578     ets_status ArrayBufferGetInfo(ets_arraybuffer buffer, void **resultData, size_t *resultByteLength)
1579     {
1580         return native_interface->ArrayBufferGetInfo(this, buffer, resultData, resultByteLength);
1581     }
ArrayBufferDetach__EtsEnv1582     ets_status ArrayBufferDetach(ets_arraybuffer buffer)
1583     {
1584         return native_interface->ArrayBufferDetach(this, buffer);
1585     }
ArrayBufferIsDetached__EtsEnv1586     ets_status ArrayBufferIsDetached(ets_arraybuffer buffer, bool *result)
1587     {
1588         return native_interface->ArrayBufferIsDetached(this, buffer, result);
1589     }
1590 #endif
1591 };
1592 
1593 // NOLINTEND(modernize-use-using, readability-identifier-naming, cppcoreguidelines-pro-type-vararg)
1594 
1595 #endif  // PANDA_RUNTIME_INTEROP_ETS_NAPI_H
1596