Пример #1
0
 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);
 }
Пример #3
0
        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);
        }
Пример #4
0
 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));
 }
Пример #6
0
 public ReferenceArrayCodec(Type type, ICodecContainer codecContainer)
 {
     this.type = type;
     elementCodec = codecContainer.GetEmittingCodecFor(type);
     isStruct = type.IsValueType;
 }
Пример #7
0
 public ProxyMethodRetvalCodec(Type type)
 {
     codec = new IndirectCodec(type);
 }
Пример #8
0
 public IndirectCodec(Type type, IEmittingCodec emittingCodec)
     : base(type, emittingCodec)
 {
 }
Пример #9
0
 public HandlerRetvalCodec(IEmittingContext emittingContext, Type type)
 {
     this.emittingContext = emittingContext;
     codec = new IndirectCodec(type);
     local = emittingContext.IL.DeclareLocal(type);
 }
Пример #10
0
 public static void EmitEncode(this IEmittingCodec codec, ILGenerator il, ILocalVariableCollection locals, LocalBuilder localVar)
 {
     codec.EmitEncode(il, locals, lil => lil.Emit(OpCodes.Ldloc, localVar));
 }
Пример #11
0
 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); });
 }
Пример #12
0
 public static void EmitEncode(this IEmittingCodec codec, ILGenerator il, ILocalVariableCollection locals, int argIndex)
 {
     codec.EmitEncode(il, locals, lil => lil.Emit_Ldarg(argIndex));
 }
Пример #13
0
 public static void EmitCalculateSize(this IEmittingCodec codec, ILGenerator il, LocalBuilder localVar)
 {
     codec.EmitCalculateSize(il, lil => lil.Emit(OpCodes.Ldloc, localVar));
 }
Пример #14
0
 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); });
 }
Пример #15
0
 public static void EmitCalculateSize(this IEmittingCodec codec, ILGenerator il, int argIndex)
 {
     codec.EmitCalculateSize(il, lil => lil.Emit_Ldarg(argIndex));
 }