public void WriteGlobals(Program program, string filename, TextWriter w) { var headerfile = DecompiledFileService.GenerateDerivedFilename(program, ".h"); WriteHeaderComment(filename, program, w); w.WriteLine("#include \"{0}\"", headerfile); w.WriteLine(); var gdw = new GlobalDataWriter(program, new TextFormatter(w), true, true, services); gdw.Write(); w.WriteLine(); }
public void WriteDecompiledObjects(Program program, string filename, IEnumerable <IAddressable> objects, TextWriter w) { WriteHeaderComment(filename, program, w); //$REFACTOR: common code -- hardwired ".h" var headerfile = DecompiledFileService.GenerateDerivedFilename(program, ".h"); w.WriteLine("#include \"{0}\"", headerfile); w.WriteLine(); var fmt = new AbsynCodeFormatter(new TextFormatter(w)); var gdw = new GlobalDataWriter(program, fmt.InnerFormatter, false, true, this.services); IAddressable?prev = null; foreach (var o in objects) { if (o is Procedure proc) { try { if (prev is GlobalVariable) { w.WriteLine(); } WriteProcedureHeader(program, proc, w); fmt.Write(proc); w.WriteLine(); } catch (Exception ex) { w.WriteLine(); w.WriteLine("// Exception {0} when writing procedure.", ex.Message); } } else if (o is GlobalVariable global) { gdw.WriteGlobalVariable(global.Address, global.DataType, global.Name); } } }