ProtocolBuffers.FieldCode.GenerateFieldTypeWriter C# (CSharp) Method

GenerateFieldTypeWriter() public static method

public static GenerateFieldTypeWriter ( Field f, string stream, string binaryWriter, string instance ) : string
f Field
stream string
binaryWriter string
instance string
return string
        public static string GenerateFieldTypeWriter(Field f, string stream, string binaryWriter, string instance)
        {
            if (f.OptionCodeType != null) {
                switch (f.OptionCodeType) {
                case "DateTime":
                case "TimeSpan":
                    return "ProtocolParser.WriteUInt64 (" + stream + ", (ulong)" + instance + ".Ticks);\n";
                default: //enum
                    break;
                }
            }

            switch (f.ProtoType) {
            case ProtoTypes.Double:
            case ProtoTypes.Float:
            case ProtoTypes.Fixed32:
            case ProtoTypes.Fixed64:
            case ProtoTypes.Sfixed32:
            case ProtoTypes.Sfixed64:
                return binaryWriter + ".Write(" + instance + ");\n";
            case ProtoTypes.Int32:
                return "ProtocolParser.WriteUInt32(" + stream + ", (uint)" + instance + ");\n";
            case ProtoTypes.Int64:
                return "ProtocolParser.WriteUInt64(" + stream + ", (ulong)" + instance + ");\n";
            case ProtoTypes.Uint32:
                return "ProtocolParser.WriteUInt32(" + stream + ", " + instance + ");\n";
            case ProtoTypes.Uint64:
                return "ProtocolParser.WriteUInt64(" + stream + ", " + instance + ");\n";
            case ProtoTypes.Sint32:
                return "ProtocolParser.WriteSInt32(" + stream + ", " + instance + ");\n";
            case ProtoTypes.Sint64:
                return "ProtocolParser.WriteSInt64(" + stream + ", " + instance + ");\n";
            case ProtoTypes.Bool:
                return "ProtocolParser.WriteBool(" + stream + ", " + instance + ");\n";
            case ProtoTypes.String:
                return "ProtocolParser.WriteString(" + stream + ", " + instance + ");\n";
            case ProtoTypes.Bytes:
                return "ProtocolParser.WriteBytes(" + stream + ", " + instance + ");\n";
            case ProtoTypes.Enum:
                return "ProtocolParser.WriteUInt32(" + stream + ", (uint)" + instance + ");\n";
            case ProtoTypes.Message:
                string code = "";
                code += "using(MemoryStream ms" + f.ID + " = new MemoryStream())\n";
                code += "{\n";
                code += "	" + f.FullPath + ".Serialize(ms" + f.ID + ", " + instance + ");\n";
                code += "	ProtocolParser.WriteBytes(" + stream + ", ms" + f.ID + ".ToArray());\n";
                code += "}\n";
                return code;
            default:
                throw new NotImplementedException ();
            }
        }