StringWriter.cs 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. //
  2. // System.IO.StringWriter
  3. //
  4. // Author: Marcin Szczepanski ([email protected])
  5. //
  6. using System.Text;
  7. namespace System.IO {
  8. public class StringWriter : TextWriter {
  9. protected StringBuilder internalString;
  10. public StringWriter() {
  11. internalString = new StringBuilder();
  12. }
  13. public StringWriter( IFormatProvider formatProvider ) {
  14. internalFormatProvider = formatProvider;
  15. }
  16. public StringWriter( StringBuilder sb ) {
  17. internalString = sb;
  18. }
  19. public StringWriter( StringBuilder sb, IFormatProvider formatProvider ) {
  20. internalString = sb;
  21. internalFormatProvider = formatProvider;
  22. }
  23. public override System.Text.Encoding Encoding {
  24. get {
  25. // TODO: Implement
  26. return null;
  27. }
  28. }
  29. public override void Close() {
  30. Dispose( true );
  31. }
  32. protected override void Dispose( bool disposing ) { }
  33. public virtual StringBuilder GetStringBuilder() {
  34. return internalString;
  35. }
  36. public override string ToString() {
  37. return internalString.ToString();
  38. }
  39. public override void Write( char value ) {
  40. internalString.Append( value );
  41. }
  42. public override void Write( string value ) {
  43. internalString.Append( value );
  44. }
  45. public override void Write( char[] buffer, int index, int count ) {
  46. if( buffer == null ) {
  47. throw new ArgumentNullException();
  48. } else if( index < 0 || count < 0 ) {
  49. throw new ArgumentOutOfRangeException();
  50. } else if( index > buffer.Length || index + count > buffer.Length ) {
  51. throw new ArgumentException();
  52. }
  53. char[] writeBuffer = new char[ count ];
  54. Array.Copy( buffer, index, writeBuffer, 0, count );
  55. internalString.Append( writeBuffer );
  56. }
  57. }
  58. }