| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- // mono writer-method-gen.exe > System.Xml/XmlDictionaryWriterAutoGen.cs
- using System;
- using System.Globalization;
- using System.CodeDom;
- using System.CodeDom.Compiler;
- using Microsoft.CSharp;
- public class Generator
- {
- public static void Main ()
- {
- Console.Out.NewLine = "\n";
- Type [] types = new Type [] {
- typeof (bool), typeof (DateTime), typeof (decimal), typeof (double),
- typeof (Guid), typeof (short), typeof (int), typeof (long), typeof (float), typeof (TimeSpan) };
- Console.WriteLine (@"
- using System;
- namespace System.Xml
- {
- public abstract partial class XmlDictionaryWriter : XmlWriter
- {
- void CheckWriteArrayArguments (Array array, int offset, int length)
- {
- if (array == null)
- throw new ArgumentNullException (""array"");
- if (offset < 0)
- throw new ArgumentOutOfRangeException (""offset is negative"");
- if (offset > array.Length)
- throw new ArgumentOutOfRangeException (""offset exceeds the length of the destination array"");
- if (length < 0)
- throw new ArgumentOutOfRangeException (""length is negative"");
- if (length > array.Length - offset)
- throw new ArgumentOutOfRangeException (""length + offset exceeds the length of the destination array"");
- }
- void CheckDictionaryStringArgs (XmlDictionaryString localName, XmlDictionaryString namespaceUri)
- {
- if (localName == null)
- throw new ArgumentNullException (""localName"");
- if (namespaceUri == null)
- throw new ArgumentNullException (""namespaceUri"");
- }
- ");
- foreach (Type type in types) {
- Console.WriteLine (@"
- public virtual void WriteArray (string prefix, XmlDictionaryString localName, XmlDictionaryString namespaceUri, {0} [] array, int offset, int length)
- {{
- CheckDictionaryStringArgs (localName, namespaceUri);
- WriteArray (prefix, localName.Value, namespaceUri.Value, array, offset, length);
- }}
- public virtual void WriteArray (string prefix, string localName, string namespaceUri, {0} [] array, int offset, int length)
- {{
- CheckWriteArrayArguments (array, offset, length);
- for (int i = 0; i < length; i++) {{
- WriteStartElement (prefix, localName, namespaceUri);
- WriteValue (array [offset + i]);
- WriteEndElement ();
- }}
- }}", ToCSharp (type), type.Name);
- }
- Console.WriteLine (@"
- }
- }");
- }
- static CodeDomProvider cs = new CSharpCodeProvider ();
- static string ToCSharp (Type type)
- {
- string r = cs.GetTypeOutput (new CodeTypeReference (type));
- return r != type.FullName ? r : type.Name;
- }
- }
|