From b37f861af85574b19c8f00957e45723ea5f5e48e Mon Sep 17 00:00:00 2001 From: GUNJ JOSHI Date: Mon, 4 Aug 2025 01:24:14 +0530 Subject: [PATCH 1/4] feat: add macros for u_u, t_t and b_b --- type: pre_commit_static_analysis_report description: Results of running static analysis checks when committing changes. report: - task: lint_filenames status: passed - task: lint_editorconfig status: passed - task: lint_markdown status: passed - task: lint_package_json status: na - task: lint_repl_help status: na - task: lint_javascript_src status: na - task: lint_javascript_cli status: na - task: lint_javascript_examples status: na - task: lint_javascript_tests status: na - task: lint_javascript_benchmarks status: na - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: passed - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - task: lint_c_tests_fixtures status: na - task: lint_shell status: na - task: lint_typescript_declarations status: na - task: lint_typescript_tests status: na - task: lint_license_headers status: passed --- --- .../@stdlib/math/base/napi/unary/README.md | 189 ++++++++++++++++++ .../include/stdlib/math/base/napi/unary.h | 3 + .../include/stdlib/math/base/napi/unary/b_b.h | 85 ++++++++ .../include/stdlib/math/base/napi/unary/t_t.h | 85 ++++++++ .../include/stdlib/math/base/napi/unary/u_u.h | 84 ++++++++ .../math/base/napi/unary/manifest.json | 3 + .../@stdlib/math/base/napi/unary/src/b_b.c | 71 +++++++ .../@stdlib/math/base/napi/unary/src/t_t.c | 70 +++++++ .../@stdlib/math/base/napi/unary/src/u_u.c | 70 +++++++ 9 files changed, 660 insertions(+) create mode 100644 lib/node_modules/@stdlib/math/base/napi/unary/include/stdlib/math/base/napi/unary/b_b.h create mode 100644 lib/node_modules/@stdlib/math/base/napi/unary/include/stdlib/math/base/napi/unary/t_t.h create mode 100644 lib/node_modules/@stdlib/math/base/napi/unary/include/stdlib/math/base/napi/unary/u_u.h create mode 100644 lib/node_modules/@stdlib/math/base/napi/unary/src/b_b.c create mode 100644 lib/node_modules/@stdlib/math/base/napi/unary/src/t_t.c create mode 100644 lib/node_modules/@stdlib/math/base/napi/unary/src/u_u.c diff --git a/lib/node_modules/@stdlib/math/base/napi/unary/README.md b/lib/node_modules/@stdlib/math/base/napi/unary/README.md index a401d148633c..d995016dd69d 100644 --- a/lib/node_modules/@stdlib/math/base/napi/unary/README.md +++ b/lib/node_modules/@stdlib/math/base/napi/unary/README.md @@ -106,6 +106,69 @@ console.log( headerDir ); +#### STDLIB_MATH_BASE_NAPI_MODULE_B_B( fcn ) + +Macro for registering a Node-API module exporting an interface for invoking a unary function accepting and returning 8-bit unsigned integers. + +```c +#include + +static uint8_t scale( const uint8_t x ) { + return x * 10; +} + +// ... + +// Register a Node-API module: +STDLIB_MATH_BASE_NAPI_MODULE_B_B( scale ); +``` + +The macro expects the following arguments: + +- **fcn**: `uint8_t (*fcn)( uint8_t )` unary function. + +When used, this macro should be used **instead of** `NAPI_MODULE`. The macro includes `NAPI_MODULE`, thus ensuring Node-API module registration. + +#### stdlib_math_base_napi_b_b( env, info, fcn ) + +Invokes a unary function accepting and returning unsigned 8-bit integers. + +```c +#include +#include + +// ... + +static uint8_t identity( const uint8_t x ) { + return x; +} + +// ... + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +napi_value addon( napi_env env, napi_callback_info info ) { + return stdlib_math_base_napi_b_b( env, info, identity ); +} + +// ... +``` + +The function accepts the following arguments: + +- **env**: `[in] napi_env` environment under which the function is invoked. +- **info**: `[in] napi_callback_info` callback data. +- **fcn**: `[in] uint8_t (*fcn)( uint8_t )` unary function. + +```c +void stdlib_math_base_napi_b_b( napi_env env, napi_callback_info info, uint8_t (*fcn)( uint8_t ) ); +``` + #### STDLIB_MATH_BASE_NAPI_MODULE_C_C( fcn ) Macro for registering a Node-API module exporting an interface for invoking a unary function accepting and returning single-precision complex floating-point numbers. @@ -610,6 +673,69 @@ The function accepts the following arguments: void stdlib_math_base_napi_i_f( napi_env env, napi_callback_info info, float (*fcn)( int32_t ) ); ``` +#### STDLIB_MATH_BASE_NAPI_MODULE_T_T( fcn ) + +Macro for registering a Node-API module exporting an interface for invoking a unary function accepting and returning 16-bit unsigned integers. + +```c +#include + +static uint16_t scale( const uint16_t x ) { + return x * 10; +} + +// ... + +// Register a Node-API module: +STDLIB_MATH_BASE_NAPI_MODULE_T_T( scale ); +``` + +The macro expects the following arguments: + +- **fcn**: `uint16_t (*fcn)( uint16_t )` unary function. + +When used, this macro should be used **instead of** `NAPI_MODULE`. The macro includes `NAPI_MODULE`, thus ensuring Node-API module registration. + +#### stdlib_math_base_napi_t_t( env, info, fcn ) + +Invokes a unary function accepting and returning unsigned 16-bit integers. + +```c +#include +#include + +// ... + +static uint16_t identity( const uint16_t x ) { + return x; +} + +// ... + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +napi_value addon( napi_env env, napi_callback_info info ) { + return stdlib_math_base_napi_t_t( env, info, identity ); +} + +// ... +``` + +The function accepts the following arguments: + +- **env**: `[in] napi_env` environment under which the function is invoked. +- **info**: `[in] napi_callback_info` callback data. +- **fcn**: `[in] uint16_t (*fcn)( uint16_t )` unary function. + +```c +void stdlib_math_base_napi_t_t( napi_env env, napi_callback_info info, uint16_t (*fcn)( uint16_t ) ); +``` + #### STDLIB_MATH_BASE_NAPI_MODULE_I_I( fcn ) Macro for registering a Node-API module exporting an interface for invoking a unary function accepting and returning 32-bit signed integers. @@ -673,6 +799,69 @@ The function accepts the following arguments: void stdlib_math_base_napi_i_i( napi_env env, napi_callback_info info, int32_t (*fcn)( int32_t ) ); ``` +#### STDLIB_MATH_BASE_NAPI_MODULE_U_U( fcn ) + +Macro for registering a Node-API module exporting an interface for invoking a unary function accepting and returning 32-bit unsigned integers. + +```c +#include + +static uint32_t scale( const uint32_t x ) { + return x * 10; +} + +// ... + +// Register a Node-API module: +STDLIB_MATH_BASE_NAPI_MODULE_U_U( scale ); +``` + +The macro expects the following arguments: + +- **fcn**: `uint32_t (*fcn)( uint32_t )` unary function. + +When used, this macro should be used **instead of** `NAPI_MODULE`. The macro includes `NAPI_MODULE`, thus ensuring Node-API module registration. + +#### stdlib_math_base_napi_u_u( env, info, fcn ) + +Invokes a unary function accepting and returning unsigned 32-bit integers. + +```c +#include +#include + +// ... + +static uint32_t identity( const uint32_t x ) { + return x; +} + +// ... + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +napi_value addon( napi_env env, napi_callback_info info ) { + return stdlib_math_base_napi_u_u( env, info, identity ); +} + +// ... +``` + +The function accepts the following arguments: + +- **env**: `[in] napi_env` environment under which the function is invoked. +- **info**: `[in] napi_callback_info` callback data. +- **fcn**: `[in] uint32_t (*fcn)( uint32_t )` unary function. + +```c +void stdlib_math_base_napi_u_u( napi_env env, napi_callback_info info, uint32_t (*fcn)( uint32_t ) ); +``` + #### STDLIB_MATH_BASE_NAPI_MODULE_Z_D( fcn ) Macro for registering a Node-API module exporting an interface for invoking a unary function accepting a double-precision complex floating-point number and returning a double-precision floating-point number. diff --git a/lib/node_modules/@stdlib/math/base/napi/unary/include/stdlib/math/base/napi/unary.h b/lib/node_modules/@stdlib/math/base/napi/unary/include/stdlib/math/base/napi/unary.h index ee13e1963d13..cff57923ffd6 100644 --- a/lib/node_modules/@stdlib/math/base/napi/unary/include/stdlib/math/base/napi/unary.h +++ b/lib/node_modules/@stdlib/math/base/napi/unary/include/stdlib/math/base/napi/unary.h @@ -20,6 +20,7 @@ #define STDLIB_MATH_BASE_NAPI_UNARY_H // NOTE: keep in alphabetical order... +#include "stdlib/math/base/napi/unary/b_b.h" #include "stdlib/math/base/napi/unary/c_c.h" #include "stdlib/math/base/napi/unary/c_f.h" #include "stdlib/math/base/napi/unary/d_d.h" @@ -29,6 +30,8 @@ #include "stdlib/math/base/napi/unary/i_d.h" #include "stdlib/math/base/napi/unary/i_f.h" #include "stdlib/math/base/napi/unary/i_i.h" +#include "stdlib/math/base/napi/unary/t_t.h" +#include "stdlib/math/base/napi/unary/u_u.h" #include "stdlib/math/base/napi/unary/z_d.h" #include "stdlib/math/base/napi/unary/z_z.h" diff --git a/lib/node_modules/@stdlib/math/base/napi/unary/include/stdlib/math/base/napi/unary/b_b.h b/lib/node_modules/@stdlib/math/base/napi/unary/include/stdlib/math/base/napi/unary/b_b.h new file mode 100644 index 000000000000..df27b27ff17e --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/napi/unary/include/stdlib/math/base/napi/unary/b_b.h @@ -0,0 +1,85 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#ifndef STDLIB_MATH_BASE_NAPI_UNARY_B_B_H +#define STDLIB_MATH_BASE_NAPI_UNARY_B_B_H + +#include +#include +#include + +/** +* Macro for registering a Node-API module exporting an interface invoking a unary function accepting and returning 8-bit unsigned integers. +* +* @param fcn unary function +* +* @example +* #include +* +* static uint8_t scale( const uint8_t x ) { +* return x * 10; +* } +* +* // ... +* +* // Register a Node-API module: +* STDLIB_MATH_BASE_NAPI_MODULE_B_B( scale ); +*/ +#define STDLIB_MATH_BASE_NAPI_MODULE_B_B( fcn ) \ + static napi_value stdlib_math_base_napi_b_b_wrapper( \ + napi_env env, \ + napi_callback_info info \ + ) { \ + return stdlib_math_base_napi_b_b( env, info, fcn ); \ + }; \ + static napi_value stdlib_math_base_napi_b_b_init( \ + napi_env env, \ + napi_value exports \ + ) { \ + napi_value f; \ + napi_status status = napi_create_function( \ + env, \ + "exports", \ + NAPI_AUTO_LENGTH, \ + stdlib_math_base_napi_b_b_wrapper, \ + NULL, \ + &f \ + ); \ + assert( status == napi_ok ); \ + return f; \ + }; \ + NAPI_MODULE( NODE_GYP_MODULE_NAME, stdlib_math_base_napi_b_b_init ) + +/* +* If C++, prevent name mangling so that the compiler emits a binary file having undecorated names, thus mirroring the behavior of a C compiler. +*/ +#ifdef __cplusplus +extern "C" { +#endif + +/** +* Invokes a unary function accepting and returning unsigned 8-bit integers. +*/ +napi_value stdlib_math_base_napi_b_b( napi_env env, napi_callback_info info, uint8_t (*fcn)( uint8_t ) ); + +#ifdef __cplusplus +} +#endif + +#endif // !STDLIB_MATH_BASE_NAPI_UNARY_B_B_H + diff --git a/lib/node_modules/@stdlib/math/base/napi/unary/include/stdlib/math/base/napi/unary/t_t.h b/lib/node_modules/@stdlib/math/base/napi/unary/include/stdlib/math/base/napi/unary/t_t.h new file mode 100644 index 000000000000..6d7e1debd1d5 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/napi/unary/include/stdlib/math/base/napi/unary/t_t.h @@ -0,0 +1,85 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#ifndef STDLIB_MATH_BASE_NAPI_UNARY_T_T_H +#define STDLIB_MATH_BASE_NAPI_UNARY_T_T_H + +#include +#include +#include + +/** +* Macro for registering a Node-API module exporting an interface invoking a unary function accepting and returning 16-bit unsigned integers. +* +* @param fcn unary function +* +* @example +* #include +* +* static uint16_t scale( const uint16_t x ) { +* return x * 10; +* } +* +* // ... +* +* // Register a Node-API module: +* STDLIB_MATH_BASE_NAPI_MODULE_T_T( scale ); +*/ +#define STDLIB_MATH_BASE_NAPI_MODULE_T_T( fcn ) \ + static napi_value stdlib_math_base_napi_t_t_wrapper( \ + napi_env env, \ + napi_callback_info info \ + ) { \ + return stdlib_math_base_napi_t_t( env, info, fcn ); \ + }; \ + static napi_value stdlib_math_base_napi_t_t_init( \ + napi_env env, \ + napi_value exports \ + ) { \ + napi_value f; \ + napi_status status = napi_create_function( \ + env, \ + "exports", \ + NAPI_AUTO_LENGTH, \ + stdlib_math_base_napi_t_t_wrapper, \ + NULL, \ + &f \ + ); \ + assert( status == napi_ok ); \ + return f; \ + }; \ + NAPI_MODULE( NODE_GYP_MODULE_NAME, stdlib_math_base_napi_t_t_init ) + +/* +* If C++, prevent name mangling so that the compiler emits a binary file having undecorated names, thus mirroring the behavior of a C compiler. +*/ +#ifdef __cplusplus +extern "C" { +#endif + +/** +* Invokes a unary function accepting and returning unsigned 16-bit integers. +*/ +napi_value stdlib_math_base_napi_t_t( napi_env env, napi_callback_info info, uint16_t (*fcn)( uint16_t ) ); + +#ifdef __cplusplus +} +#endif + +#endif // !STDLIB_MATH_BASE_NAPI_UNARY_T_T_H + diff --git a/lib/node_modules/@stdlib/math/base/napi/unary/include/stdlib/math/base/napi/unary/u_u.h b/lib/node_modules/@stdlib/math/base/napi/unary/include/stdlib/math/base/napi/unary/u_u.h new file mode 100644 index 000000000000..9e8e8c72bb22 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/napi/unary/include/stdlib/math/base/napi/unary/u_u.h @@ -0,0 +1,84 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#ifndef STDLIB_MATH_BASE_NAPI_UNARY_U_U_H +#define STDLIB_MATH_BASE_NAPI_UNARY_U_U_H + +#include +#include +#include + +/** +* Macro for registering a Node-API module exporting an interface invoking a unary function accepting and returning 32-bit unsigned integers. +* +* @param fcn unary function +* +* @example +* #include +* +* static uint32_t scale( const uint32_t x ) { +* return x * 10; +* } +* +* // ... +* +* // Register a Node-API module: +* STDLIB_MATH_BASE_NAPI_MODULE_U_U( scale ); +*/ +#define STDLIB_MATH_BASE_NAPI_MODULE_U_U( fcn ) \ + static napi_value stdlib_math_base_napi_u_u_wrapper( \ + napi_env env, \ + napi_callback_info info \ + ) { \ + return stdlib_math_base_napi_u_u( env, info, fcn ); \ + }; \ + static napi_value stdlib_math_base_napi_u_u_init( \ + napi_env env, \ + napi_value exports \ + ) { \ + napi_value f; \ + napi_status status = napi_create_function( \ + env, \ + "exports", \ + NAPI_AUTO_LENGTH, \ + stdlib_math_base_napi_u_u_wrapper, \ + NULL, \ + &f \ + ); \ + assert( status == napi_ok ); \ + return f; \ + }; \ + NAPI_MODULE( NODE_GYP_MODULE_NAME, stdlib_math_base_napi_u_u_init ) + +/* +* If C++, prevent name mangling so that the compiler emits a binary file having undecorated names, thus mirroring the behavior of a C compiler. +*/ +#ifdef __cplusplus +extern "C" { +#endif + +/** +* Invokes a unary function accepting and returning unsigned 32-bit integers. +*/ +napi_value stdlib_math_base_napi_u_u( napi_env env, napi_callback_info info, uint32_t (*fcn)( uint32_t ) ); + +#ifdef __cplusplus +} +#endif + +#endif // !STDLIB_MATH_BASE_NAPI_UNARY_U_U_H diff --git a/lib/node_modules/@stdlib/math/base/napi/unary/manifest.json b/lib/node_modules/@stdlib/math/base/napi/unary/manifest.json index 5b4f3470f85a..ab31b0b1b1c7 100644 --- a/lib/node_modules/@stdlib/math/base/napi/unary/manifest.json +++ b/lib/node_modules/@stdlib/math/base/napi/unary/manifest.json @@ -25,6 +25,7 @@ "confs": [ { "src": [ + "./src/b_b.c", "./src/c_c.c", "./src/c_f.c", "./src/d_d.c", @@ -34,6 +35,8 @@ "./src/i_d.c", "./src/i_f.c", "./src/i_i.c", + "./src/t_t.c", + "./src/u_u.c", "./src/z_d.c", "./src/z_z.c" ], diff --git a/lib/node_modules/@stdlib/math/base/napi/unary/src/b_b.c b/lib/node_modules/@stdlib/math/base/napi/unary/src/b_b.c new file mode 100644 index 000000000000..cb4d7636bcfb --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/napi/unary/src/b_b.c @@ -0,0 +1,71 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/math/base/napi/unary/b_b.h" +#include +#include +#include + +/** +* Invokes a unary function accepting and returning unsigned 8-bit integers. +* +* ## Notes +* +* - This function expects that the callback `info` argument provides access to the following JavaScript arguments: +* +* - `x`: input value. +* +* @param env environment under which the function is invoked +* @param info callback data +* @param fcn unary function +* @return function return value as a Node-API unsigned 8-bit integer +*/ +napi_value stdlib_math_base_napi_b_b( napi_env env, napi_callback_info info, uint8_t (*fcn)( uint8_t ) ) { + napi_status status; + + size_t argc = 1; + napi_value argv[ 1 ]; + status = napi_get_cb_info( env, info, &argc, argv, NULL, NULL ); + assert( status == napi_ok ); + + if ( argc < 1 ) { + status = napi_throw_error( env, NULL, "invalid invocation. Must provide a number." ); + assert( status == napi_ok ); + return NULL; + } + + napi_valuetype vtype0; + status = napi_typeof( env, argv[ 0 ], &vtype0 ); + assert( status == napi_ok ); + if ( vtype0 != napi_number ) { + status = napi_throw_type_error( env, NULL, "invalid argument. Must provide a number." ); + assert( status == napi_ok ); + return NULL; + } + + uint32_t x; + status = napi_get_value_uint32( env, argv[ 0 ], &x ); + assert( status == napi_ok ); + + napi_value v; + status = napi_create_uint32( env, (uint32_t)fcn( (uint8_t)x ), &v ); + assert( status == napi_ok ); + + return v; +} + diff --git a/lib/node_modules/@stdlib/math/base/napi/unary/src/t_t.c b/lib/node_modules/@stdlib/math/base/napi/unary/src/t_t.c new file mode 100644 index 000000000000..0d5fbd0dcfa8 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/napi/unary/src/t_t.c @@ -0,0 +1,70 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/math/base/napi/unary/t_t.h" +#include +#include +#include + +/** +* Invokes a unary function accepting and returning unsigned 16-bit integers. +* +* ## Notes +* +* - This function expects that the callback `info` argument provides access to the following JavaScript arguments: +* +* - `x`: input value. +* +* @param env environment under which the function is invoked +* @param info callback data +* @param fcn unary function +* @return function return value as a Node-API unsigned 16-bit integer +*/ +napi_value stdlib_math_base_napi_t_t( napi_env env, napi_callback_info info, uint16_t (*fcn)( uint16_t ) ) { + napi_status status; + + size_t argc = 1; + napi_value argv[ 1 ]; + status = napi_get_cb_info( env, info, &argc, argv, NULL, NULL ); + assert( status == napi_ok ); + + if ( argc < 1 ) { + status = napi_throw_error( env, NULL, "invalid invocation. Must provide a number." ); + assert( status == napi_ok ); + return NULL; + } + + napi_valuetype vtype0; + status = napi_typeof( env, argv[ 0 ], &vtype0 ); + assert( status == napi_ok ); + if ( vtype0 != napi_number ) { + status = napi_throw_type_error( env, NULL, "invalid argument. Must provide a number." ); + assert( status == napi_ok ); + return NULL; + } + + uint32_t x; + status = napi_get_value_uint32( env, argv[ 0 ], &x ); + assert( status == napi_ok ); + + napi_value v; + status = napi_create_uint32( env, (uint32_t)fcn( (uint16_t)x ), &v ); + assert( status == napi_ok ); + + return v; +} diff --git a/lib/node_modules/@stdlib/math/base/napi/unary/src/u_u.c b/lib/node_modules/@stdlib/math/base/napi/unary/src/u_u.c new file mode 100644 index 000000000000..fa9a2ad15cc4 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/napi/unary/src/u_u.c @@ -0,0 +1,70 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/math/base/napi/unary/u_u.h" +#include +#include +#include + +/** +* Invokes a unary function accepting and returning unsigned 32-bit integers. +* +* ## Notes +* +* - This function expects that the callback `info` argument provides access to the following JavaScript arguments: +* +* - `x`: input value. +* +* @param env environment under which the function is invoked +* @param info callback data +* @param fcn unary function +* @return function return value as a Node-API unsigned 32-bit integer +*/ +napi_value stdlib_math_base_napi_u_u( napi_env env, napi_callback_info info, uint32_t (*fcn)( uint32_t ) ) { + napi_status status; + + size_t argc = 1; + napi_value argv[ 1 ]; + status = napi_get_cb_info( env, info, &argc, argv, NULL, NULL ); + assert( status == napi_ok ); + + if ( argc < 1 ) { + status = napi_throw_error( env, NULL, "invalid invocation. Must provide a number." ); + assert( status == napi_ok ); + return NULL; + } + + napi_valuetype vtype0; + status = napi_typeof( env, argv[ 0 ], &vtype0 ); + assert( status == napi_ok ); + if ( vtype0 != napi_number ) { + status = napi_throw_type_error( env, NULL, "invalid argument. Must provide a number." ); + assert( status == napi_ok ); + return NULL; + } + + uint32_t x; + status = napi_get_value_uint32( env, argv[ 0 ], &x ); + assert( status == napi_ok ); + + napi_value v; + status = napi_create_uint32( env, fcn( x ), &v ); + assert( status == napi_ok ); + + return v; +} From 729f89eb146cbec30e2d00636aff25d12003df5b Mon Sep 17 00:00:00 2001 From: GUNJ JOSHI Date: Sat, 9 Aug 2025 02:00:47 +0530 Subject: [PATCH 2/4] docs: align slashes, follow alphabetical order --- type: pre_commit_static_analysis_report description: Results of running static analysis checks when committing changes. report: - task: lint_filenames status: passed - task: lint_editorconfig status: passed - task: lint_markdown status: passed - task: lint_package_json status: na - task: lint_repl_help status: na - task: lint_javascript_src status: na - task: lint_javascript_cli status: na - task: lint_javascript_examples status: na - task: lint_javascript_tests status: na - task: lint_javascript_benchmarks status: na - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - task: lint_c_tests_fixtures status: na - task: lint_shell status: na - task: lint_typescript_declarations status: na - task: lint_typescript_tests status: na - task: lint_license_headers status: passed --- --- .../@stdlib/math/base/napi/unary/README.md | 44 +++++++++---------- .../include/stdlib/math/base/napi/unary/b_b.h | 44 +++++++++---------- .../include/stdlib/math/base/napi/unary/t_t.h | 44 +++++++++---------- .../include/stdlib/math/base/napi/unary/u_u.h | 44 +++++++++---------- 4 files changed, 88 insertions(+), 88 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/napi/unary/README.md b/lib/node_modules/@stdlib/math/base/napi/unary/README.md index d995016dd69d..a6e793117d23 100644 --- a/lib/node_modules/@stdlib/math/base/napi/unary/README.md +++ b/lib/node_modules/@stdlib/math/base/napi/unary/README.md @@ -673,32 +673,32 @@ The function accepts the following arguments: void stdlib_math_base_napi_i_f( napi_env env, napi_callback_info info, float (*fcn)( int32_t ) ); ``` -#### STDLIB_MATH_BASE_NAPI_MODULE_T_T( fcn ) +#### STDLIB_MATH_BASE_NAPI_MODULE_I_I( fcn ) -Macro for registering a Node-API module exporting an interface for invoking a unary function accepting and returning 16-bit unsigned integers. +Macro for registering a Node-API module exporting an interface for invoking a unary function accepting and returning 32-bit signed integers. ```c #include -static uint16_t scale( const uint16_t x ) { +static int32_t scale( const int32_t x ) { return x * 10; } // ... // Register a Node-API module: -STDLIB_MATH_BASE_NAPI_MODULE_T_T( scale ); +STDLIB_MATH_BASE_NAPI_MODULE_I_I( scale ); ``` The macro expects the following arguments: -- **fcn**: `uint16_t (*fcn)( uint16_t )` unary function. +- **fcn**: `int32_t (*fcn)( int32_t )` unary function. When used, this macro should be used **instead of** `NAPI_MODULE`. The macro includes `NAPI_MODULE`, thus ensuring Node-API module registration. -#### stdlib_math_base_napi_t_t( env, info, fcn ) +#### stdlib_math_base_napi_i_i( env, info, fcn ) -Invokes a unary function accepting and returning unsigned 16-bit integers. +Invokes a unary function accepting and returning signed 32-bit integers. ```c #include @@ -706,7 +706,7 @@ Invokes a unary function accepting and returning unsigned 16-bit integers. // ... -static uint16_t identity( const uint16_t x ) { +static int32_t identity( const int32_t x ) { return x; } @@ -720,7 +720,7 @@ static uint16_t identity( const uint16_t x ) { * @return Node-API value */ napi_value addon( napi_env env, napi_callback_info info ) { - return stdlib_math_base_napi_t_t( env, info, identity ); + return stdlib_math_base_napi_i_i( env, info, identity ); } // ... @@ -730,38 +730,38 @@ The function accepts the following arguments: - **env**: `[in] napi_env` environment under which the function is invoked. - **info**: `[in] napi_callback_info` callback data. -- **fcn**: `[in] uint16_t (*fcn)( uint16_t )` unary function. +- **fcn**: `[in] int32_t (*fcn)( int32_t )` unary function. ```c -void stdlib_math_base_napi_t_t( napi_env env, napi_callback_info info, uint16_t (*fcn)( uint16_t ) ); +void stdlib_math_base_napi_i_i( napi_env env, napi_callback_info info, int32_t (*fcn)( int32_t ) ); ``` -#### STDLIB_MATH_BASE_NAPI_MODULE_I_I( fcn ) +#### STDLIB_MATH_BASE_NAPI_MODULE_T_T( fcn ) -Macro for registering a Node-API module exporting an interface for invoking a unary function accepting and returning 32-bit signed integers. +Macro for registering a Node-API module exporting an interface for invoking a unary function accepting and returning 16-bit unsigned integers. ```c #include -static int32_t scale( const int32_t x ) { +static uint16_t scale( const uint16_t x ) { return x * 10; } // ... // Register a Node-API module: -STDLIB_MATH_BASE_NAPI_MODULE_I_I( scale ); +STDLIB_MATH_BASE_NAPI_MODULE_T_T( scale ); ``` The macro expects the following arguments: -- **fcn**: `int32_t (*fcn)( int32_t )` unary function. +- **fcn**: `uint16_t (*fcn)( uint16_t )` unary function. When used, this macro should be used **instead of** `NAPI_MODULE`. The macro includes `NAPI_MODULE`, thus ensuring Node-API module registration. -#### stdlib_math_base_napi_i_i( env, info, fcn ) +#### stdlib_math_base_napi_t_t( env, info, fcn ) -Invokes a unary function accepting and returning signed 32-bit integers. +Invokes a unary function accepting and returning unsigned 16-bit integers. ```c #include @@ -769,7 +769,7 @@ Invokes a unary function accepting and returning signed 32-bit integers. // ... -static int32_t identity( const int32_t x ) { +static uint16_t identity( const uint16_t x ) { return x; } @@ -783,7 +783,7 @@ static int32_t identity( const int32_t x ) { * @return Node-API value */ napi_value addon( napi_env env, napi_callback_info info ) { - return stdlib_math_base_napi_i_i( env, info, identity ); + return stdlib_math_base_napi_t_t( env, info, identity ); } // ... @@ -793,10 +793,10 @@ The function accepts the following arguments: - **env**: `[in] napi_env` environment under which the function is invoked. - **info**: `[in] napi_callback_info` callback data. -- **fcn**: `[in] int32_t (*fcn)( int32_t )` unary function. +- **fcn**: `[in] uint16_t (*fcn)( uint16_t )` unary function. ```c -void stdlib_math_base_napi_i_i( napi_env env, napi_callback_info info, int32_t (*fcn)( int32_t ) ); +void stdlib_math_base_napi_t_t( napi_env env, napi_callback_info info, uint16_t (*fcn)( uint16_t ) ); ``` #### STDLIB_MATH_BASE_NAPI_MODULE_U_U( fcn ) diff --git a/lib/node_modules/@stdlib/math/base/napi/unary/include/stdlib/math/base/napi/unary/b_b.h b/lib/node_modules/@stdlib/math/base/napi/unary/include/stdlib/math/base/napi/unary/b_b.h index df27b27ff17e..7cc7b85ad2da 100644 --- a/lib/node_modules/@stdlib/math/base/napi/unary/include/stdlib/math/base/napi/unary/b_b.h +++ b/lib/node_modules/@stdlib/math/base/napi/unary/include/stdlib/math/base/napi/unary/b_b.h @@ -41,28 +41,28 @@ * STDLIB_MATH_BASE_NAPI_MODULE_B_B( scale ); */ #define STDLIB_MATH_BASE_NAPI_MODULE_B_B( fcn ) \ - static napi_value stdlib_math_base_napi_b_b_wrapper( \ - napi_env env, \ - napi_callback_info info \ - ) { \ - return stdlib_math_base_napi_b_b( env, info, fcn ); \ - }; \ - static napi_value stdlib_math_base_napi_b_b_init( \ - napi_env env, \ - napi_value exports \ - ) { \ - napi_value f; \ - napi_status status = napi_create_function( \ - env, \ - "exports", \ - NAPI_AUTO_LENGTH, \ - stdlib_math_base_napi_b_b_wrapper, \ - NULL, \ - &f \ - ); \ - assert( status == napi_ok ); \ - return f; \ - }; \ + static napi_value stdlib_math_base_napi_b_b_wrapper( \ + napi_env env, \ + napi_callback_info info \ + ) { \ + return stdlib_math_base_napi_b_b( env, info, fcn ); \ + }; \ + static napi_value stdlib_math_base_napi_b_b_init( \ + napi_env env, \ + napi_value exports \ + ) { \ + napi_value f; \ + napi_status status = napi_create_function( \ + env, \ + "exports", \ + NAPI_AUTO_LENGTH, \ + stdlib_math_base_napi_b_b_wrapper, \ + NULL, \ + &f \ + ); \ + assert( status == napi_ok ); \ + return f; \ + }; \ NAPI_MODULE( NODE_GYP_MODULE_NAME, stdlib_math_base_napi_b_b_init ) /* diff --git a/lib/node_modules/@stdlib/math/base/napi/unary/include/stdlib/math/base/napi/unary/t_t.h b/lib/node_modules/@stdlib/math/base/napi/unary/include/stdlib/math/base/napi/unary/t_t.h index 6d7e1debd1d5..ac71033328b5 100644 --- a/lib/node_modules/@stdlib/math/base/napi/unary/include/stdlib/math/base/napi/unary/t_t.h +++ b/lib/node_modules/@stdlib/math/base/napi/unary/include/stdlib/math/base/napi/unary/t_t.h @@ -41,28 +41,28 @@ * STDLIB_MATH_BASE_NAPI_MODULE_T_T( scale ); */ #define STDLIB_MATH_BASE_NAPI_MODULE_T_T( fcn ) \ - static napi_value stdlib_math_base_napi_t_t_wrapper( \ - napi_env env, \ - napi_callback_info info \ - ) { \ - return stdlib_math_base_napi_t_t( env, info, fcn ); \ - }; \ - static napi_value stdlib_math_base_napi_t_t_init( \ - napi_env env, \ - napi_value exports \ - ) { \ - napi_value f; \ - napi_status status = napi_create_function( \ - env, \ - "exports", \ - NAPI_AUTO_LENGTH, \ - stdlib_math_base_napi_t_t_wrapper, \ - NULL, \ - &f \ - ); \ - assert( status == napi_ok ); \ - return f; \ - }; \ + static napi_value stdlib_math_base_napi_t_t_wrapper( \ + napi_env env, \ + napi_callback_info info \ + ) { \ + return stdlib_math_base_napi_t_t( env, info, fcn ); \ + }; \ + static napi_value stdlib_math_base_napi_t_t_init( \ + napi_env env, \ + napi_value exports \ + ) { \ + napi_value f; \ + napi_status status = napi_create_function( \ + env, \ + "exports", \ + NAPI_AUTO_LENGTH, \ + stdlib_math_base_napi_t_t_wrapper, \ + NULL, \ + &f \ + ); \ + assert( status == napi_ok ); \ + return f; \ + }; \ NAPI_MODULE( NODE_GYP_MODULE_NAME, stdlib_math_base_napi_t_t_init ) /* diff --git a/lib/node_modules/@stdlib/math/base/napi/unary/include/stdlib/math/base/napi/unary/u_u.h b/lib/node_modules/@stdlib/math/base/napi/unary/include/stdlib/math/base/napi/unary/u_u.h index 9e8e8c72bb22..1b6976de97b6 100644 --- a/lib/node_modules/@stdlib/math/base/napi/unary/include/stdlib/math/base/napi/unary/u_u.h +++ b/lib/node_modules/@stdlib/math/base/napi/unary/include/stdlib/math/base/napi/unary/u_u.h @@ -41,28 +41,28 @@ * STDLIB_MATH_BASE_NAPI_MODULE_U_U( scale ); */ #define STDLIB_MATH_BASE_NAPI_MODULE_U_U( fcn ) \ - static napi_value stdlib_math_base_napi_u_u_wrapper( \ - napi_env env, \ - napi_callback_info info \ - ) { \ - return stdlib_math_base_napi_u_u( env, info, fcn ); \ - }; \ - static napi_value stdlib_math_base_napi_u_u_init( \ - napi_env env, \ - napi_value exports \ - ) { \ - napi_value f; \ - napi_status status = napi_create_function( \ - env, \ - "exports", \ - NAPI_AUTO_LENGTH, \ - stdlib_math_base_napi_u_u_wrapper, \ - NULL, \ - &f \ - ); \ - assert( status == napi_ok ); \ - return f; \ - }; \ + static napi_value stdlib_math_base_napi_u_u_wrapper( \ + napi_env env, \ + napi_callback_info info \ + ) { \ + return stdlib_math_base_napi_u_u( env, info, fcn ); \ + }; \ + static napi_value stdlib_math_base_napi_u_u_init( \ + napi_env env, \ + napi_value exports \ + ) { \ + napi_value f; \ + napi_status status = napi_create_function( \ + env, \ + "exports", \ + NAPI_AUTO_LENGTH, \ + stdlib_math_base_napi_u_u_wrapper, \ + NULL, \ + &f \ + ); \ + assert( status == napi_ok ); \ + return f; \ + }; \ NAPI_MODULE( NODE_GYP_MODULE_NAME, stdlib_math_base_napi_u_u_init ) /* From 8e4b125b40aa14085524b46069df33f4de7c53df Mon Sep 17 00:00:00 2001 From: Gunj Joshi Date: Sat, 9 Aug 2025 02:01:21 +0530 Subject: [PATCH 3/4] Update lib/node_modules/@stdlib/math/base/napi/unary/src/b_b.c Co-authored-by: Athan Signed-off-by: Gunj Joshi --- lib/node_modules/@stdlib/math/base/napi/unary/src/b_b.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/math/base/napi/unary/src/b_b.c b/lib/node_modules/@stdlib/math/base/napi/unary/src/b_b.c index cb4d7636bcfb..99b2c74886ed 100644 --- a/lib/node_modules/@stdlib/math/base/napi/unary/src/b_b.c +++ b/lib/node_modules/@stdlib/math/base/napi/unary/src/b_b.c @@ -33,7 +33,7 @@ * @param env environment under which the function is invoked * @param info callback data * @param fcn unary function -* @return function return value as a Node-API unsigned 8-bit integer +* @return function return value as a Node-API unsigned 32-bit integer */ napi_value stdlib_math_base_napi_b_b( napi_env env, napi_callback_info info, uint8_t (*fcn)( uint8_t ) ) { napi_status status; From 95d16e235676505166bcd4c924b03b83f98f65a7 Mon Sep 17 00:00:00 2001 From: Gunj Joshi Date: Sat, 9 Aug 2025 02:01:31 +0530 Subject: [PATCH 4/4] Update lib/node_modules/@stdlib/math/base/napi/unary/src/t_t.c Co-authored-by: Athan Signed-off-by: Gunj Joshi --- lib/node_modules/@stdlib/math/base/napi/unary/src/t_t.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/math/base/napi/unary/src/t_t.c b/lib/node_modules/@stdlib/math/base/napi/unary/src/t_t.c index 0d5fbd0dcfa8..101626a6c393 100644 --- a/lib/node_modules/@stdlib/math/base/napi/unary/src/t_t.c +++ b/lib/node_modules/@stdlib/math/base/napi/unary/src/t_t.c @@ -33,7 +33,7 @@ * @param env environment under which the function is invoked * @param info callback data * @param fcn unary function -* @return function return value as a Node-API unsigned 16-bit integer +* @return function return value as a Node-API unsigned 32-bit integer */ napi_value stdlib_math_base_napi_t_t( napi_env env, napi_callback_info info, uint16_t (*fcn)( uint16_t ) ) { napi_status status;