1 // =================================
  2 // Copyright (c) 2024 Seppo Laakko
  3 // Distributed under the MIT license
  4 // =================================
  5 
  6 using System;
  7 
  8 namespace System.IO
  9 {
 10     public abstract class TextWriter : IOBase
 11     {
 12         public TextWriter() : base() {}
 13         suppress TextWriter(const TextWriter&);
 14         suppress void operator=(const TextWriter&);
 15         [nodiscard]
 16         public abstract Result<bool> Write(const string& x);
 17         [nodiscard]
 18         public abstract Result<bool> Write(const wstring& x);
 19         [nodiscard]
 20         public abstract Result<bool> Write(const ustring& x);
 21         [nodiscard]
 22         public abstract Result<bool> Write(bool x);
 23         [nodiscard]
 24         public abstract Result<bool> Write(char x);
 25         [nodiscard]
 26         public abstract Result<bool> Write(wchar x);
 27         [nodiscard]
 28         public abstract Result<bool> Write(uchar x);
 29         [nodiscard]
 30         public abstract Result<bool> Write(sbyte x);
 31         [nodiscard]
 32         public abstract Result<bool> Write(byte x);
 33         [nodiscard]
 34         public abstract Result<bool> Write(short x);
 35         [nodiscard]
 36         public abstract Result<bool> Write(ushort x);
 37         [nodiscard]
 38         public abstract Result<bool> Write(int x);
 39         [nodiscard]
 40         public abstract Result<bool> Write(uint x);
 41         [nodiscard]
 42         public abstract Result<bool> Write(long x);
 43         [nodiscard]
 44         public abstract Result<bool> Write(ulong x);
 45         [nodiscard]
 46         public abstract Result<bool> Write(float x);
 47         [nodiscard]
 48         public abstract Result<bool> Write(double x);
 49         [nodiscard]
 50         public abstract Result<bool> Write(const Date& date);
 51         [nodiscard]
 52         public abstract Result<bool> Write(const DateTime& dateTime);
 53         [nodiscard]
 54         public abstract Result<bool> WriteLine();
 55         [nodiscard]
 56         public abstract Result<bool> WriteLine(const string& x);
 57         [nodiscard]
 58         public abstract Result<bool> WriteLine(const wstring& x);
 59         [nodiscard]
 60         public abstract Result<bool> WriteLine(const ustring& x);
 61         [nodiscard]
 62         public abstract Result<bool> WriteLine(bool x);
 63         [nodiscard]
 64         public abstract Result<bool> WriteLine(char x);
 65         [nodiscard]
 66         public abstract Result<bool> WriteLine(wchar x);
 67         [nodiscard]
 68         public abstract Result<bool> WriteLine(uchar x);
 69         [nodiscard]
 70         public abstract Result<bool> WriteLine(sbyte x);
 71         [nodiscard]
 72         public abstract Result<bool> WriteLine(byte x);
 73         [nodiscard]
 74         public abstract Result<bool> WriteLine(short x);
 75         [nodiscard]
 76         public abstract Result<bool> WriteLine(ushort x);
 77         [nodiscard]
 78         public abstract Result<bool> WriteLine(int x);
 79         [nodiscard]
 80         public abstract Result<bool> WriteLine(uint x);
 81         [nodiscard]
 82         public abstract Result<bool> WriteLine(long x);
 83         [nodiscard]
 84         public abstract Result<bool> WriteLine(ulong x);
 85         [nodiscard]
 86         public abstract Result<bool> WriteLine(float x);
 87         [nodiscard]
 88         public abstract Result<bool> WriteLine(double x);
 89         [nodiscard]
 90         public abstract Result<bool> WriteLine(const Date& date);
 91         [nodiscard]
 92         public abstract Result<bool> WriteLine(const DateTime& dateTime);
 93     }
 94 
 95     public TextWriter& operator<<(TextWriter& writerconst char* x)
 96     {
 97         if (writer.Error()) return writer;
 98         auto result = writer.Write(x);
 99         return writer;
100     }
101 
102     public TextWriter& operator<<(TextWriter& writerconst wchar* x)
103     {
104         if (writer.Error()) return writer;
105         auto result = writer.Write(x);
106         return writer;
107     }
108 
109     public TextWriter& operator<<(TextWriter& writerconst uchar* x)
110     {
111         if (writer.Error()) return writer;
112         auto result = writer.Write(x);
113         return writer;
114     }
115 
116     public TextWriter& operator<<(TextWriter& writerconst string& x)
117     {
118         if (writer.Error()) return writer;
119         auto result = writer.Write(x);
120         return writer;
121     }
122 
123     public TextWriter& operator<<(TextWriter& writerconst wstring& x)
124     {
125         if (writer.Error()) return writer;
126         auto result = writer.Write(x);
127         return writer;
128     }
129 
130     public TextWriter& operator<<(TextWriter& writerconst ustring& x)
131     {
132         if (writer.Error()) return writer;
133         auto result = writer.Write(x);
134         return writer;
135     }
136 
137     public TextWriter& operator<<(TextWriter& writerbool x)
138     {
139         if (writer.Error()) return writer;
140         auto result = writer.Write(x);
141         return writer;
142     }
143 
144     public TextWriter& operator<<(TextWriter& writersbyte x)
145     {
146         if (writer.Error()) return writer;
147         auto result = writer.Write(x);
148         return writer;
149     }
150 
151     public TextWriter& operator<<(TextWriter& writerbyte x)
152     {
153         if (writer.Error()) return writer;
154         auto result = writer.Write(x);
155         return writer;
156     }
157 
158     public TextWriter& operator<<(TextWriter& writershort x)
159     {
160         if (writer.Error()) return writer;
161         auto result = writer.Write(x);
162         return writer;
163     }
164 
165     public TextWriter& operator<<(TextWriter& writerushort x)
166     {
167         if (writer.Error()) return writer;
168         auto result = writer.Write(x);
169         return writer;
170     }
171 
172     public TextWriter& operator<<(TextWriter& writerint x)
173     {
174         if (writer.Error()) return writer;
175         auto result = writer.Write(x);
176         return writer;
177     }
178 
179     public TextWriter& operator<<(TextWriter& writeruint x)
180     {
181         if (writer.Error()) return writer;
182         auto result = writer.Write(x);
183         return writer;
184     }
185 
186     public TextWriter& operator<<(TextWriter& writerlong x)
187     {
188         if (writer.Error()) return writer;
189         auto result = writer.Write(x);
190         return writer;
191     }
192 
193     public TextWriter& operator<<(TextWriter& writerulong x)
194     {
195         if (writer.Error()) return writer;
196         auto result = writer.Write(x);
197         return writer;
198     }
199 
200     public TextWriter& operator<<(TextWriter& writerfloat x)
201     {
202         if (writer.Error()) return writer;
203         auto result = writer.Write(x);
204         return writer;
205     }
206 
207     public TextWriter& operator<<(TextWriter& writerdouble x)
208     {
209         if (writer.Error()) return writer;
210         auto result = writer.Write(x);
211         return writer;
212     }
213 
214     public TextWriter& operator<<(TextWriter& writerconst Date& date)
215     {
216         if (writer.Error()) return writer;
217         auto result = writer.Write(date);
218         return writer;
219     }
220 
221     public TextWriter& operator<<(TextWriter& writerconst DateTime& dateTime)
222     {
223         if (writer.Error()) return writer;
224         auto result = writer.Write(dateTime);
225         return writer;
226     }
227 
228     public TextWriter& operator<<(TextWriter& writerchar x)
229     {
230         if (writer.Error()) return writer;
231         auto result = writer.Write(x);
232         return writer;
233     }
234 
235     public TextWriter& operator<<(TextWriter& writerwchar x)
236     {
237         if (writer.Error()) return writer;
238         auto result = writer.Write(x);
239         return writer;
240     }
241 
242     public TextWriter& operator<<(TextWriter& writeruchar x)
243     {
244         if (writer.Error()) return writer;
245         auto result = writer.Write(x);
246         return writer;
247     }
248 
249     public TextWriter& operator<<(TextWriter& writerconst Endl&)
250     {
251         if (writer.Error()) return writer;
252         auto result = writer.WriteLine();
253         return writer;
254     }