Евгений Шатунов, Так я и сам не специалист ни в C++, ни в Objective-C, ни в WebView, ни в Godot. Я, вообще, JS-программист) И так максимально упростил пример в вопросе. С разведением зависимостей понятно, но скорее всего слишком сложный путь. Попробовал костыль Wataru, компилится, но ВебВью падает с ошибкой. Наиболее правильным видится решение использовать GDExtension. Там Godot в изолированной области видимости и конфликтов быть не должно. Но возникает проблема - как собрать это. Тот пример, что скидывал https://github.com/tamtakoe/gdextension-webkit-example как раз про это. Правда, это уже оффтопик и тут скорее вопрос как скомпилить Objective-C WebKit в существующем C++ проекте
Евгений Шатунов, В общем, задача прикрутить WebView в Godot. И сделать это желательно самым простым способом. В .mm файле используется и WebView и Godot потому-что WebKit содержит Objective-C код, а Godot плюсовый проект. Соответсвенно, чтобы это подружить, мы всё складываем в .mm файл и используем Objective-C++ код
Можно еще скомпилить и тянуть WebKit как C-либу и использовать с extern "C", но такой подход видится еще более костыльным
Евгений Шатунов, странно, что для таких, казалось бы, не редких задач, в С++ не существует нормальных библиотек и люди вынуждены писать свои фреймворки :)
Евгений Шатунов, ну, это нужно проверять тип и если это число, то конвертить в строку, а я как раз хотел избежать проверки типа и лишнего кода. Ну, ну раз нельзя, так нельзя :)
Про тег ноды хороший совет. Помучаюсь еще и задам более расширенный вопрос. В любом случае, спасибо!
Евгений Шатунов, Napi::Array используется, с ним проблем нет. Структура данных упрощенно такая: [{a: 1}, {a: 2}, {b: 'z'}]. Загвоздка тут с внутренними объектами.
Не хочу использовать Napi::Типы для внутренних расчетов во-первых, потому что не понятно как они внутри устроены насколько просядет производительность, во-вторых, они слишком урезаны по функционалу (у Napi::Array, например, нет даже метода push), в-третьих, я бы хотел сохранить ядро вычислений на чистом С++, а Napi использовать только как обертку на входе и выходе
Евгений Шатунов, можно и тип проверять, но никаких instanceOf у variant нет и это делается с помощью std::variant::index, а он зависит от порядка объявления типов в шаблоне... Тоже криво как-то
Евгений Шатунов, пишу нативный модуль для node.js c помощью node-addon-api. Там идет работа с массивом объектов. В объекте поля могут содержать разные типы и их удобно представлять с помощью variant. Ну, и, соответственно, при обратной конвертации проще все поля привести к строкам, т.к. они всё равно будут показаны в UI, а там тип не важен