1 // =================================
  2 // Copyright (c) 2020 Seppo Laakko
  3 // Distributed under the MIT license
  4 // =================================
  5 
  6 using System;
  7 
  8 namespace System.IO
  9 {
 10     public abstract class InputStream
 11     {
 12         public default nothrow InputStream();
 13         public virtual default ~InputStream();
 14         suppress InputStream(const InputStream&);
 15         suppress void operator=(const InputStream&);
 16         public default nothrow InputStream(InputStream&&);
 17         public default nothrow void operator=(InputStream&&);
 18         public abstract int Read();
 19         public abstract string ReadLine();
 20         public abstract string ReadToEnd();
 21         public abstract nothrow bool EndOfStream() const;
 22     }
 23 
 24     public abstract class OutputStream
 25     {
 26         public default nothrow OutputStream();
 27         public virtual default ~OutputStream();
 28         suppress OutputStream(const OutputStream&);
 29         suppress void operator=(const OutputStream&);
 30         public default nothrow OutputStream(OutputStream&&);
 31         public default nothrow void operator=(OutputStream&&);
 32         public abstract void Write(const char* s);
 33         public abstract void Write(const wchar* s);
 34         public abstract void Write(const uchar* s);
 35         public abstract void Write(const string& s);
 36         public abstract void Write(const wstring& s);
 37         public abstract void Write(const ustring& s);
 38         public abstract void Write(bool b);
 39         public abstract void Write(char c);
 40         public abstract void Write(wchar c);
 41         public abstract void Write(uchar c);
 42         public abstract void Write(sbyte s);
 43         public abstract void Write(byte b);
 44         public abstract void Write(short s);
 45         public abstract void Write(ushort u);
 46         public abstract void Write(int i);
 47         public abstract void Write(uint u);
 48         public abstract void Write(long l);
 49         public abstract void Write(ulong u);
 50         public abstract void Write(float f);
 51         public abstract void Write(double d);
 52         public abstract void Write(const Date& date);
 53         public abstract void Write(const DateTime& dateTime);
 54         public abstract void WriteLine();
 55         public abstract void WriteLine(const char* s);
 56         public abstract void WriteLine(const wchar* s);
 57         public abstract void WriteLine(const uchar* s);
 58         public abstract void WriteLine(const string& s);
 59         public abstract void WriteLine(const wstring& s);
 60         public abstract void WriteLine(const ustring& s);
 61         public abstract void WriteLine(bool b);
 62         public abstract void WriteLine(char c);
 63         public abstract void WriteLine(wchar c);
 64         public abstract void WriteLine(uchar c);
 65         public abstract void WriteLine(sbyte s);
 66         public abstract void WriteLine(byte b);
 67         public abstract void WriteLine(short s);
 68         public abstract void WriteLine(ushort u);
 69         public abstract void WriteLine(int i);
 70         public abstract void WriteLine(uint u);
 71         public abstract void WriteLine(long l);
 72         public abstract void WriteLine(ulong u);
 73         public abstract void WriteLine(float f);
 74         public abstract void WriteLine(double d);
 75         public abstract void WriteLine(const Date& date);
 76         public abstract void WriteLine(const DateTime& dateTime);
 77     }
 78 
 79     public OutputStream& operator<<(OutputStream& sconst char* x)
 80     {
 81         s.Write(x);
 82         return s;
 83     }
 84 
 85     public OutputStream& operator<<(OutputStream& sconst wchar* x)
 86     {
 87         s.Write(x);
 88         return s;
 89     }
 90 
 91     public OutputStream& operator<<(OutputStream& sconst uchar* x)
 92     {
 93         s.Write(x);
 94         return s;
 95     }
 96 
 97     public OutputStream& operator<<(OutputStream& sconst string& x)
 98     {
 99         s.Write(x);
100         return s;
101     }
102 
103     public OutputStream& operator<<(OutputStream& sconst wstring& x)
104     {
105         s.Write(x);
106         return s;
107     }
108 
109     public OutputStream& operator<<(OutputStream& sconst ustring& x)
110     {
111         s.Write(x);
112         return s;
113     }
114 
115     public OutputStream& operator<<(OutputStream& sbool x)
116     {
117         s.Write(x);
118         return s;
119     }
120 
121     public OutputStream& operator<<(OutputStream& ssbyte x)
122     {
123         s.Write(x);
124         return s;
125     }
126 
127     public OutputStream& operator<<(OutputStream& sbyte x)
128     {
129         s.Write(x);
130         return s;
131     }
132 
133     public OutputStream& operator<<(OutputStream& sshort x)
134     {
135         s.Write(x);
136         return s;
137     }
138 
139     public OutputStream& operator<<(OutputStream& sushort x)
140     {
141         s.Write(x);
142         return s;
143     }
144 
145     public OutputStream& operator<<(OutputStream& sint x)
146     {
147         s.Write(x);
148         return s;
149     }
150 
151     public OutputStream& operator<<(OutputStream& suint x)
152     {
153         s.Write(x);
154         return s;
155     }
156 
157     public OutputStream& operator<<(OutputStream& slong x)
158     {
159         s.Write(x);
160         return s;
161     }
162 
163     public OutputStream& operator<<(OutputStream& sulong x)
164     {
165         s.Write(x);
166         return s;
167     }
168 
169     public OutputStream& operator<<(OutputStream& sfloat x)
170     {
171         s.Write(x);
172         return s;
173     }
174 
175     public OutputStream& operator<<(OutputStream& sdouble x)
176     {
177         s.Write(x);
178         return s;
179     }
180     
181     public OutputStream& operator<<(OutputStream& sconst Date& date)
182     {
183         s.Write(date);
184         return s;
185     }
186     
187     public OutputStream& operator<<(OutputStream& sconst DateTime& dateTime)
188     {
189         s.Write(dateTime);
190         return s;
191     }
192     
193     public OutputStream& operator<<(OutputStream& schar x)
194     {
195         s.Write(x);
196         return s;
197     }
198     
199     public OutputStream& operator<<(OutputStream& swchar x)
200     {
201         s.Write(x);
202         return s;
203     }
204     
205     public OutputStream& operator<<(OutputStream& suchar x)
206     {
207         s.Write(x);
208         return s;
209     }
210 
211     public OutputStream& operator<<(OutputStream& sconst Endl&)
212     {
213         s.WriteLine();
214         return s;
215     }
216 }
217 
218 namespace System
219 {
220     public class Endl
221     {
222         public nothrow Endl()
223         {
224         }
225     }
226 
227     public nothrow Endl endl()
228     {
229         return Endl();
230     }
231 }