ProtocolBuffers.FieldCode.GenerateFieldReader C# (CSharp) Method

GenerateFieldReader() public static method

public static GenerateFieldReader ( Field f ) : string
f Field
return string
        public static string GenerateFieldReader(Field f)
        {
            string code = "";
            if (f.Rule == FieldRule.Repeated) {
                if (f.OptionPacked == true) {
                    code += "using(MemoryStream ms" + f.ID + " = new MemoryStream(ProtocolParser.ReadBytes(stream)))\n";
                    code += "{\n";
                    code += "	while(true)\n";
                    code += "	{\n";
                    code += "		if(ms" + f.ID + ".Position == ms" + f.ID + ".Length)\n";
                    code += "			break;\n";
                    code += "		instance." + f.Name + ".Add(" + GenerateFieldTypeReader (f, "ms" + f.ID, "br", null) + ");\n";
                    code += "	}\n";
                    code += "}\n";
                } else {
                    code += "instance." + f.Name + ".Add(" + GenerateFieldTypeReader (f, "stream", "br", null) + ");\n";
                }
            } else {
                if (f.ProtoType == ProtoTypes.Message) {
                    code += "if(instance." + f.Name + " == null)\n";
                    code += "	instance." + f.Name + " = " + GenerateFieldTypeReader (f, "stream", "br", null) + ";\n";
                    code += "else\n";
                    code += "	instance." + f.Name + " = " + GenerateFieldTypeReader (f, "stream", "br", "instance." + f.Name) + ";";
                } else
                    code += "instance." + f.Name + " = " + GenerateFieldTypeReader (f, "stream", "br", "instance." + f.Name) + ";";
            }
            return code;
        }