AtomicPlugin__BASE.h 53 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497
  1. // PASTE CONTENTS OF duktape.h HERE
  2. // --------------------
  3. // BEGIN AtomicPlugin.h
  4. // --------------------
  5. #ifndef ATOMIC_PLUGIN_H
  6. #define ATOMIC_PLUGIN_H
  7. #ifdef _MSC_VER
  8. #define PLUGIN_EXPORT_API __declspec(dllexport)
  9. #else
  10. #define PLUGIN_EXPORT_API
  11. #endif
  12. #ifdef ATOMIC_PLUGIN_MAIN
  13. #define ATOMIC_JSPLUGIN_VERSION 1
  14. // MUST MATCH JSPlugin.cpp definitions exactly (typedefs and JSVMImports struct)
  15. extern "C"
  16. {
  17. typedef duk_context* (*__duk_create_heap)(duk_alloc_function alloc_func,
  18. duk_realloc_function realloc_func,
  19. duk_free_function free_func,
  20. void *heap_udata,
  21. duk_fatal_function fatal_handler);
  22. typedef void(*__duk_destroy_heap)(duk_context *ctx);
  23. typedef void* (*__duk_alloc_raw)(duk_context *ctx, duk_size_t size);
  24. typedef void(*__duk_free_raw)(duk_context *ctx, void *ptr);
  25. typedef void* (*__duk_realloc_raw)(duk_context *ctx, void *ptr, duk_size_t size);
  26. typedef void* (*__duk_alloc)(duk_context *ctx, duk_size_t size);
  27. typedef void(*__duk_free)(duk_context *ctx, void *ptr);
  28. typedef void* (*__duk_realloc)(duk_context *ctx, void *ptr, duk_size_t size);
  29. typedef void(*__duk_get_memory_functions)(duk_context *ctx, duk_memory_functions *out_funcs);
  30. typedef void(*__duk_gc)(duk_context *ctx, duk_uint_t flags);
  31. typedef void(*__duk_throw)(duk_context *ctx);
  32. typedef void(*__duk_fatal)(duk_context *ctx, duk_errcode_t err_code, const char *err_msg);
  33. typedef void(*__duk_error_raw)(duk_context *ctx, duk_errcode_t err_code, const char *filename, duk_int_t line, const char *fmt, ...);
  34. 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);
  35. typedef duk_bool_t(*__duk_is_strict_call)(duk_context *ctx);
  36. typedef duk_bool_t(*__duk_is_constructor_call)(duk_context *ctx);
  37. typedef duk_idx_t(*__duk_normalize_index)(duk_context *ctx, duk_idx_t index);
  38. typedef duk_idx_t(*__duk_require_normalize_index)(duk_context *ctx, duk_idx_t index);
  39. typedef duk_bool_t(*__duk_is_valid_index)(duk_context *ctx, duk_idx_t index);
  40. typedef void(*__duk_require_valid_index)(duk_context *ctx, duk_idx_t index);
  41. typedef duk_idx_t(*__duk_get_top)(duk_context *ctx);
  42. typedef void(*__duk_set_top)(duk_context *ctx, duk_idx_t index);
  43. typedef duk_idx_t(*__duk_get_top_index)(duk_context *ctx);
  44. typedef duk_idx_t(*__duk_require_top_index)(duk_context *ctx);
  45. typedef duk_bool_t(*__duk_check_stack)(duk_context *ctx, duk_idx_t extra);
  46. typedef void(*__duk_require_stack)(duk_context *ctx, duk_idx_t extra);
  47. typedef duk_bool_t(*__duk_check_stack_top)(duk_context *ctx, duk_idx_t top);
  48. typedef void(*__duk_require_stack_top)(duk_context *ctx, duk_idx_t top);
  49. typedef void(*__duk_swap)(duk_context *ctx, duk_idx_t index1, duk_idx_t index2);
  50. typedef void(*__duk_swap_top)(duk_context *ctx, duk_idx_t index);
  51. typedef void(*__duk_dup)(duk_context *ctx, duk_idx_t from_index);
  52. typedef void(*__duk_dup_top)(duk_context *ctx);
  53. typedef void(*__duk_insert)(duk_context *ctx, duk_idx_t to_index);
  54. typedef void(*__duk_replace)(duk_context *ctx, duk_idx_t to_index);
  55. typedef void(*__duk_copy)(duk_context *ctx, duk_idx_t from_index, duk_idx_t to_index);
  56. typedef void(*__duk_remove)(duk_context *ctx, duk_idx_t index);
  57. typedef void(*__duk_xcopymove_raw)(duk_context *to_ctx, duk_context *from_ctx, duk_idx_t count, duk_bool_t is_copy);
  58. typedef void(*__duk_push_undefined)(duk_context *ctx);
  59. typedef void(*__duk_push_null)(duk_context *ctx);
  60. typedef void(*__duk_push_boolean)(duk_context *ctx, duk_bool_t val);
  61. typedef void(*__duk_push_true)(duk_context *ctx);
  62. typedef void(*__duk_push_false)(duk_context *ctx);
  63. typedef void(*__duk_push_number)(duk_context *ctx, duk_double_t val);
  64. typedef void(*__duk_push_nan)(duk_context *ctx);
  65. typedef void(*__duk_push_int)(duk_context *ctx, duk_int_t val);
  66. typedef void(*__duk_push_uint)(duk_context *ctx, duk_uint_t val);
  67. typedef const char* (*__duk_push_string)(duk_context *ctx, const char *str);
  68. typedef const char* (*__duk_push_lstring)(duk_context *ctx, const char *str, duk_size_t len);
  69. typedef void(*__duk_push_pointer)(duk_context *ctx, void *p);
  70. typedef const char* (*__duk_push_sprintf)(duk_context *ctx, const char *fmt, ...);
  71. typedef const char* (*__duk_push_vsprintf)(duk_context *ctx, const char *fmt, va_list ap);
  72. typedef const char* (*__duk_push_string_file_raw)(duk_context *ctx, const char *path, duk_uint_t flags);
  73. typedef void(*__duk_push_this)(duk_context *ctx);
  74. typedef void(*__duk_push_current_function)(duk_context *ctx);
  75. typedef void(*__duk_push_current_thread)(duk_context *ctx);
  76. typedef void(*__duk_push_global_object)(duk_context *ctx);
  77. typedef void(*__duk_push_heap_stash)(duk_context *ctx);
  78. typedef void(*__duk_push_global_stash)(duk_context *ctx);
  79. typedef void(*__duk_push_thread_stash)(duk_context *ctx, duk_context *target_ctx);
  80. typedef duk_idx_t(*__duk_push_object)(duk_context *ctx);
  81. typedef duk_idx_t(*__duk_push_array)(duk_context *ctx);
  82. typedef duk_idx_t(*__duk_push_c_function)(duk_context *ctx, duk_c_function func, duk_idx_t nargs);
  83. 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);
  84. typedef duk_idx_t(*__duk_push_thread_raw)(duk_context *ctx, duk_uint_t flags);
  85. 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, ...);
  86. 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);
  87. typedef void* (*__duk_push_buffer_raw)(duk_context *ctx, duk_size_t size, duk_small_uint_t flags);
  88. typedef duk_idx_t(*__duk_push_heapptr)(duk_context *ctx, void *ptr);
  89. typedef void(*__duk_pop)(duk_context *ctx);
  90. typedef void(*__duk_pop_n)(duk_context *ctx, duk_idx_t count);
  91. typedef void(*__duk_pop_2)(duk_context *ctx);
  92. typedef void(*__duk_pop_3)(duk_context *ctx);
  93. typedef duk_int_t(*__duk_get_type)(duk_context *ctx, duk_idx_t index);
  94. typedef duk_bool_t(*__duk_check_type)(duk_context *ctx, duk_idx_t index, duk_int_t type);
  95. typedef duk_uint_t(*__duk_get_type_mask)(duk_context *ctx, duk_idx_t index);
  96. typedef duk_bool_t(*__duk_check_type_mask)(duk_context *ctx, duk_idx_t index, duk_uint_t mask);
  97. typedef duk_bool_t(*__duk_is_undefined)(duk_context *ctx, duk_idx_t index);
  98. typedef duk_bool_t(*__duk_is_null)(duk_context *ctx, duk_idx_t index);
  99. typedef duk_bool_t(*__duk_is_null_or_undefined)(duk_context *ctx, duk_idx_t index);
  100. typedef duk_bool_t(*__duk_is_boolean)(duk_context *ctx, duk_idx_t index);
  101. typedef duk_bool_t(*__duk_is_number)(duk_context *ctx, duk_idx_t index);
  102. typedef duk_bool_t(*__duk_is_nan)(duk_context *ctx, duk_idx_t index);
  103. typedef duk_bool_t(*__duk_is_string)(duk_context *ctx, duk_idx_t index);
  104. typedef duk_bool_t(*__duk_is_object)(duk_context *ctx, duk_idx_t index);
  105. typedef duk_bool_t(*__duk_is_buffer)(duk_context *ctx, duk_idx_t index);
  106. typedef duk_bool_t(*__duk_is_pointer)(duk_context *ctx, duk_idx_t index);
  107. typedef duk_bool_t(*__duk_is_lightfunc)(duk_context *ctx, duk_idx_t index);
  108. typedef duk_bool_t(*__duk_is_array)(duk_context *ctx, duk_idx_t index);
  109. typedef duk_bool_t(*__duk_is_function)(duk_context *ctx, duk_idx_t index);
  110. typedef duk_bool_t(*__duk_is_c_function)(duk_context *ctx, duk_idx_t index);
  111. typedef duk_bool_t(*__duk_is_ecmascript_function)(duk_context *ctx, duk_idx_t index);
  112. typedef duk_bool_t(*__duk_is_bound_function)(duk_context *ctx, duk_idx_t index);
  113. typedef duk_bool_t(*__duk_is_thread)(duk_context *ctx, duk_idx_t index);
  114. typedef duk_bool_t(*__duk_is_callable)(duk_context *ctx, duk_idx_t index);
  115. typedef duk_bool_t(*__duk_is_dynamic_buffer)(duk_context *ctx, duk_idx_t index);
  116. typedef duk_bool_t(*__duk_is_fixed_buffer)(duk_context *ctx, duk_idx_t index);
  117. typedef duk_bool_t(*__duk_is_primitive)(duk_context *ctx, duk_idx_t index);
  118. typedef duk_errcode_t(*__duk_get_error_code)(duk_context *ctx, duk_idx_t index);
  119. typedef duk_bool_t(*__duk_get_boolean)(duk_context *ctx, duk_idx_t index);
  120. typedef duk_double_t(*__duk_get_number)(duk_context *ctx, duk_idx_t index);
  121. typedef duk_int_t(*__duk_get_int)(duk_context *ctx, duk_idx_t index);
  122. typedef duk_uint_t(*__duk_get_uint)(duk_context *ctx, duk_idx_t index);
  123. typedef const char *(*__duk_get_string)(duk_context *ctx, duk_idx_t index);
  124. typedef const char *(*__duk_get_lstring)(duk_context *ctx, duk_idx_t index, duk_size_t *out_len);
  125. typedef void *(*__duk_get_buffer)(duk_context *ctx, duk_idx_t index, duk_size_t *out_size);
  126. typedef void *(*__duk_get_pointer)(duk_context *ctx, duk_idx_t index);
  127. typedef duk_c_function(*__duk_get_c_function)(duk_context *ctx, duk_idx_t index);
  128. typedef duk_context *(*__duk_get_context)(duk_context *ctx, duk_idx_t index);
  129. typedef void *(*__duk_get_heapptr)(duk_context *ctx, duk_idx_t index);
  130. typedef duk_size_t(*__duk_get_length)(duk_context *ctx, duk_idx_t index);
  131. typedef void(*__duk_require_undefined)(duk_context *ctx, duk_idx_t index);
  132. typedef void(*__duk_require_null)(duk_context *ctx, duk_idx_t index);
  133. typedef duk_bool_t(*__duk_require_boolean)(duk_context *ctx, duk_idx_t index);
  134. typedef duk_double_t(*__duk_require_number)(duk_context *ctx, duk_idx_t index);
  135. typedef duk_int_t(*__duk_require_int)(duk_context *ctx, duk_idx_t index);
  136. typedef duk_uint_t(*__duk_require_uint)(duk_context *ctx, duk_idx_t index);
  137. typedef const char *(*__duk_require_string)(duk_context *ctx, duk_idx_t index);
  138. typedef const char *(*__duk_require_lstring)(duk_context *ctx, duk_idx_t index, duk_size_t *out_len);
  139. typedef void *(*__duk_require_buffer)(duk_context *ctx, duk_idx_t index, duk_size_t *out_size);
  140. typedef void *(*__duk_require_pointer)(duk_context *ctx, duk_idx_t index);
  141. typedef duk_c_function(*__duk_require_c_function)(duk_context *ctx, duk_idx_t index);
  142. typedef duk_context *(*__duk_require_context)(duk_context *ctx, duk_idx_t index);
  143. typedef void *(*__duk_require_heapptr)(duk_context *ctx, duk_idx_t index);
  144. typedef void(*__duk_to_undefined)(duk_context *ctx, duk_idx_t index);
  145. typedef void(*__duk_to_null)(duk_context *ctx, duk_idx_t index);
  146. typedef duk_bool_t(*__duk_to_boolean)(duk_context *ctx, duk_idx_t index);
  147. typedef duk_double_t(*__duk_to_number)(duk_context *ctx, duk_idx_t index);
  148. typedef duk_int_t(*__duk_to_int)(duk_context *ctx, duk_idx_t index);
  149. typedef duk_uint_t(*__duk_to_uint)(duk_context *ctx, duk_idx_t index);
  150. typedef duk_int32_t(*__duk_to_int32)(duk_context *ctx, duk_idx_t index);
  151. typedef duk_uint32_t(*__duk_to_uint32)(duk_context *ctx, duk_idx_t index);
  152. typedef duk_uint16_t(*__duk_to_uint16)(duk_context *ctx, duk_idx_t index);
  153. typedef const char *(*__duk_to_string)(duk_context *ctx, duk_idx_t index);
  154. typedef const char *(*__duk_to_lstring)(duk_context *ctx, duk_idx_t index, duk_size_t *out_len);
  155. typedef void *(*__duk_to_buffer_raw)(duk_context *ctx, duk_idx_t index, duk_size_t *out_size, duk_uint_t flags);
  156. typedef void *(*__duk_to_pointer)(duk_context *ctx, duk_idx_t index);
  157. typedef void(*__duk_to_object)(duk_context *ctx, duk_idx_t index);
  158. typedef void(*__duk_to_defaultvalue)(duk_context *ctx, duk_idx_t index, duk_int_t hint);
  159. typedef void(*__duk_to_primitive)(duk_context *ctx, duk_idx_t index, duk_int_t hint);
  160. typedef const char *(*__duk_safe_to_lstring)(duk_context *ctx, duk_idx_t index, duk_size_t *out_len);
  161. typedef const char *(*__duk_base64_encode)(duk_context *ctx, duk_idx_t index);
  162. typedef void(*__duk_base64_decode)(duk_context *ctx, duk_idx_t index);
  163. typedef const char *(*__duk_hex_encode)(duk_context *ctx, duk_idx_t index);
  164. typedef void(*__duk_hex_decode)(duk_context *ctx, duk_idx_t index);
  165. typedef const char *(*__duk_json_encode)(duk_context *ctx, duk_idx_t index);
  166. typedef void(*__duk_json_decode)(duk_context *ctx, duk_idx_t index);
  167. typedef void *(*__duk_resize_buffer)(duk_context *ctx, duk_idx_t index, duk_size_t new_size);
  168. typedef duk_bool_t(*__duk_get_prop)(duk_context *ctx, duk_idx_t obj_index);
  169. typedef duk_bool_t(*__duk_get_prop_string)(duk_context *ctx, duk_idx_t obj_index, const char *key);
  170. typedef duk_bool_t(*__duk_get_prop_index)(duk_context *ctx, duk_idx_t obj_index, duk_uarridx_t arr_index);
  171. typedef duk_bool_t(*__duk_put_prop)(duk_context *ctx, duk_idx_t obj_index);
  172. typedef duk_bool_t(*__duk_put_prop_string)(duk_context *ctx, duk_idx_t obj_index, const char *key);
  173. typedef duk_bool_t(*__duk_put_prop_index)(duk_context *ctx, duk_idx_t obj_index, duk_uarridx_t arr_index);
  174. typedef duk_bool_t(*__duk_del_prop)(duk_context *ctx, duk_idx_t obj_index);
  175. typedef duk_bool_t(*__duk_del_prop_string)(duk_context *ctx, duk_idx_t obj_index, const char *key);
  176. typedef duk_bool_t(*__duk_del_prop_index)(duk_context *ctx, duk_idx_t obj_index, duk_uarridx_t arr_index);
  177. typedef duk_bool_t(*__duk_has_prop)(duk_context *ctx, duk_idx_t obj_index);
  178. typedef duk_bool_t(*__duk_has_prop_string)(duk_context *ctx, duk_idx_t obj_index, const char *key);
  179. typedef duk_bool_t(*__duk_has_prop_index)(duk_context *ctx, duk_idx_t obj_index, duk_uarridx_t arr_index);
  180. typedef void(*__duk_def_prop)(duk_context *ctx, duk_idx_t obj_index, duk_uint_t flags);
  181. typedef duk_bool_t(*__duk_get_global_string)(duk_context *ctx, const char *key);
  182. typedef duk_bool_t(*__duk_put_global_string)(duk_context *ctx, const char *key);
  183. typedef void(*__duk_get_prototype)(duk_context *ctx, duk_idx_t index);
  184. typedef void(*__duk_set_prototype)(duk_context *ctx, duk_idx_t index);
  185. typedef void(*__duk_get_finalizer)(duk_context *ctx, duk_idx_t index);
  186. typedef void(*__duk_set_finalizer)(duk_context *ctx, duk_idx_t index);
  187. typedef void(*__duk_set_global_object)(duk_context *ctx);
  188. typedef duk_int_t(*__duk_get_magic)(duk_context *ctx, duk_idx_t index);
  189. typedef void(*__duk_set_magic)(duk_context *ctx, duk_idx_t index, duk_int_t magic);
  190. typedef duk_int_t(*__duk_get_current_magic)(duk_context *ctx);
  191. typedef void(*__duk_put_function_list)(duk_context *ctx, duk_idx_t obj_index, const duk_function_list_entry *funcs);
  192. typedef void(*__duk_put_number_list)(duk_context *ctx, duk_idx_t obj_index, const duk_number_list_entry *numbers);
  193. typedef void(*__duk_compact)(duk_context *ctx, duk_idx_t obj_index);
  194. typedef void(*__duk_enum)(duk_context *ctx, duk_idx_t obj_index, duk_uint_t enum_flags);
  195. typedef duk_bool_t(*__duk_next)(duk_context *ctx, duk_idx_t enum_index, duk_bool_t get_value);
  196. typedef void(*__duk_concat)(duk_context *ctx, duk_idx_t count);
  197. typedef void(*__duk_join)(duk_context *ctx, duk_idx_t count);
  198. typedef void(*__duk_decode_string)(duk_context *ctx, duk_idx_t index, duk_decode_char_function callback, void *udata);
  199. typedef void(*__duk_map_string)(duk_context *ctx, duk_idx_t index, duk_map_char_function callback, void *udata);
  200. typedef void(*__duk_substring)(duk_context *ctx, duk_idx_t index, duk_size_t start_char_offset, duk_size_t end_char_offset);
  201. typedef void(*__duk_trim)(duk_context *ctx, duk_idx_t index);
  202. typedef duk_codepoint_t(*__duk_char_code_at)(duk_context *ctx, duk_idx_t index, duk_size_t char_offset);
  203. typedef duk_bool_t(*__duk_equals)(duk_context *ctx, duk_idx_t index1, duk_idx_t index2);
  204. typedef duk_bool_t(*__duk_strict_equals)(duk_context *ctx, duk_idx_t index1, duk_idx_t index2);
  205. typedef void(*__duk_call)(duk_context *ctx, duk_idx_t nargs);
  206. typedef void(*__duk_call_method)(duk_context *ctx, duk_idx_t nargs);
  207. typedef void(*__duk_call_prop)(duk_context *ctx, duk_idx_t obj_index, duk_idx_t nargs);
  208. typedef duk_int_t(*__duk_pcall)(duk_context *ctx, duk_idx_t nargs);
  209. typedef duk_int_t(*__duk_pcall_method)(duk_context *ctx, duk_idx_t nargs);
  210. typedef duk_int_t(*__duk_pcall_prop)(duk_context *ctx, duk_idx_t obj_index, duk_idx_t nargs);
  211. typedef void(*__duk_new)(duk_context *ctx, duk_idx_t nargs);
  212. typedef duk_int_t(*__duk_safe_call)(duk_context *ctx, duk_safe_call_function func, duk_idx_t nargs, duk_idx_t nrets);
  213. typedef duk_int_t(*__duk_eval_raw)(duk_context *ctx, const char *src_buffer, duk_size_t src_length, duk_uint_t flags);
  214. typedef duk_int_t(*__duk_compile_raw)(duk_context *ctx, const char *src_buffer, duk_size_t src_length, duk_uint_t flags);
  215. typedef void(*__duk_log)(duk_context *ctx, duk_int_t level, const char *fmt, ...);
  216. typedef void(*__duk_log_va)(duk_context *ctx, duk_int_t level, const char *fmt, va_list ap);
  217. typedef void(*__duk_push_context_dump)(duk_context *ctx);
  218. typedef void(*__duk_debugger_attach)(duk_context *ctx,
  219. duk_debug_read_function read_cb,
  220. duk_debug_write_function write_cb,
  221. duk_debug_peek_function peek_cb,
  222. duk_debug_read_flush_function read_flush_cb,
  223. duk_debug_write_flush_function write_flush_cb,
  224. duk_debug_detached_function detached_cb,
  225. void *udata);
  226. typedef void(*__duk_debugger_detach)(duk_context *ctx);
  227. typedef void(*__duk_debugger_cooperate)(duk_context *ctx);
  228. struct JSVMImports
  229. {
  230. __duk_create_heap duk_create_heap;
  231. __duk_destroy_heap duk_destroy_heap;
  232. __duk_alloc_raw duk_alloc_raw;
  233. __duk_free_raw duk_free_raw;
  234. __duk_realloc_raw duk_realloc_raw;
  235. __duk_alloc duk_alloc;
  236. __duk_free duk_free;
  237. __duk_realloc duk_realloc;
  238. __duk_get_memory_functions duk_get_memory_functions;
  239. __duk_gc duk_gc;
  240. __duk_throw duk_throw;
  241. __duk_fatal duk_fatal;
  242. __duk_error_raw duk_error_raw;
  243. __duk_error_va_raw duk_error_va_raw;
  244. __duk_is_strict_call duk_is_strict_call;
  245. __duk_is_constructor_call duk_is_constructor_call;
  246. __duk_normalize_index duk_normalize_index;
  247. __duk_require_normalize_index duk_require_normalize_index;
  248. __duk_is_valid_index duk_is_valid_index;
  249. __duk_require_valid_index duk_require_valid_index;
  250. __duk_get_top duk_get_top;
  251. __duk_set_top duk_set_top;
  252. __duk_get_top_index duk_get_top_index;
  253. __duk_require_top_index duk_require_top_index;
  254. __duk_check_stack duk_check_stack;
  255. __duk_require_stack duk_require_stack;
  256. __duk_check_stack_top duk_check_stack_top;
  257. __duk_require_stack_top duk_require_stack_top;
  258. __duk_swap duk_swap;
  259. __duk_swap_top duk_swap_top;
  260. __duk_dup duk_dup;
  261. __duk_dup_top duk_dup_top;
  262. __duk_insert duk_insert;
  263. __duk_replace duk_replace;
  264. __duk_copy duk_copy;
  265. __duk_remove duk_remove;
  266. __duk_xcopymove_raw duk_xcopymove_raw;
  267. __duk_push_undefined duk_push_undefined;
  268. __duk_push_null duk_push_null;
  269. __duk_push_boolean duk_push_boolean;
  270. __duk_push_true duk_push_true;
  271. __duk_push_false duk_push_false;
  272. __duk_push_number duk_push_number;
  273. __duk_push_nan duk_push_nan;
  274. __duk_push_int duk_push_int;
  275. __duk_push_uint duk_push_uint;
  276. __duk_push_string duk_push_string;
  277. __duk_push_lstring duk_push_lstring;
  278. __duk_push_pointer duk_push_pointer;
  279. __duk_push_sprintf duk_push_sprintf;
  280. __duk_push_vsprintf duk_push_vsprintf;
  281. __duk_push_string_file_raw duk_push_string_file_raw;
  282. __duk_push_this duk_push_this;
  283. __duk_push_current_function duk_push_current_function;
  284. __duk_push_current_thread duk_push_current_thread;
  285. __duk_push_global_object duk_push_global_object;
  286. __duk_push_heap_stash duk_push_heap_stash;
  287. __duk_push_global_stash duk_push_global_stash;
  288. __duk_push_thread_stash duk_push_thread_stash;
  289. __duk_push_object duk_push_object;
  290. __duk_push_array duk_push_array;
  291. __duk_push_c_function duk_push_c_function;
  292. __duk_push_c_lightfunc duk_push_c_lightfunc;
  293. __duk_push_thread_raw duk_push_thread_raw;
  294. __duk_push_error_object_raw duk_push_error_object_raw;
  295. __duk_push_error_object_va_raw duk_push_error_object_va_raw;
  296. __duk_push_buffer_raw duk_push_buffer_raw;
  297. __duk_push_heapptr duk_push_heapptr;
  298. __duk_pop duk_pop;
  299. __duk_pop_n duk_pop_n;
  300. __duk_pop_2 duk_pop_2;
  301. __duk_pop_3 duk_pop_3;
  302. __duk_get_type duk_get_type;
  303. __duk_check_type duk_check_type;
  304. __duk_get_type_mask duk_get_type_mask;
  305. __duk_check_type_mask duk_check_type_mask;
  306. __duk_is_undefined duk_is_undefined;
  307. __duk_is_null duk_is_null;
  308. __duk_is_null_or_undefined duk_is_null_or_undefined;
  309. __duk_is_boolean duk_is_boolean;
  310. __duk_is_number duk_is_number;
  311. __duk_is_nan duk_is_nan;
  312. __duk_is_string duk_is_string;
  313. __duk_is_object duk_is_object;
  314. __duk_is_buffer duk_is_buffer;
  315. __duk_is_pointer duk_is_pointer;
  316. __duk_is_lightfunc duk_is_lightfunc;
  317. __duk_is_array duk_is_array;
  318. __duk_is_function duk_is_function;
  319. __duk_is_c_function duk_is_c_function;
  320. __duk_is_ecmascript_function duk_is_ecmascript_function;
  321. __duk_is_bound_function duk_is_bound_function;
  322. __duk_is_thread duk_is_thread;
  323. __duk_is_callable duk_is_callable;
  324. __duk_is_dynamic_buffer duk_is_dynamic_buffer;
  325. __duk_is_fixed_buffer duk_is_fixed_buffer;
  326. __duk_is_primitive duk_is_primitive;
  327. __duk_get_error_code duk_get_error_code;
  328. __duk_get_boolean duk_get_boolean;
  329. __duk_get_number duk_get_number;
  330. __duk_get_int duk_get_int;
  331. __duk_get_uint duk_get_uint;
  332. __duk_get_string duk_get_string;
  333. __duk_get_lstring duk_get_lstring;
  334. __duk_get_buffer duk_get_buffer;
  335. __duk_get_pointer duk_get_pointer;
  336. __duk_get_c_function duk_get_c_function;
  337. __duk_get_context duk_get_context;
  338. __duk_get_heapptr duk_get_heapptr;
  339. __duk_get_length duk_get_length;
  340. __duk_require_undefined duk_require_undefined;
  341. __duk_require_null duk_require_null;
  342. __duk_require_boolean duk_require_boolean;
  343. __duk_require_number duk_require_number;
  344. __duk_require_int duk_require_int;
  345. __duk_require_uint duk_require_uint;
  346. __duk_require_string duk_require_string;
  347. __duk_require_lstring duk_require_lstring;
  348. __duk_require_buffer duk_require_buffer;
  349. __duk_require_pointer duk_require_pointer;
  350. __duk_require_c_function duk_require_c_function;
  351. __duk_require_context duk_require_context;
  352. __duk_require_heapptr duk_require_heapptr;
  353. __duk_to_undefined duk_to_undefined;
  354. __duk_to_null duk_to_null;
  355. __duk_to_boolean duk_to_boolean;
  356. __duk_to_number duk_to_number;
  357. __duk_to_int duk_to_int;
  358. __duk_to_uint duk_to_uint;
  359. __duk_to_int32 duk_to_int32;
  360. __duk_to_uint32 duk_to_uint32;
  361. __duk_to_uint16 duk_to_uint16;
  362. __duk_to_string duk_to_string;
  363. __duk_to_lstring duk_to_lstring;
  364. __duk_to_buffer_raw duk_to_buffer_raw;
  365. __duk_to_pointer duk_to_pointer;
  366. __duk_to_object duk_to_object;
  367. __duk_to_defaultvalue duk_to_defaultvalue;
  368. __duk_to_primitive duk_to_primitive;
  369. __duk_safe_to_lstring duk_safe_to_lstring;
  370. __duk_base64_encode duk_base64_encode;
  371. __duk_base64_decode duk_base64_decode;
  372. __duk_hex_encode duk_hex_encode;
  373. __duk_hex_decode duk_hex_decode;
  374. __duk_json_encode duk_json_encode;
  375. __duk_json_decode duk_json_decode;
  376. __duk_resize_buffer duk_resize_buffer;
  377. __duk_get_prop duk_get_prop;
  378. __duk_get_prop_string duk_get_prop_string;
  379. __duk_get_prop_index duk_get_prop_index;
  380. __duk_put_prop duk_put_prop;
  381. __duk_put_prop_string duk_put_prop_string;
  382. __duk_put_prop_index duk_put_prop_index;
  383. __duk_del_prop duk_del_prop;
  384. __duk_del_prop_string duk_del_prop_string;
  385. __duk_del_prop_index duk_del_prop_index;
  386. __duk_has_prop duk_has_prop;
  387. __duk_has_prop_string duk_has_prop_string;
  388. __duk_has_prop_index duk_has_prop_index;
  389. __duk_def_prop duk_def_prop;
  390. __duk_get_global_string duk_get_global_string;
  391. __duk_put_global_string duk_put_global_string;
  392. __duk_get_prototype duk_get_prototype;
  393. __duk_set_prototype duk_set_prototype;
  394. __duk_get_finalizer duk_get_finalizer;
  395. __duk_set_finalizer duk_set_finalizer;
  396. __duk_set_global_object duk_set_global_object;
  397. __duk_get_magic duk_get_magic;
  398. __duk_set_magic duk_set_magic;
  399. __duk_get_current_magic duk_get_current_magic;
  400. __duk_put_function_list duk_put_function_list;
  401. __duk_put_number_list duk_put_number_list;
  402. __duk_compact duk_compact;
  403. __duk_enum duk_enum;
  404. __duk_next duk_next;
  405. __duk_concat duk_concat;
  406. __duk_join duk_join;
  407. __duk_decode_string duk_decode_string;
  408. __duk_map_string duk_map_string;
  409. __duk_substring duk_substring;
  410. __duk_trim duk_trim;
  411. __duk_char_code_at duk_char_code_at;
  412. __duk_equals duk_equals;
  413. __duk_strict_equals duk_strict_equals;
  414. __duk_call duk_call;
  415. __duk_call_method duk_call_method;
  416. __duk_call_prop duk_call_prop;
  417. __duk_pcall duk_pcall;
  418. __duk_pcall_method duk_pcall_method;
  419. __duk_pcall_prop duk_pcall_prop;
  420. __duk_new duk_new;
  421. __duk_safe_call duk_safe_call;
  422. __duk_eval_raw duk_eval_raw;
  423. __duk_compile_raw duk_compile_raw;
  424. __duk_log duk_log;
  425. __duk_log_va duk_log_va;
  426. __duk_push_context_dump duk_push_context_dump;
  427. __duk_debugger_attach duk_debugger_attach;
  428. __duk_debugger_detach duk_debugger_detach;
  429. __duk_debugger_cooperate duk_debugger_cooperate;
  430. JSVMImports()
  431. {
  432. memset(this, 0, sizeof(this));
  433. }
  434. };
  435. static JSVMImports gJSVM;
  436. duk_context *duk_create_heap(duk_alloc_function alloc_func,
  437. duk_realloc_function realloc_func,
  438. duk_free_function free_func,
  439. void *heap_udata,
  440. duk_fatal_function fatal_handler)
  441. {
  442. return gJSVM.duk_create_heap(alloc_func, realloc_func, free_func, heap_udata, fatal_handler);
  443. }
  444. void duk_destroy_heap(duk_context *ctx)
  445. {
  446. gJSVM.duk_destroy_heap(ctx);
  447. }
  448. //----------------------------------------------------------------
  449. void *duk_alloc_raw(duk_context *ctx, duk_size_t size)
  450. {
  451. return gJSVM.duk_alloc_raw(ctx, size);
  452. }
  453. void duk_free_raw(duk_context *ctx, void *ptr)
  454. {
  455. gJSVM.duk_free_raw(ctx, ptr);
  456. }
  457. void *duk_realloc_raw(duk_context *ctx, void *ptr, duk_size_t size)
  458. {
  459. return gJSVM.duk_realloc_raw(ctx, ptr, size);
  460. }
  461. void *duk_alloc(duk_context *ctx, duk_size_t size)
  462. {
  463. return gJSVM.duk_alloc(ctx, size);
  464. }
  465. void duk_free(duk_context *ctx, void *ptr)
  466. {
  467. gJSVM.duk_free(ctx, ptr);
  468. }
  469. void *duk_realloc(duk_context *ctx, void *ptr, duk_size_t size)
  470. {
  471. return gJSVM.duk_realloc(ctx, ptr, size);
  472. }
  473. void duk_get_memory_functions(duk_context *ctx, duk_memory_functions *out_funcs)
  474. {
  475. gJSVM.duk_get_memory_functions(ctx, out_funcs);
  476. }
  477. void duk_gc(duk_context *ctx, duk_uint_t flags)
  478. {
  479. gJSVM.duk_gc(ctx, flags);
  480. }
  481. //----------------------------------------
  482. void duk_throw(duk_context *ctx)
  483. {
  484. gJSVM.duk_throw(ctx);
  485. }
  486. void duk_fatal(duk_context *ctx, duk_errcode_t err_code, const char *err_msg)
  487. {
  488. gJSVM.duk_fatal(ctx, err_code, err_msg);
  489. }
  490. void duk_error_raw(duk_context *ctx, duk_errcode_t err_code, const char *filename, duk_int_t line, const char *fmt, ...)
  491. {
  492. va_list arglist;
  493. va_start(arglist, fmt);
  494. gJSVM.duk_error_raw(ctx, err_code, filename, line, fmt, arglist);
  495. va_end(arglist);
  496. }
  497. 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)
  498. {
  499. gJSVM.duk_error_va_raw(ctx, err_code, filename, line, fmt, ap);
  500. }
  501. //--------------------------------------------
  502. duk_bool_t duk_is_strict_call(duk_context *ctx)
  503. {
  504. return gJSVM.duk_is_strict_call(ctx);
  505. }
  506. duk_bool_t duk_is_constructor_call(duk_context *ctx)
  507. {
  508. return gJSVM.duk_is_constructor_call(ctx);
  509. }
  510. //--------------------------------------------------------
  511. duk_idx_t duk_normalize_index(duk_context *ctx, duk_idx_t index)
  512. {
  513. return gJSVM.duk_normalize_index(ctx, index);
  514. }
  515. duk_idx_t duk_require_normalize_index(duk_context *ctx, duk_idx_t index)
  516. {
  517. return gJSVM.duk_require_normalize_index(ctx, index);
  518. }
  519. duk_bool_t duk_is_valid_index(duk_context *ctx, duk_idx_t index)
  520. {
  521. return gJSVM.duk_is_valid_index(ctx, index);
  522. }
  523. void duk_require_valid_index(duk_context *ctx, duk_idx_t index)
  524. {
  525. gJSVM.duk_require_valid_index(ctx, index);
  526. }
  527. duk_idx_t duk_get_top(duk_context *ctx)
  528. {
  529. return gJSVM.duk_get_top(ctx);
  530. }
  531. void duk_set_top(duk_context *ctx, duk_idx_t index)
  532. {
  533. gJSVM.duk_set_top(ctx, index);
  534. }
  535. duk_idx_t duk_get_top_index(duk_context *ctx)
  536. {
  537. return gJSVM.duk_get_top_index(ctx);
  538. }
  539. duk_idx_t duk_require_top_index(duk_context *ctx)
  540. {
  541. return gJSVM.duk_require_top_index(ctx);
  542. }
  543. duk_bool_t duk_check_stack(duk_context *ctx, duk_idx_t extra)
  544. {
  545. return gJSVM.duk_check_stack(ctx, extra);
  546. }
  547. void duk_require_stack(duk_context *ctx, duk_idx_t extra)
  548. {
  549. gJSVM.duk_require_stack(ctx, extra);
  550. }
  551. duk_bool_t duk_check_stack_top(duk_context *ctx, duk_idx_t top)
  552. {
  553. return gJSVM.duk_check_stack_top(ctx, top);
  554. }
  555. void duk_require_stack_top(duk_context *ctx, duk_idx_t top)
  556. {
  557. gJSVM.duk_require_stack_top(ctx, top);
  558. }
  559. void duk_swap(duk_context *ctx, duk_idx_t index1, duk_idx_t index2)
  560. {
  561. gJSVM.duk_swap(ctx, index1, index2);
  562. }
  563. void duk_swap_top(duk_context *ctx, duk_idx_t index)
  564. {
  565. gJSVM.duk_swap_top(ctx, index);
  566. }
  567. void duk_dup(duk_context *ctx, duk_idx_t from_index)
  568. {
  569. gJSVM.duk_dup(ctx, from_index);
  570. }
  571. void duk_dup_top(duk_context *ctx)
  572. {
  573. gJSVM.duk_dup_top(ctx);
  574. }
  575. void duk_insert(duk_context *ctx, duk_idx_t to_index)
  576. {
  577. gJSVM.duk_insert(ctx, to_index);
  578. }
  579. void duk_replace(duk_context *ctx, duk_idx_t to_index)
  580. {
  581. gJSVM.duk_replace(ctx, to_index);
  582. }
  583. void duk_copy(duk_context *ctx, duk_idx_t from_index, duk_idx_t to_index)
  584. {
  585. gJSVM.duk_copy(ctx, from_index, to_index);
  586. }
  587. void duk_remove(duk_context *ctx, duk_idx_t index)
  588. {
  589. gJSVM.duk_remove(ctx, index);
  590. }
  591. void duk_xcopymove_raw(duk_context *to_ctx, duk_context *from_ctx, duk_idx_t count, duk_bool_t is_copy)
  592. {
  593. gJSVM.duk_xcopymove_raw(to_ctx, from_ctx, count, is_copy);
  594. }
  595. // -------------------------------------------------
  596. void duk_push_undefined(duk_context *ctx)
  597. {
  598. gJSVM.duk_push_undefined(ctx);
  599. }
  600. void duk_push_null(duk_context *ctx)
  601. {
  602. gJSVM.duk_push_null(ctx);
  603. }
  604. void duk_push_boolean(duk_context *ctx, duk_bool_t val)
  605. {
  606. gJSVM.duk_push_boolean(ctx, val);
  607. }
  608. void duk_push_true(duk_context *ctx)
  609. {
  610. gJSVM.duk_push_true(ctx);
  611. }
  612. void duk_push_false(duk_context *ctx)
  613. {
  614. gJSVM.duk_push_false(ctx);
  615. }
  616. void duk_push_number(duk_context *ctx, duk_double_t val)
  617. {
  618. gJSVM.duk_push_number(ctx, val);
  619. }
  620. void duk_push_nan(duk_context *ctx)
  621. {
  622. gJSVM.duk_push_nan(ctx);
  623. }
  624. void duk_push_int(duk_context *ctx, duk_int_t val)
  625. {
  626. gJSVM.duk_push_int(ctx, val);
  627. }
  628. void duk_push_uint(duk_context *ctx, duk_uint_t val)
  629. {
  630. gJSVM.duk_push_uint(ctx, val);
  631. }
  632. const char *duk_push_string(duk_context *ctx, const char *str)
  633. {
  634. return gJSVM.duk_push_string(ctx, str);
  635. }
  636. const char *duk_push_lstring(duk_context *ctx, const char *str, duk_size_t len)
  637. {
  638. return gJSVM.duk_push_lstring(ctx, str, len);
  639. }
  640. void duk_push_pointer(duk_context *ctx, void *p)
  641. {
  642. gJSVM.duk_push_pointer(ctx, p);
  643. }
  644. const char *duk_push_sprintf(duk_context *ctx, const char *fmt, ...)
  645. {
  646. va_list arglist;
  647. va_start(arglist, fmt);
  648. const char* returnValue = gJSVM.duk_push_sprintf(ctx, fmt, arglist);
  649. va_end(arglist);
  650. return returnValue;
  651. }
  652. const char *duk_push_vsprintf(duk_context *ctx, const char *fmt, va_list ap)
  653. {
  654. return gJSVM.duk_push_vsprintf(ctx, fmt, ap);
  655. }
  656. const char *duk_push_string_file_raw(duk_context *ctx, const char *path, duk_uint_t flags)
  657. {
  658. return gJSVM.duk_push_string_file_raw(ctx, path, flags);
  659. }
  660. void duk_push_this(duk_context *ctx)
  661. {
  662. gJSVM.duk_push_this(ctx);
  663. }
  664. void duk_push_current_function(duk_context *ctx)
  665. {
  666. gJSVM.duk_push_current_function(ctx);
  667. }
  668. void duk_push_current_thread(duk_context *ctx)
  669. {
  670. gJSVM.duk_push_current_thread(ctx);
  671. }
  672. void duk_push_global_object(duk_context *ctx)
  673. {
  674. gJSVM.duk_push_global_object(ctx);
  675. }
  676. void duk_push_heap_stash(duk_context *ctx)
  677. {
  678. gJSVM.duk_push_heap_stash(ctx);
  679. }
  680. void duk_push_global_stash(duk_context *ctx)
  681. {
  682. gJSVM.duk_push_global_stash(ctx);
  683. }
  684. void duk_push_thread_stash(duk_context *ctx, duk_context *target_ctx)
  685. {
  686. gJSVM.duk_push_thread_stash(ctx, target_ctx);
  687. }
  688. duk_idx_t duk_push_object(duk_context *ctx)
  689. {
  690. return gJSVM.duk_push_object(ctx);
  691. }
  692. duk_idx_t duk_push_array(duk_context *ctx)
  693. {
  694. return gJSVM.duk_push_array(ctx);
  695. }
  696. duk_idx_t duk_push_c_function(duk_context *ctx, duk_c_function func, duk_idx_t nargs)
  697. {
  698. return gJSVM.duk_push_c_function(ctx, func, nargs);
  699. }
  700. 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)
  701. {
  702. return gJSVM.duk_push_c_lightfunc(ctx, func, nargs, length, magic);
  703. }
  704. duk_idx_t duk_push_thread_raw(duk_context *ctx, duk_uint_t flags)
  705. {
  706. return gJSVM.duk_push_thread_raw(ctx, flags);
  707. }
  708. 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, ...)
  709. {
  710. va_list arglist;
  711. va_start(arglist, fmt);
  712. duk_idx_t returnValue = gJSVM.duk_push_error_object_raw(ctx, err_code, filename, line, fmt, arglist);
  713. va_end(arglist);
  714. return returnValue;
  715. }
  716. 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)
  717. {
  718. return gJSVM.duk_push_error_object_va_raw(ctx, err_code, filename, line, fmt, ap);
  719. }
  720. void *duk_push_buffer_raw(duk_context *ctx, duk_size_t size, duk_small_uint_t flags)
  721. {
  722. return gJSVM.duk_push_buffer_raw(ctx, size, flags);
  723. }
  724. duk_idx_t duk_push_heapptr(duk_context *ctx, void *ptr)
  725. {
  726. return gJSVM.duk_push_heapptr(ctx, ptr);
  727. }
  728. // --------------------------------
  729. void duk_pop(duk_context *ctx)
  730. {
  731. gJSVM.duk_pop(ctx);
  732. }
  733. void duk_pop_n(duk_context *ctx, duk_idx_t count)
  734. {
  735. gJSVM.duk_pop_n(ctx, count);
  736. }
  737. void duk_pop_2(duk_context *ctx)
  738. {
  739. gJSVM.duk_pop_2(ctx);
  740. }
  741. void duk_pop_3(duk_context *ctx)
  742. {
  743. gJSVM.duk_pop_3(ctx);
  744. }
  745. duk_int_t duk_get_type(duk_context *ctx, duk_idx_t index)
  746. {
  747. return gJSVM.duk_get_type(ctx, index);
  748. }
  749. duk_bool_t duk_check_type(duk_context *ctx, duk_idx_t index, duk_int_t type)
  750. {
  751. return gJSVM.duk_check_type(ctx, index, type);
  752. }
  753. duk_uint_t duk_get_type_mask(duk_context *ctx, duk_idx_t index)
  754. {
  755. return gJSVM.duk_get_type_mask(ctx, index);
  756. }
  757. duk_bool_t duk_check_type_mask(duk_context *ctx, duk_idx_t index, duk_uint_t mask)
  758. {
  759. return gJSVM.duk_check_type_mask(ctx, index, mask);
  760. }
  761. duk_bool_t duk_is_undefined(duk_context *ctx, duk_idx_t index)
  762. {
  763. return gJSVM.duk_is_undefined(ctx, index);
  764. }
  765. duk_bool_t duk_is_null(duk_context *ctx, duk_idx_t index)
  766. {
  767. return gJSVM.duk_is_null(ctx, index);
  768. }
  769. duk_bool_t duk_is_null_or_undefined(duk_context *ctx, duk_idx_t index)
  770. {
  771. return gJSVM.duk_is_null_or_undefined(ctx, index);
  772. }
  773. duk_bool_t duk_is_boolean(duk_context *ctx, duk_idx_t index)
  774. {
  775. return gJSVM.duk_is_boolean(ctx, index);
  776. }
  777. duk_bool_t duk_is_number(duk_context *ctx, duk_idx_t index)
  778. {
  779. return gJSVM.duk_is_number(ctx, index);
  780. }
  781. duk_bool_t duk_is_nan(duk_context *ctx, duk_idx_t index)
  782. {
  783. return gJSVM.duk_is_nan(ctx, index);
  784. }
  785. duk_bool_t duk_is_string(duk_context *ctx, duk_idx_t index)
  786. {
  787. return gJSVM.duk_is_string(ctx, index);
  788. }
  789. duk_bool_t duk_is_object(duk_context *ctx, duk_idx_t index)
  790. {
  791. return gJSVM.duk_is_object(ctx, index);
  792. }
  793. duk_bool_t duk_is_buffer(duk_context *ctx, duk_idx_t index)
  794. {
  795. return gJSVM.duk_is_buffer(ctx, index);
  796. }
  797. duk_bool_t duk_is_pointer(duk_context *ctx, duk_idx_t index)
  798. {
  799. return gJSVM.duk_is_pointer(ctx, index);
  800. }
  801. duk_bool_t duk_is_lightfunc(duk_context *ctx, duk_idx_t index)
  802. {
  803. return gJSVM.duk_is_lightfunc(ctx, index);
  804. }
  805. duk_bool_t duk_is_array(duk_context *ctx, duk_idx_t index)
  806. {
  807. return gJSVM.duk_is_array(ctx, index);
  808. }
  809. duk_bool_t duk_is_function(duk_context *ctx, duk_idx_t index)
  810. {
  811. return gJSVM.duk_is_function(ctx, index);
  812. }
  813. duk_bool_t duk_is_c_function(duk_context *ctx, duk_idx_t index)
  814. {
  815. return gJSVM.duk_is_c_function(ctx, index);
  816. }
  817. duk_bool_t duk_is_ecmascript_function(duk_context *ctx, duk_idx_t index)
  818. {
  819. return gJSVM.duk_is_ecmascript_function(ctx, index);
  820. }
  821. duk_bool_t duk_is_bound_function(duk_context *ctx, duk_idx_t index)
  822. {
  823. return gJSVM.duk_is_bound_function(ctx, index);
  824. }
  825. duk_bool_t duk_is_thread(duk_context *ctx, duk_idx_t index)
  826. {
  827. return gJSVM.duk_is_thread(ctx, index);
  828. }
  829. duk_bool_t duk_is_callable(duk_context *ctx, duk_idx_t index)
  830. {
  831. return gJSVM.duk_is_callable(ctx, index);
  832. }
  833. duk_bool_t duk_is_dynamic_buffer(duk_context *ctx, duk_idx_t index)
  834. {
  835. return gJSVM.duk_is_dynamic_buffer(ctx, index);
  836. }
  837. duk_bool_t duk_is_fixed_buffer(duk_context *ctx, duk_idx_t index)
  838. {
  839. return gJSVM.duk_is_fixed_buffer(ctx, index);
  840. }
  841. duk_bool_t duk_is_primitive(duk_context *ctx, duk_idx_t index)
  842. {
  843. return gJSVM.duk_is_primitive(ctx, index);
  844. }
  845. duk_errcode_t duk_get_error_code(duk_context *ctx, duk_idx_t index)
  846. {
  847. return gJSVM.duk_get_error_code(ctx, index);
  848. }
  849. // ---------------------------------------------------------------
  850. duk_bool_t duk_get_boolean(duk_context *ctx, duk_idx_t index)
  851. {
  852. return gJSVM.duk_get_boolean(ctx, index);
  853. }
  854. duk_double_t duk_get_number(duk_context *ctx, duk_idx_t index)
  855. {
  856. return gJSVM.duk_get_number(ctx, index);
  857. }
  858. duk_int_t duk_get_int(duk_context *ctx, duk_idx_t index)
  859. {
  860. return gJSVM.duk_get_int(ctx, index);
  861. }
  862. duk_uint_t duk_get_uint(duk_context *ctx, duk_idx_t index)
  863. {
  864. return gJSVM.duk_get_uint(ctx, index);
  865. }
  866. const char *duk_get_string(duk_context *ctx, duk_idx_t index)
  867. {
  868. return gJSVM.duk_get_string(ctx, index);
  869. }
  870. const char *duk_get_lstring(duk_context *ctx, duk_idx_t index, duk_size_t *out_len)
  871. {
  872. return gJSVM.duk_get_lstring(ctx, index, out_len);
  873. }
  874. void *duk_get_buffer(duk_context *ctx, duk_idx_t index, duk_size_t *out_size)
  875. {
  876. return gJSVM.duk_get_buffer(ctx, index, out_size);
  877. }
  878. void *duk_get_pointer(duk_context *ctx, duk_idx_t index)
  879. {
  880. return gJSVM.duk_get_pointer(ctx, index);
  881. }
  882. duk_c_function duk_get_c_function(duk_context *ctx, duk_idx_t index)
  883. {
  884. return gJSVM.duk_get_c_function(ctx, index);
  885. }
  886. duk_context *duk_get_context(duk_context *ctx, duk_idx_t index)
  887. {
  888. return gJSVM.duk_get_context(ctx, index);
  889. }
  890. void *duk_get_heapptr(duk_context *ctx, duk_idx_t index)
  891. {
  892. return gJSVM.duk_get_heapptr(ctx, index);
  893. }
  894. duk_size_t duk_get_length(duk_context *ctx, duk_idx_t index)
  895. {
  896. return gJSVM.duk_get_length(ctx, index);
  897. }
  898. void duk_require_undefined(duk_context *ctx, duk_idx_t index)
  899. {
  900. gJSVM.duk_require_undefined(ctx, index);
  901. }
  902. void duk_require_null(duk_context *ctx, duk_idx_t index)
  903. {
  904. gJSVM.duk_require_null(ctx, index);
  905. }
  906. duk_bool_t duk_require_boolean(duk_context *ctx, duk_idx_t index)
  907. {
  908. return gJSVM.duk_require_boolean(ctx, index);
  909. }
  910. duk_double_t duk_require_number(duk_context *ctx, duk_idx_t index)
  911. {
  912. return gJSVM.duk_require_number(ctx, index);
  913. }
  914. duk_int_t duk_require_int(duk_context *ctx, duk_idx_t index)
  915. {
  916. return gJSVM.duk_require_int(ctx, index);
  917. }
  918. duk_uint_t duk_require_uint(duk_context *ctx, duk_idx_t index)
  919. {
  920. return gJSVM.duk_require_uint(ctx, index);
  921. }
  922. const char *duk_require_string(duk_context *ctx, duk_idx_t index)
  923. {
  924. return gJSVM.duk_require_string(ctx, index);
  925. }
  926. const char *duk_require_lstring(duk_context *ctx, duk_idx_t index, duk_size_t *out_len)
  927. {
  928. return gJSVM.duk_require_lstring(ctx, index, out_len);
  929. }
  930. void *duk_require_buffer(duk_context *ctx, duk_idx_t index, duk_size_t *out_size)
  931. {
  932. return gJSVM.duk_require_buffer(ctx, index, out_size);
  933. }
  934. void *duk_require_pointer(duk_context *ctx, duk_idx_t index)
  935. {
  936. return gJSVM.duk_require_pointer(ctx, index);
  937. }
  938. duk_c_function duk_require_c_function(duk_context *ctx, duk_idx_t index)
  939. {
  940. return gJSVM.duk_require_c_function(ctx, index);
  941. }
  942. duk_context *duk_require_context(duk_context *ctx, duk_idx_t index)
  943. {
  944. return gJSVM.duk_require_context(ctx, index);
  945. }
  946. void *duk_require_heapptr(duk_context *ctx, duk_idx_t index)
  947. {
  948. return gJSVM.duk_require_heapptr(ctx, index);
  949. }
  950. void duk_to_undefined(duk_context *ctx, duk_idx_t index)
  951. {
  952. gJSVM.duk_to_undefined(ctx, index);
  953. }
  954. void duk_to_null(duk_context *ctx, duk_idx_t index)
  955. {
  956. gJSVM.duk_to_null(ctx, index);
  957. }
  958. duk_bool_t duk_to_boolean(duk_context *ctx, duk_idx_t index)
  959. {
  960. return gJSVM.duk_to_boolean(ctx, index);
  961. }
  962. duk_double_t duk_to_number(duk_context *ctx, duk_idx_t index)
  963. {
  964. return gJSVM.duk_to_number(ctx, index);
  965. }
  966. duk_int_t duk_to_int(duk_context *ctx, duk_idx_t index)
  967. {
  968. return gJSVM.duk_to_int(ctx, index);
  969. }
  970. duk_uint_t duk_to_uint(duk_context *ctx, duk_idx_t index)
  971. {
  972. return gJSVM.duk_to_uint(ctx, index);
  973. }
  974. duk_int32_t duk_to_int32(duk_context *ctx, duk_idx_t index)
  975. {
  976. return gJSVM.duk_to_int32(ctx, index);
  977. }
  978. duk_uint32_t duk_to_uint32(duk_context *ctx, duk_idx_t index)
  979. {
  980. return gJSVM.duk_to_uint32(ctx, index);
  981. }
  982. duk_uint16_t duk_to_uint16(duk_context *ctx, duk_idx_t index)
  983. {
  984. return gJSVM.duk_to_uint16(ctx, index);
  985. }
  986. const char *duk_to_string(duk_context *ctx, duk_idx_t index)
  987. {
  988. return gJSVM.duk_to_string(ctx, index);
  989. }
  990. const char *duk_to_lstring(duk_context *ctx, duk_idx_t index, duk_size_t *out_len)
  991. {
  992. return gJSVM.duk_to_lstring(ctx, index, out_len);
  993. }
  994. void *duk_to_buffer_raw(duk_context *ctx, duk_idx_t index, duk_size_t *out_size, duk_uint_t flags)
  995. {
  996. return gJSVM.duk_to_buffer_raw(ctx, index, out_size, flags);
  997. }
  998. void *duk_to_pointer(duk_context *ctx, duk_idx_t index)
  999. {
  1000. return gJSVM.duk_to_pointer(ctx, index);
  1001. }
  1002. void duk_to_object(duk_context *ctx, duk_idx_t index)
  1003. {
  1004. gJSVM.duk_to_object(ctx, index);
  1005. }
  1006. void duk_to_defaultvalue(duk_context *ctx, duk_idx_t index, duk_int_t hint)
  1007. {
  1008. gJSVM.duk_to_defaultvalue(ctx, index, hint);
  1009. }
  1010. void duk_to_primitive(duk_context *ctx, duk_idx_t index, duk_int_t hint)
  1011. {
  1012. gJSVM.duk_to_primitive(ctx, index, hint);
  1013. }
  1014. const char *duk_safe_to_lstring(duk_context *ctx, duk_idx_t index, duk_size_t *out_len)
  1015. {
  1016. return gJSVM.duk_safe_to_lstring(ctx, index, out_len);
  1017. }
  1018. const char *duk_base64_encode(duk_context *ctx, duk_idx_t index)
  1019. {
  1020. return gJSVM.duk_base64_encode(ctx, index);
  1021. }
  1022. void duk_base64_decode(duk_context *ctx, duk_idx_t index)
  1023. {
  1024. gJSVM.duk_base64_decode(ctx, index);
  1025. }
  1026. const char *duk_hex_encode(duk_context *ctx, duk_idx_t index)
  1027. {
  1028. return gJSVM.duk_hex_encode(ctx, index);
  1029. }
  1030. void duk_hex_decode(duk_context *ctx, duk_idx_t index)
  1031. {
  1032. gJSVM.duk_hex_decode(ctx, index);
  1033. }
  1034. const char *duk_json_encode(duk_context *ctx, duk_idx_t index)
  1035. {
  1036. return gJSVM.duk_json_encode(ctx, index);
  1037. }
  1038. void duk_json_decode(duk_context *ctx, duk_idx_t index)
  1039. {
  1040. gJSVM.duk_json_decode(ctx, index);
  1041. }
  1042. void *duk_resize_buffer(duk_context *ctx, duk_idx_t index, duk_size_t new_size)
  1043. {
  1044. return gJSVM.duk_resize_buffer(ctx, index, new_size);
  1045. }
  1046. duk_bool_t duk_get_prop(duk_context *ctx, duk_idx_t obj_index)
  1047. {
  1048. return gJSVM.duk_get_prop(ctx, obj_index);
  1049. }
  1050. duk_bool_t duk_get_prop_string(duk_context *ctx, duk_idx_t obj_index, const char *key)
  1051. {
  1052. return gJSVM.duk_get_prop_string(ctx, obj_index, key);
  1053. }
  1054. duk_bool_t duk_get_prop_index(duk_context *ctx, duk_idx_t obj_index, duk_uarridx_t arr_index)
  1055. {
  1056. return gJSVM.duk_get_prop_index(ctx, obj_index, arr_index);
  1057. }
  1058. duk_bool_t duk_put_prop(duk_context *ctx, duk_idx_t obj_index)
  1059. {
  1060. return gJSVM.duk_put_prop(ctx, obj_index);
  1061. }
  1062. duk_bool_t duk_put_prop_string(duk_context *ctx, duk_idx_t obj_index, const char *key)
  1063. {
  1064. return gJSVM.duk_put_prop_string(ctx, obj_index, key);
  1065. }
  1066. duk_bool_t duk_put_prop_index(duk_context *ctx, duk_idx_t obj_index, duk_uarridx_t arr_index)
  1067. {
  1068. return gJSVM.duk_put_prop_index(ctx, obj_index, arr_index);
  1069. }
  1070. duk_bool_t duk_del_prop(duk_context *ctx, duk_idx_t obj_index)
  1071. {
  1072. return gJSVM.duk_del_prop(ctx, obj_index);
  1073. }
  1074. duk_bool_t duk_del_prop_string(duk_context *ctx, duk_idx_t obj_index, const char *key)
  1075. {
  1076. return gJSVM.duk_del_prop_string(ctx, obj_index, key);
  1077. }
  1078. duk_bool_t duk_del_prop_index(duk_context *ctx, duk_idx_t obj_index, duk_uarridx_t arr_index)
  1079. {
  1080. return gJSVM.duk_del_prop_index(ctx, obj_index, arr_index);
  1081. }
  1082. duk_bool_t duk_has_prop(duk_context *ctx, duk_idx_t obj_index)
  1083. {
  1084. return gJSVM.duk_has_prop(ctx, obj_index);
  1085. }
  1086. duk_bool_t duk_has_prop_string(duk_context *ctx, duk_idx_t obj_index, const char *key)
  1087. {
  1088. return gJSVM.duk_has_prop_string(ctx, obj_index, key);
  1089. }
  1090. duk_bool_t duk_has_prop_index(duk_context *ctx, duk_idx_t obj_index, duk_uarridx_t arr_index)
  1091. {
  1092. return gJSVM.duk_has_prop_index(ctx, obj_index, arr_index);
  1093. }
  1094. void duk_def_prop(duk_context *ctx, duk_idx_t obj_index, duk_uint_t flags)
  1095. {
  1096. gJSVM.duk_def_prop(ctx, obj_index, flags);
  1097. }
  1098. duk_bool_t duk_get_global_string(duk_context *ctx, const char *key)
  1099. {
  1100. return gJSVM.duk_get_global_string(ctx, key);
  1101. }
  1102. duk_bool_t duk_put_global_string(duk_context *ctx, const char *key)
  1103. {
  1104. return gJSVM.duk_put_global_string(ctx, key);
  1105. }
  1106. void duk_get_prototype(duk_context *ctx, duk_idx_t index)
  1107. {
  1108. gJSVM.duk_get_prototype(ctx, index);
  1109. }
  1110. void duk_set_prototype(duk_context *ctx, duk_idx_t index)
  1111. {
  1112. gJSVM.duk_set_prototype(ctx, index);
  1113. }
  1114. void duk_get_finalizer(duk_context *ctx, duk_idx_t index)
  1115. {
  1116. gJSVM.duk_get_finalizer(ctx, index);
  1117. }
  1118. void duk_set_finalizer(duk_context *ctx, duk_idx_t index)
  1119. {
  1120. gJSVM.duk_set_finalizer(ctx, index);
  1121. }
  1122. void duk_set_global_object(duk_context *ctx)
  1123. {
  1124. gJSVM.duk_set_global_object(ctx);
  1125. }
  1126. duk_int_t duk_get_magic(duk_context *ctx, duk_idx_t index)
  1127. {
  1128. return gJSVM.duk_get_magic(ctx, index);
  1129. }
  1130. void duk_set_magic(duk_context *ctx, duk_idx_t index, duk_int_t magic)
  1131. {
  1132. gJSVM.duk_set_magic(ctx, index, magic);
  1133. }
  1134. duk_int_t duk_get_current_magic(duk_context *ctx)
  1135. {
  1136. return gJSVM.duk_get_current_magic(ctx);
  1137. }
  1138. void duk_put_function_list(duk_context *ctx, duk_idx_t obj_index, const duk_function_list_entry *funcs)
  1139. {
  1140. gJSVM.duk_put_function_list(ctx, obj_index, funcs);
  1141. }
  1142. void duk_put_number_list(duk_context *ctx, duk_idx_t obj_index, const duk_number_list_entry *numbers)
  1143. {
  1144. gJSVM.duk_put_number_list(ctx, obj_index, numbers);
  1145. }
  1146. void duk_compact(duk_context *ctx, duk_idx_t obj_index)
  1147. {
  1148. gJSVM.duk_compact(ctx, obj_index);
  1149. }
  1150. void duk_enum(duk_context *ctx, duk_idx_t obj_index, duk_uint_t enum_flags)
  1151. {
  1152. gJSVM.duk_enum(ctx, obj_index, enum_flags);
  1153. }
  1154. duk_bool_t duk_next(duk_context *ctx, duk_idx_t enum_index, duk_bool_t get_value)
  1155. {
  1156. return gJSVM.duk_next(ctx, enum_index, get_value);
  1157. }
  1158. void duk_concat(duk_context *ctx, duk_idx_t count)
  1159. {
  1160. gJSVM.duk_concat(ctx, count);
  1161. }
  1162. void duk_join(duk_context *ctx, duk_idx_t count)
  1163. {
  1164. gJSVM.duk_join(ctx, count);
  1165. }
  1166. void duk_decode_string(duk_context *ctx, duk_idx_t index, duk_decode_char_function callback, void *udata)
  1167. {
  1168. gJSVM.duk_decode_string(ctx, index, callback, udata);
  1169. }
  1170. void duk_map_string(duk_context *ctx, duk_idx_t index, duk_map_char_function callback, void *udata)
  1171. {
  1172. gJSVM.duk_map_string(ctx, index, callback, udata);
  1173. }
  1174. void duk_substring(duk_context *ctx, duk_idx_t index, duk_size_t start_char_offset, duk_size_t end_char_offset)
  1175. {
  1176. gJSVM.duk_substring(ctx, index, start_char_offset, end_char_offset);
  1177. }
  1178. void duk_trim(duk_context *ctx, duk_idx_t index)
  1179. {
  1180. gJSVM.duk_trim(ctx, index);
  1181. }
  1182. duk_codepoint_t duk_char_code_at(duk_context *ctx, duk_idx_t index, duk_size_t char_offset)
  1183. {
  1184. return gJSVM.duk_char_code_at(ctx, index, char_offset);
  1185. }
  1186. duk_bool_t duk_equals(duk_context *ctx, duk_idx_t index1, duk_idx_t index2)
  1187. {
  1188. return gJSVM.duk_equals(ctx, index1, index2);
  1189. }
  1190. duk_bool_t duk_strict_equals(duk_context *ctx, duk_idx_t index1, duk_idx_t index2)
  1191. {
  1192. return gJSVM.duk_strict_equals(ctx, index1, index2);
  1193. }
  1194. void duk_call(duk_context *ctx, duk_idx_t nargs)
  1195. {
  1196. gJSVM.duk_call(ctx, nargs);
  1197. }
  1198. void duk_call_method(duk_context *ctx, duk_idx_t nargs)
  1199. {
  1200. gJSVM.duk_call_method(ctx, nargs);
  1201. }
  1202. void duk_call_prop(duk_context *ctx, duk_idx_t obj_index, duk_idx_t nargs)
  1203. {
  1204. gJSVM.duk_call_prop(ctx, obj_index, nargs);
  1205. }
  1206. duk_int_t duk_pcall(duk_context *ctx, duk_idx_t nargs)
  1207. {
  1208. return gJSVM.duk_pcall(ctx, nargs);
  1209. }
  1210. duk_int_t duk_pcall_method(duk_context *ctx, duk_idx_t nargs)
  1211. {
  1212. return gJSVM.duk_pcall_method(ctx, nargs);
  1213. }
  1214. duk_int_t duk_pcall_prop(duk_context *ctx, duk_idx_t obj_index, duk_idx_t nargs)
  1215. {
  1216. return gJSVM.duk_pcall_prop(ctx, obj_index, nargs);
  1217. }
  1218. void duk_new(duk_context *ctx, duk_idx_t nargs)
  1219. {
  1220. gJSVM.duk_new(ctx, nargs);
  1221. }
  1222. duk_int_t duk_safe_call(duk_context *ctx, duk_safe_call_function func, duk_idx_t nargs, duk_idx_t nrets)
  1223. {
  1224. return gJSVM.duk_safe_call(ctx, func, nargs, nrets);
  1225. }
  1226. duk_int_t duk_eval_raw(duk_context *ctx, const char *src_buffer, duk_size_t src_length, duk_uint_t flags)
  1227. {
  1228. return gJSVM.duk_eval_raw(ctx, src_buffer, src_length, flags);
  1229. }
  1230. duk_int_t duk_compile_raw(duk_context *ctx, const char *src_buffer, duk_size_t src_length, duk_uint_t flags)
  1231. {
  1232. return gJSVM.duk_compile_raw(ctx, src_buffer, src_length, flags);
  1233. }
  1234. void duk_log(duk_context *ctx, duk_int_t level, const char *fmt, ...)
  1235. {
  1236. va_list arglist;
  1237. va_start(arglist, fmt);
  1238. gJSVM.duk_log(ctx, level, fmt, arglist);
  1239. va_end(arglist);
  1240. }
  1241. void duk_log_va(duk_context *ctx, duk_int_t level, const char *fmt, va_list ap)
  1242. {
  1243. gJSVM.duk_log_va(ctx, level, fmt, ap);
  1244. }
  1245. void duk_push_context_dump(duk_context *ctx)
  1246. {
  1247. gJSVM.duk_push_context_dump(ctx);
  1248. }
  1249. void duk_debugger_attach(duk_context *ctx,
  1250. duk_debug_read_function read_cb,
  1251. duk_debug_write_function write_cb,
  1252. duk_debug_peek_function peek_cb,
  1253. duk_debug_read_flush_function read_flush_cb,
  1254. duk_debug_write_flush_function write_flush_cb,
  1255. duk_debug_detached_function detached_cb,
  1256. void *udata)
  1257. {
  1258. gJSVM.duk_debugger_attach(ctx, read_cb, write_cb, peek_cb, read_flush_cb, write_flush_cb, detached_cb, udata);
  1259. }
  1260. void duk_debugger_detach(duk_context *ctx)
  1261. {
  1262. gJSVM.duk_debugger_detach(ctx);
  1263. }
  1264. void duk_debugger_cooperate(duk_context *ctx)
  1265. {
  1266. gJSVM.duk_debugger_cooperate(ctx);
  1267. }
  1268. // End Duktape Bindings
  1269. bool PLUGIN_EXPORT_API atomic_plugin_validate(int version, void *jsvmImports, size_t jsvmImportsSize)
  1270. {
  1271. if (version != ATOMIC_JSPLUGIN_VERSION)
  1272. return false;
  1273. if (jsvmImportsSize != sizeof(JSVMImports))
  1274. return false;
  1275. gJSVM = *((JSVMImports*)jsvmImports);
  1276. return true;
  1277. }
  1278. }
  1279. #endif //ATOMIC_PLUGIN_MAIN
  1280. #endif // ATOMIC_PLUGIN_H