diff --git a/packages/qvac-lib-inference-addon-cpp/src/qvac-lib-inference-addon-cpp/handlers/JsOutputHandlerImplementations.hpp b/packages/qvac-lib-inference-addon-cpp/src/qvac-lib-inference-addon-cpp/handlers/JsOutputHandlerImplementations.hpp index 5fd92820e1..a8a7da14dc 100644 --- a/packages/qvac-lib-inference-addon-cpp/src/qvac-lib-inference-addon-cpp/handlers/JsOutputHandlerImplementations.hpp +++ b/packages/qvac-lib-inference-addon-cpp/src/qvac-lib-inference-addon-cpp/handlers/JsOutputHandlerImplementations.hpp @@ -47,6 +47,25 @@ struct JsTypedArrayOutputHandler : JsBaseOutputHandler> { }) {} }; + +struct JsStringArrayOutputHandler + : public JsBaseOutputHandler> { + JsStringArrayOutputHandler() + : JsBaseOutputHandler>( + [this]( + const std::vector& stringVector) -> js_value_t* { + auto array = js::Array::create(this->env_); + + for (size_t i = 0; i < stringVector.size(); ++i) { + js_value_t* str; + auto jsString = js::String::create(this->env_, stringVector[i]); + array.set(this->env_, i, jsString); + } + + return array; + }) {} +}; + template class Js2DArrayOutputHandler : public JsBaseOutputHandler { template struct has_size : false_type {}; diff --git a/packages/qvac-lib-inference-addon-cpp/tests/js_output_handler_test.cpp b/packages/qvac-lib-inference-addon-cpp/tests/js_output_handler_test.cpp index b681b80e68..8cc1fb682c 100644 --- a/packages/qvac-lib-inference-addon-cpp/tests/js_output_handler_test.cpp +++ b/packages/qvac-lib-inference-addon-cpp/tests/js_output_handler_test.cpp @@ -99,4 +99,27 @@ TEST(JsOutputHandlerTest, Js2DArrayOutputHandlerCanHandleFlattened2DArray) { EXPECT_TRUE(handler.canHandle(testData)); } +// ============================================================================ +// JsStringOutputHandler Tests +// ============================================================================ + +TEST(JsOutputHandlerTest, JsStringArrayOutputHandlerCanInstantiate) { + js_env_t env; + out_handl::JsStringArrayOutputHandler handler; + handler.setEnv(&env); + EXPECT_TRUE(true); +} + +TEST(JsOutputHandlerTest, JsStringArrayOutputHandlerCanHandleString) { + js_env_t env; + out_handl::JsStringArrayOutputHandler handler; + handler.setEnv(&env); + + std::vector testString = { + "test string", "test string 2", "hello world"}; + std::any testData = std::any(testString); + + EXPECT_TRUE(handler.canHandle(testData)); +} + } // namespace qvac_lib_inference_addon_cpp diff --git a/packages/qvac-lib-inference-addon-cpp/vcpkg.json b/packages/qvac-lib-inference-addon-cpp/vcpkg.json index 4d69ce4bf0..4399445f56 100644 --- a/packages/qvac-lib-inference-addon-cpp/vcpkg.json +++ b/packages/qvac-lib-inference-addon-cpp/vcpkg.json @@ -1,6 +1,6 @@ { "name": "qvac-lib-inference-addon-cpp", - "version": "1.0.0", + "version": "1.1.0", "dependencies": [ { "name": "qvac-lint-cpp",