Changeset 352


Ignore:
Timestamp:
Oct 4, 2007, 2:50:09 AM (17 years ago)
Author:
dai
Message:

System.Collections.Generic.List.RemoveAtメソッドを追加
デリゲート型に対する"-"演算子を追加

Location:
trunk
Files:
6 edited

Legend:

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

    r344 r352  
    109109            Return False
    110110        End If
     111
     112        RemoveAt( index )
     113        Return True
     114    End Function
     115
     116    /*!
     117    @brief  List内の指定したインデックスの要素を削除する
     118    @author Daisuke Yamamoto
     119    @date   2007/10/03
     120    @return 値が削除されたときはTrue、されなかったときはFlaseが返る
     121    */
     122    Sub RemoveAt( index As Long )
    111123        memmove( items + index*SizeOf(VoidPtr), items + (index+1)*SizeOf(VoidPtr), (size-(index+1))*SizeOf(VoidPtr) )
    112124        Realloc( size - 1 )
    113125        size--
    114         Return True
    115     End Function
     126    End Sub
    116127End Class
    117128
  • trunk/Include/Classes/System/Delegate.ab

    r340 r352  
    1818        This.methodPtr = methodPtr
    1919    End Sub
     20
     21    Function IsEqual( sd As _SimpleDelegate ) As Boolean
     22        Return ( This.hasThisPtr = sd.hasThisPtr and ObjPtr(This.object) = ObjPtr(sd.object) and This.methodPtr = sd.methodPtr )
     23    End Function
    2024End Class
    2125
     
    2832        For i=0 To ELM(dg.simpleDelegates.Count)
    2933            simpleDelegates.Add( dg.simpleDelegates[i] )
     34        Next
     35    End Sub
     36
     37    Sub _Delete( dg As DelegateBase )
     38        Dim i As Long
     39        For i=0 To ELM(This.simpleDelegates.Count)
     40            Dim i2 As Long
     41            Dim isExist = False
     42            For i2=0 To ELM(dg.simpleDelegates.Count)
     43                If This.simpleDelegates[i].IsEqual( dg.simpleDelegates[i2] ) Then
     44                    isExist = True
     45                End If
     46            Next
     47            If isExist Then
     48                This.simpleDelegates.RemoveAt( i )
     49            End If
    3050        Next
    3151    End Sub
  • trunk/TestCase/SimpleTestCase/DelegateTest.ab

    r343 r352  
    1515    proc5Flag As Boolean
    1616    proc6Flag As Boolean
     17    proc8Flag As Boolean
    1718
    1819    Static staticProc1Flag = False As Boolean
     
    3031        proc5Flag = False
    3132        proc6Flag = False
     33        proc8Flag = True
    3234    End Sub
    3335    Function CheckFlags() As Boolean
    34         Return proc1Flag and proc2Flag and proc3Flag and proc4Flag and proc5Flag and proc6Flag
     36        Return proc1Flag and proc2Flag and proc3Flag and proc4Flag and proc5Flag and proc6Flag and proc8Flag
    3537    End Function
    3638
     
    6264        Return "Proc7 result[" + str + "]"
    6365    End Function
     66
     67    Sub Proc8( a As String )
     68        proc8Flag = False
     69    End Sub
    6470End Class
    6571
     
    7278    dg4 += AddressOf(testObj.Proc5)
    7379    dg4 += AddressOf(testObj.Proc6)
     80    dg4 += AddressOf(testObj.Proc8)
     81    dg4 -= AddressOf(testObj.Proc8)
    7482
    7583    dg1()
  • trunk/TestCase/SimpleTestCase/SimpleTestCase.idx

    r340 r352  
    2626#include "DelegateTest.ab"
    2727_ClearNamespaceImported
    28 
    29 'リソースファイル
    30 #include "resource.ab"
    31 #resource "SimpleTestCase.rc"
  • trunk/TestCase/SimpleTestCase/SimpleTestCase.pj

    r340 r352  
    77#NAME=SimpleTestCase
    88
    9 #PLATFORM=32
     9#PLATFORM=64
    1010
    1111#USEWINDOW=0
     
    2323#DEBUG_EXE_PATH=
    2424
    25 #RESOURCE=SimpleTestCase.rc
     25#RESOURCE=0
    2626
    2727#SOURCE
  • trunk/bin/SubOperation/templates/delegate_class.tab

    r342 r352  
    77        End Sub
    88        Sub #name#( dg As #name# )
    9             Add( dg )
     9            _Add( dg )
    1010        End Sub
    1111
     
    2424        #call_method_end#
    2525
    26         Sub Add( dg As #name# )
    27             _Add( dg )
    28         End Sub
    29 
    3026        Function Operator+ ( dg As #name# ) As #name#
    3127            Dim result = New #name#( This )
    3228            result._Add( dg )
     29            Return result
     30        End Function
     31
     32        Function Operator- ( dg As #name# ) As #name#
     33            Dim result = New #name#( This )
     34            result._Delete( dg )
    3335            Return result
    3436        End Function
Note: See TracChangeset for help on using the changeset viewer.