sub PIL2JS::Internals::new_proxy (
Code :$FETCH = { die "No FETCH routine supplied" },
Code :$STORE = { die "No STORE routine supplied" },
) is rw {
JS::inline('new PIL2JS.Box.Constant(function (args) {
var fetch = args[1].FETCH(), store = args[2].FETCH(), cc = args.pop();
var proxy = new PIL2JS.Box.Proxy(
function () {
return PIL2JS.cps2normal(fetch, [ PIL2JS.Context.ItemAny ]).FETCH();
},
function (n) {
PIL2JS.cps2normal(store, [ PIL2JS.Context.ItemAny, n ]);
return this;
}
);
cc(proxy);
})')($FETCH, $STORE);
}