]>
Commit | Line | Data |
---|---|---|
23324ae1 FM |
1 | ///////////////////////////////////////////////////////////////////////////// |
2 | // Name: txtstrm.h | |
3 | // Purpose: documentation for wxTextInputStream class | |
4 | // Author: wxWidgets team | |
5 | // RCS-ID: $Id$ | |
6 | // Licence: wxWindows license | |
7 | ///////////////////////////////////////////////////////////////////////////// | |
8 | ||
9 | /** | |
10 | @class wxTextInputStream | |
11 | @wxheader{txtstrm.h} | |
7c913512 | 12 | |
23324ae1 FM |
13 | This class provides functions that read text datas using an input stream. |
14 | So, you can read @e text floats, integers. | |
7c913512 | 15 | |
23324ae1 FM |
16 | The wxTextInputStream correctly reads text files (or streams) in DOS, Macintosh |
17 | and Unix formats and reports a single newline char as a line ending. | |
7c913512 | 18 | |
23324ae1 FM |
19 | Operator is overloaded and you can use this class like a standard C++ iostream. |
20 | Note, however, that the arguments are the fixed size types wxUint32, wxInt32 etc | |
21 | and on a typical 32-bit computer, none of these match to the "long" type | |
22 | (wxInt32 | |
23 | is defined as int on 32-bit architectures) so that you cannot use long. To avoid | |
24 | problems (here and elsewhere), make use of wxInt32, wxUint32 and similar types. | |
7c913512 | 25 | |
23324ae1 FM |
26 | If you're scanning through a file using wxTextInputStream, you should check for |
27 | EOF @b before | |
28 | reading the next item (word / number), because otherwise the last item may get | |
7c913512 | 29 | lost. |
23324ae1 FM |
30 | You should however be prepared to receive an empty item (empty string / zero |
31 | number) at the | |
32 | end of file, especially on Windows systems. This is unavoidable because most | |
33 | (but not all) files end | |
34 | with whitespace (i.e. usually a newline). | |
7c913512 | 35 | |
23324ae1 | 36 | For example: |
7c913512 | 37 | |
23324ae1 FM |
38 | @code |
39 | wxFileInputStream input( "mytext.txt" ); | |
40 | wxTextInputStream text( input ); | |
41 | wxUint8 i1; | |
42 | float f2; | |
43 | wxString line; | |
7c913512 | 44 | |
23324ae1 FM |
45 | text i1; // read a 8 bit integer. |
46 | text i1 f2; // read a 8 bit integer followed by float. | |
47 | text line; // read a text line | |
48 | @endcode | |
7c913512 | 49 | |
23324ae1 FM |
50 | @library{wxbase} |
51 | @category{streams} | |
7c913512 | 52 | |
23324ae1 FM |
53 | @seealso |
54 | wxTextInputStream::SetStringSeparators | |
55 | */ | |
7c913512 | 56 | class wxTextInputStream |
23324ae1 FM |
57 | { |
58 | public: | |
59 | /** | |
60 | ) | |
61 | ||
62 | Constructs a text stream associated to the given input stream. | |
63 | ||
7c913512 | 64 | @param stream |
23324ae1 FM |
65 | The underlying input stream. |
66 | ||
7c913512 | 67 | @param sep |
23324ae1 FM |
68 | The initial string separator characters. |
69 | ||
7c913512 | 70 | @param conv |
23324ae1 FM |
71 | In Unicode build only: The encoding converter used to convert the bytes in the |
72 | underlying input stream to characters. | |
73 | */ | |
74 | wxTextInputStream(wxInputStream& stream, | |
75 | const wxString& sep=" \t"); | |
76 | ||
77 | /** | |
78 | Destroys the wxTextInputStream object. | |
79 | */ | |
80 | ~wxTextInputStream(); | |
81 | ||
82 | /** | |
83 | Reads a character, returns 0 if there are no more characters in the stream. | |
84 | */ | |
85 | wxChar GetChar(); | |
86 | ||
87 | /** | |
88 | Reads a unsigned 16 bit integer from the stream. | |
89 | ||
90 | See wxTextInputStream::Read8 for the | |
91 | description of the @e base parameter. | |
92 | */ | |
93 | wxUint16 Read16(int base = 10); | |
94 | ||
95 | /** | |
96 | Reads a signed 16 bit integer from the stream. | |
97 | ||
98 | See wxTextInputStream::Read8 for the | |
99 | description of the @e base parameter. | |
100 | */ | |
101 | wxInt16 Read16S(int base = 10); | |
102 | ||
103 | /** | |
104 | Reads a 32 bit unsigned integer from the stream. | |
105 | ||
106 | See wxTextInputStream::Read8 for the | |
107 | description of the @e base parameter. | |
108 | */ | |
109 | wxUint32 Read32(int base = 10); | |
110 | ||
111 | /** | |
112 | Reads a 32 bit signed integer from the stream. | |
113 | ||
114 | See wxTextInputStream::Read8 for the | |
115 | description of the @e base parameter. | |
116 | */ | |
117 | wxInt32 Read32S(int base = 10); | |
118 | ||
119 | /** | |
120 | Reads a single unsigned byte from the stream, given in base @e base. | |
121 | ||
122 | The value of @e base must be comprised between 2 and 36, inclusive, or | |
123 | be a special value 0 which means that the usual rules of @c C numbers are | |
124 | applied: if the number starts with @c 0x it is considered to be in base | |
125 | 16, if it starts with @c 0 - in base 8 and in base 10 otherwise. Note | |
126 | that you may not want to specify the base 0 if you are parsing the numbers | |
127 | which may have leading zeroes as they can yield unexpected (to the user not | |
128 | familiar with C) results. | |
129 | */ | |
130 | wxUint8 Read8(int base = 10); | |
131 | ||
132 | /** | |
133 | Reads a single signed byte from the stream. | |
134 | ||
135 | See wxTextInputStream::Read8 for the | |
136 | description of the @e base parameter. | |
137 | */ | |
138 | wxInt8 Read8S(int base = 10); | |
139 | ||
140 | /** | |
141 | Reads a double (IEEE encoded) from the stream. | |
142 | */ | |
143 | double ReadDouble(); | |
144 | ||
145 | /** | |
146 | Reads a line from the input stream and returns it (without the end of line | |
147 | character). | |
148 | */ | |
149 | wxString ReadLine(); | |
150 | ||
151 | /** | |
7c913512 | 152 | @b NB: This method is deprecated, use ReadLine() |
23324ae1 FM |
153 | or ReadWord() instead. |
154 | ||
155 | Same as ReadLine(). | |
156 | */ | |
157 | wxString ReadString(); | |
158 | ||
159 | /** | |
160 | Reads a word (a sequence of characters until the next separator) from the | |
161 | input stream. | |
162 | ||
163 | @sa SetStringSeparators() | |
164 | */ | |
165 | wxString ReadWord(); | |
166 | ||
167 | /** | |
7c913512 | 168 | Sets the characters which are used to define the word boundaries in |
23324ae1 FM |
169 | ReadWord(). |
170 | ||
171 | The default separators are the space and @c TAB characters. | |
172 | */ | |
173 | void SetStringSeparators(const wxString& sep); | |
174 | }; | |
175 | ||
176 | ||
177 | /** | |
178 | @class wxTextOutputStream | |
179 | @wxheader{txtstrm.h} | |
7c913512 | 180 | |
23324ae1 FM |
181 | This class provides functions that write text datas using an output stream. |
182 | So, you can write @e text floats, integers. | |
7c913512 | 183 | |
23324ae1 | 184 | You can also simulate the C++ cout class: |
7c913512 | 185 | |
23324ae1 FM |
186 | @code |
187 | wxFFileOutputStream output( stderr ); | |
188 | wxTextOutputStream cout( output ); | |
7c913512 | 189 | |
23324ae1 FM |
190 | cout "This is a text line" endl; |
191 | cout 1234; | |
192 | cout 1.23456; | |
193 | @endcode | |
7c913512 | 194 | |
23324ae1 FM |
195 | The wxTextOutputStream writes text files (or streams) on DOS, Macintosh |
196 | and Unix in their native formats (concerning the line ending). | |
7c913512 | 197 | |
23324ae1 FM |
198 | @library{wxbase} |
199 | @category{streams} | |
200 | */ | |
7c913512 | 201 | class wxTextOutputStream |
23324ae1 FM |
202 | { |
203 | public: | |
204 | /** | |
205 | ) | |
206 | ||
207 | Constructs a text stream object associated to the given output stream. | |
208 | ||
7c913512 | 209 | @param stream |
23324ae1 FM |
210 | The output stream. |
211 | ||
7c913512 | 212 | @param mode |
23324ae1 FM |
213 | The end-of-line mode. One of wxEOL_NATIVE, wxEOL_DOS, wxEOL_MAC and wxEOL_UNIX. |
214 | ||
7c913512 | 215 | @param conv |
23324ae1 FM |
216 | In Unicode build only: The object used to convert |
217 | Unicode text into ASCII characters written to the output stream. | |
218 | */ | |
219 | wxTextOutputStream(wxOutputStream& stream, | |
220 | wxEOL mode = wxEOL_NATIVE); | |
221 | ||
222 | /** | |
223 | Destroys the wxTextOutputStream object. | |
224 | */ | |
225 | ~wxTextOutputStream(); | |
226 | ||
227 | /** | |
228 | Returns the end-of-line mode. One of @b wxEOL_DOS, @b wxEOL_MAC and @b | |
229 | wxEOL_UNIX. | |
230 | */ | |
231 | wxEOL GetMode(); | |
232 | ||
233 | /** | |
234 | Writes a character to the stream. | |
235 | */ | |
236 | void PutChar(wxChar c); | |
237 | ||
238 | /** | |
239 | Set the end-of-line mode. One of @b wxEOL_NATIVE, @b wxEOL_DOS, @b wxEOL_MAC | |
240 | and @b wxEOL_UNIX. | |
241 | */ | |
242 | void SetMode(wxEOL mode = wxEOL_NATIVE); | |
243 | ||
244 | /** | |
245 | Writes the 16 bit integer @e i16 to the stream. | |
246 | */ | |
247 | void Write16(wxUint16 i16); | |
248 | ||
249 | /** | |
250 | Writes the 32 bit integer @e i32 to the stream. | |
251 | */ | |
252 | void Write32(wxUint32 i32); | |
253 | ||
254 | /** | |
255 | Writes the single byte @e i8 to the stream. | |
256 | */ | |
257 | void Write8(wxUint8 i8); | |
258 | ||
259 | /** | |
260 | Writes the double @e f to the stream using the IEEE format. | |
261 | */ | |
262 | virtual void WriteDouble(double f); | |
263 | ||
264 | /** | |
265 | Writes @e string as a line. Depending on the end-of-line mode the end of | |
266 | line ('\n') characters in the string are converted to the correct | |
267 | line ending terminator. | |
268 | */ | |
269 | virtual void WriteString(const wxString& string); | |
270 | }; |