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)
180typedef void *(*duk_alloc_function) (
void *udata,
duk_size_t size);
181typedef void *(*duk_realloc_function) (
void *udata,
void *ptr,
duk_size_t size);
231#define DUK_VERSION 10800L
238#define DUK_GIT_COMMIT "0a70d7e4c5227c84e3fed5209828973117d02849"
239#define DUK_GIT_DESCRIBE "v1.8.0"
240#define DUK_GIT_BRANCH "v1.8-maintenance"
243#define DUK_DEBUG_PROTOCOL_VERSION 1
249#define DUK_INVALID_INDEX DUK_IDX_MIN
254#define DUK_VARARGS ((duk_int_t) (-1))
259#define DUK_API_ENTRY_STACK 64
262#define DUK_TYPE_MIN 0
263#define DUK_TYPE_NONE 0
264#define DUK_TYPE_UNDEFINED 1
265#define DUK_TYPE_NULL 2
266#define DUK_TYPE_BOOLEAN 3
267#define DUK_TYPE_NUMBER 4
268#define DUK_TYPE_STRING 5
269#define DUK_TYPE_OBJECT 6
270#define DUK_TYPE_BUFFER 7
271#define DUK_TYPE_POINTER 8
272#define DUK_TYPE_LIGHTFUNC 9
273#define DUK_TYPE_MAX 9
276#define DUK_TYPE_MASK_NONE (1 << DUK_TYPE_NONE)
277#define DUK_TYPE_MASK_UNDEFINED (1 << DUK_TYPE_UNDEFINED)
278#define DUK_TYPE_MASK_NULL (1 << DUK_TYPE_NULL)
279#define DUK_TYPE_MASK_BOOLEAN (1 << DUK_TYPE_BOOLEAN)
280#define DUK_TYPE_MASK_NUMBER (1 << DUK_TYPE_NUMBER)
281#define DUK_TYPE_MASK_STRING (1 << DUK_TYPE_STRING)
282#define DUK_TYPE_MASK_OBJECT (1 << DUK_TYPE_OBJECT)
283#define DUK_TYPE_MASK_BUFFER (1 << DUK_TYPE_BUFFER)
284#define DUK_TYPE_MASK_POINTER (1 << DUK_TYPE_POINTER)
285#define DUK_TYPE_MASK_LIGHTFUNC (1 << DUK_TYPE_LIGHTFUNC)
286#define DUK_TYPE_MASK_THROW (1 << 10)
289#define DUK_HINT_NONE 0
292#define DUK_HINT_STRING 1
293#define DUK_HINT_NUMBER 2
296#define DUK_ENUM_INCLUDE_NONENUMERABLE (1 << 0)
297#define DUK_ENUM_INCLUDE_INTERNAL (1 << 1)
298#define DUK_ENUM_OWN_PROPERTIES_ONLY (1 << 2)
299#define DUK_ENUM_ARRAY_INDICES_ONLY (1 << 3)
300#define DUK_ENUM_SORT_ARRAY_INDICES (1 << 4)
301#define DUK_ENUM_NO_PROXY_BEHAVIOR (1 << 5)
308#define DUK_COMPILE_EVAL (1 << 3)
309#define DUK_COMPILE_FUNCTION (1 << 4)
310#define DUK_COMPILE_STRICT (1 << 5)
311#define DUK_COMPILE_SAFE (1 << 6)
312#define DUK_COMPILE_NORESULT (1 << 7)
313#define DUK_COMPILE_NOSOURCE (1 << 8)
314#define DUK_COMPILE_STRLEN (1 << 9)
315#define DUK_COMPILE_NOFILENAME (1 << 10)
318#define DUK_DEFPROP_WRITABLE (1 << 0)
319#define DUK_DEFPROP_ENUMERABLE (1 << 1)
320#define DUK_DEFPROP_CONFIGURABLE (1 << 2)
321#define DUK_DEFPROP_HAVE_WRITABLE (1 << 3)
322#define DUK_DEFPROP_HAVE_ENUMERABLE (1 << 4)
323#define DUK_DEFPROP_HAVE_CONFIGURABLE (1 << 5)
324#define DUK_DEFPROP_HAVE_VALUE (1 << 6)
325#define DUK_DEFPROP_HAVE_GETTER (1 << 7)
326#define DUK_DEFPROP_HAVE_SETTER (1 << 8)
327#define DUK_DEFPROP_FORCE (1 << 9)
328#define DUK_DEFPROP_SET_WRITABLE (DUK_DEFPROP_HAVE_WRITABLE | DUK_DEFPROP_WRITABLE)
329#define DUK_DEFPROP_CLEAR_WRITABLE DUK_DEFPROP_HAVE_WRITABLE
330#define DUK_DEFPROP_SET_ENUMERABLE (DUK_DEFPROP_HAVE_ENUMERABLE | DUK_DEFPROP_ENUMERABLE)
331#define DUK_DEFPROP_CLEAR_ENUMERABLE DUK_DEFPROP_HAVE_ENUMERABLE
332#define DUK_DEFPROP_SET_CONFIGURABLE (DUK_DEFPROP_HAVE_CONFIGURABLE | DUK_DEFPROP_CONFIGURABLE)
333#define DUK_DEFPROP_CLEAR_CONFIGURABLE DUK_DEFPROP_HAVE_CONFIGURABLE
336#define DUK_THREAD_NEW_GLOBAL_ENV (1 << 0)
339#define DUK_STRING_PUSH_SAFE (1 << 0)
342#define DUK_ERR_NONE 0
343#define DUK_ERR_UNIMPLEMENTED_ERROR 50
344#define DUK_ERR_UNSUPPORTED_ERROR 51
345#define DUK_ERR_INTERNAL_ERROR 52
346#define DUK_ERR_ALLOC_ERROR 53
347#define DUK_ERR_ASSERTION_ERROR 54
348#define DUK_ERR_API_ERROR 55
349#define DUK_ERR_UNCAUGHT_ERROR 56
352#define DUK_ERR_ERROR 100
353#define DUK_ERR_EVAL_ERROR 101
354#define DUK_ERR_RANGE_ERROR 102
355#define DUK_ERR_REFERENCE_ERROR 103
356#define DUK_ERR_SYNTAX_ERROR 104
357#define DUK_ERR_TYPE_ERROR 105
358#define DUK_ERR_URI_ERROR 106
361#define DUK_RET_UNIMPLEMENTED_ERROR (-DUK_ERR_UNIMPLEMENTED_ERROR)
362#define DUK_RET_UNSUPPORTED_ERROR (-DUK_ERR_UNSUPPORTED_ERROR)
363#define DUK_RET_INTERNAL_ERROR (-DUK_ERR_INTERNAL_ERROR)
364#define DUK_RET_ALLOC_ERROR (-DUK_ERR_ALLOC_ERROR)
365#define DUK_RET_ASSERTION_ERROR (-DUK_ERR_ASSERTION_ERROR)
366#define DUK_RET_API_ERROR (-DUK_ERR_API_ERROR)
367#define DUK_RET_UNCAUGHT_ERROR (-DUK_ERR_UNCAUGHT_ERROR)
368#define DUK_RET_ERROR (-DUK_ERR_ERROR)
369#define DUK_RET_EVAL_ERROR (-DUK_ERR_EVAL_ERROR)
370#define DUK_RET_RANGE_ERROR (-DUK_ERR_RANGE_ERROR)
371#define DUK_RET_REFERENCE_ERROR (-DUK_ERR_REFERENCE_ERROR)
372#define DUK_RET_SYNTAX_ERROR (-DUK_ERR_SYNTAX_ERROR)
373#define DUK_RET_TYPE_ERROR (-DUK_ERR_TYPE_ERROR)
374#define DUK_RET_URI_ERROR (-DUK_ERR_URI_ERROR)
377#define DUK_EXEC_SUCCESS 0
378#define DUK_EXEC_ERROR 1
381#define DUK_LOG_TRACE 0
382#define DUK_LOG_DEBUG 1
383#define DUK_LOG_INFO 2
384#define DUK_LOG_WARN 3
385#define DUK_LOG_ERROR 4
386#define DUK_LOG_FATAL 5
393#ifndef DUK_API_VARIADIC_MACROS
413#define duk_create_heap_default() \
414 duk_create_heap(NULL, NULL, NULL, NULL, NULL)
440#ifdef DUK_API_VARIADIC_MACROS
441#define duk_error(ctx,err_code,...) \
442 duk_error_raw((ctx), (duk_errcode_t) (err_code), (const char *) (DUK_FILE_MACRO), (duk_int_t) (DUK_LINE_MACRO), __VA_ARGS__)
450 (duk_api_global_filename = (const char *) (DUK_FILE_MACRO), \
451 duk_api_global_line = (duk_int_t) (DUK_LINE_MACRO), \
456#define duk_error_va(ctx,err_code,fmt,ap) \
457 duk_error_va_raw((ctx), (duk_errcode_t) (err_code), (const char *) (DUK_FILE_MACRO), (duk_int_t) (DUK_LINE_MACRO), (fmt), (ap))
506#define duk_xmove_top(to_ctx,from_ctx,count) \
507 duk_xcopymove_raw((to_ctx), (from_ctx), (count), 0 )
508#define duk_xcopy_top(to_ctx,from_ctx,count) \
509 duk_xcopymove_raw((to_ctx), (from_ctx), (count), 1 )
536#define duk_push_string_file(ctx,path) \
537 duk_push_string_file_raw((ctx), (path), 0)
553#define duk_push_thread(ctx) \
554 duk_push_thread_raw((ctx), 0 )
556#define duk_push_thread_new_globalenv(ctx) \
557 duk_push_thread_raw((ctx), DUK_THREAD_NEW_GLOBAL_ENV )
561#ifdef DUK_API_VARIADIC_MACROS
562#define duk_push_error_object(ctx,err_code,...) \
563 duk_push_error_object_raw((ctx), (err_code), (const char *) (DUK_FILE_MACRO), (duk_int_t) (DUK_LINE_MACRO), __VA_ARGS__)
567#define duk_push_error_object \
568 (duk_api_global_filename = (const char *) (DUK_FILE_MACRO), \
569 duk_api_global_line = (duk_int_t) (DUK_LINE_MACRO), \
570 duk_push_error_object_stash)
574#define duk_push_error_object_va(ctx,err_code,fmt,ap) \
575 duk_push_error_object_va_raw((ctx), (err_code), (const char *) (DUK_FILE_MACRO), (duk_int_t) (DUK_LINE_MACRO), (fmt), (ap))
577#define DUK_BUF_FLAG_DYNAMIC (1 << 0)
578#define DUK_BUF_FLAG_EXTERNAL (1 << 1)
579#define DUK_BUF_FLAG_NOZERO (1 << 2)
583#define duk_push_buffer(ctx,size,dynamic) \
584 duk_push_buffer_raw((ctx), (size), (dynamic) ? DUK_BUF_FLAG_DYNAMIC : 0)
585#define duk_push_fixed_buffer(ctx,size) \
586 duk_push_buffer_raw((ctx), (size), 0 )
587#define duk_push_dynamic_buffer(ctx,size) \
588 duk_push_buffer_raw((ctx), (size), DUK_BUF_FLAG_DYNAMIC )
589#define duk_push_external_buffer(ctx) \
590 ((void) duk_push_buffer_raw((ctx), 0, DUK_BUF_FLAG_DYNAMIC | DUK_BUF_FLAG_EXTERNAL))
592#define DUK_BUFOBJ_CREATE_ARRBUF (1 << 4)
593#define DUK_BUFOBJ_DUKTAPE_BUFFER 0
594#define DUK_BUFOBJ_NODEJS_BUFFER 1
595#define DUK_BUFOBJ_ARRAYBUFFER 2
596#define DUK_BUFOBJ_DATAVIEW (3 | DUK_BUFOBJ_CREATE_ARRBUF)
597#define DUK_BUFOBJ_INT8ARRAY (4 | DUK_BUFOBJ_CREATE_ARRBUF)
598#define DUK_BUFOBJ_UINT8ARRAY (5 | DUK_BUFOBJ_CREATE_ARRBUF)
599#define DUK_BUFOBJ_UINT8CLAMPEDARRAY (6 | DUK_BUFOBJ_CREATE_ARRBUF)
600#define DUK_BUFOBJ_INT16ARRAY (7 | DUK_BUFOBJ_CREATE_ARRBUF)
601#define DUK_BUFOBJ_UINT16ARRAY (8 | DUK_BUFOBJ_CREATE_ARRBUF)
602#define DUK_BUFOBJ_INT32ARRAY (9 | DUK_BUFOBJ_CREATE_ARRBUF)
603#define DUK_BUFOBJ_UINT32ARRAY (10 | DUK_BUFOBJ_CREATE_ARRBUF)
604#define DUK_BUFOBJ_FLOAT32ARRAY (11 | DUK_BUFOBJ_CREATE_ARRBUF)
605#define DUK_BUFOBJ_FLOAT64ARRAY (12 | DUK_BUFOBJ_CREATE_ARRBUF)
652#define duk_is_callable(ctx,index) \
653 duk_is_function((ctx), (index))
658#define duk_is_primitive(ctx,index) \
659 duk_check_type_mask((ctx), (index), DUK_TYPE_MASK_UNDEFINED | \
660 DUK_TYPE_MASK_NULL | \
661 DUK_TYPE_MASK_BOOLEAN | \
662 DUK_TYPE_MASK_NUMBER | \
663 DUK_TYPE_MASK_STRING | \
664 DUK_TYPE_MASK_BUFFER | \
665 DUK_TYPE_MASK_POINTER | \
666 DUK_TYPE_MASK_LIGHTFUNC)
668#define duk_is_object_coercible(ctx,index) \
669 duk_check_type_mask((ctx), (index), DUK_TYPE_MASK_BOOLEAN | \
670 DUK_TYPE_MASK_NUMBER | \
671 DUK_TYPE_MASK_STRING | \
672 DUK_TYPE_MASK_OBJECT | \
673 DUK_TYPE_MASK_BUFFER | \
674 DUK_TYPE_MASK_POINTER | \
675 DUK_TYPE_MASK_LIGHTFUNC)
678#define duk_is_error(ctx,index) \
679 (duk_get_error_code((ctx), (index)) != 0)
680#define duk_is_eval_error(ctx,index) \
681 (duk_get_error_code((ctx), (index)) == DUK_ERR_EVAL_ERROR)
682#define duk_is_range_error(ctx,index) \
683 (duk_get_error_code((ctx), (index)) == DUK_ERR_RANGE_ERROR)
684#define duk_is_reference_error(ctx,index) \
685 (duk_get_error_code((ctx), (index)) == DUK_ERR_REFERENCE_ERROR)
686#define duk_is_syntax_error(ctx,index) \
687 (duk_get_error_code((ctx), (index)) == DUK_ERR_SYNTAX_ERROR)
688#define duk_is_type_error(ctx,index) \
689 (duk_get_error_code((ctx), (index)) == DUK_ERR_TYPE_ERROR)
690#define duk_is_uri_error(ctx,index) \
691 (duk_get_error_code((ctx), (index)) == DUK_ERR_URI_ERROR)
720#define duk_require_type_mask(ctx,index,mask) \
721 ((void) duk_check_type_mask((ctx), (index), (mask) | DUK_TYPE_MASK_THROW))
737#define duk_require_callable(ctx,index) \
738 duk_require_function((ctx), (index))
741#define duk_require_object_coercible(ctx,index) \
742 ((void) duk_check_type_mask((ctx), (index), DUK_TYPE_MASK_BOOLEAN | \
743 DUK_TYPE_MASK_NUMBER | \
744 DUK_TYPE_MASK_STRING | \
745 DUK_TYPE_MASK_OBJECT | \
746 DUK_TYPE_MASK_BUFFER | \
747 DUK_TYPE_MASK_POINTER | \
748 DUK_TYPE_MASK_LIGHTFUNC | \
749 DUK_TYPE_MASK_THROW))
775#define DUK_BUF_MODE_FIXED 0
776#define DUK_BUF_MODE_DYNAMIC 1
777#define DUK_BUF_MODE_DONTCARE 2
779#define duk_to_buffer(ctx,index,out_size) \
780 duk_to_buffer_raw((ctx), (index), (out_size), DUK_BUF_MODE_DONTCARE)
781#define duk_to_fixed_buffer(ctx,index,out_size) \
782 duk_to_buffer_raw((ctx), (index), (out_size), DUK_BUF_MODE_FIXED)
783#define duk_to_dynamic_buffer(ctx,index,out_size) \
784 duk_to_buffer_raw((ctx), (index), (out_size), DUK_BUF_MODE_DYNAMIC)
788#define duk_safe_to_string(ctx,index) \
789 duk_safe_to_lstring((ctx), (index), NULL)
940#define duk_eval(ctx) \
941 ((void) duk_eval_raw((ctx), NULL, 0, 2 | DUK_COMPILE_EVAL | DUK_COMPILE_NOFILENAME))
943#define duk_eval_noresult(ctx) \
944 ((void) duk_eval_raw((ctx), NULL, 0, 2 | DUK_COMPILE_EVAL | DUK_COMPILE_NORESULT | DUK_COMPILE_NOFILENAME))
946#define duk_peval(ctx) \
947 (duk_eval_raw((ctx), NULL, 0, 2 | DUK_COMPILE_EVAL | DUK_COMPILE_SAFE | DUK_COMPILE_NOFILENAME))
949#define duk_peval_noresult(ctx) \
950 (duk_eval_raw((ctx), NULL, 0, 2 | DUK_COMPILE_EVAL | DUK_COMPILE_SAFE | DUK_COMPILE_NORESULT | DUK_COMPILE_NOFILENAME))
952#define duk_compile(ctx,flags) \
953 ((void) duk_compile_raw((ctx), NULL, 0, 3 | (flags)))
955#define duk_pcompile(ctx,flags) \
956 (duk_compile_raw((ctx), NULL, 0, 3 | (flags) | DUK_COMPILE_SAFE))
959#define duk_eval_string(ctx,src) \
960 ((void) duk_eval_raw((ctx), (src), 0, 1 | DUK_COMPILE_EVAL | DUK_COMPILE_NOSOURCE | DUK_COMPILE_STRLEN | DUK_COMPILE_NOFILENAME))
962#define duk_eval_string_noresult(ctx,src) \
963 ((void) duk_eval_raw((ctx), (src), 0, 1 | DUK_COMPILE_EVAL | DUK_COMPILE_NOSOURCE | DUK_COMPILE_STRLEN | DUK_COMPILE_NORESULT | DUK_COMPILE_NOFILENAME))
965#define duk_peval_string(ctx,src) \
966 (duk_eval_raw((ctx), (src), 0, 1 | DUK_COMPILE_EVAL | DUK_COMPILE_SAFE | DUK_COMPILE_NOSOURCE | DUK_COMPILE_STRLEN | DUK_COMPILE_NOFILENAME))
968#define duk_peval_string_noresult(ctx,src) \
969 (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))
971#define duk_compile_string(ctx,flags,src) \
972 ((void) duk_compile_raw((ctx), (src), 0, 1 | (flags) | DUK_COMPILE_NOSOURCE | DUK_COMPILE_STRLEN | DUK_COMPILE_NOFILENAME))
974#define duk_compile_string_filename(ctx,flags,src) \
975 ((void) duk_compile_raw((ctx), (src), 0, 2 | (flags) | DUK_COMPILE_NOSOURCE | DUK_COMPILE_STRLEN))
977#define duk_pcompile_string(ctx,flags,src) \
978 (duk_compile_raw((ctx), (src), 0, 1 | (flags) | DUK_COMPILE_SAFE | DUK_COMPILE_NOSOURCE | DUK_COMPILE_STRLEN | DUK_COMPILE_NOFILENAME))
980#define duk_pcompile_string_filename(ctx,flags,src) \
981 (duk_compile_raw((ctx), (src), 0, 2 | (flags) | DUK_COMPILE_SAFE | DUK_COMPILE_NOSOURCE | DUK_COMPILE_STRLEN))
984#define duk_eval_lstring(ctx,buf,len) \
985 ((void) duk_eval_raw((ctx), buf, len, 1 | DUK_COMPILE_EVAL | DUK_COMPILE_NOSOURCE | DUK_COMPILE_NOFILENAME))
987#define duk_eval_lstring_noresult(ctx,buf,len) \
988 ((void) duk_eval_raw((ctx), buf, len, 1 | DUK_COMPILE_EVAL | DUK_COMPILE_NOSOURCE | DUK_COMPILE_NORESULT | DUK_COMPILE_NOFILENAME))
990#define duk_peval_lstring(ctx,buf,len) \
991 (duk_eval_raw((ctx), buf, len, 1 | DUK_COMPILE_EVAL | DUK_COMPILE_NOSOURCE | DUK_COMPILE_SAFE | DUK_COMPILE_NOFILENAME))
993#define duk_peval_lstring_noresult(ctx,buf,len) \
994 (duk_eval_raw((ctx), buf, len, 1 | DUK_COMPILE_EVAL | DUK_COMPILE_SAFE | DUK_COMPILE_NOSOURCE | DUK_COMPILE_NORESULT | DUK_COMPILE_NOFILENAME))
996#define duk_compile_lstring(ctx,flags,buf,len) \
997 ((void) duk_compile_raw((ctx), buf, len, 1 | (flags) | DUK_COMPILE_NOSOURCE | DUK_COMPILE_NOFILENAME))
999#define duk_compile_lstring_filename(ctx,flags,buf,len) \
1000 ((void) duk_compile_raw((ctx), buf, len, 2 | (flags) | DUK_COMPILE_NOSOURCE))
1002#define duk_pcompile_lstring(ctx,flags,buf,len) \
1003 (duk_compile_raw((ctx), buf, len, 1 | (flags) | DUK_COMPILE_SAFE | DUK_COMPILE_NOSOURCE | DUK_COMPILE_NOFILENAME))
1005#define duk_pcompile_lstring_filename(ctx,flags,buf,len) \
1006 (duk_compile_raw((ctx), buf, len, 2 | (flags) | DUK_COMPILE_SAFE | DUK_COMPILE_NOSOURCE))
1009#define duk_eval_file(ctx,path) \
1010 ((void) duk_push_string_file_raw((ctx), (path), 0), \
1011 (void) duk_push_string((ctx), (path)), \
1012 (void) duk_eval_raw((ctx), NULL, 0, 3 | DUK_COMPILE_EVAL))
1014#define duk_eval_file_noresult(ctx,path) \
1015 ((void) duk_push_string_file_raw((ctx), (path), 0), \
1016 (void) duk_push_string((ctx), (path)), \
1017 (void) duk_eval_raw((ctx), NULL, 0, 3 | DUK_COMPILE_EVAL | DUK_COMPILE_NORESULT))
1019#define duk_peval_file(ctx,path) \
1020 ((void) duk_push_string_file_raw((ctx), (path), DUK_STRING_PUSH_SAFE), \
1021 (void) duk_push_string((ctx), (path)), \
1022 duk_eval_raw((ctx), NULL, 0, 3 | DUK_COMPILE_EVAL | DUK_COMPILE_SAFE))
1024#define duk_peval_file_noresult(ctx,path) \
1025 ((void) duk_push_string_file_raw((ctx), (path), DUK_STRING_PUSH_SAFE), \
1026 (void) duk_push_string((ctx), (path)), \
1027 duk_eval_raw((ctx), NULL, 0, 3 | DUK_COMPILE_EVAL | DUK_COMPILE_SAFE | DUK_COMPILE_NORESULT))
1029#define duk_compile_file(ctx,flags,path) \
1030 ((void) duk_push_string_file_raw((ctx), (path), 0), \
1031 (void) duk_push_string((ctx), (path)), \
1032 (void) duk_compile_raw((ctx), NULL, 0, 3 | (flags)))
1034#define duk_pcompile_file(ctx,flags,path) \
1035 ((void) duk_push_string_file_raw((ctx), (path), DUK_STRING_PUSH_SAFE), \
1036 (void) duk_push_string((ctx), (path)), \
1037 duk_compile_raw((ctx), NULL, 0, 3 | (flags) | DUK_COMPILE_SAFE))
1059#if defined(DUK_USE_FILE_IO)
1061#define duk_dump_context_filehandle(ctx,fh) \
1062 (duk_push_context_dump((ctx)), \
1063 DUK_FPRINTF((fh), "%s\n", duk_safe_to_string(ctx, -1)), \
1067#define duk_dump_context_stdout(ctx) \
1068 duk_dump_context_filehandle((ctx), DUK_STDOUT)
1069#define duk_dump_context_stderr(ctx) \
1070 duk_dump_context_filehandle((ctx), DUK_STDERR)
1072#define duk_dump_context_stdout(ctx) ((void) 0)
1073#define duk_dump_context_stderr(ctx) ((void) 0)
1080#define duk_debugger_attach(ctx,read_cb,write_cb,peek_cb,read_flush_cb,write_flush_cb,detached_cb,udata) \
1081 duk_debugger_attach_custom((ctx), (read_cb), (write_cb), (peek_cb), (read_flush_cb), (write_flush_cb), \
1082 NULL, (detached_cb), (udata))
1106#define DUK_DATE_MSEC_SECOND 1000L
1107#define DUK_DATE_MSEC_MINUTE (60L * 1000L)
1108#define DUK_DATE_MSEC_HOUR (60L * 60L * 1000L)
1109#define DUK_DATE_MSEC_DAY (24L * 60L * 60L * 1000L)
1116#define DUK_DATE_MSEC_100M_DAYS (8.64e15)
1117#define DUK_DATE_MSEC_100M_DAYS_LEEWAY (8.64e15 + 24 * 3600e3)
1125#define DUK_DATE_MIN_ECMA_YEAR (-271821L)
1126#define DUK_DATE_MAX_ECMA_YEAR 275760L
1136#define DUK_DATE_IDX_YEAR 0
1137#define DUK_DATE_IDX_MONTH 1
1138#define DUK_DATE_IDX_DAY 2
1139#define DUK_DATE_IDX_HOUR 3
1140#define DUK_DATE_IDX_MINUTE 4
1141#define DUK_DATE_IDX_SECOND 5
1142#define DUK_DATE_IDX_MILLISECOND 6
1143#define DUK_DATE_IDX_WEEKDAY 7
1144#define DUK_DATE_IDX_NUM_PARTS 8
1162#define DUK_DATE_FLAG_NAN_TO_ZERO (1 << 0)
1163#define DUK_DATE_FLAG_NAN_TO_RANGE_ERROR (1 << 1)
1164#define DUK_DATE_FLAG_ONEBASED (1 << 2)
1165#define DUK_DATE_FLAG_EQUIVYEAR (1 << 3)
1166#define DUK_DATE_FLAG_LOCALTIME (1 << 4)
1167#define DUK_DATE_FLAG_SUB1900 (1 << 5)
1168#define DUK_DATE_FLAG_TOSTRING_DATE (1 << 6)
1169#define DUK_DATE_FLAG_TOSTRING_TIME (1 << 7)
1170#define DUK_DATE_FLAG_TOSTRING_LOCALE (1 << 8)
1171#define DUK_DATE_FLAG_TIMESETTER (1 << 9)
1172#define DUK_DATE_FLAG_YEAR_FIXUP (1 << 10)
1173#define DUK_DATE_FLAG_SEP_T (1 << 11)
1174#define DUK_DATE_FLAG_VALUE_SHIFT 12
1183#if defined(DUK_USE_ROM_OBJECTS) && defined(DUK_USE_HEAPPTR16)
1252#ifndef DUK_DBLUNION_H_INCLUDED
1253#define DUK_DBLUNION_H_INCLUDED
1262#if defined(DUK_USE_64BIT_OPS)
1263 duk_uint64_t ull[1];
1268#if defined(DUK_USE_PACKED_TVAL)
1279#if defined(DUK_USE_DOUBLE_LE)
1280#ifdef DUK_USE_64BIT_OPS
1281#define DUK_DBL_IDX_ULL0 0
1283#define DUK_DBL_IDX_UI0 1
1284#define DUK_DBL_IDX_UI1 0
1285#define DUK_DBL_IDX_US0 3
1286#define DUK_DBL_IDX_US1 2
1287#define DUK_DBL_IDX_US2 1
1288#define DUK_DBL_IDX_US3 0
1289#define DUK_DBL_IDX_UC0 7
1290#define DUK_DBL_IDX_UC1 6
1291#define DUK_DBL_IDX_UC2 5
1292#define DUK_DBL_IDX_UC3 4
1293#define DUK_DBL_IDX_UC4 3
1294#define DUK_DBL_IDX_UC5 2
1295#define DUK_DBL_IDX_UC6 1
1296#define DUK_DBL_IDX_UC7 0
1297#define DUK_DBL_IDX_VP0 DUK_DBL_IDX_UI0
1298#define DUK_DBL_IDX_VP1 DUK_DBL_IDX_UI1
1299#elif defined(DUK_USE_DOUBLE_BE)
1300#ifdef DUK_USE_64BIT_OPS
1301#define DUK_DBL_IDX_ULL0 0
1303#define DUK_DBL_IDX_UI0 0
1304#define DUK_DBL_IDX_UI1 1
1305#define DUK_DBL_IDX_US0 0
1306#define DUK_DBL_IDX_US1 1
1307#define DUK_DBL_IDX_US2 2
1308#define DUK_DBL_IDX_US3 3
1309#define DUK_DBL_IDX_UC0 0
1310#define DUK_DBL_IDX_UC1 1
1311#define DUK_DBL_IDX_UC2 2
1312#define DUK_DBL_IDX_UC3 3
1313#define DUK_DBL_IDX_UC4 4
1314#define DUK_DBL_IDX_UC5 5
1315#define DUK_DBL_IDX_UC6 6
1316#define DUK_DBL_IDX_UC7 7
1317#define DUK_DBL_IDX_VP0 DUK_DBL_IDX_UI0
1318#define DUK_DBL_IDX_VP1 DUK_DBL_IDX_UI1
1319#elif defined(DUK_USE_DOUBLE_ME)
1320#ifdef DUK_USE_64BIT_OPS
1321#define DUK_DBL_IDX_ULL0 0
1323#define DUK_DBL_IDX_UI0 0
1324#define DUK_DBL_IDX_UI1 1
1325#define DUK_DBL_IDX_US0 1
1326#define DUK_DBL_IDX_US1 0
1327#define DUK_DBL_IDX_US2 3
1328#define DUK_DBL_IDX_US3 2
1329#define DUK_DBL_IDX_UC0 3
1330#define DUK_DBL_IDX_UC1 2
1331#define DUK_DBL_IDX_UC2 1
1332#define DUK_DBL_IDX_UC3 0
1333#define DUK_DBL_IDX_UC4 7
1334#define DUK_DBL_IDX_UC5 6
1335#define DUK_DBL_IDX_UC6 5
1336#define DUK_DBL_IDX_UC7 4
1337#define DUK_DBL_IDX_VP0 DUK_DBL_IDX_UI0
1338#define DUK_DBL_IDX_VP1 DUK_DBL_IDX_UI1
1340#error internal error
1348#define DUK_DBLUNION_SET_DOUBLE(u,v) do { \
1352#define DUK_DBLUNION_SET_HIGH32(u,v) do { \
1353 (u)->ui[DUK_DBL_IDX_UI0] = (duk_uint32_t) (v); \
1356#ifdef DUK_USE_64BIT_OPS
1357#ifdef DUK_USE_DOUBLE_ME
1358#define DUK_DBLUNION_SET_HIGH32_ZERO_LOW32(u,v) do { \
1359 (u)->ull[DUK_DBL_IDX_ULL0] = (duk_uint64_t) (v); \
1362#define DUK_DBLUNION_SET_HIGH32_ZERO_LOW32(u,v) do { \
1363 (u)->ull[DUK_DBL_IDX_ULL0] = ((duk_uint64_t) (v)) << 32; \
1367#define DUK_DBLUNION_SET_HIGH32_ZERO_LOW32(u,v) do { \
1368 (u)->ui[DUK_DBL_IDX_UI0] = (duk_uint32_t) (v); \
1369 (u)->ui[DUK_DBL_IDX_UI1] = (duk_uint32_t) 0; \
1373#define DUK_DBLUNION_SET_LOW32(u,v) do { \
1374 (u)->ui[DUK_DBL_IDX_UI1] = (duk_uint32_t) (v); \
1377#define DUK_DBLUNION_GET_DOUBLE(u) ((u)->d)
1378#define DUK_DBLUNION_GET_HIGH32(u) ((u)->ui[DUK_DBL_IDX_UI0])
1379#define DUK_DBLUNION_GET_LOW32(u) ((u)->ui[DUK_DBL_IDX_UI1])
1381#ifdef DUK_USE_64BIT_OPS
1382#ifdef DUK_USE_DOUBLE_ME
1383#define DUK_DBLUNION_SET_UINT64(u,v) do { \
1384 (u)->ui[DUK_DBL_IDX_UI0] = (duk_uint32_t) ((v) >> 32); \
1385 (u)->ui[DUK_DBL_IDX_UI1] = (duk_uint32_t) (v); \
1387#define DUK_DBLUNION_GET_UINT64(u) \
1388 ((((duk_uint64_t) (u)->ui[DUK_DBL_IDX_UI0]) << 32) | \
1389 ((duk_uint64_t) (u)->ui[DUK_DBL_IDX_UI1]))
1391#define DUK_DBLUNION_SET_UINT64(u,v) do { \
1392 (u)->ull[DUK_DBL_IDX_ULL0] = (duk_uint64_t) (v); \
1394#define DUK_DBLUNION_GET_UINT64(u) ((u)->ull[DUK_DBL_IDX_ULL0])
1396#define DUK_DBLUNION_SET_INT64(u,v) DUK_DBLUNION_SET_UINT64((u), (duk_uint64_t) (v))
1397#define DUK_DBLUNION_GET_INT64(u) ((duk_int64_t) DUK_DBLUNION_GET_UINT64((u)))
1426#ifdef DUK_USE_64BIT_OPS
1427#ifdef DUK_USE_DOUBLE_ME
1428#define DUK__DBLUNION_SET_NAN_FULL(u) do { \
1429 (u)->ull[DUK_DBL_IDX_ULL0] = 0x000000007ff80000ULL; \
1432#define DUK__DBLUNION_SET_NAN_FULL(u) do { \
1433 (u)->ull[DUK_DBL_IDX_ULL0] = 0x7ff8000000000000ULL; \
1437#define DUK__DBLUNION_SET_NAN_FULL(u) do { \
1438 (u)->ui[DUK_DBL_IDX_UI0] = (duk_uint32_t) 0x7ff80000UL; \
1439 (u)->ui[DUK_DBL_IDX_UI1] = (duk_uint32_t) 0x00000000UL; \
1443#define DUK__DBLUNION_SET_NAN_NOTFULL(u) do { \
1444 (u)->us[DUK_DBL_IDX_US0] = 0x7ff8UL; \
1447#ifdef DUK_USE_64BIT_OPS
1448#ifdef DUK_USE_DOUBLE_ME
1449#define DUK__DBLUNION_IS_NAN_FULL(u) \
1451 ((((u)->us[DUK_DBL_IDX_US0] & 0x7ff0UL) == 0x7ff0UL) && \
1452 ((((u)->ull[DUK_DBL_IDX_ULL0]) & 0xffffffff000fffffULL) != 0))
1454#define DUK__DBLUNION_IS_NAN_FULL(u) \
1456 ((((u)->us[DUK_DBL_IDX_US0] & 0x7ff0UL) == 0x7ff0UL) && \
1457 ((((u)->ull[DUK_DBL_IDX_ULL0]) & 0x000fffffffffffffULL) != 0))
1460#define DUK__DBLUNION_IS_NAN_FULL(u) \
1462 ((((u)->ui[DUK_DBL_IDX_UI0] & 0x7ff00000UL) == 0x7ff00000UL) && \
1463 (((u)->ui[DUK_DBL_IDX_UI0] & 0x000fffffUL) != 0 || \
1464 (u)->ui[DUK_DBL_IDX_UI1] != 0))
1467#define DUK__DBLUNION_IS_NAN_NOTFULL(u) \
1469 ((((u)->us[DUK_DBL_IDX_US0] & 0x7ff0UL) == 0x7ff0UL) && \
1470 (((u)->us[DUK_DBL_IDX_US0] & 0x000fUL) != 0x0000UL))
1472#ifdef DUK_USE_64BIT_OPS
1473#ifdef DUK_USE_DOUBLE_ME
1474#define DUK__DBLUNION_IS_NORMALIZED_NAN_FULL(u) \
1475 ((u)->ull[DUK_DBL_IDX_ULL0] == 0x000000007ff80000ULL)
1477#define DUK__DBLUNION_IS_NORMALIZED_NAN_FULL(u) \
1478 ((u)->ull[DUK_DBL_IDX_ULL0] == 0x7ff8000000000000ULL)
1481#define DUK__DBLUNION_IS_NORMALIZED_NAN_FULL(u) \
1482 (((u)->ui[DUK_DBL_IDX_UI0] == 0x7ff80000UL) && \
1483 ((u)->ui[DUK_DBL_IDX_UI1] == 0x00000000UL))
1486#define DUK__DBLUNION_IS_NORMALIZED_NAN_NOTFULL(u) \
1488 ((u)->us[DUK_DBL_IDX_US0] == 0x7ff8UL)
1490#define DUK__DBLUNION_NORMALIZE_NAN_CHECK_FULL(u) do { \
1491 if (DUK__DBLUNION_IS_NAN_FULL((u))) { \
1492 DUK__DBLUNION_SET_NAN_FULL((u)); \
1496#define DUK__DBLUNION_NORMALIZE_NAN_CHECK_NOTFULL(u) do { \
1497 if (DUK__DBLUNION_IS_NAN_NOTFULL((u))) { \
1498 DUK__DBLUNION_SET_NAN_NOTFULL((u)); \
1508#if defined(DUK_USE_PACKED_TVAL)
1509#if defined(DUK_USE_FULL_TVAL)
1510#define DUK_DBLUNION_NORMALIZE_NAN_CHECK(u) DUK__DBLUNION_NORMALIZE_NAN_CHECK_FULL((u))
1511#define DUK_DBLUNION_IS_NAN(u) DUK__DBLUNION_IS_NAN_FULL((u))
1512#define DUK_DBLUNION_IS_NORMALIZED_NAN(u) DUK__DBLUNION_IS_NORMALIZED_NAN_FULL((u))
1513#define DUK_DBLUNION_SET_NAN(d) DUK__DBLUNION_SET_NAN_FULL((d))
1515#define DUK_DBLUNION_NORMALIZE_NAN_CHECK(u) DUK__DBLUNION_NORMALIZE_NAN_CHECK_NOTFULL((u))
1516#define DUK_DBLUNION_IS_NAN(u) DUK__DBLUNION_IS_NAN_NOTFULL((u))
1517#define DUK_DBLUNION_IS_NORMALIZED_NAN(u) DUK__DBLUNION_IS_NORMALIZED_NAN_NOTFULL((u))
1518#define DUK_DBLUNION_SET_NAN(d) DUK__DBLUNION_SET_NAN_NOTFULL((d))
1520#define DUK_DBLUNION_IS_NORMALIZED(u) \
1521 (!DUK_DBLUNION_IS_NAN((u)) || \
1522 DUK_DBLUNION_IS_NORMALIZED_NAN((u)))
1524#define DUK_DBLUNION_NORMALIZE_NAN_CHECK(u)
1525#define DUK_DBLUNION_IS_NAN(u) (DUK_ISNAN((u)->d))
1526#define DUK_DBLUNION_IS_NORMALIZED_NAN(u) (DUK_ISNAN((u)->d))
1527#define DUK_DBLUNION_IS_NORMALIZED(u) 1
1528#define DUK_DBLUNION_SET_NAN(u) do { \
1530 (u)->d = DUK_DOUBLE_NAN; \
1537#define DUK_DBLUNION_BSWAP64(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; \
1550#if defined(DUK_USE_DOUBLE_LE)
1551#define DUK_DBLUNION_DOUBLE_HTON(u) do { \
1552 duk_uint32_t duk__bswaptmp1, duk__bswaptmp2; \
1553 duk__bswaptmp1 = (u)->ui[0]; \
1554 duk__bswaptmp2 = (u)->ui[1]; \
1555 duk__bswaptmp1 = DUK_BSWAP32(duk__bswaptmp1); \
1556 duk__bswaptmp2 = DUK_BSWAP32(duk__bswaptmp2); \
1557 (u)->ui[0] = duk__bswaptmp2; \
1558 (u)->ui[1] = duk__bswaptmp1; \
1560#elif defined(DUK_USE_DOUBLE_ME)
1561#define DUK_DBLUNION_DOUBLE_HTON(u) do { \
1562 duk_uint32_t duk__bswaptmp1, duk__bswaptmp2; \
1563 duk__bswaptmp1 = (u)->ui[0]; \
1564 duk__bswaptmp2 = (u)->ui[1]; \
1565 duk__bswaptmp1 = DUK_BSWAP32(duk__bswaptmp1); \
1566 duk__bswaptmp2 = DUK_BSWAP32(duk__bswaptmp2); \
1567 (u)->ui[0] = duk__bswaptmp1; \
1568 (u)->ui[1] = duk__bswaptmp2; \
1570#elif defined(DUK_USE_DOUBLE_BE)
1571#define DUK_DBLUNION_DOUBLE_HTON(u) do { } while (0)
1573#error internal error, double endianness insane
1577#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 duk_bool_t duk_is_buffer_data(duk_context *ctx, duk_idx_t idx)
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_suspend(duk_context *ctx, duk_thread_state *state)
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 void duk_resume(duk_context *ctx, const duk_thread_state *state)
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