Skip to content

Instantly share code, notes, and snippets.

@bonprosoft
Created June 17, 2012 17:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bonprosoft/2945064 to your computer and use it in GitHub Desktop.
Save bonprosoft/2945064 to your computer and use it in GitHub Desktop.
変数/引数管理用の補助クラス
''' <summary>
''' 変数/引数管理用の補助クラス(VBPP_Variable、及びその派生の中で使用)
''' </summary>
''' <remarks></remarks>
Public Class VBPP_VariableType
''' <summary>
''' ユーザー定義のもの(クラスや構造体など)か、そうでないか
''' </summary>
Public DefineType As VBPP_DefineType
''' <summary>
''' ユーザーが生成したクラス/構造体を使用する場合のみ使用
''' </summary>
Public Name As String
''' <summary>
''' そうでない場合は、こちらを指定
''' </summary>
Public PrimitiveType As VBPP_PrimitiveType
Public IsRef As Boolean = False
Public Overloads Sub SetType(ByVal PrimitiveType As VBPP_PrimitiveType, ByVal IsArray As Boolean)
IsRef = False
Name = ""
If IsArray = True Then
DefineType = VBPP_DefineType.PrimitiveArray
Else
DefineType = VBPP_DefineType.Primitive
End If
End Sub
Public Overloads Sub SetType(ByVal StructureName As String, ByVal IsArray As Boolean)
IsRef = False
Name = StructureName
If IsArray = True Then
DefineType = VBPP_DefineType.UserDefinedArray
Else
DefineType = VBPP_DefineType.UserDefined
End If
End Sub
Public Overloads Sub SetType(ByVal PrimitiveType As VBPP_PrimitiveType, ByVal IsArray As Boolean, ByVal IsRef As Boolean)
Me.IsRef = IsRef
Name = ""
If IsArray = True Then
DefineType = VBPP_DefineType.PrimitiveArray
Else
DefineType = VBPP_DefineType.Primitive
End If
End Sub
Public Overloads Sub SetType(ByVal StructureName As String, ByVal IsArray As Boolean, ByVal IsRef As Boolean)
Me.IsRef = IsRef
Name = StructureName
If IsArray = True Then
DefineType = VBPP_DefineType.UserDefinedArray
Else
DefineType = VBPP_DefineType.UserDefined
End If
End Sub
Public Function GetSystemType() As System.Type
If IsRef = False Then
Select Case DefineType
Case VBPP_DefineType.Primitive
Select Case PrimitiveType
Case VBPP_PrimitiveType.VBPP_INT
Return GetType(Integer)
Case VBPP_PrimitiveType.VBPP_STRING
Return GetType(String)
Case VBPP_PrimitiveType.VBPP_DOUBLE
Return GetType(Double)
Case VBPP_PrimitiveType.VBPP_BOOL
Return GetType(Boolean)
Case VBPP_PrimitiveType.VBPP_CHAR
Return GetType(Char)
Case VBPP_PrimitiveType.VBPP_OBJECT
Return GetType(Object)
Case VBPP_PrimitiveType.VBPP_VOID
Return GetType(Void)
Case VBPP_PrimitiveType.VBPP_POINTER
Return GetType(Long)
Case Else
Return GetType(Void)
End Select
Case VBPP_DefineType.PrimitiveArray
Select Case PrimitiveType
Case VBPP_PrimitiveType.VBPP_INT
Return GetType(Integer())
Case VBPP_PrimitiveType.VBPP_STRING
Return GetType(String())
Case VBPP_PrimitiveType.VBPP_DOUBLE
Return GetType(Double())
Case VBPP_PrimitiveType.VBPP_BOOL
Return GetType(Boolean())
Case VBPP_PrimitiveType.VBPP_CHAR
Return GetType(Char())
Case VBPP_PrimitiveType.VBPP_OBJECT
Return GetType(Object())
Case VBPP_PrimitiveType.VBPP_VOID
Return GetType(Void)
Case VBPP_PrimitiveType.VBPP_POINTER
Return GetType(Long())
Case Else
Return GetType(Void)
End Select
End Select
Else
Select Case DefineType
Case VBPP_DefineType.Primitive
Select Case PrimitiveType
Case VBPP_PrimitiveType.VBPP_INT
Return System.Type.GetType("System.Int32&")
Case VBPP_PrimitiveType.VBPP_STRING
Return System.Type.GetType("System.String&")
Case VBPP_PrimitiveType.VBPP_DOUBLE
Return System.Type.GetType("System.Double&")
Case VBPP_PrimitiveType.VBPP_BOOL
Return System.Type.GetType("System.Boolean&")
Case VBPP_PrimitiveType.VBPP_CHAR
Return System.Type.GetType("System.Char&")
Case VBPP_PrimitiveType.VBPP_OBJECT
Return System.Type.GetType("System.Object&")
Case VBPP_PrimitiveType.VBPP_VOID
Return GetType(Void)
Case VBPP_PrimitiveType.VBPP_POINTER
Return System.Type.GetType("System.Int64&")
Case Else
Return GetType(Void)
End Select
Case VBPP_DefineType.PrimitiveArray
Select Case PrimitiveType
Case VBPP_PrimitiveType.VBPP_INT
Return System.Type.GetType("System.Int32[]&")
Case VBPP_PrimitiveType.VBPP_STRING
Return System.Type.GetType("System.String[]&")
Case VBPP_PrimitiveType.VBPP_DOUBLE
Return System.Type.GetType("System.Double[]&")
Case VBPP_PrimitiveType.VBPP_BOOL
Return System.Type.GetType("System.Boolean[]&")
Case VBPP_PrimitiveType.VBPP_CHAR
Return System.Type.GetType("System.Char[]&")
Case VBPP_PrimitiveType.VBPP_OBJECT
Return System.Type.GetType("System.Object[]&")
Case VBPP_PrimitiveType.VBPP_VOID
Return GetType(Void)
Case VBPP_PrimitiveType.VBPP_POINTER
Return System.Type.GetType("System.Int64[]&")
Case Else
Return GetType(Void)
End Select
End Select
End If
'それ以外(構造体やクラス)
Return Nothing
End Function
End Class
Public Enum VBPP_PrimitiveType
VBPP_STRING
VBPP_INT
VBPP_DOUBLE
VBPP_BOOL
VBPP_CHAR
VBPP_POINTER
VBPP_OBJECT
VBPP_VOID
End Enum
Public Enum VBPP_DefineType
Primitive
PrimitiveArray
UserDefined
UserDefinedArray
End Enum
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment