Compare commits

..

2 Commits

Author SHA1 Message Date
Siarhei Fedartsou 3c52f8539a Try to disable TBBMalloc 2024-07-28 21:02:32 +02:00
Siarhei Fedartsou 94101c7d2c Try to disable TBBMalloc 2024-07-28 19:31:11 +02:00
2 changed files with 24 additions and 49 deletions
+3
View File
@@ -353,6 +353,9 @@ if(ENABLE_CONAN)
KEEP_RPATHS KEEP_RPATHS
NO_OUTPUT_DIRS NO_OUTPUT_DIRS
OPTIONS boost:without_stacktrace=True # Apple Silicon cross-compilation fails without it OPTIONS boost:without_stacktrace=True # Apple Silicon cross-compilation fails without it
onetbb:tbbmalloc=False
onetbb:tbbproxy=False
onetbb:tbbbind=False
BUILD missing BUILD missing
) )
+21 -49
View File
@@ -11,85 +11,57 @@ namespace node_osrm
struct V8Renderer struct V8Renderer
{ {
explicit V8Renderer(const Napi::Env &env) : env(env) {} explicit V8Renderer(const Napi::Env &env, Napi::Value &out) : env(env), out(out) {}
Napi::Value operator()(const osrm::json::String &string) const void operator()(const osrm::json::String &string) const
{ {
return Napi::String::New(env, string.value); out = Napi::String::New(env, string.value);
} }
Napi::Value operator()(const osrm::json::Number &number) const void operator()(const osrm::json::Number &number) const
{ {
return Napi::Number::New(env, number.value); out = Napi::Number::New(env, number.value);
} }
Napi::Value operator()(const osrm::json::Object &object) const void operator()(const osrm::json::Object &object) const
{ {
Napi::Object obj = Napi::Object::New(env); Napi::Object obj = Napi::Object::New(env);
for (const auto &keyValue : object.values) for (const auto &keyValue : object.values)
{ {
obj.Set(keyValue.first, visit(*this, keyValue.second)); Napi::Value child;
std::visit(V8Renderer(env, child), keyValue.second);
obj.Set(keyValue.first, child);
} }
return obj; out = obj;
} }
Napi::Value operator()(const osrm::json::Array &array) const void operator()(const osrm::json::Array &array) const
{ {
Napi::Array a = Napi::Array::New(env, array.values.size()); Napi::Array a = Napi::Array::New(env, array.values.size());
for (auto i = 0u; i < array.values.size(); ++i) for (auto i = 0u; i < array.values.size(); ++i)
{ {
a.Set(i, visit(*this, array.values[i])); Napi::Value child;
std::visit(V8Renderer(env, child), array.values[i]);
a.Set(i, child);
} }
return a; out = a;
} }
Napi::Value operator()(const osrm::json::True &) const { return Napi::Boolean::New(env, true); } void operator()(const osrm::json::True &) const { out = Napi::Boolean::New(env, true); }
Napi::Value operator()(const osrm::json::False &) const void operator()(const osrm::json::False &) const { out = Napi::Boolean::New(env, false); }
{
return Napi::Boolean::New(env, false);
}
Napi::Value operator()(const osrm::json::Null &) const { return env.Null(); } void operator()(const osrm::json::Null &) const { out = env.Null(); }
private:
Napi::Value visit(const V8Renderer &renderer, const osrm::json::Value &value) const
{
switch (value.index())
{
case 0:
return renderer(std::get<osrm::json::String>(value));
break;
case 1:
return renderer(std::get<osrm::json::Number>(value));
break;
case 2:
return renderer(std::get<osrm::json::Object>(value));
break;
case 3:
return renderer(std::get<osrm::json::Array>(value));
break;
case 4:
return renderer(std::get<osrm::json::True>(value));
break;
case 5:
return renderer(std::get<osrm::json::False>(value));
break;
case 6:
return renderer(std::get<osrm::json::Null>(value));
break;
}
return env.Null();
}
private: private:
const Napi::Env &env; const Napi::Env &env;
Napi::Value &out;
}; };
inline void renderToV8(const Napi::Env &env, Napi::Value &out, const osrm::json::Object &object) inline void renderToV8(const Napi::Env &env, Napi::Value &out, const osrm::json::Object &object)
{ {
V8Renderer renderer(env); V8Renderer renderer(env, out);
out = renderer(object); renderer(object);
} }
} // namespace node_osrm } // namespace node_osrm