| File: Symbols\SpecialTypeExtensions.vb | Web Access |
| Project: src\roslyn\src\Compilers\VisualBasic\Portable\Microsoft.CodeAnalysis.VisualBasic.vbproj (Microsoft.CodeAnalysis.VisualBasic) |
' Licensed to the .NET Foundation under one or more agreements. ' The .NET Foundation licenses this file to you under the MIT license. ' See the LICENSE file in the project root for more information. Imports System.Runtime.CompilerServices Namespace Microsoft.CodeAnalysis.VisualBasic.Symbols Friend Module SpecialTypeExtensions <Extension> Public Function IsFloatingType(this As SpecialType) As Boolean Select Case this Case SpecialType.System_Single, SpecialType.System_Double Return True Case Else Return False End Select End Function <Extension> Public Function IsIntrinsicType(this As SpecialType) As Boolean Return this = SpecialType.System_String OrElse this.IsIntrinsicValueType() End Function <Extension> Public Function IsIntrinsicValueType(this As SpecialType) As Boolean Select Case this Case SpecialType.System_Boolean, SpecialType.System_Byte, SpecialType.System_SByte, SpecialType.System_Int16, SpecialType.System_UInt16, SpecialType.System_Int32, SpecialType.System_UInt32, SpecialType.System_Int64, SpecialType.System_UInt64, SpecialType.System_Single, SpecialType.System_Double, SpecialType.System_Decimal, SpecialType.System_DateTime, SpecialType.System_Char Return True Case Else Return False End Select End Function <Extension> Public Function IsPrimitiveType(this As SpecialType) As Boolean Select Case this Case SpecialType.System_Boolean, SpecialType.System_Byte, SpecialType.System_Char, SpecialType.System_Double, SpecialType.System_Int16, SpecialType.System_Int32, SpecialType.System_Int64, SpecialType.System_UInt16, SpecialType.System_UInt32, SpecialType.System_UInt64, SpecialType.System_IntPtr, SpecialType.System_UIntPtr, SpecialType.System_SByte, SpecialType.System_Single Return True Case Else Return False End Select End Function <Extension> Public Function IsStrictSupertypeOfConcreteDelegate(this As SpecialType) As Boolean Select Case this Case SpecialType.System_Object, SpecialType.System_Delegate, SpecialType.System_MulticastDelegate Return True Case Else Return False End Select End Function <Extension> Public Function IsRestrictedType(this As SpecialType) As Boolean Select Case this Case SpecialType.System_TypedReference, SpecialType.System_ArgIterator, SpecialType.System_RuntimeArgumentHandle Return True Case Else Return False End Select End Function <Extension> Public Function IsValidTypeForAttributeArgument(this As SpecialType) As Boolean Select Case this Case SpecialType.System_Boolean, SpecialType.System_Byte, SpecialType.System_SByte, SpecialType.System_Int16, SpecialType.System_UInt16, SpecialType.System_Int32, SpecialType.System_UInt32, SpecialType.System_Int64, SpecialType.System_UInt64, SpecialType.System_Single, SpecialType.System_Double, SpecialType.System_Char, SpecialType.System_Object, SpecialType.System_String Return True Case Else Return False End Select End Function <Extension> Public Function IsValidTypeForSwitchTable(this As SpecialType) As Boolean Select Case this Case SpecialType.System_Byte, SpecialType.System_SByte, SpecialType.System_Int16, SpecialType.System_UInt16, SpecialType.System_Int32, SpecialType.System_UInt32, SpecialType.System_Int64, SpecialType.System_UInt64, SpecialType.System_Char, SpecialType.System_Boolean, SpecialType.System_String Return True Case Else Return False End Select End Function <Extension> Public Function TypeToIndex(type As SpecialType) As Integer? Dim result As Integer Select Case type Case SpecialType.System_Object result = 0 Case SpecialType.System_String result = 1 Case SpecialType.System_Boolean result = 2 Case SpecialType.System_Char result = 3 Case SpecialType.System_SByte result = 4 Case SpecialType.System_Int16 result = 5 Case SpecialType.System_Int32 result = 6 Case SpecialType.System_Int64 result = 7 Case SpecialType.System_Byte result = 8 Case SpecialType.System_UInt16 result = 9 Case SpecialType.System_UInt32 result = 10 Case SpecialType.System_UInt64 result = 11 Case SpecialType.System_Single result = 12 Case SpecialType.System_Double result = 13 Case SpecialType.System_Decimal result = 14 Case SpecialType.System_DateTime result = 15 Case Else Return Nothing End Select Return result End Function <Extension> Public Function GetNativeCompilerVType(this As SpecialType) As String Select Case this Case SpecialType.System_Void Return "t_void" Case SpecialType.System_Boolean Return "t_bool" Case SpecialType.System_Char Return "t_char" Case SpecialType.System_SByte Return "t_i1" Case SpecialType.System_Byte Return "t_ui1" Case SpecialType.System_Int16 Return "t_i2" Case SpecialType.System_UInt16 Return "t_ui2" Case SpecialType.System_Int32 Return "t_i4" Case SpecialType.System_UInt32 Return "t_ui4" Case SpecialType.System_Int64 Return "t_i8" Case SpecialType.System_UInt64 Return "t_ui8" Case SpecialType.System_Decimal Return "t_decimal" Case SpecialType.System_Single Return "t_single" Case SpecialType.System_Double Return "t_double" Case SpecialType.System_String Return "t_string" Case SpecialType.System_IntPtr, SpecialType.System_UIntPtr Return "t_ptr" Case SpecialType.System_Array Return "t_array" Case SpecialType.System_DateTime Return "t_date" Case Else Return Nothing End Select End Function <Extension> Public Function GetDisplayName(this As SpecialType) As String Dim result = TryGetKeywordText(this) Debug.Assert(result IsNot Nothing) Return result End Function <Extension> Public Function TryGetKeywordText(this As SpecialType) As String Select Case this Case SpecialType.System_SByte Return "SByte" Case SpecialType.System_Int16 Return "Short" Case SpecialType.System_Int32 Return "Integer" Case SpecialType.System_Int64 Return "Long" Case SpecialType.System_Byte Return "Byte" Case SpecialType.System_UInt16 Return "UShort" Case SpecialType.System_UInt32 Return "UInteger" Case SpecialType.System_UInt64 Return "ULong" Case SpecialType.System_Single Return "Single" Case SpecialType.System_Double Return "Double" Case SpecialType.System_Decimal Return "Decimal" Case SpecialType.System_Char Return "Char" Case SpecialType.System_Boolean Return "Boolean" Case SpecialType.System_String Return "String" Case SpecialType.System_Object Return "Object" Case SpecialType.System_DateTime Return "Date" Case SpecialType.System_Void Return "Void" Case Else Return Nothing End Select End Function <Extension> Friend Function ToConstantValueDiscriminator(this As SpecialType) As ConstantValueTypeDiscriminator Select Case this Case SpecialType.System_SByte Return ConstantValueTypeDiscriminator.SByte Case SpecialType.System_Byte Return ConstantValueTypeDiscriminator.Byte Case SpecialType.System_Int16 Return ConstantValueTypeDiscriminator.Int16 Case SpecialType.System_UInt16 Return ConstantValueTypeDiscriminator.UInt16 Case SpecialType.System_Int32 Return ConstantValueTypeDiscriminator.Int32 Case SpecialType.System_UInt32 Return ConstantValueTypeDiscriminator.UInt32 Case SpecialType.System_Int64 Return ConstantValueTypeDiscriminator.Int64 Case SpecialType.System_UInt64 Return ConstantValueTypeDiscriminator.UInt64 Case SpecialType.System_Char Return ConstantValueTypeDiscriminator.Char Case SpecialType.System_Boolean Return ConstantValueTypeDiscriminator.Boolean Case SpecialType.System_Single Return ConstantValueTypeDiscriminator.Single Case SpecialType.System_Double Return ConstantValueTypeDiscriminator.Double Case SpecialType.System_Decimal Return ConstantValueTypeDiscriminator.Decimal Case SpecialType.System_DateTime Return ConstantValueTypeDiscriminator.DateTime Case SpecialType.System_String Return ConstantValueTypeDiscriminator.String Case Else Throw ExceptionUtilities.UnexpectedValue(this) End Select End Function <Extension> Friend Function GetShiftSizeMask(this As SpecialType) As Integer Select Case this Case SpecialType.System_SByte, SpecialType.System_Byte Return &H7 Case SpecialType.System_Int16, SpecialType.System_UInt16 Return &HF Case SpecialType.System_Int32, SpecialType.System_UInt32 Return &H1F Case SpecialType.System_Int64, SpecialType.System_UInt64 Return &H3F Case Else Throw ExceptionUtilities.UnexpectedValue(this) End Select End Function <Extension> Public Function ToRuntimeType(this As SpecialType) As Type Select Case this Case SpecialType.System_SByte Return GetType(SByte) Case SpecialType.System_Int16 Return GetType(Short) Case SpecialType.System_Int32 Return GetType(Integer) Case SpecialType.System_Int64 Return GetType(Long) Case SpecialType.System_Byte Return GetType(Byte) Case SpecialType.System_UInt16 Return GetType(UShort) Case SpecialType.System_UInt32 Return GetType(UInteger) Case SpecialType.System_UInt64 Return GetType(ULong) Case SpecialType.System_Single Return GetType(Single) Case SpecialType.System_Double Return GetType(Double) Case SpecialType.System_Decimal Return GetType(Decimal) Case SpecialType.System_Char Return GetType(Char) Case SpecialType.System_Boolean Return GetType(Boolean) Case SpecialType.System_String Return GetType(String) Case SpecialType.System_Object Return GetType(Object) Case SpecialType.System_DateTime Return GetType(Date) Case SpecialType.System_Void Return GetType(Void) Case Else Throw ExceptionUtilities.UnexpectedValue(this) End Select End Function End Module End Namespace