Files
react-native/ReactCommon/turbomodule/samples/SampleTurboCxxModule.h
T
Ramanpreet Nara e1102b43ff Implement Android Cxx TurboModule support
Summary:
## Summary
This diff does a bunch of things:
1. The TurboModule resolution algorithm on Android now supports C++ TurboModules.
2. `SampleTurboCxxModule` is moved from `ReactCommon/turbomodule/samples/platform/ios/` to `ReactCommon/turbomodule/samples` so that both iOS and Android can share it.
3. `CatalystTurboModuleManagerDelegate::getTurboModule(std::string, JSCallInvoker)` now understands and returns `SampleTurboCxxModule`.

Reviewed By: mdvacca

Differential Revision: D15253477

fbshipit-source-id: 3def91911b091f8cf93be17decd245a0499ed718
2019-05-22 13:16:13 -07:00

45 lines
1.4 KiB
Objective-C

/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#pragma once
#import <memory>
#import "NativeSampleTurboCxxModuleSpecJSI.h"
namespace facebook {
namespace react {
/**
* A sample implementation of the C++ spec. In practice, this class can just
* extend jsi::HostObject directly, but using the spec provides build-time
* type-safety.
*/
class SampleTurboCxxModule : public NativeSampleTurboCxxModuleSpecJSI {
public:
SampleTurboCxxModule(std::shared_ptr<JSCallInvoker> jsInvoker);
void voidFunc(jsi::Runtime &rt) override;
bool getBool(jsi::Runtime &rt, bool arg) override;
double getNumber(jsi::Runtime &rt, double arg) override;
jsi::String getString(jsi::Runtime &rt, const jsi::String &arg) override;
jsi::Array getArray(jsi::Runtime &rt, const jsi::Array &arg) override;
jsi::Object getObject(jsi::Runtime &rt, const jsi::Object &arg) override;
jsi::Object getValue(
jsi::Runtime &rt,
double x,
const jsi::String &y,
const jsi::Object &z) override;
void getValueWithCallback(jsi::Runtime &rt, const jsi::Function &callback)
override;
jsi::Value getValueWithPromise(jsi::Runtime &rt, bool error) override;
jsi::Object getConstants(jsi::Runtime &rt) override;
};
} // namespace react
} // namespace facebook