JSPluginExports.h 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525
  1. //
  2. // Copyright (c) 2014-2015, THUNDERBEAST GAMES LLC All rights reserved
  3. //
  4. // Permission is hereby granted, free of charge, to any person obtaining a copy
  5. // of this software and associated documentation files (the "Software"), to deal
  6. // in the Software without restriction, including without limitation the rights
  7. // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  8. // copies of the Software, and to permit persons to whom the Software is
  9. // furnished to do so, subject to the following conditions:
  10. //
  11. // The above copyright notice and this permission notice shall be included in
  12. // all copies or substantial portions of the Software.
  13. //
  14. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  15. // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  16. // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  17. // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  18. // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  19. // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  20. // THE SOFTWARE.
  21. //
  22. #pragma once
  23. #include <Duktape/duktape.h>
  24. #include <Duktape/duk_logging.h>
  25. namespace Atomic
  26. {
  27. #define ATOMIC_JSPLUGIN_VERSION 1
  28. // MUST MATCH AtomicPlugin.h definitions exactly (typedefs and JSVMImports struct layout)
  29. extern "C"
  30. {
  31. typedef duk_context* (*__duk_create_heap)(duk_alloc_function alloc_func,
  32. duk_realloc_function realloc_func,
  33. duk_free_function free_func,
  34. void *heap_udata,
  35. duk_fatal_function fatal_handler);
  36. typedef void(*__duk_destroy_heap)(duk_context *ctx);
  37. typedef void* (*__duk_alloc_raw)(duk_context *ctx, duk_size_t size);
  38. typedef void(*__duk_free_raw)(duk_context *ctx, void *ptr);
  39. typedef void* (*__duk_realloc_raw)(duk_context *ctx, void *ptr, duk_size_t size);
  40. typedef void* (*__duk_alloc)(duk_context *ctx, duk_size_t size);
  41. typedef void(*__duk_free)(duk_context *ctx, void *ptr);
  42. typedef void* (*__duk_realloc)(duk_context *ctx, void *ptr, duk_size_t size);
  43. typedef void(*__duk_get_memory_functions)(duk_context *ctx, duk_memory_functions *out_funcs);
  44. typedef void(*__duk_gc)(duk_context *ctx, duk_uint_t flags);
  45. typedef void(*__duk_throw_raw)(duk_context *ctx);
  46. typedef void(*__duk_fatal_raw)(duk_context *ctx, const char *err_msg);
  47. typedef void(*__duk_error_raw)(duk_context *ctx, duk_errcode_t err_code, const char *filename, duk_int_t line, const char *fmt, ...);
  48. typedef 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);
  49. typedef duk_bool_t(*__duk_is_strict_call)(duk_context *ctx);
  50. typedef duk_bool_t(*__duk_is_constructor_call)(duk_context *ctx);
  51. typedef duk_idx_t(*__duk_normalize_index)(duk_context *ctx, duk_idx_t index);
  52. typedef duk_idx_t(*__duk_require_normalize_index)(duk_context *ctx, duk_idx_t index);
  53. typedef duk_bool_t(*__duk_is_valid_index)(duk_context *ctx, duk_idx_t index);
  54. typedef void(*__duk_require_valid_index)(duk_context *ctx, duk_idx_t index);
  55. typedef duk_idx_t(*__duk_get_top)(duk_context *ctx);
  56. typedef void(*__duk_set_top)(duk_context *ctx, duk_idx_t index);
  57. typedef duk_idx_t(*__duk_get_top_index)(duk_context *ctx);
  58. typedef duk_idx_t(*__duk_require_top_index)(duk_context *ctx);
  59. typedef duk_bool_t(*__duk_check_stack)(duk_context *ctx, duk_idx_t extra);
  60. typedef void(*__duk_require_stack)(duk_context *ctx, duk_idx_t extra);
  61. typedef duk_bool_t(*__duk_check_stack_top)(duk_context *ctx, duk_idx_t top);
  62. typedef void(*__duk_require_stack_top)(duk_context *ctx, duk_idx_t top);
  63. typedef void(*__duk_swap)(duk_context *ctx, duk_idx_t index1, duk_idx_t index2);
  64. typedef void(*__duk_swap_top)(duk_context *ctx, duk_idx_t index);
  65. typedef void(*__duk_dup)(duk_context *ctx, duk_idx_t from_index);
  66. typedef void(*__duk_dup_top)(duk_context *ctx);
  67. typedef void(*__duk_insert)(duk_context *ctx, duk_idx_t to_index);
  68. typedef void(*__duk_replace)(duk_context *ctx, duk_idx_t to_index);
  69. typedef void(*__duk_copy)(duk_context *ctx, duk_idx_t from_index, duk_idx_t to_index);
  70. typedef void(*__duk_remove)(duk_context *ctx, duk_idx_t index);
  71. typedef void(*__duk_xcopymove_raw)(duk_context *to_ctx, duk_context *from_ctx, duk_idx_t count, duk_bool_t is_copy);
  72. typedef void(*__duk_push_undefined)(duk_context *ctx);
  73. typedef void(*__duk_push_null)(duk_context *ctx);
  74. typedef void(*__duk_push_boolean)(duk_context *ctx, duk_bool_t val);
  75. typedef void(*__duk_push_true)(duk_context *ctx);
  76. typedef void(*__duk_push_false)(duk_context *ctx);
  77. typedef void(*__duk_push_number)(duk_context *ctx, duk_double_t val);
  78. typedef void(*__duk_push_nan)(duk_context *ctx);
  79. typedef void(*__duk_push_int)(duk_context *ctx, duk_int_t val);
  80. typedef void(*__duk_push_uint)(duk_context *ctx, duk_uint_t val);
  81. typedef const char* (*__duk_push_string)(duk_context *ctx, const char *str);
  82. typedef const char* (*__duk_push_lstring)(duk_context *ctx, const char *str, duk_size_t len);
  83. typedef void(*__duk_push_pointer)(duk_context *ctx, void *p);
  84. typedef const char* (*__duk_push_sprintf)(duk_context *ctx, const char *fmt, ...);
  85. typedef const char* (*__duk_push_vsprintf)(duk_context *ctx, const char *fmt, va_list ap);
  86. typedef const char* (*__duk_push_string_file_raw)(duk_context *ctx, const char *path, duk_uint_t flags);
  87. typedef void(*__duk_push_this)(duk_context *ctx);
  88. typedef void(*__duk_push_current_function)(duk_context *ctx);
  89. typedef void(*__duk_push_current_thread)(duk_context *ctx);
  90. typedef void(*__duk_push_global_object)(duk_context *ctx);
  91. typedef void(*__duk_push_heap_stash)(duk_context *ctx);
  92. typedef void(*__duk_push_global_stash)(duk_context *ctx);
  93. typedef void(*__duk_push_thread_stash)(duk_context *ctx, duk_context *target_ctx);
  94. typedef duk_idx_t(*__duk_push_object)(duk_context *ctx);
  95. typedef duk_idx_t(*__duk_push_array)(duk_context *ctx);
  96. typedef duk_idx_t(*__duk_push_c_function)(duk_context *ctx, duk_c_function func, duk_idx_t nargs);
  97. typedef 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);
  98. typedef duk_idx_t(*__duk_push_thread_raw)(duk_context *ctx, duk_uint_t flags);
  99. typedef 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, ...);
  100. typedef 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);
  101. typedef void* (*__duk_push_buffer_raw)(duk_context *ctx, duk_size_t size, duk_small_uint_t flags);
  102. typedef duk_idx_t(*__duk_push_heapptr)(duk_context *ctx, void *ptr);
  103. typedef void(*__duk_pop)(duk_context *ctx);
  104. typedef void(*__duk_pop_n)(duk_context *ctx, duk_idx_t count);
  105. typedef void(*__duk_pop_2)(duk_context *ctx);
  106. typedef void(*__duk_pop_3)(duk_context *ctx);
  107. typedef duk_int_t(*__duk_get_type)(duk_context *ctx, duk_idx_t index);
  108. typedef duk_bool_t(*__duk_check_type)(duk_context *ctx, duk_idx_t index, duk_int_t type);
  109. typedef duk_uint_t(*__duk_get_type_mask)(duk_context *ctx, duk_idx_t index);
  110. typedef duk_bool_t(*__duk_check_type_mask)(duk_context *ctx, duk_idx_t index, duk_uint_t mask);
  111. typedef duk_bool_t(*__duk_is_undefined)(duk_context *ctx, duk_idx_t index);
  112. typedef duk_bool_t(*__duk_is_null)(duk_context *ctx, duk_idx_t index);
  113. typedef duk_bool_t(*__duk_is_null_or_undefined)(duk_context *ctx, duk_idx_t index);
  114. typedef duk_bool_t(*__duk_is_boolean)(duk_context *ctx, duk_idx_t index);
  115. typedef duk_bool_t(*__duk_is_number)(duk_context *ctx, duk_idx_t index);
  116. typedef duk_bool_t(*__duk_is_nan)(duk_context *ctx, duk_idx_t index);
  117. typedef duk_bool_t(*__duk_is_string)(duk_context *ctx, duk_idx_t index);
  118. typedef duk_bool_t(*__duk_is_object)(duk_context *ctx, duk_idx_t index);
  119. typedef duk_bool_t(*__duk_is_buffer)(duk_context *ctx, duk_idx_t index);
  120. typedef duk_bool_t(*__duk_is_pointer)(duk_context *ctx, duk_idx_t index);
  121. typedef duk_bool_t(*__duk_is_lightfunc)(duk_context *ctx, duk_idx_t index);
  122. typedef duk_bool_t(*__duk_is_array)(duk_context *ctx, duk_idx_t index);
  123. typedef duk_bool_t(*__duk_is_function)(duk_context *ctx, duk_idx_t index);
  124. typedef duk_bool_t(*__duk_is_c_function)(duk_context *ctx, duk_idx_t index);
  125. typedef duk_bool_t(*__duk_is_ecmascript_function)(duk_context *ctx, duk_idx_t index);
  126. typedef duk_bool_t(*__duk_is_bound_function)(duk_context *ctx, duk_idx_t index);
  127. typedef duk_bool_t(*__duk_is_thread)(duk_context *ctx, duk_idx_t index);
  128. typedef duk_bool_t(*__duk_is_callable)(duk_context *ctx, duk_idx_t index);
  129. typedef duk_bool_t(*__duk_is_dynamic_buffer)(duk_context *ctx, duk_idx_t index);
  130. typedef duk_bool_t(*__duk_is_fixed_buffer)(duk_context *ctx, duk_idx_t index);
  131. typedef duk_bool_t(*__duk_is_primitive)(duk_context *ctx, duk_idx_t index);
  132. typedef duk_errcode_t(*__duk_get_error_code)(duk_context *ctx, duk_idx_t index);
  133. typedef duk_bool_t(*__duk_get_boolean)(duk_context *ctx, duk_idx_t index);
  134. typedef duk_double_t(*__duk_get_number)(duk_context *ctx, duk_idx_t index);
  135. typedef duk_int_t(*__duk_get_int)(duk_context *ctx, duk_idx_t index);
  136. typedef duk_uint_t(*__duk_get_uint)(duk_context *ctx, duk_idx_t index);
  137. typedef const char *(*__duk_get_string)(duk_context *ctx, duk_idx_t index);
  138. typedef const char *(*__duk_get_lstring)(duk_context *ctx, duk_idx_t index, duk_size_t *out_len);
  139. typedef void *(*__duk_get_buffer)(duk_context *ctx, duk_idx_t index, duk_size_t *out_size);
  140. typedef void *(*__duk_get_pointer)(duk_context *ctx, duk_idx_t index);
  141. typedef duk_c_function(*__duk_get_c_function)(duk_context *ctx, duk_idx_t index);
  142. typedef duk_context *(*__duk_get_context)(duk_context *ctx, duk_idx_t index);
  143. typedef void *(*__duk_get_heapptr)(duk_context *ctx, duk_idx_t index);
  144. typedef duk_size_t(*__duk_get_length)(duk_context *ctx, duk_idx_t index);
  145. typedef void(*__duk_require_undefined)(duk_context *ctx, duk_idx_t index);
  146. typedef void(*__duk_require_null)(duk_context *ctx, duk_idx_t index);
  147. typedef duk_bool_t(*__duk_require_boolean)(duk_context *ctx, duk_idx_t index);
  148. typedef duk_double_t(*__duk_require_number)(duk_context *ctx, duk_idx_t index);
  149. typedef duk_int_t(*__duk_require_int)(duk_context *ctx, duk_idx_t index);
  150. typedef duk_uint_t(*__duk_require_uint)(duk_context *ctx, duk_idx_t index);
  151. typedef const char *(*__duk_require_string)(duk_context *ctx, duk_idx_t index);
  152. typedef const char *(*__duk_require_lstring)(duk_context *ctx, duk_idx_t index, duk_size_t *out_len);
  153. typedef void *(*__duk_require_buffer)(duk_context *ctx, duk_idx_t index, duk_size_t *out_size);
  154. typedef void *(*__duk_require_pointer)(duk_context *ctx, duk_idx_t index);
  155. typedef duk_c_function(*__duk_require_c_function)(duk_context *ctx, duk_idx_t index);
  156. typedef duk_context *(*__duk_require_context)(duk_context *ctx, duk_idx_t index);
  157. typedef void *(*__duk_require_heapptr)(duk_context *ctx, duk_idx_t index);
  158. typedef void(*__duk_to_undefined)(duk_context *ctx, duk_idx_t index);
  159. typedef void(*__duk_to_null)(duk_context *ctx, duk_idx_t index);
  160. typedef duk_bool_t(*__duk_to_boolean)(duk_context *ctx, duk_idx_t index);
  161. typedef duk_double_t(*__duk_to_number)(duk_context *ctx, duk_idx_t index);
  162. typedef duk_int_t(*__duk_to_int)(duk_context *ctx, duk_idx_t index);
  163. typedef duk_uint_t(*__duk_to_uint)(duk_context *ctx, duk_idx_t index);
  164. typedef duk_int32_t(*__duk_to_int32)(duk_context *ctx, duk_idx_t index);
  165. typedef duk_uint32_t(*__duk_to_uint32)(duk_context *ctx, duk_idx_t index);
  166. typedef duk_uint16_t(*__duk_to_uint16)(duk_context *ctx, duk_idx_t index);
  167. typedef const char *(*__duk_to_string)(duk_context *ctx, duk_idx_t index);
  168. typedef const char *(*__duk_to_lstring)(duk_context *ctx, duk_idx_t index, duk_size_t *out_len);
  169. typedef void *(*__duk_to_buffer_raw)(duk_context *ctx, duk_idx_t index, duk_size_t *out_size, duk_uint_t flags);
  170. typedef void *(*__duk_to_pointer)(duk_context *ctx, duk_idx_t index);
  171. typedef void(*__duk_to_object)(duk_context *ctx, duk_idx_t index);
  172. typedef void(*__duk_to_defaultvalue)(duk_context *ctx, duk_idx_t index, duk_int_t hint);
  173. typedef void(*__duk_to_primitive)(duk_context *ctx, duk_idx_t index, duk_int_t hint);
  174. typedef const char *(*__duk_safe_to_lstring)(duk_context *ctx, duk_idx_t index, duk_size_t *out_len);
  175. typedef const char *(*__duk_base64_encode)(duk_context *ctx, duk_idx_t index);
  176. typedef void(*__duk_base64_decode)(duk_context *ctx, duk_idx_t index);
  177. typedef const char *(*__duk_hex_encode)(duk_context *ctx, duk_idx_t index);
  178. typedef void(*__duk_hex_decode)(duk_context *ctx, duk_idx_t index);
  179. typedef const char *(*__duk_json_encode)(duk_context *ctx, duk_idx_t index);
  180. typedef void(*__duk_json_decode)(duk_context *ctx, duk_idx_t index);
  181. typedef void *(*__duk_resize_buffer)(duk_context *ctx, duk_idx_t index, duk_size_t new_size);
  182. typedef duk_bool_t(*__duk_get_prop)(duk_context *ctx, duk_idx_t obj_index);
  183. typedef duk_bool_t(*__duk_get_prop_string)(duk_context *ctx, duk_idx_t obj_index, const char *key);
  184. typedef duk_bool_t(*__duk_get_prop_index)(duk_context *ctx, duk_idx_t obj_index, duk_uarridx_t arr_index);
  185. typedef duk_bool_t(*__duk_put_prop)(duk_context *ctx, duk_idx_t obj_index);
  186. typedef duk_bool_t(*__duk_put_prop_string)(duk_context *ctx, duk_idx_t obj_index, const char *key);
  187. typedef duk_bool_t(*__duk_put_prop_index)(duk_context *ctx, duk_idx_t obj_index, duk_uarridx_t arr_index);
  188. typedef duk_bool_t(*__duk_del_prop)(duk_context *ctx, duk_idx_t obj_index);
  189. typedef duk_bool_t(*__duk_del_prop_string)(duk_context *ctx, duk_idx_t obj_index, const char *key);
  190. typedef duk_bool_t(*__duk_del_prop_index)(duk_context *ctx, duk_idx_t obj_index, duk_uarridx_t arr_index);
  191. typedef duk_bool_t(*__duk_has_prop)(duk_context *ctx, duk_idx_t obj_index);
  192. typedef duk_bool_t(*__duk_has_prop_string)(duk_context *ctx, duk_idx_t obj_index, const char *key);
  193. typedef duk_bool_t(*__duk_has_prop_index)(duk_context *ctx, duk_idx_t obj_index, duk_uarridx_t arr_index);
  194. typedef void(*__duk_def_prop)(duk_context *ctx, duk_idx_t obj_index, duk_uint_t flags);
  195. typedef duk_bool_t(*__duk_get_global_string)(duk_context *ctx, const char *key);
  196. typedef duk_bool_t(*__duk_put_global_string)(duk_context *ctx, const char *key);
  197. typedef void(*__duk_get_prototype)(duk_context *ctx, duk_idx_t index);
  198. typedef void(*__duk_set_prototype)(duk_context *ctx, duk_idx_t index);
  199. typedef void(*__duk_get_finalizer)(duk_context *ctx, duk_idx_t index);
  200. typedef void(*__duk_set_finalizer)(duk_context *ctx, duk_idx_t index);
  201. typedef void(*__duk_set_global_object)(duk_context *ctx);
  202. typedef duk_int_t(*__duk_get_magic)(duk_context *ctx, duk_idx_t index);
  203. typedef void(*__duk_set_magic)(duk_context *ctx, duk_idx_t index, duk_int_t magic);
  204. typedef duk_int_t(*__duk_get_current_magic)(duk_context *ctx);
  205. typedef void(*__duk_put_function_list)(duk_context *ctx, duk_idx_t obj_index, const duk_function_list_entry *funcs);
  206. typedef void(*__duk_put_number_list)(duk_context *ctx, duk_idx_t obj_index, const duk_number_list_entry *numbers);
  207. typedef void(*__duk_compact)(duk_context *ctx, duk_idx_t obj_index);
  208. typedef void(*__duk_enum)(duk_context *ctx, duk_idx_t obj_index, duk_uint_t enum_flags);
  209. typedef duk_bool_t(*__duk_next)(duk_context *ctx, duk_idx_t enum_index, duk_bool_t get_value);
  210. typedef void(*__duk_concat)(duk_context *ctx, duk_idx_t count);
  211. typedef void(*__duk_join)(duk_context *ctx, duk_idx_t count);
  212. typedef void(*__duk_decode_string)(duk_context *ctx, duk_idx_t index, duk_decode_char_function callback, void *udata);
  213. typedef void(*__duk_map_string)(duk_context *ctx, duk_idx_t index, duk_map_char_function callback, void *udata);
  214. typedef void(*__duk_substring)(duk_context *ctx, duk_idx_t index, duk_size_t start_char_offset, duk_size_t end_char_offset);
  215. typedef void(*__duk_trim)(duk_context *ctx, duk_idx_t index);
  216. typedef duk_codepoint_t(*__duk_char_code_at)(duk_context *ctx, duk_idx_t index, duk_size_t char_offset);
  217. typedef duk_bool_t(*__duk_equals)(duk_context *ctx, duk_idx_t index1, duk_idx_t index2);
  218. typedef duk_bool_t(*__duk_strict_equals)(duk_context *ctx, duk_idx_t index1, duk_idx_t index2);
  219. typedef void(*__duk_call)(duk_context *ctx, duk_idx_t nargs);
  220. typedef void(*__duk_call_method)(duk_context *ctx, duk_idx_t nargs);
  221. typedef void(*__duk_call_prop)(duk_context *ctx, duk_idx_t obj_index, duk_idx_t nargs);
  222. typedef duk_int_t(*__duk_pcall)(duk_context *ctx, duk_idx_t nargs);
  223. typedef duk_int_t(*__duk_pcall_method)(duk_context *ctx, duk_idx_t nargs);
  224. typedef duk_int_t(*__duk_pcall_prop)(duk_context *ctx, duk_idx_t obj_index, duk_idx_t nargs);
  225. typedef void(*__duk_new)(duk_context *ctx, duk_idx_t nargs);
  226. typedef duk_int_t(*__duk_safe_call)(duk_context *ctx, duk_safe_call_function func, void* data, duk_idx_t nargs, duk_idx_t nrets);
  227. typedef duk_int_t(*__duk_eval_raw)(duk_context *ctx, const char *src_buffer, duk_size_t src_length, duk_uint_t flags);
  228. typedef duk_int_t(*__duk_compile_raw)(duk_context *ctx, const char *src_buffer, duk_size_t src_length, duk_uint_t flags);
  229. typedef void(*__duk_log)(duk_context *ctx, duk_int_t level, const char *fmt, ...);
  230. typedef void(*__duk_log_va)(duk_context *ctx, duk_int_t level, const char *fmt, va_list ap);
  231. typedef void(*__duk_push_context_dump)(duk_context *ctx);
  232. typedef void(*__duk_debugger_attach)(duk_context *ctx,
  233. duk_debug_read_function read_cb,
  234. duk_debug_write_function write_cb,
  235. duk_debug_peek_function peek_cb,
  236. duk_debug_read_flush_function read_flush_cb,
  237. duk_debug_write_flush_function write_flush_cb,
  238. duk_debug_request_function request_cb,
  239. duk_debug_detached_function detached_cb,
  240. void *udata);
  241. typedef void(*__duk_debugger_detach)(duk_context *ctx);
  242. typedef void(*__duk_debugger_cooperate)(duk_context *ctx);
  243. struct JSVMImports
  244. {
  245. __duk_create_heap duk_create_heap;
  246. __duk_destroy_heap duk_destroy_heap;
  247. __duk_alloc_raw duk_alloc_raw;
  248. __duk_free_raw duk_free_raw;
  249. __duk_realloc_raw duk_realloc_raw;
  250. __duk_alloc duk_alloc;
  251. __duk_free duk_free;
  252. __duk_realloc duk_realloc;
  253. __duk_get_memory_functions duk_get_memory_functions;
  254. __duk_gc duk_gc;
  255. __duk_throw_raw duk_throw_raw;
  256. __duk_fatal_raw duk_fatal_raw;
  257. __duk_error_raw duk_error_raw;
  258. __duk_error_va_raw duk_error_va_raw;
  259. __duk_is_strict_call duk_is_strict_call;
  260. __duk_is_constructor_call duk_is_constructor_call;
  261. __duk_normalize_index duk_normalize_index;
  262. __duk_require_normalize_index duk_require_normalize_index;
  263. __duk_is_valid_index duk_is_valid_index;
  264. __duk_require_valid_index duk_require_valid_index;
  265. __duk_get_top duk_get_top;
  266. __duk_set_top duk_set_top;
  267. __duk_get_top_index duk_get_top_index;
  268. __duk_require_top_index duk_require_top_index;
  269. __duk_check_stack duk_check_stack;
  270. __duk_require_stack duk_require_stack;
  271. __duk_check_stack_top duk_check_stack_top;
  272. __duk_require_stack_top duk_require_stack_top;
  273. __duk_swap duk_swap;
  274. __duk_swap_top duk_swap_top;
  275. __duk_dup duk_dup;
  276. __duk_dup_top duk_dup_top;
  277. __duk_insert duk_insert;
  278. __duk_replace duk_replace;
  279. __duk_copy duk_copy;
  280. __duk_remove duk_remove;
  281. __duk_xcopymove_raw duk_xcopymove_raw;
  282. __duk_push_undefined duk_push_undefined;
  283. __duk_push_null duk_push_null;
  284. __duk_push_boolean duk_push_boolean;
  285. __duk_push_true duk_push_true;
  286. __duk_push_false duk_push_false;
  287. __duk_push_number duk_push_number;
  288. __duk_push_nan duk_push_nan;
  289. __duk_push_int duk_push_int;
  290. __duk_push_uint duk_push_uint;
  291. __duk_push_string duk_push_string;
  292. __duk_push_lstring duk_push_lstring;
  293. __duk_push_pointer duk_push_pointer;
  294. __duk_push_sprintf duk_push_sprintf;
  295. __duk_push_vsprintf duk_push_vsprintf;
  296. __duk_push_string_file_raw duk_push_string_file_raw;
  297. __duk_push_this duk_push_this;
  298. __duk_push_current_function duk_push_current_function;
  299. __duk_push_current_thread duk_push_current_thread;
  300. __duk_push_global_object duk_push_global_object;
  301. __duk_push_heap_stash duk_push_heap_stash;
  302. __duk_push_global_stash duk_push_global_stash;
  303. __duk_push_thread_stash duk_push_thread_stash;
  304. __duk_push_object duk_push_object;
  305. __duk_push_array duk_push_array;
  306. __duk_push_c_function duk_push_c_function;
  307. __duk_push_c_lightfunc duk_push_c_lightfunc;
  308. __duk_push_thread_raw duk_push_thread_raw;
  309. __duk_push_error_object_raw duk_push_error_object_raw;
  310. __duk_push_error_object_va_raw duk_push_error_object_va_raw;
  311. __duk_push_buffer_raw duk_push_buffer_raw;
  312. __duk_push_heapptr duk_push_heapptr;
  313. __duk_pop duk_pop;
  314. __duk_pop_n duk_pop_n;
  315. __duk_pop_2 duk_pop_2;
  316. __duk_pop_3 duk_pop_3;
  317. __duk_get_type duk_get_type;
  318. __duk_check_type duk_check_type;
  319. __duk_get_type_mask duk_get_type_mask;
  320. __duk_check_type_mask duk_check_type_mask;
  321. __duk_is_undefined duk_is_undefined;
  322. __duk_is_null duk_is_null;
  323. __duk_is_null_or_undefined duk_is_null_or_undefined;
  324. __duk_is_boolean duk_is_boolean;
  325. __duk_is_number duk_is_number;
  326. __duk_is_nan duk_is_nan;
  327. __duk_is_string duk_is_string;
  328. __duk_is_object duk_is_object;
  329. __duk_is_buffer duk_is_buffer;
  330. __duk_is_pointer duk_is_pointer;
  331. __duk_is_lightfunc duk_is_lightfunc;
  332. __duk_is_array duk_is_array;
  333. __duk_is_function duk_is_function;
  334. __duk_is_c_function duk_is_c_function;
  335. __duk_is_ecmascript_function duk_is_ecmascript_function;
  336. __duk_is_bound_function duk_is_bound_function;
  337. __duk_is_thread duk_is_thread;
  338. __duk_is_callable duk_is_callable;
  339. __duk_is_dynamic_buffer duk_is_dynamic_buffer;
  340. __duk_is_fixed_buffer duk_is_fixed_buffer;
  341. __duk_is_primitive duk_is_primitive;
  342. __duk_get_error_code duk_get_error_code;
  343. __duk_get_boolean duk_get_boolean;
  344. __duk_get_number duk_get_number;
  345. __duk_get_int duk_get_int;
  346. __duk_get_uint duk_get_uint;
  347. __duk_get_string duk_get_string;
  348. __duk_get_lstring duk_get_lstring;
  349. __duk_get_buffer duk_get_buffer;
  350. __duk_get_pointer duk_get_pointer;
  351. __duk_get_c_function duk_get_c_function;
  352. __duk_get_context duk_get_context;
  353. __duk_get_heapptr duk_get_heapptr;
  354. __duk_get_length duk_get_length;
  355. __duk_require_undefined duk_require_undefined;
  356. __duk_require_null duk_require_null;
  357. __duk_require_boolean duk_require_boolean;
  358. __duk_require_number duk_require_number;
  359. __duk_require_int duk_require_int;
  360. __duk_require_uint duk_require_uint;
  361. __duk_require_string duk_require_string;
  362. __duk_require_lstring duk_require_lstring;
  363. __duk_require_buffer duk_require_buffer;
  364. __duk_require_pointer duk_require_pointer;
  365. __duk_require_c_function duk_require_c_function;
  366. __duk_require_context duk_require_context;
  367. __duk_require_heapptr duk_require_heapptr;
  368. __duk_to_undefined duk_to_undefined;
  369. __duk_to_null duk_to_null;
  370. __duk_to_boolean duk_to_boolean;
  371. __duk_to_number duk_to_number;
  372. __duk_to_int duk_to_int;
  373. __duk_to_uint duk_to_uint;
  374. __duk_to_int32 duk_to_int32;
  375. __duk_to_uint32 duk_to_uint32;
  376. __duk_to_uint16 duk_to_uint16;
  377. __duk_to_string duk_to_string;
  378. __duk_to_lstring duk_to_lstring;
  379. __duk_to_buffer_raw duk_to_buffer_raw;
  380. __duk_to_pointer duk_to_pointer;
  381. __duk_to_object duk_to_object;
  382. __duk_to_defaultvalue duk_to_defaultvalue;
  383. __duk_to_primitive duk_to_primitive;
  384. __duk_safe_to_lstring duk_safe_to_lstring;
  385. __duk_base64_encode duk_base64_encode;
  386. __duk_base64_decode duk_base64_decode;
  387. __duk_hex_encode duk_hex_encode;
  388. __duk_hex_decode duk_hex_decode;
  389. __duk_json_encode duk_json_encode;
  390. __duk_json_decode duk_json_decode;
  391. __duk_resize_buffer duk_resize_buffer;
  392. __duk_get_prop duk_get_prop;
  393. __duk_get_prop_string duk_get_prop_string;
  394. __duk_get_prop_index duk_get_prop_index;
  395. __duk_put_prop duk_put_prop;
  396. __duk_put_prop_string duk_put_prop_string;
  397. __duk_put_prop_index duk_put_prop_index;
  398. __duk_del_prop duk_del_prop;
  399. __duk_del_prop_string duk_del_prop_string;
  400. __duk_del_prop_index duk_del_prop_index;
  401. __duk_has_prop duk_has_prop;
  402. __duk_has_prop_string duk_has_prop_string;
  403. __duk_has_prop_index duk_has_prop_index;
  404. __duk_def_prop duk_def_prop;
  405. __duk_get_global_string duk_get_global_string;
  406. __duk_put_global_string duk_put_global_string;
  407. __duk_get_prototype duk_get_prototype;
  408. __duk_set_prototype duk_set_prototype;
  409. __duk_get_finalizer duk_get_finalizer;
  410. __duk_set_finalizer duk_set_finalizer;
  411. __duk_set_global_object duk_set_global_object;
  412. __duk_get_magic duk_get_magic;
  413. __duk_set_magic duk_set_magic;
  414. __duk_get_current_magic duk_get_current_magic;
  415. __duk_put_function_list duk_put_function_list;
  416. __duk_put_number_list duk_put_number_list;
  417. __duk_compact duk_compact;
  418. __duk_enum duk_enum;
  419. __duk_next duk_next;
  420. __duk_concat duk_concat;
  421. __duk_join duk_join;
  422. __duk_decode_string duk_decode_string;
  423. __duk_map_string duk_map_string;
  424. __duk_substring duk_substring;
  425. __duk_trim duk_trim;
  426. __duk_char_code_at duk_char_code_at;
  427. __duk_equals duk_equals;
  428. __duk_strict_equals duk_strict_equals;
  429. __duk_call duk_call;
  430. __duk_call_method duk_call_method;
  431. __duk_call_prop duk_call_prop;
  432. __duk_pcall duk_pcall;
  433. __duk_pcall_method duk_pcall_method;
  434. __duk_pcall_prop duk_pcall_prop;
  435. __duk_new duk_new;
  436. __duk_safe_call duk_safe_call;
  437. __duk_eval_raw duk_eval_raw;
  438. __duk_compile_raw duk_compile_raw;
  439. __duk_log duk_log;
  440. __duk_log_va duk_log_va;
  441. __duk_push_context_dump duk_push_context_dump;
  442. __duk_debugger_attach duk_debugger_attach;
  443. __duk_debugger_detach duk_debugger_detach;
  444. __duk_debugger_cooperate duk_debugger_cooperate;
  445. JSVMImports()
  446. {
  447. memset(this, 0, sizeof(JSVMImports));
  448. }
  449. };
  450. }
  451. }