koffi 0.9.34 → 0.9.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (375) hide show
  1. package/CMakeLists.txt +2 -1
  2. package/README.md +16 -13
  3. package/package.json +5 -4
  4. package/src/call_arm32.cc +6 -2
  5. package/src/call_arm64.cc +6 -2
  6. package/src/call_x64_sysv.cc +6 -2
  7. package/src/call_x64_win.cc +6 -2
  8. package/src/call_x86.cc +7 -3
  9. package/src/ffi.cc +77 -59
  10. package/src/ffi.hh +2 -2
  11. package/src/parser.cc +246 -0
  12. package/src/parser.hh +63 -0
  13. package/src/util.cc +23 -0
  14. package/src/util.hh +3 -0
  15. package/test/registry/machines.json +70 -0
  16. package/test/test.js +116 -7
  17. package/test/tests/misc.js +16 -16
  18. package/test/tests/raylib.js +8 -8
  19. package/test/tests/sqlite.js +9 -9
  20. package/vendor/node-addon-api/CODE_OF_CONDUCT.md +4 -0
  21. package/vendor/node-addon-api/CONTRIBUTING.md +93 -0
  22. package/vendor/node-addon-api/appveyor.yml +37 -0
  23. package/vendor/node-addon-api/benchmark/README.md +47 -0
  24. package/vendor/node-addon-api/benchmark/binding.gyp +25 -0
  25. package/vendor/node-addon-api/benchmark/function_args.cc +217 -0
  26. package/vendor/node-addon-api/benchmark/function_args.js +60 -0
  27. package/vendor/node-addon-api/benchmark/index.js +34 -0
  28. package/vendor/node-addon-api/benchmark/property_descriptor.cc +91 -0
  29. package/vendor/node-addon-api/benchmark/property_descriptor.js +37 -0
  30. package/vendor/node-addon-api/doc/addon.md +163 -0
  31. package/vendor/node-addon-api/doc/array.md +81 -0
  32. package/vendor/node-addon-api/doc/array_buffer.md +155 -0
  33. package/vendor/node-addon-api/doc/async_context.md +86 -0
  34. package/vendor/node-addon-api/doc/async_operations.md +31 -0
  35. package/vendor/node-addon-api/doc/async_worker.md +427 -0
  36. package/vendor/node-addon-api/doc/async_worker_variants.md +557 -0
  37. package/vendor/node-addon-api/doc/bigint.md +97 -0
  38. package/vendor/node-addon-api/doc/boolean.md +68 -0
  39. package/vendor/node-addon-api/doc/buffer.md +150 -0
  40. package/vendor/node-addon-api/doc/callback_scope.md +54 -0
  41. package/vendor/node-addon-api/doc/callbackinfo.md +97 -0
  42. package/vendor/node-addon-api/doc/checker-tool.md +32 -0
  43. package/vendor/node-addon-api/doc/class_property_descriptor.md +123 -0
  44. package/vendor/node-addon-api/doc/cmake-js.md +68 -0
  45. package/vendor/node-addon-api/doc/conversion-tool.md +28 -0
  46. package/vendor/node-addon-api/doc/creating_a_release.md +62 -0
  47. package/vendor/node-addon-api/doc/dataview.md +248 -0
  48. package/vendor/node-addon-api/doc/date.md +68 -0
  49. package/vendor/node-addon-api/doc/env.md +196 -0
  50. package/vendor/node-addon-api/doc/error.md +120 -0
  51. package/vendor/node-addon-api/doc/error_handling.md +254 -0
  52. package/vendor/node-addon-api/doc/escapable_handle_scope.md +80 -0
  53. package/vendor/node-addon-api/doc/external.md +63 -0
  54. package/vendor/node-addon-api/doc/function.md +402 -0
  55. package/vendor/node-addon-api/doc/function_reference.md +238 -0
  56. package/vendor/node-addon-api/doc/generator.md +13 -0
  57. package/vendor/node-addon-api/doc/handle_scope.md +63 -0
  58. package/vendor/node-addon-api/doc/hierarchy.md +91 -0
  59. package/vendor/node-addon-api/doc/instance_wrap.md +408 -0
  60. package/vendor/node-addon-api/doc/maybe.md +76 -0
  61. package/vendor/node-addon-api/doc/memory_management.md +27 -0
  62. package/vendor/node-addon-api/doc/name.md +29 -0
  63. package/vendor/node-addon-api/doc/node-gyp.md +82 -0
  64. package/vendor/node-addon-api/doc/number.md +163 -0
  65. package/vendor/node-addon-api/doc/object.md +411 -0
  66. package/vendor/node-addon-api/doc/object_lifetime_management.md +83 -0
  67. package/vendor/node-addon-api/doc/object_reference.md +117 -0
  68. package/vendor/node-addon-api/doc/object_wrap.md +588 -0
  69. package/vendor/node-addon-api/doc/prebuild_tools.md +16 -0
  70. package/vendor/node-addon-api/doc/promises.md +79 -0
  71. package/vendor/node-addon-api/doc/property_descriptor.md +286 -0
  72. package/vendor/node-addon-api/doc/propertylvalue.md +50 -0
  73. package/vendor/node-addon-api/doc/range_error.md +59 -0
  74. package/vendor/node-addon-api/doc/reference.md +113 -0
  75. package/vendor/node-addon-api/doc/setup.md +110 -0
  76. package/vendor/node-addon-api/doc/string.md +93 -0
  77. package/vendor/node-addon-api/doc/symbol.md +61 -0
  78. package/vendor/node-addon-api/doc/threadsafe.md +121 -0
  79. package/vendor/node-addon-api/doc/threadsafe_function.md +290 -0
  80. package/vendor/node-addon-api/doc/type_error.md +59 -0
  81. package/vendor/node-addon-api/doc/typed_array.md +78 -0
  82. package/vendor/node-addon-api/doc/typed_array_of.md +137 -0
  83. package/vendor/node-addon-api/doc/typed_threadsafe_function.md +306 -0
  84. package/vendor/node-addon-api/doc/value.md +340 -0
  85. package/vendor/node-addon-api/doc/version_management.md +43 -0
  86. package/vendor/node-addon-api/package.json +415 -0
  87. package/vendor/node-addon-api/test/README.md +91 -0
  88. package/vendor/node-addon-api/test/addon.cc +36 -0
  89. package/vendor/node-addon-api/test/addon.js +11 -0
  90. package/vendor/node-addon-api/test/addon_build/index.js +49 -0
  91. package/vendor/node-addon-api/test/addon_build/tpl/addon.cc +17 -0
  92. package/vendor/node-addon-api/test/addon_build/tpl/binding.gyp +62 -0
  93. package/vendor/node-addon-api/test/addon_build/tpl/index.js +9 -0
  94. package/vendor/node-addon-api/test/addon_build/tpl/package.json +11 -0
  95. package/vendor/node-addon-api/test/addon_data.cc +99 -0
  96. package/vendor/node-addon-api/test/addon_data.js +46 -0
  97. package/vendor/node-addon-api/test/array_buffer.cc +243 -0
  98. package/vendor/node-addon-api/test/array_buffer.js +69 -0
  99. package/vendor/node-addon-api/test/async_context.cc +36 -0
  100. package/vendor/node-addon-api/test/async_context.js +122 -0
  101. package/vendor/node-addon-api/test/async_progress_queue_worker.cc +83 -0
  102. package/vendor/node-addon-api/test/async_progress_queue_worker.js +46 -0
  103. package/vendor/node-addon-api/test/async_progress_worker.cc +134 -0
  104. package/vendor/node-addon-api/test/async_progress_worker.js +61 -0
  105. package/vendor/node-addon-api/test/async_worker.cc +106 -0
  106. package/vendor/node-addon-api/test/async_worker.js +179 -0
  107. package/vendor/node-addon-api/test/async_worker_nocallback.js +13 -0
  108. package/vendor/node-addon-api/test/async_worker_persistent.cc +63 -0
  109. package/vendor/node-addon-api/test/async_worker_persistent.js +24 -0
  110. package/vendor/node-addon-api/test/basic_types/array.cc +40 -0
  111. package/vendor/node-addon-api/test/basic_types/array.js +35 -0
  112. package/vendor/node-addon-api/test/basic_types/boolean.cc +38 -0
  113. package/vendor/node-addon-api/test/basic_types/boolean.js +35 -0
  114. package/vendor/node-addon-api/test/basic_types/number.cc +99 -0
  115. package/vendor/node-addon-api/test/basic_types/number.js +114 -0
  116. package/vendor/node-addon-api/test/basic_types/value.cc +120 -0
  117. package/vendor/node-addon-api/test/basic_types/value.js +133 -0
  118. package/vendor/node-addon-api/test/bigint.cc +91 -0
  119. package/vendor/node-addon-api/test/bigint.js +53 -0
  120. package/vendor/node-addon-api/test/binding-swallowexcept.cc +12 -0
  121. package/vendor/node-addon-api/test/binding.cc +173 -0
  122. package/vendor/node-addon-api/test/binding.gyp +124 -0
  123. package/vendor/node-addon-api/test/buffer.cc +183 -0
  124. package/vendor/node-addon-api/test/buffer.js +69 -0
  125. package/vendor/node-addon-api/test/callbackscope.cc +22 -0
  126. package/vendor/node-addon-api/test/callbackscope.js +49 -0
  127. package/vendor/node-addon-api/test/common/index.js +114 -0
  128. package/vendor/node-addon-api/test/common/test_helper.h +71 -0
  129. package/vendor/node-addon-api/test/dataview/dataview.cc +48 -0
  130. package/vendor/node-addon-api/test/dataview/dataview.js +35 -0
  131. package/vendor/node-addon-api/test/dataview/dataview_read_write.cc +115 -0
  132. package/vendor/node-addon-api/test/dataview/dataview_read_write.js +90 -0
  133. package/vendor/node-addon-api/test/date.cc +44 -0
  134. package/vendor/node-addon-api/test/date.js +18 -0
  135. package/vendor/node-addon-api/test/env_cleanup.cc +88 -0
  136. package/vendor/node-addon-api/test/env_cleanup.js +56 -0
  137. package/vendor/node-addon-api/test/error.cc +287 -0
  138. package/vendor/node-addon-api/test/error.js +81 -0
  139. package/vendor/node-addon-api/test/error_handling_for_primitives.cc +13 -0
  140. package/vendor/node-addon-api/test/error_handling_for_primitives.js +29 -0
  141. package/vendor/node-addon-api/test/error_terminating_environment.js +95 -0
  142. package/vendor/node-addon-api/test/external.cc +81 -0
  143. package/vendor/node-addon-api/test/external.js +88 -0
  144. package/vendor/node-addon-api/test/function.cc +324 -0
  145. package/vendor/node-addon-api/test/function.js +133 -0
  146. package/vendor/node-addon-api/test/function_reference.cc +202 -0
  147. package/vendor/node-addon-api/test/function_reference.js +157 -0
  148. package/vendor/node-addon-api/test/globalObject/global_object.cc +61 -0
  149. package/vendor/node-addon-api/test/globalObject/global_object_delete_property.cc +31 -0
  150. package/vendor/node-addon-api/test/globalObject/global_object_delete_property.js +61 -0
  151. package/vendor/node-addon-api/test/globalObject/global_object_get_property.cc +40 -0
  152. package/vendor/node-addon-api/test/globalObject/global_object_get_property.js +57 -0
  153. package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.cc +28 -0
  154. package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.js +48 -0
  155. package/vendor/node-addon-api/test/globalObject/global_object_set_property.cc +31 -0
  156. package/vendor/node-addon-api/test/globalObject/global_object_set_property.js +58 -0
  157. package/vendor/node-addon-api/test/handlescope.cc +60 -0
  158. package/vendor/node-addon-api/test/handlescope.js +14 -0
  159. package/vendor/node-addon-api/test/index.js +159 -0
  160. package/vendor/node-addon-api/test/maybe/check.cc +23 -0
  161. package/vendor/node-addon-api/test/maybe/index.js +38 -0
  162. package/vendor/node-addon-api/test/memory_management.cc +17 -0
  163. package/vendor/node-addon-api/test/memory_management.js +9 -0
  164. package/vendor/node-addon-api/test/movable_callbacks.cc +23 -0
  165. package/vendor/node-addon-api/test/movable_callbacks.js +21 -0
  166. package/vendor/node-addon-api/test/name.cc +108 -0
  167. package/vendor/node-addon-api/test/name.js +59 -0
  168. package/vendor/node-addon-api/test/napi_child.js +14 -0
  169. package/vendor/node-addon-api/test/object/delete_property.cc +38 -0
  170. package/vendor/node-addon-api/test/object/delete_property.js +41 -0
  171. package/vendor/node-addon-api/test/object/finalizer.cc +29 -0
  172. package/vendor/node-addon-api/test/object/finalizer.js +28 -0
  173. package/vendor/node-addon-api/test/object/get_property.cc +34 -0
  174. package/vendor/node-addon-api/test/object/get_property.js +40 -0
  175. package/vendor/node-addon-api/test/object/has_own_property.cc +34 -0
  176. package/vendor/node-addon-api/test/object/has_own_property.js +34 -0
  177. package/vendor/node-addon-api/test/object/has_property.cc +38 -0
  178. package/vendor/node-addon-api/test/object/has_property.js +37 -0
  179. package/vendor/node-addon-api/test/object/object.cc +350 -0
  180. package/vendor/node-addon-api/test/object/object.js +217 -0
  181. package/vendor/node-addon-api/test/object/object_deprecated.cc +66 -0
  182. package/vendor/node-addon-api/test/object/object_deprecated.js +47 -0
  183. package/vendor/node-addon-api/test/object/object_freeze_seal.cc +25 -0
  184. package/vendor/node-addon-api/test/object/object_freeze_seal.js +61 -0
  185. package/vendor/node-addon-api/test/object/set_property.cc +45 -0
  186. package/vendor/node-addon-api/test/object/set_property.js +30 -0
  187. package/vendor/node-addon-api/test/object/subscript_operator.cc +58 -0
  188. package/vendor/node-addon-api/test/object/subscript_operator.js +17 -0
  189. package/vendor/node-addon-api/test/object_reference.cc +219 -0
  190. package/vendor/node-addon-api/test/object_reference.js +259 -0
  191. package/vendor/node-addon-api/test/objectwrap.cc +268 -0
  192. package/vendor/node-addon-api/test/objectwrap.js +284 -0
  193. package/vendor/node-addon-api/test/objectwrap_constructor_exception.cc +26 -0
  194. package/vendor/node-addon-api/test/objectwrap_constructor_exception.js +18 -0
  195. package/vendor/node-addon-api/test/objectwrap_function.cc +45 -0
  196. package/vendor/node-addon-api/test/objectwrap_function.js +22 -0
  197. package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.cc +30 -0
  198. package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.js +13 -0
  199. package/vendor/node-addon-api/test/objectwrap_removewrap.cc +45 -0
  200. package/vendor/node-addon-api/test/objectwrap_removewrap.js +40 -0
  201. package/vendor/node-addon-api/test/objectwrap_worker_thread.js +19 -0
  202. package/vendor/node-addon-api/test/promise.cc +29 -0
  203. package/vendor/node-addon-api/test/promise.js +18 -0
  204. package/vendor/node-addon-api/test/reference.cc +24 -0
  205. package/vendor/node-addon-api/test/reference.js +14 -0
  206. package/vendor/node-addon-api/test/run_script.cc +56 -0
  207. package/vendor/node-addon-api/test/run_script.js +45 -0
  208. package/vendor/node-addon-api/test/symbol.cc +79 -0
  209. package/vendor/node-addon-api/test/symbol.js +73 -0
  210. package/vendor/node-addon-api/test/testUtil.js +54 -0
  211. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.cc +195 -0
  212. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.js +188 -0
  213. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.cc +63 -0
  214. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.js +12 -0
  215. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.cc +115 -0
  216. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.js +14 -0
  217. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.cc +26 -0
  218. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.js +7 -0
  219. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.cc +225 -0
  220. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.js +59 -0
  221. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.cc +42 -0
  222. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.js +53 -0
  223. package/vendor/node-addon-api/test/thunking_manual.cc +140 -0
  224. package/vendor/node-addon-api/test/thunking_manual.js +17 -0
  225. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.cc +215 -0
  226. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.js +188 -0
  227. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.cc +68 -0
  228. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.js +12 -0
  229. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.cc +127 -0
  230. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.js +14 -0
  231. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.cc +28 -0
  232. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.js +7 -0
  233. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.cc +237 -0
  234. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.js +59 -0
  235. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.cc +53 -0
  236. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.js +53 -0
  237. package/vendor/node-addon-api/test/typedarray-bigint.js +58 -0
  238. package/vendor/node-addon-api/test/typedarray.cc +216 -0
  239. package/vendor/node-addon-api/test/typedarray.js +69 -0
  240. package/vendor/node-addon-api/test/version_management.cc +27 -0
  241. package/vendor/node-addon-api/test/version_management.js +31 -0
  242. package/vendor/node-addon-api/unit-test/README.md +28 -0
  243. package/vendor/node-addon-api/unit-test/binding-file-template.js +39 -0
  244. package/vendor/node-addon-api/unit-test/binding.gyp +72 -0
  245. package/vendor/node-addon-api/unit-test/exceptions.js +32 -0
  246. package/vendor/node-addon-api/unit-test/generate-binding-cc.js +61 -0
  247. package/vendor/node-addon-api/unit-test/injectTestParams.js +101 -0
  248. package/vendor/node-addon-api/unit-test/listOfTestModules.js +88 -0
  249. package/vendor/node-addon-api/unit-test/matchModules.js +65 -0
  250. package/vendor/node-addon-api/unit-test/setup.js +13 -0
  251. package/vendor/node-addon-api/unit-test/spawnTask.js +26 -0
  252. package/vendor/node-addon-api/unit-test/test.js +30 -0
  253. package/vendor/raylib/projects/VS2019/examples/audio_module_playing.vcxproj +387 -0
  254. package/vendor/raylib/projects/VS2019/examples/audio_multichannel_sound.vcxproj +387 -0
  255. package/vendor/raylib/projects/VS2019/examples/audio_music_stream.vcxproj +387 -0
  256. package/vendor/raylib/projects/VS2019/examples/audio_raw_stream.vcxproj +387 -0
  257. package/vendor/raylib/projects/VS2019/examples/audio_sound_loading.vcxproj +387 -0
  258. package/vendor/raylib/projects/VS2019/examples/core_2d_camera.vcxproj +387 -0
  259. package/vendor/raylib/projects/VS2019/examples/core_2d_camera_platformer.vcxproj +387 -0
  260. package/vendor/raylib/projects/VS2019/examples/core_3d_camera_first_person.vcxproj +387 -0
  261. package/vendor/raylib/projects/VS2019/examples/core_3d_camera_free.vcxproj +387 -0
  262. package/vendor/raylib/projects/VS2019/examples/core_3d_camera_mode.vcxproj +387 -0
  263. package/vendor/raylib/projects/VS2019/examples/core_3d_picking.vcxproj +387 -0
  264. package/vendor/raylib/projects/VS2019/examples/core_basic_window.vcxproj +387 -0
  265. package/vendor/raylib/projects/VS2019/examples/core_custom_logging.vcxproj +387 -0
  266. package/vendor/raylib/projects/VS2019/examples/core_drop_files.vcxproj +387 -0
  267. package/vendor/raylib/projects/VS2019/examples/core_input_gamepad.vcxproj +387 -0
  268. package/vendor/raylib/projects/VS2019/examples/core_input_gestures.vcxproj +387 -0
  269. package/vendor/raylib/projects/VS2019/examples/core_input_keys.vcxproj +387 -0
  270. package/vendor/raylib/projects/VS2019/examples/core_input_mouse.vcxproj +387 -0
  271. package/vendor/raylib/projects/VS2019/examples/core_input_mouse_wheel.vcxproj +387 -0
  272. package/vendor/raylib/projects/VS2019/examples/core_input_multitouch.vcxproj +387 -0
  273. package/vendor/raylib/projects/VS2019/examples/core_loading_thread.vcxproj +387 -0
  274. package/vendor/raylib/projects/VS2019/examples/core_quat_conversion.vcxproj +387 -0
  275. package/vendor/raylib/projects/VS2019/examples/core_random_values.vcxproj +387 -0
  276. package/vendor/raylib/projects/VS2019/examples/core_scissor_test.vcxproj +387 -0
  277. package/vendor/raylib/projects/VS2019/examples/core_split_screen.vcxproj +387 -0
  278. package/vendor/raylib/projects/VS2019/examples/core_storage_values.vcxproj +387 -0
  279. package/vendor/raylib/projects/VS2019/examples/core_vr_simulator.vcxproj +387 -0
  280. package/vendor/raylib/projects/VS2019/examples/core_window_flags.vcxproj +387 -0
  281. package/vendor/raylib/projects/VS2019/examples/core_window_letterbox.vcxproj +387 -0
  282. package/vendor/raylib/projects/VS2019/examples/core_world_screen.vcxproj +387 -0
  283. package/vendor/raylib/projects/VS2019/examples/easings_testbed.vcxproj +387 -0
  284. package/vendor/raylib/projects/VS2019/examples/embedded_files_loading.vcxproj +387 -0
  285. package/vendor/raylib/projects/VS2019/examples/models_animation.vcxproj +387 -0
  286. package/vendor/raylib/projects/VS2019/examples/models_billboard.vcxproj +387 -0
  287. package/vendor/raylib/projects/VS2019/examples/models_box_collisions.vcxproj +387 -0
  288. package/vendor/raylib/projects/VS2019/examples/models_cubicmap.vcxproj +387 -0
  289. package/vendor/raylib/projects/VS2019/examples/models_first_person_maze.vcxproj +387 -0
  290. package/vendor/raylib/projects/VS2019/examples/models_geometric_shapes.vcxproj +387 -0
  291. package/vendor/raylib/projects/VS2019/examples/models_heightmap.vcxproj +387 -0
  292. package/vendor/raylib/projects/VS2019/examples/models_loading.vcxproj +387 -0
  293. package/vendor/raylib/projects/VS2019/examples/models_loading_gltf.vcxproj +387 -0
  294. package/vendor/raylib/projects/VS2019/examples/models_loading_vox.vcxproj +387 -0
  295. package/vendor/raylib/projects/VS2019/examples/models_mesh_generation.vcxproj +387 -0
  296. package/vendor/raylib/projects/VS2019/examples/models_mesh_picking.vcxproj +387 -0
  297. package/vendor/raylib/projects/VS2019/examples/models_orthographic_projection.vcxproj +387 -0
  298. package/vendor/raylib/projects/VS2019/examples/models_rlgl_solar_system.vcxproj +387 -0
  299. package/vendor/raylib/projects/VS2019/examples/models_skybox.vcxproj +387 -0
  300. package/vendor/raylib/projects/VS2019/examples/models_waving_cubes.vcxproj +387 -0
  301. package/vendor/raylib/projects/VS2019/examples/models_yaw_pitch_roll.vcxproj +387 -0
  302. package/vendor/raylib/projects/VS2019/examples/physics_demo.vcxproj +387 -0
  303. package/vendor/raylib/projects/VS2019/examples/physics_friction.vcxproj +387 -0
  304. package/vendor/raylib/projects/VS2019/examples/physics_movement.vcxproj +387 -0
  305. package/vendor/raylib/projects/VS2019/examples/physics_restitution.vcxproj +387 -0
  306. package/vendor/raylib/projects/VS2019/examples/physics_shatter.vcxproj +387 -0
  307. package/vendor/raylib/projects/VS2019/examples/raudio_standalone.vcxproj +387 -0
  308. package/vendor/raylib/projects/VS2019/examples/rlgl_standalone.vcxproj +391 -0
  309. package/vendor/raylib/projects/VS2019/examples/shaders_basic_lighting.vcxproj +387 -0
  310. package/vendor/raylib/projects/VS2019/examples/shaders_custom_uniform.vcxproj +387 -0
  311. package/vendor/raylib/projects/VS2019/examples/shaders_eratosthenes.vcxproj +387 -0
  312. package/vendor/raylib/projects/VS2019/examples/shaders_fog.vcxproj +387 -0
  313. package/vendor/raylib/projects/VS2019/examples/shaders_hot_reloading.vcxproj +387 -0
  314. package/vendor/raylib/projects/VS2019/examples/shaders_julia_set.vcxproj +387 -0
  315. package/vendor/raylib/projects/VS2019/examples/shaders_mesh_instancing.vcxproj +387 -0
  316. package/vendor/raylib/projects/VS2019/examples/shaders_model_shader.vcxproj +387 -0
  317. package/vendor/raylib/projects/VS2019/examples/shaders_multi_sample2d.vcxproj +387 -0
  318. package/vendor/raylib/projects/VS2019/examples/shaders_palette_switch.vcxproj +387 -0
  319. package/vendor/raylib/projects/VS2019/examples/shaders_postprocessing.vcxproj +387 -0
  320. package/vendor/raylib/projects/VS2019/examples/shaders_raymarching.vcxproj +387 -0
  321. package/vendor/raylib/projects/VS2019/examples/shaders_shapes_textures.vcxproj +387 -0
  322. package/vendor/raylib/projects/VS2019/examples/shaders_simple_mask.vcxproj +387 -0
  323. package/vendor/raylib/projects/VS2019/examples/shaders_spotlight.vcxproj +387 -0
  324. package/vendor/raylib/projects/VS2019/examples/shaders_texture_drawing.vcxproj +387 -0
  325. package/vendor/raylib/projects/VS2019/examples/shaders_texture_waves.vcxproj +387 -0
  326. package/vendor/raylib/projects/VS2019/examples/shapes_basic_shapes.vcxproj +387 -0
  327. package/vendor/raylib/projects/VS2019/examples/shapes_bouncing_ball.vcxproj +387 -0
  328. package/vendor/raylib/projects/VS2019/examples/shapes_collision_area.vcxproj +387 -0
  329. package/vendor/raylib/projects/VS2019/examples/shapes_colors_palette.vcxproj +387 -0
  330. package/vendor/raylib/projects/VS2019/examples/shapes_draw_circle_sector.vcxproj +387 -0
  331. package/vendor/raylib/projects/VS2019/examples/shapes_draw_rectangle_rounded.vcxproj +387 -0
  332. package/vendor/raylib/projects/VS2019/examples/shapes_draw_ring.vcxproj +387 -0
  333. package/vendor/raylib/projects/VS2019/examples/shapes_easings_ball_anim.vcxproj +387 -0
  334. package/vendor/raylib/projects/VS2019/examples/shapes_easings_box_anim.vcxproj +387 -0
  335. package/vendor/raylib/projects/VS2019/examples/shapes_easings_rectangle_array.vcxproj +387 -0
  336. package/vendor/raylib/projects/VS2019/examples/shapes_following_eyes.vcxproj +387 -0
  337. package/vendor/raylib/projects/VS2019/examples/shapes_lines_bezier.vcxproj +387 -0
  338. package/vendor/raylib/projects/VS2019/examples/shapes_logo_raylib.vcxproj +387 -0
  339. package/vendor/raylib/projects/VS2019/examples/shapes_logo_raylib_anim.vcxproj +387 -0
  340. package/vendor/raylib/projects/VS2019/examples/shapes_rectangle_scaling.vcxproj +387 -0
  341. package/vendor/raylib/projects/VS2019/examples/text_font_filters.vcxproj +387 -0
  342. package/vendor/raylib/projects/VS2019/examples/text_font_loading.vcxproj +387 -0
  343. package/vendor/raylib/projects/VS2019/examples/text_font_sdf.vcxproj +387 -0
  344. package/vendor/raylib/projects/VS2019/examples/text_font_spritefont.vcxproj +387 -0
  345. package/vendor/raylib/projects/VS2019/examples/text_format_text.vcxproj +387 -0
  346. package/vendor/raylib/projects/VS2019/examples/text_input_box.vcxproj +387 -0
  347. package/vendor/raylib/projects/VS2019/examples/text_raylib_fonts.vcxproj +387 -0
  348. package/vendor/raylib/projects/VS2019/examples/text_rectangle_bounds.vcxproj +387 -0
  349. package/vendor/raylib/projects/VS2019/examples/text_unicode.vcxproj +387 -0
  350. package/vendor/raylib/projects/VS2019/examples/text_writing_anim.vcxproj +387 -0
  351. package/vendor/raylib/projects/VS2019/examples/textures_background_scrolling.vcxproj +387 -0
  352. package/vendor/raylib/projects/VS2019/examples/textures_blend_modes.vcxproj +387 -0
  353. package/vendor/raylib/projects/VS2019/examples/textures_bunnymark.vcxproj +387 -0
  354. package/vendor/raylib/projects/VS2019/examples/textures_draw_tiled.vcxproj +387 -0
  355. package/vendor/raylib/projects/VS2019/examples/textures_image_drawing.vcxproj +387 -0
  356. package/vendor/raylib/projects/VS2019/examples/textures_image_generation.vcxproj +387 -0
  357. package/vendor/raylib/projects/VS2019/examples/textures_image_loading.vcxproj +387 -0
  358. package/vendor/raylib/projects/VS2019/examples/textures_image_processing.vcxproj +387 -0
  359. package/vendor/raylib/projects/VS2019/examples/textures_image_text.vcxproj +387 -0
  360. package/vendor/raylib/projects/VS2019/examples/textures_logo_raylib.vcxproj +387 -0
  361. package/vendor/raylib/projects/VS2019/examples/textures_mouse_painting.vcxproj +387 -0
  362. package/vendor/raylib/projects/VS2019/examples/textures_npatch_drawing.vcxproj +387 -0
  363. package/vendor/raylib/projects/VS2019/examples/textures_particles_blending.vcxproj +387 -0
  364. package/vendor/raylib/projects/VS2019/examples/textures_raw_data.vcxproj +387 -0
  365. package/vendor/raylib/projects/VS2019/examples/textures_rectangle.vcxproj +387 -0
  366. package/vendor/raylib/projects/VS2019/examples/textures_sprite_button.vcxproj +387 -0
  367. package/vendor/raylib/projects/VS2019/examples/textures_sprite_explosion.vcxproj +387 -0
  368. package/vendor/raylib/projects/VS2019/examples/textures_srcrec_dstrec.vcxproj +387 -0
  369. package/vendor/raylib/projects/VS2019/examples/textures_to_image.vcxproj +387 -0
  370. package/vendor/raylib/projects/VS2019/raylib/raylib.vcxproj +341 -0
  371. package/vendor/raylib/projects/VS2019/raylib.sln +2274 -0
  372. package/vendor/raylib/projects/VS2019-Android/raylib_android/raylib_android.NativeActivity/raylib_android.NativeActivity.vcxproj +226 -0
  373. package/vendor/raylib/projects/VS2019-Android/raylib_android/raylib_android.NativeActivity/raylib_android.NativeActivity.vcxproj.filters +10 -0
  374. package/vendor/raylib/projects/VS2019-Android/raylib_android/raylib_android.NativeActivity/raylib_android.NativeActivity.vcxproj.user +4 -0
  375. package/vendor/raylib/projects/VS2019-Android/raylib_android.sln +75 -0
package/src/parser.hh ADDED
@@ -0,0 +1,63 @@
1
+ // This program is free software: you can redistribute it and/or modify
2
+ // it under the terms of the GNU Affero General Public License as published by
3
+ // the Free Software Foundation, either version 3 of the License, or
4
+ // (at your option) any later version.
5
+ //
6
+ // This program is distributed in the hope that it will be useful,
7
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
8
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9
+ // GNU Affero General Public License for more details.
10
+ //
11
+ // You should have received a copy of the GNU Affero General Public License
12
+ // along with this program. If not, see https://www.gnu.org/licenses/.
13
+
14
+ #pragma once
15
+
16
+ #include "vendor/libcc/libcc.hh"
17
+ #include "util.hh"
18
+
19
+ #include <napi.h>
20
+
21
+ namespace RG {
22
+
23
+ struct InstanceData;
24
+ struct TypeInfo;
25
+ struct FunctionInfo;
26
+
27
+ class PrototypeParser {
28
+ Napi::Env env;
29
+ InstanceData *instance;
30
+
31
+ // All these members are relevant to the current parse only, and get resetted each time
32
+ HeapArray<Span<const char>> tokens;
33
+ Size offset;
34
+ bool valid;
35
+
36
+ public:
37
+ PrototypeParser(Napi::Env env) : env(env), instance(env.GetInstanceData<InstanceData>()) {}
38
+
39
+ bool Parse(Napi::String proto, FunctionInfo *func);
40
+
41
+ private:
42
+ void Tokenize(const char *str);
43
+
44
+ const TypeInfo *ParseType();
45
+ const char *ParseIdentifier();
46
+
47
+ bool Consume(const char *expect);
48
+ bool Match(const char *expect);
49
+
50
+ bool IsIdentifier(Span<const char> tok) const;
51
+
52
+ template <typename... Args>
53
+ void MarkError(const char *fmt, Args... args)
54
+ {
55
+ if (valid) {
56
+ ThrowError<Napi::Error>(env, fmt, args...);
57
+ valid = false;
58
+ }
59
+ valid = false;
60
+ }
61
+ };
62
+
63
+ }
package/src/util.cc CHANGED
@@ -54,6 +54,29 @@ const TypeInfo *ResolveType(const InstanceData *instance, Napi::Value value, int
54
54
  }
55
55
  }
56
56
 
57
+ const TypeInfo *GetPointerType(InstanceData *instance, const TypeInfo *ref)
58
+ {
59
+ char name_buf[256];
60
+ Fmt(name_buf, "%1%2*", ref->name, ref->primitive == PrimitiveKind::Pointer ? "" : " ");
61
+
62
+ TypeInfo *type = instance->types_map.FindValue(name_buf, nullptr);
63
+
64
+ if (!type) {
65
+ type = instance->types.AppendDefault();
66
+
67
+ type->name = DuplicateString(name_buf, &instance->str_alloc).ptr;
68
+
69
+ type->primitive = PrimitiveKind::Pointer;
70
+ type->size = RG_SIZE(void *);
71
+ type->align = RG_SIZE(void *);
72
+ type->ref = ref;
73
+
74
+ instance->types_map.Set(type);
75
+ }
76
+
77
+ return type;
78
+ }
79
+
57
80
  const char *GetValueType(const InstanceData *instance, Napi::Value value)
58
81
  {
59
82
  for (const TypeInfo &type: instance->types) {
package/src/util.hh CHANGED
@@ -20,6 +20,8 @@
20
20
  namespace RG {
21
21
 
22
22
  struct InstanceData;
23
+ struct TypeInfo;
24
+ struct FunctionInfo;
23
25
 
24
26
  template <typename T, typename... Args>
25
27
  void ThrowError(Napi::Env env, const char *msg, Args... args)
@@ -52,6 +54,7 @@ static inline T *AlignDown(T *ptr, Size align)
52
54
  }
53
55
 
54
56
  const TypeInfo *ResolveType(const InstanceData *instance, Napi::Value value, int *out_directions = nullptr);
57
+ const TypeInfo *GetPointerType(InstanceData *instance, const TypeInfo *type);
55
58
 
56
59
  // Can be slow, only use for error messages
57
60
  const char *GetValueType(const InstanceData *instance, Napi::Value value);
@@ -21,6 +21,13 @@
21
21
  "shutdown": "sudo poweroff"
22
22
  },
23
23
 
24
+ "builds": {
25
+ "Linux ARM32": {
26
+ "directory": "/home/debian/luigi",
27
+ "build": "node ../cnoke/cnoke.js"
28
+ }
29
+ },
30
+
24
31
  "tests": {
25
32
  "Linux ARM32": {
26
33
  "directory": "/home/debian/luigi",
@@ -58,6 +65,13 @@
58
65
  "shutdown": "sudo poweroff"
59
66
  },
60
67
 
68
+ "builds": {
69
+ "Linux ARM64": {
70
+ "directory": "/home/debian/luigi",
71
+ "build": "node ../cnoke/cnoke.js"
72
+ }
73
+ },
74
+
61
75
  "tests": {
62
76
  "Linux ARM64": {
63
77
  "directory": "/home/debian/luigi",
@@ -95,6 +109,13 @@
95
109
  "shutdown": "sudo poweroff"
96
110
  },
97
111
 
112
+ "builds": {
113
+ "Linux i386": {
114
+ "directory": "/home/debian/luigi",
115
+ "build": "node ../cnoke/cnoke.js"
116
+ }
117
+ },
118
+
98
119
  "tests": {
99
120
  "Linux i386": {
100
121
  "directory": "/home/debian/luigi",
@@ -132,6 +153,13 @@
132
153
  "shutdown": "sudo poweroff"
133
154
  },
134
155
 
156
+ "builds": {
157
+ "Linux x64": {
158
+ "directory": "/home/debian/luigi",
159
+ "build": "node ../cnoke/cnoke.js"
160
+ }
161
+ },
162
+
135
163
  "tests": {
136
164
  "Linux x64": {
137
165
  "directory": "/home/debian/luigi",
@@ -169,6 +197,20 @@
169
197
  "shutdown": "shutdown -s -t 0"
170
198
  },
171
199
 
200
+ "builds": {
201
+ "Windows i386": {
202
+ "arch": "ia32",
203
+ "directory": "C:/Users/windows/Desktop/luigi32",
204
+ "build": "C:\\Node32\\node32.cmd node ../cnoke/cnoke.js"
205
+ },
206
+
207
+ "Windows x64": {
208
+ "arch": "x64",
209
+ "directory": "C:/Users/windows/Desktop/luigi64",
210
+ "build": "C:\\Node64\\node64.cmd node ../cnoke/cnoke.js"
211
+ }
212
+ },
213
+
172
214
  "tests": {
173
215
  "Windows i386": {
174
216
  "directory": "C:/Users/windows/Desktop/luigi32",
@@ -218,6 +260,13 @@
218
260
  "shutdown": "sudo poweroff"
219
261
  },
220
262
 
263
+ "builds": {
264
+ "FreeBSD x64": {
265
+ "directory": "/home/freebsd/luigi",
266
+ "build": "node ../cnoke/cnoke.js"
267
+ }
268
+ },
269
+
221
270
  "tests": {
222
271
  "FreeBSD x64": {
223
272
  "directory": "/home/freebsd/luigi",
@@ -255,6 +304,13 @@
255
304
  "shutdown": "sudo poweroff"
256
305
  },
257
306
 
307
+ "builds": {
308
+ "FreeBSD i386": {
309
+ "directory": "/home/freebsd/luigi",
310
+ "build": "node ../cnoke/cnoke.js"
311
+ }
312
+ },
313
+
258
314
  "tests": {
259
315
  "FreeBSD i386": {
260
316
  "directory": "/home/freebsd/luigi",
@@ -292,6 +348,13 @@
292
348
  "shutdown": "sudo poweroff"
293
349
  },
294
350
 
351
+ "builds": {
352
+ "FreeBSD ARM64": {
353
+ "directory": "/home/freebsd/luigi",
354
+ "build": "node ../cnoke/cnoke.js"
355
+ }
356
+ },
357
+
295
358
  "tests": {
296
359
  "FreeBSD ARM64": {
297
360
  "directory": "/home/freebsd/luigi",
@@ -329,6 +392,13 @@
329
392
  "shutdown": "sudo shutdown -h now"
330
393
  },
331
394
 
395
+ "builds": {
396
+ "macOS x64": {
397
+ "directory": "/Users/macos/luigi",
398
+ "build": "PATH=/usr/local/bin:/usr/bin:/bin SDKROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX11.3.sdk node ../cnoke/cnoke.js"
399
+ }
400
+ },
401
+
332
402
  "tests": {
333
403
  "macOS x64": {
334
404
  "directory": "/Users/macos/luigi",
package/test/test.js CHANGED
@@ -24,6 +24,7 @@ const { spawn, spawnSync } = require('child_process');
24
24
  const { NodeSSH } = require('node-ssh');
25
25
  const chalk = require('chalk');
26
26
  const minimatch = require('minimatch');
27
+ const tar = require('tar');
27
28
 
28
29
  // Globals
29
30
 
@@ -56,6 +57,7 @@ async function main() {
56
57
 
57
58
  if (process.argv.length >= 3 && process.argv[2][0] != '-') {
58
59
  switch (process.argv[2]) {
60
+ case 'pack': { command = pack; i++ } break;
59
61
  case 'test': { command = test; i++; } break;
60
62
  case 'start': { command = start; i++; } break;
61
63
  case 'stop': { command = stop; i++; } break;
@@ -189,6 +191,7 @@ function print_usage() {
189
191
 
190
192
  Commands:
191
193
  test Run the machines and perform the tests (default)
194
+ pack Use machines to package prebuilt Koffi binaries
192
195
  start Start the machines but don't run anythingh
193
196
  stop Stop running machines
194
197
  info Print basic information about machine
@@ -261,10 +264,109 @@ async function start(detach = true) {
261
264
  return success;
262
265
  }
263
266
 
264
- async function test() {
267
+ async function pack() {
268
+ let success = true;
269
+
270
+ success &= await start(false);
271
+ success &= await copy(machine => Object.values(machine.builds).map(build => build.directory));
272
+
273
+ console.log('>> Run build commands...');
274
+ await Promise.all(machines.map(async machine => {
275
+ if (ignore.has(machine))
276
+ return;
277
+
278
+ await Promise.all(Object.keys(machine.builds).map(async suite => {
279
+ let build = machine.builds[suite];
280
+
281
+ let cmd = build.build;
282
+ let cwd = build.directory + '/koffi';
283
+
284
+ let start = process.hrtime.bigint();
285
+ let ret = await exec_remote(machine, cmd, cwd);
286
+ let time = Number((process.hrtime.bigint() - start) / 1000000n);
287
+
288
+ if (ret.code == 0) {
289
+ log(machine, `${suite} > Build`, chalk.bold.green(`[${(time / 1000).toFixed(2)}s]`));
290
+ } else {
291
+ log(machine, `${suite} > Build`, chalk.bold.red('[error]'));
292
+
293
+ if (ret.stdout || ret.stderr)
294
+ console.error('');
295
+
296
+ let align = log.align + 9;
297
+ if (ret.stdout) {
298
+ let str = ' '.repeat(align) + 'Standard output:\n' +
299
+ chalk.yellow(ret.stdout.replace(/^/gm, ' '.repeat(align + 4))) + '\n';
300
+ console.error(str);
301
+ }
302
+ if (ret.stderr) {
303
+ let str = ' '.repeat(align) + 'Standard error:\n' +
304
+ chalk.yellow(ret.stderr.replace(/^/gm, ' '.repeat(align + 4))) + '\n';
305
+ console.error(str);
306
+ }
307
+
308
+ success = false;
309
+ }
310
+ }));
311
+ }));
312
+
313
+ console.log('>> Get build artifacts');
314
+ {
315
+ let json = fs.readFileSync(root_dir + '/koffi/package.json', { encoding: 'utf-8' });
316
+ let version = JSON.parse(json).version;
317
+
318
+ await Promise.all(machines.map(async machine => {
319
+ if (ignore.has(machine))
320
+ return;
321
+
322
+ let copied = true;
323
+
324
+ await Promise.all(Object.keys(machine.builds).map(async suite => {
325
+ let build = machine.builds[suite];
326
+
327
+ let platform = build.platform || machine.info.platform;
328
+ let arch = build.arch || machine.info.arch;
329
+
330
+ let src_dir = build.directory + '/koffi/build';
331
+ let dest_dir = root_dir + `/koffi/build/qemu/${version}/koffi_${platform}_${arch}`;
332
+
333
+ fs.mkdirSync(dest_dir + '/build', { mode: 0o755, recursive: true });
334
+
335
+ try {
336
+ await machine.ssh.getDirectory(dest_dir + '/build', src_dir, {
337
+ recursive: false,
338
+ concurrency: 4
339
+ });
340
+
341
+ tar.c({
342
+ gzip: true,
343
+ file: dest_dir + '.tar.gz',
344
+ sync: true,
345
+ cwd: dest_dir + '/..'
346
+ }, [path.basename(dest_dir)]);
347
+ } catch (err) {
348
+ console.log(err);
349
+ ignore.add(machine);
350
+ success = false;
351
+ copied = false;
352
+ }
353
+ }));
354
+
355
+ let status = copied ? chalk.bold.green('[ok]') : chalk.bold.red('[error]');
356
+ log(machine, 'Download', status);
357
+ }));
358
+ }
359
+
360
+ if (machines.some(machine => machine.started))
361
+ success &= await stop(false);
362
+
363
+ return success;
364
+ }
365
+
366
+ async function copy(func) {
265
367
  let success = true;
266
368
 
267
- let snapshot_dir = fs.mkdtempSync(path.join(os.tmpdir(), 'luigi-'));
369
+ let snapshot_dir = fs.mkdtempSync(path.join(os.tmpdir(), 'luigi_'));
268
370
  process.on('exit', () => unlink_recursive(snapshot_dir));
269
371
 
270
372
  console.log('>> Snapshot code...');
@@ -279,8 +381,6 @@ async function test() {
279
381
  basename !== 'luiggi';
280
382
  });
281
383
 
282
- success &= await start(false);
283
-
284
384
  console.log('>> Copy source code...');
285
385
  await Promise.all(machines.map(async machine => {
286
386
  if (ignore.has(machine))
@@ -288,15 +388,15 @@ async function test() {
288
388
 
289
389
  let copied = true;
290
390
 
291
- for (let test of Object.values(machine.tests)) {
391
+ for (let directory of func(machine)) {
292
392
  try {
293
- await machine.ssh.exec('rm', ['-rf', test.directory]);
393
+ await machine.ssh.exec('rm', ['-rf', directory]);
294
394
  } catch (err) {
295
395
  // Fails often on Windows (busy directory or whatever), but rarely a problem
296
396
  }
297
397
 
298
398
  try {
299
- await machine.ssh.putDirectory(snapshot_dir, test.directory, {
399
+ await machine.ssh.putDirectory(snapshot_dir, directory, {
300
400
  recursive: true,
301
401
  concurrency: 4
302
402
  });
@@ -311,6 +411,15 @@ async function test() {
311
411
  log(machine, 'Copy', status);
312
412
  }));
313
413
 
414
+ return success;
415
+ }
416
+
417
+ async function test() {
418
+ let success = true;
419
+
420
+ success &= await start(false);
421
+ success &= await copy(machine => Object.values(machine.tests).map(test => test.directory));
422
+
314
423
  console.log('>> Run test commands...');
315
424
  await Promise.all(machines.map(async machine => {
316
425
  if (ignore.has(machine))
@@ -69,25 +69,25 @@ async function test() {
69
69
  let lib_filename = path.dirname(__filename) + '/../build/misc' + koffi.extension;
70
70
  let lib = koffi.load(lib_filename);
71
71
 
72
- const FillPack1 = lib.cdecl('FillPack1', 'void', ['int', koffi.out(koffi.pointer(Pack1))]);
73
- const RetPack1 = lib.cdecl('RetPack1', Pack1, ['int']);
72
+ const FillPack1 = lib.func('FillPack1', 'void', ['int', koffi.out(koffi.pointer(Pack1))]);
73
+ const RetPack1 = lib.func('RetPack1', Pack1, ['int']);
74
74
  const AddPack1 = lib.fastcall('AddPack1', 'void', ['int', koffi.inout(koffi.pointer(Pack1))]);
75
- const FillPack2 = lib.cdecl('FillPack2', 'void', ['int', 'int', koffi.out(koffi.pointer(Pack2))]);
76
- const RetPack2 = lib.cdecl('RetPack2', Pack2, ['int', 'int']);
75
+ const FillPack2 = lib.func('FillPack2', 'void', ['int', 'int', koffi.out(koffi.pointer(Pack2))]);
76
+ const RetPack2 = lib.func('RetPack2', Pack2, ['int', 'int']);
77
77
  const AddPack2 = lib.fastcall('AddPack2', 'void', ['int', 'int', koffi.inout(koffi.pointer(Pack2))]);
78
- const FillPack3 = lib.cdecl('FillPack3', 'void', ['int', 'int', 'int', koffi.out(koffi.pointer(Pack3))]);
79
- const RetPack3 = lib.cdecl('RetPack3', Pack3, ['int', 'int', 'int']);
78
+ const FillPack3 = lib.func('FillPack3', 'void', ['int', 'int', 'int', koffi.out(koffi.pointer(Pack3))]);
79
+ const RetPack3 = lib.func('RetPack3', Pack3, ['int', 'int', 'int']);
80
80
  const AddPack3 = lib.fastcall('AddPack3', 'void', ['int', 'int', 'int', koffi.inout(koffi.pointer(Pack3))]);
81
- const ConcatenateToInt1 = lib.cdecl('ConcatenateToInt1', 'int64_t', Array(12).fill('int8_t'));
82
- const ConcatenateToInt4 = lib.cdecl('ConcatenateToInt4', 'int64_t', Array(12).fill('int32_t'));
83
- const ConcatenateToInt8 = lib.cdecl('ConcatenateToInt8', 'int64_t', Array(12).fill('int64_t'));
84
- const ConcatenateToStr1 = lib.cdecl('ConcatenateToStr1', 'string', [...Array(8).fill('int8_t'), koffi.struct('IJK1', {i: 'int8_t', j: 'int8_t', k: 'int8_t'}), 'int8_t']);
85
- const ConcatenateToStr4 = lib.cdecl('ConcatenateToStr4', 'string', [...Array(8).fill('int32_t'), koffi.pointer(koffi.struct('IJK4', {i: 'int32_t', j: 'int32_t', k: 'int32_t'})), 'int32_t']);
86
- const ConcatenateToStr8 = lib.cdecl('ConcatenateToStr8', 'string', [...Array(8).fill('int64_t'), koffi.struct('IJK8', {i: 'int64_t', j: 'int64_t', k: 'int64_t'}), 'int64_t']);
87
- const MakeBFG = lib.stdcall('MakeBFG', BFG, [koffi.out(koffi.pointer(BFG)), 'int', 'double', 'string']);
88
- const MakePackedBFG = lib.fastcall('MakePackedBFG', PackedBFG, ['int', 'double', koffi.out(koffi.pointer(PackedBFG)), 'string']);
89
- const ReturnBigString = lib.stdcall('ReturnBigString', 'string', ['string']);
90
- const PrintFmt = lib.cdecl('PrintFmt', 'string', ['string', '...']);
81
+ const ConcatenateToInt1 = lib.func('ConcatenateToInt1', 'int64_t', Array(12).fill('int8_t'));
82
+ const ConcatenateToInt4 = lib.func('ConcatenateToInt4', 'int64_t', Array(12).fill('int32_t'));
83
+ const ConcatenateToInt8 = lib.func('ConcatenateToInt8', 'int64_t', Array(12).fill('int64_t'));
84
+ const ConcatenateToStr1 = lib.func('ConcatenateToStr1', 'string', [...Array(8).fill('int8_t'), koffi.struct('IJK1', {i: 'int8_t', j: 'int8_t', k: 'int8_t'}), 'int8_t']);
85
+ const ConcatenateToStr4 = lib.func('ConcatenateToStr4', 'string', [...Array(8).fill('int32_t'), koffi.pointer(koffi.struct('IJK4', {i: 'int32_t', j: 'int32_t', k: 'int32_t'})), 'int32_t']);
86
+ const ConcatenateToStr8 = lib.func('ConcatenateToStr8', 'string', [...Array(8).fill('int64_t'), koffi.struct('IJK8', {i: 'int64_t', j: 'int64_t', k: 'int64_t'}), 'int64_t']);
87
+ const MakeBFG = lib.func('BFG __stdcall MakeBFG(_Out_ BFG *p, int x, double y, const char *str)');
88
+ const MakePackedBFG = lib.func('PackedBFG __fastcall MakePackedBFG(int x, double y, _Out_ PackedBFG *p, const char *str)');
89
+ const ReturnBigString = lib.func('const char * __stdcall ReturnBigString(const char *str)');
90
+ const PrintFmt = lib.func('const char *PrintFmt(const char *fmt, ...)');
91
91
 
92
92
  // Simple tests with Pack1
93
93
  {
@@ -86,14 +86,14 @@ async function test() {
86
86
  let lib_filename = path.dirname(__filename) + '/../build/raylib' + koffi.extension;
87
87
  let lib = koffi.load(lib_filename);
88
88
 
89
- const InitWindow = lib.cdecl('InitWindow', 'void', ['int', 'int', 'string']);
90
- const SetTraceLogLevel = lib.cdecl('SetTraceLogLevel', 'void', ['int']);
91
- const SetWindowState = lib.cdecl('SetWindowState', 'void', ['uint']);
92
- const GenImageColor = lib.cdecl('GenImageColor', Image, ['int', 'int', Color]);
93
- const GetFontDefault = lib.cdecl('GetFontDefault', Font, []);
94
- const MeasureTextEx = lib.cdecl('MeasureTextEx', Vector2, [Font, 'string', 'float', 'float']);
95
- const ImageDrawTextEx = lib.cdecl('ImageDrawTextEx', 'void', [koffi.pointer(Image), Font, 'string', Vector2, 'float', 'float', Color]);
96
- const ExportImage = lib.cdecl('ExportImage', 'bool', [Image, 'string']);
89
+ const InitWindow = lib.func('InitWindow', 'void', ['int', 'int', 'string']);
90
+ const SetTraceLogLevel = lib.func('SetTraceLogLevel', 'void', ['int']);
91
+ const SetWindowState = lib.func('SetWindowState', 'void', ['uint']);
92
+ const GenImageColor = lib.func('GenImageColor', Image, ['int', 'int', Color]);
93
+ const GetFontDefault = lib.func('GetFontDefault', Font, []);
94
+ const MeasureTextEx = lib.func('MeasureTextEx', Vector2, [Font, 'string', 'float', 'float']);
95
+ const ImageDrawTextEx = lib.func('ImageDrawTextEx', 'void', [koffi.pointer(Image), Font, 'string', Vector2, 'float', 'float', Color]);
96
+ const ExportImage = lib.func('ExportImage', 'bool', [Image, 'string']);
97
97
 
98
98
  // We need to call InitWindow before using anything else (such as fonts)
99
99
  SetTraceLogLevel(4); // Warnings
@@ -39,15 +39,15 @@ async function test() {
39
39
  let lib_filename = path.dirname(__filename) + '/../build/sqlite3' + koffi.extension;
40
40
  let lib = koffi.load(lib_filename);
41
41
 
42
- const sqlite3_open_v2 = lib.cdecl('sqlite3_open_v2', 'int', ['string', koffi.out(koffi.pointer(sqlite3_db)), 'int', 'string']);
43
- const sqlite3_exec = lib.cdecl('sqlite3_exec', 'int', [sqlite3_db, 'string', 'void *', 'void *', 'void *']);
44
- const sqlite3_prepare_v2 = lib.cdecl('sqlite3_prepare_v2', 'int', [sqlite3_db, 'string', 'int', koffi.out(koffi.pointer(sqlite3_stmt)), 'string']);
45
- const sqlite3_reset = lib.cdecl('sqlite3_reset', 'int', [sqlite3_stmt]);
46
- const sqlite3_bind_text = lib.cdecl('sqlite3_bind_text', 'int', [sqlite3_stmt, 'int', 'string', 'int', 'void *']);
47
- const sqlite3_bind_int = lib.cdecl('sqlite3_bind_int', 'int', [sqlite3_stmt, 'int', 'int']);
48
- const sqlite3_step = lib.cdecl('sqlite3_step', 'int', [sqlite3_stmt]);
49
- const sqlite3_finalize = lib.cdecl('sqlite3_finalize', 'int', [sqlite3_stmt]);
50
- const sqlite3_close_v2 = lib.cdecl('sqlite3_close_v2', 'int', [sqlite3_db]);
42
+ const sqlite3_open_v2 = lib.func('sqlite3_open_v2', 'int', ['string', koffi.out(koffi.pointer(sqlite3_db)), 'int', 'string']);
43
+ const sqlite3_exec = lib.func('sqlite3_exec', 'int', [sqlite3_db, 'string', 'void *', 'void *', 'void *']);
44
+ const sqlite3_prepare_v2 = lib.func('sqlite3_prepare_v2', 'int', [sqlite3_db, 'string', 'int', koffi.out(koffi.pointer(sqlite3_stmt)), 'string']);
45
+ const sqlite3_reset = lib.func('sqlite3_reset', 'int', [sqlite3_stmt]);
46
+ const sqlite3_bind_text = lib.func('sqlite3_bind_text', 'int', [sqlite3_stmt, 'int', 'string', 'int', 'void *']);
47
+ const sqlite3_bind_int = lib.func('sqlite3_bind_int', 'int', [sqlite3_stmt, 'int', 'int']);
48
+ const sqlite3_step = lib.func('sqlite3_step', 'int', [sqlite3_stmt]);
49
+ const sqlite3_finalize = lib.func('sqlite3_finalize', 'int', [sqlite3_stmt]);
50
+ const sqlite3_close_v2 = lib.func('sqlite3_close_v2', 'int', [sqlite3_db]);
51
51
 
52
52
  let filename = await create_temporary_file(path.join(os.tmpdir(), 'test_sqlite'));
53
53
  let db = {};
@@ -0,0 +1,4 @@
1
+ # Code of Conduct
2
+
3
+ The Node.js Code of Conduct, which applies to this project, can be found at
4
+ https://github.com/nodejs/admin/blob/HEAD/CODE_OF_CONDUCT.md.
@@ -0,0 +1,93 @@
1
+
2
+ # Developer's Certificate of Origin 1.1
3
+
4
+ By making a contribution to this project, I certify that:
5
+
6
+ (a) The contribution was created in whole or in part by me and I
7
+ have the right to submit it under the open source license
8
+ indicated in the file; or
9
+
10
+ (b) The contribution is based upon previous work that, to the best
11
+ of my knowledge, is covered under an appropriate open source
12
+ license and I have the right under that license to submit that
13
+ work with modifications, whether created in whole or in part
14
+ by me, under the same open source license (unless I am
15
+ permitted to submit under a different license), as indicated
16
+ in the file; or
17
+
18
+ (c) The contribution was provided directly to me by some other
19
+ person who certified (a), (b) or (c) and I have not modified
20
+ it.
21
+
22
+ (d) I understand and agree that this project and the contribution
23
+ are public and that a record of the contribution (including all
24
+ personal information I submit with it, including my sign-off) is
25
+ maintained indefinitely and may be redistributed consistent with
26
+ this project or the open source license(s) involved.
27
+
28
+ # **node-addon-api** Contribution Philosophy
29
+
30
+ The **node-addon-api** team loves contributions. There are many ways in which you can
31
+ contribute to **node-addon-api**:
32
+ - Source code fixes
33
+ - Additional tests
34
+ - Documentation improvements
35
+ - Joining the Node-API working group and participating in meetings
36
+
37
+ ## Source changes
38
+
39
+ **node-addon-api** is meant to be a thin convenience wrapper around Node-API. With this
40
+ in mind, contributions of any new APIs that wrap around a core Node-API API will
41
+ be considered for merge. However, changes that wrap existing **node-addon-api**
42
+ APIs are encouraged to instead be provided as an ecosystem module. The
43
+ **node-addon-api** team is happy to link to a curated set of modules that build on
44
+ top of **node-addon-api** if they have broad usefulness to the community and promote
45
+ a recommended idiom or pattern.
46
+
47
+ ### Rationale
48
+
49
+ The Node-API team considered a couple different approaches with regards to changes
50
+ extending **node-addon-api**
51
+ - Larger core module - Incorporate these helpers and patterns into **node-addon-api**
52
+ - Extras package - Create a new package (strawman name '**node-addon-api**-extras')
53
+ that contain utility classes and methods that help promote good patterns and
54
+ idioms while writing native addons with **node-addon-api**.
55
+ - Ecosystem - Encourage creation of a module ecosystem around **node-addon-api**
56
+ where folks can build on top of it.
57
+
58
+ #### Larger Core
59
+ This is probably our simplest option in terms of immediate action needed. It
60
+ would involve landing any open PRs against **node-addon-api**, and continuing to
61
+ encourage folks to make PRs for utility helpers against the same repository.
62
+
63
+ The downside of the approach is the following:
64
+ - Less coherency for our API set
65
+ - More maintenance burden on the Node-API WG core team.
66
+
67
+ #### Extras Package
68
+ This involves us spinning up a new package which contains the utility classes
69
+ and methods. This has the benefit of having a separate module where helpers
70
+ which make it easier to implement certain patterns and idioms for native addons
71
+ easier.
72
+
73
+ The downside of this approach is the following:
74
+ - Potential for confusion - we'll need to provide clear documentation to help the
75
+ community understand where a particular contribution should be directed to (what
76
+ belongs in **node-addon-api** vs **node-addon-api-extras**)
77
+ - Need to define the level of support/API guarantees
78
+ - Unclear if the maintenance burden on the Node-API WG is reduced or not
79
+
80
+ #### Ecosystem
81
+ This doesn't require a ton of up-front work from the Node-API WG. Instead of
82
+ accepting utility PRs into **node-addon-api** or creating and maintaining a new
83
+ module, the WG will encourage the creation of an ecosystem of modules that
84
+ build on top of **node-addon-api**, and provide some level of advertising for these
85
+ modules (listing them out on the repository/wiki, using them in workshops/tutorials
86
+ etc).
87
+
88
+ The downside of this approach is the following:
89
+ - Potential for lack of visibility - evangelism and education is hard, and module
90
+ authors might not find right patterns and instead implement things themselves
91
+ - There might be greater friction for the Node-API WG in evolving APIs since the
92
+ ecosystem would have taken dependencies on the API shape of **node-addon-api**
93
+
@@ -0,0 +1,37 @@
1
+ environment:
2
+ # https://github.com/jasongin/nvs/blob/HEAD/doc/CI.md
3
+ NVS_VERSION: 1.4.2
4
+ matrix:
5
+ - NODEJS_VERSION: node/10
6
+ - NODEJS_VERSION: node/12
7
+ - NODEJS_VERSION: node/14
8
+ - NODEJS_VERSION: nightly
9
+
10
+ os: Visual Studio 2017
11
+ platform:
12
+ - x86
13
+ - x64
14
+
15
+ install:
16
+ # nvs
17
+ - git clone --branch v%NVS_VERSION% --depth 1 https://github.com/jasongin/nvs %LOCALAPPDATA%\nvs
18
+ - set PATH=%LOCALAPPDATA%\nvs;%PATH%
19
+ - nvs --version
20
+ # node.js
21
+ - nvs add %NODEJS_VERSION%/%PLATFORM%
22
+ - nvs use %NODEJS_VERSION%/%PLATFORM%
23
+ - node --version
24
+ - node -p process.arch
25
+ - npm --version
26
+ # app
27
+ - npm install
28
+
29
+ test_script:
30
+ - npm test
31
+
32
+ build: off
33
+
34
+ version: "{build}"
35
+
36
+ cache:
37
+ - node_modules