示例#1
0
        static public WireFormat.WireType GetWireType(FieldDescriptorProto.Type _type)
        {
            switch (_type)
            {
            case FieldDescriptorProto.Type.TypeBool:
            case FieldDescriptorProto.Type.TypeFixed32:
            case FieldDescriptorProto.Type.TypeFixed64:
            case FieldDescriptorProto.Type.TypeInt32:
            case FieldDescriptorProto.Type.TypeInt64:
            case FieldDescriptorProto.Type.TypeUint32:
            case FieldDescriptorProto.Type.TypeUint64:
            case FieldDescriptorProto.Type.TypeSint32:
            case FieldDescriptorProto.Type.TypeSint64:
            case FieldDescriptorProto.Type.TypeSfixed32:
            case FieldDescriptorProto.Type.TypeSfixed64:
            case FieldDescriptorProto.Type.TypeEnum:
                return(WireFormat.WireType.Varint);

            case FieldDescriptorProto.Type.TypeFloat:
                return(WireFormat.WireType.Fixed32);

            case FieldDescriptorProto.Type.TypeDouble:
                return(WireFormat.WireType.Fixed64);

            case FieldDescriptorProto.Type.TypeBytes:
            case FieldDescriptorProto.Type.TypeString:
                return(WireFormat.WireType.LengthDelimited);

            case FieldDescriptorProto.Type.TypeMessage:
                return(WireFormat.WireType.LengthDelimited);
            }

            return(WireFormat.WireType.Varint);
        }
示例#2
0
            internal string GetStorage(FieldDescriptorProto.Type type, string typeName)
            {
                switch (type)
                {
                case FieldDescriptorProto.Type.TypeBool:
                    return("Boolean");

                case FieldDescriptorProto.Type.TypeInt32:
                case FieldDescriptorProto.Type.TypeSfixed32:
                case FieldDescriptorProto.Type.TypeSint32:
                case FieldDescriptorProto.Type.TypeFixed32:
                case FieldDescriptorProto.Type.TypeEnum:
                    return("Int32");

                case FieldDescriptorProto.Type.TypeFloat:
                    return("Single");

                case FieldDescriptorProto.Type.TypeUint32:
                    return("UInt32");

                case FieldDescriptorProto.Type.TypeDouble:
                    return("Double");

                case FieldDescriptorProto.Type.TypeFixed64:
                case FieldDescriptorProto.Type.TypeInt64:
                case FieldDescriptorProto.Type.TypeSfixed64:
                case FieldDescriptorProto.Type.TypeSint64:
                    return("Int64");

                case FieldDescriptorProto.Type.TypeUint64:
                    return("UInt64");

                case FieldDescriptorProto.Type.TypeMessage:
                    switch (typeName)
                    {
                    case ".google.protobuf.Timestamp":
                        return("DateTime");

                    case ".google.protobuf.Duration":
                        return("TimeSpan");

                    case ".bcl.Guid":
                        return("Guid");

                    default:
                        return("Object");
                    }

                default:
                    return("Object");
                }
            }
示例#3
0
            private void AccountFor(FieldDescriptorProto.Type type, string typeName)
            {
                switch (type)
                {
                case FieldDescriptorProto.Type.TypeBool:
                case FieldDescriptorProto.Type.TypeEnum:
                case FieldDescriptorProto.Type.TypeFixed32:
                case FieldDescriptorProto.Type.TypeFloat:
                case FieldDescriptorProto.Type.TypeInt32:
                case FieldDescriptorProto.Type.TypeSfixed32:
                case FieldDescriptorProto.Type.TypeSint32:
                case FieldDescriptorProto.Type.TypeUint32:
                    Count32++;
                    break;

                case FieldDescriptorProto.Type.TypeDouble:
                case FieldDescriptorProto.Type.TypeFixed64:
                case FieldDescriptorProto.Type.TypeInt64:
                case FieldDescriptorProto.Type.TypeSfixed64:
                case FieldDescriptorProto.Type.TypeSint64:
                case FieldDescriptorProto.Type.TypeUint64:
                    Count32++;
                    Count64++;
                    break;

                case FieldDescriptorProto.Type.TypeMessage:
                    switch (typeName)
                    {
                    case ".google.protobuf.Timestamp":
                    case ".google.protobuf.Duration":
                        Count64++;
                        break;

                    case ".bcl.Guid":
                        Count128++;
                        break;

                    default:
                        CountRef++;
                        break;
                    }
                    break;

                default:
                    CountRef++;
                    break;
                }
            }
        string GetStrFromFieldType(FieldDescriptorProto.Type field)
        {
            string reset_line = "";

            switch (field)
            {
            case FieldDescriptorProto.Type.TypeBool:
                reset_line = " = false;";
                break;

            case FieldDescriptorProto.Type.TypeEnum:
            case FieldDescriptorProto.Type.TypeDouble:
            case FieldDescriptorProto.Type.TypeBytes:
            case FieldDescriptorProto.Type.TypeInt32:
            case FieldDescriptorProto.Type.TypeSfixed32:
            case FieldDescriptorProto.Type.TypeSint32:
            case FieldDescriptorProto.Type.TypeFixed32:
            case FieldDescriptorProto.Type.TypeUint32:
            case FieldDescriptorProto.Type.TypeFixed64:
            case FieldDescriptorProto.Type.TypeInt64:
            case FieldDescriptorProto.Type.TypeSfixed64:
            case FieldDescriptorProto.Type.TypeSint64:
            case FieldDescriptorProto.Type.TypeUint64:
                reset_line = " = 0;";
                break;

            case FieldDescriptorProto.Type.TypeFloat:
                reset_line = " = 0f;";
                break;

            case FieldDescriptorProto.Type.TypeString:
                reset_line = " = \"\";";
                break;

            case FieldDescriptorProto.Type.TypeGroup:
            case FieldDescriptorProto.Type.TypeMessage:
                reset_line = ".ClearData();";
                break;

            default:
                reset_line = "";
                break;
            }
            return(reset_line);
        }
示例#5
0
        protected string WriteString(FieldDescriptorProto.Type _type, string _name)
        {
            string ret = "";

            switch (_type)
            {
            case FieldDescriptorProto.Type.TypeSfixed32:
                ret = $"output.WriteSFixed32({_name});";
                break;

            case FieldDescriptorProto.Type.TypeFixed32:
                ret = $"output.WriteFixed32({_name});";
                break;

            case FieldDescriptorProto.Type.TypeSfixed64:
                ret = $"output.WriteSFixed64({_name});";
                break;

            case FieldDescriptorProto.Type.TypeFixed64:
                ret = $"output.WriteFixed64({_name});";
                break;

            case FieldDescriptorProto.Type.TypeInt32:
                ret = $"output.WriteInt32({_name});";
                break;

            case FieldDescriptorProto.Type.TypeInt64:
                ret = $"output.WriteInt64({_name});";
                break;

            case FieldDescriptorProto.Type.TypeSint32:
                ret = $"output.WriteSInt32({_name});";
                break;

            case FieldDescriptorProto.Type.TypeSint64:
                ret = $"output.WriteSInt64({_name});";
                break;

            case FieldDescriptorProto.Type.TypeUint32:
                ret = $"output.WriteUInt32({_name});";
                break;

            case FieldDescriptorProto.Type.TypeUint64:
                ret = $"output.WriteUInt64({_name});";
                break;


            case FieldDescriptorProto.Type.TypeFloat:
                ret = $"output.WriteFloat({_name});";
                break;

            case FieldDescriptorProto.Type.TypeDouble:
                ret = $"output.WriteDouble({_name});";
                break;

            case FieldDescriptorProto.Type.TypeBool:
                ret = $"output.WriteBool({_name});";
                break;

            case FieldDescriptorProto.Type.TypeEnum:
                ret = $"output.WriteEnum((int){_name});";
                break;

            case FieldDescriptorProto.Type.TypeMessage:
                ret = $"output.WriteBytes(Google.Protobuf.ByteString.CopyFrom({_name}.GetBytes()));";
                break;

            case FieldDescriptorProto.Type.TypeString:
                ret = $"output.WriteString({_name});";
                break;

            case FieldDescriptorProto.Type.TypeBytes:
                ret = $"output.WriteBytes(Google.Protobuf.ByteString.CopyFrom({_name}));";
                break;
            }

            return(ret);
        }
示例#6
0
        protected void ReadBaseDataStr(GeneratorContext ctx, FieldDescriptorProto.Type _type, string _value, string _typename)
        {
            switch (_type)
            {
            case FieldDescriptorProto.Type.TypeSfixed32:
                ctx.WriteLine($"{_value} = input.ReadSFixed32();");
                break;

            case FieldDescriptorProto.Type.TypeFixed32:
                ctx.WriteLine($"{_value} = input.ReadFixed32();");
                break;

            case FieldDescriptorProto.Type.TypeSfixed64:
                ctx.WriteLine($"{_value} = input.ReadSFixed64();");
                break;

            case FieldDescriptorProto.Type.TypeFixed64:
                ctx.WriteLine($"{_value} = input.ReadFixed64();");
                break;

            case FieldDescriptorProto.Type.TypeInt32:
                ctx.WriteLine($"{_value} = input.ReadInt32();");
                break;

            case FieldDescriptorProto.Type.TypeInt64:
                ctx.WriteLine($"{_value} = input.ReadInt64();");
                break;

            case FieldDescriptorProto.Type.TypeSint32:
                ctx.WriteLine($"{_value} = input.ReadSInt32();");
                break;

            case FieldDescriptorProto.Type.TypeSint64:
                ctx.WriteLine($"{_value} = input.ReadSInt64();");
                break;

            case FieldDescriptorProto.Type.TypeUint32:
                ctx.WriteLine($"{_value} = input.ReadUInt32();");
                break;

            case FieldDescriptorProto.Type.TypeUint64:
                ctx.WriteLine($"{_value} = input.ReadUInt64();");
                break;


            case FieldDescriptorProto.Type.TypeFloat:
                ctx.WriteLine($"{_value} = input.ReadFloat();");
                break;

            case FieldDescriptorProto.Type.TypeDouble:
                ctx.WriteLine($"{_value} = input.ReadDouble();");
                break;

            case FieldDescriptorProto.Type.TypeBool:
                ctx.WriteLine($"{_value} = input.ReadBool();");
                break;

            case FieldDescriptorProto.Type.TypeEnum:
                ctx.WriteLine($"{_value} = ({_typename})input.ReadEnum();");
                break;

            case FieldDescriptorProto.Type.TypeString:
                ctx.WriteLine($"{_value} = input.ReadString();");
                break;

            case FieldDescriptorProto.Type.TypeBytes:
                ctx.WriteLine($"{_value} = input.ReadBytes().ToByteArray();");
                break;
            }
        }
示例#7
0
        public static Type LookupBasicType(FieldDescriptorProto.Type type, out DataFormat format, out bool buildEnumProxy)
        {
            buildEnumProxy = false;
            format         = DataFormat.Default;
            switch (type)
            {
            default:
                return(null);

            case FieldDescriptorProto.Type.TYPE_INT32:
                return(typeof(Int32));

            case FieldDescriptorProto.Type.TYPE_INT64:
                return(typeof(Int64));

            case FieldDescriptorProto.Type.TYPE_SINT32:
                return(typeof(Int32));

            case FieldDescriptorProto.Type.TYPE_SINT64:
                return(typeof(Int64));

            case FieldDescriptorProto.Type.TYPE_UINT32:
                return(typeof(UInt32));

            case FieldDescriptorProto.Type.TYPE_UINT64:
                return(typeof(UInt64));

            case FieldDescriptorProto.Type.TYPE_STRING:
                return(typeof(String));

            case FieldDescriptorProto.Type.TYPE_BOOL:
                return(typeof(Boolean));

            case FieldDescriptorProto.Type.TYPE_BYTES:
                return(typeof(byte[]));

            case FieldDescriptorProto.Type.TYPE_DOUBLE:
                return(typeof(Double));

            case FieldDescriptorProto.Type.TYPE_FLOAT:
                return(typeof(float));

            case FieldDescriptorProto.Type.TYPE_MESSAGE:
                return(typeof(string));

            case FieldDescriptorProto.Type.TYPE_FIXED32:
            {
                format = DataFormat.FixedSize;
                return(typeof(Int32));
            }

            case FieldDescriptorProto.Type.TYPE_FIXED64:
            {
                format = DataFormat.FixedSize;
                return(typeof(Int64));
            }

            case FieldDescriptorProto.Type.TYPE_SFIXED32:
            {
                format = DataFormat.FixedSize;
                return(typeof(Int32));
            }

            case FieldDescriptorProto.Type.TYPE_SFIXED64:
            {
                format = DataFormat.FixedSize;
                return(typeof(Int64));
            }

            case FieldDescriptorProto.Type.TYPE_ENUM:
            {
                buildEnumProxy = true;
                return(typeof(Int32));
            }
            }
        }
示例#8
0
        private static String GetType(FieldDescriptorProto.Type type)
        {
            switch (type)
            {
            default:
                return(type.ToString());

            case FieldDescriptorProto.Type.TYPE_INT32:
                return("int32");

            case FieldDescriptorProto.Type.TYPE_INT64:
                return("int64");

            case FieldDescriptorProto.Type.TYPE_SINT32:
                return("sint32");

            case FieldDescriptorProto.Type.TYPE_SINT64:
                return("sint64");

            case FieldDescriptorProto.Type.TYPE_UINT32:
                return("uint32");

            case FieldDescriptorProto.Type.TYPE_UINT64:
                return("uint64");

            case FieldDescriptorProto.Type.TYPE_STRING:
                return("string");

            case FieldDescriptorProto.Type.TYPE_BOOL:
                return("bool");

            case FieldDescriptorProto.Type.TYPE_BYTES:
                return("bytes");

            case FieldDescriptorProto.Type.TYPE_DOUBLE:
                return("double");

            case FieldDescriptorProto.Type.TYPE_ENUM:
                return("enum");

            case FieldDescriptorProto.Type.TYPE_FLOAT:
                return("float");

            case FieldDescriptorProto.Type.TYPE_GROUP:
                return("GROUP");

            case FieldDescriptorProto.Type.TYPE_MESSAGE:
                return("message");

            case FieldDescriptorProto.Type.TYPE_FIXED32:
                return("fixed32");

            case FieldDescriptorProto.Type.TYPE_FIXED64:
                return("fixed64");

            case FieldDescriptorProto.Type.TYPE_SFIXED32:
                return("sfixed32");

            case FieldDescriptorProto.Type.TYPE_SFIXED64:
                return("sfixed64");
            }
        }
 bool IsRefType(FieldDescriptorProto.Type ftype)
 {
     return(ftype == FieldDescriptorProto.Type.TypeMessage || ftype == FieldDescriptorProto.Type.TypeGroup || ftype == FieldDescriptorProto.Type.TypeString);
 }
示例#10
0
 static bool IsNamedType(FieldDescriptorProto.Type type)
 {
     return(type == FieldDescriptorProto.Type.TYPE_MESSAGE || type == FieldDescriptorProto.Type.TYPE_ENUM);
 }