当前位置: 首页>>代码示例>>C#>>正文


C# IBuilder.WeakAddRepeatedField方法代码示例

本文整理汇总了C#中IBuilder.WeakAddRepeatedField方法的典型用法代码示例。如果您正苦于以下问题:C# IBuilder.WeakAddRepeatedField方法的具体用法?C# IBuilder.WeakAddRepeatedField怎么用?C# IBuilder.WeakAddRepeatedField使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在IBuilder的用法示例。


在下文中一共展示了IBuilder.WeakAddRepeatedField方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: MergeFieldFrom

            /// <summary>
            /// Like <see cref="MergeFrom(CodedInputStream, ExtensionRegistry, IBuilder)" />
            /// but parses a single field.
            /// </summary>
            /// <param name="input">The input to read the field from</param>
            /// <param name="extensionRegistry">Registry to use when an extension field is encountered</param>
            /// <param name="builder">Builder to merge field into, if it's a known field</param>
            /// <param name="tag">The tag, which should already have been read from the input</param>
            /// <returns>true unless the tag is an end-group tag</returns>
            internal bool MergeFieldFrom(CodedInputStream input, 
          ExtensionRegistry extensionRegistry, IBuilder builder, uint tag)
            {
                MessageDescriptor type = builder.DescriptorForType;
                if (type.Options.MessageSetWireFormat && tag == WireFormat.MessageSetTag.ItemStart) {
                  MergeMessageSetExtensionFromCodedStream(input, extensionRegistry, builder);
                  return true;
                }

                WireFormat.WireType wireType = WireFormat.GetTagWireType(tag);
                int fieldNumber = WireFormat.GetTagFieldNumber(tag);

                FieldDescriptor field;
                IMessage defaultFieldInstance = null;

                if (type.IsExtensionNumber(fieldNumber)) {
                  ExtensionInfo extension = extensionRegistry[type, fieldNumber];
                  if (extension == null) {
                field = null;
                  } else {
                field = extension.Descriptor;
                defaultFieldInstance = extension.DefaultInstance;
                  }
                } else {
                  field = type.FindFieldByNumber(fieldNumber);
                }

                // Unknown field or wrong wire type. Skip.
                if (field == null || wireType != WireFormat.GetWireType(field)) {
                  return MergeFieldFrom(tag, input);
                }

                if (field.IsPacked) {
                  int length = (int)input.ReadRawVarint32();
                  int limit = input.PushLimit(length);
                  if (field.FieldType == FieldType.Enum) {
                while (!input.ReachedLimit) {
                  int rawValue = input.ReadEnum();
                  object value = field.EnumType.FindValueByNumber(rawValue);
                  if (value == null) {
                // If the number isn't recognized as a valid value for this
                // enum, drop it (don't even add it to unknownFields).
                return true;
                  }
                  builder.WeakAddRepeatedField(field, value);
                }
                  } else {
                while (!input.ReachedLimit) {
                  Object value = input.ReadPrimitiveField(field.FieldType);
                  builder.WeakAddRepeatedField(field, value);
                }
                  }
                  input.PopLimit(limit);
                } else {
                  object value;
                  switch (field.FieldType) {
                case FieldType.Group:
                case FieldType.Message: {
                IBuilder subBuilder;
                if (defaultFieldInstance != null) {
                  subBuilder = defaultFieldInstance.WeakCreateBuilderForType();
                } else {
                  subBuilder = builder.CreateBuilderForField(field);
                }
                if (!field.IsRepeated) {
                  subBuilder.WeakMergeFrom((IMessage)builder[field]);
                }
                if (field.FieldType == FieldType.Group) {
                  input.ReadGroup(field.FieldNumber, subBuilder, extensionRegistry);
                } else {
                  input.ReadMessage(subBuilder, extensionRegistry);
                }
                value = subBuilder.WeakBuild();
                break;
                  }
                case FieldType.Enum: {
                int rawValue = input.ReadEnum();
                value = field.EnumType.FindValueByNumber(rawValue);
                // If the number isn't recognized as a valid value for this enum,
                // drop it.
                if (value == null) {
                  MergeVarintField(fieldNumber, (ulong)rawValue);
                  return true;
                }
                break;
                  }
                default:
                  value = input.ReadPrimitiveField(field.FieldType);
                  break;
                  }
                  if (field.IsRepeated) {
//.........这里部分代码省略.........
开发者ID:nuirnr01,项目名称:dotnet-protobufs,代码行数:101,代码来源:UnknownFieldSet.cs

示例2: MergeField


//.........这里部分代码省略.........
                        throw tokenizer.CreateFormatException("Expected \"" + endToken + "\".");
                    }
                    MergeField(tokenizer, extensionRegistry, subBuilder);
                }

                value = subBuilder.WeakBuild();
            }
            else
            {
                tokenizer.Consume(":");

                switch (field.FieldType)
                {
                    case FieldType.Int32:
                    case FieldType.SInt32:
                    case FieldType.SFixed32:
                        value = tokenizer.ConsumeInt32();
                        break;

                    case FieldType.Int64:
                    case FieldType.SInt64:
                    case FieldType.SFixed64:
                        value = tokenizer.ConsumeInt64();
                        break;

                    case FieldType.UInt32:
                    case FieldType.Fixed32:
                        value = tokenizer.ConsumeUInt32();
                        break;

                    case FieldType.UInt64:
                    case FieldType.Fixed64:
                        value = tokenizer.ConsumeUInt64();
                        break;

                    case FieldType.Float:
                        value = tokenizer.ConsumeFloat();
                        break;

                    case FieldType.Double:
                        value = tokenizer.ConsumeDouble();
                        break;

                    case FieldType.Bool:
                        value = tokenizer.ConsumeBoolean();
                        break;

                    case FieldType.String:
                        value = tokenizer.ConsumeString();
                        break;

                    case FieldType.Bytes:
                        value = tokenizer.ConsumeByteString();
                        break;

                    case FieldType.Enum:
                        {
                            EnumDescriptor enumType = field.EnumType;

                            if (tokenizer.LookingAtInteger())
                            {
                                int number = tokenizer.ConsumeInt32();
                                value = enumType.FindValueByNumber(number);
                                if (value == null)
                                {
                                    throw tokenizer.CreateFormatExceptionPreviousToken(
                                        "Enum type \"" + enumType.FullName +
                                        "\" has no value with number " + number + ".");
                                }
                            }
                            else
                            {
                                String id = tokenizer.ConsumeIdentifier();
                                value = enumType.FindValueByName(id);
                                if (value == null)
                                {
                                    throw tokenizer.CreateFormatExceptionPreviousToken(
                                        "Enum type \"" + enumType.FullName +
                                        "\" has no value named \"" + id + "\".");
                                }
                            }

                            break;
                        }

                    case FieldType.Message:
                    case FieldType.Group:
                        throw new InvalidOperationException("Can't get here.");
                }
            }

            if (field.IsRepeated)
            {
                builder.WeakAddRepeatedField(field, value);
            }
            else
            {
                builder.SetField(field, value);
            }
        }
开发者ID:JuWell,项目名称:SmallNetGame,代码行数:101,代码来源:TextFormat.cs

示例3: SetPackedFieldsViaReflection

 public void SetPackedFieldsViaReflection(IBuilder message)
 {
     message.WeakAddRepeatedField(f("packed_int32"), 601);
     message.WeakAddRepeatedField(f("packed_int64"), 602L);
     message.WeakAddRepeatedField(f("packed_uint32"), 603U);
     message.WeakAddRepeatedField(f("packed_uint64"), 604UL);
     message.WeakAddRepeatedField(f("packed_sint32"), 605);
     message.WeakAddRepeatedField(f("packed_sint64"), 606L);
     message.WeakAddRepeatedField(f("packed_fixed32"), 607U);
     message.WeakAddRepeatedField(f("packed_fixed64"), 608UL);
     message.WeakAddRepeatedField(f("packed_sfixed32"), 609);
     message.WeakAddRepeatedField(f("packed_sfixed64"), 610L);
     message.WeakAddRepeatedField(f("packed_float"), 611F);
     message.WeakAddRepeatedField(f("packed_double"), 612D);
     message.WeakAddRepeatedField(f("packed_bool"), true);
     message.WeakAddRepeatedField(f("packed_enum"), foreignBar);
     // Add a second one of each field.
     message.WeakAddRepeatedField(f("packed_int32"), 701);
     message.WeakAddRepeatedField(f("packed_int64"), 702L);
     message.WeakAddRepeatedField(f("packed_uint32"), 703U);
     message.WeakAddRepeatedField(f("packed_uint64"), 704UL);
     message.WeakAddRepeatedField(f("packed_sint32"), 705);
     message.WeakAddRepeatedField(f("packed_sint64"), 706L);
     message.WeakAddRepeatedField(f("packed_fixed32"), 707U);
     message.WeakAddRepeatedField(f("packed_fixed64"), 708UL);
     message.WeakAddRepeatedField(f("packed_sfixed32"), 709);
     message.WeakAddRepeatedField(f("packed_sfixed64"), 710L);
     message.WeakAddRepeatedField(f("packed_float"), 711F);
     message.WeakAddRepeatedField(f("packed_double"), 712D);
     message.WeakAddRepeatedField(f("packed_bool"), false);
     message.WeakAddRepeatedField(f("packed_enum"), foreignBaz);
 }
开发者ID:JuWell,项目名称:SmallNetGame,代码行数:32,代码来源:ReflectionTester.cs

示例4: AssertReflectionRepeatedSettersRejectNull

 /// <summary>
 /// Verifies that the reflection repeated setters for the given Builder object throw an
 /// ArgumentNullException if they are passed a null value.
 /// </summary>
 public void AssertReflectionRepeatedSettersRejectNull(IBuilder builder)
 {
     builder.WeakAddRepeatedField(f("repeated_string"), "one");
     Assert.Throws<ArgumentNullException>(() => builder.SetRepeatedField(f("repeated_string"), 0, null));
     builder.WeakAddRepeatedField(f("repeated_bytes"), TestUtil.ToBytes("one"));
     Assert.Throws<ArgumentNullException>(() => builder.SetRepeatedField(f("repeated_bytes"), 0, null));
     builder.WeakAddRepeatedField(f("repeated_nested_enum"), nestedBaz);
     Assert.Throws<ArgumentNullException>(() => builder.SetRepeatedField(f("repeated_nested_enum"), 0, null));
     builder.WeakAddRepeatedField(f("repeated_nested_message"),
                                  new TestAllTypes.Types.NestedMessage.Builder {Bb = 218}.Build());
     Assert.Throws<ArgumentNullException>(() => builder.SetRepeatedField(f("repeated_nested_message"), 0, null));
 }
开发者ID:JuWell,项目名称:SmallNetGame,代码行数:16,代码来源:ReflectionTester.cs

示例5: AssertReflectionSettersRejectNull

 /// <summary>
 /// Verifies that the reflection setters for the given Builder object throw an
 /// ArgumentNullException if they are passed a null value. 
 /// </summary>
 public void AssertReflectionSettersRejectNull(IBuilder builder)
 {
     Assert.Throws<ArgumentNullException>(() => builder[f("optional_string")] = null);
     Assert.Throws<ArgumentNullException>(() => builder[f("optional_bytes")] = null);
     Assert.Throws<ArgumentNullException>(() => builder[f("optional_nested_enum")] = null);
     Assert.Throws<ArgumentNullException>(() => builder[f("optional_nested_message")] = null);
     Assert.Throws<ArgumentNullException>(() => builder[f("optional_nested_message")] = null);
     Assert.Throws<ArgumentNullException>(() => builder.WeakAddRepeatedField(f("repeated_string"), null));
     Assert.Throws<ArgumentNullException>(() => builder.WeakAddRepeatedField(f("repeated_bytes"), null));
     Assert.Throws<ArgumentNullException>(() => builder.WeakAddRepeatedField(f("repeated_nested_enum"), null));
     Assert.Throws<ArgumentNullException>(() => builder.WeakAddRepeatedField(f("repeated_nested_message"), null));
 }
开发者ID:JuWell,项目名称:SmallNetGame,代码行数:16,代码来源:ReflectionTester.cs

示例6: SetAllFieldsViaReflection

        /// <summary>
        /// Sets every field of the message to the values expected by
        /// AssertAllFieldsSet, using the reflection interface.
        /// </summary>
        /// <param name="message"></param>
        internal void SetAllFieldsViaReflection(IBuilder message)
        {
            message[f("optional_int32")] = 101;
            message[f("optional_int64")] = 102L;
            message[f("optional_uint32")] = 103U;
            message[f("optional_uint64")] = 104UL;
            message[f("optional_sint32")] = 105;
            message[f("optional_sint64")] = 106L;
            message[f("optional_fixed32")] = 107U;
            message[f("optional_fixed64")] = 108UL;
            message[f("optional_sfixed32")] = 109;
            message[f("optional_sfixed64")] = 110L;
            message[f("optional_float")] = 111F;
            message[f("optional_double")] = 112D;
            message[f("optional_bool")] = true;
            message[f("optional_string")] = "115";
            message[f("optional_bytes")] = TestUtil.ToBytes("116");

            message[f("optionalgroup")] =
                CreateBuilderForField(message, f("optionalgroup")).SetField(groupA, 117).WeakBuild();
            message[f("optional_nested_message")] =
                CreateBuilderForField(message, f("optional_nested_message")).SetField(nestedB, 118).WeakBuild();
            message[f("optional_foreign_message")] =
                CreateBuilderForField(message, f("optional_foreign_message")).SetField(foreignC, 119).WeakBuild();
            message[f("optional_import_message")] =
                CreateBuilderForField(message, f("optional_import_message")).SetField(importD, 120).WeakBuild();

            message[f("optional_nested_enum")] = nestedBaz;
            message[f("optional_foreign_enum")] = foreignBaz;
            message[f("optional_import_enum")] = importBaz;

            message[f("optional_string_piece")] = "124";
            message[f("optional_cord")] = "125";

            // -----------------------------------------------------------------

            message.WeakAddRepeatedField(f("repeated_int32"), 201);
            message.WeakAddRepeatedField(f("repeated_int64"), 202L);
            message.WeakAddRepeatedField(f("repeated_uint32"), 203U);
            message.WeakAddRepeatedField(f("repeated_uint64"), 204UL);
            message.WeakAddRepeatedField(f("repeated_sint32"), 205);
            message.WeakAddRepeatedField(f("repeated_sint64"), 206L);
            message.WeakAddRepeatedField(f("repeated_fixed32"), 207U);
            message.WeakAddRepeatedField(f("repeated_fixed64"), 208UL);
            message.WeakAddRepeatedField(f("repeated_sfixed32"), 209);
            message.WeakAddRepeatedField(f("repeated_sfixed64"), 210L);
            message.WeakAddRepeatedField(f("repeated_float"), 211F);
            message.WeakAddRepeatedField(f("repeated_double"), 212D);
            message.WeakAddRepeatedField(f("repeated_bool"), true);
            message.WeakAddRepeatedField(f("repeated_string"), "215");
            message.WeakAddRepeatedField(f("repeated_bytes"), TestUtil.ToBytes("216"));


            message.WeakAddRepeatedField(f("repeatedgroup"),
                                         CreateBuilderForField(message, f("repeatedgroup")).SetField(repeatedGroupA, 217)
                                             .WeakBuild());
            message.WeakAddRepeatedField(f("repeated_nested_message"),
                                         CreateBuilderForField(message, f("repeated_nested_message")).SetField(nestedB,
                                                                                                               218).
                                             WeakBuild());
            message.WeakAddRepeatedField(f("repeated_foreign_message"),
                                         CreateBuilderForField(message, f("repeated_foreign_message")).SetField(
                                             foreignC, 219).WeakBuild());
            message.WeakAddRepeatedField(f("repeated_import_message"),
                                         CreateBuilderForField(message, f("repeated_import_message")).SetField(importD,
                                                                                                               220).
                                             WeakBuild());

            message.WeakAddRepeatedField(f("repeated_nested_enum"), nestedBar);
            message.WeakAddRepeatedField(f("repeated_foreign_enum"), foreignBar);
            message.WeakAddRepeatedField(f("repeated_import_enum"), importBar);

            message.WeakAddRepeatedField(f("repeated_string_piece"), "224");
            message.WeakAddRepeatedField(f("repeated_cord"), "225");

            // Add a second one of each field.
            message.WeakAddRepeatedField(f("repeated_int32"), 301);
            message.WeakAddRepeatedField(f("repeated_int64"), 302L);
            message.WeakAddRepeatedField(f("repeated_uint32"), 303U);
            message.WeakAddRepeatedField(f("repeated_uint64"), 304UL);
            message.WeakAddRepeatedField(f("repeated_sint32"), 305);
            message.WeakAddRepeatedField(f("repeated_sint64"), 306L);
            message.WeakAddRepeatedField(f("repeated_fixed32"), 307U);
            message.WeakAddRepeatedField(f("repeated_fixed64"), 308UL);
            message.WeakAddRepeatedField(f("repeated_sfixed32"), 309);
            message.WeakAddRepeatedField(f("repeated_sfixed64"), 310L);
            message.WeakAddRepeatedField(f("repeated_float"), 311F);
            message.WeakAddRepeatedField(f("repeated_double"), 312D);
            message.WeakAddRepeatedField(f("repeated_bool"), false);
            message.WeakAddRepeatedField(f("repeated_string"), "315");
            message.WeakAddRepeatedField(f("repeated_bytes"), TestUtil.ToBytes("316"));

            message.WeakAddRepeatedField(f("repeatedgroup"),
                                         CreateBuilderForField(message, f("repeatedgroup"))
                                             .SetField(repeatedGroupA, 317).WeakBuild());
//.........这里部分代码省略.........
开发者ID:JuWell,项目名称:SmallNetGame,代码行数:101,代码来源:ReflectionTester.cs

示例7: MergeFieldFrom


//.........这里部分代码省略.........
                        {
                            IBuilderLite subBuilder = (defaultFieldInstance != null)
                                                          ? defaultFieldInstance.WeakCreateBuilderForType()
                                                          : builder.CreateBuilderForField(field);
                            if (!field.IsRepeated)
                            {
                                subBuilder.WeakMergeFrom((IMessageLite) builder[field]);
                                if (field.FieldType == FieldType.Group)
                                {
                                    input.ReadGroup(field.FieldNumber, subBuilder, extensionRegistry);
                                }
                                else
                                {
                                    input.ReadMessage(subBuilder, extensionRegistry);
                                }
                                builder[field] = subBuilder.WeakBuild();
                            }
                            else
                            {
                                List<IMessageLite> list = new List<IMessageLite>();
                                if (field.FieldType == FieldType.Group)
                                {
                                    input.ReadGroupArray(tag, fieldName, list, subBuilder.WeakDefaultInstanceForType,
                                                         extensionRegistry);
                                }
                                else
                                {
                                    input.ReadMessageArray(tag, fieldName, list, subBuilder.WeakDefaultInstanceForType,
                                                           extensionRegistry);
                                }

                                foreach (IMessageLite m in list)
                                {
                                    builder.WeakAddRepeatedField(field, m);
                                }
                                return true;
                            }
                            break;
                        }
                    case FieldType.Enum:
                        {
                            if (!field.IsRepeated)
                            {
                                object unknown;
                                IEnumLite value = null;
                                if (input.ReadEnum(ref value, out unknown, field.EnumType))
                                {
                                    builder[field] = value;
                                }
                                else if (unknown is int)
                                {
                                    MergeVarintField(fieldNumber, (ulong) (int) unknown);
                                }
                            }
                            else
                            {
                                ICollection<object> unknown;
                                List<IEnumLite> list = new List<IEnumLite>();
                                input.ReadEnumArray(tag, fieldName, list, out unknown, field.EnumType);

                                foreach (IEnumLite en in list)
                                {
                                    builder.WeakAddRepeatedField(field, en);
                                }

                                if (unknown != null)
开发者ID:radavies,项目名称:protobuf,代码行数:67,代码来源:UnknownFieldSet.cs


注:本文中的IBuilder.WeakAddRepeatedField方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。