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