source: trunk/Include/Classes/System/Collections/List.ab@ 300

Last change on this file since 300 was 298, checked in by dai, 17 years ago

Listクラスのプロトタイプ(現revisionでは動きません)

File size: 2.0 KB
Line 
1
2Namespace System
3Namespace Collections
4
5Class List<T>
6 items As *T
7 size As Long
8
9 Sub Realloc( allocateSize As Long )
10 items = realloc( items, allocateSize * SizeOf(VoidPtr) )
11 End Sub
12
13Public
14 Sub List()
15 items = GC_malloc( 1 )
16 End Sub
17 Sub ~List()
18 End Sub
19
20 /*!
21 @brief インデクサ
22 @author Daisuke Yamamoto
23 @date 2007/08/22
24 @param インデックス
25 */
26 Function Operator[] ( index As Long ) As T
27 Return items[index]
28 End Function
29
30
31 '----------------------------------------------------------------
32 ' パブリック プロパティ
33 '----------------------------------------------------------------
34
35 /*!
36 @brief Listに格納されている要素の数を取得する
37 @author Daisuke Yamamoto
38 @date 2007/08/22
39 */
40 Function Count() As Long
41 Return size
42 End Function
43
44
45 '----------------------------------------------------------------
46 ' パブリック メソッド
47 '----------------------------------------------------------------
48
49 /*!
50 @brief Listの末端に要素を追加する
51 @author Daisuke Yamamoto
52 @date 2007/08/22
53 @param 追加するオブジェクト
54 */
55 Sub Add( item As T )
56 Realloc( size + 1 )
57
58 items[size] = item
59 size++
60 End Sub
61
62 /*!
63 @brief Listからすべての要素を削除する
64 @author Daisuke Yamamoto
65 @date 2007/08/22
66 */
67 Sub Clear()
68 size = 0
69 End Sub
70
71 /*!
72 @brief List内から、最初に出現する値のインデックスを取得する
73 @author Daisuke Yamamoto
74 @date 2007/08/22
75 @return インデックス(見つからなかったときは-1)
76 */
77 Function IndexOf( item As T ) As Long
78 Dim i As Long
79 For i = 0 To ELM(size)
80 If items[i].Equals(item) Then
81 Return i
82 End If
83 Next
84 Return -1
85 End Function
86
87 /*!
88 @brief List内の指定したインデックスの位置に要素を挿入する
89 @author Daisuke Yamamoto
90 @date 2007/08/22
91 */
92 Sub Insert( index As Long, item As T )
93 Realloc( size + 1 )
94 memmove( items + (index+1)*SizeOf(VoidPtr), items + index*SizeOf(VoidPtr), (size-index)*SizeOf(VoidPtr) )
95 items[index] = item
96 size++
97 End Sub
98End Class
99
100End Namespace
101End Namespace
Note: See TracBrowser for help on using the repository browser.