Mercurial > embed
comparison duktape/duktape.h @ 74:7e333d2bc45d
duktape: upgrade to 2.3.0, closes #957
author | David Demelier <markand@malikania.fr> |
---|---|
date | Fri, 16 Nov 2018 12:45:00 +0100 |
parents | 177c7e511bcb |
children |
comparison
equal
deleted
inserted
replaced
73:46012b0dea51 | 74:7e333d2bc45d |
---|---|
1 /* | 1 /* |
2 * Duktape public API for Duktape 2.2.1. | 2 * Duktape public API for Duktape 2.3.0. |
3 * | 3 * |
4 * See the API reference for documentation on call semantics. The exposed, | 4 * See the API reference for documentation on call semantics. The exposed, |
5 * supported API is between the "BEGIN PUBLIC API" and "END PUBLIC API" | 5 * supported API is between the "BEGIN PUBLIC API" and "END PUBLIC API" |
6 * comments. Other parts of the header are Duktape internal and related to | 6 * comments. Other parts of the header are Duktape internal and related to |
7 * e.g. platform/compiler/feature detection. | 7 * e.g. platform/compiler/feature detection. |
8 * | 8 * |
9 * Git commit 25420e773c5fbc50d5b46bf487fc45717e35b94f (v2.2.1). | 9 * Git commit d7fdb67f18561a50e06bafd196c6b423af9ad6fe (v2.3.0). |
10 * Git branch v2.2-maintenance. | 10 * Git branch master. |
11 * | 11 * |
12 * See Duktape AUTHORS.rst and LICENSE.txt for copyright and | 12 * See Duktape AUTHORS.rst and LICENSE.txt for copyright and |
13 * licensing information. | 13 * licensing information. |
14 */ | 14 */ |
15 | 15 |
19 * Duktape license | 19 * Duktape license |
20 * =============== | 20 * =============== |
21 * | 21 * |
22 * (http://opensource.org/licenses/MIT) | 22 * (http://opensource.org/licenses/MIT) |
23 * | 23 * |
24 * Copyright (c) 2013-2017 by Duktape authors (see AUTHORS.rst) | 24 * Copyright (c) 2013-2018 by Duktape authors (see AUTHORS.rst) |
25 * | 25 * |
26 * Permission is hereby granted, free of charge, to any person obtaining a copy | 26 * Permission is hereby granted, free of charge, to any person obtaining a copy |
27 * of this software and associated documentation files (the "Software"), to deal | 27 * of this software and associated documentation files (the "Software"), to deal |
28 * in the Software without restriction, including without limitation the rights | 28 * in the Software without restriction, including without limitation the rights |
29 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | 29 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
90 * * Romero Malaquias (rbsm@ic.ufal.br) | 90 * * Romero Malaquias (rbsm@ic.ufal.br) |
91 * * Michael Drake <michael.drake@codethink.co.uk> | 91 * * Michael Drake <michael.drake@codethink.co.uk> |
92 * * Steven Don (https://github.com/shdon) | 92 * * Steven Don (https://github.com/shdon) |
93 * * Simon Stone (https://github.com/sstone1) | 93 * * Simon Stone (https://github.com/sstone1) |
94 * * \J. McC. (https://github.com/jmhmccr) | 94 * * \J. McC. (https://github.com/jmhmccr) |
95 * * Jakub Nowakowski (https://github.com/jimvonmoon) | |
96 * * Tommy Nguyen (https://github.com/tn0502) | |
97 * * Fabrice Fontaine (https://github.com/ffontaine) | |
98 * * Christopher Hiller (https://github.com/boneskull) | |
99 * * Gonzalo Diethelm (https://github.com/gonzus) | |
100 * * Michal Kasperek (https://github.com/michalkas) | |
101 * * Andrew Janke (https://github.com/apjanke) | |
102 * * Steve Fan (https://github.com/stevefan1999) | |
95 * | 103 * |
96 * Other contributions | 104 * Other contributions |
97 * =================== | 105 * =================== |
98 * | 106 * |
99 * The following people have contributed something other than code (e.g. reported | 107 * The following people have contributed something other than code (e.g. reported |
128 * * https://github.com/sstruchtrup | 136 * * https://github.com/sstruchtrup |
129 * * Michael Drake (https://github.com/tlsa) | 137 * * Michael Drake (https://github.com/tlsa) |
130 * * https://github.com/chris-y | 138 * * https://github.com/chris-y |
131 * * Laurent Zubiaur (https://github.com/lzubiaur) | 139 * * Laurent Zubiaur (https://github.com/lzubiaur) |
132 * * Neil Kolban (https://github.com/nkolban) | 140 * * Neil Kolban (https://github.com/nkolban) |
141 * * Wilhelm Wanecek (https://github.com/wanecek) | |
142 * * Andrew Janke (https://github.com/apjanke) | |
133 * | 143 * |
134 * If you are accidentally missing from this list, send me an e-mail | 144 * If you are accidentally missing from this list, send me an e-mail |
135 * (``sami.vaarala@iki.fi``) and I'll fix the omission. | 145 * (``sami.vaarala@iki.fi``) and I'll fix the omission. |
136 */ | 146 */ |
137 | 147 |
148 * Version and Git commit identification | 158 * Version and Git commit identification |
149 */ | 159 */ |
150 | 160 |
151 /* Duktape version, (major * 10000) + (minor * 100) + patch. Allows C code | 161 /* Duktape version, (major * 10000) + (minor * 100) + patch. Allows C code |
152 * to #if (DUK_VERSION >= NNN) against Duktape API version. The same value | 162 * to #if (DUK_VERSION >= NNN) against Duktape API version. The same value |
153 * is also available to Ecmascript code in Duktape.version. Unofficial | 163 * is also available to ECMAScript code in Duktape.version. Unofficial |
154 * development snapshots have 99 for patch level (e.g. 0.10.99 would be a | 164 * development snapshots have 99 for patch level (e.g. 0.10.99 would be a |
155 * development version after 0.10.0 but before the next official release). | 165 * development version after 0.10.0 but before the next official release). |
156 */ | 166 */ |
157 #define DUK_VERSION 20201L | 167 #define DUK_VERSION 20300L |
158 | 168 |
159 /* Git commit, describe, and branch for Duktape build. Useful for | 169 /* Git commit, describe, and branch for Duktape build. Useful for |
160 * non-official snapshot builds so that application code can easily log | 170 * non-official snapshot builds so that application code can easily log |
161 * which Duktape snapshot was used. Not available in the Ecmascript | 171 * which Duktape snapshot was used. Not available in the ECMAScript |
162 * environment. | 172 * environment. |
163 */ | 173 */ |
164 #define DUK_GIT_COMMIT "25420e773c5fbc50d5b46bf487fc45717e35b94f" | 174 #define DUK_GIT_COMMIT "d7fdb67f18561a50e06bafd196c6b423af9ad6fe" |
165 #define DUK_GIT_DESCRIBE "v2.2.1" | 175 #define DUK_GIT_DESCRIBE "v2.3.0" |
166 #define DUK_GIT_BRANCH "v2.2-maintenance" | 176 #define DUK_GIT_BRANCH "master" |
167 | 177 |
168 /* External duk_config.h provides platform/compiler/OS dependent | 178 /* External duk_config.h provides platform/compiler/OS dependent |
169 * typedefs and macros, and DUK_USE_xxx config options so that | 179 * typedefs and macros, and DUK_USE_xxx config options so that |
170 * the rest of Duktape doesn't need to do any feature detection. | 180 * the rest of Duktape doesn't need to do any feature detection. |
171 * DUK_VERSION is defined before including so that configuration | 181 * DUK_VERSION is defined before including so that configuration |
256 const char *key; | 266 const char *key; |
257 duk_double_t value; | 267 duk_double_t value; |
258 }; | 268 }; |
259 | 269 |
260 struct duk_time_components { | 270 struct duk_time_components { |
261 duk_double_t year; /* year, e.g. 2016, Ecmascript year range */ | 271 duk_double_t year; /* year, e.g. 2016, ECMAScript year range */ |
262 duk_double_t month; /* month: 1-12 */ | 272 duk_double_t month; /* month: 1-12 */ |
263 duk_double_t day; /* day: 1-31 */ | 273 duk_double_t day; /* day: 1-31 */ |
264 duk_double_t hours; /* hour: 0-59 */ | 274 duk_double_t hours; /* hour: 0-59 */ |
265 duk_double_t minutes; /* minute: 0-59 */ | 275 duk_double_t minutes; /* minute: 0-59 */ |
266 duk_double_t seconds; /* second: 0-59 (in POSIX time no leap second) */ | 276 duk_double_t seconds; /* second: 0-59 (in POSIX time no leap second) */ |
292 #define DUK_API_ENTRY_STACK 64U | 302 #define DUK_API_ENTRY_STACK 64U |
293 | 303 |
294 /* Value types, used by e.g. duk_get_type() */ | 304 /* Value types, used by e.g. duk_get_type() */ |
295 #define DUK_TYPE_MIN 0U | 305 #define DUK_TYPE_MIN 0U |
296 #define DUK_TYPE_NONE 0U /* no value, e.g. invalid index */ | 306 #define DUK_TYPE_NONE 0U /* no value, e.g. invalid index */ |
297 #define DUK_TYPE_UNDEFINED 1U /* Ecmascript undefined */ | 307 #define DUK_TYPE_UNDEFINED 1U /* ECMAScript undefined */ |
298 #define DUK_TYPE_NULL 2U /* Ecmascript null */ | 308 #define DUK_TYPE_NULL 2U /* ECMAScript null */ |
299 #define DUK_TYPE_BOOLEAN 3U /* Ecmascript boolean: 0 or 1 */ | 309 #define DUK_TYPE_BOOLEAN 3U /* ECMAScript boolean: 0 or 1 */ |
300 #define DUK_TYPE_NUMBER 4U /* Ecmascript number: double */ | 310 #define DUK_TYPE_NUMBER 4U /* ECMAScript number: double */ |
301 #define DUK_TYPE_STRING 5U /* Ecmascript string: CESU-8 / extended UTF-8 encoded */ | 311 #define DUK_TYPE_STRING 5U /* ECMAScript string: CESU-8 / extended UTF-8 encoded */ |
302 #define DUK_TYPE_OBJECT 6U /* Ecmascript object: includes objects, arrays, functions, threads */ | 312 #define DUK_TYPE_OBJECT 6U /* ECMAScript object: includes objects, arrays, functions, threads */ |
303 #define DUK_TYPE_BUFFER 7U /* fixed or dynamic, garbage collected byte buffer */ | 313 #define DUK_TYPE_BUFFER 7U /* fixed or dynamic, garbage collected byte buffer */ |
304 #define DUK_TYPE_POINTER 8U /* raw void pointer */ | 314 #define DUK_TYPE_POINTER 8U /* raw void pointer */ |
305 #define DUK_TYPE_LIGHTFUNC 9U /* lightweight function pointer */ | 315 #define DUK_TYPE_LIGHTFUNC 9U /* lightweight function pointer */ |
306 #define DUK_TYPE_MAX 9U | 316 #define DUK_TYPE_MAX 9U |
307 | 317 |
666 DUK_EXTERNAL_DECL const char *duk_push_lstring(duk_context *ctx, const char *str, duk_size_t len); | 676 DUK_EXTERNAL_DECL const char *duk_push_lstring(duk_context *ctx, const char *str, duk_size_t len); |
667 DUK_EXTERNAL_DECL void duk_push_pointer(duk_context *ctx, void *p); | 677 DUK_EXTERNAL_DECL void duk_push_pointer(duk_context *ctx, void *p); |
668 DUK_EXTERNAL_DECL const char *duk_push_sprintf(duk_context *ctx, const char *fmt, ...); | 678 DUK_EXTERNAL_DECL const char *duk_push_sprintf(duk_context *ctx, const char *fmt, ...); |
669 DUK_EXTERNAL_DECL const char *duk_push_vsprintf(duk_context *ctx, const char *fmt, va_list ap); | 679 DUK_EXTERNAL_DECL const char *duk_push_vsprintf(duk_context *ctx, const char *fmt, va_list ap); |
670 | 680 |
681 /* duk_push_literal() may evaluate its argument (a C string literal) more than | |
682 * once on purpose. When speed is preferred, sizeof() avoids an unnecessary | |
683 * strlen() at runtime. Sizeof("foo") == 4, so subtract 1. The argument | |
684 * must be non-NULL and should not contain internal NUL characters as the | |
685 * behavior will then depend on config options. | |
686 */ | |
687 #if defined(DUK_USE_PREFER_SIZE) | |
688 #define duk_push_literal(ctx,cstring) duk_push_string((ctx), (cstring)) | |
689 #else | |
690 DUK_EXTERNAL_DECL const char *duk_push_literal_raw(duk_context *ctx, const char *str, duk_size_t len); | |
691 #define duk_push_literal(ctx,cstring) duk_push_literal_raw((ctx), (cstring), sizeof((cstring)) - 1U) | |
692 #endif | |
693 | |
671 DUK_EXTERNAL_DECL void duk_push_this(duk_context *ctx); | 694 DUK_EXTERNAL_DECL void duk_push_this(duk_context *ctx); |
695 DUK_EXTERNAL_DECL void duk_push_new_target(duk_context *ctx); | |
672 DUK_EXTERNAL_DECL void duk_push_current_function(duk_context *ctx); | 696 DUK_EXTERNAL_DECL void duk_push_current_function(duk_context *ctx); |
673 DUK_EXTERNAL_DECL void duk_push_current_thread(duk_context *ctx); | 697 DUK_EXTERNAL_DECL void duk_push_current_thread(duk_context *ctx); |
674 DUK_EXTERNAL_DECL void duk_push_global_object(duk_context *ctx); | 698 DUK_EXTERNAL_DECL void duk_push_global_object(duk_context *ctx); |
675 DUK_EXTERNAL_DECL void duk_push_heap_stash(duk_context *ctx); | 699 DUK_EXTERNAL_DECL void duk_push_heap_stash(duk_context *ctx); |
676 DUK_EXTERNAL_DECL void duk_push_global_stash(duk_context *ctx); | 700 DUK_EXTERNAL_DECL void duk_push_global_stash(duk_context *ctx); |
998 DUK_EXTERNAL_DECL void duk_config_buffer(duk_context *ctx, duk_idx_t idx, void *ptr, duk_size_t len); | 1022 DUK_EXTERNAL_DECL void duk_config_buffer(duk_context *ctx, duk_idx_t idx, void *ptr, duk_size_t len); |
999 | 1023 |
1000 /* | 1024 /* |
1001 * Property access | 1025 * Property access |
1002 * | 1026 * |
1003 * The basic function assumes key is on stack. The _string variant takes | 1027 * The basic function assumes key is on stack. The _(l)string variant takes |
1004 * a C string as a property name, while the _index variant takes an array | 1028 * a C string as a property name; the _literal variant takes a C literal. |
1005 * index as a property name (e.g. 123 is equivalent to the key "123"). | 1029 * The _index variant takes an array index as a property name (e.g. 123 is |
1030 * equivalent to the key "123"). The _heapptr variant takes a raw, borrowed | |
1031 * heap pointer. | |
1006 */ | 1032 */ |
1007 | 1033 |
1008 DUK_EXTERNAL_DECL duk_bool_t duk_get_prop(duk_context *ctx, duk_idx_t obj_idx); | 1034 DUK_EXTERNAL_DECL duk_bool_t duk_get_prop(duk_context *ctx, duk_idx_t obj_idx); |
1009 DUK_EXTERNAL_DECL duk_bool_t duk_get_prop_string(duk_context *ctx, duk_idx_t obj_idx, const char *key); | 1035 DUK_EXTERNAL_DECL duk_bool_t duk_get_prop_string(duk_context *ctx, duk_idx_t obj_idx, const char *key); |
1010 DUK_EXTERNAL_DECL duk_bool_t duk_get_prop_lstring(duk_context *ctx, duk_idx_t obj_idx, const char *key, duk_size_t key_len); | 1036 DUK_EXTERNAL_DECL duk_bool_t duk_get_prop_lstring(duk_context *ctx, duk_idx_t obj_idx, const char *key, duk_size_t key_len); |
1037 #if defined(DUK_USE_PREFER_SIZE) | |
1038 #define duk_get_prop_literal(ctx,obj_idx,key) duk_get_prop_string((ctx), (obj_idx), (key)) | |
1039 #else | |
1040 DUK_EXTERNAL_DECL duk_bool_t duk_get_prop_literal_raw(duk_context *ctx, duk_idx_t obj_idx, const char *key, duk_size_t key_len); | |
1041 #define duk_get_prop_literal(ctx,obj_idx,key) duk_get_prop_literal_raw((ctx), (obj_idx), (key), sizeof((key)) - 1U) | |
1042 #endif | |
1011 DUK_EXTERNAL_DECL duk_bool_t duk_get_prop_index(duk_context *ctx, duk_idx_t obj_idx, duk_uarridx_t arr_idx); | 1043 DUK_EXTERNAL_DECL duk_bool_t duk_get_prop_index(duk_context *ctx, duk_idx_t obj_idx, duk_uarridx_t arr_idx); |
1012 DUK_EXTERNAL_DECL duk_bool_t duk_get_prop_heapptr(duk_context *ctx, duk_idx_t obj_idx, void *ptr); | 1044 DUK_EXTERNAL_DECL duk_bool_t duk_get_prop_heapptr(duk_context *ctx, duk_idx_t obj_idx, void *ptr); |
1013 DUK_EXTERNAL_DECL duk_bool_t duk_put_prop(duk_context *ctx, duk_idx_t obj_idx); | 1045 DUK_EXTERNAL_DECL duk_bool_t duk_put_prop(duk_context *ctx, duk_idx_t obj_idx); |
1014 DUK_EXTERNAL_DECL duk_bool_t duk_put_prop_string(duk_context *ctx, duk_idx_t obj_idx, const char *key); | 1046 DUK_EXTERNAL_DECL duk_bool_t duk_put_prop_string(duk_context *ctx, duk_idx_t obj_idx, const char *key); |
1015 DUK_EXTERNAL_DECL duk_bool_t duk_put_prop_lstring(duk_context *ctx, duk_idx_t obj_idx, const char *key, duk_size_t key_len); | 1047 DUK_EXTERNAL_DECL duk_bool_t duk_put_prop_lstring(duk_context *ctx, duk_idx_t obj_idx, const char *key, duk_size_t key_len); |
1048 #if defined(DUK_USE_PREFER_SIZE) | |
1049 #define duk_put_prop_literal(ctx,obj_idx,key) duk_put_prop_string((ctx), (obj_idx), (key)) | |
1050 #else | |
1051 DUK_EXTERNAL_DECL duk_bool_t duk_put_prop_literal_raw(duk_context *ctx, duk_idx_t obj_idx, const char *key, duk_size_t key_len); | |
1052 #define duk_put_prop_literal(ctx,obj_idx,key) duk_put_prop_literal_raw((ctx), (obj_idx), (key), sizeof((key)) - 1U) | |
1053 #endif | |
1016 DUK_EXTERNAL_DECL duk_bool_t duk_put_prop_index(duk_context *ctx, duk_idx_t obj_idx, duk_uarridx_t arr_idx); | 1054 DUK_EXTERNAL_DECL duk_bool_t duk_put_prop_index(duk_context *ctx, duk_idx_t obj_idx, duk_uarridx_t arr_idx); |
1017 DUK_EXTERNAL_DECL duk_bool_t duk_put_prop_heapptr(duk_context *ctx, duk_idx_t obj_idx, void *ptr); | 1055 DUK_EXTERNAL_DECL duk_bool_t duk_put_prop_heapptr(duk_context *ctx, duk_idx_t obj_idx, void *ptr); |
1018 DUK_EXTERNAL_DECL duk_bool_t duk_del_prop(duk_context *ctx, duk_idx_t obj_idx); | 1056 DUK_EXTERNAL_DECL duk_bool_t duk_del_prop(duk_context *ctx, duk_idx_t obj_idx); |
1019 DUK_EXTERNAL_DECL duk_bool_t duk_del_prop_string(duk_context *ctx, duk_idx_t obj_idx, const char *key); | 1057 DUK_EXTERNAL_DECL duk_bool_t duk_del_prop_string(duk_context *ctx, duk_idx_t obj_idx, const char *key); |
1020 DUK_EXTERNAL_DECL duk_bool_t duk_del_prop_lstring(duk_context *ctx, duk_idx_t obj_idx, const char *key, duk_size_t key_len); | 1058 DUK_EXTERNAL_DECL duk_bool_t duk_del_prop_lstring(duk_context *ctx, duk_idx_t obj_idx, const char *key, duk_size_t key_len); |
1059 #if defined(DUK_USE_PREFER_SIZE) | |
1060 #define duk_del_prop_literal(ctx,obj_idx,key) duk_del_prop_string((ctx), (obj_idx), (key)) | |
1061 #else | |
1062 DUK_EXTERNAL_DECL duk_bool_t duk_del_prop_literal_raw(duk_context *ctx, duk_idx_t obj_idx, const char *key, duk_size_t key_len); | |
1063 #define duk_del_prop_literal(ctx,obj_idx,key) duk_del_prop_literal_raw((ctx), (obj_idx), (key), sizeof((key)) - 1U) | |
1064 #endif | |
1021 DUK_EXTERNAL_DECL duk_bool_t duk_del_prop_index(duk_context *ctx, duk_idx_t obj_idx, duk_uarridx_t arr_idx); | 1065 DUK_EXTERNAL_DECL duk_bool_t duk_del_prop_index(duk_context *ctx, duk_idx_t obj_idx, duk_uarridx_t arr_idx); |
1022 DUK_EXTERNAL_DECL duk_bool_t duk_del_prop_heapptr(duk_context *ctx, duk_idx_t obj_idx, void *ptr); | 1066 DUK_EXTERNAL_DECL duk_bool_t duk_del_prop_heapptr(duk_context *ctx, duk_idx_t obj_idx, void *ptr); |
1023 DUK_EXTERNAL_DECL duk_bool_t duk_has_prop(duk_context *ctx, duk_idx_t obj_idx); | 1067 DUK_EXTERNAL_DECL duk_bool_t duk_has_prop(duk_context *ctx, duk_idx_t obj_idx); |
1024 DUK_EXTERNAL_DECL duk_bool_t duk_has_prop_string(duk_context *ctx, duk_idx_t obj_idx, const char *key); | 1068 DUK_EXTERNAL_DECL duk_bool_t duk_has_prop_string(duk_context *ctx, duk_idx_t obj_idx, const char *key); |
1025 DUK_EXTERNAL_DECL duk_bool_t duk_has_prop_lstring(duk_context *ctx, duk_idx_t obj_idx, const char *key, duk_size_t key_len); | 1069 DUK_EXTERNAL_DECL duk_bool_t duk_has_prop_lstring(duk_context *ctx, duk_idx_t obj_idx, const char *key, duk_size_t key_len); |
1070 #if defined(DUK_USE_PREFER_SIZE) | |
1071 #define duk_has_prop_literal(ctx,obj_idx,key) duk_has_prop_string((ctx), (obj_idx), (key)) | |
1072 #else | |
1073 DUK_EXTERNAL_DECL duk_bool_t duk_has_prop_literal_raw(duk_context *ctx, duk_idx_t obj_idx, const char *key, duk_size_t key_len); | |
1074 #define duk_has_prop_literal(ctx,obj_idx,key) duk_has_prop_literal_raw((ctx), (obj_idx), (key), sizeof((key)) - 1U) | |
1075 #endif | |
1026 DUK_EXTERNAL_DECL duk_bool_t duk_has_prop_index(duk_context *ctx, duk_idx_t obj_idx, duk_uarridx_t arr_idx); | 1076 DUK_EXTERNAL_DECL duk_bool_t duk_has_prop_index(duk_context *ctx, duk_idx_t obj_idx, duk_uarridx_t arr_idx); |
1027 DUK_EXTERNAL_DECL duk_bool_t duk_has_prop_heapptr(duk_context *ctx, duk_idx_t obj_idx, void *ptr); | 1077 DUK_EXTERNAL_DECL duk_bool_t duk_has_prop_heapptr(duk_context *ctx, duk_idx_t obj_idx, void *ptr); |
1028 | 1078 |
1029 DUK_EXTERNAL_DECL void duk_get_prop_desc(duk_context *ctx, duk_idx_t obj_idx, duk_uint_t flags); | 1079 DUK_EXTERNAL_DECL void duk_get_prop_desc(duk_context *ctx, duk_idx_t obj_idx, duk_uint_t flags); |
1030 DUK_EXTERNAL_DECL void duk_def_prop(duk_context *ctx, duk_idx_t obj_idx, duk_uint_t flags); | 1080 DUK_EXTERNAL_DECL void duk_def_prop(duk_context *ctx, duk_idx_t obj_idx, duk_uint_t flags); |
1031 | 1081 |
1032 DUK_EXTERNAL_DECL duk_bool_t duk_get_global_string(duk_context *ctx, const char *key); | 1082 DUK_EXTERNAL_DECL duk_bool_t duk_get_global_string(duk_context *ctx, const char *key); |
1033 DUK_EXTERNAL_DECL duk_bool_t duk_get_global_lstring(duk_context *ctx, const char *key, duk_size_t key_len); | 1083 DUK_EXTERNAL_DECL duk_bool_t duk_get_global_lstring(duk_context *ctx, const char *key, duk_size_t key_len); |
1084 #if defined(DUK_USE_PREFER_SIZE) | |
1085 #define duk_get_global_literal(ctx,key) duk_get_global_string((ctx), (key)) | |
1086 #else | |
1087 DUK_EXTERNAL_DECL duk_bool_t duk_get_global_literal_raw(duk_context *ctx, const char *key, duk_size_t key_len); | |
1088 #define duk_get_global_literal(ctx,key) duk_get_global_literal_raw((ctx), (key), sizeof((key)) - 1U) | |
1089 #endif | |
1090 DUK_EXTERNAL_DECL duk_bool_t duk_get_global_heapptr(duk_context *ctx, void *ptr); | |
1034 DUK_EXTERNAL_DECL duk_bool_t duk_put_global_string(duk_context *ctx, const char *key); | 1091 DUK_EXTERNAL_DECL duk_bool_t duk_put_global_string(duk_context *ctx, const char *key); |
1035 DUK_EXTERNAL_DECL duk_bool_t duk_put_global_lstring(duk_context *ctx, const char *key, duk_size_t key_len); | 1092 DUK_EXTERNAL_DECL duk_bool_t duk_put_global_lstring(duk_context *ctx, const char *key, duk_size_t key_len); |
1093 #if defined(DUK_USE_PREFER_SIZE) | |
1094 #define duk_put_global_literal(ctx,key) duk_put_global_string((ctx), (key)) | |
1095 #else | |
1096 DUK_EXTERNAL_DECL duk_bool_t duk_put_global_literal_raw(duk_context *ctx, const char *key, duk_size_t key_len); | |
1097 #define duk_put_global_literal(ctx,key) duk_put_global_literal_raw((ctx), (key), sizeof((key)) - 1U) | |
1098 #endif | |
1099 DUK_EXTERNAL_DECL duk_bool_t duk_put_global_heapptr(duk_context *ctx, void *ptr); | |
1036 | 1100 |
1037 /* | 1101 /* |
1038 * Inspection | 1102 * Inspection |
1039 */ | 1103 */ |
1040 | 1104 |
1097 DUK_EXTERNAL_DECL void duk_substring(duk_context *ctx, duk_idx_t idx, duk_size_t start_char_offset, duk_size_t end_char_offset); | 1161 DUK_EXTERNAL_DECL void duk_substring(duk_context *ctx, duk_idx_t idx, duk_size_t start_char_offset, duk_size_t end_char_offset); |
1098 DUK_EXTERNAL_DECL void duk_trim(duk_context *ctx, duk_idx_t idx); | 1162 DUK_EXTERNAL_DECL void duk_trim(duk_context *ctx, duk_idx_t idx); |
1099 DUK_EXTERNAL_DECL duk_codepoint_t duk_char_code_at(duk_context *ctx, duk_idx_t idx, duk_size_t char_offset); | 1163 DUK_EXTERNAL_DECL duk_codepoint_t duk_char_code_at(duk_context *ctx, duk_idx_t idx, duk_size_t char_offset); |
1100 | 1164 |
1101 /* | 1165 /* |
1102 * Ecmascript operators | 1166 * ECMAScript operators |
1103 */ | 1167 */ |
1104 | 1168 |
1105 DUK_EXTERNAL_DECL duk_bool_t duk_equals(duk_context *ctx, duk_idx_t idx1, duk_idx_t idx2); | 1169 DUK_EXTERNAL_DECL duk_bool_t duk_equals(duk_context *ctx, duk_idx_t idx1, duk_idx_t idx2); |
1106 DUK_EXTERNAL_DECL duk_bool_t duk_strict_equals(duk_context *ctx, duk_idx_t idx1, duk_idx_t idx2); | 1170 DUK_EXTERNAL_DECL duk_bool_t duk_strict_equals(duk_context *ctx, duk_idx_t idx1, duk_idx_t idx2); |
1107 DUK_EXTERNAL_DECL duk_bool_t duk_samevalue(duk_context *ctx, duk_idx_t idx1, duk_idx_t idx2); | 1171 DUK_EXTERNAL_DECL duk_bool_t duk_samevalue(duk_context *ctx, duk_idx_t idx1, duk_idx_t idx2); |
1108 DUK_EXTERNAL_DECL duk_bool_t duk_instanceof(duk_context *ctx, duk_idx_t idx1, duk_idx_t idx2); | 1172 DUK_EXTERNAL_DECL duk_bool_t duk_instanceof(duk_context *ctx, duk_idx_t idx1, duk_idx_t idx2); |
1173 | |
1174 /* | |
1175 * Random | |
1176 */ | |
1177 | |
1178 DUK_EXTERNAL_DECL duk_double_t duk_random(duk_context *ctx); | |
1109 | 1179 |
1110 /* | 1180 /* |
1111 * Function (method) calls | 1181 * Function (method) calls |
1112 */ | 1182 */ |
1113 | 1183 |
1255 #define DUK_DATE_MSEC_SECOND 1000L | 1325 #define DUK_DATE_MSEC_SECOND 1000L |
1256 #define DUK_DATE_MSEC_MINUTE (60L * 1000L) | 1326 #define DUK_DATE_MSEC_MINUTE (60L * 1000L) |
1257 #define DUK_DATE_MSEC_HOUR (60L * 60L * 1000L) | 1327 #define DUK_DATE_MSEC_HOUR (60L * 60L * 1000L) |
1258 #define DUK_DATE_MSEC_DAY (24L * 60L * 60L * 1000L) | 1328 #define DUK_DATE_MSEC_DAY (24L * 60L * 60L * 1000L) |
1259 | 1329 |
1260 /* Ecmascript date range is 100 million days from Epoch: | 1330 /* ECMAScript date range is 100 million days from Epoch: |
1261 * > 100e6 * 24 * 60 * 60 * 1000 // 100M days in millisecs | 1331 * > 100e6 * 24 * 60 * 60 * 1000 // 100M days in millisecs |
1262 * 8640000000000000 | 1332 * 8640000000000000 |
1263 * (= 8.64e15) | 1333 * (= 8.64e15) |
1264 */ | 1334 */ |
1265 #define DUK_DATE_MSEC_100M_DAYS (8.64e15) | 1335 #define DUK_DATE_MSEC_100M_DAYS (8.64e15) |
1266 #define DUK_DATE_MSEC_100M_DAYS_LEEWAY (8.64e15 + 24 * 3600e3) | 1336 #define DUK_DATE_MSEC_100M_DAYS_LEEWAY (8.64e15 + 24 * 3600e3) |
1267 | 1337 |
1268 /* Ecmascript year range: | 1338 /* ECMAScript year range: |
1269 * > new Date(100e6 * 24 * 3600e3).toISOString() | 1339 * > new Date(100e6 * 24 * 3600e3).toISOString() |
1270 * '+275760-09-13T00:00:00.000Z' | 1340 * '+275760-09-13T00:00:00.000Z' |
1271 * > new Date(-100e6 * 24 * 3600e3).toISOString() | 1341 * > new Date(-100e6 * 24 * 3600e3).toISOString() |
1272 * '-271821-04-20T00:00:00.000Z' | 1342 * '-271821-04-20T00:00:00.000Z' |
1273 */ | 1343 */ |
1274 #define DUK_DATE_MIN_ECMA_YEAR (-271821L) | 1344 #define DUK_DATE_MIN_ECMA_YEAR (-271821L) |
1275 #define DUK_DATE_MAX_ECMA_YEAR 275760L | 1345 #define DUK_DATE_MAX_ECMA_YEAR 275760L |
1276 | 1346 |
1277 /* Part indices for internal breakdowns. Part order from DUK_DATE_IDX_YEAR | 1347 /* Part indices for internal breakdowns. Part order from DUK_DATE_IDX_YEAR |
1278 * to DUK_DATE_IDX_MILLISECOND matches argument ordering of Ecmascript API | 1348 * to DUK_DATE_IDX_MILLISECOND matches argument ordering of ECMAScript API |
1279 * calls (like Date constructor call). Some functions in duk_bi_date.c | 1349 * calls (like Date constructor call). Some functions in duk_bi_date.c |
1280 * depend on the specific ordering, so change with care. 16 bits are not | 1350 * depend on the specific ordering, so change with care. 16 bits are not |
1281 * enough for all parts (year, specifically). | 1351 * enough for all parts (year, specifically). |
1282 * | 1352 * |
1283 * Must be in-sync with genbuiltins.py. | 1353 * Must be in-sync with genbuiltins.py. |