koffi 0.9.4 → 0.9.5
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.
- package/CMakeLists.txt +60 -60
- package/README.md +163 -153
- package/package.json +19 -18
- package/src/call.hh +27 -27
- package/src/call_arm64.cc +482 -482
- package/src/call_arm64_fwd.S +115 -115
- package/src/call_x64_sysv.cc +477 -477
- package/src/call_x64_sysv_fwd.S +131 -131
- package/src/call_x64_win.cc +243 -243
- package/src/call_x64_win_fwd.asm +105 -105
- package/src/call_x86.cc +259 -259
- package/src/call_x86_fwd.S +48 -48
- package/src/call_x86_fwd.asm +50 -50
- package/src/ffi.cc +504 -504
- package/src/ffi.hh +135 -135
- package/src/util.cc +296 -296
- package/src/util.hh +80 -80
- package/vendor/dragonbox/CMakeLists.txt +122 -122
- package/vendor/dragonbox/LICENSE-Apache2-LLVM +218 -218
- package/vendor/dragonbox/LICENSE-Boost +23 -23
- package/vendor/dragonbox/README.md +277 -277
- package/vendor/dragonbox/cmake/dragonboxConfig.cmake +1 -1
- package/vendor/dragonbox/include/dragonbox/dragonbox.h +2670 -2670
- package/vendor/dragonbox/include/dragonbox/dragonbox_to_chars.h +108 -108
- package/vendor/dragonbox/other_files/unknown_win64_vc2019.html +539 -539
- package/vendor/dragonbox/source/dragonbox_to_chars.cpp +303 -303
- package/vendor/dragonbox/subproject/3rdparty/grisu_exact/CMakeLists.txt +23 -23
- package/vendor/dragonbox/subproject/3rdparty/grisu_exact/fp_to_chars.cpp +238 -238
- package/vendor/dragonbox/subproject/3rdparty/grisu_exact/fp_to_chars.h +95 -95
- package/vendor/dragonbox/subproject/3rdparty/grisu_exact/grisu_exact.h +2666 -2666
- package/vendor/dragonbox/subproject/3rdparty/ryu/CMakeLists.txt +16 -16
- package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/common.h +114 -114
- package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/d2s.c +509 -509
- package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/d2s_full_table.h +367 -367
- package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/d2s_intrinsics.h +357 -357
- package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/digit_table.h +35 -35
- package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/f2s.c +345 -345
- package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/f2s_full_table.h +55 -55
- package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/f2s_intrinsics.h +128 -128
- package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/ryu.h +46 -46
- package/vendor/dragonbox/subproject/3rdparty/schubfach/CMakeLists.txt +21 -21
- package/vendor/dragonbox/subproject/3rdparty/schubfach/schubfach_32.cc +699 -699
- package/vendor/dragonbox/subproject/3rdparty/schubfach/schubfach_32.h +31 -31
- package/vendor/dragonbox/subproject/3rdparty/schubfach/schubfach_64.cc +1354 -1354
- package/vendor/dragonbox/subproject/3rdparty/schubfach/schubfach_64.h +31 -31
- package/vendor/dragonbox/subproject/3rdparty/shaded_plots/example_shaded_plots.m +68 -68
- package/vendor/dragonbox/subproject/3rdparty/shaded_plots/license.txt +25 -25
- package/vendor/dragonbox/subproject/3rdparty/shaded_plots/plot_distribution.m +92 -92
- package/vendor/dragonbox/subproject/3rdparty/shaded_plots/plot_distribution_prctile.m +121 -121
- package/vendor/dragonbox/subproject/3rdparty/shaded_plots/plot_histogram_shaded.m +99 -99
- package/vendor/dragonbox/subproject/3rdparty/shaded_plots/plot_shaded.m +93 -93
- package/vendor/dragonbox/subproject/benchmark/CMakeLists.txt +64 -64
- package/vendor/dragonbox/subproject/benchmark/include/benchmark.h +40 -40
- package/vendor/dragonbox/subproject/benchmark/matlab/plot_benchmarks.m +21 -21
- package/vendor/dragonbox/subproject/benchmark/matlab/plot_digit_benchmark.m +78 -78
- package/vendor/dragonbox/subproject/benchmark/matlab/plot_uniform_benchmark.m +95 -95
- package/vendor/dragonbox/subproject/benchmark/source/benchmark.cpp +237 -237
- package/vendor/dragonbox/subproject/benchmark/source/dragonbox.cpp +30 -30
- package/vendor/dragonbox/subproject/benchmark/source/grisu_exact.cpp +36 -36
- package/vendor/dragonbox/subproject/benchmark/source/ryu.cpp +27 -27
- package/vendor/dragonbox/subproject/benchmark/source/schubfach.cpp +31 -31
- package/vendor/dragonbox/subproject/common/CMakeLists.txt +41 -41
- package/vendor/dragonbox/subproject/common/include/best_rational_approx.h +96 -96
- package/vendor/dragonbox/subproject/common/include/big_uint.h +217 -217
- package/vendor/dragonbox/subproject/common/include/continued_fractions.h +173 -173
- package/vendor/dragonbox/subproject/common/include/good_rational_approx.h +266 -266
- package/vendor/dragonbox/subproject/common/include/random_float.h +182 -182
- package/vendor/dragonbox/subproject/common/include/rational_continued_fractions.h +56 -56
- package/vendor/dragonbox/subproject/common/source/big_uint.cpp +601 -601
- package/vendor/dragonbox/subproject/meta/CMakeLists.txt +40 -40
- package/vendor/dragonbox/subproject/meta/results/binary32_generated_cache.txt +81 -81
- package/vendor/dragonbox/subproject/meta/results/binary64_compressed_cache_error_table.txt +9 -9
- package/vendor/dragonbox/subproject/meta/results/binary64_generated_cache.txt +622 -622
- package/vendor/dragonbox/subproject/meta/source/generate_cache.cpp +126 -126
- package/vendor/dragonbox/subproject/meta/source/live_test.cpp +81 -81
- package/vendor/dragonbox/subproject/meta/source/perf_test.cpp +104 -104
- package/vendor/dragonbox/subproject/meta/source/sandbox.cpp +20 -20
- package/vendor/dragonbox/subproject/test/CMakeLists.txt +69 -69
- package/vendor/dragonbox/subproject/test/results/binary32.csv +255 -255
- package/vendor/dragonbox/subproject/test/results/binary64.csv +2047 -2047
- package/vendor/dragonbox/subproject/test/results/plot_required_bits.m +17 -17
- package/vendor/dragonbox/subproject/test/source/test_all_shorter_interval_cases.cpp +88 -88
- package/vendor/dragonbox/subproject/test/source/uniform_random_test.cpp +95 -95
- package/vendor/dragonbox/subproject/test/source/verify_cache_precision.cpp +337 -337
- package/vendor/dragonbox/subproject/test/source/verify_compressed_cache.cpp +154 -154
- package/vendor/dragonbox/subproject/test/source/verify_fast_multiplication.cpp +168 -168
- package/vendor/dragonbox/subproject/test/source/verify_log_computation.cpp +251 -251
- package/vendor/dragonbox/subproject/test/source/verify_magic_division.cpp +113 -113
- package/vendor/libcc/libcc.cc +7651 -7651
- package/vendor/libcc/libcc.hh +4312 -4312
- package/vendor/node-addon-api/CHANGELOG.md +859 -859
- package/vendor/node-addon-api/CODE_OF_CONDUCT.md +4 -4
- package/vendor/node-addon-api/CONTRIBUTING.md +93 -93
- package/vendor/node-addon-api/LICENSE.md +12 -12
- package/vendor/node-addon-api/README.md +293 -293
- package/vendor/node-addon-api/appveyor.yml +37 -37
- package/vendor/node-addon-api/benchmark/README.md +47 -47
- package/vendor/node-addon-api/benchmark/binding.gyp +25 -25
- package/vendor/node-addon-api/benchmark/function_args.cc +217 -217
- package/vendor/node-addon-api/benchmark/function_args.js +60 -60
- package/vendor/node-addon-api/benchmark/index.js +34 -34
- package/vendor/node-addon-api/benchmark/property_descriptor.cc +91 -91
- package/vendor/node-addon-api/benchmark/property_descriptor.js +37 -37
- package/vendor/node-addon-api/common.gypi +21 -21
- package/vendor/node-addon-api/doc/addon.md +163 -163
- package/vendor/node-addon-api/doc/array.md +81 -81
- package/vendor/node-addon-api/doc/array_buffer.md +155 -155
- package/vendor/node-addon-api/doc/async_context.md +86 -86
- package/vendor/node-addon-api/doc/async_operations.md +31 -31
- package/vendor/node-addon-api/doc/async_worker.md +427 -427
- package/vendor/node-addon-api/doc/async_worker_variants.md +557 -557
- package/vendor/node-addon-api/doc/bigint.md +97 -97
- package/vendor/node-addon-api/doc/boolean.md +68 -68
- package/vendor/node-addon-api/doc/buffer.md +150 -150
- package/vendor/node-addon-api/doc/callback_scope.md +54 -54
- package/vendor/node-addon-api/doc/callbackinfo.md +97 -97
- package/vendor/node-addon-api/doc/checker-tool.md +32 -32
- package/vendor/node-addon-api/doc/class_property_descriptor.md +115 -115
- package/vendor/node-addon-api/doc/cmake-js.md +68 -68
- package/vendor/node-addon-api/doc/conversion-tool.md +27 -27
- package/vendor/node-addon-api/doc/creating_a_release.md +62 -62
- package/vendor/node-addon-api/doc/dataview.md +248 -248
- package/vendor/node-addon-api/doc/date.md +68 -68
- package/vendor/node-addon-api/doc/env.md +196 -196
- package/vendor/node-addon-api/doc/error.md +120 -120
- package/vendor/node-addon-api/doc/error_handling.md +254 -254
- package/vendor/node-addon-api/doc/escapable_handle_scope.md +80 -80
- package/vendor/node-addon-api/doc/external.md +63 -63
- package/vendor/node-addon-api/doc/function.md +402 -402
- package/vendor/node-addon-api/doc/function_reference.md +238 -238
- package/vendor/node-addon-api/doc/generator.md +13 -13
- package/vendor/node-addon-api/doc/handle_scope.md +63 -63
- package/vendor/node-addon-api/doc/hierarchy.md +91 -91
- package/vendor/node-addon-api/doc/instance_wrap.md +408 -408
- package/vendor/node-addon-api/doc/maybe.md +76 -76
- package/vendor/node-addon-api/doc/memory_management.md +27 -27
- package/vendor/node-addon-api/doc/name.md +29 -29
- package/vendor/node-addon-api/doc/node-gyp.md +82 -82
- package/vendor/node-addon-api/doc/number.md +163 -163
- package/vendor/node-addon-api/doc/object.md +432 -432
- package/vendor/node-addon-api/doc/object_lifetime_management.md +83 -83
- package/vendor/node-addon-api/doc/object_reference.md +117 -117
- package/vendor/node-addon-api/doc/object_wrap.md +561 -561
- package/vendor/node-addon-api/doc/prebuild_tools.md +16 -16
- package/vendor/node-addon-api/doc/promises.md +79 -79
- package/vendor/node-addon-api/doc/property_descriptor.md +286 -286
- package/vendor/node-addon-api/doc/propertylvalue.md +50 -50
- package/vendor/node-addon-api/doc/range_error.md +59 -59
- package/vendor/node-addon-api/doc/reference.md +113 -113
- package/vendor/node-addon-api/doc/setup.md +110 -110
- package/vendor/node-addon-api/doc/string.md +93 -93
- package/vendor/node-addon-api/doc/symbol.md +60 -60
- package/vendor/node-addon-api/doc/threadsafe.md +121 -121
- package/vendor/node-addon-api/doc/threadsafe_function.md +290 -290
- package/vendor/node-addon-api/doc/type_error.md +59 -59
- package/vendor/node-addon-api/doc/typed_array.md +78 -78
- package/vendor/node-addon-api/doc/typed_array_of.md +137 -137
- package/vendor/node-addon-api/doc/typed_threadsafe_function.md +306 -306
- package/vendor/node-addon-api/doc/value.md +340 -340
- package/vendor/node-addon-api/doc/version_management.md +43 -43
- package/vendor/node-addon-api/except.gypi +25 -25
- package/vendor/node-addon-api/index.js +11 -11
- package/vendor/node-addon-api/napi-inl.deprecated.h +192 -192
- package/vendor/node-addon-api/napi-inl.h +6209 -6209
- package/vendor/node-addon-api/napi.h +2983 -2983
- package/vendor/node-addon-api/node_api.gyp +9 -9
- package/vendor/node-addon-api/noexcept.gypi +26 -26
- package/vendor/node-addon-api/package-support.json +21 -21
- package/vendor/node-addon-api/package.json +399 -399
- package/vendor/node-addon-api/test/README.md +91 -91
- package/vendor/node-addon-api/test/addon.cc +36 -36
- package/vendor/node-addon-api/test/addon.js +11 -11
- package/vendor/node-addon-api/test/addon_build/index.js +49 -49
- package/vendor/node-addon-api/test/addon_build/tpl/addon.cc +17 -17
- package/vendor/node-addon-api/test/addon_build/tpl/binding.gyp +62 -62
- package/vendor/node-addon-api/test/addon_build/tpl/index.js +9 -9
- package/vendor/node-addon-api/test/addon_build/tpl/package.json +11 -11
- package/vendor/node-addon-api/test/addon_data.cc +99 -99
- package/vendor/node-addon-api/test/addon_data.js +46 -46
- package/vendor/node-addon-api/test/array_buffer.cc +243 -243
- package/vendor/node-addon-api/test/array_buffer.js +69 -69
- package/vendor/node-addon-api/test/async_context.cc +21 -21
- package/vendor/node-addon-api/test/async_context.js +86 -86
- package/vendor/node-addon-api/test/async_progress_queue_worker.cc +83 -83
- package/vendor/node-addon-api/test/async_progress_queue_worker.js +46 -46
- package/vendor/node-addon-api/test/async_progress_worker.cc +134 -134
- package/vendor/node-addon-api/test/async_progress_worker.js +61 -61
- package/vendor/node-addon-api/test/async_worker.cc +106 -106
- package/vendor/node-addon-api/test/async_worker.js +179 -179
- package/vendor/node-addon-api/test/async_worker_nocallback.js +13 -13
- package/vendor/node-addon-api/test/async_worker_persistent.cc +63 -63
- package/vendor/node-addon-api/test/async_worker_persistent.js +24 -24
- package/vendor/node-addon-api/test/basic_types/array.cc +40 -40
- package/vendor/node-addon-api/test/basic_types/array.js +35 -35
- package/vendor/node-addon-api/test/basic_types/boolean.cc +38 -38
- package/vendor/node-addon-api/test/basic_types/boolean.js +35 -35
- package/vendor/node-addon-api/test/basic_types/number.cc +99 -99
- package/vendor/node-addon-api/test/basic_types/number.js +114 -114
- package/vendor/node-addon-api/test/basic_types/value.cc +120 -120
- package/vendor/node-addon-api/test/basic_types/value.js +133 -133
- package/vendor/node-addon-api/test/bigint.cc +91 -91
- package/vendor/node-addon-api/test/bigint.js +53 -53
- package/vendor/node-addon-api/test/binding-swallowexcept.cc +12 -12
- package/vendor/node-addon-api/test/binding.cc +171 -171
- package/vendor/node-addon-api/test/binding.gyp +117 -117
- package/vendor/node-addon-api/test/buffer.cc +183 -183
- package/vendor/node-addon-api/test/buffer.js +69 -69
- package/vendor/node-addon-api/test/callbackscope.cc +22 -22
- package/vendor/node-addon-api/test/callbackscope.js +49 -49
- package/vendor/node-addon-api/test/common/index.js +113 -113
- package/vendor/node-addon-api/test/common/test_helper.h +61 -61
- package/vendor/node-addon-api/test/dataview/dataview.cc +48 -48
- package/vendor/node-addon-api/test/dataview/dataview.js +35 -35
- package/vendor/node-addon-api/test/dataview/dataview_read_write.cc +115 -115
- package/vendor/node-addon-api/test/dataview/dataview_read_write.js +90 -90
- package/vendor/node-addon-api/test/date.cc +44 -44
- package/vendor/node-addon-api/test/date.js +18 -18
- package/vendor/node-addon-api/test/env_cleanup.cc +88 -88
- package/vendor/node-addon-api/test/env_cleanup.js +56 -56
- package/vendor/node-addon-api/test/error.cc +287 -287
- package/vendor/node-addon-api/test/error.js +81 -81
- package/vendor/node-addon-api/test/error_handling_for_primitives.cc +13 -13
- package/vendor/node-addon-api/test/error_handling_for_primitives.js +29 -29
- package/vendor/node-addon-api/test/error_terminating_environment.js +94 -94
- package/vendor/node-addon-api/test/external.cc +81 -81
- package/vendor/node-addon-api/test/external.js +88 -88
- package/vendor/node-addon-api/test/function.cc +295 -295
- package/vendor/node-addon-api/test/function.js +121 -121
- package/vendor/node-addon-api/test/function_reference.cc +202 -202
- package/vendor/node-addon-api/test/function_reference.js +157 -157
- package/vendor/node-addon-api/test/globalObject/global_object.cc +61 -61
- package/vendor/node-addon-api/test/globalObject/global_object_delete_property.cc +31 -31
- package/vendor/node-addon-api/test/globalObject/global_object_delete_property.js +61 -61
- package/vendor/node-addon-api/test/globalObject/global_object_get_property.cc +40 -40
- package/vendor/node-addon-api/test/globalObject/global_object_get_property.js +57 -57
- package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.cc +28 -28
- package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.js +48 -48
- package/vendor/node-addon-api/test/globalObject/global_object_set_property.cc +30 -30
- package/vendor/node-addon-api/test/globalObject/global_object_set_property.js +58 -58
- package/vendor/node-addon-api/test/handlescope.cc +60 -60
- package/vendor/node-addon-api/test/handlescope.js +14 -14
- package/vendor/node-addon-api/test/index.js +136 -136
- package/vendor/node-addon-api/test/maybe/check.cc +23 -23
- package/vendor/node-addon-api/test/maybe/index.js +38 -38
- package/vendor/node-addon-api/test/memory_management.cc +17 -17
- package/vendor/node-addon-api/test/memory_management.js +9 -9
- package/vendor/node-addon-api/test/movable_callbacks.cc +23 -23
- package/vendor/node-addon-api/test/movable_callbacks.js +21 -21
- package/vendor/node-addon-api/test/name.cc +108 -108
- package/vendor/node-addon-api/test/name.js +59 -59
- package/vendor/node-addon-api/test/napi_child.js +14 -14
- package/vendor/node-addon-api/test/object/delete_property.cc +38 -38
- package/vendor/node-addon-api/test/object/delete_property.js +41 -41
- package/vendor/node-addon-api/test/object/finalizer.cc +29 -29
- package/vendor/node-addon-api/test/object/finalizer.js +28 -28
- package/vendor/node-addon-api/test/object/get_property.cc +34 -34
- package/vendor/node-addon-api/test/object/get_property.js +40 -40
- package/vendor/node-addon-api/test/object/has_own_property.cc +34 -34
- package/vendor/node-addon-api/test/object/has_own_property.js +34 -34
- package/vendor/node-addon-api/test/object/has_property.cc +38 -38
- package/vendor/node-addon-api/test/object/has_property.js +37 -37
- package/vendor/node-addon-api/test/object/object.cc +348 -348
- package/vendor/node-addon-api/test/object/object.js +217 -217
- package/vendor/node-addon-api/test/object/object_deprecated.cc +66 -66
- package/vendor/node-addon-api/test/object/object_deprecated.js +47 -47
- package/vendor/node-addon-api/test/object/object_freeze_seal.cc +25 -25
- package/vendor/node-addon-api/test/object/object_freeze_seal.js +61 -61
- package/vendor/node-addon-api/test/object/set_property.cc +37 -37
- package/vendor/node-addon-api/test/object/set_property.js +29 -29
- package/vendor/node-addon-api/test/object/subscript_operator.cc +42 -42
- package/vendor/node-addon-api/test/object/subscript_operator.js +17 -17
- package/vendor/node-addon-api/test/object_reference.cc +219 -219
- package/vendor/node-addon-api/test/object_reference.js +259 -259
- package/vendor/node-addon-api/test/objectwrap.cc +268 -268
- package/vendor/node-addon-api/test/objectwrap.js +284 -284
- package/vendor/node-addon-api/test/objectwrap_constructor_exception.cc +26 -26
- package/vendor/node-addon-api/test/objectwrap_constructor_exception.js +18 -18
- package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.cc +30 -30
- package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.js +13 -13
- package/vendor/node-addon-api/test/objectwrap_removewrap.cc +45 -45
- package/vendor/node-addon-api/test/objectwrap_removewrap.js +40 -40
- package/vendor/node-addon-api/test/objectwrap_worker_thread.js +19 -19
- package/vendor/node-addon-api/test/promise.cc +29 -29
- package/vendor/node-addon-api/test/promise.js +18 -18
- package/vendor/node-addon-api/test/reference.cc +24 -24
- package/vendor/node-addon-api/test/reference.js +14 -14
- package/vendor/node-addon-api/test/run_script.cc +56 -56
- package/vendor/node-addon-api/test/run_script.js +45 -45
- package/vendor/node-addon-api/test/symbol.cc +79 -79
- package/vendor/node-addon-api/test/symbol.js +73 -73
- package/vendor/node-addon-api/test/testUtil.js +54 -54
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.cc +195 -195
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.js +188 -188
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.cc +63 -63
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.js +12 -12
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.cc +115 -115
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.js +14 -14
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.cc +26 -26
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.js +7 -7
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.cc +225 -225
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.js +59 -59
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.cc +42 -42
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.js +53 -53
- package/vendor/node-addon-api/test/thunking_manual.cc +140 -140
- package/vendor/node-addon-api/test/thunking_manual.js +17 -17
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.cc +215 -215
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.js +188 -188
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.cc +68 -68
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.js +12 -12
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.cc +127 -127
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.js +14 -14
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.cc +28 -28
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.js +7 -7
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.cc +237 -237
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.js +59 -59
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.cc +53 -53
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.js +53 -53
- package/vendor/node-addon-api/test/typedarray-bigint.js +58 -58
- package/vendor/node-addon-api/test/typedarray.cc +216 -216
- package/vendor/node-addon-api/test/typedarray.js +69 -69
- package/vendor/node-addon-api/test/version_management.cc +27 -27
- package/vendor/node-addon-api/test/version_management.js +31 -31
- package/vendor/node-addon-api/tools/README.md +73 -73
- package/vendor/node-addon-api/tools/check-napi.js +100 -100
- package/vendor/node-addon-api/tools/clang-format.js +68 -68
- package/vendor/node-addon-api/tools/conversion.js +309 -309
- package/vendor/node-addon-api/tools/eslint-format.js +71 -71
|
@@ -1,216 +1,216 @@
|
|
|
1
|
-
#include "napi.h"
|
|
2
|
-
|
|
3
|
-
using namespace Napi;
|
|
4
|
-
|
|
5
|
-
#if defined(NAPI_HAS_CONSTEXPR)
|
|
6
|
-
#define NAPI_TYPEDARRAY_NEW(className, env, length, type) className::New(env, length)
|
|
7
|
-
#define NAPI_TYPEDARRAY_NEW_BUFFER(className, env, length, buffer, bufferOffset, type) \
|
|
8
|
-
className::New(env, length, buffer, bufferOffset)
|
|
9
|
-
#else
|
|
10
|
-
#define NAPI_TYPEDARRAY_NEW(className, env, length, type) className::New(env, length, type)
|
|
11
|
-
#define NAPI_TYPEDARRAY_NEW_BUFFER(className, env, length, buffer, bufferOffset, type) \
|
|
12
|
-
className::New(env, length, buffer, bufferOffset, type)
|
|
13
|
-
#endif
|
|
14
|
-
|
|
15
|
-
namespace {
|
|
16
|
-
|
|
17
|
-
Value CreateTypedArray(const CallbackInfo& info) {
|
|
18
|
-
std::string arrayType = info[0].As<String>();
|
|
19
|
-
size_t length = info[1].As<Number>().Uint32Value();
|
|
20
|
-
ArrayBuffer buffer = info[2].As<ArrayBuffer>();
|
|
21
|
-
size_t bufferOffset = info[3].IsUndefined() ? 0 : info[3].As<Number>().Uint32Value();
|
|
22
|
-
|
|
23
|
-
if (arrayType == "int8") {
|
|
24
|
-
return buffer.IsUndefined() ?
|
|
25
|
-
NAPI_TYPEDARRAY_NEW(Int8Array, info.Env(), length, napi_int8_array) :
|
|
26
|
-
NAPI_TYPEDARRAY_NEW_BUFFER(Int8Array, info.Env(), length, buffer, bufferOffset,
|
|
27
|
-
napi_int8_array);
|
|
28
|
-
} else if (arrayType == "uint8") {
|
|
29
|
-
return buffer.IsUndefined() ?
|
|
30
|
-
NAPI_TYPEDARRAY_NEW(Uint8Array, info.Env(), length, napi_uint8_array) :
|
|
31
|
-
NAPI_TYPEDARRAY_NEW_BUFFER(Uint8Array, info.Env(), length, buffer, bufferOffset,
|
|
32
|
-
napi_uint8_array);
|
|
33
|
-
} else if (arrayType == "uint8_clamped") {
|
|
34
|
-
return buffer.IsUndefined() ?
|
|
35
|
-
Uint8Array::New(info.Env(), length, napi_uint8_clamped_array) :
|
|
36
|
-
Uint8Array::New(info.Env(), length, buffer, bufferOffset, napi_uint8_clamped_array);
|
|
37
|
-
} else if (arrayType == "int16") {
|
|
38
|
-
return buffer.IsUndefined() ?
|
|
39
|
-
NAPI_TYPEDARRAY_NEW(Int16Array, info.Env(), length, napi_int16_array) :
|
|
40
|
-
NAPI_TYPEDARRAY_NEW_BUFFER(Int16Array, info.Env(), length, buffer, bufferOffset,
|
|
41
|
-
napi_int16_array);
|
|
42
|
-
} else if (arrayType == "uint16") {
|
|
43
|
-
return buffer.IsUndefined() ?
|
|
44
|
-
NAPI_TYPEDARRAY_NEW(Uint16Array, info.Env(), length, napi_uint16_array) :
|
|
45
|
-
NAPI_TYPEDARRAY_NEW_BUFFER(Uint16Array, info.Env(), length, buffer, bufferOffset,
|
|
46
|
-
napi_uint16_array);
|
|
47
|
-
} else if (arrayType == "int32") {
|
|
48
|
-
return buffer.IsUndefined() ?
|
|
49
|
-
NAPI_TYPEDARRAY_NEW(Int32Array, info.Env(), length, napi_int32_array) :
|
|
50
|
-
NAPI_TYPEDARRAY_NEW_BUFFER(Int32Array, info.Env(), length, buffer, bufferOffset,
|
|
51
|
-
napi_int32_array);
|
|
52
|
-
} else if (arrayType == "uint32") {
|
|
53
|
-
return buffer.IsUndefined() ?
|
|
54
|
-
NAPI_TYPEDARRAY_NEW(Uint32Array, info.Env(), length, napi_uint32_array) :
|
|
55
|
-
NAPI_TYPEDARRAY_NEW_BUFFER(Uint32Array, info.Env(), length, buffer, bufferOffset,
|
|
56
|
-
napi_uint32_array);
|
|
57
|
-
} else if (arrayType == "float32") {
|
|
58
|
-
return buffer.IsUndefined() ?
|
|
59
|
-
NAPI_TYPEDARRAY_NEW(Float32Array, info.Env(), length, napi_float32_array) :
|
|
60
|
-
NAPI_TYPEDARRAY_NEW_BUFFER(Float32Array, info.Env(), length, buffer, bufferOffset,
|
|
61
|
-
napi_float32_array);
|
|
62
|
-
} else if (arrayType == "float64") {
|
|
63
|
-
return buffer.IsUndefined() ?
|
|
64
|
-
NAPI_TYPEDARRAY_NEW(Float64Array, info.Env(), length, napi_float64_array) :
|
|
65
|
-
NAPI_TYPEDARRAY_NEW_BUFFER(Float64Array, info.Env(), length, buffer, bufferOffset,
|
|
66
|
-
napi_float64_array);
|
|
67
|
-
#if (NAPI_VERSION > 5)
|
|
68
|
-
} else if (arrayType == "bigint64") {
|
|
69
|
-
return buffer.IsUndefined() ?
|
|
70
|
-
NAPI_TYPEDARRAY_NEW(BigInt64Array, info.Env(), length, napi_bigint64_array) :
|
|
71
|
-
NAPI_TYPEDARRAY_NEW_BUFFER(BigInt64Array, info.Env(), length, buffer, bufferOffset,
|
|
72
|
-
napi_bigint64_array);
|
|
73
|
-
} else if (arrayType == "biguint64") {
|
|
74
|
-
return buffer.IsUndefined() ?
|
|
75
|
-
NAPI_TYPEDARRAY_NEW(BigUint64Array, info.Env(), length, napi_biguint64_array) :
|
|
76
|
-
NAPI_TYPEDARRAY_NEW_BUFFER(BigUint64Array, info.Env(), length, buffer, bufferOffset,
|
|
77
|
-
napi_biguint64_array);
|
|
78
|
-
#endif
|
|
79
|
-
} else {
|
|
80
|
-
Error::New(info.Env(), "Invalid typed-array type.").ThrowAsJavaScriptException();
|
|
81
|
-
return Value();
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
Value CreateInvalidTypedArray(const CallbackInfo& info) {
|
|
86
|
-
return NAPI_TYPEDARRAY_NEW_BUFFER(Int8Array, info.Env(), 1, ArrayBuffer(), 0, napi_int8_array);
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
Value GetTypedArrayType(const CallbackInfo& info) {
|
|
90
|
-
TypedArray array = info[0].As<TypedArray>();
|
|
91
|
-
switch (array.TypedArrayType()) {
|
|
92
|
-
case napi_int8_array: return String::New(info.Env(), "int8");
|
|
93
|
-
case napi_uint8_array: return String::New(info.Env(), "uint8");
|
|
94
|
-
case napi_uint8_clamped_array: return String::New(info.Env(), "uint8_clamped");
|
|
95
|
-
case napi_int16_array: return String::New(info.Env(), "int16");
|
|
96
|
-
case napi_uint16_array: return String::New(info.Env(), "uint16");
|
|
97
|
-
case napi_int32_array: return String::New(info.Env(), "int32");
|
|
98
|
-
case napi_uint32_array: return String::New(info.Env(), "uint32");
|
|
99
|
-
case napi_float32_array: return String::New(info.Env(), "float32");
|
|
100
|
-
case napi_float64_array: return String::New(info.Env(), "float64");
|
|
101
|
-
#if (NAPI_VERSION > 5)
|
|
102
|
-
case napi_bigint64_array: return String::New(info.Env(), "bigint64");
|
|
103
|
-
case napi_biguint64_array: return String::New(info.Env(), "biguint64");
|
|
104
|
-
#endif
|
|
105
|
-
default: return String::New(info.Env(), "invalid");
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
Value GetTypedArrayLength(const CallbackInfo& info) {
|
|
110
|
-
TypedArray array = info[0].As<TypedArray>();
|
|
111
|
-
return Number::New(info.Env(), static_cast<double>(array.ElementLength()));
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
Value GetTypedArrayBuffer(const CallbackInfo& info) {
|
|
115
|
-
TypedArray array = info[0].As<TypedArray>();
|
|
116
|
-
return array.ArrayBuffer();
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
Value GetTypedArrayElement(const CallbackInfo& info) {
|
|
120
|
-
TypedArray array = info[0].As<TypedArray>();
|
|
121
|
-
size_t index = info[1].As<Number>().Uint32Value();
|
|
122
|
-
switch (array.TypedArrayType()) {
|
|
123
|
-
case napi_int8_array:
|
|
124
|
-
return Number::New(info.Env(), array.As<Int8Array>()[index]);
|
|
125
|
-
case napi_uint8_array:
|
|
126
|
-
return Number::New(info.Env(), array.As<Uint8Array>()[index]);
|
|
127
|
-
case napi_uint8_clamped_array:
|
|
128
|
-
return Number::New(info.Env(), array.As<Uint8Array>()[index]);
|
|
129
|
-
case napi_int16_array:
|
|
130
|
-
return Number::New(info.Env(), array.As<Int16Array>()[index]);
|
|
131
|
-
case napi_uint16_array:
|
|
132
|
-
return Number::New(info.Env(), array.As<Uint16Array>()[index]);
|
|
133
|
-
case napi_int32_array:
|
|
134
|
-
return Number::New(info.Env(), array.As<Int32Array>()[index]);
|
|
135
|
-
case napi_uint32_array:
|
|
136
|
-
return Number::New(info.Env(), array.As<Uint32Array>()[index]);
|
|
137
|
-
case napi_float32_array:
|
|
138
|
-
return Number::New(info.Env(), array.As<Float32Array>()[index]);
|
|
139
|
-
case napi_float64_array:
|
|
140
|
-
return Number::New(info.Env(), array.As<Float64Array>()[index]);
|
|
141
|
-
#if (NAPI_VERSION > 5)
|
|
142
|
-
case napi_bigint64_array:
|
|
143
|
-
return BigInt::New(info.Env(), array.As<BigInt64Array>()[index]);
|
|
144
|
-
case napi_biguint64_array:
|
|
145
|
-
return BigInt::New(info.Env(), array.As<BigUint64Array>()[index]);
|
|
146
|
-
#endif
|
|
147
|
-
default:
|
|
148
|
-
Error::New(info.Env(), "Invalid typed-array type.").ThrowAsJavaScriptException();
|
|
149
|
-
return Value();
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
void SetTypedArrayElement(const CallbackInfo& info) {
|
|
154
|
-
TypedArray array = info[0].As<TypedArray>();
|
|
155
|
-
size_t index = info[1].As<Number>().Uint32Value();
|
|
156
|
-
Number value = info[2].As<Number>();
|
|
157
|
-
switch (array.TypedArrayType()) {
|
|
158
|
-
case napi_int8_array:
|
|
159
|
-
array.As<Int8Array>()[index] = static_cast<int8_t>(value.Int32Value());
|
|
160
|
-
break;
|
|
161
|
-
case napi_uint8_array:
|
|
162
|
-
array.As<Uint8Array>()[index] = static_cast<uint8_t>(value.Uint32Value());
|
|
163
|
-
break;
|
|
164
|
-
case napi_uint8_clamped_array:
|
|
165
|
-
array.As<Uint8Array>()[index] = static_cast<uint8_t>(value.Uint32Value());
|
|
166
|
-
break;
|
|
167
|
-
case napi_int16_array:
|
|
168
|
-
array.As<Int16Array>()[index] = static_cast<int16_t>(value.Int32Value());
|
|
169
|
-
break;
|
|
170
|
-
case napi_uint16_array:
|
|
171
|
-
array.As<Uint16Array>()[index] = static_cast<uint16_t>(value.Uint32Value());
|
|
172
|
-
break;
|
|
173
|
-
case napi_int32_array:
|
|
174
|
-
array.As<Int32Array>()[index] = value.Int32Value();
|
|
175
|
-
break;
|
|
176
|
-
case napi_uint32_array:
|
|
177
|
-
array.As<Uint32Array>()[index] = value.Uint32Value();
|
|
178
|
-
break;
|
|
179
|
-
case napi_float32_array:
|
|
180
|
-
array.As<Float32Array>()[index] = value.FloatValue();
|
|
181
|
-
break;
|
|
182
|
-
case napi_float64_array:
|
|
183
|
-
array.As<Float64Array>()[index] = value.DoubleValue();
|
|
184
|
-
break;
|
|
185
|
-
#if (NAPI_VERSION > 5)
|
|
186
|
-
case napi_bigint64_array: {
|
|
187
|
-
bool lossless;
|
|
188
|
-
array.As<BigInt64Array>()[index] = value.As<BigInt>().Int64Value(&lossless);
|
|
189
|
-
break;
|
|
190
|
-
}
|
|
191
|
-
case napi_biguint64_array: {
|
|
192
|
-
bool lossless;
|
|
193
|
-
array.As<BigUint64Array>()[index] = value.As<BigInt>().Uint64Value(&lossless);
|
|
194
|
-
break;
|
|
195
|
-
}
|
|
196
|
-
#endif
|
|
197
|
-
default:
|
|
198
|
-
Error::New(info.Env(), "Invalid typed-array type.").ThrowAsJavaScriptException();
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
} // end anonymous namespace
|
|
203
|
-
|
|
204
|
-
Object InitTypedArray(Env env) {
|
|
205
|
-
Object exports = Object::New(env);
|
|
206
|
-
|
|
207
|
-
exports["createTypedArray"] = Function::New(env, CreateTypedArray);
|
|
208
|
-
exports["createInvalidTypedArray"] = Function::New(env, CreateInvalidTypedArray);
|
|
209
|
-
exports["getTypedArrayType"] = Function::New(env, GetTypedArrayType);
|
|
210
|
-
exports["getTypedArrayLength"] = Function::New(env, GetTypedArrayLength);
|
|
211
|
-
exports["getTypedArrayBuffer"] = Function::New(env, GetTypedArrayBuffer);
|
|
212
|
-
exports["getTypedArrayElement"] = Function::New(env, GetTypedArrayElement);
|
|
213
|
-
exports["setTypedArrayElement"] = Function::New(env, SetTypedArrayElement);
|
|
214
|
-
|
|
215
|
-
return exports;
|
|
216
|
-
}
|
|
1
|
+
#include "napi.h"
|
|
2
|
+
|
|
3
|
+
using namespace Napi;
|
|
4
|
+
|
|
5
|
+
#if defined(NAPI_HAS_CONSTEXPR)
|
|
6
|
+
#define NAPI_TYPEDARRAY_NEW(className, env, length, type) className::New(env, length)
|
|
7
|
+
#define NAPI_TYPEDARRAY_NEW_BUFFER(className, env, length, buffer, bufferOffset, type) \
|
|
8
|
+
className::New(env, length, buffer, bufferOffset)
|
|
9
|
+
#else
|
|
10
|
+
#define NAPI_TYPEDARRAY_NEW(className, env, length, type) className::New(env, length, type)
|
|
11
|
+
#define NAPI_TYPEDARRAY_NEW_BUFFER(className, env, length, buffer, bufferOffset, type) \
|
|
12
|
+
className::New(env, length, buffer, bufferOffset, type)
|
|
13
|
+
#endif
|
|
14
|
+
|
|
15
|
+
namespace {
|
|
16
|
+
|
|
17
|
+
Value CreateTypedArray(const CallbackInfo& info) {
|
|
18
|
+
std::string arrayType = info[0].As<String>();
|
|
19
|
+
size_t length = info[1].As<Number>().Uint32Value();
|
|
20
|
+
ArrayBuffer buffer = info[2].As<ArrayBuffer>();
|
|
21
|
+
size_t bufferOffset = info[3].IsUndefined() ? 0 : info[3].As<Number>().Uint32Value();
|
|
22
|
+
|
|
23
|
+
if (arrayType == "int8") {
|
|
24
|
+
return buffer.IsUndefined() ?
|
|
25
|
+
NAPI_TYPEDARRAY_NEW(Int8Array, info.Env(), length, napi_int8_array) :
|
|
26
|
+
NAPI_TYPEDARRAY_NEW_BUFFER(Int8Array, info.Env(), length, buffer, bufferOffset,
|
|
27
|
+
napi_int8_array);
|
|
28
|
+
} else if (arrayType == "uint8") {
|
|
29
|
+
return buffer.IsUndefined() ?
|
|
30
|
+
NAPI_TYPEDARRAY_NEW(Uint8Array, info.Env(), length, napi_uint8_array) :
|
|
31
|
+
NAPI_TYPEDARRAY_NEW_BUFFER(Uint8Array, info.Env(), length, buffer, bufferOffset,
|
|
32
|
+
napi_uint8_array);
|
|
33
|
+
} else if (arrayType == "uint8_clamped") {
|
|
34
|
+
return buffer.IsUndefined() ?
|
|
35
|
+
Uint8Array::New(info.Env(), length, napi_uint8_clamped_array) :
|
|
36
|
+
Uint8Array::New(info.Env(), length, buffer, bufferOffset, napi_uint8_clamped_array);
|
|
37
|
+
} else if (arrayType == "int16") {
|
|
38
|
+
return buffer.IsUndefined() ?
|
|
39
|
+
NAPI_TYPEDARRAY_NEW(Int16Array, info.Env(), length, napi_int16_array) :
|
|
40
|
+
NAPI_TYPEDARRAY_NEW_BUFFER(Int16Array, info.Env(), length, buffer, bufferOffset,
|
|
41
|
+
napi_int16_array);
|
|
42
|
+
} else if (arrayType == "uint16") {
|
|
43
|
+
return buffer.IsUndefined() ?
|
|
44
|
+
NAPI_TYPEDARRAY_NEW(Uint16Array, info.Env(), length, napi_uint16_array) :
|
|
45
|
+
NAPI_TYPEDARRAY_NEW_BUFFER(Uint16Array, info.Env(), length, buffer, bufferOffset,
|
|
46
|
+
napi_uint16_array);
|
|
47
|
+
} else if (arrayType == "int32") {
|
|
48
|
+
return buffer.IsUndefined() ?
|
|
49
|
+
NAPI_TYPEDARRAY_NEW(Int32Array, info.Env(), length, napi_int32_array) :
|
|
50
|
+
NAPI_TYPEDARRAY_NEW_BUFFER(Int32Array, info.Env(), length, buffer, bufferOffset,
|
|
51
|
+
napi_int32_array);
|
|
52
|
+
} else if (arrayType == "uint32") {
|
|
53
|
+
return buffer.IsUndefined() ?
|
|
54
|
+
NAPI_TYPEDARRAY_NEW(Uint32Array, info.Env(), length, napi_uint32_array) :
|
|
55
|
+
NAPI_TYPEDARRAY_NEW_BUFFER(Uint32Array, info.Env(), length, buffer, bufferOffset,
|
|
56
|
+
napi_uint32_array);
|
|
57
|
+
} else if (arrayType == "float32") {
|
|
58
|
+
return buffer.IsUndefined() ?
|
|
59
|
+
NAPI_TYPEDARRAY_NEW(Float32Array, info.Env(), length, napi_float32_array) :
|
|
60
|
+
NAPI_TYPEDARRAY_NEW_BUFFER(Float32Array, info.Env(), length, buffer, bufferOffset,
|
|
61
|
+
napi_float32_array);
|
|
62
|
+
} else if (arrayType == "float64") {
|
|
63
|
+
return buffer.IsUndefined() ?
|
|
64
|
+
NAPI_TYPEDARRAY_NEW(Float64Array, info.Env(), length, napi_float64_array) :
|
|
65
|
+
NAPI_TYPEDARRAY_NEW_BUFFER(Float64Array, info.Env(), length, buffer, bufferOffset,
|
|
66
|
+
napi_float64_array);
|
|
67
|
+
#if (NAPI_VERSION > 5)
|
|
68
|
+
} else if (arrayType == "bigint64") {
|
|
69
|
+
return buffer.IsUndefined() ?
|
|
70
|
+
NAPI_TYPEDARRAY_NEW(BigInt64Array, info.Env(), length, napi_bigint64_array) :
|
|
71
|
+
NAPI_TYPEDARRAY_NEW_BUFFER(BigInt64Array, info.Env(), length, buffer, bufferOffset,
|
|
72
|
+
napi_bigint64_array);
|
|
73
|
+
} else if (arrayType == "biguint64") {
|
|
74
|
+
return buffer.IsUndefined() ?
|
|
75
|
+
NAPI_TYPEDARRAY_NEW(BigUint64Array, info.Env(), length, napi_biguint64_array) :
|
|
76
|
+
NAPI_TYPEDARRAY_NEW_BUFFER(BigUint64Array, info.Env(), length, buffer, bufferOffset,
|
|
77
|
+
napi_biguint64_array);
|
|
78
|
+
#endif
|
|
79
|
+
} else {
|
|
80
|
+
Error::New(info.Env(), "Invalid typed-array type.").ThrowAsJavaScriptException();
|
|
81
|
+
return Value();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
Value CreateInvalidTypedArray(const CallbackInfo& info) {
|
|
86
|
+
return NAPI_TYPEDARRAY_NEW_BUFFER(Int8Array, info.Env(), 1, ArrayBuffer(), 0, napi_int8_array);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
Value GetTypedArrayType(const CallbackInfo& info) {
|
|
90
|
+
TypedArray array = info[0].As<TypedArray>();
|
|
91
|
+
switch (array.TypedArrayType()) {
|
|
92
|
+
case napi_int8_array: return String::New(info.Env(), "int8");
|
|
93
|
+
case napi_uint8_array: return String::New(info.Env(), "uint8");
|
|
94
|
+
case napi_uint8_clamped_array: return String::New(info.Env(), "uint8_clamped");
|
|
95
|
+
case napi_int16_array: return String::New(info.Env(), "int16");
|
|
96
|
+
case napi_uint16_array: return String::New(info.Env(), "uint16");
|
|
97
|
+
case napi_int32_array: return String::New(info.Env(), "int32");
|
|
98
|
+
case napi_uint32_array: return String::New(info.Env(), "uint32");
|
|
99
|
+
case napi_float32_array: return String::New(info.Env(), "float32");
|
|
100
|
+
case napi_float64_array: return String::New(info.Env(), "float64");
|
|
101
|
+
#if (NAPI_VERSION > 5)
|
|
102
|
+
case napi_bigint64_array: return String::New(info.Env(), "bigint64");
|
|
103
|
+
case napi_biguint64_array: return String::New(info.Env(), "biguint64");
|
|
104
|
+
#endif
|
|
105
|
+
default: return String::New(info.Env(), "invalid");
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
Value GetTypedArrayLength(const CallbackInfo& info) {
|
|
110
|
+
TypedArray array = info[0].As<TypedArray>();
|
|
111
|
+
return Number::New(info.Env(), static_cast<double>(array.ElementLength()));
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
Value GetTypedArrayBuffer(const CallbackInfo& info) {
|
|
115
|
+
TypedArray array = info[0].As<TypedArray>();
|
|
116
|
+
return array.ArrayBuffer();
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
Value GetTypedArrayElement(const CallbackInfo& info) {
|
|
120
|
+
TypedArray array = info[0].As<TypedArray>();
|
|
121
|
+
size_t index = info[1].As<Number>().Uint32Value();
|
|
122
|
+
switch (array.TypedArrayType()) {
|
|
123
|
+
case napi_int8_array:
|
|
124
|
+
return Number::New(info.Env(), array.As<Int8Array>()[index]);
|
|
125
|
+
case napi_uint8_array:
|
|
126
|
+
return Number::New(info.Env(), array.As<Uint8Array>()[index]);
|
|
127
|
+
case napi_uint8_clamped_array:
|
|
128
|
+
return Number::New(info.Env(), array.As<Uint8Array>()[index]);
|
|
129
|
+
case napi_int16_array:
|
|
130
|
+
return Number::New(info.Env(), array.As<Int16Array>()[index]);
|
|
131
|
+
case napi_uint16_array:
|
|
132
|
+
return Number::New(info.Env(), array.As<Uint16Array>()[index]);
|
|
133
|
+
case napi_int32_array:
|
|
134
|
+
return Number::New(info.Env(), array.As<Int32Array>()[index]);
|
|
135
|
+
case napi_uint32_array:
|
|
136
|
+
return Number::New(info.Env(), array.As<Uint32Array>()[index]);
|
|
137
|
+
case napi_float32_array:
|
|
138
|
+
return Number::New(info.Env(), array.As<Float32Array>()[index]);
|
|
139
|
+
case napi_float64_array:
|
|
140
|
+
return Number::New(info.Env(), array.As<Float64Array>()[index]);
|
|
141
|
+
#if (NAPI_VERSION > 5)
|
|
142
|
+
case napi_bigint64_array:
|
|
143
|
+
return BigInt::New(info.Env(), array.As<BigInt64Array>()[index]);
|
|
144
|
+
case napi_biguint64_array:
|
|
145
|
+
return BigInt::New(info.Env(), array.As<BigUint64Array>()[index]);
|
|
146
|
+
#endif
|
|
147
|
+
default:
|
|
148
|
+
Error::New(info.Env(), "Invalid typed-array type.").ThrowAsJavaScriptException();
|
|
149
|
+
return Value();
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
void SetTypedArrayElement(const CallbackInfo& info) {
|
|
154
|
+
TypedArray array = info[0].As<TypedArray>();
|
|
155
|
+
size_t index = info[1].As<Number>().Uint32Value();
|
|
156
|
+
Number value = info[2].As<Number>();
|
|
157
|
+
switch (array.TypedArrayType()) {
|
|
158
|
+
case napi_int8_array:
|
|
159
|
+
array.As<Int8Array>()[index] = static_cast<int8_t>(value.Int32Value());
|
|
160
|
+
break;
|
|
161
|
+
case napi_uint8_array:
|
|
162
|
+
array.As<Uint8Array>()[index] = static_cast<uint8_t>(value.Uint32Value());
|
|
163
|
+
break;
|
|
164
|
+
case napi_uint8_clamped_array:
|
|
165
|
+
array.As<Uint8Array>()[index] = static_cast<uint8_t>(value.Uint32Value());
|
|
166
|
+
break;
|
|
167
|
+
case napi_int16_array:
|
|
168
|
+
array.As<Int16Array>()[index] = static_cast<int16_t>(value.Int32Value());
|
|
169
|
+
break;
|
|
170
|
+
case napi_uint16_array:
|
|
171
|
+
array.As<Uint16Array>()[index] = static_cast<uint16_t>(value.Uint32Value());
|
|
172
|
+
break;
|
|
173
|
+
case napi_int32_array:
|
|
174
|
+
array.As<Int32Array>()[index] = value.Int32Value();
|
|
175
|
+
break;
|
|
176
|
+
case napi_uint32_array:
|
|
177
|
+
array.As<Uint32Array>()[index] = value.Uint32Value();
|
|
178
|
+
break;
|
|
179
|
+
case napi_float32_array:
|
|
180
|
+
array.As<Float32Array>()[index] = value.FloatValue();
|
|
181
|
+
break;
|
|
182
|
+
case napi_float64_array:
|
|
183
|
+
array.As<Float64Array>()[index] = value.DoubleValue();
|
|
184
|
+
break;
|
|
185
|
+
#if (NAPI_VERSION > 5)
|
|
186
|
+
case napi_bigint64_array: {
|
|
187
|
+
bool lossless;
|
|
188
|
+
array.As<BigInt64Array>()[index] = value.As<BigInt>().Int64Value(&lossless);
|
|
189
|
+
break;
|
|
190
|
+
}
|
|
191
|
+
case napi_biguint64_array: {
|
|
192
|
+
bool lossless;
|
|
193
|
+
array.As<BigUint64Array>()[index] = value.As<BigInt>().Uint64Value(&lossless);
|
|
194
|
+
break;
|
|
195
|
+
}
|
|
196
|
+
#endif
|
|
197
|
+
default:
|
|
198
|
+
Error::New(info.Env(), "Invalid typed-array type.").ThrowAsJavaScriptException();
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
} // end anonymous namespace
|
|
203
|
+
|
|
204
|
+
Object InitTypedArray(Env env) {
|
|
205
|
+
Object exports = Object::New(env);
|
|
206
|
+
|
|
207
|
+
exports["createTypedArray"] = Function::New(env, CreateTypedArray);
|
|
208
|
+
exports["createInvalidTypedArray"] = Function::New(env, CreateInvalidTypedArray);
|
|
209
|
+
exports["getTypedArrayType"] = Function::New(env, GetTypedArrayType);
|
|
210
|
+
exports["getTypedArrayLength"] = Function::New(env, GetTypedArrayLength);
|
|
211
|
+
exports["getTypedArrayBuffer"] = Function::New(env, GetTypedArrayBuffer);
|
|
212
|
+
exports["getTypedArrayElement"] = Function::New(env, GetTypedArrayElement);
|
|
213
|
+
exports["setTypedArrayElement"] = Function::New(env, SetTypedArrayElement);
|
|
214
|
+
|
|
215
|
+
return exports;
|
|
216
|
+
}
|
|
@@ -1,69 +1,69 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const assert = require('assert');
|
|
4
|
-
|
|
5
|
-
module.exports = require('./common').runTest(test);
|
|
6
|
-
|
|
7
|
-
function test(binding) {
|
|
8
|
-
const testData = [
|
|
9
|
-
[ 'int8', Int8Array ],
|
|
10
|
-
[ 'uint8', Uint8Array ],
|
|
11
|
-
[ 'uint8_clamped', Uint8ClampedArray ],
|
|
12
|
-
[ 'int16', Int16Array ],
|
|
13
|
-
[ 'uint16', Uint16Array ],
|
|
14
|
-
[ 'int32', Int32Array ],
|
|
15
|
-
[ 'uint32', Uint32Array ],
|
|
16
|
-
[ 'float32', Float32Array ],
|
|
17
|
-
[ 'float64', Float64Array ],
|
|
18
|
-
];
|
|
19
|
-
|
|
20
|
-
testData.forEach(data => {
|
|
21
|
-
try {
|
|
22
|
-
const length = 4;
|
|
23
|
-
const t = binding.typedarray.createTypedArray(data[0], length);
|
|
24
|
-
assert.ok(t instanceof data[1]);
|
|
25
|
-
assert.strictEqual(binding.typedarray.getTypedArrayType(t), data[0]);
|
|
26
|
-
assert.strictEqual(binding.typedarray.getTypedArrayLength(t), length);
|
|
27
|
-
|
|
28
|
-
t[3] = 11;
|
|
29
|
-
assert.strictEqual(binding.typedarray.getTypedArrayElement(t, 3), 11);
|
|
30
|
-
binding.typedarray.setTypedArrayElement(t, 3, 22);
|
|
31
|
-
assert.strictEqual(binding.typedarray.getTypedArrayElement(t, 3), 22);
|
|
32
|
-
assert.strictEqual(t[3], 22);
|
|
33
|
-
|
|
34
|
-
const b = binding.typedarray.getTypedArrayBuffer(t);
|
|
35
|
-
assert.ok(b instanceof ArrayBuffer);
|
|
36
|
-
} catch (e) {
|
|
37
|
-
console.log(data);
|
|
38
|
-
throw e;
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
testData.forEach(data => {
|
|
43
|
-
try {
|
|
44
|
-
const length = 4;
|
|
45
|
-
const offset = 8;
|
|
46
|
-
const b = new ArrayBuffer(offset + 64 * 4);
|
|
47
|
-
|
|
48
|
-
const t = binding.typedarray.createTypedArray(data[0], length, b, offset);
|
|
49
|
-
assert.ok(t instanceof data[1]);
|
|
50
|
-
assert.strictEqual(binding.typedarray.getTypedArrayType(t), data[0]);
|
|
51
|
-
assert.strictEqual(binding.typedarray.getTypedArrayLength(t), length);
|
|
52
|
-
|
|
53
|
-
t[3] = 11;
|
|
54
|
-
assert.strictEqual(binding.typedarray.getTypedArrayElement(t, 3), 11);
|
|
55
|
-
binding.typedarray.setTypedArrayElement(t, 3, 22);
|
|
56
|
-
assert.strictEqual(binding.typedarray.getTypedArrayElement(t, 3), 22);
|
|
57
|
-
assert.strictEqual(t[3], 22);
|
|
58
|
-
|
|
59
|
-
assert.strictEqual(binding.typedarray.getTypedArrayBuffer(t), b);
|
|
60
|
-
} catch (e) {
|
|
61
|
-
console.log(data);
|
|
62
|
-
throw e;
|
|
63
|
-
}
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
assert.throws(() => {
|
|
67
|
-
binding.typedarray.createInvalidTypedArray();
|
|
68
|
-
}, /Invalid (pointer passed as )?argument/);
|
|
69
|
-
}
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const assert = require('assert');
|
|
4
|
+
|
|
5
|
+
module.exports = require('./common').runTest(test);
|
|
6
|
+
|
|
7
|
+
function test(binding) {
|
|
8
|
+
const testData = [
|
|
9
|
+
[ 'int8', Int8Array ],
|
|
10
|
+
[ 'uint8', Uint8Array ],
|
|
11
|
+
[ 'uint8_clamped', Uint8ClampedArray ],
|
|
12
|
+
[ 'int16', Int16Array ],
|
|
13
|
+
[ 'uint16', Uint16Array ],
|
|
14
|
+
[ 'int32', Int32Array ],
|
|
15
|
+
[ 'uint32', Uint32Array ],
|
|
16
|
+
[ 'float32', Float32Array ],
|
|
17
|
+
[ 'float64', Float64Array ],
|
|
18
|
+
];
|
|
19
|
+
|
|
20
|
+
testData.forEach(data => {
|
|
21
|
+
try {
|
|
22
|
+
const length = 4;
|
|
23
|
+
const t = binding.typedarray.createTypedArray(data[0], length);
|
|
24
|
+
assert.ok(t instanceof data[1]);
|
|
25
|
+
assert.strictEqual(binding.typedarray.getTypedArrayType(t), data[0]);
|
|
26
|
+
assert.strictEqual(binding.typedarray.getTypedArrayLength(t), length);
|
|
27
|
+
|
|
28
|
+
t[3] = 11;
|
|
29
|
+
assert.strictEqual(binding.typedarray.getTypedArrayElement(t, 3), 11);
|
|
30
|
+
binding.typedarray.setTypedArrayElement(t, 3, 22);
|
|
31
|
+
assert.strictEqual(binding.typedarray.getTypedArrayElement(t, 3), 22);
|
|
32
|
+
assert.strictEqual(t[3], 22);
|
|
33
|
+
|
|
34
|
+
const b = binding.typedarray.getTypedArrayBuffer(t);
|
|
35
|
+
assert.ok(b instanceof ArrayBuffer);
|
|
36
|
+
} catch (e) {
|
|
37
|
+
console.log(data);
|
|
38
|
+
throw e;
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
testData.forEach(data => {
|
|
43
|
+
try {
|
|
44
|
+
const length = 4;
|
|
45
|
+
const offset = 8;
|
|
46
|
+
const b = new ArrayBuffer(offset + 64 * 4);
|
|
47
|
+
|
|
48
|
+
const t = binding.typedarray.createTypedArray(data[0], length, b, offset);
|
|
49
|
+
assert.ok(t instanceof data[1]);
|
|
50
|
+
assert.strictEqual(binding.typedarray.getTypedArrayType(t), data[0]);
|
|
51
|
+
assert.strictEqual(binding.typedarray.getTypedArrayLength(t), length);
|
|
52
|
+
|
|
53
|
+
t[3] = 11;
|
|
54
|
+
assert.strictEqual(binding.typedarray.getTypedArrayElement(t, 3), 11);
|
|
55
|
+
binding.typedarray.setTypedArrayElement(t, 3, 22);
|
|
56
|
+
assert.strictEqual(binding.typedarray.getTypedArrayElement(t, 3), 22);
|
|
57
|
+
assert.strictEqual(t[3], 22);
|
|
58
|
+
|
|
59
|
+
assert.strictEqual(binding.typedarray.getTypedArrayBuffer(t), b);
|
|
60
|
+
} catch (e) {
|
|
61
|
+
console.log(data);
|
|
62
|
+
throw e;
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
assert.throws(() => {
|
|
67
|
+
binding.typedarray.createInvalidTypedArray();
|
|
68
|
+
}, /Invalid (pointer passed as )?argument/);
|
|
69
|
+
}
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
#include "napi.h"
|
|
2
|
-
|
|
3
|
-
using namespace Napi;
|
|
4
|
-
|
|
5
|
-
Value getNapiVersion(const CallbackInfo& info) {
|
|
6
|
-
Napi::Env env = info.Env();
|
|
7
|
-
uint32_t napi_version = VersionManagement::GetNapiVersion(env);
|
|
8
|
-
return Number::New(env, napi_version);
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
Value getNodeVersion(const CallbackInfo& info) {
|
|
12
|
-
Napi::Env env = info.Env();
|
|
13
|
-
const napi_node_version* node_version = VersionManagement::GetNodeVersion(env);
|
|
14
|
-
Object version = Object::New(env);
|
|
15
|
-
version.Set("major", Number::New(env, node_version->major));
|
|
16
|
-
version.Set("minor", Number::New(env, node_version->minor));
|
|
17
|
-
version.Set("patch", Number::New(env, node_version->patch));
|
|
18
|
-
version.Set("release", String::New(env, node_version->release));
|
|
19
|
-
return version;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
Object InitVersionManagement(Env env) {
|
|
23
|
-
Object exports = Object::New(env);
|
|
24
|
-
exports["getNapiVersion"] = Function::New(env, getNapiVersion);
|
|
25
|
-
exports["getNodeVersion"] = Function::New(env, getNodeVersion);
|
|
26
|
-
return exports;
|
|
27
|
-
}
|
|
1
|
+
#include "napi.h"
|
|
2
|
+
|
|
3
|
+
using namespace Napi;
|
|
4
|
+
|
|
5
|
+
Value getNapiVersion(const CallbackInfo& info) {
|
|
6
|
+
Napi::Env env = info.Env();
|
|
7
|
+
uint32_t napi_version = VersionManagement::GetNapiVersion(env);
|
|
8
|
+
return Number::New(env, napi_version);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
Value getNodeVersion(const CallbackInfo& info) {
|
|
12
|
+
Napi::Env env = info.Env();
|
|
13
|
+
const napi_node_version* node_version = VersionManagement::GetNodeVersion(env);
|
|
14
|
+
Object version = Object::New(env);
|
|
15
|
+
version.Set("major", Number::New(env, node_version->major));
|
|
16
|
+
version.Set("minor", Number::New(env, node_version->minor));
|
|
17
|
+
version.Set("patch", Number::New(env, node_version->patch));
|
|
18
|
+
version.Set("release", String::New(env, node_version->release));
|
|
19
|
+
return version;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
Object InitVersionManagement(Env env) {
|
|
23
|
+
Object exports = Object::New(env);
|
|
24
|
+
exports["getNapiVersion"] = Function::New(env, getNapiVersion);
|
|
25
|
+
exports["getNodeVersion"] = Function::New(env, getNodeVersion);
|
|
26
|
+
return exports;
|
|
27
|
+
}
|