コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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("}");
        }
コード例 #3
0
        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("}");
        }