114c0f05dSŁukasz Kosmaty // Copyright © 2021-present 650 Industries, Inc. (aka Expo) 214c0f05dSŁukasz Kosmaty 314c0f05dSŁukasz Kosmaty #pragma once 414c0f05dSŁukasz Kosmaty 514c0f05dSŁukasz Kosmaty #include <jsi/jsi.h> 614c0f05dSŁukasz Kosmaty 714c0f05dSŁukasz Kosmaty #include <memory> 814c0f05dSŁukasz Kosmaty 914c0f05dSŁukasz Kosmaty namespace jsi = facebook::jsi; 1014c0f05dSŁukasz Kosmaty 1114c0f05dSŁukasz Kosmaty namespace expo { 1214c0f05dSŁukasz Kosmaty /** 13*879827bbSŁukasz Kosmaty * An interface for classes which wrap `jsi::Object`. 1414c0f05dSŁukasz Kosmaty */ 1514c0f05dSŁukasz Kosmaty class JSIObjectWrapper { 1614c0f05dSŁukasz Kosmaty public: 1714c0f05dSŁukasz Kosmaty /** 18*879827bbSŁukasz Kosmaty * @return a pointer to the underlying `jsi::Object`. 1914c0f05dSŁukasz Kosmaty */ 2014c0f05dSŁukasz Kosmaty virtual std::shared_ptr<jsi::Object> get() = 0; 2114c0f05dSŁukasz Kosmaty }; 2214c0f05dSŁukasz Kosmaty 2314c0f05dSŁukasz Kosmaty /** 24*879827bbSŁukasz Kosmaty * An interface for classes which wrap `jsi::Value`. 2514c0f05dSŁukasz Kosmaty */ 2614c0f05dSŁukasz Kosmaty class JSIValueWrapper { 2714c0f05dSŁukasz Kosmaty public: 2814c0f05dSŁukasz Kosmaty /** 29*879827bbSŁukasz Kosmaty * @return a pointer to the underlying `jsi::Value`. 3014c0f05dSŁukasz Kosmaty */ 3114c0f05dSŁukasz Kosmaty virtual std::shared_ptr<jsi::Value> get() = 0; 3214c0f05dSŁukasz Kosmaty }; 33*879827bbSŁukasz Kosmaty 34*879827bbSŁukasz Kosmaty /** 35*879827bbSŁukasz Kosmaty * An interface for classes which wrap `jsi::Function`. 36*879827bbSŁukasz Kosmaty */ 37*879827bbSŁukasz Kosmaty class JSIFunctionWrapper { 38*879827bbSŁukasz Kosmaty public: 39*879827bbSŁukasz Kosmaty /** 40*879827bbSŁukasz Kosmaty * @return a pointer to the underlying `jsi::Function`. 41*879827bbSŁukasz Kosmaty */ 42*879827bbSŁukasz Kosmaty virtual std::shared_ptr<jsi::Function> get() = 0; 43*879827bbSŁukasz Kosmaty }; 4414c0f05dSŁukasz Kosmaty } // namespace expo 45