07eaa717015a01b62cc7ea1b1125545ce3d5df1f
[mono.git] / mcs / class / corlib / System.IO / TextReader.cs
1 //\r
2 // System.IO.TextReader\r
3 //\r
4 // Author: Marcin Szczepanski (marcins@zipworld.com.au)\r
5 //\r
6 // TODO: Implement the Thread Safe stuff\r
7 //\r
8 \r
9 using System;\r
10 \r
11 namespace System.IO {\r
12 \r
13         [Serializable]\r
14         public abstract class TextReader : MarshalByRefObject, IDisposable {\r
15                 \r
16                 protected TextReader() { }\r
17                 \r
18                 public static readonly TextReader Null;\r
19                 \r
20                 public virtual void Close()\r
21                 { \r
22                         Dispose(true);\r
23                 }\r
24 \r
25                 void System.IDisposable.Dispose()\r
26                 {\r
27                         Dispose(true);\r
28                 }\r
29 \r
30                 protected virtual void Dispose( bool disposing )\r
31                 {\r
32                         return;\r
33                 }\r
34                 \r
35                 public virtual int Peek()\r
36                 {\r
37                         return -1;\r
38                 }\r
39                 \r
40                 public virtual int Read()\r
41                 {\r
42                         return -1;\r
43                 }\r
44                 \r
45                 public virtual int Read (char[] buffer, int index, int count)\r
46                 {\r
47                         int c, i;\r
48                         \r
49                         for (i = 0; i < count; i++) {\r
50                                 if ((c = Read ()) == -1)\r
51                                         return i;\r
52                                 buffer [index + i] = (char)c;\r
53                         }\r
54                         \r
55                         return i;\r
56                 }\r
57                 \r
58                 public virtual int ReadBlock (char [] buffer, int index, int count)\r
59                 {\r
60                         int read_count = 0;\r
61                         do {\r
62                                 read_count = Read (buffer, index, count);\r
63                                 index += read_count;\r
64                                 count -= read_count;\r
65                         } while (read_count != 0 && count > 0);\r
66 \r
67                         return read_count;\r
68                 }\r
69 \r
70                 public virtual string ReadLine()\r
71                 { \r
72                         return String.Empty;\r
73                 }\r
74 \r
75                 public virtual string ReadToEnd()\r
76                 { \r
77                         return String.Empty;\r
78                 }\r
79 \r
80                 [MonoTODO]\r
81                 public static TextReader Synchronized( TextReader reader )\r
82                 {\r
83                         // TODO: Implement\r
84                         return Null;\r
85                 }       \r
86         }\r
87 }\r