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
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.