Esempio n. 1
0
        public static SignatureHelper GetSigHelper(MdSigCallingConvention conv, ModuleBuilder mod = null)
        {
            var sig = (SignatureHelper)FormatterServices.GetUninitializedObject(sigType);

            Sig_Init(sig, mod);
            sig.AddData((byte)conv);
            return(sig);
        }
Esempio n. 2
0
        private SignatureHelper(Module mod, MdSigCallingConvention callingConvention, int cGenericParameters,
                                Type returnType, Type[] requiredCustomModifiers, Type[] optionalCustomModifiers)
        {
            // Use this constructor to instantiate a any signatures that will require a return type.
            Init(mod, callingConvention, cGenericParameters);

            if (callingConvention == MdSigCallingConvention.Field)
            {
                throw new ArgumentException(Environment.GetResourceString("Argument_BadFieldSig"));
            }

            AddOneArgTypeHelper(returnType, requiredCustomModifiers, optionalCustomModifiers);
        }
Esempio n. 3
0
 private SignatureHelper(
     Module?mod,
     MdSigCallingConvention callingConvention,
     Type returnType,
     Type[]?requiredCustomModifiers,
     Type[]?optionalCustomModifiers
     )
     : this(
         mod,
         callingConvention,
         0,
         returnType,
         requiredCustomModifiers,
         optionalCustomModifiers
         )
 {
 }
Esempio n. 4
0
        private void Init(Module mod, MdSigCallingConvention callingConvention, int cGenericParam)
        {
            Init(mod);

            AddData((byte)callingConvention);

            if (callingConvention == MdSigCallingConvention.Field ||
                callingConvention == MdSigCallingConvention.GenericInst)
            {
                m_sizeLoc = NO_SIZE_IN_SIG;
            }
            else
            {
                if (cGenericParam > 0)
                {
                    AddData(cGenericParam);
                }

                m_sizeLoc = m_currSig++;
            }
        }
Esempio n. 5
0
        public static SignatureHelper GetPropertySigHelper(Module?mod, CallingConventions callingConvention,
                                                           Type?returnType, Type[]?requiredReturnTypeCustomModifiers, Type[]?optionalReturnTypeCustomModifiers,
                                                           Type[]?parameterTypes, Type[][]?requiredParameterTypeCustomModifiers, Type[][]?optionalParameterTypeCustomModifiers)
        {
            SignatureHelper sigHelp;

            returnType ??= typeof(void);

            MdSigCallingConvention intCall = MdSigCallingConvention.Property;

            if ((callingConvention & CallingConventions.HasThis) == CallingConventions.HasThis)
            {
                intCall |= MdSigCallingConvention.HasThis;
            }

            sigHelp = new SignatureHelper(mod, intCall,
                                          returnType, requiredReturnTypeCustomModifiers, optionalReturnTypeCustomModifiers);
            sigHelp.AddArguments(parameterTypes, requiredParameterTypeCustomModifiers, optionalParameterTypeCustomModifiers);

            return(sigHelp);
        }
Esempio n. 6
0
        private static MdSigCallingConvention ConvertCallConv(CallingConventions managed, CallingConvention unmanaged)
        {
            MdSigCallingConvention callConv = 0;

            if (unmanaged != 0)
            {
                callConv = (MdSigCallingConvention)((byte)unmanaged - 1);
            }
            switch (managed)
            {
            case CallingConventions.HasThis:
                callConv |= MdSigCallingConvention.HasThis;
                break;

            case CallingConventions.ExplicitThis:
                callConv |= MdSigCallingConvention.ExplicitThis;
                break;

            case CallingConventions.VarArgs:
                callConv |= MdSigCallingConvention.Vararg;
                break;
            }
            return(callConv);
        }
Esempio n. 7
0
 private void Init(Module mod, MdSigCallingConvention callingConvention)
 {
     Init(mod, callingConvention, 0);
 }
Esempio n. 8
0
        private int m_argCount; // tracking number of arguments in the signature
        #endregion

        #region Constructor
        private SignatureHelper(Module mod, MdSigCallingConvention callingConvention)
        {
            // Use this constructor to instantiate a local var sig  or Field where return type is not applied.
            Init(mod, callingConvention);
        }
Esempio n. 9
0
        private void Init(Module mod, MdSigCallingConvention callingConvention, int cGenericParam)
        {        
            Init(mod);

            AddData((byte)callingConvention);

            if (callingConvention == MdSigCallingConvention.Field ||
                callingConvention == MdSigCallingConvention.GenericInst) 
            {
                m_sizeLoc = NO_SIZE_IN_SIG;
            } 
            else 
            {
                if (cGenericParam > 0)
                    AddData(cGenericParam);
                
                m_sizeLoc = m_currSig++;
            }
        }
Esempio n. 10
0
 private void Init(Module mod, MdSigCallingConvention callingConvention)
 {
     Init(mod, callingConvention, 0);
 }
Esempio n. 11
0
 private SignatureHelper(Module mod, MdSigCallingConvention callingConvention, 
     Type returnType, Type[] requiredCustomModifiers, Type[] optionalCustomModifiers)
     : this(mod, callingConvention, 0, returnType, requiredCustomModifiers, optionalCustomModifiers)
 {
 }
Esempio n. 12
0
        private SignatureHelper(Module mod, MdSigCallingConvention callingConvention, int cGenericParameters,
            Type returnType, Type[] requiredCustomModifiers, Type[] optionalCustomModifiers)
        {
            // Use this constructor to instantiate a any signatures that will require a return type.
            Init(mod, callingConvention, cGenericParameters);

            if (callingConvention == MdSigCallingConvention.Field) 
                throw new ArgumentException(Environment.GetResourceString("Argument_BadFieldSig"));

            AddOneArgTypeHelper(returnType, requiredCustomModifiers, optionalCustomModifiers);                          
        }
Esempio n. 13
0
        private int m_argCount; // tracking number of arguments in the signature
        #endregion

        #region Constructor
        private SignatureHelper(Module mod, MdSigCallingConvention callingConvention)
        {
            // Use this constructor to instantiate a local var sig  or Field where return type is not applied.
            Init(mod, callingConvention);
        }
Esempio n. 14
0
 public static object ToInternal(this MdSigCallingConvention elemType)
 {
     return(Enum.ToObject(type, (byte)elemType));
 }
Esempio n. 15
0
 public MemberSignature(MdSigCallingConvention sigType)
 {
     SignatureType = sigType;
 }