void GenerateWriteRoot ()
{
WriteLine ("public void " +_result.WriteMethodName + " (object o)");
WriteLineInd ("{");
WriteLine ("WriteStartDocument ();");
if (_typeMap is XmlTypeMapping)
{
WriteLine (GetRootTypeName () + " ob = (" + GetRootTypeName () + ") o;");
XmlTypeMapping mp = (XmlTypeMapping) _typeMap;
if (mp.TypeData.SchemaType == SchemaTypes.Class || mp.TypeData.SchemaType == SchemaTypes.Array)
WriteLine ("TopLevelElement ();");
if (_format == SerializationFormat.Literal) {
WriteLine (GetWriteObjectName (mp) + " (ob, " + GetLiteral(mp.ElementName) + ", " + GetLiteral(mp.Namespace) + ", true, false, true);");
}
else {
RegisterReferencingMap (mp);
WriteLine ("WritePotentiallyReferencingElement (" + GetLiteral(mp.ElementName) + ", " + GetLiteral(mp.Namespace) + ", ob, " + GetTypeOf(mp.TypeData) + ", true, false);");
}
}
else if (_typeMap is XmlMembersMapping) {
WriteLine ("object[] pars = (object[]) o;");
GenerateWriteMessage ((XmlMembersMapping) _typeMap);
}
else
throw new InvalidOperationException ("Unknown type map");
if (_format == SerializationFormat.Encoded)
WriteLine ("WriteReferencedElements ();");
WriteLineUni ("}");
WriteLine ("");
}