static string GenerateWriter(Message m)
{
string code = m.OptionAccess + " static void Serialize(Stream stream, " + m.CSType + " instance)\n";
code += "{\n";
if (m.OptionTriggers) {
code += " instance.BeforeSerialize();\n";
code += "\n";
}
if (GenerateBinaryWriter (m))
code += " BinaryWriter bw = new BinaryWriter(stream);\n";
foreach (Field f in m.Fields.Values) {
code += Code.Indent (FieldCode.GenerateFieldWriter (m, f));
}
code += "}\n\n";
code += m.OptionAccess + " static byte[] SerializeToBytes(" + m.CSType + " instance)\n";
code += "{\n";
code += " using(MemoryStream ms = new MemoryStream())\n";
code += " {\n";
code += " Serialize(ms, instance);\n";
code += " return ms.ToArray();\n";
code += " }\n";
code += "}\n";
return code;
}