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 } EtsOptionType; 457 458 typedef struct EtsVMOption { 459 EtsOptionType option; 460 const void *extraInfo; 461 } EtsVMOption; 462 463 typedef struct EtsVMInitArgs { 464 ets_int version; 465 ets_int nOptions; 466 EtsVMOption *options; 467 } EtsVMInitArgs; 468 469 typedef enum { 470 ETS_MOBILE_LOG_LEVEL_UNKNOWN = 0, 471 ETS_MOBILE_LOG_LEVEL_DEFAULT, 472 ETS_MOBILE_LOG_LEVEL_VERBOSE, 473 ETS_MOBILE_LOG_LEVEL_DEBUG, 474 ETS_MOBILE_LOG_LEVEL_INFO, 475 ETS_MOBILE_LOG_LEVEL_WARN, 476 ETS_MOBILE_LOG_LEVEL_ERROR, 477 ETS_MOBILE_LOG_LEVEL_FATAL, 478 ETS_MOBILE_LOG_LEVEL_SILENT 479 } EtsMobileLogggerLevel; 480 481 #ifdef __cplusplus 482 extern "C" { 483 #endif 484 485 #define ETS_EXPORT __attribute__((visibility("default"))) 486 #define ETS_IMPORT 487 #define ETS_CALL 488 489 ets_int ETS_GetDefaultVMInitArgs(EtsVMInitArgs *vmArgs); 490 ets_int ETS_GetCreatedVMs(EtsVM **vmBuf, ets_size bufLen, ets_size *nVms); 491 ets_int ETS_CreateVM(EtsVM **pVm, EtsEnv **pEnv, EtsVMInitArgs *vmArgs); 492 493 #ifdef __cplusplus 494 } 495 #endif 496 497 struct ETS_InvokeInterface { 498 ets_int (*DestroyEtsVM)(EtsVM *vm); 499 ets_int (*GetEnv)(EtsVM *vm, EtsEnv **pEnv, ets_int version); 500 }; 501 502 struct __EtsVM { 503 // NOLINTNEXTLINE(misc-non-private-member-variables-in-classes) 504 const struct ETS_InvokeInterface *invoke_interface; 505 506 #ifdef __cplusplus DestroyEtsVM__EtsVM507 ets_int DestroyEtsVM() 508 { 509 return invoke_interface->DestroyEtsVM(this); 510 } 511 GetEnv__EtsVM512 ets_int GetEnv(EtsEnv **pEnv, ets_int version) 513 { 514 return invoke_interface->GetEnv(this, pEnv, version); 515 } 516 #endif 517 }; 518 519 struct __EtsEnv { 520 // NOLINTNEXTLINE(misc-non-private-member-variables-in-classes) 521 const struct ETS_NativeInterface *native_interface; 522 523 #ifdef __cplusplus 524 GetVersion__EtsEnv525 ets_int GetVersion() 526 { 527 return native_interface->GetVersion(this); 528 } 529 // DefineClass, FindClass__EtsEnv530 ets_class FindClass(const char *name) 531 { 532 return native_interface->FindClass(this, name); 533 } 534 // FromReflectedMethod, 535 // FromReflectedField, 536 // ToReflectedMethod, GetSuperclass__EtsEnv537 ets_class GetSuperclass(ets_class cls) 538 { 539 return native_interface->GetSuperclass(this, cls); 540 } IsAssignableFrom__EtsEnv541 ets_boolean IsAssignableFrom(ets_class cls1, ets_class cls2) 542 { 543 return native_interface->IsAssignableFrom(this, cls1, cls2); 544 } 545 // ToReflectedField, ThrowError__EtsEnv546 ets_int ThrowError(ets_error obj) 547 { 548 return native_interface->ThrowError(this, obj); 549 } ThrowErrorNew__EtsEnv550 ets_int ThrowErrorNew(ets_class cls, const char *message) 551 { 552 return native_interface->ThrowErrorNew(this, cls, message); 553 } ErrorOccurred__EtsEnv554 ets_error ErrorOccurred() 555 { 556 return native_interface->ErrorOccurred(this); 557 } ErrorDescribe__EtsEnv558 void ErrorDescribe() 559 { 560 native_interface->ErrorDescribe(this); 561 } ErrorClear__EtsEnv562 void ErrorClear() 563 { 564 native_interface->ErrorClear(this); 565 } FatalError__EtsEnv566 void FatalError(const char *message) 567 { 568 native_interface->FatalError(this, message); 569 } PushLocalFrame__EtsEnv570 ets_int PushLocalFrame(ets_int capacity) 571 { 572 return native_interface->PushLocalFrame(this, capacity); 573 } PopLocalFrame__EtsEnv574 ets_object PopLocalFrame(ets_object result) 575 { 576 return native_interface->PopLocalFrame(this, result); 577 } NewGlobalRef__EtsEnv578 ets_object NewGlobalRef(ets_object obj) 579 { 580 return native_interface->NewGlobalRef(this, obj); 581 } DeleteGlobalRef__EtsEnv582 void DeleteGlobalRef(ets_object globalRef) 583 { 584 native_interface->DeleteGlobalRef(this, globalRef); 585 } DeleteLocalRef__EtsEnv586 void DeleteLocalRef(ets_object localRef) 587 { 588 native_interface->DeleteLocalRef(this, localRef); 589 } IsSameObject__EtsEnv590 ets_boolean IsSameObject(ets_object ref1, ets_object ref2) 591 { 592 return native_interface->IsSameObject(this, ref1, ref2); 593 } NewLocalRef__EtsEnv594 ets_object NewLocalRef(ets_object ref) 595 { 596 return native_interface->NewLocalRef(this, ref); 597 } EnsureLocalCapacity__EtsEnv598 ets_int EnsureLocalCapacity(ets_int capacity) 599 { 600 return native_interface->EnsureLocalCapacity(this, capacity); 601 } AllocObject__EtsEnv602 ets_object AllocObject(ets_class cls) 603 { 604 return native_interface->AllocObject(this, cls); 605 } NewObject__EtsEnv606 ets_object NewObject(ets_class cls, ets_method p_method, ...) 607 { 608 va_list args; 609 va_start(args, p_method); 610 ets_object ret = native_interface->NewObjectList(this, cls, p_method, args); 611 va_end(args); 612 return ret; 613 } NewObjectList__EtsEnv614 ets_object NewObjectList(ets_class cls, ets_method p_method, va_list args) 615 { 616 return native_interface->NewObjectList(this, cls, p_method, args); 617 } NewObjectArray__EtsEnv618 ets_object NewObjectArray(ets_class cls, ets_method p_method, const ets_value *args) 619 { 620 return native_interface->NewObjectArray(this, cls, p_method, args); 621 } GetObjectClass__EtsEnv622 ets_class GetObjectClass(ets_object obj) 623 { 624 return native_interface->GetObjectClass(this, obj); 625 } IsInstanceOf__EtsEnv626 ets_boolean IsInstanceOf(ets_object obj, ets_class cls) 627 { 628 return native_interface->IsInstanceOf(this, obj, cls); 629 } Getp_method__EtsEnv630 ets_method Getp_method(ets_class cls, const char *name, const char *sig) 631 { 632 return native_interface->Getp_method(this, cls, name, sig); 633 } CallObjectMethod__EtsEnv634 ets_object CallObjectMethod(ets_object obj, ets_method method_id, ...) 635 { 636 va_list args; 637 va_start(args, method_id); 638 ets_object res = native_interface->CallObjectMethodList(this, obj, method_id, args); 639 va_end(args); 640 return res; 641 } CallObjectMethodList__EtsEnv642 ets_object CallObjectMethodList(ets_object obj, ets_method method_id, va_list args) 643 { 644 return native_interface->CallObjectMethodList(this, obj, method_id, args); 645 } CallObjectMethodArray__EtsEnv646 ets_object CallObjectMethodArray(ets_object obj, ets_method method_id, const ets_value *args) 647 { 648 return native_interface->CallObjectMethodArray(this, obj, method_id, args); 649 } CallBooleanMethod__EtsEnv650 ets_boolean CallBooleanMethod(ets_object obj, ets_method method_id, ...) 651 { 652 va_list args; 653 va_start(args, method_id); 654 ets_boolean res = native_interface->CallBooleanMethodList(this, obj, method_id, args); 655 va_end(args); 656 return res; 657 } CallBooleanMethodList__EtsEnv658 ets_boolean CallBooleanMethodList(ets_object obj, ets_method method_id, va_list args) 659 { 660 return native_interface->CallBooleanMethodList(this, obj, method_id, args); 661 } CallBooleanMethodArray__EtsEnv662 ets_boolean CallBooleanMethodArray(ets_object obj, ets_method method_id, const ets_value *args) 663 { 664 return native_interface->CallBooleanMethodArray(this, obj, method_id, args); 665 } CallByteMethod__EtsEnv666 ets_byte CallByteMethod(ets_object obj, ets_method method_id, ...) 667 { 668 va_list args; 669 va_start(args, method_id); 670 ets_byte res = native_interface->CallByteMethodList(this, obj, method_id, args); 671 va_end(args); 672 return res; 673 } CallByteMethodList__EtsEnv674 ets_byte CallByteMethodList(ets_object obj, ets_method method_id, va_list args) 675 { 676 return native_interface->CallByteMethodList(this, obj, method_id, args); 677 } CallByteMethodArray__EtsEnv678 ets_byte CallByteMethodArray(ets_object obj, ets_method method_id, const ets_value *args) 679 { 680 return native_interface->CallByteMethodArray(this, obj, method_id, args); 681 } CallCharMethod__EtsEnv682 ets_char CallCharMethod(ets_object obj, ets_method method_id, ...) 683 { 684 va_list args; 685 va_start(args, method_id); 686 ets_char res = native_interface->CallCharMethodList(this, obj, method_id, args); 687 va_end(args); 688 return res; 689 } CallCharMethodList__EtsEnv690 ets_char CallCharMethodList(ets_object obj, ets_method method_id, va_list args) 691 { 692 return native_interface->CallCharMethodList(this, obj, method_id, args); 693 } CallCharMethodArray__EtsEnv694 ets_char CallCharMethodArray(ets_object obj, ets_method method_id, const ets_value *args) 695 { 696 return native_interface->CallCharMethodArray(this, obj, method_id, args); 697 } CallShortMethod__EtsEnv698 ets_short CallShortMethod(ets_object obj, ets_method method_id, ...) 699 { 700 va_list args; 701 va_start(args, method_id); 702 ets_short res = native_interface->CallShortMethodList(this, obj, method_id, args); 703 va_end(args); 704 return res; 705 } CallShortMethodList__EtsEnv706 ets_short CallShortMethodList(ets_object obj, ets_method method_id, va_list args) 707 { 708 return native_interface->CallShortMethodList(this, obj, method_id, args); 709 } CallShortMethodArray__EtsEnv710 ets_short CallShortMethodArray(ets_object obj, ets_method method_id, const ets_value *args) 711 { 712 return native_interface->CallShortMethodArray(this, obj, method_id, args); 713 } CallIntMethod__EtsEnv714 ets_int CallIntMethod(ets_object obj, ets_method method_id, ...) 715 { 716 va_list args; 717 va_start(args, method_id); 718 ets_int res = native_interface->CallIntMethodList(this, obj, method_id, args); 719 va_end(args); 720 return res; 721 } CallIntMethodList__EtsEnv722 ets_int CallIntMethodList(ets_object obj, ets_method method_id, va_list args) 723 { 724 return native_interface->CallIntMethodList(this, obj, method_id, args); 725 } CallIntMethodArray__EtsEnv726 ets_int CallIntMethodArray(ets_object obj, ets_method method_id, const ets_value *args) 727 { 728 return native_interface->CallIntMethodArray(this, obj, method_id, args); 729 } CallLongMethod__EtsEnv730 ets_long CallLongMethod(ets_object obj, ets_method method_id, ...) 731 { 732 va_list args; 733 va_start(args, method_id); 734 ets_long res = native_interface->CallLongMethodList(this, obj, method_id, args); 735 va_end(args); 736 return res; 737 } CallLongMethodList__EtsEnv738 ets_long CallLongMethodList(ets_object obj, ets_method method_id, va_list args) 739 { 740 return native_interface->CallLongMethodList(this, obj, method_id, args); 741 } CallLongMethodArray__EtsEnv742 ets_long CallLongMethodArray(ets_object obj, ets_method method_id, const ets_value *args) 743 { 744 return native_interface->CallLongMethodArray(this, obj, method_id, args); 745 } CallFloatMethod__EtsEnv746 ets_float CallFloatMethod(ets_object obj, ets_method method_id, ...) 747 { 748 va_list args; 749 va_start(args, method_id); 750 ets_float res = native_interface->CallFloatMethodList(this, obj, method_id, args); 751 va_end(args); 752 return res; 753 } CallFloatMethodList__EtsEnv754 ets_float CallFloatMethodList(ets_object obj, ets_method method_id, va_list args) 755 { 756 return native_interface->CallFloatMethodList(this, obj, method_id, args); 757 } CallFloatMethodArray__EtsEnv758 ets_float CallFloatMethodArray(ets_object obj, ets_method method_id, const ets_value *args) 759 { 760 return native_interface->CallFloatMethodArray(this, obj, method_id, args); 761 } CallDoubleMethod__EtsEnv762 ets_double CallDoubleMethod(ets_object obj, ets_method method_id, ...) 763 { 764 va_list args; 765 va_start(args, method_id); 766 ets_double res = native_interface->CallDoubleMethodList(this, obj, method_id, args); 767 va_end(args); 768 return res; 769 } CallDoubleMethodList__EtsEnv770 ets_double CallDoubleMethodList(ets_object obj, ets_method method_id, va_list args) 771 { 772 return native_interface->CallDoubleMethodList(this, obj, method_id, args); 773 } CallDoubleMethodArray__EtsEnv774 ets_double CallDoubleMethodArray(ets_object obj, ets_method method_id, const ets_value *args) 775 { 776 return native_interface->CallDoubleMethodArray(this, obj, method_id, args); 777 } CallVoidMethod__EtsEnv778 void CallVoidMethod(ets_object obj, ets_method method_id, ...) 779 { 780 va_list args; 781 va_start(args, method_id); 782 native_interface->CallVoidMethodList(this, obj, method_id, args); 783 va_end(args); 784 } CallVoidMethodList__EtsEnv785 void CallVoidMethodList(ets_object obj, ets_method method_id, va_list args) 786 { 787 native_interface->CallVoidMethodList(this, obj, method_id, args); 788 } CallVoidMethodArray__EtsEnv789 void CallVoidMethodArray(ets_object obj, ets_method method_id, const ets_value *args) 790 { 791 native_interface->CallVoidMethodArray(this, obj, method_id, args); 792 } CallNonvirtualObjectMethod__EtsEnv793 ets_object CallNonvirtualObjectMethod(ets_object obj, ets_class cls, ets_method method_id, ...) 794 { 795 va_list args; 796 va_start(args, method_id); 797 ets_object res = native_interface->CallNonvirtualObjectMethodList(this, obj, cls, method_id, args); 798 va_end(args); 799 return res; 800 } CallNonvirtualObjectMethodList__EtsEnv801 ets_object CallNonvirtualObjectMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args) 802 { 803 return native_interface->CallNonvirtualObjectMethodList(this, obj, cls, method_id, args); 804 } CallNonvirtualObjectMethodArray__EtsEnv805 ets_object CallNonvirtualObjectMethodArray(ets_object obj, ets_class cls, ets_method method_id, 806 const ets_value *args) 807 { 808 return native_interface->CallNonvirtualObjectMethodArray(this, obj, cls, method_id, args); 809 } CallNonvirtualBooleanMethod__EtsEnv810 ets_boolean CallNonvirtualBooleanMethod(ets_object obj, ets_class cls, ets_method method_id, ...) 811 { 812 va_list args; 813 va_start(args, method_id); 814 ets_boolean res = native_interface->CallNonvirtualBooleanMethodList(this, obj, cls, method_id, args); 815 va_end(args); 816 return res; 817 } CallNonvirtualBooleanMethodList__EtsEnv818 ets_boolean CallNonvirtualBooleanMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args) 819 { 820 return native_interface->CallNonvirtualBooleanMethodList(this, obj, cls, method_id, args); 821 } CallNonvirtualBooleanMethodArray__EtsEnv822 ets_boolean CallNonvirtualBooleanMethodArray(ets_object obj, ets_class cls, ets_method method_id, 823 const ets_value *args) 824 { 825 return native_interface->CallNonvirtualBooleanMethodArray(this, obj, cls, method_id, args); 826 } CallNonvirtualByteMethod__EtsEnv827 ets_byte CallNonvirtualByteMethod(ets_object obj, ets_class cls, ets_method method_id, ...) 828 { 829 va_list args; 830 va_start(args, method_id); 831 ets_byte res = native_interface->CallNonvirtualByteMethodList(this, obj, cls, method_id, args); 832 va_end(args); 833 return res; 834 } CallNonvirtualByteMethodList__EtsEnv835 ets_byte CallNonvirtualByteMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args) 836 { 837 return native_interface->CallNonvirtualByteMethodList(this, obj, cls, method_id, args); 838 } CallNonvirtualByteMethodArray__EtsEnv839 ets_byte CallNonvirtualByteMethodArray(ets_object obj, ets_class cls, ets_method method_id, const ets_value *args) 840 { 841 return native_interface->CallNonvirtualByteMethodArray(this, obj, cls, method_id, args); 842 } CallNonvirtualCharMethod__EtsEnv843 ets_char CallNonvirtualCharMethod(ets_object obj, ets_class cls, ets_method method_id, ...) 844 { 845 va_list args; 846 va_start(args, method_id); 847 ets_char res = native_interface->CallNonvirtualCharMethodList(this, obj, cls, method_id, args); 848 va_end(args); 849 return res; 850 } CallNonvirtualCharMethodList__EtsEnv851 ets_char CallNonvirtualCharMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args) 852 { 853 return native_interface->CallNonvirtualCharMethodList(this, obj, cls, method_id, args); 854 } CallNonvirtualCharMethodArray__EtsEnv855 ets_char CallNonvirtualCharMethodArray(ets_object obj, ets_class cls, ets_method method_id, const ets_value *args) 856 { 857 return native_interface->CallNonvirtualCharMethodArray(this, obj, cls, method_id, args); 858 } CallNonvirtualShortMethod__EtsEnv859 ets_short CallNonvirtualShortMethod(ets_object obj, ets_class cls, ets_method method_id, ...) 860 { 861 va_list args; 862 va_start(args, method_id); 863 ets_short res = native_interface->CallNonvirtualShortMethodList(this, obj, cls, method_id, args); 864 va_end(args); 865 return res; 866 } CallNonvirtualShortMethodList__EtsEnv867 ets_short CallNonvirtualShortMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args) 868 { 869 return native_interface->CallNonvirtualShortMethodList(this, obj, cls, method_id, args); 870 } CallNonvirtualShortMethodArray__EtsEnv871 ets_short CallNonvirtualShortMethodArray(ets_object obj, ets_class cls, ets_method method_id, const ets_value *args) 872 { 873 return native_interface->CallNonvirtualShortMethodArray(this, obj, cls, method_id, args); 874 } CallNonvirtualIntMethod__EtsEnv875 ets_int CallNonvirtualIntMethod(ets_object obj, ets_class cls, ets_method method_id, ...) 876 { 877 va_list args; 878 va_start(args, method_id); 879 ets_int res = native_interface->CallNonvirtualIntMethodList(this, obj, cls, method_id, args); 880 va_end(args); 881 return res; 882 } CallNonvirtualIntMethodList__EtsEnv883 ets_int CallNonvirtualIntMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args) 884 { 885 return native_interface->CallNonvirtualIntMethodList(this, obj, cls, method_id, args); 886 } CallNonvirtualIntMethodArray__EtsEnv887 ets_int CallNonvirtualIntMethodArray(ets_object obj, ets_class cls, ets_method method_id, const ets_value *args) 888 { 889 return native_interface->CallNonvirtualIntMethodArray(this, obj, cls, method_id, args); 890 } CallNonvirtualLongMethod__EtsEnv891 ets_long CallNonvirtualLongMethod(ets_object obj, ets_class cls, ets_method method_id, ...) 892 { 893 va_list args; 894 va_start(args, method_id); 895 ets_long res = native_interface->CallNonvirtualLongMethodList(this, obj, cls, method_id, args); 896 va_end(args); 897 return res; 898 } CallNonvirtualLongMethodList__EtsEnv899 ets_long CallNonvirtualLongMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args) 900 { 901 return native_interface->CallNonvirtualLongMethodList(this, obj, cls, method_id, args); 902 } CallNonvirtualLongMethodArray__EtsEnv903 ets_long CallNonvirtualLongMethodArray(ets_object obj, ets_class cls, ets_method method_id, const ets_value *args) 904 { 905 return native_interface->CallNonvirtualLongMethodArray(this, obj, cls, method_id, args); 906 } CallNonvirtualFloatMethod__EtsEnv907 ets_float CallNonvirtualFloatMethod(ets_object obj, ets_class cls, ets_method method_id, ...) 908 { 909 va_list args; 910 va_start(args, method_id); 911 ets_float res = native_interface->CallNonvirtualFloatMethodList(this, obj, cls, method_id, args); 912 va_end(args); 913 return res; 914 } CallNonvirtualFloatMethodList__EtsEnv915 ets_float CallNonvirtualFloatMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args) 916 { 917 return native_interface->CallNonvirtualFloatMethodList(this, obj, cls, method_id, args); 918 } CallNonvirtualFloatMethodArray__EtsEnv919 ets_float CallNonvirtualFloatMethodArray(ets_object obj, ets_class cls, ets_method method_id, const ets_value *args) 920 { 921 return native_interface->CallNonvirtualFloatMethodArray(this, obj, cls, method_id, args); 922 } CallNonvirtualDoubleMethod__EtsEnv923 ets_double CallNonvirtualDoubleMethod(ets_object obj, ets_class cls, ets_method method_id, ...) 924 { 925 va_list args; 926 va_start(args, method_id); 927 ets_double res = native_interface->CallNonvirtualDoubleMethodList(this, obj, cls, method_id, args); 928 va_end(args); 929 return res; 930 } CallNonvirtualDoubleMethodList__EtsEnv931 ets_double CallNonvirtualDoubleMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args) 932 { 933 return native_interface->CallNonvirtualDoubleMethodList(this, obj, cls, method_id, args); 934 } CallNonvirtualDoubleMethodArray__EtsEnv935 ets_double CallNonvirtualDoubleMethodArray(ets_object obj, ets_class cls, ets_method method_id, 936 const ets_value *args) 937 { 938 return native_interface->CallNonvirtualDoubleMethodArray(this, obj, cls, method_id, args); 939 } CallNonvirtualVoidMethod__EtsEnv940 void CallNonvirtualVoidMethod(ets_object obj, ets_class cls, ets_method method_id, ...) 941 { 942 va_list args; 943 va_start(args, method_id); 944 native_interface->CallNonvirtualVoidMethodList(this, obj, cls, method_id, args); 945 va_end(args); 946 } CallNonvirtualVoidMethodList__EtsEnv947 void CallNonvirtualVoidMethodList(ets_object obj, ets_class cls, ets_method method_id, va_list args) 948 { 949 native_interface->CallNonvirtualVoidMethodList(this, obj, cls, method_id, args); 950 } CallNonvirtualVoidMethodArray__EtsEnv951 void CallNonvirtualVoidMethodArray(ets_object obj, ets_class cls, ets_method method_id, const ets_value *args) 952 { 953 native_interface->CallNonvirtualVoidMethodArray(this, obj, cls, method_id, args); 954 } Getp_field__EtsEnv955 ets_field Getp_field(ets_class cls, const char *name, const char *sig) 956 { 957 return native_interface->Getp_field(this, cls, name, sig); 958 } GetObjectField__EtsEnv959 ets_object GetObjectField(ets_object obj, ets_field p_field) 960 { 961 return native_interface->GetObjectField(this, obj, p_field); 962 } GetBooleanField__EtsEnv963 ets_boolean GetBooleanField(ets_object obj, ets_field p_field) 964 { 965 return native_interface->GetBooleanField(this, obj, p_field); 966 } GetByteField__EtsEnv967 ets_byte GetByteField(ets_object obj, ets_field p_field) 968 { 969 return native_interface->GetByteField(this, obj, p_field); 970 } GetCharField__EtsEnv971 ets_char GetCharField(ets_object obj, ets_field p_field) 972 { 973 return native_interface->GetCharField(this, obj, p_field); 974 } GetShortField__EtsEnv975 ets_short GetShortField(ets_object obj, ets_field p_field) 976 { 977 return native_interface->GetShortField(this, obj, p_field); 978 } GetIntField__EtsEnv979 ets_int GetIntField(ets_object obj, ets_field p_field) 980 { 981 return native_interface->GetIntField(this, obj, p_field); 982 } GetLongField__EtsEnv983 ets_long GetLongField(ets_object obj, ets_field p_field) 984 { 985 return native_interface->GetLongField(this, obj, p_field); 986 } GetFloatField__EtsEnv987 ets_float GetFloatField(ets_object obj, ets_field p_field) 988 { 989 return native_interface->GetFloatField(this, obj, p_field); 990 } GetDoubleField__EtsEnv991 ets_double GetDoubleField(ets_object obj, ets_field p_field) 992 { 993 return native_interface->GetDoubleField(this, obj, p_field); 994 } SetObjectField__EtsEnv995 void SetObjectField(ets_object obj, ets_field p_field, ets_object value) 996 { 997 return native_interface->SetObjectField(this, obj, p_field, value); 998 } SetBooleanField__EtsEnv999 void SetBooleanField(ets_object obj, ets_field p_field, ets_boolean value) 1000 { 1001 return native_interface->SetBooleanField(this, obj, p_field, value); 1002 } SetByteField__EtsEnv1003 void SetByteField(ets_object obj, ets_field p_field, ets_byte value) 1004 { 1005 return native_interface->SetByteField(this, obj, p_field, value); 1006 } SetCharField__EtsEnv1007 void SetCharField(ets_object obj, ets_field p_field, ets_char value) 1008 { 1009 return native_interface->SetCharField(this, obj, p_field, value); 1010 } SetShortField__EtsEnv1011 void SetShortField(ets_object obj, ets_field p_field, ets_short value) 1012 { 1013 return native_interface->SetShortField(this, obj, p_field, value); 1014 } SetIntField__EtsEnv1015 void SetIntField(ets_object obj, ets_field p_field, ets_int value) 1016 { 1017 return native_interface->SetIntField(this, obj, p_field, value); 1018 } SetLongField__EtsEnv1019 void SetLongField(ets_object obj, ets_field p_field, ets_long value) 1020 { 1021 return native_interface->SetLongField(this, obj, p_field, value); 1022 } SetFloatField__EtsEnv1023 void SetFloatField(ets_object obj, ets_field p_field, ets_float value) 1024 { 1025 return native_interface->SetFloatField(this, obj, p_field, value); 1026 } SetDoubleField__EtsEnv1027 void SetDoubleField(ets_object obj, ets_field p_field, ets_double value) 1028 { 1029 return native_interface->SetDoubleField(this, obj, p_field, value); 1030 } GetStaticp_method__EtsEnv1031 ets_method GetStaticp_method(ets_class cls, const char *name, const char *sig) 1032 { 1033 return native_interface->GetStaticp_method(this, cls, name, sig); 1034 } CallStaticObjectMethod__EtsEnv1035 ets_object CallStaticObjectMethod(ets_class cls, ets_method method_id, ...) 1036 { 1037 va_list args; 1038 va_start(args, method_id); 1039 ets_object res = native_interface->CallStaticObjectMethodList(this, cls, method_id, args); 1040 va_end(args); 1041 return res; 1042 } CallStaticObjectMethodList__EtsEnv1043 ets_object CallStaticObjectMethodList(ets_class cls, ets_method method_id, va_list args) 1044 { 1045 return native_interface->CallStaticObjectMethodList(this, cls, method_id, args); 1046 } CallStaticObjectMethodArray__EtsEnv1047 ets_object CallStaticObjectMethodArray(ets_class cls, ets_method method_id, ets_value *args) 1048 { 1049 return native_interface->CallStaticObjectMethodArray(this, cls, method_id, args); 1050 } CallStaticBooleanMethod__EtsEnv1051 ets_boolean CallStaticBooleanMethod(ets_class cls, ets_method method_id, ...) 1052 { 1053 va_list args; 1054 va_start(args, method_id); 1055 ets_boolean res = native_interface->CallStaticBooleanMethodList(this, cls, method_id, args); 1056 va_end(args); 1057 return res; 1058 } CallStaticBooleanMethodList__EtsEnv1059 ets_boolean CallStaticBooleanMethodList(ets_class cls, ets_method method_id, va_list args) 1060 { 1061 return native_interface->CallStaticBooleanMethodList(this, cls, method_id, args); 1062 } CallStaticBooleanMethodArray__EtsEnv1063 ets_boolean CallStaticBooleanMethodArray(ets_class cls, ets_method method_id, ets_value *args) 1064 { 1065 return native_interface->CallStaticBooleanMethodArray(this, cls, method_id, args); 1066 } CallStaticByteMethod__EtsEnv1067 ets_byte CallStaticByteMethod(ets_class cls, ets_method method_id, ...) 1068 { 1069 va_list args; 1070 va_start(args, method_id); 1071 ets_byte res = native_interface->CallStaticByteMethodList(this, cls, method_id, args); 1072 va_end(args); 1073 return res; 1074 } CallStaticByteMethodList__EtsEnv1075 ets_byte CallStaticByteMethodList(ets_class cls, ets_method method_id, va_list args) 1076 { 1077 return native_interface->CallStaticByteMethodList(this, cls, method_id, args); 1078 } CallStaticByteMethodArray__EtsEnv1079 ets_byte CallStaticByteMethodArray(ets_class cls, ets_method method_id, ets_value *args) 1080 { 1081 return native_interface->CallStaticByteMethodArray(this, cls, method_id, args); 1082 } CallStaticCharMethod__EtsEnv1083 ets_char CallStaticCharMethod(ets_class cls, ets_method method_id, ...) 1084 { 1085 va_list args; 1086 va_start(args, method_id); 1087 ets_char res = native_interface->CallStaticCharMethodList(this, cls, method_id, args); 1088 va_end(args); 1089 return res; 1090 } CallStaticCharMethodList__EtsEnv1091 ets_char CallStaticCharMethodList(ets_class cls, ets_method method_id, va_list args) 1092 { 1093 return native_interface->CallStaticCharMethodList(this, cls, method_id, args); 1094 } CallStaticCharMethodArray__EtsEnv1095 ets_char CallStaticCharMethodArray(ets_class cls, ets_method method_id, ets_value *args) 1096 { 1097 return native_interface->CallStaticCharMethodArray(this, cls, method_id, args); 1098 } CallStaticShortMethod__EtsEnv1099 ets_short CallStaticShortMethod(ets_class cls, ets_method method_id, ...) 1100 { 1101 va_list args; 1102 va_start(args, method_id); 1103 ets_short res = native_interface->CallStaticShortMethodList(this, cls, method_id, args); 1104 va_end(args); 1105 return res; 1106 } CallStaticShortMethodList__EtsEnv1107 ets_short CallStaticShortMethodList(ets_class cls, ets_method method_id, va_list args) 1108 { 1109 return native_interface->CallStaticShortMethodList(this, cls, method_id, args); 1110 } CallStaticShortMethodArray__EtsEnv1111 ets_short CallStaticShortMethodArray(ets_class cls, ets_method method_id, ets_value *args) 1112 { 1113 return native_interface->CallStaticShortMethodArray(this, cls, method_id, args); 1114 } CallStaticIntMethod__EtsEnv1115 ets_int CallStaticIntMethod(ets_class cls, ets_method method_id, ...) 1116 { 1117 va_list args; 1118 va_start(args, method_id); 1119 ets_int res = native_interface->CallStaticIntMethodList(this, cls, method_id, args); 1120 va_end(args); 1121 return res; 1122 } CallStaticIntMethodList__EtsEnv1123 ets_int CallStaticIntMethodList(ets_class cls, ets_method method_id, va_list args) 1124 { 1125 return native_interface->CallStaticIntMethodList(this, cls, method_id, args); 1126 } CallStaticIntMethodArray__EtsEnv1127 ets_int CallStaticIntMethodArray(ets_class cls, ets_method method_id, ets_value *args) 1128 { 1129 return native_interface->CallStaticIntMethodArray(this, cls, method_id, args); 1130 } CallStaticLongMethod__EtsEnv1131 ets_long CallStaticLongMethod(ets_class cls, ets_method method_id, ...) 1132 { 1133 va_list args; 1134 va_start(args, method_id); 1135 ets_long res = native_interface->CallStaticLongMethodList(this, cls, method_id, args); 1136 va_end(args); 1137 return res; 1138 } CallStaticLongMethodList__EtsEnv1139 ets_long CallStaticLongMethodList(ets_class cls, ets_method method_id, va_list args) 1140 { 1141 return native_interface->CallStaticLongMethodList(this, cls, method_id, args); 1142 } CallStaticLongMethodArray__EtsEnv1143 ets_long CallStaticLongMethodArray(ets_class cls, ets_method method_id, ets_value *args) 1144 { 1145 return native_interface->CallStaticLongMethodArray(this, cls, method_id, args); 1146 } CallStaticFloatMethod__EtsEnv1147 ets_float CallStaticFloatMethod(ets_class cls, ets_method method_id, ...) 1148 { 1149 va_list args; 1150 va_start(args, method_id); 1151 ets_float res = native_interface->CallStaticFloatMethodList(this, cls, method_id, args); 1152 va_end(args); 1153 return res; 1154 } CallStaticFloatMethodList__EtsEnv1155 ets_float CallStaticFloatMethodList(ets_class cls, ets_method method_id, va_list args) 1156 { 1157 return native_interface->CallStaticFloatMethodList(this, cls, method_id, args); 1158 } CallStaticFloatMethodArray__EtsEnv1159 ets_float CallStaticFloatMethodArray(ets_class cls, ets_method method_id, ets_value *args) 1160 { 1161 return native_interface->CallStaticFloatMethodArray(this, cls, method_id, args); 1162 } CallStaticDoubleMethod__EtsEnv1163 ets_double CallStaticDoubleMethod(ets_class cls, ets_method method_id, ...) 1164 { 1165 va_list args; 1166 va_start(args, method_id); 1167 ets_double res = native_interface->CallStaticDoubleMethodList(this, cls, method_id, args); 1168 va_end(args); 1169 return res; 1170 } CallStaticDoubleMethodList__EtsEnv1171 ets_double CallStaticDoubleMethodList(ets_class cls, ets_method method_id, va_list args) 1172 { 1173 return native_interface->CallStaticDoubleMethodList(this, cls, method_id, args); 1174 } CallStaticDoubleMethodArray__EtsEnv1175 ets_double CallStaticDoubleMethodArray(ets_class cls, ets_method method_id, ets_value *args) 1176 { 1177 return native_interface->CallStaticDoubleMethodArray(this, cls, method_id, args); 1178 } CallStaticVoidMethod__EtsEnv1179 void CallStaticVoidMethod(ets_class cls, ets_method method_id, ...) 1180 { 1181 va_list args; 1182 va_start(args, method_id); 1183 native_interface->CallStaticVoidMethodList(this, cls, method_id, args); 1184 va_end(args); 1185 } CallStaticVoidMethodList__EtsEnv1186 void CallStaticVoidMethodList(ets_class cls, ets_method method_id, va_list args) 1187 { 1188 native_interface->CallStaticVoidMethodList(this, cls, method_id, args); 1189 } CallStaticVoidMethodArray__EtsEnv1190 void CallStaticVoidMethodArray(ets_class cls, ets_method method_id, ets_value *args) 1191 { 1192 native_interface->CallStaticVoidMethodArray(this, cls, method_id, args); 1193 } GetStaticp_field__EtsEnv1194 ets_field GetStaticp_field(ets_class cls, const char *name, const char *sig) 1195 { 1196 return native_interface->GetStaticp_field(this, cls, name, sig); 1197 } GetStaticObjectField__EtsEnv1198 ets_object GetStaticObjectField(ets_class cls, ets_field p_field) 1199 { 1200 return native_interface->GetStaticObjectField(this, cls, p_field); 1201 } GetStaticBooleanField__EtsEnv1202 ets_boolean GetStaticBooleanField(ets_class cls, ets_field p_field) 1203 { 1204 return native_interface->GetStaticBooleanField(this, cls, p_field); 1205 } GetStaticByteField__EtsEnv1206 ets_byte GetStaticByteField(ets_class cls, ets_field p_field) 1207 { 1208 return native_interface->GetStaticByteField(this, cls, p_field); 1209 } GetStaticCharField__EtsEnv1210 ets_char GetStaticCharField(ets_class cls, ets_field p_field) 1211 { 1212 return native_interface->GetStaticCharField(this, cls, p_field); 1213 } GetStaticShortField__EtsEnv1214 ets_short GetStaticShortField(ets_class cls, ets_field p_field) 1215 { 1216 return native_interface->GetStaticShortField(this, cls, p_field); 1217 } GetStaticIntField__EtsEnv1218 ets_int GetStaticIntField(ets_class cls, ets_field p_field) 1219 { 1220 return native_interface->GetStaticIntField(this, cls, p_field); 1221 } GetStaticLongField__EtsEnv1222 ets_long GetStaticLongField(ets_class cls, ets_field p_field) 1223 { 1224 return native_interface->GetStaticLongField(this, cls, p_field); 1225 } GetStaticFloatField__EtsEnv1226 ets_float GetStaticFloatField(ets_class cls, ets_field p_field) 1227 { 1228 return native_interface->GetStaticFloatField(this, cls, p_field); 1229 } GetStaticDoubleField__EtsEnv1230 ets_double GetStaticDoubleField(ets_class cls, ets_field p_field) 1231 { 1232 return native_interface->GetStaticDoubleField(this, cls, p_field); 1233 } SetStaticObjectField__EtsEnv1234 void SetStaticObjectField(ets_class cls, ets_field p_field, ets_object value) 1235 { 1236 return native_interface->SetStaticObjectField(this, cls, p_field, value); 1237 } SetStaticBooleanField__EtsEnv1238 void SetStaticBooleanField(ets_class cls, ets_field p_field, ets_boolean value) 1239 { 1240 return native_interface->SetStaticBooleanField(this, cls, p_field, value); 1241 } SetStaticByteField__EtsEnv1242 void SetStaticByteField(ets_class cls, ets_field p_field, ets_byte value) 1243 { 1244 return native_interface->SetStaticByteField(this, cls, p_field, value); 1245 } SetStaticCharField__EtsEnv1246 void SetStaticCharField(ets_class cls, ets_field p_field, ets_char value) 1247 { 1248 return native_interface->SetStaticCharField(this, cls, p_field, value); 1249 } SetStaticShortField__EtsEnv1250 void SetStaticShortField(ets_class cls, ets_field p_field, ets_short value) 1251 { 1252 return native_interface->SetStaticShortField(this, cls, p_field, value); 1253 } SetStaticIntField__EtsEnv1254 void SetStaticIntField(ets_class cls, ets_field p_field, ets_int value) 1255 { 1256 return native_interface->SetStaticIntField(this, cls, p_field, value); 1257 } SetStaticLongField__EtsEnv1258 void SetStaticLongField(ets_class cls, ets_field p_field, ets_long value) 1259 { 1260 return native_interface->SetStaticLongField(this, cls, p_field, value); 1261 } SetStaticFloatField__EtsEnv1262 void SetStaticFloatField(ets_class cls, ets_field p_field, ets_float value) 1263 { 1264 return native_interface->SetStaticFloatField(this, cls, p_field, value); 1265 } SetStaticDoubleField__EtsEnv1266 void SetStaticDoubleField(ets_class cls, ets_field p_field, ets_double value) 1267 { 1268 return native_interface->SetStaticDoubleField(this, cls, p_field, value); 1269 } NewString__EtsEnv1270 ets_string NewString(const ets_char *unicode_chars, ets_size len) 1271 { 1272 return native_interface->NewString(this, unicode_chars, len); 1273 } GetStringLength__EtsEnv1274 ets_size GetStringLength(ets_string string) 1275 { 1276 return native_interface->GetStringLength(this, string); 1277 } GetStringChars__EtsEnv1278 const ets_char *GetStringChars(ets_string string, ets_boolean *is_copy) 1279 { 1280 return native_interface->GetStringChars(this, string, is_copy); 1281 } ReleaseStringChars__EtsEnv1282 void ReleaseStringChars(ets_string string, const ets_char *chars) 1283 { 1284 native_interface->ReleaseStringChars(this, string, chars); 1285 } NewStringUTF__EtsEnv1286 ets_string NewStringUTF(const char *bytes) 1287 { 1288 return native_interface->NewStringUTF(this, bytes); 1289 } GetStringUTFLength__EtsEnv1290 ets_size GetStringUTFLength(ets_string string) 1291 { 1292 return native_interface->GetStringUTFLength(this, string); 1293 } GetStringUTFChars__EtsEnv1294 const char *GetStringUTFChars(ets_string string, ets_boolean *is_copy) 1295 { 1296 return native_interface->GetStringUTFChars(this, string, is_copy); 1297 } ReleaseStringUTFChars__EtsEnv1298 void ReleaseStringUTFChars(ets_string string, const char *chars) 1299 { 1300 native_interface->ReleaseStringUTFChars(this, string, chars); 1301 } GetArrayLength__EtsEnv1302 ets_size GetArrayLength(ets_array array) 1303 { 1304 return native_interface->GetArrayLength(this, array); 1305 } NewObjectsArray__EtsEnv1306 ets_objectArray NewObjectsArray(ets_size length, ets_class element_class, ets_object initial_element) 1307 { 1308 return native_interface->NewObjectsArray(this, length, element_class, initial_element); 1309 } GetObjectArrayElement__EtsEnv1310 ets_object GetObjectArrayElement(ets_objectArray array, ets_size index) 1311 { 1312 return native_interface->GetObjectArrayElement(this, array, index); 1313 } 1314 SetObjectArrayElement__EtsEnv1315 void SetObjectArrayElement(ets_objectArray array, ets_size index, ets_object value) 1316 { 1317 native_interface->SetObjectArrayElement(this, array, index, value); 1318 } 1319 1320 // SetObjectArrayElement, NewBooleanArray__EtsEnv1321 ets_booleanArray NewBooleanArray(ets_size length) 1322 { 1323 return native_interface->NewBooleanArray(this, length); 1324 } NewByteArray__EtsEnv1325 ets_byteArray NewByteArray(ets_size length) 1326 { 1327 return native_interface->NewByteArray(this, length); 1328 } NewCharArray__EtsEnv1329 ets_charArray NewCharArray(ets_size length) 1330 { 1331 return native_interface->NewCharArray(this, length); 1332 } NewShortArray__EtsEnv1333 ets_shortArray NewShortArray(ets_size length) 1334 { 1335 return native_interface->NewShortArray(this, length); 1336 } NewIntArray__EtsEnv1337 ets_intArray NewIntArray(ets_size length) 1338 { 1339 return native_interface->NewIntArray(this, length); 1340 } NewLongArray__EtsEnv1341 ets_longArray NewLongArray(ets_size length) 1342 { 1343 return native_interface->NewLongArray(this, length); 1344 } NewFloatArray__EtsEnv1345 ets_floatArray NewFloatArray(ets_size length) 1346 { 1347 return native_interface->NewFloatArray(this, length); 1348 } NewDoubleArray__EtsEnv1349 ets_doubleArray NewDoubleArray(ets_size length) 1350 { 1351 return native_interface->NewDoubleArray(this, length); 1352 } PinBooleanArray__EtsEnv1353 ets_boolean *PinBooleanArray(ets_booleanArray array) 1354 { 1355 return native_interface->PinBooleanArray(this, array); 1356 } PinByteArray__EtsEnv1357 ets_byte *PinByteArray(ets_byteArray array) 1358 { 1359 return native_interface->PinByteArray(this, array); 1360 } PinCharArray__EtsEnv1361 ets_char *PinCharArray(ets_charArray array) 1362 { 1363 return native_interface->PinCharArray(this, array); 1364 } PinShortArray__EtsEnv1365 ets_short *PinShortArray(ets_shortArray array) 1366 { 1367 return native_interface->PinShortArray(this, array); 1368 } PinIntArray__EtsEnv1369 ets_int *PinIntArray(ets_intArray array) 1370 { 1371 return native_interface->PinIntArray(this, array); 1372 } PinLongArray__EtsEnv1373 ets_long *PinLongArray(ets_longArray array) 1374 { 1375 return native_interface->PinLongArray(this, array); 1376 } PinFloatArray__EtsEnv1377 ets_float *PinFloatArray(ets_floatArray array) 1378 { 1379 return native_interface->PinFloatArray(this, array); 1380 } PinDoubleArray__EtsEnv1381 ets_double *PinDoubleArray(ets_doubleArray array) 1382 { 1383 return native_interface->PinDoubleArray(this, array); 1384 } UnpinBooleanArray__EtsEnv1385 void UnpinBooleanArray(ets_booleanArray array) 1386 { 1387 return native_interface->UnpinBooleanArray(this, array); 1388 } UnpinByteArray__EtsEnv1389 void UnpinByteArray(ets_byteArray array) 1390 { 1391 return native_interface->UnpinByteArray(this, array); 1392 } UnpinCharArray__EtsEnv1393 void UnpinCharArray(ets_charArray array) 1394 { 1395 return native_interface->UnpinCharArray(this, array); 1396 } UnpinShortArray__EtsEnv1397 void UnpinShortArray(ets_shortArray array) 1398 { 1399 return native_interface->UnpinShortArray(this, array); 1400 } UnpinIntArray__EtsEnv1401 void UnpinIntArray(ets_intArray array) 1402 { 1403 return native_interface->UnpinIntArray(this, array); 1404 } UnpinLongArray__EtsEnv1405 void UnpinLongArray(ets_longArray array) 1406 { 1407 return native_interface->UnpinLongArray(this, array); 1408 } UnpinFloatArray__EtsEnv1409 void UnpinFloatArray(ets_floatArray array) 1410 { 1411 return native_interface->UnpinFloatArray(this, array); 1412 } UnpinDoubleArray__EtsEnv1413 void UnpinDoubleArray(ets_doubleArray array) 1414 { 1415 return native_interface->UnpinDoubleArray(this, array); 1416 } GetBooleanArrayRegion__EtsEnv1417 void GetBooleanArrayRegion(ets_booleanArray array, ets_size start, ets_size len, ets_boolean *buf) 1418 { 1419 return native_interface->GetBooleanArrayRegion(this, array, start, len, buf); 1420 } GetByteArrayRegion__EtsEnv1421 void GetByteArrayRegion(ets_byteArray array, ets_size start, ets_size len, ets_byte *buf) 1422 { 1423 return native_interface->GetByteArrayRegion(this, array, start, len, buf); 1424 } GetCharArrayRegion__EtsEnv1425 void GetCharArrayRegion(ets_charArray array, ets_size start, ets_size len, ets_char *buf) 1426 { 1427 return native_interface->GetCharArrayRegion(this, array, start, len, buf); 1428 } GetShortArrayRegion__EtsEnv1429 void GetShortArrayRegion(ets_shortArray array, ets_size start, ets_size len, ets_short *buf) 1430 { 1431 return native_interface->GetShortArrayRegion(this, array, start, len, buf); 1432 } GetIntArrayRegion__EtsEnv1433 void GetIntArrayRegion(ets_intArray array, ets_size start, ets_size len, ets_int *buf) 1434 { 1435 return native_interface->GetIntArrayRegion(this, array, start, len, buf); 1436 } GetLongArrayRegion__EtsEnv1437 void GetLongArrayRegion(ets_longArray array, ets_size start, ets_size len, ets_long *buf) 1438 { 1439 return native_interface->GetLongArrayRegion(this, array, start, len, buf); 1440 } GetFloatArrayRegion__EtsEnv1441 void GetFloatArrayRegion(ets_floatArray array, ets_size start, ets_size len, ets_float *buf) 1442 { 1443 return native_interface->GetFloatArrayRegion(this, array, start, len, buf); 1444 } GetDoubleArrayRegion__EtsEnv1445 void GetDoubleArrayRegion(ets_doubleArray array, ets_size start, ets_size len, ets_double *buf) 1446 { 1447 return native_interface->GetDoubleArrayRegion(this, array, start, len, buf); 1448 } SetBooleanArrayRegion__EtsEnv1449 void SetBooleanArrayRegion(ets_booleanArray array, ets_size start, ets_size length, const ets_boolean *buf) 1450 { 1451 native_interface->SetBooleanArrayRegion(this, array, start, length, buf); 1452 } SetByteArrayRegion__EtsEnv1453 void SetByteArrayRegion(ets_byteArray array, ets_size start, ets_size length, const ets_byte *buf) 1454 { 1455 native_interface->SetByteArrayRegion(this, array, start, length, buf); 1456 } SetCharArrayRegion__EtsEnv1457 void SetCharArrayRegion(ets_charArray array, ets_size start, ets_size length, const ets_char *buf) 1458 { 1459 native_interface->SetCharArrayRegion(this, array, start, length, buf); 1460 } SetShortArrayRegion__EtsEnv1461 void SetShortArrayRegion(ets_shortArray array, ets_size start, ets_size length, const ets_short *buf) 1462 { 1463 native_interface->SetShortArrayRegion(this, array, start, length, buf); 1464 } SetIntArrayRegion__EtsEnv1465 void SetIntArrayRegion(ets_intArray array, ets_size start, ets_size length, const ets_int *buf) 1466 { 1467 native_interface->SetIntArrayRegion(this, array, start, length, buf); 1468 } SetLongArrayRegion__EtsEnv1469 void SetLongArrayRegion(ets_longArray array, ets_size start, ets_size length, const ets_long *buf) 1470 { 1471 native_interface->SetLongArrayRegion(this, array, start, length, buf); 1472 } SetFloatArrayRegion__EtsEnv1473 void SetFloatArrayRegion(ets_floatArray array, ets_size start, ets_size length, const ets_float *buf) 1474 { 1475 native_interface->SetFloatArrayRegion(this, array, start, length, buf); 1476 } SetDoubleArrayRegion__EtsEnv1477 void SetDoubleArrayRegion(ets_doubleArray array, ets_size start, ets_size length, const ets_double *buf) 1478 { 1479 native_interface->SetDoubleArrayRegion(this, array, start, length, buf); 1480 } RegisterNatives__EtsEnv1481 ets_int RegisterNatives(ets_class cls, const EtsNativeMethod *methods, ets_int nMethods) 1482 { 1483 return native_interface->RegisterNatives(this, cls, methods, nMethods); 1484 } UnregisterNatives__EtsEnv1485 ets_int UnregisterNatives(ets_class cls) 1486 { 1487 return native_interface->UnregisterNatives(this, cls); 1488 } GetEtsVM__EtsEnv1489 ets_int GetEtsVM(EtsVM **vm) 1490 { 1491 return native_interface->GetEtsVM(this, vm); 1492 } GetStringRegion__EtsEnv1493 void GetStringRegion(ets_string str, ets_size start, ets_size len, ets_char *buf) 1494 { 1495 native_interface->GetStringRegion(this, str, start, len, buf); 1496 } GetStringUTFRegion__EtsEnv1497 void GetStringUTFRegion(ets_string str, ets_size start, ets_size len, char *buf) 1498 { 1499 native_interface->GetStringUTFRegion(this, str, start, len, buf); 1500 } NewWeakGlobalRef__EtsEnv1501 ets_weak NewWeakGlobalRef(ets_object obj) 1502 { 1503 return native_interface->NewWeakGlobalRef(this, obj); 1504 } DeleteWeakGlobalRef__EtsEnv1505 void DeleteWeakGlobalRef(ets_weak obj) 1506 { 1507 native_interface->DeleteWeakGlobalRef(this, obj); 1508 } ErrorCheck__EtsEnv1509 ets_boolean ErrorCheck() 1510 { 1511 return native_interface->ErrorCheck(this); 1512 } 1513 // NewDirectByteBuffer, 1514 // GetDirectBufferAddress, 1515 // GetDirectBufferCapacity, GetObjectRefType__EtsEnv1516 ets_objectRefType GetObjectRefType(ets_object obj) 1517 { 1518 return native_interface->GetObjectRefType(this, obj); 1519 } 1520 1521 // Promise PromiseCreate__EtsEnv1522 ets_status PromiseCreate(ets_deferred *deferred, ets_object *promise) 1523 { 1524 return native_interface->PromiseCreate(this, deferred, promise); 1525 } DeferredResolve__EtsEnv1526 ets_status DeferredResolve(ets_deferred deferred, ets_object resolution) 1527 { 1528 return native_interface->DeferredResolve(this, deferred, resolution); 1529 } DeferredReject__EtsEnv1530 ets_status DeferredReject(ets_deferred deferred, ets_object rejection) 1531 { 1532 return native_interface->DeferredReject(this, deferred, rejection); 1533 } 1534 #endif 1535 }; 1536 1537 // NOLINTEND(modernize-use-using, readability-identifier-naming, cppcoreguidelines-pro-type-vararg) 1538 1539 #endif // PANDA_RUNTIME_INTEROP_ETS_NAPI_H 1540