private void AcceptTypeSignature()

in src/Refasmer/Importer/SignatureImport.cs [145:214]


    private void AcceptTypeSignature<T>(ref BlobReader blobReader, ISignatureVisitor<T> visitor)
    {
        var typeCode = blobReader.ReadCompressedInteger();
        visitor.WriteCompressedInteger(typeCode);
            
        switch (typeCode)
        {
            case (int)SignatureTypeCode.Boolean:
            case (int)SignatureTypeCode.Char:
            case (int)SignatureTypeCode.SByte:
            case (int)SignatureTypeCode.Byte:
            case (int)SignatureTypeCode.Int16:
            case (int)SignatureTypeCode.UInt16:
            case (int)SignatureTypeCode.Int32:
            case (int)SignatureTypeCode.UInt32:
            case (int)SignatureTypeCode.Int64:
            case (int)SignatureTypeCode.UInt64:
            case (int)SignatureTypeCode.Single:
            case (int)SignatureTypeCode.Double:
            case (int)SignatureTypeCode.IntPtr:
            case (int)SignatureTypeCode.UIntPtr:
            case (int)SignatureTypeCode.Object:
            case (int)SignatureTypeCode.String:
            case (int)SignatureTypeCode.Void:
            case (int)SignatureTypeCode.TypedReference:

            case (int)SignatureTypeCode.Sentinel:
                break;

            case (int)SignatureTypeCode.Pointer:
            case (int)SignatureTypeCode.ByReference:
            case (int)SignatureTypeCode.Pinned:
            case (int)SignatureTypeCode.SZArray:
                AcceptTypeSignature(ref blobReader, visitor);
                break;

            case (int)SignatureTypeCode.FunctionPointer:
                var header = blobReader.ReadSignatureHeader();
                visitor.WriteByte(header.RawValue);
                AcceptMethodSignature(header, ref blobReader, visitor);
                break;

            case (int)SignatureTypeCode.Array:
                AcceptArrayTypeSignature(ref blobReader, visitor);
                break;

            case (int)SignatureTypeCode.RequiredModifier:
            case (int)SignatureTypeCode.OptionalModifier:
                AcceptModifiedTypeSignature(ref blobReader, visitor);
                break;

            case (int)SignatureTypeCode.GenericTypeInstance:
                AcceptGenericTypeInstanceSignature(ref blobReader, visitor);
                break;

            case (int)SignatureTypeCode.GenericTypeParameter:
            case (int)SignatureTypeCode.GenericMethodParameter:
                var index = blobReader.ReadCompressedInteger();
                visitor.WriteCompressedInteger(index);
                break;

            case (int)SignatureTypeKind.Class:
            case (int)SignatureTypeKind.ValueType:
                AcceptTypeHandleSignature(ref blobReader, visitor);
                break;

            default:
                throw new BadImageFormatException();
        }
    }