TextWriter.cs 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289
  1. //
  2. // System.IO.TextWriter
  3. //
  4. // Author: Marcin Szczepanski ([email protected])
  5. //
  6. // TODO: Implement the Thread Safe stuff
  7. using System.Text;
  8. namespace System.IO {
  9. [Serializable]
  10. public abstract class TextWriter : MarshalByRefObject, IDisposable {
  11. protected TextWriter() {
  12. CoreNewLine = "\n".ToCharArray ();
  13. }
  14. protected TextWriter( IFormatProvider formatProvider ) {
  15. internalFormatProvider = formatProvider;
  16. }
  17. protected char[] CoreNewLine;
  18. internal IFormatProvider internalFormatProvider;
  19. public static readonly TextWriter Null = new NullTextWriter ();
  20. public abstract Encoding Encoding { get; }
  21. public virtual IFormatProvider FormatProvider {
  22. get {
  23. return internalFormatProvider;
  24. }
  25. }
  26. public virtual string NewLine {
  27. get {
  28. return new String(CoreNewLine);
  29. }
  30. set {
  31. CoreNewLine = value.ToCharArray();
  32. }
  33. }
  34. public virtual void Close () {
  35. Dispose (true);
  36. }
  37. protected virtual void Dispose (bool disposing) { }
  38. void System.IDisposable.Dispose () {
  39. Dispose (true);
  40. }
  41. public virtual void Flush()
  42. {
  43. // do nothing
  44. }
  45. [MonoTODO]
  46. public static TextWriter Synchronized (TextWriter writer)
  47. {
  48. // TODO: Implement.
  49. return Null;
  50. }
  51. public virtual void Write (bool value)
  52. {
  53. Write (value.ToString ());
  54. }
  55. public virtual void Write (char value)
  56. {
  57. Write (value.ToString (internalFormatProvider));
  58. }
  59. public virtual void Write (char[] value)
  60. {
  61. if (value != null)
  62. Write (new String (value));
  63. }
  64. public virtual void Write (decimal value)
  65. {
  66. Write (value.ToString (internalFormatProvider));
  67. }
  68. public virtual void Write (double value)
  69. {
  70. Write (value.ToString (internalFormatProvider));
  71. }
  72. public virtual void Write (int value)
  73. {
  74. Write (value.ToString (internalFormatProvider));
  75. }
  76. public virtual void Write (long value)
  77. {
  78. Write (value.ToString (internalFormatProvider));
  79. }
  80. public virtual void Write (object value)
  81. {
  82. if (value != null)
  83. Write (value.ToString ());
  84. }
  85. public virtual void Write (float value)
  86. {
  87. Write (value.ToString (internalFormatProvider));
  88. }
  89. public virtual void Write (string value)
  90. {
  91. // do nothing
  92. }
  93. [CLSCompliant(false)]
  94. public virtual void Write (uint value)
  95. {
  96. Write (value.ToString (internalFormatProvider));
  97. }
  98. [CLSCompliant(false)]
  99. public virtual void Write (ulong value)
  100. {
  101. Write (value.ToString (internalFormatProvider));
  102. }
  103. public virtual void Write (string format, object arg0)
  104. {
  105. Write (String.Format (format, arg0));
  106. }
  107. public virtual void Write (string format, params object[] arg)
  108. {
  109. Write (String.Format (format, arg));
  110. }
  111. public virtual void Write (char[] buffer, int index, int count)
  112. {
  113. Write (new String (buffer, index, count));
  114. }
  115. public virtual void Write (string format, object arg0, object arg1)
  116. {
  117. Write (String.Format (format, arg0, arg1));
  118. }
  119. public virtual void Write (string format, object arg0, object arg1, object arg2 )
  120. {
  121. Write (String.Format (format, arg0, arg1, arg2));
  122. }
  123. public virtual void WriteLine ()
  124. {
  125. Write (NewLine);
  126. }
  127. public virtual void WriteLine (bool value)
  128. {
  129. Write (value);
  130. WriteLine();
  131. }
  132. public virtual void WriteLine (char value)
  133. {
  134. Write (value);
  135. WriteLine();
  136. }
  137. public virtual void WriteLine (char[] value)
  138. {
  139. Write (value);
  140. WriteLine();
  141. }
  142. public virtual void WriteLine (decimal value)
  143. {
  144. Write (value);
  145. WriteLine();
  146. }
  147. public virtual void WriteLine (double value)
  148. {
  149. Write (value);
  150. WriteLine();
  151. }
  152. public virtual void WriteLine (int value)
  153. {
  154. Write (value);
  155. WriteLine();
  156. }
  157. public virtual void WriteLine (long value)
  158. {
  159. Write (value);
  160. WriteLine();
  161. }
  162. public virtual void WriteLine (object value)
  163. {
  164. Write (value);
  165. WriteLine();
  166. }
  167. public virtual void WriteLine (float value)
  168. {
  169. Write (value);
  170. WriteLine();
  171. }
  172. public virtual void WriteLine (string value)
  173. {
  174. Write (value);
  175. WriteLine();
  176. }
  177. [CLSCompliant(false)]
  178. public virtual void WriteLine (uint value)
  179. {
  180. Write (value);
  181. WriteLine();
  182. }
  183. [CLSCompliant(false)]
  184. public virtual void WriteLine (ulong value)
  185. {
  186. Write (value);
  187. WriteLine();
  188. }
  189. public virtual void WriteLine (string format, object arg0)
  190. {
  191. Write (format, arg0);
  192. WriteLine();
  193. }
  194. public virtual void WriteLine (string format, params object[] arg)
  195. {
  196. Write (format, arg);
  197. WriteLine();
  198. }
  199. public virtual void WriteLine (char[] buffer, int index, int count)
  200. {
  201. Write (buffer, index, count);
  202. WriteLine();
  203. }
  204. public virtual void WriteLine (string format, object arg0, object arg1)
  205. {
  206. Write (format, arg0, arg1);
  207. WriteLine();
  208. }
  209. public virtual void WriteLine (string format, object arg0, object arg1, object arg2)
  210. {
  211. Write (format, arg0, arg1, arg2);
  212. WriteLine();
  213. }
  214. //
  215. // Null version of the TextWriter, for the `Null' instance variable
  216. //
  217. sealed class NullTextWriter : TextWriter {
  218. public override Encoding Encoding {
  219. get {
  220. return Encoding.Default;
  221. }
  222. }
  223. public override void Write (string s)
  224. {
  225. }
  226. }
  227. }
  228. }