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,35 +1,35 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
const assert = require('assert');
|
|
3
|
-
|
|
4
|
-
module.exports = require('../common').runTest(test);
|
|
5
|
-
|
|
6
|
-
function test(binding) {
|
|
7
|
-
|
|
8
|
-
// create empty array
|
|
9
|
-
const array = binding.basic_types_array.createArray();
|
|
10
|
-
assert.strictEqual(binding.basic_types_array.getLength(array), 0);
|
|
11
|
-
|
|
12
|
-
// create array with length
|
|
13
|
-
const arrayWithLength = binding.basic_types_array.createArray(10);
|
|
14
|
-
assert.strictEqual(binding.basic_types_array.getLength(arrayWithLength), 10);
|
|
15
|
-
|
|
16
|
-
// set function test
|
|
17
|
-
binding.basic_types_array.set(array, 0, 10);
|
|
18
|
-
binding.basic_types_array.set(array, 1, "test");
|
|
19
|
-
binding.basic_types_array.set(array, 2, 3.0);
|
|
20
|
-
|
|
21
|
-
// check length after set data
|
|
22
|
-
assert.strictEqual(binding.basic_types_array.getLength(array), 3);
|
|
23
|
-
|
|
24
|
-
// get function test
|
|
25
|
-
assert.strictEqual(binding.basic_types_array.get(array, 0), 10);
|
|
26
|
-
assert.strictEqual(binding.basic_types_array.get(array, 1), "test");
|
|
27
|
-
assert.strictEqual(binding.basic_types_array.get(array, 2), 3.0);
|
|
28
|
-
|
|
29
|
-
// overwrite test
|
|
30
|
-
binding.basic_types_array.set(array, 0, 5);
|
|
31
|
-
assert.strictEqual(binding.basic_types_array.get(array, 0), 5);
|
|
32
|
-
|
|
33
|
-
// out of index test
|
|
34
|
-
assert.strictEqual(binding.basic_types_array.get(array, 5), undefined);
|
|
35
|
-
}
|
|
1
|
+
'use strict';
|
|
2
|
+
const assert = require('assert');
|
|
3
|
+
|
|
4
|
+
module.exports = require('../common').runTest(test);
|
|
5
|
+
|
|
6
|
+
function test(binding) {
|
|
7
|
+
|
|
8
|
+
// create empty array
|
|
9
|
+
const array = binding.basic_types_array.createArray();
|
|
10
|
+
assert.strictEqual(binding.basic_types_array.getLength(array), 0);
|
|
11
|
+
|
|
12
|
+
// create array with length
|
|
13
|
+
const arrayWithLength = binding.basic_types_array.createArray(10);
|
|
14
|
+
assert.strictEqual(binding.basic_types_array.getLength(arrayWithLength), 10);
|
|
15
|
+
|
|
16
|
+
// set function test
|
|
17
|
+
binding.basic_types_array.set(array, 0, 10);
|
|
18
|
+
binding.basic_types_array.set(array, 1, "test");
|
|
19
|
+
binding.basic_types_array.set(array, 2, 3.0);
|
|
20
|
+
|
|
21
|
+
// check length after set data
|
|
22
|
+
assert.strictEqual(binding.basic_types_array.getLength(array), 3);
|
|
23
|
+
|
|
24
|
+
// get function test
|
|
25
|
+
assert.strictEqual(binding.basic_types_array.get(array, 0), 10);
|
|
26
|
+
assert.strictEqual(binding.basic_types_array.get(array, 1), "test");
|
|
27
|
+
assert.strictEqual(binding.basic_types_array.get(array, 2), 3.0);
|
|
28
|
+
|
|
29
|
+
// overwrite test
|
|
30
|
+
binding.basic_types_array.set(array, 0, 5);
|
|
31
|
+
assert.strictEqual(binding.basic_types_array.get(array, 0), 5);
|
|
32
|
+
|
|
33
|
+
// out of index test
|
|
34
|
+
assert.strictEqual(binding.basic_types_array.get(array, 5), undefined);
|
|
35
|
+
}
|
|
@@ -1,38 +1,38 @@
|
|
|
1
|
-
#include "napi.h"
|
|
2
|
-
|
|
3
|
-
using namespace Napi;
|
|
4
|
-
|
|
5
|
-
Value CreateBoolean(const CallbackInfo& info) {
|
|
6
|
-
return Boolean::New(info.Env(), info[0].As<Boolean>().Value());
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
Value CreateEmptyBoolean(const CallbackInfo& info) {
|
|
10
|
-
Boolean* boolean = new Boolean();
|
|
11
|
-
return Boolean::New(info.Env(), boolean->IsEmpty());
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
Value CreateBooleanFromExistingValue(const CallbackInfo& info) {
|
|
15
|
-
Boolean boolean(info.Env(), info[0].As<Boolean>());
|
|
16
|
-
return Boolean::New(info.Env(), boolean.Value());
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
Value CreateBooleanFromPrimitive(const CallbackInfo& info) {
|
|
20
|
-
bool boolean = info[0].As<Boolean>();
|
|
21
|
-
return Boolean::New(info.Env(), boolean);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
Value OperatorBool(const CallbackInfo& info) {
|
|
25
|
-
Boolean boolean(info.Env(), info[0].As<Boolean>());
|
|
26
|
-
return Boolean::New(info.Env(), static_cast<bool>(boolean));
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
Object InitBasicTypesBoolean(Env env) {
|
|
30
|
-
Object exports = Object::New(env);
|
|
31
|
-
|
|
32
|
-
exports["createBoolean"] = Function::New(env, CreateBoolean);
|
|
33
|
-
exports["createEmptyBoolean"] = Function::New(env, CreateEmptyBoolean);
|
|
34
|
-
exports["createBooleanFromExistingValue"] = Function::New(env, CreateBooleanFromExistingValue);
|
|
35
|
-
exports["createBooleanFromPrimitive"] = Function::New(env, CreateBooleanFromPrimitive);
|
|
36
|
-
exports["operatorBool"] = Function::New(env, OperatorBool);
|
|
37
|
-
return exports;
|
|
38
|
-
}
|
|
1
|
+
#include "napi.h"
|
|
2
|
+
|
|
3
|
+
using namespace Napi;
|
|
4
|
+
|
|
5
|
+
Value CreateBoolean(const CallbackInfo& info) {
|
|
6
|
+
return Boolean::New(info.Env(), info[0].As<Boolean>().Value());
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
Value CreateEmptyBoolean(const CallbackInfo& info) {
|
|
10
|
+
Boolean* boolean = new Boolean();
|
|
11
|
+
return Boolean::New(info.Env(), boolean->IsEmpty());
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
Value CreateBooleanFromExistingValue(const CallbackInfo& info) {
|
|
15
|
+
Boolean boolean(info.Env(), info[0].As<Boolean>());
|
|
16
|
+
return Boolean::New(info.Env(), boolean.Value());
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
Value CreateBooleanFromPrimitive(const CallbackInfo& info) {
|
|
20
|
+
bool boolean = info[0].As<Boolean>();
|
|
21
|
+
return Boolean::New(info.Env(), boolean);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
Value OperatorBool(const CallbackInfo& info) {
|
|
25
|
+
Boolean boolean(info.Env(), info[0].As<Boolean>());
|
|
26
|
+
return Boolean::New(info.Env(), static_cast<bool>(boolean));
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
Object InitBasicTypesBoolean(Env env) {
|
|
30
|
+
Object exports = Object::New(env);
|
|
31
|
+
|
|
32
|
+
exports["createBoolean"] = Function::New(env, CreateBoolean);
|
|
33
|
+
exports["createEmptyBoolean"] = Function::New(env, CreateEmptyBoolean);
|
|
34
|
+
exports["createBooleanFromExistingValue"] = Function::New(env, CreateBooleanFromExistingValue);
|
|
35
|
+
exports["createBooleanFromPrimitive"] = Function::New(env, CreateBooleanFromPrimitive);
|
|
36
|
+
exports["operatorBool"] = Function::New(env, OperatorBool);
|
|
37
|
+
return exports;
|
|
38
|
+
}
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const assert = require('assert');
|
|
4
|
-
|
|
5
|
-
module.exports = require('../common').runTest(test);
|
|
6
|
-
|
|
7
|
-
function test(binding) {
|
|
8
|
-
const bool1 = binding.basic_types_boolean.createBoolean(true);
|
|
9
|
-
assert.strictEqual(bool1, true);
|
|
10
|
-
|
|
11
|
-
const bool2 = binding.basic_types_boolean.createBoolean(false);
|
|
12
|
-
assert.strictEqual(bool2, false);
|
|
13
|
-
|
|
14
|
-
const emptyBoolean = binding.basic_types_boolean.createEmptyBoolean();
|
|
15
|
-
assert.strictEqual(emptyBoolean, true);
|
|
16
|
-
|
|
17
|
-
const bool3 = binding.basic_types_boolean.createBooleanFromExistingValue(true);
|
|
18
|
-
assert.strictEqual(bool3, true);
|
|
19
|
-
|
|
20
|
-
const bool4 = binding.basic_types_boolean.createBooleanFromExistingValue(false);
|
|
21
|
-
assert.strictEqual(bool4, false);
|
|
22
|
-
|
|
23
|
-
const bool5 = binding.basic_types_boolean.createBooleanFromPrimitive(true);
|
|
24
|
-
assert.strictEqual(bool5, true);
|
|
25
|
-
|
|
26
|
-
const bool6 = binding.basic_types_boolean.createBooleanFromPrimitive(false);
|
|
27
|
-
assert.strictEqual(bool6, false);
|
|
28
|
-
|
|
29
|
-
const bool7 = binding.basic_types_boolean.operatorBool(true);
|
|
30
|
-
assert.strictEqual(bool7, true);
|
|
31
|
-
|
|
32
|
-
const bool8 = binding.basic_types_boolean.operatorBool(false);
|
|
33
|
-
assert.strictEqual(bool8, false);
|
|
34
|
-
|
|
35
|
-
}
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const assert = require('assert');
|
|
4
|
+
|
|
5
|
+
module.exports = require('../common').runTest(test);
|
|
6
|
+
|
|
7
|
+
function test(binding) {
|
|
8
|
+
const bool1 = binding.basic_types_boolean.createBoolean(true);
|
|
9
|
+
assert.strictEqual(bool1, true);
|
|
10
|
+
|
|
11
|
+
const bool2 = binding.basic_types_boolean.createBoolean(false);
|
|
12
|
+
assert.strictEqual(bool2, false);
|
|
13
|
+
|
|
14
|
+
const emptyBoolean = binding.basic_types_boolean.createEmptyBoolean();
|
|
15
|
+
assert.strictEqual(emptyBoolean, true);
|
|
16
|
+
|
|
17
|
+
const bool3 = binding.basic_types_boolean.createBooleanFromExistingValue(true);
|
|
18
|
+
assert.strictEqual(bool3, true);
|
|
19
|
+
|
|
20
|
+
const bool4 = binding.basic_types_boolean.createBooleanFromExistingValue(false);
|
|
21
|
+
assert.strictEqual(bool4, false);
|
|
22
|
+
|
|
23
|
+
const bool5 = binding.basic_types_boolean.createBooleanFromPrimitive(true);
|
|
24
|
+
assert.strictEqual(bool5, true);
|
|
25
|
+
|
|
26
|
+
const bool6 = binding.basic_types_boolean.createBooleanFromPrimitive(false);
|
|
27
|
+
assert.strictEqual(bool6, false);
|
|
28
|
+
|
|
29
|
+
const bool7 = binding.basic_types_boolean.operatorBool(true);
|
|
30
|
+
assert.strictEqual(bool7, true);
|
|
31
|
+
|
|
32
|
+
const bool8 = binding.basic_types_boolean.operatorBool(false);
|
|
33
|
+
assert.strictEqual(bool8, false);
|
|
34
|
+
|
|
35
|
+
}
|
|
@@ -1,99 +1,99 @@
|
|
|
1
|
-
#include <cfloat>
|
|
2
|
-
|
|
3
|
-
#include "napi.h"
|
|
4
|
-
|
|
5
|
-
using namespace Napi;
|
|
6
|
-
|
|
7
|
-
Value ToInt32(const CallbackInfo& info) {
|
|
8
|
-
return Number::New(info.Env(), info[0].As<Number>().Int32Value());
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
Value ToUint32(const CallbackInfo& info) {
|
|
12
|
-
return Number::New(info.Env(), info[0].As<Number>().Uint32Value());
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
Value ToInt64(const CallbackInfo& info) {
|
|
16
|
-
return Number::New(info.Env(),
|
|
17
|
-
static_cast<double>(info[0].As<Number>().Int64Value()));
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
Value ToFloat(const CallbackInfo& info) {
|
|
21
|
-
return Number::New(info.Env(), info[0].As<Number>().FloatValue());
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
Value ToDouble(const CallbackInfo& info) {
|
|
25
|
-
return Number::New(info.Env(), info[0].As<Number>().DoubleValue());
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
Value MinFloat(const CallbackInfo& info) {
|
|
29
|
-
return Number::New(info.Env(), FLT_MIN);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
Value MaxFloat(const CallbackInfo& info) {
|
|
33
|
-
return Number::New(info.Env(), FLT_MAX);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
Value MinDouble(const CallbackInfo& info) {
|
|
37
|
-
return Number::New(info.Env(), DBL_MIN);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
Value MaxDouble(const CallbackInfo& info) {
|
|
41
|
-
return Number::New(info.Env(), DBL_MAX);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
Value OperatorInt32(const CallbackInfo& info) {
|
|
45
|
-
Number number = info[0].As<Number>();
|
|
46
|
-
return Boolean::New(info.Env(), number.Int32Value() == static_cast<int32_t>(number));
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
Value OperatorUint32(const CallbackInfo& info) {
|
|
50
|
-
Number number = info[0].As<Number>();
|
|
51
|
-
return Boolean::New(info.Env(), number.Uint32Value() == static_cast<uint32_t>(number));
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
Value OperatorInt64(const CallbackInfo& info) {
|
|
55
|
-
Number number = info[0].As<Number>();
|
|
56
|
-
return Boolean::New(info.Env(), number.Int64Value() == static_cast<int64_t>(number));
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
Value OperatorFloat(const CallbackInfo& info) {
|
|
60
|
-
Number number = info[0].As<Number>();
|
|
61
|
-
return Boolean::New(info.Env(), number.FloatValue() == static_cast<float>(number));
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
Value OperatorDouble(const CallbackInfo& info) {
|
|
65
|
-
Number number = info[0].As<Number>();
|
|
66
|
-
return Boolean::New(info.Env(), number.DoubleValue() == static_cast<double>(number));
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
Value CreateEmptyNumber(const CallbackInfo& info) {
|
|
70
|
-
Number number;
|
|
71
|
-
return Boolean::New(info.Env(), number.IsEmpty());
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
Value CreateNumberFromExistingValue(const CallbackInfo& info) {
|
|
75
|
-
return info[0].As<Number>();
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
Object InitBasicTypesNumber(Env env) {
|
|
79
|
-
Object exports = Object::New(env);
|
|
80
|
-
|
|
81
|
-
exports["toInt32"] = Function::New(env, ToInt32);
|
|
82
|
-
exports["toUint32"] = Function::New(env, ToUint32);
|
|
83
|
-
exports["toInt64"] = Function::New(env, ToInt64);
|
|
84
|
-
exports["toFloat"] = Function::New(env, ToFloat);
|
|
85
|
-
exports["toDouble"] = Function::New(env, ToDouble);
|
|
86
|
-
exports["minFloat"] = Function::New(env, MinFloat);
|
|
87
|
-
exports["maxFloat"] = Function::New(env, MaxFloat);
|
|
88
|
-
exports["minDouble"] = Function::New(env, MinDouble);
|
|
89
|
-
exports["maxDouble"] = Function::New(env, MaxDouble);
|
|
90
|
-
exports["operatorInt32"] = Function::New(env, OperatorInt32);
|
|
91
|
-
exports["operatorUint32"] = Function::New(env, OperatorUint32);
|
|
92
|
-
exports["operatorInt64"] = Function::New(env, OperatorInt64);
|
|
93
|
-
exports["operatorFloat"] = Function::New(env, OperatorFloat);
|
|
94
|
-
exports["operatorDouble"] = Function::New(env, OperatorDouble);
|
|
95
|
-
exports["createEmptyNumber"] = Function::New(env, CreateEmptyNumber);
|
|
96
|
-
exports["createNumberFromExistingValue"] = Function::New(env, CreateNumberFromExistingValue);
|
|
97
|
-
|
|
98
|
-
return exports;
|
|
99
|
-
}
|
|
1
|
+
#include <cfloat>
|
|
2
|
+
|
|
3
|
+
#include "napi.h"
|
|
4
|
+
|
|
5
|
+
using namespace Napi;
|
|
6
|
+
|
|
7
|
+
Value ToInt32(const CallbackInfo& info) {
|
|
8
|
+
return Number::New(info.Env(), info[0].As<Number>().Int32Value());
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
Value ToUint32(const CallbackInfo& info) {
|
|
12
|
+
return Number::New(info.Env(), info[0].As<Number>().Uint32Value());
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
Value ToInt64(const CallbackInfo& info) {
|
|
16
|
+
return Number::New(info.Env(),
|
|
17
|
+
static_cast<double>(info[0].As<Number>().Int64Value()));
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
Value ToFloat(const CallbackInfo& info) {
|
|
21
|
+
return Number::New(info.Env(), info[0].As<Number>().FloatValue());
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
Value ToDouble(const CallbackInfo& info) {
|
|
25
|
+
return Number::New(info.Env(), info[0].As<Number>().DoubleValue());
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
Value MinFloat(const CallbackInfo& info) {
|
|
29
|
+
return Number::New(info.Env(), FLT_MIN);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
Value MaxFloat(const CallbackInfo& info) {
|
|
33
|
+
return Number::New(info.Env(), FLT_MAX);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
Value MinDouble(const CallbackInfo& info) {
|
|
37
|
+
return Number::New(info.Env(), DBL_MIN);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
Value MaxDouble(const CallbackInfo& info) {
|
|
41
|
+
return Number::New(info.Env(), DBL_MAX);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
Value OperatorInt32(const CallbackInfo& info) {
|
|
45
|
+
Number number = info[0].As<Number>();
|
|
46
|
+
return Boolean::New(info.Env(), number.Int32Value() == static_cast<int32_t>(number));
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
Value OperatorUint32(const CallbackInfo& info) {
|
|
50
|
+
Number number = info[0].As<Number>();
|
|
51
|
+
return Boolean::New(info.Env(), number.Uint32Value() == static_cast<uint32_t>(number));
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
Value OperatorInt64(const CallbackInfo& info) {
|
|
55
|
+
Number number = info[0].As<Number>();
|
|
56
|
+
return Boolean::New(info.Env(), number.Int64Value() == static_cast<int64_t>(number));
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
Value OperatorFloat(const CallbackInfo& info) {
|
|
60
|
+
Number number = info[0].As<Number>();
|
|
61
|
+
return Boolean::New(info.Env(), number.FloatValue() == static_cast<float>(number));
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
Value OperatorDouble(const CallbackInfo& info) {
|
|
65
|
+
Number number = info[0].As<Number>();
|
|
66
|
+
return Boolean::New(info.Env(), number.DoubleValue() == static_cast<double>(number));
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
Value CreateEmptyNumber(const CallbackInfo& info) {
|
|
70
|
+
Number number;
|
|
71
|
+
return Boolean::New(info.Env(), number.IsEmpty());
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
Value CreateNumberFromExistingValue(const CallbackInfo& info) {
|
|
75
|
+
return info[0].As<Number>();
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
Object InitBasicTypesNumber(Env env) {
|
|
79
|
+
Object exports = Object::New(env);
|
|
80
|
+
|
|
81
|
+
exports["toInt32"] = Function::New(env, ToInt32);
|
|
82
|
+
exports["toUint32"] = Function::New(env, ToUint32);
|
|
83
|
+
exports["toInt64"] = Function::New(env, ToInt64);
|
|
84
|
+
exports["toFloat"] = Function::New(env, ToFloat);
|
|
85
|
+
exports["toDouble"] = Function::New(env, ToDouble);
|
|
86
|
+
exports["minFloat"] = Function::New(env, MinFloat);
|
|
87
|
+
exports["maxFloat"] = Function::New(env, MaxFloat);
|
|
88
|
+
exports["minDouble"] = Function::New(env, MinDouble);
|
|
89
|
+
exports["maxDouble"] = Function::New(env, MaxDouble);
|
|
90
|
+
exports["operatorInt32"] = Function::New(env, OperatorInt32);
|
|
91
|
+
exports["operatorUint32"] = Function::New(env, OperatorUint32);
|
|
92
|
+
exports["operatorInt64"] = Function::New(env, OperatorInt64);
|
|
93
|
+
exports["operatorFloat"] = Function::New(env, OperatorFloat);
|
|
94
|
+
exports["operatorDouble"] = Function::New(env, OperatorDouble);
|
|
95
|
+
exports["createEmptyNumber"] = Function::New(env, CreateEmptyNumber);
|
|
96
|
+
exports["createNumberFromExistingValue"] = Function::New(env, CreateNumberFromExistingValue);
|
|
97
|
+
|
|
98
|
+
return exports;
|
|
99
|
+
}
|
|
@@ -1,114 +1,114 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const assert = require('assert');
|
|
4
|
-
|
|
5
|
-
module.exports = require('../common').runTest(test);
|
|
6
|
-
|
|
7
|
-
function test(binding) {
|
|
8
|
-
const MIN_INT32 = -2147483648;
|
|
9
|
-
const MAX_INT32 = 2147483647;
|
|
10
|
-
const MIN_UINT32 = 0;
|
|
11
|
-
const MAX_UINT32 = 4294967295;
|
|
12
|
-
const MIN_INT64 = Number.MIN_SAFE_INTEGER;
|
|
13
|
-
const MAX_INT64 = Number.MAX_SAFE_INTEGER;
|
|
14
|
-
const MIN_FLOAT = binding.basic_types_number.minFloat();
|
|
15
|
-
const MAX_FLOAT = binding.basic_types_number.maxFloat();
|
|
16
|
-
const MIN_DOUBLE = binding.basic_types_number.minDouble();
|
|
17
|
-
const MAX_DOUBLE = binding.basic_types_number.maxDouble();
|
|
18
|
-
|
|
19
|
-
function randomRangeTestForInteger(min, max, converter) {
|
|
20
|
-
for (let i = min; i < max; i+= Math.floor(Math.random() * max / 100)) {
|
|
21
|
-
assert.strictEqual(i, converter(i));
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
// Test for 32bit signed integer [-2147483648, 2147483647]
|
|
26
|
-
{
|
|
27
|
-
// Range tests
|
|
28
|
-
randomRangeTestForInteger(MIN_INT32, MAX_INT32, binding.basic_types_number.toInt32);
|
|
29
|
-
assert.strictEqual(MIN_INT32, binding.basic_types_number.toInt32(MIN_INT32));
|
|
30
|
-
assert.strictEqual(MAX_INT32, binding.basic_types_number.toInt32(MAX_INT32));
|
|
31
|
-
|
|
32
|
-
// Overflow tests
|
|
33
|
-
assert.notStrictEqual(MAX_INT32 + 1, binding.basic_types_number.toInt32(MAX_INT32 + 1));
|
|
34
|
-
assert.notStrictEqual(MIN_INT32 - 1, binding.basic_types_number.toInt32(MIN_INT32 - 1));
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
// Test for 32bit unsigned integer [0, 4294967295]
|
|
38
|
-
{
|
|
39
|
-
// Range tests
|
|
40
|
-
randomRangeTestForInteger(MIN_UINT32, MAX_UINT32, binding.basic_types_number.toUint32);
|
|
41
|
-
assert.strictEqual(MIN_UINT32, binding.basic_types_number.toUint32(MIN_UINT32));
|
|
42
|
-
assert.strictEqual(MAX_UINT32, binding.basic_types_number.toUint32(MAX_UINT32));
|
|
43
|
-
|
|
44
|
-
// Overflow tests
|
|
45
|
-
assert.notStrictEqual(MAX_UINT32 + 1, binding.basic_types_number.toUint32(MAX_UINT32 + 1));
|
|
46
|
-
assert.notStrictEqual(MIN_UINT32 - 1, binding.basic_types_number.toUint32(MIN_UINT32 - 1));
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
// Test for 64bit signed integer
|
|
50
|
-
{
|
|
51
|
-
// Range tests
|
|
52
|
-
randomRangeTestForInteger(MIN_INT64, MAX_INT64, binding.basic_types_number.toInt64);
|
|
53
|
-
assert.strictEqual(MIN_INT64, binding.basic_types_number.toInt64(MIN_INT64));
|
|
54
|
-
assert.strictEqual(MAX_INT64, binding.basic_types_number.toInt64(MAX_INT64));
|
|
55
|
-
|
|
56
|
-
// The int64 type can't be represented with full precision in JavaScript.
|
|
57
|
-
// So, we are not able to do overflow test here.
|
|
58
|
-
// Please see https://tc39.github.io/ecma262/#sec-ecmascript-language-types-number-type.
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
// Test for float type (might be single-precision 32bit IEEE 754 floating point number)
|
|
62
|
-
{
|
|
63
|
-
// Range test
|
|
64
|
-
assert.strictEqual(MIN_FLOAT, binding.basic_types_number.toFloat(MIN_FLOAT));
|
|
65
|
-
assert.strictEqual(MAX_FLOAT, binding.basic_types_number.toFloat(MAX_FLOAT));
|
|
66
|
-
|
|
67
|
-
// Overflow test
|
|
68
|
-
assert.strictEqual(0, binding.basic_types_number.toFloat(MIN_FLOAT * MIN_FLOAT));
|
|
69
|
-
assert.strictEqual(Infinity, binding.basic_types_number.toFloat(MAX_FLOAT * MAX_FLOAT));
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
// Test for double type (is double-precision 64 bit IEEE 754 floating point number)
|
|
73
|
-
{
|
|
74
|
-
assert.strictEqual(MIN_DOUBLE, binding.basic_types_number.toDouble(MIN_DOUBLE));
|
|
75
|
-
assert.strictEqual(MAX_DOUBLE, binding.basic_types_number.toDouble(MAX_DOUBLE));
|
|
76
|
-
|
|
77
|
-
// Overflow test
|
|
78
|
-
assert.strictEqual(0, binding.basic_types_number.toDouble(MIN_DOUBLE * MIN_DOUBLE));
|
|
79
|
-
assert.strictEqual(Infinity, binding.basic_types_number.toDouble(MAX_DOUBLE * MAX_DOUBLE));
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
// Test for operator overloading
|
|
83
|
-
{
|
|
84
|
-
assert.strictEqual(binding.basic_types_number.operatorInt32(MIN_INT32), true);
|
|
85
|
-
assert.strictEqual(binding.basic_types_number.operatorInt32(MAX_INT32), true);
|
|
86
|
-
assert.strictEqual(binding.basic_types_number.operatorUint32(MIN_UINT32), true);
|
|
87
|
-
assert.strictEqual(binding.basic_types_number.operatorUint32(MAX_UINT32), true);
|
|
88
|
-
assert.strictEqual(binding.basic_types_number.operatorInt64(MIN_INT64), true);
|
|
89
|
-
assert.strictEqual(binding.basic_types_number.operatorInt64(MAX_INT64), true);
|
|
90
|
-
assert.strictEqual(binding.basic_types_number.operatorFloat(MIN_FLOAT), true);
|
|
91
|
-
assert.strictEqual(binding.basic_types_number.operatorFloat(MAX_FLOAT), true);
|
|
92
|
-
assert.strictEqual(binding.basic_types_number.operatorFloat(MAX_DOUBLE), true);
|
|
93
|
-
assert.strictEqual(binding.basic_types_number.operatorDouble(MIN_DOUBLE), true);
|
|
94
|
-
assert.strictEqual(binding.basic_types_number.operatorDouble(MAX_DOUBLE), true);
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
// Construction test
|
|
98
|
-
{
|
|
99
|
-
assert.strictEqual(binding.basic_types_number.createEmptyNumber(), true);
|
|
100
|
-
randomRangeTestForInteger(MIN_INT32, MAX_INT32, binding.basic_types_number.createNumberFromExistingValue);
|
|
101
|
-
assert.strictEqual(MIN_INT32, binding.basic_types_number.createNumberFromExistingValue(MIN_INT32));
|
|
102
|
-
assert.strictEqual(MAX_INT32, binding.basic_types_number.createNumberFromExistingValue(MAX_INT32));
|
|
103
|
-
randomRangeTestForInteger(MIN_UINT32, MAX_UINT32, binding.basic_types_number.createNumberFromExistingValue);
|
|
104
|
-
assert.strictEqual(MIN_UINT32, binding.basic_types_number.createNumberFromExistingValue(MIN_UINT32));
|
|
105
|
-
assert.strictEqual(MAX_UINT32, binding.basic_types_number.createNumberFromExistingValue(MAX_UINT32));
|
|
106
|
-
randomRangeTestForInteger(MIN_INT64, MAX_INT64, binding.basic_types_number.createNumberFromExistingValue);
|
|
107
|
-
assert.strictEqual(MIN_INT64, binding.basic_types_number.createNumberFromExistingValue(MIN_INT64));
|
|
108
|
-
assert.strictEqual(MAX_INT64, binding.basic_types_number.createNumberFromExistingValue(MAX_INT64));
|
|
109
|
-
assert.strictEqual(MIN_FLOAT, binding.basic_types_number.createNumberFromExistingValue(MIN_FLOAT));
|
|
110
|
-
assert.strictEqual(MAX_FLOAT, binding.basic_types_number.createNumberFromExistingValue(MAX_FLOAT));
|
|
111
|
-
assert.strictEqual(MIN_DOUBLE, binding.basic_types_number.createNumberFromExistingValue(MIN_DOUBLE));
|
|
112
|
-
assert.strictEqual(MAX_DOUBLE, binding.basic_types_number.createNumberFromExistingValue(MAX_DOUBLE));
|
|
113
|
-
}
|
|
114
|
-
}
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const assert = require('assert');
|
|
4
|
+
|
|
5
|
+
module.exports = require('../common').runTest(test);
|
|
6
|
+
|
|
7
|
+
function test(binding) {
|
|
8
|
+
const MIN_INT32 = -2147483648;
|
|
9
|
+
const MAX_INT32 = 2147483647;
|
|
10
|
+
const MIN_UINT32 = 0;
|
|
11
|
+
const MAX_UINT32 = 4294967295;
|
|
12
|
+
const MIN_INT64 = Number.MIN_SAFE_INTEGER;
|
|
13
|
+
const MAX_INT64 = Number.MAX_SAFE_INTEGER;
|
|
14
|
+
const MIN_FLOAT = binding.basic_types_number.minFloat();
|
|
15
|
+
const MAX_FLOAT = binding.basic_types_number.maxFloat();
|
|
16
|
+
const MIN_DOUBLE = binding.basic_types_number.minDouble();
|
|
17
|
+
const MAX_DOUBLE = binding.basic_types_number.maxDouble();
|
|
18
|
+
|
|
19
|
+
function randomRangeTestForInteger(min, max, converter) {
|
|
20
|
+
for (let i = min; i < max; i+= Math.floor(Math.random() * max / 100)) {
|
|
21
|
+
assert.strictEqual(i, converter(i));
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// Test for 32bit signed integer [-2147483648, 2147483647]
|
|
26
|
+
{
|
|
27
|
+
// Range tests
|
|
28
|
+
randomRangeTestForInteger(MIN_INT32, MAX_INT32, binding.basic_types_number.toInt32);
|
|
29
|
+
assert.strictEqual(MIN_INT32, binding.basic_types_number.toInt32(MIN_INT32));
|
|
30
|
+
assert.strictEqual(MAX_INT32, binding.basic_types_number.toInt32(MAX_INT32));
|
|
31
|
+
|
|
32
|
+
// Overflow tests
|
|
33
|
+
assert.notStrictEqual(MAX_INT32 + 1, binding.basic_types_number.toInt32(MAX_INT32 + 1));
|
|
34
|
+
assert.notStrictEqual(MIN_INT32 - 1, binding.basic_types_number.toInt32(MIN_INT32 - 1));
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// Test for 32bit unsigned integer [0, 4294967295]
|
|
38
|
+
{
|
|
39
|
+
// Range tests
|
|
40
|
+
randomRangeTestForInteger(MIN_UINT32, MAX_UINT32, binding.basic_types_number.toUint32);
|
|
41
|
+
assert.strictEqual(MIN_UINT32, binding.basic_types_number.toUint32(MIN_UINT32));
|
|
42
|
+
assert.strictEqual(MAX_UINT32, binding.basic_types_number.toUint32(MAX_UINT32));
|
|
43
|
+
|
|
44
|
+
// Overflow tests
|
|
45
|
+
assert.notStrictEqual(MAX_UINT32 + 1, binding.basic_types_number.toUint32(MAX_UINT32 + 1));
|
|
46
|
+
assert.notStrictEqual(MIN_UINT32 - 1, binding.basic_types_number.toUint32(MIN_UINT32 - 1));
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// Test for 64bit signed integer
|
|
50
|
+
{
|
|
51
|
+
// Range tests
|
|
52
|
+
randomRangeTestForInteger(MIN_INT64, MAX_INT64, binding.basic_types_number.toInt64);
|
|
53
|
+
assert.strictEqual(MIN_INT64, binding.basic_types_number.toInt64(MIN_INT64));
|
|
54
|
+
assert.strictEqual(MAX_INT64, binding.basic_types_number.toInt64(MAX_INT64));
|
|
55
|
+
|
|
56
|
+
// The int64 type can't be represented with full precision in JavaScript.
|
|
57
|
+
// So, we are not able to do overflow test here.
|
|
58
|
+
// Please see https://tc39.github.io/ecma262/#sec-ecmascript-language-types-number-type.
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// Test for float type (might be single-precision 32bit IEEE 754 floating point number)
|
|
62
|
+
{
|
|
63
|
+
// Range test
|
|
64
|
+
assert.strictEqual(MIN_FLOAT, binding.basic_types_number.toFloat(MIN_FLOAT));
|
|
65
|
+
assert.strictEqual(MAX_FLOAT, binding.basic_types_number.toFloat(MAX_FLOAT));
|
|
66
|
+
|
|
67
|
+
// Overflow test
|
|
68
|
+
assert.strictEqual(0, binding.basic_types_number.toFloat(MIN_FLOAT * MIN_FLOAT));
|
|
69
|
+
assert.strictEqual(Infinity, binding.basic_types_number.toFloat(MAX_FLOAT * MAX_FLOAT));
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Test for double type (is double-precision 64 bit IEEE 754 floating point number)
|
|
73
|
+
{
|
|
74
|
+
assert.strictEqual(MIN_DOUBLE, binding.basic_types_number.toDouble(MIN_DOUBLE));
|
|
75
|
+
assert.strictEqual(MAX_DOUBLE, binding.basic_types_number.toDouble(MAX_DOUBLE));
|
|
76
|
+
|
|
77
|
+
// Overflow test
|
|
78
|
+
assert.strictEqual(0, binding.basic_types_number.toDouble(MIN_DOUBLE * MIN_DOUBLE));
|
|
79
|
+
assert.strictEqual(Infinity, binding.basic_types_number.toDouble(MAX_DOUBLE * MAX_DOUBLE));
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// Test for operator overloading
|
|
83
|
+
{
|
|
84
|
+
assert.strictEqual(binding.basic_types_number.operatorInt32(MIN_INT32), true);
|
|
85
|
+
assert.strictEqual(binding.basic_types_number.operatorInt32(MAX_INT32), true);
|
|
86
|
+
assert.strictEqual(binding.basic_types_number.operatorUint32(MIN_UINT32), true);
|
|
87
|
+
assert.strictEqual(binding.basic_types_number.operatorUint32(MAX_UINT32), true);
|
|
88
|
+
assert.strictEqual(binding.basic_types_number.operatorInt64(MIN_INT64), true);
|
|
89
|
+
assert.strictEqual(binding.basic_types_number.operatorInt64(MAX_INT64), true);
|
|
90
|
+
assert.strictEqual(binding.basic_types_number.operatorFloat(MIN_FLOAT), true);
|
|
91
|
+
assert.strictEqual(binding.basic_types_number.operatorFloat(MAX_FLOAT), true);
|
|
92
|
+
assert.strictEqual(binding.basic_types_number.operatorFloat(MAX_DOUBLE), true);
|
|
93
|
+
assert.strictEqual(binding.basic_types_number.operatorDouble(MIN_DOUBLE), true);
|
|
94
|
+
assert.strictEqual(binding.basic_types_number.operatorDouble(MAX_DOUBLE), true);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// Construction test
|
|
98
|
+
{
|
|
99
|
+
assert.strictEqual(binding.basic_types_number.createEmptyNumber(), true);
|
|
100
|
+
randomRangeTestForInteger(MIN_INT32, MAX_INT32, binding.basic_types_number.createNumberFromExistingValue);
|
|
101
|
+
assert.strictEqual(MIN_INT32, binding.basic_types_number.createNumberFromExistingValue(MIN_INT32));
|
|
102
|
+
assert.strictEqual(MAX_INT32, binding.basic_types_number.createNumberFromExistingValue(MAX_INT32));
|
|
103
|
+
randomRangeTestForInteger(MIN_UINT32, MAX_UINT32, binding.basic_types_number.createNumberFromExistingValue);
|
|
104
|
+
assert.strictEqual(MIN_UINT32, binding.basic_types_number.createNumberFromExistingValue(MIN_UINT32));
|
|
105
|
+
assert.strictEqual(MAX_UINT32, binding.basic_types_number.createNumberFromExistingValue(MAX_UINT32));
|
|
106
|
+
randomRangeTestForInteger(MIN_INT64, MAX_INT64, binding.basic_types_number.createNumberFromExistingValue);
|
|
107
|
+
assert.strictEqual(MIN_INT64, binding.basic_types_number.createNumberFromExistingValue(MIN_INT64));
|
|
108
|
+
assert.strictEqual(MAX_INT64, binding.basic_types_number.createNumberFromExistingValue(MAX_INT64));
|
|
109
|
+
assert.strictEqual(MIN_FLOAT, binding.basic_types_number.createNumberFromExistingValue(MIN_FLOAT));
|
|
110
|
+
assert.strictEqual(MAX_FLOAT, binding.basic_types_number.createNumberFromExistingValue(MAX_FLOAT));
|
|
111
|
+
assert.strictEqual(MIN_DOUBLE, binding.basic_types_number.createNumberFromExistingValue(MIN_DOUBLE));
|
|
112
|
+
assert.strictEqual(MAX_DOUBLE, binding.basic_types_number.createNumberFromExistingValue(MAX_DOUBLE));
|
|
113
|
+
}
|
|
114
|
+
}
|