automatic add Process to DCEHack

This commit is contained in:
2023-07-09 15:29:26 +02:00
parent c390519393
commit 10a061c41b
3 changed files with 48 additions and 21 deletions

45
src/macros/DCEHack.hx Normal file
View File

@@ -0,0 +1,45 @@
package macros;
import haxe.macro.Context;
import haxe.macro.Expr;
using Lambda;
class DCEHack {
public static final classes: Array<haxe.macro.Type> = [];
macro static public function dceInclude(): Array<Field> {
#if !display
var localClass = Context.getLocalClass();
if (localClass == null){
return Context.getBuildFields();
}
// Ignore abstract classes
if (localClass.get().isAbstract){
return Context.getBuildFields();
}
classes.push(Context.getLocalType());
#end
return Context.getBuildFields();
}
macro static public function dceGenerateCreate(){
var exprs = [];
for (c in classes){
switch (c){
case TInst(_.get() => t, _):
var path: TypePath = {pack: t.pack, name: t.name};
exprs.push(macro new $path());
default:
Context.error("Unknown type: " + c, Context.currentPos());
}
}
return macro return $a{exprs};
}
}