Macro.hx 503 B

123456789101112131415161718192021
  1. import haxe.macro.Expr;
  2. import haxe.macro.Context;
  3. class Macro {
  4. macro static public function call(efun:ExprOf<Int->Int>, eval:Expr):Expr {
  5. var vfun = Context.eval(efun);
  6. var vval = Context.eval(eval);
  7. var r = vfun(vval);
  8. return macro $v{r};
  9. }
  10. macro static public function call2(efun:Int->Int, eval:Int):Expr {
  11. var r = efun(eval);
  12. return macro $v{r};
  13. }
  14. macro static public function call3(efun:Int->Int, eval:Expr):Expr {
  15. var r = efun(Context.eval(eval));
  16. return macro $v{r};
  17. }
  18. }