| 1 | /* Copyright JS Foundation and other contributors, http://js.foundation |
| 2 | * |
| 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 JERRYSCRIPT_CORE_H |
| 17 | #define JERRYSCRIPT_CORE_H |
| 18 | |
| 19 | #include <stdbool.h> |
| 20 | #include <stddef.h> |
| 21 | #include <stdint.h> |
| 22 | |
| 23 | #include "jerryscript-compiler.h" |
| 24 | |
| 25 | #ifdef __cplusplus |
| 26 | extern "C" |
| 27 | { |
| 28 | #endif /* __cplusplus */ |
| 29 | |
| 30 | /** \addtogroup jerry Jerry engine interface |
| 31 | * @{ |
| 32 | */ |
| 33 | |
| 34 | /** |
| 35 | * Major version of JerryScript API. |
| 36 | */ |
| 37 | #define JERRY_API_MAJOR_VERSION 2 |
| 38 | |
| 39 | /** |
| 40 | * Minor version of JerryScript API. |
| 41 | */ |
| 42 | #define JERRY_API_MINOR_VERSION 4 |
| 43 | |
| 44 | /** |
| 45 | * Patch version of JerryScript API. |
| 46 | */ |
| 47 | #define JERRY_API_PATCH_VERSION 0 |
| 48 | |
| 49 | /** |
| 50 | * JerryScript init flags. |
| 51 | */ |
| 52 | typedef enum |
| 53 | { |
| 54 | JERRY_INIT_EMPTY = (0u), /**< empty flag set */ |
| 55 | JERRY_INIT_SHOW_OPCODES = (1u << 0), /**< dump byte-code to log after parse */ |
| 56 | JERRY_INIT_SHOW_REGEXP_OPCODES = (1u << 1), /**< dump regexp byte-code to log after compilation */ |
| 57 | JERRY_INIT_MEM_STATS = (1u << 2), /**< dump memory statistics */ |
| 58 | JERRY_INIT_MEM_STATS_SEPARATE = (1u << 3), /**< deprecated, an unused placeholder now */ |
| 59 | JERRY_INIT_DEBUGGER = (1u << 4), /**< deprecated, an unused placeholder now */ |
| 60 | } jerry_init_flag_t; |
| 61 | |
| 62 | /** |
| 63 | * JerryScript API Error object types. |
| 64 | */ |
| 65 | typedef enum |
| 66 | { |
| 67 | JERRY_ERROR_NONE = 0, /**< No Error */ |
| 68 | |
| 69 | JERRY_ERROR_COMMON, /**< Error */ |
| 70 | JERRY_ERROR_EVAL, /**< EvalError */ |
| 71 | JERRY_ERROR_RANGE, /**< RangeError */ |
| 72 | JERRY_ERROR_REFERENCE, /**< ReferenceError */ |
| 73 | JERRY_ERROR_SYNTAX, /**< SyntaxError */ |
| 74 | JERRY_ERROR_TYPE, /**< TypeError */ |
| 75 | JERRY_ERROR_URI /**< URIError */ |
| 76 | } jerry_error_t; |
| 77 | |
| 78 | /** |
| 79 | * JerryScript feature types. |
| 80 | */ |
| 81 | typedef enum |
| 82 | { |
| 83 | JERRY_FEATURE_CPOINTER_32_BIT, /**< 32 bit compressed pointers */ |
| 84 | JERRY_FEATURE_ERROR_MESSAGES, /**< error messages */ |
| 85 | JERRY_FEATURE_JS_PARSER, /**< js-parser */ |
| 86 | JERRY_FEATURE_MEM_STATS, /**< memory statistics */ |
| 87 | JERRY_FEATURE_PARSER_DUMP, /**< parser byte-code dumps */ |
| 88 | JERRY_FEATURE_REGEXP_DUMP, /**< regexp byte-code dumps */ |
| 89 | JERRY_FEATURE_SNAPSHOT_SAVE, /**< saving snapshot files */ |
| 90 | JERRY_FEATURE_SNAPSHOT_EXEC, /**< executing snapshot files */ |
| 91 | JERRY_FEATURE_DEBUGGER, /**< debugging */ |
| 92 | JERRY_FEATURE_VM_EXEC_STOP, /**< stopping ECMAScript execution */ |
| 93 | JERRY_FEATURE_JSON, /**< JSON support */ |
| 94 | JERRY_FEATURE_PROMISE, /**< promise support */ |
| 95 | JERRY_FEATURE_TYPEDARRAY, /**< Typedarray support */ |
| 96 | JERRY_FEATURE_DATE, /**< Date support */ |
| 97 | JERRY_FEATURE_REGEXP, /**< Regexp support */ |
| 98 | JERRY_FEATURE_LINE_INFO, /**< line info available */ |
| 99 | JERRY_FEATURE_LOGGING, /**< logging */ |
| 100 | JERRY_FEATURE_SYMBOL, /**< symbol support */ |
| 101 | JERRY_FEATURE_DATAVIEW, /**< DataView support */ |
| 102 | JERRY_FEATURE_PROXY, /**< Proxy support */ |
| 103 | JERRY_FEATURE_MAP, /**< Map support */ |
| 104 | JERRY_FEATURE_SET, /**< Set support */ |
| 105 | JERRY_FEATURE_WEAKMAP, /**< WeakMap support */ |
| 106 | JERRY_FEATURE_WEAKSET, /**< WeakSet support */ |
| 107 | JERRY_FEATURE_BIGINT, /**< BigInt support */ |
| 108 | JERRY_FEATURE_REALM, /**< realm support */ |
| 109 | JERRY_FEATURE__COUNT /**< number of features. NOTE: must be at the end of the list */ |
| 110 | } jerry_feature_t; |
| 111 | |
| 112 | /** |
| 113 | * Option flags for jerry_parse and jerry_parse_function functions. |
| 114 | */ |
| 115 | typedef enum |
| 116 | { |
| 117 | JERRY_PARSE_NO_OPTS = 0, /**< no options passed */ |
| 118 | JERRY_PARSE_STRICT_MODE = (1 << 0), /**< enable strict mode */ |
| 119 | JERRY_PARSE_MODULE = (1 << 1) /**< parse source as an ECMAScript module */ |
| 120 | } jerry_parse_opts_t; |
| 121 | |
| 122 | /** |
| 123 | * GC operational modes. |
| 124 | */ |
| 125 | typedef enum |
| 126 | { |
| 127 | JERRY_GC_PRESSURE_LOW, /**< free unused objects, but keep memory |
| 128 | * allocated for performance improvements |
| 129 | * such as property hash tables for large objects */ |
| 130 | JERRY_GC_PRESSURE_HIGH /**< free as much memory as possible */ |
| 131 | } jerry_gc_mode_t; |
| 132 | |
| 133 | /** |
| 134 | * Jerry regexp flags. |
| 135 | */ |
| 136 | typedef enum |
| 137 | { |
| 138 | JERRY_REGEXP_FLAG_GLOBAL = (1u << 1), /**< Globally scan string */ |
| 139 | JERRY_REGEXP_FLAG_IGNORE_CASE = (1u << 2), /**< Ignore case */ |
| 140 | JERRY_REGEXP_FLAG_MULTILINE = (1u << 3), /**< Multiline string scan */ |
| 141 | JERRY_REGEXP_FLAG_STICKY = (1u << 4), /**< ECMAScript v11, 21.2.5.14 */ |
| 142 | JERRY_REGEXP_FLAG_UNICODE = (1u << 5), /**< ECMAScript v11, 21.2.5.17 */ |
| 143 | JERRY_REGEXP_FLAG_DOTALL = (1u << 6) /**< ECMAScript v11, 21.2.5.3 */ |
| 144 | } jerry_regexp_flags_t; |
| 145 | |
| 146 | /** |
| 147 | * Character type of JerryScript. |
| 148 | */ |
| 149 | typedef uint8_t jerry_char_t; |
| 150 | |
| 151 | /** |
| 152 | * Size type of JerryScript. |
| 153 | */ |
| 154 | typedef uint32_t jerry_size_t; |
| 155 | |
| 156 | /** |
| 157 | * Length type of JerryScript. |
| 158 | */ |
| 159 | typedef uint32_t jerry_length_t; |
| 160 | |
| 161 | /** |
| 162 | * Description of a JerryScript value. |
| 163 | */ |
| 164 | typedef uint32_t jerry_value_t; |
| 165 | |
| 166 | /** |
| 167 | * Description of ECMA property descriptor. |
| 168 | */ |
| 169 | typedef struct |
| 170 | { |
| 171 | /** Is [[Value]] defined? */ |
| 172 | bool is_value_defined; |
| 173 | |
| 174 | /** Is [[Get]] defined? */ |
| 175 | bool is_get_defined; |
| 176 | |
| 177 | /** Is [[Set]] defined? */ |
| 178 | bool is_set_defined; |
| 179 | |
| 180 | /** Is [[Writable]] defined? */ |
| 181 | bool is_writable_defined; |
| 182 | |
| 183 | /** [[Writable]] */ |
| 184 | bool is_writable; |
| 185 | |
| 186 | /** Is [[Enumerable]] defined? */ |
| 187 | bool is_enumerable_defined; |
| 188 | |
| 189 | /** [[Enumerable]] */ |
| 190 | bool is_enumerable; |
| 191 | |
| 192 | /** Is [[Configurable]] defined? */ |
| 193 | bool is_configurable_defined; |
| 194 | |
| 195 | /** [[Configurable]] */ |
| 196 | bool is_configurable; |
| 197 | |
| 198 | /** [[Value]] */ |
| 199 | jerry_value_t value; |
| 200 | |
| 201 | /** [[Get]] */ |
| 202 | jerry_value_t getter; |
| 203 | |
| 204 | /** [[Set]] */ |
| 205 | jerry_value_t setter; |
| 206 | } jerry_property_descriptor_t; |
| 207 | |
| 208 | /** |
| 209 | * Description of JerryScript heap memory stats. |
| 210 | * It is for memory profiling. |
| 211 | */ |
| 212 | typedef struct |
| 213 | { |
| 214 | size_t version; /**< the version of the stats struct */ |
| 215 | size_t size; /**< heap total size */ |
| 216 | size_t allocated_bytes; /**< currently allocated bytes */ |
| 217 | size_t peak_allocated_bytes; /**< peak allocated bytes */ |
| 218 | size_t reserved[4]; /**< padding for future extensions */ |
| 219 | } jerry_heap_stats_t; |
| 220 | |
| 221 | /** |
| 222 | * Type of an external function handler. |
| 223 | */ |
| 224 | typedef jerry_value_t (*jerry_external_handler_t) (const jerry_value_t function_obj, |
| 225 | const jerry_value_t this_val, |
| 226 | const jerry_value_t args_p[], |
| 227 | const jerry_length_t args_count); |
| 228 | |
| 229 | /** |
| 230 | * Native free callback of an object. |
| 231 | */ |
| 232 | typedef void (*jerry_object_native_free_callback_t) (void *native_p); |
| 233 | |
| 234 | /** |
| 235 | * Decorator callback for Error objects. The decorator can create |
| 236 | * or update any properties of the newly created Error object. |
| 237 | */ |
| 238 | typedef void (*jerry_error_object_created_callback_t) (const jerry_value_t error_object, void *user_p); |
| 239 | |
| 240 | /** |
| 241 | * Callback which tells whether the ECMAScript execution should be stopped. |
| 242 | * |
| 243 | * As long as the function returns with undefined the execution continues. |
| 244 | * When a non-undefined value is returned the execution stops and the value |
| 245 | * is thrown by the engine (if the error flag is not set for the returned |
| 246 | * value the engine automatically sets it). |
| 247 | * |
| 248 | * Note: if the function returns with a non-undefined value it |
| 249 | * must return with the same value for future calls. |
| 250 | */ |
| 251 | typedef jerry_value_t (*jerry_vm_exec_stop_callback_t) (void *user_p); |
| 252 | |
| 253 | /** |
| 254 | * Function type applied for each data property of an object. |
| 255 | */ |
| 256 | typedef bool (*jerry_object_property_foreach_t) (const jerry_value_t property_name, |
| 257 | const jerry_value_t property_value, |
| 258 | void *user_data_p); |
| 259 | /** |
| 260 | * Function type applied for each object in the engine. |
| 261 | */ |
| 262 | typedef bool (*jerry_objects_foreach_t) (const jerry_value_t object, |
| 263 | void *user_data_p); |
| 264 | |
| 265 | /** |
| 266 | * Function type applied for each matching object in the engine. |
| 267 | */ |
| 268 | typedef bool (*jerry_objects_foreach_by_native_info_t) (const jerry_value_t object, |
| 269 | void *object_data_p, |
| 270 | void *user_data_p); |
| 271 | |
| 272 | /** |
| 273 | * User context item manager |
| 274 | */ |
| 275 | typedef struct |
| 276 | { |
| 277 | /** |
| 278 | * Callback responsible for initializing a context item, or NULL to zero out the memory. This is called lazily, the |
| 279 | * first time jerry_get_context_data () is called with this manager. |
| 280 | * |
| 281 | * @param [in] data The buffer that JerryScript allocated for the manager. The buffer is zeroed out. The size is |
| 282 | * determined by the bytes_needed field. The buffer is kept alive until jerry_cleanup () is called. |
| 283 | */ |
| 284 | void (*init_cb) (void *data); |
| 285 | |
| 286 | /** |
| 287 | * Callback responsible for deinitializing a context item, or NULL. This is called as part of jerry_cleanup (), |
| 288 | * right *before* the VM has been cleaned up. This is a good place to release strong references to jerry_value_t's |
| 289 | * that the manager may be holding. |
| 290 | * Note: because the VM has not been fully cleaned up yet, jerry_object_native_info_t free_cb's can still get called |
| 291 | * *after* all deinit_cb's have been run. See finalize_cb for a callback that is guaranteed to run *after* all |
| 292 | * free_cb's have been run. |
| 293 | * |
| 294 | * @param [in] data The buffer that JerryScript allocated for the manager. |
| 295 | */ |
| 296 | void (*deinit_cb) (void *data); |
| 297 | |
| 298 | /** |
| 299 | * Callback responsible for finalizing a context item, or NULL. This is called as part of jerry_cleanup (), |
| 300 | * right *after* the VM has been cleaned up and destroyed and jerry_... APIs cannot be called any more. At this point, |
| 301 | * all values in the VM have been cleaned up. This is a good place to clean up native state that can only be cleaned |
| 302 | * up at the very end when there are no more VM values around that may need to access that state. |
| 303 | * |
| 304 | * @param [in] data The buffer that JerryScript allocated for the manager. After returning from this callback, |
| 305 | * the data pointer may no longer be used. |
| 306 | */ |
| 307 | void (*finalize_cb) (void *data); |
| 308 | |
| 309 | /** |
| 310 | * Number of bytes to allocate for this manager. This is the size of the buffer that JerryScript will allocate on |
| 311 | * behalf of the manager. The pointer to this buffer is passed into init_cb, deinit_cb and finalize_cb. It is also |
| 312 | * returned from the jerry_get_context_data () API. |
| 313 | */ |
| 314 | size_t bytes_needed; |
| 315 | } jerry_context_data_manager_t; |
| 316 | |
| 317 | /** |
| 318 | * Function type for allocating buffer for JerryScript context. |
| 319 | */ |
| 320 | typedef void *(*jerry_context_alloc_t) (size_t size, void *cb_data_p); |
| 321 | |
| 322 | /** |
| 323 | * Type information of a native pointer. |
| 324 | */ |
| 325 | typedef struct |
| 326 | { |
| 327 | jerry_object_native_free_callback_t free_cb; /**< the free callback of the native pointer */ |
| 328 | } jerry_object_native_info_t; |
| 329 | |
| 330 | /** |
| 331 | * An opaque declaration of the JerryScript context structure. |
| 332 | */ |
| 333 | typedef struct jerry_context_t jerry_context_t; |
| 334 | |
| 335 | /** |
| 336 | * Enum that contains the supported binary operation types |
| 337 | */ |
| 338 | typedef enum |
| 339 | { |
| 340 | JERRY_BIN_OP_EQUAL = 0u, /**< equal comparison (==) */ |
| 341 | JERRY_BIN_OP_STRICT_EQUAL, /**< strict equal comparison (===) */ |
| 342 | JERRY_BIN_OP_LESS, /**< less relation (<) */ |
| 343 | JERRY_BIN_OP_LESS_EQUAL, /**< less or equal relation (<=) */ |
| 344 | JERRY_BIN_OP_GREATER, /**< greater relation (>) */ |
| 345 | JERRY_BIN_OP_GREATER_EQUAL, /**< greater or equal relation (>=)*/ |
| 346 | JERRY_BIN_OP_INSTANCEOF, /**< instanceof operation */ |
| 347 | JERRY_BIN_OP_ADD, /**< addition operator (+) */ |
| 348 | JERRY_BIN_OP_SUB, /**< subtraction operator (-) */ |
| 349 | JERRY_BIN_OP_MUL, /**< multiplication operator (*) */ |
| 350 | JERRY_BIN_OP_DIV, /**< division operator (/) */ |
| 351 | JERRY_BIN_OP_REM, /**< remainder operator (%) */ |
| 352 | } jerry_binary_operation_t; |
| 353 | |
| 354 | /** |
| 355 | * General engine functions. |
| 356 | */ |
| 357 | void jerry_init (jerry_init_flag_t flags); |
| 358 | void jerry_cleanup (void); |
| 359 | void jerry_register_magic_strings (const jerry_char_t * const *ex_str_items_p, |
| 360 | uint32_t count, |
| 361 | const jerry_length_t *str_lengths_p); |
| 362 | void jerry_gc (jerry_gc_mode_t mode); |
| 363 | void *jerry_get_context_data (const jerry_context_data_manager_t *manager_p); |
| 364 | |
| 365 | bool jerry_get_memory_stats (jerry_heap_stats_t *out_stats_p); |
| 366 | |
| 367 | /** |
| 368 | * Parser and executor functions. |
| 369 | */ |
| 370 | bool jerry_run_simple (const jerry_char_t *script_source_p, size_t script_source_size, jerry_init_flag_t flags); |
| 371 | jerry_value_t jerry_parse (const jerry_char_t *resource_name_p, size_t resource_name_length, |
| 372 | const jerry_char_t *source_p, size_t source_size, uint32_t parse_opts); |
| 373 | jerry_value_t jerry_parse_function (const jerry_char_t *resource_name_p, size_t resource_name_length, |
| 374 | const jerry_char_t *arg_list_p, size_t arg_list_size, |
| 375 | const jerry_char_t *source_p, size_t source_size, uint32_t parse_opts); |
| 376 | jerry_value_t jerry_run (const jerry_value_t func_val); |
| 377 | jerry_value_t jerry_eval (const jerry_char_t *source_p, size_t source_size, uint32_t parse_opts); |
| 378 | |
| 379 | jerry_value_t jerry_run_all_enqueued_jobs (void); |
| 380 | |
| 381 | /** |
| 382 | * Get the global context. |
| 383 | */ |
| 384 | jerry_value_t jerry_get_global_object (void); |
| 385 | |
| 386 | /** |
| 387 | * Checker functions of 'jerry_value_t'. |
| 388 | */ |
| 389 | bool jerry_value_is_abort (const jerry_value_t value); |
| 390 | bool jerry_value_is_array (const jerry_value_t value); |
| 391 | bool jerry_value_is_boolean (const jerry_value_t value); |
| 392 | bool jerry_value_is_constructor (const jerry_value_t value); |
| 393 | bool jerry_value_is_error (const jerry_value_t value); |
| 394 | bool jerry_value_is_function (const jerry_value_t value); |
| 395 | bool jerry_value_is_async_function (const jerry_value_t value); |
| 396 | bool jerry_value_is_number (const jerry_value_t value); |
| 397 | bool jerry_value_is_null (const jerry_value_t value); |
| 398 | bool jerry_value_is_object (const jerry_value_t value); |
| 399 | bool jerry_value_is_promise (const jerry_value_t value); |
| 400 | bool jerry_value_is_proxy (const jerry_value_t value); |
| 401 | bool jerry_value_is_string (const jerry_value_t value); |
| 402 | bool jerry_value_is_symbol (const jerry_value_t value); |
| 403 | bool jerry_value_is_bigint (const jerry_value_t value); |
| 404 | bool jerry_value_is_undefined (const jerry_value_t value); |
| 405 | |
| 406 | /** |
| 407 | * JerryScript API value type information. |
| 408 | */ |
| 409 | typedef enum |
| 410 | { |
| 411 | JERRY_TYPE_NONE = 0u, /**< no type information */ |
| 412 | JERRY_TYPE_UNDEFINED, /**< undefined type */ |
| 413 | JERRY_TYPE_NULL, /**< null type */ |
| 414 | JERRY_TYPE_BOOLEAN, /**< boolean type */ |
| 415 | JERRY_TYPE_NUMBER, /**< number type */ |
| 416 | JERRY_TYPE_STRING, /**< string type */ |
| 417 | JERRY_TYPE_OBJECT, /**< object type */ |
| 418 | JERRY_TYPE_FUNCTION, /**< function type */ |
| 419 | JERRY_TYPE_ERROR, /**< error/abort type */ |
| 420 | JERRY_TYPE_SYMBOL, /**< symbol type */ |
| 421 | JERRY_TYPE_BIGINT, /**< bigint type */ |
| 422 | } jerry_type_t; |
| 423 | |
| 424 | /** |
| 425 | * JerryScript object type information. |
| 426 | */ |
| 427 | typedef enum |
| 428 | { |
| 429 | JERRY_OBJECT_TYPE_NONE = 0u, /**< Non object type */ |
| 430 | JERRY_OBJECT_TYPE_GENERIC, /**< Generic JavaScript object without any internal property */ |
| 431 | JERRY_OBJECT_TYPE_ARRAY, /**< Array object */ |
| 432 | JERRY_OBJECT_TYPE_PROXY, /**< Proxy object */ |
| 433 | JERRY_OBJECT_TYPE_FUNCTION, /**< Function object (see jerry_function_get_type) */ |
| 434 | JERRY_OBJECT_TYPE_TYPEDARRAY, /**< %TypedArray% object (see jerry_get_typedarray_type) */ |
| 435 | JERRY_OBJECT_TYPE_ITERATOR, /**< Iterator object (see jerry_iterator_get_type) */ |
| 436 | JERRY_OBJECT_TYPE_CONTAINER, /**< Container object (see jerry_container_get_type) */ |
| 437 | |
| 438 | JERRY_OBJECT_TYPE_ARGUMENTS, /**< Arguments object */ |
| 439 | JERRY_OBJECT_TYPE_BOOLEAN, /**< Boolean object */ |
| 440 | JERRY_OBJECT_TYPE_DATE, /**< Date object */ |
| 441 | JERRY_OBJECT_TYPE_NUMBER, /**< Number object */ |
| 442 | JERRY_OBJECT_TYPE_REGEXP, /**< RegExp object */ |
| 443 | JERRY_OBJECT_TYPE_STRING, /**< String object */ |
| 444 | JERRY_OBJECT_TYPE_SYMBOL, /**< Symbol object */ |
| 445 | JERRY_OBJECT_TYPE_GENERATOR, /**< Generator object */ |
| 446 | JERRY_OBJECT_TYPE_BIGINT, /**< BigInt object */ |
| 447 | } jerry_object_type_t; |
| 448 | |
| 449 | /** |
| 450 | * JerryScript function object type information. |
| 451 | */ |
| 452 | typedef enum |
| 453 | { |
| 454 | JERRY_FUNCTION_TYPE_NONE = 0u, /**< Non function type */ |
| 455 | JERRY_FUNCTION_TYPE_GENERIC, /**< Generic JavaScript function */ |
| 456 | JERRY_FUNCTION_TYPE_ACCESSOR, /**< Accessor function */ |
| 457 | JERRY_FUNCTION_TYPE_BOUND, /**< Bound function */ |
| 458 | JERRY_FUNCTION_TYPE_ARROW, /**< Arrow fuction */ |
| 459 | JERRY_FUNCTION_TYPE_GENERATOR, /**< Generator function */ |
| 460 | } jerry_function_type_t; |
| 461 | |
| 462 | /** |
| 463 | * JerryScript iterator object type information. |
| 464 | */ |
| 465 | typedef enum |
| 466 | { |
| 467 | JERRY_ITERATOR_TYPE_NONE = 0u, /**< Non iterator type */ |
| 468 | JERRY_ITERATOR_TYPE_ARRAY, /**< Array iterator */ |
| 469 | JERRY_ITERATOR_TYPE_STRING, /**< String iterator */ |
| 470 | JERRY_ITERATOR_TYPE_MAP, /**< Map iterator */ |
| 471 | JERRY_ITERATOR_TYPE_SET, /**< Set iterator */ |
| 472 | } jerry_iterator_type_t; |
| 473 | |
| 474 | /** |
| 475 | * JerryScript object property filter options. |
| 476 | */ |
| 477 | typedef enum |
| 478 | { |
| 479 | JERRY_PROPERTY_FILTER_ALL = 0, /**< List all property keys independently |
| 480 | * from key type or property value attributes |
| 481 | * (equivalent to Reflect.ownKeys call) */ |
| 482 | JERRY_PROPERTY_FILTER_TRAVERSE_PROTOTYPE_CHAIN = (1 << 0), /**< Include keys from the objects's |
| 483 | * prototype chain as well */ |
| 484 | JERRY_PROPERTY_FILTER_EXLCUDE_NON_CONFIGURABLE = (1 << 1), /**< Exclude property key if |
| 485 | * the property is non-configurable */ |
| 486 | JERRY_PROPERTY_FILTER_EXLCUDE_NON_ENUMERABLE = (1 << 2), /**< Exclude property key if |
| 487 | * the property is non-enumerable */ |
| 488 | JERRY_PROPERTY_FILTER_EXLCUDE_NON_WRITABLE = (1 << 3), /**< Exclude property key if |
| 489 | * the property is non-writable */ |
| 490 | JERRY_PROPERTY_FILTER_EXLCUDE_STRINGS = (1 << 4), /**< Exclude property key if it is a string */ |
| 491 | JERRY_PROPERTY_FILTER_EXLCUDE_SYMBOLS = (1 << 5), /**< Exclude property key if it is a symbol */ |
| 492 | JERRY_PROPERTY_FILTER_EXLCUDE_INTEGER_INDICES = (1 << 6), /**< Exclude property key if it is an integer index */ |
| 493 | JERRY_PROPERTY_FILTER_INTEGER_INDICES_AS_NUMBER = (1 << 7), /**< By default integer index property keys are |
| 494 | * converted to string. Enabling this flags keeps |
| 495 | * integer index property keys as numbers. */ |
| 496 | } jerry_property_filter_t; |
| 497 | |
| 498 | jerry_type_t jerry_value_get_type (const jerry_value_t value); |
| 499 | jerry_object_type_t jerry_object_get_type (const jerry_value_t value); |
| 500 | jerry_function_type_t jerry_function_get_type (const jerry_value_t value); |
| 501 | jerry_iterator_type_t jerry_iterator_get_type (const jerry_value_t value); |
| 502 | |
| 503 | /** |
| 504 | * Checker function of whether the specified compile feature is enabled. |
| 505 | */ |
| 506 | bool jerry_is_feature_enabled (const jerry_feature_t feature); |
| 507 | |
| 508 | /** |
| 509 | * Binary operations |
| 510 | */ |
| 511 | jerry_value_t jerry_binary_operation (jerry_binary_operation_t op, |
| 512 | const jerry_value_t lhs, |
| 513 | const jerry_value_t rhs); |
| 514 | |
| 515 | /** |
| 516 | * Error manipulation functions. |
| 517 | */ |
| 518 | jerry_value_t jerry_create_abort_from_value (jerry_value_t value, bool release); |
| 519 | jerry_value_t jerry_create_error_from_value (jerry_value_t value, bool release); |
| 520 | jerry_value_t jerry_get_value_from_error (jerry_value_t value, bool release); |
| 521 | void jerry_set_error_object_created_callback (jerry_error_object_created_callback_t callback, void *user_p); |
| 522 | |
| 523 | /** |
| 524 | * Error object function(s). |
| 525 | */ |
| 526 | jerry_error_t jerry_get_error_type (jerry_value_t value); |
| 527 | |
| 528 | /** |
| 529 | * Getter functions of 'jerry_value_t'. |
| 530 | */ |
| 531 | bool jerry_get_boolean_value (const jerry_value_t value); |
| 532 | double jerry_get_number_value (const jerry_value_t value); |
| 533 | |
| 534 | /** |
| 535 | * Functions for string values. |
| 536 | */ |
| 537 | jerry_size_t jerry_get_string_size (const jerry_value_t value); |
| 538 | jerry_size_t jerry_get_utf8_string_size (const jerry_value_t value); |
| 539 | jerry_length_t jerry_get_string_length (const jerry_value_t value); |
| 540 | jerry_length_t jerry_get_utf8_string_length (const jerry_value_t value); |
| 541 | jerry_size_t jerry_string_to_char_buffer (const jerry_value_t value, jerry_char_t *buffer_p, jerry_size_t buffer_size); |
| 542 | jerry_size_t jerry_string_to_utf8_char_buffer (const jerry_value_t value, |
| 543 | jerry_char_t *buffer_p, |
| 544 | jerry_size_t buffer_size); |
| 545 | jerry_size_t jerry_substring_to_char_buffer (const jerry_value_t value, |
| 546 | jerry_length_t start_pos, |
| 547 | jerry_length_t end_pos, |
| 548 | jerry_char_t *buffer_p, |
| 549 | jerry_size_t buffer_size); |
| 550 | jerry_size_t jerry_substring_to_utf8_char_buffer (const jerry_value_t value, |
| 551 | jerry_length_t start_pos, |
| 552 | jerry_length_t end_pos, |
| 553 | jerry_char_t *buffer_p, |
| 554 | jerry_size_t buffer_size); |
| 555 | |
| 556 | /** |
| 557 | * Functions for array object values. |
| 558 | */ |
| 559 | uint32_t jerry_get_array_length (const jerry_value_t value); |
| 560 | |
| 561 | /** |
| 562 | * Converters of 'jerry_value_t'. |
| 563 | */ |
| 564 | bool jerry_value_to_boolean (const jerry_value_t value); |
| 565 | jerry_value_t jerry_value_to_number (const jerry_value_t value); |
| 566 | jerry_value_t jerry_value_to_object (const jerry_value_t value); |
| 567 | jerry_value_t jerry_value_to_primitive (const jerry_value_t value); |
| 568 | jerry_value_t jerry_value_to_string (const jerry_value_t value); |
| 569 | jerry_value_t jerry_value_to_bigint (const jerry_value_t value); |
| 570 | double jerry_value_as_integer (const jerry_value_t value); |
| 571 | int32_t jerry_value_as_int32 (const jerry_value_t value); |
| 572 | uint32_t jerry_value_as_uint32 (const jerry_value_t value); |
| 573 | |
| 574 | /** |
| 575 | * Acquire types with reference counter (increase the references). |
| 576 | */ |
| 577 | jerry_value_t jerry_acquire_value (jerry_value_t value); |
| 578 | |
| 579 | /** |
| 580 | * Release the referenced values. |
| 581 | */ |
| 582 | void jerry_release_value (jerry_value_t value); |
| 583 | |
| 584 | /** |
| 585 | * Create functions of API values. |
| 586 | */ |
| 587 | jerry_value_t jerry_create_array (uint32_t size); |
| 588 | jerry_value_t jerry_create_boolean (bool value); |
| 589 | jerry_value_t jerry_create_error (jerry_error_t error_type, const jerry_char_t *message_p); |
| 590 | jerry_value_t jerry_create_error_sz (jerry_error_t error_type, const jerry_char_t *message_p, |
| 591 | jerry_size_t message_size); |
| 592 | jerry_value_t jerry_create_external_function (jerry_external_handler_t handler_p); |
| 593 | jerry_value_t jerry_create_number (double value); |
| 594 | jerry_value_t jerry_create_number_infinity (bool sign); |
| 595 | jerry_value_t jerry_create_number_nan (void); |
| 596 | jerry_value_t jerry_create_null (void); |
| 597 | jerry_value_t jerry_create_object (void); |
| 598 | jerry_value_t jerry_create_promise (void); |
| 599 | jerry_value_t jerry_create_proxy (const jerry_value_t target, const jerry_value_t handler); |
| 600 | jerry_value_t jerry_create_regexp (const jerry_char_t *pattern, uint16_t flags); |
| 601 | jerry_value_t jerry_create_regexp_sz (const jerry_char_t *pattern, jerry_size_t pattern_size, uint16_t flags); |
| 602 | jerry_value_t jerry_create_string_from_utf8 (const jerry_char_t *str_p); |
| 603 | jerry_value_t jerry_create_string_sz_from_utf8 (const jerry_char_t *str_p, jerry_size_t str_size); |
| 604 | jerry_value_t jerry_create_string (const jerry_char_t *str_p); |
| 605 | jerry_value_t jerry_create_string_sz (const jerry_char_t *str_p, jerry_size_t str_size); |
| 606 | jerry_value_t jerry_create_external_string (const jerry_char_t *str_p, |
| 607 | jerry_object_native_free_callback_t free_cb); |
| 608 | jerry_value_t jerry_create_external_string_sz (const jerry_char_t *str_p, jerry_size_t str_size, |
| 609 | jerry_object_native_free_callback_t free_cb); |
| 610 | jerry_value_t jerry_create_symbol (const jerry_value_t value); |
| 611 | jerry_value_t jerry_create_bigint (const uint64_t *digits_p, uint32_t size, bool sign); |
| 612 | jerry_value_t jerry_create_undefined (void); |
| 613 | jerry_value_t jerry_create_realm (void); |
| 614 | |
| 615 | /** |
| 616 | * General API functions of JS objects. |
| 617 | */ |
| 618 | jerry_value_t jerry_has_property (const jerry_value_t obj_val, const jerry_value_t prop_name_val); |
| 619 | jerry_value_t jerry_has_own_property (const jerry_value_t obj_val, const jerry_value_t prop_name_val); |
| 620 | bool jerry_has_internal_property (const jerry_value_t obj_val, const jerry_value_t prop_name_val); |
| 621 | bool jerry_delete_property (const jerry_value_t obj_val, const jerry_value_t prop_name_val); |
| 622 | bool jerry_delete_property_by_index (const jerry_value_t obj_val, uint32_t index); |
| 623 | bool jerry_delete_internal_property (const jerry_value_t obj_val, const jerry_value_t prop_name_val); |
| 624 | |
| 625 | jerry_value_t jerry_get_property (const jerry_value_t obj_val, const jerry_value_t prop_name_val); |
| 626 | jerry_value_t jerry_get_property_by_index (const jerry_value_t obj_val, uint32_t index); |
| 627 | jerry_value_t jerry_get_internal_property (const jerry_value_t obj_val, const jerry_value_t prop_name_val); |
| 628 | jerry_value_t jerry_set_property (const jerry_value_t obj_val, const jerry_value_t prop_name_val, |
| 629 | const jerry_value_t value_to_set); |
| 630 | jerry_value_t jerry_set_property_by_index (const jerry_value_t obj_val, uint32_t index, |
| 631 | const jerry_value_t value_to_set); |
| 632 | bool jerry_set_internal_property (const jerry_value_t obj_val, const jerry_value_t prop_name_val, |
| 633 | const jerry_value_t value_to_set); |
| 634 | |
| 635 | void jerry_init_property_descriptor_fields (jerry_property_descriptor_t *prop_desc_p); |
| 636 | jerry_value_t jerry_define_own_property (const jerry_value_t obj_val, |
| 637 | const jerry_value_t prop_name_val, |
| 638 | const jerry_property_descriptor_t *prop_desc_p); |
| 639 | |
| 640 | bool jerry_get_own_property_descriptor (const jerry_value_t obj_val, |
| 641 | const jerry_value_t prop_name_val, |
| 642 | jerry_property_descriptor_t *prop_desc_p); |
| 643 | void jerry_free_property_descriptor_fields (const jerry_property_descriptor_t *prop_desc_p); |
| 644 | |
| 645 | jerry_value_t jerry_call_function (const jerry_value_t func_obj_val, const jerry_value_t this_val, |
| 646 | const jerry_value_t args_p[], jerry_size_t args_count); |
| 647 | jerry_value_t jerry_construct_object (const jerry_value_t func_obj_val, const jerry_value_t args_p[], |
| 648 | jerry_size_t args_count); |
| 649 | |
| 650 | jerry_value_t jerry_get_object_keys (const jerry_value_t obj_val); |
| 651 | jerry_value_t jerry_get_prototype (const jerry_value_t obj_val); |
| 652 | jerry_value_t jerry_set_prototype (const jerry_value_t obj_val, const jerry_value_t proto_obj_val); |
| 653 | |
| 654 | bool jerry_get_object_native_pointer (const jerry_value_t obj_val, |
| 655 | void **out_native_pointer_p, |
| 656 | const jerry_object_native_info_t *native_pointer_info_p); |
| 657 | void jerry_set_object_native_pointer (const jerry_value_t obj_val, |
| 658 | void *native_pointer_p, |
| 659 | const jerry_object_native_info_t *native_info_p); |
| 660 | bool jerry_delete_object_native_pointer (const jerry_value_t obj_val, |
| 661 | const jerry_object_native_info_t *native_info_p); |
| 662 | |
| 663 | bool jerry_objects_foreach (jerry_objects_foreach_t foreach_p, |
| 664 | void *user_data); |
| 665 | bool jerry_objects_foreach_by_native_info (const jerry_object_native_info_t *native_info_p, |
| 666 | jerry_objects_foreach_by_native_info_t foreach_p, |
| 667 | void *user_data_p); |
| 668 | |
| 669 | bool jerry_foreach_object_property (const jerry_value_t obj_val, jerry_object_property_foreach_t foreach_p, |
| 670 | void *user_data_p); |
| 671 | |
| 672 | jerry_value_t jerry_object_get_property_names (const jerry_value_t obj_val, jerry_property_filter_t filter); |
| 673 | jerry_value_t jerry_from_property_descriptor (const jerry_property_descriptor_t *src_prop_desc_p); |
| 674 | jerry_value_t jerry_to_property_descriptor (jerry_value_t obj_value, jerry_property_descriptor_t *out_prop_desc_p); |
| 675 | /** |
| 676 | * Promise functions. |
| 677 | */ |
| 678 | jerry_value_t jerry_resolve_or_reject_promise (jerry_value_t promise, jerry_value_t argument, bool is_resolve); |
| 679 | |
| 680 | /** |
| 681 | * Enum values representing various Promise states. |
| 682 | */ |
| 683 | typedef enum |
| 684 | { |
| 685 | JERRY_PROMISE_STATE_NONE = 0u, /**< Invalid/Unknown state (possibly called on a non-promise object). */ |
| 686 | JERRY_PROMISE_STATE_PENDING, /**< Promise is in "Pending" state. */ |
| 687 | JERRY_PROMISE_STATE_FULFILLED, /**< Promise is in "Fulfilled" state. */ |
| 688 | JERRY_PROMISE_STATE_REJECTED, /**< Promise is in "Rejected" state. */ |
| 689 | } jerry_promise_state_t; |
| 690 | |
| 691 | jerry_value_t jerry_get_promise_result (const jerry_value_t promise); |
| 692 | jerry_promise_state_t jerry_get_promise_state (const jerry_value_t promise); |
| 693 | |
| 694 | /** |
| 695 | * Symbol functions. |
| 696 | */ |
| 697 | |
| 698 | /** |
| 699 | * List of well-known symbols. |
| 700 | */ |
| 701 | typedef enum |
| 702 | { |
| 703 | JERRY_SYMBOL_ASYNC_ITERATOR, /**< @@asyncIterator well-known symbol */ |
| 704 | JERRY_SYMBOL_HAS_INSTANCE, /**< @@hasInstance well-known symbol */ |
| 705 | JERRY_SYMBOL_IS_CONCAT_SPREADABLE, /**< @@isConcatSpreadable well-known symbol */ |
| 706 | JERRY_SYMBOL_ITERATOR, /**< @@iterator well-known symbol */ |
| 707 | JERRY_SYMBOL_MATCH, /**< @@match well-known symbol */ |
| 708 | JERRY_SYMBOL_REPLACE, /**< @@replace well-known symbol */ |
| 709 | JERRY_SYMBOL_SEARCH, /**< @@search well-known symbol */ |
| 710 | JERRY_SYMBOL_SPECIES, /**< @@species well-known symbol */ |
| 711 | JERRY_SYMBOL_SPLIT, /**< @@split well-known symbol */ |
| 712 | JERRY_SYMBOL_TO_PRIMITIVE, /**< @@toPrimitive well-known symbol */ |
| 713 | JERRY_SYMBOL_TO_STRING_TAG, /**< @@toStringTag well-known symbol */ |
| 714 | JERRY_SYMBOL_UNSCOPABLES, /**< @@unscopables well-known symbol */ |
| 715 | JERRY_SYMBOL_MATCH_ALL, /**< @@matchAll well-known symbol */ |
| 716 | } jerry_well_known_symbol_t; |
| 717 | |
| 718 | jerry_value_t jerry_get_well_known_symbol (jerry_well_known_symbol_t symbol); |
| 719 | jerry_value_t jerry_get_symbol_description (const jerry_value_t symbol); |
| 720 | jerry_value_t jerry_get_symbol_descriptive_string (const jerry_value_t symbol); |
| 721 | |
| 722 | /** |
| 723 | * Realm functions. |
| 724 | */ |
| 725 | jerry_value_t jerry_set_realm (jerry_value_t realm_value); |
| 726 | jerry_value_t jerry_realm_get_this (jerry_value_t realm_value); |
| 727 | jerry_value_t jerry_realm_set_this (jerry_value_t realm_value, jerry_value_t this_value); |
| 728 | |
| 729 | /** |
| 730 | * BigInt functions. |
| 731 | */ |
| 732 | uint32_t jerry_get_bigint_size_in_digits (jerry_value_t value); |
| 733 | void jerry_get_bigint_digits (jerry_value_t value, uint64_t *digits_p, uint32_t size, bool *sign_p); |
| 734 | |
| 735 | /** |
| 736 | * Proxy functions. |
| 737 | */ |
| 738 | jerry_value_t jerry_get_proxy_target (jerry_value_t proxy_value); |
| 739 | |
| 740 | /** |
| 741 | * Input validator functions. |
| 742 | */ |
| 743 | bool jerry_is_valid_utf8_string (const jerry_char_t *utf8_buf_p, jerry_size_t buf_size); |
| 744 | bool jerry_is_valid_cesu8_string (const jerry_char_t *cesu8_buf_p, jerry_size_t buf_size); |
| 745 | |
| 746 | /* |
| 747 | * Dynamic memory management functions. |
| 748 | */ |
| 749 | void *jerry_heap_alloc (size_t size); |
| 750 | void jerry_heap_free (void *mem_p, size_t size); |
| 751 | |
| 752 | /* |
| 753 | * External context functions. |
| 754 | */ |
| 755 | jerry_context_t *jerry_create_context (uint32_t heap_size, jerry_context_alloc_t alloc, void *cb_data_p); |
| 756 | |
| 757 | /** |
| 758 | * Miscellaneous functions. |
| 759 | */ |
| 760 | void jerry_set_vm_exec_stop_callback (jerry_vm_exec_stop_callback_t stop_cb, void *user_p, uint32_t frequency); |
| 761 | jerry_value_t jerry_get_backtrace (uint32_t max_depth); |
| 762 | jerry_value_t jerry_get_backtrace_from (uint32_t max_depth, jerry_value_t ignored_function); |
| 763 | jerry_value_t jerry_get_resource_name (const jerry_value_t value); |
| 764 | jerry_value_t jerry_get_new_target (void); |
| 765 | |
| 766 | /** |
| 767 | * Array buffer components. |
| 768 | */ |
| 769 | bool jerry_value_is_arraybuffer (const jerry_value_t value); |
| 770 | jerry_value_t jerry_create_arraybuffer (const jerry_length_t size); |
| 771 | jerry_value_t jerry_create_arraybuffer_external (const jerry_length_t size, |
| 772 | uint8_t *buffer_p, |
| 773 | jerry_object_native_free_callback_t free_cb); |
| 774 | jerry_length_t jerry_arraybuffer_write (const jerry_value_t value, |
| 775 | jerry_length_t offset, |
| 776 | const uint8_t *buf_p, |
| 777 | jerry_length_t buf_size); |
| 778 | jerry_length_t jerry_arraybuffer_read (const jerry_value_t value, |
| 779 | jerry_length_t offset, |
| 780 | uint8_t *buf_p, |
| 781 | jerry_length_t buf_size); |
| 782 | jerry_length_t jerry_get_arraybuffer_byte_length (const jerry_value_t value); |
| 783 | uint8_t *jerry_get_arraybuffer_pointer (const jerry_value_t value); |
| 784 | jerry_value_t jerry_is_arraybuffer_detachable (const jerry_value_t value); |
| 785 | jerry_value_t jerry_detach_arraybuffer (const jerry_value_t value); |
| 786 | |
| 787 | /** |
| 788 | * DataView functions. |
| 789 | */ |
| 790 | jerry_value_t |
| 791 | jerry_create_dataview (const jerry_value_t value, |
| 792 | const jerry_length_t byte_offset, |
| 793 | const jerry_length_t byte_length); |
| 794 | |
| 795 | bool |
| 796 | jerry_value_is_dataview (const jerry_value_t value); |
| 797 | |
| 798 | jerry_value_t |
| 799 | jerry_get_dataview_buffer (const jerry_value_t dataview, |
| 800 | jerry_length_t *byte_offset, |
| 801 | jerry_length_t *byte_length); |
| 802 | |
| 803 | /** |
| 804 | * TypedArray functions. |
| 805 | */ |
| 806 | |
| 807 | /** |
| 808 | * TypedArray types. |
| 809 | */ |
| 810 | typedef enum |
| 811 | { |
| 812 | JERRY_TYPEDARRAY_INVALID = 0, |
| 813 | JERRY_TYPEDARRAY_UINT8, |
| 814 | JERRY_TYPEDARRAY_UINT8CLAMPED, |
| 815 | JERRY_TYPEDARRAY_INT8, |
| 816 | JERRY_TYPEDARRAY_UINT16, |
| 817 | JERRY_TYPEDARRAY_INT16, |
| 818 | JERRY_TYPEDARRAY_UINT32, |
| 819 | JERRY_TYPEDARRAY_INT32, |
| 820 | JERRY_TYPEDARRAY_FLOAT32, |
| 821 | JERRY_TYPEDARRAY_FLOAT64, |
| 822 | JERRY_TYPEDARRAY_BIGINT64, |
| 823 | JERRY_TYPEDARRAY_BIGUINT64, |
| 824 | } jerry_typedarray_type_t; |
| 825 | |
| 826 | /** |
| 827 | * Container types. |
| 828 | */ |
| 829 | typedef enum |
| 830 | { |
| 831 | JERRY_CONTAINER_TYPE_INVALID = 0, /**< Invalid container */ |
| 832 | JERRY_CONTAINER_TYPE_MAP, /**< Map type */ |
| 833 | JERRY_CONTAINER_TYPE_SET, /**< Set type */ |
| 834 | JERRY_CONTAINER_TYPE_WEAKMAP, /**< WeakMap type */ |
| 835 | JERRY_CONTAINER_TYPE_WEAKSET, /**< WeakSet type */ |
| 836 | } jerry_container_type_t; |
| 837 | |
| 838 | bool jerry_value_is_typedarray (jerry_value_t value); |
| 839 | jerry_value_t jerry_create_typedarray (jerry_typedarray_type_t type_name, jerry_length_t length); |
| 840 | jerry_value_t jerry_create_typedarray_for_arraybuffer_sz (jerry_typedarray_type_t type_name, |
| 841 | const jerry_value_t arraybuffer, |
| 842 | jerry_length_t byte_offset, |
| 843 | jerry_length_t length); |
| 844 | jerry_value_t jerry_create_typedarray_for_arraybuffer (jerry_typedarray_type_t type_name, |
| 845 | const jerry_value_t arraybuffer); |
| 846 | jerry_typedarray_type_t jerry_get_typedarray_type (jerry_value_t value); |
| 847 | jerry_length_t jerry_get_typedarray_length (jerry_value_t value); |
| 848 | jerry_value_t jerry_get_typedarray_buffer (jerry_value_t value, |
| 849 | jerry_length_t *byte_offset, |
| 850 | jerry_length_t *byte_length); |
| 851 | jerry_value_t jerry_json_parse (const jerry_char_t *string_p, jerry_size_t string_size); |
| 852 | jerry_value_t jerry_json_stringify (const jerry_value_t object_to_stringify); |
| 853 | jerry_value_t jerry_create_container (jerry_container_type_t container_type, |
| 854 | const jerry_value_t *arguments_list_p, |
| 855 | jerry_length_t arguments_list_len); |
| 856 | jerry_container_type_t jerry_get_container_type (const jerry_value_t value); |
| 857 | |
| 858 | /** |
| 859 | * @} |
| 860 | */ |
| 861 | |
| 862 | #ifdef __cplusplus |
| 863 | } |
| 864 | #endif /* __cplusplus */ |
| 865 | #endif /* !JERRYSCRIPT_CORE_H */ |
| 866 | |