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
Line 
1Class EnumBase<T As EnumBase>
2Protected
3 value As Long
4 lpszName As LPTSTR
5Public
6 Sub EnumBase(value As Long,lpszName As LPTSTR)
7 This.value = value
8 This.lpszName = lpszName
9 End Sub
10
11 Sub EnumBase( enumBase As EnumBase )
12 This.value = enumBase.value
13 This.lpszName = enumBase.lpszName
14 End Sub
15
16 Sub ~EnumBase()
17 End Sub
18
19 Override Function ToString() As String
20 Return New String( lpszName )
21 End Function
22
23 Sub Copy(obj As EnumBase)
24 This.value = obj.value
25 This.lpszName = obj.lpszName
26 End Sub
27
28 Function Operator() As Int64
29 Return This.value
30 End Function
31 Function Operator() As Long
32 Return This.value
33 End Function
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
40
41 Function Operator == (value As Long) As Boolean
42 Return ( This.value = value )
43 End Function
44
45 Function Operator == (enumObj As T) As Boolean
46 Return ( This.value = enumObj.value )
47 End Function
48
49 Function Operator <> (value As Long) As Boolean
50 Return Not( This = value)
51 End Function
52
53 Function Operator <> (enumObj As T) As Boolean
54 Return Not( This = enumObj)
55 End Function
56
57 Function Operator or (enumObj As T) As T
58 Return New EnumBase( This.value or enumObj.value, This.lpszName )
59 End Function
60
61 Function Operator and (enumObj As T) As T
62 Return New EnumBase( This.value and enumObj.value, This.lpszName )
63 End Function
64End Class
Note: See TracBrowser for help on using the repository browser.