9#include <choc/javascript/choc_javascript.h>
47 std::
size_t max_bytes);
57 void register_function(
const std::string& name, choc::javascript::Context::NativeFunction fn);
64 bridge_call_counter_ = counter;
67 return bridge_call_counter_;
75 choc::value::Value
invoke(std::string_view name);
78 template<
typename... Args>
79 choc::value::Value
invoke(std::string_view name, Args&&... args);
106 explicit operator bool()
const;
127 std::unique_ptr<JsEngine> engine_;
128 std::shared_ptr<const void> alive_ = std::make_shared<const char>(
'\0');
129 std::shared_ptr<std::atomic<std::uint64_t>> bridge_call_counter_;
134 choc::javascript::Context* choc_context_ =
nullptr;
136 void init_choc_compat();
141template<
typename... Args>
144 choc::value::Value arg_values[] = { choc::value::Value(std::forward<Args>(args))... };
145 return engine_->invoke(name, arg_values,
sizeof...(args));
Definition js_engine.hpp:84
void register_promise_function(const std::string &name, NativePromiseFunction fn)
std::string expected_runtime_version() const
ScriptEngine(JsEngineType engine_type)
void set_log_callback(LogCallback callback)
ScriptEngine(ScriptEngine &&) noexcept
std::string runtime_version() const
std::string provider_path() const
void register_function(const std::string &name, choc::javascript::Context::NativeFunction fn)
bool clear_pending_interrupt()
choc::value::Value evaluate(const std::string &code)
std::shared_ptr< std::atomic< std::uint64_t > > bridge_call_counter() const noexcept
Definition script_engine.hpp:66
void register_function(const std::string &name, NativeFunction fn)
void register_host_object(const std::string &name, HostObjectDescriptor descriptor)
std::weak_ptr< const void > liveness_token() const noexcept
Definition script_engine.hpp:124
choc::value::Value evaluate_script(const std::string &code)
const JsEngine & engine() const
void set_bridge_call_counter(const std::shared_ptr< std::atomic< std::uint64_t > > &counter) noexcept
Definition script_engine.hpp:63
void run_module(const std::string &code, ModuleResolver resolver, ModuleCompletionHandler completion={})
std::string provider_kind() const
bool set_memory_limit(std::size_t bytes)
choc::value::Value invoke(std::string_view name)
std::string evaluate_bounded_json(const std::string &code, std::size_t max_bytes)
bool supports_bounded_json_evaluation() const
JsEngineType engine_type() const
bool supports_interrupt() const
Hover-cursor tracking for platform window hosts.
Definition fwd.hpp:27
JsEngineType
Definition js_engine.hpp:59
std::function< choc::value::Value(const choc::value::Value *args, size_t num_args)> NativeFunction
Definition js_engine.hpp:28
std::function< void(const std::string &error, const choc::value::Value &result)> ModuleCompletionHandler
Definition js_engine.hpp:22
@ value
the widget's primary value (Knob, Fader, RangeSlider, Toggle, ProgressBar)
Definition binding_diagnostics.hpp:19
NativeFunction NativePromiseFunction
Definition js_engine.hpp:29
std::function< std::optional< std::string >(std::string_view path)> ModuleResolver
Definition js_engine.hpp:21
std::function< void(std::string_view level, std::string_view message)> LogCallback
Definition js_engine.hpp:25
Definition js_engine.hpp:45