Function.hx 1.3 KB

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