Ignore:
Timestamp:
Dec 28, 2008, 12:18:53 AM (15 years ago)
Author:
イグトランス (egtra)
Message:

TextWriter同様TextReaderでバッファリングし、StreamReaderはMultiByteToWideChar固定で仮実装。これで、マルチバイトモードでもStringReaderが使えるようにした。
(#235)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ab5.0/ablib/src/Classes/System/IO/StringReader.ab

    r662 r665  
    2323            Throw New ArgumentNullException("str")
    2424        End If
    25         Dim length = GetStr(str, s)
    26         If length > LONG_MAX Then
    27             Throw New ArgumentException("Must be Length <= LONG_MAX", "str")
    28         End If
    29         len = length As Long
    30         i = 0
     25        Buffer.Append(str)
    3126    End Sub
    3227
    33     /*
    34     @date 2008/02/26
    35     @auther Egtra
    36     */
    37     Override Function Peek() As Long
    38         If i >= len Then
    39             Peek = -1
    40         Else
    41             Peek = s[i]
    42         End If
    43     End Function
    4428
    45     /*
    46     @date 2008/02/26
    47     @auther Egtra
    48     */
    49     Override Function Read() As Long
    50         Read = Peek()
    51         i++
    52     End Function
    53 
    54     /*
    55     @date 2008/02/26
    56     @auther Egtra
    57     */
    58 /*
    59     Override Function ReadToEnd() As String
    60         ReadToEnd = s.Substring(i)
    61         i = s.Length
    62     End Function
    63 */
    6429Protected
    6530    /*
     
    6833    */
    6934    Override Sub Dispose(disposing As Boolean)
    70         s = Nothing
    71         i = 0
    7235    End Sub
    73 
    74     /*
    75     @date 2008/02/26
    76     @auther Egtra
    77     */
    78     Override Function ReadImpl(buffer As *WCHAR, count As Long) As Long
    79         ReadImpl = Math.Min(count, len - i)
    80         ActiveBasic.Strings.ChrCopy(buffer, VarPtr(s[i]), ReadImpl As SIZE_T) 'ToDo: ポインタに対する+演算
    81     End Function
    82 
    83 Private
    84     s As *WCHAR
    85     len As Long
    86     i As Long
    8736End Class
    8837
Note: See TracChangeset for help on using the changeset viewer.