public void EmitCalculateSize(IEmittingContext context, Action <MyILGenerator> emitLoad) { var il = context.IL; context.EmitLoadManualCodecFor(type); emitLoad(il); il.Callvirt(ManualCodecMethods.CalculateSize(type)); }
public void EmitEncode(IEmittingContext context, Action <MyILGenerator> emitLoad) { var il = context.IL; context.EmitLoadManualCodecFor(type); il.Ldloca(context.DataPointerVar); emitLoad(il); il.Callvirt(ManualCodecMethods.Encode(type)); }
public void EmitDecode(IEmittingContext context, bool doNotCheckBounds) { var il = context.IL; context.EmitLoadManualCodecFor(type); il.Ldloca(context.DataPointerVar); il.Ldloca(context.RemainingBytesVar); il.Ldc_I4(0); il.Callvirt(ManualCodecMethods.Decode(type)); }