public void GenCode_CS_Head(CodeGenerator gen) { GType tp = GTypeManager.Instance.GetType(this.Type); if (this.Type.Equals(GType.Array)) { GType subTp = GTypeManager.Instance.GetType(this.SubTypes[0]); gen.Line("public {0}[] {1};", subTp.GetCSName(), this.Name); } else if (this.Type.Equals(GType.List)) { GType subTp = GTypeManager.Instance.GetType(this.SubTypes[0]); gen.Line("public List<{0}> {1};", subTp.GetCSName(), this.Name); } else if (this.Type.Equals(GType.Map)) { GType subTp1 = GTypeManager.Instance.GetType(this.SubTypes[0]); GType subTp2 = GTypeManager.Instance.GetType(this.SubTypes[1]); gen.Line("public Dictionary<{0},{1}> {2};", subTp1.GetCSName(), subTp2.GetCSName(), this.Name); } else { gen.Line("public {0} {1};", tp.GetCSName(), this.Name); } }
public override void GenCode_CS_FieldDeserialize(CodeGenerator gen, string left, string varName = null, string[] subTypes = null) { if (varName == null) { varName = left; } GType subTp1 = GTypeManager.Instance.GetType(subTypes[0]); GType subTp2 = GTypeManager.Instance.GetType(subTypes[1]); gen.Line("int len_{0} = reader.ReadInt32();", varName); gen.Line("{0} = new Dictionary<{1}, {2}>();", varName, subTp1.GetCSName(), subTp2.GetCSName()); gen.Line("for (int i_{0} = 0; i_{0} < len_{0}; ++i_{0})", varName); gen.AddIndent("{"); subTp1.GenCode_CS_FieldDeserialize(gen, string.Format("{0} key", subTp1.GetCSName()), "key"); subTp2.GenCode_CS_FieldDeserialize(gen, string.Format("{0} val", subTp2.GetCSName()), "val"); gen.Line("{0}.Add(key, val);", varName); gen.RemIndent("}"); }
public override void GenCode_CS_FieldDeserialize(CodeGenerator gen, string left, string varName = null, string[] subTypes = null) { if (varName == null) { varName = left; } GType subTp1 = GTypeManager.Instance.GetType(subTypes[0]); gen.Line("int len_{0} = reader.ReadInt32();", varName); if (isList) { gen.Line("{0} = new List<{1}>();", left, subTp1.GetCSName()); } else { gen.Line("{0} = new {1}[len_{0}];", left, subTp1.GetCSName()); } gen.Line("for (int i_{0} = 0; i_{0} < len_{0}; ++i_{0})", varName); gen.AddIndent("{"); subTp1.GenCode_CS_FieldDeserialize(gen, string.Format("{0}[i_{0}]", varName)); gen.RemIndent("}"); }