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