public HandlerParameterCodec(IEmittingContext emittingContext, MethodParameterDescription description) { this.emittingContext = emittingContext; type = description.Type; way = description.Way; codec = new IndirectCodec(type); if (IsResponseParameter) local = emittingContext.IL.DeclareLocal(type); }
public ProxyMethodParameterCodec(MethodParameterDescription description) { type = description.Type; way = description.Way; argIndex = description.Index + 1; codec = new IndirectCodec(type); emitLoad = description.Way == MethodParameterWay.Val ? Loaders.Argument(argIndex) : Loaders.ArgumentRef(argIndex, description.Type); }
public ManualCodecBase(Type type, IEmittingCodec emittingCodec, bool forceVisibilityChecks = false) { this.type = type; this.emittingCodec = emittingCodec; this.forceVisibilityChecks = forceVisibilityChecks; calculateSizeMethod = EmitCalculateSize(); encodeMethod = EmitEncode(); decodeMethod = EmitDecode(false); decodeFastMethod = EmitDecode(true); }
protected CollectionCodecBase(Type type, Type elementType, ICodecContainer codecContainer) { this.type = type; this.elementType = elementType; elementCodec = codecContainer.GetEmittingCodecFor(elementType); }
public ProxyMethodGenericArgumentCodec(Type type) { this.type = type; typeCodec = new IndirectCodec(typeof(Type)); }
public ReferenceArrayCodec(Type type, ICodecContainer codecContainer) { this.type = type; elementCodec = codecContainer.GetEmittingCodecFor(type); isStruct = type.IsValueType; }
public ProxyMethodRetvalCodec(Type type) { codec = new IndirectCodec(type); }
public IndirectCodec(Type type, IEmittingCodec emittingCodec) : base(type, emittingCodec) { }
public HandlerRetvalCodec(IEmittingContext emittingContext, Type type) { this.emittingContext = emittingContext; codec = new IndirectCodec(type); local = emittingContext.IL.DeclareLocal(type); }
public static void EmitEncode(this IEmittingCodec codec, ILGenerator il, ILocalVariableCollection locals, LocalBuilder localVar) { codec.EmitEncode(il, locals, lil => lil.Emit(OpCodes.Ldloc, localVar)); }
public static void EmitEncodeIndirect(this IEmittingCodec codec, ILGenerator il, ILocalVariableCollection locals, int argIndex, Type type) { codec.EmitEncode(il, locals, lil => { lil.Emit_Ldarg(argIndex); lil.Emit(OpCodes.Ldobj, type); }); }
public static void EmitEncode(this IEmittingCodec codec, ILGenerator il, ILocalVariableCollection locals, int argIndex) { codec.EmitEncode(il, locals, lil => lil.Emit_Ldarg(argIndex)); }
public static void EmitCalculateSize(this IEmittingCodec codec, ILGenerator il, LocalBuilder localVar) { codec.EmitCalculateSize(il, lil => lil.Emit(OpCodes.Ldloc, localVar)); }
public static void EmitCalculateSizeIndirect(this IEmittingCodec codec, ILGenerator il, int argIndex, Type type) { codec.EmitCalculateSize(il, lil => { lil.Emit_Ldarg(argIndex); lil.Emit(OpCodes.Ldobj, type); }); }
public static void EmitCalculateSize(this IEmittingCodec codec, ILGenerator il, int argIndex) { codec.EmitCalculateSize(il, lil => lil.Emit_Ldarg(argIndex)); }