3
// This file was derived from a file from #Develop.
5
// Copyright (C) 2001-2007 Mike Krüger <mkrueger@novell.com>
7
// This program is free software; you can redistribute it and/or modify
8
// it under the terms of the GNU General Public License as published by
9
// the Free Software Foundation; either version 2 of the License, or
10
// (at your option) any later version.
12
// This program is distributed in the hope that it will be useful,
13
// but WITHOUT ANY WARRANTY; without even the implied warranty of
14
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
// GNU General Public License for more details.
17
// You should have received a copy of the GNU General Public License
18
// along with this program; if not, write to the Free Software
19
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
24
using MonoDevelop.Projects.Parser;
25
using MonoDevelop.Core;
27
namespace MonoDevelop.Projects.Ambience
29
public class NetAmbience : Ambience
31
public override string Convert(ModifierEnum modifier, ConversionFlags conversionFlags)
36
public override string Convert (IClass c, ConversionFlags conversionFlags, ITypeNameResolver resolver)
38
StringBuilder builder = new StringBuilder();
40
if (ShowClassModifiers(conversionFlags)) {
41
switch (c.ClassType) {
42
case ClassType.Delegate:
43
builder.Append("Delegate");
46
builder.Append("Class");
48
case ClassType.Struct:
49
builder.Append("Structure");
51
case ClassType.Interface:
52
builder.Append("Interface");
55
builder.Append("Enumeration");
61
if (UseFullyQualifiedNames(conversionFlags))
62
builder.Append (c.FullyQualifiedName);
64
builder.Append (c.Name);
66
if (c.GenericParameters != null && c.GenericParameters.Count > 0)
68
builder.Append("<");
69
for (int i = 0; i < c.GenericParameters.Count; i++)
71
builder.Append(c.GenericParameters[i].Name);
72
if (i + 1 < c.GenericParameters.Count) builder.Append(", ");
74
builder.Append(">");
77
if (c.ClassType == ClassType.Delegate) {
80
foreach (IMethod m in c.Methods) {
81
if (m.Name != "Invoke") continue;
83
for (int i = 0; i < m.Parameters.Count; ++i) {
84
builder.Append(Convert(m.Parameters[i]));
85
if (i + 1 < m.Parameters.Count) {
92
if (c.Methods.Count > 0) {
93
builder.Append(" : ");
94
builder.Append(Convert(c.Methods[0].ReturnType));
96
} else if (ShowInheritanceList(conversionFlags)) {
97
if (c.BaseTypes.Count > 0) {
98
builder.Append(" : ");
99
for (int i = 0; i < c.BaseTypes.Count; ++i) {
100
builder.Append(c.BaseTypes[i]);
101
if (i + 1 < c.BaseTypes.Count) {
102
builder.Append(", ");
108
if (IncludeBodies(conversionFlags)) {
109
builder.Append("\n{");
112
return builder.ToString();
115
public override string ConvertEnd(IClass c, ConversionFlags conversionFlags)
120
public override string Convert(IField field, ConversionFlags conversionFlags, ITypeNameResolver resolver)
122
StringBuilder builder = new StringBuilder();
123
if (ShowMemberModifiers(conversionFlags)) {
124
builder.Append("Field");
128
if (UseFullyQualifiedNames(conversionFlags)) {
129
builder.Append(field.FullyQualifiedName);
131
builder.Append(field.Name);
134
if (field.ReturnType != null && ShowReturnType (conversionFlags)) {
135
builder.Append(" : ");
136
builder.Append(Convert(field.ReturnType));
139
return builder.ToString();
142
public override string Convert(IProperty property, ConversionFlags conversionFlags, ITypeNameResolver resolver)
144
StringBuilder builder = new StringBuilder();
145
if (ShowMemberModifiers(conversionFlags)) {
146
builder.Append("Property");
150
if (UseFullyQualifiedNames(conversionFlags)) {
151
builder.Append(property.FullyQualifiedName);
153
builder.Append(property.Name);
155
if (ShowParameters (conversionFlags)) {
156
if (property.Parameters.Count > 0) builder.Append('(');
158
for (int i = 0; i < property.Parameters.Count; ++i) {
159
builder.Append(Convert(property.Parameters[i]));
160
if (i + 1 < property.Parameters.Count) {
161
builder.Append(", ");
165
if (property.Parameters.Count > 0) builder.Append(')');
169
if (property.ReturnType != null && ShowReturnType (conversionFlags)) {
170
builder.Append(" : ");
171
builder.Append(Convert(property.ReturnType));
173
return builder.ToString();
176
public override string Convert(IEvent e, ConversionFlags conversionFlags, ITypeNameResolver resolver)
178
StringBuilder builder = new StringBuilder();
179
if (ShowMemberModifiers(conversionFlags)) {
180
builder.Append("Event ");
183
if (UseFullyQualifiedNames(conversionFlags)) {
184
builder.Append(e.FullyQualifiedName);
186
builder.Append(e.Name);
188
if (e.ReturnType != null && ShowReturnType (conversionFlags)) {
189
builder.Append(" : ");
190
builder.Append(Convert(e.ReturnType));
192
return builder.ToString();
195
public override string Convert(IIndexer m, ConversionFlags conversionFlags, ITypeNameResolver resolver)
197
StringBuilder builder = new StringBuilder();
198
if (ShowMemberModifiers(conversionFlags)) {
199
builder.Append("Indexer ");
202
if (UseFullyQualifiedNames(conversionFlags)) {
203
builder.Append(m.FullyQualifiedName);
205
builder.Append(m.Name);
208
for (int i = 0; i < m.Parameters.Count; ++i) {
209
builder.Append(Convert(m.Parameters[i]));
210
if (i + 1 < m.Parameters.Count) {
211
builder.Append(", ");
216
if (m.ReturnType != null && ShowReturnType (conversionFlags)) {
217
builder.Append(" : ");
218
builder.Append(Convert(m.ReturnType));
220
return builder.ToString();
223
public override string Convert(IMethod m, ConversionFlags conversionFlags, ITypeNameResolver resolver)
225
StringBuilder builder = new StringBuilder();
226
if (ShowMemberModifiers(conversionFlags)) {
227
builder.Append("Method ");
230
if (UseFullyQualifiedNames(conversionFlags)) {
231
builder.Append(m.FullyQualifiedName);
233
builder.Append(m.Name);
235
if (ShowParameters (conversionFlags)) {
237
for (int i = 0; i < m.Parameters.Count; ++i) {
238
builder.Append(Convert(m.Parameters[i]));
239
if (i + 1 < m.Parameters.Count) {
240
builder.Append(", ");
246
if (m.ReturnType != null && ShowReturnType (conversionFlags)) {
247
builder.Append(" : ");
248
builder.Append(Convert(m.ReturnType));
251
if (IncludeBodies(conversionFlags)) {
252
builder.Append(" {");
255
return builder.ToString();
258
public override string ConvertEnd(IMethod m, ConversionFlags conversionFlags)
263
public override string Convert(IReturnType returnType, ConversionFlags conversionFlags, ITypeNameResolver resolver)
265
if (returnType == null) {
268
StringBuilder builder = new StringBuilder();
270
bool linkSet = false;
272
//if (UseLinkArrayList(conversionFlags)) {
273
//SharpAssemblyReturnType ret = returnType as SharpAssemblyReturnType;
275
// if (ret.UnderlyingClass != null) {
276
// builder.Append("<a href='as://" + linkArrayList.Add(ret.UnderlyingClass) + "'>");
282
if (UseFullyQualifiedNames(conversionFlags)) {
283
builder.Append(returnType.FullyQualifiedName);
285
builder.Append(returnType.Name);
289
builder.Append("</a>");
292
for (int i = 0; i < returnType.PointerNestingLevel; ++i) {
296
for (int i = 0; i < returnType.ArrayCount; ++i) {
298
for (int j = 1; j < returnType.ArrayDimensions[i]; ++j) {
304
return builder.ToString();
307
public override string Convert(IParameter param, ConversionFlags conversionFlags, ITypeNameResolver resolver)
309
StringBuilder builder = new StringBuilder();
310
if (ShowParameterNames(conversionFlags)) {
311
builder.Append(param.Name);
313
if (ShowReturnType (conversionFlags)) {
314
builder.Append(" : ");
315
builder.Append(Convert(param.ReturnType));
318
builder.Append("&");
320
return builder.ToString();
323
public override string Convert(LocalVariable localVariable, ConversionFlags conversionFlags, ITypeNameResolver resolver)
325
StringBuilder builder = new StringBuilder();
327
builder.Append(localVariable.Name);
328
if (ShowReturnType (conversionFlags)) {
329
builder.Append(" : ");
330
builder.Append(Convert(localVariable.ReturnType));
333
return builder.ToString();
336
public override string WrapAttribute(string attribute)
338
return "[" + attribute + "]";
341
public override string WrapComment(string comment)
343
return "// " + comment;
346
public override string GetIntrinsicTypeName(string dotNetTypeName)
348
return dotNetTypeName;