@ -2,7 +2,7 @@
# include <string.h>
# include "../common.h"
napi_value Test ( napi_env env , napi_callback_info info ) {
napi_value TestGetElement ( napi_env env , napi_callback_info info ) {
size_t argc = 2 ;
napi_value args [ 2 ] ;
NAPI_CALL ( env , napi_get_cb_info ( env , info , & argc , args , NULL , NULL ) ) ;
@ -37,17 +37,49 @@ napi_value Test(napi_env env, napi_callback_info info) {
uint32_t length ;
NAPI_CALL ( env , napi_get_array_length ( env , array , & length ) ) ;
if ( ( uint32_t ) index > = length ) {
napi_value str ;
const char * str_val = " Index out of bound! " ;
size_t str_len = strlen ( str_val ) ;
NAPI_CALL ( env , napi_create_string_utf8 ( env , str_val , str_len , & str ) ) ;
NAPI_ASSERT ( env , ( ( uint32_t ) index < length ) , " Index out of bounds! " ) ;
return str ;
napi_value ret ;
NAPI_CALL ( env , napi_get_element ( env , array , index , & ret ) ) ;
return ret ;
}
napi_value TestHasElement ( napi_env env , napi_callback_info info ) {
size_t argc = 2 ;
napi_value args [ 2 ] ;
NAPI_CALL ( env , napi_get_cb_info ( env , info , & argc , args , NULL , NULL ) ) ;
NAPI_ASSERT ( env , argc > = 2 , " Wrong number of arguments " ) ;
napi_valuetype valuetype0 ;
NAPI_CALL ( env , napi_typeof ( env , args [ 0 ] , & valuetype0 ) ) ;
NAPI_ASSERT ( env , valuetype0 = = napi_object ,
" Wrong type of arguments. Expects an array as first argument. " ) ;
napi_valuetype valuetype1 ;
NAPI_CALL ( env , napi_typeof ( env , args [ 1 ] , & valuetype1 ) ) ;
NAPI_ASSERT ( env , valuetype1 = = napi_number ,
" Wrong type of arguments. Expects an integer as second argument. " ) ;
napi_value array = args [ 0 ] ;
int32_t index ;
NAPI_CALL ( env , napi_get_value_int32 ( env , args [ 1 ] , & index ) ) ;
bool isarray ;
NAPI_CALL ( env , napi_is_array ( env , array , & isarray ) ) ;
if ( ! isarray ) {
return NULL ;
}
bool has_element ;
NAPI_CALL ( env , napi_has_element ( env , array , index , & has_element ) ) ;
napi_value ret ;
NAPI_CALL ( env , napi_get_element ( env , array , index , & ret ) ) ;
NAPI_CALL ( env , napi_get_boolean ( env , has_element , & ret ) ) ;
return ret ;
}
@ -80,10 +112,34 @@ napi_value New(napi_env env, napi_callback_info info) {
return ret ;
}
napi_value NewWithLength ( napi_env env , napi_callback_info info ) {
size_t argc = 1 ;
napi_value args [ 1 ] ;
NAPI_CALL ( env , napi_get_cb_info ( env , info , & argc , args , NULL , NULL ) ) ;
NAPI_ASSERT ( env , argc > = 1 , " Wrong number of arguments " ) ;
napi_valuetype valuetype0 ;
NAPI_CALL ( env , napi_typeof ( env , args [ 0 ] , & valuetype0 ) ) ;
NAPI_ASSERT ( env , valuetype0 = = napi_number ,
" Wrong type of arguments. Expects an integer the first argument. " ) ;
int32_t array_length ;
NAPI_CALL ( env , napi_get_value_int32 ( env , args [ 0 ] , & array_length ) ) ;
napi_value ret ;
NAPI_CALL ( env , napi_create_array_with_length ( env , array_length , & ret ) ) ;
return ret ;
}
void Init ( napi_env env , napi_value exports , napi_value module , void * priv ) {
napi_property_descriptor descriptors [ ] = {
DECLARE_NAPI_PROPERTY ( " Test " , Test ) ,
DECLARE_NAPI_PROPERTY ( " TestGetElement " , TestGetElement ) ,
DECLARE_NAPI_PROPERTY ( " TestHasElement " , TestHasElement ) ,
DECLARE_NAPI_PROPERTY ( " New " , New ) ,
DECLARE_NAPI_PROPERTY ( " NewWithLength " , NewWithLength ) ,
} ;
NAPI_CALL_RETURN_VOID ( env , napi_define_properties (