GeneratedCodeCategory{ void expandEntityTemplates(ExpansionContext context, MacroTable macros, CmdArgs args, SourceList sources) to {HeaderTemplate,ImplTemplate} { (@ GeneratedCodeCategory category; @) before GeneratedCodeCategory (@ category = host; @) before HeaderTemplate (@ if(args.getHeaderOutDir() != null){ System.out.println("Expanding Header Template"); File headerFile = category.headerFile(context.get_entity()); macros.define("File",headerFile.getName()); host.expand(context,macros,args); } @) before ImplTemplate (@ if(args.getImplOutDir() != null){ System.out.println("Expanding Impl Template"); File implFile = category.implFile(context.get_entity()); sources.add(implFile.getName()); macros.define("File",implFile.getName()); host.expand(context,macros,args); } @) } void expandMakeTemplate(CmdArgs args, SourceList sources) to MakeTemplate { before MakeTemplate (@ if(args.getImplOutDir() != null){ System.out.println("Expanding Make Template"); } @) } } HeaderTemplate{ void expand(ExpansionContext context, MacroTable macros, CmdArgs args) (@ System.out.println("Expanding Header Template"); macros.display(); @) } ImplTemplate{ void expand(ExpansionContext context, MacroTable macros, CmdArgs args) (@ System.out.println("Expanding Impl Template"); macros.display(); @) }