Ignore:
Timestamp:
Nov 3, 2008, 11:42:22 PM (15 years ago)
Author:
イグトランス (egtra)
Message:

TextWriter及びその派生クラスをEncodingを用いるように変更。UTF8EncodingをEncodingの変更に追従させていないので、それ関連を一時的にコメントアウト。

File:
1 edited

Legend:

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

    r523 r653  
    1010*/
    1111Class TextWriter
     12    Implements System.IDisposable
    1213Public
    1314    Virtual Sub ~TextWriter()
     
    2627    End Sub
    2728
    28     Sub TextWriter()
    29         newLine = Environment.NewLine
    30     End Sub
    31 
    3229    Virtual Sub Flush()
    3330    End Sub
    3431
    35     Abstract Sub Write(s As String)
    36     Virtual Sub Write(x As Boolean)
    37         Write(Str$(x))
     32    'これ以外全てのWrite/WriteLineは、最終的にこのWriteを呼ぶ。
     33    Sub Write(x As String)
     34        buf.Append(x)
     35        If buf.Length >= 4096 Then
     36            Flush()
     37        End If
    3838    End Sub
    3939   
    40     Virtual Sub Write(x As Char)
    41         Write(Chr$(x))
     40    Sub Write(x As Boolean)
     41        buf.Append(x)
     42    End Sub
     43   
     44    Sub Write(x As SByte)
     45        buf.Append(x)
    4246    End Sub
    4347
    44     Virtual Sub Write(x As Byte)
    45         Write(Str$(x))
    46     End Sub
    47 #ifdef UNICODE
    48     Virtual Sub Write(x As SByte)
    49         Write(Str$(x))
    50     End Sub
    51 #else
    52     Virtual Sub Write(x As Word)
    53         Write(Str$(x))
    54     End Sub
    55 #endif
    56     Virtual Sub Write(x As Integer)
    57         Write(Str$(x))
     48    Sub Write(x As Byte)
     49        buf.Append(x)
    5850    End Sub
    5951
    60     Virtual Sub Write(x As DWord)
    61         Write(Str$(x))
     52    Sub Write(x As Word)
     53        buf.Append(x)
    6254    End Sub
    6355
    64     Virtual Sub Write(x As Long)
    65         Write(Str$(x))
     56    Sub Write(x As Integer)
     57        buf.Append(x)
    6658    End Sub
    6759
    68     Virtual Sub Write(x As QWord)
    69         Write(Str$(x))
     60    Sub Write(x As DWord)
     61        buf.Append(x)
    7062    End Sub
    7163
    72     Virtual Sub Write(x As Int64)
    73         Write(Str$(x))
     64    Sub Write(x As Long)
     65        buf.Append(x)
    7466    End Sub
    7567
    76     Virtual Sub Write(x As Single)
    77         Write(Str$(x))
     68    Sub Write(x As QWord)
     69        buf.Append(x)
    7870    End Sub
    7971
    80     Virtual Sub Write(x As Double)
    81         Write(Str$(x))
     72    Sub Write(x As Int64)
     73        buf.Append(x)
    8274    End Sub
    8375
    84     Virtual Sub Write(x As Object)
    85         Write(x.ToString)
     76    Sub Write(x As Single)
     77        buf.Append(x)
     78    End Sub
     79
     80    Sub Write(x As Double)
     81        buf.Append(x)
     82    End Sub
     83
     84    Sub Write(x As Object)
     85        buf.Append(x)
    8686    End Sub
    8787
    8888    Sub WriteLine()
    89         Write(newLine)
     89        Write(Environment.NewLine)
    9090    End Sub
    9191
    92     Sub WriteLine(s As String)
    93         Write(s)
     92    Sub WriteLine(x As String)
     93        Write(x)
    9494        WriteLine()
    9595    End Sub
    9696
    9797    Sub WriteLine(x As Boolean)
    98         Write(Str$(x))
    99         WriteLine()
    100     End Sub
    101    
    102     Sub WriteLine(x As Char)
    103         Write(Chr$(x))
     98        Write(x)
    10499        WriteLine()
    105100    End Sub
    106101
    107102    Sub WriteLine(x As Byte)
    108         Write(Str$(x))
     103        Write(x)
    109104        WriteLine()
    110105    End Sub
    111 #ifdef UNICODE
     106   
    112107    Sub WriteLine(x As SByte)
    113         Write(Str$(x))
     108        Write(x)
    114109        WriteLine()
    115110    End Sub
    116 #else
     111
    117112    Sub WriteLine(x As Word)
    118         Write(Str$(x))
     113        Write(x)
    119114        WriteLine()
    120115    End Sub
    121 #endif
     116
    122117    Sub WriteLine(x As Integer)
    123         Write(Str$(x))
     118        Write(x)
    124119        WriteLine()
    125120    End Sub
    126121
    127122    Sub WriteLine(x As DWord)
    128         Write(Str$(x))
     123        Write(x)
    129124        WriteLine()
    130125    End Sub
    131126
    132127    Sub WriteLine(x As Long)
    133         Write(Str$(x))
     128        Write(x)
    134129        WriteLine()
    135130    End Sub
    136131
    137132    Sub WriteLine(x As QWord)
    138         Write(Str$(x))
     133        Write(x)
    139134        WriteLine()
    140135    End Sub
    141136
    142137    Sub WriteLine(x As Int64)
    143         Write(Str$(x))
     138        Write(x)
    144139        WriteLine()
    145140    End Sub
    146141
    147142    Sub WriteLine(x As Single)
    148         Write(Str$(x))
     143        Write(x)
    149144        WriteLine()
    150145    End Sub
    151146
    152147    Sub WriteLine(x As Double)
    153         Write(Str$(x))
     148        Write(x)
    154149        WriteLine()
    155150    End Sub
    156151
    157152    Sub WriteLine(x As Object)
    158         Write(x.ToString)
     153        Write(x)
    159154        WriteLine()
    160155    End Sub
    161 
    162     /*
    163     @brief 改行文字の設定
    164     @date 2007/03/05
    165     @auther Egtra
    166     */
    167     Sub NewLine(n As String)
    168         newLine = n
    169     End Sub
    170     /*
    171     @brief 改行文字の取得
    172     @date 2007/03/05
    173     @auther Egtra
    174     */
    175     Function NewLine() As String
    176     End Function
    177156
    178157    Static Function Synchronized(writer As TextWriter) As TextWriter
     
    180159        Return writer
    181160    End Function
     161
    182162Protected
     163    Sub TextWriter()
     164        buf = New Text.StringBuilder
     165    End Sub
     166
     167    Sub TextWriter(buffer As Text.StringBuilder)
     168        If ActiveBasic.IsNothing(buffer) Then
     169            Throw New ArgumentNullException("buffer")
     170        End If
     171        buf = buffer
     172    End Sub
     173
     174    Function Buffer() As Text.StringBuilder
     175        Buffer = buf
     176    End Function
     177
    183178    Virtual Sub Dispose(disposing As Boolean)
     179        If disposing Then
     180            Flush()
     181            buf = Nothing
     182        End If
    184183    End Sub
    185184
    186185Private
    187     newLine As String
     186    buf As Text.StringBuilder
    188187End Class
    189188
Note: See TracChangeset for help on using the changeset viewer.