1*ab11e3c9SKudo Chien #pragma once
2*ab11e3c9SKudo Chien 
3*ab11e3c9SKudo Chien #include <jsi/jsi.h>
4*ab11e3c9SKudo Chien #include <memory>
5*ab11e3c9SKudo Chien #include <string>
6*ab11e3c9SKudo Chien 
7*ab11e3c9SKudo Chien using namespace facebook;
8*ab11e3c9SKudo Chien 
9*ab11e3c9SKudo Chien namespace reanimated {
10*ab11e3c9SKudo Chien 
11*ab11e3c9SKudo Chien struct HostFunctionHandler : jsi::HostObject {
12*ab11e3c9SKudo Chien   std::shared_ptr<jsi::Function> pureFunction;
13*ab11e3c9SKudo Chien   std::string functionName;
14*ab11e3c9SKudo Chien   jsi::Runtime *hostRuntime;
15*ab11e3c9SKudo Chien   jsi::HostObject a;
16*ab11e3c9SKudo Chien 
HostFunctionHandlerHostFunctionHandler17*ab11e3c9SKudo Chien   HostFunctionHandler(std::shared_ptr<jsi::Function> f, jsi::Runtime &rt) {
18*ab11e3c9SKudo Chien     pureFunction = f;
19*ab11e3c9SKudo Chien     functionName = f->getProperty(rt, "name").asString(rt).utf8(rt);
20*ab11e3c9SKudo Chien     hostRuntime = &rt;
21*ab11e3c9SKudo Chien   }
22*ab11e3c9SKudo Chien 
getPureFunctionHostFunctionHandler23*ab11e3c9SKudo Chien   std::shared_ptr<jsi::Function> getPureFunction() {
24*ab11e3c9SKudo Chien     return pureFunction;
25*ab11e3c9SKudo Chien   }
26*ab11e3c9SKudo Chien };
27*ab11e3c9SKudo Chien 
28*ab11e3c9SKudo Chien } // namespace reanimated
29