Exemple #1
0
        internal MessageDescriptor(DescriptorProto proto, FileDescriptor file, MessageDescriptor parent, int typeIndex, GeneratedClrTypeInfo generatedCodeInfo)
            : base(file, file.ComputeFullName(parent, proto.Name), typeIndex)
        {
            Proto          = proto;
            Parser         = generatedCodeInfo == null ? null : generatedCodeInfo.Parser;
            ClrType        = generatedCodeInfo == null ? null : generatedCodeInfo.ClrType;
            ContainingType = parent;

            // Note use of generatedCodeInfo. rather than generatedCodeInfo?. here... we don't expect
            // to see any nested oneofs, types or enums in "not actually generated" code... we do
            // expect fields though (for map entry messages).
            Oneofs = DescriptorUtil.ConvertAndMakeReadOnly(
                proto.OneofDecl,
                (oneof, index) =>
                new OneofDescriptor(oneof, file, this, index, generatedCodeInfo.OneofNames[index]));

            NestedTypes = DescriptorUtil.ConvertAndMakeReadOnly(
                proto.NestedType,
                (type, index) =>
                new MessageDescriptor(type, file, this, index, generatedCodeInfo.NestedTypes[index]));

            EnumTypes = DescriptorUtil.ConvertAndMakeReadOnly(
                proto.EnumType,
                (type, index) =>
                new EnumDescriptor(type, file, this, index, generatedCodeInfo.NestedEnums[index]));

            fieldsInDeclarationOrder = DescriptorUtil.ConvertAndMakeReadOnly(
                proto.Field,
                (field, index) =>
                new FieldDescriptor(field, file, this, index, generatedCodeInfo == null ? null : generatedCodeInfo.PropertyNames[index]));
            fieldsInNumberOrder = new ReadOnlyCollection <FieldDescriptor>(fieldsInDeclarationOrder.OrderBy(field => field.FieldNumber).ToArray());
            // TODO: Use field => field.Proto.JsonName when we're confident it's appropriate. (And then use it in the formatter, too.)
            jsonFieldMap = CreateJsonFieldMap(fieldsInNumberOrder);
            file.DescriptorPool.AddSymbol(this);
            Fields = new FieldCollection(this);
        }
        internal MessageDescriptor(DescriptorProto proto, FileDescriptor file, MessageDescriptor parent, int typeIndex, GeneratedClrTypeInfo generatedCodeInfo)
            : base(file, file.ComputeFullName(parent, proto.Name), typeIndex)
        {
            Proto          = proto;
            Parser         = generatedCodeInfo?.Parser;
            ClrType        = generatedCodeInfo?.ClrType;
            ContainingType = parent;

            // If generatedCodeInfo is null, we just won't generate an accessor for any fields.
            Oneofs = DescriptorUtil.ConvertAndMakeReadOnly(
                proto.OneofDecl,
                (oneof, index) =>
                new OneofDescriptor(oneof, file, this, index, generatedCodeInfo?.OneofNames[index]));

            NestedTypes = DescriptorUtil.ConvertAndMakeReadOnly(
                proto.NestedType,
                (type, index) =>
                new MessageDescriptor(type, file, this, index, generatedCodeInfo?.NestedTypes[index]));

            EnumTypes = DescriptorUtil.ConvertAndMakeReadOnly(
                proto.EnumType,
                (type, index) =>
                new EnumDescriptor(type, file, this, index, generatedCodeInfo?.NestedEnums[index]));

            Extensions = new ExtensionCollection(this, generatedCodeInfo?.Extensions);

            fieldsInDeclarationOrder = DescriptorUtil.ConvertAndMakeReadOnly(
                proto.Field,
                (field, index) =>
                new FieldDescriptor(field, file, this, index, generatedCodeInfo?.PropertyNames[index], null));
            fieldsInNumberOrder = new ReadOnlyCollection <FieldDescriptor>(fieldsInDeclarationOrder.OrderBy(field => field.FieldNumber).ToArray());
            // TODO: Use field => field.Proto.JsonName when we're confident it's appropriate. (And then use it in the formatter, too.)
            jsonFieldMap = CreateJsonFieldMap(fieldsInNumberOrder);
            file.DescriptorPool.AddSymbol(this);
            Fields = new FieldCollection(this);
        }
Exemple #3
0
        internal MessageDescriptor(DescriptorProto proto, FileDescriptor file, MessageDescriptor parent, int typeIndex, GeneratedCodeInfo generatedCodeInfo) : base(file, file.ComputeFullName(parent, proto.Name), typeIndex)
        {
            MessageDescriptor __4__this;

            while (true)
            {
IL_247:
                uint arg_20A_0 = 4043199534u;
                while (true)
                {
                    uint num;
                    switch ((num = (arg_20A_0 ^ 3788346645u)) % 12u)
                    {
                    case 0u:
                        this.< ContainingType > k__BackingField = parent;
                        arg_20A_0 = (num * 1002898729u ^ 1601684763u);
                        continue;

                    case 1u:
                    {
                        GeneratedCodeInfo expr_1D9 = generatedCodeInfo;
                        this.< Parser > k__BackingField = ((expr_1D9 != null) ? expr_1D9.Parser : null);
                        arg_20A_0 = 2694476678u;
                        continue;
                    }

                    case 2u:
                        file.DescriptorPool.AddSymbol(this);
                        this.Fieldsk__BackingField = new MessageDescriptor.FieldCollection(this);
                        arg_20A_0 = (num * 174268781u ^ 339015310u);
                        continue;

                    case 3u:
                        goto IL_247;

                    case 4u:
                        this.< NestedTypes > k__BackingField = DescriptorUtil.ConvertAndMakeReadOnly <DescriptorProto, MessageDescriptor>(proto.NestedType, (DescriptorProto type, int index) => new MessageDescriptor(type, file, __4__this, index, generatedCodeInfo.NestedTypes[index]));
                        arg_20A_0 = (num * 1204710165u ^ 359963217u);
                        continue;

                    case 5u:
                    {
                        IEnumerable <FieldDescriptor>  arg_161_0 = this.fieldsInNumberOrder;
                        Func <FieldDescriptor, string> arg_161_1;
                        if ((arg_161_1 = MessageDescriptor.__c.__9__4_5) == null)
                        {
                            arg_161_1 = (MessageDescriptor.__c.__9__4_5 = new Func <FieldDescriptor, string>(MessageDescriptor.__c.__9.<.ctor > b__4_5));
                        }
                        this.jsonFieldMap = new ReadOnlyDictionary <string, FieldDescriptor>(arg_161_0.ToDictionary(arg_161_1));
                        arg_20A_0         = 3491112463u;
                        continue;
                    }

                    case 6u:
                    {
                        this.fieldsInDeclarationOrder = DescriptorUtil.ConvertAndMakeReadOnly <FieldDescriptorProto, FieldDescriptor>(proto.Field, delegate(FieldDescriptorProto field, int index)
                            {
                                FileDescriptor arg_26_1    = file;
                                MessageDescriptor arg_26_2 = __4__this;
                                GeneratedCodeInfo expr_14  = generatedCodeInfo;
                                return(new FieldDescriptor(field, arg_26_1, arg_26_2, index, (expr_14 != null) ? expr_14.PropertyNames[index] : null));
                            });
                        IEnumerable <FieldDescriptor> arg_11D_0 = this.fieldsInDeclarationOrder;
                        Func <FieldDescriptor, int>   arg_11D_1;
                        if ((arg_11D_1 = MessageDescriptor.__c.__9__4_4) == null)
                        {
                            arg_11D_1 = (MessageDescriptor.__c.__9__4_4 = new Func <FieldDescriptor, int>(MessageDescriptor.__c.__9.<.ctor > b__4_4));
                        }
                        this.fieldsInNumberOrder = new ReadOnlyCollection <FieldDescriptor>(arg_11D_0.OrderBy(arg_11D_1).ToArray <FieldDescriptor>());
                        arg_20A_0 = 2414391428u;
                        continue;
                    }

                    case 7u:
                    {
                        GeneratedCodeInfo expr_BF = generatedCodeInfo;
                        this.< ClrType > k__BackingField = ((expr_BF != null) ? expr_BF.ClrType : null);
                        arg_20A_0 = 3870743541u;
                        continue;
                    }

                    case 8u:
                        this.< EnumTypes > k__BackingField = DescriptorUtil.ConvertAndMakeReadOnly <EnumDescriptorProto, EnumDescriptor>(proto.EnumType, (EnumDescriptorProto type, int index) => new EnumDescriptor(type, file, __4__this, index, generatedCodeInfo.NestedEnums[index]));
                        arg_20A_0 = (num * 3914277205u ^ 2964567391u);
                        continue;

                    case 10u:
                        this.< Oneofs > k__BackingField = DescriptorUtil.ConvertAndMakeReadOnly <OneofDescriptorProto, OneofDescriptor>(proto.OneofDecl, (OneofDescriptorProto oneof, int index) => new OneofDescriptor(oneof, file, __4__this, index, generatedCodeInfo.OneofNames[index]));
                        arg_20A_0 = (num * 3879854900u ^ 3765292269u);
                        continue;

                    case 11u:
                        __4__this = this;
                        this.< Proto > k__BackingField = proto;
                        arg_20A_0 = (num * 1105444768u ^ 1991989292u);
                        continue;
                    }
                    return;
                }
            }
        }
Exemple #4
0
 internal ExtensionCollection(MessageDescriptor message, Extension[] extensions)
 {
     UnorderedExtensions = DescriptorUtil.ConvertAndMakeReadOnly(
         message.Proto.Extension,
         (extension, i) => new FieldDescriptor(extension, message.File, message, i, null, extensions?[i]));
 }
Exemple #5
0
 internal ExtensionCollection(FileDescriptor file, Extension[] extensions)
 {
     UnorderedExtensions = DescriptorUtil.ConvertAndMakeReadOnly(
         file.Proto.Extension,
         (extension, i) => new FieldDescriptor(extension, file, null, i, null, extensions?[i]));
 }