public void VisitWriteHashSet(string variable, string writer, HashSetTypeNode node, TextBuilder builder) { builder.WriteLine("int size = {0}.Count;", variable); builder.WriteLine("{0}.Write(size);", writer); builder.WriteLine("foreach(var elem in {0})", variable); builder.LeftPar(); builder.Indent(); builder.WriteIndents(); VisitSerialization("elem", writer, node.Serialize, builder); builder.Write(";"); builder.NextLine(); builder.UnIndent(); builder.RightPar(); }
public void VisitReadHashSet(string variable, string reader, HashSetTypeNode node, TextBuilder builder) { string equalityComparer = GetEqualityComparer(node.Serialize.Type); builder.WriteLine("int size = {0}.ReadInt32();", reader); builder.WriteLine("{0} = new {1}({2});", variable, node.TypeName, equalityComparer); builder.WriteLine("for(int i = 0; i < size; ++i)"); builder.LeftPar(); builder.Indent(); builder.WriteIndents(); builder.Write("{0}.Add(", variable); VisitDeserialization(string.Format("default({0})", node.ParameterNodes[0].TypeName), reader, node.Serialize, builder); builder.Write(");"); builder.NextLine(); builder.UnIndent(); builder.RightPar(); }