* DataColumn.cs: In Expression setter, set the expression member even if
[mono.git] / mcs / class / System.Data / System.Data / TypedDataSetGenerator.cs
1 //
2 // TypedDataSetGenerator.cs
3 //
4 // Author:
5 //      Atsushi Enomoto <atsushi@ximian.com>
6 //
7 // (C)2004 Novell Inc.
8 //
9 using System;
10 using System.CodeDom;
11 using System.CodeDom.Compiler;
12 using System.Collections;
13 using System.Data;
14 using System.Text;
15
16 namespace System.Data
17 {
18         public class TypedDataSetGenerator
19         {
20                 public TypedDataSetGenerator ()
21                 {
22                 }
23
24                 [MonoTODO]
25                 public static void Generate (DataSet dataSet,
26                         CodeNamespace codeNamespace,
27                         ICodeGenerator codeGen)
28                 {
29                         throw new NotImplementedException ();
30                 }
31
32                 public static string GenerateIdName (string name, ICodeGenerator codeGen)
33                 {
34                         if (name == null || codeGen == null)
35                                 throw new NullReferenceException ();
36
37                         name = codeGen.CreateValidIdentifier (name);
38                         // ... however, in fact this method is so insufficient
39                         // that we have to modify the name.
40
41                         if (name.Length == 0)
42                                 return "_";
43
44                         StringBuilder sb = null;
45                         if (!Char.IsLetter (name, 0) && name [0] != '_') {
46                                 sb = new StringBuilder ();
47                                 sb.Append ('_');
48                         }
49
50                         int start = 0;
51                         for (int i = 0; i < name.Length; i++) {
52                                 if (!Char.IsLetterOrDigit (name, i)) {
53                                         if (sb == null)
54                                                 sb = new StringBuilder ();
55                                         sb.Append (name, start, i - start);
56                                         sb.Append ('_');
57                                         start = i + 1;
58                                 }
59                         }
60
61                         if (sb != null) {
62                                 sb.Append (name, start, name.Length - start);
63                                 return sb.ToString ();
64                         }
65                         else
66                                 return name;
67                 }
68         }
69 }