]> git.saurik.com Git - wxWidgets.git/blame - interface/txtstrm.h
latex include not properly working for links and titlepage
[wxWidgets.git] / interface / txtstrm.h
CommitLineData
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 56class wxTextInputStream
23324ae1
FM
57{
58public:
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 201class wxTextOutputStream
23324ae1
FM
202{
203public:
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};