Ignore:
Timestamp:
Mar 28, 2007, 5:10:35 AM (18 years ago)
Author:
dai
Message:

ArrayList.Add(x As Object)メソッドを追加
ArrayList.Cloneメソッドの中のNewをオブジェクトポインタに対して行うようにした(これはDeleteしないといけないので、ホントはダメ。要修正)。
ArrayList.GetEnumerator()メソッドでエラーが起きていたので、一時的にコメントアウト。
ArrayList.Containsメソッドでエラーが起きていたので、一時的にコメントアウト。
・ArrayList_Elementクラスの初期化コードをInitメソッドに出した。
(※これはArrayListのみではありませんが、オブジェクトが参照型になったのでユーザに見せるメソッドの引数と戻り値でポインタは出さない方向でいきましょう)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Include/Classes/System/Collections/ArrayList.ab

    r118 r188  
    6262    ' Methods
    6363    '   Constractors
    64     Sub ArrrayList()
    65         data.ArrayList(16)
     64    Sub ArrayList()
     65        data.Init(16)
    6666    End Sub
    6767/*
     
    7272*/
    7373    Sub ArrayList(c As Long)
    74         data.ArrayList_Element(c)
     74        data.Init(c)
    7575    End Sub
    7676
     
    8888    End Function
    8989
     90    /*Override*/ Virtual Function Add(x As Object) As Long
     91        setLeastCapacity(data.Size + 1)
     92        data.Elm[data.Size] = VarPtr(x)
     93        Add = data.Size
     94        data.Size++
     95    End Function
     96
    9097    Virtual Sub AddRange(ByRef c As ICollection)
    9198        ' TODO: 実装
     
    109116
    110117    Virtual Function Clone() As *ArrayList
    111         Dim p = New ArrayList(data.Size)
     118        Dim p As *ArrayList
     119        p = New ArrayList(data.Size)
    112120        p->data.Size = data.Size
    113121        memcpy(p->data.Elm, This.data.Elm, SizeOf (*Object) * data.Size)
     
    115123    End Function
    116124
    117     /*Const*/ /*Override*/ Virtual Function Contains(x As *Object) As Boolean
     125    /*Const*/ /*Override*/ /*Virtual Function Contains(x As *Object) As Boolean
    118126        Dim i As Long
    119127        For i = 0 To ELM(data.Size)
     
    122130            End If
    123131        Next
    124     End Function
     132    End Function*/
    125133
    126134    ' CopyTo
    127135    /*Const*/ /*Override*/ Virtual Function GetEnumerator() As *IEnumerator
    128         Return GetEnumerator(index, count)
     136        'Return GetEnumerator(index, count)
    129137    End Function
    130138
     
    284292Class ArrayList_Element
    285293Public
     294    Sub ArrayList_Element()
     295        Init(0)
     296    End Sub
    286297    Sub ArrayList_Element(c As Long)
     298        Init(c)
     299    End Sub
     300
     301    Sub ~ArrayList_Element()
     302        free(Elm)
     303    End Sub
     304
     305    Sub Init(c As Long)
    287306        If c > 0 Then
    288307            Elm = malloc(SizeOf (*Object) * c)
     
    298317    End Sub
    299318
    300     Sub ~ArrayList_Element()
    301         free(Elm)
    302     End Sub
    303 
    304319    Sub Swap(ByRef x As ArrayList_Element)
    305320        Dim tmpElm = x.Elm
Note: See TracChangeset for help on using the changeset viewer.