/src/erlv8_fun.erl

http://github.com/beamjs/erlv8 · Erlang · 36 lines · 23 code · 13 blank · 0 comment · 0 complexity · be7ffafb5b3bd33b94ccecfd8729706f MD5 · raw file

  1. -module(erlv8_fun).
  2. -include("erlv8.hrl").
  3. -extends(erlv8_object).
  4. -export([call/1,call/2,call/3,instantiate/1, instantiate/2, object/1,
  5. new/1, new/2]).
  6. call(Self) ->
  7. call([], Self).
  8. call({erlv8_object, _,_}=T, Self) ->
  9. call(T,[], Self);
  10. call(Args, #erlv8_fun{resource = Resource, vm = VM}) when is_list(Args) ->
  11. erlv8_vm:enqueue_tick(VM, {call, Resource, Args}).
  12. call({erlv8_object, _,_}=This, Args, #erlv8_fun{resource = Resource, vm = VM}) when is_list(Args) ->
  13. erlv8_vm:enqueue_tick(VM, {call, Resource, Args, This}).
  14. instantiate(Self) ->
  15. instantiate([], Self).
  16. instantiate(Args, #erlv8_fun{resource = Resource, vm = VM}) when is_list(Args) ->
  17. erlv8_vm:enqueue_tick(VM, {inst, Resource, Args}).
  18. object(#erlv8_fun{resource = Resource, vm = VM}) ->
  19. {erlv8_object, Resource, VM}.
  20. new(O) ->
  21. new(O,undefined).
  22. new(O, V) ->
  23. #erlv8_fun{resource = O, vm = V}.