Macro.macro.hx 567 B

123456789101112131415161718192021222324252627
  1. class Macro {
  2. static var id = 0;
  3. static function build(i:String) {
  4. if (haxe.macro.Context.getLocalClass().get().isInterface) return null;
  5. var hasMacros = false;
  6. var fields = haxe.macro.Context.getBuildFields();
  7. for (f in fields) {
  8. if (f.name == "macros") {
  9. hasMacros = true;
  10. break;
  11. }
  12. }
  13. if (!hasMacros)
  14. fields = (macro class A {
  15. public static var macros = [];
  16. }).fields.concat(fields);
  17. var id = '_' + id++;
  18. fields.push((macro class A {
  19. static var $id = {macros.push($v{i}); 0;};
  20. }).fields[0]);
  21. return fields;
  22. }
  23. }