Exemple #1
0
        public TypeSymbol Parse(Interop.IMetadataImport mdImport, IntPtr signatureBytes, int signatureLength, out bool isIndexer)
        {
            _mdImport        = mdImport;
            _signatureBytes  = signatureBytes;
            _signatureLength = signatureLength;
            _signatureIndex  = 0;

            isIndexer = false;

            byte signatureMarker = Read();
            byte typeMarker      = (byte)(signatureMarker & 0xF);

            switch (typeMarker)
            {
            case Interop.SIG_FIELD:
                return(ParseField());

            case Interop.SIG_PROPERTY:
                return(ParseProperty(out isIndexer));

            case Interop.SIG_METHOD_DEFAULT:
            case Interop.SIG_METHOD_C:
            case Interop.SIG_METHOD_THISCALL:
            case Interop.SIG_METHOD_VARARG:
            case Interop.SIG_METHOD_STDCALL:
            case Interop.SIG_METHOD_FASTCALL:
                bool isGeneric = ((signatureMarker & Interop.SIG_GENERIC) != 0);
                return(ParseMethod(isGeneric));

            default:
                // TODO: Error
                Debug.Fail("Unexpected signature type");
                return(null);
            }
        }
        public TypeSymbol Parse(Interop.IMetadataImport mdImport, IntPtr signatureBytes, int signatureLength, out bool isIndexer) {
            _mdImport = mdImport;
            _signatureBytes = signatureBytes;
            _signatureLength = signatureLength;
            _signatureIndex = 0;

            isIndexer = false;

            byte signatureMarker = Read();
            byte typeMarker = (byte)(signatureMarker & 0xF);
            switch (typeMarker) {
                case Interop.SIG_FIELD:
                    return ParseField();
                case Interop.SIG_PROPERTY:
                    return ParseProperty(out isIndexer);
                case Interop.SIG_METHOD_DEFAULT:
                case Interop.SIG_METHOD_C:
                case Interop.SIG_METHOD_THISCALL:
                case Interop.SIG_METHOD_VARARG:
                case Interop.SIG_METHOD_STDCALL:
                case Interop.SIG_METHOD_FASTCALL:
                    bool isGeneric = ((signatureMarker & Interop.SIG_GENERIC) != 0);
                    return ParseMethod(isGeneric);
                default:
                    // TODO: Error
                    Debug.Fail("Unexpected signature type");
                    return null;
            }
        }
Exemple #3
0
        public TypeSymbol Parse(Interop.IMetadataImport mdImport, IntPtr signatureBytes, int signatureLength)
        {
            bool dummy;

            return(Parse(mdImport, signatureBytes, signatureLength, out dummy));
        }