2002-07-31 Duncan Mak <duncan@ximian.com>
[mono.git] / mcs / class / Mono.CSharp.Debugger / IMonoSymbolWriter.cs
1 //
2 // System.Diagnostics.SymbolStore/IMonoSymbolWriter.cs
3 //
4 // Author:
5 //   Martin Baulig (martin@gnome.org)
6 //
7 // This interface is derived from System.Diagnostics.SymbolStore.ISymbolWriter.
8 //
9 // (C) 2002 Ximian, Inc.  http://www.ximian.com
10 //
11
12 using System;
13 using System.Reflection;
14 using System.Reflection.Emit;
15 using System.Diagnostics.SymbolStore;
16 using System.Collections;
17 using System.IO;
18         
19 namespace Mono.CSharp.Debugger
20 {
21         public interface IMonoSymbolWriter : ISymbolWriter
22         {
23                 ISourceMethod[] Methods {
24                         get;
25                 }
26
27                 ISourceFile[] Sources {
28                         get;
29                 }
30
31                 void Initialize (string filename, string[] args);
32         }
33
34         public interface ISourceFile
35         {
36                 string FileName {
37                         get;
38                 }
39
40                 ISourceMethod[] Methods {
41                         get;
42                 }
43
44                 void AddMethod (ISourceMethod method);
45         }
46
47         public interface ISourceMethod
48         {
49                 ISourceLine[] Lines {
50                         get;
51                 }
52
53                 void AddLine (ISourceLine line);
54
55                 ISourceBlock[] Blocks {
56                         get;
57                 }
58
59                 ILocalVariable[] Locals {
60                         get;
61                 }
62
63                 void AddLocal (ILocalVariable local);
64
65
66                 ISourceLine Start {
67                         get;
68                 }
69
70                 ISourceLine End {
71                         get;
72                 }
73
74                 string FullName {
75                         get;
76                 }
77
78                 int Token {
79                         get;
80                 }
81
82                 Type ReturnType {
83                         get;
84                 }
85
86                 ParameterInfo[] Parameters {
87                         get;
88                 }
89
90                 MethodBase MethodBase {
91                         get;
92                 }
93
94                 ISourceFile SourceFile {
95                         get;
96                 }
97         }
98
99         public interface ISourceBlock
100         {
101                 ISourceMethod SourceMethod {
102                         get;
103                 }
104
105                 ILocalVariable[] Locals {
106                         get;
107                 }
108
109                 void AddLocal (ILocalVariable local);
110
111                 ISourceBlock[] Blocks {
112                         get;
113                 }
114
115                 void AddBlock (ISourceBlock block);
116
117                 ISourceLine Start {
118                         get;
119                 }
120
121                 ISourceLine End {
122                         get;
123                 }
124
125                 int ID {
126                         get;
127                 }
128         }
129
130         public enum SourceOffsetType
131         {
132                 OFFSET_NONE,
133                 OFFSET_IL,
134                 OFFSET_LOCAL,
135                 OFFSET_PARAMETER
136         }
137
138         public interface ISourceLine
139         {
140                 SourceOffsetType OffsetType {
141                         get;
142                 }
143
144                 int Offset {
145                         get;
146                 }
147
148                 int Row {
149                         get;
150                 }
151
152                 int Column {
153                         get;
154                 }
155         }
156
157         public interface ITypeHandle
158         {
159                 string Name {
160                         get;
161                 }
162
163                 Type Type {
164                         get;
165                 }
166
167                 int Token {
168                         get;
169                 }
170         }
171
172         public interface IVariable
173         {
174                 string Name {
175                         get;
176                 }
177
178                 ISourceLine Line {
179                         get;
180                 }
181
182                 ITypeHandle TypeHandle {
183                         get;
184                 }
185
186                 ISourceMethod Method {
187                         get;
188                 }
189
190                 int Index {
191                         get;
192                 }
193         }
194
195         public interface ILocalVariable : IVariable
196         { }
197
198         public interface IMethodParameter : IVariable
199         { }
200 }