source: trunk/ab5.0/ablib/src/system/enum.sbp @ 560

Last change on this file since 560 was 532, checked in by dai, 15 years ago

If/While?/Doなどのステートメントに引き渡す式の戻り値がクラス型の場合はBoolean型へのキャストを試みるようにした。
・キャスト演算子が存在せずに型変換できなかった場合のエラーメッセージを変更した。
・オーバーロード解決時、戻り値に型パラメータだった場合に型解決されずに、正しいオーバーロード解決が行われない不具合を修正。
・演算子メソッドの戻り値が型パラメータだったとき、型解決が行われない不具合を修正。

File size: 1.5 KB
RevLine 
[475]1Class EnumBase<T As EnumBase>
[1]2Protected
[210]3    value As Long
[282]4    lpszName As LPTSTR
[1]5Public
[282]6    Sub EnumBase(value As Long,lpszName As LPTSTR)
[210]7        This.value = value
8        This.lpszName = lpszName
[1]9    End Sub
[282]10
[446]11    Sub EnumBase( enumBase As EnumBase )
12        This.value = enumBase.value
13        This.lpszName = enumBase.lpszName
14    End Sub
15
[1]16    Sub ~EnumBase()
17    End Sub
18
[210]19    Override Function ToString() As String
20        Return New String( lpszName )
21    End Function
[1]22
[210]23    Sub Copy(obj As EnumBase)
24        This.value = obj.value
25        This.lpszName = obj.lpszName
[1]26    End Sub
[282]27
[396]28    Function Operator() As Int64
29        Return This.value
30    End Function
[1]31    Function Operator() As Long
[210]32        Return This.value
[1]33    End Function
[396]34    Function Operator() As DWord
35        Return This.value
36    End Function
37    Function Operator() As Boolean
38        Return ( This.value <> 0 )
39    End Function
[26]40
[210]41    Function Operator == (value As Long) As Boolean
[475]42        Return ( This.value = value )
[26]43    End Function
[131]44
[475]45    Function Operator == (enumObj As T) As Boolean
46        Return ( This.value = enumObj.value )
[131]47    End Function
[396]48
[406]49    Function Operator <> (value As Long) As Boolean
50        Return Not( This = value)
51    End Function
52
[475]53    Function Operator <> (enumObj As T) As Boolean
54        Return Not( This = enumObj)
[406]55    End Function
56
[475]57    Function Operator or (enumObj As T) As T
58        Return New EnumBase( This.value or enumObj.value, This.lpszName )
[406]59    End Function
60
[475]61    Function Operator and (enumObj As T) As T
62        Return New EnumBase( This.value and enumObj.value, This.lpszName )
[406]63    End Function
[210]64End Class
Note: See TracBrowser for help on using the repository browser.