Function.hx 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package cs.internal;
  2. /**
  3. These classes are automatically generated by the compiler. They are only
  4. here so there is an option for e.g. defining them as externs if you are compiling
  5. in modules (untested).
  6. **/
  7. @:keep @:abstract @:nativegen @:native("haxe.lang.Function") private class Function
  8. {
  9. function new(arity:Int, type:Int)
  10. {
  11. }
  12. }
  13. @:keep @:nativegen @:native("haxe.lang.VarArgsBase") private class VarArgsBase extends Function
  14. {
  15. public function __hx_invokeDynamic(dynArgs:Array<Dynamic>):Dynamic
  16. {
  17. throw "Abstract implementation";
  18. }
  19. }
  20. @:keep @:nativegen @:native('haxe.lang.VarArgsFunction') class VarArgsFunction extends VarArgsBase
  21. {
  22. private var fun:Array<Dynamic>->Dynamic;
  23. public function new(fun)
  24. {
  25. super(-1, -1);
  26. this.fun = fun;
  27. }
  28. override public function __hx_invokeDynamic(dynArgs:Array<Dynamic>):Dynamic
  29. {
  30. return fun(dynArgs);
  31. }
  32. }
  33. @:keep @:nativegen @:native('haxe.lang.Closure') class Closure extends VarArgsBase
  34. {
  35. private var obj:Dynamic;
  36. private var field:String;
  37. private var hash:Int;
  38. public function new(obj:Dynamic, field, hash)
  39. {
  40. super(-1, -1);
  41. this.obj = obj;
  42. this.field = field;
  43. this.hash = hash;
  44. }
  45. override public function __hx_invokeDynamic(dynArgs:Array<Dynamic>):Dynamic
  46. {
  47. return Runtime.callField(obj, field, hash, dynArgs);
  48. }
  49. }