implemented externals in node_port
@@ -165,8 +165,7 @@ void metacall_node_finalizer(napi_env env, napi_value v, void * data)
return;
}
- auto finalizer = [](napi_env, void * finalize_data, void *)
- {
+ auto finalizer = [](napi_env, void *finalize_data, void *) {
metacall_value_destroy(finalize_data);
};
@@ -192,8 +191,7 @@ void metacall_node_finalizer(napi_env env, napi_value v, void * data)
nullptr,
external,
napi_default,
- nullptr
- };
+ nullptr};
status = napi_define_properties(env, v, 1, &desc);
@@ -504,7 +502,6 @@ void * metacall_node_napi_to_value(/*loader_impl_node node_impl,*/ napi_env env,
tupla[1] = metacall_node_napi_to_value(/* node_impl,*/ env, recv, element);
}
}
-
}
}
else if (valuetype == napi_function)
@@ -542,7 +539,13 @@ void * metacall_node_napi_to_value(/*loader_impl_node node_impl,*/ napi_env env,
}
else if (valuetype == napi_external)
{
- /* TODO */
+ void *ptr = NULL;
+
+ status = napi_get_value_external(env, valuetype, &ptr);
+
+ metacall_node_exception(env, status);
+
+ ret = metacall_value_create_ptr(ptr);
}
return ret;
@@ -683,12 +686,20 @@ napi_value metacall_node_value_to_napi(/* loader_impl_node node_impl,*/ napi_env
}
}
/* TODO */
- /*
+
else if (id == METACALL_PTR)
{
+ auto finalizer = [](napi_env, void *finalize_data, void *) {
+ metacall_value_destroy(finalize_data);
+ };
+
+ void *ptr = metacall_value_to_ptr(arg_value);
+ status = napi_create_external(env, ptr, finalizer, nullptr, &v);
+
+ metacall_node_exception(env, status)
}
- */
+
else if (id == METACALL_FUTURE)
{
/* TODO: Implement promise properly for await */
@@ -792,7 +803,8 @@ napi_value metacall_node_load_from_file(napi_env env, napi_callback_info info)
file_name_strings[i] = new char[_result + 1];
strncpy((char *)file_name_strings[i], c_strings, _result + 1);
}
- if(_result == 0) return NULL;
+ if (_result == 0)
+ return NULL;
int met_result = metacall_load_from_file(tagBuf, file_name_strings, length_of_JS_array, NULL);
if (met_result > 0)
{
