Changeset 396 for trunk/Include


Ignore:
Timestamp:
Dec 18, 2007, 2:55:40 AM (16 years ago)
Author:
dai
Message:

Foreachを試験的に実装。
ジェネリクスインターフェイスをサポートした。

Location:
trunk/Include
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Include/Classes/System/Collections/Generic/List.ab

    r387 r396  
    44Namespace Generic
    55
     6Interface IEnumerable<T>
     7    ' Method
     8    Function GetEnumerator() As IEnumerator<T>
     9End Interface
     10
     11Interface IEnumerator<T>
     12    ' Methods
     13    Function MoveNext() As Boolean
     14    Sub Reset()
     15    ' Property
     16    Function Current() As T
     17End Interface
     18
    619Class List<T>
    7     Implements IEnumerable, IEnumerator
     20    Implements IEnumerable<T>, IEnumerator<T>
    821    items As *T
    922    size As Long
     
    138151    @return IEnumeratorインターフェイスが返る
    139152    */
    140     Function GetEnumerator() As IEnumerator
     153    Function GetEnumerator() As IEnumerator<T>
    141154        Return This
    142155    End Function
     
    173186    @return カレントオブジェクトが返る
    174187    */
    175     Function Current() As Object
     188    Function Current() As T
    176189        If currentIndexForEnumerator = -1 Then
    177190            ' MoveNextメソッドがReset後、一度も呼び出されなかった
    178191            Return Nothing
    179192        End If
    180         Return items[currentIndexForEnumerator] As Object
     193        Return items[currentIndexForEnumerator]
    181194    End Function
    182195End Class
  • trunk/Include/system/enum.sbp

    r288 r396  
    2121    End Sub
    2222
     23    Function Operator() As Int64
     24        Return This.value
     25    End Function
    2326    Function Operator() As Long
    2427        Return This.value
     28    End Function
     29    Function Operator() As DWord
     30        Return This.value
     31    End Function
     32    Function Operator() As Boolean
     33        Return ( This.value <> 0 )
    2534    End Function
    2635
     
    4049        End If
    4150    End Function
    42 /*
    43     Function Operator or (enumBase As EnumBase) As EnumBase
    44         Return New EnumBase(This.value Or enumBase.value)
     51
     52    Function Operator or (enumBase As EnumBase) As Boolean
     53        Return ( This.value or enumBase.value ) <> 0
    4554    End Function
    4655
    47     Function Operator and (enumBase As EnumBase) As EnumBase
    48         Return New EnumBase(This.value And enumBase.value)
     56    Function Operator and (enumBase As EnumBase) As Boolean
     57        Return ( This.value and enumBase.value ) <> 0
    4958    End Function
    50 
     59/*
    5160    Function Operator xor (enumBase As EnumBase) As EnumBase
    5261        Return New EnumBase(This.value Xor enumBase.value)
Note: See TracChangeset for help on using the changeset viewer.