///|
/// Function pointer table for calling from runtime into stdlib.
/// This breaks the circular dependency: runtime defines the interface,
/// stdlib provides the implementation, root interpreter wires them together.
pub(all) struct StdlibHooks {
get_string_method : (String, String, RealmState, Bool) -> Value
get_number_method : (Value, String, RealmState) -> Value
get_array_method_with_interp : (ArrayData, String, RealmState) -> Value
get_map_method : (MapData, String, RealmState) -> Value
get_set_method : (SetData, String, RealmState) -> Value
get_promise_method : (PromiseData, String, RealmState) -> Value
make_regexp_object : (RealmState, String, String) -> Value raise Error
typedarray_get_index : (ObjectData, Int, RealmState) -> Value
typedarray_set_index : (ObjectData, Int, Double, RealmState) -> Unit
typedarray_is_valid_index : (ObjectData, Int, RealmState) -> Bool
// Factory for creating a fully-wired realm (builtins + harness + hooks).
// Populated by the wiring layer; the default produces a bare interpreter.
create_realm : () -> Interpreter
}
///|
/// Default no-op hooks used before stdlib is wired in.
pub fn default_stdlib_hooks() -> StdlibHooks {
{
get_string_method: fn(_s, _prop, _realm_state, _annex_b) { Undefined },
get_number_method: fn(_obj, _prop, _realm_state) { Undefined },
get_array_method_with_interp: fn(_data, _prop, _realm_state) { Undefined },
get_map_method: fn(_data, _prop, _realm_state) { Undefined },
get_set_method: fn(_data, _prop, _realm_state) { Undefined },
get_promise_method: fn(_data, _prop, _realm_state) { Undefined },
make_regexp_object: fn(_realm_state, _pattern, _flags) { Undefined },
typedarray_get_index: fn(_data, _idx, _realm_state) { Undefined },
typedarray_set_index: fn(_data, _idx, _val, _realm_state) { () },
typedarray_is_valid_index: fn(_data, _idx, _realm_state) { false },
create_realm: fn() { Interpreter::new() },
}
}