121#ifndef DUKTAPE_H_INCLUDED
122#define DUKTAPE_H_INCLUDED
124#define DUK_SINGLE_FILE
136#ifndef DUK_API_PUBLIC_H_INCLUDED
137#define DUK_API_PUBLIC_H_INCLUDED
151#undef DUK_API_VARIADIC_MACROS
152#ifdef DUK_USE_VARIADIC_MACROS
153#define DUK_API_VARIADIC_MACROS
156#define DUK_API_NORETURN(decl) DUK_NORETURN(decl)
178typedef void *(*duk_alloc_function) (
void *udata,
duk_size_t size);
179typedef void *(*duk_realloc_function) (
void *udata,
void *ptr,
duk_size_t size);
221#define DUK_VERSION 10502L
228#define DUK_GIT_COMMIT "cad34ae155acb0846545ca6bf2d29f9463b22bbb"
229#define DUK_GIT_DESCRIBE "v1.5.2"
230#define DUK_GIT_BRANCH "HEAD"
233#define DUK_DEBUG_PROTOCOL_VERSION 1
239#define DUK_INVALID_INDEX DUK_IDX_MIN
244#define DUK_VARARGS ((duk_int_t) (-1))
249#define DUK_API_ENTRY_STACK 64
252#define DUK_TYPE_MIN 0
253#define DUK_TYPE_NONE 0
254#define DUK_TYPE_UNDEFINED 1
255#define DUK_TYPE_NULL 2
256#define DUK_TYPE_BOOLEAN 3
257#define DUK_TYPE_NUMBER 4
258#define DUK_TYPE_STRING 5
259#define DUK_TYPE_OBJECT 6
260#define DUK_TYPE_BUFFER 7
261#define DUK_TYPE_POINTER 8
262#define DUK_TYPE_LIGHTFUNC 9
263#define DUK_TYPE_MAX 9
266#define DUK_TYPE_MASK_NONE (1 << DUK_TYPE_NONE)
267#define DUK_TYPE_MASK_UNDEFINED (1 << DUK_TYPE_UNDEFINED)
268#define DUK_TYPE_MASK_NULL (1 << DUK_TYPE_NULL)
269#define DUK_TYPE_MASK_BOOLEAN (1 << DUK_TYPE_BOOLEAN)
270#define DUK_TYPE_MASK_NUMBER (1 << DUK_TYPE_NUMBER)
271#define DUK_TYPE_MASK_STRING (1 << DUK_TYPE_STRING)
272#define DUK_TYPE_MASK_OBJECT (1 << DUK_TYPE_OBJECT)
273#define DUK_TYPE_MASK_BUFFER (1 << DUK_TYPE_BUFFER)
274#define DUK_TYPE_MASK_POINTER (1 << DUK_TYPE_POINTER)
275#define DUK_TYPE_MASK_LIGHTFUNC (1 << DUK_TYPE_LIGHTFUNC)
276#define DUK_TYPE_MASK_THROW (1 << 10)
279#define DUK_HINT_NONE 0
282#define DUK_HINT_STRING 1
283#define DUK_HINT_NUMBER 2
286#define DUK_ENUM_INCLUDE_NONENUMERABLE (1 << 0)
287#define DUK_ENUM_INCLUDE_INTERNAL (1 << 1)
288#define DUK_ENUM_OWN_PROPERTIES_ONLY (1 << 2)
289#define DUK_ENUM_ARRAY_INDICES_ONLY (1 << 3)
290#define DUK_ENUM_SORT_ARRAY_INDICES (1 << 4)
291#define DUK_ENUM_NO_PROXY_BEHAVIOR (1 << 5)
298#define DUK_COMPILE_EVAL (1 << 3)
299#define DUK_COMPILE_FUNCTION (1 << 4)
300#define DUK_COMPILE_STRICT (1 << 5)
301#define DUK_COMPILE_SAFE (1 << 6)
302#define DUK_COMPILE_NORESULT (1 << 7)
303#define DUK_COMPILE_NOSOURCE (1 << 8)
304#define DUK_COMPILE_STRLEN (1 << 9)
305#define DUK_COMPILE_NOFILENAME (1 << 10)
308#define DUK_DEFPROP_WRITABLE (1 << 0)
309#define DUK_DEFPROP_ENUMERABLE (1 << 1)
310#define DUK_DEFPROP_CONFIGURABLE (1 << 2)
311#define DUK_DEFPROP_HAVE_WRITABLE (1 << 3)
312#define DUK_DEFPROP_HAVE_ENUMERABLE (1 << 4)
313#define DUK_DEFPROP_HAVE_CONFIGURABLE (1 << 5)
314#define DUK_DEFPROP_HAVE_VALUE (1 << 6)
315#define DUK_DEFPROP_HAVE_GETTER (1 << 7)
316#define DUK_DEFPROP_HAVE_SETTER (1 << 8)
317#define DUK_DEFPROP_FORCE (1 << 9)
318#define DUK_DEFPROP_SET_WRITABLE (DUK_DEFPROP_HAVE_WRITABLE | DUK_DEFPROP_WRITABLE)
319#define DUK_DEFPROP_CLEAR_WRITABLE DUK_DEFPROP_HAVE_WRITABLE
320#define DUK_DEFPROP_SET_ENUMERABLE (DUK_DEFPROP_HAVE_ENUMERABLE | DUK_DEFPROP_ENUMERABLE)
321#define DUK_DEFPROP_CLEAR_ENUMERABLE DUK_DEFPROP_HAVE_ENUMERABLE
322#define DUK_DEFPROP_SET_CONFIGURABLE (DUK_DEFPROP_HAVE_CONFIGURABLE | DUK_DEFPROP_CONFIGURABLE)
323#define DUK_DEFPROP_CLEAR_CONFIGURABLE DUK_DEFPROP_HAVE_CONFIGURABLE
326#define DUK_THREAD_NEW_GLOBAL_ENV (1 << 0)
329#define DUK_STRING_PUSH_SAFE (1 << 0)
332#define DUK_ERR_NONE 0
333#define DUK_ERR_UNIMPLEMENTED_ERROR 50
334#define DUK_ERR_UNSUPPORTED_ERROR 51
335#define DUK_ERR_INTERNAL_ERROR 52
336#define DUK_ERR_ALLOC_ERROR 53
337#define DUK_ERR_ASSERTION_ERROR 54
338#define DUK_ERR_API_ERROR 55
339#define DUK_ERR_UNCAUGHT_ERROR 56
342#define DUK_ERR_ERROR 100
343#define DUK_ERR_EVAL_ERROR 101
344#define DUK_ERR_RANGE_ERROR 102
345#define DUK_ERR_REFERENCE_ERROR 103
346#define DUK_ERR_SYNTAX_ERROR 104
347#define DUK_ERR_TYPE_ERROR 105
348#define DUK_ERR_URI_ERROR 106
351#define DUK_RET_UNIMPLEMENTED_ERROR (-DUK_ERR_UNIMPLEMENTED_ERROR)
352#define DUK_RET_UNSUPPORTED_ERROR (-DUK_ERR_UNSUPPORTED_ERROR)
353#define DUK_RET_INTERNAL_ERROR (-DUK_ERR_INTERNAL_ERROR)
354#define DUK_RET_ALLOC_ERROR (-DUK_ERR_ALLOC_ERROR)
355#define DUK_RET_ASSERTION_ERROR (-DUK_ERR_ASSERTION_ERROR)
356#define DUK_RET_API_ERROR (-DUK_ERR_API_ERROR)
357#define DUK_RET_UNCAUGHT_ERROR (-DUK_ERR_UNCAUGHT_ERROR)
358#define DUK_RET_ERROR (-DUK_ERR_ERROR)
359#define DUK_RET_EVAL_ERROR (-DUK_ERR_EVAL_ERROR)
360#define DUK_RET_RANGE_ERROR (-DUK_ERR_RANGE_ERROR)
361#define DUK_RET_REFERENCE_ERROR (-DUK_ERR_REFERENCE_ERROR)
362#define DUK_RET_SYNTAX_ERROR (-DUK_ERR_SYNTAX_ERROR)
363#define DUK_RET_TYPE_ERROR (-DUK_ERR_TYPE_ERROR)
364#define DUK_RET_URI_ERROR (-DUK_ERR_URI_ERROR)
367#define DUK_EXEC_SUCCESS 0
368#define DUK_EXEC_ERROR 1
371#define DUK_LOG_TRACE 0
372#define DUK_LOG_DEBUG 1
373#define DUK_LOG_INFO 2
374#define DUK_LOG_WARN 3
375#define DUK_LOG_ERROR 4
376#define DUK_LOG_FATAL 5
383#ifndef DUK_API_VARIADIC_MACROS
400#define duk_create_heap_default() \
401 duk_create_heap(NULL, NULL, NULL, NULL, NULL)
427#ifdef DUK_API_VARIADIC_MACROS
428#define duk_error(ctx,err_code,...) \
429 duk_error_raw((ctx), (duk_errcode_t) (err_code), (const char *) (DUK_FILE_MACRO), (duk_int_t) (DUK_LINE_MACRO), __VA_ARGS__)
437 (duk_api_global_filename = (const char *) (DUK_FILE_MACRO), \
438 duk_api_global_line = (duk_int_t) (DUK_LINE_MACRO), \
443#define duk_error_va(ctx,err_code,fmt,ap) \
444 duk_error_va_raw((ctx), (duk_errcode_t) (err_code), (const char *) (DUK_FILE_MACRO), (duk_int_t) (DUK_LINE_MACRO), (fmt), (ap))
493#define duk_xmove_top(to_ctx,from_ctx,count) \
494 duk_xcopymove_raw((to_ctx), (from_ctx), (count), 0 )
495#define duk_xcopy_top(to_ctx,from_ctx,count) \
496 duk_xcopymove_raw((to_ctx), (from_ctx), (count), 1 )
523#define duk_push_string_file(ctx,path) \
524 duk_push_string_file_raw((ctx), (path), 0)
540#define duk_push_thread(ctx) \
541 duk_push_thread_raw((ctx), 0 )
543#define duk_push_thread_new_globalenv(ctx) \
544 duk_push_thread_raw((ctx), DUK_THREAD_NEW_GLOBAL_ENV )
548#ifdef DUK_API_VARIADIC_MACROS
549#define duk_push_error_object(ctx,err_code,...) \
550 duk_push_error_object_raw((ctx), (err_code), (const char *) (DUK_FILE_MACRO), (duk_int_t) (DUK_LINE_MACRO), __VA_ARGS__)
554#define duk_push_error_object \
555 (duk_api_global_filename = (const char *) (DUK_FILE_MACRO), \
556 duk_api_global_line = (duk_int_t) (DUK_LINE_MACRO), \
557 duk_push_error_object_stash)
561#define duk_push_error_object_va(ctx,err_code,fmt,ap) \
562 duk_push_error_object_va_raw((ctx), (err_code), (const char *) (DUK_FILE_MACRO), (duk_int_t) (DUK_LINE_MACRO), (fmt), (ap))
564#define DUK_BUF_FLAG_DYNAMIC (1 << 0)
565#define DUK_BUF_FLAG_EXTERNAL (1 << 1)
566#define DUK_BUF_FLAG_NOZERO (1 << 2)
570#define duk_push_buffer(ctx,size,dynamic) \
571 duk_push_buffer_raw((ctx), (size), (dynamic) ? DUK_BUF_FLAG_DYNAMIC : 0)
572#define duk_push_fixed_buffer(ctx,size) \
573 duk_push_buffer_raw((ctx), (size), 0 )
574#define duk_push_dynamic_buffer(ctx,size) \
575 duk_push_buffer_raw((ctx), (size), DUK_BUF_FLAG_DYNAMIC )
576#define duk_push_external_buffer(ctx) \
577 ((void) duk_push_buffer_raw((ctx), 0, DUK_BUF_FLAG_DYNAMIC | DUK_BUF_FLAG_EXTERNAL))
579#define DUK_BUFOBJ_CREATE_ARRBUF (1 << 4)
580#define DUK_BUFOBJ_DUKTAPE_BUFFER 0
581#define DUK_BUFOBJ_NODEJS_BUFFER 1
582#define DUK_BUFOBJ_ARRAYBUFFER 2
583#define DUK_BUFOBJ_DATAVIEW (3 | DUK_BUFOBJ_CREATE_ARRBUF)
584#define DUK_BUFOBJ_INT8ARRAY (4 | DUK_BUFOBJ_CREATE_ARRBUF)
585#define DUK_BUFOBJ_UINT8ARRAY (5 | DUK_BUFOBJ_CREATE_ARRBUF)
586#define DUK_BUFOBJ_UINT8CLAMPEDARRAY (6 | DUK_BUFOBJ_CREATE_ARRBUF)
587#define DUK_BUFOBJ_INT16ARRAY (7 | DUK_BUFOBJ_CREATE_ARRBUF)
588#define DUK_BUFOBJ_UINT16ARRAY (8 | DUK_BUFOBJ_CREATE_ARRBUF)
589#define DUK_BUFOBJ_INT32ARRAY (9 | DUK_BUFOBJ_CREATE_ARRBUF)
590#define DUK_BUFOBJ_UINT32ARRAY (10 | DUK_BUFOBJ_CREATE_ARRBUF)
591#define DUK_BUFOBJ_FLOAT32ARRAY (11 | DUK_BUFOBJ_CREATE_ARRBUF)
592#define DUK_BUFOBJ_FLOAT64ARRAY (12 | DUK_BUFOBJ_CREATE_ARRBUF)
638#define duk_is_callable(ctx,index) \
639 duk_is_function((ctx), (index))
644#define duk_is_primitive(ctx,index) \
645 duk_check_type_mask((ctx), (index), DUK_TYPE_MASK_UNDEFINED | \
646 DUK_TYPE_MASK_NULL | \
647 DUK_TYPE_MASK_BOOLEAN | \
648 DUK_TYPE_MASK_NUMBER | \
649 DUK_TYPE_MASK_STRING | \
650 DUK_TYPE_MASK_BUFFER | \
651 DUK_TYPE_MASK_POINTER | \
652 DUK_TYPE_MASK_LIGHTFUNC)
654#define duk_is_object_coercible(ctx,index) \
655 duk_check_type_mask((ctx), (index), DUK_TYPE_MASK_BOOLEAN | \
656 DUK_TYPE_MASK_NUMBER | \
657 DUK_TYPE_MASK_STRING | \
658 DUK_TYPE_MASK_OBJECT | \
659 DUK_TYPE_MASK_BUFFER | \
660 DUK_TYPE_MASK_POINTER | \
661 DUK_TYPE_MASK_LIGHTFUNC)
664#define duk_is_error(ctx,index) \
665 (duk_get_error_code((ctx), (index)) != 0)
666#define duk_is_eval_error(ctx,index) \
667 (duk_get_error_code((ctx), (index)) == DUK_ERR_EVAL_ERROR)
668#define duk_is_range_error(ctx,index) \
669 (duk_get_error_code((ctx), (index)) == DUK_ERR_RANGE_ERROR)
670#define duk_is_reference_error(ctx,index) \
671 (duk_get_error_code((ctx), (index)) == DUK_ERR_REFERENCE_ERROR)
672#define duk_is_syntax_error(ctx,index) \
673 (duk_get_error_code((ctx), (index)) == DUK_ERR_SYNTAX_ERROR)
674#define duk_is_type_error(ctx,index) \
675 (duk_get_error_code((ctx), (index)) == DUK_ERR_TYPE_ERROR)
676#define duk_is_uri_error(ctx,index) \
677 (duk_get_error_code((ctx), (index)) == DUK_ERR_URI_ERROR)
706#define duk_require_type_mask(ctx,index,mask) \
707 ((void) duk_check_type_mask((ctx), (index), (mask) | DUK_TYPE_MASK_THROW))
723#define duk_require_callable(ctx,index) \
724 duk_require_function((ctx), (index))
727#define duk_require_object_coercible(ctx,index) \
728 ((void) duk_check_type_mask((ctx), (index), DUK_TYPE_MASK_BOOLEAN | \
729 DUK_TYPE_MASK_NUMBER | \
730 DUK_TYPE_MASK_STRING | \
731 DUK_TYPE_MASK_OBJECT | \
732 DUK_TYPE_MASK_BUFFER | \
733 DUK_TYPE_MASK_POINTER | \
734 DUK_TYPE_MASK_LIGHTFUNC | \
735 DUK_TYPE_MASK_THROW))
761#define DUK_BUF_MODE_FIXED 0
762#define DUK_BUF_MODE_DYNAMIC 1
763#define DUK_BUF_MODE_DONTCARE 2
765#define duk_to_buffer(ctx,index,out_size) \
766 duk_to_buffer_raw((ctx), (index), (out_size), DUK_BUF_MODE_DONTCARE)
767#define duk_to_fixed_buffer(ctx,index,out_size) \
768 duk_to_buffer_raw((ctx), (index), (out_size), DUK_BUF_MODE_FIXED)
769#define duk_to_dynamic_buffer(ctx,index,out_size) \
770 duk_to_buffer_raw((ctx), (index), (out_size), DUK_BUF_MODE_DYNAMIC)
774#define duk_safe_to_string(ctx,index) \
775 duk_safe_to_lstring((ctx), (index), NULL)
926#define duk_eval(ctx) \
927 ((void) duk_eval_raw((ctx), NULL, 0, 2 | DUK_COMPILE_EVAL | DUK_COMPILE_NOFILENAME))
929#define duk_eval_noresult(ctx) \
930 ((void) duk_eval_raw((ctx), NULL, 0, 2 | DUK_COMPILE_EVAL | DUK_COMPILE_NORESULT | DUK_COMPILE_NOFILENAME))
932#define duk_peval(ctx) \
933 (duk_eval_raw((ctx), NULL, 0, 2 | DUK_COMPILE_EVAL | DUK_COMPILE_SAFE | DUK_COMPILE_NOFILENAME))
935#define duk_peval_noresult(ctx) \
936 (duk_eval_raw((ctx), NULL, 0, 2 | DUK_COMPILE_EVAL | DUK_COMPILE_SAFE | DUK_COMPILE_NORESULT | DUK_COMPILE_NOFILENAME))
938#define duk_compile(ctx,flags) \
939 ((void) duk_compile_raw((ctx), NULL, 0, 3 | (flags)))
941#define duk_pcompile(ctx,flags) \
942 (duk_compile_raw((ctx), NULL, 0, 3 | (flags) | DUK_COMPILE_SAFE))
945#define duk_eval_string(ctx,src) \
946 ((void) duk_eval_raw((ctx), (src), 0, 1 | DUK_COMPILE_EVAL | DUK_COMPILE_NOSOURCE | DUK_COMPILE_STRLEN | DUK_COMPILE_NOFILENAME))
948#define duk_eval_string_noresult(ctx,src) \
949 ((void) duk_eval_raw((ctx), (src), 0, 1 | DUK_COMPILE_EVAL | DUK_COMPILE_NOSOURCE | DUK_COMPILE_STRLEN | DUK_COMPILE_NORESULT | DUK_COMPILE_NOFILENAME))
951#define duk_peval_string(ctx,src) \
952 (duk_eval_raw((ctx), (src), 0, 1 | DUK_COMPILE_EVAL | DUK_COMPILE_SAFE | DUK_COMPILE_NOSOURCE | DUK_COMPILE_STRLEN | DUK_COMPILE_NOFILENAME))
954#define duk_peval_string_noresult(ctx,src) \
955 (duk_eval_raw((ctx), (src), 0, 1 | DUK_COMPILE_EVAL | DUK_COMPILE_SAFE | DUK_COMPILE_NOSOURCE | DUK_COMPILE_STRLEN | DUK_COMPILE_NORESULT | DUK_COMPILE_NOFILENAME))
957#define duk_compile_string(ctx,flags,src) \
958 ((void) duk_compile_raw((ctx), (src), 0, 1 | (flags) | DUK_COMPILE_NOSOURCE | DUK_COMPILE_STRLEN | DUK_COMPILE_NOFILENAME))
960#define duk_compile_string_filename(ctx,flags,src) \
961 ((void) duk_compile_raw((ctx), (src), 0, 2 | (flags) | DUK_COMPILE_NOSOURCE | DUK_COMPILE_STRLEN))
963#define duk_pcompile_string(ctx,flags,src) \
964 (duk_compile_raw((ctx), (src), 0, 1 | (flags) | DUK_COMPILE_SAFE | DUK_COMPILE_NOSOURCE | DUK_COMPILE_STRLEN | DUK_COMPILE_NOFILENAME))
966#define duk_pcompile_string_filename(ctx,flags,src) \
967 (duk_compile_raw((ctx), (src), 0, 2 | (flags) | DUK_COMPILE_SAFE | DUK_COMPILE_NOSOURCE | DUK_COMPILE_STRLEN))
970#define duk_eval_lstring(ctx,buf,len) \
971 ((void) duk_eval_raw((ctx), buf, len, 1 | DUK_COMPILE_EVAL | DUK_COMPILE_NOSOURCE | DUK_COMPILE_NOFILENAME))
973#define duk_eval_lstring_noresult(ctx,buf,len) \
974 ((void) duk_eval_raw((ctx), buf, len, 1 | DUK_COMPILE_EVAL | DUK_COMPILE_NOSOURCE | DUK_COMPILE_NORESULT | DUK_COMPILE_NOFILENAME))
976#define duk_peval_lstring(ctx,buf,len) \
977 (duk_eval_raw((ctx), buf, len, 1 | DUK_COMPILE_EVAL | DUK_COMPILE_NOSOURCE | DUK_COMPILE_SAFE | DUK_COMPILE_NOFILENAME))
979#define duk_peval_lstring_noresult(ctx,buf,len) \
980 (duk_eval_raw((ctx), buf, len, 1 | DUK_COMPILE_EVAL | DUK_COMPILE_SAFE | DUK_COMPILE_NOSOURCE | DUK_COMPILE_NORESULT | DUK_COMPILE_NOFILENAME))
982#define duk_compile_lstring(ctx,flags,buf,len) \
983 ((void) duk_compile_raw((ctx), buf, len, 1 | (flags) | DUK_COMPILE_NOSOURCE | DUK_COMPILE_NOFILENAME))
985#define duk_compile_lstring_filename(ctx,flags,buf,len) \
986 ((void) duk_compile_raw((ctx), buf, len, 2 | (flags) | DUK_COMPILE_NOSOURCE))
988#define duk_pcompile_lstring(ctx,flags,buf,len) \
989 (duk_compile_raw((ctx), buf, len, 1 | (flags) | DUK_COMPILE_SAFE | DUK_COMPILE_NOSOURCE | DUK_COMPILE_NOFILENAME))
991#define duk_pcompile_lstring_filename(ctx,flags,buf,len) \
992 (duk_compile_raw((ctx), buf, len, 2 | (flags) | DUK_COMPILE_SAFE | DUK_COMPILE_NOSOURCE))
995#define duk_eval_file(ctx,path) \
996 ((void) duk_push_string_file_raw((ctx), (path), 0), \
997 (void) duk_push_string((ctx), (path)), \
998 (void) duk_eval_raw((ctx), NULL, 0, 3 | DUK_COMPILE_EVAL))
1000#define duk_eval_file_noresult(ctx,path) \
1001 ((void) duk_push_string_file_raw((ctx), (path), 0), \
1002 (void) duk_push_string((ctx), (path)), \
1003 (void) duk_eval_raw((ctx), NULL, 0, 3 | DUK_COMPILE_EVAL | DUK_COMPILE_NORESULT))
1005#define duk_peval_file(ctx,path) \
1006 ((void) duk_push_string_file_raw((ctx), (path), DUK_STRING_PUSH_SAFE), \
1007 (void) duk_push_string((ctx), (path)), \
1008 duk_eval_raw((ctx), NULL, 0, 3 | DUK_COMPILE_EVAL | DUK_COMPILE_SAFE))
1010#define duk_peval_file_noresult(ctx,path) \
1011 ((void) duk_push_string_file_raw((ctx), (path), DUK_STRING_PUSH_SAFE), \
1012 (void) duk_push_string((ctx), (path)), \
1013 duk_eval_raw((ctx), NULL, 0, 3 | DUK_COMPILE_EVAL | DUK_COMPILE_SAFE | DUK_COMPILE_NORESULT))
1015#define duk_compile_file(ctx,flags,path) \
1016 ((void) duk_push_string_file_raw((ctx), (path), 0), \
1017 (void) duk_push_string((ctx), (path)), \
1018 (void) duk_compile_raw((ctx), NULL, 0, 3 | (flags)))
1020#define duk_pcompile_file(ctx,flags,path) \
1021 ((void) duk_push_string_file_raw((ctx), (path), DUK_STRING_PUSH_SAFE), \
1022 (void) duk_push_string((ctx), (path)), \
1023 duk_compile_raw((ctx), NULL, 0, 3 | (flags) | DUK_COMPILE_SAFE))
1045#if defined(DUK_USE_FILE_IO)
1047#define duk_dump_context_filehandle(ctx,fh) \
1048 (duk_push_context_dump((ctx)), \
1049 DUK_FPRINTF((fh), "%s\n", duk_safe_to_string(ctx, -1)), \
1053#define duk_dump_context_stdout(ctx) \
1054 duk_dump_context_filehandle((ctx), DUK_STDOUT)
1055#define duk_dump_context_stderr(ctx) \
1056 duk_dump_context_filehandle((ctx), DUK_STDERR)
1058#define duk_dump_context_stdout(ctx) ((void) 0)
1059#define duk_dump_context_stderr(ctx) ((void) 0)
1066#define duk_debugger_attach(ctx,read_cb,write_cb,peek_cb,read_flush_cb,write_flush_cb,detached_cb,udata) \
1067 duk_debugger_attach_custom((ctx), (read_cb), (write_cb), (peek_cb), (read_flush_cb), (write_flush_cb), \
1068 NULL, (detached_cb), (udata))
1092#define DUK_DATE_MSEC_SECOND 1000L
1093#define DUK_DATE_MSEC_MINUTE (60L * 1000L)
1094#define DUK_DATE_MSEC_HOUR (60L * 60L * 1000L)
1095#define DUK_DATE_MSEC_DAY (24L * 60L * 60L * 1000L)
1102#define DUK_DATE_MSEC_100M_DAYS (8.64e15)
1103#define DUK_DATE_MSEC_100M_DAYS_LEEWAY (8.64e15 + 24 * 3600e3)
1111#define DUK_DATE_MIN_ECMA_YEAR (-271821L)
1112#define DUK_DATE_MAX_ECMA_YEAR 275760L
1122#define DUK_DATE_IDX_YEAR 0
1123#define DUK_DATE_IDX_MONTH 1
1124#define DUK_DATE_IDX_DAY 2
1125#define DUK_DATE_IDX_HOUR 3
1126#define DUK_DATE_IDX_MINUTE 4
1127#define DUK_DATE_IDX_SECOND 5
1128#define DUK_DATE_IDX_MILLISECOND 6
1129#define DUK_DATE_IDX_WEEKDAY 7
1130#define DUK_DATE_IDX_NUM_PARTS 8
1148#define DUK_DATE_FLAG_NAN_TO_ZERO (1 << 0)
1149#define DUK_DATE_FLAG_NAN_TO_RANGE_ERROR (1 << 1)
1150#define DUK_DATE_FLAG_ONEBASED (1 << 2)
1151#define DUK_DATE_FLAG_EQUIVYEAR (1 << 3)
1152#define DUK_DATE_FLAG_LOCALTIME (1 << 4)
1153#define DUK_DATE_FLAG_SUB1900 (1 << 5)
1154#define DUK_DATE_FLAG_TOSTRING_DATE (1 << 6)
1155#define DUK_DATE_FLAG_TOSTRING_TIME (1 << 7)
1156#define DUK_DATE_FLAG_TOSTRING_LOCALE (1 << 8)
1157#define DUK_DATE_FLAG_TIMESETTER (1 << 9)
1158#define DUK_DATE_FLAG_YEAR_FIXUP (1 << 10)
1159#define DUK_DATE_FLAG_SEP_T (1 << 11)
1160#define DUK_DATE_FLAG_VALUE_SHIFT 12
1169#if defined(DUK_USE_ROM_OBJECTS) && defined(DUK_USE_HEAPPTR16)
1238#ifndef DUK_DBLUNION_H_INCLUDED
1239#define DUK_DBLUNION_H_INCLUDED
1248#if defined(DUK_USE_64BIT_OPS)
1249 duk_uint64_t ull[1];
1254#if defined(DUK_USE_PACKED_TVAL)
1265#if defined(DUK_USE_DOUBLE_LE)
1266#ifdef DUK_USE_64BIT_OPS
1267#define DUK_DBL_IDX_ULL0 0
1269#define DUK_DBL_IDX_UI0 1
1270#define DUK_DBL_IDX_UI1 0
1271#define DUK_DBL_IDX_US0 3
1272#define DUK_DBL_IDX_US1 2
1273#define DUK_DBL_IDX_US2 1
1274#define DUK_DBL_IDX_US3 0
1275#define DUK_DBL_IDX_UC0 7
1276#define DUK_DBL_IDX_UC1 6
1277#define DUK_DBL_IDX_UC2 5
1278#define DUK_DBL_IDX_UC3 4
1279#define DUK_DBL_IDX_UC4 3
1280#define DUK_DBL_IDX_UC5 2
1281#define DUK_DBL_IDX_UC6 1
1282#define DUK_DBL_IDX_UC7 0
1283#define DUK_DBL_IDX_VP0 DUK_DBL_IDX_UI0
1284#define DUK_DBL_IDX_VP1 DUK_DBL_IDX_UI1
1285#elif defined(DUK_USE_DOUBLE_BE)
1286#ifdef DUK_USE_64BIT_OPS
1287#define DUK_DBL_IDX_ULL0 0
1289#define DUK_DBL_IDX_UI0 0
1290#define DUK_DBL_IDX_UI1 1
1291#define DUK_DBL_IDX_US0 0
1292#define DUK_DBL_IDX_US1 1
1293#define DUK_DBL_IDX_US2 2
1294#define DUK_DBL_IDX_US3 3
1295#define DUK_DBL_IDX_UC0 0
1296#define DUK_DBL_IDX_UC1 1
1297#define DUK_DBL_IDX_UC2 2
1298#define DUK_DBL_IDX_UC3 3
1299#define DUK_DBL_IDX_UC4 4
1300#define DUK_DBL_IDX_UC5 5
1301#define DUK_DBL_IDX_UC6 6
1302#define DUK_DBL_IDX_UC7 7
1303#define DUK_DBL_IDX_VP0 DUK_DBL_IDX_UI0
1304#define DUK_DBL_IDX_VP1 DUK_DBL_IDX_UI1
1305#elif defined(DUK_USE_DOUBLE_ME)
1306#ifdef DUK_USE_64BIT_OPS
1307#define DUK_DBL_IDX_ULL0 0
1309#define DUK_DBL_IDX_UI0 0
1310#define DUK_DBL_IDX_UI1 1
1311#define DUK_DBL_IDX_US0 1
1312#define DUK_DBL_IDX_US1 0
1313#define DUK_DBL_IDX_US2 3
1314#define DUK_DBL_IDX_US3 2
1315#define DUK_DBL_IDX_UC0 3
1316#define DUK_DBL_IDX_UC1 2
1317#define DUK_DBL_IDX_UC2 1
1318#define DUK_DBL_IDX_UC3 0
1319#define DUK_DBL_IDX_UC4 7
1320#define DUK_DBL_IDX_UC5 6
1321#define DUK_DBL_IDX_UC6 5
1322#define DUK_DBL_IDX_UC7 4
1323#define DUK_DBL_IDX_VP0 DUK_DBL_IDX_UI0
1324#define DUK_DBL_IDX_VP1 DUK_DBL_IDX_UI1
1326#error internal error
1334#define DUK_DBLUNION_SET_DOUBLE(u,v) do { \
1338#define DUK_DBLUNION_SET_HIGH32(u,v) do { \
1339 (u)->ui[DUK_DBL_IDX_UI0] = (duk_uint32_t) (v); \
1342#ifdef DUK_USE_64BIT_OPS
1343#ifdef DUK_USE_DOUBLE_ME
1344#define DUK_DBLUNION_SET_HIGH32_ZERO_LOW32(u,v) do { \
1345 (u)->ull[DUK_DBL_IDX_ULL0] = (duk_uint64_t) (v); \
1348#define DUK_DBLUNION_SET_HIGH32_ZERO_LOW32(u,v) do { \
1349 (u)->ull[DUK_DBL_IDX_ULL0] = ((duk_uint64_t) (v)) << 32; \
1353#define DUK_DBLUNION_SET_HIGH32_ZERO_LOW32(u,v) do { \
1354 (u)->ui[DUK_DBL_IDX_UI0] = (duk_uint32_t) (v); \
1355 (u)->ui[DUK_DBL_IDX_UI1] = (duk_uint32_t) 0; \
1359#define DUK_DBLUNION_SET_LOW32(u,v) do { \
1360 (u)->ui[DUK_DBL_IDX_UI1] = (duk_uint32_t) (v); \
1363#define DUK_DBLUNION_GET_DOUBLE(u) ((u)->d)
1364#define DUK_DBLUNION_GET_HIGH32(u) ((u)->ui[DUK_DBL_IDX_UI0])
1365#define DUK_DBLUNION_GET_LOW32(u) ((u)->ui[DUK_DBL_IDX_UI1])
1367#ifdef DUK_USE_64BIT_OPS
1368#ifdef DUK_USE_DOUBLE_ME
1369#define DUK_DBLUNION_SET_UINT64(u,v) do { \
1370 (u)->ui[DUK_DBL_IDX_UI0] = (duk_uint32_t) ((v) >> 32); \
1371 (u)->ui[DUK_DBL_IDX_UI1] = (duk_uint32_t) (v); \
1373#define DUK_DBLUNION_GET_UINT64(u) \
1374 ((((duk_uint64_t) (u)->ui[DUK_DBL_IDX_UI0]) << 32) | \
1375 ((duk_uint64_t) (u)->ui[DUK_DBL_IDX_UI1]))
1377#define DUK_DBLUNION_SET_UINT64(u,v) do { \
1378 (u)->ull[DUK_DBL_IDX_ULL0] = (duk_uint64_t) (v); \
1380#define DUK_DBLUNION_GET_UINT64(u) ((u)->ull[DUK_DBL_IDX_ULL0])
1382#define DUK_DBLUNION_SET_INT64(u,v) DUK_DBLUNION_SET_UINT64((u), (duk_uint64_t) (v))
1383#define DUK_DBLUNION_GET_INT64(u) ((duk_int64_t) DUK_DBLUNION_GET_UINT64((u)))
1412#ifdef DUK_USE_64BIT_OPS
1413#ifdef DUK_USE_DOUBLE_ME
1414#define DUK__DBLUNION_SET_NAN_FULL(u) do { \
1415 (u)->ull[DUK_DBL_IDX_ULL0] = 0x000000007ff80000ULL; \
1418#define DUK__DBLUNION_SET_NAN_FULL(u) do { \
1419 (u)->ull[DUK_DBL_IDX_ULL0] = 0x7ff8000000000000ULL; \
1423#define DUK__DBLUNION_SET_NAN_FULL(u) do { \
1424 (u)->ui[DUK_DBL_IDX_UI0] = (duk_uint32_t) 0x7ff80000UL; \
1425 (u)->ui[DUK_DBL_IDX_UI1] = (duk_uint32_t) 0x00000000UL; \
1429#define DUK__DBLUNION_SET_NAN_NOTFULL(u) do { \
1430 (u)->us[DUK_DBL_IDX_US0] = 0x7ff8UL; \
1433#ifdef DUK_USE_64BIT_OPS
1434#ifdef DUK_USE_DOUBLE_ME
1435#define DUK__DBLUNION_IS_NAN_FULL(u) \
1437 ((((u)->us[DUK_DBL_IDX_US0] & 0x7ff0UL) == 0x7ff0UL) && \
1438 ((((u)->ull[DUK_DBL_IDX_ULL0]) & 0xffffffff000fffffULL) != 0))
1440#define DUK__DBLUNION_IS_NAN_FULL(u) \
1442 ((((u)->us[DUK_DBL_IDX_US0] & 0x7ff0UL) == 0x7ff0UL) && \
1443 ((((u)->ull[DUK_DBL_IDX_ULL0]) & 0x000fffffffffffffULL) != 0))
1446#define DUK__DBLUNION_IS_NAN_FULL(u) \
1448 ((((u)->ui[DUK_DBL_IDX_UI0] & 0x7ff00000UL) == 0x7ff00000UL) && \
1449 (((u)->ui[DUK_DBL_IDX_UI0] & 0x000fffffUL) != 0 || \
1450 (u)->ui[DUK_DBL_IDX_UI1] != 0))
1453#define DUK__DBLUNION_IS_NAN_NOTFULL(u) \
1455 ((((u)->us[DUK_DBL_IDX_US0] & 0x7ff0UL) == 0x7ff0UL) && \
1456 (((u)->us[DUK_DBL_IDX_US0] & 0x000fUL) != 0x0000UL))
1458#ifdef DUK_USE_64BIT_OPS
1459#ifdef DUK_USE_DOUBLE_ME
1460#define DUK__DBLUNION_IS_NORMALIZED_NAN_FULL(u) \
1461 ((u)->ull[DUK_DBL_IDX_ULL0] == 0x000000007ff80000ULL)
1463#define DUK__DBLUNION_IS_NORMALIZED_NAN_FULL(u) \
1464 ((u)->ull[DUK_DBL_IDX_ULL0] == 0x7ff8000000000000ULL)
1467#define DUK__DBLUNION_IS_NORMALIZED_NAN_FULL(u) \
1468 (((u)->ui[DUK_DBL_IDX_UI0] == 0x7ff80000UL) && \
1469 ((u)->ui[DUK_DBL_IDX_UI1] == 0x00000000UL))
1472#define DUK__DBLUNION_IS_NORMALIZED_NAN_NOTFULL(u) \
1474 ((u)->us[DUK_DBL_IDX_US0] == 0x7ff8UL)
1476#define DUK__DBLUNION_NORMALIZE_NAN_CHECK_FULL(u) do { \
1477 if (DUK__DBLUNION_IS_NAN_FULL((u))) { \
1478 DUK__DBLUNION_SET_NAN_FULL((u)); \
1482#define DUK__DBLUNION_NORMALIZE_NAN_CHECK_NOTFULL(u) do { \
1483 if (DUK__DBLUNION_IS_NAN_NOTFULL((u))) { \
1484 DUK__DBLUNION_SET_NAN_NOTFULL((u)); \
1494#if defined(DUK_USE_PACKED_TVAL)
1495#if defined(DUK_USE_FULL_TVAL)
1496#define DUK_DBLUNION_NORMALIZE_NAN_CHECK(u) DUK__DBLUNION_NORMALIZE_NAN_CHECK_FULL((u))
1497#define DUK_DBLUNION_IS_NAN(u) DUK__DBLUNION_IS_NAN_FULL((u))
1498#define DUK_DBLUNION_IS_NORMALIZED_NAN(u) DUK__DBLUNION_IS_NORMALIZED_NAN_FULL((u))
1499#define DUK_DBLUNION_SET_NAN(d) DUK__DBLUNION_SET_NAN_FULL((d))
1501#define DUK_DBLUNION_NORMALIZE_NAN_CHECK(u) DUK__DBLUNION_NORMALIZE_NAN_CHECK_NOTFULL((u))
1502#define DUK_DBLUNION_IS_NAN(u) DUK__DBLUNION_IS_NAN_NOTFULL((u))
1503#define DUK_DBLUNION_IS_NORMALIZED_NAN(u) DUK__DBLUNION_IS_NORMALIZED_NAN_NOTFULL((u))
1504#define DUK_DBLUNION_SET_NAN(d) DUK__DBLUNION_SET_NAN_NOTFULL((d))
1506#define DUK_DBLUNION_IS_NORMALIZED(u) \
1507 (!DUK_DBLUNION_IS_NAN((u)) || \
1508 DUK_DBLUNION_IS_NORMALIZED_NAN((u)))
1510#define DUK_DBLUNION_NORMALIZE_NAN_CHECK(u)
1511#define DUK_DBLUNION_IS_NAN(u) (DUK_ISNAN((u)->d))
1512#define DUK_DBLUNION_IS_NORMALIZED_NAN(u) (DUK_ISNAN((u)->d))
1513#define DUK_DBLUNION_IS_NORMALIZED(u) 1
1514#define DUK_DBLUNION_SET_NAN(u) do { \
1516 (u)->d = DUK_DOUBLE_NAN; \
1523#define DUK_DBLUNION_BSWAP64(u) do { \
1524 duk_uint32_t duk__bswaptmp1, duk__bswaptmp2; \
1525 duk__bswaptmp1 = (u)->ui[0]; \
1526 duk__bswaptmp2 = (u)->ui[1]; \
1527 duk__bswaptmp1 = DUK_BSWAP32(duk__bswaptmp1); \
1528 duk__bswaptmp2 = DUK_BSWAP32(duk__bswaptmp2); \
1529 (u)->ui[0] = duk__bswaptmp2; \
1530 (u)->ui[1] = duk__bswaptmp1; \
1536#if defined(DUK_USE_DOUBLE_LE)
1537#define DUK_DBLUNION_DOUBLE_HTON(u) do { \
1538 duk_uint32_t duk__bswaptmp1, duk__bswaptmp2; \
1539 duk__bswaptmp1 = (u)->ui[0]; \
1540 duk__bswaptmp2 = (u)->ui[1]; \
1541 duk__bswaptmp1 = DUK_BSWAP32(duk__bswaptmp1); \
1542 duk__bswaptmp2 = DUK_BSWAP32(duk__bswaptmp2); \
1543 (u)->ui[0] = duk__bswaptmp2; \
1544 (u)->ui[1] = duk__bswaptmp1; \
1546#elif defined(DUK_USE_DOUBLE_ME)
1547#define DUK_DBLUNION_DOUBLE_HTON(u) do { \
1548 duk_uint32_t duk__bswaptmp1, duk__bswaptmp2; \
1549 duk__bswaptmp1 = (u)->ui[0]; \
1550 duk__bswaptmp2 = (u)->ui[1]; \
1551 duk__bswaptmp1 = DUK_BSWAP32(duk__bswaptmp1); \
1552 duk__bswaptmp2 = DUK_BSWAP32(duk__bswaptmp2); \
1553 (u)->ui[0] = duk__bswaptmp1; \
1554 (u)->ui[1] = duk__bswaptmp2; \
1556#elif defined(DUK_USE_DOUBLE_BE)
1557#define DUK_DBLUNION_DOUBLE_HTON(u) do { } while (0)
1559#error internal error, double endianness insane
1563#define DUK_DBLUNION_DOUBLE_NTOH(u) DUK_DBLUNION_DOUBLE_HTON((u))
#define DUK_EXTERNAL_DECL
unsigned int duk_small_uint_t
duk_small_int_t duk_ret_t
duk_int_t duk_codepoint_t
duk_int_fast32_t duk_int_t
duk_uint_fast32_t duk_uint_t
duk_small_int_t duk_bool_t
DUK_EXTERNAL void duk_error_stash(duk_context *ctx, duk_errcode_t err_code, const char *fmt,...)
DUK_EXTERNAL void duk_throw(duk_context *ctx)
DUK_EXTERNAL void duk_fatal(duk_context *ctx, duk_errcode_t err_code, const char *err_msg)
DUK_EXTERNAL void duk_error_raw(duk_context *ctx, duk_errcode_t err_code, const char *filename, duk_int_t line, const char *fmt,...)
DUK_EXTERNAL void duk_error_va_raw(duk_context *ctx, duk_errcode_t err_code, const char *filename, duk_int_t line, const char *fmt, va_list ap)
DUK_EXTERNAL_DECL void duk_dump_function(duk_context *ctx)
DUK_EXTERNAL_DECL duk_idx_t duk_push_c_lightfunc(duk_context *ctx, duk_c_function func, duk_idx_t nargs, duk_idx_t length, duk_int_t magic)
DUK_EXTERNAL_DECL duk_bool_t duk_has_var(duk_context *ctx)
DUK_EXTERNAL_DECL duk_bool_t duk_is_thread(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL duk_int_t duk_eval_raw(duk_context *ctx, const char *src_buffer, duk_size_t src_length, duk_uint_t flags)
DUK_EXTERNAL_DECL duk_bool_t duk_to_boolean(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL const char * duk_safe_to_lstring(duk_context *ctx, duk_idx_t index, duk_size_t *out_len)
DUK_EXTERNAL_DECL duk_idx_t duk_normalize_index(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL void duk_call_prop(duk_context *ctx, duk_idx_t obj_index, duk_idx_t nargs)
DUK_EXTERNAL_DECL void duk_put_var(duk_context *ctx)
DUK_EXTERNAL_DECL const char * duk_api_global_filename
duk_size_t(* duk_debug_read_function)(void *udata, char *buffer, duk_size_t length)
DUK_EXTERNAL_DECL duk_uint_t duk_get_uint(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL duk_bool_t duk_is_buffer(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL void duk_set_global_object(duk_context *ctx)
DUK_EXTERNAL_DECL void duk_map_string(duk_context *ctx, duk_idx_t index, duk_map_char_function callback, void *udata)
DUK_EXTERNAL_DECL duk_bool_t duk_is_string(duk_context *ctx, duk_idx_t index)
void *(* duk_alloc_function)(void *udata, duk_size_t size)
DUK_EXTERNAL_DECL void duk_require_undefined(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL duk_bool_t duk_get_prop_index(duk_context *ctx, duk_idx_t obj_index, duk_uarridx_t arr_index)
DUK_EXTERNAL_DECL duk_idx_t duk_push_heapptr(duk_context *ctx, void *ptr)
DUK_EXTERNAL_DECL duk_idx_t duk_push_object(duk_context *ctx)
DUK_EXTERNAL_DECL duk_bool_t duk_put_prop(duk_context *ctx, duk_idx_t obj_index)
DUK_EXTERNAL_DECL duk_bool_t duk_get_prop_string(duk_context *ctx, duk_idx_t obj_index, const char *key)
DUK_EXTERNAL_DECL void duk_gc(duk_context *ctx, duk_uint_t flags)
DUK_EXTERNAL_DECL duk_codepoint_t duk_char_code_at(duk_context *ctx, duk_idx_t index, duk_size_t char_offset)
DUK_EXTERNAL_DECL void duk_to_null(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL duk_int_t duk_get_int(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL void duk_free(duk_context *ctx, void *ptr)
DUK_EXTERNAL_DECL duk_bool_t duk_put_prop_index(duk_context *ctx, duk_idx_t obj_index, duk_uarridx_t arr_index)
DUK_EXTERNAL_DECL void duk_call(duk_context *ctx, duk_idx_t nargs)
DUK_EXTERNAL_DECL void * duk_alloc_raw(duk_context *ctx, duk_size_t size)
DUK_EXTERNAL_DECL duk_bool_t duk_put_global_string(duk_context *ctx, const char *key)
DUK_EXTERNAL_DECL void * duk_alloc(duk_context *ctx, duk_size_t size)
void(* duk_debug_write_flush_function)(void *udata)
DUK_EXTERNAL_DECL duk_bool_t duk_check_stack(duk_context *ctx, duk_idx_t extra)
DUK_EXTERNAL_DECL duk_idx_t duk_push_error_object_raw(duk_context *ctx, duk_errcode_t err_code, const char *filename, duk_int_t line, const char *fmt,...)
void(* duk_fatal_function)(duk_context *ctx, duk_errcode_t code, const char *msg)
DUK_EXTERNAL_DECL void duk_push_thread_stash(duk_context *ctx, duk_context *target_ctx)
DUK_EXTERNAL_DECL duk_double_t duk_to_number(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL void duk_require_valid_index(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL duk_idx_t duk_push_array(duk_context *ctx)
DUK_EXTERNAL_DECL duk_bool_t duk_del_var(duk_context *ctx)
DUK_EXTERNAL_DECL duk_uint_t duk_to_uint(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL void duk_pop(duk_context *ctx)
DUK_EXTERNAL_DECL void duk_push_global_object(duk_context *ctx)
DUK_EXTERNAL_DECL void duk_put_number_list(duk_context *ctx, duk_idx_t obj_index, const duk_number_list_entry *numbers)
DUK_EXTERNAL_DECL duk_bool_t duk_del_prop_index(duk_context *ctx, duk_idx_t obj_index, duk_uarridx_t arr_index)
DUK_EXTERNAL_DECL void * duk_realloc_raw(duk_context *ctx, void *ptr, duk_size_t size)
DUK_EXTERNAL_DECL void duk_pop_2(duk_context *ctx)
DUK_EXTERNAL_DECL duk_bool_t duk_debugger_notify(duk_context *ctx, duk_idx_t nvalues)
duk_codepoint_t(* duk_map_char_function)(void *udata, duk_codepoint_t codepoint)
DUK_EXTERNAL_DECL void duk_log_va(duk_context *ctx, duk_int_t level, const char *fmt, va_list ap)
DUK_EXTERNAL_DECL duk_context * duk_get_context(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL void duk_def_prop(duk_context *ctx, duk_idx_t obj_index, duk_uint_t flags)
DUK_EXTERNAL_DECL duk_bool_t duk_is_bound_function(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL void duk_push_boolean(duk_context *ctx, duk_bool_t val)
void(* duk_debug_detached_function)(void *udata)
DUK_EXTERNAL_DECL duk_int_t duk_require_int(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL void * duk_to_pointer(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL duk_bool_t duk_has_prop(duk_context *ctx, duk_idx_t obj_index)
DUK_EXTERNAL_DECL void duk_push_number(duk_context *ctx, duk_double_t val)
DUK_EXTERNAL_DECL duk_bool_t duk_is_lightfunc(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL duk_bool_t duk_instanceof(duk_context *ctx, duk_idx_t index1, duk_idx_t index2)
DUK_EXTERNAL_DECL duk_idx_t duk_push_c_function(duk_context *ctx, duk_c_function func, duk_idx_t nargs)
DUK_EXTERNAL_DECL duk_idx_t duk_push_error_object_stash(duk_context *ctx, duk_errcode_t err_code, const char *fmt,...)
DUK_EXTERNAL_DECL duk_bool_t duk_check_type(duk_context *ctx, duk_idx_t index, duk_int_t type)
DUK_EXTERNAL_DECL void duk_push_current_thread(duk_context *ctx)
void(* duk_free_function)(void *udata, void *ptr)
void(* duk_debug_read_flush_function)(void *udata)
DUK_EXTERNAL_DECL void duk_push_true(duk_context *ctx)
DUK_EXTERNAL_DECL duk_int_t duk_to_int(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL duk_bool_t duk_check_stack_top(duk_context *ctx, duk_idx_t top)
DUK_EXTERNAL_DECL const char * duk_hex_encode(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL void * duk_push_buffer_raw(duk_context *ctx, duk_size_t size, duk_small_uint_t flags)
DUK_EXTERNAL_DECL duk_bool_t duk_is_array(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL void * duk_realloc(duk_context *ctx, void *ptr, duk_size_t size)
void *(* duk_realloc_function)(void *udata, void *ptr, duk_size_t size)
DUK_EXTERNAL_DECL duk_bool_t duk_is_boolean(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL void duk_get_finalizer(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL duk_idx_t duk_get_top(duk_context *ctx)
DUK_EXTERNAL_DECL void duk_insert(duk_context *ctx, duk_idx_t to_index)
DUK_EXTERNAL_DECL void duk_set_magic(duk_context *ctx, duk_idx_t index, duk_int_t magic)
DUK_EXTERNAL_DECL duk_bool_t duk_is_ecmascript_function(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL void duk_trim(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL duk_bool_t duk_require_boolean(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL void duk_concat(duk_context *ctx, duk_idx_t count)
DUK_EXTERNAL_DECL duk_double_t duk_require_number(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL duk_int_t duk_api_global_line
DUK_EXTERNAL_DECL duk_int32_t duk_to_int32(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL const char * duk_base64_encode(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL duk_bool_t duk_strict_equals(duk_context *ctx, duk_idx_t index1, duk_idx_t index2)
DUK_EXTERNAL_DECL void duk_push_undefined(duk_context *ctx)
DUK_EXTERNAL_DECL void * duk_steal_buffer(duk_context *ctx, duk_idx_t index, duk_size_t *out_size)
DUK_EXTERNAL_DECL duk_bool_t duk_put_prop_string(duk_context *ctx, duk_idx_t obj_index, const char *key)
DUK_EXTERNAL_DECL duk_bool_t duk_is_external_buffer(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL duk_context * duk_create_heap(duk_alloc_function alloc_func, duk_realloc_function realloc_func, duk_free_function free_func, void *heap_udata, duk_fatal_function fatal_handler)
DUK_EXTERNAL_DECL void duk_decode_string(duk_context *ctx, duk_idx_t index, duk_decode_char_function callback, void *udata)
DUK_EXTERNAL_DECL void duk_require_null(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL void duk_enum(duk_context *ctx, duk_idx_t obj_index, duk_uint_t enum_flags)
duk_idx_t(* duk_debug_request_function)(duk_context *ctx, void *udata, duk_idx_t nvalues)
DUK_EXTERNAL_DECL void duk_set_finalizer(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL duk_context * duk_require_context(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL void duk_require_stack_top(duk_context *ctx, duk_idx_t top)
DUK_EXTERNAL_DECL duk_int_t duk_get_type(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL const char * duk_to_lstring(duk_context *ctx, duk_idx_t index, duk_size_t *out_len)
DUK_EXTERNAL_DECL void * duk_get_buffer(duk_context *ctx, duk_idx_t index, duk_size_t *out_size)
DUK_EXTERNAL_DECL duk_bool_t duk_is_object(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL duk_bool_t duk_equals(duk_context *ctx, duk_idx_t index1, duk_idx_t index2)
DUK_EXTERNAL_DECL void duk_log(duk_context *ctx, duk_int_t level, const char *fmt,...)
DUK_EXTERNAL_DECL duk_bool_t duk_is_null_or_undefined(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL void duk_copy(duk_context *ctx, duk_idx_t from_index, duk_idx_t to_index)
DUK_EXTERNAL_DECL duk_bool_t duk_is_constructor_call(duk_context *ctx)
DUK_EXTERNAL_DECL const char * duk_to_string(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL duk_idx_t duk_require_normalize_index(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL duk_int_t duk_pcall_prop(duk_context *ctx, duk_idx_t obj_index, duk_idx_t nargs)
DUK_EXTERNAL_DECL duk_size_t duk_get_length(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL void duk_call_method(duk_context *ctx, duk_idx_t nargs)
DUK_EXTERNAL_DECL void duk_base64_decode(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL void duk_destroy_heap(duk_context *ctx)
DUK_EXTERNAL_DECL void duk_dup_top(duk_context *ctx)
DUK_EXTERNAL_DECL void duk_push_buffer_object(duk_context *ctx, duk_idx_t idx_buffer, duk_size_t byte_offset, duk_size_t byte_length, duk_uint_t flags)
DUK_EXTERNAL_DECL void duk_dup(duk_context *ctx, duk_idx_t from_index)
DUK_EXTERNAL_DECL duk_uint_t duk_require_uint(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL duk_bool_t duk_get_global_string(duk_context *ctx, const char *key)
DUK_EXTERNAL_DECL void duk_set_prototype(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL void * duk_to_buffer_raw(duk_context *ctx, duk_idx_t index, duk_size_t *out_size, duk_uint_t flags)
duk_size_t(* duk_debug_peek_function)(void *udata)
DUK_EXTERNAL_DECL void duk_push_false(duk_context *ctx)
DUK_EXTERNAL_DECL const char * duk_get_lstring(duk_context *ctx, duk_idx_t index, duk_size_t *out_len)
DUK_EXTERNAL_DECL duk_bool_t duk_is_number(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL void duk_to_defaultvalue(duk_context *ctx, duk_idx_t index, duk_int_t hint)
DUK_EXTERNAL_DECL duk_int_t duk_safe_call(duk_context *ctx, duk_safe_call_function func, duk_idx_t nargs, duk_idx_t nrets)
DUK_EXTERNAL_DECL void duk_require_function(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL void * duk_require_heapptr(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL void duk_put_function_list(duk_context *ctx, duk_idx_t obj_index, const duk_function_list_entry *funcs)
DUK_EXTERNAL_DECL duk_uint32_t duk_to_uint32(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL void duk_hex_decode(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL duk_bool_t duk_del_prop(duk_context *ctx, duk_idx_t obj_index)
DUK_EXTERNAL_DECL duk_int_t duk_pcall(duk_context *ctx, duk_idx_t nargs)
DUK_EXTERNAL_DECL void * duk_require_buffer(duk_context *ctx, duk_idx_t index, duk_size_t *out_size)
DUK_EXTERNAL_DECL duk_bool_t duk_get_prop(duk_context *ctx, duk_idx_t obj_index)
DUK_EXTERNAL_DECL void duk_push_context_dump(duk_context *ctx)
DUK_EXTERNAL_DECL void duk_compact(duk_context *ctx, duk_idx_t obj_index)
DUK_EXTERNAL_DECL void * duk_get_pointer(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL duk_int_t duk_get_current_magic(duk_context *ctx)
DUK_EXTERNAL_DECL void duk_push_int(duk_context *ctx, duk_int_t val)
DUK_EXTERNAL_DECL void duk_swap(duk_context *ctx, duk_idx_t index1, duk_idx_t index2)
DUK_EXTERNAL_DECL duk_idx_t duk_push_thread_raw(duk_context *ctx, duk_uint_t flags)
DUK_EXTERNAL_DECL const char * duk_push_lstring(duk_context *ctx, const char *str, duk_size_t len)
DUK_EXTERNAL_DECL void * duk_require_pointer(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL void duk_push_nan(duk_context *ctx)
DUK_EXTERNAL_DECL void duk_replace(duk_context *ctx, duk_idx_t to_index)
DUK_EXTERNAL_DECL void duk_to_undefined(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL duk_c_function duk_get_c_function(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL duk_bool_t duk_is_undefined(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL void duk_debugger_cooperate(duk_context *ctx)
DUK_EXTERNAL_DECL void duk_remove(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL duk_bool_t duk_del_prop_string(duk_context *ctx, duk_idx_t obj_index, const char *key)
DUK_EXTERNAL_DECL void duk_push_pointer(duk_context *ctx, void *p)
duk_size_t(* duk_debug_write_function)(void *udata, const char *buffer, duk_size_t length)
DUK_EXTERNAL_DECL const char * duk_push_vsprintf(duk_context *ctx, const char *fmt, va_list ap)
DUK_EXTERNAL_DECL duk_double_t duk_get_number(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL void duk_pop_n(duk_context *ctx, duk_idx_t count)
DUK_EXTERNAL_DECL duk_bool_t duk_is_function(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL duk_idx_t duk_push_error_object_va_raw(duk_context *ctx, duk_errcode_t err_code, const char *filename, duk_int_t line, const char *fmt, va_list ap)
DUK_EXTERNAL_DECL duk_int_t duk_pnew(duk_context *ctx, duk_idx_t nargs)
DUK_EXTERNAL_DECL void duk_require_stack(duk_context *ctx, duk_idx_t extra)
DUK_EXTERNAL_DECL duk_bool_t duk_is_strict_call(duk_context *ctx)
DUK_EXTERNAL_DECL duk_bool_t duk_get_boolean(duk_context *ctx, duk_idx_t index)
duk_ret_t(* duk_c_function)(duk_context *ctx)
DUK_EXTERNAL_DECL void duk_config_buffer(duk_context *ctx, duk_idx_t index, void *ptr, duk_size_t len)
DUK_EXTERNAL_DECL const char * duk_require_string(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL void duk_to_primitive(duk_context *ctx, duk_idx_t index, duk_int_t hint)
DUK_EXTERNAL_DECL duk_idx_t duk_get_top_index(duk_context *ctx)
DUK_EXTERNAL_DECL void * duk_require_buffer_data(duk_context *ctx, duk_idx_t index, duk_size_t *out_size)
DUK_EXTERNAL_DECL void duk_debugger_detach(duk_context *ctx)
DUK_EXTERNAL_DECL void duk_json_decode(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL const char * duk_require_lstring(duk_context *ctx, duk_idx_t index, duk_size_t *out_len)
DUK_EXTERNAL_DECL const char * duk_get_string(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL void * duk_get_heapptr(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL const char * duk_push_string(duk_context *ctx, const char *str)
DUK_EXTERNAL_DECL void duk_join(duk_context *ctx, duk_idx_t count)
DUK_EXTERNAL_DECL const char * duk_push_sprintf(duk_context *ctx, const char *fmt,...)
DUK_EXTERNAL_DECL void duk_push_heap_stash(duk_context *ctx)
DUK_EXTERNAL_DECL void duk_swap_top(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL duk_bool_t duk_is_dynamic_buffer(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL duk_bool_t duk_has_prop_index(duk_context *ctx, duk_idx_t obj_index, duk_uarridx_t arr_index)
DUK_EXTERNAL_DECL duk_bool_t duk_check_type_mask(duk_context *ctx, duk_idx_t index, duk_uint_t mask)
DUK_EXTERNAL_DECL duk_bool_t duk_is_valid_index(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL void * duk_resize_buffer(duk_context *ctx, duk_idx_t index, duk_size_t new_size)
DUK_EXTERNAL_DECL const char * duk_json_encode(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL duk_bool_t duk_next(duk_context *ctx, duk_idx_t enum_index, duk_bool_t get_value)
DUK_EXTERNAL_DECL void duk_to_object(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL duk_bool_t duk_is_nan(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL duk_idx_t duk_require_top_index(duk_context *ctx)
DUK_EXTERNAL_DECL void duk_push_global_stash(duk_context *ctx)
DUK_EXTERNAL_DECL void duk_debugger_pause(duk_context *ctx)
DUK_EXTERNAL_DECL duk_bool_t duk_has_prop_string(duk_context *ctx, duk_idx_t obj_index, const char *key)
DUK_EXTERNAL_DECL void duk_push_null(duk_context *ctx)
DUK_EXTERNAL_DECL void duk_new(duk_context *ctx, duk_idx_t nargs)
DUK_EXTERNAL_DECL void duk_xcopymove_raw(duk_context *to_ctx, duk_context *from_ctx, duk_idx_t count, duk_bool_t is_copy)
DUK_EXTERNAL_DECL duk_c_function duk_require_c_function(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL duk_bool_t duk_is_pointer(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL void duk_set_top(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL void duk_debugger_attach_custom(duk_context *ctx, duk_debug_read_function read_cb, duk_debug_write_function write_cb, duk_debug_peek_function peek_cb, duk_debug_read_flush_function read_flush_cb, duk_debug_write_flush_function write_flush_cb, duk_debug_request_function request_cb, duk_debug_detached_function detached_cb, void *udata)
DUK_EXTERNAL_DECL duk_errcode_t duk_get_error_code(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL void duk_get_prototype(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL void duk_substring(duk_context *ctx, duk_idx_t index, duk_size_t start_char_offset, duk_size_t end_char_offset)
DUK_EXTERNAL_DECL duk_int_t duk_get_magic(duk_context *ctx, duk_idx_t index)
void(* duk_decode_char_function)(void *udata, duk_codepoint_t codepoint)
DUK_EXTERNAL_DECL void duk_push_this(duk_context *ctx)
DUK_EXTERNAL_DECL duk_int_t duk_pcall_method(duk_context *ctx, duk_idx_t nargs)
DUK_EXTERNAL_DECL void duk_pop_3(duk_context *ctx)
DUK_EXTERNAL_DECL duk_uint16_t duk_to_uint16(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL duk_bool_t duk_is_null(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL void duk_push_current_function(duk_context *ctx)
DUK_EXTERNAL_DECL duk_bool_t duk_is_c_function(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL duk_bool_t duk_is_fixed_buffer(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL duk_uint_t duk_get_type_mask(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL_DECL duk_int_t duk_compile_raw(duk_context *ctx, const char *src_buffer, duk_size_t src_length, duk_uint_t flags)
duk_ret_t(* duk_safe_call_function)(duk_context *ctx)
DUK_EXTERNAL_DECL const char * duk_push_string_file_raw(duk_context *ctx, const char *path, duk_uint_t flags)
DUK_EXTERNAL_DECL void duk_load_function(duk_context *ctx)
DUK_EXTERNAL_DECL void duk_get_var(duk_context *ctx)
DUK_EXTERNAL_DECL void duk_get_memory_functions(duk_context *ctx, duk_memory_functions *out_funcs)
DUK_EXTERNAL_DECL void duk_push_uint(duk_context *ctx, duk_uint_t val)
#define DUK_API_NORETURN(decl)
DUK_EXTERNAL_DECL void duk_free_raw(duk_context *ctx, void *ptr)
DUK_EXTERNAL_DECL void * duk_get_buffer_data(duk_context *ctx, duk_idx_t index, duk_size_t *out_size)
void *(* duk_alloc_function)(void *udata, duk_size_t size)
void(* duk_free_function)(void *udata, void *ptr)
void *(* duk_realloc_function)(void *udata, void *ptr, duk_size_t size)
duk_ret_t(* duk_c_function)(duk_context *ctx)
static const luaL_Reg funcs[]
static int codepoint(lua_State *L)
duk_free_function free_func
duk_realloc_function realloc_func
duk_alloc_function alloc_func