2 // System.CStreamWriter
5 // Dietmar Maurer (dietmar@ximian.com)
6 // Paolo Molaro (lupus@ximian.com)
7 // Dick Porter (dick@ximian.com)
9 // (c) 2006 Novell, Inc. http://www.novell.com
13 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
15 // Permission is hereby granted, free of charge, to any person obtaining
16 // a copy of this software and associated documentation files (the
17 // "Software"), to deal in the Software without restriction, including
18 // without limitation the rights to use, copy, modify, merge, publish,
19 // distribute, sublicense, and/or sell copies of the Software, and to
20 // permit persons to whom the Software is furnished to do so, subject to
21 // the following conditions:
23 // The above copyright notice and this permission notice shall be
24 // included in all copies or substantial portions of the Software.
26 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
27 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
28 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
29 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
30 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
31 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
32 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
39 class CStreamWriter
: StreamWriter
{
40 TermInfoDriver driver
;
42 public CStreamWriter (Stream stream
, Encoding encoding
)
43 : base (stream
, encoding
)
45 driver
= (TermInfoDriver
) ConsoleDriver
.driver
;
48 public override void Write (char [] buffer
, int index
, int count
)
53 if (!driver
.Initialized
) {
55 base.Write (buffer
, index
, count
);
56 } catch (IOException
) {
63 int last
= index
+ count
;
71 if (driver
.IsSpecialKey (c
)) {
75 base.Write (buffer
, index
, n
);
76 } catch (IOException
) {
82 // write the special key
83 driver
.WriteSpecialKey (c
);
92 // write out the remainder of the buffer
94 base.Write (buffer
, index
, n
);
95 } catch (IOException
) {
101 public override void Write (char val
)
105 if (driver
.IsSpecialKey (val
))
106 driver
.WriteSpecialKey (val
);
108 InternalWriteChar (val
);
109 } catch (IOException
) {
114 public void WriteKey (ConsoleKeyInfo key
)
117 ConsoleKeyInfo copy
= new ConsoleKeyInfo (key
);
118 if (driver
.IsSpecialKey (copy
))
119 driver
.WriteSpecialKey (copy
);
121 InternalWriteChar (copy
.KeyChar
);
125 public void InternalWriteString (string val
)
129 } catch (IOException
) {
133 public void InternalWriteChar (char val
)
137 } catch (IOException
) {
141 public void InternalWriteChars (char [] buffer
, int n
)
144 base.Write (buffer
, 0, n
);
145 } catch (IOException
) {
149 public override void Write (char [] val
)
151 Write (val
, 0, val
.Length
);
154 public override void Write (string val
)
159 if (driver
.Initialized
)
160 Write (val
.ToCharArray ());
164 } catch (IOException
){