1 // Copyright © 2021-present 650 Industries, Inc. (aka Expo) 2 3 #pragma once 4 5 #include <jsi/jsi.h> 6 7 #include <memory> 8 9 namespace jsi = facebook::jsi; 10 11 namespace expo { 12 /** 13 * An interface for classes which wrap `jsi::Object`. 14 */ 15 class JSIObjectWrapper { 16 public: 17 /** 18 * @return a pointer to the underlying `jsi::Object`. 19 */ 20 virtual std::shared_ptr<jsi::Object> get() = 0; 21 }; 22 23 /** 24 * An interface for classes which wrap `jsi::Value`. 25 */ 26 class JSIValueWrapper { 27 public: 28 /** 29 * @return a pointer to the underlying `jsi::Value`. 30 */ 31 virtual std::shared_ptr<jsi::Value> get() = 0; 32 }; 33 34 /** 35 * An interface for classes which wrap `jsi::Function`. 36 */ 37 class JSIFunctionWrapper { 38 public: 39 /** 40 * @return a pointer to the underlying `jsi::Function`. 41 */ 42 virtual std::shared_ptr<jsi::Function> get() = 0; 43 }; 44 } // namespace expo 45