| 785 | } |
| 786 | |
| 787 | void CustomControllerContext::add_bind( |
| 788 | maajs::EnvType env, |
| 789 | std::string name, |
| 790 | std::string func_name, |
| 791 | int argc, |
| 792 | std::shared_ptr<maajs::ObjectRefType> actor, |
| 793 | std::function<maajs::ValueType(maajs::EnvType)> fallback) |
| 794 | { |
| 795 | callbacks[name] = new maajs::CallbackContext( |
| 796 | maajs::MakeFunction( |
| 797 | env, |
| 798 | func_name.c_str(), |
| 799 | argc, |
| 800 | [actor, name, fallback](const auto& info) -> maajs::ValueType { |
| 801 | auto func = actor->Value()[name].AsValue(); |
| 802 | if (func.IsFunction()) { |
| 803 | std::vector<maajs::ValueType> args; |
| 804 | args.reserve(info.Length()); |
| 805 | for (size_t i = 0; i < info.Length(); i++) { |
| 806 | args.push_back(info[i]); |
| 807 | } |
| 808 | return func.As<maajs::FunctionType>().Call(actor->Value(), args); |
| 809 | } |
| 810 | else { |
| 811 | return fallback(info.Env()); |
| 812 | } |
| 813 | }, |
| 814 | actor), |
| 815 | func_name.c_str()); |
| 816 | } |
| 817 | |
| 818 | void CustomControllerContext::gc_mark(maajs::NativeMarkerFunc marker) |
| 819 | { |
no test coverage detected