コード例 #1
0
ファイル: ProtoParseGen.cs プロジェクト: wujiangu/wanshiwu0.1
    internal static ProtoBuf.DataFormat GetDataFromat(google.protobuf.FieldDescriptorProto.Type type)
    {
        switch (type)
        {
        /*
         * TYPE_DOUBLE' or type='TYPE_FLOAT'
         *     or type='TYPE_FIXED32' or type='TYPE_FIXED64'
         *     or type='TYPE_SFIXED32' or type='TYPE_SFIXED64'">FixedSize</xsl:when>
         */
        case FieldDescriptorProto.Type.TYPE_DOUBLE:
        case FieldDescriptorProto.Type.TYPE_FLOAT:
        case FieldDescriptorProto.Type.TYPE_FIXED32:
        case FieldDescriptorProto.Type.TYPE_FIXED64:
        case FieldDescriptorProto.Type.TYPE_SFIXED32:
        case FieldDescriptorProto.Type.TYPE_SFIXED64:
            return(ProtoBuf.DataFormat.FixedSize);

        // <xsl:when test="type='TYPE_GROUP'">Group</xsl:when>
        case FieldDescriptorProto.Type.TYPE_GROUP:
            return(ProtoBuf.DataFormat.Group);

        /*
         * sl:when test="not(type) or type='TYPE_INT32' or type='TYPE_INT64'
         * or type='TYPE_UINT32' or type='TYPE_UINT64'
         * or type='TYPE_ENUM'">TwosComplement</xsl:when>
         */
        case FieldDescriptorProto.Type.TYPE_INT32:
        case FieldDescriptorProto.Type.TYPE_INT64:
        case FieldDescriptorProto.Type.TYPE_UINT32:
        case FieldDescriptorProto.Type.TYPE_UINT64:
        case FieldDescriptorProto.Type.TYPE_ENUM:
        default:
            return(ProtoBuf.DataFormat.TwosComplement);

        // <xsl:when test="type='TYPE_SINT32' or type='TYPE_SINT64'">ZigZag</xsl:when>
        case FieldDescriptorProto.Type.TYPE_SINT32:
        case FieldDescriptorProto.Type.TYPE_SINT64:
            return(ProtoBuf.DataFormat.ZigZag);
        }
    }
コード例 #2
0
ファイル: ProtoParseGen.cs プロジェクト: wujiangu/wanshiwu0.1
    static string GetFieldParseByType(google.protobuf.FieldDescriptorProto.Type type, string typeName)
    {
        //ProtoBuf.ProtoReader source;
        switch (type)
        {
        case FieldDescriptorProto.Type.TYPE_DOUBLE:
            return("source.ReadDouble()");

            break;

        case FieldDescriptorProto.Type.TYPE_FLOAT:
            return("source.ReadSingle()");

            break;

        case FieldDescriptorProto.Type.TYPE_INT64:
            return("source.ReadInt64()");

            break;

        case FieldDescriptorProto.Type.TYPE_UINT64:
            return("source.ReadUInt64()");

            break;

        case FieldDescriptorProto.Type.TYPE_INT32:
            return("source.ReadInt32()");

            break;

        case FieldDescriptorProto.Type.TYPE_FIXED64:
            return("source.ReadUInt64()");

            break;

        case FieldDescriptorProto.Type.TYPE_FIXED32:
            return("source.ReadUInt32()");

            break;

        case FieldDescriptorProto.Type.TYPE_BOOL:
            return("source.ReadBoolean()");

            break;

        case FieldDescriptorProto.Type.TYPE_STRING:
            return("source.ReadString()");

            break;

        case FieldDescriptorProto.Type.TYPE_GROUP:
            throw new ProtoGenException("FieldDescriptorProto.Type.TYPE_GROUP do not Support Now! Please Check!");
            return("");

            break;

        case FieldDescriptorProto.Type.TYPE_BYTES:
            //ProtoReader.AppendBytes(overwriteList ? null : (byte[])value, source);
            return("ProtoReader.AppendBytes(null, source)");

            break;

        case FieldDescriptorProto.Type.TYPE_UINT32:
            return("source.ReadUInt32()");

            break;

        case FieldDescriptorProto.Type.TYPE_ENUM:
            //return "";

            /*builder.AppendFormat(@"
             * int wireValue = source.ReadInt32();
             * switch(wireValue){
             * ");
             * google.protobuf.EnumDescriptorProto enumProto = FindEnum(typeName,message);
             * foreach(var item in enumProto.value)
             * {
             *  builder.AppendFormat("case {0} : {1} = {2} break;\n",item.number,fieldName,typeName + item.name);
             * }
             * builder.AppendFormat("}");
             * return "";
             */
            string name = typeName.Substring(1);
            return("(" + name + ")" + "source.ReadInt32()");

            break;

        case FieldDescriptorProto.Type.TYPE_SFIXED32:
            return("source.ReadInt32()");

            break;

        case FieldDescriptorProto.Type.TYPE_SFIXED64:
            return("source.ReadInt64()");

            break;

        case FieldDescriptorProto.Type.TYPE_SINT32:
            return("source.ReadInt32()");

            break;

        case FieldDescriptorProto.Type.TYPE_SINT64:
            return("source.ReadInt64()");

            break;
        }

        throw new ProtoGenException("Do not Support Now! Please Check!");
        return("");
    }
コード例 #3
0
ファイル: ProtoParseGen.cs プロジェクト: wujiangu/wanshiwu0.1
    internal static ProtoBuf.WireType TryGetWireType(google.protobuf.FieldDescriptorProto.Type type)
    {
        switch (type)
        {
        /*
         * else
         * { // enum is fine for adding as a meta-type
         *  defaultWireType = WireType.None;
         *  return null;
         * }
         */
        case FieldDescriptorProto.Type.TYPE_ENUM:
            return(ProtoBuf.WireType.Variant);

        case FieldDescriptorProto.Type.TYPE_INT32:
        case FieldDescriptorProto.Type.TYPE_UINT32:
        case FieldDescriptorProto.Type.TYPE_FIXED32:
            return(GetIntWireType(GetDataFromat(type), 32));

        case FieldDescriptorProto.Type.TYPE_INT64:
        case FieldDescriptorProto.Type.TYPE_UINT64:
        case FieldDescriptorProto.Type.TYPE_FIXED64:
            return(GetIntWireType(GetDataFromat(type), 64));

        case FieldDescriptorProto.Type.TYPE_STRING:
            return(ProtoBuf.WireType.String);

        case FieldDescriptorProto.Type.TYPE_SINT32:
        case FieldDescriptorProto.Type.TYPE_SFIXED32:
            return(GetIntWireType(GetDataFromat(type), 32));

        case FieldDescriptorProto.Type.TYPE_SINT64:
        case FieldDescriptorProto.Type.TYPE_SFIXED64:
            return(GetIntWireType(GetDataFromat(type), 64));

        case FieldDescriptorProto.Type.TYPE_FLOAT:
            return(ProtoBuf.WireType.Fixed32);

        case FieldDescriptorProto.Type.TYPE_DOUBLE:
            return(ProtoBuf.WireType.Fixed64);

        case FieldDescriptorProto.Type.TYPE_BOOL:
            return(ProtoBuf.WireType.Variant);

        //case ProtoTypeCode.DateTime:
        //    return "ProtoBuf.WireType.Variant";
        //case ProtoTypeCode.Decimal:
        //    defaultWireType = WireType.String;
        //    return new DecimalSerializer(model);
        //case FieldDescriptorProto.Type.TYPE_INT32:
        //    defaultWireType = GetIntWireType(dataFormat, 32);
        //    return new ByteSerializer(model);
        //case ProtoTypeCode.SByte:
        //    defaultWireType = GetIntWireType(dataFormat, 32);
        //    return new SByteSerializer(model);
        //case ProtoTypeCode.Char:
        //    defaultWireType = WireType.Variant;
        //    return new CharSerializer(model);
        //case FieldDescriptorProto.Type.TYPE_INT16:
        //    return GetIntWireType(GetDataFromat(type), 32);
        //    return new Int16Serializer(model);
        //case ProtoTypeCode.UInt16:
        //     defaultWireType = GetIntWireType(dataFormat, 32);
        //    return new UInt16Serializer(model);
        //case ProtoTypeCode.TimeSpan:
        //    defaultWireType = GetDateTimeWireType(dataFormat);
        //    return new TimeSpanSerializer(model);
        //case ProtoTypeCode.Guid:
        //   defaultWireType = WireType.String;
        //    return new GuidSerializer(model);
        //ase ProtoTypeCode.Uri:
        //    defaultWireType = WireType.String;
        //    return new StringSerializer(model);
        //case ProtoTypeCode.ByteArray:
        //    defaultWireType = WireType.String;
        //    return new BlobSerializer(model, overwriteList);
        case FieldDescriptorProto.Type.TYPE_MESSAGE:
            return(ProtoBuf.WireType.String);
        }
        return(ProtoBuf.WireType.Variant);
    }