void GenerateFixupCallbacks ()
{
foreach (XmlMapping map in _fixupCallbacks)
{
bool isList = map is XmlMembersMapping;
string tname = !isList ? ((XmlTypeMapping)map).TypeData.CSharpFullName : "object[]";
WriteLine ("void " + GetFixupCallbackName (map) + " (object obfixup)");
WriteLineInd ("{");
WriteLine ("Fixup fixup = (Fixup)obfixup;");
WriteLine (tname + " source = (" + tname + ") fixup.Source;");
WriteLine ("string[] ids = fixup.Ids;");
WriteLine ("");
ClassMap cmap = (ClassMap)map.ObjectMap;
ICollection members = cmap.ElementMembers;
if (members != null) {
foreach (XmlTypeMapMember member in members)
{
WriteLineInd ("if (ids[" + member.Index + "] != null)");
string val = "GetTarget(ids[" + member.Index + "])";
if (!isList) val = GetCast (member.TypeData, val);
GenerateSetMemberValue (member, "source", val, isList);
Unindent ();
}
}
WriteLineUni ("}");
WriteLine ("");
}
}