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

Last change on this file since 560 was 532, checked in by dai, 16 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.