2 // symbolwriter.cs: The symbol writer
5 // Martin Baulig (martin@ximian.com)
7 // (C) 2003 Ximian, Inc.
11 using System.Collections;
12 using System.Reflection;
13 using System.Reflection.Emit;
14 using System.Diagnostics.SymbolStore;
16 namespace Mono.CSharp {
17 public class SymbolWriter {
18 ISymbolWriter symwriter;
20 protected SymbolWriter (ISymbolWriter symwriter)
22 this.symwriter = symwriter;
27 Location.DefineSymbolDocuments (this);
32 public ISymbolDocumentWriter DefineDocument (string path)
34 return symwriter.DefineDocument (
35 path, SymLanguageType.CSharp, SymLanguageVendor.Microsoft,
36 SymDocumentType.Text);
39 public void OpenMethod (MethodToken token, Location start, Location end)
41 symwriter.OpenMethod (new SymbolToken (token.Token));
42 symwriter.SetMethodSourceRange (
43 start.SymbolDocument, start.Row, 0, end.SymbolDocument, end.Row, 0);
46 public void CloseMethod ()
48 symwriter.CloseMethod ();
51 public static SymbolWriter GetSymbolWriter (ModuleBuilder module)
53 ISymbolWriter symwriter = module.GetSymWriter ();
55 if (symwriter == null)
58 SymbolWriter writer = new SymbolWriter (symwriter);
59 if (!writer.Initialize ())