public void DynamicOneofMessage() { DynamicMessage.Builder builder = DynamicMessage.CreateBuilder(TestAllTypes.Descriptor); OneofDescriptor oneof = TestAllTypes.Descriptor.Oneofs[0]; Assert.False(builder.HasOneof(oneof)); Assert.AreSame(null, builder.OneofFieldDescriptor(oneof)); reflectionTester.SetAllFieldsViaReflection(builder); Assert.True(builder.HasOneof(oneof)); FieldDescriptor field = oneof.Field(3); Assert.AreSame(field, builder.OneofFieldDescriptor(oneof)); Assert.AreEqual(TestUtil.ToBytes("604"), builder[field]); DynamicMessage message = builder.BuildPartial(); Assert.IsTrue(message.HasOneof(oneof)); DynamicMessage.Builder mergedBuilder = DynamicMessage.CreateBuilder(TestAllTypes.Descriptor); FieldDescriptor mergedField = oneof.Field(0); mergedBuilder[mergedField] = 123U; Assert.IsTrue(mergedBuilder.HasField(mergedField)); mergedBuilder.MergeFrom(message); Assert.IsTrue(mergedBuilder.HasField(field)); Assert.IsFalse(mergedBuilder.HasField(mergedField)); mergedBuilder.ClearOneof(oneof); Assert.AreSame(null, mergedBuilder.OneofFieldDescriptor(oneof)); message = mergedBuilder.Build(); Assert.AreSame(null, message.OneofFieldDescriptor(oneof)); }
internal OneofAccessor <TMessage, TBuilder> Oneof(OneofDescriptor oneof) { if (oneof.ContainingType != descriptor) { throw new ArgumentException("OneofDescriptor does not match message type"); } return(oneofs[oneof.Index]); }
private async Task WriteOneOfDescriptor(OneofDescriptor oneof, TextWriter writer, string indentation = NoIndent) { await writer.WriteLineAsync($"{indentation}oneof {oneof.Name} {{"); foreach (var field in oneof.Fields) { await WriteFieldDescriptor(field, writer, indentation + Indent); } await writer.WriteLineAsync($"{indentation}}}"); }
public override Builder ClearOneof(OneofDescriptor oneof) { VerifyContainingOneofType(oneof); FieldDescriptor field = oneofCase[oneof.Index]; if (field != null) { ClearField(field); } return(this); }
public override bool HasOneof(OneofDescriptor oneof) { VerifyContainingOneofType(oneof); FieldDescriptor field = oneofCase[oneof.Index]; if (field == null) { return(false); } return(true); }
public void ReflectionClearOneof() { TestAllTypes.Builder builder = TestAllTypes.CreateBuilder(); reflectionTester.SetAllFieldsViaReflection(builder); OneofDescriptor oneof = TestAllTypes.Descriptor.Oneofs[0]; FieldDescriptor field = TestAllTypes.Descriptor.FindFieldByName("oneof_bytes"); Assert.IsTrue(builder.HasOneof(oneof)); Assert.IsTrue(builder.HasField(field)); builder.ClearOneof(oneof); Assert.IsFalse(builder.HasOneof(oneof)); Assert.IsFalse(builder.HasField(field)); }
public override Builder ClearField(FieldDescriptor field) { VerifyContainingType(field); OneofDescriptor oneof = field.ContainingOneof; if (oneof != null) { int index = oneof.Index; if (oneofCase[index] == field) { oneofCase[index] = null; } } fields.ClearField(field); return(this); }
public abstract TBuilder ClearOneof(OneofDescriptor oneof);
public override FieldDescriptor OneofFieldDescriptor(OneofDescriptor oneof) { return(MessageBeingBuilt.OneofFieldDescriptor(oneof)); }
public abstract FieldDescriptor OneofFieldDescriptor(OneofDescriptor oneof);
public abstract bool HasOneof(OneofDescriptor oneof);
public override TBuilder ClearOneof(OneofDescriptor oneof) { InternalFieldAccessors.Oneof(oneof).Clear(ThisBuilder); return(ThisBuilder); }
public override Builder ClearOneof(OneofDescriptor oneof) { wrappedBuilder.WeakClearOneof(oneof); return(this); }
public override FieldDescriptor OneofFieldDescriptor(OneofDescriptor oneof) { return(wrappedBuilder.OneofFieldDescriptor(oneof)); }
public override bool HasOneof(OneofDescriptor oneof) { return(wrappedBuilder.HasOneof(oneof)); }
public override FieldDescriptor OneofFieldDescriptor(OneofDescriptor oneof) { return(wrappedMessage.OneofFieldDescriptor(oneof)); }
public override bool HasOneof(OneofDescriptor oneof) { return(wrappedMessage.HasOneof(oneof)); }
public override bool HasOneof(OneofDescriptor oneof) { return(MessageBeingBuilt.HasOneof(oneof)); }
IBuilder IBuilder.WeakClearOneof(OneofDescriptor oneof) { return(ClearOneof(oneof)); }
public override bool HasOneof(OneofDescriptor oneof) { return(InternalFieldAccessors.Oneof(oneof).Has(ThisMessage)); }
public override FieldDescriptor OneofFieldDescriptor(OneofDescriptor oneof) { VerifyContainingOneofType(oneof); return(oneofCase[oneof.Index]); }
public override FieldDescriptor OneofFieldDescriptor(OneofDescriptor oneof) { return(InternalFieldAccessors.Oneof(oneof).GetOneofFieldDescriptor(ThisMessage)); }