2 // System.Globalization.TextInfo.cs
5 // Dick Porter (dick@ximian.com)
6 // Duncan Mak (duncan@ximian.com)
8 // (C) 2002 Ximian, Inc.
11 // Missing the various code page mappings.
12 // Missing the OnDeserialization implementation.
14 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
16 // Permission is hereby granted, free of charge, to any person obtaining
17 // a copy of this software and associated documentation files (the
18 // "Software"), to deal in the Software without restriction, including
19 // without limitation the rights to use, copy, modify, merge, publish,
20 // distribute, sublicense, and/or sell copies of the Software, and to
21 // permit persons to whom the Software is furnished to do so, subject to
22 // the following conditions:
24 // The above copyright notice and this permission notice shall be
25 // included in all copies or substantial portions of the Software.
27 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
28 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
29 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
30 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
31 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
32 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
33 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
36 using System.Globalization;
37 using System.Runtime.Serialization;
38 using System.Runtime.InteropServices;
40 namespace System.Globalization {
43 public class TextInfo: IDeserializationCallback
46 [StructLayout (LayoutKind.Sequential)]
57 bool m_useUserOverride;
60 readonly CultureInfo ci;
65 internal unsafe TextInfo (CultureInfo ci, int lcid, void* data)
67 this.m_win32LangID = lcid;
70 this.data = *(Data*) data;
72 this.data = new Data ();
73 this.data.list_sep = (byte) '.';
77 public virtual int ANSICodePage
84 public virtual int EBCDICCodePage
91 public virtual string ListSeparator
95 return ((char) data.list_sep).ToString ();
99 public virtual int MacCodePage
106 public virtual int OEMCodePage
113 public override bool Equals (object obj)
117 TextInfo other = obj as TextInfo;
120 if (other.m_win32LangID != m_win32LangID)
127 public override int GetHashCode()
129 return (m_win32LangID);
132 public virtual char ToLower(char c)
134 return Char.ToLower (c);
137 public virtual string ToLower(string str)
140 throw new ArgumentNullException("string is null");
142 return str.ToLower (ci);
145 public override string ToString()
147 return "TextInfo - " + m_win32LangID;
150 public string ToTitleCase (string str)
153 throw new ArgumentNullException("string is null");
155 Text.StringBuilder s = new Text.StringBuilder ();
156 bool space_seen = true;
158 for (int i = 0; i < str.Length; i ++){
160 if (Char.IsLetter (c)){
162 s.Append (Char.ToUpper (c, ci));
164 s.Append (Char.ToLower (c, ci));
168 if (Char.IsWhiteSpace (c))
173 return s.ToString ();
176 public virtual char ToUpper (char c)
178 return Char.ToUpper (c, ci);
181 public virtual string ToUpper (string str)
184 throw new ArgumentNullException("string is null");
186 return str.ToUpper (ci);
189 /* IDeserialization interface */
191 void IDeserializationCallback.OnDeserialization(object sender)