Changeset 386


Ignore:
Timestamp:
Nov 23, 2007, 11:39:44 AM (17 years ago)
Author:
dai
Message:

StrPtr内の判定ミスを修正。
SPrintFクラス内のx64に対するコードを修正。
ArrayListクラスのIListインターフェイス実装を一旦保留。
ListクラスにIEnumeratable、IEnumeratorインターフェイスを実装(まだ実装中…)。

Location:
trunk/Include
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Include/Classes/ActiveBasic/Strings/SPrintF.ab

    r385 r386  
    12051205*/
    12061206Function SPrintf(format As String, params As *Object, n As SIZE_T) As String
    1207     Dim i = 0 As DWord
     1207    Dim i = 0 As SIZE_T
    12081208    Dim paramsCount = 0 As SIZE_T
    12091209    Dim fmt = StrPtr(format)
     
    12111211    Do
    12121212        Dim last = format.Length - (((fmt - StrPtr(format)) \ SizeOf (StrChar)) As LONG_PTR) As Long 'po
    1213         Dim pos = ActiveBasic.Strings.ChrFind(fmt, last, &h25 As StrChar) '&h25 = %
     1213        Dim pos = ActiveBasic.Strings.ChrFind(fmt, last, &h25 As StrChar) As Long '&h25 = %
    12141214        If pos = -1 Then
    12151215            s.Append(fmt, 0, last)
     
    12701270                s.Append(FormatString(params[i] As String, precision, fieldWidth, flags))
    12711271            Case &h63 'c
    1272                 s.Append(FormatCharacter(params[i] As BoxedStrChar, precision, fieldWidth, flags))
     1272                s.Append(FormatCharacter(params[i] As BoxedStrChar, precision, fieldWidth, flags) As Char)
    12731273'           Case &h6e 'n
    12741274            Case &h25 '%
     
    12991299    param4 As Object, param5 As Object, param6 As Object,
    13001300    param7 As Object, param8 As Object, param9 As Object) As String
    1301 #ifdef _WIN64
    1302     'コンパイラがどういうコードを吐くのかわからないので、安全策を取る。
    1303     Dim params[9] = [param0, param1, param2, param3, param4,
    1304         param5, param6, param7, param8, param9] As Object
    1305 #else
     1301
    13061302    Dim params = VarPtr(param0) As *Object
    1307 #endif
     1303
    13081304    SPrintf = ActiveBasic.Strings.Detail.SPrintf(format, params, 10)
    13091305End Function
     
    13211317    param4 As Object, param5 As Object, param6 As Object,
    13221318    param7 As Object, param8 As Object) As String
    1323 #ifdef _WIN64
    1324     Dim params[8] = [param0, param1, param2, param3, param4,
    1325         param5, param6, param7, param8] As Object
    1326 #else
     1319
    13271320    Dim params = VarPtr(param0) As *Object
    1328 #endif
     1321
    13291322    SPrintf = ActiveBasic.Strings.Detail.SPrintf(format, params, 9)
    13301323End Function
     
    13421335    param4 As Object, param5 As Object, param6 As Object,
    13431336    param7 As Object) As String
    1344 #ifdef _WIN64
    1345     Dim params[7] = [param0, param1, param2, param3, param4,
    1346         param5, param6, param7] As Object
    1347 #else
     1337
    13481338    Dim params = VarPtr(param0) As *Object
    1349 #endif
     1339
    13501340    SPrintf = ActiveBasic.Strings.Detail.SPrintf(format, params, 8)
    13511341End Function
     
    13621352    param1 As Object, param2 As Object, param3 As Object,
    13631353    param4 As Object, param5 As Object, param6 As Object) As String
    1364 #ifdef _WIN64
    1365     Dim params[6] = [param0, param1, param2, param3, param4,
    1366         param5, param6] As Object
    1367 #else
     1354
    13681355    Dim params = VarPtr(param0) As *Object
    1369 #endif
     1356
    13701357    SPrintf = ActiveBasic.Strings.Detail.SPrintf(format, params, 7)
    13711358End Function
     
    13821369    param1 As Object, param2 As Object, param3 As Object,
    13831370    param4 As Object, param5 As Object) As String
    1384 #ifdef _WIN64
    1385     Dim params[5] = [param0, param1, param2, param3, param4,
    1386         param5] As Object
    1387 #else
     1371
    13881372    Dim params = VarPtr(param0) As *Object
    1389 #endif
     1373
    13901374    SPrintf = ActiveBasic.Strings.Detail.SPrintf(format, params, 6)
    13911375End Function
     
    14021386    param1 As Object, param2 As Object, param3 As Object,
    14031387    param4 As Object) As String
    1404 #ifdef _WIN64
    1405     Dim params[4] = [param0, param1, param2, param3, param4] As Object
    1406 #else
     1388
    14071389    Dim params = VarPtr(param0) As *Object
    1408 #endif
     1390
    14091391    SPrintf = ActiveBasic.Strings.Detail.SPrintf(format, params, 5)
    14101392End Function
     
    14201402Function SPrintf(format As String, param0 As Object,
    14211403    param1 As Object, param2 As Object, param3 As Object) As String
    1422 #ifdef _WIN64
    1423     Dim params[3] = [param0, param1, param2, param3] As Object
    1424 #else
     1404
    14251405    Dim params = VarPtr(param0) As *Object
    1426 #endif
     1406
    14271407    SPrintf = ActiveBasic.Strings.Detail.SPrintf(format, params, 4)
    14281408End Function
     
    14381418Function SPrintf(format As String, param0 As Object,
    14391419    param1 As Object, param2 As Object) As String
    1440 #ifdef _WIN64
    1441     Dim params[2] = [param0, param1, param2] As Object
    1442 #else
     1420
    14431421    Dim params = VarPtr(param0) As *Object
    1444 #endif
     1422
    14451423    SPrintf = ActiveBasic.Strings.Detail.SPrintf(format, params, 3)
    14461424End Function
     
    14561434Function SPrintf(format As String, param0 As Object,
    14571435    param1 As Object) As String
    1458 #ifdef _WIN64
    1459     Dim params[1] = [param0, param1] As Object
    1460 #else
     1436
    14611437    Dim params = VarPtr(param0) As *Object
    1462 #endif
     1438
    14631439    SPrintf = ActiveBasic.Strings.Detail.SPrintf(format, params, 2)
    14641440End Function
  • trunk/Include/Classes/System/Collections/ArrayList.ab

    r381 r386  
    77
    88Class ArrayList
    9     Implements IList /*, ICollection, IEnumerable, ICloneable*/
     9    'Implements IList /*, ICollection, IEnumerable, ICloneable*/
    1010
    1111    pObject As *Object
     
    7676    End Function
    7777
    78     /*Const*/ Override Function IsFixedSize() As Boolean
     78    /*Const*/ Function IsFixedSize() As Boolean
    7979        Return False
    8080    End Function
    8181
    82     /*Const*/ Override Function IsReadOnly() As Boolean
     82    /*Const*/ Function IsReadOnly() As Boolean
    8383        Return False
    8484    End Function
     
    219219    End Function
    220220
    221     /*Const*/ Override Function IndexOf(object As Object) As Long
     221    /*Const*/ Function IndexOf(object As Object) As Long
    222222        Return IndexOf(object, 0, size)
    223223    End Function
     
    238238    End Function
    239239
    240     Override Sub Insert(i As Long, object As Object)
     240    Sub Insert(i As Long, object As Object)
    241241        SetLeastCapacity(size + 1)
    242242        memmove(VarPtr(pObject[i + 1]), VarPtr(pObject[i]), SizeOf (*Object) * (size - i))
     
    261261    End Function
    262262
    263     Override Sub Remove(object As Object)
     263    Sub Remove(object As Object)
    264264        Dim i = IndexOf(object)
    265265        If i > 0 Then
     
    268268    End Sub
    269269
    270     Override Sub RemoveAt(i As Long)
     270    Sub RemoveAt(i As Long)
    271271        RemoveRange(i, 1)
    272272    End Sub
     
    307307    End Sub
    308308
    309     /*Override*/ Override Function ToString() As String
     309    Override Function ToString() As String
    310310        Return "System.Collections.ArrayList"
    311311    End Function
  • trunk/Include/Classes/System/Collections/Generic/List.ab

    r352 r386  
    55
    66Class List<T>
     7    Implements IEnumerable, IEnumerator
    78    items As *T
    89    size As Long
     10
     11    currentIndexForEnumerator As Long
    912
    1013    Sub Realloc( allocateSize As Long )
     
    125128        size--
    126129    End Sub
     130
     131    /*!
     132    @brief  IEnumeratorインターフェイスを取得する
     133    @author Daisuke Yamamoto
     134    @date   2007/11/19
     135    @return IEnumeratorインターフェイスが返る
     136    */
     137    Function GetEnumerator() As IEnumerator
     138        Return This
     139    End Function
     140
     141    /*!
     142    @brief  イテレータのカレントインデックスを増加させる
     143    @author Daisuke Yamamoto
     144    @date   2007/11/19
     145    @return 上限に達していなければTrueが、達していればFalseが返る
     146    */
     147    Function MoveNext() As Boolean
     148        If currentIndexForEnumerator >= size Then
     149            ' 上限に達した
     150            Return False
     151        End If
     152
     153        currentIndexForEnumerator ++
     154        Return True
     155    End Function
     156
     157    /*!
     158    @brief  イテレータをリセットする
     159    @author Daisuke Yamamoto
     160    @date   2007/11/19
     161    */
     162    Sub Reset()
     163        currentIndexForEnumerator = 0
     164    End Sub
     165
     166    /*!
     167    @brief  イテレータのカレントオブジェクトを取得する
     168    @author Daisuke Yamamoto
     169    @date   2007/11/19
     170    @return カレントオブジェクトが返る
     171    */
     172    Function Current() As Object
     173        Return items[currentIndexForEnumerator] As Object
     174    End Function
    127175End Class
    128176
  • trunk/Include/Classes/System/Collections/misc.ab

    r355 r386  
    4949Interface IEnumerable
    5050    ' Method
    51 '   Function GetEnumerator() As *IEnumerator
     51    Function GetEnumerator() As IEnumerator
    5252End Interface
    5353
     
    5757    Sub Reset()
    5858    ' Property
    59     Function Current() As *Object
     59    Function Current() As Object
    6060End Interface
    6161
  • trunk/Include/system/string.sbp

    r385 r386  
    99
    1010Function StrPtr(s As String) As *StrChar
    11     If ActiveBasic.IsNothing(s) Then
     11    If Not ActiveBasic.IsNothing(s) Then
    1212        StrPtr = s.StrPtr
    1313    End If
Note: See TracChangeset for help on using the changeset viewer.