1425bb815Sopenharmony_ci# JerryScript types 2425bb815Sopenharmony_ci 3425bb815Sopenharmony_ci## jerry_init_flag_t 4425bb815Sopenharmony_ci 5425bb815Sopenharmony_ciEnum that contains the following elements: 6425bb815Sopenharmony_ci 7425bb815Sopenharmony_ci - JERRY_INIT_EMPTY - empty flag set 8425bb815Sopenharmony_ci - JERRY_INIT_SHOW_OPCODES - dump byte-code to log after parse 9425bb815Sopenharmony_ci - JERRY_INIT_SHOW_REGEXP_OPCODES - dump regexp byte-code to log after compilation 10425bb815Sopenharmony_ci - JERRY_INIT_MEM_STATS - dump memory statistics 11425bb815Sopenharmony_ci - JERRY_INIT_MEM_STATS_SEPARATE - **deprecated**, dump memory statistics and reset peak values after parse 12425bb815Sopenharmony_ci - JERRY_INIT_DEBUGGER - **deprecated**, an unused placeholder now 13425bb815Sopenharmony_ci 14425bb815Sopenharmony_ci*Changed in version 2.0*: JERRY_INIT_MEM_STATS_SEPARATE and JERRY_INIT_DEBUGGER are now deprecated and not used internally. 15425bb815Sopenharmony_ci 16425bb815Sopenharmony_ci## jerry_type_t 17425bb815Sopenharmony_ci 18425bb815Sopenharmony_ciEnum that contains JerryScript API value types: 19425bb815Sopenharmony_ci 20425bb815Sopenharmony_ci - JERRY_TYPE_NONE - no type information 21425bb815Sopenharmony_ci - JERRY_TYPE_UNDEFINED - undefined type 22425bb815Sopenharmony_ci - JERRY_TYPE_NULL - null type 23425bb815Sopenharmony_ci - JERRY_TYPE_BOOLEAN - boolean type 24425bb815Sopenharmony_ci - JERRY_TYPE_NUMBER - number type 25425bb815Sopenharmony_ci - JERRY_TYPE_STRING - string type 26425bb815Sopenharmony_ci - JERRY_TYPE_OBJECT - object type 27425bb815Sopenharmony_ci - JERRY_TYPE_FUNCTION - function type 28425bb815Sopenharmony_ci - JERRY_TYPE_ERROR - error/abort type 29425bb815Sopenharmony_ci - JERRY_TYPE_SYMBOL - symbol type 30425bb815Sopenharmony_ci 31425bb815Sopenharmony_ci*New in version 2.0*. 32425bb815Sopenharmony_ci 33425bb815Sopenharmony_ci## jerry_error_t 34425bb815Sopenharmony_ci 35425bb815Sopenharmony_ciPossible types of an error: 36425bb815Sopenharmony_ci 37425bb815Sopenharmony_ci - JERRY_ERROR_COMMON - common error 38425bb815Sopenharmony_ci - JERRY_ERROR_EVAL - eval error 39425bb815Sopenharmony_ci - JERRY_ERROR_RANGE - range error 40425bb815Sopenharmony_ci - JERRY_ERROR_REFERENCE - reference error 41425bb815Sopenharmony_ci - JERRY_ERROR_SYNTAX - syntax error 42425bb815Sopenharmony_ci - JERRY_ERROR_TYPE - type error 43425bb815Sopenharmony_ci - JERRY_ERROR_URI - URI error 44425bb815Sopenharmony_ci 45425bb815Sopenharmony_ciThere is also a special value `JERRY_ERROR_NONE` which is not an error type 46425bb815Sopenharmony_cithis value can only be returned by the [jerry_get_error_type](#jerry_get_error_type). 47425bb815Sopenharmony_ci 48425bb815Sopenharmony_ci*Changed in version 2.0*: The `JERRY_ERROR_NONE` was added to be used by the [jerry_get_error_type](#jerry_get_error_type) method. 49425bb815Sopenharmony_ci 50425bb815Sopenharmony_ci## jerry_feature_t 51425bb815Sopenharmony_ci 52425bb815Sopenharmony_ciPossible compile time enabled feature types: 53425bb815Sopenharmony_ci 54425bb815Sopenharmony_ci - JERRY_FEATURE_CPOINTER_32_BIT - 32 bit compressed pointers 55425bb815Sopenharmony_ci - JERRY_FEATURE_ERROR_MESSAGES - error messages 56425bb815Sopenharmony_ci - JERRY_FEATURE_JS_PARSER - js-parser 57425bb815Sopenharmony_ci - JERRY_FEATURE_MEM_STATS - memory statistics 58425bb815Sopenharmony_ci - JERRY_FEATURE_PARSER_DUMP - parser byte-code dumps 59425bb815Sopenharmony_ci - JERRY_FEATURE_REGEXP_DUMP - regexp byte-code dumps 60425bb815Sopenharmony_ci - JERRY_FEATURE_SNAPSHOT_SAVE - saving snapshot files 61425bb815Sopenharmony_ci - JERRY_FEATURE_SNAPSHOT_EXEC - executing snapshot files 62425bb815Sopenharmony_ci - JERRY_FEATURE_DEBUGGER - debugging 63425bb815Sopenharmony_ci - JERRY_FEATURE_VM_EXEC_STOP - stopping ECMAScript execution 64425bb815Sopenharmony_ci - JERRY_FEATURE_JSON - JSON support 65425bb815Sopenharmony_ci - JERRY_FEATURE_PROMISE - promise support 66425bb815Sopenharmony_ci - JERRY_FEATURE_TYPEDARRAY - Typedarray support 67425bb815Sopenharmony_ci - JERRY_FEATURE_DATE - Date support 68425bb815Sopenharmony_ci - JERRY_FEATURE_REGEXP - RegExp support 69425bb815Sopenharmony_ci - JERRY_FEATURE_LINE_INFO - line info available 70425bb815Sopenharmony_ci - JERRY_FEATURE_LOGGING - logging 71425bb815Sopenharmony_ci - JERRY_FEATURE_SYMBOL - symbol support 72425bb815Sopenharmony_ci - JERRY_FEATURE_DATAVIEW - DataView support 73425bb815Sopenharmony_ci - JERRY_FEATURE_PROXY - Proxy support 74425bb815Sopenharmony_ci - JERRY_FEATURE_MAP - Map support 75425bb815Sopenharmony_ci - JERRY_FEATURE_SET - Set support 76425bb815Sopenharmony_ci - JERRY_FEATURE_WEAKMAP - WeakMap support 77425bb815Sopenharmony_ci - JERRY_FEATURE_WEAKSET - WeakSet support 78425bb815Sopenharmony_ci 79425bb815Sopenharmony_ci*New in version 2.0*. 80425bb815Sopenharmony_ci*Changed in version 2.3* : Added `JERRY_FEATURE_WEAKMAP`, `JERRY_FEATURE_WEAKSET` values. 81425bb815Sopenharmony_ci 82425bb815Sopenharmony_ci## jerry_container_type_t 83425bb815Sopenharmony_ci 84425bb815Sopenharmony_ciContainer object types: 85425bb815Sopenharmony_ci 86425bb815Sopenharmony_ci - JERRY_CONTAINER_TYPE_INVALID - Invalid container 87425bb815Sopenharmony_ci - JERRY_CONTAINER_TYPE_MAP - Map type 88425bb815Sopenharmony_ci - JERRY_CONTAINER_TYPE_SET - Set type 89425bb815Sopenharmony_ci - JERRY_CONTAINER_TYPE_WEAKMAP - WeakMap type 90425bb815Sopenharmony_ci - JERRY_CONTAINER_TYPE_WEAKSET - WeakSet type 91425bb815Sopenharmony_ci 92425bb815Sopenharmony_ci *New in version 2.3*. 93425bb815Sopenharmony_ci 94425bb815Sopenharmony_ci## jerry_regexp_flags_t 95425bb815Sopenharmony_ci 96425bb815Sopenharmony_ciRegExp object optional flags: 97425bb815Sopenharmony_ci 98425bb815Sopenharmony_ci - JERRY_REGEXP_FLAG_GLOBAL - global match; find all matches rather than stopping after the first match 99425bb815Sopenharmony_ci - JERRY_REGEXP_FLAG_IGNORE_CASE - ignore case 100425bb815Sopenharmony_ci - JERRY_REGEXP_FLAG_MULTILINE - multiline; treat beginning and end characters (^ and $) as working over 101425bb815Sopenharmony_ci multiple lines (i.e., match the beginning or end of each line (delimited by \n or \r), not only the 102425bb815Sopenharmony_ci very beginning or end of the whole input string) 103425bb815Sopenharmony_ci 104425bb815Sopenharmony_ci*New in version 2.0*. 105425bb815Sopenharmony_ci 106425bb815Sopenharmony_ci## jerry_parse_opts_t 107425bb815Sopenharmony_ci 108425bb815Sopenharmony_ciOption bits for [jerry_parse](#jerry_parse) and 109425bb815Sopenharmony_ci[jerry_parse_function](#jerry_parse_function) functions: 110425bb815Sopenharmony_ci 111425bb815Sopenharmony_ci - JERRY_PARSE_NO_OPTS - no options passed 112425bb815Sopenharmony_ci - JERRY_PARSE_STRICT_MODE - enable strict mode 113425bb815Sopenharmony_ci 114425bb815Sopenharmony_ci*New in version 2.0*. 115425bb815Sopenharmony_ci 116425bb815Sopenharmony_ci## jerry_gc_mode_t 117425bb815Sopenharmony_ci 118425bb815Sopenharmony_ciSet garbage collection operational mode 119425bb815Sopenharmony_ci 120425bb815Sopenharmony_ci - JERRY_GC_PRESSURE_LOW - free unused objects 121425bb815Sopenharmony_ci - JERRY_GC_PRESSURE_HIGH - free as much memory as possible 122425bb815Sopenharmony_ci 123425bb815Sopenharmony_ciThe difference between `JERRY_GC_PRESSURE_LOW` and `JERRY_GC_PRESSURE_HIGH` 124425bb815Sopenharmony_ciis that the former keeps memory allocated for performance improvements such 125425bb815Sopenharmony_cias property hash tables for large objects. The latter frees all possible 126425bb815Sopenharmony_cimemory blocks but the performance may drop after the garbage collection. 127425bb815Sopenharmony_ci 128425bb815Sopenharmony_ci*New in version 2.0*. 129425bb815Sopenharmony_ci 130425bb815Sopenharmony_ci## jerry_generate_snapshot_opts_t 131425bb815Sopenharmony_ci 132425bb815Sopenharmony_ciFlags for [jerry_generate_snapshot](#jerry_generate_snapshot) and 133425bb815Sopenharmony_ci[jerry_generate_function_snapshot](#jerry_generate_function_snapshot) functions: 134425bb815Sopenharmony_ci 135425bb815Sopenharmony_ci - JERRY_SNAPSHOT_SAVE_STATIC - generate static snapshot (see below) 136425bb815Sopenharmony_ci - JERRY_SNAPSHOT_SAVE_STRICT - strict source code provided 137425bb815Sopenharmony_ci 138425bb815Sopenharmony_ci**Generate static snapshots** 139425bb815Sopenharmony_ciSnapshots contain literal pools, and these literal pools contain references 140425bb815Sopenharmony_cito constant literals (strings, numbers, etc.). When a snapshot is executed, 141425bb815Sopenharmony_cithese literals are converted to jerry values and the literal pool entries 142425bb815Sopenharmony_ciare changed to their corresponding jerry value. To support this conversion, 143425bb815Sopenharmony_cithe literals and literal pools are copied into RAM even if the 144425bb815Sopenharmony_ci`JERRY_SNAPSHOT_EXEC_COPY_DATA` option is passed to 145425bb815Sopenharmony_ci[jerry_exec_snapshot](#jerry_exec_snapshot). This non-negligible memory 146425bb815Sopenharmony_ciconsumption can be avoided by using static snapshots. The literals of 147425bb815Sopenharmony_cithese snapshots are limited to magic strings and 28 bit signed integers, 148425bb815Sopenharmony_ciso their constant pools do not need to be loaded into the memory. 149425bb815Sopenharmony_ciHence these snapshots can be executed from ROM. 150425bb815Sopenharmony_ci 151425bb815Sopenharmony_ci***Important note:*** The [jerry_exec_snapshot](#jerry_exec_snapshot) 152425bb815Sopenharmony_cifunction rejects static snaphots unless the `JERRY_SNAPSHOT_EXEC_ALLOW_STATIC` 153425bb815Sopenharmony_cioption bit is set. The caller must also ensure that the same magic 154425bb815Sopenharmony_cistrings are set by [jerry_register_magic_strings](#jerry_register_magic_strings) 155425bb815Sopenharmony_ciwhen the snapshot is generated and executed. Furthermore the 156425bb815Sopenharmony_ci`JERRY_SNAPSHOT_EXEC_COPY_DATA` option is not allowed. 157425bb815Sopenharmony_ci 158425bb815Sopenharmony_ci*New in version 2.0*. 159425bb815Sopenharmony_ci 160425bb815Sopenharmony_ci## jerry_exec_snapshot_opts_t 161425bb815Sopenharmony_ci 162425bb815Sopenharmony_ciFlags for [jerry_exec_snapshot](#jerry_exec_snapshot) and 163425bb815Sopenharmony_ci[jerry_load_function_snapshot](#jerry_load_function_snapshot) functions: 164425bb815Sopenharmony_ci 165425bb815Sopenharmony_ci - JERRY_SNAPSHOT_EXEC_COPY_DATA - copy snapshot data into memory (see below) 166425bb815Sopenharmony_ci - JERRY_SNAPSHOT_EXEC_ALLOW_STATIC - allow executing static snapshots 167425bb815Sopenharmony_ci 168425bb815Sopenharmony_ci**Copy snapshot data into memory** 169425bb815Sopenharmony_ci 170425bb815Sopenharmony_ciBy default the snapshot buffer is expected to be present in memory until 171425bb815Sopenharmony_ci[jerry_cleanup](#jerry_cleanup) is called. For example `static const` buffers 172425bb815Sopenharmony_cicompiled into the application binary satisfy this requirement. 173425bb815Sopenharmony_ci 174425bb815Sopenharmony_ciIf the snapshot buffer is freed after [jerry_exec_snapshot](#jerry_exec_snapshot) 175425bb815Sopenharmony_ciis called the `JERRY_SNAPSHOT_EXEC_COPY_DATA` must be passed to copy the necessary 176425bb815Sopenharmony_ciparts of the snapshot buffer into memory. 177425bb815Sopenharmony_ci 178425bb815Sopenharmony_ciThe `JERRY_SNAPSHOT_EXEC_COPY_DATA` option is not allowed for static snapshots. 179425bb815Sopenharmony_ci 180425bb815Sopenharmony_ci*New in version 2.0*. 181425bb815Sopenharmony_ci 182425bb815Sopenharmony_ci## jerry_char_t 183425bb815Sopenharmony_ci 184425bb815Sopenharmony_ci**Summary** 185425bb815Sopenharmony_ci 186425bb815Sopenharmony_ciJerry's char value 187425bb815Sopenharmony_ci 188425bb815Sopenharmony_ci**Prototype** 189425bb815Sopenharmony_ci 190425bb815Sopenharmony_ci```c 191425bb815Sopenharmony_citypedef uint8_t jerry_char_t; 192425bb815Sopenharmony_ci``` 193425bb815Sopenharmony_ci 194425bb815Sopenharmony_ci## jerry_size_t 195425bb815Sopenharmony_ci 196425bb815Sopenharmony_ci**Summary** 197425bb815Sopenharmony_ci 198425bb815Sopenharmony_ciJerry's size 199425bb815Sopenharmony_ci 200425bb815Sopenharmony_ci**Prototype** 201425bb815Sopenharmony_ci 202425bb815Sopenharmony_ci```c 203425bb815Sopenharmony_citypedef uint32_t jerry_size_t; 204425bb815Sopenharmony_ci``` 205425bb815Sopenharmony_ci 206425bb815Sopenharmony_ci## jerry_length_t 207425bb815Sopenharmony_ci 208425bb815Sopenharmony_ci**Summary** 209425bb815Sopenharmony_ci 210425bb815Sopenharmony_ciJerry's length 211425bb815Sopenharmony_ci 212425bb815Sopenharmony_ci**Prototype** 213425bb815Sopenharmony_ci 214425bb815Sopenharmony_ci```c 215425bb815Sopenharmony_citypedef uint32_t jerry_length_t; 216425bb815Sopenharmony_ci``` 217425bb815Sopenharmony_ci 218425bb815Sopenharmony_ci## jerry_value_t 219425bb815Sopenharmony_ci 220425bb815Sopenharmony_ci**Summary** 221425bb815Sopenharmony_ci 222425bb815Sopenharmony_ciJerryScript value can be a boolean, number, null, object, string or undefined. The value has an error flag, 223425bb815Sopenharmony_cithat indicates whether is an error or not. Every type has an error flag not only objects. The error flag should 224425bb815Sopenharmony_cibe cleared before the value is passed as an argument, otherwise it can lead to a type error. The error objects 225425bb815Sopenharmony_cicreated by API functions has the error flag set. 226425bb815Sopenharmony_ci 227425bb815Sopenharmony_ciReturned and created values by the API functions must be freed with 228425bb815Sopenharmony_ci[jerry_release_value](#jerry_release_value) when they are no longer needed. 229425bb815Sopenharmony_ci 230425bb815Sopenharmony_ci**Prototype** 231425bb815Sopenharmony_ci 232425bb815Sopenharmony_ci```c 233425bb815Sopenharmony_citypedef uint32_t jerry_value_t; 234425bb815Sopenharmony_ci``` 235425bb815Sopenharmony_ci 236425bb815Sopenharmony_ci## jerry_context_data_manager_t 237425bb815Sopenharmony_ci 238425bb815Sopenharmony_ci**Summary** 239425bb815Sopenharmony_ci 240425bb815Sopenharmony_ciStructure that defines how a context data item will be initialized and deinitialized. JerryScript zeroes out the memory 241425bb815Sopenharmony_cifor the item by default, and if the `init_cb` field is not NULL, it will be called with the pointer to the memory as 242425bb815Sopenharmony_cian additional custom initializer. The `deinit_cb` (if non-`NULL`) is called during a call to `jerry_cleanup ()` to run 243425bb815Sopenharmony_ciany custom deinitialization *before* the VM has been fully cleaned up. The `finalize_cb` (if non-`NULL`) is also called 244425bb815Sopenharmony_ciduring a call to `jerry_cleanup ()` to run any custom deinitialization *after* the VM has been fully cleaned up. 245425bb815Sopenharmony_ciIf bytes_needed field is 0, no buffer is allocated for the manager, callback functions are called with NULL pointer. 246425bb815Sopenharmony_ci 247425bb815Sopenharmony_ci**Prototype** 248425bb815Sopenharmony_ci 249425bb815Sopenharmony_ci```c 250425bb815Sopenharmony_citypedef struct 251425bb815Sopenharmony_ci{ 252425bb815Sopenharmony_ci /** 253425bb815Sopenharmony_ci * Callback responsible for initializing a context item, or NULL to zero out the memory. This is called lazily, the 254425bb815Sopenharmony_ci * first time jerry_get_context_data () is called with this manager. 255425bb815Sopenharmony_ci * 256425bb815Sopenharmony_ci * @param [in] data The buffer that JerryScript allocated for the manager. The buffer is zeroed out. The size is 257425bb815Sopenharmony_ci * determined by the bytes_needed field. The buffer is kept alive until jerry_cleanup () is called. 258425bb815Sopenharmony_ci */ 259425bb815Sopenharmony_ci void (*init_cb) (void *data); 260425bb815Sopenharmony_ci 261425bb815Sopenharmony_ci /** 262425bb815Sopenharmony_ci * Callback responsible for deinitializing a context item, or NULL. This is called as part of jerry_cleanup (), 263425bb815Sopenharmony_ci * right *before* the VM has been cleaned up. This is a good place to release strong references to jerry_value_t's 264425bb815Sopenharmony_ci * that the manager may be holding. 265425bb815Sopenharmony_ci * Note: because the VM has not been fully cleaned up yet, jerry_object_native_info_t free_cb's can still get called 266425bb815Sopenharmony_ci * *after* all deinit_cb's have been run. See finalize_cb for a callback that is guaranteed to run *after* all 267425bb815Sopenharmony_ci * free_cb's have been run. 268425bb815Sopenharmony_ci * 269425bb815Sopenharmony_ci * @param [in] data The buffer that JerryScript allocated for the manager. 270425bb815Sopenharmony_ci */ 271425bb815Sopenharmony_ci void (*deinit_cb) (void *data); 272425bb815Sopenharmony_ci 273425bb815Sopenharmony_ci /** 274425bb815Sopenharmony_ci * Callback responsible for finalizing a context item, or NULL. This is called as part of jerry_cleanup (), 275425bb815Sopenharmony_ci * right *after* the VM has been cleaned up and destroyed and jerry_... APIs cannot be called any more. At this point, 276425bb815Sopenharmony_ci * all values in the VM have been cleaned up. This is a good place to clean up native state that can only be cleaned 277425bb815Sopenharmony_ci * up at the very end when there are no more VM values around that may need to access that state. 278425bb815Sopenharmony_ci * 279425bb815Sopenharmony_ci * @param [in] data The buffer that JerryScript allocated for the manager. After returning from this callback, 280425bb815Sopenharmony_ci * the data pointer may no longer be used. 281425bb815Sopenharmony_ci */ 282425bb815Sopenharmony_ci void (*finalize_cb) (void *data); 283425bb815Sopenharmony_ci 284425bb815Sopenharmony_ci /** 285425bb815Sopenharmony_ci * Number of bytes to allocate for this manager. This is the size of the buffer that JerryScript will allocate on 286425bb815Sopenharmony_ci * behalf of the manager. The pointer to this buffer is passed into init_cb, deinit_cb and finalize_cb. It is also 287425bb815Sopenharmony_ci * returned from the jerry_get_context_data () API. 288425bb815Sopenharmony_ci */ 289425bb815Sopenharmony_ci size_t bytes_needed; 290425bb815Sopenharmony_ci} jerry_context_data_manager_t; 291425bb815Sopenharmony_ci``` 292425bb815Sopenharmony_ci 293425bb815Sopenharmony_ci*New in version 2.0*. 294425bb815Sopenharmony_ci 295425bb815Sopenharmony_ci## jerry_context_alloc_t 296425bb815Sopenharmony_ci 297425bb815Sopenharmony_ci**Summary** 298425bb815Sopenharmony_ci 299425bb815Sopenharmony_ciFunction type for allocating buffer for JerryScript context. 300425bb815Sopenharmony_ci 301425bb815Sopenharmony_ci**Prototype** 302425bb815Sopenharmony_ci 303425bb815Sopenharmony_ci```c 304425bb815Sopenharmony_citypedef void *(*jerry_context_alloc_t) (size_t size, void *cb_data_p); 305425bb815Sopenharmony_ci``` 306425bb815Sopenharmony_ci 307425bb815Sopenharmony_ci- `size` - allocation size 308425bb815Sopenharmony_ci- `cb_data_p` - pointer to user data 309425bb815Sopenharmony_ci 310425bb815Sopenharmony_ci*New in version 2.0*. 311425bb815Sopenharmony_ci 312425bb815Sopenharmony_ci## jerry_context_t 313425bb815Sopenharmony_ci 314425bb815Sopenharmony_ci**Summary** 315425bb815Sopenharmony_ci 316425bb815Sopenharmony_ciAn opaque declaration of the JerryScript context structure. 317425bb815Sopenharmony_ci 318425bb815Sopenharmony_ci**Prototype** 319425bb815Sopenharmony_ci 320425bb815Sopenharmony_ci```c 321425bb815Sopenharmony_citypedef struct jerry_context_t jerry_context_t; 322425bb815Sopenharmony_ci``` 323425bb815Sopenharmony_ci 324425bb815Sopenharmony_ci*New in version 2.0*. 325425bb815Sopenharmony_ci 326425bb815Sopenharmony_ci 327425bb815Sopenharmony_ci## jerry_binary_operation_t 328425bb815Sopenharmony_ci 329425bb815Sopenharmony_ciEnum that contains the supported binary operation types 330425bb815Sopenharmony_ci - JERRY_BIN_OP_EQUAL - equal comparison (==) 331425bb815Sopenharmony_ci - JERRY_BIN_OP_STRICT_EQUAL - strict equal comparison (===) 332425bb815Sopenharmony_ci - JERRY_BIN_OP_LESS - less relation (<) 333425bb815Sopenharmony_ci - JERRY_BIN_OP_LESS_EQUAL - less or equal relation (<=) 334425bb815Sopenharmony_ci - JERRY_BIN_OP_GREATER - greater relation (>) 335425bb815Sopenharmony_ci - JERRY_BIN_OP_GREATER_EQUAL - greater or equal relation (>=) 336425bb815Sopenharmony_ci - JERRY_BIN_OP_INSTANCEOF - instanceof operation 337425bb815Sopenharmony_ci - JERRY_BIN_OP_ADD - addition operator (+) 338425bb815Sopenharmony_ci - JERRY_BIN_OP_SUB - subtraction operator (-) 339425bb815Sopenharmony_ci - JERRY_BIN_OP_MUL - multiplication operator (*) 340425bb815Sopenharmony_ci - JERRY_BIN_OP_DIV - division operator (/) 341425bb815Sopenharmony_ci - JERRY_BIN_OP_REM - remainder operator (%) 342425bb815Sopenharmony_ci 343425bb815Sopenharmony_ci*New in version 2.0*. 344425bb815Sopenharmony_ci 345425bb815Sopenharmony_ci**See also** 346425bb815Sopenharmony_ci 347425bb815Sopenharmony_ci- [jerry_binary_operation](#jerry_binary_operation) 348425bb815Sopenharmony_ci 349425bb815Sopenharmony_ci## jerry_property_descriptor_t 350425bb815Sopenharmony_ci 351425bb815Sopenharmony_ci**Summary** 352425bb815Sopenharmony_ci 353425bb815Sopenharmony_ciDescription of ECMA property descriptor. This struct can be used 354425bb815Sopenharmony_cifor the [jerry_define_own_property](#jerry_define_own_property) method to 355425bb815Sopenharmony_ciconfigure how the property should be registered. 356425bb815Sopenharmony_ci 357425bb815Sopenharmony_ciThe naming scheme is similar to the JavaScript `Object.defineProperty` method. 358425bb815Sopenharmony_ci 359425bb815Sopenharmony_ciFields should be used in pairs. That is if the `is_value_defined` is set to `true` 360425bb815Sopenharmony_cithe `value` field should contain the value for the property. 361425bb815Sopenharmony_ci 362425bb815Sopenharmony_ci**Prototype** 363425bb815Sopenharmony_ci 364425bb815Sopenharmony_ci```c 365425bb815Sopenharmony_citypedef struct 366425bb815Sopenharmony_ci{ 367425bb815Sopenharmony_ci /** Is [[Value]] defined? */ 368425bb815Sopenharmony_ci bool is_value_defined; 369425bb815Sopenharmony_ci 370425bb815Sopenharmony_ci /** Is [[Get]] defined? */ 371425bb815Sopenharmony_ci bool is_get_defined; 372425bb815Sopenharmony_ci 373425bb815Sopenharmony_ci /** Is [[Set]] defined? */ 374425bb815Sopenharmony_ci bool is_set_defined; 375425bb815Sopenharmony_ci 376425bb815Sopenharmony_ci /** Is [[Writable]] defined? */ 377425bb815Sopenharmony_ci bool is_writable_defined; 378425bb815Sopenharmony_ci 379425bb815Sopenharmony_ci /** [[Writable]] */ 380425bb815Sopenharmony_ci bool is_writable; 381425bb815Sopenharmony_ci 382425bb815Sopenharmony_ci /** Is [[Enumerable]] defined? */ 383425bb815Sopenharmony_ci bool is_enumerable_defined; 384425bb815Sopenharmony_ci 385425bb815Sopenharmony_ci /** [[Enumerable]] */ 386425bb815Sopenharmony_ci bool is_enumerable; 387425bb815Sopenharmony_ci 388425bb815Sopenharmony_ci /** Is [[Configurable]] defined? */ 389425bb815Sopenharmony_ci bool is_configurable_defined; 390425bb815Sopenharmony_ci 391425bb815Sopenharmony_ci /** [[Configurable]] */ 392425bb815Sopenharmony_ci bool is_configurable; 393425bb815Sopenharmony_ci 394425bb815Sopenharmony_ci /** [[Value]] */ 395425bb815Sopenharmony_ci jerry_value_t value; 396425bb815Sopenharmony_ci 397425bb815Sopenharmony_ci /** [[Get]] */ 398425bb815Sopenharmony_ci jerry_value_t getter; 399425bb815Sopenharmony_ci 400425bb815Sopenharmony_ci /** [[Set]] */ 401425bb815Sopenharmony_ci jerry_value_t setter; 402425bb815Sopenharmony_ci} jerry_property_descriptor_t; 403425bb815Sopenharmony_ci``` 404425bb815Sopenharmony_ci 405425bb815Sopenharmony_ci**See also** 406425bb815Sopenharmony_ci 407425bb815Sopenharmony_ci- [jerry_define_own_property](#jerry_define_own_property) 408425bb815Sopenharmony_ci 409425bb815Sopenharmony_ci## jerry_heap_stats_t 410425bb815Sopenharmony_ci 411425bb815Sopenharmony_ci**Summary** 412425bb815Sopenharmony_ci 413425bb815Sopenharmony_ciDescription of JerryScript heap memory stats. 414425bb815Sopenharmony_ciIt is for memory profiling. 415425bb815Sopenharmony_ci 416425bb815Sopenharmony_ci**Prototype** 417425bb815Sopenharmony_ci 418425bb815Sopenharmony_ci```c 419425bb815Sopenharmony_citypedef struct 420425bb815Sopenharmony_ci{ 421425bb815Sopenharmony_ci size_t version /**< the version of the stats struct */ 422425bb815Sopenharmony_ci size_t size; /**< heap total size */ 423425bb815Sopenharmony_ci size_t allocated_bytes; /**< currently allocated bytes */ 424425bb815Sopenharmony_ci size_t peak_allocated_bytes; /**< peak allocated bytes */ 425425bb815Sopenharmony_ci size_t reserved[4]; /**< padding for future extensions */ 426425bb815Sopenharmony_ci} jerry_heap_stats_t; 427425bb815Sopenharmony_ci``` 428425bb815Sopenharmony_ci 429425bb815Sopenharmony_ci*New in version 2.0*. 430425bb815Sopenharmony_ci 431425bb815Sopenharmony_ci**See also** 432425bb815Sopenharmony_ci 433425bb815Sopenharmony_ci- [jerry_get_memory_stats](#jerry_get_memory_stats) 434425bb815Sopenharmony_ci 435425bb815Sopenharmony_ci## jerry_external_handler_t 436425bb815Sopenharmony_ci 437425bb815Sopenharmony_ci**Summary** 438425bb815Sopenharmony_ci 439425bb815Sopenharmony_ciType of an external function handler 440425bb815Sopenharmony_ci 441425bb815Sopenharmony_ci**Prototype** 442425bb815Sopenharmony_ci 443425bb815Sopenharmony_ci```c 444425bb815Sopenharmony_citypedef jerry_value_t (*jerry_external_handler_t) (const jerry_value_t function_obj, 445425bb815Sopenharmony_ci const jerry_value_t this_val, 446425bb815Sopenharmony_ci const jerry_value_t args_p[], 447425bb815Sopenharmony_ci const jerry_length_t args_count); 448425bb815Sopenharmony_ci``` 449425bb815Sopenharmony_ci 450425bb815Sopenharmony_ci- `function_object` - the JavaScript function object which was invoked. 451425bb815Sopenharmony_ci- `this_val` - the `this` value provided for the function call. 452425bb815Sopenharmony_ci- `args_p` - the function arguments, array of JavaScript values. 453425bb815Sopenharmony_ci- `args_count` - the number of arguments. 454425bb815Sopenharmony_ci- return value 455425bb815Sopenharmony_ci - The function's return value. If there is no return value, use [jerry_create_undefined()](#jerry_create_undefined). 456425bb815Sopenharmony_ci 457425bb815Sopenharmony_ci**See also** 458425bb815Sopenharmony_ci 459425bb815Sopenharmony_ci- [jerry_create_external_function](#jerry_create_external_function) 460425bb815Sopenharmony_ci 461425bb815Sopenharmony_ci## jerry_object_native_free_callback_t 462425bb815Sopenharmony_ci 463425bb815Sopenharmony_ci**Summary** 464425bb815Sopenharmony_ci 465425bb815Sopenharmony_ciNative free callback of an object. It is used in `jerry_object_native_info_t` and for external Array buffers. 466425bb815Sopenharmony_ci 467425bb815Sopenharmony_ci*Note*: 468425bb815Sopenharmony_ci - Referred values by this method must have at least 1 reference. (Correct API usage satisfies this condition) 469425bb815Sopenharmony_ci 470425bb815Sopenharmony_ci**Prototype** 471425bb815Sopenharmony_ci 472425bb815Sopenharmony_ci```c 473425bb815Sopenharmony_citypedef void (*jerry_object_native_free_callback_t) (void *native_p); 474425bb815Sopenharmony_ci``` 475425bb815Sopenharmony_ci 476425bb815Sopenharmony_ci*New in version 2.0*: Renamed from `jerry_object_free_callback_t`. 477425bb815Sopenharmony_ci*Changed in version 2.2*: API calls are once again allowed. (See note) 478425bb815Sopenharmony_ci 479425bb815Sopenharmony_ci**See also** 480425bb815Sopenharmony_ci 481425bb815Sopenharmony_ci- [jerry_object_native_info_t](#jerry_object_native_info_t) 482425bb815Sopenharmony_ci- [jerry_create_arraybuffer_external](#jerry_create_arraybuffer_external) 483425bb815Sopenharmony_ci 484425bb815Sopenharmony_ci## jerry_object_native_info_t 485425bb815Sopenharmony_ci 486425bb815Sopenharmony_ci**Summary** 487425bb815Sopenharmony_ci 488425bb815Sopenharmony_ciThe type information of the native pointer. 489425bb815Sopenharmony_ciIt includes the free callback that will be called when associated JavaScript object is garbage collected. It can be left NULL in case it is not needed. 490425bb815Sopenharmony_ci 491425bb815Sopenharmony_ciTypically, one would create a `static const jerry_object_native_info_t` for 492425bb815Sopenharmony_cieach distinct C type for which a pointer is used with 493425bb815Sopenharmony_ci`jerry_set_object_native_pointer ()` and `jerry_get_object_native_pointer ()`. 494425bb815Sopenharmony_ciThis way, each `const jerry_object_native_info_t *` pointer address value itself 495425bb815Sopenharmony_ciuniquely identifies the C type of the native pointer. 496425bb815Sopenharmony_ci 497425bb815Sopenharmony_ciSee [jerry_get_object_native_pointer](#jerry_get_object_native_pointer) 498425bb815Sopenharmony_cifor a best-practice code example. 499425bb815Sopenharmony_ci 500425bb815Sopenharmony_ci**Prototype** 501425bb815Sopenharmony_ci 502425bb815Sopenharmony_ci```c 503425bb815Sopenharmony_citypedef struct 504425bb815Sopenharmony_ci{ 505425bb815Sopenharmony_ci jerry_object_native_free_callback_t free_cb; 506425bb815Sopenharmony_ci} jerry_object_native_info_t; 507425bb815Sopenharmony_ci``` 508425bb815Sopenharmony_ci 509425bb815Sopenharmony_ci*New in version 2.0*. 510425bb815Sopenharmony_ci 511425bb815Sopenharmony_ci**See also** 512425bb815Sopenharmony_ci 513425bb815Sopenharmony_ci- [jerry_set_object_native_pointer](#jerry_set_object_native_pointer) 514425bb815Sopenharmony_ci- [jerry_get_object_native_pointer](#jerry_get_object_native_pointer) 515425bb815Sopenharmony_ci 516425bb815Sopenharmony_ci## jerry_object_property_foreach_t 517425bb815Sopenharmony_ci 518425bb815Sopenharmony_ci**Summary** 519425bb815Sopenharmony_ci 520425bb815Sopenharmony_ciFunction type used as a callback for the [jerry_foreach_object_property](#jerry_foreach_object_property) 521425bb815Sopenharmony_cimethod. A function with this type must return "true" to continue the iteration or "false" to finish the 522425bb815Sopenharmony_ciiteration on the object's properties. 523425bb815Sopenharmony_ci 524425bb815Sopenharmony_ci**Prototype** 525425bb815Sopenharmony_ci 526425bb815Sopenharmony_ci```c 527425bb815Sopenharmony_citypedef bool (*jerry_object_property_foreach_t) (const jerry_value_t property_name, 528425bb815Sopenharmony_ci const jerry_value_t property_value, 529425bb815Sopenharmony_ci void *user_data_p); 530425bb815Sopenharmony_ci``` 531425bb815Sopenharmony_ci 532425bb815Sopenharmony_ci- `property_name` - a property name, this is not always a string. 533425bb815Sopenharmony_ci- `property_value` - the value for the given property. 534425bb815Sopenharmony_ci- `user_data_p` - optional user data pointer supplied via the (jerry_foreach_object_property)[#jerry_foreach_object_property] method. 535425bb815Sopenharmony_ci- return value 536425bb815Sopenharmony_ci - true, to continue the iteration 537425bb815Sopenharmony_ci - false, to stop the iteration 538425bb815Sopenharmony_ci 539425bb815Sopenharmony_ci**See also** 540425bb815Sopenharmony_ci 541425bb815Sopenharmony_ci- [jerry_foreach_object_property](#jerry_foreach_object_property) 542425bb815Sopenharmony_ci 543425bb815Sopenharmony_ci## jerry_objects_foreach_t 544425bb815Sopenharmony_ci 545425bb815Sopenharmony_ci**Summary** 546425bb815Sopenharmony_ci 547425bb815Sopenharmony_ciFunction type used as a callback for the (jerry_objects_foreach)[#jerry_objects_foreach] method. 548425bb815Sopenharmony_ciA function with this type must return "true" to continue the iteration or "false" to finish the 549425bb815Sopenharmony_ciiteration on the object's properties. 550425bb815Sopenharmony_ci 551425bb815Sopenharmony_ci**Prototype** 552425bb815Sopenharmony_ci 553425bb815Sopenharmony_ci```c 554425bb815Sopenharmony_citypedef bool (*jerry_objects_foreach_t) (const jerry_value_t object, 555425bb815Sopenharmony_ci void *user_data_p); 556425bb815Sopenharmony_ci``` 557425bb815Sopenharmony_ci 558425bb815Sopenharmony_ci- `object` - the current JavaScript object in the for-each iteration. 559425bb815Sopenharmony_ci- `user_data_p` - optional user data pointer supplied via the (jerry_objects_foreach)[#jerry_objects_foreach] method. 560425bb815Sopenharmony_ci- return value 561425bb815Sopenharmony_ci - true, to continue the iteration 562425bb815Sopenharmony_ci - false, to stop the iteration 563425bb815Sopenharmony_ci 564425bb815Sopenharmony_ci*New in version 2.0*. 565425bb815Sopenharmony_ci 566425bb815Sopenharmony_ci**See also** 567425bb815Sopenharmony_ci 568425bb815Sopenharmony_ci- [jerry_objects_foreach](#jerry_objects_foreach) 569425bb815Sopenharmony_ci 570425bb815Sopenharmony_ci## jerry_objects_foreach_by_native_info_t 571425bb815Sopenharmony_ci 572425bb815Sopenharmony_ci**Summary** 573425bb815Sopenharmony_ci 574425bb815Sopenharmony_ciFunction type used as a callback for the (jerry_objects_foreach_by_native_info)[#jerry_objects_foreach_by_native_info] 575425bb815Sopenharmony_cimethod. A function with this type must return "true" to continue the iteration or "false" to finish the 576425bb815Sopenharmony_ciiteration on the object's properties. 577425bb815Sopenharmony_ci 578425bb815Sopenharmony_ci**Prototype** 579425bb815Sopenharmony_ci 580425bb815Sopenharmony_ci```c 581425bb815Sopenharmony_citypedef bool (*jerry_objects_foreach_by_native_info_t) (const jerry_value_t object, 582425bb815Sopenharmony_ci void *object_data_p, 583425bb815Sopenharmony_ci void *user_data_p); 584425bb815Sopenharmony_ci``` 585425bb815Sopenharmony_ci 586425bb815Sopenharmony_ci- `object` - the current JavaScript object in the for-each iteration. 587425bb815Sopenharmony_ci- `object_data_p` - the current object's native data pointer. 588425bb815Sopenharmony_ci- `user_data_p` - optional user data pointer supplied via the (jerry_objects_foreach_by_native_info)[#jerry_objects_foreach_by_native_info] method. 589425bb815Sopenharmony_ci- return value 590425bb815Sopenharmony_ci - true, to continue the iteration 591425bb815Sopenharmony_ci - false, to stop the iteration 592425bb815Sopenharmony_ci 593425bb815Sopenharmony_ci*New in version 2.0*. 594425bb815Sopenharmony_ci 595425bb815Sopenharmony_ci**See also** 596425bb815Sopenharmony_ci 597425bb815Sopenharmony_ci- [jerry_objects_foreach_by_native_info](#jerry_objects_foreach_by_native_info) 598425bb815Sopenharmony_ci 599425bb815Sopenharmony_ci## jerry_vm_exec_stop_callback_t 600425bb815Sopenharmony_ci 601425bb815Sopenharmony_ci**Summary** 602425bb815Sopenharmony_ci 603425bb815Sopenharmony_ciCallback which tells whether the ECMAScript execution should be stopped. 604425bb815Sopenharmony_ciIf it returns with undefined value the ECMAScript execution continues. 605425bb815Sopenharmony_ciOtherwise the result is thrown by the engine (if the error flag is not 606425bb815Sopenharmony_ciset for the returned value the engine automatically sets it). The 607425bb815Sopenharmony_cicallback function might be called again even if it threw an error. 608425bb815Sopenharmony_ciIn this case the function must throw the same error again. 609425bb815Sopenharmony_ci 610425bb815Sopenharmony_ci**Prototype** 611425bb815Sopenharmony_ci 612425bb815Sopenharmony_ci```c 613425bb815Sopenharmony_citypedef jerry_value_t (*jerry_vm_exec_stop_callback_t) (void *user_p); 614425bb815Sopenharmony_ci``` 615425bb815Sopenharmony_ci 616425bb815Sopenharmony_ci*New in version 2.0*. 617425bb815Sopenharmony_ci 618425bb815Sopenharmony_ci**See also** 619425bb815Sopenharmony_ci 620425bb815Sopenharmony_ci- [jerry_set_vm_exec_stop_callback](#jerry_set_vm_exec_stop_callback) 621425bb815Sopenharmony_ci 622425bb815Sopenharmony_ci## jerry_promise_state_t 623425bb815Sopenharmony_ci 624425bb815Sopenharmony_ciEnum which describes the state of a Promise. 625425bb815Sopenharmony_ci 626425bb815Sopenharmony_ciPossible values: 627425bb815Sopenharmony_ci 628425bb815Sopenharmony_ci - JERRY_PROMISE_STATE_NONE - Invalid/Unknown state (possibly called on a non-promise object). 629425bb815Sopenharmony_ci - JERRY_PROMISE_STATE_PENDING - Promise is in "Pending" state. 630425bb815Sopenharmony_ci - JERRY_PROMISE_STATE_FULFILLED - Promise is in "Fulfilled" state. 631425bb815Sopenharmony_ci - JERRY_PROMISE_STATE_REJECTED - Promise is in "Rejected" state. 632425bb815Sopenharmony_ci 633425bb815Sopenharmony_ci*New in version 2.2*. 634425bb815Sopenharmony_ci 635425bb815Sopenharmony_ci**See also** 636425bb815Sopenharmony_ci 637425bb815Sopenharmony_ci- [jerry_get_promise_result](#jerry_get_promise_result) 638425bb815Sopenharmony_ci 639425bb815Sopenharmony_ci## jerry_typedarray_type_t 640425bb815Sopenharmony_ci 641425bb815Sopenharmony_ciEnum which describes the TypedArray types. 642425bb815Sopenharmony_ciPossible values: 643425bb815Sopenharmony_ci 644425bb815Sopenharmony_ci - JERRY_TYPEDARRAY_UINT8 - represents the Uint8Array TypedArray 645425bb815Sopenharmony_ci - JERRY_TYPEDARRAY_UINT8CLAMPED - represents the Uint8ClampedArray TypedArray 646425bb815Sopenharmony_ci - JERRY_TYPEDARRAY_INT8 - represents the Int8Array TypedArray 647425bb815Sopenharmony_ci - JERRY_TYPEDARRAY_UINT16 - represents the Uint16Array TypedArray 648425bb815Sopenharmony_ci - JERRY_TYPEDARRAY_INT16 - represents the Int16Array TypedArray 649425bb815Sopenharmony_ci - JERRY_TYPEDARRAY_UINT32 - represents the Uint32Array TypedArray 650425bb815Sopenharmony_ci - JERRY_TYPEDARRAY_INT32 - represents the Int32Array TypedArray 651425bb815Sopenharmony_ci - JERRY_TYPEDARRAY_FLOAT32 - represents the Float32Array TypedArray 652425bb815Sopenharmony_ci - JERRY_TYPEDARRAY_FLOAT64 - represents the Float64Array TypedArray 653425bb815Sopenharmony_ci - JERRY_TYPEDARRAY_INVALID - represents an invalid TypedArray 654425bb815Sopenharmony_ci 655425bb815Sopenharmony_ciAPI functions can return the `JERRY_TYPEDARRAY_INVALID` value if the 656425bb815Sopenharmony_ciTypedArray support is not in the engine. 657425bb815Sopenharmony_ci 658425bb815Sopenharmony_ci*New in version 2.0*. 659425bb815Sopenharmony_ci 660425bb815Sopenharmony_ci**See also** 661425bb815Sopenharmony_ci 662425bb815Sopenharmony_ci- [jerry_get_typedarray_type](#jerry_get_typedarray_type) 663425bb815Sopenharmony_ci 664425bb815Sopenharmony_ci 665425bb815Sopenharmony_ci# General engine functions 666425bb815Sopenharmony_ci 667425bb815Sopenharmony_ci## jerry_init 668425bb815Sopenharmony_ci 669425bb815Sopenharmony_ci**Summary** 670425bb815Sopenharmony_ci 671425bb815Sopenharmony_ciInitializes the JerryScript engine, making it possible to run JavaScript code and perform operations 672425bb815Sopenharmony_cion JavaScript values. This is required for almost all API functions. 673425bb815Sopenharmony_ci 674425bb815Sopenharmony_ci**Prototype** 675425bb815Sopenharmony_ci 676425bb815Sopenharmony_ci```c 677425bb815Sopenharmony_civoid 678425bb815Sopenharmony_cijerry_init (jerry_init_flag_t flags) 679425bb815Sopenharmony_ci``` 680425bb815Sopenharmony_ci 681425bb815Sopenharmony_ci`flags` - combination of various engine configuration flags [jerry_init_flag_t](#jerry_init_flag_t). 682425bb815Sopenharmony_ci 683425bb815Sopenharmony_ci**Example** 684425bb815Sopenharmony_ci 685425bb815Sopenharmony_ci[doctest]: # () 686425bb815Sopenharmony_ci 687425bb815Sopenharmony_ci```c 688425bb815Sopenharmony_ci#include "jerryscript.h" 689425bb815Sopenharmony_ci 690425bb815Sopenharmony_ciint 691425bb815Sopenharmony_cimain (void) 692425bb815Sopenharmony_ci{ 693425bb815Sopenharmony_ci jerry_init (JERRY_INIT_SHOW_OPCODES | JERRY_INIT_SHOW_REGEXP_OPCODES); 694425bb815Sopenharmony_ci 695425bb815Sopenharmony_ci // ... 696425bb815Sopenharmony_ci 697425bb815Sopenharmony_ci jerry_cleanup (); 698425bb815Sopenharmony_ci return 0; 699425bb815Sopenharmony_ci} 700425bb815Sopenharmony_ci``` 701425bb815Sopenharmony_ci 702425bb815Sopenharmony_ci**See also** 703425bb815Sopenharmony_ci 704425bb815Sopenharmony_ci- [jerry_init_flag_t](#jerry_init_flag_t) 705425bb815Sopenharmony_ci- [jerry_cleanup](#jerry_cleanup) 706425bb815Sopenharmony_ci 707425bb815Sopenharmony_ci 708425bb815Sopenharmony_ci## jerry_cleanup 709425bb815Sopenharmony_ci 710425bb815Sopenharmony_ci**Summary** 711425bb815Sopenharmony_ci 712425bb815Sopenharmony_ciFinish JavaScript engine execution, freeing memory and JavaScript values. 713425bb815Sopenharmony_ci 714425bb815Sopenharmony_ci*Note*: JavaScript values, received from engine, will be inaccessible after the cleanup. 715425bb815Sopenharmony_ci 716425bb815Sopenharmony_ci**Prototype** 717425bb815Sopenharmony_ci 718425bb815Sopenharmony_ci```c 719425bb815Sopenharmony_civoid 720425bb815Sopenharmony_cijerry_cleanup (void); 721425bb815Sopenharmony_ci``` 722425bb815Sopenharmony_ci 723425bb815Sopenharmony_ci**See also** 724425bb815Sopenharmony_ci 725425bb815Sopenharmony_ci- [jerry_init](#jerry_init) 726425bb815Sopenharmony_ci 727425bb815Sopenharmony_ci 728425bb815Sopenharmony_ci## jerry_get_context_data 729425bb815Sopenharmony_ci 730425bb815Sopenharmony_ci**Summary** 731425bb815Sopenharmony_ci 732425bb815Sopenharmony_ciRetrieve a pointer to the item stored within the current context by the given manager. 733425bb815Sopenharmony_ci 734425bb815Sopenharmony_ci*Note*: Since internally the pointer to a manager's context data item is linked to the next such pointer in a linked 735425bb815Sopenharmony_ci list, it is inadvisable to invoke too many different managers, because doing so will increase the time it takes 736425bb815Sopenharmony_ci to retrieve a manager's context data item, degrading performance. For example, try to keep the number of 737425bb815Sopenharmony_ci managers below five. 738425bb815Sopenharmony_ci 739425bb815Sopenharmony_ci**Prototype** 740425bb815Sopenharmony_ci 741425bb815Sopenharmony_ci```c 742425bb815Sopenharmony_civoid * 743425bb815Sopenharmony_cijerry_get_context_data (const jerry_context_data_manager *manager_p); 744425bb815Sopenharmony_ci``` 745425bb815Sopenharmony_ci 746425bb815Sopenharmony_ci- `manager_p`: the manager of this context data item. 747425bb815Sopenharmony_ci- return value: the item created by `manager_p` when `jerry_get_context_data ()` was first called, or a new item created 748425bb815Sopenharmony_ci by `manager_p`, which will be stored for future identical calls to `jerry_get_context_data ()`, and which will be 749425bb815Sopenharmony_ci deinitialized using the `deinit_cb` callback provided by `manager_p` when the context will be destroyed. 750425bb815Sopenharmony_ci 751425bb815Sopenharmony_ci*New in version 2.0*. 752425bb815Sopenharmony_ci 753425bb815Sopenharmony_ci**Example** 754425bb815Sopenharmony_ci 755425bb815Sopenharmony_ci[doctest]: # (test="compile") 756425bb815Sopenharmony_ci 757425bb815Sopenharmony_ci```c 758425bb815Sopenharmony_ci#include "jerryscript.h" 759425bb815Sopenharmony_ci 760425bb815Sopenharmony_citypedef struct 761425bb815Sopenharmony_ci{ 762425bb815Sopenharmony_ci int my_data1; 763425bb815Sopenharmony_ci double my_data2; 764425bb815Sopenharmony_ci char *my_data3; 765425bb815Sopenharmony_ci} my_context_data_t; 766425bb815Sopenharmony_ci 767425bb815Sopenharmony_ci/* Define how context items will be initialized. */ 768425bb815Sopenharmony_cistatic void 769425bb815Sopenharmony_cimy_context_data_new (void *user_data_p) 770425bb815Sopenharmony_ci{ 771425bb815Sopenharmony_ci my_context_data_t *my_data_p = (my_context_data_t *) user_data_p; 772425bb815Sopenharmony_ci 773425bb815Sopenharmony_ci /* 774425bb815Sopenharmony_ci * Initialize my_data_p. JerryScript will store it on the current context and return it whenever 775425bb815Sopenharmony_ci * jerry_get_context_data () is called with a pointer to my_manager as defined below. 776425bb815Sopenharmony_ci */ 777425bb815Sopenharmony_ci} 778425bb815Sopenharmony_ci 779425bb815Sopenharmony_ci/* Define how context items will be deinitialized */ 780425bb815Sopenharmony_cistatic void 781425bb815Sopenharmony_cimy_context_data_free (void *user_data_p) 782425bb815Sopenharmony_ci{ 783425bb815Sopenharmony_ci my_context_data_t *my_data_p = ((my_context_data_t *) user_data_p); 784425bb815Sopenharmony_ci 785425bb815Sopenharmony_ci /* Perform any necessary cleanup on my_data. JerryScript will free the pointer after this function completes. */ 786425bb815Sopenharmony_ci} 787425bb815Sopenharmony_ci 788425bb815Sopenharmony_ci/* Wrap the creation and destruction functions into a manager */ 789425bb815Sopenharmony_cistatic const jerry_context_data_manager_t my_manager = 790425bb815Sopenharmony_ci{ 791425bb815Sopenharmony_ci .init_cb = my_context_data_new, 792425bb815Sopenharmony_ci .deinit_cb = my_context_data_free, 793425bb815Sopenharmony_ci .bytes_needed = sizeof (my_context_data_t) 794425bb815Sopenharmony_ci}; 795425bb815Sopenharmony_ci 796425bb815Sopenharmony_ci/* 797425bb815Sopenharmony_ci * Then, in some function in your code, you can retrieve an item of type my_context_data_t from the currently active 798425bb815Sopenharmony_ci * context such that JerryScript will create and store such an item if one was not previously created 799425bb815Sopenharmony_ci */ 800425bb815Sopenharmony_cistatic void 801425bb815Sopenharmony_cisomeplace_in_the_code (void) 802425bb815Sopenharmony_ci{ 803425bb815Sopenharmony_ci my_context_data_t *my_data = (my_context_data_t *) jerry_get_context_data (&my_manager); 804425bb815Sopenharmony_ci /* Perform useful things using the data found in my_data */ 805425bb815Sopenharmony_ci} 806425bb815Sopenharmony_ci``` 807425bb815Sopenharmony_ci 808425bb815Sopenharmony_ci 809425bb815Sopenharmony_ci## jerry_register_magic_strings 810425bb815Sopenharmony_ci 811425bb815Sopenharmony_ci**Summary** 812425bb815Sopenharmony_ci 813425bb815Sopenharmony_ciRegisters an external magic string array. 814425bb815Sopenharmony_ci 815425bb815Sopenharmony_ci*Notes*: 816425bb815Sopenharmony_ci - The strings in the array must be sorted by size at first, then lexicographically. 817425bb815Sopenharmony_ci - The maximum number of external magic strings is limited to 2147483648 (UINT32_MAX / 2). 818425bb815Sopenharmony_ci If there are more than 2147483648 external magic strings the extra is cropped. 819425bb815Sopenharmony_ci 820425bb815Sopenharmony_ci**Prototype** 821425bb815Sopenharmony_ci 822425bb815Sopenharmony_ci```c 823425bb815Sopenharmony_civoid 824425bb815Sopenharmony_cijerry_register_magic_strings (const jerry_char_t * const *ex_str_items_p, 825425bb815Sopenharmony_ci uint32_t count, 826425bb815Sopenharmony_ci const jerry_length_t *str_lengths_p); 827425bb815Sopenharmony_ci``` 828425bb815Sopenharmony_ci 829425bb815Sopenharmony_ci- `ex_str_items_p` - character arrays, representing external magic strings' contents 830425bb815Sopenharmony_ci- `count` - number of elements in `ext_str_items_p` array 831425bb815Sopenharmony_ci- `str_lengths_p` - array of lengths for each magic string 832425bb815Sopenharmony_ci 833425bb815Sopenharmony_ci*Changed in version 2.0*: The first function argument type was changed. 834425bb815Sopenharmony_ci 835425bb815Sopenharmony_ci**Example** 836425bb815Sopenharmony_ci 837425bb815Sopenharmony_ci[doctest]: # () 838425bb815Sopenharmony_ci 839425bb815Sopenharmony_ci```c 840425bb815Sopenharmony_ci#include "jerryscript.h" 841425bb815Sopenharmony_ci 842425bb815Sopenharmony_ciint 843425bb815Sopenharmony_cimain (void) 844425bb815Sopenharmony_ci{ 845425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 846425bb815Sopenharmony_ci 847425bb815Sopenharmony_ci // must be static, because 'jerry_register_magic_strings' does not copy 848425bb815Sopenharmony_ci // the items must be sorted by size at first, then lexicographically 849425bb815Sopenharmony_ci static const jerry_char_t * const magic_string_items[] = { 850425bb815Sopenharmony_ci (const jerry_char_t *) "magicstring1", 851425bb815Sopenharmony_ci (const jerry_char_t *) "magicstring2", 852425bb815Sopenharmony_ci (const jerry_char_t *) "magicstring3" 853425bb815Sopenharmony_ci }; 854425bb815Sopenharmony_ci uint32_t num_magic_string_items = (uint32_t) (sizeof (magic_string_items) / sizeof (jerry_char_t *)); 855425bb815Sopenharmony_ci 856425bb815Sopenharmony_ci // must be static, because 'jerry_register_magic_strings' does not copy 857425bb815Sopenharmony_ci static const jerry_length_t magic_string_lengths[] = { 858425bb815Sopenharmony_ci 12, 859425bb815Sopenharmony_ci 12, 860425bb815Sopenharmony_ci 12 861425bb815Sopenharmony_ci }; 862425bb815Sopenharmony_ci jerry_register_magic_strings (magic_string_items, num_magic_string_items, magic_string_lengths); 863425bb815Sopenharmony_ci} 864425bb815Sopenharmony_ci``` 865425bb815Sopenharmony_ci 866425bb815Sopenharmony_ci**See also** 867425bb815Sopenharmony_ci 868425bb815Sopenharmony_ci- [jerry_init](#jerry_init) 869425bb815Sopenharmony_ci- [jerry_cleanup](#jerry_cleanup) 870425bb815Sopenharmony_ci- [jerry_get_literals_from_snapshot](#jerry_get_literals_from_snapshot) 871425bb815Sopenharmony_ci 872425bb815Sopenharmony_ci 873425bb815Sopenharmony_ci## jerry_get_memory_stats 874425bb815Sopenharmony_ci 875425bb815Sopenharmony_ci**Summary** 876425bb815Sopenharmony_ci 877425bb815Sopenharmony_ciGet heap memory stats. 878425bb815Sopenharmony_ci 879425bb815Sopenharmony_ci**Notes**: 880425bb815Sopenharmony_ci- The engine must be initialized with the `JERRY_INIT_MEM_STATS` option to allow 881425bb815Sopenharmony_ci heap statistic collections. See [jerry_init](#jerry_init) 882425bb815Sopenharmony_ci- This API depends on a build option (`JERRY_MEM_STATS`) and can be checked 883425bb815Sopenharmony_ci in runtime with the `JERRY_FEATURE_MEM_STATS` feature enum value, 884425bb815Sopenharmony_ci see: [jerry_is_feature_enabled](#jerry_is_feature_enabled). 885425bb815Sopenharmony_ci 886425bb815Sopenharmony_ci 887425bb815Sopenharmony_ci**Prototype** 888425bb815Sopenharmony_ci 889425bb815Sopenharmony_ci```c 890425bb815Sopenharmony_cibool 891425bb815Sopenharmony_cijerry_get_memory_stats (jerry_heap_stats_t *out_stats_p); 892425bb815Sopenharmony_ci``` 893425bb815Sopenharmony_ci 894425bb815Sopenharmony_ci- `out_stats_p` - out parameter, that provides the heap statistics. 895425bb815Sopenharmony_ci- return value 896425bb815Sopenharmony_ci - true, if stats were written into the `out_stats_p` pointer. 897425bb815Sopenharmony_ci - false, otherwise. Usually it is because the `JERRY_FEATURE_MEM_STATS` feature is not enabled. 898425bb815Sopenharmony_ci 899425bb815Sopenharmony_ci*New in version 2.0*. 900425bb815Sopenharmony_ci 901425bb815Sopenharmony_ci**Example** 902425bb815Sopenharmony_ci 903425bb815Sopenharmony_ci```c 904425bb815Sopenharmony_cijerry_init (JERRY_INIT_MEM_STATS); 905425bb815Sopenharmony_ci// ... 906425bb815Sopenharmony_ci 907425bb815Sopenharmony_cijerry_heap_stats_t stats = {0}; 908425bb815Sopenharmony_cibool get_stats_ret = jerry_get_memory_stats (&stats); 909425bb815Sopenharmony_ci``` 910425bb815Sopenharmony_ci 911425bb815Sopenharmony_ci**See also** 912425bb815Sopenharmony_ci 913425bb815Sopenharmony_ci- [jerry_init](#jerry_init) 914425bb815Sopenharmony_ci 915425bb815Sopenharmony_ci 916425bb815Sopenharmony_ci## jerry_gc 917425bb815Sopenharmony_ci 918425bb815Sopenharmony_ci**Summary** 919425bb815Sopenharmony_ci 920425bb815Sopenharmony_ciPerforms garbage collection. 921425bb815Sopenharmony_ci 922425bb815Sopenharmony_ci**Prototype** 923425bb815Sopenharmony_ci 924425bb815Sopenharmony_ci```c 925425bb815Sopenharmony_civoid 926425bb815Sopenharmony_cijerry_gc (jerry_gc_mode_t mode); 927425bb815Sopenharmony_ci``` 928425bb815Sopenharmony_ci 929425bb815Sopenharmony_ci- `mode` - operational mode, see [jerry_gc_mode_t](#jerry_gc_mode_t) 930425bb815Sopenharmony_ci 931425bb815Sopenharmony_ci*Changed in version 2.0*: Added `mode` argument. 932425bb815Sopenharmony_ci 933425bb815Sopenharmony_ci**Example** 934425bb815Sopenharmony_ci 935425bb815Sopenharmony_ci[doctest]: # () 936425bb815Sopenharmony_ci 937425bb815Sopenharmony_ci```c 938425bb815Sopenharmony_ci#include "jerryscript.h" 939425bb815Sopenharmony_ci 940425bb815Sopenharmony_ciint 941425bb815Sopenharmony_cimain (void) 942425bb815Sopenharmony_ci{ 943425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 944425bb815Sopenharmony_ci 945425bb815Sopenharmony_ci jerry_value_t object_value = jerry_create_object (); 946425bb815Sopenharmony_ci jerry_release_value (object_value); 947425bb815Sopenharmony_ci 948425bb815Sopenharmony_ci jerry_gc (JERRY_GC_PRESSURE_LOW); 949425bb815Sopenharmony_ci 950425bb815Sopenharmony_ci jerry_cleanup (); 951425bb815Sopenharmony_ci} 952425bb815Sopenharmony_ci``` 953425bb815Sopenharmony_ci 954425bb815Sopenharmony_ci**See also** 955425bb815Sopenharmony_ci 956425bb815Sopenharmony_ci- [jerry_gc_mode_t](#jerry_gc_mode_t) 957425bb815Sopenharmony_ci- [jerry_init](#jerry_init) 958425bb815Sopenharmony_ci- [jerry_cleanup](#jerry_cleanup) 959425bb815Sopenharmony_ci 960425bb815Sopenharmony_ci# Parser and executor functions 961425bb815Sopenharmony_ci 962425bb815Sopenharmony_ciFunctions to parse and run JavaScript source code. 963425bb815Sopenharmony_ci 964425bb815Sopenharmony_ci## jerry_run_simple 965425bb815Sopenharmony_ci 966425bb815Sopenharmony_ci**Summary** 967425bb815Sopenharmony_ci 968425bb815Sopenharmony_ciThe simplest way to run JavaScript. 969425bb815Sopenharmony_ci 970425bb815Sopenharmony_ci**Prototype** 971425bb815Sopenharmony_ci 972425bb815Sopenharmony_ci```c 973425bb815Sopenharmony_cibool 974425bb815Sopenharmony_cijerry_run_simple (const jerry_char_t *script_source_p, 975425bb815Sopenharmony_ci size_t script_source_size, 976425bb815Sopenharmony_ci jerry_init_flag_t flags); 977425bb815Sopenharmony_ci``` 978425bb815Sopenharmony_ci 979425bb815Sopenharmony_ci- `script_source_p` - source code, it must be a valid utf8 string. 980425bb815Sopenharmony_ci- `script_source_size` - size of source code buffer, in bytes. 981425bb815Sopenharmony_ci- `jerry_init_flag_t` - combination of various engine configuration flags 982425bb815Sopenharmony_ci- return value 983425bb815Sopenharmony_ci - true, if run was successful 984425bb815Sopenharmony_ci - false, otherwise 985425bb815Sopenharmony_ci 986425bb815Sopenharmony_ci**Example** 987425bb815Sopenharmony_ci 988425bb815Sopenharmony_ci[doctest]: # () 989425bb815Sopenharmony_ci 990425bb815Sopenharmony_ci```c 991425bb815Sopenharmony_ci#include "jerryscript.h" 992425bb815Sopenharmony_ci 993425bb815Sopenharmony_ciint 994425bb815Sopenharmony_cimain (void) 995425bb815Sopenharmony_ci{ 996425bb815Sopenharmony_ci const jerry_char_t script[] = "print ('Hello, World!');"; 997425bb815Sopenharmony_ci 998425bb815Sopenharmony_ci jerry_run_simple (script, sizeof (script) - 1, JERRY_INIT_EMPTY); 999425bb815Sopenharmony_ci return 0; 1000425bb815Sopenharmony_ci} 1001425bb815Sopenharmony_ci``` 1002425bb815Sopenharmony_ci 1003425bb815Sopenharmony_ci**See also** 1004425bb815Sopenharmony_ci 1005425bb815Sopenharmony_ci- [jerry_init](#jerry_init) 1006425bb815Sopenharmony_ci- [jerry_cleanup](#jerry_cleanup) 1007425bb815Sopenharmony_ci- [jerry_parse](#jerry_parse) 1008425bb815Sopenharmony_ci- [jerry_run](#jerry_run) 1009425bb815Sopenharmony_ci 1010425bb815Sopenharmony_ci 1011425bb815Sopenharmony_ci## jerry_parse 1012425bb815Sopenharmony_ci 1013425bb815Sopenharmony_ci**Summary** 1014425bb815Sopenharmony_ci 1015425bb815Sopenharmony_ciParse script and construct an EcmaScript function. The lexical environment is 1016425bb815Sopenharmony_ciset to the global lexical environment. The resource name can be used by 1017425bb815Sopenharmony_cidebugging systems to provide line / backtrace info. 1018425bb815Sopenharmony_ci 1019425bb815Sopenharmony_ci*Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 1020425bb815Sopenharmony_ciis no longer needed. 1021425bb815Sopenharmony_ci 1022425bb815Sopenharmony_ci**Prototype** 1023425bb815Sopenharmony_ci 1024425bb815Sopenharmony_ci```c 1025425bb815Sopenharmony_cijerry_value_t 1026425bb815Sopenharmony_cijerry_parse (const jerry_char_t *resource_name_p, /**< resource name (usually a file name) */ 1027425bb815Sopenharmony_ci size_t resource_name_length, /**< length of resource name */ 1028425bb815Sopenharmony_ci const jerry_char_t *source_p, 1029425bb815Sopenharmony_ci size_t source_size, 1030425bb815Sopenharmony_ci uint32_t parse_opts); 1031425bb815Sopenharmony_ci``` 1032425bb815Sopenharmony_ci 1033425bb815Sopenharmony_ci- `resource_name_p` - resource name, usually a file name (must be a valid UTF8 string). 1034425bb815Sopenharmony_ci- `resource_name_length` - size of the resource name, in bytes. 1035425bb815Sopenharmony_ci- `source_p` - string, containing source code to parse (must be a valid UTF8 string). 1036425bb815Sopenharmony_ci- `source_size` - size of the string, in bytes. 1037425bb815Sopenharmony_ci- `parse_opts` - any combination of [jerry_parse_opts_t](#jerry_parse_opts_t) flags. 1038425bb815Sopenharmony_ci- return value 1039425bb815Sopenharmony_ci - function object value, if script was parsed successfully, 1040425bb815Sopenharmony_ci - thrown error, otherwise 1041425bb815Sopenharmony_ci 1042425bb815Sopenharmony_ci*Changed in version 2.0*: Added `resource_name_p`, and `resource_name_length` arguments. 1043425bb815Sopenharmony_ci 1044425bb815Sopenharmony_ci**Example** 1045425bb815Sopenharmony_ci 1046425bb815Sopenharmony_ci[doctest]: # () 1047425bb815Sopenharmony_ci 1048425bb815Sopenharmony_ci```c 1049425bb815Sopenharmony_ci#include "jerryscript.h" 1050425bb815Sopenharmony_ci 1051425bb815Sopenharmony_ciint 1052425bb815Sopenharmony_cimain (void) 1053425bb815Sopenharmony_ci{ 1054425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 1055425bb815Sopenharmony_ci 1056425bb815Sopenharmony_ci const jerry_char_t script[] = "print ('Hello, World!');"; 1057425bb815Sopenharmony_ci 1058425bb815Sopenharmony_ci jerry_value_t parsed_code = jerry_parse (NULL, 0, script, sizeof (script) - 1, JERRY_PARSE_NO_OPTS); 1059425bb815Sopenharmony_ci jerry_release_value (parsed_code); 1060425bb815Sopenharmony_ci 1061425bb815Sopenharmony_ci jerry_cleanup (); 1062425bb815Sopenharmony_ci return 0; 1063425bb815Sopenharmony_ci} 1064425bb815Sopenharmony_ci``` 1065425bb815Sopenharmony_ci 1066425bb815Sopenharmony_ci**See also** 1067425bb815Sopenharmony_ci 1068425bb815Sopenharmony_ci- [jerry_run](#jerry_run) 1069425bb815Sopenharmony_ci- [jerry_parse_function](#jerry_parse_function) 1070425bb815Sopenharmony_ci 1071425bb815Sopenharmony_ci## jerry_parse_function 1072425bb815Sopenharmony_ci 1073425bb815Sopenharmony_ci**Summary** 1074425bb815Sopenharmony_ci 1075425bb815Sopenharmony_ciParse function source code and construct an ECMAScript 1076425bb815Sopenharmony_cifunction. The function arguments and function body are 1077425bb815Sopenharmony_cipassed as separated arguments. The lexical environment 1078425bb815Sopenharmony_ciis set to the global lexical environment. The resource 1079425bb815Sopenharmony_ciname (usually a file name) is also passed to this function 1080425bb815Sopenharmony_ciwhich is used by the debugger to find the source code. 1081425bb815Sopenharmony_ci 1082425bb815Sopenharmony_ci*Note*: The returned value must be freed with [jerry_release_value](#jerry_release_value) when it 1083425bb815Sopenharmony_ciis no longer needed. 1084425bb815Sopenharmony_ci 1085425bb815Sopenharmony_ci**Prototype** 1086425bb815Sopenharmony_ci 1087425bb815Sopenharmony_ci```c 1088425bb815Sopenharmony_cijerry_value_t 1089425bb815Sopenharmony_cijerry_parse_function (const jerry_char_t *resource_name_p, /**< resource name (usually a file name) */ 1090425bb815Sopenharmony_ci size_t resource_name_length, /**< length of resource name */ 1091425bb815Sopenharmony_ci const jerry_char_t *arg_list_p, /**< script source */ 1092425bb815Sopenharmony_ci size_t arg_list_size, /**< script source size */ 1093425bb815Sopenharmony_ci const jerry_char_t *source_p, /**< script source */ 1094425bb815Sopenharmony_ci size_t source_size, /**< script source size */ 1095425bb815Sopenharmony_ci uint32_t parse_opts) /**< strict mode */ 1096425bb815Sopenharmony_ci``` 1097425bb815Sopenharmony_ci 1098425bb815Sopenharmony_ci- `resource_name_p` - resource name, usually a file name (must be a valid UTF8 string). 1099425bb815Sopenharmony_ci- `resource_name_length` - size of the resource name, in bytes. 1100425bb815Sopenharmony_ci- `arg_list_p` - argument list of the function (must be a valid UTF8 string). 1101425bb815Sopenharmony_ci- `arg_list_size` - size of the argument list, in bytes. 1102425bb815Sopenharmony_ci- `source_p` - string, containing source code to parse (must be a valid UTF8 string). 1103425bb815Sopenharmony_ci- `source_size` - size of the string, in bytes. 1104425bb815Sopenharmony_ci- `parse_opts` - any combination of [jerry_parse_opts_t](#jerry_parse_opts_t) flags. 1105425bb815Sopenharmony_ci- return value 1106425bb815Sopenharmony_ci - function object value, if script was parsed successfully, 1107425bb815Sopenharmony_ci - thrown error, otherwise 1108425bb815Sopenharmony_ci 1109425bb815Sopenharmony_ci*New in version 2.0*. 1110425bb815Sopenharmony_ci 1111425bb815Sopenharmony_ci**Example** 1112425bb815Sopenharmony_ci 1113425bb815Sopenharmony_ci[doctest]: # (name="02.API-REFERENCE-parse-func.c") 1114425bb815Sopenharmony_ci 1115425bb815Sopenharmony_ci```c 1116425bb815Sopenharmony_ci#include <stdio.h> 1117425bb815Sopenharmony_ci#include <string.h> 1118425bb815Sopenharmony_ci#include "jerryscript.h" 1119425bb815Sopenharmony_ci 1120425bb815Sopenharmony_ciint 1121425bb815Sopenharmony_cimain (void) 1122425bb815Sopenharmony_ci{ 1123425bb815Sopenharmony_ci int return_value = 1; 1124425bb815Sopenharmony_ci 1125425bb815Sopenharmony_ci /* Initialize engine */ 1126425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 1127425bb815Sopenharmony_ci 1128425bb815Sopenharmony_ci /* Parse the 'function (a,b) { return a + b; }' function */ 1129425bb815Sopenharmony_ci const char function_args[] = "a, b"; 1130425bb815Sopenharmony_ci const char function_source[] = "return a + b"; 1131425bb815Sopenharmony_ci 1132425bb815Sopenharmony_ci jerry_value_t parsed_function = jerry_parse_function (NULL, 1133425bb815Sopenharmony_ci 0, 1134425bb815Sopenharmony_ci (const jerry_char_t *) function_args, 1135425bb815Sopenharmony_ci strlen (function_args), 1136425bb815Sopenharmony_ci (const jerry_char_t *) function_source, 1137425bb815Sopenharmony_ci strlen (function_source), 1138425bb815Sopenharmony_ci JERRY_PARSE_NO_OPTS); 1139425bb815Sopenharmony_ci 1140425bb815Sopenharmony_ci if (!jerry_value_is_error (parsed_function)) 1141425bb815Sopenharmony_ci { 1142425bb815Sopenharmony_ci /* Run the parsed function */ 1143425bb815Sopenharmony_ci jerry_value_t args[] = { 1144425bb815Sopenharmony_ci jerry_create_number (3), 1145425bb815Sopenharmony_ci jerry_create_number (55), 1146425bb815Sopenharmony_ci }; 1147425bb815Sopenharmony_ci jerry_size_t argc = sizeof (args) / sizeof (args[0]); 1148425bb815Sopenharmony_ci jerry_value_t ret_value = jerry_call_function (parsed_function, 1149425bb815Sopenharmony_ci jerry_create_undefined(), 1150425bb815Sopenharmony_ci args, 1151425bb815Sopenharmony_ci argc); 1152425bb815Sopenharmony_ci 1153425bb815Sopenharmony_ci /* Process result value */ 1154425bb815Sopenharmony_ci if (jerry_value_is_number (ret_value)) { 1155425bb815Sopenharmony_ci double value = jerry_get_number_value (ret_value); 1156425bb815Sopenharmony_ci printf ("Function result: %lf\n", value); 1157425bb815Sopenharmony_ci 1158425bb815Sopenharmony_ci return_value = !(value == (3 + 55)); 1159425bb815Sopenharmony_ci } 1160425bb815Sopenharmony_ci 1161425bb815Sopenharmony_ci /* Release the function arguments */ 1162425bb815Sopenharmony_ci for (jerry_size_t idx = 0; idx < argc; idx++) { 1163425bb815Sopenharmony_ci jerry_release_value (args[idx]); 1164425bb815Sopenharmony_ci } 1165425bb815Sopenharmony_ci 1166425bb815Sopenharmony_ci /* Returned value must be freed */ 1167425bb815Sopenharmony_ci jerry_release_value (ret_value); 1168425bb815Sopenharmony_ci } 1169425bb815Sopenharmony_ci 1170425bb815Sopenharmony_ci /* Parsed function must be freed */ 1171425bb815Sopenharmony_ci jerry_release_value (parsed_function); 1172425bb815Sopenharmony_ci 1173425bb815Sopenharmony_ci /* Cleanup engine */ 1174425bb815Sopenharmony_ci jerry_cleanup (); 1175425bb815Sopenharmony_ci 1176425bb815Sopenharmony_ci return return_value; 1177425bb815Sopenharmony_ci} 1178425bb815Sopenharmony_ci``` 1179425bb815Sopenharmony_ci 1180425bb815Sopenharmony_ci**See also** 1181425bb815Sopenharmony_ci 1182425bb815Sopenharmony_ci- [jerry_call_function](#jerry_call_function) 1183425bb815Sopenharmony_ci 1184425bb815Sopenharmony_ci 1185425bb815Sopenharmony_ci## jerry_run 1186425bb815Sopenharmony_ci 1187425bb815Sopenharmony_ci**Summary** 1188425bb815Sopenharmony_ci 1189425bb815Sopenharmony_ciRun an EcmaScript function created by `jerry_parse`. 1190425bb815Sopenharmony_ci 1191425bb815Sopenharmony_ci*Notes*: 1192425bb815Sopenharmony_ci - The code should be previously parsed with `jerry_parse`. 1193425bb815Sopenharmony_ci - Returned value must be freed with [jerry_release_value](#jerry_release_value) 1194425bb815Sopenharmony_ci when it is no longer needed. 1195425bb815Sopenharmony_ci 1196425bb815Sopenharmony_ci**Prototype** 1197425bb815Sopenharmony_ci 1198425bb815Sopenharmony_ci```c 1199425bb815Sopenharmony_cijerry_value_t 1200425bb815Sopenharmony_cijerry_run (const jerry_value_t func_val); 1201425bb815Sopenharmony_ci``` 1202425bb815Sopenharmony_ci 1203425bb815Sopenharmony_ci- `func_val` - function to run 1204425bb815Sopenharmony_ci- return value 1205425bb815Sopenharmony_ci - result of bytecode, if run was successful 1206425bb815Sopenharmony_ci - thrown error, otherwise 1207425bb815Sopenharmony_ci 1208425bb815Sopenharmony_ci**Example** 1209425bb815Sopenharmony_ci 1210425bb815Sopenharmony_ci[doctest]: # () 1211425bb815Sopenharmony_ci 1212425bb815Sopenharmony_ci```c 1213425bb815Sopenharmony_ci#include "jerryscript.h" 1214425bb815Sopenharmony_ci 1215425bb815Sopenharmony_ciint 1216425bb815Sopenharmony_cimain (void) 1217425bb815Sopenharmony_ci{ 1218425bb815Sopenharmony_ci const jerry_char_t script[] = "print ('Hello, World!');"; 1219425bb815Sopenharmony_ci 1220425bb815Sopenharmony_ci /* Initialize engine */ 1221425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 1222425bb815Sopenharmony_ci 1223425bb815Sopenharmony_ci /* Setup Global scope code */ 1224425bb815Sopenharmony_ci jerry_value_t parsed_code = jerry_parse (NULL, 0, script, sizeof (script) - 1, JERRY_PARSE_NO_OPTS); 1225425bb815Sopenharmony_ci 1226425bb815Sopenharmony_ci if (!jerry_value_is_error (parsed_code)) 1227425bb815Sopenharmony_ci { 1228425bb815Sopenharmony_ci /* Execute the parsed source code in the Global scope */ 1229425bb815Sopenharmony_ci jerry_value_t ret_value = jerry_run (parsed_code); 1230425bb815Sopenharmony_ci 1231425bb815Sopenharmony_ci /* Returned value must be freed */ 1232425bb815Sopenharmony_ci jerry_release_value (ret_value); 1233425bb815Sopenharmony_ci } 1234425bb815Sopenharmony_ci 1235425bb815Sopenharmony_ci /* Parsed source code must be freed */ 1236425bb815Sopenharmony_ci jerry_release_value (parsed_code); 1237425bb815Sopenharmony_ci 1238425bb815Sopenharmony_ci /* Cleanup engine */ 1239425bb815Sopenharmony_ci jerry_cleanup (); 1240425bb815Sopenharmony_ci} 1241425bb815Sopenharmony_ci``` 1242425bb815Sopenharmony_ci 1243425bb815Sopenharmony_ci**See also** 1244425bb815Sopenharmony_ci 1245425bb815Sopenharmony_ci- [jerry_parse](#jerry_parse) 1246425bb815Sopenharmony_ci 1247425bb815Sopenharmony_ci 1248425bb815Sopenharmony_ci## jerry_eval 1249425bb815Sopenharmony_ci 1250425bb815Sopenharmony_ci**Summary** 1251425bb815Sopenharmony_ci 1252425bb815Sopenharmony_ciPerform JavaScript `eval` function call (ECMA-262 v5.1 sec-15.1.2.1). 1253425bb815Sopenharmony_ci 1254425bb815Sopenharmony_ci*Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 1255425bb815Sopenharmony_ciis no longer needed. 1256425bb815Sopenharmony_ci 1257425bb815Sopenharmony_ci**Prototype** 1258425bb815Sopenharmony_ci 1259425bb815Sopenharmony_ci```c 1260425bb815Sopenharmony_cijerry_value_t 1261425bb815Sopenharmony_cijerry_eval (const jerry_char_t *source_p, 1262425bb815Sopenharmony_ci size_t source_size, 1263425bb815Sopenharmony_ci uint32_t parse_opts); 1264425bb815Sopenharmony_ci``` 1265425bb815Sopenharmony_ci 1266425bb815Sopenharmony_ci- `source_p` - source code to evaluate, it must be a valid utf8 string. 1267425bb815Sopenharmony_ci- `source_size` - length of the source code 1268425bb815Sopenharmony_ci- `parse_opts` - any combination of [jerry_parse_opts_t](#jerry_parse_opts_t) flags. 1269425bb815Sopenharmony_ci- return value - result of eval, may be an error value. 1270425bb815Sopenharmony_ci 1271425bb815Sopenharmony_ci**Example** 1272425bb815Sopenharmony_ci 1273425bb815Sopenharmony_ci```c 1274425bb815Sopenharmony_ci{ 1275425bb815Sopenharmony_ci jerry_value_t ret_val = jerry_eval (str_to_eval, 1276425bb815Sopenharmony_ci strlen (str_to_eval), 1277425bb815Sopenharmony_ci JERRY_PARSE_NO_OPTS); 1278425bb815Sopenharmony_ci} 1279425bb815Sopenharmony_ci``` 1280425bb815Sopenharmony_ci 1281425bb815Sopenharmony_ci**See also** 1282425bb815Sopenharmony_ci 1283425bb815Sopenharmony_ci- [jerry_create_external_function](#jerry_create_external_function) 1284425bb815Sopenharmony_ci- [jerry_external_handler_t](#jerry_external_handler_t) 1285425bb815Sopenharmony_ci 1286425bb815Sopenharmony_ci## jerry_run_all_enqueued_jobs 1287425bb815Sopenharmony_ci 1288425bb815Sopenharmony_ci**Summary** 1289425bb815Sopenharmony_ci 1290425bb815Sopenharmony_ciRun enqueued Promise jobs until the first thrown error or until all get executed. 1291425bb815Sopenharmony_ci 1292425bb815Sopenharmony_ci*Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 1293425bb815Sopenharmony_ciis no longer needed. 1294425bb815Sopenharmony_ci 1295425bb815Sopenharmony_ci**Prototype** 1296425bb815Sopenharmony_ci 1297425bb815Sopenharmony_ci```c 1298425bb815Sopenharmony_cijerry_value_t 1299425bb815Sopenharmony_cijerry_run_all_enqueued_jobs (void) 1300425bb815Sopenharmony_ci``` 1301425bb815Sopenharmony_ci 1302425bb815Sopenharmony_ci- return value - result of last executed job, may be error value. 1303425bb815Sopenharmony_ci 1304425bb815Sopenharmony_ci*New in version 2.0*. 1305425bb815Sopenharmony_ci 1306425bb815Sopenharmony_ci**Example** 1307425bb815Sopenharmony_ci 1308425bb815Sopenharmony_ci[doctest]: # () 1309425bb815Sopenharmony_ci 1310425bb815Sopenharmony_ci```c 1311425bb815Sopenharmony_ci#include "jerryscript.h" 1312425bb815Sopenharmony_ci 1313425bb815Sopenharmony_ciint 1314425bb815Sopenharmony_cimain (void) 1315425bb815Sopenharmony_ci{ 1316425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 1317425bb815Sopenharmony_ci 1318425bb815Sopenharmony_ci const jerry_char_t script[] = "new Promise(function(f,r) { f('Hello, World!'); }).then(function(x) { print(x); });"; 1319425bb815Sopenharmony_ci 1320425bb815Sopenharmony_ci jerry_value_t parsed_code = jerry_parse (NULL, 0, script, sizeof (script) - 1, JERRY_PARSE_NO_OPTS); 1321425bb815Sopenharmony_ci jerry_value_t script_value = jerry_run (parsed_code); 1322425bb815Sopenharmony_ci jerry_value_t job_value = jerry_run_all_enqueued_jobs (); 1323425bb815Sopenharmony_ci 1324425bb815Sopenharmony_ci jerry_release_value (job_value); 1325425bb815Sopenharmony_ci jerry_release_value (script_value); 1326425bb815Sopenharmony_ci jerry_release_value (parsed_code); 1327425bb815Sopenharmony_ci 1328425bb815Sopenharmony_ci jerry_cleanup (); 1329425bb815Sopenharmony_ci return 0; 1330425bb815Sopenharmony_ci} 1331425bb815Sopenharmony_ci``` 1332425bb815Sopenharmony_ci 1333425bb815Sopenharmony_ci 1334425bb815Sopenharmony_ci# Get the global context 1335425bb815Sopenharmony_ci 1336425bb815Sopenharmony_ci## jerry_get_global_object 1337425bb815Sopenharmony_ci 1338425bb815Sopenharmony_ci**Summary** 1339425bb815Sopenharmony_ci 1340425bb815Sopenharmony_ciGet the Global object. 1341425bb815Sopenharmony_ci 1342425bb815Sopenharmony_ci*Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 1343425bb815Sopenharmony_ciis no longer needed. 1344425bb815Sopenharmony_ci 1345425bb815Sopenharmony_ci**Prototype** 1346425bb815Sopenharmony_ci 1347425bb815Sopenharmony_ci```c 1348425bb815Sopenharmony_cijerry_value_t 1349425bb815Sopenharmony_cijerry_get_global_object (void); 1350425bb815Sopenharmony_ci``` 1351425bb815Sopenharmony_ci 1352425bb815Sopenharmony_ci- return value - api value of global object 1353425bb815Sopenharmony_ci 1354425bb815Sopenharmony_ci**Example** 1355425bb815Sopenharmony_ci 1356425bb815Sopenharmony_ci```c 1357425bb815Sopenharmony_ci{ 1358425bb815Sopenharmony_ci jerry_value_t glob_obj_val = jerry_get_global_object (); 1359425bb815Sopenharmony_ci 1360425bb815Sopenharmony_ci ... // Do something with global object, ex: add properties 1361425bb815Sopenharmony_ci 1362425bb815Sopenharmony_ci jerry_release_value (glob_obj_val); 1363425bb815Sopenharmony_ci} 1364425bb815Sopenharmony_ci``` 1365425bb815Sopenharmony_ci 1366425bb815Sopenharmony_ci**See also** 1367425bb815Sopenharmony_ci 1368425bb815Sopenharmony_ci- [jerry_release_value](#jerry_release_value) 1369425bb815Sopenharmony_ci- [jerry_define_own_property](#jerry_define_own_property) 1370425bb815Sopenharmony_ci 1371425bb815Sopenharmony_ci 1372425bb815Sopenharmony_ci# Checker functions 1373425bb815Sopenharmony_ci 1374425bb815Sopenharmony_ciFunctions to check the type of an API value ([jerry_value_t](#jerry_value_t)). 1375425bb815Sopenharmony_ci 1376425bb815Sopenharmony_ci## jerry_value_is_abort 1377425bb815Sopenharmony_ci 1378425bb815Sopenharmony_ci**Summary** 1379425bb815Sopenharmony_ci 1380425bb815Sopenharmony_ciReturns whether the given `jerry_value_t` has the error and abort value set. 1381425bb815Sopenharmony_ci 1382425bb815Sopenharmony_ci**Prototype** 1383425bb815Sopenharmony_ci 1384425bb815Sopenharmony_ci```c 1385425bb815Sopenharmony_cibool 1386425bb815Sopenharmony_cijerry_value_is_abort (const jerry_value_t value); 1387425bb815Sopenharmony_ci``` 1388425bb815Sopenharmony_ci 1389425bb815Sopenharmony_ci- `value` - api value 1390425bb815Sopenharmony_ci- return value 1391425bb815Sopenharmony_ci - true, if the given `jerry_value_t` has the error and abort value set 1392425bb815Sopenharmony_ci - false, otherwise 1393425bb815Sopenharmony_ci 1394425bb815Sopenharmony_ci*New in version 2.0*. 1395425bb815Sopenharmony_ci 1396425bb815Sopenharmony_ci**Example** 1397425bb815Sopenharmony_ci 1398425bb815Sopenharmony_ci```c 1399425bb815Sopenharmony_ci{ 1400425bb815Sopenharmony_ci jerry_value_t value; 1401425bb815Sopenharmony_ci ... // create or acquire value 1402425bb815Sopenharmony_ci 1403425bb815Sopenharmony_ci if (jerry_value_is_abort (value)) 1404425bb815Sopenharmony_ci { 1405425bb815Sopenharmony_ci ... 1406425bb815Sopenharmony_ci } 1407425bb815Sopenharmony_ci 1408425bb815Sopenharmony_ci jerry_release_value (value); 1409425bb815Sopenharmony_ci} 1410425bb815Sopenharmony_ci``` 1411425bb815Sopenharmony_ci 1412425bb815Sopenharmony_ci**See also** 1413425bb815Sopenharmony_ci 1414425bb815Sopenharmony_ci- [jerry_value_t](#jerry_value_t) 1415425bb815Sopenharmony_ci- [jerry_value_is_error](#jerry_value_is_error) 1416425bb815Sopenharmony_ci 1417425bb815Sopenharmony_ci## jerry_value_is_array 1418425bb815Sopenharmony_ci 1419425bb815Sopenharmony_ci**Summary** 1420425bb815Sopenharmony_ci 1421425bb815Sopenharmony_ciReturns whether the given `jerry_value_t` is an array. 1422425bb815Sopenharmony_ci 1423425bb815Sopenharmony_ci**Prototype** 1424425bb815Sopenharmony_ci 1425425bb815Sopenharmony_ci```c 1426425bb815Sopenharmony_cibool 1427425bb815Sopenharmony_cijerry_value_is_array (const jerry_value_t value) 1428425bb815Sopenharmony_ci``` 1429425bb815Sopenharmony_ci 1430425bb815Sopenharmony_ci- `value` - api value 1431425bb815Sopenharmony_ci- return value 1432425bb815Sopenharmony_ci - true, if the given `jerry_value_t` is an array 1433425bb815Sopenharmony_ci - false, otherwise 1434425bb815Sopenharmony_ci 1435425bb815Sopenharmony_ci**Example** 1436425bb815Sopenharmony_ci 1437425bb815Sopenharmony_ci```c 1438425bb815Sopenharmony_ci{ 1439425bb815Sopenharmony_ci jerry_value_t value; 1440425bb815Sopenharmony_ci ... // create or acquire value 1441425bb815Sopenharmony_ci 1442425bb815Sopenharmony_ci if (jerry_value_is_array (value)) 1443425bb815Sopenharmony_ci { 1444425bb815Sopenharmony_ci ... 1445425bb815Sopenharmony_ci } 1446425bb815Sopenharmony_ci 1447425bb815Sopenharmony_ci jerry_release_value (value); 1448425bb815Sopenharmony_ci} 1449425bb815Sopenharmony_ci``` 1450425bb815Sopenharmony_ci 1451425bb815Sopenharmony_ci**See also** 1452425bb815Sopenharmony_ci 1453425bb815Sopenharmony_ci- [jerry_release_value](#jerry_release_value) 1454425bb815Sopenharmony_ci 1455425bb815Sopenharmony_ci## jerry_value_is_arraybuffer 1456425bb815Sopenharmony_ci 1457425bb815Sopenharmony_ci**Summary** 1458425bb815Sopenharmony_ci 1459425bb815Sopenharmony_ciReturns whether the given `jerry_value_t` is an ArrayBuffer object. 1460425bb815Sopenharmony_ci 1461425bb815Sopenharmony_ci*Notes*: 1462425bb815Sopenharmony_ci- This API depends on a build option (`JERRY_ES2015_BUILTIN_TYPEDARRAY`) and can be checked 1463425bb815Sopenharmony_ci in runtime with the `JERRY_FEATURE_TYPEDARRAY` feature enum value, 1464425bb815Sopenharmony_ci see: [jerry_is_feature_enabled](#jerry_is_feature_enabled). 1465425bb815Sopenharmony_ci- The ES2015-subset profile enables this by default. 1466425bb815Sopenharmony_ci 1467425bb815Sopenharmony_ci**Prototype** 1468425bb815Sopenharmony_ci 1469425bb815Sopenharmony_ci```c 1470425bb815Sopenharmony_cibool 1471425bb815Sopenharmony_cijerry_value_is_arraybuffer (const jerry_value_t value) 1472425bb815Sopenharmony_ci``` 1473425bb815Sopenharmony_ci 1474425bb815Sopenharmony_ci- `value` - api value to check. 1475425bb815Sopenharmony_ci- return value 1476425bb815Sopenharmony_ci - true, if the given `jerry_value_t` is an ArrayBuffer object. 1477425bb815Sopenharmony_ci - false, otherwise 1478425bb815Sopenharmony_ci 1479425bb815Sopenharmony_ci*New in version 2.0*. 1480425bb815Sopenharmony_ci 1481425bb815Sopenharmony_ci**Example** 1482425bb815Sopenharmony_ci 1483425bb815Sopenharmony_ci```c 1484425bb815Sopenharmony_ci{ 1485425bb815Sopenharmony_ci jerry_value_t value; 1486425bb815Sopenharmony_ci ... // create or acquire value 1487425bb815Sopenharmony_ci 1488425bb815Sopenharmony_ci if (jerry_value_is_arraybuffer (value)) 1489425bb815Sopenharmony_ci { 1490425bb815Sopenharmony_ci ... 1491425bb815Sopenharmony_ci } 1492425bb815Sopenharmony_ci 1493425bb815Sopenharmony_ci jerry_release_value (value); 1494425bb815Sopenharmony_ci} 1495425bb815Sopenharmony_ci``` 1496425bb815Sopenharmony_ci 1497425bb815Sopenharmony_ci**See also** 1498425bb815Sopenharmony_ci 1499425bb815Sopenharmony_ci- [jerry_create_arraybuffer](#jerry_create_arraybuffer) 1500425bb815Sopenharmony_ci- [jerry_create_arraybuffer_external](#jerry_create_arraybuffer_external) 1501425bb815Sopenharmony_ci 1502425bb815Sopenharmony_ci 1503425bb815Sopenharmony_ci## jerry_value_is_boolean 1504425bb815Sopenharmony_ci 1505425bb815Sopenharmony_ci**Summary** 1506425bb815Sopenharmony_ci 1507425bb815Sopenharmony_ciReturns whether the given `jerry_value_t` is a boolean value. 1508425bb815Sopenharmony_ci 1509425bb815Sopenharmony_ci**Prototype** 1510425bb815Sopenharmony_ci 1511425bb815Sopenharmony_ci```c 1512425bb815Sopenharmony_cibool 1513425bb815Sopenharmony_cijerry_value_is_boolean (const jerry_value_t value) 1514425bb815Sopenharmony_ci``` 1515425bb815Sopenharmony_ci 1516425bb815Sopenharmony_ci- `value` - api value 1517425bb815Sopenharmony_ci- return value 1518425bb815Sopenharmony_ci - true, if the given `jerry_value_t` is a boolean value 1519425bb815Sopenharmony_ci - false, otherwise 1520425bb815Sopenharmony_ci 1521425bb815Sopenharmony_ci**Example** 1522425bb815Sopenharmony_ci 1523425bb815Sopenharmony_ci```c 1524425bb815Sopenharmony_ci{ 1525425bb815Sopenharmony_ci jerry_value_t value; 1526425bb815Sopenharmony_ci ... // create or acquire value 1527425bb815Sopenharmony_ci 1528425bb815Sopenharmony_ci if (jerry_value_is_boolean (value)) 1529425bb815Sopenharmony_ci { 1530425bb815Sopenharmony_ci ... 1531425bb815Sopenharmony_ci } 1532425bb815Sopenharmony_ci 1533425bb815Sopenharmony_ci jerry_release_value (value); 1534425bb815Sopenharmony_ci} 1535425bb815Sopenharmony_ci``` 1536425bb815Sopenharmony_ci 1537425bb815Sopenharmony_ci**See also** 1538425bb815Sopenharmony_ci 1539425bb815Sopenharmony_ci- [jerry_release_value](#jerry_release_value) 1540425bb815Sopenharmony_ci 1541425bb815Sopenharmony_ci 1542425bb815Sopenharmony_ci## jerry_value_is_constructor 1543425bb815Sopenharmony_ci 1544425bb815Sopenharmony_ci**Summary** 1545425bb815Sopenharmony_ci 1546425bb815Sopenharmony_ciReturns whether the given `jerry_value_t` is a constructor function. 1547425bb815Sopenharmony_ci 1548425bb815Sopenharmony_ci**Prototype** 1549425bb815Sopenharmony_ci 1550425bb815Sopenharmony_ci```c 1551425bb815Sopenharmony_cibool 1552425bb815Sopenharmony_cijerry_value_is_constructor (const jerry_value_t value) 1553425bb815Sopenharmony_ci``` 1554425bb815Sopenharmony_ci 1555425bb815Sopenharmony_ci- `value` - api value 1556425bb815Sopenharmony_ci- return value 1557425bb815Sopenharmony_ci - true, if the given `jerry_value_t` is a constructor 1558425bb815Sopenharmony_ci - false, otherwise 1559425bb815Sopenharmony_ci 1560425bb815Sopenharmony_ci**Example** 1561425bb815Sopenharmony_ci 1562425bb815Sopenharmony_ci```c 1563425bb815Sopenharmony_ci{ 1564425bb815Sopenharmony_ci jerry_value_t value; 1565425bb815Sopenharmony_ci ... // create or acquire value 1566425bb815Sopenharmony_ci 1567425bb815Sopenharmony_ci if (jerry_value_is_constructor (value)) 1568425bb815Sopenharmony_ci { 1569425bb815Sopenharmony_ci ... 1570425bb815Sopenharmony_ci } 1571425bb815Sopenharmony_ci 1572425bb815Sopenharmony_ci jerry_release_value (value); 1573425bb815Sopenharmony_ci} 1574425bb815Sopenharmony_ci``` 1575425bb815Sopenharmony_ci 1576425bb815Sopenharmony_ci**See also** 1577425bb815Sopenharmony_ci 1578425bb815Sopenharmony_ci- [jerry_release_value](#jerry_release_value) 1579425bb815Sopenharmony_ci 1580425bb815Sopenharmony_ci## jerry_value_is_dataview 1581425bb815Sopenharmony_ci 1582425bb815Sopenharmony_ci**Summary** 1583425bb815Sopenharmony_ci 1584425bb815Sopenharmony_ciReturns whether the given `jerry_value_t` is a DataView object value. 1585425bb815Sopenharmony_ci 1586425bb815Sopenharmony_ci*Notes*: 1587425bb815Sopenharmony_ci- This API depends on a build option (`JERRY_ES2015_BUILTIN_DATAVIEW`) and can be checked 1588425bb815Sopenharmony_ci in runtime with the `JERRY_FEATURE_DATAVIEW` feature enum value, 1589425bb815Sopenharmony_ci see: [jerry_is_feature_enabled](#jerry_is_feature_enabled). 1590425bb815Sopenharmony_ci- The ES2015-subset profile enables this by default. 1591425bb815Sopenharmony_ci 1592425bb815Sopenharmony_ci**Prototype** 1593425bb815Sopenharmony_ci 1594425bb815Sopenharmony_ci```c 1595425bb815Sopenharmony_cibool 1596425bb815Sopenharmony_cijerry_value_is_dataview (const jerry_value_t value) 1597425bb815Sopenharmony_ci``` 1598425bb815Sopenharmony_ci 1599425bb815Sopenharmony_ci- `value` - API value 1600425bb815Sopenharmony_ci- return value 1601425bb815Sopenharmony_ci - true, if the given `jerry_value_t` is a DataView object 1602425bb815Sopenharmony_ci - false, otherwise 1603425bb815Sopenharmony_ci 1604425bb815Sopenharmony_ci*New in version 2.0*. 1605425bb815Sopenharmony_ci 1606425bb815Sopenharmony_ci**Example** 1607425bb815Sopenharmony_ci 1608425bb815Sopenharmony_ci[doctest]: # () 1609425bb815Sopenharmony_ci 1610425bb815Sopenharmony_ci```c 1611425bb815Sopenharmony_ci#include "jerryscript.h" 1612425bb815Sopenharmony_ci 1613425bb815Sopenharmony_ciint 1614425bb815Sopenharmony_cimain (void) 1615425bb815Sopenharmony_ci{ 1616425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 1617425bb815Sopenharmony_ci 1618425bb815Sopenharmony_ci jerry_value_t arraybuffer = jerry_create_arraybuffer (16); 1619425bb815Sopenharmony_ci jerry_value_t dataview = jerry_create_dataview (arraybuffer, 0, 16); 1620425bb815Sopenharmony_ci 1621425bb815Sopenharmony_ci if (jerry_value_is_dataview (dataview)) 1622425bb815Sopenharmony_ci { 1623425bb815Sopenharmony_ci // usage of dataview 1624425bb815Sopenharmony_ci } 1625425bb815Sopenharmony_ci 1626425bb815Sopenharmony_ci jerry_release_value (dataview); 1627425bb815Sopenharmony_ci jerry_release_value (arraybuffer); 1628425bb815Sopenharmony_ci 1629425bb815Sopenharmony_ci jerry_cleanup (); 1630425bb815Sopenharmony_ci return 0; 1631425bb815Sopenharmony_ci} 1632425bb815Sopenharmony_ci``` 1633425bb815Sopenharmony_ci 1634425bb815Sopenharmony_ci**See also** 1635425bb815Sopenharmony_ci 1636425bb815Sopenharmony_ci- [jerry_release_value](#jerry_release_value) 1637425bb815Sopenharmony_ci- [jerry_create_dataview](#jerry_create_dataview) 1638425bb815Sopenharmony_ci 1639425bb815Sopenharmony_ci 1640425bb815Sopenharmony_ci## jerry_value_is_error 1641425bb815Sopenharmony_ci 1642425bb815Sopenharmony_ci**Summary** 1643425bb815Sopenharmony_ci 1644425bb815Sopenharmony_ciReturns whether the given `jerry_value_t` is error value. 1645425bb815Sopenharmony_ci 1646425bb815Sopenharmony_ci**Prototype** 1647425bb815Sopenharmony_ci 1648425bb815Sopenharmony_ci```c 1649425bb815Sopenharmony_cibool 1650425bb815Sopenharmony_cijerry_value_is_error (const jerry_value_t value); 1651425bb815Sopenharmony_ci``` 1652425bb815Sopenharmony_ci 1653425bb815Sopenharmony_ci- `value` - api value 1654425bb815Sopenharmony_ci- return value 1655425bb815Sopenharmony_ci - true, if the given `jerry_value_t` is error value. 1656425bb815Sopenharmony_ci - false, otherwise 1657425bb815Sopenharmony_ci 1658425bb815Sopenharmony_ci*New in version 2.0*. 1659425bb815Sopenharmony_ci 1660425bb815Sopenharmony_ci**Example** 1661425bb815Sopenharmony_ci 1662425bb815Sopenharmony_ci```c 1663425bb815Sopenharmony_ci{ 1664425bb815Sopenharmony_ci jerry_value_t value; 1665425bb815Sopenharmony_ci ... // create or acquire value 1666425bb815Sopenharmony_ci 1667425bb815Sopenharmony_ci if (jerry_value_is_error (value)) 1668425bb815Sopenharmony_ci { 1669425bb815Sopenharmony_ci ... 1670425bb815Sopenharmony_ci } 1671425bb815Sopenharmony_ci 1672425bb815Sopenharmony_ci jerry_release_value (value); 1673425bb815Sopenharmony_ci} 1674425bb815Sopenharmony_ci``` 1675425bb815Sopenharmony_ci 1676425bb815Sopenharmony_ci**See also** 1677425bb815Sopenharmony_ci 1678425bb815Sopenharmony_ci- [jerry_value_t](#jerry_value_t) 1679425bb815Sopenharmony_ci- [jerry_value_is_abort](#jerry_value_is_abort) 1680425bb815Sopenharmony_ci 1681425bb815Sopenharmony_ci## jerry_value_is_function 1682425bb815Sopenharmony_ci 1683425bb815Sopenharmony_ci**Summary** 1684425bb815Sopenharmony_ci 1685425bb815Sopenharmony_ciReturns whether the given `jerry_value_t` is a function. 1686425bb815Sopenharmony_ci 1687425bb815Sopenharmony_ci**Prototype** 1688425bb815Sopenharmony_ci 1689425bb815Sopenharmony_ci```c 1690425bb815Sopenharmony_cibool 1691425bb815Sopenharmony_cijerry_value_is_function (const jerry_value_t value) 1692425bb815Sopenharmony_ci``` 1693425bb815Sopenharmony_ci 1694425bb815Sopenharmony_ci- `value` - api value 1695425bb815Sopenharmony_ci- return value 1696425bb815Sopenharmony_ci - true, if the given `jerry_value_t` is a function 1697425bb815Sopenharmony_ci - false, otherwise 1698425bb815Sopenharmony_ci 1699425bb815Sopenharmony_ci**Example** 1700425bb815Sopenharmony_ci 1701425bb815Sopenharmony_ci```c 1702425bb815Sopenharmony_ci{ 1703425bb815Sopenharmony_ci jerry_value_t value; 1704425bb815Sopenharmony_ci ... // create or acquire value 1705425bb815Sopenharmony_ci 1706425bb815Sopenharmony_ci if (jerry_value_is_function (value)) 1707425bb815Sopenharmony_ci { 1708425bb815Sopenharmony_ci ... 1709425bb815Sopenharmony_ci } 1710425bb815Sopenharmony_ci 1711425bb815Sopenharmony_ci jerry_release_value (value); 1712425bb815Sopenharmony_ci} 1713425bb815Sopenharmony_ci``` 1714425bb815Sopenharmony_ci 1715425bb815Sopenharmony_ci**See also** 1716425bb815Sopenharmony_ci 1717425bb815Sopenharmony_ci- [jerry_release_value](#jerry_release_value) 1718425bb815Sopenharmony_ci 1719425bb815Sopenharmony_ci 1720425bb815Sopenharmony_ci## jerry_value_is_number 1721425bb815Sopenharmony_ci 1722425bb815Sopenharmony_ci**Summary** 1723425bb815Sopenharmony_ci 1724425bb815Sopenharmony_ciReturns whether the given `jerry_value_t` is a number. 1725425bb815Sopenharmony_ci 1726425bb815Sopenharmony_ci**Prototype** 1727425bb815Sopenharmony_ci 1728425bb815Sopenharmony_ci```c 1729425bb815Sopenharmony_cibool 1730425bb815Sopenharmony_cijerry_value_is_number (const jerry_value_t value) 1731425bb815Sopenharmony_ci``` 1732425bb815Sopenharmony_ci 1733425bb815Sopenharmony_ci- `value` - api value 1734425bb815Sopenharmony_ci- return value 1735425bb815Sopenharmony_ci - true, if the given `jerry_value_t` is a number 1736425bb815Sopenharmony_ci - false, otherwise 1737425bb815Sopenharmony_ci 1738425bb815Sopenharmony_ci**Example** 1739425bb815Sopenharmony_ci 1740425bb815Sopenharmony_ci```c 1741425bb815Sopenharmony_ci{ 1742425bb815Sopenharmony_ci jerry_value_t value; 1743425bb815Sopenharmony_ci ... // create or acquire value 1744425bb815Sopenharmony_ci 1745425bb815Sopenharmony_ci if (jerry_value_is_number (value)) 1746425bb815Sopenharmony_ci { 1747425bb815Sopenharmony_ci ... 1748425bb815Sopenharmony_ci } 1749425bb815Sopenharmony_ci 1750425bb815Sopenharmony_ci jerry_release_value (value); 1751425bb815Sopenharmony_ci} 1752425bb815Sopenharmony_ci``` 1753425bb815Sopenharmony_ci 1754425bb815Sopenharmony_ci**See also** 1755425bb815Sopenharmony_ci 1756425bb815Sopenharmony_ci- [jerry_release_value](#jerry_release_value) 1757425bb815Sopenharmony_ci 1758425bb815Sopenharmony_ci 1759425bb815Sopenharmony_ci## jerry_value_is_null 1760425bb815Sopenharmony_ci 1761425bb815Sopenharmony_ci**Summary** 1762425bb815Sopenharmony_ci 1763425bb815Sopenharmony_ciReturns whether the given `jerry_value_t` is a null value. 1764425bb815Sopenharmony_ci 1765425bb815Sopenharmony_ci**Prototype** 1766425bb815Sopenharmony_ci 1767425bb815Sopenharmony_ci```c 1768425bb815Sopenharmony_cibool 1769425bb815Sopenharmony_cijerry_value_is_null (const jerry_value_t value) 1770425bb815Sopenharmony_ci``` 1771425bb815Sopenharmony_ci 1772425bb815Sopenharmony_ci- `value` - api value 1773425bb815Sopenharmony_ci- return value 1774425bb815Sopenharmony_ci - true, if the given `jerry_value_t` is a null 1775425bb815Sopenharmony_ci - false, otherwise 1776425bb815Sopenharmony_ci 1777425bb815Sopenharmony_ci**Example** 1778425bb815Sopenharmony_ci 1779425bb815Sopenharmony_ci```c 1780425bb815Sopenharmony_ci{ 1781425bb815Sopenharmony_ci jerry_value_t value; 1782425bb815Sopenharmony_ci ... // create or acquire value 1783425bb815Sopenharmony_ci 1784425bb815Sopenharmony_ci if (jerry_value_is_null (value)) 1785425bb815Sopenharmony_ci { 1786425bb815Sopenharmony_ci ... 1787425bb815Sopenharmony_ci } 1788425bb815Sopenharmony_ci 1789425bb815Sopenharmony_ci jerry_release_value (value); 1790425bb815Sopenharmony_ci} 1791425bb815Sopenharmony_ci``` 1792425bb815Sopenharmony_ci 1793425bb815Sopenharmony_ci**See also** 1794425bb815Sopenharmony_ci 1795425bb815Sopenharmony_ci- [jerry_release_value](#jerry_release_value) 1796425bb815Sopenharmony_ci 1797425bb815Sopenharmony_ci 1798425bb815Sopenharmony_ci## jerry_value_is_object 1799425bb815Sopenharmony_ci 1800425bb815Sopenharmony_ci**Summary** 1801425bb815Sopenharmony_ci 1802425bb815Sopenharmony_ciReturns whether the given `jerry_value_t` is an object value. 1803425bb815Sopenharmony_ci 1804425bb815Sopenharmony_ci**Prototype** 1805425bb815Sopenharmony_ci 1806425bb815Sopenharmony_ci```c 1807425bb815Sopenharmony_cibool 1808425bb815Sopenharmony_cijerry_value_is_object (const jerry_value_t value) 1809425bb815Sopenharmony_ci``` 1810425bb815Sopenharmony_ci 1811425bb815Sopenharmony_ci- `value` - api value 1812425bb815Sopenharmony_ci- return value 1813425bb815Sopenharmony_ci - true, if the given `jerry_value_t` is an object 1814425bb815Sopenharmony_ci - false, otherwise 1815425bb815Sopenharmony_ci 1816425bb815Sopenharmony_ci**Example** 1817425bb815Sopenharmony_ci 1818425bb815Sopenharmony_ci```c 1819425bb815Sopenharmony_ci{ 1820425bb815Sopenharmony_ci jerry_value_t value; 1821425bb815Sopenharmony_ci ... // create or acquire value 1822425bb815Sopenharmony_ci 1823425bb815Sopenharmony_ci if (jerry_value_is_object (value)) 1824425bb815Sopenharmony_ci { 1825425bb815Sopenharmony_ci ... 1826425bb815Sopenharmony_ci } 1827425bb815Sopenharmony_ci 1828425bb815Sopenharmony_ci jerry_release_value (value); 1829425bb815Sopenharmony_ci} 1830425bb815Sopenharmony_ci``` 1831425bb815Sopenharmony_ci 1832425bb815Sopenharmony_ci**See also** 1833425bb815Sopenharmony_ci 1834425bb815Sopenharmony_ci- [jerry_release_value](#jerry_release_value) 1835425bb815Sopenharmony_ci 1836425bb815Sopenharmony_ci 1837425bb815Sopenharmony_ci## jerry_value_is_promise 1838425bb815Sopenharmony_ci 1839425bb815Sopenharmony_ci**Summary** 1840425bb815Sopenharmony_ci 1841425bb815Sopenharmony_ciReturns whether the given `jerry_value_t` is a promise value. 1842425bb815Sopenharmony_ci 1843425bb815Sopenharmony_ci*Notes*: 1844425bb815Sopenharmony_ci- This API depends on a build option (`JERRY_ES2015_BUILTIN_PROMISE`) and can be checked 1845425bb815Sopenharmony_ci in runtime with the `JERRY_FEATURE_PROMISE` feature enum value, 1846425bb815Sopenharmony_ci see: [jerry_is_feature_enabled](#jerry_is_feature_enabled). 1847425bb815Sopenharmony_ci- The ES2015-subset profile enables this by default. 1848425bb815Sopenharmony_ci 1849425bb815Sopenharmony_ci 1850425bb815Sopenharmony_ci**Prototype** 1851425bb815Sopenharmony_ci 1852425bb815Sopenharmony_ci```c 1853425bb815Sopenharmony_cibool 1854425bb815Sopenharmony_cijerry_value_is_promise (const jerry_value_t value) 1855425bb815Sopenharmony_ci``` 1856425bb815Sopenharmony_ci 1857425bb815Sopenharmony_ci- `value` - api value 1858425bb815Sopenharmony_ci- return value 1859425bb815Sopenharmony_ci - true, if the given `jerry_value_t` is a promise 1860425bb815Sopenharmony_ci - false, otherwise 1861425bb815Sopenharmony_ci 1862425bb815Sopenharmony_ci*New in version 2.0*. 1863425bb815Sopenharmony_ci 1864425bb815Sopenharmony_ci**Example** 1865425bb815Sopenharmony_ci 1866425bb815Sopenharmony_ci```c 1867425bb815Sopenharmony_ci{ 1868425bb815Sopenharmony_ci jerry_value_t value; 1869425bb815Sopenharmony_ci ... // create or acquire value 1870425bb815Sopenharmony_ci 1871425bb815Sopenharmony_ci if (jerry_value_is_promise (value)) 1872425bb815Sopenharmony_ci { 1873425bb815Sopenharmony_ci ... 1874425bb815Sopenharmony_ci } 1875425bb815Sopenharmony_ci 1876425bb815Sopenharmony_ci jerry_release_value (value); 1877425bb815Sopenharmony_ci} 1878425bb815Sopenharmony_ci``` 1879425bb815Sopenharmony_ci 1880425bb815Sopenharmony_ci**See also** 1881425bb815Sopenharmony_ci 1882425bb815Sopenharmony_ci- [jerry_release_value](#jerry_release_value) 1883425bb815Sopenharmony_ci- [jerry_create_promise](#jerry_create_promise) 1884425bb815Sopenharmony_ci 1885425bb815Sopenharmony_ci 1886425bb815Sopenharmony_ci## jerry_value_is_proxy 1887425bb815Sopenharmony_ci 1888425bb815Sopenharmony_ci**Summary** 1889425bb815Sopenharmony_ci 1890425bb815Sopenharmony_ciReturns whether the given `jerry_value_t` is a proxy value. 1891425bb815Sopenharmony_ci 1892425bb815Sopenharmony_ci*Notes*: 1893425bb815Sopenharmony_ci- This API depends on a build option (`JERRY_ES2015_BUILTIN_PROXY`) and can be checked 1894425bb815Sopenharmony_ci in runtime with the `JERRY_FEATURE_PROXY` feature enum value, 1895425bb815Sopenharmony_ci see: [jerry_is_feature_enabled](#jerry_is_feature_enabled). 1896425bb815Sopenharmony_ci- The ES2015-subset profile enables this by default. 1897425bb815Sopenharmony_ci 1898425bb815Sopenharmony_ci 1899425bb815Sopenharmony_ci**Prototype** 1900425bb815Sopenharmony_ci 1901425bb815Sopenharmony_ci```c 1902425bb815Sopenharmony_cibool 1903425bb815Sopenharmony_cijerry_value_is_proxy (const jerry_value_t value) 1904425bb815Sopenharmony_ci``` 1905425bb815Sopenharmony_ci 1906425bb815Sopenharmony_ci- `value` - api value 1907425bb815Sopenharmony_ci- return value 1908425bb815Sopenharmony_ci - true, if the given `jerry_value_t` is a proxy object 1909425bb815Sopenharmony_ci - false, otherwise 1910425bb815Sopenharmony_ci 1911425bb815Sopenharmony_ci**Example** 1912425bb815Sopenharmony_ci 1913425bb815Sopenharmony_ci*New in version 2.3*. 1914425bb815Sopenharmony_ci 1915425bb815Sopenharmony_ci```c 1916425bb815Sopenharmony_ci{ 1917425bb815Sopenharmony_ci jerry_value_t value; 1918425bb815Sopenharmony_ci ... // create or acquire value 1919425bb815Sopenharmony_ci 1920425bb815Sopenharmony_ci if (jerry_value_is_proxy (value)) 1921425bb815Sopenharmony_ci { 1922425bb815Sopenharmony_ci ... 1923425bb815Sopenharmony_ci } 1924425bb815Sopenharmony_ci 1925425bb815Sopenharmony_ci jerry_release_value (value); 1926425bb815Sopenharmony_ci} 1927425bb815Sopenharmony_ci``` 1928425bb815Sopenharmony_ci 1929425bb815Sopenharmony_ci**See also** 1930425bb815Sopenharmony_ci 1931425bb815Sopenharmony_ci- [jerry_release_value](#jerry_release_value) 1932425bb815Sopenharmony_ci- [jerry_create_proxy](#jerry_create_proxy) 1933425bb815Sopenharmony_ci 1934425bb815Sopenharmony_ci 1935425bb815Sopenharmony_ci## jerry_value_is_string 1936425bb815Sopenharmony_ci 1937425bb815Sopenharmony_ci**Summary** 1938425bb815Sopenharmony_ci 1939425bb815Sopenharmony_ciReturns whether the given `jerry_value_t` is a string value. 1940425bb815Sopenharmony_ci 1941425bb815Sopenharmony_ci**Prototype** 1942425bb815Sopenharmony_ci 1943425bb815Sopenharmony_ci```c 1944425bb815Sopenharmony_cibool 1945425bb815Sopenharmony_cijerry_value_is_string (const jerry_value_t value) 1946425bb815Sopenharmony_ci``` 1947425bb815Sopenharmony_ci 1948425bb815Sopenharmony_ci- `value` - api value 1949425bb815Sopenharmony_ci- return value 1950425bb815Sopenharmony_ci - true, if the given `jerry_value_t` is a string 1951425bb815Sopenharmony_ci - false, otherwise 1952425bb815Sopenharmony_ci 1953425bb815Sopenharmony_ci**Example** 1954425bb815Sopenharmony_ci 1955425bb815Sopenharmony_ci```c 1956425bb815Sopenharmony_ci{ 1957425bb815Sopenharmony_ci jerry_value_t value; 1958425bb815Sopenharmony_ci ... // create or acquire value 1959425bb815Sopenharmony_ci 1960425bb815Sopenharmony_ci if (jerry_value_is_string (value)) 1961425bb815Sopenharmony_ci { 1962425bb815Sopenharmony_ci ... 1963425bb815Sopenharmony_ci } 1964425bb815Sopenharmony_ci 1965425bb815Sopenharmony_ci jerry_release_value (value); 1966425bb815Sopenharmony_ci} 1967425bb815Sopenharmony_ci``` 1968425bb815Sopenharmony_ci 1969425bb815Sopenharmony_ci**See also** 1970425bb815Sopenharmony_ci 1971425bb815Sopenharmony_ci- [jerry_release_value](#jerry_release_value) 1972425bb815Sopenharmony_ci 1973425bb815Sopenharmony_ci 1974425bb815Sopenharmony_ci## jerry_value_is_symbol 1975425bb815Sopenharmony_ci 1976425bb815Sopenharmony_ci**Summary** 1977425bb815Sopenharmony_ci 1978425bb815Sopenharmony_ciReturns whether the given `jerry_value_t` is a symbol value. 1979425bb815Sopenharmony_ci 1980425bb815Sopenharmony_ci*Notes*: 1981425bb815Sopenharmony_ci- This API depends on a build option (`JERRY_ES2015_BUILTIN_SYMBOL`) and can be checked 1982425bb815Sopenharmony_ci in runtime with the `JERRY_FEATURE_SYMBOL` feature enum value, 1983425bb815Sopenharmony_ci see: [jerry_is_feature_enabled](#jerry_is_feature_enabled). 1984425bb815Sopenharmony_ci- The ES2015-subset profile enables this by default. 1985425bb815Sopenharmony_ci 1986425bb815Sopenharmony_ci**Prototype** 1987425bb815Sopenharmony_ci 1988425bb815Sopenharmony_ci```c 1989425bb815Sopenharmony_cibool 1990425bb815Sopenharmony_cijerry_value_is_symbol (const jerry_value_t value) 1991425bb815Sopenharmony_ci``` 1992425bb815Sopenharmony_ci 1993425bb815Sopenharmony_ci- `value` - API value 1994425bb815Sopenharmony_ci- return value 1995425bb815Sopenharmony_ci - true, if the given `jerry_value_t` is a symbol 1996425bb815Sopenharmony_ci - false, otherwise 1997425bb815Sopenharmony_ci 1998425bb815Sopenharmony_ci*New in version 2.0*. 1999425bb815Sopenharmony_ci 2000425bb815Sopenharmony_ci**Example** 2001425bb815Sopenharmony_ci 2002425bb815Sopenharmony_ci[doctest]: # () 2003425bb815Sopenharmony_ci 2004425bb815Sopenharmony_ci```c 2005425bb815Sopenharmony_ci#include "jerryscript.h" 2006425bb815Sopenharmony_ci 2007425bb815Sopenharmony_ciint 2008425bb815Sopenharmony_cimain (void) 2009425bb815Sopenharmony_ci{ 2010425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 2011425bb815Sopenharmony_ci 2012425bb815Sopenharmony_ci jerry_value_t string_value = jerry_create_string ((const jerry_char_t *) "Symbol description string"); 2013425bb815Sopenharmony_ci jerry_value_t symbol_value = jerry_create_symbol (string_value); 2014425bb815Sopenharmony_ci 2015425bb815Sopenharmony_ci jerry_release_value (string_value); 2016425bb815Sopenharmony_ci 2017425bb815Sopenharmony_ci if (jerry_value_is_symbol (symbol_value)) 2018425bb815Sopenharmony_ci { 2019425bb815Sopenharmony_ci // usage of symbol_value 2020425bb815Sopenharmony_ci } 2021425bb815Sopenharmony_ci 2022425bb815Sopenharmony_ci jerry_release_value (symbol_value); 2023425bb815Sopenharmony_ci 2024425bb815Sopenharmony_ci jerry_cleanup (); 2025425bb815Sopenharmony_ci return 0; 2026425bb815Sopenharmony_ci} 2027425bb815Sopenharmony_ci``` 2028425bb815Sopenharmony_ci 2029425bb815Sopenharmony_ci**See also** 2030425bb815Sopenharmony_ci 2031425bb815Sopenharmony_ci- [jerry_release_value](#jerry_release_value) 2032425bb815Sopenharmony_ci- [jerry_create_symbol](#jerry_create_symbol) 2033425bb815Sopenharmony_ci 2034425bb815Sopenharmony_ci## jerry_value_is_typedarray 2035425bb815Sopenharmony_ci 2036425bb815Sopenharmony_ci**Summary** 2037425bb815Sopenharmony_ci 2038425bb815Sopenharmony_ciChecks whether the given `jerry_value_t` is a TypedArray object or not. 2039425bb815Sopenharmony_ci 2040425bb815Sopenharmony_ci*Notes*: 2041425bb815Sopenharmony_ci- This API depends on a build option (`JERRY_ES2015_BUILTIN_TYPEDARRAY`) and can be checked 2042425bb815Sopenharmony_ci in runtime with the `JERRY_FEATURE_TYPEDARRAY` feature enum value, 2043425bb815Sopenharmony_ci see: [jerry_is_feature_enabled](#jerry_is_feature_enabled). 2044425bb815Sopenharmony_ci- The ES2015-subset profile enables this by default. 2045425bb815Sopenharmony_ci 2046425bb815Sopenharmony_ci**Prototype** 2047425bb815Sopenharmony_ci 2048425bb815Sopenharmony_ci```c 2049425bb815Sopenharmony_cibool 2050425bb815Sopenharmony_cijerry_value_is_typedarray (const jerry_value_t value) 2051425bb815Sopenharmony_ci``` 2052425bb815Sopenharmony_ci 2053425bb815Sopenharmony_ci- `value` - object to check 2054425bb815Sopenharmony_ci- return value 2055425bb815Sopenharmony_ci - true, if the given `jerry_value_t` is a TypedArray object. 2056425bb815Sopenharmony_ci - false, otherwise 2057425bb815Sopenharmony_ci 2058425bb815Sopenharmony_ci*New in version 2.0*. 2059425bb815Sopenharmony_ci 2060425bb815Sopenharmony_ci**Example** 2061425bb815Sopenharmony_ci 2062425bb815Sopenharmony_ci[doctest]: # () 2063425bb815Sopenharmony_ci 2064425bb815Sopenharmony_ci```c 2065425bb815Sopenharmony_ci#include "jerryscript.h" 2066425bb815Sopenharmony_ci 2067425bb815Sopenharmony_ciint 2068425bb815Sopenharmony_cimain (void) 2069425bb815Sopenharmony_ci{ 2070425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 2071425bb815Sopenharmony_ci 2072425bb815Sopenharmony_ci jerry_value_t value = jerry_create_typedarray (JERRY_TYPEDARRAY_UINT16, 15); 2073425bb815Sopenharmony_ci 2074425bb815Sopenharmony_ci if (jerry_value_is_typedarray (value)) 2075425bb815Sopenharmony_ci { 2076425bb815Sopenharmony_ci /* "value" is a typedarray. */ 2077425bb815Sopenharmony_ci } 2078425bb815Sopenharmony_ci 2079425bb815Sopenharmony_ci jerry_release_value (value); 2080425bb815Sopenharmony_ci 2081425bb815Sopenharmony_ci jerry_cleanup (); 2082425bb815Sopenharmony_ci 2083425bb815Sopenharmony_ci return 0; 2084425bb815Sopenharmony_ci} 2085425bb815Sopenharmony_ci``` 2086425bb815Sopenharmony_ci 2087425bb815Sopenharmony_ci**See also** 2088425bb815Sopenharmony_ci 2089425bb815Sopenharmony_ci- [jerry_create_typedarray](#jerry_create_typedarray) 2090425bb815Sopenharmony_ci 2091425bb815Sopenharmony_ci 2092425bb815Sopenharmony_ci## jerry_get_container_type 2093425bb815Sopenharmony_ci 2094425bb815Sopenharmony_ci**Summary** 2095425bb815Sopenharmony_ci 2096425bb815Sopenharmony_ciChecks whether the given `jerry_value_t` is the given `jerry_container_type_t` type container object. 2097425bb815Sopenharmony_ci 2098425bb815Sopenharmony_ci*Notes* 2099425bb815Sopenharmony_ci- This API function depends on a build option (`JERRY_ES2015_BUILTIN_CONTAINER`) and can be checked 2100425bb815Sopenharmony_ci runtime with the `JERRY_FEATURE_MAP, JERRY_FEATURE_SET, JERRY_FEATURE_WEAKMAP, JERRY_FEATURE_WEAKSET` 2101425bb815Sopenharmony_ci feature enum values. 2102425bb815Sopenharmony_ci see: [jerry_is_feature_enabled](#jerry_is_feature_enabled). 2103425bb815Sopenharmony_ci- The ES2015-subset profile enables this by default. 2104425bb815Sopenharmony_ci 2105425bb815Sopenharmony_ci*New in version 2.3*. 2106425bb815Sopenharmony_ci 2107425bb815Sopenharmony_ci**Prototype** 2108425bb815Sopenharmony_ci 2109425bb815Sopenharmony_ci```c 2110425bb815Sopenharmony_cijerry_container_type_t 2111425bb815Sopenharmony_cijerry_get_container_type (const jerry_value_t value) 2112425bb815Sopenharmony_ci``` 2113425bb815Sopenharmony_ci 2114425bb815Sopenharmony_ci- `value` - Container object 2115425bb815Sopenharmony_ci- return value 2116425bb815Sopenharmony_ci - The corresponding enum value of `jerry_container_type_t`, or `JERRY_CONTAINER_TYPE_INVALID` if the container 2117425bb815Sopenharmony_ci was not a valid container object. 2118425bb815Sopenharmony_ci**Example** 2119425bb815Sopenharmony_ci 2120425bb815Sopenharmony_ci[doctest]: # () 2121425bb815Sopenharmony_ci 2122425bb815Sopenharmony_ci```c 2123425bb815Sopenharmony_ci#include "jerryscript.h" 2124425bb815Sopenharmony_ciint 2125425bb815Sopenharmony_cimain (void) 2126425bb815Sopenharmony_ci{ 2127425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 2128425bb815Sopenharmony_ci 2129425bb815Sopenharmony_ci jerry_value_t value = jerry_create_container (JERRY_CONTAINER_TYPE_MAP, NULL, 0); 2130425bb815Sopenharmony_ci 2131425bb815Sopenharmony_ci if (jerry_get_container_type (value) == JERRY_CONTAINER_TYPE_MAP) 2132425bb815Sopenharmony_ci { 2133425bb815Sopenharmony_ci /* "value" is a map. */ 2134425bb815Sopenharmony_ci } 2135425bb815Sopenharmony_ci 2136425bb815Sopenharmony_ci jerry_release_value (value); 2137425bb815Sopenharmony_ci 2138425bb815Sopenharmony_ci jerry_cleanup (); 2139425bb815Sopenharmony_ci 2140425bb815Sopenharmony_ci return 0; 2141425bb815Sopenharmony_ci} 2142425bb815Sopenharmony_ci``` 2143425bb815Sopenharmony_ci 2144425bb815Sopenharmony_ci**See also** 2145425bb815Sopenharmony_ci 2146425bb815Sopenharmony_ci- [jerry_create_container](#jerry_create_container) 2147425bb815Sopenharmony_ci- [jerry_container_type_t](#jerry_container_type_t) 2148425bb815Sopenharmony_ci 2149425bb815Sopenharmony_ci 2150425bb815Sopenharmony_ci## jerry_value_is_undefined 2151425bb815Sopenharmony_ci 2152425bb815Sopenharmony_ci**Summary** 2153425bb815Sopenharmony_ci 2154425bb815Sopenharmony_ciReturns whether the given `jerry_value_t` is an undefined value. 2155425bb815Sopenharmony_ci 2156425bb815Sopenharmony_ci**Prototype** 2157425bb815Sopenharmony_ci 2158425bb815Sopenharmony_ci```c 2159425bb815Sopenharmony_cibool 2160425bb815Sopenharmony_cijerry_value_is_undefined (const jerry_value_t value) 2161425bb815Sopenharmony_ci``` 2162425bb815Sopenharmony_ci 2163425bb815Sopenharmony_ci- `value` - api value 2164425bb815Sopenharmony_ci- return value 2165425bb815Sopenharmony_ci - true, if the given `jerry_value_t` is an undefined value 2166425bb815Sopenharmony_ci - false, otherwise 2167425bb815Sopenharmony_ci 2168425bb815Sopenharmony_ci**Example** 2169425bb815Sopenharmony_ci 2170425bb815Sopenharmony_ci```c 2171425bb815Sopenharmony_ci{ 2172425bb815Sopenharmony_ci jerry_value_t value; 2173425bb815Sopenharmony_ci ... // create or acquire value 2174425bb815Sopenharmony_ci 2175425bb815Sopenharmony_ci if (jerry_value_is_undefined (value)) 2176425bb815Sopenharmony_ci { 2177425bb815Sopenharmony_ci ... 2178425bb815Sopenharmony_ci } 2179425bb815Sopenharmony_ci 2180425bb815Sopenharmony_ci jerry_release_value (value); 2181425bb815Sopenharmony_ci} 2182425bb815Sopenharmony_ci``` 2183425bb815Sopenharmony_ci 2184425bb815Sopenharmony_ci**See also** 2185425bb815Sopenharmony_ci 2186425bb815Sopenharmony_ci- [jerry_release_value](#jerry_release_value) 2187425bb815Sopenharmony_ci 2188425bb815Sopenharmony_ci## jerry_value_get_type 2189425bb815Sopenharmony_ci 2190425bb815Sopenharmony_ci**Summary** 2191425bb815Sopenharmony_ci 2192425bb815Sopenharmony_ciReturns the JavaScript type 2193425bb815Sopenharmony_cifor a given value as a [jerry_type_t](#jerry_type_t) enum value. 2194425bb815Sopenharmony_ci 2195425bb815Sopenharmony_ciThis is a similar operation to the 'typeof' operator 2196425bb815Sopenharmony_ciin the standard with an exception that the 'null' 2197425bb815Sopenharmony_civalue has its own enum value. 2198425bb815Sopenharmony_ci 2199425bb815Sopenharmony_ci**Prototype** 2200425bb815Sopenharmony_ci 2201425bb815Sopenharmony_ci```c 2202425bb815Sopenharmony_cijerry_type_t 2203425bb815Sopenharmony_cijerry_value_get_type (const jerry_value_t value); 2204425bb815Sopenharmony_ci``` 2205425bb815Sopenharmony_ci 2206425bb815Sopenharmony_ci- `value` - JavaScript value to check. 2207425bb815Sopenharmony_ci- return value 2208425bb815Sopenharmony_ci - One of the [jerry_type_t](#jerry_type_t) value. 2209425bb815Sopenharmony_ci 2210425bb815Sopenharmony_ci*New in version 2.0*. 2211425bb815Sopenharmony_ci 2212425bb815Sopenharmony_ci**Example** 2213425bb815Sopenharmony_ci 2214425bb815Sopenharmony_ci```c 2215425bb815Sopenharmony_ci{ 2216425bb815Sopenharmony_ci jerry_value_t number = jerry_create_number (3.3); 2217425bb815Sopenharmony_ci 2218425bb815Sopenharmony_ci jerry_type_t type_info = jerry_value_get_type (number); 2219425bb815Sopenharmony_ci 2220425bb815Sopenharmony_ci if (type_info == JERRY_TYPE_NUMBER) 2221425bb815Sopenharmony_ci { 2222425bb815Sopenharmony_ci /* ... */ 2223425bb815Sopenharmony_ci } 2224425bb815Sopenharmony_ci 2225425bb815Sopenharmony_ci jerry_release_value (number); 2226425bb815Sopenharmony_ci} 2227425bb815Sopenharmony_ci``` 2228425bb815Sopenharmony_ci 2229425bb815Sopenharmony_ci**See also** 2230425bb815Sopenharmony_ci 2231425bb815Sopenharmony_ci- [jerry_type_t](#jerry_type_t) 2232425bb815Sopenharmony_ci 2233425bb815Sopenharmony_ci## jerry_is_feature_enabled 2234425bb815Sopenharmony_ci 2235425bb815Sopenharmony_ci**Summary** 2236425bb815Sopenharmony_ci 2237425bb815Sopenharmony_ciReturns whether the specified compile time feature is enabled. 2238425bb815Sopenharmony_ci 2239425bb815Sopenharmony_ci**Prototype** 2240425bb815Sopenharmony_ci 2241425bb815Sopenharmony_ci```c 2242425bb815Sopenharmony_cibool 2243425bb815Sopenharmony_cijerry_is_feature_enabled (const jerry_feature_t feature); 2244425bb815Sopenharmony_ci``` 2245425bb815Sopenharmony_ci 2246425bb815Sopenharmony_ci- `feature` - jerry feature 2247425bb815Sopenharmony_ci- return value 2248425bb815Sopenharmony_ci - true, if the given `jerry_feature_t` is enabled 2249425bb815Sopenharmony_ci - false, otherwise 2250425bb815Sopenharmony_ci 2251425bb815Sopenharmony_ci*New in version 2.0*. 2252425bb815Sopenharmony_ci 2253425bb815Sopenharmony_ci**Example** 2254425bb815Sopenharmony_ci 2255425bb815Sopenharmony_ci```c 2256425bb815Sopenharmony_ci{ 2257425bb815Sopenharmony_ci /* ... */ 2258425bb815Sopenharmony_ci jerry_feature_t feature = JERRY_FEATURE_SNAPSHOT_SAVE; 2259425bb815Sopenharmony_ci 2260425bb815Sopenharmony_ci if (jerry_is_feature_enabled (feature)) 2261425bb815Sopenharmony_ci { 2262425bb815Sopenharmony_ci /* ... */ 2263425bb815Sopenharmony_ci } 2264425bb815Sopenharmony_ci 2265425bb815Sopenharmony_ci} 2266425bb815Sopenharmony_ci``` 2267425bb815Sopenharmony_ci 2268425bb815Sopenharmony_ci**See also** 2269425bb815Sopenharmony_ci 2270425bb815Sopenharmony_ci- [jerry_feature_t](#jerry_feature_t) 2271425bb815Sopenharmony_ci 2272425bb815Sopenharmony_ci 2273425bb815Sopenharmony_ci# Binary operations 2274425bb815Sopenharmony_ci 2275425bb815Sopenharmony_ci## jerry_binary_operation 2276425bb815Sopenharmony_ci 2277425bb815Sopenharmony_ci**Summary** 2278425bb815Sopenharmony_ci 2279425bb815Sopenharmony_ciPerform binary operation on the given operands (==, ===, <, >, etc.). 2280425bb815Sopenharmony_ci 2281425bb815Sopenharmony_ci*Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 2282425bb815Sopenharmony_ciis no longer needed. 2283425bb815Sopenharmony_ci 2284425bb815Sopenharmony_ci**Prototype** 2285425bb815Sopenharmony_ci 2286425bb815Sopenharmony_ci```c 2287425bb815Sopenharmony_cijerry_value_t 2288425bb815Sopenharmony_cijerry_binary_operation (jerry_binary_operation_t op, 2289425bb815Sopenharmony_ci const jerry_value_t lhs, 2290425bb815Sopenharmony_ci const jerry_value_t rhs); 2291425bb815Sopenharmony_ci``` 2292425bb815Sopenharmony_ci 2293425bb815Sopenharmony_ci- `op` - binary operation 2294425bb815Sopenharmony_ci- `lhs` - left-hand side operand 2295425bb815Sopenharmony_ci- `rhs` - right-hand side operand 2296425bb815Sopenharmony_ci- return value 2297425bb815Sopenharmony_ci - error, if argument has an error flag or operation is unsuccessful or unsupported 2298425bb815Sopenharmony_ci - true/false, the result of the binary operation on the given operands otherwise 2299425bb815Sopenharmony_ci 2300425bb815Sopenharmony_ci*New in version 2.0*. 2301425bb815Sopenharmony_ci 2302425bb815Sopenharmony_ci**Example - JERRY_BIN_OP_EQUAL** 2303425bb815Sopenharmony_ci 2304425bb815Sopenharmony_ci```c 2305425bb815Sopenharmony_ci{ 2306425bb815Sopenharmony_ci jerry_value_t value1; 2307425bb815Sopenharmony_ci jerry_value_t value2; 2308425bb815Sopenharmony_ci ... // create or acquire value 2309425bb815Sopenharmony_ci jerry_value_t result = jerry_binary_operation (JERRY_BIN_OP_EQUAL, value1, value2) 2310425bb815Sopenharmony_ci 2311425bb815Sopenharmony_ci if (!jerry_value_is_error (result)) 2312425bb815Sopenharmony_ci { 2313425bb815Sopenharmony_ci if (jerry_get_boolean_value (result)) 2314425bb815Sopenharmony_ci { 2315425bb815Sopenharmony_ci // value1 and value2 are equal 2316425bb815Sopenharmony_ci } 2317425bb815Sopenharmony_ci else 2318425bb815Sopenharmony_ci { 2319425bb815Sopenharmony_ci // value1 and value2 are NOT equal 2320425bb815Sopenharmony_ci } 2321425bb815Sopenharmony_ci } 2322425bb815Sopenharmony_ci else 2323425bb815Sopenharmony_ci { 2324425bb815Sopenharmony_ci ... // handle error 2325425bb815Sopenharmony_ci } 2326425bb815Sopenharmony_ci 2327425bb815Sopenharmony_ci jerry_release_value (value1); 2328425bb815Sopenharmony_ci jerry_release_value (value2); 2329425bb815Sopenharmony_ci jerry_release_value (result); 2330425bb815Sopenharmony_ci} 2331425bb815Sopenharmony_ci``` 2332425bb815Sopenharmony_ci 2333425bb815Sopenharmony_ci**Example - JERRY_BIN_OP_INSTANCEOF** 2334425bb815Sopenharmony_ci 2335425bb815Sopenharmony_ci[doctest]: # () 2336425bb815Sopenharmony_ci 2337425bb815Sopenharmony_ci```c 2338425bb815Sopenharmony_ci#include "jerryscript.h" 2339425bb815Sopenharmony_ci 2340425bb815Sopenharmony_cistatic jerry_value_t 2341425bb815Sopenharmony_cimy_constructor (const jerry_value_t func_val, 2342425bb815Sopenharmony_ci const jerry_value_t this_val, 2343425bb815Sopenharmony_ci const jerry_value_t argv[], 2344425bb815Sopenharmony_ci const jerry_length_t argc) 2345425bb815Sopenharmony_ci{ 2346425bb815Sopenharmony_ci return jerry_create_undefined (); 2347425bb815Sopenharmony_ci} 2348425bb815Sopenharmony_ci 2349425bb815Sopenharmony_ciint 2350425bb815Sopenharmony_cimain (void) 2351425bb815Sopenharmony_ci{ 2352425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 2353425bb815Sopenharmony_ci 2354425bb815Sopenharmony_ci jerry_value_t base_obj = jerry_create_object (); 2355425bb815Sopenharmony_ci jerry_value_t constructor = jerry_create_external_function (my_constructor); 2356425bb815Sopenharmony_ci 2357425bb815Sopenharmony_ci /* External functions does not have a prototype by default, so we need to create one */ 2358425bb815Sopenharmony_ci jerry_value_t prototype_str = jerry_create_string ((const jerry_char_t *) ("prototype")); 2359425bb815Sopenharmony_ci jerry_release_value (jerry_set_property (constructor, prototype_str, base_obj)); 2360425bb815Sopenharmony_ci jerry_release_value (prototype_str); 2361425bb815Sopenharmony_ci 2362425bb815Sopenharmony_ci /* Construct the instance. */ 2363425bb815Sopenharmony_ci jerry_value_t instance_val = jerry_construct_object (constructor, NULL, 0); 2364425bb815Sopenharmony_ci 2365425bb815Sopenharmony_ci /* Call the API function of 'instanceof'. */ 2366425bb815Sopenharmony_ci jerry_value_t is_instance = jerry_binary_operation (JERRY_BIN_OP_INSTANCEOF, 2367425bb815Sopenharmony_ci instance_val, 2368425bb815Sopenharmony_ci constructor); 2369425bb815Sopenharmony_ci if (!jerry_value_is_error (is_instance) 2370425bb815Sopenharmony_ci && jerry_get_boolean_value (is_instance) == true) 2371425bb815Sopenharmony_ci { 2372425bb815Sopenharmony_ci /* ... */ 2373425bb815Sopenharmony_ci } 2374425bb815Sopenharmony_ci 2375425bb815Sopenharmony_ci /* Free all of the jerry values and cleanup the engine. */ 2376425bb815Sopenharmony_ci jerry_release_value (base_obj); 2377425bb815Sopenharmony_ci jerry_release_value (constructor); 2378425bb815Sopenharmony_ci jerry_release_value (instance_val); 2379425bb815Sopenharmony_ci jerry_release_value (is_instance); 2380425bb815Sopenharmony_ci 2381425bb815Sopenharmony_ci jerry_cleanup (); 2382425bb815Sopenharmony_ci return 0; 2383425bb815Sopenharmony_ci} 2384425bb815Sopenharmony_ci``` 2385425bb815Sopenharmony_ci 2386425bb815Sopenharmony_ci**See also** 2387425bb815Sopenharmony_ci 2388425bb815Sopenharmony_ci- [jerry_binary_operation_t](#jerry_binary_operation_t) 2389425bb815Sopenharmony_ci 2390425bb815Sopenharmony_ci 2391425bb815Sopenharmony_ci# Error manipulation functions 2392425bb815Sopenharmony_ci 2393425bb815Sopenharmony_ci*Changed in version 2.0*: The error handling and manipulation was modified and the old methods were replaced. 2394425bb815Sopenharmony_ci 2395425bb815Sopenharmony_ci## jerry_create_abort_from_value 2396425bb815Sopenharmony_ci 2397425bb815Sopenharmony_ci**Summary** 2398425bb815Sopenharmony_ci 2399425bb815Sopenharmony_ciCreate (api) abort from a value. 2400425bb815Sopenharmony_ci 2401425bb815Sopenharmony_ciThis function creates an API abort value from an API value. The second argument defines 2402425bb815Sopenharmony_ciwhether the input value must be released or not. If it is set to `true`, 2403425bb815Sopenharmony_cithen a [`jerry_release_value`](#jerry_release_value) function will be called 2404425bb815Sopenharmony_cifor the first argument, so the api value won't be available after the call of 2405425bb815Sopenharmony_ci`jerry_create_abort_from_value`. The second argument should be false if both value 2406425bb815Sopenharmony_ciand created abort value are needed. 2407425bb815Sopenharmony_ci 2408425bb815Sopenharmony_ci**Prototype** 2409425bb815Sopenharmony_ci 2410425bb815Sopenharmony_ci```c 2411425bb815Sopenharmony_cijerry_value_t 2412425bb815Sopenharmony_cijerry_create_abort_from_value (jerry_value_t value, bool release); 2413425bb815Sopenharmony_ci``` 2414425bb815Sopenharmony_ci 2415425bb815Sopenharmony_ci- `value` - api value 2416425bb815Sopenharmony_ci- `release` - raw boolean, defines whether input value must be released 2417425bb815Sopenharmony_ci- return value - abort (api) value 2418425bb815Sopenharmony_ci 2419425bb815Sopenharmony_ci*New in version 2.0*. 2420425bb815Sopenharmony_ci 2421425bb815Sopenharmony_ci**Example 1** 2422425bb815Sopenharmony_ci 2423425bb815Sopenharmony_ci```c 2424425bb815Sopenharmony_ci{ 2425425bb815Sopenharmony_ci jerry_value_t value; 2426425bb815Sopenharmony_ci ... // create or acquire value 2427425bb815Sopenharmony_ci 2428425bb815Sopenharmony_ci jerry_value_t abort = jerry_create_abort_from_value (value, true); 2429425bb815Sopenharmony_ci // using the 'value' variable after release is invalid. 2430425bb815Sopenharmony_ci 2431425bb815Sopenharmony_ci jerry_release_value (abort); 2432425bb815Sopenharmony_ci} 2433425bb815Sopenharmony_ci``` 2434425bb815Sopenharmony_ci 2435425bb815Sopenharmony_ci**Example 2** 2436425bb815Sopenharmony_ci 2437425bb815Sopenharmony_ci```c 2438425bb815Sopenharmony_ci{ 2439425bb815Sopenharmony_ci jerry_value_t value; 2440425bb815Sopenharmony_ci ... // create or acquire value 2441425bb815Sopenharmony_ci 2442425bb815Sopenharmony_ci jerry_value_t abort = jerry_create_abort_from_value (value, false); 2443425bb815Sopenharmony_ci // both 'abort' and 'value' can be used and must be released when they are no longer needed 2444425bb815Sopenharmony_ci 2445425bb815Sopenharmony_ci jerry_release_value (abort); 2446425bb815Sopenharmony_ci jerry_release_value (value); 2447425bb815Sopenharmony_ci} 2448425bb815Sopenharmony_ci``` 2449425bb815Sopenharmony_ci 2450425bb815Sopenharmony_ci**See also** 2451425bb815Sopenharmony_ci 2452425bb815Sopenharmony_ci- [jerry_value_t](#jerry_value_t) 2453425bb815Sopenharmony_ci- [jerry_get_value_from_error](#jerry_get_value_from_error) 2454425bb815Sopenharmony_ci- [jerry_create_error_from_value](#jerry_create_error_from_value) 2455425bb815Sopenharmony_ci 2456425bb815Sopenharmony_ci## jerry_create_error_from_value 2457425bb815Sopenharmony_ci 2458425bb815Sopenharmony_ci**Summary** 2459425bb815Sopenharmony_ci 2460425bb815Sopenharmony_ciCreate (api) error from a value. 2461425bb815Sopenharmony_ci 2462425bb815Sopenharmony_ciThis function creates an API error value from an API value. The second argument defines 2463425bb815Sopenharmony_ciwhether the input value must be released or not. If it is set to `true`, 2464425bb815Sopenharmony_cithen a [`jerry_release_value`](#jerry_release_value) function will be called 2465425bb815Sopenharmony_cifor the first argument, so the api value won't be available after the call of 2466425bb815Sopenharmony_ci`jerry_create_error_from_value`. The second argument should be false if both value 2467425bb815Sopenharmony_ciand created error value are needed. 2468425bb815Sopenharmony_ci 2469425bb815Sopenharmony_ci**Prototype** 2470425bb815Sopenharmony_ci 2471425bb815Sopenharmony_ci```c 2472425bb815Sopenharmony_cijerry_value_t 2473425bb815Sopenharmony_cijerry_create_error_from_value (jerry_value_t value, bool release); 2474425bb815Sopenharmony_ci``` 2475425bb815Sopenharmony_ci 2476425bb815Sopenharmony_ci- `value` - api value 2477425bb815Sopenharmony_ci- `release` - raw boolean, defines whether input value must be released 2478425bb815Sopenharmony_ci- return value - error (api) value 2479425bb815Sopenharmony_ci 2480425bb815Sopenharmony_ci*New in version 2.0*. 2481425bb815Sopenharmony_ci 2482425bb815Sopenharmony_ci**Example 1** 2483425bb815Sopenharmony_ci 2484425bb815Sopenharmony_ci```c 2485425bb815Sopenharmony_ci{ 2486425bb815Sopenharmony_ci jerry_value_t value; 2487425bb815Sopenharmony_ci ... // create or acquire value 2488425bb815Sopenharmony_ci 2489425bb815Sopenharmony_ci jerry_value_t error = jerry_create_error_from_value (value, true); 2490425bb815Sopenharmony_ci // using the 'value' variable after release is invalid. 2491425bb815Sopenharmony_ci 2492425bb815Sopenharmony_ci 2493425bb815Sopenharmony_ci jerry_release_value (error); 2494425bb815Sopenharmony_ci} 2495425bb815Sopenharmony_ci``` 2496425bb815Sopenharmony_ci 2497425bb815Sopenharmony_ci**Example 2** 2498425bb815Sopenharmony_ci 2499425bb815Sopenharmony_ci```c 2500425bb815Sopenharmony_ci{ 2501425bb815Sopenharmony_ci jerry_value_t value; 2502425bb815Sopenharmony_ci ... // create or acquire value 2503425bb815Sopenharmony_ci 2504425bb815Sopenharmony_ci jerry_value_t error = jerry_create_error_from_value (value, false); 2505425bb815Sopenharmony_ci // both 'error' and 'value' can be used and must be released when they are no longer needed 2506425bb815Sopenharmony_ci 2507425bb815Sopenharmony_ci jerry_release_value (error); 2508425bb815Sopenharmony_ci jerry_release_value (value); 2509425bb815Sopenharmony_ci} 2510425bb815Sopenharmony_ci``` 2511425bb815Sopenharmony_ci 2512425bb815Sopenharmony_ci**See also** 2513425bb815Sopenharmony_ci 2514425bb815Sopenharmony_ci- [jerry_value_t](#jerry_value_t) 2515425bb815Sopenharmony_ci- [jerry_get_value_from_error](#jerry_get_value_from_error) 2516425bb815Sopenharmony_ci- [jerry_create_abort_from_value](#jerry_create_abort_from_value) 2517425bb815Sopenharmony_ci 2518425bb815Sopenharmony_ci## jerry_get_error_type 2519425bb815Sopenharmony_ci 2520425bb815Sopenharmony_ci**Summary** 2521425bb815Sopenharmony_ci 2522425bb815Sopenharmony_ciReturns the type of the Error object if possible. 2523425bb815Sopenharmony_ci 2524425bb815Sopenharmony_ciIf a non-error object is used as the input for the function the method 2525425bb815Sopenharmony_ciwill return `JERRY_ERROR_NONE` indicating that the value was not 2526425bb815Sopenharmony_cian Error object. However it is still possible that the value contains 2527425bb815Sopenharmony_cierror semantics. To correctly detect if a value have error use the 2528425bb815Sopenharmony_ci[jerry_value_is_error](#jerry_value_is_error) method. 2529425bb815Sopenharmony_ci 2530425bb815Sopenharmony_ci**Prototype** 2531425bb815Sopenharmony_ci 2532425bb815Sopenharmony_ci```c 2533425bb815Sopenharmony_cijerry_error_t 2534425bb815Sopenharmony_cijerry_get_error_type (const jerry_value_t value); 2535425bb815Sopenharmony_ci``` 2536425bb815Sopenharmony_ci 2537425bb815Sopenharmony_ci- `value` - api value (possible error object) 2538425bb815Sopenharmony_ci- return value 2539425bb815Sopenharmony_ci - JERRY_ERROR_NONE if the input is not an error object 2540425bb815Sopenharmony_ci - one of the [jerry_error_t](#jerry_error_t) value 2541425bb815Sopenharmony_ci 2542425bb815Sopenharmony_ci*New in version 2.0*. 2543425bb815Sopenharmony_ci 2544425bb815Sopenharmony_ci**Example** 2545425bb815Sopenharmony_ci 2546425bb815Sopenharmony_ci```c 2547425bb815Sopenharmony_ci{ 2548425bb815Sopenharmony_ci jerry_value_t error_obj = jerry_create_error (JERRY_ERROR_RANGE, 2549425bb815Sopenharmony_ci (const jerry_char_t *) "error msg"); 2550425bb815Sopenharmony_ci jerry_error_t error_type = jerry_get_error_type (error_obj); 2551425bb815Sopenharmony_ci 2552425bb815Sopenharmony_ci // error_type is now JERRY_ERROR_RANGE. 2553425bb815Sopenharmony_ci 2554425bb815Sopenharmony_ci jerry_release_value (error_obj); 2555425bb815Sopenharmony_ci} 2556425bb815Sopenharmony_ci``` 2557425bb815Sopenharmony_ci 2558425bb815Sopenharmony_ci**See also** 2559425bb815Sopenharmony_ci 2560425bb815Sopenharmony_ci- [jerry_create_error](#jerry_create_error) 2561425bb815Sopenharmony_ci- [jerry_value_is_error](#jerry_value_is_error) 2562425bb815Sopenharmony_ci 2563425bb815Sopenharmony_ci## jerry_get_value_from_error 2564425bb815Sopenharmony_ci 2565425bb815Sopenharmony_ci**Summary** 2566425bb815Sopenharmony_ci 2567425bb815Sopenharmony_ciGet the value from an error. 2568425bb815Sopenharmony_ci 2569425bb815Sopenharmony_ciMany API functions cannot be called with an error value. 2570425bb815Sopenharmony_ciThis function extracts the API value from an error. The second argument defines 2571425bb815Sopenharmony_ciwhether the input error value must be released or not. If it is set to `true`, 2572425bb815Sopenharmony_cithen a [`jerry_release_value`](#jerry_release_value) function will be called 2573425bb815Sopenharmony_cifor the first argument, so the error value won't be available after the call of 2574425bb815Sopenharmony_ci`jerry_get_value_from_error`. The second argument should be false if both error 2575425bb815Sopenharmony_ciand its represented value are needed. 2576425bb815Sopenharmony_ci 2577425bb815Sopenharmony_ci*Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 2578425bb815Sopenharmony_ciis no longer needed. 2579425bb815Sopenharmony_ci 2580425bb815Sopenharmony_ci**Prototype** 2581425bb815Sopenharmony_ci 2582425bb815Sopenharmony_ci```c 2583425bb815Sopenharmony_cijerry_value_t 2584425bb815Sopenharmony_cijerry_get_value_from_error (jerry_value_t value, bool release) 2585425bb815Sopenharmony_ci``` 2586425bb815Sopenharmony_ci 2587425bb815Sopenharmony_ci- `value` - error (api) value 2588425bb815Sopenharmony_ci- `release` - raw boolean, defines whether input value must be released 2589425bb815Sopenharmony_ci- return value - api value 2590425bb815Sopenharmony_ci 2591425bb815Sopenharmony_ci*New in version 2.0*. 2592425bb815Sopenharmony_ci 2593425bb815Sopenharmony_ci**Example 1** 2594425bb815Sopenharmony_ci 2595425bb815Sopenharmony_ci```c 2596425bb815Sopenharmony_ci{ 2597425bb815Sopenharmony_ci jerry_value_t value; 2598425bb815Sopenharmony_ci ... // create or acquire value 2599425bb815Sopenharmony_ci 2600425bb815Sopenharmony_ci jerry_value_t error = jerry_create_error_from_value (value, true); 2601425bb815Sopenharmony_ci jerry_value_t value_from_error = jerry_get_value_from_error (error, true); 2602425bb815Sopenharmony_ci // using the 'error' variable after release is invalid. 2603425bb815Sopenharmony_ci 2604425bb815Sopenharmony_ci jerry_release_value (value_from_error); 2605425bb815Sopenharmony_ci} 2606425bb815Sopenharmony_ci``` 2607425bb815Sopenharmony_ci 2608425bb815Sopenharmony_ci**Example 2** 2609425bb815Sopenharmony_ci 2610425bb815Sopenharmony_ci```c 2611425bb815Sopenharmony_ci{ 2612425bb815Sopenharmony_ci jerry_value_t value; 2613425bb815Sopenharmony_ci ... // create or acquire value 2614425bb815Sopenharmony_ci 2615425bb815Sopenharmony_ci jerry_value_t error = jerry_create_error_from_value (value, true); 2616425bb815Sopenharmony_ci jerry_value_t value_from_error = jerry_get_value_from_error (error, false); 2617425bb815Sopenharmony_ci // both 'error' and 'value_from_error' can be used and must be released when they are no longer needed 2618425bb815Sopenharmony_ci 2619425bb815Sopenharmony_ci jerry_release_value (value_from_error); 2620425bb815Sopenharmony_ci jerry_release_value (error); 2621425bb815Sopenharmony_ci} 2622425bb815Sopenharmony_ci``` 2623425bb815Sopenharmony_ci 2624425bb815Sopenharmony_ci**See also** 2625425bb815Sopenharmony_ci 2626425bb815Sopenharmony_ci- [jerry_value_t](#jerry_value_t) 2627425bb815Sopenharmony_ci- [jerry_create_error_from_value](#jerry_create_error_from_value) 2628425bb815Sopenharmony_ci- [jerry_create_abort_from_value](#jerry_create_abort_from_value) 2629425bb815Sopenharmony_ci 2630425bb815Sopenharmony_ci# Getter functions of 'jerry_value_t' 2631425bb815Sopenharmony_ci 2632425bb815Sopenharmony_ciGet raw data from API values. 2633425bb815Sopenharmony_ci 2634425bb815Sopenharmony_ci## jerry_get_boolean_value 2635425bb815Sopenharmony_ci 2636425bb815Sopenharmony_ci**Summary** 2637425bb815Sopenharmony_ci 2638425bb815Sopenharmony_ciGets the raw bool value from a `jerry_value_t`. 2639425bb815Sopenharmony_ci 2640425bb815Sopenharmony_ci**Prototype** 2641425bb815Sopenharmony_ci 2642425bb815Sopenharmony_ci```c 2643425bb815Sopenharmony_cibool 2644425bb815Sopenharmony_cijerry_get_boolean_value (const jerry_value_t value); 2645425bb815Sopenharmony_ci``` 2646425bb815Sopenharmony_ci 2647425bb815Sopenharmony_ci- `value` - api value 2648425bb815Sopenharmony_ci- return value - boolean value represented by the argument. 2649425bb815Sopenharmony_ci 2650425bb815Sopenharmony_ci**Example** 2651425bb815Sopenharmony_ci 2652425bb815Sopenharmony_ci```c 2653425bb815Sopenharmony_ci{ 2654425bb815Sopenharmony_ci jerry_value_t value; 2655425bb815Sopenharmony_ci ... // create or acquire value 2656425bb815Sopenharmony_ci 2657425bb815Sopenharmony_ci if (jerry_value_is_boolean (value)) 2658425bb815Sopenharmony_ci { 2659425bb815Sopenharmony_ci bool raw_value = jerry_get_boolean_value (value); 2660425bb815Sopenharmony_ci 2661425bb815Sopenharmony_ci ... // usage of raw value 2662425bb815Sopenharmony_ci 2663425bb815Sopenharmony_ci } 2664425bb815Sopenharmony_ci 2665425bb815Sopenharmony_ci jerry_release_value (value); 2666425bb815Sopenharmony_ci} 2667425bb815Sopenharmony_ci 2668425bb815Sopenharmony_ci``` 2669425bb815Sopenharmony_ci 2670425bb815Sopenharmony_ci**See also** 2671425bb815Sopenharmony_ci 2672425bb815Sopenharmony_ci- [jerry_value_is_boolean](#jerry_value_is_boolean) 2673425bb815Sopenharmony_ci- [jerry_release_value](#jerry_release_value) 2674425bb815Sopenharmony_ci 2675425bb815Sopenharmony_ci 2676425bb815Sopenharmony_ci## jerry_get_number_value 2677425bb815Sopenharmony_ci 2678425bb815Sopenharmony_ci**Summary** 2679425bb815Sopenharmony_ci 2680425bb815Sopenharmony_ciGets the number value of the given `jerry_value_t` parameter as a raw double. 2681425bb815Sopenharmony_ci 2682425bb815Sopenharmony_ciIf the argument passed is not a number `0.0` will be returned. 2683425bb815Sopenharmony_ci 2684425bb815Sopenharmony_ci**Prototype** 2685425bb815Sopenharmony_ci 2686425bb815Sopenharmony_ci```c 2687425bb815Sopenharmony_cidouble 2688425bb815Sopenharmony_cijerry_get_number_value (const jerry_value_t value); 2689425bb815Sopenharmony_ci``` 2690425bb815Sopenharmony_ci 2691425bb815Sopenharmony_ci- `value` - api value 2692425bb815Sopenharmony_ci- return value 2693425bb815Sopenharmony_ci - the number value of the given `jerry_value_t` parameter as a raw double. 2694425bb815Sopenharmony_ci - `0.0` if the api value passed is not a number. 2695425bb815Sopenharmony_ci 2696425bb815Sopenharmony_ci**Example** 2697425bb815Sopenharmony_ci 2698425bb815Sopenharmony_ci```c 2699425bb815Sopenharmony_ci{ 2700425bb815Sopenharmony_ci jerry_value_t value; 2701425bb815Sopenharmony_ci ... // create or acquire value 2702425bb815Sopenharmony_ci 2703425bb815Sopenharmony_ci if (jerry_value_is_number (value)) 2704425bb815Sopenharmony_ci { 2705425bb815Sopenharmony_ci double raw_value = jerry_get_number_value (value); 2706425bb815Sopenharmony_ci 2707425bb815Sopenharmony_ci ... // usage of raw value 2708425bb815Sopenharmony_ci 2709425bb815Sopenharmony_ci } 2710425bb815Sopenharmony_ci 2711425bb815Sopenharmony_ci jerry_release_value (value); 2712425bb815Sopenharmony_ci} 2713425bb815Sopenharmony_ci``` 2714425bb815Sopenharmony_ci 2715425bb815Sopenharmony_ci**See also** 2716425bb815Sopenharmony_ci 2717425bb815Sopenharmony_ci- [jerry_value_is_number](#jerry_value_is_number) 2718425bb815Sopenharmony_ci- [jerry_release_value](#jerry_release_value) 2719425bb815Sopenharmony_ci 2720425bb815Sopenharmony_ci 2721425bb815Sopenharmony_ci# Functions for string values 2722425bb815Sopenharmony_ci 2723425bb815Sopenharmony_ci## jerry_get_string_size 2724425bb815Sopenharmony_ci 2725425bb815Sopenharmony_ci**Summary** 2726425bb815Sopenharmony_ci 2727425bb815Sopenharmony_ciGet the size of a string. Returns zero, if the value parameter is not a string. 2728425bb815Sopenharmony_ciThis is effectively the number of bytes required to store the string's characters. 2729425bb815Sopenharmony_ci 2730425bb815Sopenharmony_ci**Prototype** 2731425bb815Sopenharmony_ci 2732425bb815Sopenharmony_ci```c 2733425bb815Sopenharmony_cijerry_size_t 2734425bb815Sopenharmony_cijerry_get_string_size (const jerry_value_t value); 2735425bb815Sopenharmony_ci``` 2736425bb815Sopenharmony_ci- `value` - api value 2737425bb815Sopenharmony_ci- return value - number of bytes in the buffer needed to represent the string. 2738425bb815Sopenharmony_ci 2739425bb815Sopenharmony_ci**Example** 2740425bb815Sopenharmony_ci 2741425bb815Sopenharmony_ci```c 2742425bb815Sopenharmony_ci{ 2743425bb815Sopenharmony_ci const jerry_char_t char_array[] = "a string"; 2744425bb815Sopenharmony_ci jerry_value_t string = jerry_create_string (char_array); 2745425bb815Sopenharmony_ci 2746425bb815Sopenharmony_ci jerry_size_t string_size = jerry_get_string_size (string); 2747425bb815Sopenharmony_ci 2748425bb815Sopenharmony_ci ... // usage of string_size 2749425bb815Sopenharmony_ci 2750425bb815Sopenharmony_ci jerry_release_value (string); 2751425bb815Sopenharmony_ci} 2752425bb815Sopenharmony_ci``` 2753425bb815Sopenharmony_ci 2754425bb815Sopenharmony_ci**See also** 2755425bb815Sopenharmony_ci 2756425bb815Sopenharmony_ci- [jerry_create_string](#jerry_create_string) 2757425bb815Sopenharmony_ci- [jerry_get_string_length](#jerry_get_string_length) 2758425bb815Sopenharmony_ci- [jerry_is_valid_cesu8_string](#jerry_is_valid_cesu8_string) 2759425bb815Sopenharmony_ci 2760425bb815Sopenharmony_ci 2761425bb815Sopenharmony_ci## jerry_get_utf8_string_size 2762425bb815Sopenharmony_ci 2763425bb815Sopenharmony_ci**Summary** 2764425bb815Sopenharmony_ci 2765425bb815Sopenharmony_ciGet the size of an utf8-encoded string. Returns zero, if the value parameter is not a string. 2766425bb815Sopenharmony_ciThis is effectively the number of bytes required to store the utf8 encoded string's characters. 2767425bb815Sopenharmony_ci 2768425bb815Sopenharmony_ci*Note*: The difference from [jerry_get_string_size](#jerry_get_string_size) is that it returns with utf-8 string size 2769425bb815Sopenharmony_ciinstead of the cesu-8 string size. 2770425bb815Sopenharmony_ci 2771425bb815Sopenharmony_ci**Prototype** 2772425bb815Sopenharmony_ci 2773425bb815Sopenharmony_ci```c 2774425bb815Sopenharmony_cijerry_size_t 2775425bb815Sopenharmony_cijerry_get_utf8_string_size (const jerry_value_t value); 2776425bb815Sopenharmony_ci``` 2777425bb815Sopenharmony_ci- `value` - api value 2778425bb815Sopenharmony_ci- return value - number of bytes in the buffer needed to represent the utf8-encoded string. 2779425bb815Sopenharmony_ci 2780425bb815Sopenharmony_ci*New in version 2.0*. 2781425bb815Sopenharmony_ci 2782425bb815Sopenharmony_ci**Example** 2783425bb815Sopenharmony_ci 2784425bb815Sopenharmony_ci```c 2785425bb815Sopenharmony_ci{ 2786425bb815Sopenharmony_ci const jerry_char_t char_array[] = "a string"; 2787425bb815Sopenharmony_ci jerry_value_t string = jerry_create_string (char_array); 2788425bb815Sopenharmony_ci 2789425bb815Sopenharmony_ci jerry_size_t string_size = jerry_get_utf8_string_size (string); 2790425bb815Sopenharmony_ci 2791425bb815Sopenharmony_ci ... // usage of string_size 2792425bb815Sopenharmony_ci 2793425bb815Sopenharmony_ci jerry_release_value (string); 2794425bb815Sopenharmony_ci} 2795425bb815Sopenharmony_ci``` 2796425bb815Sopenharmony_ci 2797425bb815Sopenharmony_ci**See also** 2798425bb815Sopenharmony_ci 2799425bb815Sopenharmony_ci- [jerry_create_string_from_utf8](#jerry_create_string_from_utf8) 2800425bb815Sopenharmony_ci- [jerry_get_utf8_string_length](#jerry_get_utf8_string_length) 2801425bb815Sopenharmony_ci- [jerry_is_valid_utf8_string](#jerry_is_valid_utf8_string) 2802425bb815Sopenharmony_ci 2803425bb815Sopenharmony_ci 2804425bb815Sopenharmony_ci## jerry_get_string_length 2805425bb815Sopenharmony_ci 2806425bb815Sopenharmony_ci**Summary** 2807425bb815Sopenharmony_ci 2808425bb815Sopenharmony_ciGet the length of a string. Returns zero, if the value parameter is not a string. 2809425bb815Sopenharmony_ci 2810425bb815Sopenharmony_ci*Notes:* 2811425bb815Sopenharmony_ci- The difference from [jerry_get_string_size](#jerry_get_string_size) is that it 2812425bb815Sopenharmony_ci returns the number of bytes used for the string. 2813425bb815Sopenharmony_ci- This is **not** the number of bytes required to store the string. 2814425bb815Sopenharmony_ci 2815425bb815Sopenharmony_ci**Prototype** 2816425bb815Sopenharmony_ci 2817425bb815Sopenharmony_ci```c 2818425bb815Sopenharmony_cijerry_length_t 2819425bb815Sopenharmony_cijerry_get_string_length (const jerry_value_t value); 2820425bb815Sopenharmony_ci``` 2821425bb815Sopenharmony_ci 2822425bb815Sopenharmony_ci- `value` - api value 2823425bb815Sopenharmony_ci- return value - number of characters in the string 2824425bb815Sopenharmony_ci 2825425bb815Sopenharmony_ci**Example** 2826425bb815Sopenharmony_ci 2827425bb815Sopenharmony_ci```c 2828425bb815Sopenharmony_ci{ 2829425bb815Sopenharmony_ci const jerry_char_t char_array[] = "a string"; 2830425bb815Sopenharmony_ci jerry_value_t string = jerry_create_string (char_array); 2831425bb815Sopenharmony_ci 2832425bb815Sopenharmony_ci jerry_length_t string_length = jerry_get_string_length (string); 2833425bb815Sopenharmony_ci 2834425bb815Sopenharmony_ci ... // usage of string_length 2835425bb815Sopenharmony_ci 2836425bb815Sopenharmony_ci jerry_release_value (string); 2837425bb815Sopenharmony_ci} 2838425bb815Sopenharmony_ci``` 2839425bb815Sopenharmony_ci 2840425bb815Sopenharmony_ci**See also** 2841425bb815Sopenharmony_ci 2842425bb815Sopenharmony_ci- [jerry_create_string](#jerry_create_string) 2843425bb815Sopenharmony_ci- [jerry_get_string_size](#jerry_get_string_size) 2844425bb815Sopenharmony_ci- [jerry_is_valid_cesu8_string](#jerry_is_valid_cesu8_string) 2845425bb815Sopenharmony_ci 2846425bb815Sopenharmony_ci 2847425bb815Sopenharmony_ci## jerry_get_utf8_string_length 2848425bb815Sopenharmony_ci 2849425bb815Sopenharmony_ci**Summary** 2850425bb815Sopenharmony_ci 2851425bb815Sopenharmony_ciGet the length of an UTF-8 encoded string. Returns zero, if the value parameter is not a string. 2852425bb815Sopenharmony_ci 2853425bb815Sopenharmony_ci*Notes*: 2854425bb815Sopenharmony_ci- The difference from [jerry_get_string_length](#jerry_get_string_length) is that it 2855425bb815Sopenharmony_ci returns with utf-8 string length instead of the cesu-8 string length. 2856425bb815Sopenharmony_ci- This is **not** the number of bytes required to store the string. 2857425bb815Sopenharmony_ci 2858425bb815Sopenharmony_ci**Prototype** 2859425bb815Sopenharmony_ci 2860425bb815Sopenharmony_ci```c 2861425bb815Sopenharmony_cijerry_length_t 2862425bb815Sopenharmony_cijerry_get_utf8_string_length (const jerry_value_t value); 2863425bb815Sopenharmony_ci``` 2864425bb815Sopenharmony_ci 2865425bb815Sopenharmony_ci- `value` - input string value 2866425bb815Sopenharmony_ci- return value - number of characters in the string 2867425bb815Sopenharmony_ci 2868425bb815Sopenharmony_ci*New in version 2.0*. 2869425bb815Sopenharmony_ci 2870425bb815Sopenharmony_ci**Example** 2871425bb815Sopenharmony_ci 2872425bb815Sopenharmony_ci```c 2873425bb815Sopenharmony_ci{ 2874425bb815Sopenharmony_ci const jerry_char_t char_array[] = "a string"; 2875425bb815Sopenharmony_ci jerry_value_t string = jerry_create_string_from_utf8 (char_array); 2876425bb815Sopenharmony_ci 2877425bb815Sopenharmony_ci jerry_length_t string_length = jerry_get_utf8_string_length (string); 2878425bb815Sopenharmony_ci 2879425bb815Sopenharmony_ci ... // usage of string_length 2880425bb815Sopenharmony_ci 2881425bb815Sopenharmony_ci jerry_release_value (string); 2882425bb815Sopenharmony_ci} 2883425bb815Sopenharmony_ci``` 2884425bb815Sopenharmony_ci 2885425bb815Sopenharmony_ci**See also** 2886425bb815Sopenharmony_ci 2887425bb815Sopenharmony_ci- [jerry_create_string_from_utf8](#jerry_create_string_from_utf8) 2888425bb815Sopenharmony_ci- [jerry_get_utf8_string_size](#jerry_get_utf8_string_size) 2889425bb815Sopenharmony_ci- [jerry_is_valid_utf8_string](#jerry_is_valid_utf8_string) 2890425bb815Sopenharmony_ci 2891425bb815Sopenharmony_ci 2892425bb815Sopenharmony_ci## jerry_string_to_char_buffer 2893425bb815Sopenharmony_ci 2894425bb815Sopenharmony_ci**Summary** 2895425bb815Sopenharmony_ci 2896425bb815Sopenharmony_ciCopy the characters of a string into a specified cesu-8 buffer. 2897425bb815Sopenharmony_ciThe '\0' character could occur in the character buffer. Returns 0, 2898425bb815Sopenharmony_ciif the value parameter is not a string or the buffer is not large 2899425bb815Sopenharmony_cienough for the whole string. 2900425bb815Sopenharmony_ci 2901425bb815Sopenharmony_ci*Note*: Does not put '\0' to the end of string, the return value identifies 2902425bb815Sopenharmony_cithe number of valid bytes in the output buffer. 2903425bb815Sopenharmony_ci 2904425bb815Sopenharmony_ci*Note*: If the size of the string in jerry value is larger than the size of the 2905425bb815Sopenharmony_citarget buffer, the copy will fail. To copy a substring the 2906425bb815Sopenharmony_ci[jerry_substring_to_char_buffer](#jerry_substring_to_char_buffer) API function 2907425bb815Sopenharmony_ciis recommended instead. 2908425bb815Sopenharmony_ci 2909425bb815Sopenharmony_ci 2910425bb815Sopenharmony_ci**Prototype** 2911425bb815Sopenharmony_ci 2912425bb815Sopenharmony_ci```c 2913425bb815Sopenharmony_cijerry_size_t 2914425bb815Sopenharmony_cijerry_string_to_char_buffer (const jerry_value_t value, 2915425bb815Sopenharmony_ci jerry_char_t *buffer_p, 2916425bb815Sopenharmony_ci jerry_size_t buffer_size); 2917425bb815Sopenharmony_ci``` 2918425bb815Sopenharmony_ci 2919425bb815Sopenharmony_ci- `value` - input string value 2920425bb815Sopenharmony_ci- `buffer_p` - pointer to output buffer 2921425bb815Sopenharmony_ci- `buffer_size` - size of the buffer 2922425bb815Sopenharmony_ci- return value - number of bytes, actually copied to the buffer 2923425bb815Sopenharmony_ci 2924425bb815Sopenharmony_ci**Example** 2925425bb815Sopenharmony_ci 2926425bb815Sopenharmony_ci[doctest]: # () 2927425bb815Sopenharmony_ci 2928425bb815Sopenharmony_ci```c 2929425bb815Sopenharmony_ci#include <stdio.h> 2930425bb815Sopenharmony_ci#include <stdlib.h> 2931425bb815Sopenharmony_ci#include "jerryscript.h" 2932425bb815Sopenharmony_ci 2933425bb815Sopenharmony_ciint 2934425bb815Sopenharmony_cimain (void) 2935425bb815Sopenharmony_ci{ 2936425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 2937425bb815Sopenharmony_ci 2938425bb815Sopenharmony_ci jerry_value_t value; 2939425bb815Sopenharmony_ci // create or acquire value 2940425bb815Sopenharmony_ci value = jerry_create_string ((const jerry_char_t *) "Demo string"); 2941425bb815Sopenharmony_ci 2942425bb815Sopenharmony_ci // Read the string into a byte buffer. 2943425bb815Sopenharmony_ci jerry_size_t string_size = jerry_get_string_size (value); 2944425bb815Sopenharmony_ci jerry_char_t *string_buffer_p = (jerry_char_t *) malloc (sizeof (jerry_char_t) * (string_size + 1)); 2945425bb815Sopenharmony_ci 2946425bb815Sopenharmony_ci jerry_size_t copied_bytes = jerry_string_to_char_buffer (value, string_buffer_p, string_size); 2947425bb815Sopenharmony_ci string_buffer_p[copied_bytes] = '\0'; 2948425bb815Sopenharmony_ci 2949425bb815Sopenharmony_ci jerry_release_value (value); 2950425bb815Sopenharmony_ci 2951425bb815Sopenharmony_ci jerry_cleanup (); 2952425bb815Sopenharmony_ci 2953425bb815Sopenharmony_ci printf ("Test string: %s\n", string_buffer_p); 2954425bb815Sopenharmony_ci free (string_buffer_p); 2955425bb815Sopenharmony_ci 2956425bb815Sopenharmony_ci return 0; 2957425bb815Sopenharmony_ci} 2958425bb815Sopenharmony_ci``` 2959425bb815Sopenharmony_ci 2960425bb815Sopenharmony_ci**See also** 2961425bb815Sopenharmony_ci 2962425bb815Sopenharmony_ci- [jerry_create_string](#jerry_create_string) 2963425bb815Sopenharmony_ci- [jerry_get_string_size](#jerry_get_string_size) 2964425bb815Sopenharmony_ci- [jerry_is_valid_cesu8_string](#jerry_is_valid_cesu8_string) 2965425bb815Sopenharmony_ci- [jerry_substring_to_char_buffer](#jerry_substring_to_char_buffer) 2966425bb815Sopenharmony_ci 2967425bb815Sopenharmony_ci 2968425bb815Sopenharmony_ci## jerry_string_to_utf8_char_buffer 2969425bb815Sopenharmony_ci 2970425bb815Sopenharmony_ci**Summary** 2971425bb815Sopenharmony_ci 2972425bb815Sopenharmony_ciCopy the characters of a string into a specified utf-8 buffer. 2973425bb815Sopenharmony_ciThe '\0' character could occur in character buffer. Returns 0, 2974425bb815Sopenharmony_ciif the value parameter is not a string or the buffer is not 2975425bb815Sopenharmony_cilarge enough for the whole string. 2976425bb815Sopenharmony_ci 2977425bb815Sopenharmony_ci*Note*: Does not put '\0' to the end of string, the return value identifies 2978425bb815Sopenharmony_cithe number of valid bytes in the output buffer. 2979425bb815Sopenharmony_ci 2980425bb815Sopenharmony_ci*Note*: If the size of the string in jerry value is larger than the size of the 2981425bb815Sopenharmony_citarget buffer, the copy will fail. To copy a substring the 2982425bb815Sopenharmony_ci[jerry_substring_to_utf8_char_buffer](#jerry_substring_to_utf8_char_buffer) 2983425bb815Sopenharmony_ciAPI function is recommended instead. 2984425bb815Sopenharmony_ci 2985425bb815Sopenharmony_ci**Prototype** 2986425bb815Sopenharmony_ci 2987425bb815Sopenharmony_ci```c 2988425bb815Sopenharmony_cijerry_size_t 2989425bb815Sopenharmony_cijerry_string_to_utf8_char_buffer (const jerry_value_t value, 2990425bb815Sopenharmony_ci jerry_char_t *buffer_p, 2991425bb815Sopenharmony_ci jerry_size_t buffer_size); 2992425bb815Sopenharmony_ci``` 2993425bb815Sopenharmony_ci 2994425bb815Sopenharmony_ci- `value` - input string value 2995425bb815Sopenharmony_ci- `buffer_p` - pointer to output buffer 2996425bb815Sopenharmony_ci- `buffer_size` - size of the buffer 2997425bb815Sopenharmony_ci- return value - number of bytes, actually copied to the buffer 2998425bb815Sopenharmony_ci 2999425bb815Sopenharmony_ci*New in version 2.0*. 3000425bb815Sopenharmony_ci 3001425bb815Sopenharmony_ci**Example** 3002425bb815Sopenharmony_ci 3003425bb815Sopenharmony_ci```c 3004425bb815Sopenharmony_ci{ 3005425bb815Sopenharmony_ci jerry_value_t value; 3006425bb815Sopenharmony_ci ... // create or acquire value 3007425bb815Sopenharmony_ci 3008425bb815Sopenharmony_ci jerry_size_t req_sz = jerry_get_utf8_string_size (value); 3009425bb815Sopenharmony_ci jerry_char_t str_buf_p[req_sz]; 3010425bb815Sopenharmony_ci 3011425bb815Sopenharmony_ci jerry_size_t bytes_copied = jerry_string_to_utf8_char_buffer (value, str_buf_p, req_sz); 3012425bb815Sopenharmony_ci 3013425bb815Sopenharmony_ci jerry_release_value (value); 3014425bb815Sopenharmony_ci} 3015425bb815Sopenharmony_ci``` 3016425bb815Sopenharmony_ci 3017425bb815Sopenharmony_ci**See also** 3018425bb815Sopenharmony_ci 3019425bb815Sopenharmony_ci- [jerry_create_string_from_utf8](#jerry_create_string_from_utf8) 3020425bb815Sopenharmony_ci- [jerry_get_utf8_string_size](#jerry_get_utf8_string_size) 3021425bb815Sopenharmony_ci- [jerry_is_valid_utf8_string](#jerry_is_valid_utf8_string) 3022425bb815Sopenharmony_ci- [jerry_substring_to_utf8_char_buffer](#jerry_substring_to_utf8_char_buffer) 3023425bb815Sopenharmony_ci 3024425bb815Sopenharmony_ci 3025425bb815Sopenharmony_ci## jerry_substring_to_char_buffer 3026425bb815Sopenharmony_ci 3027425bb815Sopenharmony_ci**Summary** 3028425bb815Sopenharmony_ci 3029425bb815Sopenharmony_ciCopy the characters of a cesu-8 encoded substring into a specified buffer. 3030425bb815Sopenharmony_ciThe '\0' character could occur in character buffer. Returns 0, if the value 3031425bb815Sopenharmony_ciparameter is not a string. It will extract the substring between the 3032425bb815Sopenharmony_cispecified start position and the end position (or the end of the string, 3033425bb815Sopenharmony_ciwhichever comes first). 3034425bb815Sopenharmony_ci 3035425bb815Sopenharmony_ci*Note*: Does not put '\0' to the end of string, the return value identifies 3036425bb815Sopenharmony_cithe number of valid bytes in the output buffer. 3037425bb815Sopenharmony_ci 3038425bb815Sopenharmony_ci**Prototype** 3039425bb815Sopenharmony_ci 3040425bb815Sopenharmony_ci```c 3041425bb815Sopenharmony_cijerry_size_t 3042425bb815Sopenharmony_cijerry_substring_to_char_buffer (const jerry_value_t value, 3043425bb815Sopenharmony_ci jerry_length_t start_pos, 3044425bb815Sopenharmony_ci jerry_length_t end_pos, 3045425bb815Sopenharmony_ci jerry_char_t *buffer_p, 3046425bb815Sopenharmony_ci jerry_size_t buffer_size); 3047425bb815Sopenharmony_ci``` 3048425bb815Sopenharmony_ci 3049425bb815Sopenharmony_ci- `value` - input string value 3050425bb815Sopenharmony_ci- `start_pos` - position of the first character 3051425bb815Sopenharmony_ci- `end_pos` - position of the last character 3052425bb815Sopenharmony_ci- `buffer_p` - pointer to output buffer 3053425bb815Sopenharmony_ci- `buffer_size` - size of the buffer 3054425bb815Sopenharmony_ci- return value - number of bytes, actually copied to the buffer 3055425bb815Sopenharmony_ci 3056425bb815Sopenharmony_ci*New in version 2.0*. 3057425bb815Sopenharmony_ci 3058425bb815Sopenharmony_ci**Example** 3059425bb815Sopenharmony_ci 3060425bb815Sopenharmony_ci```c 3061425bb815Sopenharmony_ci{ 3062425bb815Sopenharmony_ci jerry_value_t value; 3063425bb815Sopenharmony_ci ... // create or acquire value 3064425bb815Sopenharmony_ci 3065425bb815Sopenharmony_ci jerry_size_t req_sz = jerry_get_string_size (value); 3066425bb815Sopenharmony_ci jerry_char_t str_buf_p[req_sz]; 3067425bb815Sopenharmony_ci jerry_length_t start_pos = 0; 3068425bb815Sopenharmony_ci jerry_length_t end_pos = jerry_get_string_length (value); 3069425bb815Sopenharmony_ci 3070425bb815Sopenharmony_ci jerry_substring_to_char_buffer (value, start_pos, end_pos, str_buf_p, req_sz); 3071425bb815Sopenharmony_ci 3072425bb815Sopenharmony_ci jerry_release_value (value); 3073425bb815Sopenharmony_ci} 3074425bb815Sopenharmony_ci``` 3075425bb815Sopenharmony_ci 3076425bb815Sopenharmony_ci**See also** 3077425bb815Sopenharmony_ci 3078425bb815Sopenharmony_ci- [jerry_create_string](#jerry_create_string) 3079425bb815Sopenharmony_ci- [jerry_get_string_size](#jerry_get_string_size) 3080425bb815Sopenharmony_ci- [jerry_get_string_length](#jerry_get_string_length) 3081425bb815Sopenharmony_ci- [jerry_is_valid_cesu8_string](#jerry_is_valid_cesu8_string) 3082425bb815Sopenharmony_ci 3083425bb815Sopenharmony_ci 3084425bb815Sopenharmony_ci## jerry_substring_to_utf8_char_buffer 3085425bb815Sopenharmony_ci 3086425bb815Sopenharmony_ci**Summary** 3087425bb815Sopenharmony_ci 3088425bb815Sopenharmony_ciCopy the characters of an utf-8 encoded substring into a specified buffer. 3089425bb815Sopenharmony_ciThe '\0' character could occur in character buffer. Returns 0, if the value 3090425bb815Sopenharmony_ciparameter is not a string. It will extract the substring between the specified 3091425bb815Sopenharmony_cistart position and the end position (or the end of the string, whichever 3092425bb815Sopenharmony_cicomes first). 3093425bb815Sopenharmony_ci 3094425bb815Sopenharmony_ci*Note*: Does not put '\0' to the end of string, the return value identifies 3095425bb815Sopenharmony_cithe number of valid bytes in the output buffer. 3096425bb815Sopenharmony_ci 3097425bb815Sopenharmony_ci**Prototype** 3098425bb815Sopenharmony_ci 3099425bb815Sopenharmony_ci```c 3100425bb815Sopenharmony_cijerry_size_t 3101425bb815Sopenharmony_cijerry_substring_to_utf8_char_buffer (const jerry_value_t value, 3102425bb815Sopenharmony_ci jerry_length_t start_pos, 3103425bb815Sopenharmony_ci jerry_length_t end_pos, 3104425bb815Sopenharmony_ci jerry_char_t *buffer_p, 3105425bb815Sopenharmony_ci jerry_size_t buffer_size); 3106425bb815Sopenharmony_ci``` 3107425bb815Sopenharmony_ci 3108425bb815Sopenharmony_ci- `value` - input string value 3109425bb815Sopenharmony_ci- `start_pos` - position of the first character 3110425bb815Sopenharmony_ci- `end_pos` - position of the last character 3111425bb815Sopenharmony_ci- `buffer_p` - pointer to output buffer 3112425bb815Sopenharmony_ci- `buffer_size` - size of the buffer 3113425bb815Sopenharmony_ci- return value - number of bytes, actually copied to the buffer 3114425bb815Sopenharmony_ci 3115425bb815Sopenharmony_ci*New in version 2.0*. 3116425bb815Sopenharmony_ci 3117425bb815Sopenharmony_ci**Example** 3118425bb815Sopenharmony_ci 3119425bb815Sopenharmony_ci```c 3120425bb815Sopenharmony_ci{ 3121425bb815Sopenharmony_ci jerry_value_t value; 3122425bb815Sopenharmony_ci ... // create or acquire value 3123425bb815Sopenharmony_ci 3124425bb815Sopenharmony_ci jerry_size_t req_sz = jerry_get_utf8_string_size (value); 3125425bb815Sopenharmony_ci jerry_char_t str_buf_p[req_sz]; 3126425bb815Sopenharmony_ci jerry_length_t start_pos = 0; 3127425bb815Sopenharmony_ci jerry_length_t end_pos = jerry_get_utf8_string_length (value); 3128425bb815Sopenharmony_ci 3129425bb815Sopenharmony_ci jerry_substring_to_utf8_char_buffer (value, start_pos, end_pos, str_buf_p, req_sz); 3130425bb815Sopenharmony_ci 3131425bb815Sopenharmony_ci jerry_release_value (value); 3132425bb815Sopenharmony_ci} 3133425bb815Sopenharmony_ci``` 3134425bb815Sopenharmony_ci 3135425bb815Sopenharmony_ci**See also** 3136425bb815Sopenharmony_ci 3137425bb815Sopenharmony_ci- [jerry_create_string_from_utf8](#jerry_create_string_from_utf8) 3138425bb815Sopenharmony_ci- [jerry_get_utf8_string_size](#jerry_get_utf8_string_size) 3139425bb815Sopenharmony_ci- [jerry_get_utf8_string_length](#jerry_get_utf8_string_length) 3140425bb815Sopenharmony_ci- [jerry_is_valid_utf8_string](#jerry_is_valid_utf8_string) 3141425bb815Sopenharmony_ci 3142425bb815Sopenharmony_ci 3143425bb815Sopenharmony_ci# Functions for array object values 3144425bb815Sopenharmony_ci 3145425bb815Sopenharmony_ci## jerry_get_array_length 3146425bb815Sopenharmony_ci 3147425bb815Sopenharmony_ci**Summary** 3148425bb815Sopenharmony_ci 3149425bb815Sopenharmony_ciGet length of an array object. Returns zero, if the given parameter is not an array object. 3150425bb815Sopenharmony_ci 3151425bb815Sopenharmony_ci**Prototype** 3152425bb815Sopenharmony_ci 3153425bb815Sopenharmony_ci```c 3154425bb815Sopenharmony_ciuint32_t 3155425bb815Sopenharmony_cijerry_get_array_length (const jerry_value_t value); 3156425bb815Sopenharmony_ci``` 3157425bb815Sopenharmony_ci 3158425bb815Sopenharmony_ci- `value` - input array value 3159425bb815Sopenharmony_ci- return value - length of the given array 3160425bb815Sopenharmony_ci 3161425bb815Sopenharmony_ci**Example** 3162425bb815Sopenharmony_ci 3163425bb815Sopenharmony_ci```c 3164425bb815Sopenharmony_ci{ 3165425bb815Sopenharmony_ci jerry_value_t value; 3166425bb815Sopenharmony_ci ... // create or acquire value 3167425bb815Sopenharmony_ci 3168425bb815Sopenharmony_ci uint32_t len = jerry_get_array_length (value); 3169425bb815Sopenharmony_ci 3170425bb815Sopenharmony_ci jerry_release_value (value); 3171425bb815Sopenharmony_ci} 3172425bb815Sopenharmony_ci``` 3173425bb815Sopenharmony_ci 3174425bb815Sopenharmony_ci**See also** 3175425bb815Sopenharmony_ci 3176425bb815Sopenharmony_ci- [jerry_create_array](#jerry_create_array) 3177425bb815Sopenharmony_ci 3178425bb815Sopenharmony_ci 3179425bb815Sopenharmony_ci# Converters of 'jerry_value_t' 3180425bb815Sopenharmony_ci 3181425bb815Sopenharmony_ciFunctions for converting API values to another value type. 3182425bb815Sopenharmony_ci 3183425bb815Sopenharmony_ci## jerry_value_to_boolean 3184425bb815Sopenharmony_ci 3185425bb815Sopenharmony_ci**Summary** 3186425bb815Sopenharmony_ci 3187425bb815Sopenharmony_ciCall ToBoolean operation on the api value. 3188425bb815Sopenharmony_ci 3189425bb815Sopenharmony_ci**Prototype** 3190425bb815Sopenharmony_ci 3191425bb815Sopenharmony_ci```c 3192425bb815Sopenharmony_cibool 3193425bb815Sopenharmony_cijerry_value_to_boolean (const jerry_value_t value); 3194425bb815Sopenharmony_ci``` 3195425bb815Sopenharmony_ci 3196425bb815Sopenharmony_ci- `value` - api value 3197425bb815Sopenharmony_ci- return value 3198425bb815Sopenharmony_ci - true, if the logical value is true 3199425bb815Sopenharmony_ci - false, otherwise 3200425bb815Sopenharmony_ci 3201425bb815Sopenharmony_ci**Example** 3202425bb815Sopenharmony_ci 3203425bb815Sopenharmony_ci```c 3204425bb815Sopenharmony_ci{ 3205425bb815Sopenharmony_ci jerry_value_t value; 3206425bb815Sopenharmony_ci ... // create or acquire value 3207425bb815Sopenharmony_ci 3208425bb815Sopenharmony_ci bool b = jerry_value_to_boolean (value); 3209425bb815Sopenharmony_ci 3210425bb815Sopenharmony_ci jerry_release_value (value); 3211425bb815Sopenharmony_ci} 3212425bb815Sopenharmony_ci 3213425bb815Sopenharmony_ci``` 3214425bb815Sopenharmony_ci 3215425bb815Sopenharmony_ci**See also** 3216425bb815Sopenharmony_ci 3217425bb815Sopenharmony_ci- [jerry_value_to_primitive](#jerry_value_to_primitive) 3218425bb815Sopenharmony_ci 3219425bb815Sopenharmony_ci## jerry_value_to_number 3220425bb815Sopenharmony_ci 3221425bb815Sopenharmony_ci**Summary** 3222425bb815Sopenharmony_ci 3223425bb815Sopenharmony_ciCall ToNumber operation on the api value. 3224425bb815Sopenharmony_ci 3225425bb815Sopenharmony_ci*Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 3226425bb815Sopenharmony_ciis no longer needed. 3227425bb815Sopenharmony_ci 3228425bb815Sopenharmony_ci**Prototype** 3229425bb815Sopenharmony_ci 3230425bb815Sopenharmony_ci```c 3231425bb815Sopenharmony_cijerry_value_t 3232425bb815Sopenharmony_cijerry_value_to_number (const jerry_value_t value); 3233425bb815Sopenharmony_ci``` 3234425bb815Sopenharmony_ci 3235425bb815Sopenharmony_ci- `value` - api value 3236425bb815Sopenharmony_ci- return value 3237425bb815Sopenharmony_ci - converted number value, if success 3238425bb815Sopenharmony_ci - thrown error, otherwise 3239425bb815Sopenharmony_ci 3240425bb815Sopenharmony_ci**Example** 3241425bb815Sopenharmony_ci 3242425bb815Sopenharmony_ci```c 3243425bb815Sopenharmony_ci{ 3244425bb815Sopenharmony_ci jerry_value_t value; 3245425bb815Sopenharmony_ci ... // create or acquire value 3246425bb815Sopenharmony_ci 3247425bb815Sopenharmony_ci jerry_value_t number_value = jerry_value_to_number (value); 3248425bb815Sopenharmony_ci 3249425bb815Sopenharmony_ci jerry_release_value (number_value); 3250425bb815Sopenharmony_ci jerry_release_value (value); 3251425bb815Sopenharmony_ci} 3252425bb815Sopenharmony_ci 3253425bb815Sopenharmony_ci``` 3254425bb815Sopenharmony_ci 3255425bb815Sopenharmony_ci**See also** 3256425bb815Sopenharmony_ci 3257425bb815Sopenharmony_ci- [jerry_value_to_primitive](#jerry_value_to_primitive) 3258425bb815Sopenharmony_ci 3259425bb815Sopenharmony_ci## jerry_value_to_object 3260425bb815Sopenharmony_ci 3261425bb815Sopenharmony_ci**Summary** 3262425bb815Sopenharmony_ci 3263425bb815Sopenharmony_ciCall ToObject operation on the api value. 3264425bb815Sopenharmony_ci 3265425bb815Sopenharmony_ci*Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 3266425bb815Sopenharmony_ciis no longer needed. 3267425bb815Sopenharmony_ci 3268425bb815Sopenharmony_ci**Prototype** 3269425bb815Sopenharmony_ci 3270425bb815Sopenharmony_ci```c 3271425bb815Sopenharmony_cijerry_value_t 3272425bb815Sopenharmony_cijerry_value_to_object (const jerry_value_t value); 3273425bb815Sopenharmony_ci``` 3274425bb815Sopenharmony_ci 3275425bb815Sopenharmony_ci- `value` - api value 3276425bb815Sopenharmony_ci- return value 3277425bb815Sopenharmony_ci - converted object value, if success 3278425bb815Sopenharmony_ci - thrown error, otherwise 3279425bb815Sopenharmony_ci 3280425bb815Sopenharmony_ci**Example** 3281425bb815Sopenharmony_ci 3282425bb815Sopenharmony_ci```c 3283425bb815Sopenharmony_ci{ 3284425bb815Sopenharmony_ci jerry_value_t value; 3285425bb815Sopenharmony_ci ... // create or acquire value 3286425bb815Sopenharmony_ci 3287425bb815Sopenharmony_ci jerry_value_t object_value = jerry_value_to_object (value); 3288425bb815Sopenharmony_ci 3289425bb815Sopenharmony_ci jerry_release_value (object_value); 3290425bb815Sopenharmony_ci jerry_release_value (value); 3291425bb815Sopenharmony_ci} 3292425bb815Sopenharmony_ci``` 3293425bb815Sopenharmony_ci 3294425bb815Sopenharmony_ci**See also** 3295425bb815Sopenharmony_ci 3296425bb815Sopenharmony_ci- [jerry_value_to_primitive](#jerry_value_to_primitive) 3297425bb815Sopenharmony_ci 3298425bb815Sopenharmony_ci## jerry_value_to_primitive 3299425bb815Sopenharmony_ci 3300425bb815Sopenharmony_ci**Summary** 3301425bb815Sopenharmony_ci 3302425bb815Sopenharmony_ciCall ToPrimitive operation on the api value. 3303425bb815Sopenharmony_ci 3304425bb815Sopenharmony_ci*Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 3305425bb815Sopenharmony_ciis no longer needed. 3306425bb815Sopenharmony_ci 3307425bb815Sopenharmony_ci**Prototype** 3308425bb815Sopenharmony_ci 3309425bb815Sopenharmony_ci```c 3310425bb815Sopenharmony_cijerry_value_t 3311425bb815Sopenharmony_cijerry_value_to_primitive (const jerry_value_t value); 3312425bb815Sopenharmony_ci``` 3313425bb815Sopenharmony_ci 3314425bb815Sopenharmony_ci- `value` - api value 3315425bb815Sopenharmony_ci- return value 3316425bb815Sopenharmony_ci - converted primitive value, if success 3317425bb815Sopenharmony_ci - thrown error, otherwise 3318425bb815Sopenharmony_ci 3319425bb815Sopenharmony_ci**Example** 3320425bb815Sopenharmony_ci 3321425bb815Sopenharmony_ci```c 3322425bb815Sopenharmony_ci{ 3323425bb815Sopenharmony_ci jerry_value_t value; 3324425bb815Sopenharmony_ci ... // create or acquire value 3325425bb815Sopenharmony_ci 3326425bb815Sopenharmony_ci jerry_value_t prim_value = jerry_value_to_primitive (value); 3327425bb815Sopenharmony_ci 3328425bb815Sopenharmony_ci jerry_release_value (prim_value); 3329425bb815Sopenharmony_ci jerry_release_value (value); 3330425bb815Sopenharmony_ci} 3331425bb815Sopenharmony_ci``` 3332425bb815Sopenharmony_ci 3333425bb815Sopenharmony_ci**See also** 3334425bb815Sopenharmony_ci 3335425bb815Sopenharmony_ci- [jerry_value_t](#jerry_value_t) 3336425bb815Sopenharmony_ci 3337425bb815Sopenharmony_ci## jerry_value_to_string 3338425bb815Sopenharmony_ci 3339425bb815Sopenharmony_ci**Summary** 3340425bb815Sopenharmony_ci 3341425bb815Sopenharmony_ciCall the ToString ecma builtin operation on the api value. 3342425bb815Sopenharmony_ci 3343425bb815Sopenharmony_ci*Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 3344425bb815Sopenharmony_ciis no longer needed. 3345425bb815Sopenharmony_ci 3346425bb815Sopenharmony_ci**Prototype** 3347425bb815Sopenharmony_ci 3348425bb815Sopenharmony_ci```c 3349425bb815Sopenharmony_cijerry_value_t 3350425bb815Sopenharmony_cijerry_value_to_string (const jerry_value_t value); 3351425bb815Sopenharmony_ci``` 3352425bb815Sopenharmony_ci 3353425bb815Sopenharmony_ci- `value` - api value 3354425bb815Sopenharmony_ci- return value 3355425bb815Sopenharmony_ci - converted string value, if success 3356425bb815Sopenharmony_ci - thrown error, otherwise 3357425bb815Sopenharmony_ci 3358425bb815Sopenharmony_ci**Example** 3359425bb815Sopenharmony_ci 3360425bb815Sopenharmony_ci```c 3361425bb815Sopenharmony_ci{ 3362425bb815Sopenharmony_ci jerry_value_t value; 3363425bb815Sopenharmony_ci ... // create or acquire value 3364425bb815Sopenharmony_ci 3365425bb815Sopenharmony_ci jerry_value_t string_value = jerry_value_to_string (value); 3366425bb815Sopenharmony_ci 3367425bb815Sopenharmony_ci jerry_release_value (string_value); 3368425bb815Sopenharmony_ci jerry_release_value (value); 3369425bb815Sopenharmony_ci} 3370425bb815Sopenharmony_ci``` 3371425bb815Sopenharmony_ci 3372425bb815Sopenharmony_ci**See also** 3373425bb815Sopenharmony_ci 3374425bb815Sopenharmony_ci- [jerry_value_to_primitive](#jerry_value_to_primitive) 3375425bb815Sopenharmony_ci 3376425bb815Sopenharmony_ci 3377425bb815Sopenharmony_ci# Functions for promise objects 3378425bb815Sopenharmony_ci 3379425bb815Sopenharmony_ciThese APIs all depend on the ES2015-subset profile (or on some build options). 3380425bb815Sopenharmony_ci 3381425bb815Sopenharmony_ci## jerry_get_promise_result 3382425bb815Sopenharmony_ci 3383425bb815Sopenharmony_ci**Summary** 3384425bb815Sopenharmony_ci 3385425bb815Sopenharmony_ciThe function returns the result of a Promise object. 3386425bb815Sopenharmony_ci 3387425bb815Sopenharmony_ci*Notes*: 3388425bb815Sopenharmony_ci- Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 3389425bb815Sopenharmony_ci is no longer needed. 3390425bb815Sopenharmony_ci- This API depends on a build option (`JERRY_ES2015_BUILTIN_PROMISE`) and can be checked 3391425bb815Sopenharmony_ci in runtime with the `JERRY_FEATURE_PROMISE` feature enum value, 3392425bb815Sopenharmony_ci see: [jerry_is_feature_enabled](#jerry_is_feature_enabled). 3393425bb815Sopenharmony_ci- The ES2015-subset profile enables this by default. 3394425bb815Sopenharmony_ci 3395425bb815Sopenharmony_ci 3396425bb815Sopenharmony_ci**Prototype** 3397425bb815Sopenharmony_ci 3398425bb815Sopenharmony_ci```c 3399425bb815Sopenharmony_cijerry_value_t 3400425bb815Sopenharmony_cijerry_get_promise_result (const jerry_value_t promise); 3401425bb815Sopenharmony_ci``` 3402425bb815Sopenharmony_ci 3403425bb815Sopenharmony_ci- `promise` - the input Promise object. 3404425bb815Sopenharmony_ci- return 3405425bb815Sopenharmony_ci - The result of the Promise. 3406425bb815Sopenharmony_ci - If the Promise is not resolved yet the result is the 'undefined' value. 3407425bb815Sopenharmony_ci - A TypeError is returned if the input argument was not a Promise object or 3408425bb815Sopenharmony_ci the Promise support was not built into the library. 3409425bb815Sopenharmony_ci 3410425bb815Sopenharmony_ci*New in version 2.2*. 3411425bb815Sopenharmony_ci 3412425bb815Sopenharmony_ci**Example** 3413425bb815Sopenharmony_ci 3414425bb815Sopenharmony_ci[doctest]: # (test="compile") 3415425bb815Sopenharmony_ci 3416425bb815Sopenharmony_ci```c 3417425bb815Sopenharmony_ci#include <jerryscript.h> 3418425bb815Sopenharmony_ci 3419425bb815Sopenharmony_cistatic void 3420425bb815Sopenharmony_ciexample (void) 3421425bb815Sopenharmony_ci{ 3422425bb815Sopenharmony_ci // acquire/create a promise object. 3423425bb815Sopenharmony_ci jerry_value_t promise = jerry_create_promise (); 3424425bb815Sopenharmony_ci { 3425425bb815Sopenharmony_ci // prepare the argumnent for the resolve or reject. 3426425bb815Sopenharmony_ci jerry_value_t argument = jerry_create_number (33); 3427425bb815Sopenharmony_ci 3428425bb815Sopenharmony_ci jerry_value_t is_ok = jerry_resolve_or_reject_promise (promise, 3429425bb815Sopenharmony_ci argument, 3430425bb815Sopenharmony_ci true); 3431425bb815Sopenharmony_ci // 'is_ok' should be checked if it is an error or not. 3432425bb815Sopenharmony_ci // skipped in this example 3433425bb815Sopenharmony_ci jerry_release_value (is_ok); 3434425bb815Sopenharmony_ci jerry_release_value (argument); 3435425bb815Sopenharmony_ci } 3436425bb815Sopenharmony_ci 3437425bb815Sopenharmony_ci jerry_value_t promise_result = jerry_get_promise_result (promise); 3438425bb815Sopenharmony_ci // 'promise_result' is now the number 33. 3439425bb815Sopenharmony_ci 3440425bb815Sopenharmony_ci jerry_release_value (promise_result); 3441425bb815Sopenharmony_ci jerry_release_value (promise); 3442425bb815Sopenharmony_ci} 3443425bb815Sopenharmony_ci``` 3444425bb815Sopenharmony_ci 3445425bb815Sopenharmony_ci**See also** 3446425bb815Sopenharmony_ci 3447425bb815Sopenharmony_ci- [jerry_create_promise](#jerry_create_promise) 3448425bb815Sopenharmony_ci- [jerry_promise_state_t](#jerry_promise_state_t) 3449425bb815Sopenharmony_ci 3450425bb815Sopenharmony_ci## jerry_get_promise_state 3451425bb815Sopenharmony_ci 3452425bb815Sopenharmony_ci**Summary** 3453425bb815Sopenharmony_ci 3454425bb815Sopenharmony_ci*Notes*: 3455425bb815Sopenharmony_ci- Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 3456425bb815Sopenharmony_ci is no longer needed. 3457425bb815Sopenharmony_ci- This API depends on a build option (`JERRY_ES2015_BUILTIN_PROMISE`) and can be checked 3458425bb815Sopenharmony_ci in runtime with the `JERRY_FEATURE_PROMISE` feature enum value, 3459425bb815Sopenharmony_ci see: [jerry_is_feature_enabled](#jerry_is_feature_enabled). 3460425bb815Sopenharmony_ci- The ES2015-subset profile enables this by default. 3461425bb815Sopenharmony_ci 3462425bb815Sopenharmony_ci 3463425bb815Sopenharmony_ci**Prototype** 3464425bb815Sopenharmony_ci 3465425bb815Sopenharmony_ci```c 3466425bb815Sopenharmony_cijerry_promise_state_t 3467425bb815Sopenharmony_cijerry_get_promise_state (const jerry_value_t promise); 3468425bb815Sopenharmony_ci``` 3469425bb815Sopenharmony_ci 3470425bb815Sopenharmony_ci- `promise` - the input promise object. 3471425bb815Sopenharmony_ci- return 3472425bb815Sopenharmony_ci - [jerry_promise_state_t](#jerry_promise_state_t) 3473425bb815Sopenharmony_ci - `JERRY_PROMISE_STATE_NONE` is returned if the input argument was not a promise object or 3474425bb815Sopenharmony_ci the Promise support was not built into the library. 3475425bb815Sopenharmony_ci 3476425bb815Sopenharmony_ci*New in version 2.2*. 3477425bb815Sopenharmony_ci 3478425bb815Sopenharmony_ci**Example** 3479425bb815Sopenharmony_ci 3480425bb815Sopenharmony_ci[doctest]: # (test="compile") 3481425bb815Sopenharmony_ci 3482425bb815Sopenharmony_ci```c 3483425bb815Sopenharmony_ci#include <jerryscript.h> 3484425bb815Sopenharmony_ci 3485425bb815Sopenharmony_cistatic void 3486425bb815Sopenharmony_ciexample (void) 3487425bb815Sopenharmony_ci{ 3488425bb815Sopenharmony_ci // acquire/create a promise object. 3489425bb815Sopenharmony_ci jerry_value_t promise = jerry_create_promise (); 3490425bb815Sopenharmony_ci 3491425bb815Sopenharmony_ci jerry_promise_state_t start_state = jerry_get_promise_state (promise); 3492425bb815Sopenharmony_ci // a Promise have a default state of JERRY_PROMISE_STATE_PENDING 3493425bb815Sopenharmony_ci 3494425bb815Sopenharmony_ci { 3495425bb815Sopenharmony_ci // prepare the argumnent for the resolve or reject. 3496425bb815Sopenharmony_ci jerry_value_t argument = jerry_create_number (33); 3497425bb815Sopenharmony_ci 3498425bb815Sopenharmony_ci jerry_value_t is_ok = jerry_resolve_or_reject_promise (promise, 3499425bb815Sopenharmony_ci argument, 3500425bb815Sopenharmony_ci true); 3501425bb815Sopenharmony_ci // 'is_ok' should be checked if it is an error or not. 3502425bb815Sopenharmony_ci // skipped in this example 3503425bb815Sopenharmony_ci jerry_release_value (is_ok); 3504425bb815Sopenharmony_ci jerry_release_value (argument); 3505425bb815Sopenharmony_ci } 3506425bb815Sopenharmony_ci 3507425bb815Sopenharmony_ci jerry_promise_state_t current_state = jerry_get_promise_state (promise); 3508425bb815Sopenharmony_ci // at this point the Promise should be in the JERRY_PROMISE_STATE_FULFILLED state. 3509425bb815Sopenharmony_ci 3510425bb815Sopenharmony_ci jerry_release_value (promise); 3511425bb815Sopenharmony_ci} 3512425bb815Sopenharmony_ci``` 3513425bb815Sopenharmony_ci 3514425bb815Sopenharmony_ci**See also** 3515425bb815Sopenharmony_ci 3516425bb815Sopenharmony_ci- [jerry_create_promise](#jerry_create_promise) 3517425bb815Sopenharmony_ci- [jerry_promise_state_t](#jerry_promise_state_t) 3518425bb815Sopenharmony_ci 3519425bb815Sopenharmony_ci## jerry_resolve_or_reject_promise 3520425bb815Sopenharmony_ci 3521425bb815Sopenharmony_ci**Summary** 3522425bb815Sopenharmony_ci 3523425bb815Sopenharmony_ciResolve or reject the promise with an argument. 3524425bb815Sopenharmony_ci 3525425bb815Sopenharmony_ci*Note*: 3526425bb815Sopenharmony_ci- Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 3527425bb815Sopenharmony_ci is no longer needed. 3528425bb815Sopenharmony_ci- This API depends on a build option (`JERRY_ES2015_BUILTIN_PROMISE`) and can be checked 3529425bb815Sopenharmony_ci in runtime with the `JERRY_FEATURE_PROMISE` feature enum value, 3530425bb815Sopenharmony_ci see: [jerry_is_feature_enabled](#jerry_is_feature_enabled). 3531425bb815Sopenharmony_ci- The ES2015-subset profile enables this by default. 3532425bb815Sopenharmony_ci 3533425bb815Sopenharmony_ci 3534425bb815Sopenharmony_ci**Prototype** 3535425bb815Sopenharmony_ci 3536425bb815Sopenharmony_ci```c 3537425bb815Sopenharmony_cijerry_value_t 3538425bb815Sopenharmony_cijerry_resolve_or_reject_promise (jerry_value_t promise, 3539425bb815Sopenharmony_ci jerry_value_t argument, 3540425bb815Sopenharmony_ci bool is_resolve) 3541425bb815Sopenharmony_ci``` 3542425bb815Sopenharmony_ci 3543425bb815Sopenharmony_ci- `promise` - the promise value 3544425bb815Sopenharmony_ci- `argument` - the argument for resolve or reject 3545425bb815Sopenharmony_ci- `is_resolve` - whether the promise should be resolved or rejected 3546425bb815Sopenharmony_ci- return value 3547425bb815Sopenharmony_ci - undefined jerry value - resolve or reject successed 3548425bb815Sopenharmony_ci - jerry value with error flag - otherwise 3549425bb815Sopenharmony_ci 3550425bb815Sopenharmony_ci*New in version 2.0*. 3551425bb815Sopenharmony_ci 3552425bb815Sopenharmony_ci**Example** 3553425bb815Sopenharmony_ci 3554425bb815Sopenharmony_ci```c 3555425bb815Sopenharmony_ci{ 3556425bb815Sopenharmony_ci jerry_value_t promise = ... // acquire/create a promise object. 3557425bb815Sopenharmony_ci 3558425bb815Sopenharmony_ci ... 3559425bb815Sopenharmony_ci 3560425bb815Sopenharmony_ci bool is_resolve = ... // whether the promise should be resolved or rejected 3561425bb815Sopenharmony_ci jerry_value_t argument = ... // prepare the argumnent for the resolve or reject. 3562425bb815Sopenharmony_ci 3563425bb815Sopenharmony_ci jerry_value_t is_ok = jerry_resolve_or_reject_promise (promise, 3564425bb815Sopenharmony_ci argument, 3565425bb815Sopenharmony_ci is_resolve); 3566425bb815Sopenharmony_ci 3567425bb815Sopenharmony_ci if (jerry_value_is_error (is_ok)) 3568425bb815Sopenharmony_ci { 3569425bb815Sopenharmony_ci // handle the error. 3570425bb815Sopenharmony_ci } 3571425bb815Sopenharmony_ci 3572425bb815Sopenharmony_ci jerry_release_value (is_ok); 3573425bb815Sopenharmony_ci jerry_release_value (argument); 3574425bb815Sopenharmony_ci jerry_release_value (promise); 3575425bb815Sopenharmony_ci} 3576425bb815Sopenharmony_ci``` 3577425bb815Sopenharmony_ci 3578425bb815Sopenharmony_ci**See also** 3579425bb815Sopenharmony_ci 3580425bb815Sopenharmony_ci- [jerry_release_value](#jerry_release_value) 3581425bb815Sopenharmony_ci- [jerry_value_is_error](#jerry_value_is_error) 3582425bb815Sopenharmony_ci 3583425bb815Sopenharmony_ci# Functions for symbols 3584425bb815Sopenharmony_ci 3585425bb815Sopenharmony_ciThese APIs all depend on the ES2015-subset profile (or on build options). 3586425bb815Sopenharmony_ci 3587425bb815Sopenharmony_ci## jerry_get_symbol_descriptive_string 3588425bb815Sopenharmony_ci 3589425bb815Sopenharmony_ci**Summary** 3590425bb815Sopenharmony_ci 3591425bb815Sopenharmony_ciCall the SymbolDescriptiveString ecma builtin operation on the API value. 3592425bb815Sopenharmony_ciBased on ECMA 262 v6 19.4.3.2.1 this is in the form of `Symbol(<description>)`. 3593425bb815Sopenharmony_ci 3594425bb815Sopenharmony_ci*Notes*: 3595425bb815Sopenharmony_ci- Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 3596425bb815Sopenharmony_ci is no longer needed. 3597425bb815Sopenharmony_ci- This API depends on a build option (`JERRY_ES2015_BUILTIN_SYMBOL`) and can be checked 3598425bb815Sopenharmony_ci in runtime with the `JERRY_FEATURE_SYMBOL` feature enum value, 3599425bb815Sopenharmony_ci see: [jerry_is_feature_enabled](#jerry_is_feature_enabled). 3600425bb815Sopenharmony_ci- The ES2015-subset profile enables this by default. 3601425bb815Sopenharmony_ci- If the symbol support is not enabled an error will be returned. 3602425bb815Sopenharmony_ci 3603425bb815Sopenharmony_ci**Prototype** 3604425bb815Sopenharmony_ci 3605425bb815Sopenharmony_ci```c 3606425bb815Sopenharmony_cijerry_value_t 3607425bb815Sopenharmony_cijerry_get_symbol_descriptive_string (const jerry_value_t value); 3608425bb815Sopenharmony_ci``` 3609425bb815Sopenharmony_ci 3610425bb815Sopenharmony_ci- `value` - symbol value 3611425bb815Sopenharmony_ci- return value 3612425bb815Sopenharmony_ci - string value containing the symbol's descriptive string - if success 3613425bb815Sopenharmony_ci - thrown error, otherwise 3614425bb815Sopenharmony_ci 3615425bb815Sopenharmony_ci*New in version 2.0*. 3616425bb815Sopenharmony_ci 3617425bb815Sopenharmony_ci**Example** 3618425bb815Sopenharmony_ci 3619425bb815Sopenharmony_ci[doctest]: # () 3620425bb815Sopenharmony_ci 3621425bb815Sopenharmony_ci```c 3622425bb815Sopenharmony_ci#include "jerryscript.h" 3623425bb815Sopenharmony_ci 3624425bb815Sopenharmony_ciint 3625425bb815Sopenharmony_cimain (void) 3626425bb815Sopenharmony_ci{ 3627425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 3628425bb815Sopenharmony_ci 3629425bb815Sopenharmony_ci jerry_value_t string_value = jerry_create_string ((const jerry_char_t *) "foo"); 3630425bb815Sopenharmony_ci jerry_value_t symbol_value = jerry_create_symbol (string_value); 3631425bb815Sopenharmony_ci 3632425bb815Sopenharmony_ci jerry_release_value (string_value); 3633425bb815Sopenharmony_ci 3634425bb815Sopenharmony_ci jerry_value_t symbol_desc_string = jerry_get_symbol_descriptive_string (symbol_value); 3635425bb815Sopenharmony_ci 3636425bb815Sopenharmony_ci // usage of symbol_desc_string 3637425bb815Sopenharmony_ci 3638425bb815Sopenharmony_ci jerry_release_value (symbol_desc_string); 3639425bb815Sopenharmony_ci jerry_release_value (symbol_value); 3640425bb815Sopenharmony_ci 3641425bb815Sopenharmony_ci jerry_cleanup (); 3642425bb815Sopenharmony_ci return 0; 3643425bb815Sopenharmony_ci} 3644425bb815Sopenharmony_ci``` 3645425bb815Sopenharmony_ci 3646425bb815Sopenharmony_ci 3647425bb815Sopenharmony_ci# Acquire and release API values 3648425bb815Sopenharmony_ci 3649425bb815Sopenharmony_ci## jerry_acquire_value 3650425bb815Sopenharmony_ci 3651425bb815Sopenharmony_ci**Summary** 3652425bb815Sopenharmony_ci 3653425bb815Sopenharmony_ciAcquires the specified Jerry API value. 3654425bb815Sopenharmony_ci 3655425bb815Sopenharmony_ci*Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 3656425bb815Sopenharmony_ciis no longer needed. 3657425bb815Sopenharmony_ci 3658425bb815Sopenharmony_ci**Prototype** 3659425bb815Sopenharmony_ci 3660425bb815Sopenharmony_ci```c 3661425bb815Sopenharmony_cijerry_value_t 3662425bb815Sopenharmony_cijerry_acquire_value (jerry_value_t value); 3663425bb815Sopenharmony_ci``` 3664425bb815Sopenharmony_ci 3665425bb815Sopenharmony_ci- `value` - api value 3666425bb815Sopenharmony_ci- return value - acquired value that may be used outside of the engine 3667425bb815Sopenharmony_ci 3668425bb815Sopenharmony_ci**Example** 3669425bb815Sopenharmony_ci 3670425bb815Sopenharmony_ci```c 3671425bb815Sopenharmony_ci{ 3672425bb815Sopenharmony_ci jerry_value_t object_value = jerry_create_object (); 3673425bb815Sopenharmony_ci 3674425bb815Sopenharmony_ci jerry_value_t acquired_object = jerry_acquire_value (object_value); 3675425bb815Sopenharmony_ci 3676425bb815Sopenharmony_ci jerry_release_value (object_value); 3677425bb815Sopenharmony_ci 3678425bb815Sopenharmony_ci // acquired_object refers to the created object and makes it 3679425bb815Sopenharmony_ci // available after the release of 'object_value' 3680425bb815Sopenharmony_ci 3681425bb815Sopenharmony_ci jerry_release_value (acquired_object); 3682425bb815Sopenharmony_ci} 3683425bb815Sopenharmony_ci``` 3684425bb815Sopenharmony_ci 3685425bb815Sopenharmony_ci**See also** 3686425bb815Sopenharmony_ci 3687425bb815Sopenharmony_ci- [jerry_release_value](#jerry_release_value) 3688425bb815Sopenharmony_ci- [jerry_value_t](#jerry_value_t) 3689425bb815Sopenharmony_ci 3690425bb815Sopenharmony_ci 3691425bb815Sopenharmony_ci## jerry_release_value 3692425bb815Sopenharmony_ci 3693425bb815Sopenharmony_ci**Summary** 3694425bb815Sopenharmony_ci 3695425bb815Sopenharmony_ciRelease specified Jerry API value. 3696425bb815Sopenharmony_ci 3697425bb815Sopenharmony_ci**Prototype** 3698425bb815Sopenharmony_ci 3699425bb815Sopenharmony_ci```c 3700425bb815Sopenharmony_civoid 3701425bb815Sopenharmony_cijerry_release_value (jerry_value_t value); 3702425bb815Sopenharmony_ci``` 3703425bb815Sopenharmony_ci 3704425bb815Sopenharmony_ci- `value` - api value 3705425bb815Sopenharmony_ci 3706425bb815Sopenharmony_ci**Example** 3707425bb815Sopenharmony_ci 3708425bb815Sopenharmony_ci```c 3709425bb815Sopenharmony_ci{ 3710425bb815Sopenharmony_ci jerry_value_t object_value = jerry_create_object (); 3711425bb815Sopenharmony_ci 3712425bb815Sopenharmony_ci ... 3713425bb815Sopenharmony_ci 3714425bb815Sopenharmony_ci jerry_release_value (object_value); 3715425bb815Sopenharmony_ci} 3716425bb815Sopenharmony_ci``` 3717425bb815Sopenharmony_ci 3718425bb815Sopenharmony_ci 3719425bb815Sopenharmony_ci# Create API values 3720425bb815Sopenharmony_ci 3721425bb815Sopenharmony_ciFunction for creating [API values](#jerry_value_t). 3722425bb815Sopenharmony_ci 3723425bb815Sopenharmony_ci*Note*: Every created API value must be freed with [jerry_release_value](#jerry_release_value) when it 3724425bb815Sopenharmony_ciis no longer needed. 3725425bb815Sopenharmony_ci 3726425bb815Sopenharmony_ci## jerry_create_array 3727425bb815Sopenharmony_ci 3728425bb815Sopenharmony_ci**Summary** 3729425bb815Sopenharmony_ci 3730425bb815Sopenharmony_ciCreate an array object value. 3731425bb815Sopenharmony_ci 3732425bb815Sopenharmony_ci*Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 3733425bb815Sopenharmony_ciis no longer needed. 3734425bb815Sopenharmony_ci 3735425bb815Sopenharmony_ci**Prototype** 3736425bb815Sopenharmony_ci 3737425bb815Sopenharmony_ci```c 3738425bb815Sopenharmony_cijerry_value_t 3739425bb815Sopenharmony_cijerry_create_array (uint32_t size); 3740425bb815Sopenharmony_ci``` 3741425bb815Sopenharmony_ci 3742425bb815Sopenharmony_ci - `size` - size of array; 3743425bb815Sopenharmony_ci - return value - value of the constructed array object 3744425bb815Sopenharmony_ci 3745425bb815Sopenharmony_ci **Example** 3746425bb815Sopenharmony_ci 3747425bb815Sopenharmony_ci```c 3748425bb815Sopenharmony_ci{ 3749425bb815Sopenharmony_ci jerry_value_t array = jerry_create_array (10); 3750425bb815Sopenharmony_ci 3751425bb815Sopenharmony_ci ... 3752425bb815Sopenharmony_ci 3753425bb815Sopenharmony_ci jerry_release_value (array); 3754425bb815Sopenharmony_ci} 3755425bb815Sopenharmony_ci``` 3756425bb815Sopenharmony_ci 3757425bb815Sopenharmony_ci**See also** 3758425bb815Sopenharmony_ci 3759425bb815Sopenharmony_ci- [jerry_set_property_by_index](#jerry_set_property_by_index) 3760425bb815Sopenharmony_ci- [jerry_get_property_by_index](#jerry_get_property_by_index) 3761425bb815Sopenharmony_ci 3762425bb815Sopenharmony_ci 3763425bb815Sopenharmony_ci## jerry_create_arraybuffer 3764425bb815Sopenharmony_ci 3765425bb815Sopenharmony_ci**Summary** 3766425bb815Sopenharmony_ci 3767425bb815Sopenharmony_ciCreate a jerry_value_t representing an ArrayBuffer object. 3768425bb815Sopenharmony_ci 3769425bb815Sopenharmony_ci*Note*: 3770425bb815Sopenharmony_ci - This API depends on the ES2015-subset profile. 3771425bb815Sopenharmony_ci - Returned value must be freed with [jerry_release_value](#jerry_release_value) 3772425bb815Sopenharmony_ci when it is no longer needed. 3773425bb815Sopenharmony_ci 3774425bb815Sopenharmony_ci**Prototype** 3775425bb815Sopenharmony_ci 3776425bb815Sopenharmony_ci```c 3777425bb815Sopenharmony_cijerry_value_t 3778425bb815Sopenharmony_cijerry_create_arraybuffer (jerry_length_t size); 3779425bb815Sopenharmony_ci``` 3780425bb815Sopenharmony_ci 3781425bb815Sopenharmony_ci - `size` - size of the ArrayBuffer to create **in bytes** 3782425bb815Sopenharmony_ci - return value - the new ArrayBuffer as a `jerry_value_t` 3783425bb815Sopenharmony_ci 3784425bb815Sopenharmony_ci*New in version 2.0*. 3785425bb815Sopenharmony_ci 3786425bb815Sopenharmony_ci**Example** 3787425bb815Sopenharmony_ci 3788425bb815Sopenharmony_ci```c 3789425bb815Sopenharmony_ci{ 3790425bb815Sopenharmony_ci jerry_value_t buffer_value = jerry_create_arraybuffer (15); 3791425bb815Sopenharmony_ci 3792425bb815Sopenharmony_ci ... // use the ArrayBuffer 3793425bb815Sopenharmony_ci 3794425bb815Sopenharmony_ci jerry_release_value (buffer_value); 3795425bb815Sopenharmony_ci} 3796425bb815Sopenharmony_ci``` 3797425bb815Sopenharmony_ci 3798425bb815Sopenharmony_ci**See also** 3799425bb815Sopenharmony_ci 3800425bb815Sopenharmony_ci- [jerry_arraybuffer_read](#jerry_arraybuffer_read) 3801425bb815Sopenharmony_ci- [jerry_arraybuffer_write](#jerry_arraybuffer_write) 3802425bb815Sopenharmony_ci- [jerry_value_is_arraybuffer](#jerry_value_is_arraybuffer) 3803425bb815Sopenharmony_ci- [jerry_release_value](#jerry_release_value) 3804425bb815Sopenharmony_ci 3805425bb815Sopenharmony_ci 3806425bb815Sopenharmony_ci## jerry_create_arraybuffer_external 3807425bb815Sopenharmony_ci 3808425bb815Sopenharmony_ci**Summary** 3809425bb815Sopenharmony_ci 3810425bb815Sopenharmony_ciCreates a jerry_value_t representing an ArrayBuffer object with 3811425bb815Sopenharmony_ciuser specified back-buffer. 3812425bb815Sopenharmony_ci 3813425bb815Sopenharmony_ciUser must pass a buffer pointer which is at least `size` big. 3814425bb815Sopenharmony_ciAfter the object is not needed the GC will call the `free_cb` 3815425bb815Sopenharmony_ciso the user can release the buffer which was provided. 3816425bb815Sopenharmony_ci 3817425bb815Sopenharmony_ci*Note*: 3818425bb815Sopenharmony_ci - This API depends on the ES2015-subset profile. 3819425bb815Sopenharmony_ci - Returned value must be freed with [jerry_release_value](#jerry_release_value) 3820425bb815Sopenharmony_ci when it is no longer needed. 3821425bb815Sopenharmony_ci 3822425bb815Sopenharmony_ci**Prototype** 3823425bb815Sopenharmony_ci 3824425bb815Sopenharmony_ci```c 3825425bb815Sopenharmony_cijerry_value_t 3826425bb815Sopenharmony_cijerry_create_arraybuffer_external (const jerry_length_t size 3827425bb815Sopenharmony_ci uint8_t *buffer_p, 3828425bb815Sopenharmony_ci jerry_object_native_free_callback_t free_cb); 3829425bb815Sopenharmony_ci``` 3830425bb815Sopenharmony_ci 3831425bb815Sopenharmony_ci- `size` - size of the buffer to use **in bytes** (should not be 0) 3832425bb815Sopenharmony_ci- `buffer_p` - the buffer used for the Array Buffer object (should not be a null pointer) 3833425bb815Sopenharmony_ci- `free_cb` - the callback function called when the object is released 3834425bb815Sopenharmony_ci- return value 3835425bb815Sopenharmony_ci - the new ArrayBuffer as a `jerry_value_t` 3836425bb815Sopenharmony_ci - if the `size` is zero or `buffer_p` is a null pointer this will return an empty ArrayBuffer. 3837425bb815Sopenharmony_ci 3838425bb815Sopenharmony_ci*New in version 2.0*. 3839425bb815Sopenharmony_ci 3840425bb815Sopenharmony_ci**Example** 3841425bb815Sopenharmony_ci 3842425bb815Sopenharmony_ci```c 3843425bb815Sopenharmony_ci{ 3844425bb815Sopenharmony_ci uint8_t buffer_p[15]; 3845425bb815Sopenharmony_ci jerry_value_t buffer_value = jerry_create_arraybuffer_external (15, buffer_p, NULL); 3846425bb815Sopenharmony_ci 3847425bb815Sopenharmony_ci ... // use the array buffer 3848425bb815Sopenharmony_ci 3849425bb815Sopenharmony_ci jerry_release_value (buffer_value); 3850425bb815Sopenharmony_ci} 3851425bb815Sopenharmony_ci``` 3852425bb815Sopenharmony_ci 3853425bb815Sopenharmony_ci**See also** 3854425bb815Sopenharmony_ci 3855425bb815Sopenharmony_ci- [jerry_get_arraybuffer_pointer](#jerry_get_arraybuffer_pointer) 3856425bb815Sopenharmony_ci- [jerry_arraybuffer_read](#jerry_arraybuffer_read) 3857425bb815Sopenharmony_ci- [jerry_arraybuffer_write](#jerry_arraybuffer_write) 3858425bb815Sopenharmony_ci- [jerry_value_is_arraybuffer](#jerry_value_is_arraybuffer) 3859425bb815Sopenharmony_ci- [jerry_release_value](#jerry_release_value) 3860425bb815Sopenharmony_ci- [jerry_object_native_free_callback_t](#jerry_object_native_free_callback_t) 3861425bb815Sopenharmony_ci 3862425bb815Sopenharmony_ci 3863425bb815Sopenharmony_ci## jerry_create_boolean 3864425bb815Sopenharmony_ci 3865425bb815Sopenharmony_ci**Summary** 3866425bb815Sopenharmony_ci 3867425bb815Sopenharmony_ciCreate a jerry_value_t representing a boolean value from the given boolean parameter. 3868425bb815Sopenharmony_ci 3869425bb815Sopenharmony_ci**Prototype** 3870425bb815Sopenharmony_ci 3871425bb815Sopenharmony_ci```c 3872425bb815Sopenharmony_cijerry_value_t 3873425bb815Sopenharmony_cijerry_create_boolean (bool value); 3874425bb815Sopenharmony_ci``` 3875425bb815Sopenharmony_ci 3876425bb815Sopenharmony_ci- `value` - raw boolean value. 3877425bb815Sopenharmony_ci- return value - a `jerry_value_t` created from the given boolean argument. 3878425bb815Sopenharmony_ci 3879425bb815Sopenharmony_ci**Example** 3880425bb815Sopenharmony_ci 3881425bb815Sopenharmony_ci```c 3882425bb815Sopenharmony_ci{ 3883425bb815Sopenharmony_ci jerry_value_t boolean_value = jerry_create_boolean (true); 3884425bb815Sopenharmony_ci 3885425bb815Sopenharmony_ci ... // usage of the value 3886425bb815Sopenharmony_ci 3887425bb815Sopenharmony_ci jerry_release_value (boolean_value); 3888425bb815Sopenharmony_ci} 3889425bb815Sopenharmony_ci``` 3890425bb815Sopenharmony_ci 3891425bb815Sopenharmony_ci**See also** 3892425bb815Sopenharmony_ci 3893425bb815Sopenharmony_ci- [jerry_release_value](#jerry_release_value) 3894425bb815Sopenharmony_ci 3895425bb815Sopenharmony_ci 3896425bb815Sopenharmony_ci## jerry_create_error 3897425bb815Sopenharmony_ci 3898425bb815Sopenharmony_ci**Summary** 3899425bb815Sopenharmony_ci 3900425bb815Sopenharmony_ciCreate new JavaScript error object. 3901425bb815Sopenharmony_ci 3902425bb815Sopenharmony_ciImportant! The `error_type` argument *must not be* `JERRY_ERROR_NONE`. 3903425bb815Sopenharmony_ciCreating an error with no error type is not valid. 3904425bb815Sopenharmony_ci 3905425bb815Sopenharmony_ci*Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 3906425bb815Sopenharmony_ciis no longer needed. 3907425bb815Sopenharmony_ci 3908425bb815Sopenharmony_ci**Prototype** 3909425bb815Sopenharmony_ci 3910425bb815Sopenharmony_ci```c 3911425bb815Sopenharmony_cijerry_value_t 3912425bb815Sopenharmony_cijerry_create_error (jerry_error_t error_type, 3913425bb815Sopenharmony_ci const jerry_char_t *message_p); 3914425bb815Sopenharmony_ci``` 3915425bb815Sopenharmony_ci 3916425bb815Sopenharmony_ci- `error_type` - type of error 3917425bb815Sopenharmony_ci- `message_p` - value of 'message' property of constructed error object 3918425bb815Sopenharmony_ci- return value - value of the constructed error object 3919425bb815Sopenharmony_ci 3920425bb815Sopenharmony_ci**Example** 3921425bb815Sopenharmony_ci 3922425bb815Sopenharmony_ci```c 3923425bb815Sopenharmony_ci{ 3924425bb815Sopenharmony_ci jerry_value_t error_obj = jerry_create_error (JERRY_ERROR_TYPE, 3925425bb815Sopenharmony_ci (const jerry_char_t *) "error"); 3926425bb815Sopenharmony_ci 3927425bb815Sopenharmony_ci ... // usage of error_obj 3928425bb815Sopenharmony_ci 3929425bb815Sopenharmony_ci 3930425bb815Sopenharmony_ci jerry_release_value (error_obj); 3931425bb815Sopenharmony_ci} 3932425bb815Sopenharmony_ci``` 3933425bb815Sopenharmony_ci 3934425bb815Sopenharmony_ci**See also** 3935425bb815Sopenharmony_ci 3936425bb815Sopenharmony_ci- [jerry_value_is_error](#jerry_value_is_error) 3937425bb815Sopenharmony_ci- [jerry_get_value_from_error](#jerry_get_value_from_error) 3938425bb815Sopenharmony_ci- [jerry_create_error_from_value](#jerry_create_error_from_value) 3939425bb815Sopenharmony_ci 3940425bb815Sopenharmony_ci 3941425bb815Sopenharmony_ci## jerry_create_error_sz 3942425bb815Sopenharmony_ci 3943425bb815Sopenharmony_ci**Summary** 3944425bb815Sopenharmony_ci 3945425bb815Sopenharmony_ciCreate new JavaScript error object. 3946425bb815Sopenharmony_ci 3947425bb815Sopenharmony_ci*Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 3948425bb815Sopenharmony_ciis no longer needed. 3949425bb815Sopenharmony_ci 3950425bb815Sopenharmony_ci**Prototype** 3951425bb815Sopenharmony_ci 3952425bb815Sopenharmony_ci```c 3953425bb815Sopenharmony_cijerry_value_t 3954425bb815Sopenharmony_cijerry_create_error_sz (jerry_error_t error_type, 3955425bb815Sopenharmony_ci const jerry_char_t *message_p, 3956425bb815Sopenharmony_ci jerry_size_t message_size); 3957425bb815Sopenharmony_ci``` 3958425bb815Sopenharmony_ci 3959425bb815Sopenharmony_ci- `error_type` - type of the error 3960425bb815Sopenharmony_ci- `message_p` - value of 'message' property of the constructed error object 3961425bb815Sopenharmony_ci- `message_size` - size of the message in bytes 3962425bb815Sopenharmony_ci- return value - value of the constructed error object 3963425bb815Sopenharmony_ci 3964425bb815Sopenharmony_ci**Example** 3965425bb815Sopenharmony_ci 3966425bb815Sopenharmony_ci```c 3967425bb815Sopenharmony_ci{ 3968425bb815Sopenharmony_ci const jerry_char_t message[] = "error"; 3969425bb815Sopenharmony_ci jerry_value_t error_obj = jerry_create_error_sz (JERRY_ERROR_COMMON, 3970425bb815Sopenharmony_ci message, 3971425bb815Sopenharmony_ci sizeof (message) - 1); 3972425bb815Sopenharmony_ci 3973425bb815Sopenharmony_ci ... // usage of error_obj 3974425bb815Sopenharmony_ci 3975425bb815Sopenharmony_ci jerry_release_value (error_obj); 3976425bb815Sopenharmony_ci} 3977425bb815Sopenharmony_ci``` 3978425bb815Sopenharmony_ci 3979425bb815Sopenharmony_ci**See also** 3980425bb815Sopenharmony_ci 3981425bb815Sopenharmony_ci- [jerry_create_error](#jerry_create_error) 3982425bb815Sopenharmony_ci 3983425bb815Sopenharmony_ci 3984425bb815Sopenharmony_ci## jerry_create_dataview 3985425bb815Sopenharmony_ci 3986425bb815Sopenharmony_ci**Summary** 3987425bb815Sopenharmony_ci 3988425bb815Sopenharmony_ciCreate new JavaScript DataView object. 3989425bb815Sopenharmony_ci 3990425bb815Sopenharmony_ci*Note*: 3991425bb815Sopenharmony_ci - This API depends on the ES2015-subset profile. 3992425bb815Sopenharmony_ci - Returned value must be freed with [jerry_release_value](#jerry_release_value) 3993425bb815Sopenharmony_ci when it is no longer needed. 3994425bb815Sopenharmony_ci 3995425bb815Sopenharmony_ci**Prototype** 3996425bb815Sopenharmony_ci 3997425bb815Sopenharmony_ci```c 3998425bb815Sopenharmony_cijerry_value_t 3999425bb815Sopenharmony_cijerry_create_dataview (const jerry_value_t array_buffer, 4000425bb815Sopenharmony_ci const jerry_length_t byte_offset, 4001425bb815Sopenharmony_ci const jerry_length_t byte_length) 4002425bb815Sopenharmony_ci``` 4003425bb815Sopenharmony_ci 4004425bb815Sopenharmony_ci- `array_buffer` - arrayBuffer to create DataView from 4005425bb815Sopenharmony_ci- `byte_offset` - offset in bytes, to the first byte in the buffer 4006425bb815Sopenharmony_ci- `byte_length` - number of elements in the byte array 4007425bb815Sopenharmony_ci- return value 4008425bb815Sopenharmony_ci - value of the constructed DataView object - if success 4009425bb815Sopenharmony_ci - created error - otherwise 4010425bb815Sopenharmony_ci 4011425bb815Sopenharmony_ci*New in version 2.0*. 4012425bb815Sopenharmony_ci 4013425bb815Sopenharmony_ci**Example** 4014425bb815Sopenharmony_ci 4015425bb815Sopenharmony_ci[doctest]: # () 4016425bb815Sopenharmony_ci 4017425bb815Sopenharmony_ci```c 4018425bb815Sopenharmony_ci#include "jerryscript.h" 4019425bb815Sopenharmony_ci 4020425bb815Sopenharmony_ciint 4021425bb815Sopenharmony_cimain (void) 4022425bb815Sopenharmony_ci{ 4023425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 4024425bb815Sopenharmony_ci 4025425bb815Sopenharmony_ci jerry_value_t arraybuffer = jerry_create_arraybuffer (16); 4026425bb815Sopenharmony_ci jerry_value_t dataview = jerry_create_dataview (arraybuffer, 0, 16); 4027425bb815Sopenharmony_ci 4028425bb815Sopenharmony_ci // usage of dataview 4029425bb815Sopenharmony_ci 4030425bb815Sopenharmony_ci jerry_release_value (dataview); 4031425bb815Sopenharmony_ci jerry_release_value (arraybuffer); 4032425bb815Sopenharmony_ci 4033425bb815Sopenharmony_ci jerry_cleanup (); 4034425bb815Sopenharmony_ci return 0; 4035425bb815Sopenharmony_ci} 4036425bb815Sopenharmony_ci``` 4037425bb815Sopenharmony_ci 4038425bb815Sopenharmony_ci**See also** 4039425bb815Sopenharmony_ci 4040425bb815Sopenharmony_ci- [jerry_value_is_dataview](#jerry_value_is_dataview) 4041425bb815Sopenharmony_ci- [jerry_create_arraybuffer](#jerry_create_arraybuffer) 4042425bb815Sopenharmony_ci 4043425bb815Sopenharmony_ci 4044425bb815Sopenharmony_ci## jerry_create_external_function 4045425bb815Sopenharmony_ci 4046425bb815Sopenharmony_ci**Summary** 4047425bb815Sopenharmony_ci 4048425bb815Sopenharmony_ciCreate an external function object. 4049425bb815Sopenharmony_ci 4050425bb815Sopenharmony_ci*Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 4051425bb815Sopenharmony_ciis no longer needed. 4052425bb815Sopenharmony_ci 4053425bb815Sopenharmony_ci**Prototype** 4054425bb815Sopenharmony_ci 4055425bb815Sopenharmony_ci```c 4056425bb815Sopenharmony_cijerry_value_t 4057425bb815Sopenharmony_cijerry_create_external_function (jerry_external_handler_t handler_p); 4058425bb815Sopenharmony_ci``` 4059425bb815Sopenharmony_ci 4060425bb815Sopenharmony_ci- `handler_p` - pointer to native handler of the function object 4061425bb815Sopenharmony_ci- return value - value of the constructed function object 4062425bb815Sopenharmony_ci 4063425bb815Sopenharmony_ci**Example** 4064425bb815Sopenharmony_ci 4065425bb815Sopenharmony_ci[doctest]: # () 4066425bb815Sopenharmony_ci 4067425bb815Sopenharmony_ci```c 4068425bb815Sopenharmony_ci#include <stdio.h> 4069425bb815Sopenharmony_ci#include <string.h> 4070425bb815Sopenharmony_ci#include "jerryscript.h" 4071425bb815Sopenharmony_ci 4072425bb815Sopenharmony_cistatic jerry_value_t 4073425bb815Sopenharmony_cihandler (const jerry_value_t function_obj, 4074425bb815Sopenharmony_ci const jerry_value_t this_val, 4075425bb815Sopenharmony_ci const jerry_value_t args_p[], 4076425bb815Sopenharmony_ci const jerry_length_t args_cnt) 4077425bb815Sopenharmony_ci{ 4078425bb815Sopenharmony_ci printf ("native handler called!\n"); 4079425bb815Sopenharmony_ci 4080425bb815Sopenharmony_ci return jerry_create_boolean (true); 4081425bb815Sopenharmony_ci} 4082425bb815Sopenharmony_ci 4083425bb815Sopenharmony_ciint 4084425bb815Sopenharmony_cimain (void) 4085425bb815Sopenharmony_ci{ 4086425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 4087425bb815Sopenharmony_ci 4088425bb815Sopenharmony_ci jerry_value_t func_val = jerry_create_external_function (handler); 4089425bb815Sopenharmony_ci jerry_value_t glob_obj = jerry_get_global_object (); 4090425bb815Sopenharmony_ci 4091425bb815Sopenharmony_ci // after this, script can invoke the native handler through "handler_field (1, 2, 3);" 4092425bb815Sopenharmony_ci jerry_value_t prop_name = jerry_create_string ((const jerry_char_t *) "handler_field"); 4093425bb815Sopenharmony_ci // set property and release the return value without any check 4094425bb815Sopenharmony_ci jerry_release_value (jerry_set_property (glob_obj, prop_name, func_val)); 4095425bb815Sopenharmony_ci jerry_release_value (prop_name); 4096425bb815Sopenharmony_ci 4097425bb815Sopenharmony_ci jerry_release_value (func_val); 4098425bb815Sopenharmony_ci jerry_release_value (glob_obj); 4099425bb815Sopenharmony_ci 4100425bb815Sopenharmony_ci // Test the method by calling it 4101425bb815Sopenharmony_ci const char *test_src = "handler_field ();"; 4102425bb815Sopenharmony_ci jerry_value_t ret_val = jerry_eval ((const jerry_char_t *) test_src, 4103425bb815Sopenharmony_ci strlen (test_src), 4104425bb815Sopenharmony_ci JERRY_PARSE_NO_OPTS); 4105425bb815Sopenharmony_ci // release the eval result 4106425bb815Sopenharmony_ci jerry_release_value (ret_val); 4107425bb815Sopenharmony_ci jerry_cleanup (); 4108425bb815Sopenharmony_ci return 0; 4109425bb815Sopenharmony_ci} 4110425bb815Sopenharmony_ci``` 4111425bb815Sopenharmony_ci 4112425bb815Sopenharmony_ci**See also** 4113425bb815Sopenharmony_ci 4114425bb815Sopenharmony_ci- [jerry_external_handler_t](#jerry_external_handler_t) 4115425bb815Sopenharmony_ci- [jerry_set_property](#jerry_set_property) 4116425bb815Sopenharmony_ci- [jerry_call_function](#jerry_call_function) 4117425bb815Sopenharmony_ci 4118425bb815Sopenharmony_ci 4119425bb815Sopenharmony_ci## jerry_create_number 4120425bb815Sopenharmony_ci 4121425bb815Sopenharmony_ci**Summary** 4122425bb815Sopenharmony_ci 4123425bb815Sopenharmony_ciCreates a `jerry_value_t` representing a number value. 4124425bb815Sopenharmony_ci 4125425bb815Sopenharmony_ci*Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 4126425bb815Sopenharmony_ciis no longer needed. 4127425bb815Sopenharmony_ci 4128425bb815Sopenharmony_ci**Prototype** 4129425bb815Sopenharmony_ci 4130425bb815Sopenharmony_ci```c 4131425bb815Sopenharmony_cijerry_value_t 4132425bb815Sopenharmony_cijerry_create_number (double value); 4133425bb815Sopenharmony_ci``` 4134425bb815Sopenharmony_ci 4135425bb815Sopenharmony_ci- `value` - double value from which a `jerry_value_t` will be created 4136425bb815Sopenharmony_ci- return value - a `jerry_value_t` created from the given double argument 4137425bb815Sopenharmony_ci 4138425bb815Sopenharmony_ci**Example** 4139425bb815Sopenharmony_ci 4140425bb815Sopenharmony_ci```c 4141425bb815Sopenharmony_ci{ 4142425bb815Sopenharmony_ci jerry_value_t number_value = jerry_create_number (3.14); 4143425bb815Sopenharmony_ci 4144425bb815Sopenharmony_ci ... // usage of the value 4145425bb815Sopenharmony_ci 4146425bb815Sopenharmony_ci jerry_release_value (number_value); 4147425bb815Sopenharmony_ci} 4148425bb815Sopenharmony_ci``` 4149425bb815Sopenharmony_ci 4150425bb815Sopenharmony_ci**See also** 4151425bb815Sopenharmony_ci 4152425bb815Sopenharmony_ci- [jerry_release_value](#jerry_release_value) 4153425bb815Sopenharmony_ci- [jerry_create_number_infinity](#jerry_create_number_infinity) 4154425bb815Sopenharmony_ci- [jerry_create_number_nan](#jerry_create_number_nan) 4155425bb815Sopenharmony_ci 4156425bb815Sopenharmony_ci 4157425bb815Sopenharmony_ci## jerry_create_number_infinity 4158425bb815Sopenharmony_ci 4159425bb815Sopenharmony_ci**Summary** 4160425bb815Sopenharmony_ci 4161425bb815Sopenharmony_ciCreates a `jerry_value_t` representing a positive or negative infinity value. 4162425bb815Sopenharmony_ci 4163425bb815Sopenharmony_ci*Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 4164425bb815Sopenharmony_ciis no longer needed. 4165425bb815Sopenharmony_ci 4166425bb815Sopenharmony_ci**Prototype** 4167425bb815Sopenharmony_ci 4168425bb815Sopenharmony_ci```c 4169425bb815Sopenharmony_cijerry_value_t 4170425bb815Sopenharmony_cijerry_create_number_infinity (bool sign); 4171425bb815Sopenharmony_ci``` 4172425bb815Sopenharmony_ci 4173425bb815Sopenharmony_ci- `sign` - true for negative Infinity and false for positive Infinity 4174425bb815Sopenharmony_ci- return value - a `jerry_value_t` representing the infinity value 4175425bb815Sopenharmony_ci 4176425bb815Sopenharmony_ci**Example** 4177425bb815Sopenharmony_ci 4178425bb815Sopenharmony_ci```c 4179425bb815Sopenharmony_ci{ 4180425bb815Sopenharmony_ci jerry_value_t positive_inf_value = jerry_create_number_infinity (false); 4181425bb815Sopenharmony_ci 4182425bb815Sopenharmony_ci ... // usage of the positive_inf_value 4183425bb815Sopenharmony_ci 4184425bb815Sopenharmony_ci jerry_release_value (positive_inf_value); 4185425bb815Sopenharmony_ci} 4186425bb815Sopenharmony_ci``` 4187425bb815Sopenharmony_ci 4188425bb815Sopenharmony_ci**See also** 4189425bb815Sopenharmony_ci 4190425bb815Sopenharmony_ci- [jerry_release_value](#jerry_release_value) 4191425bb815Sopenharmony_ci- [jerry_create_number](#jerry_create_number) 4192425bb815Sopenharmony_ci- [jerry_create_number_nan](#jerry_create_number_nan) 4193425bb815Sopenharmony_ci 4194425bb815Sopenharmony_ci 4195425bb815Sopenharmony_ci## jerry_create_number_nan 4196425bb815Sopenharmony_ci 4197425bb815Sopenharmony_ci**Summary** 4198425bb815Sopenharmony_ci 4199425bb815Sopenharmony_ciCreates a `jerry_value_t` representing a not-a-number value. 4200425bb815Sopenharmony_ci 4201425bb815Sopenharmony_ci*Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 4202425bb815Sopenharmony_ciis no longer needed. 4203425bb815Sopenharmony_ci 4204425bb815Sopenharmony_ci**Prototype** 4205425bb815Sopenharmony_ci 4206425bb815Sopenharmony_ci```c 4207425bb815Sopenharmony_cijerry_value_t 4208425bb815Sopenharmony_cijerry_create_number_nan (void); 4209425bb815Sopenharmony_ci``` 4210425bb815Sopenharmony_ci 4211425bb815Sopenharmony_ci- return value - a `jerry_value_t` representing the not-a-number value 4212425bb815Sopenharmony_ci 4213425bb815Sopenharmony_ci**Example** 4214425bb815Sopenharmony_ci 4215425bb815Sopenharmony_ci```c 4216425bb815Sopenharmony_ci{ 4217425bb815Sopenharmony_ci jerry_value_t nan_value = jerry_create_number_nan (); 4218425bb815Sopenharmony_ci 4219425bb815Sopenharmony_ci ... // usage of the nan_value 4220425bb815Sopenharmony_ci 4221425bb815Sopenharmony_ci jerry_release_value (nan_value); 4222425bb815Sopenharmony_ci} 4223425bb815Sopenharmony_ci``` 4224425bb815Sopenharmony_ci 4225425bb815Sopenharmony_ci**See also** 4226425bb815Sopenharmony_ci 4227425bb815Sopenharmony_ci- [jerry_release_value](#jerry_release_value) 4228425bb815Sopenharmony_ci- [jerry_create_number](#jerry_create_number) 4229425bb815Sopenharmony_ci- [jerry_create_number_infinity](#jerry_create_number_infinity) 4230425bb815Sopenharmony_ci 4231425bb815Sopenharmony_ci 4232425bb815Sopenharmony_ci## jerry_create_null 4233425bb815Sopenharmony_ci 4234425bb815Sopenharmony_ci**Summary** 4235425bb815Sopenharmony_ci 4236425bb815Sopenharmony_ciCreates and returns a `jerry_value_t` with type null object. 4237425bb815Sopenharmony_ci 4238425bb815Sopenharmony_ci**Prototype** 4239425bb815Sopenharmony_ci 4240425bb815Sopenharmony_ci```c 4241425bb815Sopenharmony_cijerry_value_t 4242425bb815Sopenharmony_cijerry_create_null (void); 4243425bb815Sopenharmony_ci``` 4244425bb815Sopenharmony_ci 4245425bb815Sopenharmony_ci- return value - a `jerry_value_t` representing null. 4246425bb815Sopenharmony_ci 4247425bb815Sopenharmony_ci**Example** 4248425bb815Sopenharmony_ci 4249425bb815Sopenharmony_ci```c 4250425bb815Sopenharmony_ci{ 4251425bb815Sopenharmony_ci jerry_value_t null_value = jerry_create_null (); 4252425bb815Sopenharmony_ci 4253425bb815Sopenharmony_ci ... // usage of the value 4254425bb815Sopenharmony_ci 4255425bb815Sopenharmony_ci jerry_release_value (null_value); 4256425bb815Sopenharmony_ci} 4257425bb815Sopenharmony_ci``` 4258425bb815Sopenharmony_ci 4259425bb815Sopenharmony_ci**See also** 4260425bb815Sopenharmony_ci 4261425bb815Sopenharmony_ci- [jerry_release_value](#jerry_release_value) 4262425bb815Sopenharmony_ci 4263425bb815Sopenharmony_ci 4264425bb815Sopenharmony_ci## jerry_create_object 4265425bb815Sopenharmony_ci 4266425bb815Sopenharmony_ci**Summary** 4267425bb815Sopenharmony_ci 4268425bb815Sopenharmony_ciCreate new JavaScript object, like with new Object(). 4269425bb815Sopenharmony_ci 4270425bb815Sopenharmony_ci*Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 4271425bb815Sopenharmony_ciis no longer needed. 4272425bb815Sopenharmony_ci 4273425bb815Sopenharmony_ci**Prototype** 4274425bb815Sopenharmony_ci 4275425bb815Sopenharmony_ci```c 4276425bb815Sopenharmony_cijerry_value_t 4277425bb815Sopenharmony_cijerry_create_object (void); 4278425bb815Sopenharmony_ci``` 4279425bb815Sopenharmony_ci 4280425bb815Sopenharmony_ci- return value - value of the created object 4281425bb815Sopenharmony_ci 4282425bb815Sopenharmony_ci**Example** 4283425bb815Sopenharmony_ci 4284425bb815Sopenharmony_ci```c 4285425bb815Sopenharmony_ci{ 4286425bb815Sopenharmony_ci jerry_value_t object_value = jerry_create_object (); 4287425bb815Sopenharmony_ci 4288425bb815Sopenharmony_ci ... // usage of object_value 4289425bb815Sopenharmony_ci 4290425bb815Sopenharmony_ci jerry_release_value (object_value); 4291425bb815Sopenharmony_ci} 4292425bb815Sopenharmony_ci``` 4293425bb815Sopenharmony_ci 4294425bb815Sopenharmony_ci**See also** 4295425bb815Sopenharmony_ci 4296425bb815Sopenharmony_ci- [jerry_release_value](#jerry_release_value) 4297425bb815Sopenharmony_ci 4298425bb815Sopenharmony_ci 4299425bb815Sopenharmony_ci## jerry_create_promise 4300425bb815Sopenharmony_ci 4301425bb815Sopenharmony_ci**Summary** 4302425bb815Sopenharmony_ci 4303425bb815Sopenharmony_ciCreate an empty promise object which can be resolved or rejected later 4304425bb815Sopenharmony_ciby calling jerry_resolve_or_reject_promise. 4305425bb815Sopenharmony_ci 4306425bb815Sopenharmony_ci*Note*: 4307425bb815Sopenharmony_ci - This API depends on the ES2015-subset profile. 4308425bb815Sopenharmony_ci - Returned value must be freed with [jerry_release_value](#jerry_release_value) 4309425bb815Sopenharmony_ci when it is no longer needed. 4310425bb815Sopenharmony_ci 4311425bb815Sopenharmony_ci**Prototype** 4312425bb815Sopenharmony_ci 4313425bb815Sopenharmony_ci```c 4314425bb815Sopenharmony_cijerry_value_t 4315425bb815Sopenharmony_cijerry_create_promise (void) 4316425bb815Sopenharmony_ci``` 4317425bb815Sopenharmony_ci 4318425bb815Sopenharmony_ci- return value - value of the newly created promise 4319425bb815Sopenharmony_ci 4320425bb815Sopenharmony_ci*New in version 2.0*. 4321425bb815Sopenharmony_ci 4322425bb815Sopenharmony_ci**Example** 4323425bb815Sopenharmony_ci 4324425bb815Sopenharmony_ci```c 4325425bb815Sopenharmony_ci{ 4326425bb815Sopenharmony_ci jerry_value_t p = jerry_create_promise (); 4327425bb815Sopenharmony_ci 4328425bb815Sopenharmony_ci ...// usage of the promise 4329425bb815Sopenharmony_ci 4330425bb815Sopenharmony_ci jerry_release_value (p); 4331425bb815Sopenharmony_ci} 4332425bb815Sopenharmony_ci``` 4333425bb815Sopenharmony_ci 4334425bb815Sopenharmony_ci**See also** 4335425bb815Sopenharmony_ci 4336425bb815Sopenharmony_ci- [jerry_resolve_or_reject_promise](#jerry_resolve_or_reject_promise) 4337425bb815Sopenharmony_ci- [jerry_release_value](#jerry_release_value) 4338425bb815Sopenharmony_ci 4339425bb815Sopenharmony_ci 4340425bb815Sopenharmony_ci## jerry_create_proxy 4341425bb815Sopenharmony_ci 4342425bb815Sopenharmony_ci**Summary** 4343425bb815Sopenharmony_ci 4344425bb815Sopenharmony_ciCreate a new Proxy object with the given target and handler. 4345425bb815Sopenharmony_ci 4346425bb815Sopenharmony_ci*Note*: 4347425bb815Sopenharmony_ci - This API depends on the ES2015-subset profile. 4348425bb815Sopenharmony_ci - Returned value must be freed with [jerry_release_value](#jerry_release_value) 4349425bb815Sopenharmony_ci when it is no longer needed. 4350425bb815Sopenharmony_ci 4351425bb815Sopenharmony_ci**Prototype** 4352425bb815Sopenharmony_ci 4353425bb815Sopenharmony_ci```c 4354425bb815Sopenharmony_cijerry_value_t 4355425bb815Sopenharmony_cijerry_create_proxy (const jerry_value_t target, 4356425bb815Sopenharmony_ci const jerry_value_t handler) 4357425bb815Sopenharmony_ci``` 4358425bb815Sopenharmony_ci 4359425bb815Sopenharmony_ci- `target` - proxy target 4360425bb815Sopenharmony_ci- `handler` - proxy handler 4361425bb815Sopenharmony_ci- return thrown error - if the Proxy construction fails 4362425bb815Sopenharmony_ci value of the newly created proxy object - otherwise 4363425bb815Sopenharmony_ci 4364425bb815Sopenharmony_ci**Example** 4365425bb815Sopenharmony_ci 4366425bb815Sopenharmony_ci*New in version 2.3*. 4367425bb815Sopenharmony_ci 4368425bb815Sopenharmony_ci[doctest]: # () 4369425bb815Sopenharmony_ci 4370425bb815Sopenharmony_ci```c 4371425bb815Sopenharmony_ci#include "jerryscript.h" 4372425bb815Sopenharmony_ci 4373425bb815Sopenharmony_ciint 4374425bb815Sopenharmony_cimain (void) 4375425bb815Sopenharmony_ci{ 4376425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 4377425bb815Sopenharmony_ci 4378425bb815Sopenharmony_ci jerry_value_t target = jerry_create_object (); 4379425bb815Sopenharmony_ci jerry_value_t handler = jerry_create_object (); 4380425bb815Sopenharmony_ci jerry_value_t proxy = jerry_create_proxy (target, handler); 4381425bb815Sopenharmony_ci 4382425bb815Sopenharmony_ci jerry_release_value (target); 4383425bb815Sopenharmony_ci jerry_release_value (handler); 4384425bb815Sopenharmony_ci 4385425bb815Sopenharmony_ci // usage of the proxy 4386425bb815Sopenharmony_ci 4387425bb815Sopenharmony_ci jerry_release_value (proxy); 4388425bb815Sopenharmony_ci 4389425bb815Sopenharmony_ci jerry_cleanup (); 4390425bb815Sopenharmony_ci} 4391425bb815Sopenharmony_ci``` 4392425bb815Sopenharmony_ci 4393425bb815Sopenharmony_ci**See also** 4394425bb815Sopenharmony_ci 4395425bb815Sopenharmony_ci- [jerry_value_is_proxy](#jerry_value_is_proxy) 4396425bb815Sopenharmony_ci- [jerry_release_value](#jerry_release_value) 4397425bb815Sopenharmony_ci 4398425bb815Sopenharmony_ci 4399425bb815Sopenharmony_ci## jerry_create_string 4400425bb815Sopenharmony_ci 4401425bb815Sopenharmony_ci**Summary** 4402425bb815Sopenharmony_ci 4403425bb815Sopenharmony_ciCreate string from a valid CESU8 string. 4404425bb815Sopenharmony_ci 4405425bb815Sopenharmony_ci*Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 4406425bb815Sopenharmony_ciis no longer needed. 4407425bb815Sopenharmony_ci 4408425bb815Sopenharmony_ci**Prototype** 4409425bb815Sopenharmony_ci 4410425bb815Sopenharmony_ci```c 4411425bb815Sopenharmony_cijerry_value_t 4412425bb815Sopenharmony_cijerry_create_string (const jerry_char_t *str_p); 4413425bb815Sopenharmony_ci``` 4414425bb815Sopenharmony_ci 4415425bb815Sopenharmony_ci- `str_p` - non-null pointer to string 4416425bb815Sopenharmony_ci- return value - value of the created string 4417425bb815Sopenharmony_ci 4418425bb815Sopenharmony_ci**Example** 4419425bb815Sopenharmony_ci 4420425bb815Sopenharmony_ci```c 4421425bb815Sopenharmony_ci{ 4422425bb815Sopenharmony_ci const jerry_char_t char_array[] = "a string"; 4423425bb815Sopenharmony_ci jerry_value_t string_value = jerry_create_string (char_array); 4424425bb815Sopenharmony_ci 4425425bb815Sopenharmony_ci ... // usage of string_value 4426425bb815Sopenharmony_ci 4427425bb815Sopenharmony_ci jerry_release_value (string_value); 4428425bb815Sopenharmony_ci} 4429425bb815Sopenharmony_ci``` 4430425bb815Sopenharmony_ci 4431425bb815Sopenharmony_ci**See also** 4432425bb815Sopenharmony_ci 4433425bb815Sopenharmony_ci- [jerry_is_valid_cesu8_string](#jerry_is_valid_cesu8_string) 4434425bb815Sopenharmony_ci- [jerry_create_string_sz](#jerry_create_string_sz) 4435425bb815Sopenharmony_ci 4436425bb815Sopenharmony_ci 4437425bb815Sopenharmony_ci## jerry_create_string_sz 4438425bb815Sopenharmony_ci 4439425bb815Sopenharmony_ci**Summary** 4440425bb815Sopenharmony_ci 4441425bb815Sopenharmony_ciCreate string from a valid CESU8 string. 4442425bb815Sopenharmony_ci 4443425bb815Sopenharmony_ci*Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 4444425bb815Sopenharmony_ciis no longer needed. 4445425bb815Sopenharmony_ci 4446425bb815Sopenharmony_ci**Prototype** 4447425bb815Sopenharmony_ci 4448425bb815Sopenharmony_ci```c 4449425bb815Sopenharmony_cijerry_value_t 4450425bb815Sopenharmony_cijerry_create_string_sz (const jerry_char_t *str_p, 4451425bb815Sopenharmony_ci jerry_size_t str_size) 4452425bb815Sopenharmony_ci``` 4453425bb815Sopenharmony_ci 4454425bb815Sopenharmony_ci- `str_p` - non-null pointer to string 4455425bb815Sopenharmony_ci- `str_size` - size of the string 4456425bb815Sopenharmony_ci- return value - value of the created string 4457425bb815Sopenharmony_ci 4458425bb815Sopenharmony_ci**Example** 4459425bb815Sopenharmony_ci 4460425bb815Sopenharmony_ci```c 4461425bb815Sopenharmony_ci{ 4462425bb815Sopenharmony_ci const jerry_char_t char_array[] = "a string"; 4463425bb815Sopenharmony_ci jerry_value_t string_value = jerry_create_string_sz (char_array, 4464425bb815Sopenharmony_ci sizeof (char_array) - 1); 4465425bb815Sopenharmony_ci 4466425bb815Sopenharmony_ci ... // usage of string_value 4467425bb815Sopenharmony_ci 4468425bb815Sopenharmony_ci jerry_release_value (string_value); 4469425bb815Sopenharmony_ci} 4470425bb815Sopenharmony_ci 4471425bb815Sopenharmony_ci``` 4472425bb815Sopenharmony_ci 4473425bb815Sopenharmony_ci**See also** 4474425bb815Sopenharmony_ci 4475425bb815Sopenharmony_ci- [jerry_is_valid_cesu8_string](#jerry_is_valid_cesu8_string) 4476425bb815Sopenharmony_ci- [jerry_create_string](#jerry_create_string) 4477425bb815Sopenharmony_ci 4478425bb815Sopenharmony_ci 4479425bb815Sopenharmony_ci## jerry_create_string_from_utf8 4480425bb815Sopenharmony_ci 4481425bb815Sopenharmony_ci**Summary** 4482425bb815Sopenharmony_ci 4483425bb815Sopenharmony_ciCreate string from a valid UTF8 string. 4484425bb815Sopenharmony_ci 4485425bb815Sopenharmony_ci*Note*: 4486425bb815Sopenharmony_ci - The difference from [jerry_create_string](#jerry_create_string) is that it accepts utf-8 string instead of cesu-8 string. 4487425bb815Sopenharmony_ci - Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 4488425bb815Sopenharmony_ciis no longer needed. 4489425bb815Sopenharmony_ci 4490425bb815Sopenharmony_ci**Prototype** 4491425bb815Sopenharmony_ci 4492425bb815Sopenharmony_ci```c 4493425bb815Sopenharmony_cijerry_value_t 4494425bb815Sopenharmony_cijerry_create_string_from_utf8 (const jerry_char_t *str_p); 4495425bb815Sopenharmony_ci``` 4496425bb815Sopenharmony_ci 4497425bb815Sopenharmony_ci- `str_p` - non-null pointer to string 4498425bb815Sopenharmony_ci- return value - value of the created string 4499425bb815Sopenharmony_ci 4500425bb815Sopenharmony_ci*New in version 2.0*. 4501425bb815Sopenharmony_ci 4502425bb815Sopenharmony_ci**Example** 4503425bb815Sopenharmony_ci 4504425bb815Sopenharmony_ci```c 4505425bb815Sopenharmony_ci{ 4506425bb815Sopenharmony_ci const jerry_char_t char_array[] = "a string"; 4507425bb815Sopenharmony_ci jerry_value_t string_value = jerry_create_string_from_utf8 (char_array); 4508425bb815Sopenharmony_ci 4509425bb815Sopenharmony_ci ... // usage of string_value 4510425bb815Sopenharmony_ci 4511425bb815Sopenharmony_ci jerry_release_value (string_value); 4512425bb815Sopenharmony_ci} 4513425bb815Sopenharmony_ci``` 4514425bb815Sopenharmony_ci 4515425bb815Sopenharmony_ci**See also** 4516425bb815Sopenharmony_ci 4517425bb815Sopenharmony_ci- [jerry_is_valid_utf8_string](#jerry_is_valid_utf8_string) 4518425bb815Sopenharmony_ci- [jerry_create_string_sz_from_utf8](#jerry_create_string_sz_from_utf8) 4519425bb815Sopenharmony_ci 4520425bb815Sopenharmony_ci 4521425bb815Sopenharmony_ci## jerry_create_string_sz_from_utf8 4522425bb815Sopenharmony_ci 4523425bb815Sopenharmony_ci**Summary** 4524425bb815Sopenharmony_ci 4525425bb815Sopenharmony_ciCreate string from a valid UTF8 string. 4526425bb815Sopenharmony_ci 4527425bb815Sopenharmony_ci*Note*: 4528425bb815Sopenharmony_ci - The difference from [jerry_create_string_sz](#jerry_create_string_sz) is that it accepts utf-8 string instead of cesu-8 string. 4529425bb815Sopenharmony_ci - Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 4530425bb815Sopenharmony_ciis no longer needed. 4531425bb815Sopenharmony_ci 4532425bb815Sopenharmony_ci**Prototype** 4533425bb815Sopenharmony_ci 4534425bb815Sopenharmony_ci```c 4535425bb815Sopenharmony_cijerry_value_t 4536425bb815Sopenharmony_cijerry_create_string_sz_from_utf8 (const jerry_char_t *str_p, 4537425bb815Sopenharmony_ci jerry_size_t str_size) 4538425bb815Sopenharmony_ci``` 4539425bb815Sopenharmony_ci 4540425bb815Sopenharmony_ci- `str_p` - non-null pointer to string 4541425bb815Sopenharmony_ci- `str_size` - size of the string 4542425bb815Sopenharmony_ci- return value - value of the created string 4543425bb815Sopenharmony_ci 4544425bb815Sopenharmony_ci*New in version 2.0*. 4545425bb815Sopenharmony_ci 4546425bb815Sopenharmony_ci**Example** 4547425bb815Sopenharmony_ci 4548425bb815Sopenharmony_ci```c 4549425bb815Sopenharmony_ci{ 4550425bb815Sopenharmony_ci const jerry_char_t char_array[] = "a string"; 4551425bb815Sopenharmony_ci jerry_value_t string_value = jerry_create_string_sz_from_utf8 (char_array, 4552425bb815Sopenharmony_ci sizeof (char_array) - 1); 4553425bb815Sopenharmony_ci 4554425bb815Sopenharmony_ci ... // usage of string_value 4555425bb815Sopenharmony_ci 4556425bb815Sopenharmony_ci jerry_release_value (string_value); 4557425bb815Sopenharmony_ci} 4558425bb815Sopenharmony_ci 4559425bb815Sopenharmony_ci``` 4560425bb815Sopenharmony_ci 4561425bb815Sopenharmony_ci**See also** 4562425bb815Sopenharmony_ci 4563425bb815Sopenharmony_ci- [jerry_is_valid_utf8_string](#jerry_is_valid_utf8_string) 4564425bb815Sopenharmony_ci- [jerry_create_string_from_utf8](#jerry_create_string_from_utf8) 4565425bb815Sopenharmony_ci 4566425bb815Sopenharmony_ci 4567425bb815Sopenharmony_ci## jerry_create_symbol 4568425bb815Sopenharmony_ci 4569425bb815Sopenharmony_ci**Summary** 4570425bb815Sopenharmony_ci 4571425bb815Sopenharmony_ciCreate symbol from an API value. 4572425bb815Sopenharmony_ci 4573425bb815Sopenharmony_ci*Note*: 4574425bb815Sopenharmony_ci - The given argument is converted to string. This operation can throw an error. 4575425bb815Sopenharmony_ci - This API depends on the ES2015-subset profile. 4576425bb815Sopenharmony_ci - Returned value must be freed with [jerry_release_value](#jerry_release_value) 4577425bb815Sopenharmony_ci when it is no longer needed. 4578425bb815Sopenharmony_ci 4579425bb815Sopenharmony_ci**Prototype** 4580425bb815Sopenharmony_ci 4581425bb815Sopenharmony_ci```c 4582425bb815Sopenharmony_cijerry_value_t 4583425bb815Sopenharmony_cijerry_create_symbol (const jerry_value_t value) 4584425bb815Sopenharmony_ci``` 4585425bb815Sopenharmony_ci 4586425bb815Sopenharmony_ci- `value` - API value 4587425bb815Sopenharmony_ci- return value 4588425bb815Sopenharmony_ci - value of the created symbol, if success 4589425bb815Sopenharmony_ci - thrown error, otherwise 4590425bb815Sopenharmony_ci 4591425bb815Sopenharmony_ci*New in version 2.0*. 4592425bb815Sopenharmony_ci 4593425bb815Sopenharmony_ci**Example** 4594425bb815Sopenharmony_ci 4595425bb815Sopenharmony_ci[doctest]: # () 4596425bb815Sopenharmony_ci 4597425bb815Sopenharmony_ci```c 4598425bb815Sopenharmony_ci#include "jerryscript.h" 4599425bb815Sopenharmony_ci 4600425bb815Sopenharmony_ciint 4601425bb815Sopenharmony_cimain (void) 4602425bb815Sopenharmony_ci{ 4603425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 4604425bb815Sopenharmony_ci 4605425bb815Sopenharmony_ci jerry_value_t string_value = jerry_create_string ((const jerry_char_t *) "Symbol description string"); 4606425bb815Sopenharmony_ci jerry_value_t symbol_value = jerry_create_symbol (string_value); 4607425bb815Sopenharmony_ci 4608425bb815Sopenharmony_ci // The description value is no longer needed 4609425bb815Sopenharmony_ci jerry_release_value (string_value); 4610425bb815Sopenharmony_ci 4611425bb815Sopenharmony_ci // usage of symbol_value 4612425bb815Sopenharmony_ci 4613425bb815Sopenharmony_ci jerry_release_value (symbol_value); 4614425bb815Sopenharmony_ci 4615425bb815Sopenharmony_ci jerry_cleanup (); 4616425bb815Sopenharmony_ci} 4617425bb815Sopenharmony_ci``` 4618425bb815Sopenharmony_ci 4619425bb815Sopenharmony_ci**See also** 4620425bb815Sopenharmony_ci 4621425bb815Sopenharmony_ci- [jerry_value_is_symbol](#jerry_value_is_symbol) 4622425bb815Sopenharmony_ci- [jerry_release_value](#jerry_release_value) 4623425bb815Sopenharmony_ci 4624425bb815Sopenharmony_ci 4625425bb815Sopenharmony_ci## jerry_create_regexp 4626425bb815Sopenharmony_ci 4627425bb815Sopenharmony_ci**Summary** 4628425bb815Sopenharmony_ci 4629425bb815Sopenharmony_ciReturns a `jerry_value_t` RegExp object or an error, if the construction of the object fails. 4630425bb815Sopenharmony_ciOptional flags can be set using [jerry_regexp_flags_t](#jerry_regexp_flags_t). 4631425bb815Sopenharmony_ciThese flags can be combined together with the binary OR operator or used on their own as enum values. 4632425bb815Sopenharmony_ci 4633425bb815Sopenharmony_ci*Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 4634425bb815Sopenharmony_ciis no longer needed. 4635425bb815Sopenharmony_ci 4636425bb815Sopenharmony_ci**Prototype** 4637425bb815Sopenharmony_ci```c 4638425bb815Sopenharmony_cijerry_value_t 4639425bb815Sopenharmony_cijerry_create_regexp (const jerry_char_t *pattern_p, uint16_t flags); 4640425bb815Sopenharmony_ci``` 4641425bb815Sopenharmony_ci 4642425bb815Sopenharmony_ci- `pattern_p` - the RegExp pattern as a zero-terminated UTF-8 string 4643425bb815Sopenharmony_ci- `flags` - optional flags for the RegExp object, see [jerry_regexp_flags_t](#jerry_regexp_flags_t) 4644425bb815Sopenharmony_ci- return value - the RegExp object as a `jerry_value_t` 4645425bb815Sopenharmony_ci 4646425bb815Sopenharmony_ci*New in version 2.0*. 4647425bb815Sopenharmony_ci 4648425bb815Sopenharmony_ci**Example** 4649425bb815Sopenharmony_ci 4650425bb815Sopenharmony_ci```c 4651425bb815Sopenharmony_ci{ 4652425bb815Sopenharmony_ci jerry_char_t pattern_p = "[cgt]gggtaaa|tttaccc[acg]"; 4653425bb815Sopenharmony_ci uint16_t pattern_flags = JERRY_REGEXP_FLAG_IGNORE_CASE; 4654425bb815Sopenharmony_ci 4655425bb815Sopenharmony_ci jerry_value_t regexp = jerry_create_regexp (pattern_p, pattern_flags); 4656425bb815Sopenharmony_ci 4657425bb815Sopenharmony_ci ... 4658425bb815Sopenharmony_ci 4659425bb815Sopenharmony_ci jerry_release_value (regexp); 4660425bb815Sopenharmony_ci} 4661425bb815Sopenharmony_ci``` 4662425bb815Sopenharmony_ci 4663425bb815Sopenharmony_ci 4664425bb815Sopenharmony_ci## jerry_create_regexp_sz 4665425bb815Sopenharmony_ci 4666425bb815Sopenharmony_ci**Summary** 4667425bb815Sopenharmony_ci 4668425bb815Sopenharmony_ciReturns a `jerry_value_t` RegExp object or an error, if the construction of the object fails. 4669425bb815Sopenharmony_ciOptional flags can be set using [jerry_regexp_flags_t](#jerry_regexp_flags_t). 4670425bb815Sopenharmony_ciThese flags can be combined together with the binary OR operator or used on their own as enum values. 4671425bb815Sopenharmony_ci 4672425bb815Sopenharmony_ci*Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 4673425bb815Sopenharmony_ciis no longer needed. 4674425bb815Sopenharmony_ci 4675425bb815Sopenharmony_ci**Prototype** 4676425bb815Sopenharmony_ci```c 4677425bb815Sopenharmony_cijerry_value_t 4678425bb815Sopenharmony_cijerry_create_regexp_sz (const jerry_char_t *pattern_p, jerry_size_t pattern_size, uint16_t flags); 4679425bb815Sopenharmony_ci``` 4680425bb815Sopenharmony_ci 4681425bb815Sopenharmony_ci- `pattern_p` - the RegExp pattern as a zero-terminated UTF-8 string 4682425bb815Sopenharmony_ci- `pattern_size` - size of the `pattern` 4683425bb815Sopenharmony_ci- `flags` - optional flags for the RegExp object, see [jerry_regexp_flags_t](#jerry_regexp_flags_t) 4684425bb815Sopenharmony_ci- return value - the RegExp object as a `jerry_value_t` 4685425bb815Sopenharmony_ci 4686425bb815Sopenharmony_ci*New in version 2.0*. 4687425bb815Sopenharmony_ci 4688425bb815Sopenharmony_ci**Example** 4689425bb815Sopenharmony_ci 4690425bb815Sopenharmony_ci```c 4691425bb815Sopenharmony_ci{ 4692425bb815Sopenharmony_ci jerry_char_t pattern_p = "[cgt]gggtaaa|tttaccc[acg]"; 4693425bb815Sopenharmony_ci jerry_size_t pattern_size = sizeof (pattern_p) - 1; 4694425bb815Sopenharmony_ci uint16_t pattern_flags = JERRY_REGEXP_FLAG_IGNORE_CASE; 4695425bb815Sopenharmony_ci 4696425bb815Sopenharmony_ci jerry_value_t regexp = jerry_create_regexp_sz (pattern_p, pattern_size, pattern_flags); 4697425bb815Sopenharmony_ci 4698425bb815Sopenharmony_ci ... 4699425bb815Sopenharmony_ci 4700425bb815Sopenharmony_ci jerry_release_value (regexp); 4701425bb815Sopenharmony_ci} 4702425bb815Sopenharmony_ci``` 4703425bb815Sopenharmony_ci 4704425bb815Sopenharmony_ci 4705425bb815Sopenharmony_ci## jerry_create_typedarray 4706425bb815Sopenharmony_ci 4707425bb815Sopenharmony_ci**Summary** 4708425bb815Sopenharmony_ci 4709425bb815Sopenharmony_ciCreate a jerry_value_t representing an TypedArray object. 4710425bb815Sopenharmony_ci 4711425bb815Sopenharmony_ciFor the new object the type of the TypedArray (see: [jerry_typedarray_type_t](#jerry_typedarray_type_t)) 4712425bb815Sopenharmony_ciand element count can be specified. 4713425bb815Sopenharmony_ci 4714425bb815Sopenharmony_ci*Notes*: 4715425bb815Sopenharmony_ci- Returned value must be freed with [jerry_release_value](#jerry_release_value) 4716425bb815Sopenharmony_ci when it is no longer needed. 4717425bb815Sopenharmony_ci- This API depends on a build option (`JERRY_ES2015_BUILTIN_TYPEDARRAY`) and can be checked 4718425bb815Sopenharmony_ci in runtime with the `JERRY_FEATURE_TYPEDARRAY` feature enum value, 4719425bb815Sopenharmony_ci see: [jerry_is_feature_enabled](#jerry_is_feature_enabled). 4720425bb815Sopenharmony_ci- The ES2015-subset profile enables this by default. 4721425bb815Sopenharmony_ci 4722425bb815Sopenharmony_ci**Prototype** 4723425bb815Sopenharmony_ci 4724425bb815Sopenharmony_ci```c 4725425bb815Sopenharmony_cijerry_value_t 4726425bb815Sopenharmony_cijerry_create_typedarray (jerry_typedarray_type_t type_name, jerry_length_t item_count); 4727425bb815Sopenharmony_ci``` 4728425bb815Sopenharmony_ci 4729425bb815Sopenharmony_ci- `type_name` - type of TypedArray to create 4730425bb815Sopenharmony_ci- `item_count` - number of items in the new TypedArray 4731425bb815Sopenharmony_ci- return value - the new TypedArray as a `jerry_value_t` 4732425bb815Sopenharmony_ci 4733425bb815Sopenharmony_ci*New in version 2.0*. 4734425bb815Sopenharmony_ci 4735425bb815Sopenharmony_ci**Example** 4736425bb815Sopenharmony_ci 4737425bb815Sopenharmony_ci```c 4738425bb815Sopenharmony_ci{ 4739425bb815Sopenharmony_ci jerry_value_t array = jerry_create_typedarray (JERRY_TYPEDARRAY_UINT16, 15); 4740425bb815Sopenharmony_ci 4741425bb815Sopenharmony_ci ... // use the TypedArray 4742425bb815Sopenharmony_ci 4743425bb815Sopenharmony_ci jerry_release_value (array); 4744425bb815Sopenharmony_ci} 4745425bb815Sopenharmony_ci``` 4746425bb815Sopenharmony_ci 4747425bb815Sopenharmony_ci**See also** 4748425bb815Sopenharmony_ci 4749425bb815Sopenharmony_ci- [jerry_typedarray_type_t](#jerry_typedarray_type_t) 4750425bb815Sopenharmony_ci- [jerry_value_is_typedarray](#jerry_value_is_typedarray) 4751425bb815Sopenharmony_ci- [jerry_release_value](#jerry_release_value) 4752425bb815Sopenharmony_ci 4753425bb815Sopenharmony_ci 4754425bb815Sopenharmony_ci## jerry_create_typedarray_for_arraybuffer 4755425bb815Sopenharmony_ci 4756425bb815Sopenharmony_ci**Summary** 4757425bb815Sopenharmony_ci 4758425bb815Sopenharmony_ciCreate a jerry_value_t representing an TypedArray object using 4759425bb815Sopenharmony_cian already existing ArrayBuffer object. 4760425bb815Sopenharmony_ci 4761425bb815Sopenharmony_ciFor the new object the type of the TypedArray (see: [jerry_typedarray_type_t](#jerry_typedarray_type_t)) 4762425bb815Sopenharmony_ciand element count can be specified. 4763425bb815Sopenharmony_ci 4764425bb815Sopenharmony_ciThe developer must ensure that the ArrayBuffer has the correct length for the given 4765425bb815Sopenharmony_citype of TypedArray otherwise an error is generated. 4766425bb815Sopenharmony_ci 4767425bb815Sopenharmony_ciThe JavaScript equivalent of this function is: `new %TypedArray%(arraybuffer)` where `%TypedArray%` is 4768425bb815Sopenharmony_cione of the allowed TypedArray functions. 4769425bb815Sopenharmony_ci 4770425bb815Sopenharmony_ci*Notes*: 4771425bb815Sopenharmony_ci- Returned value must be freed with [jerry_release_value](#jerry_release_value) 4772425bb815Sopenharmony_ci when it is no longer needed. 4773425bb815Sopenharmony_ci- This API depends on a build option (`JERRY_ES2015_BUILTIN_TYPEDARRAY`) and can be checked 4774425bb815Sopenharmony_ci in runtime with the `JERRY_FEATURE_TYPEDARRAY` feature enum value, 4775425bb815Sopenharmony_ci see: [jerry_is_feature_enabled](#jerry_is_feature_enabled). 4776425bb815Sopenharmony_ci- The ES2015-subset profile enables this by default. 4777425bb815Sopenharmony_ci 4778425bb815Sopenharmony_ci**Prototype** 4779425bb815Sopenharmony_ci 4780425bb815Sopenharmony_ci```c 4781425bb815Sopenharmony_cijerry_value_t 4782425bb815Sopenharmony_cijerry_create_typedarray_for_arraybuffer (jerry_typedarray_type_t type_name, 4783425bb815Sopenharmony_ci const jerry_value_t arraybuffer); 4784425bb815Sopenharmony_ci``` 4785425bb815Sopenharmony_ci 4786425bb815Sopenharmony_ci- `type_name` - type of TypedArray to create 4787425bb815Sopenharmony_ci- `arraybuffer` - the ArrayBuffer to use for the new TypedArray 4788425bb815Sopenharmony_ci- return value 4789425bb815Sopenharmony_ci - the new TypedArray as a `jerry_value_t` 4790425bb815Sopenharmony_ci - Error if the ArrayBuffer does not have enough space for the given type of TypedArray 4791425bb815Sopenharmony_ci 4792425bb815Sopenharmony_ci*New in version 2.0*. 4793425bb815Sopenharmony_ci 4794425bb815Sopenharmony_ci**Example** 4795425bb815Sopenharmony_ci 4796425bb815Sopenharmony_ci```c 4797425bb815Sopenharmony_ci{ 4798425bb815Sopenharmony_ci jerry_value_t buffer = jerry_create_array_buffer (12 * 2); 4799425bb815Sopenharmony_ci jerry_value_t array = jerry_create_typedarray_for_arraybuffer (JERRY_TYPEDARRAY_UINT16, buffer); 4800425bb815Sopenharmony_ci jerry_release_value (buffer); 4801425bb815Sopenharmony_ci 4802425bb815Sopenharmony_ci ... // use the TypedArray 4803425bb815Sopenharmony_ci 4804425bb815Sopenharmony_ci jerry_release_value (array); 4805425bb815Sopenharmony_ci} 4806425bb815Sopenharmony_ci``` 4807425bb815Sopenharmony_ci 4808425bb815Sopenharmony_ci**See also** 4809425bb815Sopenharmony_ci 4810425bb815Sopenharmony_ci- [jerry_typedarray_type_t](#jerry_typedarray_type_t) 4811425bb815Sopenharmony_ci- [jerry_value_is_typedarray](#jerry_value_is_typedarray) 4812425bb815Sopenharmony_ci- [jerry_release_value](#jerry_release_value) 4813425bb815Sopenharmony_ci 4814425bb815Sopenharmony_ci 4815425bb815Sopenharmony_ci## jerry_create_typedarray_for_arraybuffer_sz 4816425bb815Sopenharmony_ci 4817425bb815Sopenharmony_ci**Summary** 4818425bb815Sopenharmony_ci 4819425bb815Sopenharmony_ciCreate a jerry_value_t representing an TypedArray object using 4820425bb815Sopenharmony_cian already existing ArrayBuffer object and by specifying the byteOffset, and length properties. 4821425bb815Sopenharmony_ci 4822425bb815Sopenharmony_ciFor the new object the type of the TypedArray (see: [jerry_typedarray_type_t](#jerry_typedarray_type_t)) 4823425bb815Sopenharmony_ciand element count can be specified. 4824425bb815Sopenharmony_ci 4825425bb815Sopenharmony_ciThe developer must ensure that the ArrayBuffer has the correct length for the given 4826425bb815Sopenharmony_citype of TypedArray otherwise an error is generated. 4827425bb815Sopenharmony_ci 4828425bb815Sopenharmony_ciThe JavaScript equivalent of this function is: `new %TypedArray%(arraybuffer, byteOffset, length)` where `%TypedArray%` is 4829425bb815Sopenharmony_cione of the allowed TypedArray functions. 4830425bb815Sopenharmony_ci 4831425bb815Sopenharmony_ci*Notes*: 4832425bb815Sopenharmony_ci- Returned value must be freed with [jerry_release_value](#jerry_release_value) 4833425bb815Sopenharmony_ci when it is no longer needed. 4834425bb815Sopenharmony_ci- This API depends on a build option (`JERRY_ES2015_BUILTIN_TYPEDARRAY`) and can be checked 4835425bb815Sopenharmony_ci in runtime with the `JERRY_FEATURE_TYPEDARRAY` feature enum value, 4836425bb815Sopenharmony_ci see: [jerry_is_feature_enabled](#jerry_is_feature_enabled). 4837425bb815Sopenharmony_ci- The ES2015-subset profile enables this by default. 4838425bb815Sopenharmony_ci 4839425bb815Sopenharmony_ci**Prototype** 4840425bb815Sopenharmony_ci 4841425bb815Sopenharmony_ci```c 4842425bb815Sopenharmony_cijerry_value_t 4843425bb815Sopenharmony_cijerry_create_typedarray_for_arraybuffer_sz (jerry_typedarray_type_t type_name, 4844425bb815Sopenharmony_ci const jerry_value_t arraybuffer, 4845425bb815Sopenharmony_ci jerry_length_t byte_offset, 4846425bb815Sopenharmony_ci jerry_length_t length); 4847425bb815Sopenharmony_ci``` 4848425bb815Sopenharmony_ci 4849425bb815Sopenharmony_ci- `type_name` - type of TypedArray to create 4850425bb815Sopenharmony_ci- `arraybuffer` - the ArrayBuffer to use for the new TypedArray 4851425bb815Sopenharmony_ci- `byte_offset` - start offset to use for the ArrayBuffer 4852425bb815Sopenharmony_ci- `length` - number of elements to used from the ArrayBuffer (this is not the same as the byteLength) 4853425bb815Sopenharmony_ci- return value 4854425bb815Sopenharmony_ci - the new TypedArray as a `jerry_value_t` 4855425bb815Sopenharmony_ci - Error if the ArrayBuffer does not have enough space for the given type of TypedArray 4856425bb815Sopenharmony_ci 4857425bb815Sopenharmony_ci*New in version 2.0*. 4858425bb815Sopenharmony_ci 4859425bb815Sopenharmony_ci**Example** 4860425bb815Sopenharmony_ci 4861425bb815Sopenharmony_ci```c 4862425bb815Sopenharmony_ci{ 4863425bb815Sopenharmony_ci jerry_value_t buffer = jerry_create_array_buffer (12 * 2); 4864425bb815Sopenharmony_ci jerry_value_t array = jerry_create_typedarray_for_arraybuffer_sz (JERRY_TYPEDARRAY_UINT16, buffer, 4, 10); 4865425bb815Sopenharmony_ci jerry_release_value (buffer); 4866425bb815Sopenharmony_ci 4867425bb815Sopenharmony_ci ... // use the TypedArray 4868425bb815Sopenharmony_ci 4869425bb815Sopenharmony_ci jerry_release_value (array); 4870425bb815Sopenharmony_ci} 4871425bb815Sopenharmony_ci``` 4872425bb815Sopenharmony_ci 4873425bb815Sopenharmony_ci**See also** 4874425bb815Sopenharmony_ci 4875425bb815Sopenharmony_ci- [jerry_typedarray_type_t](#jerry_typedarray_type_t) 4876425bb815Sopenharmony_ci- [jerry_value_is_typedarray](#jerry_value_is_typedarray) 4877425bb815Sopenharmony_ci- [jerry_release_value](#jerry_release_value) 4878425bb815Sopenharmony_ci 4879425bb815Sopenharmony_ci 4880425bb815Sopenharmony_ci## jerry_create_container 4881425bb815Sopenharmony_ci 4882425bb815Sopenharmony_ci**Summary** 4883425bb815Sopenharmony_ci 4884425bb815Sopenharmony_ciCreate a jerry_value_t representing a given type container object. 4885425bb815Sopenharmony_ci 4886425bb815Sopenharmony_ci*Notes*: 4887425bb815Sopenharmony_ci- This method is expected to work the same way as the JavaScript Map constructor. 4888425bb815Sopenharmony_ci- Returned value must be freed with [jerry_release_value](#jerry_release_value) 4889425bb815Sopenharmony_ci when it is no longer needed. 4890425bb815Sopenharmony_ci- This API depends on a build option (`JERRY_ES2015_BUILTIN_CONTAINER`) and can be checked 4891425bb815Sopenharmony_ci in runtime with the `JERRY_FEATURE_MAP, JERRY_FEATURE_SET, JERRY_FEATURE_WEAKMAP, JERRY_FEATURE_WEAKSET` 4892425bb815Sopenharmony_ci feature enum values. 4893425bb815Sopenharmony_ci see: [jerry_is_feature_enabled](#jerry_is_feature_enabled). 4894425bb815Sopenharmony_ci- The ES2015-subset profile enables this by default. 4895425bb815Sopenharmony_ci 4896425bb815Sopenharmony_ci*New in version 2.3*. 4897425bb815Sopenharmony_ci 4898425bb815Sopenharmony_ci**Prototype** 4899425bb815Sopenharmony_ci 4900425bb815Sopenharmony_ci```c 4901425bb815Sopenharmony_cijerry_value_t 4902425bb815Sopenharmony_cijerry_create_container (jerry_container_type_t container_type, 4903425bb815Sopenharmony_ci const jerry_value_t *arguments_list_p, 4904425bb815Sopenharmony_ci jerry_length_t arguments_list_len); 4905425bb815Sopenharmony_ci``` 4906425bb815Sopenharmony_ci 4907425bb815Sopenharmony_ci- `container_type` - Type of the container to be created, see `jerry_container_type_t`. 4908425bb815Sopenharmony_ci- `arguments_list_p` - The arguments passed to the container constructor to be inserted to the container. 4909425bb815Sopenharmony_ci- `arguments_list_len` - The length of the above arguments. 4910425bb815Sopenharmony_ci- return value - the new container object as a `jerry_value_t` 4911425bb815Sopenharmony_ci 4912425bb815Sopenharmony_ci**Example** 4913425bb815Sopenharmony_ci 4914425bb815Sopenharmony_ci[doctest]: # () 4915425bb815Sopenharmony_ci 4916425bb815Sopenharmony_ci```c 4917425bb815Sopenharmony_ci#include "jerryscript.h" 4918425bb815Sopenharmony_ci 4919425bb815Sopenharmony_ciint 4920425bb815Sopenharmony_cimain (void) 4921425bb815Sopenharmony_ci{ 4922425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 4923425bb815Sopenharmony_ci jerry_char_t src[] = "[1,2,3,4].entries()"; 4924425bb815Sopenharmony_ci jerry_value_t iterable = jerry_eval (src, sizeof (src) - 1, JERRY_PARSE_NO_OPTS); 4925425bb815Sopenharmony_ci 4926425bb815Sopenharmony_ci jerry_value_t map = jerry_create_container (JERRY_CONTAINER_TYPE_MAP, &iterable, 1); 4927425bb815Sopenharmony_ci jerry_release_value (iterable); 4928425bb815Sopenharmony_ci 4929425bb815Sopenharmony_ci // use the Map 4930425bb815Sopenharmony_ci 4931425bb815Sopenharmony_ci jerry_release_value (map); 4932425bb815Sopenharmony_ci 4933425bb815Sopenharmony_ci jerry_cleanup (); 4934425bb815Sopenharmony_ci return 0; 4935425bb815Sopenharmony_ci} 4936425bb815Sopenharmony_ci``` 4937425bb815Sopenharmony_ci 4938425bb815Sopenharmony_ci**See also** 4939425bb815Sopenharmony_ci 4940425bb815Sopenharmony_ci- [jerry_container_type_t](#jerry_container_type_t) 4941425bb815Sopenharmony_ci- [jerry_get_container_type](#jerry_get_container_type) 4942425bb815Sopenharmony_ci 4943425bb815Sopenharmony_ci 4944425bb815Sopenharmony_ci## jerry_create_undefined 4945425bb815Sopenharmony_ci 4946425bb815Sopenharmony_ci**Summary** 4947425bb815Sopenharmony_ci 4948425bb815Sopenharmony_ciCreates a `jerry_value_t` representing an undefined value. 4949425bb815Sopenharmony_ci 4950425bb815Sopenharmony_ci**Prototype** 4951425bb815Sopenharmony_ci 4952425bb815Sopenharmony_ci```c 4953425bb815Sopenharmony_cijerry_value_t 4954425bb815Sopenharmony_cijerry_create_undefined (void); 4955425bb815Sopenharmony_ci``` 4956425bb815Sopenharmony_ci 4957425bb815Sopenharmony_ci- return value - value of undefined 4958425bb815Sopenharmony_ci 4959425bb815Sopenharmony_ci**Example** 4960425bb815Sopenharmony_ci 4961425bb815Sopenharmony_ci```c 4962425bb815Sopenharmony_ci{ 4963425bb815Sopenharmony_ci jerry_value_t undefined_value = jerry_create_undefined (); 4964425bb815Sopenharmony_ci 4965425bb815Sopenharmony_ci ... // usage of the value 4966425bb815Sopenharmony_ci 4967425bb815Sopenharmony_ci jerry_release_value (undefined_value); 4968425bb815Sopenharmony_ci} 4969425bb815Sopenharmony_ci``` 4970425bb815Sopenharmony_ci 4971425bb815Sopenharmony_ci**See also** 4972425bb815Sopenharmony_ci 4973425bb815Sopenharmony_ci- [jerry_release_value](#jerry_release_value) 4974425bb815Sopenharmony_ci 4975425bb815Sopenharmony_ci 4976425bb815Sopenharmony_ci# General API functions of JS objects 4977425bb815Sopenharmony_ci 4978425bb815Sopenharmony_ci## jerry_has_property 4979425bb815Sopenharmony_ci 4980425bb815Sopenharmony_ci**Summary** 4981425bb815Sopenharmony_ci 4982425bb815Sopenharmony_ciChecks whether the object or its prototype objects have the given property. 4983425bb815Sopenharmony_ci 4984425bb815Sopenharmony_ci*Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 4985425bb815Sopenharmony_ciis no longer needed. 4986425bb815Sopenharmony_ci 4987425bb815Sopenharmony_ci**Prototype** 4988425bb815Sopenharmony_ci 4989425bb815Sopenharmony_ci```c 4990425bb815Sopenharmony_cijerry_value_t 4991425bb815Sopenharmony_cijerry_has_property (const jerry_value_t obj_val, 4992425bb815Sopenharmony_ci const jerry_value_t prop_name_val); 4993425bb815Sopenharmony_ci``` 4994425bb815Sopenharmony_ci 4995425bb815Sopenharmony_ci- `obj_val` - object value 4996425bb815Sopenharmony_ci- `prop_name_val` - property name 4997425bb815Sopenharmony_ci- return value - JavaScript value that evaluates to 4998425bb815Sopenharmony_ci - raised error - if the operation fail 4999425bb815Sopenharmony_ci - true/false API value - depend on whether the property exists 5000425bb815Sopenharmony_ci 5001425bb815Sopenharmony_ci*Changed in version 2.0*: The return value type is now a JavaScript value and not a primitive boolean value. 5002425bb815Sopenharmony_ci*Changed in version 2.3*: The return value can be an error value. 5003425bb815Sopenharmony_ci 5004425bb815Sopenharmony_ci**Example** 5005425bb815Sopenharmony_ci 5006425bb815Sopenharmony_ci[doctest]: # () 5007425bb815Sopenharmony_ci 5008425bb815Sopenharmony_ci```c 5009425bb815Sopenharmony_ci#include "jerryscript.h" 5010425bb815Sopenharmony_ci 5011425bb815Sopenharmony_ciint 5012425bb815Sopenharmony_cimain (void) 5013425bb815Sopenharmony_ci{ 5014425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 5015425bb815Sopenharmony_ci 5016425bb815Sopenharmony_ci jerry_value_t global_object = jerry_get_global_object (); 5017425bb815Sopenharmony_ci jerry_value_t prop_name = jerry_create_string ((const jerry_char_t *) "handler_field"); 5018425bb815Sopenharmony_ci 5019425bb815Sopenharmony_ci jerry_value_t has_prop_js = jerry_has_property (global_object, prop_name); 5020425bb815Sopenharmony_ci bool has_prop = jerry_get_boolean_value (has_prop_js); 5021425bb815Sopenharmony_ci 5022425bb815Sopenharmony_ci jerry_release_value (has_prop_js); 5023425bb815Sopenharmony_ci jerry_release_value (prop_name); 5024425bb815Sopenharmony_ci jerry_release_value (global_object); 5025425bb815Sopenharmony_ci 5026425bb815Sopenharmony_ci jerry_cleanup (); 5027425bb815Sopenharmony_ci 5028425bb815Sopenharmony_ci return 0; 5029425bb815Sopenharmony_ci} 5030425bb815Sopenharmony_ci``` 5031425bb815Sopenharmony_ci 5032425bb815Sopenharmony_ci**See also** 5033425bb815Sopenharmony_ci 5034425bb815Sopenharmony_ci- [jerry_has_own_property](#jerry_has_own_property) 5035425bb815Sopenharmony_ci- [jerry_delete_property](#jerry_delete_property) 5036425bb815Sopenharmony_ci 5037425bb815Sopenharmony_ci 5038425bb815Sopenharmony_ci## jerry_has_own_property 5039425bb815Sopenharmony_ci 5040425bb815Sopenharmony_ci**Summary** 5041425bb815Sopenharmony_ci 5042425bb815Sopenharmony_ciChecks whether the object has the given property. 5043425bb815Sopenharmony_ci 5044425bb815Sopenharmony_ci*Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 5045425bb815Sopenharmony_ciis no longer needed. 5046425bb815Sopenharmony_ci 5047425bb815Sopenharmony_ci**Prototype** 5048425bb815Sopenharmony_ci 5049425bb815Sopenharmony_ci```c 5050425bb815Sopenharmony_cijerry_value_t 5051425bb815Sopenharmony_cijerry_has_own_property (const jerry_value_t obj_val, 5052425bb815Sopenharmony_ci const jerry_value_t prop_name_val); 5053425bb815Sopenharmony_ci``` 5054425bb815Sopenharmony_ci 5055425bb815Sopenharmony_ci- `obj_val` - object value 5056425bb815Sopenharmony_ci- `prop_name_val` - property name 5057425bb815Sopenharmony_ci- return value - JavaScript value that evaluates to 5058425bb815Sopenharmony_ci - raised error - if the operation fails 5059425bb815Sopenharmony_ci - true/false API value - depend on whether the property exists 5060425bb815Sopenharmony_ci 5061425bb815Sopenharmony_ci*Changed in version 2.0*: The return value type is now a JavaScript value and not a primitive boolean value. 5062425bb815Sopenharmony_ci*Changed in version 2.3*: The return value can be an error value. 5063425bb815Sopenharmony_ci 5064425bb815Sopenharmony_ci**Example** 5065425bb815Sopenharmony_ci 5066425bb815Sopenharmony_ci[doctest]: # () 5067425bb815Sopenharmony_ci 5068425bb815Sopenharmony_ci```c 5069425bb815Sopenharmony_ci#include "jerryscript.h" 5070425bb815Sopenharmony_ci 5071425bb815Sopenharmony_ciint 5072425bb815Sopenharmony_cimain (void) 5073425bb815Sopenharmony_ci{ 5074425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 5075425bb815Sopenharmony_ci 5076425bb815Sopenharmony_ci jerry_value_t global_object = jerry_get_global_object (); 5077425bb815Sopenharmony_ci jerry_value_t prop_name = jerry_create_string ((const jerry_char_t *) "handler_field"); 5078425bb815Sopenharmony_ci 5079425bb815Sopenharmony_ci jerry_value_t has_prop_js = jerry_has_own_property (global_object, prop_name); 5080425bb815Sopenharmony_ci bool has_prop = jerry_get_boolean_value (has_prop_js); 5081425bb815Sopenharmony_ci 5082425bb815Sopenharmony_ci jerry_release_value (has_prop_js); 5083425bb815Sopenharmony_ci jerry_release_value (prop_name); 5084425bb815Sopenharmony_ci jerry_release_value (global_object); 5085425bb815Sopenharmony_ci 5086425bb815Sopenharmony_ci jerry_cleanup (); 5087425bb815Sopenharmony_ci 5088425bb815Sopenharmony_ci return 0; 5089425bb815Sopenharmony_ci} 5090425bb815Sopenharmony_ci``` 5091425bb815Sopenharmony_ci 5092425bb815Sopenharmony_ci**See also** 5093425bb815Sopenharmony_ci 5094425bb815Sopenharmony_ci- [jerry_has_property](#jerry_has_property) 5095425bb815Sopenharmony_ci- [jerry_delete_property](#jerry_delete_property) 5096425bb815Sopenharmony_ci 5097425bb815Sopenharmony_ci 5098425bb815Sopenharmony_ci## jerry_has_internal_property 5099425bb815Sopenharmony_ci 5100425bb815Sopenharmony_ci**Summary** 5101425bb815Sopenharmony_ci 5102425bb815Sopenharmony_ciChecks whether the object has the given internal property. 5103425bb815Sopenharmony_ci 5104425bb815Sopenharmony_ci*Note*: 5105425bb815Sopenharmony_ci - Properties which were not created with [jerry_set_internal_property](#jerry_set_internal_property) are excluded 5106425bb815Sopenharmony_ci during the operation. 5107425bb815Sopenharmony_ci - Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 5108425bb815Sopenharmony_ciis no longer needed. 5109425bb815Sopenharmony_ci 5110425bb815Sopenharmony_ci**Prototype** 5111425bb815Sopenharmony_ci 5112425bb815Sopenharmony_ci```c 5113425bb815Sopenharmony_cibool 5114425bb815Sopenharmony_cijerry_has_internal_property (const jerry_value_t obj_val, 5115425bb815Sopenharmony_ci const jerry_value_t prop_name_val); 5116425bb815Sopenharmony_ci``` 5117425bb815Sopenharmony_ci 5118425bb815Sopenharmony_ci- `obj_val` - object value 5119425bb815Sopenharmony_ci- `prop_name_val` - property name 5120425bb815Sopenharmony_ci- return value 5121425bb815Sopenharmony_ci - true, if the property exists 5122425bb815Sopenharmony_ci - false, otherwise 5123425bb815Sopenharmony_ci 5124425bb815Sopenharmony_ci*New in version 2.2*. 5125425bb815Sopenharmony_ci 5126425bb815Sopenharmony_ci**Example** 5127425bb815Sopenharmony_ci 5128425bb815Sopenharmony_ci[doctest]: # () 5129425bb815Sopenharmony_ci 5130425bb815Sopenharmony_ci```c 5131425bb815Sopenharmony_ci#include "jerryscript.h" 5132425bb815Sopenharmony_ci 5133425bb815Sopenharmony_ciint 5134425bb815Sopenharmony_cimain (void) 5135425bb815Sopenharmony_ci{ 5136425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 5137425bb815Sopenharmony_ci 5138425bb815Sopenharmony_ci jerry_value_t global_object = jerry_get_global_object (); 5139425bb815Sopenharmony_ci jerry_value_t prop_name = jerry_create_string ((const jerry_char_t *) "hidden_property"); 5140425bb815Sopenharmony_ci 5141425bb815Sopenharmony_ci bool has_internal_js_prop = jerry_has_internal_property (global_object, prop_name); 5142425bb815Sopenharmony_ci 5143425bb815Sopenharmony_ci jerry_release_value (prop_name); 5144425bb815Sopenharmony_ci jerry_release_value (global_object); 5145425bb815Sopenharmony_ci 5146425bb815Sopenharmony_ci return 0; 5147425bb815Sopenharmony_ci} 5148425bb815Sopenharmony_ci``` 5149425bb815Sopenharmony_ci 5150425bb815Sopenharmony_ci**See also** 5151425bb815Sopenharmony_ci 5152425bb815Sopenharmony_ci- [jerry_delete_internal_property](#jerry_delete_internal_property) 5153425bb815Sopenharmony_ci- [jerry_get_internal_property](#jerry_get_internal_property) 5154425bb815Sopenharmony_ci- [jerry_set_internal_property](#jerry_set_internal_property) 5155425bb815Sopenharmony_ci 5156425bb815Sopenharmony_ci 5157425bb815Sopenharmony_ci## jerry_delete_property 5158425bb815Sopenharmony_ci 5159425bb815Sopenharmony_ci**Summary** 5160425bb815Sopenharmony_ci 5161425bb815Sopenharmony_ciDelete a property from an object. 5162425bb815Sopenharmony_ci 5163425bb815Sopenharmony_ci**Prototype** 5164425bb815Sopenharmony_ci 5165425bb815Sopenharmony_ci```c 5166425bb815Sopenharmony_cibool 5167425bb815Sopenharmony_cijerry_delete_property (const jerry_value_t obj_val, 5168425bb815Sopenharmony_ci const jerry_value_t prop_name_val); 5169425bb815Sopenharmony_ci``` 5170425bb815Sopenharmony_ci 5171425bb815Sopenharmony_ci- `obj_val` - object value 5172425bb815Sopenharmony_ci- `prop_name_val` - property name 5173425bb815Sopenharmony_ci- return value 5174425bb815Sopenharmony_ci - true, if property was deleted successfully 5175425bb815Sopenharmony_ci - false, otherwise 5176425bb815Sopenharmony_ci 5177425bb815Sopenharmony_ci**Example** 5178425bb815Sopenharmony_ci 5179425bb815Sopenharmony_ci```c 5180425bb815Sopenharmony_ci{ 5181425bb815Sopenharmony_ci jerry_value_t global_object = jerry_get_global_object (); 5182425bb815Sopenharmony_ci jerry_value_t prop_name = jerry_create_string ((const jerry_char_t *) "my_prop"); 5183425bb815Sopenharmony_ci 5184425bb815Sopenharmony_ci bool delete_result = jerry_delete_property (global_object, prop_name); 5185425bb815Sopenharmony_ci /* use "delete_result" */ 5186425bb815Sopenharmony_ci 5187425bb815Sopenharmony_ci jerry_release_value (prop_name); 5188425bb815Sopenharmony_ci jerry_release_value (global_object); 5189425bb815Sopenharmony_ci} 5190425bb815Sopenharmony_ci``` 5191425bb815Sopenharmony_ci 5192425bb815Sopenharmony_ci**See also** 5193425bb815Sopenharmony_ci 5194425bb815Sopenharmony_ci- [jerry_has_property](#jerry_has_property) 5195425bb815Sopenharmony_ci- [jerry_has_own_property](#jerry_has_own_property) 5196425bb815Sopenharmony_ci- [jerry_delete_property_by_index](#jerry_delete_property_by_index) 5197425bb815Sopenharmony_ci- [jerry_get_property](#jerry_get_property) 5198425bb815Sopenharmony_ci 5199425bb815Sopenharmony_ci 5200425bb815Sopenharmony_ci## jerry_delete_property_by_index 5201425bb815Sopenharmony_ci 5202425bb815Sopenharmony_ci**Summary** 5203425bb815Sopenharmony_ci 5204425bb815Sopenharmony_ciDelete indexed property from the specified object. 5205425bb815Sopenharmony_ci 5206425bb815Sopenharmony_ci**Prototype** 5207425bb815Sopenharmony_ci 5208425bb815Sopenharmony_ci```c 5209425bb815Sopenharmony_cibool 5210425bb815Sopenharmony_cijerry_delete_property_by_index (const jerry_value_t obj_val, 5211425bb815Sopenharmony_ci uint32_t index); 5212425bb815Sopenharmony_ci``` 5213425bb815Sopenharmony_ci 5214425bb815Sopenharmony_ci- `obj_val` - object value 5215425bb815Sopenharmony_ci- `index` - index number 5216425bb815Sopenharmony_ci- return value 5217425bb815Sopenharmony_ci - true, if property was deleted successfully 5218425bb815Sopenharmony_ci - false, otherwise 5219425bb815Sopenharmony_ci 5220425bb815Sopenharmony_ci*New in version 2.0*. 5221425bb815Sopenharmony_ci 5222425bb815Sopenharmony_ci**Example** 5223425bb815Sopenharmony_ci 5224425bb815Sopenharmony_ci```c 5225425bb815Sopenharmony_ci{ 5226425bb815Sopenharmony_ci jerry_value_t object; 5227425bb815Sopenharmony_ci 5228425bb815Sopenharmony_ci ... // create or acquire object 5229425bb815Sopenharmony_ci 5230425bb815Sopenharmony_ci bool delete_result = jerry_delete_property_by_index (object, 5); 5231425bb815Sopenharmony_ci 5232425bb815Sopenharmony_ci jerry_release_value (object); 5233425bb815Sopenharmony_ci} 5234425bb815Sopenharmony_ci``` 5235425bb815Sopenharmony_ci 5236425bb815Sopenharmony_ci**See also** 5237425bb815Sopenharmony_ci 5238425bb815Sopenharmony_ci- [jerry_has_property](#jerry_has_property) 5239425bb815Sopenharmony_ci- [jerry_has_own_property](#jerry_has_own_property) 5240425bb815Sopenharmony_ci- [jerry_delete_property](#jerry_delete_property) 5241425bb815Sopenharmony_ci- [jerry_get_property](#jerry_get_property) 5242425bb815Sopenharmony_ci- [jerry_set_property](#jerry_set_property) 5243425bb815Sopenharmony_ci- [jerry_get_property_by_index](#jerry_get_property_by_index) 5244425bb815Sopenharmony_ci- [jerry_set_property_by_index](#jerry_set_property_by_index) 5245425bb815Sopenharmony_ci 5246425bb815Sopenharmony_ci## jerry_delete_internal_property 5247425bb815Sopenharmony_ci 5248425bb815Sopenharmony_ci**Summary** 5249425bb815Sopenharmony_ci 5250425bb815Sopenharmony_ciDelete an internal property from an object. 5251425bb815Sopenharmony_ci 5252425bb815Sopenharmony_ci*Note*: Properties which were not created with [jerry_set_internal_property](#jerry_set_internal_property) are excluded 5253425bb815Sopenharmony_ci during the operation. 5254425bb815Sopenharmony_ci 5255425bb815Sopenharmony_ci**Prototype** 5256425bb815Sopenharmony_ci 5257425bb815Sopenharmony_ci```c 5258425bb815Sopenharmony_cibool 5259425bb815Sopenharmony_cijerry_delete_internal_property (const jerry_value_t obj_val, 5260425bb815Sopenharmony_ci const jerry_value_t prop_name_val); 5261425bb815Sopenharmony_ci``` 5262425bb815Sopenharmony_ci 5263425bb815Sopenharmony_ci- `obj_val` - object value 5264425bb815Sopenharmony_ci- `prop_name_val` - property name 5265425bb815Sopenharmony_ci- return value 5266425bb815Sopenharmony_ci - true, if property was deleted successfully 5267425bb815Sopenharmony_ci - false, otherwise 5268425bb815Sopenharmony_ci 5269425bb815Sopenharmony_ci*New in version 2.2*. 5270425bb815Sopenharmony_ci 5271425bb815Sopenharmony_ci**Example** 5272425bb815Sopenharmony_ci 5273425bb815Sopenharmony_ci```c 5274425bb815Sopenharmony_ci{ 5275425bb815Sopenharmony_ci jerry_value_t global_object = jerry_get_global_object (); 5276425bb815Sopenharmony_ci jerry_value_t prop_name = jerry_create_string ((const jerry_char_t *) "hidden_property"); 5277425bb815Sopenharmony_ci 5278425bb815Sopenharmony_ci bool delete_result = jerry_delete_internal_property (global_object, prop_name); 5279425bb815Sopenharmony_ci /* use "delete_result" */ 5280425bb815Sopenharmony_ci 5281425bb815Sopenharmony_ci jerry_release_value (prop_name); 5282425bb815Sopenharmony_ci jerry_release_value (global_object); 5283425bb815Sopenharmony_ci} 5284425bb815Sopenharmony_ci``` 5285425bb815Sopenharmony_ci 5286425bb815Sopenharmony_ci**See also** 5287425bb815Sopenharmony_ci 5288425bb815Sopenharmony_ci- [jerry_has_internal_property](#jerry_has_internal_property) 5289425bb815Sopenharmony_ci- [jerry_get_internal_property](#jerry_get_internal_property) 5290425bb815Sopenharmony_ci- [jerry_set_internal_property](#jerry_set_internal_property) 5291425bb815Sopenharmony_ci 5292425bb815Sopenharmony_ci 5293425bb815Sopenharmony_ci## jerry_get_property 5294425bb815Sopenharmony_ci 5295425bb815Sopenharmony_ci**Summary** 5296425bb815Sopenharmony_ci 5297425bb815Sopenharmony_ciGet value of a property to the specified object with the given name. 5298425bb815Sopenharmony_ci 5299425bb815Sopenharmony_ci*Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 5300425bb815Sopenharmony_ciis no longer needed. 5301425bb815Sopenharmony_ci 5302425bb815Sopenharmony_ci**Prototype** 5303425bb815Sopenharmony_ci 5304425bb815Sopenharmony_ci```c 5305425bb815Sopenharmony_cijerry_value_t 5306425bb815Sopenharmony_cijerry_get_property (const jerry_value_t obj_val, 5307425bb815Sopenharmony_ci const jerry_value_t prop_name_val); 5308425bb815Sopenharmony_ci``` 5309425bb815Sopenharmony_ci 5310425bb815Sopenharmony_ci- `obj_val` - object value 5311425bb815Sopenharmony_ci- `prop_name_val` - property name 5312425bb815Sopenharmony_ci- return value 5313425bb815Sopenharmony_ci - value of property, if success 5314425bb815Sopenharmony_ci - thrown error, otherwise 5315425bb815Sopenharmony_ci 5316425bb815Sopenharmony_ci**Example** 5317425bb815Sopenharmony_ci 5318425bb815Sopenharmony_ci[doctest]: # () 5319425bb815Sopenharmony_ci 5320425bb815Sopenharmony_ci```c 5321425bb815Sopenharmony_ci#include "jerryscript.h" 5322425bb815Sopenharmony_ci 5323425bb815Sopenharmony_ciint 5324425bb815Sopenharmony_cimain (void) 5325425bb815Sopenharmony_ci{ 5326425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 5327425bb815Sopenharmony_ci 5328425bb815Sopenharmony_ci jerry_value_t global_object = jerry_get_global_object (); 5329425bb815Sopenharmony_ci jerry_value_t prop_name = jerry_create_string ((const jerry_char_t *) "Object"); 5330425bb815Sopenharmony_ci 5331425bb815Sopenharmony_ci jerry_value_t prop_value = jerry_get_property (global_object, prop_name); 5332425bb815Sopenharmony_ci 5333425bb815Sopenharmony_ci /* use "prop_value" then release it. */ 5334425bb815Sopenharmony_ci 5335425bb815Sopenharmony_ci jerry_release_value (prop_value); 5336425bb815Sopenharmony_ci jerry_release_value (prop_name); 5337425bb815Sopenharmony_ci jerry_release_value (global_object); 5338425bb815Sopenharmony_ci 5339425bb815Sopenharmony_ci return 0; 5340425bb815Sopenharmony_ci} 5341425bb815Sopenharmony_ci``` 5342425bb815Sopenharmony_ci 5343425bb815Sopenharmony_ci**See also** 5344425bb815Sopenharmony_ci 5345425bb815Sopenharmony_ci- [jerry_has_property](#jerry_has_property) 5346425bb815Sopenharmony_ci- [jerry_has_own_property](#jerry_has_own_property) 5347425bb815Sopenharmony_ci- [jerry_delete_property](#jerry_delete_property) 5348425bb815Sopenharmony_ci- [jerry_delete_property_by_index](#jerry_delete_property_by_index) 5349425bb815Sopenharmony_ci- [jerry_set_property](#jerry_set_property) 5350425bb815Sopenharmony_ci- [jerry_get_property_by_index](#jerry_get_property_by_index) 5351425bb815Sopenharmony_ci- [jerry_set_property_by_index](#jerry_set_property_by_index) 5352425bb815Sopenharmony_ci 5353425bb815Sopenharmony_ci 5354425bb815Sopenharmony_ci## jerry_get_property_by_index 5355425bb815Sopenharmony_ci 5356425bb815Sopenharmony_ci**Summary** 5357425bb815Sopenharmony_ci 5358425bb815Sopenharmony_ciGet value by an index from the specified object. 5359425bb815Sopenharmony_ci 5360425bb815Sopenharmony_ci*Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 5361425bb815Sopenharmony_ciis no longer needed. 5362425bb815Sopenharmony_ci 5363425bb815Sopenharmony_ci**Prototype** 5364425bb815Sopenharmony_ci 5365425bb815Sopenharmony_ci```c 5366425bb815Sopenharmony_cijerry_value_t 5367425bb815Sopenharmony_cijerry_get_property_by_index (const jerry_value_t obj_val, 5368425bb815Sopenharmony_ci uint32_t index); 5369425bb815Sopenharmony_ci``` 5370425bb815Sopenharmony_ci 5371425bb815Sopenharmony_ci- `obj_val` - object value 5372425bb815Sopenharmony_ci- `index` - index number 5373425bb815Sopenharmony_ci- return value 5374425bb815Sopenharmony_ci - stored value on the specified index, if success 5375425bb815Sopenharmony_ci - thrown exception, otherwise. 5376425bb815Sopenharmony_ci 5377425bb815Sopenharmony_ci**Example** 5378425bb815Sopenharmony_ci 5379425bb815Sopenharmony_ci```c 5380425bb815Sopenharmony_ci{ 5381425bb815Sopenharmony_ci jerry_value_t object; 5382425bb815Sopenharmony_ci 5383425bb815Sopenharmony_ci ... // create or acquire object 5384425bb815Sopenharmony_ci 5385425bb815Sopenharmony_ci jerry_value_t value = jerry_get_property_by_index (object, 5); 5386425bb815Sopenharmony_ci 5387425bb815Sopenharmony_ci ... 5388425bb815Sopenharmony_ci 5389425bb815Sopenharmony_ci jerry_release_value (value); 5390425bb815Sopenharmony_ci jerry_release_value (object); 5391425bb815Sopenharmony_ci} 5392425bb815Sopenharmony_ci``` 5393425bb815Sopenharmony_ci 5394425bb815Sopenharmony_ci**See also** 5395425bb815Sopenharmony_ci 5396425bb815Sopenharmony_ci- [jerry_has_property](#jerry_has_property) 5397425bb815Sopenharmony_ci- [jerry_has_own_property](#jerry_has_own_property) 5398425bb815Sopenharmony_ci- [jerry_delete_property](#jerry_delete_property) 5399425bb815Sopenharmony_ci- [jerry_delete_property_by_index](#jerry_delete_property_by_index) 5400425bb815Sopenharmony_ci- [jerry_get_property](#jerry_get_property) 5401425bb815Sopenharmony_ci- [jerry_set_property](#jerry_set_property) 5402425bb815Sopenharmony_ci- [jerry_set_property_by_index](#jerry_set_property_by_index) 5403425bb815Sopenharmony_ci 5404425bb815Sopenharmony_ci## jerry_get_internal_property 5405425bb815Sopenharmony_ci 5406425bb815Sopenharmony_ci**Summary** 5407425bb815Sopenharmony_ci 5408425bb815Sopenharmony_ciGet value of an internal property to the specified object with the given name. 5409425bb815Sopenharmony_ci 5410425bb815Sopenharmony_ci*Note*: 5411425bb815Sopenharmony_ci - Properties which were not created with [jerry_set_internal_property](#jerry_set_internal_property) are excluded 5412425bb815Sopenharmony_ci during the operation. 5413425bb815Sopenharmony_ci - Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 5414425bb815Sopenharmony_ci is no longer needed. 5415425bb815Sopenharmony_ci 5416425bb815Sopenharmony_ci**Prototype** 5417425bb815Sopenharmony_ci 5418425bb815Sopenharmony_ci```c 5419425bb815Sopenharmony_cijerry_value_t 5420425bb815Sopenharmony_cijerry_get_internal_property (const jerry_value_t obj_val, 5421425bb815Sopenharmony_ci const jerry_value_t prop_name_val); 5422425bb815Sopenharmony_ci``` 5423425bb815Sopenharmony_ci 5424425bb815Sopenharmony_ci- `obj_val` - object value 5425425bb815Sopenharmony_ci- `prop_name_val` - property name 5426425bb815Sopenharmony_ci- return value 5427425bb815Sopenharmony_ci - value of property, if the internal property exists 5428425bb815Sopenharmony_ci - undefined value, if the, if the internal does not property exists 5429425bb815Sopenharmony_ci - thrown error, otherwise 5430425bb815Sopenharmony_ci 5431425bb815Sopenharmony_ci*New in version 2.2*. 5432425bb815Sopenharmony_ci 5433425bb815Sopenharmony_ci**Example** 5434425bb815Sopenharmony_ci 5435425bb815Sopenharmony_ci[doctest]: # () 5436425bb815Sopenharmony_ci 5437425bb815Sopenharmony_ci```c 5438425bb815Sopenharmony_ci#include "jerryscript.h" 5439425bb815Sopenharmony_ci 5440425bb815Sopenharmony_ciint 5441425bb815Sopenharmony_cimain (void) 5442425bb815Sopenharmony_ci{ 5443425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 5444425bb815Sopenharmony_ci 5445425bb815Sopenharmony_ci jerry_value_t global_object = jerry_get_global_object (); 5446425bb815Sopenharmony_ci jerry_value_t prop_name = jerry_create_string ((const jerry_char_t *) "hidden_property"); 5447425bb815Sopenharmony_ci 5448425bb815Sopenharmony_ci jerry_value_t prop_value = jerry_get_internal_property (global_object, prop_name); 5449425bb815Sopenharmony_ci 5450425bb815Sopenharmony_ci /* use "prop_value" then release it. */ 5451425bb815Sopenharmony_ci 5452425bb815Sopenharmony_ci jerry_release_value (prop_value); 5453425bb815Sopenharmony_ci jerry_release_value (prop_name); 5454425bb815Sopenharmony_ci jerry_release_value (global_object); 5455425bb815Sopenharmony_ci 5456425bb815Sopenharmony_ci return 0; 5457425bb815Sopenharmony_ci} 5458425bb815Sopenharmony_ci``` 5459425bb815Sopenharmony_ci 5460425bb815Sopenharmony_ci**See also** 5461425bb815Sopenharmony_ci 5462425bb815Sopenharmony_ci- [jerry_has_internal_property](#jerry_has_internal_property) 5463425bb815Sopenharmony_ci- [jerry_delete_internal_property](#jerry_delete_internal_property) 5464425bb815Sopenharmony_ci- [jerry_set_internal_property](#jerry_set_internal_property) 5465425bb815Sopenharmony_ci 5466425bb815Sopenharmony_ci 5467425bb815Sopenharmony_ci## jerry_set_property 5468425bb815Sopenharmony_ci 5469425bb815Sopenharmony_ci**Summary** 5470425bb815Sopenharmony_ci 5471425bb815Sopenharmony_ciSet a property to the specified object with the given name. 5472425bb815Sopenharmony_ci 5473425bb815Sopenharmony_ci*Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 5474425bb815Sopenharmony_ciis no longer needed. 5475425bb815Sopenharmony_ci 5476425bb815Sopenharmony_ci**Prototype** 5477425bb815Sopenharmony_ci 5478425bb815Sopenharmony_ci```c 5479425bb815Sopenharmony_cijerry_value_t 5480425bb815Sopenharmony_cijerry_set_property (const jerry_value_t obj_val, 5481425bb815Sopenharmony_ci const jerry_value_t prop_name_val, 5482425bb815Sopenharmony_ci const jerry_value_t value_to_set) 5483425bb815Sopenharmony_ci``` 5484425bb815Sopenharmony_ci 5485425bb815Sopenharmony_ci- `obj_val` - object value 5486425bb815Sopenharmony_ci- `prop_name_val` - property name 5487425bb815Sopenharmony_ci- `value_to_set` - value to set 5488425bb815Sopenharmony_ci- return value 5489425bb815Sopenharmony_ci - true, if success 5490425bb815Sopenharmony_ci - thrown error, otherwise 5491425bb815Sopenharmony_ci 5492425bb815Sopenharmony_ci**Example** 5493425bb815Sopenharmony_ci 5494425bb815Sopenharmony_ci```c 5495425bb815Sopenharmony_ci{ 5496425bb815Sopenharmony_ci jerry_value_t value_to_set; 5497425bb815Sopenharmony_ci 5498425bb815Sopenharmony_ci ... // create or acquire value to set 5499425bb815Sopenharmony_ci 5500425bb815Sopenharmony_ci jerry_value_t glob_obj = jerry_get_global_object (); 5501425bb815Sopenharmony_ci jerry_value_t prop_name = jerry_create_string ((const jerry_char_t *) "my_prop"); 5502425bb815Sopenharmony_ci 5503425bb815Sopenharmony_ci jerry_value_t set_result = jerry_set_property (glob_obj, prop_name, value_to_set); 5504425bb815Sopenharmony_ci 5505425bb815Sopenharmony_ci ... // check result of property set call 5506425bb815Sopenharmony_ci 5507425bb815Sopenharmony_ci jerry_release_value (set_result); 5508425bb815Sopenharmony_ci jerry_release_value (prop_name); 5509425bb815Sopenharmony_ci 5510425bb815Sopenharmony_ci ... 5511425bb815Sopenharmony_ci 5512425bb815Sopenharmony_ci jerry_release_value (value_to_set); 5513425bb815Sopenharmony_ci jerry_release_value (glob_obj); 5514425bb815Sopenharmony_ci} 5515425bb815Sopenharmony_ci``` 5516425bb815Sopenharmony_ci 5517425bb815Sopenharmony_ci**See also** 5518425bb815Sopenharmony_ci 5519425bb815Sopenharmony_ci- [jerry_has_property](#jerry_has_property) 5520425bb815Sopenharmony_ci- [jerry_has_own_property](#jerry_has_own_property) 5521425bb815Sopenharmony_ci- [jerry_delete_property](#jerry_delete_property) 5522425bb815Sopenharmony_ci- [jerry_delete_property_by_index](#jerry_delete_property_by_index) 5523425bb815Sopenharmony_ci- [jerry_get_property](#jerry_get_property) 5524425bb815Sopenharmony_ci- [jerry_get_property_by_index](#jerry_get_property_by_index) 5525425bb815Sopenharmony_ci- [jerry_set_property_by_index](#jerry_set_property_by_index) 5526425bb815Sopenharmony_ci 5527425bb815Sopenharmony_ci 5528425bb815Sopenharmony_ci## jerry_set_property_by_index 5529425bb815Sopenharmony_ci 5530425bb815Sopenharmony_ci**Summary** 5531425bb815Sopenharmony_ci 5532425bb815Sopenharmony_ciSet indexed value in the specified object 5533425bb815Sopenharmony_ci 5534425bb815Sopenharmony_ci*Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 5535425bb815Sopenharmony_ciis no longer needed. 5536425bb815Sopenharmony_ci 5537425bb815Sopenharmony_ci**Prototype** 5538425bb815Sopenharmony_ci 5539425bb815Sopenharmony_ci```c 5540425bb815Sopenharmony_cijerry_value_t 5541425bb815Sopenharmony_cijerry_set_property_by_index (const jerry_value_t obj_val, 5542425bb815Sopenharmony_ci uint32_t index, 5543425bb815Sopenharmony_ci const jerry_value_t value_to_set); 5544425bb815Sopenharmony_ci``` 5545425bb815Sopenharmony_ci 5546425bb815Sopenharmony_ci- `obj_val` - object value 5547425bb815Sopenharmony_ci- `index` - index number 5548425bb815Sopenharmony_ci- `value_to_set` - value to set 5549425bb815Sopenharmony_ci- return value 5550425bb815Sopenharmony_ci - true, if field value was set successfully 5551425bb815Sopenharmony_ci - thrown exception, otherwise 5552425bb815Sopenharmony_ci 5553425bb815Sopenharmony_ci**Example** 5554425bb815Sopenharmony_ci 5555425bb815Sopenharmony_ci```c 5556425bb815Sopenharmony_ci{ 5557425bb815Sopenharmony_ci jerry_value_t object; 5558425bb815Sopenharmony_ci jerry_value_t value_to_set; 5559425bb815Sopenharmony_ci 5560425bb815Sopenharmony_ci ... // create or acquire object and value to set 5561425bb815Sopenharmony_ci 5562425bb815Sopenharmony_ci jerry_value_t ret_val = jerry_set_property_by_index (object, 5, value_to_set); 5563425bb815Sopenharmony_ci 5564425bb815Sopenharmony_ci ... 5565425bb815Sopenharmony_ci 5566425bb815Sopenharmony_ci jerry_release_value (value_to_set); 5567425bb815Sopenharmony_ci jerry_release_value (ret_val); 5568425bb815Sopenharmony_ci jerry_release_value (object); 5569425bb815Sopenharmony_ci} 5570425bb815Sopenharmony_ci``` 5571425bb815Sopenharmony_ci 5572425bb815Sopenharmony_ci**See also** 5573425bb815Sopenharmony_ci 5574425bb815Sopenharmony_ci- [jerry_has_property](#jerry_has_property) 5575425bb815Sopenharmony_ci- [jerry_has_own_property](#jerry_has_own_property) 5576425bb815Sopenharmony_ci- [jerry_delete_property](#jerry_delete_property) 5577425bb815Sopenharmony_ci- [jerry_delete_property_by_index](#jerry_delete_property_by_index) 5578425bb815Sopenharmony_ci- [jerry_get_property](#jerry_get_property) 5579425bb815Sopenharmony_ci- [jerry_set_property](#jerry_set_property) 5580425bb815Sopenharmony_ci- [jerry_get_property_by_index](#jerry_get_property_by_index) 5581425bb815Sopenharmony_ci 5582425bb815Sopenharmony_ci 5583425bb815Sopenharmony_ci## jerry_set_internal_property 5584425bb815Sopenharmony_ci 5585425bb815Sopenharmony_ci**Summary** 5586425bb815Sopenharmony_ci 5587425bb815Sopenharmony_ciSet an internal property to the specified object with the given name. 5588425bb815Sopenharmony_ci 5589425bb815Sopenharmony_ci*Note*: 5590425bb815Sopenharmony_ci - The property cannot be accessed from the JavaScript context, only from the public API. 5591425bb815Sopenharmony_ci - It is different from [jerry_set_object_native_pointer](#jerry_set_object_native_pointer) in that any jerry API value 5592425bb815Sopenharmony_ci can be hidden from the JavaScript context, not only native pointers. 5593425bb815Sopenharmony_ci 5594425bb815Sopenharmony_ci**Prototype** 5595425bb815Sopenharmony_ci 5596425bb815Sopenharmony_ci```c 5597425bb815Sopenharmony_cibool 5598425bb815Sopenharmony_cijerry_set_internal_property (const jerry_value_t obj_val, 5599425bb815Sopenharmony_ci const jerry_value_t prop_name_val, 5600425bb815Sopenharmony_ci const jerry_value_t value_to_set) 5601425bb815Sopenharmony_ci``` 5602425bb815Sopenharmony_ci 5603425bb815Sopenharmony_ci- `obj_val` - object value 5604425bb815Sopenharmony_ci- `prop_name_val` - property name 5605425bb815Sopenharmony_ci- `value_to_set` - value to set 5606425bb815Sopenharmony_ci- return value 5607425bb815Sopenharmony_ci - true, if success 5608425bb815Sopenharmony_ci - thrown error, otherwise 5609425bb815Sopenharmony_ci 5610425bb815Sopenharmony_ci*New in version 2.2*. 5611425bb815Sopenharmony_ci 5612425bb815Sopenharmony_ci**Example** 5613425bb815Sopenharmony_ci 5614425bb815Sopenharmony_ci[doctest]: # () 5615425bb815Sopenharmony_ci 5616425bb815Sopenharmony_ci```c 5617425bb815Sopenharmony_ci#include "jerryscript.h" 5618425bb815Sopenharmony_ci 5619425bb815Sopenharmony_ciint 5620425bb815Sopenharmony_cimain (void) 5621425bb815Sopenharmony_ci{ 5622425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 5623425bb815Sopenharmony_ci 5624425bb815Sopenharmony_ci jerry_value_t global_object = jerry_get_global_object (); 5625425bb815Sopenharmony_ci jerry_value_t prop_name = jerry_create_string ((const jerry_char_t *) "hidden_property"); 5626425bb815Sopenharmony_ci jerry_value_t value_to_set = jerry_create_number (5); 5627425bb815Sopenharmony_ci 5628425bb815Sopenharmony_ci bool set_result = jerry_set_internal_property (global_object, prop_name, value_to_set); 5629425bb815Sopenharmony_ci 5630425bb815Sopenharmony_ci /* check the result of internal property set call */ 5631425bb815Sopenharmony_ci 5632425bb815Sopenharmony_ci jerry_release_value (value_to_set); 5633425bb815Sopenharmony_ci jerry_release_value (prop_name); 5634425bb815Sopenharmony_ci jerry_release_value (global_object); 5635425bb815Sopenharmony_ci 5636425bb815Sopenharmony_ci return 0; 5637425bb815Sopenharmony_ci} 5638425bb815Sopenharmony_ci``` 5639425bb815Sopenharmony_ci 5640425bb815Sopenharmony_ci**See also** 5641425bb815Sopenharmony_ci 5642425bb815Sopenharmony_ci- [jerry_has_internal_property](#jerry_has_internal_property) 5643425bb815Sopenharmony_ci- [jerry_delete_internal_property](#jerry_delete_internal_property) 5644425bb815Sopenharmony_ci- [jerry_get_internal_property](#jerry_get_internal_property) 5645425bb815Sopenharmony_ci 5646425bb815Sopenharmony_ci 5647425bb815Sopenharmony_ci## jerry_init_property_descriptor_fields 5648425bb815Sopenharmony_ci 5649425bb815Sopenharmony_ci**Summary** 5650425bb815Sopenharmony_ci 5651425bb815Sopenharmony_ciInitialize property descriptor. This means that all fields in the `jerry_property_descriptor_t` 5652425bb815Sopenharmony_cistruct will be set to zero or false depending on the field's type. 5653425bb815Sopenharmony_ci 5654425bb815Sopenharmony_ci**Prototype** 5655425bb815Sopenharmony_ci 5656425bb815Sopenharmony_ci```c 5657425bb815Sopenharmony_civoid 5658425bb815Sopenharmony_cijerry_init_property_descriptor_fields (jerry_property_descriptor_t *prop_desc_p); 5659425bb815Sopenharmony_ci``` 5660425bb815Sopenharmony_ci 5661425bb815Sopenharmony_ci- `prop_desc_p` - pointer to property descriptor 5662425bb815Sopenharmony_ci 5663425bb815Sopenharmony_ci**Example** 5664425bb815Sopenharmony_ci 5665425bb815Sopenharmony_ci```c 5666425bb815Sopenharmony_ci{ 5667425bb815Sopenharmony_ci jerry_property_descriptor_t prop_desc; 5668425bb815Sopenharmony_ci jerry_init_property_descriptor_fields (&prop_desc); 5669425bb815Sopenharmony_ci 5670425bb815Sopenharmony_ci ... // usage of prop_desc 5671425bb815Sopenharmony_ci 5672425bb815Sopenharmony_ci jerry_free_property_descriptor_fields (&prop_desc); 5673425bb815Sopenharmony_ci} 5674425bb815Sopenharmony_ci``` 5675425bb815Sopenharmony_ci 5676425bb815Sopenharmony_ciFor a more complete example see [jerry_define_own_property](#jerry_define_own_property). 5677425bb815Sopenharmony_ci 5678425bb815Sopenharmony_ci**See also** 5679425bb815Sopenharmony_ci 5680425bb815Sopenharmony_ci- [jerry_property_descriptor_t](#jerry_property_descriptor_t) 5681425bb815Sopenharmony_ci- [jerry_define_own_property](#jerry_define_own_property) 5682425bb815Sopenharmony_ci- [jerry_get_own_property_descriptor](#jerry_get_own_property_descriptor) 5683425bb815Sopenharmony_ci- [jerry_free_property_descriptor_fields](#jerry_free_property_descriptor_fields) 5684425bb815Sopenharmony_ci 5685425bb815Sopenharmony_ci 5686425bb815Sopenharmony_ci## jerry_define_own_property 5687425bb815Sopenharmony_ci 5688425bb815Sopenharmony_ci**Summary** 5689425bb815Sopenharmony_ci 5690425bb815Sopenharmony_ciDefine a property to the specified object with the given name. 5691425bb815Sopenharmony_ci 5692425bb815Sopenharmony_ci*Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 5693425bb815Sopenharmony_ciis no longer needed. 5694425bb815Sopenharmony_ci 5695425bb815Sopenharmony_ci**Prototype** 5696425bb815Sopenharmony_ci 5697425bb815Sopenharmony_ci```c 5698425bb815Sopenharmony_cijerry_value_t 5699425bb815Sopenharmony_cijerry_define_own_property (const jerry_value_t obj_val, 5700425bb815Sopenharmony_ci const jerry_value_t prop_name_val, 5701425bb815Sopenharmony_ci const jerry_property_descriptor_t *prop_desc_p); 5702425bb815Sopenharmony_ci``` 5703425bb815Sopenharmony_ci 5704425bb815Sopenharmony_ci- `obj_val` - target object where the property should be registered 5705425bb815Sopenharmony_ci- `prop_name_val` - property name 5706425bb815Sopenharmony_ci- `prop_desc_p` - pointer to property descriptor 5707425bb815Sopenharmony_ci- return value 5708425bb815Sopenharmony_ci - true, if success 5709425bb815Sopenharmony_ci - thrown error, otherwise 5710425bb815Sopenharmony_ci 5711425bb815Sopenharmony_ci**Example** 5712425bb815Sopenharmony_ci 5713425bb815Sopenharmony_ciRegistering a simple value property via the `jerry_define_own_property` method: 5714425bb815Sopenharmony_ci 5715425bb815Sopenharmony_ci[doctest]: # (name="02.API-REFERENCE-define-property.c") 5716425bb815Sopenharmony_ci 5717425bb815Sopenharmony_ci```c 5718425bb815Sopenharmony_ci#include "jerryscript.h" 5719425bb815Sopenharmony_ci 5720425bb815Sopenharmony_ciint 5721425bb815Sopenharmony_cimain (void) 5722425bb815Sopenharmony_ci{ 5723425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 5724425bb815Sopenharmony_ci 5725425bb815Sopenharmony_ci jerry_value_t global_obj_val = jerry_get_global_object (); 5726425bb815Sopenharmony_ci 5727425bb815Sopenharmony_ci // configure the property 5728425bb815Sopenharmony_ci jerry_property_descriptor_t prop_desc; 5729425bb815Sopenharmony_ci jerry_init_property_descriptor_fields (&prop_desc); 5730425bb815Sopenharmony_ci 5731425bb815Sopenharmony_ci jerry_value_t value_to_set; 5732425bb815Sopenharmony_ci 5733425bb815Sopenharmony_ci // create or acquire value to set 5734425bb815Sopenharmony_ci // For example: 5735425bb815Sopenharmony_ci value_to_set = jerry_create_number (33); 5736425bb815Sopenharmony_ci 5737425bb815Sopenharmony_ci // set the property descriptor fields: 5738425bb815Sopenharmony_ci // set the "is_value_defined" field to "true" to indicate the "value" 5739425bb815Sopenharmony_ci // field should be used during the property registration. 5740425bb815Sopenharmony_ci prop_desc.is_value_defined = true; 5741425bb815Sopenharmony_ci 5742425bb815Sopenharmony_ci // set the "value" field to the number 33 5743425bb815Sopenharmony_ci prop_desc.value = value_to_set; 5744425bb815Sopenharmony_ci 5745425bb815Sopenharmony_ci // add the property as "my_prop" for the global object 5746425bb815Sopenharmony_ci jerry_value_t prop_name = jerry_create_string ((const jerry_char_t *) "my_prop"); 5747425bb815Sopenharmony_ci jerry_value_t return_value = jerry_define_own_property (global_obj_val, prop_name, &prop_desc); 5748425bb815Sopenharmony_ci if (jerry_value_is_error (return_value)) 5749425bb815Sopenharmony_ci { 5750425bb815Sopenharmony_ci // there was an error 5751425bb815Sopenharmony_ci } 5752425bb815Sopenharmony_ci 5753425bb815Sopenharmony_ci // if there was no error at this point the global object should have a "my_prop" property 5754425bb815Sopenharmony_ci 5755425bb815Sopenharmony_ci jerry_release_value (return_value); 5756425bb815Sopenharmony_ci jerry_release_value (prop_name); 5757425bb815Sopenharmony_ci 5758425bb815Sopenharmony_ci jerry_free_property_descriptor_fields (&prop_desc); 5759425bb815Sopenharmony_ci jerry_release_value (global_obj_val); 5760425bb815Sopenharmony_ci 5761425bb815Sopenharmony_ci jerry_cleanup (); 5762425bb815Sopenharmony_ci return 0; 5763425bb815Sopenharmony_ci} 5764425bb815Sopenharmony_ci``` 5765425bb815Sopenharmony_ci 5766425bb815Sopenharmony_ci 5767425bb815Sopenharmony_ciRegistering a getter/setter property via the `jerry_define_own_property` method: 5768425bb815Sopenharmony_ci 5769425bb815Sopenharmony_ci[doctest]: # (name="02.API-REFERENCE-define-property-getset.c") 5770425bb815Sopenharmony_ci 5771425bb815Sopenharmony_ci```c 5772425bb815Sopenharmony_ci#include <stdio.h> 5773425bb815Sopenharmony_ci#include <string.h> 5774425bb815Sopenharmony_ci#include "jerryscript.h" 5775425bb815Sopenharmony_ci 5776425bb815Sopenharmony_cistatic int counter = 0; 5777425bb815Sopenharmony_ci 5778425bb815Sopenharmony_cistatic jerry_value_t 5779425bb815Sopenharmony_cimethod_getter (const jerry_value_t this_obj, 5780425bb815Sopenharmony_ci const jerry_value_t func_obj, 5781425bb815Sopenharmony_ci const jerry_value_t args[], 5782425bb815Sopenharmony_ci const jerry_length_t argc) 5783425bb815Sopenharmony_ci{ 5784425bb815Sopenharmony_ci counter++; 5785425bb815Sopenharmony_ci printf("Getter called, returning: %d\n", counter); 5786425bb815Sopenharmony_ci 5787425bb815Sopenharmony_ci return jerry_create_number (counter); 5788425bb815Sopenharmony_ci} 5789425bb815Sopenharmony_ci 5790425bb815Sopenharmony_cistatic jerry_value_t 5791425bb815Sopenharmony_cimethod_setter (const jerry_value_t this_obj, 5792425bb815Sopenharmony_ci const jerry_value_t func_obj, 5793425bb815Sopenharmony_ci const jerry_value_t args[], 5794425bb815Sopenharmony_ci const jerry_length_t argc) 5795425bb815Sopenharmony_ci{ 5796425bb815Sopenharmony_ci // Note: the arguments count and type should be checked 5797425bb815Sopenharmony_ci // in this example it is ommitted! 5798425bb815Sopenharmony_ci 5799425bb815Sopenharmony_ci double new_value = jerry_get_number_value (args[0]); 5800425bb815Sopenharmony_ci counter = (int) new_value; 5801425bb815Sopenharmony_ci 5802425bb815Sopenharmony_ci printf("Setter called, setting: %d\n", counter); 5803425bb815Sopenharmony_ci 5804425bb815Sopenharmony_ci return jerry_create_undefined (); 5805425bb815Sopenharmony_ci} 5806425bb815Sopenharmony_ci 5807425bb815Sopenharmony_ciint 5808425bb815Sopenharmony_cimain (void) 5809425bb815Sopenharmony_ci{ 5810425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 5811425bb815Sopenharmony_ci 5812425bb815Sopenharmony_ci jerry_value_t global_obj_val = jerry_get_global_object (); 5813425bb815Sopenharmony_ci 5814425bb815Sopenharmony_ci // configure the property 5815425bb815Sopenharmony_ci jerry_property_descriptor_t prop_desc; 5816425bb815Sopenharmony_ci jerry_init_property_descriptor_fields (&prop_desc); 5817425bb815Sopenharmony_ci 5818425bb815Sopenharmony_ci // set the property descriptor fields: 5819425bb815Sopenharmony_ci 5820425bb815Sopenharmony_ci prop_desc.is_get_defined = true; 5821425bb815Sopenharmony_ci prop_desc.getter = jerry_create_external_function (method_getter); 5822425bb815Sopenharmony_ci prop_desc.is_set_defined = true; 5823425bb815Sopenharmony_ci prop_desc.setter = jerry_create_external_function (method_setter); 5824425bb815Sopenharmony_ci 5825425bb815Sopenharmony_ci // add the property as "my_prop" for the global object 5826425bb815Sopenharmony_ci jerry_value_t prop_name = jerry_create_string ((const jerry_char_t *) "my_prop"); 5827425bb815Sopenharmony_ci jerry_value_t return_value = jerry_define_own_property (global_obj_val, prop_name, &prop_desc); 5828425bb815Sopenharmony_ci if (jerry_value_is_error (return_value)) 5829425bb815Sopenharmony_ci { 5830425bb815Sopenharmony_ci // there was an error 5831425bb815Sopenharmony_ci } 5832425bb815Sopenharmony_ci 5833425bb815Sopenharmony_ci // if there was no error at this point the global object should have a "my_prop" property 5834425bb815Sopenharmony_ci 5835425bb815Sopenharmony_ci jerry_release_value (return_value); 5836425bb815Sopenharmony_ci jerry_release_value (prop_name); 5837425bb815Sopenharmony_ci 5838425bb815Sopenharmony_ci jerry_free_property_descriptor_fields (&prop_desc); 5839425bb815Sopenharmony_ci jerry_release_value (global_obj_val); 5840425bb815Sopenharmony_ci 5841425bb815Sopenharmony_ci // run an example js code to use the getter/setters 5842425bb815Sopenharmony_ci 5843425bb815Sopenharmony_ci const char *src_p = "this.my_prop; this.my_prop; this.my_prop = 4; this.my_prop"; 5844425bb815Sopenharmony_ci jerry_value_t eval_result = jerry_eval ((const jerry_char_t *) src_p, strlen (src_p), JERRY_PARSE_NO_OPTS); 5845425bb815Sopenharmony_ci 5846425bb815Sopenharmony_ci // "eval_result" is the last result of "this.my_prop" that is "5" currently. 5847425bb815Sopenharmony_ci double result_number = jerry_get_number_value (eval_result); 5848425bb815Sopenharmony_ci printf("output: %lf\n", result_number); 5849425bb815Sopenharmony_ci 5850425bb815Sopenharmony_ci jerry_cleanup (); 5851425bb815Sopenharmony_ci 5852425bb815Sopenharmony_ci return result_number != 5.0; 5853425bb815Sopenharmony_ci} 5854425bb815Sopenharmony_ci``` 5855425bb815Sopenharmony_ci 5856425bb815Sopenharmony_ci**See also** 5857425bb815Sopenharmony_ci 5858425bb815Sopenharmony_ci- [jerry_property_descriptor_t](#jerry_property_descriptor_t) 5859425bb815Sopenharmony_ci- [jerry_init_property_descriptor_fields](#jerry_init_property_descriptor_fields) 5860425bb815Sopenharmony_ci- [jerry_get_own_property_descriptor](#jerry_get_own_property_descriptor) 5861425bb815Sopenharmony_ci- [jerry_free_property_descriptor_fields](#jerry_free_property_descriptor_fields) 5862425bb815Sopenharmony_ci 5863425bb815Sopenharmony_ci 5864425bb815Sopenharmony_ci## jerry_get_own_property_descriptor 5865425bb815Sopenharmony_ci 5866425bb815Sopenharmony_ci**Summary** 5867425bb815Sopenharmony_ci 5868425bb815Sopenharmony_ciConstruct property descriptor from specified property. 5869425bb815Sopenharmony_ci 5870425bb815Sopenharmony_ci**Prototype** 5871425bb815Sopenharmony_ci 5872425bb815Sopenharmony_ci```c 5873425bb815Sopenharmony_cibool 5874425bb815Sopenharmony_cijerry_get_own_property_descriptor (const jerry_value_t obj_val, 5875425bb815Sopenharmony_ci const jerry_value_t prop_name_val, 5876425bb815Sopenharmony_ci jerry_property_descriptor_t *prop_desc_p); 5877425bb815Sopenharmony_ci``` 5878425bb815Sopenharmony_ci 5879425bb815Sopenharmony_ci- `obj_val` - object value 5880425bb815Sopenharmony_ci- `prop_name_val` - property name 5881425bb815Sopenharmony_ci- `prop_desc_p` - pointer to property descriptor 5882425bb815Sopenharmony_ci- return value 5883425bb815Sopenharmony_ci 5884425bb815Sopenharmony_ci**Example** 5885425bb815Sopenharmony_ci 5886425bb815Sopenharmony_ci```c 5887425bb815Sopenharmony_ci{ 5888425bb815Sopenharmony_ci jerry_value_t global_obj_val = jerry_get_global_object (); 5889425bb815Sopenharmony_ci 5890425bb815Sopenharmony_ci jerry_property_descriptor_t prop_desc; 5891425bb815Sopenharmony_ci jerry_init_property_descriptor_fields (&prop_desc); 5892425bb815Sopenharmony_ci 5893425bb815Sopenharmony_ci jerry_value_t prop_name = jerry_create_string ((const jerry_char_t *) "my_prop"); 5894425bb815Sopenharmony_ci jerry_get_own_property_descriptor (global_obj_val, prop_name, &prop_desc); 5895425bb815Sopenharmony_ci jerry_release_value (prop_name); 5896425bb815Sopenharmony_ci 5897425bb815Sopenharmony_ci ... // usage of property descriptor 5898425bb815Sopenharmony_ci 5899425bb815Sopenharmony_ci jerry_free_property_descriptor_fields (&prop_desc); 5900425bb815Sopenharmony_ci jerry_release_value (global_obj_val); 5901425bb815Sopenharmony_ci} 5902425bb815Sopenharmony_ci``` 5903425bb815Sopenharmony_ci 5904425bb815Sopenharmony_ci**See also** 5905425bb815Sopenharmony_ci 5906425bb815Sopenharmony_ci- [jerry_property_descriptor_t](#jerry_property_descriptor_t) 5907425bb815Sopenharmony_ci- [jerry_init_property_descriptor_fields](#jerry_init_property_descriptor_fields) 5908425bb815Sopenharmony_ci- [jerry_define_own_property](#jerry_define_own_property) 5909425bb815Sopenharmony_ci- [jerry_free_property_descriptor_fields](#jerry_free_property_descriptor_fields) 5910425bb815Sopenharmony_ci 5911425bb815Sopenharmony_ci 5912425bb815Sopenharmony_ci## jerry_free_property_descriptor_fields 5913425bb815Sopenharmony_ci 5914425bb815Sopenharmony_ci**Summary** 5915425bb815Sopenharmony_ci 5916425bb815Sopenharmony_ciFree fields of property descriptor (setter, getter and value). 5917425bb815Sopenharmony_ci 5918425bb815Sopenharmony_ci**Prototype** 5919425bb815Sopenharmony_ci 5920425bb815Sopenharmony_ci```c 5921425bb815Sopenharmony_civoid 5922425bb815Sopenharmony_cijerry_free_property_descriptor_fields (const jerry_property_descriptor_t *prop_desc_p); 5923425bb815Sopenharmony_ci``` 5924425bb815Sopenharmony_ci 5925425bb815Sopenharmony_ci- `prop_desc_p` - pointer to property descriptor 5926425bb815Sopenharmony_ci 5927425bb815Sopenharmony_ci**Example** 5928425bb815Sopenharmony_ci 5929425bb815Sopenharmony_ci```c 5930425bb815Sopenharmony_ci{ 5931425bb815Sopenharmony_ci jerry_property_descriptor_t prop_desc; 5932425bb815Sopenharmony_ci jerry_init_property_descriptor_fields (&prop_desc); 5933425bb815Sopenharmony_ci 5934425bb815Sopenharmony_ci ... // usage of property descriptor 5935425bb815Sopenharmony_ci 5936425bb815Sopenharmony_ci jerry_free_property_descriptor_fields (&prop_desc); 5937425bb815Sopenharmony_ci} 5938425bb815Sopenharmony_ci``` 5939425bb815Sopenharmony_ci 5940425bb815Sopenharmony_ci**See also** 5941425bb815Sopenharmony_ci 5942425bb815Sopenharmony_ci- [jerry_init_property_descriptor_fields](#jerry_init_property_descriptor_fields) 5943425bb815Sopenharmony_ci- [jerry_define_own_property](#jerry_define_own_property) 5944425bb815Sopenharmony_ci- [jerry_get_own_property_descriptor](#jerry_get_own_property_descriptor) 5945425bb815Sopenharmony_ci 5946425bb815Sopenharmony_ci 5947425bb815Sopenharmony_ci## jerry_call_function 5948425bb815Sopenharmony_ci 5949425bb815Sopenharmony_ci**Summary** 5950425bb815Sopenharmony_ci 5951425bb815Sopenharmony_ciCall function specified by a function value. Error flag must 5952425bb815Sopenharmony_cinot be set for any arguments of this function. Value of `this` 5953425bb815Sopenharmony_ciparameter should be set to `undefined` for non-method calls. 5954425bb815Sopenharmony_ci 5955425bb815Sopenharmony_ci*Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 5956425bb815Sopenharmony_ciis no longer needed. 5957425bb815Sopenharmony_ci 5958425bb815Sopenharmony_ci**Prototype** 5959425bb815Sopenharmony_ci 5960425bb815Sopenharmony_ci```c 5961425bb815Sopenharmony_cijerry_value_t 5962425bb815Sopenharmony_cijerry_call_function (const jerry_value_t func_obj_val, 5963425bb815Sopenharmony_ci const jerry_value_t this_val, 5964425bb815Sopenharmony_ci const jerry_value_t args_p[], 5965425bb815Sopenharmony_ci jerry_size_t args_count); 5966425bb815Sopenharmony_ci``` 5967425bb815Sopenharmony_ci 5968425bb815Sopenharmony_ci- `func_obj_val` - the function object to call 5969425bb815Sopenharmony_ci- `this_val` - object for 'this' binding 5970425bb815Sopenharmony_ci- `args_p` - function's call arguments 5971425bb815Sopenharmony_ci- `args_count` - number of arguments 5972425bb815Sopenharmony_ci- return value - returned jerry value of the called function 5973425bb815Sopenharmony_ci 5974425bb815Sopenharmony_ci**Example** 5975425bb815Sopenharmony_ci 5976425bb815Sopenharmony_ci```c 5977425bb815Sopenharmony_ci{ 5978425bb815Sopenharmony_ci jerry_value_t target_function; 5979425bb815Sopenharmony_ci 5980425bb815Sopenharmony_ci ... // create or get "target_function" 5981425bb815Sopenharmony_ci 5982425bb815Sopenharmony_ci if (jerry_value_is_function (target_function)) 5983425bb815Sopenharmony_ci { 5984425bb815Sopenharmony_ci jerry_value_t this_val = jerry_create_undefined (); 5985425bb815Sopenharmony_ci jerry_value_t ret_val = jerry_call_function (target_function, this_val, NULL, 0); 5986425bb815Sopenharmony_ci 5987425bb815Sopenharmony_ci if (!jerry_value_is_error (ret_val)) 5988425bb815Sopenharmony_ci { 5989425bb815Sopenharmony_ci ... // handle return value 5990425bb815Sopenharmony_ci } 5991425bb815Sopenharmony_ci 5992425bb815Sopenharmony_ci jerry_release_value (ret_val); 5993425bb815Sopenharmony_ci jerry_release_value (this_val); 5994425bb815Sopenharmony_ci } 5995425bb815Sopenharmony_ci 5996425bb815Sopenharmony_ci jerry_release_value (target_function); 5997425bb815Sopenharmony_ci} 5998425bb815Sopenharmony_ci``` 5999425bb815Sopenharmony_ci 6000425bb815Sopenharmony_ci**See also** 6001425bb815Sopenharmony_ci 6002425bb815Sopenharmony_ci- [jerry_is_function](#jerry_is_function) 6003425bb815Sopenharmony_ci- [jerry_create_external_function](#jerry_create_external_function) 6004425bb815Sopenharmony_ci 6005425bb815Sopenharmony_ci 6006425bb815Sopenharmony_ci## jerry_construct_object 6007425bb815Sopenharmony_ci 6008425bb815Sopenharmony_ci**Summary** 6009425bb815Sopenharmony_ci 6010425bb815Sopenharmony_ciConstruct object, invoking specified function object as constructor. 6011425bb815Sopenharmony_ciError flag must not be set for any arguments of this function. 6012425bb815Sopenharmony_ci 6013425bb815Sopenharmony_ci*Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 6014425bb815Sopenharmony_ciis no longer needed. 6015425bb815Sopenharmony_ci 6016425bb815Sopenharmony_ci**Prototype** 6017425bb815Sopenharmony_ci 6018425bb815Sopenharmony_ci```c 6019425bb815Sopenharmony_cijerry_value_t 6020425bb815Sopenharmony_cijerry_construct_object (const jerry_value_t func_obj_val, 6021425bb815Sopenharmony_ci const jerry_value_t args_p[], 6022425bb815Sopenharmony_ci jerry_size_t args_count); 6023425bb815Sopenharmony_ci``` 6024425bb815Sopenharmony_ci 6025425bb815Sopenharmony_ci- `func_obj_val` - function object to call 6026425bb815Sopenharmony_ci- `args_p` - function's call arguments 6027425bb815Sopenharmony_ci- `args_count` - number of arguments 6028425bb815Sopenharmony_ci- return value - returned value of the invoked constructor 6029425bb815Sopenharmony_ci 6030425bb815Sopenharmony_ci**Example** 6031425bb815Sopenharmony_ci 6032425bb815Sopenharmony_ci```c 6033425bb815Sopenharmony_ci{ 6034425bb815Sopenharmony_ci jerry_value_t val; 6035425bb815Sopenharmony_ci 6036425bb815Sopenharmony_ci ... // receiving val 6037425bb815Sopenharmony_ci 6038425bb815Sopenharmony_ci if (jerry_is_constructor (val)) 6039425bb815Sopenharmony_ci { 6040425bb815Sopenharmony_ci jerry_value_t ret_val = jerry_construct_object (val, NULL, 0); 6041425bb815Sopenharmony_ci 6042425bb815Sopenharmony_ci if (!jerry_value_is_error (ret_val)) 6043425bb815Sopenharmony_ci { 6044425bb815Sopenharmony_ci ... // handle return value 6045425bb815Sopenharmony_ci } 6046425bb815Sopenharmony_ci 6047425bb815Sopenharmony_ci jerry_release_value (ret_val); 6048425bb815Sopenharmony_ci } 6049425bb815Sopenharmony_ci} 6050425bb815Sopenharmony_ci``` 6051425bb815Sopenharmony_ci 6052425bb815Sopenharmony_ci**See also** 6053425bb815Sopenharmony_ci 6054425bb815Sopenharmony_ci - [jerry_is_constructor](#jerry_is_constructor) 6055425bb815Sopenharmony_ci 6056425bb815Sopenharmony_ci 6057425bb815Sopenharmony_ci## jerry_get_object_keys 6058425bb815Sopenharmony_ci 6059425bb815Sopenharmony_ci**Summary** 6060425bb815Sopenharmony_ci 6061425bb815Sopenharmony_ciGet keys of the specified object value. 6062425bb815Sopenharmony_ci 6063425bb815Sopenharmony_ci*Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 6064425bb815Sopenharmony_ciis no longer needed. 6065425bb815Sopenharmony_ci 6066425bb815Sopenharmony_ci**Prototype** 6067425bb815Sopenharmony_ci 6068425bb815Sopenharmony_ci```c 6069425bb815Sopenharmony_cijerry_value_t 6070425bb815Sopenharmony_cijerry_get_object_keys (const jerry_value_t obj_val); 6071425bb815Sopenharmony_ci``` 6072425bb815Sopenharmony_ci 6073425bb815Sopenharmony_ci- `obj_val` - object value 6074425bb815Sopenharmony_ci- return value 6075425bb815Sopenharmony_ci - array object value, if success 6076425bb815Sopenharmony_ci - thrown error, otherwise 6077425bb815Sopenharmony_ci 6078425bb815Sopenharmony_ci**Example** 6079425bb815Sopenharmony_ci 6080425bb815Sopenharmony_ci```c 6081425bb815Sopenharmony_ci{ 6082425bb815Sopenharmony_ci jerry_value_t object; 6083425bb815Sopenharmony_ci ... // create or acquire object 6084425bb815Sopenharmony_ci 6085425bb815Sopenharmony_ci jerry_value_t keys_array = jerry_get_object_keys (object); 6086425bb815Sopenharmony_ci 6087425bb815Sopenharmony_ci ... // usage of keys_array 6088425bb815Sopenharmony_ci 6089425bb815Sopenharmony_ci jerry_release_value (keys_array); 6090425bb815Sopenharmony_ci} 6091425bb815Sopenharmony_ci``` 6092425bb815Sopenharmony_ci 6093425bb815Sopenharmony_ci**See also** 6094425bb815Sopenharmony_ci 6095425bb815Sopenharmony_ci- [jerry_get_property](#jerry_get_property) 6096425bb815Sopenharmony_ci- [jerry_set_property](#jerry_set_property) 6097425bb815Sopenharmony_ci 6098425bb815Sopenharmony_ci 6099425bb815Sopenharmony_ci## jerry_get_prototype 6100425bb815Sopenharmony_ci 6101425bb815Sopenharmony_ci**Summary** 6102425bb815Sopenharmony_ci 6103425bb815Sopenharmony_ciGet the prototype of the specified object. 6104425bb815Sopenharmony_ci 6105425bb815Sopenharmony_ci*Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 6106425bb815Sopenharmony_ciis no longer needed. 6107425bb815Sopenharmony_ci 6108425bb815Sopenharmony_ci**Prototype** 6109425bb815Sopenharmony_ci 6110425bb815Sopenharmony_ci```c 6111425bb815Sopenharmony_cijerry_value_t 6112425bb815Sopenharmony_cijerry_get_prototype (const jerry_value_t obj_val); 6113425bb815Sopenharmony_ci``` 6114425bb815Sopenharmony_ci 6115425bb815Sopenharmony_ci- `obj_val` - object value 6116425bb815Sopenharmony_ci- return value 6117425bb815Sopenharmony_ci - object value, if success 6118425bb815Sopenharmony_ci - null or thrown error, otherwise 6119425bb815Sopenharmony_ci 6120425bb815Sopenharmony_ci**Example** 6121425bb815Sopenharmony_ci 6122425bb815Sopenharmony_ci```c 6123425bb815Sopenharmony_ci{ 6124425bb815Sopenharmony_ci jerry_value_t object; 6125425bb815Sopenharmony_ci ... // create or acquire object 6126425bb815Sopenharmony_ci 6127425bb815Sopenharmony_ci jerry_value_t prototype = jerry_get_prototype (object); 6128425bb815Sopenharmony_ci 6129425bb815Sopenharmony_ci ... // usage of prototype object 6130425bb815Sopenharmony_ci 6131425bb815Sopenharmony_ci jerry_release_value (prototype); 6132425bb815Sopenharmony_ci jerry_release_value (object); 6133425bb815Sopenharmony_ci} 6134425bb815Sopenharmony_ci``` 6135425bb815Sopenharmony_ci 6136425bb815Sopenharmony_ci**See also** 6137425bb815Sopenharmony_ci 6138425bb815Sopenharmony_ci- [jerry_set_prototype](#jerry_set_prototype) 6139425bb815Sopenharmony_ci 6140425bb815Sopenharmony_ci 6141425bb815Sopenharmony_ci## jerry_set_prototype 6142425bb815Sopenharmony_ci 6143425bb815Sopenharmony_ci**Summary** 6144425bb815Sopenharmony_ci 6145425bb815Sopenharmony_ciSet the prototype of the specified object. 6146425bb815Sopenharmony_ci 6147425bb815Sopenharmony_ci*Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 6148425bb815Sopenharmony_ciis no longer needed. 6149425bb815Sopenharmony_ci 6150425bb815Sopenharmony_ci**Prototype** 6151425bb815Sopenharmony_ci 6152425bb815Sopenharmony_ci```c 6153425bb815Sopenharmony_cijerry_value_t 6154425bb815Sopenharmony_cijerry_set_prototype (const jerry_value_t obj_val, 6155425bb815Sopenharmony_ci const jerry_value_t proto_obj_val); 6156425bb815Sopenharmony_ci``` 6157425bb815Sopenharmony_ci 6158425bb815Sopenharmony_ci- `obj_val` - object value 6159425bb815Sopenharmony_ci- `proto_obj_val` - prototype object value 6160425bb815Sopenharmony_ci- return value 6161425bb815Sopenharmony_ci - true, if success 6162425bb815Sopenharmony_ci - thrown error, otherwise 6163425bb815Sopenharmony_ci 6164425bb815Sopenharmony_ci**Example** 6165425bb815Sopenharmony_ci 6166425bb815Sopenharmony_ci```c 6167425bb815Sopenharmony_ci{ 6168425bb815Sopenharmony_ci jerry_value_t object; 6169425bb815Sopenharmony_ci jerry_value_t prototype; 6170425bb815Sopenharmony_ci 6171425bb815Sopenharmony_ci ... // create or acquire object and prototype 6172425bb815Sopenharmony_ci 6173425bb815Sopenharmony_ci jerry_value_t ret_val = jerry_set_prototype (object, prototype); 6174425bb815Sopenharmony_ci 6175425bb815Sopenharmony_ci jerry_release_value (ret_val); 6176425bb815Sopenharmony_ci jerry_release_value (prototype); 6177425bb815Sopenharmony_ci jerry_release_value (object); 6178425bb815Sopenharmony_ci} 6179425bb815Sopenharmony_ci``` 6180425bb815Sopenharmony_ci 6181425bb815Sopenharmony_ci**See also** 6182425bb815Sopenharmony_ci 6183425bb815Sopenharmony_ci- [jerry_get_prototype](#jerry_get_prototype) 6184425bb815Sopenharmony_ci 6185425bb815Sopenharmony_ci 6186425bb815Sopenharmony_ci## jerry_get_object_native_pointer 6187425bb815Sopenharmony_ci 6188425bb815Sopenharmony_ci**Summary** 6189425bb815Sopenharmony_ci 6190425bb815Sopenharmony_ciGet native pointer by the given type information. 6191425bb815Sopenharmony_ciThe pointer and the type information are previously associated with the object by 6192425bb815Sopenharmony_ci[jerry_set_object_native_pointer](#jerry_set_object_native_pointer). 6193425bb815Sopenharmony_ci 6194425bb815Sopenharmony_ci*Note*: `out_native_pointer_p` can be NULL, and it means the 6195425bb815Sopenharmony_ci caller doesn't want to get the native_pointer. 6196425bb815Sopenharmony_ci 6197425bb815Sopenharmony_ci**Prototype** 6198425bb815Sopenharmony_ci 6199425bb815Sopenharmony_ci```c 6200425bb815Sopenharmony_cibool 6201425bb815Sopenharmony_cijerry_get_object_native_pointer (const jerry_value_t obj_val, 6202425bb815Sopenharmony_ci void **out_native_pointer_p, 6203425bb815Sopenharmony_ci const jerry_object_native_info_t *native_info_p) 6204425bb815Sopenharmony_ci``` 6205425bb815Sopenharmony_ci 6206425bb815Sopenharmony_ci- `obj_val` - object value to get native pointer from. 6207425bb815Sopenharmony_ci- `out_native_pointer_p` - native pointer (output parameter). 6208425bb815Sopenharmony_ci- `native_info_p` - native pointer's type information. 6209425bb815Sopenharmony_ci- return value 6210425bb815Sopenharmony_ci - true, if there is native pointer associated of the specified object with the given native type info 6211425bb815Sopenharmony_ci - false, otherwise 6212425bb815Sopenharmony_ci 6213425bb815Sopenharmony_ci*New in version 2.0*: Changed from `jerry_get_object_native_handle`. 6214425bb815Sopenharmony_ci 6215425bb815Sopenharmony_ci**Example** 6216425bb815Sopenharmony_ci 6217425bb815Sopenharmony_ci[doctest]: # () 6218425bb815Sopenharmony_ci 6219425bb815Sopenharmony_ci```c 6220425bb815Sopenharmony_ci#include <stdio.h> 6221425bb815Sopenharmony_ci#include <stdlib.h> 6222425bb815Sopenharmony_ci#include <string.h> 6223425bb815Sopenharmony_ci#include "jerryscript.h" 6224425bb815Sopenharmony_ci 6225425bb815Sopenharmony_citypedef struct 6226425bb815Sopenharmony_ci{ 6227425bb815Sopenharmony_ci char *data_p; 6228425bb815Sopenharmony_ci unsigned int length; 6229425bb815Sopenharmony_ci} buffer_native_object_t; 6230425bb815Sopenharmony_ci 6231425bb815Sopenharmony_citypedef struct 6232425bb815Sopenharmony_ci{ 6233425bb815Sopenharmony_ci int area; 6234425bb815Sopenharmony_ci int perimeter; 6235425bb815Sopenharmony_ci} shape_native_object_t; 6236425bb815Sopenharmony_ci 6237425bb815Sopenharmony_ci#define SECRET_INFO ((void *) 42) 6238425bb815Sopenharmony_ci 6239425bb815Sopenharmony_cistatic void 6240425bb815Sopenharmony_cibuffer_native_freecb (void *native_p) 6241425bb815Sopenharmony_ci{ 6242425bb815Sopenharmony_ci char *data_p = ((buffer_native_object_t*)native_p)->data_p; 6243425bb815Sopenharmony_ci 6244425bb815Sopenharmony_ci if (data_p != NULL) 6245425bb815Sopenharmony_ci { 6246425bb815Sopenharmony_ci free (data_p); 6247425bb815Sopenharmony_ci } 6248425bb815Sopenharmony_ci 6249425bb815Sopenharmony_ci free (native_p); 6250425bb815Sopenharmony_ci} 6251425bb815Sopenharmony_ci 6252425bb815Sopenharmony_cistatic void 6253425bb815Sopenharmony_cishape_native_freecb (void *native_p) 6254425bb815Sopenharmony_ci{ 6255425bb815Sopenharmony_ci free (native_p); 6256425bb815Sopenharmony_ci} 6257425bb815Sopenharmony_ci 6258425bb815Sopenharmony_cistatic void 6259425bb815Sopenharmony_cidestructor_freecb (void *native_p) 6260425bb815Sopenharmony_ci{ 6261425bb815Sopenharmony_ci printf("Note: the object has been freed\n"); 6262425bb815Sopenharmony_ci} 6263425bb815Sopenharmony_ci 6264425bb815Sopenharmony_ci// NOTE: The address (!) of type_info acts as a way to uniquely "identify" the 6265425bb815Sopenharmony_ci// C type `buffer_native_object_t *`. 6266425bb815Sopenharmony_cistatic const jerry_object_native_info_t buffer_obj_type_info = 6267425bb815Sopenharmony_ci{ 6268425bb815Sopenharmony_ci .free_cb = buffer_native_freecb 6269425bb815Sopenharmony_ci}; 6270425bb815Sopenharmony_ci 6271425bb815Sopenharmony_ci// NOTE: The address (!) of type_info acts as a way to uniquely "identify" the 6272425bb815Sopenharmony_ci// C type `shape_native_object_t *`. 6273425bb815Sopenharmony_cistatic const jerry_object_native_info_t shape_obj_type_info = 6274425bb815Sopenharmony_ci{ 6275425bb815Sopenharmony_ci .free_cb = shape_native_freecb 6276425bb815Sopenharmony_ci}; 6277425bb815Sopenharmony_ci 6278425bb815Sopenharmony_ci// NOTE: The address (!) of type_info is the unique "identifier" 6279425bb815Sopenharmony_cistatic const jerry_object_native_info_t destructor_obj_type_info = 6280425bb815Sopenharmony_ci{ 6281425bb815Sopenharmony_ci .free_cb = destructor_freecb 6282425bb815Sopenharmony_ci}; 6283425bb815Sopenharmony_ci 6284425bb815Sopenharmony_cistatic void 6285425bb815Sopenharmony_ciprint_buffer (char *data_p, 6286425bb815Sopenharmony_ci unsigned int length) 6287425bb815Sopenharmony_ci{ 6288425bb815Sopenharmony_ci for (unsigned int i = 0; i < length; ++i) 6289425bb815Sopenharmony_ci { 6290425bb815Sopenharmony_ci printf("%c", data_p[i]); 6291425bb815Sopenharmony_ci } 6292425bb815Sopenharmony_ci 6293425bb815Sopenharmony_ci printf("\n"); 6294425bb815Sopenharmony_ci} 6295425bb815Sopenharmony_ci 6296425bb815Sopenharmony_cistatic void 6297425bb815Sopenharmony_cido_stuff (jerry_value_t object) 6298425bb815Sopenharmony_ci{ 6299425bb815Sopenharmony_ci void *native_p; 6300425bb815Sopenharmony_ci bool has_p = jerry_get_object_native_pointer (object, &native_p, &buffer_obj_type_info); 6301425bb815Sopenharmony_ci 6302425bb815Sopenharmony_ci if (!has_p) 6303425bb815Sopenharmony_ci { 6304425bb815Sopenharmony_ci // Process the error 6305425bb815Sopenharmony_ci return; 6306425bb815Sopenharmony_ci } 6307425bb815Sopenharmony_ci 6308425bb815Sopenharmony_ci // It is safe to cast to buffer_native_object_t * and dereference the pointer: 6309425bb815Sopenharmony_ci buffer_native_object_t *buffer_p = (buffer_native_object_t *) native_p; 6310425bb815Sopenharmony_ci print_buffer (buffer_p->data_p, buffer_p->length); // Usage of buffer_p 6311425bb815Sopenharmony_ci 6312425bb815Sopenharmony_ci bool need_shape_info = true; // implementation dependent 6313425bb815Sopenharmony_ci 6314425bb815Sopenharmony_ci if (need_shape_info) 6315425bb815Sopenharmony_ci { 6316425bb815Sopenharmony_ci has_p = jerry_get_object_native_pointer (object, &native_p, &shape_obj_type_info); 6317425bb815Sopenharmony_ci 6318425bb815Sopenharmony_ci if (!has_p) 6319425bb815Sopenharmony_ci { 6320425bb815Sopenharmony_ci // Process the error 6321425bb815Sopenharmony_ci return; 6322425bb815Sopenharmony_ci } 6323425bb815Sopenharmony_ci 6324425bb815Sopenharmony_ci // It is safe to cast to shape_native_object_t * and dereference the pointer: 6325425bb815Sopenharmony_ci shape_native_object_t *shape_p = (shape_native_object_t *) native_p; 6326425bb815Sopenharmony_ci 6327425bb815Sopenharmony_ci printf("Area: %d\tPerimeter: %d\n", shape_p->area, shape_p->perimeter); // Usage of shape_p 6328425bb815Sopenharmony_ci } 6329425bb815Sopenharmony_ci 6330425bb815Sopenharmony_ci bool need_secret_info = true; // implementation dependent 6331425bb815Sopenharmony_ci 6332425bb815Sopenharmony_ci if (need_secret_info) 6333425bb815Sopenharmony_ci { 6334425bb815Sopenharmony_ci has_p = jerry_get_object_native_pointer (object, &native_p, NULL); 6335425bb815Sopenharmony_ci 6336425bb815Sopenharmony_ci if (!has_p) 6337425bb815Sopenharmony_ci { 6338425bb815Sopenharmony_ci // Process the error 6339425bb815Sopenharmony_ci return; 6340425bb815Sopenharmony_ci } 6341425bb815Sopenharmony_ci 6342425bb815Sopenharmony_ci printf("Secret: %d\n", (int)((uintptr_t) native_p)); // Usage of native_p 6343425bb815Sopenharmony_ci 6344425bb815Sopenharmony_ci bool deleted = jerry_delete_object_native_pointer (object, NULL); 6345425bb815Sopenharmony_ci 6346425bb815Sopenharmony_ci if (deleted) 6347425bb815Sopenharmony_ci { 6348425bb815Sopenharmony_ci printf("The secret is no longer available\n"); 6349425bb815Sopenharmony_ci } 6350425bb815Sopenharmony_ci } 6351425bb815Sopenharmony_ci} 6352425bb815Sopenharmony_ci 6353425bb815Sopenharmony_ciint 6354425bb815Sopenharmony_cimain (void) 6355425bb815Sopenharmony_ci{ 6356425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 6357425bb815Sopenharmony_ci 6358425bb815Sopenharmony_ci jerry_value_t object = jerry_create_object (); 6359425bb815Sopenharmony_ci buffer_native_object_t *buffer_p = (buffer_native_object_t *) malloc (sizeof (buffer_native_object_t)); 6360425bb815Sopenharmony_ci buffer_p->length = 14; 6361425bb815Sopenharmony_ci buffer_p->data_p = (char *) malloc (buffer_p->length * sizeof (char)); 6362425bb815Sopenharmony_ci memcpy (buffer_p->data_p, "My buffer data", buffer_p->length); 6363425bb815Sopenharmony_ci jerry_set_object_native_pointer (object, buffer_p, &buffer_obj_type_info); 6364425bb815Sopenharmony_ci 6365425bb815Sopenharmony_ci shape_native_object_t *shape_p = (shape_native_object_t *) malloc (sizeof (shape_native_object_t)); 6366425bb815Sopenharmony_ci shape_p->area = 6; 6367425bb815Sopenharmony_ci shape_p->perimeter = 12; 6368425bb815Sopenharmony_ci jerry_set_object_native_pointer (object, shape_p, &shape_obj_type_info); 6369425bb815Sopenharmony_ci 6370425bb815Sopenharmony_ci // The native pointer can be NULL. This gives possibily to get notified via the native type info's 6371425bb815Sopenharmony_ci // free callback when the object has been freed by the GC. 6372425bb815Sopenharmony_ci jerry_set_object_native_pointer (object, NULL, &destructor_obj_type_info); 6373425bb815Sopenharmony_ci 6374425bb815Sopenharmony_ci // The native type info can be NULL as well. In this case the registered property is simply freed 6375425bb815Sopenharmony_ci // when the object is freed by te GC. 6376425bb815Sopenharmony_ci jerry_set_object_native_pointer (object, SECRET_INFO, NULL); 6377425bb815Sopenharmony_ci 6378425bb815Sopenharmony_ci do_stuff (object); 6379425bb815Sopenharmony_ci 6380425bb815Sopenharmony_ci jerry_release_value (object); 6381425bb815Sopenharmony_ci jerry_cleanup (); 6382425bb815Sopenharmony_ci 6383425bb815Sopenharmony_ci return 0; 6384425bb815Sopenharmony_ci} 6385425bb815Sopenharmony_ci``` 6386425bb815Sopenharmony_ci 6387425bb815Sopenharmony_ci**See also** 6388425bb815Sopenharmony_ci 6389425bb815Sopenharmony_ci- [jerry_create_object](#jerry_create_object) 6390425bb815Sopenharmony_ci- [jerry_set_object_native_pointer](#jerry_set_object_native_pointer) 6391425bb815Sopenharmony_ci- [jerry_object_native_info_t](#jerry_object_native_info_t) 6392425bb815Sopenharmony_ci 6393425bb815Sopenharmony_ci 6394425bb815Sopenharmony_ci## jerry_set_object_native_pointer 6395425bb815Sopenharmony_ci 6396425bb815Sopenharmony_ci**Summary** 6397425bb815Sopenharmony_ci 6398425bb815Sopenharmony_ciSet native pointer and an optional type information for the specified object. 6399425bb815Sopenharmony_ciYou can get them by calling [jerry_get_object_native_pointer](#jerry_get_object_native_pointer) later. 6400425bb815Sopenharmony_ci 6401425bb815Sopenharmony_ci*Notes*: 6402425bb815Sopenharmony_ci - If a native pointer was already set for the object with the same type information, its value is updated. 6403425bb815Sopenharmony_ci - If a non-NULL free callback is specified in the native type information, 6404425bb815Sopenharmony_ci it will be called by the garbage collector when the object is freed. 6405425bb815Sopenharmony_ci - If the object is only referenced via the "global" object (or one of it's "child"), 6406425bb815Sopenharmony_ci the free callback will be invoked during the execution of `jerry_cleanup`. 6407425bb815Sopenharmony_ci - The free callback can invoke API functions. 6408425bb815Sopenharmony_ci 6409425bb815Sopenharmony_ci*Note*: If possible do not store API values in native pointers, rather check 6410425bb815Sopenharmony_ci [jerry_set_internal_property](#jerry_set_internal_property). 6411425bb815Sopenharmony_ci 6412425bb815Sopenharmony_ci**Prototype** 6413425bb815Sopenharmony_ci 6414425bb815Sopenharmony_ci```c 6415425bb815Sopenharmony_civoid 6416425bb815Sopenharmony_cijerry_set_object_native_pointer (const jerry_value_t obj_val, 6417425bb815Sopenharmony_ci void *native_p, 6418425bb815Sopenharmony_ci const jerry_object_native_info_t *info_p) 6419425bb815Sopenharmony_ci``` 6420425bb815Sopenharmony_ci 6421425bb815Sopenharmony_ci- `obj_val` - object to set native pointer in. 6422425bb815Sopenharmony_ci- `native_p` - native pointer. 6423425bb815Sopenharmony_ci- `info_p` - native pointer's type information or NULL. When used, this should 6424425bb815Sopenharmony_ci be a long-lived pointer, usually a pointer to a 6425425bb815Sopenharmony_ci `static const jerry_object_native_info_t` makes most sense. 6426425bb815Sopenharmony_ci 6427425bb815Sopenharmony_ci*New in version 2.0*: Changed from `jerry_set_object_native_handle`. 6428425bb815Sopenharmony_ci 6429425bb815Sopenharmony_ci**Example** 6430425bb815Sopenharmony_ci 6431425bb815Sopenharmony_ciSee [jerry_get_object_native_pointer](#jerry_get_object_native_pointer) for a 6432425bb815Sopenharmony_cibest-practice example. 6433425bb815Sopenharmony_ci 6434425bb815Sopenharmony_ci**See also** 6435425bb815Sopenharmony_ci 6436425bb815Sopenharmony_ci- [jerry_create_object](#jerry_create_object) 6437425bb815Sopenharmony_ci- [jerry_get_object_native_pointer](#jerry_get_object_native_pointer) 6438425bb815Sopenharmony_ci- [jerry_object_native_info_t](#jerry_object_native_info_t) 6439425bb815Sopenharmony_ci 6440425bb815Sopenharmony_ci## jerry_delete_object_native_pointer 6441425bb815Sopenharmony_ci 6442425bb815Sopenharmony_ci**Summary** 6443425bb815Sopenharmony_ci 6444425bb815Sopenharmony_ciDelete the native pointer of the specified object associated with the given native type info. 6445425bb815Sopenharmony_ci 6446425bb815Sopenharmony_ci*Notes*: 6447425bb815Sopenharmony_ci - If the specified object has no matching native pointer for the given native type info the operation has no effect. 6448425bb815Sopenharmony_ci - The method does not invoke the free callback specified in the type info. 6449425bb815Sopenharmony_ci If the native pointer should be freed then one must get the native pointer first and invoke the free callback manually 6450425bb815Sopenharmony_ci before calling this method. 6451425bb815Sopenharmony_ci - This operation cannot throw an exception. 6452425bb815Sopenharmony_ci 6453425bb815Sopenharmony_ci**Prototype** 6454425bb815Sopenharmony_ci 6455425bb815Sopenharmony_ci```c 6456425bb815Sopenharmony_cibool 6457425bb815Sopenharmony_cijerry_delete_object_native_pointer (const jerry_value_t obj_val, 6458425bb815Sopenharmony_ci const jerry_object_native_info_t *info_p) 6459425bb815Sopenharmony_ci``` 6460425bb815Sopenharmony_ci 6461425bb815Sopenharmony_ci- `obj_val` - object to delete native pointer from. 6462425bb815Sopenharmony_ci- `info_p` - native pointer's type information. 6463425bb815Sopenharmony_ci 6464425bb815Sopenharmony_ci*New in version 2.0*. 6465425bb815Sopenharmony_ci 6466425bb815Sopenharmony_ci**Example** 6467425bb815Sopenharmony_ci 6468425bb815Sopenharmony_ciSee [jerry_get_object_native_pointer](#jerry_get_object_native_pointer) for a 6469425bb815Sopenharmony_cibest-practice example. 6470425bb815Sopenharmony_ci 6471425bb815Sopenharmony_ci**See also** 6472425bb815Sopenharmony_ci 6473425bb815Sopenharmony_ci- [jerry_create_object](#jerry_create_object) 6474425bb815Sopenharmony_ci- [jerry_get_object_native_pointer](#jerry_get_object_native_pointer) 6475425bb815Sopenharmony_ci- [jerry_get_object_native_pointer](#jerry_set_object_native_pointer) 6476425bb815Sopenharmony_ci- [jerry_object_native_info_t](#jerry_object_native_info_t) 6477425bb815Sopenharmony_ci 6478425bb815Sopenharmony_ci 6479425bb815Sopenharmony_ci## jerry_foreach_object_property 6480425bb815Sopenharmony_ci 6481425bb815Sopenharmony_ci**Summary** 6482425bb815Sopenharmony_ci 6483425bb815Sopenharmony_ciApplies the given function to every enumerable(!) property in the given object. 6484425bb815Sopenharmony_ci 6485425bb815Sopenharmony_ciThe "iterator" `foreach_p` method should return `true` value to continue the iteration. 6486425bb815Sopenharmony_ciIf the method returns `false` the iteration will end. 6487425bb815Sopenharmony_ci 6488425bb815Sopenharmony_ci**Prototype** 6489425bb815Sopenharmony_ci 6490425bb815Sopenharmony_ci```c 6491425bb815Sopenharmony_cibool 6492425bb815Sopenharmony_cijerry_foreach_object_property (jerry_value_t obj_val, 6493425bb815Sopenharmony_ci jerry_object_property_foreach_t foreach_p, 6494425bb815Sopenharmony_ci void *user_data_p); 6495425bb815Sopenharmony_ci``` 6496425bb815Sopenharmony_ci 6497425bb815Sopenharmony_ci- `obj_val` - object value 6498425bb815Sopenharmony_ci- `foreach_p` - foreach function, that will be applied for each property 6499425bb815Sopenharmony_ci- `user_data_p` - user data for foreach function 6500425bb815Sopenharmony_ci- return value 6501425bb815Sopenharmony_ci - true, if object fields traversal was performed successfully, i.e.: 6502425bb815Sopenharmony_ci - no unhandled exceptions were thrown in object fields traversal 6503425bb815Sopenharmony_ci - object fields traversal was stopped on callback that returned false 6504425bb815Sopenharmony_ci - false, otherwise 6505425bb815Sopenharmony_ci 6506425bb815Sopenharmony_ci**Example** 6507425bb815Sopenharmony_ci 6508425bb815Sopenharmony_ci 6509425bb815Sopenharmony_ci[doctest]: # (name="02.API-REFERENCE-foreach-property.c") 6510425bb815Sopenharmony_ci 6511425bb815Sopenharmony_ci```c 6512425bb815Sopenharmony_ci#include <stdio.h> 6513425bb815Sopenharmony_ci#include "jerryscript.h" 6514425bb815Sopenharmony_ci 6515425bb815Sopenharmony_ci/* Example structure used as user data for the property iteration. */ 6516425bb815Sopenharmony_cistruct iteration_data { 6517425bb815Sopenharmony_ci int string_property_count; 6518425bb815Sopenharmony_ci}; 6519425bb815Sopenharmony_ci 6520425bb815Sopenharmony_ci/* 6521425bb815Sopenharmony_ci * Example foreach function to print out property names. 6522425bb815Sopenharmony_ci */ 6523425bb815Sopenharmony_cistatic bool 6524425bb815Sopenharmony_ciforeach_function (const jerry_value_t prop_name, 6525425bb815Sopenharmony_ci const jerry_value_t prop_value, 6526425bb815Sopenharmony_ci void *user_data_p) 6527425bb815Sopenharmony_ci{ 6528425bb815Sopenharmony_ci if (jerry_value_is_string (prop_name)) { 6529425bb815Sopenharmony_ci jerry_char_t string_buffer[128]; 6530425bb815Sopenharmony_ci jerry_size_t copied_bytes = jerry_substring_to_char_buffer (prop_name, 6531425bb815Sopenharmony_ci 0, 6532425bb815Sopenharmony_ci 127, 6533425bb815Sopenharmony_ci string_buffer, 6534425bb815Sopenharmony_ci 127); 6535425bb815Sopenharmony_ci string_buffer[copied_bytes] = '\0'; 6536425bb815Sopenharmony_ci 6537425bb815Sopenharmony_ci printf ("Property: %s\n", string_buffer); 6538425bb815Sopenharmony_ci 6539425bb815Sopenharmony_ci struct iteration_data *data = (struct iteration_data *) user_data_p; 6540425bb815Sopenharmony_ci data->string_property_count++; 6541425bb815Sopenharmony_ci } 6542425bb815Sopenharmony_ci 6543425bb815Sopenharmony_ci /* return true to continue iteration */ 6544425bb815Sopenharmony_ci return true; 6545425bb815Sopenharmony_ci} 6546425bb815Sopenharmony_ci 6547425bb815Sopenharmony_ciint 6548425bb815Sopenharmony_cimain (void) 6549425bb815Sopenharmony_ci{ 6550425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 6551425bb815Sopenharmony_ci 6552425bb815Sopenharmony_ci /* Construct an example object with a single property. */ 6553425bb815Sopenharmony_ci jerry_value_t object = jerry_create_object (); 6554425bb815Sopenharmony_ci { 6555425bb815Sopenharmony_ci jerry_value_t test_property = jerry_create_string ((const jerry_char_t *) "DemoProp"); 6556425bb815Sopenharmony_ci jerry_value_t test_value = jerry_create_number (3); 6557425bb815Sopenharmony_ci /* By default all properties added to an object are enumerable. */ 6558425bb815Sopenharmony_ci jerry_value_t set_result = jerry_set_property (object, test_property, test_value); 6559425bb815Sopenharmony_ci /* The `set_result` should be checked if it is an error or not. */ 6560425bb815Sopenharmony_ci jerry_release_value (set_result); 6561425bb815Sopenharmony_ci jerry_release_value (test_value); 6562425bb815Sopenharmony_ci jerry_release_value (test_property); 6563425bb815Sopenharmony_ci } 6564425bb815Sopenharmony_ci 6565425bb815Sopenharmony_ci /* Iterate on the object's properties with the given user data. */ 6566425bb815Sopenharmony_ci struct iteration_data user_data = { 0 }; 6567425bb815Sopenharmony_ci 6568425bb815Sopenharmony_ci bool iteration_result = jerry_foreach_object_property (object, foreach_function, &user_data); 6569425bb815Sopenharmony_ci /* Check and process the `iteration_result` if required. */ 6570425bb815Sopenharmony_ci 6571425bb815Sopenharmony_ci jerry_release_value (object); 6572425bb815Sopenharmony_ci 6573425bb815Sopenharmony_ci jerry_cleanup (); 6574425bb815Sopenharmony_ci 6575425bb815Sopenharmony_ci return user_data.string_property_count == 0; 6576425bb815Sopenharmony_ci} 6577425bb815Sopenharmony_ci``` 6578425bb815Sopenharmony_ci 6579425bb815Sopenharmony_ci**See also** 6580425bb815Sopenharmony_ci 6581425bb815Sopenharmony_ci- [jerry_object_property_foreach_t](#jerry_object_property_foreach_t) 6582425bb815Sopenharmony_ci 6583425bb815Sopenharmony_ci## jerry_objects_foreach 6584425bb815Sopenharmony_ci 6585425bb815Sopenharmony_ci**Summary** 6586425bb815Sopenharmony_ci 6587425bb815Sopenharmony_ciIterate over all objects available in the engine. 6588425bb815Sopenharmony_ci 6589425bb815Sopenharmony_ciThe "iterator" `foreach_p` method should return `true` value to continue the search. 6590425bb815Sopenharmony_ciIf the method returns `false` the search for the object is finished. 6591425bb815Sopenharmony_ci 6592425bb815Sopenharmony_ci*Note*: Values obtained in `foreach_p` must be retained using [jerry_acquire_value](#jerry_acquire_value). 6593425bb815Sopenharmony_ci 6594425bb815Sopenharmony_ci**Prototype** 6595425bb815Sopenharmony_ci 6596425bb815Sopenharmony_ci```c 6597425bb815Sopenharmony_cibool 6598425bb815Sopenharmony_cijerry_objects_foreach (jerry_objects_foreach_t foreach_p, 6599425bb815Sopenharmony_ci void *user_data_p); 6600425bb815Sopenharmony_ci``` 6601425bb815Sopenharmony_ci 6602425bb815Sopenharmony_ci- `foreach_p` - function that will be invoked for each object. 6603425bb815Sopenharmony_ci- `user_data_p` - User data to pass to the function. 6604425bb815Sopenharmony_ci- return value 6605425bb815Sopenharmony_ci - `true`, if the search function terminated the traversal by returning `false` 6606425bb815Sopenharmony_ci - `false`, if the end of the list of objects was reached 6607425bb815Sopenharmony_ci 6608425bb815Sopenharmony_ci*New in version 2.0*. 6609425bb815Sopenharmony_ci 6610425bb815Sopenharmony_ci**Example** 6611425bb815Sopenharmony_ci 6612425bb815Sopenharmony_ci[doctest]: # (name="02.API-REFERENCE-objects-foreach.c") 6613425bb815Sopenharmony_ci 6614425bb815Sopenharmony_ci```c 6615425bb815Sopenharmony_ci#include <stdio.h> 6616425bb815Sopenharmony_ci#include "jerryscript.h" 6617425bb815Sopenharmony_ci 6618425bb815Sopenharmony_ci/* Create a custom structure to guide the search and store the result. */ 6619425bb815Sopenharmony_citypedef struct 6620425bb815Sopenharmony_ci{ 6621425bb815Sopenharmony_ci jerry_value_t property_name; 6622425bb815Sopenharmony_ci jerry_value_t result; 6623425bb815Sopenharmony_ci} find_my_object_info_t; 6624425bb815Sopenharmony_ci 6625425bb815Sopenharmony_ci/* 6626425bb815Sopenharmony_ci * Find the first object with the given property. 6627425bb815Sopenharmony_ci */ 6628425bb815Sopenharmony_cistatic bool 6629425bb815Sopenharmony_cifind_my_object (const jerry_value_t candidate, 6630425bb815Sopenharmony_ci void *user_data_p) 6631425bb815Sopenharmony_ci{ 6632425bb815Sopenharmony_ci find_my_object_info_t *info_p = (find_my_object_info_t *) user_data_p; 6633425bb815Sopenharmony_ci 6634425bb815Sopenharmony_ci /* Check if the given object has the required property. */ 6635425bb815Sopenharmony_ci jerry_value_t has_property = jerry_has_property (candidate, info_p->property_name); 6636425bb815Sopenharmony_ci bool object_found = jerry_get_boolean_value (has_property); 6637425bb815Sopenharmony_ci 6638425bb815Sopenharmony_ci if (object_found) 6639425bb815Sopenharmony_ci { 6640425bb815Sopenharmony_ci /* We found it, so we acquire the value and record it. */ 6641425bb815Sopenharmony_ci info_p->result = jerry_acquire_value (candidate); 6642425bb815Sopenharmony_ci } 6643425bb815Sopenharmony_ci 6644425bb815Sopenharmony_ci jerry_release_value (has_property); 6645425bb815Sopenharmony_ci 6646425bb815Sopenharmony_ci /* If the object was not found continue the search. */ 6647425bb815Sopenharmony_ci return !object_found; 6648425bb815Sopenharmony_ci} /* find_my_object */ 6649425bb815Sopenharmony_ci 6650425bb815Sopenharmony_ciint 6651425bb815Sopenharmony_cimain (void) 6652425bb815Sopenharmony_ci{ 6653425bb815Sopenharmony_ci int return_value = 0; 6654425bb815Sopenharmony_ci 6655425bb815Sopenharmony_ci /* Initialize JerryScript engine. */ 6656425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 6657425bb815Sopenharmony_ci 6658425bb815Sopenharmony_ci /* Create the test object. */ 6659425bb815Sopenharmony_ci { 6660425bb815Sopenharmony_ci jerry_value_t test_object = jerry_create_object (); 6661425bb815Sopenharmony_ci 6662425bb815Sopenharmony_ci { 6663425bb815Sopenharmony_ci jerry_value_t test_property = jerry_create_string ((const jerry_char_t *) "DemoProp"); 6664425bb815Sopenharmony_ci jerry_value_t test_value = jerry_create_number (3); 6665425bb815Sopenharmony_ci jerry_value_t set_result = jerry_set_property (test_object, test_property, test_value); 6666425bb815Sopenharmony_ci /* The `set_result` should be checked if it is an error or not. */ 6667425bb815Sopenharmony_ci jerry_release_value (set_result); 6668425bb815Sopenharmony_ci jerry_release_value (test_value); 6669425bb815Sopenharmony_ci jerry_release_value (test_property); 6670425bb815Sopenharmony_ci } 6671425bb815Sopenharmony_ci 6672425bb815Sopenharmony_ci { 6673425bb815Sopenharmony_ci /* Register the test object into the global object. */ 6674425bb815Sopenharmony_ci jerry_value_t global_object = jerry_get_global_object (); 6675425bb815Sopenharmony_ci jerry_value_t demo_property = jerry_create_string ((const jerry_char_t *) "DemoObject"); 6676425bb815Sopenharmony_ci jerry_value_t set_result = jerry_set_property (global_object, demo_property, test_object); 6677425bb815Sopenharmony_ci /* The `set_result` should be checked if it is an error or not. */ 6678425bb815Sopenharmony_ci jerry_release_value (set_result); 6679425bb815Sopenharmony_ci jerry_release_value (demo_property); 6680425bb815Sopenharmony_ci jerry_release_value (global_object); 6681425bb815Sopenharmony_ci } 6682425bb815Sopenharmony_ci 6683425bb815Sopenharmony_ci jerry_release_value (test_object); 6684425bb815Sopenharmony_ci } 6685425bb815Sopenharmony_ci 6686425bb815Sopenharmony_ci /* Look up the test object base on a property name. */ 6687425bb815Sopenharmony_ci find_my_object_info_t search_info = 6688425bb815Sopenharmony_ci { 6689425bb815Sopenharmony_ci .property_name = jerry_create_string ((const jerry_char_t *) "DemoProp") 6690425bb815Sopenharmony_ci }; 6691425bb815Sopenharmony_ci 6692425bb815Sopenharmony_ci if (jerry_objects_foreach (find_my_object, &search_info)) 6693425bb815Sopenharmony_ci { 6694425bb815Sopenharmony_ci /* The search was successful. Do something useful with search_info.result. */ 6695425bb815Sopenharmony_ci // ... 6696425bb815Sopenharmony_ci printf ("Object found\n"); 6697425bb815Sopenharmony_ci 6698425bb815Sopenharmony_ci /* Release the found object after we're done using it. */ 6699425bb815Sopenharmony_ci jerry_release_value (search_info.result); 6700425bb815Sopenharmony_ci } 6701425bb815Sopenharmony_ci else 6702425bb815Sopenharmony_ci { 6703425bb815Sopenharmony_ci /* The search has failed. */ 6704425bb815Sopenharmony_ci printf ("Object not found\n"); 6705425bb815Sopenharmony_ci 6706425bb815Sopenharmony_ci return_value = 1; 6707425bb815Sopenharmony_ci } 6708425bb815Sopenharmony_ci 6709425bb815Sopenharmony_ci jerry_release_value (search_info.property_name); 6710425bb815Sopenharmony_ci 6711425bb815Sopenharmony_ci /* Engine cleanup */ 6712425bb815Sopenharmony_ci jerry_cleanup (); 6713425bb815Sopenharmony_ci return return_value; 6714425bb815Sopenharmony_ci} 6715425bb815Sopenharmony_ci``` 6716425bb815Sopenharmony_ci 6717425bb815Sopenharmony_ci**See also** 6718425bb815Sopenharmony_ci 6719425bb815Sopenharmony_ci- [jerry_objects_foreach_t](#jerry_objects_foreach_t) 6720425bb815Sopenharmony_ci 6721425bb815Sopenharmony_ci## jerry_objects_foreach_by_native_info 6722425bb815Sopenharmony_ci 6723425bb815Sopenharmony_ci**Summary** 6724425bb815Sopenharmony_ci 6725425bb815Sopenharmony_ciIterate over all objects in the engine matching a certain native data type. 6726425bb815Sopenharmony_ci 6727425bb815Sopenharmony_ciThe "iterator" `foreach_p` method should return `true` value to continue the search. 6728425bb815Sopenharmony_ciIf the method returns `false` the search for the object is finished. 6729425bb815Sopenharmony_ci 6730425bb815Sopenharmony_ci*Note*: Values obtained in `foreach_p` must be retained using [jerry_acquire_value](#jerry_acquire_value). 6731425bb815Sopenharmony_ci 6732425bb815Sopenharmony_ci**Prototype** 6733425bb815Sopenharmony_ci 6734425bb815Sopenharmony_ci```c 6735425bb815Sopenharmony_cibool 6736425bb815Sopenharmony_cijerry_objects_foreach_by_native_info (const jerry_object_native_info_t *native_info_p, 6737425bb815Sopenharmony_ci jerry_objects_foreach_by_native_info_t foreach_p, 6738425bb815Sopenharmony_ci void *user_data_p); 6739425bb815Sopenharmony_ci``` 6740425bb815Sopenharmony_ci 6741425bb815Sopenharmony_ci- `native_info_p` - native pointer's type information. 6742425bb815Sopenharmony_ci- `foreach_p` - function that will be invoked for each object. 6743425bb815Sopenharmony_ci- return value 6744425bb815Sopenharmony_ci - `true`, if the search function terminated the traversal by returning `false` 6745425bb815Sopenharmony_ci - `false`, if the end of the list of objects was reached 6746425bb815Sopenharmony_ci 6747425bb815Sopenharmony_ci*New in version 2.0*. 6748425bb815Sopenharmony_ci 6749425bb815Sopenharmony_ci**Example** 6750425bb815Sopenharmony_ci 6751425bb815Sopenharmony_ci[doctest]: # (name="02.API-REFERENCE-objects-foreach-nativeptr.c") 6752425bb815Sopenharmony_ci 6753425bb815Sopenharmony_ci```c 6754425bb815Sopenharmony_ci#include <stdio.h> 6755425bb815Sopenharmony_ci#include <stdlib.h> 6756425bb815Sopenharmony_ci#include "jerryscript.h" 6757425bb815Sopenharmony_ci 6758425bb815Sopenharmony_citypedef struct 6759425bb815Sopenharmony_ci{ 6760425bb815Sopenharmony_ci int foo; 6761425bb815Sopenharmony_ci bool bar; 6762425bb815Sopenharmony_ci} native_obj_t; 6763425bb815Sopenharmony_ci 6764425bb815Sopenharmony_citypedef struct 6765425bb815Sopenharmony_ci{ 6766425bb815Sopenharmony_ci jerry_value_t found_object; 6767425bb815Sopenharmony_ci native_obj_t *found_native_data_p; 6768425bb815Sopenharmony_ci 6769425bb815Sopenharmony_ci int match_foo_value; 6770425bb815Sopenharmony_ci} find_object_data_t; 6771425bb815Sopenharmony_ci 6772425bb815Sopenharmony_cistatic void native_freecb (void *native_p) 6773425bb815Sopenharmony_ci{ 6774425bb815Sopenharmony_ci /* `native_p` was allocated via malloc. */ 6775425bb815Sopenharmony_ci free (native_p); 6776425bb815Sopenharmony_ci} /* native_freecb */ 6777425bb815Sopenharmony_ci 6778425bb815Sopenharmony_ci/* 6779425bb815Sopenharmony_ci * NOTE: The address (!) of type_info acts as a way to uniquely "identify" the 6780425bb815Sopenharmony_ci * C type `native_obj_t *`. 6781425bb815Sopenharmony_ci */ 6782425bb815Sopenharmony_cistatic const jerry_object_native_info_t native_obj_type_info = 6783425bb815Sopenharmony_ci{ 6784425bb815Sopenharmony_ci .free_cb = native_freecb 6785425bb815Sopenharmony_ci}; 6786425bb815Sopenharmony_ci 6787425bb815Sopenharmony_ci/* 6788425bb815Sopenharmony_ci * Function creating JS object that is "backed" by a `native_obj_t`. 6789425bb815Sopenharmony_ci */ 6790425bb815Sopenharmony_cistatic void 6791425bb815Sopenharmony_ciadd_object_with_nativeptr (int foo_value) 6792425bb815Sopenharmony_ci{ 6793425bb815Sopenharmony_ci // construct object and native_set value: 6794425bb815Sopenharmony_ci jerry_value_t test_object = jerry_create_object (); 6795425bb815Sopenharmony_ci native_obj_t *native_obj_p = malloc (sizeof (*native_obj_p)); 6796425bb815Sopenharmony_ci native_obj_p->foo = foo_value; 6797425bb815Sopenharmony_ci native_obj_p->bar = true; 6798425bb815Sopenharmony_ci 6799425bb815Sopenharmony_ci jerry_set_object_native_pointer (test_object, native_obj_p, &native_obj_type_info); 6800425bb815Sopenharmony_ci 6801425bb815Sopenharmony_ci /* Register the test object into the global object. */ 6802425bb815Sopenharmony_ci jerry_value_t global_object = jerry_get_global_object (); 6803425bb815Sopenharmony_ci jerry_value_t demo_property = jerry_create_string ((const jerry_char_t *) "DemoObject"); 6804425bb815Sopenharmony_ci jerry_value_t set_result = jerry_set_property (global_object, demo_property, test_object); 6805425bb815Sopenharmony_ci /* The `set_result` should be checked if it is an error or not. */ 6806425bb815Sopenharmony_ci jerry_release_value (set_result); 6807425bb815Sopenharmony_ci jerry_release_value (demo_property); 6808425bb815Sopenharmony_ci jerry_release_value (global_object); 6809425bb815Sopenharmony_ci 6810425bb815Sopenharmony_ci jerry_release_value (test_object); 6811425bb815Sopenharmony_ci} /* create_object_with_nativeptr */ 6812425bb815Sopenharmony_ci 6813425bb815Sopenharmony_ci/* 6814425bb815Sopenharmony_ci * Example native method that searches for a JavaScript object 6815425bb815Sopenharmony_ci * with a `native_obj_type_info` has the correct value. 6816425bb815Sopenharmony_ci */ 6817425bb815Sopenharmony_cistatic bool 6818425bb815Sopenharmony_cifind_object (const jerry_value_t candidate, void *data_p, void *user_data_p) 6819425bb815Sopenharmony_ci{ 6820425bb815Sopenharmony_ci find_object_data_t *find_data_p = (find_object_data_t *) user_data_p; 6821425bb815Sopenharmony_ci native_obj_t *native_obj_p = (native_obj_t *) data_p; 6822425bb815Sopenharmony_ci 6823425bb815Sopenharmony_ci if (find_data_p->match_foo_value == native_obj_p->foo) 6824425bb815Sopenharmony_ci { 6825425bb815Sopenharmony_ci /* If the object was found, acquire it and store it in the user data. */ 6826425bb815Sopenharmony_ci find_data_p->found_object = jerry_acquire_value (candidate); 6827425bb815Sopenharmony_ci find_data_p->found_native_data_p = native_obj_p; 6828425bb815Sopenharmony_ci 6829425bb815Sopenharmony_ci /* Stop traversing over the objects. */ 6830425bb815Sopenharmony_ci return false; 6831425bb815Sopenharmony_ci } 6832425bb815Sopenharmony_ci 6833425bb815Sopenharmony_ci /* Indicate that the object was not found, so traversal must continue. */ 6834425bb815Sopenharmony_ci return true; 6835425bb815Sopenharmony_ci} /* find_object */ 6836425bb815Sopenharmony_ci 6837425bb815Sopenharmony_ciint 6838425bb815Sopenharmony_cimain (void) 6839425bb815Sopenharmony_ci{ 6840425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 6841425bb815Sopenharmony_ci 6842425bb815Sopenharmony_ci add_object_with_nativeptr (4); 6843425bb815Sopenharmony_ci add_object_with_nativeptr (3); 6844425bb815Sopenharmony_ci add_object_with_nativeptr (2); 6845425bb815Sopenharmony_ci 6846425bb815Sopenharmony_ci find_object_data_t find_data = 6847425bb815Sopenharmony_ci { 6848425bb815Sopenharmony_ci .match_foo_value = 3, 6849425bb815Sopenharmony_ci }; 6850425bb815Sopenharmony_ci 6851425bb815Sopenharmony_ci if (jerry_objects_foreach_by_native_info (&native_obj_type_info, find_object, &find_data)) 6852425bb815Sopenharmony_ci { 6853425bb815Sopenharmony_ci /* The object was found and is now stored in `find_data.found_object`. After using it, it must be released. */ 6854425bb815Sopenharmony_ci printf ("Object found, native foo value: %d\n", find_data.found_native_data_p->foo); 6855425bb815Sopenharmony_ci 6856425bb815Sopenharmony_ci jerry_release_value (find_data.found_object); 6857425bb815Sopenharmony_ci } 6858425bb815Sopenharmony_ci else 6859425bb815Sopenharmony_ci { 6860425bb815Sopenharmony_ci printf ("Object not found\n"); 6861425bb815Sopenharmony_ci } 6862425bb815Sopenharmony_ci 6863425bb815Sopenharmony_ci jerry_cleanup (); 6864425bb815Sopenharmony_ci 6865425bb815Sopenharmony_ci return 0; 6866425bb815Sopenharmony_ci} 6867425bb815Sopenharmony_ci``` 6868425bb815Sopenharmony_ci 6869425bb815Sopenharmony_ci**See also** 6870425bb815Sopenharmony_ci 6871425bb815Sopenharmony_ci- [jerry_create_object](#jerry_create_object) 6872425bb815Sopenharmony_ci- [jerry_set_object_native_pointer](#jerry_set_object_native_pointer) 6873425bb815Sopenharmony_ci- [jerry_get_object_native_pointer](#jerry_get_object_native_pointer) 6874425bb815Sopenharmony_ci- [jerry_object_native_info_t](#jerry_object_native_info_t) 6875425bb815Sopenharmony_ci- [jerry_objects_foreach](#jerry_objects_foreach) 6876425bb815Sopenharmony_ci 6877425bb815Sopenharmony_ci 6878425bb815Sopenharmony_ci# Input validator functions 6879425bb815Sopenharmony_ci 6880425bb815Sopenharmony_ci## jerry_is_valid_utf8_string 6881425bb815Sopenharmony_ci 6882425bb815Sopenharmony_ci**Summary** 6883425bb815Sopenharmony_ci 6884425bb815Sopenharmony_ciCheck if a given character buffer is a valid UTF-8 string. 6885425bb815Sopenharmony_ci 6886425bb815Sopenharmony_ci**Notes**: Calling this method is safe in any time. It can be called 6887425bb815Sopenharmony_cieven before engine initialization. 6888425bb815Sopenharmony_ci 6889425bb815Sopenharmony_ci**Prototype** 6890425bb815Sopenharmony_ci 6891425bb815Sopenharmony_ci```c 6892425bb815Sopenharmony_cibool 6893425bb815Sopenharmony_cijerry_is_valid_utf8_string (const jerry_char_t *utf8_buf_p, /**< UTF-8 string */ 6894425bb815Sopenharmony_ci jerry_size_t buf_size) /**< string size */ 6895425bb815Sopenharmony_ci``` 6896425bb815Sopenharmony_ci 6897425bb815Sopenharmony_ci- `utf8_buf_p` - UTF-8 input string buffer. 6898425bb815Sopenharmony_ci- `buf_size` - input string buffer size in bytes. 6899425bb815Sopenharmony_ci- return value 6900425bb815Sopenharmony_ci - true, if the provided string was a valid UTF-8 string. 6901425bb815Sopenharmony_ci - false, if the string is not valid as an UTF-8 string. 6902425bb815Sopenharmony_ci 6903425bb815Sopenharmony_ci*New in version 2.0*. 6904425bb815Sopenharmony_ci 6905425bb815Sopenharmony_ci**Example** 6906425bb815Sopenharmony_ci 6907425bb815Sopenharmony_ci[doctest]: # () 6908425bb815Sopenharmony_ci 6909425bb815Sopenharmony_ci```c 6910425bb815Sopenharmony_ci#include "jerryscript.h" 6911425bb815Sopenharmony_ci 6912425bb815Sopenharmony_ciint 6913425bb815Sopenharmony_cimain (void) 6914425bb815Sopenharmony_ci{ 6915425bb815Sopenharmony_ci const jerry_char_t script[] = "print ('Hello, World!');"; 6916425bb815Sopenharmony_ci const jerry_size_t script_size = sizeof (script) - 1; 6917425bb815Sopenharmony_ci 6918425bb815Sopenharmony_ci if (jerry_is_valid_utf8_string (script, script_size)) 6919425bb815Sopenharmony_ci { 6920425bb815Sopenharmony_ci jerry_run_simple (script, script_size, JERRY_INIT_EMPTY); 6921425bb815Sopenharmony_ci } 6922425bb815Sopenharmony_ci 6923425bb815Sopenharmony_ci return 0; 6924425bb815Sopenharmony_ci} 6925425bb815Sopenharmony_ci``` 6926425bb815Sopenharmony_ci 6927425bb815Sopenharmony_ci**See also** 6928425bb815Sopenharmony_ci 6929425bb815Sopenharmony_ci- [jerry_run_simple](#jerry_run_simple) 6930425bb815Sopenharmony_ci- [jerry_create_string_from_utf8](#jerry_create_string_from_utf8) 6931425bb815Sopenharmony_ci- [jerry_create_string_sz_from_utf8](#jerry_create_string_sz_from_utf8) 6932425bb815Sopenharmony_ci- [jerry_get_utf8_string_size](#jerry_get_utf8_string_size) 6933425bb815Sopenharmony_ci- [jerry_get_utf8_string_length](#jerry_get_utf8_string_length) 6934425bb815Sopenharmony_ci- [jerry_string_to_utf8_char_buffer](#jerry_string_to_utf8_char_buffer) 6935425bb815Sopenharmony_ci- [jerry_substring_to_utf8_char_buffer](#jerry_substring_to_utf8_char_buffer) 6936425bb815Sopenharmony_ci 6937425bb815Sopenharmony_ci## jerry_is_valid_cesu8_string 6938425bb815Sopenharmony_ci 6939425bb815Sopenharmony_ci**Summary** 6940425bb815Sopenharmony_ci 6941425bb815Sopenharmony_ciCheck if a given character buffer is a valid CESU-8 string. 6942425bb815Sopenharmony_ci 6943425bb815Sopenharmony_ci**Notes**: Calling this method is safe in any time. It can be called 6944425bb815Sopenharmony_cieven before engine initialization. 6945425bb815Sopenharmony_ci 6946425bb815Sopenharmony_ci**Prototype** 6947425bb815Sopenharmony_ci 6948425bb815Sopenharmony_ci```c 6949425bb815Sopenharmony_cibool 6950425bb815Sopenharmony_cijerry_is_valid_cesu8_string (const jerry_char_t *cesu8_buf_p, /**< CESU-8 string */ 6951425bb815Sopenharmony_ci jerry_size_t buf_size) /**< string size */ 6952425bb815Sopenharmony_ci``` 6953425bb815Sopenharmony_ci 6954425bb815Sopenharmony_ci- `cesu8_buf_p` - CESU-8 input string buffer. 6955425bb815Sopenharmony_ci- `buf_size` - input string buffer size in bytes. 6956425bb815Sopenharmony_ci- return value 6957425bb815Sopenharmony_ci - true, if the provided string was a valid CESU-8 string. 6958425bb815Sopenharmony_ci - false, if the string is not valid as a CESU-8 string. 6959425bb815Sopenharmony_ci 6960425bb815Sopenharmony_ci*New in version 2.0*. 6961425bb815Sopenharmony_ci 6962425bb815Sopenharmony_ci**Example** 6963425bb815Sopenharmony_ci 6964425bb815Sopenharmony_ci[doctest]: # () 6965425bb815Sopenharmony_ci 6966425bb815Sopenharmony_ci```c 6967425bb815Sopenharmony_ci#include "jerryscript.h" 6968425bb815Sopenharmony_ci 6969425bb815Sopenharmony_ciint 6970425bb815Sopenharmony_cimain (void) 6971425bb815Sopenharmony_ci{ 6972425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 6973425bb815Sopenharmony_ci 6974425bb815Sopenharmony_ci const jerry_char_t script[] = "Hello, World!"; 6975425bb815Sopenharmony_ci const jerry_size_t script_size = sizeof (script) - 1; 6976425bb815Sopenharmony_ci 6977425bb815Sopenharmony_ci if (jerry_is_valid_cesu8_string (script, script_size)) 6978425bb815Sopenharmony_ci { 6979425bb815Sopenharmony_ci jerry_value_t string_value = jerry_create_string_sz (script, 6980425bb815Sopenharmony_ci script_size); 6981425bb815Sopenharmony_ci 6982425bb815Sopenharmony_ci // usage of string_value 6983425bb815Sopenharmony_ci 6984425bb815Sopenharmony_ci jerry_release_value (string_value); 6985425bb815Sopenharmony_ci } 6986425bb815Sopenharmony_ci 6987425bb815Sopenharmony_ci jerry_cleanup (); 6988425bb815Sopenharmony_ci return 0; 6989425bb815Sopenharmony_ci} 6990425bb815Sopenharmony_ci``` 6991425bb815Sopenharmony_ci 6992425bb815Sopenharmony_ci**See also** 6993425bb815Sopenharmony_ci 6994425bb815Sopenharmony_ci- [jerry_create_string](#jerry_create_string) 6995425bb815Sopenharmony_ci- [jerry_create_string_sz](#jerry_create_string_sz) 6996425bb815Sopenharmony_ci- [jerry_get_string_size](#jerry_get_string_size) 6997425bb815Sopenharmony_ci- [jerry_get_string_length](#jerry_get_string_length) 6998425bb815Sopenharmony_ci- [jerry_string_to_char_buffer](#jerry_string_to_char_buffer) 6999425bb815Sopenharmony_ci- [jerry_substring_to_char_buffer](#jerry_substring_to_char_buffer) 7000425bb815Sopenharmony_ci 7001425bb815Sopenharmony_ci 7002425bb815Sopenharmony_ci# Dynamic memory management functions 7003425bb815Sopenharmony_ci 7004425bb815Sopenharmony_ci## jerry_heap_alloc 7005425bb815Sopenharmony_ci 7006425bb815Sopenharmony_ci**Summary** 7007425bb815Sopenharmony_ci 7008425bb815Sopenharmony_ciAllocate memory on the engine's heap. 7009425bb815Sopenharmony_ci 7010425bb815Sopenharmony_ci*Note*: This function may take away memory from the executed JavaScript code. 7011425bb815Sopenharmony_ciIf any other dynamic memory allocation API is available (e.g., libc malloc), it 7012425bb815Sopenharmony_cishould be used instead. 7013425bb815Sopenharmony_ci 7014425bb815Sopenharmony_ci**Prototype** 7015425bb815Sopenharmony_ci 7016425bb815Sopenharmony_ci```c 7017425bb815Sopenharmony_civoid *jerry_heap_alloc (size_t size); 7018425bb815Sopenharmony_ci``` 7019425bb815Sopenharmony_ci 7020425bb815Sopenharmony_ci- `size`: size of the memory block. 7021425bb815Sopenharmony_ci- return value: non-NULL pointer, if the memory is successfully allocated, 7022425bb815Sopenharmony_ci NULL otherwise. 7023425bb815Sopenharmony_ci 7024425bb815Sopenharmony_ci*New in version 2.0*. 7025425bb815Sopenharmony_ci 7026425bb815Sopenharmony_ci**See also** 7027425bb815Sopenharmony_ci 7028425bb815Sopenharmony_ci- [jerry_heap_free](#jerry_heap_free) 7029425bb815Sopenharmony_ci 7030425bb815Sopenharmony_ci## jerry_heap_free 7031425bb815Sopenharmony_ci 7032425bb815Sopenharmony_ci**Summary** 7033425bb815Sopenharmony_ci 7034425bb815Sopenharmony_ciFree memory allocated on the engine's heap. 7035425bb815Sopenharmony_ci 7036425bb815Sopenharmony_ci**Prototype** 7037425bb815Sopenharmony_ci 7038425bb815Sopenharmony_ci```c 7039425bb815Sopenharmony_civoid jerry_heap_free (void *mem_p, size_t size); 7040425bb815Sopenharmony_ci``` 7041425bb815Sopenharmony_ci 7042425bb815Sopenharmony_ci- `mem_p`: value returned by `jerry_heap_alloc`. 7043425bb815Sopenharmony_ci- `size`: same size as passed to `jerry_heap_alloc`. 7044425bb815Sopenharmony_ci 7045425bb815Sopenharmony_ci*New in version 2.0*. 7046425bb815Sopenharmony_ci 7047425bb815Sopenharmony_ci**See also** 7048425bb815Sopenharmony_ci 7049425bb815Sopenharmony_ci- [jerry_heap_alloc](#jerry_heap_alloc) 7050425bb815Sopenharmony_ci 7051425bb815Sopenharmony_ci 7052425bb815Sopenharmony_ci# External context functions 7053425bb815Sopenharmony_ci 7054425bb815Sopenharmony_ci## jerry_create_context 7055425bb815Sopenharmony_ci 7056425bb815Sopenharmony_ci**Summary** 7057425bb815Sopenharmony_ci 7058425bb815Sopenharmony_ciCreate an external JerryScript engine context. 7059425bb815Sopenharmony_ci 7060425bb815Sopenharmony_ci**Prototype** 7061425bb815Sopenharmony_ci 7062425bb815Sopenharmony_ci```c 7063425bb815Sopenharmony_cijerry_context_t * 7064425bb815Sopenharmony_cijerry_create_context (uint32_t heap_size, 7065425bb815Sopenharmony_ci jerry_context_alloc_t alloc, 7066425bb815Sopenharmony_ci void *cb_data_p); 7067425bb815Sopenharmony_ci``` 7068425bb815Sopenharmony_ci 7069425bb815Sopenharmony_ci- `heap_size` - requested heap size of the JerryScript context 7070425bb815Sopenharmony_ci- `alloc` - function for allocation 7071425bb815Sopenharmony_ci- `cb_data_p` - user data 7072425bb815Sopenharmony_ci- return value 7073425bb815Sopenharmony_ci - pointer to the newly created JerryScript context if success 7074425bb815Sopenharmony_ci - NULL otherwise. 7075425bb815Sopenharmony_ci 7076425bb815Sopenharmony_ci*New in version 2.0*. 7077425bb815Sopenharmony_ci 7078425bb815Sopenharmony_ci**Example** 7079425bb815Sopenharmony_ci 7080425bb815Sopenharmony_ci[doctest]: # (test="compile", name="02.API-REFERENCE-create-context.c") 7081425bb815Sopenharmony_ci 7082425bb815Sopenharmony_ci```c 7083425bb815Sopenharmony_ci#include <stdlib.h> 7084425bb815Sopenharmony_ci#include <pthread.h> 7085425bb815Sopenharmony_ci 7086425bb815Sopenharmony_ci#include "jerryscript.h" 7087425bb815Sopenharmony_ci#include "jerryscript-port.h" 7088425bb815Sopenharmony_ci 7089425bb815Sopenharmony_ci/* A different Thread Local Storage variable for each jerry context. */ 7090425bb815Sopenharmony_ci__thread jerry_context_t *tls_context; 7091425bb815Sopenharmony_ci 7092425bb815Sopenharmony_cijerry_context_t * 7093425bb815Sopenharmony_cijerry_port_get_current_context (void) 7094425bb815Sopenharmony_ci{ 7095425bb815Sopenharmony_ci /* Returns the context assigned to the thread. */ 7096425bb815Sopenharmony_ci return tls_context; 7097425bb815Sopenharmony_ci} 7098425bb815Sopenharmony_ci 7099425bb815Sopenharmony_ci/* Allocate JerryScript heap for each thread. */ 7100425bb815Sopenharmony_cistatic void * 7101425bb815Sopenharmony_cicontext_alloc_fn (size_t size, void *cb_data) 7102425bb815Sopenharmony_ci{ 7103425bb815Sopenharmony_ci (void) cb_data; 7104425bb815Sopenharmony_ci return malloc (size); 7105425bb815Sopenharmony_ci} 7106425bb815Sopenharmony_ci 7107425bb815Sopenharmony_cistatic void * 7108425bb815Sopenharmony_cithread_function (void *param) 7109425bb815Sopenharmony_ci{ 7110425bb815Sopenharmony_ci tls_context = jerry_create_context (512 * 1024, 7111425bb815Sopenharmony_ci context_alloc_fn, 7112425bb815Sopenharmony_ci NULL); 7113425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 7114425bb815Sopenharmony_ci /* Run JerryScript in the context (e.g.: jerry_parse & jerry_run) */ 7115425bb815Sopenharmony_ci jerry_cleanup (); 7116425bb815Sopenharmony_ci 7117425bb815Sopenharmony_ci /* Deallocate JerryScript context */ 7118425bb815Sopenharmony_ci free (tls_context); 7119425bb815Sopenharmony_ci 7120425bb815Sopenharmony_ci return NULL; 7121425bb815Sopenharmony_ci} 7122425bb815Sopenharmony_ci 7123425bb815Sopenharmony_ci#define NUM_OF_THREADS 8 7124425bb815Sopenharmony_ci 7125425bb815Sopenharmony_ciint 7126425bb815Sopenharmony_cimain (void) 7127425bb815Sopenharmony_ci{ 7128425bb815Sopenharmony_ci pthread_t threads[NUM_OF_THREADS]; 7129425bb815Sopenharmony_ci 7130425bb815Sopenharmony_ci /* Create the threads. */ 7131425bb815Sopenharmony_ci for (int i = 0; i < NUM_OF_THREADS; i++) 7132425bb815Sopenharmony_ci { 7133425bb815Sopenharmony_ci pthread_create (&threads[i], NULL, thread_function, (void *) (intptr_t) i); 7134425bb815Sopenharmony_ci } 7135425bb815Sopenharmony_ci 7136425bb815Sopenharmony_ci /* Wait for the threads to complete, and release their resources. */ 7137425bb815Sopenharmony_ci for (int i = 0; i < NUM_OF_THREADS; i++) 7138425bb815Sopenharmony_ci { 7139425bb815Sopenharmony_ci pthread_join (threads[i], NULL); 7140425bb815Sopenharmony_ci } 7141425bb815Sopenharmony_ci 7142425bb815Sopenharmony_ci return 0; 7143425bb815Sopenharmony_ci} 7144425bb815Sopenharmony_ci``` 7145425bb815Sopenharmony_ci 7146425bb815Sopenharmony_ci**See also** 7147425bb815Sopenharmony_ci 7148425bb815Sopenharmony_ci- [jerry_context_t](#jerry_context_t) 7149425bb815Sopenharmony_ci- [jerry_context_alloc_t](#jerry_context_alloc_t) 7150425bb815Sopenharmony_ci- [jerry_port_get_current_context](05.PORT-API.md#jerry_port_get_current_context) 7151425bb815Sopenharmony_ci 7152425bb815Sopenharmony_ci 7153425bb815Sopenharmony_ci# Snapshot functions 7154425bb815Sopenharmony_ci 7155425bb815Sopenharmony_ci## jerry_generate_snapshot 7156425bb815Sopenharmony_ci 7157425bb815Sopenharmony_ci**Summary** 7158425bb815Sopenharmony_ci 7159425bb815Sopenharmony_ciGenerate snapshot from the specified source code. 7160425bb815Sopenharmony_ci 7161425bb815Sopenharmony_ci*Notes*: 7162425bb815Sopenharmony_ci- Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 7163425bb815Sopenharmony_ci is no longer needed. 7164425bb815Sopenharmony_ci- This API depends on a build option (`JERRY_SNAPSHOT_SAVE`) and can be checked in runtime with 7165425bb815Sopenharmony_ci the `JERRY_FEATURE_SNAPSHOT_SAVE` feature enum value, see [jerry_is_feature_enabled](#jerry_is_feature_enabled). 7166425bb815Sopenharmony_ci If the feature is not enabled the function will return an error. 7167425bb815Sopenharmony_ci 7168425bb815Sopenharmony_ci**Prototype** 7169425bb815Sopenharmony_ci 7170425bb815Sopenharmony_ci```c 7171425bb815Sopenharmony_cijerry_value_t 7172425bb815Sopenharmony_cijerry_generate_snapshot (const jerry_char_t *resource_name_p, 7173425bb815Sopenharmony_ci size_t resource_name_length, 7174425bb815Sopenharmony_ci const jerry_char_t *source_p, 7175425bb815Sopenharmony_ci size_t source_size, 7176425bb815Sopenharmony_ci uint32_t generate_snapshot_opts, 7177425bb815Sopenharmony_ci uint32_t *buffer_p, 7178425bb815Sopenharmony_ci size_t buffer_size); 7179425bb815Sopenharmony_ci``` 7180425bb815Sopenharmony_ci 7181425bb815Sopenharmony_ci- `resource_name_p` - resource (file) name of the source code. Currently unused, the debugger may use it in the future. 7182425bb815Sopenharmony_ci- `resource_name_length` - length of resource name. 7183425bb815Sopenharmony_ci- `source_p` - script source, it must be a valid utf8 string. 7184425bb815Sopenharmony_ci- `source_size` - script source size, in bytes. 7185425bb815Sopenharmony_ci- `generate_snapshot_opts` - any combination of [jerry_generate_snapshot_opts_t](#jerry_generate_snapshot_opts_t) flags. 7186425bb815Sopenharmony_ci- `buffer_p` - output buffer (aligned to 4 bytes) to save snapshot to. 7187425bb815Sopenharmony_ci- `buffer_size` - the output buffer's size in bytes. 7188425bb815Sopenharmony_ci- return value 7189425bb815Sopenharmony_ci - the size of the generated snapshot in bytes as number value, if it was generated succesfully (i.e. there 7190425bb815Sopenharmony_ci are no syntax errors in source code, buffer size is sufficient, and snapshot support is enabled in 7191425bb815Sopenharmony_ci current configuration through JERRY_SNAPSHOT_SAVE) 7192425bb815Sopenharmony_ci - thrown error, otherwise. 7193425bb815Sopenharmony_ci 7194425bb815Sopenharmony_ci*New in version 2.0*. 7195425bb815Sopenharmony_ci 7196425bb815Sopenharmony_ci**Example** 7197425bb815Sopenharmony_ci 7198425bb815Sopenharmony_ci[doctest]: # () 7199425bb815Sopenharmony_ci 7200425bb815Sopenharmony_ci```c 7201425bb815Sopenharmony_ci#include "jerryscript.h" 7202425bb815Sopenharmony_ci 7203425bb815Sopenharmony_ciint 7204425bb815Sopenharmony_cimain (void) 7205425bb815Sopenharmony_ci{ 7206425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 7207425bb815Sopenharmony_ci 7208425bb815Sopenharmony_ci static uint32_t global_mode_snapshot_buffer[256]; 7209425bb815Sopenharmony_ci const jerry_char_t script_to_snapshot[] = "(function () { return 'string from snapshot'; }) ();"; 7210425bb815Sopenharmony_ci 7211425bb815Sopenharmony_ci jerry_value_t generate_result; 7212425bb815Sopenharmony_ci generate_result = jerry_generate_snapshot (NULL, 7213425bb815Sopenharmony_ci 0, 7214425bb815Sopenharmony_ci script_to_snapshot, 7215425bb815Sopenharmony_ci sizeof (script_to_snapshot) - 1, 7216425bb815Sopenharmony_ci 0, 7217425bb815Sopenharmony_ci global_mode_snapshot_buffer, 7218425bb815Sopenharmony_ci sizeof (global_mode_snapshot_buffer) / sizeof (uint32_t)); 7219425bb815Sopenharmony_ci 7220425bb815Sopenharmony_ci if (!jerry_value_is_error (generate_result)) 7221425bb815Sopenharmony_ci { 7222425bb815Sopenharmony_ci size_t snapshot_size = (size_t) jerry_get_number_value (generate_result); 7223425bb815Sopenharmony_ci } 7224425bb815Sopenharmony_ci 7225425bb815Sopenharmony_ci jerry_release_value (generate_result); 7226425bb815Sopenharmony_ci 7227425bb815Sopenharmony_ci jerry_cleanup (); 7228425bb815Sopenharmony_ci return 0; 7229425bb815Sopenharmony_ci} 7230425bb815Sopenharmony_ci``` 7231425bb815Sopenharmony_ci 7232425bb815Sopenharmony_ci**See also** 7233425bb815Sopenharmony_ci 7234425bb815Sopenharmony_ci- [jerry_init](#jerry_init) 7235425bb815Sopenharmony_ci- [jerry_cleanup](#jerry_cleanup) 7236425bb815Sopenharmony_ci- [jerry_generate_function_snapshot](#jerry_generate_function_snapshot) 7237425bb815Sopenharmony_ci- [jerry_exec_snapshot](#jerry_exec_snapshot) 7238425bb815Sopenharmony_ci 7239425bb815Sopenharmony_ci 7240425bb815Sopenharmony_ci## jerry_generate_function_snapshot 7241425bb815Sopenharmony_ci 7242425bb815Sopenharmony_ci**Summary** 7243425bb815Sopenharmony_ci 7244425bb815Sopenharmony_ciGenerate function snapshot from the specified source code 7245425bb815Sopenharmony_ciwith the given arguments. 7246425bb815Sopenharmony_ci 7247425bb815Sopenharmony_ciThe function arguments and function body are 7248425bb815Sopenharmony_cipassed as separated arguments. 7249425bb815Sopenharmony_ci 7250425bb815Sopenharmony_ci*Notes*: 7251425bb815Sopenharmony_ci- Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 7252425bb815Sopenharmony_ci is no longer needed. 7253425bb815Sopenharmony_ci- This API depends on a build option (`JERRY_SNAPSHOT_SAVE`) and can be checked in runtime with 7254425bb815Sopenharmony_ci the `JERRY_FEATURE_SNAPSHOT_SAVE` feature enum value, see [jerry_is_feature_enabled](#jerry_is_feature_enabled). 7255425bb815Sopenharmony_ci If the feature is not enabled the function will return an error. 7256425bb815Sopenharmony_ci 7257425bb815Sopenharmony_ci**Prototype** 7258425bb815Sopenharmony_ci 7259425bb815Sopenharmony_ci```c 7260425bb815Sopenharmony_cijerry_value_t 7261425bb815Sopenharmony_cijerry_generate_function_snapshot (const jerry_char_t *resource_name_p, 7262425bb815Sopenharmony_ci size_t resource_name_length, 7263425bb815Sopenharmony_ci const jerry_char_t *source_p, 7264425bb815Sopenharmony_ci size_t source_size, 7265425bb815Sopenharmony_ci const jerry_char_t *args_p, 7266425bb815Sopenharmony_ci size_t args_size, 7267425bb815Sopenharmony_ci uint32_t generate_snapshot_opts, 7268425bb815Sopenharmony_ci uint32_t *buffer_p, 7269425bb815Sopenharmony_ci size_t buffer_size) 7270425bb815Sopenharmony_ci``` 7271425bb815Sopenharmony_ci 7272425bb815Sopenharmony_ci- `resource_name_p` - resource (file) name of the source code. Currently unused, the debugger may use it in the future. 7273425bb815Sopenharmony_ci- `resource_name_length` - length of resource name. 7274425bb815Sopenharmony_ci- `source_p` - script source, it must be a valid utf8 string. 7275425bb815Sopenharmony_ci- `source_size` - script source size, in bytes. 7276425bb815Sopenharmony_ci- `args_p` - function arguments, it must be a valid utf8 string. 7277425bb815Sopenharmony_ci- `args_size` - function argument size, in bytes. 7278425bb815Sopenharmony_ci- `generate_snapshot_opts` - any combination of [jerry_generate_snapshot_opts_t](#jerry_generate_snapshot_opts_t) flags. 7279425bb815Sopenharmony_ci- `buffer_p` - buffer (aligned to 4 bytes) to save snapshot to. 7280425bb815Sopenharmony_ci- `buffer_size` - the buffer's size in bytes. 7281425bb815Sopenharmony_ci- return value 7282425bb815Sopenharmony_ci - the size of the generated snapshot in bytes as number value, if it was generated succesfully (i.e. there 7283425bb815Sopenharmony_ci are no syntax errors in source code, buffer size is sufficient, and snapshot support is enabled in 7284425bb815Sopenharmony_ci current configuration through JERRY_SNAPSHOT_SAVE) 7285425bb815Sopenharmony_ci - thrown error, otherwise. 7286425bb815Sopenharmony_ci 7287425bb815Sopenharmony_ci*New in version 2.0*. 7288425bb815Sopenharmony_ci 7289425bb815Sopenharmony_ci**Example** 7290425bb815Sopenharmony_ci 7291425bb815Sopenharmony_ci[doctest]: # () 7292425bb815Sopenharmony_ci 7293425bb815Sopenharmony_ci```c 7294425bb815Sopenharmony_ci#include "jerryscript.h" 7295425bb815Sopenharmony_ci 7296425bb815Sopenharmony_ciint 7297425bb815Sopenharmony_cimain (void) 7298425bb815Sopenharmony_ci{ 7299425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 7300425bb815Sopenharmony_ci 7301425bb815Sopenharmony_ci static uint32_t func_snapshot_buffer[256]; 7302425bb815Sopenharmony_ci const jerry_char_t args[] = "a, b"; 7303425bb815Sopenharmony_ci const jerry_char_t src[] = "return a + b;"; 7304425bb815Sopenharmony_ci 7305425bb815Sopenharmony_ci jerry_value_t generate_result; 7306425bb815Sopenharmony_ci generate_result = jerry_generate_function_snapshot (NULL, 7307425bb815Sopenharmony_ci 0, 7308425bb815Sopenharmony_ci src, 7309425bb815Sopenharmony_ci sizeof (src) - 1, 7310425bb815Sopenharmony_ci args, 7311425bb815Sopenharmony_ci sizeof (args) - 1, 7312425bb815Sopenharmony_ci 0, 7313425bb815Sopenharmony_ci func_snapshot_buffer, 7314425bb815Sopenharmony_ci sizeof (func_snapshot_buffer) / sizeof (uint32_t)); 7315425bb815Sopenharmony_ci 7316425bb815Sopenharmony_ci if (!jerry_value_is_error (generate_result)) 7317425bb815Sopenharmony_ci { 7318425bb815Sopenharmony_ci size_t snapshot_size = (size_t) jerry_get_number_value (generate_result); 7319425bb815Sopenharmony_ci } 7320425bb815Sopenharmony_ci 7321425bb815Sopenharmony_ci jerry_release_value (generate_result); 7322425bb815Sopenharmony_ci 7323425bb815Sopenharmony_ci jerry_cleanup (); 7324425bb815Sopenharmony_ci return 0; 7325425bb815Sopenharmony_ci} 7326425bb815Sopenharmony_ci``` 7327425bb815Sopenharmony_ci 7328425bb815Sopenharmony_ci**See also** 7329425bb815Sopenharmony_ci 7330425bb815Sopenharmony_ci- [jerry_init](#jerry_init) 7331425bb815Sopenharmony_ci- [jerry_cleanup](#jerry_cleanup) 7332425bb815Sopenharmony_ci- [jerry_generate_snapshot](#jerry_generate_snapshot) 7333425bb815Sopenharmony_ci- [jerry_load_function_snapshot_at](#jerry_load_function_snapshot_at) 7334425bb815Sopenharmony_ci 7335425bb815Sopenharmony_ci 7336425bb815Sopenharmony_ci## jerry_exec_snapshot 7337425bb815Sopenharmony_ci 7338425bb815Sopenharmony_ci**Summary** 7339425bb815Sopenharmony_ci 7340425bb815Sopenharmony_ciExecute snapshot from the specified buffer. 7341425bb815Sopenharmony_ci 7342425bb815Sopenharmony_ci*Notes*: 7343425bb815Sopenharmony_ci- Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 7344425bb815Sopenharmony_ci is no longer needed. 7345425bb815Sopenharmony_ci- This API depends on a build option (`JERRY_SNAPSHOT_EXEC`) and can be checked in runtime with 7346425bb815Sopenharmony_ci the `JERRY_FEATURE_SNAPSHOT_EXEC` feature enum value, see [jerry_is_feature_enabled](#jerry_is_feature_enabled). 7347425bb815Sopenharmony_ci If the feature is not enabled the function will return an error. 7348425bb815Sopenharmony_ci 7349425bb815Sopenharmony_ci**Prototype** 7350425bb815Sopenharmony_ci 7351425bb815Sopenharmony_ci```c 7352425bb815Sopenharmony_cijerry_value_t 7353425bb815Sopenharmony_cijerry_exec_snapshot (const uint32_t *snapshot_p, 7354425bb815Sopenharmony_ci size_t snapshot_size, 7355425bb815Sopenharmony_ci size_t func_index, 7356425bb815Sopenharmony_ci uint32_t exec_snapshot_opts); 7357425bb815Sopenharmony_ci``` 7358425bb815Sopenharmony_ci 7359425bb815Sopenharmony_ci- `snapshot_p` - pointer to snapshot. 7360425bb815Sopenharmony_ci- `snapshot_size` - size of snapshot in bytes. 7361425bb815Sopenharmony_ci- `func_index` - index of executed function. 7362425bb815Sopenharmony_ci- `exec_snapshot_opts` - any combination of [jerry_exec_snapshot_opts_t](#jerry_exec_snapshot_opts_t) flags. 7363425bb815Sopenharmony_ci- return value 7364425bb815Sopenharmony_ci - result of bytecode, if run was successful. 7365425bb815Sopenharmony_ci - thrown error, otherwise (an error is reported if the snapshot execution feature is not enabled). 7366425bb815Sopenharmony_ci 7367425bb815Sopenharmony_ci*Changed in version 2.0*: Added `func_index` and `exec_snapshot_opts` arguments. Removed the `copy_bytecode` last argument. 7368425bb815Sopenharmony_ci 7369425bb815Sopenharmony_ci**Example** 7370425bb815Sopenharmony_ci 7371425bb815Sopenharmony_ci[doctest]: # () 7372425bb815Sopenharmony_ci 7373425bb815Sopenharmony_ci```c 7374425bb815Sopenharmony_ci#include "jerryscript.h" 7375425bb815Sopenharmony_ci 7376425bb815Sopenharmony_ciint 7377425bb815Sopenharmony_cimain (void) 7378425bb815Sopenharmony_ci{ 7379425bb815Sopenharmony_ci static uint32_t global_mode_snapshot_buffer[256]; 7380425bb815Sopenharmony_ci const jerry_char_t script_to_snapshot[] = "(function () { return 'string from snapshot'; }) ();"; 7381425bb815Sopenharmony_ci 7382425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 7383425bb815Sopenharmony_ci 7384425bb815Sopenharmony_ci jerry_value_t generate_result; 7385425bb815Sopenharmony_ci generate_result = jerry_generate_snapshot (NULL, 7386425bb815Sopenharmony_ci 0, 7387425bb815Sopenharmony_ci script_to_snapshot, 7388425bb815Sopenharmony_ci sizeof (script_to_snapshot) - 1, 7389425bb815Sopenharmony_ci 0, 7390425bb815Sopenharmony_ci global_mode_snapshot_buffer, 7391425bb815Sopenharmony_ci sizeof (global_mode_snapshot_buffer) / sizeof (uint32_t)); 7392425bb815Sopenharmony_ci // generate_result should be checked if it is an error or not 7393425bb815Sopenharmony_ci 7394425bb815Sopenharmony_ci size_t global_mode_snapshot_size = (size_t) jerry_get_number_value (generate_result); 7395425bb815Sopenharmony_ci jerry_release_value (generate_result); 7396425bb815Sopenharmony_ci 7397425bb815Sopenharmony_ci jerry_cleanup (); 7398425bb815Sopenharmony_ci 7399425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 7400425bb815Sopenharmony_ci 7401425bb815Sopenharmony_ci jerry_value_t res = jerry_exec_snapshot (global_mode_snapshot_buffer, 7402425bb815Sopenharmony_ci global_mode_snapshot_size, 7403425bb815Sopenharmony_ci 0, 7404425bb815Sopenharmony_ci 0); 7405425bb815Sopenharmony_ci 7406425bb815Sopenharmony_ci // check the `res` value for error and process the result. 7407425bb815Sopenharmony_ci 7408425bb815Sopenharmony_ci jerry_release_value (res); 7409425bb815Sopenharmony_ci 7410425bb815Sopenharmony_ci jerry_cleanup (); 7411425bb815Sopenharmony_ci return 0; 7412425bb815Sopenharmony_ci} 7413425bb815Sopenharmony_ci``` 7414425bb815Sopenharmony_ci 7415425bb815Sopenharmony_ci**See also** 7416425bb815Sopenharmony_ci 7417425bb815Sopenharmony_ci- [jerry_init](#jerry_init) 7418425bb815Sopenharmony_ci- [jerry_cleanup](#jerry_cleanup) 7419425bb815Sopenharmony_ci- [jerry_parse_and_save_snapshot](#jerry_parse_and_save_snapshot) 7420425bb815Sopenharmony_ci 7421425bb815Sopenharmony_ci 7422425bb815Sopenharmony_ci## jerry_load_function_snapshot 7423425bb815Sopenharmony_ci 7424425bb815Sopenharmony_ci**Summary** 7425425bb815Sopenharmony_ci 7426425bb815Sopenharmony_ciLoad the selected snapshot function from the specified buffer as a function object. 7427425bb815Sopenharmony_ci 7428425bb815Sopenharmony_ciThe lexical environment of the loaded function is always the global lexical environment. 7429425bb815Sopenharmony_ci 7430425bb815Sopenharmony_ci*Notes*: 7431425bb815Sopenharmony_ci- Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 7432425bb815Sopenharmony_ci is no longer needed. 7433425bb815Sopenharmony_ci- This API depends on a build option (`JERRY_SNAPSHOT_EXEC`) and can be checked in runtime with 7434425bb815Sopenharmony_ci the `JERRY_FEATURE_SNAPSHOT_EXEC` feature enum value, see [jerry_is_feature_enabled](#jerry_is_feature_enabled). 7435425bb815Sopenharmony_ci If the feature is not enabled the function will return an error. 7436425bb815Sopenharmony_ci 7437425bb815Sopenharmony_ci**Prototype** 7438425bb815Sopenharmony_ci 7439425bb815Sopenharmony_ci```c 7440425bb815Sopenharmony_cijerry_value_t 7441425bb815Sopenharmony_cijerry_load_function_snapshot (const uint32_t *snapshot_p, 7442425bb815Sopenharmony_ci size_t snapshot_size, 7443425bb815Sopenharmony_ci size_t func_index, 7444425bb815Sopenharmony_ci uint32_t exec_snapshot_opts); 7445425bb815Sopenharmony_ci``` 7446425bb815Sopenharmony_ci 7447425bb815Sopenharmony_ci- `snapshot_p` - pointer to snapshot. 7448425bb815Sopenharmony_ci- `snapshot_size` - size of snapshot in bytes. 7449425bb815Sopenharmony_ci- `func_index` - index of function to load from the snapshot. 7450425bb815Sopenharmony_ci- `exec_snapshot_opts` - any combination of [jerry_exec_snapshot_opts_t](#jerry_exec_snapshot_opts_t) flags. 7451425bb815Sopenharmony_ci- return value 7452425bb815Sopenharmony_ci - function object built from the snapshot. 7453425bb815Sopenharmony_ci - thrown error, otherwise. 7454425bb815Sopenharmony_ci 7455425bb815Sopenharmony_ci*New in version 2.0*. 7456425bb815Sopenharmony_ci 7457425bb815Sopenharmony_ci**Example** 7458425bb815Sopenharmony_ci 7459425bb815Sopenharmony_ci[doctest]: # () 7460425bb815Sopenharmony_ci 7461425bb815Sopenharmony_ci```c 7462425bb815Sopenharmony_ci#include "jerryscript.h" 7463425bb815Sopenharmony_ci 7464425bb815Sopenharmony_ciint 7465425bb815Sopenharmony_cimain (void) 7466425bb815Sopenharmony_ci{ 7467425bb815Sopenharmony_ci static uint32_t snapshot_buffer[256]; 7468425bb815Sopenharmony_ci const jerry_char_t func_args[] = "a, b"; 7469425bb815Sopenharmony_ci const jerry_char_t func_src[] = "return a + b;"; 7470425bb815Sopenharmony_ci 7471425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 7472425bb815Sopenharmony_ci 7473425bb815Sopenharmony_ci jerry_value_t generate_result; 7474425bb815Sopenharmony_ci generate_result = jerry_generate_function_snapshot (NULL, 7475425bb815Sopenharmony_ci 0, 7476425bb815Sopenharmony_ci func_src, 7477425bb815Sopenharmony_ci sizeof (func_src) - 1, 7478425bb815Sopenharmony_ci func_args, 7479425bb815Sopenharmony_ci sizeof (func_args) - 1, 7480425bb815Sopenharmony_ci false, 7481425bb815Sopenharmony_ci snapshot_buffer, 7482425bb815Sopenharmony_ci sizeof (snapshot_buffer) / sizeof (uint32_t)); 7483425bb815Sopenharmony_ci 7484425bb815Sopenharmony_ci size_t snapshot_size = (size_t) jerry_get_number_value (generate_result); 7485425bb815Sopenharmony_ci jerry_release_value (generate_result); 7486425bb815Sopenharmony_ci 7487425bb815Sopenharmony_ci jerry_cleanup (); 7488425bb815Sopenharmony_ci 7489425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 7490425bb815Sopenharmony_ci 7491425bb815Sopenharmony_ci jerry_value_t func = jerry_load_function_snapshot (snapshot_buffer, 7492425bb815Sopenharmony_ci snapshot_size, 7493425bb815Sopenharmony_ci 0, 7494425bb815Sopenharmony_ci 0); 7495425bb815Sopenharmony_ci /* 'func' can be used now as a function object */ 7496425bb815Sopenharmony_ci 7497425bb815Sopenharmony_ci jerry_value_t this_value = jerry_create_undefined (); 7498425bb815Sopenharmony_ci jerry_value_t args[2]; 7499425bb815Sopenharmony_ci args[0] = jerry_create_number (1.0); 7500425bb815Sopenharmony_ci args[1] = jerry_create_number (2.0); 7501425bb815Sopenharmony_ci 7502425bb815Sopenharmony_ci jerry_value_t res = jerry_call_function (func, this_value, args, 2); 7503425bb815Sopenharmony_ci 7504425bb815Sopenharmony_ci /* 'res' now contains the value 3 as a jerry_value_t */ 7505425bb815Sopenharmony_ci 7506425bb815Sopenharmony_ci jerry_release_value (args[0]); 7507425bb815Sopenharmony_ci jerry_release_value (args[1]); 7508425bb815Sopenharmony_ci jerry_release_value (this_value); 7509425bb815Sopenharmony_ci jerry_release_value (func); 7510425bb815Sopenharmony_ci 7511425bb815Sopenharmony_ci jerry_cleanup (); 7512425bb815Sopenharmony_ci return 0; 7513425bb815Sopenharmony_ci} 7514425bb815Sopenharmony_ci``` 7515425bb815Sopenharmony_ci 7516425bb815Sopenharmony_ci**See also** 7517425bb815Sopenharmony_ci 7518425bb815Sopenharmony_ci- [jerry_init](#jerry_init) 7519425bb815Sopenharmony_ci- [jerry_cleanup](#jerry_cleanup) 7520425bb815Sopenharmony_ci- [jerry_parse_and_save_function_snapshot](#jerry_parse_and_save_function_snapshot) 7521425bb815Sopenharmony_ci 7522425bb815Sopenharmony_ci 7523425bb815Sopenharmony_ci## jerry_get_literals_from_snapshot 7524425bb815Sopenharmony_ci 7525425bb815Sopenharmony_ci**Summary** 7526425bb815Sopenharmony_ci 7527425bb815Sopenharmony_ciCollect the used literals from the given snapshot and save them into a buffer in list or C format. 7528425bb815Sopenharmony_ciNone of these literals are magic strings. In C format only valid identifiers are collected. 7529425bb815Sopenharmony_ci 7530425bb815Sopenharmony_ci*Note*: 7531425bb815Sopenharmony_ci- This API depends on a build option (`JERRY_SNAPSHOT_SAVE`) and can be checked in runtime with 7532425bb815Sopenharmony_ci the `JERRY_FEATURE_SNAPSHOT_SAVE` feature enum value, see [jerry_is_feature_enabled](#jerry_is_feature_enabled). 7533425bb815Sopenharmony_ci If the feature is not enabled the function will return zero. 7534425bb815Sopenharmony_ci 7535425bb815Sopenharmony_ci**Prototype** 7536425bb815Sopenharmony_ci 7537425bb815Sopenharmony_ci```c 7538425bb815Sopenharmony_cisize_t 7539425bb815Sopenharmony_cijerry_get_literals_from_snapshot (const uint32_t *snapshot_p, 7540425bb815Sopenharmony_ci size_t snapshot_size, 7541425bb815Sopenharmony_ci jerry_char_t *lit_buf_p, 7542425bb815Sopenharmony_ci size_t lit_buf_size, 7543425bb815Sopenharmony_ci bool is_c_format); 7544425bb815Sopenharmony_ci``` 7545425bb815Sopenharmony_ci 7546425bb815Sopenharmony_ci- `snapshot_p` - input snapshot buffer. 7547425bb815Sopenharmony_ci- `snapshot_size` - size of snapshot in bytes. 7548425bb815Sopenharmony_ci- `lit_buf_p` - buffer to save literals to. 7549425bb815Sopenharmony_ci- `lit_buf_size` - the buffer's size. 7550425bb815Sopenharmony_ci- `is_c_format` - the output format would be C-style (true) or a simple list (false). 7551425bb815Sopenharmony_ci- return value 7552425bb815Sopenharmony_ci - the size of the literal-list, if it was generated succesfully (i.e. the list of literals isn't empty, 7553425bb815Sopenharmony_ci and literal-save support is enabled in current configuration through JERRY_SNAPSHOT_SAVE) 7554425bb815Sopenharmony_ci - 0 otherwise. 7555425bb815Sopenharmony_ci 7556425bb815Sopenharmony_ci*New in version 2.0*. 7557425bb815Sopenharmony_ci 7558425bb815Sopenharmony_ci**Example** 7559425bb815Sopenharmony_ci 7560425bb815Sopenharmony_ci[doctest]: # (test="link") 7561425bb815Sopenharmony_ci 7562425bb815Sopenharmony_ci```c 7563425bb815Sopenharmony_ci#include <stdio.h> 7564425bb815Sopenharmony_ci#include "jerryscript.h" 7565425bb815Sopenharmony_ci 7566425bb815Sopenharmony_ciint 7567425bb815Sopenharmony_cimain (void) 7568425bb815Sopenharmony_ci{ 7569425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 7570425bb815Sopenharmony_ci 7571425bb815Sopenharmony_ci static jerry_char_t literal_buffer[256]; 7572425bb815Sopenharmony_ci static uint32_t snapshot_buffer[256]; 7573425bb815Sopenharmony_ci const jerry_char_t script_for_literal_save[] = "var obj = { a:'aa', bb:'Bb' }"; 7574425bb815Sopenharmony_ci 7575425bb815Sopenharmony_ci jerry_value_t generate_result = jerry_generate_snapshot (NULL, 7576425bb815Sopenharmony_ci 0, 7577425bb815Sopenharmony_ci script_for_literal_save, 7578425bb815Sopenharmony_ci sizeof (script_for_literal_save) - 1, 7579425bb815Sopenharmony_ci 0, 7580425bb815Sopenharmony_ci snapshot_buffer, 7581425bb815Sopenharmony_ci 256); 7582425bb815Sopenharmony_ci size_t snapshot_size = (size_t) jerry_get_number_value (generate_result); 7583425bb815Sopenharmony_ci jerry_release_value (generate_result); 7584425bb815Sopenharmony_ci 7585425bb815Sopenharmony_ci const size_t literal_size = jerry_get_literals_from_snapshot (snapshot_buffer, 7586425bb815Sopenharmony_ci snapshot_size, 7587425bb815Sopenharmony_ci literal_buffer, 7588425bb815Sopenharmony_ci 256, 7589425bb815Sopenharmony_ci true); 7590425bb815Sopenharmony_ci 7591425bb815Sopenharmony_ci if (literal_size != 0) 7592425bb815Sopenharmony_ci { 7593425bb815Sopenharmony_ci FILE *literal_file_p = fopen ("literals.h", "wb"); 7594425bb815Sopenharmony_ci fwrite (literal_buffer, sizeof (uint8_t), literal_size, literal_file_p); 7595425bb815Sopenharmony_ci fclose (literal_file_p); 7596425bb815Sopenharmony_ci } 7597425bb815Sopenharmony_ci 7598425bb815Sopenharmony_ci jerry_cleanup (); 7599425bb815Sopenharmony_ci return 0; 7600425bb815Sopenharmony_ci} 7601425bb815Sopenharmony_ci``` 7602425bb815Sopenharmony_ci 7603425bb815Sopenharmony_ci**See also** 7604425bb815Sopenharmony_ci 7605425bb815Sopenharmony_ci- [jerry_init](#jerry_init) 7606425bb815Sopenharmony_ci- [jerry_cleanup](#jerry_cleanup) 7607425bb815Sopenharmony_ci- [jerry_register_magic_strings](#jerry_register_magic_strings) 7608425bb815Sopenharmony_ci 7609425bb815Sopenharmony_ci 7610425bb815Sopenharmony_ci# Miscellaneous functions 7611425bb815Sopenharmony_ci 7612425bb815Sopenharmony_ci## jerry_set_vm_exec_stop_callback 7613425bb815Sopenharmony_ci 7614425bb815Sopenharmony_ci**Summary** 7615425bb815Sopenharmony_ci 7616425bb815Sopenharmony_ciWhen JERRY_FEATURE_VM_EXEC_STOP is enabled a callback function can be 7617425bb815Sopenharmony_cispecified by this function. This callback is periodically called when 7618425bb815Sopenharmony_ciJerryScript executes an ECMAScript program. 7619425bb815Sopenharmony_ci 7620425bb815Sopenharmony_ciIf the callback returns with undefined value the ECMAScript execution 7621425bb815Sopenharmony_cicontinues. Otherwise the result is thrown by the engine (if the error 7622425bb815Sopenharmony_ciflag is not set for the returned value the engine automatically sets 7623425bb815Sopenharmony_ciit). The callback function might be called again even if it threw 7624425bb815Sopenharmony_cian error. In this case the function must throw the same error again. 7625425bb815Sopenharmony_ci 7626425bb815Sopenharmony_ciTo reduce the CPU overhead of constantly checking the termination 7627425bb815Sopenharmony_cicondition the callback is called when a backward jump is executed 7628425bb815Sopenharmony_cior an exception is caught. Setting the `frequency` to a greater 7629425bb815Sopenharmony_cithan `1` value reduces this overhead further. If its value is N 7630425bb815Sopenharmony_cionly every Nth event (backward jump, etc.) trigger the next check. 7631425bb815Sopenharmony_ci 7632425bb815Sopenharmony_ci 7633425bb815Sopenharmony_ci**Prototype** 7634425bb815Sopenharmony_ci 7635425bb815Sopenharmony_ci```c 7636425bb815Sopenharmony_civoid 7637425bb815Sopenharmony_cijerry_set_vm_exec_stop_callback (jerry_vm_exec_stop_callback_t stop_cb, 7638425bb815Sopenharmony_ci void *user_p, 7639425bb815Sopenharmony_ci uint32_t frequency); 7640425bb815Sopenharmony_ci``` 7641425bb815Sopenharmony_ci 7642425bb815Sopenharmony_ci- `stop_cb` - periodically called callback (passing NULL disables this feature) 7643425bb815Sopenharmony_ci- `user_p` - user pointer passed to the `stop_cb` function 7644425bb815Sopenharmony_ci- `frequency` - frequency of calling the `stop_cb` function 7645425bb815Sopenharmony_ci 7646425bb815Sopenharmony_ci*New in version 2.0*. 7647425bb815Sopenharmony_ci 7648425bb815Sopenharmony_ci**Example** 7649425bb815Sopenharmony_ci 7650425bb815Sopenharmony_ci[doctest]: # (test="link") 7651425bb815Sopenharmony_ci 7652425bb815Sopenharmony_ci```c 7653425bb815Sopenharmony_ci#include "jerryscript.h" 7654425bb815Sopenharmony_ci 7655425bb815Sopenharmony_cistatic int countdown = 10; 7656425bb815Sopenharmony_ci 7657425bb815Sopenharmony_cistatic jerry_value_t 7658425bb815Sopenharmony_civm_exec_stop_callback (void *user_p) 7659425bb815Sopenharmony_ci{ 7660425bb815Sopenharmony_ci while (countdown > 0) 7661425bb815Sopenharmony_ci { 7662425bb815Sopenharmony_ci countdown--; 7663425bb815Sopenharmony_ci return jerry_create_undefined (); 7664425bb815Sopenharmony_ci } 7665425bb815Sopenharmony_ci 7666425bb815Sopenharmony_ci // The error flag is added automatically. 7667425bb815Sopenharmony_ci return jerry_create_string ((const jerry_char_t *) "Abort script"); 7668425bb815Sopenharmony_ci} 7669425bb815Sopenharmony_ci 7670425bb815Sopenharmony_ciint 7671425bb815Sopenharmony_cimain (void) 7672425bb815Sopenharmony_ci{ 7673425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 7674425bb815Sopenharmony_ci 7675425bb815Sopenharmony_ci jerry_set_vm_exec_stop_callback (vm_exec_stop_callback, &countdown, 16); 7676425bb815Sopenharmony_ci 7677425bb815Sopenharmony_ci // Inifinte loop. 7678425bb815Sopenharmony_ci const jerry_char_t script[] = "while(true) {}"; 7679425bb815Sopenharmony_ci 7680425bb815Sopenharmony_ci jerry_value_t parsed_code = jerry_parse (NULL, 0, script, sizeof (script) - 1, JERRY_PARSE_NO_OPTS); 7681425bb815Sopenharmony_ci jerry_release_value (jerry_run (parsed_code)); 7682425bb815Sopenharmony_ci jerry_release_value (parsed_code); 7683425bb815Sopenharmony_ci jerry_cleanup (); 7684425bb815Sopenharmony_ci} 7685425bb815Sopenharmony_ci``` 7686425bb815Sopenharmony_ci 7687425bb815Sopenharmony_ci**See also** 7688425bb815Sopenharmony_ci 7689425bb815Sopenharmony_ci- [jerry_init](#jerry_init) 7690425bb815Sopenharmony_ci- [jerry_cleanup](#jerry_cleanup) 7691425bb815Sopenharmony_ci- [jerry_parse](#jerry_parse) 7692425bb815Sopenharmony_ci- [jerry_run](#jerry_run) 7693425bb815Sopenharmony_ci- [jerry_vm_exec_stop_callback_t](#jerry_vm_exec_stop_callback_t) 7694425bb815Sopenharmony_ci 7695425bb815Sopenharmony_ci## jerry_get_backtrace 7696425bb815Sopenharmony_ci 7697425bb815Sopenharmony_ci**Summary** 7698425bb815Sopenharmony_ci 7699425bb815Sopenharmony_ciGet backtrace. The backtrace is an array of strings where 7700425bb815Sopenharmony_cieach string contains the position of the corresponding frame. 7701425bb815Sopenharmony_ciThe array length is zero if the backtrace is not available. 7702425bb815Sopenharmony_ci 7703425bb815Sopenharmony_ciThis function is typically called from native callbacks. 7704425bb815Sopenharmony_ci 7705425bb815Sopenharmony_ci*Notes*: 7706425bb815Sopenharmony_ci- Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 7707425bb815Sopenharmony_ciis no longer needed. 7708425bb815Sopenharmony_ci- This feature depends on build option (`JERRY_LINE_INFO`) and can be checked 7709425bb815Sopenharmony_ci in runtime with the `JERRY_FEATURE_LINE_INFO` feature enum value, 7710425bb815Sopenharmony_ci see: [jerry_is_feature_enabled](#jerry_is_feature_enabled). 7711425bb815Sopenharmony_ci 7712425bb815Sopenharmony_ci**Prototype** 7713425bb815Sopenharmony_ci 7714425bb815Sopenharmony_ci```c 7715425bb815Sopenharmony_cijerry_value_t 7716425bb815Sopenharmony_cijerry_get_backtrace (uint32_t max_depth); 7717425bb815Sopenharmony_ci``` 7718425bb815Sopenharmony_ci 7719425bb815Sopenharmony_ci- `max_depth` - backtrace collection stops after reaching this value, 0 = unlimited 7720425bb815Sopenharmony_ci- return value 7721425bb815Sopenharmony_ci - a newly constructed JS array 7722425bb815Sopenharmony_ci 7723425bb815Sopenharmony_ci*New in version 2.0*. 7724425bb815Sopenharmony_ci 7725425bb815Sopenharmony_ci**Example** 7726425bb815Sopenharmony_ci 7727425bb815Sopenharmony_ci[doctest]: # (name="02.API-REFERENCE-jsbacktrace.c") 7728425bb815Sopenharmony_ci 7729425bb815Sopenharmony_ci```c 7730425bb815Sopenharmony_ci#include <stdio.h> 7731425bb815Sopenharmony_ci#include <string.h> 7732425bb815Sopenharmony_ci#include "jerryscript.h" 7733425bb815Sopenharmony_ci 7734425bb815Sopenharmony_cistatic jerry_value_t 7735425bb815Sopenharmony_cibacktrace_handler (const jerry_value_t function_obj, 7736425bb815Sopenharmony_ci const jerry_value_t this_val, 7737425bb815Sopenharmony_ci const jerry_value_t args_p[], 7738425bb815Sopenharmony_ci const jerry_length_t args_count) 7739425bb815Sopenharmony_ci{ 7740425bb815Sopenharmony_ci if (!jerry_is_feature_enabled (JERRY_FEATURE_LINE_INFO)) 7741425bb815Sopenharmony_ci { 7742425bb815Sopenharmony_ci printf ("Line info disabled, no backtrace will be printed\n"); 7743425bb815Sopenharmony_ci } 7744425bb815Sopenharmony_ci 7745425bb815Sopenharmony_ci /* If the line info feature is disabled an empty array will be returned. */ 7746425bb815Sopenharmony_ci jerry_value_t backtrace_array = jerry_get_backtrace (5); 7747425bb815Sopenharmony_ci uint32_t array_length = jerry_get_array_length (backtrace_array); 7748425bb815Sopenharmony_ci 7749425bb815Sopenharmony_ci for (uint32_t idx = 0; idx < array_length; idx++) 7750425bb815Sopenharmony_ci { 7751425bb815Sopenharmony_ci jerry_value_t property = jerry_get_property_by_index (backtrace_array, idx); 7752425bb815Sopenharmony_ci 7753425bb815Sopenharmony_ci jerry_char_t string_buffer[64]; 7754425bb815Sopenharmony_ci jerry_size_t copied_bytes = jerry_substring_to_char_buffer (property, 7755425bb815Sopenharmony_ci 0, 7756425bb815Sopenharmony_ci 63, 7757425bb815Sopenharmony_ci string_buffer, 7758425bb815Sopenharmony_ci 63); 7759425bb815Sopenharmony_ci string_buffer[copied_bytes] = '\0'; 7760425bb815Sopenharmony_ci printf(" %d: %s\n", idx, string_buffer); 7761425bb815Sopenharmony_ci 7762425bb815Sopenharmony_ci jerry_release_value (property); 7763425bb815Sopenharmony_ci } 7764425bb815Sopenharmony_ci 7765425bb815Sopenharmony_ci jerry_release_value (backtrace_array); 7766425bb815Sopenharmony_ci 7767425bb815Sopenharmony_ci return jerry_create_undefined (); 7768425bb815Sopenharmony_ci} /* backtrace_handler */ 7769425bb815Sopenharmony_ci 7770425bb815Sopenharmony_ciint 7771425bb815Sopenharmony_cimain (void) 7772425bb815Sopenharmony_ci{ 7773425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 7774425bb815Sopenharmony_ci 7775425bb815Sopenharmony_ci jerry_value_t global = jerry_get_global_object (); 7776425bb815Sopenharmony_ci 7777425bb815Sopenharmony_ci /* Register the "dump_backtrace" method. */ 7778425bb815Sopenharmony_ci { 7779425bb815Sopenharmony_ci jerry_value_t func = jerry_create_external_function (backtrace_handler); 7780425bb815Sopenharmony_ci jerry_value_t name = jerry_create_string ((const jerry_char_t *) "backtrace"); 7781425bb815Sopenharmony_ci jerry_value_t result = jerry_set_property (global, name, func); 7782425bb815Sopenharmony_ci jerry_release_value (result); 7783425bb815Sopenharmony_ci jerry_release_value (name); 7784425bb815Sopenharmony_ci jerry_release_value (func); 7785425bb815Sopenharmony_ci } 7786425bb815Sopenharmony_ci 7787425bb815Sopenharmony_ci jerry_release_value (global); 7788425bb815Sopenharmony_ci 7789425bb815Sopenharmony_ci const char *source = ("function f() { g (); }\n" 7790425bb815Sopenharmony_ci "function g() { h (); }\n" 7791425bb815Sopenharmony_ci "function h() { backtrace (); }\n" 7792425bb815Sopenharmony_ci "f ();\n"); 7793425bb815Sopenharmony_ci const char *resource = "demo_memoryjs"; 7794425bb815Sopenharmony_ci 7795425bb815Sopenharmony_ci jerry_value_t program = jerry_parse ((const jerry_char_t *) resource, 7796425bb815Sopenharmony_ci strlen (resource), 7797425bb815Sopenharmony_ci (const jerry_char_t *) source, 7798425bb815Sopenharmony_ci strlen (source), 7799425bb815Sopenharmony_ci JERRY_PARSE_NO_OPTS); 7800425bb815Sopenharmony_ci if (!jerry_value_is_error (program)) 7801425bb815Sopenharmony_ci { 7802425bb815Sopenharmony_ci jerry_value_t run_result = jerry_run (program); 7803425bb815Sopenharmony_ci jerry_release_value (run_result); 7804425bb815Sopenharmony_ci } 7805425bb815Sopenharmony_ci 7806425bb815Sopenharmony_ci jerry_release_value (program); 7807425bb815Sopenharmony_ci jerry_cleanup (); 7808425bb815Sopenharmony_ci 7809425bb815Sopenharmony_ci return 0; 7810425bb815Sopenharmony_ci} 7811425bb815Sopenharmony_ci``` 7812425bb815Sopenharmony_ci 7813425bb815Sopenharmony_ci**See also** 7814425bb815Sopenharmony_ci 7815425bb815Sopenharmony_ci- [jerry_create_external_function](#jerry_create_external_function) 7816425bb815Sopenharmony_ci 7817425bb815Sopenharmony_ci 7818425bb815Sopenharmony_ci## jerry_get_resource_name 7819425bb815Sopenharmony_ci 7820425bb815Sopenharmony_ci**Summary** 7821425bb815Sopenharmony_ci 7822425bb815Sopenharmony_ciGet the resource name (usually a file name) of the currently executed script or the given function object. 7823425bb815Sopenharmony_ci 7824425bb815Sopenharmony_ciThis function is typically called from native callbacks. 7825425bb815Sopenharmony_ci 7826425bb815Sopenharmony_ci*Notes*: 7827425bb815Sopenharmony_ci- Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 7828425bb815Sopenharmony_ciis no longer needed. 7829425bb815Sopenharmony_ci- This feature depends on build option (`JERRY_LINE_INFO`) and can be checked 7830425bb815Sopenharmony_ci in runtime with the `JERRY_FEATURE_LINE_INFO` feature enum value, 7831425bb815Sopenharmony_ci see: [jerry_is_feature_enabled](#jerry_is_feature_enabled). 7832425bb815Sopenharmony_ci 7833425bb815Sopenharmony_ci**Prototype** 7834425bb815Sopenharmony_ci 7835425bb815Sopenharmony_ci```c 7836425bb815Sopenharmony_cijerry_value_t 7837425bb815Sopenharmony_cijerry_get_resource_name (jerry_value_t value); 7838425bb815Sopenharmony_ci``` 7839425bb815Sopenharmony_ci- `value` - api value to obtain the resource name from 7840425bb815Sopenharmony_ci- return string value constructed from 7841425bb815Sopenharmony_ci - the currently executed function object's resource name, if the given value is undefined 7842425bb815Sopenharmony_ci - resource name of the function object, if the given value is a function object 7843425bb815Sopenharmony_ci - "<anonymous>", otherwise 7844425bb815Sopenharmony_ci 7845425bb815Sopenharmony_ci*New in version 2.2*. 7846425bb815Sopenharmony_ci 7847425bb815Sopenharmony_ci**Example** 7848425bb815Sopenharmony_ci 7849425bb815Sopenharmony_ci[doctest]: # (name="02.API-REFERENCE-jsresourcename.c") 7850425bb815Sopenharmony_ci 7851425bb815Sopenharmony_ci```c 7852425bb815Sopenharmony_ci#include <stdio.h> 7853425bb815Sopenharmony_ci#include <string.h> 7854425bb815Sopenharmony_ci#include "jerryscript.h" 7855425bb815Sopenharmony_ci 7856425bb815Sopenharmony_cistatic jerry_value_t 7857425bb815Sopenharmony_ciresource_name_handler (const jerry_value_t function_obj, 7858425bb815Sopenharmony_ci const jerry_value_t this_val, 7859425bb815Sopenharmony_ci const jerry_value_t args_p[], 7860425bb815Sopenharmony_ci const jerry_length_t args_count) 7861425bb815Sopenharmony_ci{ 7862425bb815Sopenharmony_ci jerry_value_t undefined_value = jerry_create_undefined (); 7863425bb815Sopenharmony_ci jerry_value_t resource_name = jerry_get_resource_name (args_count > 0 ? args_p[0] : undefined_value); 7864425bb815Sopenharmony_ci jerry_release_value (undefined_value); 7865425bb815Sopenharmony_ci 7866425bb815Sopenharmony_ci return resource_name; 7867425bb815Sopenharmony_ci} /* resource_name_handler */ 7868425bb815Sopenharmony_ci 7869425bb815Sopenharmony_ciint 7870425bb815Sopenharmony_cimain (void) 7871425bb815Sopenharmony_ci{ 7872425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 7873425bb815Sopenharmony_ci 7874425bb815Sopenharmony_ci jerry_value_t global = jerry_get_global_object (); 7875425bb815Sopenharmony_ci 7876425bb815Sopenharmony_ci /* Register the "resourceName" method. */ 7877425bb815Sopenharmony_ci { 7878425bb815Sopenharmony_ci jerry_value_t func = jerry_create_external_function (resource_name_handler); 7879425bb815Sopenharmony_ci jerry_value_t name = jerry_create_string ((const jerry_char_t *) "resourceName"); 7880425bb815Sopenharmony_ci jerry_value_t result = jerry_set_property (global, name, func); 7881425bb815Sopenharmony_ci jerry_release_value (result); 7882425bb815Sopenharmony_ci jerry_release_value (name); 7883425bb815Sopenharmony_ci jerry_release_value (func); 7884425bb815Sopenharmony_ci } 7885425bb815Sopenharmony_ci 7886425bb815Sopenharmony_ci jerry_release_value (global); 7887425bb815Sopenharmony_ci 7888425bb815Sopenharmony_ci const jerry_char_t source[] = "function myFunction() { return resourceName() }; myFunction()"; 7889425bb815Sopenharmony_ci const jerry_char_t resource[] = "demo.js"; 7890425bb815Sopenharmony_ci 7891425bb815Sopenharmony_ci jerry_value_t program = jerry_parse (resource, 7892425bb815Sopenharmony_ci sizeof (resource) - 1, 7893425bb815Sopenharmony_ci source, 7894425bb815Sopenharmony_ci sizeof (source) - 1, 7895425bb815Sopenharmony_ci JERRY_PARSE_NO_OPTS); 7896425bb815Sopenharmony_ci 7897425bb815Sopenharmony_ci if (!jerry_value_is_error (program)) 7898425bb815Sopenharmony_ci { 7899425bb815Sopenharmony_ci /* `run_result` contains "demo.js" */ 7900425bb815Sopenharmony_ci jerry_value_t run_result = jerry_run (program); 7901425bb815Sopenharmony_ci 7902425bb815Sopenharmony_ci /* usage of `run_result` */ 7903425bb815Sopenharmony_ci 7904425bb815Sopenharmony_ci jerry_release_value (run_result); 7905425bb815Sopenharmony_ci } 7906425bb815Sopenharmony_ci 7907425bb815Sopenharmony_ci jerry_release_value (program); 7908425bb815Sopenharmony_ci jerry_cleanup (); 7909425bb815Sopenharmony_ci 7910425bb815Sopenharmony_ci return 0; 7911425bb815Sopenharmony_ci} 7912425bb815Sopenharmony_ci``` 7913425bb815Sopenharmony_ci 7914425bb815Sopenharmony_ci**See also** 7915425bb815Sopenharmony_ci 7916425bb815Sopenharmony_ci- [jerry_create_external_function](#jerry_create_external_function) 7917425bb815Sopenharmony_ci 7918425bb815Sopenharmony_ci## jerry_get_new_target 7919425bb815Sopenharmony_ci 7920425bb815Sopenharmony_ci**Summary** 7921425bb815Sopenharmony_ci 7922425bb815Sopenharmony_ciReturns the current "new.target" JavaScript function at the call site. 7923425bb815Sopenharmony_ci 7924425bb815Sopenharmony_ciIf used outside of a native C function it will return "undefined" value. 7925425bb815Sopenharmony_ci 7926425bb815Sopenharmony_ci*Notes*: 7927425bb815Sopenharmony_ci- Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 7928425bb815Sopenharmony_ciis no longer needed. 7929425bb815Sopenharmony_ci- This feature depends on build option (`JERRY_ES2015`) and can be checked 7930425bb815Sopenharmony_ci in runtime with the `JERRY_FEATURE_SYMBOL` feature enum value (as symbols are enabled in case of ES2015), 7931425bb815Sopenharmony_ci see: [jerry_is_feature_enabled](#jerry_is_feature_enabled). 7932425bb815Sopenharmony_ci- If the ES2015 mode is not enabled this method will always return the "undefined" value. 7933425bb815Sopenharmony_ci 7934425bb815Sopenharmony_ci**Prototype** 7935425bb815Sopenharmony_ci 7936425bb815Sopenharmony_ci```c 7937425bb815Sopenharmony_cijerry_value_t 7938425bb815Sopenharmony_cijerry_get_new_target (void); 7939425bb815Sopenharmony_ci``` 7940425bb815Sopenharmony_ci- return 7941425bb815Sopenharmony_ci - "undefined" - if at the call site it was not a constructor call. 7942425bb815Sopenharmony_ci - function object - if the current call site is in a constructor call. 7943425bb815Sopenharmony_ci 7944425bb815Sopenharmony_ci*New in version 2.2*. 7945425bb815Sopenharmony_ci 7946425bb815Sopenharmony_ci**Example 1** 7947425bb815Sopenharmony_ci 7948425bb815Sopenharmony_ci[doctest]: # (name="02.API-REFERENCE-jsnewtarget-01.c") 7949425bb815Sopenharmony_ci 7950425bb815Sopenharmony_ci```c 7951425bb815Sopenharmony_ci#include <stdio.h> 7952425bb815Sopenharmony_ci#include <string.h> 7953425bb815Sopenharmony_ci#include <jerryscript.h> 7954425bb815Sopenharmony_ci 7955425bb815Sopenharmony_cistatic jerry_value_t 7956425bb815Sopenharmony_cidemo_handler (const jerry_value_t func_obj_val, 7957425bb815Sopenharmony_ci const jerry_value_t this_val, 7958425bb815Sopenharmony_ci const jerry_value_t args_p[], 7959425bb815Sopenharmony_ci const jerry_length_t args_cnt) 7960425bb815Sopenharmony_ci{ 7961425bb815Sopenharmony_ci jerry_value_t new_target = jerry_get_new_target (); 7962425bb815Sopenharmony_ci 7963425bb815Sopenharmony_ci /* new_target is the "demo" JS function object */ 7964425bb815Sopenharmony_ci if (jerry_value_get_type (new_target) == JERRY_TYPE_FUNCTION) 7965425bb815Sopenharmony_ci { 7966425bb815Sopenharmony_ci printf ("This is a construct call\r\n"); 7967425bb815Sopenharmony_ci } 7968425bb815Sopenharmony_ci 7969425bb815Sopenharmony_ci jerry_release_value (new_target); 7970425bb815Sopenharmony_ci 7971425bb815Sopenharmony_ci return jerry_create_undefined (); 7972425bb815Sopenharmony_ci} 7973425bb815Sopenharmony_ci 7974425bb815Sopenharmony_ciint 7975425bb815Sopenharmony_cimain (int argc, char** argv) 7976425bb815Sopenharmony_ci{ 7977425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 7978425bb815Sopenharmony_ci 7979425bb815Sopenharmony_ci jerry_value_t function_val = jerry_create_external_function (demo_handler); 7980425bb815Sopenharmony_ci 7981425bb815Sopenharmony_ci jerry_value_t ret_val = jerry_construct_object (function_val, NULL, 0); 7982425bb815Sopenharmony_ci 7983425bb815Sopenharmony_ci jerry_release_value (ret_val); 7984425bb815Sopenharmony_ci jerry_release_value (function_val); 7985425bb815Sopenharmony_ci 7986425bb815Sopenharmony_ci jerry_cleanup (); 7987425bb815Sopenharmony_ci return 0; 7988425bb815Sopenharmony_ci} 7989425bb815Sopenharmony_ci``` 7990425bb815Sopenharmony_ci 7991425bb815Sopenharmony_ci**Example 2** 7992425bb815Sopenharmony_ci 7993425bb815Sopenharmony_ci[doctest]: # (name="02.API-REFERENCE-jsnewtarget-02.c") 7994425bb815Sopenharmony_ci 7995425bb815Sopenharmony_ci```c 7996425bb815Sopenharmony_ci#include <stdio.h> 7997425bb815Sopenharmony_ci#include <string.h> 7998425bb815Sopenharmony_ci#include <jerryscript.h> 7999425bb815Sopenharmony_ci 8000425bb815Sopenharmony_cistatic jerry_value_t 8001425bb815Sopenharmony_cidemo_handler (const jerry_value_t func_obj_val, 8002425bb815Sopenharmony_ci const jerry_value_t this_val, 8003425bb815Sopenharmony_ci const jerry_value_t args_p[], 8004425bb815Sopenharmony_ci const jerry_length_t args_cnt) 8005425bb815Sopenharmony_ci{ 8006425bb815Sopenharmony_ci jerry_value_t new_target = jerry_get_new_target (); 8007425bb815Sopenharmony_ci 8008425bb815Sopenharmony_ci /* new_target is a JS function object */ 8009425bb815Sopenharmony_ci if (jerry_value_get_type (new_target) == JERRY_TYPE_FUNCTION) 8010425bb815Sopenharmony_ci { 8011425bb815Sopenharmony_ci printf ("This is a construct call\r\n"); 8012425bb815Sopenharmony_ci } 8013425bb815Sopenharmony_ci 8014425bb815Sopenharmony_ci jerry_release_value (new_target); 8015425bb815Sopenharmony_ci 8016425bb815Sopenharmony_ci return jerry_create_undefined (); 8017425bb815Sopenharmony_ci} 8018425bb815Sopenharmony_ci 8019425bb815Sopenharmony_ciint 8020425bb815Sopenharmony_cimain (int argc, char** argv) 8021425bb815Sopenharmony_ci{ 8022425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 8023425bb815Sopenharmony_ci 8024425bb815Sopenharmony_ci /* register C method */ 8025425bb815Sopenharmony_ci jerry_value_t global_obj_val = jerry_get_global_object (); 8026425bb815Sopenharmony_ci jerry_value_t function_val = jerry_create_external_function (demo_handler); 8027425bb815Sopenharmony_ci jerry_value_t function_name_val = jerry_create_string ((const jerry_char_t *) "demo"); 8028425bb815Sopenharmony_ci jerry_value_t result_val = jerry_set_property (global_obj_val, function_name_val, function_val); 8029425bb815Sopenharmony_ci jerry_release_value (result_val); 8030425bb815Sopenharmony_ci jerry_release_value (function_name_val); 8031425bb815Sopenharmony_ci jerry_release_value (function_val); 8032425bb815Sopenharmony_ci jerry_release_value (global_obj_val); 8033425bb815Sopenharmony_ci 8034425bb815Sopenharmony_ci /* Invoke C method via JS */ 8035425bb815Sopenharmony_ci const char *src = "new demo ()"; 8036425bb815Sopenharmony_ci jerry_value_t ret_val = jerry_eval ((const jerry_char_t *) src, 8037425bb815Sopenharmony_ci strlen (src), 8038425bb815Sopenharmony_ci JERRY_PARSE_NO_OPTS); 8039425bb815Sopenharmony_ci 8040425bb815Sopenharmony_ci jerry_release_value (ret_val); 8041425bb815Sopenharmony_ci 8042425bb815Sopenharmony_ci jerry_cleanup (); 8043425bb815Sopenharmony_ci return 0; 8044425bb815Sopenharmony_ci} 8045425bb815Sopenharmony_ci``` 8046425bb815Sopenharmony_ci 8047425bb815Sopenharmony_ci**See also** 8048425bb815Sopenharmony_ci 8049425bb815Sopenharmony_ci- [jerry_construct_object](#jerry_construct_object) 8050425bb815Sopenharmony_ci 8051425bb815Sopenharmony_ci# ArrayBuffer and TypedArray functions 8052425bb815Sopenharmony_ci 8053425bb815Sopenharmony_ciThese APIs all depend on the ES2015-subset profile. 8054425bb815Sopenharmony_ci 8055425bb815Sopenharmony_ci## jerry_get_arraybuffer_byte_length 8056425bb815Sopenharmony_ci 8057425bb815Sopenharmony_ci**Summary** 8058425bb815Sopenharmony_ci 8059425bb815Sopenharmony_ciGet the byte length property of the ArrayBuffer. This is the 8060425bb815Sopenharmony_cisame value which was passed to the ArrayBuffer constructor call. 8061425bb815Sopenharmony_ci 8062425bb815Sopenharmony_ci**Prototype** 8063425bb815Sopenharmony_ci 8064425bb815Sopenharmony_ci```c 8065425bb815Sopenharmony_cijerry_length_t 8066425bb815Sopenharmony_cijerry_get_arraybuffer_byte_length (const jerry_value_t value); 8067425bb815Sopenharmony_ci``` 8068425bb815Sopenharmony_ci 8069425bb815Sopenharmony_ci- `value` - ArrayBuffer object 8070425bb815Sopenharmony_ci- return value 8071425bb815Sopenharmony_ci - size of the ArrayBuffer in bytes 8072425bb815Sopenharmony_ci - 0 if the `value` parameter is not an ArrayBuffer 8073425bb815Sopenharmony_ci 8074425bb815Sopenharmony_ci*New in version 2.0*. 8075425bb815Sopenharmony_ci 8076425bb815Sopenharmony_ci**Example** 8077425bb815Sopenharmony_ci 8078425bb815Sopenharmony_ci```c 8079425bb815Sopenharmony_ci{ 8080425bb815Sopenharmony_ci jerry_value_t buffer = jerry_create_arraybuffer (15); 8081425bb815Sopenharmony_ci jerry_length_t length = jerry_get_arraybuffer_byte_length (buffer); 8082425bb815Sopenharmony_ci // length should be 15 8083425bb815Sopenharmony_ci 8084425bb815Sopenharmony_ci jerry_release_value (buffer); 8085425bb815Sopenharmony_ci} 8086425bb815Sopenharmony_ci``` 8087425bb815Sopenharmony_ci 8088425bb815Sopenharmony_ci**See also** 8089425bb815Sopenharmony_ci- [jerry_create_arraybuffer](#jerry_create_arraybuffer) 8090425bb815Sopenharmony_ci 8091425bb815Sopenharmony_ci 8092425bb815Sopenharmony_ci## jerry_arraybuffer_read 8093425bb815Sopenharmony_ci 8094425bb815Sopenharmony_ci**Summary** 8095425bb815Sopenharmony_ci 8096425bb815Sopenharmony_ciCopy the portion of the ArrayBuffer into a user provided buffer. 8097425bb815Sopenharmony_ciThe start offset of the read operation can be specified. 8098425bb815Sopenharmony_ci 8099425bb815Sopenharmony_ciThe number bytes to be read can be specified via the `buf_size` 8100425bb815Sopenharmony_ciparameter. It is not possible to read more than the length of 8101425bb815Sopenharmony_cithe ArrayBuffer. 8102425bb815Sopenharmony_ci 8103425bb815Sopenharmony_ciFunction returns the number of bytes read from the ArrayBuffer 8104425bb815Sopenharmony_ci(and written to the buffer parameter). This value is 8105425bb815Sopenharmony_cicalculated in the following way: `min(array buffer length - offset, buf_size)`. 8106425bb815Sopenharmony_ci 8107425bb815Sopenharmony_ci**Prototype** 8108425bb815Sopenharmony_ci 8109425bb815Sopenharmony_ci```c 8110425bb815Sopenharmony_cijerry_length_t 8111425bb815Sopenharmony_cijerry_arraybuffer_read (const jerry_value_t value, 8112425bb815Sopenharmony_ci jerry_length_t offset, 8113425bb815Sopenharmony_ci uint8_t *buf_p, 8114425bb815Sopenharmony_ci jerry_length_t buf_size); 8115425bb815Sopenharmony_ci``` 8116425bb815Sopenharmony_ci 8117425bb815Sopenharmony_ci- `value` - ArrayBuffer to read from 8118425bb815Sopenharmony_ci- `offset` - start offset of the read operation 8119425bb815Sopenharmony_ci- `buf_p` - buffer to read the data to 8120425bb815Sopenharmony_ci- `buf_size` - maximum number of bytes to read into the buffer 8121425bb815Sopenharmony_ci- return value 8122425bb815Sopenharmony_ci - number of bytes written into the buffer (read from the ArrayBuffer) 8123425bb815Sopenharmony_ci - 0 if the `value` is not an ArrayBuffer object 8124425bb815Sopenharmony_ci - 0 if the `buf_size` is zero or there is nothing to read 8125425bb815Sopenharmony_ci 8126425bb815Sopenharmony_ci*New in version 2.0*. 8127425bb815Sopenharmony_ci 8128425bb815Sopenharmony_ci**Example** 8129425bb815Sopenharmony_ci 8130425bb815Sopenharmony_ci```c 8131425bb815Sopenharmony_ci{ 8132425bb815Sopenharmony_ci uint8_t data[20]; 8133425bb815Sopenharmony_ci jerry_value_t buffer; 8134425bb815Sopenharmony_ci // ... create the ArrayBuffer or acuiqre it from somewhere. 8135425bb815Sopenharmony_ci 8136425bb815Sopenharmony_ci jerry_value_t bytes_read; 8137425bb815Sopenharmony_ci 8138425bb815Sopenharmony_ci // read 10 bytes from the start of the ArrayBuffer. 8139425bb815Sopenharmony_ci bytes_read = jerry_arraybuffer_read (buffer, 0, data, 10); 8140425bb815Sopenharmony_ci // read the next 10 bytes 8141425bb815Sopenharmony_ci bytes_read += jerry_arraybuffer_read (buffer, bytes_read, data + bytes_read, 10); 8142425bb815Sopenharmony_ci 8143425bb815Sopenharmony_ci // process the data variable 8144425bb815Sopenharmony_ci 8145425bb815Sopenharmony_ci jerry_release_value (buffer); 8146425bb815Sopenharmony_ci} 8147425bb815Sopenharmony_ci``` 8148425bb815Sopenharmony_ci 8149425bb815Sopenharmony_ci**See also** 8150425bb815Sopenharmony_ci 8151425bb815Sopenharmony_ci- [jerry_create_arraybuffer](#jerry_create_arraybuffer) 8152425bb815Sopenharmony_ci- [jerry_arraybuffer_write](#jerry_arraybuffer_write) 8153425bb815Sopenharmony_ci- [jerry_get_arraybuffer_byte_length](#jerry_get_arraybuffer_byte_length) 8154425bb815Sopenharmony_ci 8155425bb815Sopenharmony_ci 8156425bb815Sopenharmony_ci## jerry_arraybuffer_write 8157425bb815Sopenharmony_ci 8158425bb815Sopenharmony_ci**Summary** 8159425bb815Sopenharmony_ci 8160425bb815Sopenharmony_ciCopy the contents of a buffer into the ArrayBuffer. 8161425bb815Sopenharmony_ciThe start offset of the write operation can be specified. 8162425bb815Sopenharmony_ci 8163425bb815Sopenharmony_ciThe number bytes to be written can be specified via the `buf_size` 8164425bb815Sopenharmony_ciparameter. It is not possible to write more than the length of 8165425bb815Sopenharmony_cithe ArrayBuffer. 8166425bb815Sopenharmony_ci 8167425bb815Sopenharmony_ciFunction returns the number of bytes written into the ArrayBuffer 8168425bb815Sopenharmony_ci(and read from the buffer parameter). This value is 8169425bb815Sopenharmony_cicalculated in the following way: `min(array buffer length - offset, buf_size)`. 8170425bb815Sopenharmony_ci 8171425bb815Sopenharmony_ci**Prototype** 8172425bb815Sopenharmony_ci 8173425bb815Sopenharmony_ci```c 8174425bb815Sopenharmony_cijerry_length_t 8175425bb815Sopenharmony_cijerry_arraybuffer_write (const jerry_value_t value, 8176425bb815Sopenharmony_ci jerry_length_t offset, 8177425bb815Sopenharmony_ci const uint8_t *buf_p, 8178425bb815Sopenharmony_ci jerry_length_t buf_size); 8179425bb815Sopenharmony_ci``` 8180425bb815Sopenharmony_ci 8181425bb815Sopenharmony_ci- `value` - ArrayBuffer to write to 8182425bb815Sopenharmony_ci- `offset` - start offset of the write operation 8183425bb815Sopenharmony_ci- `buf_p` - buffer to read the data from 8184425bb815Sopenharmony_ci- `buf_size` - maximum number of bytes to write into the ArrayBuffer 8185425bb815Sopenharmony_ci- return value 8186425bb815Sopenharmony_ci - number of bytes written into the ArrayBuffer (read from the buffer parameter) 8187425bb815Sopenharmony_ci - 0 if the `value` is not an ArrayBuffer object 8188425bb815Sopenharmony_ci - 0 if the `buf_size` is zero or there is nothing to write 8189425bb815Sopenharmony_ci 8190425bb815Sopenharmony_ci*New in version 2.0*. 8191425bb815Sopenharmony_ci 8192425bb815Sopenharmony_ci**Example** 8193425bb815Sopenharmony_ci 8194425bb815Sopenharmony_ci```c 8195425bb815Sopenharmony_ci{ 8196425bb815Sopenharmony_ci uint8_t data[20]; 8197425bb815Sopenharmony_ci 8198425bb815Sopenharmony_ci // fill the data with values 8199425bb815Sopenharmony_ci for (int i = 0; i < 20; i++) 8200425bb815Sopenharmony_ci { 8201425bb815Sopenharmony_ci data[i] = (uint8_t) (i * 2); 8202425bb815Sopenharmony_ci } 8203425bb815Sopenharmony_ci 8204425bb815Sopenharmony_ci jerry_value_t buffer; 8205425bb815Sopenharmony_ci // ... create the ArrayBuffer or acquire it from somewhere. 8206425bb815Sopenharmony_ci 8207425bb815Sopenharmony_ci jerry_value_t bytes_written; 8208425bb815Sopenharmony_ci 8209425bb815Sopenharmony_ci // write 10 bytes from to the start of the ArrayBuffer. 8210425bb815Sopenharmony_ci bytes_written = jerry_arraybuffer_write (buffer, 0, data, 10); 8211425bb815Sopenharmony_ci // read the next 10 bytes 8212425bb815Sopenharmony_ci bytes_written += jerry_arraybuffer_write (buffer, bytes_written, data + bytes_written, 10); 8213425bb815Sopenharmony_ci 8214425bb815Sopenharmony_ci // use the ArrayBuffer 8215425bb815Sopenharmony_ci 8216425bb815Sopenharmony_ci jerry_release_value (buffer); 8217425bb815Sopenharmony_ci} 8218425bb815Sopenharmony_ci``` 8219425bb815Sopenharmony_ci 8220425bb815Sopenharmony_ci**See also** 8221425bb815Sopenharmony_ci 8222425bb815Sopenharmony_ci- [jerry_create_arraybuffer](#jerry_create_arraybuffer) 8223425bb815Sopenharmony_ci- [jerry_arraybuffer_write](#jerry_arraybuffer_write) 8224425bb815Sopenharmony_ci- [jerry_get_arraybuffer_byte_length](#jerry_get_arraybuffer_byte_length) 8225425bb815Sopenharmony_ci 8226425bb815Sopenharmony_ci 8227425bb815Sopenharmony_ci## jerry_get_arraybuffer_pointer 8228425bb815Sopenharmony_ci 8229425bb815Sopenharmony_ci**Summary** 8230425bb815Sopenharmony_ci 8231425bb815Sopenharmony_ciThe function allows access to the contents of the Array Buffer directly. 8232425bb815Sopenharmony_ci 8233425bb815Sopenharmony_ci**WARNING!** This operation is for expert use only! The programmer must 8234425bb815Sopenharmony_ciensure that the returned memory area is used correctly. That is 8235425bb815Sopenharmony_cithere is no out of bounds reads or writes. The lifetime of the underlying 8236425bb815Sopenharmony_cidata buffer is managed by the ArrayBuffer value. Make sure to acquire the 8237425bb815Sopenharmony_civalue with [`jerry_acquire_value`](#jerry_acquire_value) if the data 8238425bb815Sopenharmony_cibuffer is needed later. 8239425bb815Sopenharmony_ci 8240425bb815Sopenharmony_ci**Prototype** 8241425bb815Sopenharmony_ci 8242425bb815Sopenharmony_ci```c 8243425bb815Sopenharmony_ciuint8_t * 8244425bb815Sopenharmony_cijerry_get_arraybuffer_pointer (const jerry_value_t value); 8245425bb815Sopenharmony_ci``` 8246425bb815Sopenharmony_ci 8247425bb815Sopenharmony_ci- `value` - Array Buffer object. 8248425bb815Sopenharmony_ci- return value 8249425bb815Sopenharmony_ci - pointer to the Array Buffer's data area. 8250425bb815Sopenharmony_ci - NULL if the `value` is not an Array Buffer object. 8251425bb815Sopenharmony_ci 8252425bb815Sopenharmony_ci*New in version 2.0*. 8253425bb815Sopenharmony_ci 8254425bb815Sopenharmony_ci**Example** 8255425bb815Sopenharmony_ci 8256425bb815Sopenharmony_ci```c 8257425bb815Sopenharmony_ci{ 8258425bb815Sopenharmony_ci // create the ArrayBuffer 8259425bb815Sopenharmony_ci jerry_value_t buffer = jerry_create_arraybuffer (16); 8260425bb815Sopenharmony_ci 8261425bb815Sopenharmony_ci uint8_t *const data = jerry_get_arraybuffer_pointer (buffer); 8262425bb815Sopenharmony_ci 8263425bb815Sopenharmony_ci for (int i = 0; i < 16; i++) 8264425bb815Sopenharmony_ci { 8265425bb815Sopenharmony_ci data[i] = (uint8_t) (i + 4); 8266425bb815Sopenharmony_ci } 8267425bb815Sopenharmony_ci 8268425bb815Sopenharmony_ci // use the Array Buffer 8269425bb815Sopenharmony_ci 8270425bb815Sopenharmony_ci // release buffer as it is not needed after this point 8271425bb815Sopenharmony_ci jerry_release_value (buffer); 8272425bb815Sopenharmony_ci} 8273425bb815Sopenharmony_ci``` 8274425bb815Sopenharmony_ci 8275425bb815Sopenharmony_ci**See also** 8276425bb815Sopenharmony_ci 8277425bb815Sopenharmony_ci- [jerry_create_arraybuffer_external](#jerry_create_arraybuffer_external) 8278425bb815Sopenharmony_ci 8279425bb815Sopenharmony_ci## jerry_is_arraybuffer_detachable 8280425bb815Sopenharmony_ci 8281425bb815Sopenharmony_ci**Summary** 8282425bb815Sopenharmony_ci 8283425bb815Sopenharmony_ciGet if the ArrayBuffer is detachable. 8284425bb815Sopenharmony_ci 8285425bb815Sopenharmony_ci**Prototype** 8286425bb815Sopenharmony_ci 8287425bb815Sopenharmony_ci```c 8288425bb815Sopenharmony_cijerry_value_t 8289425bb815Sopenharmony_cijerry_is_arraybuffer_detachable (const jerry_value_t value); 8290425bb815Sopenharmony_ci``` 8291425bb815Sopenharmony_ci 8292425bb815Sopenharmony_ci- `value` - ArrayBuffer to be detached 8293425bb815Sopenharmony_ci- return 8294425bb815Sopenharmony_ci - boolean value if success 8295425bb815Sopenharmony_ci - Error otherwise 8296425bb815Sopenharmony_ci 8297425bb815Sopenharmony_ci*New in version 2.2*. 8298425bb815Sopenharmony_ci 8299425bb815Sopenharmony_ci**Example** 8300425bb815Sopenharmony_ci 8301425bb815Sopenharmony_ci```c 8302425bb815Sopenharmony_ci{ 8303425bb815Sopenharmony_ci // create the ArrayBuffer 8304425bb815Sopenharmony_ci jerry_value_t buffer = jerry_create_arraybuffer (16); 8305425bb815Sopenharmony_ci 8306425bb815Sopenharmony_ci jerry_value_t res = jerry_is_arraybuffer_detachable (buffer); 8307425bb815Sopenharmony_ci bool is_detachable = jerry_get_boolean_value (res); 8308425bb815Sopenharmony_ci 8309425bb815Sopenharmony_ci // release buffer as it is not needed after this point 8310425bb815Sopenharmony_ci jerry_release_value (res); 8311425bb815Sopenharmony_ci jerry_release_value (buffer); 8312425bb815Sopenharmony_ci} 8313425bb815Sopenharmony_ci``` 8314425bb815Sopenharmony_ci 8315425bb815Sopenharmony_ci**See also** 8316425bb815Sopenharmony_ci 8317425bb815Sopenharmony_ci- [jerry_detach_arraybuffer](#jerry_detach_arraybuffer) 8318425bb815Sopenharmony_ci 8319425bb815Sopenharmony_ci## jerry_detach_arraybuffer 8320425bb815Sopenharmony_ci 8321425bb815Sopenharmony_ci**Summary** 8322425bb815Sopenharmony_ci 8323425bb815Sopenharmony_ciDetach the underlying data block from ArrayBuffer and set its bytelength to 0. 8324425bb815Sopenharmony_ci 8325425bb815Sopenharmony_ciThis operation requires the ArrayBuffer to be external that created by 8326425bb815Sopenharmony_ci`jerry_create_arraybuffer_external`. 8327425bb815Sopenharmony_ci 8328425bb815Sopenharmony_ci**Prototype** 8329425bb815Sopenharmony_ci 8330425bb815Sopenharmony_ci```c 8331425bb815Sopenharmony_cijerry_value_t 8332425bb815Sopenharmony_cijerry_detach_arraybuffer (const jerry_value_t value); 8333425bb815Sopenharmony_ci``` 8334425bb815Sopenharmony_ci 8335425bb815Sopenharmony_ci- `value` - ArrayBuffer to be detached 8336425bb815Sopenharmony_ci- return 8337425bb815Sopenharmony_ci - null value if success 8338425bb815Sopenharmony_ci - Error otherwise 8339425bb815Sopenharmony_ci 8340425bb815Sopenharmony_ci*New in version 2.2*. 8341425bb815Sopenharmony_ci 8342425bb815Sopenharmony_ci**Example** 8343425bb815Sopenharmony_ci 8344425bb815Sopenharmony_ci```c 8345425bb815Sopenharmony_ci{ 8346425bb815Sopenharmony_ci uint8_t buf[1]; 8347425bb815Sopenharmony_ci jerry_size_t length = 1; 8348425bb815Sopenharmony_ci // create the ArrayBuffer 8349425bb815Sopenharmony_ci jerry_value_t buffer = jerry_create_arraybuffer (length, buf, NULL); 8350425bb815Sopenharmony_ci 8351425bb815Sopenharmony_ci jerry_value_t res = jerry_detach_arraybuffer (buffer); 8352425bb815Sopenharmony_ci 8353425bb815Sopenharmony_ci // release buffer as it is not needed after this point 8354425bb815Sopenharmony_ci jerry_release_value (res); 8355425bb815Sopenharmony_ci jerry_release_value (buffer); 8356425bb815Sopenharmony_ci} 8357425bb815Sopenharmony_ci``` 8358425bb815Sopenharmony_ci 8359425bb815Sopenharmony_ci**See also** 8360425bb815Sopenharmony_ci 8361425bb815Sopenharmony_ci- [jerry_is_arraybuffer_detachable](#jerry_is_arraybuffer_detachable) 8362425bb815Sopenharmony_ci 8363425bb815Sopenharmony_ci## jerry_get_dataview_buffer 8364425bb815Sopenharmony_ci 8365425bb815Sopenharmony_ci**Summary** 8366425bb815Sopenharmony_ci 8367425bb815Sopenharmony_ciGet the ArrayBuffer object used by a DataView object. 8368425bb815Sopenharmony_ciAdditionally returns the byteLength and byteOffset properties 8369425bb815Sopenharmony_ciof the DataView object. 8370425bb815Sopenharmony_ci 8371425bb815Sopenharmony_ciFor the returned ArrayBuffer the [jerry_release_value](#jerry_release_value) 8372425bb815Sopenharmony_cimust be called when it is no longer needed. 8373425bb815Sopenharmony_ci 8374425bb815Sopenharmony_ci**Prototype** 8375425bb815Sopenharmony_ci 8376425bb815Sopenharmony_ci```c 8377425bb815Sopenharmony_cijerry_value_t 8378425bb815Sopenharmony_cijerry_get_dataview_buffer (const jerry_value_t value, 8379425bb815Sopenharmony_ci jerry_length_t *byteOffset, 8380425bb815Sopenharmony_ci jerry_length_t *byteLength); 8381425bb815Sopenharmony_ci``` 8382425bb815Sopenharmony_ci 8383425bb815Sopenharmony_ci- `value` - DataView to get the ArrayBuffer from 8384425bb815Sopenharmony_ci- `byteOffset` - (Optional) returns the start offset of the ArrayBuffer for the DataView 8385425bb815Sopenharmony_ci- `byteLength` - (Optional) returns the number of bytes used from the ArrayBuffer for the DataView 8386425bb815Sopenharmony_ci- return 8387425bb815Sopenharmony_ci - DataView object's underlying ArrayBuffer object 8388425bb815Sopenharmony_ci - TypeError if the `value` is not a DataView object 8389425bb815Sopenharmony_ci 8390425bb815Sopenharmony_ci*New in version 2.0*. 8391425bb815Sopenharmony_ci 8392425bb815Sopenharmony_ci**Example** 8393425bb815Sopenharmony_ci 8394425bb815Sopenharmony_ci[doctest]: # () 8395425bb815Sopenharmony_ci 8396425bb815Sopenharmony_ci```c 8397425bb815Sopenharmony_ci#include "jerryscript.h" 8398425bb815Sopenharmony_ci 8399425bb815Sopenharmony_ciint 8400425bb815Sopenharmony_cimain (void) 8401425bb815Sopenharmony_ci{ 8402425bb815Sopenharmony_ci jerry_init (JERRY_INIT_EMPTY); 8403425bb815Sopenharmony_ci 8404425bb815Sopenharmony_ci jerry_value_t arraybuffer = jerry_create_arraybuffer (16); 8405425bb815Sopenharmony_ci jerry_value_t dataview = jerry_create_dataview (arraybuffer, 0, 16); 8406425bb815Sopenharmony_ci jerry_length_t byteOffset = 0; 8407425bb815Sopenharmony_ci jerry_length_t byteLength = 0; 8408425bb815Sopenharmony_ci jerry_value_t buffer = jerry_get_dataview_buffer (dataview, &byteOffset, &byteLength); 8409425bb815Sopenharmony_ci 8410425bb815Sopenharmony_ci // buffer is an ArrayBuffer object and ArrayBuffer operations can be performed on it 8411425bb815Sopenharmony_ci // byteOffset is 0 8412425bb815Sopenharmony_ci // byteLength is 16 8413425bb815Sopenharmony_ci 8414425bb815Sopenharmony_ci // usage of buffer 8415425bb815Sopenharmony_ci 8416425bb815Sopenharmony_ci jerry_release_value (buffer); 8417425bb815Sopenharmony_ci jerry_release_value (dataview); 8418425bb815Sopenharmony_ci jerry_release_value (arraybuffer); 8419425bb815Sopenharmony_ci 8420425bb815Sopenharmony_ci jerry_cleanup (); 8421425bb815Sopenharmony_ci} 8422425bb815Sopenharmony_ci``` 8423425bb815Sopenharmony_ci 8424425bb815Sopenharmony_ci**See also** 8425425bb815Sopenharmony_ci 8426425bb815Sopenharmony_ci- [jerry_create_dataview](#jerry_create_dataview) 8427425bb815Sopenharmony_ci 8428425bb815Sopenharmony_ci 8429425bb815Sopenharmony_ci## jerry_get_typedarray_type 8430425bb815Sopenharmony_ci 8431425bb815Sopenharmony_ci**Summary** 8432425bb815Sopenharmony_ci 8433425bb815Sopenharmony_ciGet the type of the TypedArray. 8434425bb815Sopenharmony_ci 8435425bb815Sopenharmony_ciThe returned type is one of the [jerry_typedarray_type_t](#jerry_typedarray_type_t) 8436425bb815Sopenharmony_cienum value. 8437425bb815Sopenharmony_ci 8438425bb815Sopenharmony_ci**Prototype** 8439425bb815Sopenharmony_ci 8440425bb815Sopenharmony_ci```c 8441425bb815Sopenharmony_cijerry_typedarray_type_t 8442425bb815Sopenharmony_cijerry_get_typedarray_type (jerry_value_t value); 8443425bb815Sopenharmony_ci``` 8444425bb815Sopenharmony_ci 8445425bb815Sopenharmony_ci- `value` - TypedArray object to query for type. 8446425bb815Sopenharmony_ci- return 8447425bb815Sopenharmony_ci - the type of the TypedArray 8448425bb815Sopenharmony_ci - JERRY_TYPEDARRAY_INVALID if the object was not a TypedArray 8449425bb815Sopenharmony_ci 8450425bb815Sopenharmony_ci*New in version 2.0*. 8451425bb815Sopenharmony_ci 8452425bb815Sopenharmony_ci**Example** 8453425bb815Sopenharmony_ci 8454425bb815Sopenharmony_ci```c 8455425bb815Sopenharmony_ci{ 8456425bb815Sopenharmony_ci jerry_typedarray_type_t expected_type = JERRY_TYPEDARRAY_UINT32; 8457425bb815Sopenharmony_ci jerry_value_t typedarray = jerry_create_typedarray (expected_klass, 25); 8458425bb815Sopenharmony_ci 8459425bb815Sopenharmony_ci jerry_typedarray_type_t type = jerry_get_typedarray_type (typedarray); 8460425bb815Sopenharmony_ci 8461425bb815Sopenharmony_ci // 'type' is now JERRY_TYPEDARRAY_UINT32 8462425bb815Sopenharmony_ci 8463425bb815Sopenharmony_ci jerry_release_value (typedarray); 8464425bb815Sopenharmony_ci} 8465425bb815Sopenharmony_ci``` 8466425bb815Sopenharmony_ci 8467425bb815Sopenharmony_ci**See also** 8468425bb815Sopenharmony_ci 8469425bb815Sopenharmony_ci- [jerry_create_typedarray](#jerry_create_typedarray) 8470425bb815Sopenharmony_ci- [jerry_typedarray_type_t](#jerry_typedarray_type_t) 8471425bb815Sopenharmony_ci 8472425bb815Sopenharmony_ci 8473425bb815Sopenharmony_ci## jerry_get_typedarray_length 8474425bb815Sopenharmony_ci 8475425bb815Sopenharmony_ci**Summary** 8476425bb815Sopenharmony_ci 8477425bb815Sopenharmony_ciGet the element count of the TypedArray as specified during creation. 8478425bb815Sopenharmony_ci 8479425bb815Sopenharmony_ciThis is not the same as the byteLength property of a TypedArray object. 8480425bb815Sopenharmony_ci 8481425bb815Sopenharmony_ci**Prototype** 8482425bb815Sopenharmony_ci 8483425bb815Sopenharmony_ci``` 8484425bb815Sopenharmony_cijerry_length_t 8485425bb815Sopenharmony_cijerry_get_typedarray_length (jerry_value_t value); 8486425bb815Sopenharmony_ci``` 8487425bb815Sopenharmony_ci 8488425bb815Sopenharmony_ci- `value` - TypedArray object to query 8489425bb815Sopenharmony_ci- return 8490425bb815Sopenharmony_ci - length (element count) of the TypedArray object 8491425bb815Sopenharmony_ci - 0 if the object is not a TypedArray 8492425bb815Sopenharmony_ci 8493425bb815Sopenharmony_ci*New in version 2.0*. 8494425bb815Sopenharmony_ci 8495425bb815Sopenharmony_ci**Example** 8496425bb815Sopenharmony_ci 8497425bb815Sopenharmony_ci```c 8498425bb815Sopenharmony_ci{ 8499425bb815Sopenharmony_ci jerry_value_t array = jerry_create_typedarray (JERRY_TYPEDARRAY_INT32, 21); 8500425bb815Sopenharmony_ci 8501425bb815Sopenharmony_ci jerry_length_t element_count = jerry_get_typedarray_length (array); 8502425bb815Sopenharmony_ci 8503425bb815Sopenharmony_ci // element_count is now 21. 8504425bb815Sopenharmony_ci 8505425bb815Sopenharmony_ci jerry_release_value (array); 8506425bb815Sopenharmony_ci} 8507425bb815Sopenharmony_ci``` 8508425bb815Sopenharmony_ci 8509425bb815Sopenharmony_ci**See also** 8510425bb815Sopenharmony_ci 8511425bb815Sopenharmony_ci- [jerry_create_typedarray](#jerry_create_typedarray) 8512425bb815Sopenharmony_ci 8513425bb815Sopenharmony_ci 8514425bb815Sopenharmony_ci## jerry_get_typedarray_buffer 8515425bb815Sopenharmony_ci 8516425bb815Sopenharmony_ci**Summary** 8517425bb815Sopenharmony_ci 8518425bb815Sopenharmony_ciGet the ArrayBuffer object used by a TypedArray object. 8519425bb815Sopenharmony_ciAdditionally returns the byteLength and byteOffset properties 8520425bb815Sopenharmony_ciof the TypedArray object. 8521425bb815Sopenharmony_ci 8522425bb815Sopenharmony_ciFor the returned ArrayBuffer the [jerry_release_value](#jerry_release_value) 8523425bb815Sopenharmony_cimust be called. 8524425bb815Sopenharmony_ci 8525425bb815Sopenharmony_ci*Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value) when it 8526425bb815Sopenharmony_ciis no longer needed. 8527425bb815Sopenharmony_ci 8528425bb815Sopenharmony_ci**Prototype** 8529425bb815Sopenharmony_ci 8530425bb815Sopenharmony_ci```c 8531425bb815Sopenharmony_cijerry_value_t 8532425bb815Sopenharmony_cijerry_get_typedarray_buffer (jerry_value_t value, 8533425bb815Sopenharmony_ci jerry_length_t *byteOffset, 8534425bb815Sopenharmony_ci jerry_length_t *byteLength); 8535425bb815Sopenharmony_ci``` 8536425bb815Sopenharmony_ci 8537425bb815Sopenharmony_ci- `value` - TypedArray to get the ArrayBuffer from 8538425bb815Sopenharmony_ci- `byteOffset` - (Optional) returns the start offset of the ArrayBuffer for the TypedArray 8539425bb815Sopenharmony_ci- `byteLength` - (Optional) returns the number of bytes used from the ArrayBuffer for the TypedArray 8540425bb815Sopenharmony_ci- return 8541425bb815Sopenharmony_ci - TypedArray object's underlying ArrayBuffer object 8542425bb815Sopenharmony_ci - TypeError if the `value` is not a TypedArray object 8543425bb815Sopenharmony_ci 8544425bb815Sopenharmony_ci*New in version 2.0*. 8545425bb815Sopenharmony_ci 8546425bb815Sopenharmony_ci**Example** 8547425bb815Sopenharmony_ci 8548425bb815Sopenharmony_ci```c 8549425bb815Sopenharmony_ci{ 8550425bb815Sopenharmony_ci jerry_value_t array = jerry_create_typedarray (JERRY_TYPEDARRAY_INT16, 11); 8551425bb815Sopenharmony_ci 8552425bb815Sopenharmony_ci jerry_length_t byteLength = 0; 8553425bb815Sopenharmony_ci jerry_length_t byteOffset = 0; 8554425bb815Sopenharmony_ci jerry_value_t buffer = jerry_get_typedarray_buffer (array, &byteOffset, &byteLength); 8555425bb815Sopenharmony_ci 8556425bb815Sopenharmony_ci // buffer is an ArrayBuffer object and ArrayBuffer operations can be performed on it 8557425bb815Sopenharmony_ci // byteLength is 11 * 2 (2 as the TypedArray stores Int16 that is 2 byte elements) 8558425bb815Sopenharmony_ci // byteOffset is 0 8559425bb815Sopenharmony_ci 8560425bb815Sopenharmony_ci jerry_release_value (buffer); 8561425bb815Sopenharmony_ci jerry_release_value (array); 8562425bb815Sopenharmony_ci} 8563425bb815Sopenharmony_ci``` 8564425bb815Sopenharmony_ci 8565425bb815Sopenharmony_ci**See also** 8566425bb815Sopenharmony_ci 8567425bb815Sopenharmony_ci- [jerry_create_typedarray](#jerry_create_typedarray) 8568425bb815Sopenharmony_ci 8569425bb815Sopenharmony_ci# JSON functions 8570425bb815Sopenharmony_ci 8571425bb815Sopenharmony_ci## jerry_json_parse 8572425bb815Sopenharmony_ci 8573425bb815Sopenharmony_ci**Summary** 8574425bb815Sopenharmony_ci 8575425bb815Sopenharmony_ciReturns the same result as `JSON.parse` ecmascript function. 8576425bb815Sopenharmony_ci 8577425bb815Sopenharmony_ci**Prototype** 8578425bb815Sopenharmony_ci 8579425bb815Sopenharmony_ci```c 8580425bb815Sopenharmony_cijerry_value_t 8581425bb815Sopenharmony_cijerry_json_parse (const jerry_char_t *string_p, 8582425bb815Sopenharmony_ci jerry_size_t string_size); 8583425bb815Sopenharmony_ci``` 8584425bb815Sopenharmony_ci 8585425bb815Sopenharmony_ci- `string_p` - a JSON string 8586425bb815Sopenharmony_ci- `string_size` - size of the string 8587425bb815Sopenharmony_ci- return 8588425bb815Sopenharmony_ci - jerry_value_t containing the same as json.parse() 8589425bb815Sopenharmony_ci - jerry_value_t containing error massage 8590425bb815Sopenharmony_ci 8591425bb815Sopenharmony_ci*New in version 2.0*. 8592425bb815Sopenharmony_ci 8593425bb815Sopenharmony_ci**Example** 8594425bb815Sopenharmony_ci 8595425bb815Sopenharmony_ci```c 8596425bb815Sopenharmony_ci{ 8597425bb815Sopenharmony_ci const jerry_char_t data[] = "{\"name\": \"John\", \"age\": 5}"; 8598425bb815Sopenharmony_ci jerry_value_t parsed_json = jerry_json_parse (data, sizeof (data) - 1); 8599425bb815Sopenharmony_ci 8600425bb815Sopenharmony_ci // parsed_json now conatins all data stored in data_in_json 8601425bb815Sopenharmony_ci 8602425bb815Sopenharmony_ci jerry_release_value (parsed_json); 8603425bb815Sopenharmony_ci} 8604425bb815Sopenharmony_ci``` 8605425bb815Sopenharmony_ci 8606425bb815Sopenharmony_ci## jerry_json_stringify 8607425bb815Sopenharmony_ci 8608425bb815Sopenharmony_ci**Summary** 8609425bb815Sopenharmony_ci 8610425bb815Sopenharmony_ciReturns the same value as `JSON.stringify` ecmascript function. 8611425bb815Sopenharmony_ci 8612425bb815Sopenharmony_ci**Prototype** 8613425bb815Sopenharmony_ci 8614425bb815Sopenharmony_ci```c 8615425bb815Sopenharmony_cijerry_value_t 8616425bb815Sopenharmony_cijerry_json_stringify (const jerry_value_t object_to_stringify); 8617425bb815Sopenharmony_ci``` 8618425bb815Sopenharmony_ci 8619425bb815Sopenharmony_ci- `object_to_stringify` - a jerry_value_t object to stringify 8620425bb815Sopenharmony_ci- return 8621425bb815Sopenharmony_ci - jerry_value_t containing the same as json.stringify() 8622425bb815Sopenharmony_ci - jerry_value_t containing error massage 8623425bb815Sopenharmony_ci 8624425bb815Sopenharmony_ci*New in version 2.0*. 8625425bb815Sopenharmony_ci 8626425bb815Sopenharmony_ci**Example** 8627425bb815Sopenharmony_ci 8628425bb815Sopenharmony_ci```c 8629425bb815Sopenharmony_ci{ 8630425bb815Sopenharmony_ci jerry_value_t obj = jerry_create_object (); 8631425bb815Sopenharmony_ci jerry_value_t key = jerry_create_string ((const jerry_char_t *) "name"); 8632425bb815Sopenharmony_ci jerry_value_t value = jerry_create_string ((const jerry_char_t *) "John"); 8633425bb815Sopenharmony_ci jerry_release_value (jerry_set_property (obj, key, value)); 8634425bb815Sopenharmony_ci jerry_value_t stringified = jerry_json_stringify (obj); 8635425bb815Sopenharmony_ci 8636425bb815Sopenharmony_ci //stringified now contains a json formated string 8637425bb815Sopenharmony_ci 8638425bb815Sopenharmony_ci jerry_release_value (obj); 8639425bb815Sopenharmony_ci jerry_release_value (key); 8640425bb815Sopenharmony_ci jerry_release_value (value); 8641425bb815Sopenharmony_ci jerry_release_value (stringified); 8642425bb815Sopenharmony_ci} 8643425bb815Sopenharmony_ci``` 8644