2002-07-24 Tim Coleman <tim@timcoleman.com>
[mono.git] / mcs / class / System.XML / System.Xml.Serialization / CodeIdentifiers.cs
1 // \r
2 // System.Xml.Serialization.CodeIdentifiers \r
3 //\r
4 // Author:\r
5 //   Tim Coleman (tim@timcoleman.com)\r
6 //\r
7 // Copyright (C) Tim Coleman, 2002\r
8 //\r
9 \r
10 using System;\r
11 using System.Collections;\r
12 \r
13 namespace System.Xml.Serialization {\r
14         public class CodeIdentifiers {\r
15 \r
16                 #region Fields\r
17 \r
18                 bool useCamelCasing;\r
19                 static Hashtable table = new Hashtable ();\r
20 \r
21                 #endregion\r
22 \r
23                 #region Constructors\r
24 \r
25                 public CodeIdentifiers ()\r
26                 {\r
27                 }\r
28 \r
29                 #endregion // Constructors\r
30 \r
31                 #region Properties\r
32 \r
33                 public bool UseCamelCasing {\r
34                         get { return useCamelCasing; }\r
35                         set { useCamelCasing = value; }\r
36                 }\r
37 \r
38                 #endregion // Properties\r
39 \r
40                 #region Methods\r
41 \r
42                 public void Add (string identifier, object value)\r
43                 {\r
44                         table.Add (identifier, value);\r
45                 }\r
46 \r
47                 [MonoTODO ("What does this do?")]\r
48                 public void AddReserved (string identifier)\r
49                 {\r
50                         throw new NotImplementedException ();\r
51                 }\r
52 \r
53                 public void AddUnique (string identifier, object value)\r
54                 {\r
55                         Add (MakeUnique (identifier), value);\r
56                 }\r
57 \r
58                 public void Clear ()\r
59                 {\r
60                         table.Clear ();\r
61                 }\r
62 \r
63                 public bool IsInUse (string identifier)\r
64                 {\r
65                         return (table.ContainsKey (identifier));\r
66                 }\r
67 \r
68                 public string MakeRightCase (string identifier)\r
69                 {\r
70                         if (UseCamelCasing)\r
71                                 return CodeIdentifier.MakeCamel (identifier);\r
72                         else\r
73                                 return CodeIdentifier.MakePascal (identifier);\r
74                 }\r
75 \r
76                 public string MakeUnique (string identifier)\r
77                 {\r
78                         string uniqueIdentifier = identifier;\r
79                         int i = 1;\r
80 \r
81                         while (IsInUse (uniqueIdentifier)) {\r
82                                 uniqueIdentifier = String.Format ("{0}{1}", identifier, i.ToString ());\r
83                                 i += 1;\r
84                         }\r
85 \r
86                         return uniqueIdentifier;\r
87                 }\r
88 \r
89                 public void Remove (string identifier)\r
90                 {\r
91                         table.Remove (identifier);\r
92                 }\r
93 \r
94                 [MonoTODO ("What does this do?")]\r
95                 public void RemoveReserved (string identifier)\r
96                 {\r
97                         throw new NotImplementedException ();\r
98                 }\r
99 \r
100                 [MonoTODO ("Need to determine how to do the conversion.")]\r
101                 public object ToArray (Type type)\r
102                 {\r
103                         throw new NotImplementedException ();\r
104                 }\r
105 \r
106                 #endregion // Methods\r
107         }\r
108 }\r