/
githubmr
/
facebook-react-native
Обзор
Документация
Войти
/
githubmr
/
facebook-react-native
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
v0.78.3
packages/react-native-test-library/ios/OSSLibraryExampleSpecJSI.h
67 строк
2 KB
Pieter De Baets
Fix Cxx TurboModule methods not being cached (#46751)
02 окт 2024, 15:10
02 окт 2024, 15:10
5b5e150
Код
Авторство
О чём код?
/** * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). * * Do not edit this file as changes may cause incorrect behavior and will be lost * once the code is regenerated. * * @generated by codegen project: GenerateModuleH.js */ #pragma once #include <ReactCommon/TurboModule.h> #include <react/bridging/Bridging.h> namespace facebook::react { class JSI_EXPORT NativeSampleModuleCxxSpecJSI : public TurboModule { protected: NativeSampleModuleCxxSpecJSI(std::shared_ptr<CallInvoker> jsInvoker); public: virtual double getRandomNumber(jsi::Runtime &rt) = 0; }; template <typename T> class JSI_EXPORT NativeSampleModuleCxxSpec : public TurboModule { public: jsi::Value create(jsi::Runtime &rt, const jsi::PropNameID &propName) override { return delegate_.create(rt, propName); } static constexpr std::string_view kModuleName = "NativeSampleModule"; protected: NativeSampleModuleCxxSpec(std::shared_ptr<CallInvoker> jsInvoker) : TurboModule(std::string{NativeSampleModuleCxxSpec::kModuleName}, jsInvoker), delegate_(reinterpret_cast<T*>(this), jsInvoker) {} private: class Delegate : public NativeSampleModuleCxxSpecJSI { public: Delegate(T *instance, std::shared_ptr<CallInvoker> jsInvoker) : NativeSampleModuleCxxSpecJSI(std::move(jsInvoker)), instance_(instance) { } double getRandomNumber(jsi::Runtime &rt) override { static_assert( bridging::getParameterCount(&T::getRandomNumber) == 1, "Expected getRandomNumber(...) to have 1 parameters"); return bridging::callFromJs<double>( rt, &T::getRandomNumber, jsInvoker_, instance_); } private: friend class NativeSampleModuleCxxSpec; T *instance_; }; Delegate delegate_; }; } // namespace facebook::react