public override void AppendRead(ILGenerator generator, MessageField field) { LocalBuilder count = generator.DeclareLocal(typeof(uint)); Label top = generator.DefineLabel(); Label next = generator.DefineLabel(); generator.Emit(OpCodes.Br_S, next); generator.Emit(OpCodes.Nop); generator.MarkLabel(top); generator.Emit(OpCodes.Ldloc_0); generator.Emit(OpCodes.Call, Property.GetGetMethod()); generator.Emit(OpCodes.Ldarg_1); field.AppendReadField(generator); generator.Emit(OpCodes.Callvirt, AddMethod); generator.MarkLabel(next); generator.Emit(OpCodes.Ldarg_1); generator.Emit(OpCodes.Call, typeof(MessageReader) .GetProperty("EndOfStream") .GetGetMethod()); generator.Emit(OpCodes.Brfalse_S, top); }
public abstract void AppendRead(ILGenerator generator, MessageField field);
protected virtual void AppendMessageHeaderCore(ILGenerator generator, ForEachLoop loop, MessageField field) { }
protected MessageField(MessageField other) : this(other._tag, other._fieldIO) { }