本文整理汇总了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) {
//.........这里部分代码省略.........
示例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);
}
}
示例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);
}
示例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));
}
示例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));
}
示例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());
//.........这里部分代码省略.........
示例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)