+2004-06-18 Atsushi Enomoto <atsushi@ximian.com>
+
+ * CodeIdentifier.cs, CodeIdentifiers.cs, MapCodeGenerator.cs,
+ SerializationCodeGenerator.cs, SerializationSource.cs,
+ TypeTranslator.cs, XmlAttributeOverrides.cs, XmlCustomFormatter.cs,
+ XmlSerializationReader.cs, XmlSerializationWriter.cs,
+ XmlSerializer.cs, XmlTypeMapMemberElement.cs, XmlTypeMapping.cs
+ : Globalization fixes.
+ In XmlCustomFormatter.GenerateToXmlString() time was not
+ generated correctly.
+ Replaced all CRLF XmlAttributeOverrides.cs into LF.
+
2004-06-13 Gert Driesen <drieseng@users.sourceforge.net>
* XmlSerializationWriter.cs: changed signature of protected method
//
using System;
+using System.Globalization;
namespace System.Xml.Serialization {
public class CodeIdentifier {
public static string MakeCamel (string identifier)
{
string validIdentifier = MakeValid (identifier);
- return (Char.ToLower (validIdentifier[0]) + validIdentifier.Substring (1));
+ return (Char.ToLower (validIdentifier[0], CultureInfo.InvariantCulture) + validIdentifier.Substring (1));
}
public static string MakePascal (string identifier)
{
string validIdentifier = MakeValid (identifier);
- return (Char.ToUpper (validIdentifier[0]) + validIdentifier.Substring (1));
+ return (Char.ToUpper (validIdentifier[0], CultureInfo.InvariantCulture) + validIdentifier.Substring (1));
}
public static string MakeValid (string identifier)
\r
using System;\r
using System.Collections;\r
+using System.Globalization;\r
\r
namespace System.Xml.Serialization {\r
public class CodeIdentifiers {\r
int i = 1;\r
\r
while (IsInUse (uniqueIdentifier)) {\r
- uniqueIdentifier = String.Format ("{0}{1}", identifier, i.ToString ());\r
+ uniqueIdentifier = String.Format (CultureInfo.InvariantCulture, "{0}{1}", identifier, i);\r
i += 1;\r
}\r
\r
using System.CodeDom;
using System.Collections;
+using System.Globalization;
using System.Xml.Schema;
namespace System.Xml.Serialization {
// It must be an enumeration defined in the schema.
if (typeData.SchemaType != SchemaTypes.Enum)
throw new InvalidOperationException ("Type " + typeData.TypeName + " not supported");
-
- CodeFieldReferenceExpression fref = new CodeFieldReferenceExpression (new CodeTypeReferenceExpression (typeData.FullTypeName), defaultValue.ToString());
+
+ IFormattable defaultValueFormattable = defaultValue as IFormattable;
+ CodeFieldReferenceExpression fref = new CodeFieldReferenceExpression (new CodeTypeReferenceExpression (typeData.FullTypeName), defaultValueFormattable != null ? defaultValueFormattable.ToString(null, CultureInfo.InvariantCulture) : defaultValue.ToString ());
CodeAttributeArgument arg = new CodeAttributeArgument (fref);
AddCustomAttribute (codeField, "System.ComponentModel.DefaultValue", arg);
codeField.InitExpression = fref;
using System.Reflection;
using System.Xml.Serialization;
using System.Collections;
+using System.Globalization;
namespace System.Xml.Serialization
{
Unindent ();
}
else
- WriteLine ("default: return ((long)val).ToString();");
+ WriteLine ("default: return ((long)val).ToString(CultureInfo.InvariantCulture);");
WriteLineUni ("}");
}
WriteLineInd ("default:");
WriteLineInd ("try {");
- WriteLine ("return (" + typeMap.TypeFullName + ") Int64.Parse (" + val + ");");
+ WriteLine ("return (" + typeMap.TypeFullName + ") Int64.Parse (" + val + ", CultureInfo.InvariantCulture);");
WriteLineUni ("}");
WriteLineInd ("catch {");
WriteLine ("throw CreateUnknownConstantException (" + val + ", typeof(" + typeMap.TypeFullName + "));");
XmlQualifiedName qn = (XmlQualifiedName)ob;
return "new XmlQualifiedName (" + GetLiteral(qn.Name) + "," + GetLiteral(qn.Namespace) + ")";
}
- else return ob.ToString ();
+ else return (ob is IFormattable) ? ((IFormattable) ob).ToString (null, CultureInfo.InvariantCulture) : ob.ToString ();
}
void WriteLineInd (string code)
//
using System.Collections;
+using System.Globalization;
using System.Text;
namespace System.Xml.Serialization
this.literalFormat = literalFormat;
StringBuilder sb = new StringBuilder ();
- sb.Append (members.Length.ToString());
+ sb.Append (members.Length.ToString(CultureInfo.InvariantCulture));
foreach (XmlReflectionMember mem in members)
mem.AddKeyHash (sb);
{
if (val != def) {
sb.Append (n.ToString());
- sb.Append (val.Length.ToString());
+ sb.Append (val.Length.ToString(CultureInfo.InvariantCulture));
sb.Append (val);
}
}
{
if (val != def) {
sb.Append (n.ToString());
- sb.Append (val.ToString());
+ sb.Append (val.ToString(CultureInfo.InvariantCulture));
}
}
public static void AddField (StringBuilder sb, int n, Type val)
{
if (val != null) {
- sb.Append (n.ToString());
+ sb.Append (n.ToString(CultureInfo.InvariantCulture));
sb.Append (val.ToString());
}
}
using System;
using System.Collections;
+using System.Globalization;
namespace System.Xml.Serialization
{
public static string GetArrayName (string elemName)
{
- return "ArrayOf" + Char.ToUpper (elemName [0]) + elemName.Substring (1);
+ return "ArrayOf" + Char.ToUpper (elemName [0], CultureInfo.InvariantCulture) + elemName.Substring (1);
}
public static string GetArrayName (string elemName, int dimensions)
// (C) 2002 John Donagher
//
-using System;\r
-using System.Collections;\r
-\r
-namespace System.Xml.Serialization\r
-{\r
- /// <summary>\r
- /// Summary description for XmlAttributeOverrides.\r
- /// </summary>\r
- public class XmlAttributeOverrides\r
- {\r
- \r
- private Hashtable overrides;\r
-\r
- public XmlAttributeOverrides ()\r
- {\r
- overrides = new Hashtable();\r
- }\r
-\r
- public XmlAttributes this [Type type] \r
- {\r
- get { return this [type, string.Empty]; }\r
- }\r
-\r
- public XmlAttributes this [Type type, string member]\r
- {\r
- get \r
- {\r
- return (XmlAttributes) overrides[GetKey(type,member)];\r
- }\r
- }\r
-\r
- public void Add (Type type, XmlAttributes attributes) \r
- {\r
- Add(type, string.Empty, attributes);\r
- }\r
-\r
- public void Add (Type type, string member, XmlAttributes attributes) \r
- {\r
- if(overrides[GetKey(type, member)] != null)\r
- throw new Exception("The attributes for the given type and Member already exist in the collection");\r
- \r
- overrides.Add(GetKey(type,member), attributes);\r
- }\r
-\r
- private TypeMember GetKey(Type type, string member)\r
- {\r
- return new TypeMember(type, member);\r
- }\r
-\r
- internal void AddKeyHash (System.Text.StringBuilder sb)\r
- {\r
- sb.Append ("XAO ");\r
- foreach (DictionaryEntry entry in overrides)\r
- {\r
- XmlAttributes val = (XmlAttributes) entry.Value;\r
- sb.Append (entry.Key.ToString()).Append(' ');\r
- val.AddKeyHash (sb);\r
- }\r
- sb.Append ("|");\r
- }\r
- }\r
+using System;
+using System.Collections;
+using System.Globalization;
+
+namespace System.Xml.Serialization
+{
+ /// <summary>
+ /// Summary description for XmlAttributeOverrides.
+ /// </summary>
+ public class XmlAttributeOverrides
+ {
+
+ private Hashtable overrides;
+
+ public XmlAttributeOverrides ()
+ {
+ overrides = new Hashtable();
+ }
+
+ public XmlAttributes this [Type type]
+ {
+ get { return this [type, string.Empty]; }
+ }
+
+ public XmlAttributes this [Type type, string member]
+ {
+ get
+ {
+ return (XmlAttributes) overrides[GetKey(type,member)];
+ }
+ }
+
+ public void Add (Type type, XmlAttributes attributes)
+ {
+ Add(type, string.Empty, attributes);
+ }
+
+ public void Add (Type type, string member, XmlAttributes attributes)
+ {
+ if(overrides[GetKey(type, member)] != null)
+ throw new Exception("The attributes for the given type and Member already exist in the collection");
+
+ overrides.Add(GetKey(type,member), attributes);
+ }
+
+ private TypeMember GetKey(Type type, string member)
+ {
+ return new TypeMember(type, member);
+ }
+
+ internal void AddKeyHash (System.Text.StringBuilder sb)
+ {
+ sb.Append ("XAO ");
+ foreach (DictionaryEntry entry in overrides)
+ {
+ XmlAttributes val = (XmlAttributes) entry.Value;
+ IFormattable keyFormattable = entry.Key as IFormattable;
+ sb.Append (keyFormattable != null ? keyFormattable.ToString (null, CultureInfo.InvariantCulture) : entry.Key.ToString()).Append(' ');
+ val.AddKeyHash (sb);
+ }
+ sb.Append ("|");
+ }
+ }
}
//
// Author:
// Tim Coleman (tim@timcoleman.com)
-// Lluis Sanchez Gual (lluis@ximian.com)\r
+// Lluis Sanchez Gual (lluis@ximian.com)
//
// Copyright (C) Tim Coleman, 2002
//
if (value == null) return null;
StringBuilder output = new StringBuilder ();
foreach (byte val in value)
- output.Append (val.ToString ("X2"));
+ output.Append (val.ToString ("X2", CultureInfo.InvariantCulture));
return output.ToString ();
}
internal static string FromChar (char value)
{
- return ((int) value).ToString ();
+ return ((int) value).ToString (CultureInfo.InvariantCulture);
}
internal static string FromDate (DateTime value)
case "unsignedLong": return XmlConvert.ToString ((UInt64)value);
case "guid": return XmlConvert.ToString ((Guid)value);
case "base64Binary": return Convert.ToBase64String ((byte[])value);
- default: return value.ToString ();
+ default: return value is IFormattable ? ((IFormattable) value).ToString (null, CultureInfo.InvariantCulture) : value.ToString ();
}
}
switch (type.XmlType)
{
case "boolean": return "(" + value + "?\"true\":\"false\")";
- case "unsignedByte": return value + ".ToString()";
- case "char": return "((int)(" + value + ")).ToString()";
+ case "unsignedByte": return value + ".ToString(CultureInfo.InvariantCulture)";
+ case "char": return "((int)(" + value + ")).ToString(CultureInfo.InvariantCulture)";
case "dateTime": return value + ".ToString(\"yyyy-MM-ddTHH:mm:ss.fffffffzzz\", CultureInfo.InvariantCulture)";
case "date": return value + ".ToString(\"yyyy-MM-dd\", CultureInfo.InvariantCulture)";
- case "time": return value + ".ToString(\"HH:mm:ss.fffffffzzz\", CultureInfo.InvariantCulture";
+ case "time": return value + ".ToString(\"HH:mm:ss.fffffffzzz\", CultureInfo.InvariantCulture)";
case "decimal": return "XmlConvert.ToString (" + value + ")";
case "double": return "XmlConvert.ToString (" + value + ")";
- case "short": return value + ".ToString()";
- case "int": return value + ".ToString()";
- case "long": return value + ".ToString()";
- case "byte": return value + ".ToString()";
+ case "short": return value + ".ToString(CultureInfo.InvariantCulture)";
+ case "int": return value + ".ToString(CultureInfo.InvariantCulture)";
+ case "long": return value + ".ToString(CultureInfo.InvariantCulture)";
+ case "byte": return value + ".ToString(CultureInfo.InvariantCulture)";
case "float": return "XmlConvert.ToString (" + value + ")";
- case "unsignedShort": return value + ".ToString()";
- case "unsignedInt": return value + ".ToString()";
- case "unsignedLong": return value + ".ToString()";
+ case "unsignedShort": return value + ".ToString(CultureInfo.InvariantCulture)";
+ case "unsignedInt": return value + ".ToString(CultureInfo.InvariantCulture)";
+ case "unsignedLong": return value + ".ToString(CultureInfo.InvariantCulture)";
case "guid": return "XmlConvert.ToString (" + value + ")";
case "base64Binary": return "Convert.ToBase64String (" + value + ")";
case "NMTOKEN":
switch (type.XmlType)
{
case "boolean": return "XmlConvert.ToBoolean (" + value + ")";
- case "unsignedByte": return "byte.Parse(" + value + ")";
- case "char": return "(char)Int32.Parse (" + value + ")";
+ case "unsignedByte": return "byte.Parse (" + value + ", CultureInfo.InvariantCulture)";
+ case "char": return "(char)Int32.Parse (" + value + ", CultureInfo.InvariantCulture)";
case "dateTime": return "XmlConvert.ToDateTime (" + value + ")";
- case "date": return "DateTime.ParseExact (" + value + ", \"yyyy-MM-dd\", null)";
- case "time": return "DateTime.ParseExact (" + value + ", \"HH:mm:ss.fffffffzzz\", null)";
- case "decimal": return "Decimal.Parse (" + value + ")";
+ case "date": return "DateTime.ParseExact (" + value + ", \"yyyy-MM-dd\", CultureInfo.InvariantCulture)";
+ case "time": return "DateTime.ParseExact (" + value + ", \"HH:mm:ss.fffffffzzz\", CultureInfo.InvariantCulture)";
+ case "decimal": return "Decimal.Parse (" + value + ", CultureInfo.InvariantCulture)";
case "double": return "XmlConvert.ToDouble (" + value + ")";
- case "short": return "Int16.Parse (" + value + ")";
- case "int": return "Int32.Parse (" + value + ")";
- case "long": return "Int64.Parse (" + value + ")";
- case "byte": return "SByte.Parse (" + value + ")";
- case "float": return "XmlConvert.ToSingle (" + value + ")";
- case "unsignedShort": return "UInt16.Parse (" + value + ")";
- case "unsignedInt": return "UInt32.Parse (" + value + ")";
- case "unsignedLong": return "UInt64.Parse (" + value + ")";
+ case "short": return "Int16.Parse (" + value + ", CultureInfo.InvariantCulture)";
+ case "int": return "Int32.Parse (" + value + ", CultureInfo.InvariantCulture)";
+ case "long": return "Int64.Parse (" + value + ", CultureInfo.InvariantCulture)";
+ case "byte": return "SByte.Parse (" + value + ", CultureInfo.InvariantCulture)";
+ case "float": return "XmlConvert.ToSingle (" + value + ", CultureInfo.InvariantCulture)";
+ case "unsignedShort": return "UInt16.Parse (" + value + ", CultureInfo.InvariantCulture)";
+ case "unsignedInt": return "UInt32.Parse (" + value + ", CultureInfo.InvariantCulture)";
+ case "unsignedLong": return "UInt64.Parse (" + value + ", CultureInfo.InvariantCulture)";
case "guid": return "XmlConvert.ToGuid (" + value + ")";
case "base64Binary": return "Convert.FromBase64String (" + value + ")";
default: return value;
using System;
using System.Collections;
+using System.Globalization;
using System.Xml;
using System.Xml.Schema;
protected Exception CreateInvalidCastException (Type type, object value)
{
- string message = String.Format ("Cannot assign object of type {0} to an object of " +
+ string message = String.Format (CultureInfo.InvariantCulture, "Cannot assign object of type {0} to an object of " +
"type {1}.", value.GetType (), type);
return new InvalidCastException (message);
}
int i = qn.Name.LastIndexOf ('[');
string dim = qn.Name.Substring (i);
string itemType = qn.Name.Substring (0,i);
- int count = Int32.Parse (dim.Substring (1, dim.Length - 2));
+ int count = Int32.Parse (dim.Substring (1, dim.Length - 2), CultureInfo.InvariantCulture);
Array list;
using System;
using System.Collections;
+using System.Globalization;
using System.Text;
using System.Xml;
using System.Xml.Schema;
bool firstTime;
long lid = idGenerator.GetId (o, out firstTime);
- return String.Format ("id{0}", lid);
+ return String.Format (CultureInfo.InvariantCulture, "id{0}", lid);
}
string prefix = Writer.LookupPrefix (ns);
if (prefix == null)
{
- prefix = String.Format ("q{0}", ++qnameCount);
+ prefix = String.Format (CultureInfo.InvariantCulture, "q{0}", ++qnameCount);
WriteAttribute ("xmlns", prefix, null, ns);
}
return prefix;
using System;
using System.Threading;
using System.Collections;
+using System.Globalization;
using System.IO;
using System.Reflection;
using System.Xml;
generationThreshold = 50;
backgroundGeneration = true;
}
- else if (th.ToLower() == "no")
+ else if (th.ToLower(CultureInfo.InvariantCulture) == "no")
generationThreshold = -1;
else {
- generationThreshold = int.Parse (th);
+ generationThreshold = int.Parse (th, CultureInfo.InvariantCulture);
backgroundGeneration = (generationThreshold != 0);
if (generationThreshold < 1) generationThreshold = 1;
}
using System;
using System.Collections;
+using System.Globalization;
namespace System.Xml.Serialization
{
return (XmlTypeMapElementInfo) _elementInfo[0];
else if (_choiceMember != null)
{
- string choiceValue = GetValue (ob, _choiceMember).ToString();
+ object value = GetValue (ob, _choiceMember);
+ string choiceValue = value is IFormattable ? ((IFormattable) value).ToString (null, CultureInfo.InvariantCulture) : value.ToString();
foreach (XmlTypeMapElementInfo elem in _elementInfo)
if (elem.ChoiceValue == choiceValue) return elem;
}
using System.Xml;\r
using System;\r
using System.Collections;\r
+using System.Globalization;\r
\r
namespace System.Xml.Serialization\r
{\r
foreach (EnumMapMember mem in _members)\r
if (mem.EnumName == enumName) return mem.XmlName;\r
\r
- return Convert.ToInt64(enumValue).ToString();\r
+ return Convert.ToInt64(enumValue).ToString(CultureInfo.InvariantCulture);\r
}\r
\r
public string GetEnumName (string xmlName)\r
return null;\r
}\r
}\r
-}
+}\r