msvcp90: Added basic_ostringstream<short> implementation.
[wine.git] / dlls / msvcp90 / ios.c
blobf5562135499c504f60889127e25e7d6c5e8777e8
1 /*
2 * Copyright 2011 Piotr Caban for CodeWeavers
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 #include "config.h"
21 #include <stdarg.h>
22 #include <stdio.h>
23 #include <limits.h>
24 #include <share.h>
26 #include "msvcp90.h"
27 #include "windef.h"
28 #include "winbase.h"
29 #include "wine/debug.h"
30 WINE_DEFAULT_DEBUG_CHANNEL(msvcp);
32 /* ?_Index@ios_base@std@@0HA */
33 int ios_base_Index = 0;
34 /* ?_Sync@ios_base@std@@0_NA */
35 MSVCP_bool ios_base_Sync = FALSE;
37 typedef struct {
38 streamoff off;
39 __int64 DECLSPEC_ALIGN(8) pos;
40 int state;
41 } fpos_int;
43 static inline const char* debugstr_fpos_int(fpos_int *fpos)
45 return wine_dbg_sprintf("fpos(%ld %s %d)", fpos->off, wine_dbgstr_longlong(fpos->pos), fpos->state);
48 typedef struct {
49 void (__cdecl *pfunc)(ios_base*, streamsize);
50 streamsize arg;
51 } manip_streamsize;
53 typedef enum {
54 INITFL_new = 0,
55 INITFL_open = 1,
56 INITFL_close = 2
57 } basic_filebuf__Initfl;
59 typedef struct {
60 basic_streambuf_char base;
61 codecvt_char *cvt;
62 char putback;
63 MSVCP_bool wrotesome;
64 int state;
65 MSVCP_bool close;
66 FILE *file;
67 } basic_filebuf_char;
69 typedef struct {
70 basic_streambuf_wchar base;
71 codecvt_wchar *cvt;
72 wchar_t putback;
73 MSVCP_bool wrotesome;
74 int state;
75 MSVCP_bool close;
76 FILE *file;
77 } basic_filebuf_wchar;
79 typedef enum {
80 STRINGBUF_allocated = 1,
81 STRINGBUF_no_write = 2,
82 STRINGBUF_no_read = 4,
83 STRINGBUF_append = 8,
84 STRINGBUF_at_end = 16
85 } basic_stringbuf_state;
87 typedef struct {
88 basic_streambuf_char base;
89 char *seekhigh;
90 int state;
91 char allocator; /* empty struct */
92 } basic_stringbuf_char;
94 typedef struct {
95 basic_streambuf_wchar base;
96 wchar_t *seekhigh;
97 int state;
98 char allocator; /* empty struct */
99 } basic_stringbuf_wchar;
101 typedef struct {
102 ios_base base;
103 basic_streambuf_char *strbuf;
104 struct _basic_ostream_char *stream;
105 char fillch;
106 } basic_ios_char;
108 typedef struct {
109 ios_base base;
110 basic_streambuf_wchar *strbuf;
111 struct _basic_ostream_wchar *stream;
112 wchar_t fillch;
113 } basic_ios_wchar;
115 typedef struct _basic_ostream_char {
116 const int *vbtable;
117 /* virtual inheritance
118 * basic_ios_char basic_ios;
120 } basic_ostream_char;
122 typedef struct _basic_ostream_wchar {
123 const int *vbtable;
124 /* virtual inheritance
125 * basic_ios_wchar basic_ios;
127 } basic_ostream_wchar;
129 typedef struct {
130 const int *vbtable;
131 streamsize count;
132 /* virtual inheritance
133 * basic_ios_char basic_ios;
135 } basic_istream_char;
137 typedef struct {
138 const int *vbtable;
139 streamsize count;
140 /* virtual inheritance
141 * basic_ios_wchar basic_ios;
143 } basic_istream_wchar;
145 typedef struct {
146 basic_istream_char base1;
147 basic_ostream_char base2;
148 /* virtual inheritance
149 * basic_ios_char basic_ios;
151 } basic_iostream_char;
153 typedef struct {
154 basic_istream_wchar base1;
155 basic_ostream_wchar base2;
156 /* virtual inheritance
157 * basic_ios_wchar basic_ios;
159 } basic_iostream_wchar;
161 typedef struct {
162 basic_ostream_char base;
163 basic_filebuf_char filebuf;
164 /* virtual inheritance
165 * basic_ios_char basic_ios;
167 } basic_ofstream_char;
169 typedef struct {
170 basic_ostream_wchar base;
171 basic_filebuf_wchar filebuf;
172 /* virtual inheritance
173 * basic_ios_wchar basic_ios;
175 } basic_ofstream_wchar;
177 typedef struct {
178 basic_istream_char base;
179 basic_filebuf_char filebuf;
180 /* virtual inheritance
181 * basic_ios_char basic_ios;
183 } basic_ifstream_char;
185 typedef struct {
186 basic_istream_wchar base;
187 basic_filebuf_wchar filebuf;
188 /* virtual inheritance
189 * basic_ios_wchar basic_ios;
191 } basic_ifstream_wchar;
193 typedef struct {
194 basic_iostream_char base;
195 basic_filebuf_char filebuf;
196 /* virtual inheritance
197 * basic_ios_char basic_ios;
199 } basic_fstream_char;
201 typedef struct {
202 basic_iostream_wchar base;
203 basic_filebuf_wchar filebuf;
204 /* virtual inheritance
205 * basic_ios_char basic_ios;
207 } basic_fstream_wchar;
209 typedef struct {
210 basic_ostream_char base;
211 basic_stringbuf_char strbuf;
212 /* virtual inheritance
213 * basic_ios_char basic_ios;
215 } basic_ostringstream_char;
217 typedef struct {
218 basic_ostream_wchar base;
219 basic_stringbuf_wchar strbuf;
220 /* virtual inheritance
221 * basic_ios_wchar basic_ios;
223 } basic_ostringstream_wchar;
225 typedef struct {
226 basic_istream_char base;
227 basic_stringbuf_char strbuf;
228 /* virtual inheritance
229 * basic_ios_char basic_ios;
231 } basic_istringstream_char;
233 typedef struct {
234 basic_istream_wchar base;
235 basic_stringbuf_wchar strbuf;
236 /* virtual inheritance
237 * basic_ios_wchar basic_ios;
239 } basic_istringstream_wchar;
241 typedef struct {
242 basic_iostream_char base;
243 basic_stringbuf_char strbuf;
244 /* virtual inheritance
245 * basic_ios_char basic_ios;
247 } basic_stringstream_char;
249 typedef struct {
250 basic_iostream_wchar base;
251 basic_stringbuf_wchar strbuf;
252 /* virtual inheritance
253 * basic_ios_wchar basic_ios;
255 } basic_stringstream_wchar;
257 extern const vtable_ptr MSVCP_iosb_vtable;
259 /* ??_7ios_base@std@@6B@ */
260 extern const vtable_ptr MSVCP_ios_base_vtable;
262 /* ??_7?$basic_ios@DU?$char_traits@D@std@@@std@@6B@ */
263 extern const vtable_ptr MSVCP_basic_ios_char_vtable;
265 /* ??_7?$basic_ios@_WU?$char_traits@_W@std@@@std@@6B@ */
266 extern const vtable_ptr MSVCP_basic_ios_wchar_vtable;
268 /* ??_7?$basic_ios@GU?$char_traits@G@std@@@std@@6B@ */
269 extern const vtable_ptr MSVCP_basic_ios_short_vtable;
271 /* ??_7?$basic_streambuf@DU?$char_traits@D@std@@@std@@6B@ */
272 extern const vtable_ptr MSVCP_basic_streambuf_char_vtable;
274 /* ??_7?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@6B@ */
275 extern const vtable_ptr MSVCP_basic_streambuf_wchar_vtable;
277 /* ??_7?$basic_streambuf@GU?$char_traits@G@std@@@std@@6B@ */
278 extern const vtable_ptr MSVCP_basic_streambuf_short_vtable;
280 /* ??_7?$basic_filebuf@DU?$char_traits@D@std@@@std@@6B@ */
281 extern const vtable_ptr MSVCP_basic_filebuf_char_vtable;
283 /* ??_7?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@6B@ */
284 extern const vtable_ptr MSVCP_basic_filebuf_wchar_vtable;
286 /* ??_7?$basic_filebuf@GU?$char_traits@G@std@@@std@@6B@ */
287 extern const vtable_ptr MSVCP_basic_filebuf_short_vtable;
289 /* ??_7?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */
290 extern const vtable_ptr MSVCP_basic_stringbuf_char_vtable;
292 /* ??_7?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@6B@ */
293 extern const vtable_ptr MSVCP_basic_stringbuf_wchar_vtable;
295 /* ??_7?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@6B@ */
296 extern const vtable_ptr MSVCP_basic_stringbuf_short_vtable;
298 /* ??_8?$basic_ostream@DU?$char_traits@D@std@@@std@@7B@ */
299 const int basic_ostream_char_vbtable[] = {0, sizeof(basic_ostream_char)};
300 /* ??_7?$basic_ostream@DU?$char_traits@D@std@@@std@@6B@ */
301 extern const vtable_ptr MSVCP_basic_ostream_char_vtable;
303 /* ??_8?$basic_ostream@_WU?$char_traits@_W@std@@@std@@7B@ */
304 const int basic_ostream_wchar_vbtable[] = {0, sizeof(basic_ostream_wchar)};
305 /* ??_7?$basic_ostream@_WU?$char_traits@_W@std@@@std@@6B@ */
306 extern const vtable_ptr MSVCP_basic_ostream_wchar_vtable;
308 /* ??_8?$basic_ostream@GU?$char_traits@G@std@@@std@@7B@ */
309 const int basic_ostream_short_vbtable[] = {0, sizeof(basic_ostream_wchar)};
310 /* ??_7?$basic_ostream@GU?$char_traits@G@std@@@std@@6B@ */
311 extern const vtable_ptr MSVCP_basic_ostream_short_vtable;
313 /* ??_8?$basic_istream@DU?$char_traits@D@std@@@std@@7B@ */
314 const int basic_istream_char_vbtable[] = {0, sizeof(basic_istream_char)};
315 /* ??_7?$basic_istream@DU?$char_traits@D@std@@@std@@6B@ */
316 extern const vtable_ptr MSVCP_basic_istream_char_vtable;
318 /* ??_8?$basic_istream@_WU?$char_traits@_W@std@@@std@@7B@ */
319 const int basic_istream_wchar_vbtable[] = {0, sizeof(basic_istream_wchar)};
320 /* ??_7?$basic_istream@_WU?$char_traits@_W@std@@@std@@6B@ */
321 extern const vtable_ptr MSVCP_basic_istream_wchar_vtable;
323 /* ??_8?$basic_istream@GU?$char_traits@G@std@@@std@@7B@ */
324 const int basic_istream_short_vbtable[] = {0, sizeof(basic_istream_wchar)};
325 /* ??_7?$basic_istream@GU?$char_traits@G@std@@@std@@6B@ */
326 extern const vtable_ptr MSVCP_basic_istream_short_vtable;
328 /* ??_8?$basic_iostream@DU?$char_traits@D@std@@@std@@7B?$basic_istream@DU?$char_traits@D@std@@@1@@ */
329 const int basic_iostream_char_vbtable1[] = {0, sizeof(basic_iostream_char)};
330 /* ??_8?$basic_iostream@DU?$char_traits@D@std@@@std@@7B?$basic_ostream@DU?$char_traits@D@std@@@1@@ */
331 const int basic_iostream_char_vbtable2[] = {0, sizeof(basic_iostream_char)-FIELD_OFFSET(basic_iostream_char, base2)};
332 /* ??_7?$basic_iostream@DU?$char_traits@D@std@@@std@@6B@ */
333 extern const vtable_ptr MSVCP_basic_iostream_char_vtable;
335 /* ??_8?$basic_iostream@_WU?$char_traits@_W@std@@@std@@7B?$basic_istream@_WU?$char_traits@_W@std@@@1@@ */
336 /* ??_8?$basic_iostream@GU?$char_traits@G@std@@@std@@7B?$basic_istream@GU?$char_traits@G@std@@@1@@ */
337 const int basic_iostream_wchar_vbtable1[] = {0, sizeof(basic_iostream_wchar)};
338 /* ??_8?$basic_iostream@_WU?$char_traits@_W@std@@@std@@7B?$basic_ostream@_WU?$char_traits@_W@std@@@1@@ */
339 /* ??_8?$basic_iostream@GU?$char_traits@G@std@@@std@@7B?$basic_ostream@GU?$char_traits@G@std@@@1@@ */
340 const int basic_iostream_wchar_vbtable2[] = {0, sizeof(basic_iostream_wchar)-FIELD_OFFSET(basic_iostream_wchar, base2)};
341 /* ??_7?$basic_iostream@_WU?$char_traits@_W@std@@@std@@6B@ */
342 extern const vtable_ptr MSVCP_basic_iostream_wchar_vtable;
343 /* ??_7?$basic_iostream@GU?$char_traits@G@std@@@std@@6B@ */
344 extern const vtable_ptr MSVCP_basic_iostream_short_vtable;
346 /* ??_8?$basic_ofstream@DU?$char_traits@D@std@@@std@@7B@ */
347 const int basic_ofstream_char_vbtable[] = {0, sizeof(basic_ofstream_char)};
348 /* ??_7?$basic_ofstream@DU?$char_traits@D@std@@@std@@6B@ */
349 extern const vtable_ptr MSVCP_basic_ofstream_char_vtable;
351 /* ??_8?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@7B@ */
352 const int basic_ofstream_wchar_vbtable[] = {0, sizeof(basic_ofstream_wchar)};
353 /* ??_7?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@6B@ */
354 extern const vtable_ptr MSVCP_basic_ofstream_wchar_vtable;
356 /* ??_8?$basic_ofstream@GU?$char_traits@G@std@@@std@@7B@ */
357 const int basic_ofstream_short_vbtable[] = {0, sizeof(basic_ofstream_wchar)};
358 /* ??_7?$basic_ofstream@GU?$char_traits@G@std@@@std@@6B@ */
359 extern const vtable_ptr MSVCP_basic_ofstream_short_vtable;
361 /* ??_8?$basic_ifstream@DU?$char_traits@D@std@@@std@@7B@ */
362 const int basic_ifstream_char_vbtable[] = {0, sizeof(basic_ifstream_char)};
363 /* ??_7?$basic_ifstream@DU?$char_traits@D@std@@@std@@6B@ */
364 extern const vtable_ptr MSVCP_basic_ifstream_char_vtable;
366 /* ??_8?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@7B@ */
367 const int basic_ifstream_wchar_vbtable[] = {0, sizeof(basic_ifstream_wchar)};
368 /* ??_7?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@6B@ */
369 extern const vtable_ptr MSVCP_basic_ifstream_wchar_vtable;
371 /* ??_8?$basic_ifstream@GU?$char_traits@G@std@@@std@@7B@ */
372 const int basic_ifstream_short_vbtable[] = {0, sizeof(basic_ifstream_wchar)};
373 /* ??_7?$basic_ifstream@GU?$char_traits@G@std@@@std@@6B@ */
374 extern const vtable_ptr MSVCP_basic_ifstream_short_vtable;
376 /* ??_8?$basic_fstream@DU?$char_traits@D@std@@@std@@7B?$basic_istream@DU?$char_traits@D@std@@@1@@ */
377 const int basic_fstream_char_vbtable1[] = {0, sizeof(basic_fstream_char)};
378 /* ??_8?$basic_fstream@DU?$char_traits@D@std@@@std@@7B?$basic_ostream@DU?$char_traits@D@std@@@1@@ */
379 const int basic_fstream_char_vbtable2[] = {0, sizeof(basic_fstream_char)-FIELD_OFFSET(basic_fstream_char, base.base2)};
380 /* ??_7?$basic_fstream@DU?$char_traits@D@std@@@std@@6B@ */
381 extern const vtable_ptr MSVCP_basic_fstream_char_vtable;
383 /* ??_8?$basic_fstream@_WU?$char_traits@_W@std@@@std@@7B?$basic_istream@_WU?$char_traits@_W@std@@@1@@ */
384 /* ??_8?$basic_fstream@GU?$char_traits@G@std@@@std@@7B?$basic_istream@GU?$char_traits@G@std@@@1@@ */
385 const int basic_fstream_wchar_vbtable1[] = {0, sizeof(basic_fstream_wchar)};
386 /* ??_8?$basic_fstream@_WU?$char_traits@_W@std@@@std@@7B?$basic_ostream@_WU?$char_traits@_W@std@@@1@@ */
387 /* ??_8?$basic_fstream@GU?$char_traits@G@std@@@std@@7B?$basic_ostream@GU?$char_traits@G@std@@@1@@ */
388 const int basic_fstream_wchar_vbtable2[] = {0, sizeof(basic_fstream_wchar)-FIELD_OFFSET(basic_fstream_wchar, base.base2)};
389 /* ??_7?$basic_fstream@_WU?$char_traits@_W@std@@@std@@6B@ */
390 extern const vtable_ptr MSVCP_basic_fstream_wchar_vtable;
391 /* ??_7?$basic_fstream@GU?$char_traits@G@std@@@std@@6B@ */
392 extern const vtable_ptr MSVCP_basic_fstream_short_vtable;
394 /* ??_8?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B@ */
395 const int basic_ostringstream_char_vbtable[] = {0, sizeof(basic_ostringstream_char)};
396 /* ??_7?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */
397 extern const vtable_ptr MSVCP_basic_ostringstream_char_vtable;
399 /* ??_8?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@7B@ */
400 const int basic_ostringstream_wchar_vbtable[] = {0, sizeof(basic_ostringstream_wchar)};
401 /* ??_7?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@6B@ */
402 extern const vtable_ptr MSVCP_basic_ostringstream_wchar_vtable;
404 /* ??_8?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@7B@ */
405 const int basic_ostringstream_short_vbtable[] = {0, sizeof(basic_ostringstream_wchar)};
406 /* ??_7?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@6B@ */
407 extern const vtable_ptr MSVCP_basic_ostringstream_short_vtable;
409 /* ??_8?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B@ */
410 const int basic_istringstream_char_vbtable[] = {0, sizeof(basic_istringstream_char)};
411 /* ??_7?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */
412 extern const vtable_ptr MSVCP_basic_istringstream_char_vtable;
414 /* ??_8?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@7B@ */
415 const int basic_istringstream_wchar_vbtable[] = {0, sizeof(basic_istringstream_wchar)};
416 /* ??_7?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@6B@ */
417 extern const vtable_ptr MSVCP_basic_istringstream_wchar_vtable;
419 /* ??_8?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B?$basic_istream@DU?$char_traits@D@std@@@1@@ */
420 const int basic_stringstream_char_vbtable1[] = {0, sizeof(basic_stringstream_char)};
421 /* ??_8?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B?$basic_ostream@DU?$char_traits@D@std@@@1@@ */
422 const int basic_stringstream_char_vbtable2[] = {0, sizeof(basic_stringstream_char)-FIELD_OFFSET(basic_stringstream_char, base.base2)};
423 /* ??_7?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */
424 extern const vtable_ptr MSVCP_basic_stringstream_char_vtable;
426 /* ??_8?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@7B?$basic_istream@_WU?$char_traits@_W@std@@@1@@ */
427 const int basic_stringstream_wchar_vbtable1[] = {0, sizeof(basic_stringstream_wchar)};
428 /* ??_8?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@7B?$basic_ostream@_WU?$char_traits@_W@std@@@1@@ */
429 const int basic_stringstream_wchar_vbtable2[] = {0, sizeof(basic_stringstream_wchar)-FIELD_OFFSET(basic_stringstream_wchar, base.base2)};
430 /* ??_7?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@6B@ */
431 extern const vtable_ptr MSVCP_basic_stringstream_wchar_vtable;
433 DEFINE_RTTI_DATA0(iosb, 0, ".?AV?$_Iosb@H@std@@");
434 DEFINE_RTTI_DATA1(ios_base, 0, &iosb_rtti_base_descriptor, ".?AV?$_Iosb@H@std@@");
435 DEFINE_RTTI_DATA2(basic_ios_char, 0, &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
436 ".?AV?$basic_ios@DU?$char_traits@D@std@@@std@@");
437 DEFINE_RTTI_DATA2(basic_ios_wchar, 0, &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
438 ".?AV?$basic_ios@_WU?$char_traits@_W@std@@@std@@");
439 DEFINE_RTTI_DATA2(basic_ios_short, 0, &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
440 ".?AV?$basic_ios@GU?$char_traits@G@std@@@std@@");
441 DEFINE_RTTI_DATA0(basic_streambuf_char, 0,
442 ".?AV?$basic_streambuf@DU?$char_traits@D@std@@@std@@");
443 DEFINE_RTTI_DATA0(basic_streambuf_wchar, 0,
444 ".?AV?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@");
445 DEFINE_RTTI_DATA0(basic_streambuf_short, 0,
446 ".?AV?$basic_streambuf@GU?$char_traits@G@std@@@std@@");
447 DEFINE_RTTI_DATA1(basic_filebuf_char, 0, &basic_streambuf_char_rtti_base_descriptor,
448 ".?AV?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@");
449 DEFINE_RTTI_DATA1(basic_filebuf_wchar, 0, &basic_streambuf_wchar_rtti_base_descriptor,
450 ".?AV?$basic_filebuf@GU?$char_traits@G@std@@@std@@");
451 DEFINE_RTTI_DATA1(basic_filebuf_short, 0, &basic_streambuf_short_rtti_base_descriptor,
452 ".?AV?$basic_filebuf@DU?$char_traits@D@std@@@std@@");
453 DEFINE_RTTI_DATA1(basic_stringbuf_char, 0, &basic_streambuf_char_rtti_base_descriptor,
454 ".?AV?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@");
455 DEFINE_RTTI_DATA1(basic_stringbuf_wchar, 0, &basic_streambuf_wchar_rtti_base_descriptor,
456 ".?AV?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@");
457 DEFINE_RTTI_DATA1(basic_stringbuf_short, 0, &basic_streambuf_short_rtti_base_descriptor,
458 ".?AV?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@");
459 DEFINE_RTTI_DATA3(basic_ostream_char, sizeof(basic_ostream_char), &basic_ios_char_rtti_base_descriptor,
460 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
461 ".?AV?$basic_ostream@DU?$char_traits@D@std@@@std@@");
462 DEFINE_RTTI_DATA3(basic_ostream_wchar, sizeof(basic_ostream_wchar), &basic_ios_wchar_rtti_base_descriptor,
463 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
464 ".?AV?$basic_ostream@_WU?$char_traits@_W@std@@@std@@");
465 DEFINE_RTTI_DATA3(basic_ostream_short, sizeof(basic_ostream_wchar), &basic_ios_short_rtti_base_descriptor,
466 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
467 ".?AV?$basic_ostream@GU?$char_traits@G@std@@@std@@");
468 DEFINE_RTTI_DATA3(basic_istream_char, sizeof(basic_istream_char), &basic_ios_char_rtti_base_descriptor,
469 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
470 ".?AV?$basic_istream@DU?$char_traits@D@std@@@std@@");
471 DEFINE_RTTI_DATA3(basic_istream_wchar, sizeof(basic_istream_wchar), &basic_ios_wchar_rtti_base_descriptor,
472 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
473 ".?AV?$basic_istream@_WU?$char_traits@_W@std@@@std@@");
474 DEFINE_RTTI_DATA3(basic_istream_short, sizeof(basic_istream_wchar), &basic_ios_short_rtti_base_descriptor,
475 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
476 ".?AV?$basic_istream@GU?$char_traits@G@std@@@std@@");
477 DEFINE_RTTI_DATA8(basic_iostream_char, sizeof(basic_iostream_char),
478 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
479 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
480 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
481 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
482 ".?AV?$basic_iostream@DU?$char_traits@D@std@@@std@@");
483 DEFINE_RTTI_DATA8(basic_iostream_wchar, sizeof(basic_iostream_wchar),
484 &basic_istream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
485 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
486 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
487 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
488 ".?AV?$basic_iostream@_WU?$char_traits@_W@std@@@std@@");
489 DEFINE_RTTI_DATA8(basic_iostream_short, sizeof(basic_iostream_wchar),
490 &basic_istream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
491 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
492 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
493 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
494 ".?AV?$basic_iostream@GU?$char_traits@G@std@@@std@@");
495 DEFINE_RTTI_DATA4(basic_ofstream_char, sizeof(basic_ofstream_char),
496 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
497 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
498 ".?AV?$basic_ofstream@DU?$char_traits@D@std@@@std@@");
499 DEFINE_RTTI_DATA4(basic_ofstream_wchar, sizeof(basic_ofstream_wchar),
500 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
501 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
502 ".?AV?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@");
503 DEFINE_RTTI_DATA4(basic_ofstream_short, sizeof(basic_ofstream_wchar),
504 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
505 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
506 ".?AV?$basic_ofstream@GU?$char_traits@G@std@@@std@@");
507 DEFINE_RTTI_DATA4(basic_ifstream_char, sizeof(basic_ifstream_char),
508 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
509 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
510 ".?AV?$basic_ifstream@DU?$char_traits@D@std@@@std@@");
511 DEFINE_RTTI_DATA4(basic_ifstream_wchar, sizeof(basic_ifstream_wchar),
512 &basic_istream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
513 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
514 ".?AV?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@");
515 DEFINE_RTTI_DATA4(basic_ifstream_short, sizeof(basic_ifstream_wchar),
516 &basic_istream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
517 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
518 ".?AV?$basic_ifstream@GU?$char_traits@G@std@@@std@@");
519 DEFINE_RTTI_DATA8(basic_fstream_char, sizeof(basic_fstream_char),
520 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
521 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
522 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
523 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
524 ".?AV?$basic_fstream@DU?$char_traits@D@std@@@std@@");
525 DEFINE_RTTI_DATA8(basic_fstream_wchar, sizeof(basic_fstream_wchar),
526 &basic_istream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
527 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
528 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
529 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
530 ".?AV?$basic_fstream@_WU?$char_traits@_W@std@@@std@@");
531 DEFINE_RTTI_DATA8(basic_fstream_short, sizeof(basic_fstream_wchar),
532 &basic_istream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
533 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
534 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
535 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
536 ".?AV?$basic_fstream@GU?$char_traits@G@std@@@std@@");
537 DEFINE_RTTI_DATA4(basic_ostringstream_char, sizeof(basic_ostringstream_char),
538 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
539 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
540 ".?AV?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@");
541 DEFINE_RTTI_DATA4(basic_ostringstream_wchar, sizeof(basic_ostringstream_wchar),
542 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
543 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
544 ".?AV?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@");
545 DEFINE_RTTI_DATA4(basic_ostringstream_short, sizeof(basic_ostringstream_wchar),
546 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
547 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
548 ".?AV?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@");
549 DEFINE_RTTI_DATA4(basic_istringstream_char, sizeof(basic_istringstream_char),
550 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
551 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
552 ".?AV?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@");
553 DEFINE_RTTI_DATA4(basic_istringstream_wchar, sizeof(basic_istringstream_wchar),
554 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
555 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
556 ".?AV?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@");
557 DEFINE_RTTI_DATA8(basic_stringstream_char, sizeof(basic_stringstream_char),
558 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
559 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
560 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
561 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
562 ".?AV?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@");
563 DEFINE_RTTI_DATA8(basic_stringstream_wchar, sizeof(basic_stringstream_wchar),
564 &basic_istream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
565 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
566 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
567 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
568 ".?AV?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@");
570 #ifndef __GNUC__
571 void __asm_dummy_vtables(void) {
572 #endif
573 __ASM_VTABLE(iosb, "");
574 __ASM_VTABLE(ios_base, "");
575 __ASM_VTABLE(basic_ios_char, "");
576 __ASM_VTABLE(basic_ios_wchar, "");
577 __ASM_VTABLE(basic_ios_short, "");
578 __ASM_VTABLE(basic_streambuf_char,
579 VTABLE_ADD_FUNC(basic_streambuf_char_overflow)
580 VTABLE_ADD_FUNC(basic_streambuf_char_pbackfail)
581 VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc)
582 VTABLE_ADD_FUNC(basic_streambuf_char_underflow)
583 VTABLE_ADD_FUNC(basic_streambuf_char_uflow)
584 VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn)
585 VTABLE_ADD_FUNC(basic_streambuf_char__Xsgetn_s)
586 VTABLE_ADD_FUNC(basic_streambuf_char_xsputn)
587 VTABLE_ADD_FUNC(basic_streambuf_char_seekoff)
588 VTABLE_ADD_FUNC(basic_streambuf_char_seekpos)
589 VTABLE_ADD_FUNC(basic_streambuf_char_setbuf)
590 VTABLE_ADD_FUNC(basic_streambuf_char_sync)
591 VTABLE_ADD_FUNC(basic_streambuf_char_imbue));
592 __ASM_VTABLE(basic_streambuf_wchar,
593 VTABLE_ADD_FUNC(basic_streambuf_wchar_overflow)
594 VTABLE_ADD_FUNC(basic_streambuf_wchar_pbackfail)
595 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
596 VTABLE_ADD_FUNC(basic_streambuf_wchar_underflow)
597 VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow)
598 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
599 VTABLE_ADD_FUNC(basic_streambuf_wchar__Xsgetn_s)
600 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
601 VTABLE_ADD_FUNC(basic_streambuf_wchar_seekoff)
602 VTABLE_ADD_FUNC(basic_streambuf_wchar_seekpos)
603 VTABLE_ADD_FUNC(basic_streambuf_wchar_setbuf)
604 VTABLE_ADD_FUNC(basic_streambuf_wchar_sync)
605 VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue));
606 __ASM_VTABLE(basic_streambuf_short,
607 VTABLE_ADD_FUNC(basic_streambuf_wchar_overflow)
608 VTABLE_ADD_FUNC(basic_streambuf_wchar_pbackfail)
609 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
610 VTABLE_ADD_FUNC(basic_streambuf_wchar_underflow)
611 VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow)
612 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
613 VTABLE_ADD_FUNC(basic_streambuf_wchar__Xsgetn_s)
614 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
615 VTABLE_ADD_FUNC(basic_streambuf_wchar_seekoff)
616 VTABLE_ADD_FUNC(basic_streambuf_wchar_seekpos)
617 VTABLE_ADD_FUNC(basic_streambuf_wchar_setbuf)
618 VTABLE_ADD_FUNC(basic_streambuf_wchar_sync)
619 VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue));
620 __ASM_VTABLE(basic_filebuf_char,
621 VTABLE_ADD_FUNC(basic_filebuf_char_overflow)
622 VTABLE_ADD_FUNC(basic_filebuf_char_pbackfail)
623 VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc)
624 VTABLE_ADD_FUNC(basic_filebuf_char_underflow)
625 VTABLE_ADD_FUNC(basic_filebuf_char_uflow)
626 VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn)
627 VTABLE_ADD_FUNC(basic_streambuf_char__Xsgetn_s)
628 VTABLE_ADD_FUNC(basic_streambuf_char_xsputn)
629 VTABLE_ADD_FUNC(basic_filebuf_char_seekoff)
630 VTABLE_ADD_FUNC(basic_filebuf_char_seekpos)
631 VTABLE_ADD_FUNC(basic_filebuf_char_setbuf)
632 VTABLE_ADD_FUNC(basic_filebuf_char_sync)
633 VTABLE_ADD_FUNC(basic_filebuf_char_imbue));
634 __ASM_VTABLE(basic_filebuf_wchar,
635 VTABLE_ADD_FUNC(basic_filebuf_wchar_overflow)
636 VTABLE_ADD_FUNC(basic_filebuf_wchar_pbackfail)
637 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
638 VTABLE_ADD_FUNC(basic_filebuf_wchar_underflow)
639 VTABLE_ADD_FUNC(basic_filebuf_wchar_uflow)
640 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
641 VTABLE_ADD_FUNC(basic_streambuf_wchar__Xsgetn_s)
642 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
643 VTABLE_ADD_FUNC(basic_filebuf_wchar_seekoff)
644 VTABLE_ADD_FUNC(basic_filebuf_wchar_seekpos)
645 VTABLE_ADD_FUNC(basic_filebuf_wchar_setbuf)
646 VTABLE_ADD_FUNC(basic_filebuf_wchar_sync)
647 VTABLE_ADD_FUNC(basic_filebuf_wchar_imbue));
648 __ASM_VTABLE(basic_filebuf_short,
649 VTABLE_ADD_FUNC(basic_filebuf_wchar_overflow)
650 VTABLE_ADD_FUNC(basic_filebuf_wchar_pbackfail)
651 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
652 VTABLE_ADD_FUNC(basic_filebuf_wchar_underflow)
653 VTABLE_ADD_FUNC(basic_filebuf_wchar_uflow)
654 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
655 VTABLE_ADD_FUNC(basic_streambuf_wchar__Xsgetn_s)
656 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
657 VTABLE_ADD_FUNC(basic_filebuf_wchar_seekoff)
658 VTABLE_ADD_FUNC(basic_filebuf_wchar_seekpos)
659 VTABLE_ADD_FUNC(basic_filebuf_short_setbuf)
660 VTABLE_ADD_FUNC(basic_filebuf_wchar_sync)
661 VTABLE_ADD_FUNC(basic_filebuf_short_imbue));
662 __ASM_VTABLE(basic_stringbuf_char,
663 VTABLE_ADD_FUNC(basic_stringbuf_char_overflow)
664 VTABLE_ADD_FUNC(basic_stringbuf_char_pbackfail)
665 VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc)
666 VTABLE_ADD_FUNC(basic_stringbuf_char_underflow)
667 VTABLE_ADD_FUNC(basic_streambuf_char_uflow)
668 VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn)
669 VTABLE_ADD_FUNC(basic_streambuf_char__Xsgetn_s)
670 VTABLE_ADD_FUNC(basic_streambuf_char_xsputn)
671 VTABLE_ADD_FUNC(basic_stringbuf_char_seekoff)
672 VTABLE_ADD_FUNC(basic_stringbuf_char_seekpos)
673 VTABLE_ADD_FUNC(basic_streambuf_char_setbuf)
674 VTABLE_ADD_FUNC(basic_streambuf_char_sync)
675 VTABLE_ADD_FUNC(basic_streambuf_char_imbue));
676 __ASM_VTABLE(basic_stringbuf_wchar,
677 VTABLE_ADD_FUNC(basic_stringbuf_wchar_overflow)
678 VTABLE_ADD_FUNC(basic_stringbuf_wchar_pbackfail)
679 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
680 VTABLE_ADD_FUNC(basic_stringbuf_wchar_underflow)
681 VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow)
682 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
683 VTABLE_ADD_FUNC(basic_streambuf_wchar__Xsgetn_s)
684 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
685 VTABLE_ADD_FUNC(basic_stringbuf_wchar_seekoff)
686 VTABLE_ADD_FUNC(basic_stringbuf_wchar_seekpos)
687 VTABLE_ADD_FUNC(basic_streambuf_wchar_setbuf)
688 VTABLE_ADD_FUNC(basic_streambuf_wchar_sync)
689 VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue));
690 __ASM_VTABLE(basic_stringbuf_short,
691 VTABLE_ADD_FUNC(basic_stringbuf_wchar_overflow)
692 VTABLE_ADD_FUNC(basic_stringbuf_wchar_pbackfail)
693 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
694 VTABLE_ADD_FUNC(basic_stringbuf_wchar_underflow)
695 VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow)
696 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
697 VTABLE_ADD_FUNC(basic_streambuf_wchar__Xsgetn_s)
698 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
699 VTABLE_ADD_FUNC(basic_stringbuf_wchar_seekoff)
700 VTABLE_ADD_FUNC(basic_stringbuf_wchar_seekpos)
701 VTABLE_ADD_FUNC(basic_streambuf_wchar_setbuf)
702 VTABLE_ADD_FUNC(basic_streambuf_wchar_sync)
703 VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue));
704 __ASM_VTABLE(basic_ostream_char, "");
705 __ASM_VTABLE(basic_ostream_wchar, "");
706 __ASM_VTABLE(basic_ostream_short, "");
707 __ASM_VTABLE(basic_istream_char, "");
708 __ASM_VTABLE(basic_istream_wchar, "");
709 __ASM_VTABLE(basic_istream_short, "");
710 __ASM_VTABLE(basic_iostream_char, "");
711 __ASM_VTABLE(basic_iostream_wchar, "");
712 __ASM_VTABLE(basic_iostream_short, "");
713 __ASM_VTABLE(basic_ofstream_char, "");
714 __ASM_VTABLE(basic_ofstream_wchar, "");
715 __ASM_VTABLE(basic_ofstream_short, "");
716 __ASM_VTABLE(basic_ifstream_char, "");
717 __ASM_VTABLE(basic_ifstream_wchar, "");
718 __ASM_VTABLE(basic_ifstream_short, "");
719 __ASM_VTABLE(basic_fstream_char, "");
720 __ASM_VTABLE(basic_fstream_wchar, "");
721 __ASM_VTABLE(basic_fstream_short, "");
722 __ASM_VTABLE(basic_ostringstream_char, "");
723 __ASM_VTABLE(basic_ostringstream_wchar, "");
724 __ASM_VTABLE(basic_ostringstream_short, "");
725 __ASM_VTABLE(basic_istringstream_char, "");
726 __ASM_VTABLE(basic_istringstream_wchar, "");
727 __ASM_VTABLE(basic_stringstream_char, "");
728 __ASM_VTABLE(basic_stringstream_wchar, "");
729 #ifndef __GNUC__
731 #endif
733 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD00@Z */
734 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD00@Z */
735 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setp_next, 16)
736 void __thiscall basic_streambuf_char_setp_next(basic_streambuf_char *this, char *first, char *next, char *last)
738 TRACE("(%p %p %p %p)\n", this, first, next, last);
740 this->wbuf = first;
741 this->wpos = next;
742 this->wsize = last-next;
745 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD0@Z */
746 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD0@Z */
747 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setp, 12)
748 void __thiscall basic_streambuf_char_setp(basic_streambuf_char *this, char *first, char *last)
750 basic_streambuf_char_setp_next(this, first, first, last);
753 /* ?setg@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD00@Z */
754 /* ?setg@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD00@Z */
755 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setg, 16)
756 void __thiscall basic_streambuf_char_setg(basic_streambuf_char *this, char *first, char *next, char *last)
758 TRACE("(%p %p %p %p)\n", this, first, next, last);
760 this->rbuf = first;
761 this->rpos = next;
762 this->rsize = last-next;
765 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXXZ */
766 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXXZ */
767 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Init_empty, 4)
768 void __thiscall basic_streambuf_char__Init_empty(basic_streambuf_char *this)
770 TRACE("(%p)\n", this);
772 this->prbuf = &this->rbuf;
773 this->pwbuf = &this->wbuf;
774 this->prpos = &this->rpos;
775 this->pwpos = &this->wpos;
776 this->prsize = &this->rsize;
777 this->pwsize = &this->wsize;
779 basic_streambuf_char_setp(this, NULL, NULL);
780 basic_streambuf_char_setg(this, NULL, NULL, NULL);
783 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAE@W4_Uninitialized@1@@Z */
784 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@W4_Uninitialized@1@@Z */
785 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_ctor_uninitialized, 8)
786 basic_streambuf_char* __thiscall basic_streambuf_char_ctor_uninitialized(basic_streambuf_char *this, int uninitialized)
788 TRACE("(%p %d)\n", this, uninitialized);
789 this->vtable = &MSVCP_basic_streambuf_char_vtable;
790 mutex_ctor(&this->lock);
791 return this;
794 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAE@XZ */
795 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@XZ */
796 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_ctor, 4)
797 basic_streambuf_char* __thiscall basic_streambuf_char_ctor(basic_streambuf_char *this)
799 TRACE("(%p)\n", this);
801 this->vtable = &MSVCP_basic_streambuf_char_vtable;
802 mutex_ctor(&this->lock);
803 this->loc = MSVCRT_operator_new(sizeof(locale));
804 locale_ctor(this->loc);
805 basic_streambuf_char__Init_empty(this);
807 return this;
810 /* ??1?$basic_streambuf@DU?$char_traits@D@std@@@std@@UAE@XZ */
811 /* ??1?$basic_streambuf@DU?$char_traits@D@std@@@std@@UEAA@XZ */
812 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_dtor, 4)
813 void __thiscall basic_streambuf_char_dtor(basic_streambuf_char *this)
815 TRACE("(%p)\n", this);
817 mutex_dtor(&this->lock);
818 locale_dtor(this->loc);
819 MSVCRT_operator_delete(this->loc);
822 DEFINE_THISCALL_WRAPPER(MSVCP_basic_streambuf_char_vector_dtor, 8)
823 basic_streambuf_char* __thiscall MSVCP_basic_streambuf_char_vector_dtor(basic_streambuf_char *this, unsigned int flags)
825 TRACE("(%p %x)\n", this, flags);
826 if(flags & 2) {
827 /* we have an array, with the number of elements stored before the first object */
828 int i, *ptr = (int *)this-1;
830 for(i=*ptr-1; i>=0; i--)
831 basic_streambuf_char_dtor(this+i);
832 MSVCRT_operator_delete(ptr);
833 } else {
834 basic_streambuf_char_dtor(this);
835 if(flags & 1)
836 MSVCRT_operator_delete(this);
839 return this;
842 /* ?_Gnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEHXZ */
843 /* ?_Gnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBA_JXZ */
844 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gnavail, 4)
845 streamsize __thiscall basic_streambuf_char__Gnavail(const basic_streambuf_char *this)
847 TRACE("(%p)\n", this);
848 return *this->prpos ? *this->prsize : 0;
851 /* ?_Gndec@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
852 /* ?_Gndec@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
853 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gndec, 4)
854 char* __thiscall basic_streambuf_char__Gndec(basic_streambuf_char *this)
856 TRACE("(%p)\n", this);
857 (*this->prsize)++;
858 (*this->prpos)--;
859 return *this->prpos;
862 /* ?_Gninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
863 /* ?_Gninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
864 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gninc, 4)
865 char* __thiscall basic_streambuf_char__Gninc(basic_streambuf_char *this)
867 TRACE("(%p)\n", this);
868 (*this->prsize)--;
869 return (*this->prpos)++;
872 /* ?_Gnpreinc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
873 /* ?_Gnpreinc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
874 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gnpreinc, 4)
875 char* __thiscall basic_streambuf_char__Gnpreinc(basic_streambuf_char *this)
877 TRACE("(%p)\n", this);
878 (*this->prsize)--;
879 (*this->prpos)++;
880 return *this->prpos;
883 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAPAD0PAH001@Z */
884 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAPEAD0PEAH001@Z */
885 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Init, 28)
886 void __thiscall basic_streambuf_char__Init(basic_streambuf_char *this, char **gf, char **gn, int *gc, char **pf, char **pn, int *pc)
888 TRACE("(%p %p %p %p %p %p %p)\n", this, gf, gn, gc, pf, pn, pc);
890 this->prbuf = gf;
891 this->pwbuf = pf;
892 this->prpos = gn;
893 this->pwpos = pn;
894 this->prsize = gc;
895 this->pwsize = pc;
898 /* ?_Lock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
899 /* ?_Lock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
900 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Lock, 4)
901 void __thiscall basic_streambuf_char__Lock(basic_streambuf_char *this)
903 TRACE("(%p)\n", this);
904 mutex_lock(&this->lock);
907 /* ?_Pnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEHXZ */
908 /* ?_Pnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBA_JXZ */
909 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Pnavail, 4)
910 streamsize __thiscall basic_streambuf_char__Pnavail(const basic_streambuf_char *this)
912 TRACE("(%p)\n", this);
913 return *this->pwpos ? *this->pwsize : 0;
916 /* ?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
917 /* ?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
918 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Pninc, 4)
919 char* __thiscall basic_streambuf_char__Pninc(basic_streambuf_char *this)
921 TRACE("(%p)\n", this);
922 (*this->pwsize)--;
923 return (*this->pwpos)++;
926 /* ?underflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
927 /* ?underflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
928 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_underflow, 4)
929 #define call_basic_streambuf_char_underflow(this) CALL_VTBL_FUNC(this, 16, \
930 int, (basic_streambuf_char*), (this))
931 int __thiscall basic_streambuf_char_underflow(basic_streambuf_char *this)
933 TRACE("(%p)\n", this);
934 return EOF;
937 /* ?uflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
938 /* ?uflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
939 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_uflow, 4)
940 #define call_basic_streambuf_char_uflow(this) CALL_VTBL_FUNC(this, 20, \
941 int, (basic_streambuf_char*), (this))
942 int __thiscall basic_streambuf_char_uflow(basic_streambuf_char *this)
944 int ret;
946 TRACE("(%p)\n", this);
948 if(call_basic_streambuf_char_underflow(this)==EOF)
949 return EOF;
951 ret = **this->prpos;
952 (*this->prsize)--;
953 (*this->prpos)++;
954 return ret;
957 /* ?_Xsgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHPADIH@Z */
958 /* ?_Xsgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEAD_K_J@Z */
959 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Xsgetn_s, 16)
960 #define call_basic_streambuf_char__Xsgetn_s(this, ptr, size, count) CALL_VTBL_FUNC(this, 28, \
961 streamsize, (basic_streambuf_char*, char*, MSVCP_size_t, streamsize), (this, ptr, size, count))
962 streamsize __thiscall basic_streambuf_char__Xsgetn_s(basic_streambuf_char *this, char *ptr, MSVCP_size_t size, streamsize count)
964 streamsize copied, chunk;
965 int c;
967 TRACE("(%p %p %lu %ld)\n", this, ptr, size, count);
969 for(copied=0; copied<count && size;) {
970 chunk = basic_streambuf_char__Gnavail(this);
971 if(chunk > count-copied)
972 chunk = count-copied;
974 if(chunk) {
975 memcpy_s(ptr+copied, size, *this->prpos, chunk);
976 *this->prpos += chunk;
977 *this->prsize -= chunk;
978 copied += chunk;
979 size -= chunk;
980 }else if((c = call_basic_streambuf_char_uflow(this)) != EOF) {
981 ptr[copied] = c;
982 copied++;
983 size--;
984 }else {
985 break;
989 return copied;
992 /* ?_Sgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPADIH@Z */
993 /* ?_Sgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_K_J@Z */
994 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Sgetn_s, 16)
995 streamsize __thiscall basic_streambuf_char__Sgetn_s(basic_streambuf_char *this, char *ptr, MSVCP_size_t size, streamsize count)
997 TRACE("(%p %p %lu %ld)\n", this, ptr, size, count);
998 return call_basic_streambuf_char__Xsgetn_s(this, ptr, size, count);
1001 /* ?_Unlock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
1002 /* ?_Unlock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
1003 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Unlock, 4)
1004 void __thiscall basic_streambuf_char__Unlock(basic_streambuf_char *this)
1006 TRACE("(%p)\n", this);
1007 mutex_unlock(&this->lock);
1010 /* ?eback@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1011 /* ?eback@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1012 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_eback, 4)
1013 char* __thiscall basic_streambuf_char_eback(const basic_streambuf_char *this)
1015 TRACE("(%p)\n", this);
1016 return *this->prbuf;
1019 /* ?gptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1020 /* ?gptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1021 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_gptr, 4)
1022 char* __thiscall basic_streambuf_char_gptr(const basic_streambuf_char *this)
1024 TRACE("(%p)\n", this);
1025 return *this->prpos;
1028 /* ?egptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1029 /* ?egptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1030 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_egptr, 4)
1031 char* __thiscall basic_streambuf_char_egptr(const basic_streambuf_char *this)
1033 TRACE("(%p)\n", this);
1034 return *this->prpos+*this->prsize;
1037 /* ?epptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1038 /* ?epptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1039 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_epptr, 4)
1040 char* __thiscall basic_streambuf_char_epptr(const basic_streambuf_char *this)
1042 TRACE("(%p)\n", this);
1043 return *this->pwpos+*this->pwsize;
1046 /* ?gbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXH@Z */
1047 /* ?gbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXH@Z */
1048 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_gbump, 8)
1049 void __thiscall basic_streambuf_char_gbump(basic_streambuf_char *this, int off)
1051 TRACE("(%p %d)\n", this, off);
1052 *this->prpos += off;
1053 *this->prsize -= off;
1056 /* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QBE?AVlocale@2@XZ */
1057 /* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEBA?AVlocale@2@XZ */
1058 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_getloc, 8)
1059 locale* __thiscall basic_streambuf_char_getloc(const basic_streambuf_char *this, locale *ret)
1061 TRACE("(%p)\n", this);
1062 return locale_copy_ctor(ret, this->loc);
1065 /* ?imbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEXABVlocale@2@@Z */
1066 /* ?imbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAXAEBVlocale@2@@Z */
1067 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_imbue, 8)
1068 #define call_basic_streambuf_char_imbue(this, loc) CALL_VTBL_FUNC(this, 52, \
1069 void, (basic_streambuf_char*, const locale*), (this, loc))
1070 void __thiscall basic_streambuf_char_imbue(basic_streambuf_char *this, const locale *loc)
1072 TRACE("(%p %p)\n", this, loc);
1075 /* ?overflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
1076 /* ?overflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
1077 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_overflow, 8)
1078 #define call_basic_streambuf_char_overflow(this, ch) CALL_VTBL_FUNC(this, 4, \
1079 int, (basic_streambuf_char*, int), (this, ch))
1080 int __thiscall basic_streambuf_char_overflow(basic_streambuf_char *this, int ch)
1082 TRACE("(%p %d)\n", this, ch);
1083 return EOF;
1086 /* ?pbackfail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
1087 /* ?pbackfail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
1088 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pbackfail, 8)
1089 #define call_basic_streambuf_char_pbackfail(this, ch) CALL_VTBL_FUNC(this, 8, \
1090 int, (basic_streambuf_char*, int), (this, ch))
1091 int __thiscall basic_streambuf_char_pbackfail(basic_streambuf_char *this, int ch)
1093 TRACE("(%p %d)\n", this, ch);
1094 return EOF;
1097 /* ?pbase@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1098 /* ?pbase@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1099 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pbase, 4)
1100 char* __thiscall basic_streambuf_char_pbase(const basic_streambuf_char *this)
1102 TRACE("(%p)\n", this);
1103 return *this->pwbuf;
1106 /* ?pbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXH@Z */
1107 /* ?pbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXH@Z */
1108 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pbump, 8)
1109 void __thiscall basic_streambuf_char_pbump(basic_streambuf_char *this, int off)
1111 TRACE("(%p %d)\n", this, off);
1112 *this->pwpos += off;
1113 *this->pwsize -= off;
1116 /* ?pptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1117 /* ?pptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1118 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pptr, 4)
1119 char* __thiscall basic_streambuf_char_pptr(const basic_streambuf_char *this)
1121 TRACE("(%p)\n", this);
1122 return *this->pwpos;
1125 /* ?pubimbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
1126 /* ?pubimbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
1127 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubimbue, 12)
1128 locale* __thiscall basic_streambuf_char_pubimbue(basic_streambuf_char *this, locale *ret, const locale *loc)
1130 TRACE("(%p %p)\n", this, loc);
1131 memcpy(ret, this->loc, sizeof(locale));
1132 call_basic_streambuf_char_imbue(this, loc);
1133 locale_copy_ctor(this->loc, loc);
1134 return ret;
1137 /* ?seekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
1138 /* ?seekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
1139 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_seekoff, 20)
1140 #define call_basic_streambuf_char_seekoff(this, ret, off, way, mode) CALL_VTBL_FUNC(this, 36, \
1141 fpos_int*, (basic_streambuf_char*, fpos_int*, streamoff, int, int), (this, ret, off, way, mode))
1142 fpos_int* __thiscall basic_streambuf_char_seekoff(basic_streambuf_char *this,
1143 fpos_int *ret, streamoff off, int way, int mode)
1145 TRACE("(%p %ld %d %d)\n", this, off, way, mode);
1146 ret->off = 0;
1147 ret->pos = -1;
1148 ret->state = 0;
1149 return ret;
1152 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@JHH@Z */
1153 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@_JHH@Z */
1154 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekoff, 20)
1155 fpos_int* __thiscall basic_streambuf_char_pubseekoff(basic_streambuf_char *this,
1156 fpos_int *ret, streamoff off, int way, int mode)
1158 TRACE("(%p %ld %d %d)\n", this, off, way, mode);
1159 return call_basic_streambuf_char_seekoff(this, ret, off, way, mode);
1162 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@JII@Z */
1163 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@_JII@Z */
1164 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekoff_old, 20)
1165 fpos_int* __thiscall basic_streambuf_char_pubseekoff_old(basic_streambuf_char *this,
1166 fpos_int *ret, streamoff off, unsigned int way, unsigned int mode)
1168 TRACE("(%p %ld %d %d)\n", this, off, way, mode);
1169 return basic_streambuf_char_pubseekoff(this, ret, off, way, mode);
1172 /* ?seekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
1173 /* ?seekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
1174 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_seekpos, 36)
1175 #define call_basic_streambuf_char_seekpos(this, ret, pos, mode) CALL_VTBL_FUNC(this, 40, \
1176 fpos_int*, (basic_streambuf_char*, fpos_int*, fpos_int, int), (this, ret, pos, mode))
1177 fpos_int* __thiscall basic_streambuf_char_seekpos(basic_streambuf_char *this,
1178 fpos_int *ret, fpos_int pos, int mode)
1180 TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode);
1181 ret->off = 0;
1182 ret->pos = -1;
1183 ret->state = 0;
1184 return ret;
1187 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@V32@H@Z */
1188 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@V32@H@Z */
1189 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekpos, 36)
1190 fpos_int* __thiscall basic_streambuf_char_pubseekpos(basic_streambuf_char *this,
1191 fpos_int *ret, fpos_int pos, int mode)
1193 TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode);
1194 return call_basic_streambuf_char_seekpos(this, ret, pos, mode);
1197 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@V32@I@Z */
1198 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@V32@I@Z */
1199 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekpos_old, 36)
1200 fpos_int* __thiscall basic_streambuf_char_pubseekpos_old(basic_streambuf_char *this,
1201 fpos_int *ret, fpos_int pos, unsigned int mode)
1203 TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode);
1204 return basic_streambuf_char_pubseekpos(this, ret, pos, mode);
1207 /* ?setbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEPAV12@PADH@Z */
1208 /* ?setbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAPEAV12@PEAD_J@Z */
1209 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setbuf, 12)
1210 #define call_basic_streambuf_char_setbuf(this, buf, count) CALL_VTBL_FUNC(this, 44, \
1211 basic_streambuf_char*, (basic_streambuf_char*, char*, streamsize), (this, buf, count))
1212 basic_streambuf_char* __thiscall basic_streambuf_char_setbuf(basic_streambuf_char *this, char *buf, streamsize count)
1214 TRACE("(%p %p %ld)\n", this, buf, count);
1215 return this;
1218 /* ?pubsetbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PADH@Z */
1219 /* ?pubsetbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEAD_J@Z */
1220 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubsetbuf, 12)
1221 basic_streambuf_char* __thiscall basic_streambuf_char_pubsetbuf(basic_streambuf_char *this, char *buf, streamsize count)
1223 TRACE("(%p %p %ld)\n", this, buf, count);
1224 return call_basic_streambuf_char_setbuf(this, buf, count);
1227 /* ?sync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
1228 /* ?sync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
1229 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sync, 4)
1230 #define call_basic_streambuf_char_sync(this) CALL_VTBL_FUNC(this, 48, \
1231 int, (basic_streambuf_char*), (this))
1232 int __thiscall basic_streambuf_char_sync(basic_streambuf_char *this)
1234 TRACE("(%p)\n", this);
1235 return 0;
1238 /* ?pubsync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1239 /* ?pubsync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1240 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubsync, 4)
1241 int __thiscall basic_streambuf_char_pubsync(basic_streambuf_char *this)
1243 TRACE("(%p)\n", this);
1244 return call_basic_streambuf_char_sync(this);
1247 /* ?sgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPADH@Z */
1248 /* ?sgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_J@Z */
1249 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sgetn, 12)
1250 streamsize __thiscall basic_streambuf_char_sgetn(basic_streambuf_char *this, char *ptr, streamsize count)
1252 TRACE("(%p %p %ld)\n", this, ptr, count);
1253 return call_basic_streambuf_char__Xsgetn_s(this, ptr, -1, count);
1256 /* ?showmanyc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
1257 /* ?showmanyc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JXZ */
1258 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_showmanyc, 4)
1259 #define call_basic_streambuf_char_showmanyc(this) CALL_VTBL_FUNC(this, 12, \
1260 streamsize, (basic_streambuf_char*), (this))
1261 streamsize __thiscall basic_streambuf_char_showmanyc(basic_streambuf_char *this)
1263 TRACE("(%p)\n", this);
1264 return 0;
1267 /* ?in_avail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1268 /* ?in_avail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JXZ */
1269 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_in_avail, 4)
1270 streamsize __thiscall basic_streambuf_char_in_avail(basic_streambuf_char *this)
1272 streamsize ret;
1274 TRACE("(%p)\n", this);
1276 ret = basic_streambuf_char__Gnavail(this);
1277 return ret ? ret : call_basic_streambuf_char_showmanyc(this);
1280 /* ?sputbackc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHD@Z */
1281 /* ?sputbackc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z */
1282 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputbackc, 8)
1283 int __thiscall basic_streambuf_char_sputbackc(basic_streambuf_char *this, char ch)
1285 TRACE("(%p %d)\n", this, ch);
1286 if(*this->prpos && *this->prpos>*this->prbuf && (*this->prpos)[-1]==ch) {
1287 (*this->prsize)++;
1288 (*this->prpos)--;
1289 return ch;
1292 return call_basic_streambuf_char_pbackfail(this, ch);
1295 /* ?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHD@Z */
1296 /* ?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z */
1297 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputc, 8)
1298 int __thiscall basic_streambuf_char_sputc(basic_streambuf_char *this, char ch)
1300 TRACE("(%p %d)\n", this, ch);
1301 return basic_streambuf_char__Pnavail(this) ?
1302 (*basic_streambuf_char__Pninc(this) = ch) :
1303 call_basic_streambuf_char_overflow(this, ch);
1306 /* ?sungetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1307 /* ?sungetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1308 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sungetc, 4)
1309 int __thiscall basic_streambuf_char_sungetc(basic_streambuf_char *this)
1311 TRACE("(%p)\n", this);
1312 if(*this->prpos && *this->prpos>*this->prbuf) {
1313 (*this->prsize)++;
1314 (*this->prpos)--;
1315 return **this->prpos;
1318 return call_basic_streambuf_char_pbackfail(this, EOF);
1321 /* ?stossc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
1322 /* ?stossc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
1323 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_stossc, 4)
1324 void __thiscall basic_streambuf_char_stossc(basic_streambuf_char *this)
1326 TRACE("(%p)\n", this);
1327 if(basic_streambuf_char__Gnavail(this))
1328 basic_streambuf_char__Gninc(this);
1329 else
1330 call_basic_streambuf_char_uflow(this);
1333 /* ?sbumpc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1334 /* ?sbumpc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1335 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sbumpc, 4)
1336 int __thiscall basic_streambuf_char_sbumpc(basic_streambuf_char *this)
1338 TRACE("(%p)\n", this);
1339 return basic_streambuf_char__Gnavail(this) ?
1340 *basic_streambuf_char__Gninc(this) : call_basic_streambuf_char_uflow(this);
1343 /* ?sgetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1344 /* ?sgetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1345 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sgetc, 4)
1346 int __thiscall basic_streambuf_char_sgetc(basic_streambuf_char *this)
1348 TRACE("(%p)\n", this);
1349 return basic_streambuf_char__Gnavail(this) ?
1350 *basic_streambuf_char_gptr(this) : call_basic_streambuf_char_underflow(this);
1353 /* ?snextc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1354 /* ?snextc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1355 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_snextc, 4)
1356 int __thiscall basic_streambuf_char_snextc(basic_streambuf_char *this)
1358 TRACE("(%p)\n", this);
1360 if(basic_streambuf_char__Gnavail(this) > 1)
1361 return *basic_streambuf_char__Gnpreinc(this);
1362 return basic_streambuf_char_sbumpc(this)==EOF ?
1363 EOF : basic_streambuf_char_sgetc(this);
1366 /* ?xsgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHPADH@Z */
1367 /* ?xsgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEAD_J@Z */
1368 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_xsgetn, 12)
1369 #define call_basic_streambuf_char_xsgetn(this, ptr, count) CALL_VTBL_FUNC(this, 24, \
1370 streamsize, (basic_streambuf_char*, char*, streamsize), (this, ptr, count))
1371 streamsize __thiscall basic_streambuf_char_xsgetn(basic_streambuf_char *this, char *ptr, streamsize count)
1373 TRACE("(%p %p %ld)\n", this, ptr, count);
1374 return call_basic_streambuf_char__Xsgetn_s(this, ptr, -1, count);
1377 /* ?xsputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHPBDH@Z */
1378 /* ?xsputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEBD_J@Z */
1379 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_xsputn, 12)
1380 #define call_basic_streambuf_char_xsputn(this, ptr, count) CALL_VTBL_FUNC(this, 32, \
1381 streamsize, (basic_streambuf_char*, const char*, streamsize), (this, ptr, count))
1382 streamsize __thiscall basic_streambuf_char_xsputn(basic_streambuf_char *this, const char *ptr, streamsize count)
1384 streamsize copied, chunk;
1386 TRACE("(%p %p %ld)\n", this, ptr, count);
1388 for(copied=0; copied<count;) {
1389 chunk = basic_streambuf_char__Pnavail(this);
1390 if(chunk > count-copied)
1391 chunk = count-copied;
1393 if(chunk) {
1394 memcpy(*this->pwpos, ptr+copied, chunk);
1395 *this->pwpos += chunk;
1396 *this->pwsize -= chunk;
1397 copied += chunk;
1398 }else if(call_basic_streambuf_char_overflow(this, ptr[copied]) != EOF) {
1399 copied++;
1400 }else {
1401 break;
1405 return copied;
1408 /* ?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPBDH@Z */
1409 /* ?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEBD_J@Z */
1410 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputn, 12)
1411 streamsize __thiscall basic_streambuf_char_sputn(basic_streambuf_char *this, const char *ptr, streamsize count)
1413 TRACE("(%p %p %ld)\n", this, ptr, count);
1414 return call_basic_streambuf_char_xsputn(this, ptr, count);
1417 /* ?setp@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXPA_W00@Z */
1418 /* ?setp@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEA_W00@Z */
1419 /* ?setp@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXPAG00@Z */
1420 /* ?setp@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXPEAG00@Z */
1421 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setp_next, 16)
1422 void __thiscall basic_streambuf_wchar_setp_next(basic_streambuf_wchar *this, wchar_t *first, wchar_t *next, wchar_t *last)
1424 TRACE("(%p %p %p %p)\n", this, first, next, last);
1426 this->wbuf = first;
1427 this->wpos = next;
1428 this->wsize = last-next;
1431 /* ?setp@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXPA_W0@Z */
1432 /* ?setp@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEA_W0@Z */
1433 /* ?setp@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXPAG0@Z */
1434 /* ?setp@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXPEAG0@Z */
1435 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setp, 12)
1436 void __thiscall basic_streambuf_wchar_setp(basic_streambuf_wchar *this, wchar_t *first, wchar_t *last)
1438 basic_streambuf_wchar_setp_next(this, first, first, last);
1441 /* ?setg@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXPA_W00@Z */
1442 /* ?setg@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEA_W00@Z */
1443 /* ?setg@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXPAG00@Z */
1444 /* ?setg@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXPEAG00@Z */
1445 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setg, 16)
1446 void __thiscall basic_streambuf_wchar_setg(basic_streambuf_wchar *this, wchar_t *first, wchar_t *next, wchar_t *last)
1448 TRACE("(%p %p %p %p)\n", this, first, next, last);
1450 this->rbuf = first;
1451 this->rpos = next;
1452 this->rsize = last-next;
1455 /* ?_Init@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXXZ */
1456 /* ?_Init@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXXZ */
1457 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXXZ */
1458 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXXZ */
1459 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Init_empty, 4)
1460 void __thiscall basic_streambuf_wchar__Init_empty(basic_streambuf_wchar *this)
1462 TRACE("(%p)\n", this);
1464 this->prbuf = &this->rbuf;
1465 this->pwbuf = &this->wbuf;
1466 this->prpos = &this->rpos;
1467 this->pwpos = &this->wpos;
1468 this->prsize = &this->rsize;
1469 this->pwsize = &this->wsize;
1471 basic_streambuf_wchar_setp(this, NULL, NULL);
1472 basic_streambuf_wchar_setg(this, NULL, NULL, NULL);
1475 /* ??0?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAE@W4_Uninitialized@1@@Z */
1476 /* ??0?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAA@W4_Uninitialized@1@@Z */
1477 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_ctor_uninitialized, 8)
1478 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_ctor_uninitialized(basic_streambuf_wchar *this, int uninitialized)
1480 TRACE("(%p %d)\n", this, uninitialized);
1481 this->vtable = &MSVCP_basic_streambuf_wchar_vtable;
1482 mutex_ctor(&this->lock);
1483 return this;
1486 /* ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAE@W4_Uninitialized@1@@Z */
1487 /* ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAA@W4_Uninitialized@1@@Z */
1488 DEFINE_THISCALL_WRAPPER(basic_streambuf_short_ctor_uninitialized, 8)
1489 basic_streambuf_wchar* __thiscall basic_streambuf_short_ctor_uninitialized(basic_streambuf_wchar *this, int uninitialized)
1491 TRACE("(%p %d)\n", this, uninitialized);
1492 basic_streambuf_wchar_ctor_uninitialized(this, uninitialized);
1493 this->vtable = &MSVCP_basic_streambuf_short_vtable;
1494 return this;
1497 /* ??0?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAE@XZ */
1498 /* ??0?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAA@XZ */
1499 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_ctor, 4)
1500 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_ctor(basic_streambuf_wchar *this)
1502 TRACE("(%p)\n", this);
1504 this->vtable = &MSVCP_basic_streambuf_wchar_vtable;
1505 mutex_ctor(&this->lock);
1506 this->loc = MSVCRT_operator_new(sizeof(locale));
1507 locale_ctor(this->loc);
1508 basic_streambuf_wchar__Init_empty(this);
1510 return this;
1513 /* ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAE@XZ */
1514 /* ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAA@XZ */
1515 DEFINE_THISCALL_WRAPPER(basic_streambuf_short_ctor, 4)
1516 basic_streambuf_wchar* __thiscall basic_streambuf_short_ctor(basic_streambuf_wchar *this)
1518 TRACE("(%p)\n", this);
1519 basic_streambuf_wchar_ctor(this);
1520 this->vtable = &MSVCP_basic_streambuf_short_vtable;
1521 return this;
1524 /* ??1?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
1525 /* ??1?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
1526 /* ??1?$basic_streambuf@GU?$char_traits@G@std@@@std@@UAE@XZ */
1527 /* ??1?$basic_streambuf@GU?$char_traits@G@std@@@std@@UEAA@XZ */
1528 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_dtor, 4)
1529 void __thiscall basic_streambuf_wchar_dtor(basic_streambuf_wchar *this)
1531 TRACE("(%p)\n", this);
1533 mutex_dtor(&this->lock);
1534 locale_dtor(this->loc);
1535 MSVCRT_operator_delete(this->loc);
1538 DEFINE_THISCALL_WRAPPER(MSVCP_basic_streambuf_wchar_vector_dtor, 8)
1539 basic_streambuf_wchar* __thiscall MSVCP_basic_streambuf_wchar_vector_dtor(basic_streambuf_wchar *this, unsigned int flags)
1541 TRACE("(%p %x)\n", this, flags);
1542 if(flags & 2) {
1543 /* we have an array, with the number of elements stored before the first object */
1544 int i, *ptr = (int *)this-1;
1546 for(i=*ptr-1; i>=0; i--)
1547 basic_streambuf_wchar_dtor(this+i);
1548 MSVCRT_operator_delete(ptr);
1549 } else {
1550 basic_streambuf_wchar_dtor(this);
1551 if(flags & 1)
1552 MSVCRT_operator_delete(this);
1555 return this;
1558 DEFINE_THISCALL_WRAPPER(MSVCP_basic_streambuf_short_vector_dtor, 8)
1559 basic_streambuf_wchar* __thiscall MSVCP_basic_streambuf_short_vector_dtor(basic_streambuf_wchar *this, unsigned int flags)
1561 TRACE("(%p %x)\n", this, flags);
1562 return MSVCP_basic_streambuf_wchar_vector_dtor(this, flags);
1565 /* ?_Gnavail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEHXZ */
1566 /* ?_Gnavail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBA_JXZ */
1567 /* ?_Gnavail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEHXZ */
1568 /* ?_Gnavail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBA_JXZ */
1569 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Gnavail, 4)
1570 streamsize __thiscall basic_streambuf_wchar__Gnavail(const basic_streambuf_wchar *this)
1572 TRACE("(%p)\n", this);
1573 return *this->prpos ? *this->prsize : 0;
1576 /* ?_Gndec@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEPA_WXZ */
1577 /* ?_Gndec@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAPEA_WXZ */
1578 /* ?_Gndec@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ */
1579 /* ?_Gndec@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAPEAGXZ */
1580 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Gndec, 4)
1581 wchar_t* __thiscall basic_streambuf_wchar__Gndec(basic_streambuf_wchar *this)
1583 TRACE("(%p)\n", this);
1584 (*this->prsize)++;
1585 (*this->prpos)--;
1586 return *this->prpos;
1589 /* ?_Gninc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEPA_WXZ */
1590 /* ?_Gninc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAPEA_WXZ */
1591 /* ?_Gninc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ */
1592 /* ?_Gninc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAPEAGXZ */
1593 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Gninc, 4)
1594 wchar_t* __thiscall basic_streambuf_wchar__Gninc(basic_streambuf_wchar *this)
1596 TRACE("(%p)\n", this);
1597 (*this->prsize)--;
1598 return (*this->prpos)++;
1601 /* ?_Gnpreinc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEPA_WXZ */
1602 /* ?_Gnpreinc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAPEA_WXZ */
1603 /* ?_Gnpreinc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ */
1604 /* ?_Gnpreinc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAPEAGXZ */
1605 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Gnpreinc, 4)
1606 wchar_t* __thiscall basic_streambuf_wchar__Gnpreinc(basic_streambuf_wchar *this)
1608 TRACE("(%p)\n", this);
1609 (*this->prsize)--;
1610 (*this->prpos)++;
1611 return *this->prpos;
1614 /* ?_Init@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXPAPA_W0PAH001@Z */
1615 /* ?_Init@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAPEA_W0PEAH001@Z */
1616 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXPAPAG0PAH001@Z */
1617 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXPEAPEAG0PEAH001@Z */
1618 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Init, 28)
1619 void __thiscall basic_streambuf_wchar__Init(basic_streambuf_wchar *this, wchar_t **gf, wchar_t **gn, int *gc, wchar_t **pf, wchar_t **pn, int *pc)
1621 TRACE("(%p %p %p %p %p %p %p)\n", this, gf, gn, gc, pf, pn, pc);
1623 this->prbuf = gf;
1624 this->pwbuf = pf;
1625 this->prpos = gn;
1626 this->pwpos = pn;
1627 this->prsize = gc;
1628 this->pwsize = pc;
1631 /* ?_Lock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
1632 /* ?_Lock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
1633 /* ?_Lock@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEXXZ */
1634 /* ?_Lock@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAXXZ */
1635 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Lock, 4)
1636 void __thiscall basic_streambuf_wchar__Lock(basic_streambuf_wchar *this)
1638 TRACE("(%p)\n", this);
1639 mutex_lock(&this->lock);
1642 /* ?_Pnavail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEHXZ */
1643 /* ?_Pnavail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBA_JXZ */
1644 /* ?_Pnavail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEHXZ */
1645 /* ?_Pnavail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBA_JXZ */
1646 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Pnavail, 4)
1647 streamsize __thiscall basic_streambuf_wchar__Pnavail(const basic_streambuf_wchar *this)
1649 TRACE("(%p)\n", this);
1650 return *this->pwpos ? *this->pwsize : 0;
1653 /* ?_Pninc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEPA_WXZ */
1654 /* ?_Pninc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAPEA_WXZ */
1655 /* ?_Pninc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ */
1656 /* ?_Pninc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAPEAGXZ */
1657 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Pninc, 4)
1658 wchar_t* __thiscall basic_streambuf_wchar__Pninc(basic_streambuf_wchar *this)
1660 TRACE("(%p)\n", this);
1661 (*this->pwsize)--;
1662 return (*this->pwpos)++;
1665 /* ?underflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEGXZ */
1666 /* ?underflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAGXZ */
1667 /* ?underflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEGXZ */
1668 /* ?underflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAGXZ */
1669 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_underflow, 4)
1670 #define call_basic_streambuf_wchar_underflow(this) CALL_VTBL_FUNC(this, 16, \
1671 unsigned short, (basic_streambuf_wchar*), (this))
1672 unsigned short __thiscall basic_streambuf_wchar_underflow(basic_streambuf_wchar *this)
1674 TRACE("(%p)\n", this);
1675 return WEOF;
1678 /* ?uflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEGXZ */
1679 /* ?uflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAGXZ */
1680 /* ?uflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEGXZ */
1681 /* ?uflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAGXZ */
1682 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_uflow, 4)
1683 #define call_basic_streambuf_wchar_uflow(this) CALL_VTBL_FUNC(this, 20, \
1684 unsigned short, (basic_streambuf_wchar*), (this))
1685 unsigned short __thiscall basic_streambuf_wchar_uflow(basic_streambuf_wchar *this)
1687 int ret;
1689 TRACE("(%p)\n", this);
1691 if(call_basic_streambuf_wchar_underflow(this)==WEOF)
1692 return WEOF;
1694 ret = **this->prpos;
1695 (*this->prsize)--;
1696 (*this->prpos)++;
1697 return ret;
1700 /* ?_Xsgetn_s@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHPA_WIH@Z */
1701 /* ?_Xsgetn_s@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA_JPEA_W_K_J@Z */
1702 /* ?_Xsgetn_s@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHPAGIH@Z */
1703 /* ?_Xsgetn_s@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA_JPEAG_K_J@Z */
1704 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Xsgetn_s, 16)
1705 #define call_basic_streambuf_wchar__Xsgetn_s(this, ptr, size, count) CALL_VTBL_FUNC(this, 28, \
1706 streamsize, (basic_streambuf_wchar*, wchar_t*, MSVCP_size_t, streamsize), (this, ptr, size, count))
1707 streamsize __thiscall basic_streambuf_wchar__Xsgetn_s(basic_streambuf_wchar *this, wchar_t *ptr, MSVCP_size_t size, streamsize count)
1709 streamsize copied, chunk;
1710 unsigned short c;
1712 TRACE("(%p %p %lu %ld)\n", this, ptr, size, count);
1714 for(copied=0; copied<count && size;) {
1715 chunk = basic_streambuf_wchar__Gnavail(this);
1716 if(chunk > count-copied)
1717 chunk = count-copied;
1719 if(chunk) {
1720 memcpy_s(ptr+copied, size, *this->prpos, chunk);
1721 *this->prpos += chunk;
1722 *this->prsize -= chunk;
1723 copied += chunk;
1724 size -= chunk;
1725 }else if((c = call_basic_streambuf_wchar_uflow(this)) != WEOF) {
1726 ptr[copied] = c;
1727 copied++;
1728 size--;
1729 }else {
1730 break;
1734 return copied;
1737 /* ?_Sgetn_s@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHPA_WIH@Z */
1738 /* ?_Sgetn_s@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA_JPEA_W_K_J@Z */
1739 /* ?_Sgetn_s@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHPAGIH@Z */
1740 /* ?_Sgetn_s@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA_JPEAG_K_J@Z */
1741 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Sgetn_s, 16)
1742 streamsize __thiscall basic_streambuf_wchar__Sgetn_s(basic_streambuf_wchar *this, wchar_t *ptr, MSVCP_size_t size, streamsize count)
1744 TRACE("(%p %p %lu %ld)\n", this, ptr, size, count);
1745 return call_basic_streambuf_wchar__Xsgetn_s(this, ptr, size, count);
1748 /* ?_Unlock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
1749 /* ?_Unlock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
1750 /* ?_Unlock@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEXXZ */
1751 /* ?_Unlock@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAXXZ */
1752 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Unlock, 4)
1753 void __thiscall basic_streambuf_wchar__Unlock(basic_streambuf_wchar *this)
1755 TRACE("(%p)\n", this);
1756 mutex_unlock(&this->lock);
1759 /* ?eback@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
1760 /* ?eback@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
1761 /* ?eback@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
1762 /* ?eback@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
1763 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_eback, 4)
1764 wchar_t* __thiscall basic_streambuf_wchar_eback(const basic_streambuf_wchar *this)
1766 TRACE("(%p)\n", this);
1767 return *this->prbuf;
1770 /* ?gptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
1771 /* ?gptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
1772 /* ?gptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
1773 /* ?gptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
1774 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_gptr, 4)
1775 wchar_t* __thiscall basic_streambuf_wchar_gptr(const basic_streambuf_wchar *this)
1777 TRACE("(%p)\n", this);
1778 return *this->prpos;
1781 /* ?egptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
1782 /* ?egptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
1783 /* ?egptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
1784 /* ?egptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
1785 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_egptr, 4)
1786 wchar_t* __thiscall basic_streambuf_wchar_egptr(const basic_streambuf_wchar *this)
1788 TRACE("(%p)\n", this);
1789 return *this->prpos+*this->prsize;
1792 /* ?epptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
1793 /* ?epptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
1794 /* ?epptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
1795 /* ?epptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
1796 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_epptr, 4)
1797 wchar_t* __thiscall basic_streambuf_wchar_epptr(const basic_streambuf_wchar *this)
1799 TRACE("(%p)\n", this);
1800 return *this->pwpos+*this->pwsize;
1803 /* ?gbump@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXH@Z */
1804 /* ?gbump@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXH@Z */
1805 /* ?gbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXH@Z */
1806 /* ?gbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXH@Z */
1807 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_gbump, 8)
1808 void __thiscall basic_streambuf_wchar_gbump(basic_streambuf_wchar *this, int off)
1810 TRACE("(%p %d)\n", this, off);
1811 *this->prpos += off;
1812 *this->prsize -= off;
1815 /* ?getloc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QBE?AVlocale@2@XZ */
1816 /* ?getloc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEBA?AVlocale@2@XZ */
1817 /* ?getloc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QBE?AVlocale@2@XZ */
1818 /* ?getloc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEBA?AVlocale@2@XZ */
1819 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_getloc, 8)
1820 locale* __thiscall basic_streambuf_wchar_getloc(const basic_streambuf_wchar *this, locale *ret)
1822 TRACE("(%p)\n", this);
1823 return locale_copy_ctor(ret, this->loc);
1826 /* ?imbue@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEXABVlocale@2@@Z */
1827 /* ?imbue@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAXAEBVlocale@2@@Z */
1828 /* ?imbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEXABVlocale@2@@Z */
1829 /* ?imbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAXAEBVlocale@2@@Z */
1830 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_imbue, 8)
1831 #define call_basic_streambuf_wchar_imbue(this, loc) CALL_VTBL_FUNC(this, 52, \
1832 void, (basic_streambuf_wchar*, const locale*), (this, loc))
1833 void __thiscall basic_streambuf_wchar_imbue(basic_streambuf_wchar *this, const locale *loc)
1835 TRACE("(%p %p)\n", this, loc);
1838 /* ?overflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEGG@Z */
1839 /* ?overflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAGG@Z */
1840 /* ?overflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEGG@Z */
1841 /* ?overflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAGG@Z */
1842 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_overflow, 8)
1843 #define call_basic_streambuf_wchar_overflow(this, ch) CALL_VTBL_FUNC(this, 4, \
1844 unsigned short, (basic_streambuf_wchar*, unsigned short), (this, ch))
1845 unsigned short __thiscall basic_streambuf_wchar_overflow(basic_streambuf_wchar *this, unsigned short ch)
1847 TRACE("(%p %d)\n", this, ch);
1848 return WEOF;
1851 /* ?pbackfail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEGG@Z */
1852 /* ?pbackfail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAGG@Z */
1853 /* ?pbackfail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEGG@Z */
1854 /* ?pbackfail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAGG@Z */
1855 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pbackfail, 8)
1856 #define call_basic_streambuf_wchar_pbackfail(this, ch) CALL_VTBL_FUNC(this, 8, \
1857 unsigned short, (basic_streambuf_wchar*, unsigned short), (this, ch))
1858 unsigned short __thiscall basic_streambuf_wchar_pbackfail(basic_streambuf_wchar *this, unsigned short ch)
1860 TRACE("(%p %d)\n", this, ch);
1861 return WEOF;
1864 /* ?pbase@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
1865 /* ?pbase@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
1866 /* ?pbase@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
1867 /* ?pbase@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
1868 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pbase, 4)
1869 wchar_t* __thiscall basic_streambuf_wchar_pbase(const basic_streambuf_wchar *this)
1871 TRACE("(%p)\n", this);
1872 return *this->pwbuf;
1875 /* ?pbump@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXH@Z */
1876 /* ?pbump@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXH@Z */
1877 /* ?pbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXH@Z */
1878 /* ?pbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXH@Z */
1879 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pbump, 8)
1880 void __thiscall basic_streambuf_wchar_pbump(basic_streambuf_wchar *this, int off)
1882 TRACE("(%p %d)\n", this, off);
1883 *this->pwpos += off;
1884 *this->pwsize -= off;
1887 /* ?pptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
1888 /* ?pptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
1889 /* ?pptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
1890 /* ?pptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
1891 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pptr, 4)
1892 wchar_t* __thiscall basic_streambuf_wchar_pptr(const basic_streambuf_wchar *this)
1894 TRACE("(%p)\n", this);
1895 return *this->pwpos;
1898 /* ?pubimbue@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
1899 /* ?pubimbue@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
1900 /* ?pubimbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
1901 /* ?pubimbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
1902 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubimbue, 12)
1903 locale* __thiscall basic_streambuf_wchar_pubimbue(basic_streambuf_wchar *this, locale *ret, const locale *loc)
1905 TRACE("(%p %p)\n", this, loc);
1906 memcpy(ret, this->loc, sizeof(locale));
1907 call_basic_streambuf_wchar_imbue(this, loc);
1908 locale_copy_ctor(this->loc, loc);
1909 return ret;
1912 /* ?seekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
1913 /* ?seekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
1914 /* ?seekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
1915 /* ?seekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
1916 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_seekoff, 20)
1917 #define call_basic_streambuf_wchar_seekoff(this, ret, off, way, mode) CALL_VTBL_FUNC(this, 36, \
1918 fpos_int*, (basic_streambuf_wchar*, fpos_int*, streamoff, int, int), (this, ret, off, way, mode))
1919 fpos_int* __thiscall basic_streambuf_wchar_seekoff(basic_streambuf_wchar *this,
1920 fpos_int *ret, streamoff off, int way, int mode)
1922 TRACE("(%p %ld %d %d)\n", this, off, way, mode);
1923 ret->off = 0;
1924 ret->pos = -1;
1925 ret->state = 0;
1926 return ret;
1929 /* ?pubseekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@JHH@Z */
1930 /* ?pubseekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@_JHH@Z */
1931 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@JHH@Z */
1932 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@_JHH@Z */
1933 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekoff, 20)
1934 fpos_int* __thiscall basic_streambuf_wchar_pubseekoff(basic_streambuf_wchar *this,
1935 fpos_int *ret, streamoff off, int way, int mode)
1937 TRACE("(%p %ld %d %d)\n", this, off, way, mode);
1938 return call_basic_streambuf_wchar_seekoff(this, ret, off, way, mode);
1941 /* ?pubseekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@JII@Z */
1942 /* ?pubseekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@_JII@Z */
1943 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@JII@Z */
1944 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@_JII@Z */
1945 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekoff_old, 20)
1946 fpos_int* __thiscall basic_streambuf_wchar_pubseekoff_old(basic_streambuf_wchar *this,
1947 fpos_int *ret, streamoff off, unsigned int way, unsigned int mode)
1949 TRACE("(%p %ld %d %d)\n", this, off, way, mode);
1950 return basic_streambuf_wchar_pubseekoff(this, ret, off, way, mode);
1953 /* ?seekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
1954 /* ?seekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
1955 /* ?seekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
1956 /* ?seekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
1957 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_seekpos, 36)
1958 #define call_basic_streambuf_wchar_seekpos(this, ret, pos, mode) CALL_VTBL_FUNC(this, 40, \
1959 fpos_int*, (basic_streambuf_wchar*, fpos_int*, fpos_int, int), (this, ret, pos, mode))
1960 fpos_int* __thiscall basic_streambuf_wchar_seekpos(basic_streambuf_wchar *this,
1961 fpos_int *ret, fpos_int pos, int mode)
1963 TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode);
1964 ret->off = 0;
1965 ret->pos = -1;
1966 ret->state = 0;
1967 return ret;
1970 /* ?pubseekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@V32@H@Z */
1971 /* ?pubseekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@V32@H@Z */
1972 /* ?pubseekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@V32@H@Z */
1973 /* ?pubseekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@V32@H@Z */
1974 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekpos, 36)
1975 fpos_int* __thiscall basic_streambuf_wchar_pubseekpos(basic_streambuf_wchar *this,
1976 fpos_int *ret, fpos_int pos, int mode)
1978 TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode);
1979 return call_basic_streambuf_wchar_seekpos(this, ret, pos, mode);
1982 /* ?pubseekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@V32@I@Z */
1983 /* ?pubseekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@V32@I@Z */
1984 /* ?pubseekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@V32@I@Z */
1985 /* ?pubseekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@V32@I@Z */
1986 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekpos_old, 36)
1987 fpos_int* __thiscall basic_streambuf_wchar_pubseekpos_old(basic_streambuf_wchar *this,
1988 fpos_int *ret, fpos_int pos, unsigned int mode)
1990 TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode);
1991 return basic_streambuf_wchar_pubseekpos(this, ret, pos, mode);
1994 /* ?setbuf@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEPAV12@PA_WH@Z */
1995 /* ?setbuf@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAPEAV12@PEA_W_J@Z */
1996 /* ?setbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEPAV12@PAGH@Z */
1997 /* ?setbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAPEAV12@PEAG_J@Z */
1998 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setbuf, 12)
1999 #define call_basic_streambuf_wchar_setbuf(this, buf, count) CALL_VTBL_FUNC(this, 44, \
2000 basic_streambuf_wchar*, (basic_streambuf_wchar*, wchar_t*, streamsize), (this, buf, count))
2001 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_setbuf(basic_streambuf_wchar *this, wchar_t *buf, streamsize count)
2003 TRACE("(%p %p %ld)\n", this, buf, count);
2004 return this;
2007 /* ?pubsetbuf@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PA_WH@Z */
2008 /* ?pubsetbuf@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEA_W_J@Z */
2009 /* ?pubsetbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PAGH@Z */
2010 /* ?pubsetbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEAG_J@Z */
2011 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubsetbuf, 12)
2012 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_pubsetbuf(basic_streambuf_wchar *this, wchar_t *buf, streamsize count)
2014 TRACE("(%p %p %ld)\n", this, buf, count);
2015 return call_basic_streambuf_wchar_setbuf(this, buf, count);
2018 /* ?sync@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHXZ */
2019 /* ?sync@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAHXZ */
2020 /* ?sync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHXZ */
2021 /* ?sync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAHXZ */
2022 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sync, 4)
2023 #define call_basic_streambuf_wchar_sync(this) CALL_VTBL_FUNC(this, 48, \
2024 int, (basic_streambuf_wchar*), (this))
2025 int __thiscall basic_streambuf_wchar_sync(basic_streambuf_wchar *this)
2027 TRACE("(%p)\n", this);
2028 return 0;
2031 /* ?pubsync@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHXZ */
2032 /* ?pubsync@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAHXZ */
2033 /* ?pubsync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHXZ */
2034 /* ?pubsync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAHXZ */
2035 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubsync, 4)
2036 int __thiscall basic_streambuf_wchar_pubsync(basic_streambuf_wchar *this)
2038 TRACE("(%p)\n", this);
2039 return call_basic_streambuf_wchar_sync(this);
2042 /* ?sgetn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHPA_WH@Z */
2043 /* ?sgetn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA_JPEA_W_J@Z */
2044 /* ?sgetn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHPAGH@Z */
2045 /* ?sgetn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA_JPEAG_J@Z */
2046 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sgetn, 12)
2047 streamsize __thiscall basic_streambuf_wchar_sgetn(basic_streambuf_wchar *this, wchar_t *ptr, streamsize count)
2049 TRACE("(%p %p %ld)\n", this, ptr, count);
2050 return call_basic_streambuf_wchar__Xsgetn_s(this, ptr, -1, count);
2053 /* ?showmanyc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHXZ */
2054 /* ?showmanyc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA_JXZ */
2055 /* ?showmanyc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHXZ */
2056 /* ?showmanyc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA_JXZ */
2057 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_showmanyc, 4)
2058 #define call_basic_streambuf_wchar_showmanyc(this) CALL_VTBL_FUNC(this, 12, \
2059 streamsize, (basic_streambuf_wchar*), (this))
2060 streamsize __thiscall basic_streambuf_wchar_showmanyc(basic_streambuf_wchar *this)
2062 TRACE("(%p)\n", this);
2063 return 0;
2066 /* ?in_avail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHXZ */
2067 /* ?in_avail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA_JXZ */
2068 /* ?in_avail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHXZ */
2069 /* ?in_avail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA_JXZ */
2070 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_in_avail, 4)
2071 streamsize __thiscall basic_streambuf_wchar_in_avail(basic_streambuf_wchar *this)
2073 streamsize ret;
2075 TRACE("(%p)\n", this);
2077 ret = basic_streambuf_wchar__Gnavail(this);
2078 return ret ? ret : call_basic_streambuf_wchar_showmanyc(this);
2081 /* ?sputbackc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEG_W@Z */
2082 /* ?sputbackc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAG_W@Z */
2083 /* ?sputbackc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGG@Z */
2084 /* ?sputbackc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGG@Z */
2085 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sputbackc, 8)
2086 unsigned short __thiscall basic_streambuf_wchar_sputbackc(basic_streambuf_wchar *this, wchar_t ch)
2088 TRACE("(%p %d)\n", this, ch);
2089 if(*this->prpos && *this->prpos>*this->prbuf && (*this->prpos)[-1]==ch) {
2090 (*this->prsize)++;
2091 (*this->prpos)--;
2092 return ch;
2095 return call_basic_streambuf_wchar_pbackfail(this, ch);
2098 /* ?sputc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEG_W@Z */
2099 /* ?sputc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAG_W@Z */
2100 /* ?sputc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGG@Z */
2101 /* ?sputc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAHG@Z */
2102 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sputc, 8)
2103 unsigned short __thiscall basic_streambuf_wchar_sputc(basic_streambuf_wchar *this, wchar_t ch)
2105 TRACE("(%p %d)\n", this, ch);
2106 return basic_streambuf_wchar__Pnavail(this) ?
2107 (*basic_streambuf_wchar__Pninc(this) = ch) :
2108 call_basic_streambuf_wchar_overflow(this, ch);
2111 /* ?sungetc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
2112 /* ?sungetc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
2113 /* ?sungetc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGXZ */
2114 /* ?sungetc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGXZ */
2115 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sungetc, 4)
2116 unsigned short __thiscall basic_streambuf_wchar_sungetc(basic_streambuf_wchar *this)
2118 TRACE("(%p)\n", this);
2119 if(*this->prpos && *this->prpos>*this->prbuf) {
2120 (*this->prsize)++;
2121 (*this->prpos)--;
2122 return **this->prpos;
2125 return call_basic_streambuf_wchar_pbackfail(this, WEOF);
2128 /* ?stossc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
2129 /* ?stossc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
2130 /* ?stossc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEXXZ */
2131 /* ?stossc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAXXZ */
2132 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_stossc, 4)
2133 void __thiscall basic_streambuf_wchar_stossc(basic_streambuf_wchar *this)
2135 TRACE("(%p)\n", this);
2136 if(basic_streambuf_wchar__Gnavail(this))
2137 basic_streambuf_wchar__Gninc(this);
2138 else
2139 call_basic_streambuf_wchar_uflow(this);
2142 /* ?sbumpc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
2143 /* ?sbumpc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
2144 /* ?sbumpc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGXZ */
2145 /* ?sbumpc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGXZ */
2146 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sbumpc, 4)
2147 unsigned short __thiscall basic_streambuf_wchar_sbumpc(basic_streambuf_wchar *this)
2149 TRACE("(%p)\n", this);
2150 return basic_streambuf_wchar__Gnavail(this) ?
2151 *basic_streambuf_wchar__Gninc(this) : call_basic_streambuf_wchar_uflow(this);
2154 /* ?sgetc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
2155 /* ?sgetc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
2156 /* ?sgetc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGXZ */
2157 /* ?sgetc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGXZ */
2158 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sgetc, 4)
2159 unsigned short __thiscall basic_streambuf_wchar_sgetc(basic_streambuf_wchar *this)
2161 TRACE("(%p)\n", this);
2162 return basic_streambuf_wchar__Gnavail(this) ?
2163 *basic_streambuf_wchar_gptr(this) : call_basic_streambuf_wchar_underflow(this);
2166 /* ?snextc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
2167 /* ?snextc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
2168 /* ?snextc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGXZ */
2169 /* ?snextc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGXZ */
2170 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_snextc, 4)
2171 unsigned short __thiscall basic_streambuf_wchar_snextc(basic_streambuf_wchar *this)
2173 TRACE("(%p)\n", this);
2175 if(basic_streambuf_wchar__Gnavail(this) > 1)
2176 return *basic_streambuf_wchar__Gnpreinc(this);
2177 return basic_streambuf_wchar_sbumpc(this)==WEOF ?
2178 WEOF : basic_streambuf_wchar_sgetc(this);
2181 /* ?xsgetn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHPA_WH@Z */
2182 /* ?xsgetn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA_JPEA_W_J@Z */
2183 /* ?xsgetn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHPAGH@Z */
2184 /* ?xsgetn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA_JPEAG_J@Z */
2185 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_xsgetn, 12)
2186 #define call_basic_streambuf_wchar_xsgetn(this, ptr, count) CALL_VTBL_FUNC(this, 24, \
2187 streamsize, (basic_streambuf_wchar*, wchar_t*, streamsize), (this, ptr, count))
2188 streamsize __thiscall basic_streambuf_wchar_xsgetn(basic_streambuf_wchar *this, wchar_t *ptr, streamsize count)
2190 TRACE("(%p %p %ld)\n", this, ptr, count);
2191 return call_basic_streambuf_wchar__Xsgetn_s(this, ptr, -1, count);
2194 /* ?xsputn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHPB_WH@Z */
2195 /* ?xsputn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA_JPEB_W_J@Z */
2196 /* ?xsputn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHPBGH@Z */
2197 /* ?xsputn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA_JPEBG_J@Z */
2198 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_xsputn, 12)
2199 #define call_basic_streambuf_wchar_xsputn(this, ptr, count) CALL_VTBL_FUNC(this, 32, \
2200 streamsize, (basic_streambuf_wchar*, const wchar_t*, streamsize), (this, ptr, count))
2201 streamsize __thiscall basic_streambuf_wchar_xsputn(basic_streambuf_wchar *this, const wchar_t *ptr, streamsize count)
2203 streamsize copied, chunk;
2205 TRACE("(%p %p %ld)\n", this, ptr, count);
2207 for(copied=0; copied<count;) {
2208 chunk = basic_streambuf_wchar__Pnavail(this);
2209 if(chunk > count-copied)
2210 chunk = count-copied;
2212 if(chunk) {
2213 memcpy(*this->pwpos, ptr+copied, chunk);
2214 *this->pwpos += chunk;
2215 *this->pwsize -= chunk;
2216 copied += chunk;
2217 }else if(call_basic_streambuf_wchar_overflow(this, ptr[copied]) != WEOF) {
2218 copied++;
2219 }else {
2220 break;
2224 return copied;
2227 /* ?sputn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHPB_WH@Z */
2228 /* ?sputn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA_JPEB_W_J@Z */
2229 /* ?sputn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHPBGH@Z */
2230 /* ?sputn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA_JPEBG_J@Z */
2231 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sputn, 12)
2232 streamsize __thiscall basic_streambuf_wchar_sputn(basic_streambuf_wchar *this, const wchar_t *ptr, streamsize count)
2234 TRACE("(%p %p %ld)\n", this, ptr, count);
2235 return call_basic_streambuf_wchar_xsputn(this, ptr, count);
2238 /* ?_Stinit@?1??_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@23@@Z@4HA */
2239 /* ?_Stinit@?1??_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@23@@Z@4HA */
2240 int basic_filebuf_char__Init__Stinit = 0;
2242 /* ?_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@12@@Z */
2243 /* ?_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@12@@Z */
2244 DEFINE_THISCALL_WRAPPER(basic_filebuf_char__Init, 12)
2245 void __thiscall basic_filebuf_char__Init(basic_filebuf_char *this, FILE *file, basic_filebuf__Initfl which)
2247 TRACE("(%p %p %d)\n", this, file, which);
2249 this->cvt = NULL;
2250 this->wrotesome = FALSE;
2251 this->state = basic_filebuf_char__Init__Stinit;
2252 this->close = (which == INITFL_open);
2253 this->file = file;
2255 basic_streambuf_char__Init_empty(&this->base);
2256 if(file)
2257 basic_streambuf_char__Init(&this->base, &file->_base, &file->_ptr,
2258 &file->_cnt, &file->_base, &file->_ptr, &file->_cnt);
2261 /* ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXPAV?$codecvt@DDH@2@@Z */
2262 /* ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXPEAV?$codecvt@DDH@2@@Z */
2263 DEFINE_THISCALL_WRAPPER(basic_filebuf_char__Initcvt, 8)
2264 void __thiscall basic_filebuf_char__Initcvt(basic_filebuf_char *this, codecvt_char *cvt)
2266 TRACE("(%p %p)\n", this, cvt);
2268 if(codecvt_base_always_noconv(&cvt->base)) {
2269 this->cvt = NULL;
2270 }else {
2271 basic_streambuf_char__Init_empty(&this->base);
2272 this->cvt = cvt;
2276 /* ?_Endwrite@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAE_NXZ */
2277 /* ?_Endwrite@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAA_NXZ */
2278 DEFINE_THISCALL_WRAPPER(basic_filebuf_char__Endwrite, 4)
2279 MSVCP_bool __thiscall basic_filebuf_char__Endwrite(basic_filebuf_char *this)
2281 TRACE("(%p)\n", this);
2283 if(!this->wrotesome || !this->cvt)
2284 return TRUE;
2287 if(call_basic_streambuf_char_overflow(&this->base, EOF) == EOF)
2288 return FALSE;
2290 while(1) {
2291 /* TODO: check if we need a dynamic buffer here */
2292 char buf[128];
2293 char *next;
2294 int ret;
2296 ret = codecvt_char_unshift(this->cvt, &this->state, buf, buf+sizeof(buf), &next);
2297 switch(ret) {
2298 case CODECVT_ok:
2299 this->wrotesome = FALSE;
2300 /* fall through */
2301 case CODECVT_partial:
2302 if(!fwrite(buf, next-buf, 1, this->file))
2303 return FALSE;
2304 if(this->wrotesome)
2305 break;
2306 /* fall through */
2307 case CODECVT_noconv:
2308 if(call_basic_streambuf_char_overflow(&this->base, EOF) == EOF)
2309 return FALSE;
2310 return TRUE;
2311 default:
2312 return FALSE;
2317 /* ?close@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@XZ */
2318 /* ?close@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@XZ */
2319 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_close, 4)
2320 basic_filebuf_char* __thiscall basic_filebuf_char_close(basic_filebuf_char *this)
2322 basic_filebuf_char *ret = this;
2324 TRACE("(%p)\n", this);
2326 if(!this->file)
2327 return NULL;
2329 /* TODO: handle exceptions */
2330 if(!basic_filebuf_char__Endwrite(this))
2331 ret = NULL;
2332 if(!fclose(this->file))
2333 ret = NULL;
2335 basic_filebuf_char__Init(this, NULL, INITFL_close);
2336 return ret;
2339 /* ??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAE@PAU_iobuf@@@Z */
2340 /* ??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAA@PEAU_iobuf@@@Z */
2341 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_ctor_file, 8)
2342 basic_filebuf_char* __thiscall basic_filebuf_char_ctor_file(basic_filebuf_char *this, FILE *file)
2344 TRACE("(%p %p)\n", this, file);
2346 basic_streambuf_char_ctor(&this->base);
2347 this->base.vtable = &MSVCP_basic_filebuf_char_vtable;
2349 basic_filebuf_char__Init(this, file, INITFL_new);
2350 return this;
2353 /* ??_F?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
2354 /* ??_F?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
2355 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_ctor, 4)
2356 basic_filebuf_char* __thiscall basic_filebuf_char_ctor(basic_filebuf_char *this)
2358 return basic_filebuf_char_ctor_file(this, NULL);
2361 /* ??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAE@W4_Uninitialized@1@@Z */
2362 /* ??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
2363 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_ctor_uninitialized, 8)
2364 basic_filebuf_char* __thiscall basic_filebuf_char_ctor_uninitialized(basic_filebuf_char *this, int uninitialized)
2366 TRACE("(%p %d)\n", this, uninitialized);
2368 basic_streambuf_char_ctor(&this->base);
2369 this->base.vtable = &MSVCP_basic_filebuf_char_vtable;
2370 return this;
2373 /* ??1?$basic_filebuf@DU?$char_traits@D@std@@@std@@UAE@XZ */
2374 /* ??1?$basic_filebuf@DU?$char_traits@D@std@@@std@@UEAA@XZ */
2375 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_dtor, 4)
2376 void __thiscall basic_filebuf_char_dtor(basic_filebuf_char *this)
2378 TRACE("(%p)\n", this);
2380 if(this->close)
2381 basic_filebuf_char_close(this);
2382 basic_streambuf_char_dtor(&this->base);
2385 DEFINE_THISCALL_WRAPPER(MSVCP_basic_filebuf_char_vector_dtor, 8)
2386 basic_filebuf_char* __thiscall MSVCP_basic_filebuf_char_vector_dtor(basic_filebuf_char *this, unsigned int flags)
2388 TRACE("(%p %x)\n", this, flags);
2389 if(flags & 2) {
2390 /* we have an array, with the number of elements stored before the first object */
2391 int i, *ptr = (int *)this-1;
2393 for(i=*ptr-1; i>=0; i--)
2394 basic_filebuf_char_dtor(this+i);
2395 MSVCRT_operator_delete(ptr);
2396 } else {
2397 basic_filebuf_char_dtor(this);
2398 if(flags & 1)
2399 MSVCRT_operator_delete(this);
2402 return this;
2405 /* ?is_open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QBE_NXZ */
2406 /* ?is_open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEBA_NXZ */
2407 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_is_open, 4)
2408 MSVCP_bool __thiscall basic_filebuf_char_is_open(const basic_filebuf_char *this)
2410 TRACE("(%p)\n", this);
2411 return this->file != NULL;
2414 /* ?_Fiopen@std@@YAPAU_iobuf@@PB_WHH@Z */
2415 /* ?_Fiopen@std@@YAPEAU_iobuf@@PEB_WHH@Z */
2416 FILE* __cdecl _Fiopen_wchar(const wchar_t *name, int mode, int prot)
2418 static const wchar_t rW[] = {'r',0};
2419 static const struct {
2420 int mode;
2421 const wchar_t str[4];
2422 const wchar_t str_bin[4];
2423 } str_mode[] = {
2424 {OPENMODE_out, {'w',0}, {'w','b',0}},
2425 {OPENMODE_out|OPENMODE_app, {'a',0}, {'a','b',0}},
2426 {OPENMODE_app, {'a',0}, {'a','b',0}},
2427 {OPENMODE_out|OPENMODE_trunc, {'w',0}, {'w','b',0}},
2428 {OPENMODE_in, {'r',0}, {'r','b',0}},
2429 {OPENMODE_in|OPENMODE_out, {'r','+',0}, {'r','+','b',0}},
2430 {OPENMODE_in|OPENMODE_out|OPENMODE_trunc, {'w','+',0}, {'w','+','b',0}},
2431 {OPENMODE_in|OPENMODE_out|OPENMODE_app, {'a','+',0}, {'a','+','b',0}},
2432 {OPENMODE_in|OPENMODE_app, {'a','+',0}, {'a','+','b',0}}
2435 int real_mode = mode & ~(OPENMODE_ate|OPENMODE__Nocreate|OPENMODE__Noreplace|OPENMODE_binary);
2436 int mode_idx;
2437 FILE *f = NULL;
2439 TRACE("(%s %d %d)\n", debugstr_w(name), mode, prot);
2441 for(mode_idx=0; mode_idx<sizeof(str_mode)/sizeof(str_mode[0]); mode_idx++)
2442 if(str_mode[mode_idx].mode == real_mode)
2443 break;
2444 if(mode_idx == sizeof(str_mode)/sizeof(str_mode[0]))
2445 return NULL;
2447 if((mode & OPENMODE__Nocreate) && !(f = _wfopen(name, rW)))
2448 return NULL;
2449 else if(f)
2450 fclose(f);
2452 if((mode & OPENMODE__Noreplace) && (mode & (OPENMODE_out|OPENMODE_app))
2453 && (f = _wfopen(name, rW))) {
2454 fclose(f);
2455 return NULL;
2458 f = _wfsopen(name, (mode & OPENMODE_binary) ? str_mode[mode_idx].str_bin
2459 : str_mode[mode_idx].str, prot);
2460 if(!f)
2461 return NULL;
2463 if((mode & OPENMODE_ate) && fseek(f, 0, SEEK_END)) {
2464 fclose(f);
2465 return NULL;
2468 return f;
2471 /* ?_Fiopen@std@@YAPAU_iobuf@@PBDHH@Z */
2472 /* ?_Fiopen@std@@YAPEAU_iobuf@@PEBDHH@Z */
2473 FILE* __cdecl _Fiopen(const char *name, int mode, int prot)
2475 wchar_t nameW[FILENAME_MAX];
2477 TRACE("(%s %d %d)\n", name, mode, prot);
2479 if(mbstowcs_s(NULL, nameW, FILENAME_MAX, name, FILENAME_MAX-1) != 0)
2480 return NULL;
2481 return _Fiopen_wchar(nameW, mode, prot);
2484 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PB_WHH@Z */
2485 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEB_WHH@Z */
2486 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBGHH@Z */
2487 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBGHH@Z */
2488 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open_wchar, 16)
2489 basic_filebuf_char* __thiscall basic_filebuf_char_open_wchar(basic_filebuf_char *this, const wchar_t *name, int mode, int prot)
2491 FILE *f = NULL;
2493 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
2495 if(basic_filebuf_char_is_open(this))
2496 return NULL;
2498 if(!(f = _Fiopen_wchar(name, mode, prot)))
2499 return NULL;
2501 basic_filebuf_char__Init(this, f, INITFL_open);
2502 basic_filebuf_char__Initcvt(this, codecvt_char_use_facet(this->base.loc));
2503 return this;
2506 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PB_WI@Z */
2507 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEB_WI@Z */
2508 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBGI@Z */
2509 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBGI@Z */
2510 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open_wchar_mode, 12)
2511 basic_filebuf_char* __thiscall basic_filebuf_char_open_wchar_mode(basic_filebuf_char *this, const wchar_t *name, unsigned int mode)
2513 return basic_filebuf_char_open_wchar(this, name, mode, SH_DENYNO);
2516 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBDHH@Z */
2517 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBDHH@Z */
2518 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open, 16)
2519 basic_filebuf_char* __thiscall basic_filebuf_char_open(basic_filebuf_char *this, const char *name, int mode, int prot)
2521 wchar_t nameW[FILENAME_MAX];
2523 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
2525 if(mbstowcs_s(NULL, nameW, FILENAME_MAX, name, FILENAME_MAX-1) != 0)
2526 return NULL;
2527 return basic_filebuf_char_open_wchar(this, nameW, mode, prot);
2530 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBDI@Z */
2531 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBDI@Z */
2532 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open_mode, 12)
2533 basic_filebuf_char* __thiscall basic_filebuf_char_open_mode(basic_filebuf_char *this, const char *name, unsigned int mode)
2535 return basic_filebuf_char_open(this, name, mode, SH_DENYNO);
2538 /* ?overflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
2539 /* ?overflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
2540 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_overflow, 8)
2541 int __thiscall basic_filebuf_char_overflow(basic_filebuf_char *this, int c)
2543 char buf[8], *dyn_buf;
2544 char ch = c, *to_next;
2545 const char *from_next;
2546 int ret, max_size;
2549 TRACE("(%p %d)\n", this, c);
2551 if(!basic_filebuf_char_is_open(this))
2552 return EOF;
2553 if(c == EOF)
2554 return !c;
2556 if(!this->cvt)
2557 return fwrite(&ch, sizeof(char), 1, this->file) ? c : EOF;
2559 from_next = &ch;
2560 do {
2561 ret = codecvt_char_out(this->cvt, &this->state, from_next, &ch+1,
2562 &from_next, buf, buf+sizeof(buf), &to_next);
2564 switch(ret) {
2565 case CODECVT_partial:
2566 if(to_next == buf)
2567 break;
2568 /* fall through */
2569 case CODECVT_ok:
2570 if(!fwrite(buf, to_next-buf, 1, this->file))
2571 return EOF;
2572 if(ret == CODECVT_partial)
2573 continue;
2574 return c;
2575 case CODECVT_noconv:
2576 return fwrite(&ch, sizeof(char), 1, this->file) ? c : EOF;
2577 default:
2578 return EOF;
2581 break;
2582 } while(1);
2584 max_size = codecvt_base_max_length(&this->cvt->base);
2585 dyn_buf = malloc(max_size);
2586 if(!dyn_buf)
2587 return EOF;
2589 ret = codecvt_char_out(this->cvt, &this->state, from_next, &ch+1,
2590 &from_next, dyn_buf, dyn_buf+max_size, &to_next);
2592 switch(ret) {
2593 case CODECVT_ok:
2594 ret = fwrite(dyn_buf, to_next-dyn_buf, 1, this->file);
2595 free(dyn_buf);
2596 return ret ? c : EOF;
2597 case CODECVT_partial:
2598 ERR("buffer should be big enough to store all output\n");
2599 /* fall through */
2600 default:
2601 free(dyn_buf);
2602 return EOF;
2606 /* ?pbackfail@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
2607 /* ?pbackfail@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
2608 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_pbackfail, 8)
2609 int __thiscall basic_filebuf_char_pbackfail(basic_filebuf_char *this, int c)
2611 TRACE("(%p %d)\n", this, c);
2613 if(!basic_filebuf_char_is_open(this))
2614 return EOF;
2616 if(basic_streambuf_char_gptr(&this->base)>basic_streambuf_char_eback(&this->base)
2617 && (c==EOF || basic_streambuf_char_gptr(&this->base)[-1]==(char)c)) {
2618 basic_streambuf_char__Gndec(&this->base);
2619 return c==EOF ? !c : c;
2620 }else if(c!=EOF && !this->cvt) {
2621 return ungetc(c, this->file);
2624 return EOF;
2627 /* ?uflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
2628 /* ?uflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
2629 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_uflow, 4)
2630 int __thiscall basic_filebuf_char_uflow(basic_filebuf_char *this)
2632 char ch, buf[128], *to_next;
2633 const char *buf_next;
2634 int c, i;
2636 TRACE("(%p)\n", this);
2638 if(!basic_filebuf_char_is_open(this))
2639 return EOF;
2641 if(basic_streambuf_char_gptr(&this->base) < basic_streambuf_char_egptr(&this->base))
2642 return *basic_streambuf_char__Gninc(&this->base);
2644 c = fgetc(this->file);
2645 if(!this->cvt || c==EOF)
2646 return c;
2648 buf_next = buf;
2649 for(i=0; i < sizeof(buf)/sizeof(buf[0]); i++) {
2650 buf[i] = c;
2652 switch(codecvt_char_in(this->cvt, &this->state, buf_next,
2653 buf+i+1, &buf_next, &ch, &ch+1, &to_next)) {
2654 case CODECVT_partial:
2655 case CODECVT_ok:
2656 if(to_next == &ch) {
2657 c = fgetc(this->file);
2658 if(c == EOF)
2659 return EOF;
2660 continue;
2663 for(i--; i>=buf_next-buf; i--)
2664 ungetc(buf[i], this->file);
2665 return ch;
2666 case CODECVT_noconv:
2667 return buf[0];
2668 default:
2669 return EOF;
2673 FIXME("buffer is too small\n");
2674 return EOF;
2677 /* ?underflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
2678 /* ?underflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
2679 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_underflow, 4)
2680 int __thiscall basic_filebuf_char_underflow(basic_filebuf_char *this)
2682 int ret;
2684 TRACE("(%p)\n", this);
2686 if(basic_streambuf_char_gptr(&this->base) < basic_streambuf_char_egptr(&this->base))
2687 return *basic_streambuf_char_gptr(&this->base);
2689 ret = call_basic_streambuf_char_uflow(&this->base);
2690 if(ret != EOF)
2691 ret = call_basic_streambuf_char_pbackfail(&this->base, ret);
2692 return ret;
2695 /* ?seekoff@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
2696 /* ?seekoff@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
2697 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_seekoff, 20)
2698 fpos_int* __thiscall basic_filebuf_char_seekoff(basic_filebuf_char *this,
2699 fpos_int *ret, streamoff off, int way, int mode)
2701 fpos_t pos;
2703 TRACE("(%p %p %ld %d %d)\n", this, ret, off, way, mode);
2705 if(!basic_filebuf_char_is_open(this) || !basic_filebuf_char__Endwrite(this)
2706 || fseek(this->file, off, way)) {
2707 ret->off = 0;
2708 ret->pos = -1;
2709 ret->state = 0;
2710 return ret;
2713 fgetpos(this->file, &pos);
2714 ret->off = 0;
2715 ret->pos = pos;
2716 ret->state = this->state;
2717 return ret;
2720 /* ?seekpos@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
2721 /* ?seekpos@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
2722 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_seekpos, 36)
2723 fpos_int* __thiscall basic_filebuf_char_seekpos(basic_filebuf_char *this,
2724 fpos_int *ret, fpos_int pos, int mode)
2726 fpos_t fpos;
2728 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_int(&pos), mode);
2730 if(!basic_filebuf_char_is_open(this) || !basic_filebuf_char__Endwrite(this)
2731 || fseek(this->file, (LONG)pos.pos, SEEK_SET)
2732 || (pos.off && fseek(this->file, pos.off, SEEK_CUR))) {
2733 ret->off = 0;
2734 ret->pos = -1;
2735 ret->state = 0;
2736 return ret;
2739 fgetpos(this->file, &fpos);
2740 ret->off = 0;
2741 ret->pos = fpos;
2742 ret->state = this->state;
2743 return ret;
2746 /* ?setbuf@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PADH@Z */
2747 /* ?setbuf@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PEAD_J@Z */
2748 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_setbuf, 12)
2749 basic_streambuf_char* __thiscall basic_filebuf_char_setbuf(basic_filebuf_char *this, char *buf, streamsize count)
2751 TRACE("(%p %p %ld)\n", this, buf, count);
2753 if(!basic_filebuf_char_is_open(this))
2754 return NULL;
2756 if(setvbuf(this->file, buf, (buf==NULL && count==0) ? _IONBF : _IOFBF, count))
2757 return NULL;
2759 basic_filebuf_char__Init(this, this->file, INITFL_open);
2760 return &this->base;
2763 /* ?sync@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
2764 /* ?sync@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
2765 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_sync, 4)
2766 int __thiscall basic_filebuf_char_sync(basic_filebuf_char *this)
2768 TRACE("(%p)\n", this);
2770 if(!basic_filebuf_char_is_open(this))
2771 return 0;
2773 if(call_basic_streambuf_char_overflow(&this->base, EOF) == EOF)
2774 return 0;
2775 return fflush(this->file);
2778 /* ?imbue@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEXABVlocale@2@@Z */
2779 /* ?imbue@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAXAEBVlocale@2@@Z */
2780 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_imbue, 8)
2781 void __thiscall basic_filebuf_char_imbue(basic_filebuf_char *this, const locale *loc)
2783 TRACE("(%p %p)\n", this, loc);
2784 basic_filebuf_char__Initcvt(this, codecvt_char_use_facet(loc));
2787 /* ?_Stinit@?1??_Init@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@23@@Z@4HA */
2788 /* ?_Stinit@?1??_Init@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@23@@Z@4HA */
2789 int basic_filebuf_wchar__Init__Stinit = 0;
2791 /* ?_Stinit@?1??_Init@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@23@@Z@4HA */
2792 /* ?_Stinit@?1??_Init@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@23@@Z@4HA */
2793 int basic_filebuf_short__Init__Stinit = 0;
2795 /* ?_Init@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@12@@Z */
2796 /* ?_Init@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@12@@Z */
2797 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar__Init, 12)
2798 void __thiscall basic_filebuf_wchar__Init(basic_filebuf_wchar *this, FILE *file, basic_filebuf__Initfl which)
2800 TRACE("(%p %p %d)\n", this, file, which);
2802 this->cvt = NULL;
2803 this->wrotesome = FALSE;
2804 this->state = basic_filebuf_wchar__Init__Stinit;
2805 this->close = (which == INITFL_open);
2806 this->file = file;
2808 basic_streambuf_wchar__Init_empty(&this->base);
2811 /* ?_Init@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@12@@Z */
2812 /* ?_Init@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@12@@Z */
2813 DEFINE_THISCALL_WRAPPER(basic_filebuf_short__Init, 12)
2814 void __thiscall basic_filebuf_short__Init(basic_filebuf_wchar *this, FILE *file, basic_filebuf__Initfl which)
2816 TRACE("(%p %p %d)\n", this, file, which);
2818 this->cvt = NULL;
2819 this->wrotesome = FALSE;
2820 this->state = basic_filebuf_short__Init__Stinit;
2821 this->close = (which == INITFL_open);
2822 this->file = file;
2824 basic_streambuf_wchar__Init_empty(&this->base);
2827 /* ?_Initcvt@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAEXPAV?$codecvt@_WDH@2@@Z */
2828 /* ?_Initcvt@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAV?$codecvt@_WDH@2@@Z */
2829 /* ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXPAV?$codecvt@GDH@2@@Z */
2830 /* ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXPEAV?$codecvt@GDH@2@@Z */
2831 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar__Initcvt, 8)
2832 void __thiscall basic_filebuf_wchar__Initcvt(basic_filebuf_wchar *this, codecvt_wchar *cvt)
2834 TRACE("(%p %p)\n", this, cvt);
2836 if(codecvt_base_always_noconv(&cvt->base)) {
2837 this->cvt = NULL;
2838 }else {
2839 basic_streambuf_wchar__Init_empty(&this->base);
2840 this->cvt = cvt;
2844 /* ?_Endwrite@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAE_NXZ */
2845 /* ?_Endwrite@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAA_NXZ */
2846 /* ?_Endwrite@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAE_NXZ */
2847 /* ?_Endwrite@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAA_NXZ */
2848 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar__Endwrite, 4)
2849 MSVCP_bool __thiscall basic_filebuf_wchar__Endwrite(basic_filebuf_wchar *this)
2851 TRACE("(%p)\n", this);
2853 if(!this->wrotesome || !this->cvt)
2854 return TRUE;
2856 if(call_basic_streambuf_wchar_overflow(&this->base, WEOF) == WEOF)
2857 return FALSE;
2859 while(1) {
2860 /* TODO: check if we need a dynamic buffer here */
2861 char buf[128];
2862 char *next;
2863 int ret;
2865 ret = codecvt_wchar_unshift(this->cvt, &this->state, buf, buf+sizeof(buf), &next);
2866 switch(ret) {
2867 case CODECVT_ok:
2868 this->wrotesome = FALSE;
2869 /* fall through */
2870 case CODECVT_partial:
2871 if(!fwrite(buf, next-buf, 1, this->file))
2872 return FALSE;
2873 if(this->wrotesome)
2874 break;
2875 /* fall through */
2876 case CODECVT_noconv:
2877 if(call_basic_streambuf_wchar_overflow(&this->base, WEOF) == WEOF)
2878 return FALSE;
2879 return TRUE;
2880 default:
2881 return FALSE;
2886 /* ?close@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@XZ */
2887 /* ?close@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@XZ */
2888 /* ?close@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@XZ */
2889 /* ?close@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@XZ */
2890 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_close, 4)
2891 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_close(basic_filebuf_wchar *this)
2893 basic_filebuf_wchar *ret = this;
2895 TRACE("(%p)\n", this);
2897 if(!this->file)
2898 return NULL;
2900 /* TODO: handle exceptions */
2901 if(!basic_filebuf_wchar__Endwrite(this))
2902 ret = NULL;
2903 if(!fclose(this->file))
2904 ret = NULL;
2906 basic_filebuf_wchar__Init(this, NULL, INITFL_close);
2907 return ret;
2910 /* ??0?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAE@PAU_iobuf@@@Z */
2911 /* ??0?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAA@PEAU_iobuf@@@Z */
2912 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_ctor_file, 8)
2913 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_ctor_file(basic_filebuf_wchar *this, FILE *file)
2915 TRACE("(%p %p)\n", this, file);
2917 basic_streambuf_wchar_ctor(&this->base);
2918 this->base.vtable = &MSVCP_basic_filebuf_wchar_vtable;
2920 basic_filebuf_wchar__Init(this, file, INITFL_new);
2921 return this;
2924 /* ??0?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAE@PAU_iobuf@@@Z */
2925 /* ??0?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAA@PEAU_iobuf@@@Z */
2926 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_ctor_file, 8)
2927 basic_filebuf_wchar* __thiscall basic_filebuf_short_ctor_file(basic_filebuf_wchar *this, FILE *file)
2929 TRACE("(%p %p)\n", this, file);
2931 basic_streambuf_short_ctor(&this->base);
2932 this->base.vtable = &MSVCP_basic_filebuf_short_vtable;
2934 basic_filebuf_short__Init(this, file, INITFL_new);
2935 return this;
2938 /* ??_F?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
2939 /* ??_F?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
2940 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_ctor, 4)
2941 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_ctor(basic_filebuf_wchar *this)
2943 return basic_filebuf_wchar_ctor_file(this, NULL);
2946 /* ??_F?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEXXZ */
2947 /* ??_F?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAXXZ */
2948 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_ctor, 4)
2949 basic_filebuf_wchar* __thiscall basic_filebuf_short_ctor(basic_filebuf_wchar *this)
2951 return basic_filebuf_short_ctor_file(this, NULL);
2954 /* ??0?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAE@W4_Uninitialized@1@@Z */
2955 /* ??0?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
2956 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_ctor_uninitialized, 8)
2957 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_ctor_uninitialized(basic_filebuf_wchar *this, int uninitialized)
2959 TRACE("(%p %d)\n", this, uninitialized);
2961 basic_streambuf_wchar_ctor(&this->base);
2962 this->base.vtable = &MSVCP_basic_filebuf_wchar_vtable;
2963 return this;
2966 /* ??0?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAE@W4_Uninitialized@1@@Z */
2967 /* ??0?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
2968 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_ctor_uninitialized, 8)
2969 basic_filebuf_wchar* __thiscall basic_filebuf_short_ctor_uninitialized(basic_filebuf_wchar *this, int uninitialized)
2971 TRACE("(%p %d)\n", this, uninitialized);
2973 basic_streambuf_short_ctor(&this->base);
2974 this->base.vtable = &MSVCP_basic_filebuf_short_vtable;
2975 return this;
2978 /* ??1?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
2979 /* ??1?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
2980 /* ??1?$basic_filebuf@GU?$char_traits@G@std@@@std@@UAE@XZ */
2981 /* ??1?$basic_filebuf@GU?$char_traits@G@std@@@std@@UEAA@XZ */
2982 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_dtor, 4)
2983 void __thiscall basic_filebuf_wchar_dtor(basic_filebuf_wchar *this)
2985 TRACE("(%p)\n", this);
2987 if(this->close)
2988 basic_filebuf_wchar_close(this);
2989 basic_streambuf_wchar_dtor(&this->base);
2992 DEFINE_THISCALL_WRAPPER(MSVCP_basic_filebuf_wchar_vector_dtor, 8)
2993 basic_filebuf_wchar* __thiscall MSVCP_basic_filebuf_wchar_vector_dtor(basic_filebuf_wchar *this, unsigned int flags)
2995 TRACE("(%p %x)\n", this, flags);
2996 if(flags & 2) {
2997 /* we have an array, with the number of elements stored before the first object */
2998 int i, *ptr = (int *)this-1;
3000 for(i=*ptr-1; i>=0; i--)
3001 basic_filebuf_wchar_dtor(this+i);
3002 MSVCRT_operator_delete(ptr);
3003 } else {
3004 basic_filebuf_wchar_dtor(this);
3005 if(flags & 1)
3006 MSVCRT_operator_delete(this);
3009 return this;
3012 DEFINE_THISCALL_WRAPPER(MSVCP_basic_filebuf_short_vector_dtor, 8)
3013 basic_filebuf_wchar* __thiscall MSVCP_basic_filebuf_short_vector_dtor(basic_filebuf_wchar *this, unsigned int flags)
3015 return MSVCP_basic_filebuf_wchar_vector_dtor(this, flags);
3018 /* ?is_open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QBE_NXZ */
3019 /* ?is_open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEBA_NXZ */
3020 /* ?is_open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QBE_NXZ */
3021 /* ?is_open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEBA_NXZ */
3022 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_is_open, 4)
3023 MSVCP_bool __thiscall basic_filebuf_wchar_is_open(const basic_filebuf_wchar *this)
3025 TRACE("(%p)\n", this);
3026 return this->file != NULL;
3029 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PB_WHH@Z */
3030 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEB_WHH@Z */
3031 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PBGHH@Z */
3032 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEBGHH@Z */
3033 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_open_wchar, 16)
3034 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_open_wchar(basic_filebuf_wchar *this, const wchar_t *name, int mode, int prot)
3036 FILE *f = NULL;
3038 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
3040 if(basic_filebuf_wchar_is_open(this))
3041 return NULL;
3043 if(!(f = _Fiopen_wchar(name, mode, prot)))
3044 return NULL;
3046 basic_filebuf_wchar__Init(this, f, INITFL_open);
3047 basic_filebuf_wchar__Initcvt(this, codecvt_wchar_use_facet(this->base.loc));
3048 return this;
3051 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PB_WHH@Z */
3052 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEB_WHH@Z */
3053 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBGHH@Z */
3054 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBGHH@Z */
3055 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_open_wchar, 16)
3056 basic_filebuf_wchar* __thiscall basic_filebuf_short_open_wchar(basic_filebuf_wchar *this, const wchar_t *name, int mode, int prot)
3058 FILE *f = NULL;
3060 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
3062 if(basic_filebuf_wchar_is_open(this))
3063 return NULL;
3065 if(!(f = _Fiopen_wchar(name, mode, prot)))
3066 return NULL;
3068 basic_filebuf_short__Init(this, f, INITFL_open);
3069 basic_filebuf_wchar__Initcvt(this, codecvt_short_use_facet(this->base.loc));
3070 return this;
3073 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PB_WI@Z */
3074 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEB_WI@Z */
3075 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PBGI@Z */
3076 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEBGI@Z */
3077 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_open_wchar_mode, 12)
3078 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_open_wchar_mode(basic_filebuf_wchar *this, const wchar_t *name, unsigned int mode)
3080 return basic_filebuf_wchar_open_wchar(this, name, mode, SH_DENYNO);
3083 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PB_WI@Z */
3084 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEB_WI@Z */
3085 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBGI@Z */
3086 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBGI@Z */
3087 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_open_wchar_mode, 12)
3088 basic_filebuf_wchar* __thiscall basic_filebuf_short_open_wchar_mode(basic_filebuf_wchar *this, const wchar_t *name, unsigned int mode)
3090 return basic_filebuf_short_open_wchar(this, name, mode, SH_DENYNO);
3093 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PBDHH@Z */
3094 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEBDHH@Z */
3095 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_open, 16)
3096 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_open(basic_filebuf_wchar *this, const char *name, int mode, int prot)
3098 wchar_t nameW[FILENAME_MAX];
3100 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
3102 if(mbstowcs_s(NULL, nameW, FILENAME_MAX, name, FILENAME_MAX-1) != 0)
3103 return NULL;
3104 return basic_filebuf_wchar_open_wchar(this, nameW, mode, prot);
3107 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBDHH@Z */
3108 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBDHH@Z */
3109 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_open, 16)
3110 basic_filebuf_wchar* __thiscall basic_filebuf_short_open(basic_filebuf_wchar *this, const char *name, int mode, int prot)
3112 wchar_t nameW[FILENAME_MAX];
3114 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
3116 if(mbstowcs_s(NULL, nameW, FILENAME_MAX, name, FILENAME_MAX-1) != 0)
3117 return NULL;
3118 return basic_filebuf_short_open_wchar(this, nameW, mode, prot);
3121 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PBDI@Z */
3122 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEBDI@Z */
3123 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_open_mode, 12)
3124 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_open_mode(basic_filebuf_wchar *this, const char *name, unsigned int mode)
3126 return basic_filebuf_wchar_open(this, name, mode, SH_DENYNO);
3129 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBDI@Z */
3130 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBDI@Z */
3131 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_open_mode, 12)
3132 basic_filebuf_wchar* __thiscall basic_filebuf_short_open_mode(basic_filebuf_wchar *this, const char *name, unsigned int mode)
3134 return basic_filebuf_short_open(this, name, mode, SH_DENYNO);
3137 /* ?overflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEGG@Z */
3138 /* ?overflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAGG@Z */
3139 /* ?overflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEGG@Z */
3140 /* ?overflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAGG@Z */
3141 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_overflow, 8)
3142 unsigned short __thiscall basic_filebuf_wchar_overflow(basic_filebuf_wchar *this, unsigned short c)
3144 char buf[8], *dyn_buf, *to_next;
3145 wchar_t ch = c;
3146 const wchar_t *from_next;
3147 int max_size;
3148 unsigned short ret;
3151 TRACE("(%p %d)\n", this, c);
3153 if(!basic_filebuf_wchar_is_open(this))
3154 return WEOF;
3155 if(c == WEOF)
3156 return !c;
3158 if(!this->cvt)
3159 return fwrite(&ch, sizeof(wchar_t), 1, this->file) ? c : WEOF;
3161 from_next = &ch;
3162 do {
3163 ret = codecvt_wchar_out(this->cvt, &this->state, from_next, &ch+1,
3164 &from_next, buf, buf+sizeof(buf), &to_next);
3166 switch(ret) {
3167 case CODECVT_partial:
3168 if(to_next == buf)
3169 break;
3170 /* fall through */
3171 case CODECVT_ok:
3172 if(!fwrite(buf, to_next-buf, 1, this->file))
3173 return WEOF;
3174 if(ret == CODECVT_partial)
3175 continue;
3176 return c;
3177 case CODECVT_noconv:
3178 return fwrite(&ch, sizeof(wchar_t), 1, this->file) ? c : WEOF;
3179 default:
3180 return WEOF;
3183 break;
3184 } while(1);
3186 max_size = codecvt_base_max_length(&this->cvt->base);
3187 dyn_buf = malloc(max_size);
3188 if(!dyn_buf)
3189 return WEOF;
3191 ret = codecvt_wchar_out(this->cvt, &this->state, from_next, &ch+1,
3192 &from_next, dyn_buf, dyn_buf+max_size, &to_next);
3194 switch(ret) {
3195 case CODECVT_ok:
3196 ret = fwrite(dyn_buf, to_next-dyn_buf, 1, this->file);
3197 free(dyn_buf);
3198 return ret ? c : WEOF;
3199 case CODECVT_partial:
3200 ERR("buffer should be big enough to store all output\n");
3201 /* fall through */
3202 default:
3203 free(dyn_buf);
3204 return WEOF;
3208 /* ?pbackfail@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEGG@Z */
3209 /* ?pbackfail@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAGG@Z */
3210 /* ?pbackfail@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEGG@Z */
3211 /* ?pbackfail@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAGG@Z */
3212 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_pbackfail, 8)
3213 unsigned short __thiscall basic_filebuf_wchar_pbackfail(basic_filebuf_wchar *this, unsigned short c)
3215 TRACE("(%p %d)\n", this, c);
3217 if(!basic_filebuf_wchar_is_open(this))
3218 return WEOF;
3220 if(basic_streambuf_wchar_gptr(&this->base)>basic_streambuf_wchar_eback(&this->base)
3221 && (c==WEOF || basic_streambuf_wchar_gptr(&this->base)[-1]==(wchar_t)c)) {
3222 basic_streambuf_wchar__Gndec(&this->base);
3223 return c==WEOF ? !c : c;
3224 }else if(c!=WEOF && !this->cvt) {
3225 return ungetwc(c, this->file);
3226 }else if(c!=WEOF && basic_streambuf_wchar_gptr(&this->base)!=&this->putback) {
3227 this->putback = c;
3228 basic_streambuf_wchar_setg(&this->base, &this->putback, &this->putback, &this->putback+1);
3229 return c;
3232 return WEOF;
3235 /* ?uflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEGXZ */
3236 /* ?uflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAGXZ */
3237 /* ?uflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEGXZ */
3238 /* ?uflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAGXZ */
3239 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_uflow, 4)
3240 unsigned short __thiscall basic_filebuf_wchar_uflow(basic_filebuf_wchar *this)
3242 wchar_t ch, *to_next;
3243 char buf[128];
3244 const char *buf_next;
3245 int c, i;
3247 TRACE("(%p)\n", this);
3249 if(!basic_filebuf_wchar_is_open(this))
3250 return WEOF;
3252 if(basic_streambuf_wchar_gptr(&this->base) < basic_streambuf_wchar_egptr(&this->base))
3253 return *basic_streambuf_wchar__Gninc(&this->base);
3255 if(!this->cvt)
3256 return fgetwc(this->file);
3258 buf_next = buf;
3259 for(i=0; i < sizeof(buf)/sizeof(buf[0]); i++) {
3260 if((c = fgetc(this->file)) == EOF)
3261 return WEOF;
3262 buf[i] = c;
3264 switch(codecvt_wchar_in(this->cvt, &this->state, buf_next,
3265 buf+i+1, &buf_next, &ch, &ch+1, &to_next)) {
3266 case CODECVT_partial:
3267 case CODECVT_ok:
3268 if(to_next == &ch)
3269 continue;
3271 for(i--; i>=buf_next-buf; i--)
3272 ungetc(buf[i], this->file);
3273 return ch;
3274 case CODECVT_noconv:
3275 if(i+1 < sizeof(wchar_t))
3276 continue;
3278 memcpy(&ch, buf, sizeof(wchar_t));
3279 return ch;
3280 default:
3281 return WEOF;
3285 FIXME("buffer is too small\n");
3286 return WEOF;
3289 /* ?underflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEGXZ */
3290 /* ?underflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAGXZ */
3291 /* ?underflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEGXZ */
3292 /* ?underflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAGXZ */
3293 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_underflow, 4)
3294 unsigned short __thiscall basic_filebuf_wchar_underflow(basic_filebuf_wchar *this)
3296 unsigned short ret;
3298 TRACE("(%p)\n", this);
3300 if(basic_streambuf_wchar_gptr(&this->base) < basic_streambuf_wchar_egptr(&this->base))
3301 return *basic_streambuf_wchar_gptr(&this->base);
3303 ret = call_basic_streambuf_wchar_uflow(&this->base);
3304 if(ret != WEOF)
3305 ret = call_basic_streambuf_wchar_pbackfail(&this->base, ret);
3306 return ret;
3309 /* ?seekoff@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
3310 /* ?seekoff@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
3311 /* ?seekoff@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
3312 /* ?seekoff@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
3313 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_seekoff, 20)
3314 fpos_int* __thiscall basic_filebuf_wchar_seekoff(basic_filebuf_wchar *this,
3315 fpos_int *ret, streamoff off, int way, int mode)
3317 fpos_t pos;
3319 TRACE("(%p %p %ld %d %d)\n", this, ret, off, way, mode);
3321 if(basic_streambuf_wchar_gptr(&this->base) == &this->putback) {
3322 if(way == SEEKDIR_cur)
3323 off -= sizeof(wchar_t);
3325 basic_streambuf_wchar_setg(&this->base, &this->putback, &this->putback+1, &this->putback+1);
3328 if(!basic_filebuf_wchar_is_open(this) || !basic_filebuf_wchar__Endwrite(this)
3329 || fseek(this->file, off, way)) {
3330 ret->off = 0;
3331 ret->pos = -1;
3332 ret->state = 0;
3333 return ret;
3336 fgetpos(this->file, &pos);
3337 ret->off = 0;
3338 ret->pos = pos;
3339 ret->state = this->state;
3340 return ret;
3343 /* ?seekpos@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
3344 /* ?seekpos@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
3345 /* ?seekpos@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
3346 /* ?seekpos@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
3347 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_seekpos, 36)
3348 fpos_int* __thiscall basic_filebuf_wchar_seekpos(basic_filebuf_wchar *this,
3349 fpos_int *ret, fpos_int pos, int mode)
3351 fpos_t fpos;
3353 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_int(&pos), mode);
3355 if(!basic_filebuf_wchar_is_open(this) || !basic_filebuf_wchar__Endwrite(this)
3356 || fseek(this->file, (LONG)pos.pos, SEEK_SET)
3357 || (pos.off && fseek(this->file, pos.off, SEEK_CUR))) {
3358 ret->off = 0;
3359 ret->pos = -1;
3360 ret->state = 0;
3361 return ret;
3364 if(basic_streambuf_wchar_gptr(&this->base) == &this->putback)
3365 basic_streambuf_wchar_setg(&this->base, &this->putback, &this->putback+1, &this->putback+1);
3367 fgetpos(this->file, &fpos);
3368 ret->off = 0;
3369 ret->pos = fpos;
3370 ret->state = this->state;
3371 return ret;
3374 /* ?setbuf@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@PA_WH@Z */
3375 /* ?setbuf@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@PEA_W_J@Z */
3376 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_setbuf, 12)
3377 basic_streambuf_wchar* __thiscall basic_filebuf_wchar_setbuf(basic_filebuf_wchar *this, wchar_t *buf, streamsize count)
3379 TRACE("(%p %p %ld)\n", this, buf, count);
3381 if(!basic_filebuf_wchar_is_open(this))
3382 return NULL;
3384 if(setvbuf(this->file, (char*)buf, (buf==NULL && count==0) ? _IONBF : _IOFBF, count*sizeof(wchar_t)))
3385 return NULL;
3387 basic_filebuf_wchar__Init(this, this->file, INITFL_open);
3388 return &this->base;
3391 /* ?setbuf@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEPAV?$basic_streambuf@GU?$char_traits@G@std@@@2@PAGH@Z */
3392 /* ?setbuf@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAPEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@PEAG_J@Z */
3393 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_setbuf, 12)
3394 basic_streambuf_wchar* __thiscall basic_filebuf_short_setbuf(basic_filebuf_wchar *this, wchar_t *buf, streamsize count)
3396 TRACE("(%p %p %ld)\n", this, buf, count);
3398 if(!basic_filebuf_wchar_is_open(this))
3399 return NULL;
3401 if(setvbuf(this->file, (char*)buf, (buf==NULL && count==0) ? _IONBF : _IOFBF, count*sizeof(wchar_t)))
3402 return NULL;
3404 basic_filebuf_short__Init(this, this->file, INITFL_open);
3405 return &this->base;
3408 /* ?sync@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEHXZ */
3409 /* ?sync@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAHXZ */
3410 /* ?sync@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEHXZ */
3411 /* ?sync@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAHXZ */
3412 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_sync, 4)
3413 int __thiscall basic_filebuf_wchar_sync(basic_filebuf_wchar *this)
3415 TRACE("(%p)\n", this);
3417 if(!basic_filebuf_wchar_is_open(this))
3418 return 0;
3420 if(call_basic_streambuf_wchar_overflow(&this->base, WEOF) == WEOF)
3421 return 0;
3422 return fflush(this->file);
3425 /* ?imbue@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEXABVlocale@2@@Z */
3426 /* ?imbue@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAXAEBVlocale@2@@Z */
3427 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_imbue, 8)
3428 void __thiscall basic_filebuf_wchar_imbue(basic_filebuf_wchar *this, const locale *loc)
3430 TRACE("(%p %p)\n", this, loc);
3431 basic_filebuf_wchar__Initcvt(this, codecvt_wchar_use_facet(loc));
3434 /* ?imbue@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEXABVlocale@2@@Z */
3435 /* ?imbue@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAXAEBVlocale@2@@Z */
3436 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_imbue, 8)
3437 void __thiscall basic_filebuf_short_imbue(basic_filebuf_wchar *this, const locale *loc)
3439 TRACE("(%p %p)\n", this, loc);
3440 basic_filebuf_wchar__Initcvt(this, codecvt_short_use_facet(loc));
3443 /* ?_Getstate@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEHH@Z */
3444 /* ?_Getstate@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAHH@Z */
3445 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char__Getstate, 8)
3446 int __thiscall basic_stringbuf_char__Getstate(basic_stringbuf_char *this, IOSB_openmode mode)
3448 int state = 0;
3450 if(!(mode & OPENMODE_in))
3451 state |= STRINGBUF_no_read;
3453 if(!(mode & OPENMODE_out))
3454 state |= STRINGBUF_no_write;
3456 if(mode & OPENMODE_ate)
3457 state |= STRINGBUF_at_end;
3459 if(mode & OPENMODE_app)
3460 state |= STRINGBUF_append;
3462 return state;
3465 /* ?_Init@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXPBDIH@Z */
3466 /* ?_Init@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAXPEBD_KH@Z */
3467 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char__Init, 16)
3468 void __thiscall basic_stringbuf_char__Init(basic_stringbuf_char *this, const char *str, MSVCP_size_t count, int state)
3470 TRACE("(%p, %p, %ld, %d)\n", this, str, count, state);
3472 basic_streambuf_char__Init_empty(&this->base);
3474 this->state = state;
3475 this->seekhigh = NULL;
3477 if(count && str) {
3478 char *buf = MSVCRT_operator_new(count);
3479 if(!buf) {
3480 ERR("Out of memory\n");
3481 throw_exception(EXCEPTION_BAD_ALLOC, NULL);
3484 memcpy(buf, str, count);
3485 this->seekhigh = buf + count;
3487 this->state |= STRINGBUF_allocated;
3489 if(!(state & STRINGBUF_no_read))
3490 basic_streambuf_char_setg(&this->base, buf, buf, buf + count);
3492 if(!(state & STRINGBUF_no_write)) {
3493 basic_streambuf_char_setp_next(&this->base, buf, (state & STRINGBUF_at_end) ? buf + count : buf, buf + count);
3495 if(!basic_streambuf_char_gptr(&this->base))
3496 basic_streambuf_char_setg(&this->base, buf, 0, buf);
3501 /* ??0?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@H@Z */
3502 /* ??0?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@H@Z */
3503 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_ctor_str, 12)
3504 basic_stringbuf_char* __thiscall basic_stringbuf_char_ctor_str(basic_stringbuf_char *this,
3505 const basic_string_char *str, IOSB_openmode mode)
3507 TRACE("(%p %p %d)\n", this, str, mode);
3509 basic_streambuf_char_ctor(&this->base);
3510 this->base.vtable = &MSVCP_basic_stringbuf_char_vtable;
3512 basic_stringbuf_char__Init(this, MSVCP_basic_string_char_c_str(str),
3513 str->size, basic_stringbuf_char__Getstate(this, mode));
3514 return this;
3517 /* ??0?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z */
3518 /* ??0?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z */
3519 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_ctor_mode, 8)
3520 basic_stringbuf_char* __thiscall basic_stringbuf_char_ctor_mode(
3521 basic_stringbuf_char *this, IOSB_openmode mode)
3523 TRACE("(%p %d)\n", this, mode);
3525 basic_streambuf_char_ctor(&this->base);
3526 this->base.vtable = &MSVCP_basic_stringbuf_char_vtable;
3528 basic_stringbuf_char__Init(this, NULL, 0, basic_stringbuf_char__Getstate(this, mode));
3529 return this;
3532 /* ??_F?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
3533 /* ??_F?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
3534 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_ctor, 4)
3535 basic_stringbuf_char* __thiscall basic_stringbuf_char_ctor(basic_stringbuf_char *this)
3537 return basic_stringbuf_char_ctor_mode(this, OPENMODE_in|OPENMODE_out);
3540 /* ?_Tidy@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXXZ */
3541 /* ?_Tidy@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAXXZ */
3542 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char__Tidy, 4)
3543 void __thiscall basic_stringbuf_char__Tidy(basic_stringbuf_char *this)
3545 TRACE("(%p)\n", this);
3547 if(this->state & STRINGBUF_allocated) {
3548 MSVCRT_operator_delete(basic_streambuf_char_eback(&this->base));
3549 this->seekhigh = NULL;
3550 this->state &= ~STRINGBUF_allocated;
3553 basic_streambuf_char__Init_empty(&this->base);
3556 /* ??1?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ */
3557 /* ??1?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ */
3558 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_dtor, 4)
3559 void __thiscall basic_stringbuf_char_dtor(basic_stringbuf_char *this)
3561 TRACE("(%p)\n", this);
3563 basic_stringbuf_char__Tidy(this);
3564 basic_streambuf_char_dtor(&this->base);
3567 DEFINE_THISCALL_WRAPPER(MSVCP_basic_stringbuf_char_vector_dtor, 8)
3568 basic_stringbuf_char* __thiscall MSVCP_basic_stringbuf_char_vector_dtor(basic_stringbuf_char *this, unsigned int flags)
3570 TRACE("(%p %x)\n", this, flags);
3572 if(flags & 2) {
3573 /* we have an array, with the number of elements stored before the first object */
3574 int i, *ptr = (int *) this - 1;
3576 for (i = *ptr - 1; i >= 0; i--)
3577 basic_stringbuf_char_dtor(this+i);
3579 MSVCRT_operator_delete(ptr);
3580 }else {
3581 basic_stringbuf_char_dtor(this);
3583 if(flags & 1)
3584 MSVCRT_operator_delete(this);
3587 return this;
3590 /* ?overflow@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAEHH@Z */
3591 /* ?overflow@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAAHH@Z */
3592 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_overflow, 8)
3593 int __thiscall basic_stringbuf_char_overflow(basic_stringbuf_char *this, int meta)
3595 MSVCP_size_t oldsize, size;
3596 char *ptr, *buf;
3598 TRACE("(%p %x)\n", this, meta);
3600 if(meta == EOF)
3601 return !EOF;
3602 if(this->state & STRINGBUF_no_write)
3603 return EOF;
3605 ptr = basic_streambuf_char_pptr(&this->base);
3606 if((this->state&STRINGBUF_append) && ptr<this->seekhigh)
3607 basic_streambuf_char_setp_next(&this->base, basic_streambuf_char_pbase(&this->base),
3608 this->seekhigh, basic_streambuf_char_epptr(&this->base));
3610 if(ptr && ptr<basic_streambuf_char_epptr(&this->base))
3611 return (*basic_streambuf_char__Pninc(&this->base) = meta);
3613 oldsize = (ptr ? basic_streambuf_char_epptr(&this->base)-basic_streambuf_char_eback(&this->base): 0);
3614 size = oldsize|0xf;
3615 size += size/2;
3616 buf = MSVCRT_operator_new(size);
3617 if(!buf) {
3618 ERR("Out of memory\n");
3619 throw_exception(EXCEPTION_BAD_ALLOC, NULL);
3622 if(!oldsize) {
3623 this->seekhigh = buf;
3624 basic_streambuf_char_setp(&this->base, buf, buf+size);
3625 if(this->state & STRINGBUF_no_read)
3626 basic_streambuf_char_setg(&this->base, buf, NULL, buf);
3627 else
3628 basic_streambuf_char_setg(&this->base, buf, buf, buf+1);
3630 this->state |= STRINGBUF_allocated;
3631 }else {
3632 ptr = basic_streambuf_char_eback(&this->base);
3633 memcpy(buf, ptr, oldsize);
3635 this->seekhigh = buf+(this->seekhigh-ptr);
3636 basic_streambuf_char_setp_next(&this->base, buf,
3637 buf+(basic_streambuf_char_pptr(&this->base)-ptr), buf+size);
3638 if(this->state & STRINGBUF_no_read)
3639 basic_streambuf_char_setg(&this->base, buf, NULL, buf);
3640 else
3641 basic_streambuf_char_setg(&this->base, buf,
3642 buf+(basic_streambuf_char_gptr(&this->base)-ptr),
3643 basic_streambuf_char_pptr(&this->base)+1);
3645 MSVCRT_operator_delete(ptr);
3648 return (*basic_streambuf_char__Pninc(&this->base) = meta);
3651 /* ?pbackfail@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAEHH@Z */
3652 /* ?pbackfail@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAAHH@Z */
3653 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_pbackfail, 8)
3654 int __thiscall basic_stringbuf_char_pbackfail(basic_stringbuf_char *this, int c)
3656 char *cur;
3658 TRACE("(%p %x)\n", this, c);
3660 cur = basic_streambuf_char_gptr(&this->base);
3661 if(!cur || cur==basic_streambuf_char_eback(&this->base)
3662 || (c!=EOF && c!=cur[-1] && this->state&STRINGBUF_no_write))
3663 return EOF;
3665 if(c != EOF)
3666 cur[-1] = c;
3667 basic_streambuf_char_gbump(&this->base, -1);
3668 return c==EOF ? !EOF : c;
3671 /* ?underflow@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAEHXZ */
3672 /* ?underflow@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAAHXZ */
3673 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_underflow, 4)
3674 int __thiscall basic_stringbuf_char_underflow(basic_stringbuf_char *this)
3676 char *ptr, *cur;
3678 TRACE("(%p)\n", this);
3680 cur = basic_streambuf_char_gptr(&this->base);
3681 if(!cur || this->state&STRINGBUF_no_read)
3682 return EOF;
3684 ptr = basic_streambuf_char_pptr(&this->base);
3685 if(this->seekhigh < ptr)
3686 this->seekhigh = ptr;
3688 ptr = basic_streambuf_char_egptr(&this->base);
3689 if(this->seekhigh > ptr)
3690 basic_streambuf_char_setg(&this->base, basic_streambuf_char_eback(&this->base), cur, this->seekhigh);
3692 if(cur < this->seekhigh)
3693 return *cur;
3694 return EOF;
3697 /* ?seekoff@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAE?AV?$fpos@H@2@JHH@Z */
3698 /* ?seekoff@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
3699 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_seekoff, 20)
3700 fpos_int* __thiscall basic_stringbuf_char_seekoff(basic_stringbuf_char *this,
3701 fpos_int *ret, streamoff off, int way, int mode)
3703 char *beg, *cur_r, *cur_w;
3705 TRACE("(%p %p %ld %d %d)\n", this, ret, off, way, mode);
3707 cur_w = basic_streambuf_char_pptr(&this->base);
3708 if(cur_w > this->seekhigh)
3709 this->seekhigh = cur_w;
3711 ret->off = 0;
3712 ret->state = 0;
3714 beg = basic_streambuf_char_eback(&this->base);
3715 cur_r = basic_streambuf_char_gptr(&this->base);
3716 if((mode & OPENMODE_in) && cur_r) {
3717 if(way==SEEKDIR_cur && !(mode & OPENMODE_out))
3718 off += cur_r-beg;
3719 else if(way == SEEKDIR_end)
3720 off += this->seekhigh-beg;
3721 else if(way != SEEKDIR_beg)
3722 off = -1;
3724 if(off<0 || off>this->seekhigh-beg) {
3725 off = -1;
3726 }else {
3727 basic_streambuf_char_gbump(&this->base, beg-cur_r+off);
3728 if((mode & OPENMODE_out) && cur_w) {
3729 basic_streambuf_char_setp_next(&this->base, beg,
3730 basic_streambuf_char_gptr(&this->base),
3731 basic_streambuf_char_epptr(&this->base));
3734 }else if((mode & OPENMODE_out) && cur_w) {
3735 if(way == SEEKDIR_cur)
3736 off += cur_w-beg;
3737 else if(way == SEEKDIR_end)
3738 off += this->seekhigh-beg;
3739 else if(way != SEEKDIR_beg)
3740 off = -1;
3742 if(off<0 || off>this->seekhigh-beg)
3743 off = -1;
3744 else
3745 basic_streambuf_char_pbump(&this->base, beg-cur_w+off);
3746 }else {
3747 off = -1;
3750 ret->pos = off;
3751 return ret;
3754 /* ?seekpos@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
3755 /* ?seekpos@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
3756 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_seekpos, 36)
3757 fpos_int* __thiscall basic_stringbuf_char_seekpos(basic_stringbuf_char *this,
3758 fpos_int *ret, fpos_int pos, int mode)
3760 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_int(&pos), mode);
3762 if(pos.off==0 && pos.pos==-1 && pos.state==0) {
3763 *ret = pos;
3764 return ret;
3767 return basic_stringbuf_char_seekoff(this, ret, pos.off, SEEKDIR_beg, mode);
3770 /* ?str@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z */
3771 /* ?str@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z */
3772 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_str_set, 8)
3773 void __thiscall basic_stringbuf_char_str_set(basic_stringbuf_char *this, const basic_string_char *str)
3775 TRACE("(%p %p)\n", this, str);
3777 basic_stringbuf_char__Tidy(this);
3778 basic_stringbuf_char__Init(this, MSVCP_basic_string_char_c_str(str), str->size, this->state);
3781 /* ?str@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
3782 /* ?str@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
3783 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_str_get, 8)
3784 basic_string_char* __thiscall basic_stringbuf_char_str_get(const basic_stringbuf_char *this, basic_string_char *ret)
3786 char *ptr;
3788 TRACE("(%p)\n", this);
3790 if(!(this->state & STRINGBUF_no_write) && basic_streambuf_char_pptr(&this->base)) {
3791 char *pptr;
3793 ptr = basic_streambuf_char_pbase(&this->base);
3794 pptr = basic_streambuf_char_pptr(&this->base);
3796 return MSVCP_basic_string_char_ctor_cstr_len(ret, ptr, (this->seekhigh < pptr ? pptr : this->seekhigh) - ptr);
3799 if(!(this->state & STRINGBUF_no_read) && basic_streambuf_char_gptr(&this->base)) {
3800 ptr = basic_streambuf_char_eback(&this->base);
3801 return MSVCP_basic_string_char_ctor_cstr_len(ret, ptr, basic_streambuf_char_egptr(&this->base) - ptr);
3804 return MSVCP_basic_string_char_ctor(ret);
3807 /* ?_Getstate@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@AAEHH@Z */
3808 /* ?_Getstate@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@AEAAHH@Z */
3809 /* ?_Getstate@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEHH@Z */
3810 /* ?_Getstate@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAHH@Z */
3811 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar__Getstate, 8)
3812 int __thiscall basic_stringbuf_wchar__Getstate(basic_stringbuf_wchar *this, IOSB_openmode mode)
3814 int state = 0;
3816 if(!(mode & OPENMODE_in))
3817 state |= STRINGBUF_no_read;
3819 if(!(mode & OPENMODE_out))
3820 state |= STRINGBUF_no_write;
3822 if(mode & OPENMODE_ate)
3823 state |= STRINGBUF_at_end;
3825 if(mode & OPENMODE_app)
3826 state |= STRINGBUF_append;
3828 return state;
3831 /* ?_Init@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEXPB_WIH@Z */
3832 /* ?_Init@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAXPEB_W_KH@Z */
3833 /* ?_Init@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEXPBGIH@Z */
3834 /* ?_Init@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAXPEBG_KH@Z */
3835 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar__Init, 16)
3836 void __thiscall basic_stringbuf_wchar__Init(basic_stringbuf_wchar *this, const wchar_t *str, MSVCP_size_t count, int state)
3838 TRACE("(%p, %p, %ld, %d)\n", this, str, count, state);
3840 basic_streambuf_wchar__Init_empty(&this->base);
3842 this->state = state;
3843 this->seekhigh = NULL;
3845 if(count && str) {
3846 wchar_t *buf = MSVCRT_operator_new(count);
3847 if(!buf) {
3848 ERR("Out of memory\n");
3849 throw_exception(EXCEPTION_BAD_ALLOC, NULL);
3852 memcpy(buf, str, count);
3853 this->seekhigh = buf + count;
3855 this->state |= STRINGBUF_allocated;
3857 if(!(state & STRINGBUF_no_read))
3858 basic_streambuf_wchar_setg(&this->base, buf, buf, buf + count);
3860 if(!(state & STRINGBUF_no_write)) {
3861 basic_streambuf_wchar_setp_next(&this->base, buf, (state & STRINGBUF_at_end) ? buf + count : buf, buf + count);
3863 if(!basic_streambuf_wchar_gptr(&this->base))
3864 basic_streambuf_wchar_setg(&this->base, buf, 0, buf);
3869 /* ??0?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@H@Z */
3870 /* ??0?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@H@Z */
3871 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_ctor_str, 12)
3872 basic_stringbuf_wchar* __thiscall basic_stringbuf_wchar_ctor_str(basic_stringbuf_wchar *this,
3873 const basic_string_wchar *str, IOSB_openmode mode)
3875 TRACE("(%p %p %d)\n", this, str, mode);
3877 basic_streambuf_wchar_ctor(&this->base);
3878 this->base.vtable = &MSVCP_basic_stringbuf_wchar_vtable;
3880 basic_stringbuf_wchar__Init(this, MSVCP_basic_string_wchar_c_str(str),
3881 str->size, basic_stringbuf_wchar__Getstate(this, mode));
3882 return this;
3885 /* ??0?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@1@H@Z */
3886 /* ??0?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@1@H@Z */
3887 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_ctor_str, 12)
3888 basic_stringbuf_wchar* __thiscall basic_stringbuf_short_ctor_str(basic_stringbuf_wchar *this,
3889 const basic_string_wchar *str, IOSB_openmode mode)
3891 basic_stringbuf_wchar_ctor_str(this, str, mode);
3892 this->base.vtable = &MSVCP_basic_stringbuf_short_vtable;
3893 return this;
3896 /* ??0?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@H@Z */
3897 /* ??0?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@H@Z */
3898 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_ctor_mode, 8)
3899 basic_stringbuf_wchar* __thiscall basic_stringbuf_wchar_ctor_mode(
3900 basic_stringbuf_wchar *this, IOSB_openmode mode)
3902 TRACE("(%p %d)\n", this, mode);
3904 basic_streambuf_wchar_ctor(&this->base);
3905 this->base.vtable = &MSVCP_basic_stringbuf_wchar_vtable;
3907 basic_stringbuf_wchar__Init(this, NULL, 0, basic_stringbuf_wchar__Getstate(this, mode));
3908 return this;
3911 /* ??0?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@H@Z */
3912 /* ??0?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@H@Z */
3913 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_ctor_mode, 8)
3914 basic_stringbuf_wchar* __thiscall basic_stringbuf_short_ctor_mode(
3915 basic_stringbuf_wchar *this, IOSB_openmode mode)
3917 basic_stringbuf_wchar_ctor_mode(this, mode);
3918 this->base.vtable = &MSVCP_basic_stringbuf_short_vtable;
3919 return this;
3922 /* ??_F?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
3923 /* ??_F?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
3924 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_ctor, 4)
3925 basic_stringbuf_wchar* __thiscall basic_stringbuf_wchar_ctor(basic_stringbuf_wchar *this)
3927 return basic_stringbuf_wchar_ctor_mode(this, OPENMODE_in|OPENMODE_out);
3930 /* ??_F?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
3931 /* ??_F?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
3932 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_ctor, 4)
3933 basic_stringbuf_wchar* __thiscall basic_stringbuf_short_ctor(basic_stringbuf_wchar *this)
3935 return basic_stringbuf_short_ctor_mode(this, OPENMODE_in|OPENMODE_out);
3938 /* ?_Tidy@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEXXZ */
3939 /* ?_Tidy@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAXXZ */
3940 /* ?_Tidy@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEXXZ */
3941 /* ?_Tidy@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAXXZ */
3942 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar__Tidy, 4)
3943 void __thiscall basic_stringbuf_wchar__Tidy(basic_stringbuf_wchar *this)
3945 TRACE("(%p)\n", this);
3947 if(this->state & STRINGBUF_allocated) {
3948 MSVCRT_operator_delete(basic_streambuf_wchar_eback(&this->base));
3949 this->seekhigh = NULL;
3950 this->state &= ~STRINGBUF_allocated;
3953 basic_streambuf_wchar__Init_empty(&this->base);
3956 /* ??1?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UAE@XZ */
3957 /* ??1?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UEAA@XZ */
3958 /* ??1?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UAE@XZ */
3959 /* ??1?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UEAA@XZ */
3960 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_dtor, 4)
3961 void __thiscall basic_stringbuf_wchar_dtor(basic_stringbuf_wchar *this)
3963 TRACE("(%p)\n", this);
3965 basic_stringbuf_wchar__Tidy(this);
3966 basic_streambuf_wchar_dtor(&this->base);
3969 DEFINE_THISCALL_WRAPPER(MSVCP_basic_stringbuf_wchar_vector_dtor, 8)
3970 basic_stringbuf_wchar* __thiscall MSVCP_basic_stringbuf_wchar_vector_dtor(basic_stringbuf_wchar *this, unsigned int flags)
3972 TRACE("(%p %x)\n", this, flags);
3974 if(flags & 2) {
3975 /* we have an array, with the number of elements stored before the first object */
3976 int i, *ptr = (int *) this - 1;
3978 for (i = *ptr - 1; i >= 0; i--)
3979 basic_stringbuf_wchar_dtor(this+i);
3981 MSVCRT_operator_delete(ptr);
3982 }else {
3983 basic_stringbuf_wchar_dtor(this);
3985 if(flags & 1)
3986 MSVCRT_operator_delete(this);
3989 return this;
3992 DEFINE_THISCALL_WRAPPER(MSVCP_basic_stringbuf_short_vector_dtor, 8)
3993 basic_stringbuf_wchar* __thiscall MSVCP_basic_stringbuf_short_vector_dtor(basic_stringbuf_wchar *this, unsigned int flags)
3995 return MSVCP_basic_stringbuf_wchar_vector_dtor(this, flags);
3998 /* ?overflow@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAEGG@Z */
3999 /* ?overflow@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAAGG@Z */
4000 /* ?overflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAEGG@Z */
4001 /* ?overflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAAGG@Z */
4002 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_overflow, 8)
4003 unsigned short __thiscall basic_stringbuf_wchar_overflow(basic_stringbuf_wchar *this, unsigned short meta)
4005 MSVCP_size_t oldsize, size;
4006 wchar_t *ptr, *buf;
4008 TRACE("(%p %x)\n", this, meta);
4010 if(meta == WEOF)
4011 return !WEOF;
4012 if(this->state & STRINGBUF_no_write)
4013 return WEOF;
4015 ptr = basic_streambuf_wchar_pptr(&this->base);
4016 if((this->state&STRINGBUF_append) && ptr<this->seekhigh)
4017 basic_streambuf_wchar_setp_next(&this->base, basic_streambuf_wchar_pbase(&this->base),
4018 this->seekhigh, basic_streambuf_wchar_epptr(&this->base));
4020 if(ptr && ptr<basic_streambuf_wchar_epptr(&this->base))
4021 return (*basic_streambuf_wchar__Pninc(&this->base) = meta);
4023 oldsize = (ptr ? basic_streambuf_wchar_epptr(&this->base)-basic_streambuf_wchar_eback(&this->base): 0);
4024 size = oldsize|0xf;
4025 size += size/2;
4026 buf = MSVCRT_operator_new(size);
4027 if(!buf) {
4028 ERR("Out of memory\n");
4029 throw_exception(EXCEPTION_BAD_ALLOC, NULL);
4032 if(!oldsize) {
4033 this->seekhigh = buf;
4034 basic_streambuf_wchar_setp(&this->base, buf, buf+size);
4035 if(this->state & STRINGBUF_no_read)
4036 basic_streambuf_wchar_setg(&this->base, buf, NULL, buf);
4037 else
4038 basic_streambuf_wchar_setg(&this->base, buf, buf, buf+1);
4040 this->state |= STRINGBUF_allocated;
4041 }else {
4042 ptr = basic_streambuf_wchar_eback(&this->base);
4043 memcpy(buf, ptr, oldsize);
4045 this->seekhigh = buf+(this->seekhigh-ptr);
4046 basic_streambuf_wchar_setp_next(&this->base, buf,
4047 buf+(basic_streambuf_wchar_pptr(&this->base)-ptr), buf+size);
4048 if(this->state & STRINGBUF_no_read)
4049 basic_streambuf_wchar_setg(&this->base, buf, NULL, buf);
4050 else
4051 basic_streambuf_wchar_setg(&this->base, buf,
4052 buf+(basic_streambuf_wchar_gptr(&this->base)-ptr),
4053 basic_streambuf_wchar_pptr(&this->base)+1);
4055 MSVCRT_operator_delete(ptr);
4058 return (*basic_streambuf_wchar__Pninc(&this->base) = meta);
4061 /* ?pbackfail@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAEGG@Z */
4062 /* ?pbackfail@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAAGG@Z */
4063 /* ?pbackfail@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAEGG@Z */
4064 /* ?pbackfail@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAAGG@Z */
4065 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_pbackfail, 8)
4066 unsigned short __thiscall basic_stringbuf_wchar_pbackfail(basic_stringbuf_wchar *this, unsigned short c)
4068 wchar_t *cur;
4070 TRACE("(%p %x)\n", this, c);
4072 cur = basic_streambuf_wchar_gptr(&this->base);
4073 if(!cur || cur==basic_streambuf_wchar_eback(&this->base)
4074 || (c!=WEOF && c!=cur[-1] && this->state&STRINGBUF_no_write))
4075 return WEOF;
4077 if(c != WEOF)
4078 cur[-1] = c;
4079 basic_streambuf_wchar_gbump(&this->base, -1);
4080 return c==WEOF ? !WEOF : c;
4083 /* ?underflow@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAEGXZ */
4084 /* ?underflow@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAAGXZ */
4085 /* ?underflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAEGXZ */
4086 /* ?underflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAAGXZ */
4087 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_underflow, 4)
4088 unsigned short __thiscall basic_stringbuf_wchar_underflow(basic_stringbuf_wchar *this)
4090 wchar_t *ptr, *cur;
4092 TRACE("(%p)\n", this);
4094 cur = basic_streambuf_wchar_gptr(&this->base);
4095 if(!cur || this->state&STRINGBUF_no_read)
4096 return WEOF;
4098 ptr = basic_streambuf_wchar_pptr(&this->base);
4099 if(this->seekhigh < ptr)
4100 this->seekhigh = ptr;
4102 ptr = basic_streambuf_wchar_egptr(&this->base);
4103 if(this->seekhigh > ptr)
4104 basic_streambuf_wchar_setg(&this->base, basic_streambuf_wchar_eback(&this->base), cur, this->seekhigh);
4106 if(cur < this->seekhigh)
4107 return *cur;
4108 return WEOF;
4111 /* ?seekoff@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAE?AV?$fpos@H@2@JHH@Z */
4112 /* ?seekoff@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
4113 /* ?seekoff@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAE?AV?$fpos@H@2@JHH@Z */
4114 /* ?seekoff@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
4115 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_seekoff, 20)
4116 fpos_int* __thiscall basic_stringbuf_wchar_seekoff(basic_stringbuf_wchar *this,
4117 fpos_int *ret, streamoff off, int way, int mode)
4119 wchar_t *beg, *cur_r, *cur_w;
4121 TRACE("(%p %p %ld %d %d)\n", this, ret, off, way, mode);
4123 cur_w = basic_streambuf_wchar_pptr(&this->base);
4124 if(cur_w > this->seekhigh)
4125 this->seekhigh = cur_w;
4127 ret->off = 0;
4128 ret->state = 0;
4130 beg = basic_streambuf_wchar_eback(&this->base);
4131 cur_r = basic_streambuf_wchar_gptr(&this->base);
4132 if((mode & OPENMODE_in) && cur_r) {
4133 if(way==SEEKDIR_cur && !(mode & OPENMODE_out))
4134 off += cur_r-beg;
4135 else if(way == SEEKDIR_end)
4136 off += this->seekhigh-beg;
4137 else if(way != SEEKDIR_beg)
4138 off = -1;
4140 if(off<0 || off>this->seekhigh-beg) {
4141 off = -1;
4142 }else {
4143 basic_streambuf_wchar_gbump(&this->base, beg-cur_r+off);
4144 if((mode & OPENMODE_out) && cur_w) {
4145 basic_streambuf_wchar_setp_next(&this->base, beg,
4146 basic_streambuf_wchar_gptr(&this->base),
4147 basic_streambuf_wchar_epptr(&this->base));
4150 }else if((mode & OPENMODE_out) && cur_w) {
4151 if(way == SEEKDIR_cur)
4152 off += cur_w-beg;
4153 else if(way == SEEKDIR_end)
4154 off += this->seekhigh-beg;
4155 else if(way != SEEKDIR_beg)
4156 off = -1;
4158 if(off<0 || off>this->seekhigh-beg)
4159 off = -1;
4160 else
4161 basic_streambuf_wchar_pbump(&this->base, beg-cur_w+off);
4162 }else {
4163 off = -1;
4166 ret->pos = off;
4167 return ret;
4170 /* ?seekpos@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
4171 /* ?seekpos@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
4172 /* ?seekpos@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
4173 /* ?seekpos@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
4174 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_seekpos, 36)
4175 fpos_int* __thiscall basic_stringbuf_wchar_seekpos(basic_stringbuf_wchar *this,
4176 fpos_int *ret, fpos_int pos, int mode)
4178 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_int(&pos), mode);
4180 if(pos.off==0 && pos.pos==-1 && pos.state==0) {
4181 *ret = pos;
4182 return ret;
4185 return basic_stringbuf_wchar_seekoff(this, ret, pos.off, SEEKDIR_beg, mode);
4188 /* ?str@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@@Z */
4189 /* ?str@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@@Z */
4190 /* ?str@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@@Z */
4191 /* ?str@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@@Z */
4192 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_str_set, 8)
4193 void __thiscall basic_stringbuf_wchar_str_set(basic_stringbuf_wchar *this, const basic_string_wchar *str)
4195 TRACE("(%p %p)\n", this, str);
4197 basic_stringbuf_wchar__Tidy(this);
4198 basic_stringbuf_wchar__Init(this, MSVCP_basic_string_wchar_c_str(str), str->size, this->state);
4201 /* ?str@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
4202 /* ?str@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
4203 /* ?str@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
4204 /* ?str@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
4205 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_str_get, 8)
4206 basic_string_wchar* __thiscall basic_stringbuf_wchar_str_get(const basic_stringbuf_wchar *this, basic_string_wchar *ret)
4208 wchar_t *ptr;
4210 TRACE("(%p)\n", this);
4212 if(!(this->state & STRINGBUF_no_write) && basic_streambuf_wchar_pptr(&this->base)) {
4213 wchar_t *pptr;
4215 ptr = basic_streambuf_wchar_pbase(&this->base);
4216 pptr = basic_streambuf_wchar_pptr(&this->base);
4218 return MSVCP_basic_string_wchar_ctor_cstr_len(ret, ptr, (this->seekhigh < pptr ? pptr : this->seekhigh) - ptr);
4221 if(!(this->state & STRINGBUF_no_read) && basic_streambuf_wchar_gptr(&this->base)) {
4222 ptr = basic_streambuf_wchar_eback(&this->base);
4223 return MSVCP_basic_string_wchar_ctor_cstr_len(ret, ptr, basic_streambuf_wchar_egptr(&this->base) - ptr);
4226 return MSVCP_basic_string_wchar_ctor(ret);
4229 /* ??0ios_base@std@@IAE@XZ */
4230 /* ??0ios_base@std@@IEAA@XZ */
4231 DEFINE_THISCALL_WRAPPER(ios_base_ctor, 4)
4232 ios_base* __thiscall ios_base_ctor(ios_base *this)
4234 TRACE("(%p)\n", this);
4235 this->vtable = &MSVCP_ios_base_vtable;
4236 return this;
4239 /* ??0ios_base@std@@QAE@ABV01@@Z */
4240 /* ??0ios_base@std@@QEAA@AEBV01@@Z */
4241 DEFINE_THISCALL_WRAPPER(ios_base_copy_ctor, 8)
4242 ios_base* __thiscall ios_base_copy_ctor(ios_base *this, const ios_base *copy)
4244 TRACE("(%p %p)\n", this, copy);
4245 *this = *copy;
4246 this->vtable = &MSVCP_ios_base_vtable;
4247 return this;
4250 /* ?_Callfns@ios_base@std@@AAEXW4event@12@@Z */
4251 /* ?_Callfns@ios_base@std@@AEAAXW4event@12@@Z */
4252 DEFINE_THISCALL_WRAPPER(ios_base_Callfns, 8)
4253 void __thiscall ios_base_Callfns(ios_base *this, IOS_BASE_event event)
4255 IOS_BASE_fnarray *cur;
4257 TRACE("(%p %x)\n", this, event);
4259 for(cur=this->calls; cur; cur=cur->next)
4260 cur->event_handler(event, this, cur->index);
4263 /* ?_Tidy@ios_base@std@@AAAXXZ */
4264 /* ?_Tidy@ios_base@std@@AEAAXXZ */
4265 void CDECL ios_base_Tidy(ios_base *this)
4267 IOS_BASE_iosarray *arr_cur, *arr_next;
4268 IOS_BASE_fnarray *event_cur, *event_next;
4270 TRACE("(%p)\n", this);
4272 ios_base_Callfns(this, EVENT_erase_event);
4274 for(arr_cur=this->arr; arr_cur; arr_cur=arr_next) {
4275 arr_next = arr_cur->next;
4276 MSVCRT_operator_delete(arr_cur);
4278 this->arr = NULL;
4280 for(event_cur=this->calls; event_cur; event_cur=event_next) {
4281 event_next = event_cur->next;
4282 MSVCRT_operator_delete(event_cur);
4284 this->calls = NULL;
4287 /* ?_Ios_base_dtor@ios_base@std@@CAXPAV12@@Z */
4288 /* ?_Ios_base_dtor@ios_base@std@@CAXPEAV12@@Z */
4289 void CDECL ios_base_Ios_base_dtor(ios_base *obj)
4291 TRACE("(%p)\n", obj);
4292 if(obj->loc) {
4293 locale_dtor(obj->loc);
4294 MSVCRT_operator_delete(obj->loc);
4296 ios_base_Tidy(obj);
4299 /* ??1ios_base@std@@UAE@XZ */
4300 /* ??1ios_base@std@@UEAA@XZ */
4301 DEFINE_THISCALL_WRAPPER(ios_base_dtor, 4)
4302 void __thiscall ios_base_dtor(ios_base *this)
4304 ios_base_Ios_base_dtor(this);
4307 DEFINE_THISCALL_WRAPPER(MSVCP_ios_base_vector_dtor, 8)
4308 ios_base* __thiscall MSVCP_ios_base_vector_dtor(ios_base *this, unsigned int flags)
4310 TRACE("(%p %x)\n", this, flags);
4311 if(flags & 2) {
4312 /* we have an array, with the number of elements stored before the first object */
4313 int i, *ptr = (int *)this-1;
4315 for(i=*ptr-1; i>=0; i--)
4316 ios_base_dtor(this+i);
4317 MSVCRT_operator_delete(ptr);
4318 } else {
4319 ios_base_dtor(this);
4320 if(flags & 1)
4321 MSVCRT_operator_delete(this);
4324 return this;
4327 DEFINE_THISCALL_WRAPPER(MSVCP_iosb_vector_dtor, 8)
4328 void* __thiscall MSVCP_iosb_vector_dtor(void *this, unsigned int flags)
4330 TRACE("(%p %x)\n", this, flags);
4331 if(flags & 2) {
4332 int *ptr = (int *)this-1;
4333 MSVCRT_operator_delete(ptr);
4334 } else {
4335 if(flags & 1)
4336 MSVCRT_operator_delete(this);
4339 return this;
4342 /* ?_Findarr@ios_base@std@@AAEAAU_Iosarray@12@H@Z */
4343 /* ?_Findarr@ios_base@std@@AEAAAEAU_Iosarray@12@H@Z */
4344 DEFINE_THISCALL_WRAPPER(ios_base_Findarr, 8)
4345 IOS_BASE_iosarray* __thiscall ios_base_Findarr(ios_base *this, int index)
4347 IOS_BASE_iosarray *p;
4349 TRACE("(%p %d)\n", this, index);
4351 for(p=this->arr; p; p=p->next) {
4352 if(p->index == index)
4353 return p;
4356 for(p=this->arr; p; p=p->next) {
4357 if(!p->long_val && !p->ptr_val) {
4358 p->index = index;
4359 return p;
4363 p = MSVCRT_operator_new(sizeof(IOS_BASE_iosarray));
4364 p->next = this->arr;
4365 p->index = index;
4366 p->long_val = 0;
4367 p->ptr_val = NULL;
4368 this->arr = p;
4369 return p;
4372 /* ?iword@ios_base@std@@QAEAAJH@Z */
4373 /* ?iword@ios_base@std@@QEAAAEAJH@Z */
4374 DEFINE_THISCALL_WRAPPER(ios_base_iword, 8)
4375 LONG* __thiscall ios_base_iword(ios_base *this, int index)
4377 TRACE("(%p %d)\n", this, index);
4378 return &ios_base_Findarr(this, index)->long_val;
4381 /* ?pword@ios_base@std@@QAEAAPAXH@Z */
4382 /* ?pword@ios_base@std@@QEAAAEAPEAXH@Z */
4383 DEFINE_THISCALL_WRAPPER(ios_base_pword, 8)
4384 void** __thiscall ios_base_pword(ios_base *this, int index)
4386 TRACE("(%p %d)\n", this, index);
4387 return &ios_base_Findarr(this, index)->ptr_val;
4390 /* ?register_callback@ios_base@std@@QAEXP6AXW4event@12@AAV12@H@ZH@Z */
4391 /* ?register_callback@ios_base@std@@QEAAXP6AXW4event@12@AEAV12@H@ZH@Z */
4392 DEFINE_THISCALL_WRAPPER(ios_base_register_callback, 12)
4393 void __thiscall ios_base_register_callback(ios_base *this, IOS_BASE_event_callback callback, int index)
4395 IOS_BASE_fnarray *event;
4397 TRACE("(%p %p %d)\n", this, callback, index);
4399 event = MSVCRT_operator_new(sizeof(IOS_BASE_fnarray));
4400 event->next = this->calls;
4401 event->index = index;
4402 event->event_handler = callback;
4403 this->calls = event;
4406 /* ?clear@ios_base@std@@QAEXH_N@Z */
4407 /* ?clear@ios_base@std@@QEAAXH_N@Z */
4408 DEFINE_THISCALL_WRAPPER(ios_base_clear_reraise, 12)
4409 void __thiscall ios_base_clear_reraise(ios_base *this, IOSB_iostate state, MSVCP_bool reraise)
4411 TRACE("(%p %x %x)\n", this, state, reraise);
4413 this->state = state & IOSTATE_mask;
4414 if(!(this->state & this->except))
4415 return;
4417 if(reraise)
4418 throw_exception(EXCEPTION_RERAISE, NULL);
4419 else if(this->state & this->except & IOSTATE_eofbit)
4420 throw_exception(EXCEPTION_FAILURE, "eofbit is set");
4421 else if(this->state & this->except & IOSTATE_failbit)
4422 throw_exception(EXCEPTION_FAILURE, "failbit is set");
4423 else if(this->state & this->except & IOSTATE_badbit)
4424 throw_exception(EXCEPTION_FAILURE, "badbit is set");
4425 else if(this->state & this->except & IOSTATE__Hardfail)
4426 throw_exception(EXCEPTION_FAILURE, "_Hardfail is set");
4429 /* ?clear@ios_base@std@@QAEXH@Z */
4430 /* ?clear@ios_base@std@@QEAAXH@Z */
4431 DEFINE_THISCALL_WRAPPER(ios_base_clear, 8)
4432 void __thiscall ios_base_clear(ios_base *this, IOSB_iostate state)
4434 ios_base_clear_reraise(this, state, FALSE);
4437 /* ?clear@ios_base@std@@QAEXI@Z */
4438 /* ?clear@ios_base@std@@QEAAXI@Z */
4439 DEFINE_THISCALL_WRAPPER(ios_base_clear_unsigned, 8)
4440 void __thiscall ios_base_clear_unsigned(ios_base *this, unsigned int state)
4442 ios_base_clear_reraise(this, (IOSB_iostate)state, FALSE);
4445 /* ?exceptions@ios_base@std@@QAEXH@Z */
4446 /* ?exceptions@ios_base@std@@QEAAXH@Z */
4447 DEFINE_THISCALL_WRAPPER(ios_base_exceptions_set, 8)
4448 void __thiscall ios_base_exceptions_set(ios_base *this, IOSB_iostate state)
4450 TRACE("(%p %x)\n", this, state);
4451 this->except = state & IOSTATE_mask;
4452 ios_base_clear(this, this->state);
4455 /* ?exceptions@ios_base@std@@QAEXI@Z */
4456 /* ?exceptions@ios_base@std@@QEAAXI@Z */
4457 DEFINE_THISCALL_WRAPPER(ios_base_exceptions_set_unsigned, 8)
4458 void __thiscall ios_base_exceptions_set_unsigned(ios_base *this, unsigned int state)
4460 TRACE("(%p %x)\n", this, state);
4461 ios_base_exceptions_set(this, state);
4464 /* ?exceptions@ios_base@std@@QBEHXZ */
4465 /* ?exceptions@ios_base@std@@QEBAHXZ */
4466 DEFINE_THISCALL_WRAPPER(ios_base_exceptions_get, 4)
4467 IOSB_iostate __thiscall ios_base_exceptions_get(ios_base *this)
4469 TRACE("(%p)\n", this);
4470 return this->except;
4473 /* ?copyfmt@ios_base@std@@QAEAAV12@ABV12@@Z */
4474 /* ?copyfmt@ios_base@std@@QEAAAEAV12@AEBV12@@Z */
4475 DEFINE_THISCALL_WRAPPER(ios_base_copyfmt, 8)
4476 ios_base* __thiscall ios_base_copyfmt(ios_base *this, const ios_base *rhs)
4478 TRACE("(%p %p)\n", this, rhs);
4480 if(this != rhs) {
4481 IOS_BASE_iosarray *arr_cur;
4482 IOS_BASE_fnarray *event_cur;
4484 ios_base_Tidy(this);
4486 for(arr_cur=rhs->arr; arr_cur; arr_cur=arr_cur->next) {
4487 if(arr_cur->long_val)
4488 *ios_base_iword(this, arr_cur->index) = arr_cur->long_val;
4489 if(arr_cur->ptr_val)
4490 *ios_base_pword(this, arr_cur->index) = arr_cur->ptr_val;
4492 this->stdstr = rhs->stdstr;
4493 this->fmtfl = rhs->fmtfl;
4494 this->prec = rhs->prec;
4495 this->wide = rhs->wide;
4496 locale_operator_assign(this->loc, rhs->loc);
4498 for(event_cur=rhs->calls; event_cur; event_cur=event_cur->next)
4499 ios_base_register_callback(this, event_cur->event_handler, event_cur->index);
4501 ios_base_Callfns(this, EVENT_copyfmt_event);
4502 ios_base_exceptions_set(this, rhs->except);
4505 return this;
4508 /* ??4ios_base@std@@QAEAAV01@ABV01@@Z */
4509 /* ??4ios_base@std@@QEAAAEAV01@AEBV01@@Z */
4510 DEFINE_THISCALL_WRAPPER(ios_base_assign, 8)
4511 ios_base* __thiscall ios_base_assign(ios_base *this, const ios_base *right)
4513 TRACE("(%p %p)\n", this, right);
4515 if(this != right) {
4516 this->state = right->state;
4517 ios_base_copyfmt(this, right);
4520 return this;
4523 /* ?fail@ios_base@std@@QBE_NXZ */
4524 /* ?fail@ios_base@std@@QEBA_NXZ */
4525 DEFINE_THISCALL_WRAPPER(ios_base_fail, 4)
4526 MSVCP_bool __thiscall ios_base_fail(const ios_base *this)
4528 TRACE("(%p)\n", this);
4529 return (this->state & (IOSTATE_failbit|IOSTATE_badbit)) != 0;
4532 /* ??7ios_base@std@@QBE_NXZ */
4533 /* ??7ios_base@std@@QEBA_NXZ */
4534 DEFINE_THISCALL_WRAPPER(ios_base_op_succ, 4)
4535 MSVCP_bool __thiscall ios_base_op_succ(const ios_base *this)
4537 TRACE("(%p)\n", this);
4538 return ios_base_fail(this);
4541 /* ??Bios_base@std@@QBEPAXXZ */
4542 /* ??Bios_base@std@@QEBAPEAXXZ */
4543 DEFINE_THISCALL_WRAPPER(ios_base_op_fail, 4)
4544 void* __thiscall ios_base_op_fail(const ios_base *this)
4546 TRACE("(%p)\n", this);
4547 return ios_base_fail(this) ? NULL : (void*)this;
4550 /* ?_Addstd@ios_base@std@@SAXPAV12@@Z */
4551 /* ?_Addstd@ios_base@std@@SAXPEAV12@@Z */
4552 void CDECL ios_base_Addstd(ios_base *add)
4554 FIXME("(%p) stub\n", add);
4557 /* ?_Index_func@ios_base@std@@CAAAHXZ */
4558 /* ?_Index_func@ios_base@std@@CAAEAHXZ */
4559 int* CDECL ios_base_Index_func(void)
4561 TRACE("\n");
4562 return &ios_base_Index;
4565 /* ?_Init@ios_base@std@@IAEXXZ */
4566 /* ?_Init@ios_base@std@@IEAAXXZ */
4567 DEFINE_THISCALL_WRAPPER(ios_base_Init, 4)
4568 void __thiscall ios_base_Init(ios_base *this)
4570 TRACE("(%p)\n", this);
4572 this->stdstr = 0;
4573 this->state = this->except = IOSTATE_goodbit;
4574 this->fmtfl = FMTFLAG_skipws | FMTFLAG_dec;
4575 this->prec = 6;
4576 this->wide = 0;
4577 this->arr = NULL;
4578 this->calls = NULL;
4579 this->loc = MSVCRT_operator_new(sizeof(locale));
4580 locale_ctor(this->loc);
4583 /* ?_Sync_func@ios_base@std@@CAAA_NXZ */
4584 /* ?_Sync_func@ios_base@std@@CAAEA_NXZ */
4585 MSVCP_bool* CDECL ios_base_Sync_func(void)
4587 TRACE("\n");
4588 return &ios_base_Sync;
4591 /* ?bad@ios_base@std@@QBE_NXZ */
4592 /* ?bad@ios_base@std@@QEBA_NXZ */
4593 DEFINE_THISCALL_WRAPPER(ios_base_bad, 4)
4594 MSVCP_bool __thiscall ios_base_bad(const ios_base *this)
4596 TRACE("(%p)\n", this);
4597 return (this->state & IOSTATE_badbit) != 0;
4600 /* ?eof@ios_base@std@@QBE_NXZ */
4601 /* ?eof@ios_base@std@@QEBA_NXZ */
4602 DEFINE_THISCALL_WRAPPER(ios_base_eof, 4)
4603 MSVCP_bool __thiscall ios_base_eof(const ios_base *this)
4605 TRACE("(%p)\n", this);
4606 return (this->state & IOSTATE_eofbit) != 0;
4609 /* ?flags@ios_base@std@@QAEHH@Z */
4610 /* ?flags@ios_base@std@@QEAAHH@Z */
4611 DEFINE_THISCALL_WRAPPER(ios_base_flags_set, 8)
4612 IOSB_fmtflags __thiscall ios_base_flags_set(ios_base *this, IOSB_fmtflags flags)
4614 IOSB_fmtflags ret = this->fmtfl;
4616 TRACE("(%p %x)\n", this, flags);
4618 this->fmtfl = flags & FMTFLAG_mask;
4619 return ret;
4622 /* ?flags@ios_base@std@@QBEHXZ */
4623 /* ?flags@ios_base@std@@QEBAHXZ */
4624 DEFINE_THISCALL_WRAPPER(ios_base_flags_get, 4)
4625 IOSB_fmtflags __thiscall ios_base_flags_get(const ios_base *this)
4627 TRACE("(%p)\n", this);
4628 return this->fmtfl;
4631 /* ?getloc@ios_base@std@@QBE?AVlocale@2@XZ */
4632 /* ?getloc@ios_base@std@@QEBA?AVlocale@2@XZ */
4633 DEFINE_THISCALL_WRAPPER(ios_base_getloc, 8)
4634 locale* __thiscall ios_base_getloc(const ios_base *this, locale *ret)
4636 TRACE("(%p)\n", this);
4637 return locale_copy_ctor(ret, this->loc);
4640 /* ?good@ios_base@std@@QBE_NXZ */
4641 /* ?good@ios_base@std@@QEBA_NXZ */
4642 DEFINE_THISCALL_WRAPPER(ios_base_good, 4)
4643 MSVCP_bool __thiscall ios_base_good(const ios_base *this)
4645 TRACE("(%p)\n", this);
4646 return this->state == IOSTATE_goodbit;
4649 /* ?imbue@ios_base@std@@QAE?AVlocale@2@ABV32@@Z */
4650 /* ?imbue@ios_base@std@@QEAA?AVlocale@2@AEBV32@@Z */
4651 DEFINE_THISCALL_WRAPPER(ios_base_imbue, 12)
4652 locale* __thiscall ios_base_imbue(ios_base *this, locale *ret, const locale *loc)
4654 TRACE("(%p %p)\n", this, loc);
4655 *ret = *this->loc;
4656 locale_copy_ctor(this->loc, loc);
4657 return ret;
4660 /* ?precision@ios_base@std@@QAEHH@Z */
4661 /* ?precision@ios_base@std@@QEAA_J_J@Z */
4662 DEFINE_THISCALL_WRAPPER(ios_base_precision_set, 8)
4663 streamsize __thiscall ios_base_precision_set(ios_base *this, streamsize precision)
4665 streamsize ret = this->prec;
4667 TRACE("(%p %ld)\n", this, precision);
4669 this->prec = precision;
4670 return ret;
4673 /* ?precision@ios_base@std@@QBEHXZ */
4674 /* ?precision@ios_base@std@@QEBA_JXZ */
4675 DEFINE_THISCALL_WRAPPER(ios_base_precision_get, 4)
4676 streamsize __thiscall ios_base_precision_get(const ios_base *this)
4678 TRACE("(%p)\n", this);
4679 return this->prec;
4682 /* ?rdstate@ios_base@std@@QBEHXZ */
4683 /* ?rdstate@ios_base@std@@QEBAHXZ */
4684 DEFINE_THISCALL_WRAPPER(ios_base_rdstate, 4)
4685 IOSB_iostate __thiscall ios_base_rdstate(const ios_base *this)
4687 TRACE("(%p)\n", this);
4688 return this->state;
4691 /* ?setf@ios_base@std@@QAEHHH@Z */
4692 /* ?setf@ios_base@std@@QEAAHHH@Z */
4693 DEFINE_THISCALL_WRAPPER(ios_base_setf_mask, 12)
4694 IOSB_fmtflags __thiscall ios_base_setf_mask(ios_base *this, IOSB_fmtflags flags, IOSB_fmtflags mask)
4696 IOSB_fmtflags ret = this->fmtfl;
4698 TRACE("(%p %x %x)\n", this, flags, mask);
4700 this->fmtfl = (this->fmtfl & (~mask)) | (flags & mask & FMTFLAG_mask);
4701 return ret;
4704 /* ?setf@ios_base@std@@QAEHH@Z */
4705 /* ?setf@ios_base@std@@QEAAHH@Z */
4706 DEFINE_THISCALL_WRAPPER(ios_base_setf, 8)
4707 IOSB_fmtflags __thiscall ios_base_setf(ios_base *this, IOSB_fmtflags flags)
4709 return ios_base_setf_mask(this, flags, ~0);
4712 /* ?setstate@ios_base@std@@QAEXH_N@Z */
4713 /* ?setstate@ios_base@std@@QEAAXH_N@Z */
4714 DEFINE_THISCALL_WRAPPER(ios_base_setstate_reraise, 12)
4715 void __thiscall ios_base_setstate_reraise(ios_base *this, IOSB_iostate state, MSVCP_bool reraise)
4717 TRACE("(%p %x %x)\n", this, state, reraise);
4719 if(state != IOSTATE_goodbit)
4720 ios_base_clear_reraise(this, this->state | state, reraise);
4723 /* ?setstate@ios_base@std@@QAEXH@Z */
4724 /* ?setstate@ios_base@std@@QEAAXH@Z */
4725 DEFINE_THISCALL_WRAPPER(ios_base_setstate, 8)
4726 void __thiscall ios_base_setstate(ios_base *this, IOSB_iostate state)
4728 ios_base_setstate_reraise(this, state, FALSE);
4731 /* ?setstate@ios_base@std@@QAEXI@Z */
4732 /* ?setstate@ios_base@std@@QEAAXI@Z */
4733 DEFINE_THISCALL_WRAPPER(ios_base_setstate_unsigned, 8)
4734 void __thiscall ios_base_setstate_unsigned(ios_base *this, unsigned int state)
4736 ios_base_setstate_reraise(this, (IOSB_iostate)state, FALSE);
4739 /* ?sync_with_stdio@ios_base@std@@SA_N_N@Z */
4740 MSVCP_bool CDECL ios_base_sync_with_stdio(MSVCP_bool sync)
4742 _Lockit lock;
4743 MSVCP_bool ret;
4745 TRACE("(%x)\n", sync);
4747 _Lockit_ctor_locktype(&lock, _LOCK_STREAM);
4748 ret = ios_base_Sync;
4749 ios_base_Sync = sync;
4750 _Lockit_dtor(&lock);
4751 return ret;
4754 /* ?unsetf@ios_base@std@@QAEXH@Z */
4755 /* ?unsetf@ios_base@std@@QEAAXH@Z */
4756 DEFINE_THISCALL_WRAPPER(ios_base_unsetf, 8)
4757 void __thiscall ios_base_unsetf(ios_base *this, IOSB_fmtflags flags)
4759 TRACE("(%p %x)\n", this, flags);
4760 this->fmtfl &= ~flags;
4763 /* ?width@ios_base@std@@QAEHH@Z */
4764 /* ?width@ios_base@std@@QEAA_J_J@Z */
4765 DEFINE_THISCALL_WRAPPER(ios_base_width_set, 8)
4766 streamsize __thiscall ios_base_width_set(ios_base *this, streamsize width)
4768 streamsize ret = this->wide;
4770 TRACE("(%p %ld)\n", this, width);
4772 this->wide = width;
4773 return ret;
4776 /* ?width@ios_base@std@@QBEHXZ */
4777 /* ?width@ios_base@std@@QEBA_JXZ */
4778 DEFINE_THISCALL_WRAPPER(ios_base_width_get, 4)
4779 streamsize __thiscall ios_base_width_get(ios_base *this)
4781 TRACE("(%p)\n", this);
4782 return this->wide;
4785 /* ?xalloc@ios_base@std@@SAHXZ */
4786 int CDECL ios_base_xalloc(void)
4788 _Lockit lock;
4789 int ret;
4791 TRACE("\n");
4793 _Lockit_ctor_locktype(&lock, _LOCK_STREAM);
4794 ret = ios_base_Index++;
4795 _Lockit_dtor(&lock);
4796 return ret;
4799 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@IAE@XZ */
4800 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@IEAA@XZ */
4801 DEFINE_THISCALL_WRAPPER(basic_ios_char_ctor, 4)
4802 basic_ios_char* __thiscall basic_ios_char_ctor(basic_ios_char *this)
4804 TRACE("(%p)\n", this);
4806 ios_base_ctor(&this->base);
4807 this->base.vtable = &MSVCP_basic_ios_char_vtable;
4808 return this;
4811 /* ?init@?$basic_ios@DU?$char_traits@D@std@@@std@@IAEXPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@_N@Z */
4812 /* ?init@?$basic_ios@DU?$char_traits@D@std@@@std@@IEAAXPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@_N@Z */
4813 DEFINE_THISCALL_WRAPPER(basic_ios_char_init, 12)
4814 void __thiscall basic_ios_char_init(basic_ios_char *this, basic_streambuf_char *streambuf, MSVCP_bool isstd)
4816 TRACE("(%p %p %x)\n", this, streambuf, isstd);
4817 ios_base_Init(&this->base);
4818 this->strbuf = streambuf;
4819 this->stream = NULL;
4820 this->fillch = ' ';
4822 if(!streambuf)
4823 ios_base_setstate(&this->base, IOSTATE_badbit);
4825 if(isstd)
4826 FIXME("standard streams not handled yet\n");
4829 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
4830 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
4831 DEFINE_THISCALL_WRAPPER(basic_ios_char_ctor_streambuf, 8)
4832 basic_ios_char* __thiscall basic_ios_char_ctor_streambuf(basic_ios_char *this, basic_streambuf_char *strbuf)
4834 TRACE("(%p %p)\n", this, strbuf);
4836 basic_ios_char_ctor(this);
4837 basic_ios_char_init(this, strbuf, FALSE);
4838 return this;
4841 /* ??1?$basic_ios@DU?$char_traits@D@std@@@std@@UAE@XZ */
4842 /* ??1?$basic_ios@DU?$char_traits@D@std@@@std@@UEAA@XZ */
4843 DEFINE_THISCALL_WRAPPER(basic_ios_char_dtor, 4)
4844 void __thiscall basic_ios_char_dtor(basic_ios_char *this)
4846 TRACE("(%p)\n", this);
4847 ios_base_dtor(&this->base);
4850 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ios_char_vector_dtor, 8)
4851 basic_ios_char* __thiscall MSVCP_basic_ios_char_vector_dtor(basic_ios_char *this, unsigned int flags)
4853 TRACE("(%p %x)\n", this, flags);
4854 if(flags & 2) {
4855 /* we have an array, with the number of elements stored before the first object */
4856 int i, *ptr = (int *)this-1;
4858 for(i=*ptr-1; i>=0; i--)
4859 basic_ios_char_dtor(this+i);
4860 MSVCRT_operator_delete(ptr);
4861 } else {
4862 basic_ios_char_dtor(this);
4863 if(flags & 1)
4864 MSVCRT_operator_delete(this);
4867 return this;
4870 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z */
4871 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z */
4872 DEFINE_THISCALL_WRAPPER(basic_ios_char_clear_reraise, 12)
4873 void __thiscall basic_ios_char_clear_reraise(basic_ios_char *this, IOSB_iostate state, MSVCP_bool reraise)
4875 TRACE("(%p %x %x)\n", this, state, reraise);
4876 ios_base_clear_reraise(&this->base, state | (this->strbuf ? IOSTATE_goodbit : IOSTATE_badbit), reraise);
4879 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXI@Z */
4880 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXI@Z */
4881 DEFINE_THISCALL_WRAPPER(basic_ios_char_clear, 8)
4882 void __thiscall basic_ios_char_clear(basic_ios_char *this, unsigned int state)
4884 basic_ios_char_clear_reraise(this, (IOSB_iostate)state, FALSE);
4887 /* ?copyfmt@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEAAV12@ABV12@@Z */
4888 /* ?copyfmt@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEBV12@@Z */
4889 DEFINE_THISCALL_WRAPPER(basic_ios_char_copyfmt, 8)
4890 basic_ios_char* __thiscall basic_ios_char_copyfmt(basic_ios_char *this, basic_ios_char *copy)
4892 TRACE("(%p %p)\n", this, copy);
4893 if(this == copy)
4894 return this;
4896 this->stream = copy->stream;
4897 this->fillch = copy->fillch;
4898 ios_base_copyfmt(&this->base, &copy->base);
4899 return this;
4902 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEDD@Z */
4903 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAADD@Z */
4904 DEFINE_THISCALL_WRAPPER(basic_ios_char_fill_set, 8)
4905 char __thiscall basic_ios_char_fill_set(basic_ios_char *this, char fill)
4907 char ret = this->fillch;
4909 TRACE("(%p %c)\n", this, fill);
4911 this->fillch = fill;
4912 return ret;
4915 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDXZ */
4916 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADXZ */
4917 DEFINE_THISCALL_WRAPPER(basic_ios_char_fill_get, 4)
4918 char __thiscall basic_ios_char_fill_get(basic_ios_char *this)
4920 TRACE("(%p)\n", this);
4921 return this->fillch;
4924 /* ?imbue@?$basic_ios@DU?$char_traits@D@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
4925 /* ?imbue@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
4926 DEFINE_THISCALL_WRAPPER(basic_ios_char_imbue, 12)
4927 locale *__thiscall basic_ios_char_imbue(basic_ios_char *this, locale *ret, const locale *loc)
4929 TRACE("(%p %p %p)\n", this, ret, loc);
4931 if(this->strbuf) {
4932 basic_streambuf_char_pubimbue(this->strbuf, ret, loc);
4933 locale_dtor(ret);
4936 return ios_base_imbue(&this->base, ret, loc);
4939 /* ?narrow@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDDD@Z */
4940 /* ?narrow@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADDD@Z */
4941 DEFINE_THISCALL_WRAPPER(basic_ios_char_narrow, 12)
4942 char __thiscall basic_ios_char_narrow(basic_ios_char *this, char ch, char def)
4944 TRACE("(%p %c %c)\n", this, ch, def);
4945 return ctype_char_narrow_ch(ctype_char_use_facet(this->strbuf->loc), ch, def);
4948 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PAV32@@Z */
4949 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PEAV32@@Z */
4950 DEFINE_THISCALL_WRAPPER(basic_ios_char_rdbuf_set, 8)
4951 basic_streambuf_char* __thiscall basic_ios_char_rdbuf_set(basic_ios_char *this, basic_streambuf_char *streambuf)
4953 basic_streambuf_char *ret = this->strbuf;
4955 TRACE("(%p %p)\n", this, streambuf);
4957 this->strbuf = streambuf;
4958 basic_ios_char_clear(this, IOSTATE_goodbit);
4959 return ret;
4962 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ */
4963 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ */
4964 DEFINE_THISCALL_WRAPPER(basic_ios_char_rdbuf_get, 4)
4965 basic_streambuf_char* __thiscall basic_ios_char_rdbuf_get(const basic_ios_char *this)
4967 TRACE("(%p)\n", this);
4968 return this->strbuf;
4971 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z */
4972 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z */
4973 DEFINE_THISCALL_WRAPPER(basic_ios_char_setstate_reraise, 12)
4974 void __thiscall basic_ios_char_setstate_reraise(basic_ios_char *this, IOSB_iostate state, MSVCP_bool reraise)
4976 TRACE("(%p %x %x)\n", this, state, reraise);
4978 if(state != IOSTATE_goodbit)
4979 basic_ios_char_clear_reraise(this, this->base.state | state, reraise);
4982 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXI@Z */
4983 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXI@Z */
4984 DEFINE_THISCALL_WRAPPER(basic_ios_char_setstate, 8)
4985 void __thiscall basic_ios_char_setstate(basic_ios_char *this, unsigned int state)
4987 basic_ios_char_setstate_reraise(this, (IOSB_iostate)state, FALSE);
4990 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEPAV?$basic_ostream@DU?$char_traits@D@std@@@2@PAV32@@Z */
4991 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAPEAV?$basic_ostream@DU?$char_traits@D@std@@@2@PEAV32@@Z */
4992 DEFINE_THISCALL_WRAPPER(basic_ios_char_tie_set, 8)
4993 basic_ostream_char* __thiscall basic_ios_char_tie_set(basic_ios_char *this, basic_ostream_char *ostream)
4995 basic_ostream_char *ret = this->stream;
4997 TRACE("(%p %p)\n", this, ostream);
4999 this->stream = ostream;
5000 return ret;
5003 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_ostream@DU?$char_traits@D@std@@@2@XZ */
5004 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_ostream@DU?$char_traits@D@std@@@2@XZ */
5005 DEFINE_THISCALL_WRAPPER(basic_ios_char_tie_get, 4)
5006 basic_ostream_char* __thiscall basic_ios_char_tie_get(const basic_ios_char *this)
5008 TRACE("(%p)\n", this);
5009 return this->stream;
5012 /* ?widen@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDD@Z */
5013 /* ?widen@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADD@Z */
5014 DEFINE_THISCALL_WRAPPER(basic_ios_char_widen, 8)
5015 char __thiscall basic_ios_char_widen(basic_ios_char *this, char ch)
5017 TRACE("(%p %c)\n", this, ch);
5018 return ctype_char_widen_ch(ctype_char_use_facet(this->strbuf->loc), ch);
5022 /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@IAE@XZ */
5023 /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@IEAA@XZ */
5024 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_ctor, 4)
5025 basic_ios_wchar* __thiscall basic_ios_wchar_ctor(basic_ios_wchar *this)
5027 TRACE("(%p)\n", this);
5029 ios_base_ctor(&this->base);
5030 this->base.vtable = &MSVCP_basic_ios_wchar_vtable;
5031 return this;
5034 /* ??0?$basic_ios@GU?$char_traits@G@std@@@std@@IAE@XZ */
5035 /* ??0?$basic_ios@GU?$char_traits@G@std@@@std@@IEAA@XZ */
5036 DEFINE_THISCALL_WRAPPER(basic_ios_short_ctor, 4)
5037 basic_ios_wchar* __thiscall basic_ios_short_ctor(basic_ios_wchar *this)
5039 basic_ios_wchar_ctor(this);
5040 this->base.vtable = &MSVCP_basic_ios_short_vtable;
5041 return this;
5044 /* ?init@?$basic_ios@_WU?$char_traits@_W@std@@@std@@IAEXPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_N@Z */
5045 /* ?init@?$basic_ios@_WU?$char_traits@_W@std@@@std@@IEAAXPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_N@Z */
5046 /* ?init@?$basic_ios@GU?$char_traits@G@std@@@std@@IAEXPAV?$basic_streambuf@GU?$char_traits@G@std@@@2@_N@Z */
5047 /* ?init@?$basic_ios@GU?$char_traits@G@std@@@std@@IEAAXPEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@_N@Z */
5048 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_init, 12)
5049 void __thiscall basic_ios_wchar_init(basic_ios_wchar *this, basic_streambuf_wchar *streambuf, MSVCP_bool isstd)
5051 TRACE("(%p %p %x)\n", this, streambuf, isstd);
5052 ios_base_Init(&this->base);
5053 this->strbuf = streambuf;
5054 this->stream = NULL;
5055 this->fillch = ' ';
5057 if(!streambuf)
5058 ios_base_setstate(&this->base, IOSTATE_badbit);
5060 if(isstd)
5061 FIXME("standard streams not handled yet\n");
5064 /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
5065 /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
5066 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_ctor_streambuf, 8)
5067 basic_ios_wchar* __thiscall basic_ios_wchar_ctor_streambuf(basic_ios_wchar *this, basic_streambuf_wchar *strbuf)
5069 TRACE("(%p %p)\n", this, strbuf);
5071 basic_ios_wchar_ctor(this);
5072 basic_ios_wchar_init(this, strbuf, FALSE);
5073 return this;
5076 /* ??0?$basic_ios@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
5077 /* ??0?$basic_ios@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
5078 DEFINE_THISCALL_WRAPPER(basic_ios_short_ctor_streambuf, 8)
5079 basic_ios_wchar* __thiscall basic_ios_short_ctor_streambuf(basic_ios_wchar *this, basic_streambuf_wchar *strbuf)
5081 basic_ios_wchar_ctor_streambuf(this, strbuf);
5082 this->base.vtable = &MSVCP_basic_ios_short_vtable;
5083 return this;
5086 /* ??1?$basic_ios@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
5087 /* ??1?$basic_ios@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
5088 /* ??1?$basic_ios@GU?$char_traits@G@std@@@std@@UAE@XZ */
5089 /* ??1?$basic_ios@GU?$char_traits@G@std@@@std@@UEAA@XZ */
5090 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_dtor, 4)
5091 void __thiscall basic_ios_wchar_dtor(basic_ios_wchar *this)
5093 TRACE("(%p)\n", this);
5094 ios_base_dtor(&this->base);
5097 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ios_wchar_vector_dtor, 8)
5098 basic_ios_wchar* __thiscall MSVCP_basic_ios_wchar_vector_dtor(basic_ios_wchar *this, unsigned int flags)
5100 TRACE("(%p %x)\n", this, flags);
5101 if(flags & 2) {
5102 /* we have an array, with the number of elements stored before the first object */
5103 int i, *ptr = (int *)this-1;
5105 for(i=*ptr-1; i>=0; i--)
5106 basic_ios_wchar_dtor(this+i);
5107 MSVCRT_operator_delete(ptr);
5108 } else {
5109 basic_ios_wchar_dtor(this);
5110 if(flags & 1)
5111 MSVCRT_operator_delete(this);
5114 return this;
5117 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ios_short_vector_dtor, 8)
5118 basic_ios_wchar* __thiscall MSVCP_basic_ios_short_vector_dtor(basic_ios_wchar *this, unsigned int flags)
5120 return MSVCP_basic_ios_wchar_vector_dtor(this, flags);
5123 /* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXH_N@Z */
5124 /* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXH_N@Z */
5125 /* ?clear@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXH_N@Z */
5126 /* ?clear@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXH_N@Z */
5127 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_clear_reraise, 12)
5128 void __thiscall basic_ios_wchar_clear_reraise(basic_ios_wchar *this, IOSB_iostate state, MSVCP_bool reraise)
5130 TRACE("(%p %x %x)\n", this, state, reraise);
5131 ios_base_clear_reraise(&this->base, state | (this->strbuf ? IOSTATE_goodbit : IOSTATE_badbit), reraise);
5134 /* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXI@Z */
5135 /* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXI@Z */
5136 /* ?clear@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXI@Z */
5137 /* ?clear@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXI@Z */
5138 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_clear, 8)
5139 void __thiscall basic_ios_wchar_clear(basic_ios_wchar *this, unsigned int state)
5141 basic_ios_wchar_clear_reraise(this, (IOSB_iostate)state, FALSE);
5144 /* ?copyfmt@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEAAV12@ABV12@@Z */
5145 /* ?copyfmt@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEBV12@@Z */
5146 /* ?copyfmt@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEAAV12@ABV12@@Z */
5147 /* ?copyfmt@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAAEAV12@AEBV12@@Z */
5148 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_copyfmt, 8)
5149 basic_ios_wchar* __thiscall basic_ios_wchar_copyfmt(basic_ios_wchar *this, basic_ios_wchar *copy)
5151 TRACE("(%p %p)\n", this, copy);
5152 if(this == copy)
5153 return this;
5155 this->stream = copy->stream;
5156 this->fillch = copy->fillch;
5157 ios_base_copyfmt(&this->base, &copy->base);
5158 return this;
5161 /* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAE_W_W@Z */
5162 /* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAA_W_W@Z */
5163 /* ?fill@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEGG@Z */
5164 /* ?fill@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAGG@Z */
5165 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_fill_set, 8)
5166 wchar_t __thiscall basic_ios_wchar_fill_set(basic_ios_wchar *this, wchar_t fill)
5168 wchar_t ret = this->fillch;
5170 TRACE("(%p %c)\n", this, fill);
5172 this->fillch = fill;
5173 return ret;
5176 /* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBE_WXZ */
5177 /* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBA_WXZ */
5178 /* ?fill@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEGXZ */
5179 /* ?fill@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBAGXZ */
5180 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_fill_get, 4)
5181 wchar_t __thiscall basic_ios_wchar_fill_get(basic_ios_wchar *this)
5183 TRACE("(%p)\n", this);
5184 return this->fillch;
5187 /* ?imbue@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
5188 /* ?imbue@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
5189 /* ?imbue@?$basic_ios@GU?$char_traits@G@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
5190 /* ?imbue@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
5191 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_imbue, 12)
5192 locale *__thiscall basic_ios_wchar_imbue(basic_ios_wchar *this, locale *ret, const locale *loc)
5194 TRACE("(%p %p %p)\n", this, ret, loc);
5196 if(this->strbuf)
5197 return basic_streambuf_wchar_pubimbue(this->strbuf, ret, loc);
5199 locale_copy_ctor(ret, loc);
5200 return ret;
5203 /* ?narrow@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBED_WD@Z */
5204 /* ?narrow@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBAD_WD@Z */
5205 /* ?narrow@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEDGD@Z */
5206 /* ?narrow@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBADGD@Z */
5207 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_narrow, 12)
5208 char __thiscall basic_ios_wchar_narrow(basic_ios_wchar *this, wchar_t ch, char def)
5210 TRACE("(%p %c %c)\n", this, ch, def);
5211 return ctype_wchar_narrow_ch(ctype_wchar_use_facet(this->strbuf->loc), ch, def);
5214 /* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@PAV32@@Z */
5215 /* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@PEAV32@@Z */
5216 /* ?rdbuf@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEPAV?$basic_streambuf@GU?$char_traits@G@std@@@2@PAV32@@Z */
5217 /* ?rdbuf@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAPEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@PEAV32@@Z */
5218 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_rdbuf_set, 8)
5219 basic_streambuf_wchar* __thiscall basic_ios_wchar_rdbuf_set(basic_ios_wchar *this, basic_streambuf_wchar *streambuf)
5221 basic_streambuf_wchar *ret = this->strbuf;
5223 TRACE("(%p %p)\n", this, streambuf);
5225 this->strbuf = streambuf;
5226 basic_ios_wchar_clear(this, IOSTATE_goodbit);
5227 return ret;
5230 /* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@XZ */
5231 /* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@XZ */
5232 /* ?rdbuf@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_streambuf@GU?$char_traits@G@std@@@2@XZ */
5233 /* ?rdbuf@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@XZ */
5234 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_rdbuf_get, 4)
5235 basic_streambuf_wchar* __thiscall basic_ios_wchar_rdbuf_get(const basic_ios_wchar *this)
5237 TRACE("(%p)\n", this);
5238 return this->strbuf;
5241 /* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXH_N@Z */
5242 /* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXH_N@Z */
5243 /* ?setstate@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXH_N@Z */
5244 /* ?setstate@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXH_N@Z */
5245 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_setstate_reraise, 12)
5246 void __thiscall basic_ios_wchar_setstate_reraise(basic_ios_wchar *this, IOSB_iostate state, MSVCP_bool reraise)
5248 TRACE("(%p %x %x)\n", this, state, reraise);
5250 if(state != IOSTATE_goodbit)
5251 basic_ios_wchar_clear_reraise(this, this->base.state | state, reraise);
5254 /* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXI@Z */
5255 /* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXI@Z */
5256 /* ?setstate@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXI@Z */
5257 /* ?setstate@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXI@Z */
5258 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_setstate, 8)
5259 void __thiscall basic_ios_wchar_setstate(basic_ios_wchar *this, IOSB_iostate state)
5261 basic_ios_wchar_setstate_reraise(this, state, FALSE);
5264 /* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEPAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@PAV32@@Z */
5265 /* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAPEAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@PEAV32@@Z */
5266 /* ?tie@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEPAV?$basic_ostream@GU?$char_traits@G@std@@@2@PAV32@@Z */
5267 /* ?tie@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAPEAV?$basic_ostream@GU?$char_traits@G@std@@@2@PEAV32@@Z */
5268 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_tie_set, 8)
5269 basic_ostream_wchar* __thiscall basic_ios_wchar_tie_set(basic_ios_wchar *this, basic_ostream_wchar *ostream)
5271 basic_ostream_wchar *ret = this->stream;
5273 TRACE("(%p %p)\n", this, ostream);
5275 this->stream = ostream;
5276 return ret;
5279 /* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@XZ */
5280 /* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@XZ */
5281 /* ?tie@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_ostream@GU?$char_traits@G@std@@@2@XZ */
5282 /* ?tie@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_ostream@GU?$char_traits@G@std@@@2@XZ */
5283 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_tie_get, 4)
5284 basic_ostream_wchar* __thiscall basic_ios_wchar_tie_get(const basic_ios_wchar *this)
5286 TRACE("(%p)\n", this);
5287 return this->stream;
5290 /* ?widen@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBE_WD@Z */
5291 /* ?widen@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBA_WD@Z */
5292 /* ?widen@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEGD@Z */
5293 /* ?widen@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBAGD@Z */
5294 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_widen, 8)
5295 wchar_t __thiscall basic_ios_wchar_widen(basic_ios_wchar *this, char ch)
5297 TRACE("(%p %c)\n", this, ch);
5298 return ctype_wchar_widen_ch(ctype_wchar_use_facet(this->strbuf->loc), ch);
5301 /* Caution: basic_ostream uses virtual inheritance.
5302 * All constructors have additional parameter that says if base class should be initialized.
5303 * Base class needs to be accessed using vbtable.
5305 static inline basic_ios_char* basic_ostream_char_get_basic_ios(basic_ostream_char *this)
5307 return (basic_ios_char*)((char*)this+this->vbtable[1]);
5310 static inline basic_ios_char* basic_ostream_char_to_basic_ios(basic_ostream_char *ptr)
5312 return (basic_ios_char*)((char*)ptr+basic_ostream_char_vbtable[1]);
5315 static inline basic_ostream_char* basic_ostream_char_from_basic_ios(basic_ios_char *ptr)
5317 return (basic_ostream_char*)((char*)ptr-basic_ostream_char_vbtable[1]);
5320 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z */
5321 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z */
5322 DEFINE_THISCALL_WRAPPER(basic_ostream_char_ctor, 16)
5323 basic_ostream_char* __thiscall basic_ostream_char_ctor(basic_ostream_char *this,
5324 basic_streambuf_char *strbuf, MSVCP_bool isstd, MSVCP_bool virt_init)
5326 basic_ios_char *base;
5328 TRACE("(%p %p %d %d)\n", this, strbuf, isstd, virt_init);
5330 if(virt_init) {
5331 this->vbtable = basic_ostream_char_vbtable;
5332 base = basic_ostream_char_get_basic_ios(this);
5333 basic_ios_char_ctor(base);
5334 }else {
5335 base = basic_ostream_char_get_basic_ios(this);
5338 base->base.vtable = &MSVCP_basic_ostream_char_vtable;
5339 basic_ios_char_init(base, strbuf, isstd);
5340 return this;
5343 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@W4_Uninitialized@1@_N@Z */
5344 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@W4_Uninitialized@1@_N@Z */
5345 DEFINE_THISCALL_WRAPPER(basic_ostream_char_ctor_uninitialized, 16)
5346 basic_ostream_char* __thiscall basic_ostream_char_ctor_uninitialized(basic_ostream_char *this,
5347 int uninitialized, MSVCP_bool addstd, MSVCP_bool virt_init)
5349 basic_ios_char *base;
5351 TRACE("(%p %d %x)\n", this, uninitialized, addstd);
5353 if(virt_init) {
5354 this->vbtable = basic_ostream_char_vbtable;
5355 base = basic_ostream_char_get_basic_ios(this);
5356 basic_ios_char_ctor(base);
5357 }else {
5358 base = basic_ostream_char_get_basic_ios(this);
5361 base->base.vtable = &MSVCP_basic_ostream_char_vtable;
5362 if(addstd)
5363 ios_base_Addstd(&base->base);
5364 return this;
5367 /* ??1?$basic_ostream@DU?$char_traits@D@std@@@std@@UAE@XZ */
5368 /* ??1?$basic_ostream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
5369 DEFINE_THISCALL_WRAPPER(basic_ostream_char_dtor, 4)
5370 void __thiscall basic_ostream_char_dtor(basic_ios_char *base)
5372 basic_ostream_char *this = basic_ostream_char_from_basic_ios(base);
5374 /* don't destroy virtual base here */
5375 TRACE("(%p)\n", this);
5378 /* ??_D?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
5379 /* ??_D?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
5380 DEFINE_THISCALL_WRAPPER(basic_ostream_char_vbase_dtor, 4)
5381 void __thiscall basic_ostream_char_vbase_dtor(basic_ostream_char *this)
5383 TRACE("(%p)\n", this);
5384 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(this));
5385 basic_ios_char_dtor(basic_ostream_char_get_basic_ios(this));
5388 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ostream_char_vector_dtor, 8)
5389 basic_ostream_char* __thiscall MSVCP_basic_ostream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
5391 basic_ostream_char *this = basic_ostream_char_from_basic_ios(base);
5393 TRACE("(%p %x)\n", this, flags);
5395 if(flags & 2) {
5396 /* we have an array, with the number of elements stored before the first object */
5397 int i, *ptr = (int *)this-1;
5399 for(i=*ptr-1; i>=0; i--)
5400 basic_ostream_char_vbase_dtor(this+i);
5401 MSVCRT_operator_delete(ptr);
5402 } else {
5403 basic_ostream_char_vbase_dtor(this);
5404 if(flags & 1)
5405 MSVCRT_operator_delete(this);
5408 return this;
5411 /* ?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@XZ */
5412 /* ?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@XZ */
5413 DEFINE_THISCALL_WRAPPER(basic_ostream_char_flush, 4)
5414 basic_ostream_char* __thiscall basic_ostream_char_flush(basic_ostream_char *this)
5416 /* this function is not matching C++ specification */
5417 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5419 TRACE("(%p)\n", this);
5421 if(basic_ios_char_rdbuf_get(base) && ios_base_good(&base->base)
5422 && basic_streambuf_char_pubsync(basic_ios_char_rdbuf_get(base))==-1)
5423 basic_ios_char_setstate(base, IOSTATE_badbit);
5424 return this;
5427 /* ?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
5428 /* ?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
5429 DEFINE_THISCALL_WRAPPER(basic_ostream_char__Osfx, 4)
5430 void __thiscall basic_ostream_char__Osfx(basic_ostream_char *this)
5432 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5434 TRACE("(%p)\n", this);
5436 if(base->base.fmtfl & FMTFLAG_unitbuf)
5437 basic_ostream_char_flush(this);
5440 /* ?osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
5441 /* ?osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
5442 DEFINE_THISCALL_WRAPPER(basic_ostream_char_osfx, 4)
5443 void __thiscall basic_ostream_char_osfx(basic_ostream_char *this)
5445 TRACE("(%p)\n", this);
5446 basic_ostream_char__Osfx(this);
5449 static BOOL basic_ostream_char_sentry_create(basic_ostream_char *ostr)
5451 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
5453 if(basic_ios_char_rdbuf_get(base))
5454 basic_streambuf_char__Lock(base->strbuf);
5456 if(ios_base_good(&base->base) && base->stream)
5457 basic_ostream_char_flush(base->stream);
5459 return ios_base_good(&base->base);
5462 static void basic_ostream_char_sentry_destroy(basic_ostream_char *ostr)
5464 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
5466 if(ios_base_good(&base->base) && !__uncaught_exception())
5467 basic_ostream_char_osfx(ostr);
5469 if(basic_ios_char_rdbuf_get(base))
5470 basic_streambuf_char__Unlock(base->strbuf);
5473 /* ?opfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE_NXZ */
5474 /* ?opfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA_NXZ */
5475 DEFINE_THISCALL_WRAPPER(basic_ostream_char_opfx, 4)
5476 MSVCP_bool __thiscall basic_ostream_char_opfx(basic_ostream_char *this)
5478 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5480 TRACE("(%p)\n", this);
5482 if(ios_base_good(&base->base) && base->stream)
5483 basic_ostream_char_flush(base->stream);
5484 return ios_base_good(&base->base);
5487 /* ?put@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@D@Z */
5488 /* ?put@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@D@Z */
5489 DEFINE_THISCALL_WRAPPER(basic_ostream_char_put, 8)
5490 basic_ostream_char* __thiscall basic_ostream_char_put(basic_ostream_char *this, char ch)
5492 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5494 TRACE("(%p %c)\n", this, ch);
5496 if(!basic_ostream_char_sentry_create(this)
5497 || basic_streambuf_char_sputc(base->strbuf, ch)==EOF) {
5498 basic_ostream_char_sentry_destroy(this);
5499 basic_ios_char_setstate(base, IOSTATE_badbit);
5500 return this;
5503 basic_ostream_char_sentry_destroy(this);
5504 return this;
5507 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@JH@Z */
5508 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@_JH@Z */
5509 DEFINE_THISCALL_WRAPPER(basic_ostream_char_seekp, 12)
5510 basic_ostream_char* __thiscall basic_ostream_char_seekp(basic_ostream_char *this, streamoff off, int way)
5512 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5514 TRACE("(%p %ld %d)\n", this, off, way);
5516 if(!ios_base_fail(&base->base)) {
5517 fpos_int seek;
5519 basic_streambuf_char_pubseekoff(basic_ios_char_rdbuf_get(base),
5520 &seek, off, way, OPENMODE_out);
5521 if(seek.off==0 && seek.pos==-1 && seek.state==0)
5522 basic_ios_char_setstate(base, IOSTATE_failbit);
5524 return this;
5527 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
5528 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
5529 DEFINE_THISCALL_WRAPPER(basic_ostream_char_seekp_fpos, 28)
5530 basic_ostream_char* __thiscall basic_ostream_char_seekp_fpos(basic_ostream_char *this, fpos_int pos)
5532 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5534 TRACE("(%p %s)\n", this, debugstr_fpos_int(&pos));
5536 if(!ios_base_fail(&base->base)) {
5537 fpos_int seek;
5539 basic_streambuf_char_pubseekpos(basic_ios_char_rdbuf_get(base),
5540 &seek, pos, OPENMODE_out);
5541 if(seek.off==0 && seek.pos==-1 && seek.state==0)
5542 basic_ios_char_setstate(base, IOSTATE_failbit);
5544 return this;
5547 /* ?tellp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@XZ */
5548 /* ?tellp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
5549 DEFINE_THISCALL_WRAPPER(basic_ostream_char_tellp, 8)
5550 fpos_int* __thiscall basic_ostream_char_tellp(basic_ostream_char *this, fpos_int *ret)
5552 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5554 TRACE("(%p)\n", this);
5556 if(!ios_base_fail(&base->base)) {
5557 basic_streambuf_char_pubseekoff(basic_ios_char_rdbuf_get(base),
5558 ret, 0, SEEKDIR_cur, OPENMODE_out);
5559 }else {
5560 ret->off = 0;
5561 ret->pos = -1;
5562 ret->state = 0;
5564 return ret;
5567 /* ?write@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@PBDH@Z */
5568 /* ?write@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEBD_J@Z */
5569 DEFINE_THISCALL_WRAPPER(basic_ostream_char_write, 12)
5570 basic_ostream_char* __thiscall basic_ostream_char_write(basic_ostream_char *this, const char *str, streamsize count)
5572 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5574 TRACE("(%p %s %ld)\n", this, debugstr_a(str), count);
5576 if(!basic_ostream_char_sentry_create(this)
5577 || basic_streambuf_char_sputn(base->strbuf, str, count)!=count) {
5578 basic_ostream_char_sentry_destroy(this);
5579 basic_ios_char_setstate(base, IOSTATE_badbit);
5580 return this;
5583 basic_ostream_char_sentry_destroy(this);
5584 return this;
5587 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@F@Z */
5588 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@F@Z */
5589 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_short, 8)
5590 basic_ostream_char* __thiscall basic_ostream_char_print_short(basic_ostream_char *this, short val)
5592 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5593 int state = IOSTATE_goodbit;
5595 TRACE("(%p %d)\n", this, val);
5597 if(basic_ostream_char_sentry_create(this)) {
5598 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5599 const num_put *numput = num_put_char_use_facet(strbuf->loc);
5600 ostreambuf_iterator_char dest = {0, strbuf};
5602 num_put_char_put_long(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base),
5603 (ios_base_flags_get(&base->base) & FMTFLAG_basefield & (FMTFLAG_oct | FMTFLAG_hex))
5604 ? (LONG)((unsigned short)val) : (LONG)val);
5606 basic_ostream_char_sentry_destroy(this);
5608 basic_ios_char_setstate(base, state);
5609 return this;
5612 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@G@Z */
5613 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@G@Z */
5614 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_ushort, 8)
5615 basic_ostream_char* __thiscall basic_ostream_char_print_ushort(basic_ostream_char *this, unsigned short val)
5617 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5618 int state = IOSTATE_goodbit;
5620 TRACE("(%p %u)\n", this, val);
5622 if(basic_ostream_char_sentry_create(this)) {
5623 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5624 const num_put *numput = num_put_char_use_facet(strbuf->loc);
5625 ostreambuf_iterator_char dest = {0, strbuf};
5627 num_put_char_put_ulong(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5629 basic_ostream_char_sentry_destroy(this);
5631 basic_ios_char_setstate(base, state);
5632 return this;
5635 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@H@Z */
5636 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@H@Z */
5637 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@J@Z */
5638 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@J@Z */
5639 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_int, 8)
5640 basic_ostream_char* __thiscall basic_ostream_char_print_int(basic_ostream_char *this, int val)
5642 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5643 int state = IOSTATE_goodbit;
5645 TRACE("(%p %d)\n", this, val);
5647 if(basic_ostream_char_sentry_create(this)) {
5648 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5649 const num_put *numput = num_put_char_use_facet(strbuf->loc);
5650 ostreambuf_iterator_char dest = {0, strbuf};
5652 num_put_char_put_long(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5654 basic_ostream_char_sentry_destroy(this);
5656 basic_ios_char_setstate(base, state);
5657 return this;
5660 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@I@Z */
5661 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@I@Z */
5662 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@K@Z */
5663 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@K@Z */
5664 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_uint, 8)
5665 basic_ostream_char* __thiscall basic_ostream_char_print_uint(basic_ostream_char *this, unsigned int val)
5667 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5668 int state = IOSTATE_goodbit;
5670 TRACE("(%p %u)\n", this, val);
5672 if(basic_ostream_char_sentry_create(this)) {
5673 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5674 const num_put *numput = num_put_char_use_facet(strbuf->loc);
5675 ostreambuf_iterator_char dest = {0, strbuf};
5677 num_put_char_put_ulong(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5679 basic_ostream_char_sentry_destroy(this);
5681 basic_ios_char_setstate(base, state);
5682 return this;
5685 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@M@Z */
5686 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@M@Z */
5687 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_float, 8)
5688 basic_ostream_char* __thiscall basic_ostream_char_print_float(basic_ostream_char *this, float val)
5690 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5691 int state = IOSTATE_goodbit;
5693 TRACE("(%p %f)\n", this, val);
5695 if(basic_ostream_char_sentry_create(this)) {
5696 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5697 const num_put *numput = num_put_char_use_facet(strbuf->loc);
5698 ostreambuf_iterator_char dest = {0, strbuf};
5700 num_put_char_put_double(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5702 basic_ostream_char_sentry_destroy(this);
5704 basic_ios_char_setstate(base, state);
5705 return this;
5708 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@N@Z */
5709 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@N@Z */
5710 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_double, 12)
5711 basic_ostream_char* __thiscall basic_ostream_char_print_double(basic_ostream_char *this, double val)
5713 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5714 int state = IOSTATE_goodbit;
5716 TRACE("(%p %lf)\n", this, val);
5718 if(basic_ostream_char_sentry_create(this)) {
5719 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5720 const num_put *numput = num_put_char_use_facet(strbuf->loc);
5721 ostreambuf_iterator_char dest = {0, strbuf};
5723 num_put_char_put_double(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5725 basic_ostream_char_sentry_destroy(this);
5727 basic_ios_char_setstate(base, state);
5728 return this;
5731 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@O@Z */
5732 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@O@Z */
5733 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_ldouble, 12)
5734 basic_ostream_char* __thiscall basic_ostream_char_print_ldouble(basic_ostream_char *this, double val)
5736 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5737 int state = IOSTATE_goodbit;
5739 TRACE("(%p %lf)\n", this, val);
5741 if(basic_ostream_char_sentry_create(this)) {
5742 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5743 const num_put *numput = num_put_char_use_facet(strbuf->loc);
5744 ostreambuf_iterator_char dest = {0, strbuf};
5746 num_put_char_put_ldouble(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5748 basic_ostream_char_sentry_destroy(this);
5750 basic_ios_char_setstate(base, state);
5751 return this;
5754 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
5755 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
5756 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_streambuf, 8)
5757 basic_ostream_char* __thiscall basic_ostream_char_print_streambuf(basic_ostream_char *this, basic_streambuf_char *val)
5759 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5760 IOSB_iostate state = IOSTATE_badbit;
5761 int c = '\n';
5763 TRACE("(%p %p)\n", this, val);
5765 if(basic_ostream_char_sentry_create(this)) {
5766 for(c = basic_streambuf_char_sgetc(val); c!=EOF;
5767 c = basic_streambuf_char_snextc(val)) {
5768 state = IOSTATE_goodbit;
5770 if(basic_streambuf_char_sputc(base->strbuf, c) == EOF) {
5771 state = IOSTATE_badbit;
5772 break;
5775 }else {
5776 state = IOSTATE_badbit;
5778 basic_ostream_char_sentry_destroy(this);
5780 ios_base_width_set(&base->base, 0);
5781 basic_ios_char_setstate(base, state);
5782 return this;
5785 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@PBX@Z */
5786 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@PEBX@Z */
5787 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_ptr, 8)
5788 basic_ostream_char* __thiscall basic_ostream_char_print_ptr(basic_ostream_char *this, const void *val)
5790 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5791 int state = IOSTATE_goodbit;
5793 TRACE("(%p %p)\n", this, val);
5795 if(basic_ostream_char_sentry_create(this)) {
5796 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5797 const num_put *numput = num_put_char_use_facet(strbuf->loc);
5798 ostreambuf_iterator_char dest = {0, strbuf};
5800 num_put_char_put_ptr(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5802 basic_ostream_char_sentry_destroy(this);
5804 basic_ios_char_setstate(base, state);
5805 return this;
5808 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@_J@Z */
5809 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@_J@Z */
5810 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_int64, 12)
5811 basic_ostream_char* __thiscall basic_ostream_char_print_int64(basic_ostream_char *this, __int64 val)
5813 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5814 int state = IOSTATE_goodbit;
5816 TRACE("(%p)\n", this);
5818 if(basic_ostream_char_sentry_create(this)) {
5819 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5820 const num_put *numput = num_put_char_use_facet(strbuf->loc);
5821 ostreambuf_iterator_char dest = {0, strbuf};
5823 num_put_char_put_int64(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5825 basic_ostream_char_sentry_destroy(this);
5827 basic_ios_char_setstate(base, state);
5828 return this;
5831 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@_K@Z */
5832 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@_K@Z */
5833 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_uint64, 12)
5834 basic_ostream_char* __thiscall basic_ostream_char_print_uint64(basic_ostream_char *this, unsigned __int64 val)
5836 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5837 int state = IOSTATE_goodbit;
5839 TRACE("(%p)\n", this);
5841 if(basic_ostream_char_sentry_create(this)) {
5842 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5843 const num_put *numput = num_put_char_use_facet(strbuf->loc);
5844 ostreambuf_iterator_char dest = {0, strbuf};
5846 num_put_char_put_uint64(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5848 basic_ostream_char_sentry_destroy(this);
5850 basic_ios_char_setstate(base, state);
5851 return this;
5854 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@_N@Z */
5855 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@_N@Z */
5856 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_bool, 8)
5857 basic_ostream_char* __thiscall basic_ostream_char_print_bool(basic_ostream_char *this, MSVCP_bool val)
5859 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5860 int state = IOSTATE_goodbit;
5862 TRACE("(%p %x)\n", this, val);
5864 if(basic_ostream_char_sentry_create(this)) {
5865 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5866 const num_put *numput = num_put_char_use_facet(strbuf->loc);
5867 ostreambuf_iterator_char dest = {0, strbuf};
5869 num_put_char_put_bool(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5871 basic_ostream_char_sentry_destroy(this);
5873 basic_ios_char_setstate(base, state);
5874 return this;
5877 /* ?endl@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@@Z */
5878 /* ?endl@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@1@AEAV21@@Z */
5879 basic_ostream_char* __cdecl basic_ostream_char_endl(basic_ostream_char *ostr)
5881 TRACE("(%p)\n", ostr);
5883 basic_ostream_char_put(ostr, '\n');
5884 basic_ostream_char_flush(ostr);
5885 return ostr;
5888 /* $?6DU?$char_traits@D@std@@V?$allocator@D@1@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
5889 /* ??$?6DU?$char_traits@D@std@@V?$allocator@D@1@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
5890 basic_ostream_char* __cdecl basic_ostream_char_print_bstr(basic_ostream_char *ostr, const basic_string_char *str)
5892 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
5893 IOSB_iostate state = IOSTATE_goodbit;
5895 TRACE("(%p %p)\n", ostr, str);
5897 if(basic_ostream_char_sentry_create(ostr)) {
5898 MSVCP_size_t len = MSVCP_basic_string_char_length(str);
5899 streamsize pad = (base->base.wide>len ? base->base.wide-len : 0);
5901 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
5902 for(; pad!=0; pad--) {
5903 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
5904 state = IOSTATE_badbit;
5905 break;
5910 if(state == IOSTATE_goodbit) {
5911 if(basic_streambuf_char_sputn(base->strbuf, MSVCP_basic_string_char_c_str(str), len) != len)
5912 state = IOSTATE_badbit;
5915 if(state == IOSTATE_goodbit) {
5916 for(; pad!=0; pad--) {
5917 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
5918 state = IOSTATE_badbit;
5919 break;
5924 base->base.wide = 0;
5925 }else {
5926 state = IOSTATE_badbit;
5928 basic_ostream_char_sentry_destroy(ostr);
5930 basic_ios_char_setstate(base, state);
5931 return ostr;
5934 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@C@Z */
5935 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@C@Z */
5936 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@D@Z */
5937 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z */
5938 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@E@Z */
5939 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@E@Z */
5940 basic_ostream_char* __cdecl basic_ostream_char_print_ch(basic_ostream_char *ostr, char ch)
5942 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
5943 IOSB_iostate state = IOSTATE_goodbit;
5945 TRACE("(%p %d)\n", ostr, ch);
5947 if(basic_ostream_char_sentry_create(ostr)) {
5948 streamsize pad = (base->base.wide>1 ? base->base.wide-1 : 0);
5950 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
5951 for(; pad!=0; pad--) {
5952 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
5953 state = IOSTATE_badbit;
5954 break;
5959 if(state == IOSTATE_goodbit) {
5960 if(basic_streambuf_char_sputc(base->strbuf, ch) == EOF)
5961 state = IOSTATE_badbit;
5964 if(state == IOSTATE_goodbit) {
5965 for(; pad!=0; pad--) {
5966 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
5967 state = IOSTATE_badbit;
5968 break;
5973 base->base.wide = 0;
5974 }else {
5975 state = IOSTATE_badbit;
5977 basic_ostream_char_sentry_destroy(ostr);
5979 basic_ios_char_setstate(base, state);
5980 return ostr;
5983 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBC@Z */
5984 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBC@Z */
5985 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBD@Z */
5986 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBD@Z */
5987 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBE@Z */
5988 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBE@Z */
5989 basic_ostream_char* __cdecl basic_ostream_char_print_str(basic_ostream_char *ostr, const char *str)
5991 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
5992 IOSB_iostate state = IOSTATE_goodbit;
5994 TRACE("(%p %s)\n", ostr, str);
5996 if(basic_ostream_char_sentry_create(ostr)) {
5997 MSVCP_size_t len = strlen(str);
5998 streamsize pad = (base->base.wide>len ? base->base.wide-len : 0);
6000 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
6001 for(; pad!=0; pad--) {
6002 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
6003 state = IOSTATE_badbit;
6004 break;
6009 if(state == IOSTATE_goodbit) {
6010 if(basic_streambuf_char_sputn(base->strbuf, str, len) != len)
6011 state = IOSTATE_badbit;
6014 if(state == IOSTATE_goodbit) {
6015 for(; pad!=0; pad--) {
6016 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
6017 state = IOSTATE_badbit;
6018 break;
6023 base->base.wide = 0;
6024 }else {
6025 state = IOSTATE_badbit;
6027 basic_ostream_char_sentry_destroy(ostr);
6029 basic_ios_char_setstate(base, state);
6030 return ostr;
6033 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
6034 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
6035 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_func, 8)
6036 basic_ostream_char* __thiscall basic_ostream_char_print_func(basic_ostream_char *this,
6037 basic_ostream_char* (__cdecl *pfunc)(basic_ostream_char*))
6039 TRACE("(%p %p)\n", this, pfunc);
6040 pfunc(this);
6041 return this;
6044 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@DU?$char_traits@D@std@@@1@AAV21@@Z@Z */
6045 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@DU?$char_traits@D@std@@@1@AEAV21@@Z@Z */
6046 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_func_basic_ios, 8)
6047 basic_ostream_char* __thiscall basic_ostream_char_print_func_basic_ios(basic_ostream_char *this,
6048 basic_ios_char* (__cdecl *pfunc)(basic_ios_char*))
6050 TRACE("(%p %p)\n", this, pfunc);
6051 pfunc(basic_ostream_char_get_basic_ios(this));
6052 return this;
6055 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
6056 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
6057 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_func_ios_base, 8)
6058 basic_ostream_char* __thiscall basic_ostream_char_print_func_ios_base(
6059 basic_ostream_char *this, ios_base* (__cdecl *pfunc)(ios_base*))
6061 TRACE("(%p %p)\n", this, pfunc);
6062 pfunc(&basic_ostream_char_get_basic_ios(this)->base);
6063 return this;
6066 /* Caution: basic_ostream uses virtual inheritance. */
6067 static inline basic_ios_wchar* basic_ostream_wchar_get_basic_ios(basic_ostream_wchar *this)
6069 return (basic_ios_wchar*)((char*)this+this->vbtable[1]);
6072 static inline basic_ios_wchar* basic_ostream_wchar_to_basic_ios(basic_ostream_wchar *ptr)
6074 return (basic_ios_wchar*)((char*)ptr+basic_ostream_wchar_vbtable[1]);
6077 static inline basic_ostream_wchar* basic_ostream_wchar_from_basic_ios(basic_ios_wchar *ptr)
6079 return (basic_ostream_wchar*)((char*)ptr-basic_ostream_wchar_vbtable[1]);
6082 /* ??0?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z */
6083 /* ??0?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z */
6084 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_ctor, 16)
6085 basic_ostream_wchar* __thiscall basic_ostream_wchar_ctor(basic_ostream_wchar *this,
6086 basic_streambuf_wchar *strbuf, MSVCP_bool isstd, MSVCP_bool virt_init)
6088 basic_ios_wchar *base;
6090 TRACE("(%p %p %d %d)\n", this, strbuf, isstd, virt_init);
6092 if(virt_init) {
6093 this->vbtable = basic_ostream_wchar_vbtable;
6094 base = basic_ostream_wchar_get_basic_ios(this);
6095 basic_ios_wchar_ctor(base);
6096 }else {
6097 base = basic_ostream_wchar_get_basic_ios(this);
6100 base->base.vtable = &MSVCP_basic_ostream_wchar_vtable;
6101 basic_ios_wchar_init(base, strbuf, isstd);
6102 return this;
6105 /* ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N@Z */
6106 /* ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N@Z */
6107 DEFINE_THISCALL_WRAPPER(basic_ostream_short_ctor, 16)
6108 basic_ostream_wchar* __thiscall basic_ostream_short_ctor(basic_ostream_wchar *this,
6109 basic_streambuf_wchar *strbuf, MSVCP_bool isstd, MSVCP_bool virt_init)
6111 basic_ostream_wchar_ctor(this, strbuf, isstd, virt_init);
6112 basic_ostream_wchar_get_basic_ios(this)->base.vtable = &MSVCP_basic_ostream_short_vtable;
6113 return this;
6116 /* ??0?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAE@W4_Uninitialized@1@_N@Z */
6117 /* ??0?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAA@W4_Uninitialized@1@_N@Z */
6118 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_ctor_uninitialized, 16)
6119 basic_ostream_wchar* __thiscall basic_ostream_wchar_ctor_uninitialized(basic_ostream_wchar *this,
6120 int uninitialized, MSVCP_bool addstd, MSVCP_bool virt_init)
6122 basic_ios_wchar *base;
6124 TRACE("(%p %d %x)\n", this, uninitialized, addstd);
6126 if(virt_init) {
6127 this->vbtable = basic_ostream_wchar_vbtable;
6128 base = basic_ostream_wchar_get_basic_ios(this);
6129 basic_ios_wchar_ctor(base);
6130 }else {
6131 base = basic_ostream_wchar_get_basic_ios(this);
6134 base->base.vtable = &MSVCP_basic_ostream_wchar_vtable;
6135 if(addstd)
6136 ios_base_Addstd(&base->base);
6137 return this;
6140 /* ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE@W4_Uninitialized@1@_N@Z */
6141 /* ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA@W4_Uninitialized@1@_N@Z */
6142 DEFINE_THISCALL_WRAPPER(basic_ostream_short_ctor_uninitialized, 16)
6143 basic_ostream_wchar* __thiscall basic_ostream_short_ctor_uninitialized(basic_ostream_wchar *this,
6144 int uninitialized, MSVCP_bool addstd, MSVCP_bool virt_init)
6146 basic_ostream_wchar_ctor_uninitialized(this, uninitialized, addstd, virt_init);
6147 basic_ostream_wchar_get_basic_ios(this)->base.vtable = &MSVCP_basic_ostream_short_vtable;
6148 return this;
6151 /* ??1?$basic_ostream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
6152 /* ??1?$basic_ostream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
6153 /* ??1?$basic_ostream@GU?$char_traits@G@std@@@std@@UAE@XZ */
6154 /* ??1?$basic_ostream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
6155 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_dtor, 4)
6156 void __thiscall basic_ostream_wchar_dtor(basic_ios_wchar *base)
6158 basic_ostream_wchar *this = basic_ostream_wchar_from_basic_ios(base);
6160 /* don't destroy virtual base here */
6161 TRACE("(%p)\n", this);
6164 /* ??_D?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
6165 /* ??_D?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
6166 /* ??_D?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEXXZ */
6167 /* ??_D?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
6168 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_vbase_dtor, 4)
6169 void __thiscall basic_ostream_wchar_vbase_dtor(basic_ostream_wchar *this)
6171 TRACE("(%p)\n", this);
6172 basic_ostream_wchar_dtor(basic_ostream_wchar_to_basic_ios(this));
6173 basic_ios_wchar_dtor(basic_ostream_wchar_get_basic_ios(this));
6176 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ostream_wchar_vector_dtor, 8)
6177 basic_ostream_wchar* __thiscall MSVCP_basic_ostream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
6179 basic_ostream_wchar *this = basic_ostream_wchar_from_basic_ios(base);
6181 TRACE("(%p %x)\n", this, flags);
6183 if(flags & 2) {
6184 /* we have an array, with the number of elements stored before the first object */
6185 int i, *ptr = (int *)this-1;
6187 for(i=*ptr-1; i>=0; i--)
6188 basic_ostream_wchar_vbase_dtor(this+i);
6189 MSVCRT_operator_delete(ptr);
6190 } else {
6191 basic_ostream_wchar_vbase_dtor(this);
6192 if(flags & 1)
6193 MSVCRT_operator_delete(this);
6196 return this;
6199 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ostream_short_vector_dtor, 8)
6200 basic_ostream_wchar* __thiscall MSVCP_basic_ostream_short_vector_dtor(basic_ios_wchar *base, unsigned int flags)
6202 return MSVCP_basic_ostream_wchar_vector_dtor(base, flags);
6205 /* ?flush@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@XZ */
6206 /* ?flush@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@XZ */
6207 /* ?flush@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@XZ */
6208 /* ?flush@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@XZ */
6209 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_flush, 4)
6210 basic_ostream_wchar* __thiscall basic_ostream_wchar_flush(basic_ostream_wchar *this)
6212 /* this function is not matching C++ specification */
6213 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6215 TRACE("(%p)\n", this);
6217 if(basic_ios_wchar_rdbuf_get(base) && ios_base_good(&base->base)
6218 && basic_streambuf_wchar_pubsync(basic_ios_wchar_rdbuf_get(base))==-1)
6219 basic_ios_wchar_setstate(base, IOSTATE_badbit);
6220 return this;
6223 /* ?_Osfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
6224 /* ?_Osfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
6225 /* ?_Osfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEXXZ */
6226 /* ?_Osfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
6227 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar__Osfx, 4)
6228 void __thiscall basic_ostream_wchar__Osfx(basic_ostream_wchar *this)
6230 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6232 TRACE("(%p)\n", this);
6234 if(base->base.fmtfl & FMTFLAG_unitbuf)
6235 basic_ostream_wchar_flush(this);
6238 /* ?osfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
6239 /* ?osfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
6240 /* ?osfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEXXZ */
6241 /* ?osfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
6242 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_osfx, 4)
6243 void __thiscall basic_ostream_wchar_osfx(basic_ostream_wchar *this)
6245 TRACE("(%p)\n", this);
6246 basic_ostream_wchar__Osfx(this);
6249 static BOOL basic_ostream_wchar_sentry_create(basic_ostream_wchar *ostr)
6251 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(ostr);
6253 if(basic_ios_wchar_rdbuf_get(base))
6254 basic_streambuf_wchar__Lock(base->strbuf);
6256 if(ios_base_good(&base->base) && base->stream)
6257 basic_ostream_wchar_flush(base->stream);
6259 return ios_base_good(&base->base);
6262 static void basic_ostream_wchar_sentry_destroy(basic_ostream_wchar *ostr)
6264 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(ostr);
6266 if(ios_base_good(&base->base) && !__uncaught_exception())
6267 basic_ostream_wchar_osfx(ostr);
6269 if(basic_ios_wchar_rdbuf_get(base))
6270 basic_streambuf_wchar__Unlock(base->strbuf);
6273 /* ?opfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAE_NXZ */
6274 /* ?opfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAA_NXZ */
6275 /* ?opfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE_NXZ */
6276 /* ?opfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA_NXZ */
6277 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_opfx, 4)
6278 MSVCP_bool __thiscall basic_ostream_wchar_opfx(basic_ostream_wchar *this)
6280 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6282 TRACE("(%p)\n", this);
6284 if(ios_base_good(&base->base) && base->stream)
6285 basic_ostream_wchar_flush(base->stream);
6286 return ios_base_good(&base->base);
6289 /* ?put@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@_W@Z */
6290 /* ?put@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_W@Z */
6291 /* ?put@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@G@Z */
6292 /* ?put@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@G@Z */
6293 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_put, 8)
6294 basic_ostream_wchar* __thiscall basic_ostream_wchar_put(basic_ostream_wchar *this, wchar_t ch)
6296 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6298 TRACE("(%p %c)\n", this, ch);
6300 if(!basic_ostream_wchar_sentry_create(this)
6301 || basic_streambuf_wchar_sputc(base->strbuf, ch)==WEOF) {
6302 basic_ostream_wchar_sentry_destroy(this);
6303 basic_ios_wchar_setstate(base, IOSTATE_badbit);
6304 return this;
6307 basic_ostream_wchar_sentry_destroy(this);
6308 return this;
6311 /* ?seekp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@JH@Z */
6312 /* ?seekp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_JH@Z */
6313 /* ?seekp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@JH@Z */
6314 /* ?seekp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@_JH@Z */
6315 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_seekp, 12)
6316 basic_ostream_wchar* __thiscall basic_ostream_wchar_seekp(basic_ostream_wchar *this, streamoff off, int way)
6318 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6320 TRACE("(%p %ld %d)\n", this, off, way);
6322 if(!ios_base_fail(&base->base)) {
6323 fpos_int seek;
6325 basic_streambuf_wchar_pubseekoff(basic_ios_wchar_rdbuf_get(base),
6326 &seek, off, way, OPENMODE_out);
6327 if(seek.off==0 && seek.pos==-1 && seek.state==0)
6328 basic_ios_wchar_setstate(base, IOSTATE_failbit);
6330 return this;
6333 /* ?seekp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
6334 /* ?seekp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
6335 /* ?seekp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
6336 /* ?seekp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
6337 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_seekp_fpos, 28)
6338 basic_ostream_wchar* __thiscall basic_ostream_wchar_seekp_fpos(basic_ostream_wchar *this, fpos_int pos)
6340 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6342 TRACE("(%p %s)\n", this, debugstr_fpos_int(&pos));
6344 if(!ios_base_fail(&base->base)) {
6345 fpos_int seek;
6347 basic_streambuf_wchar_pubseekpos(basic_ios_wchar_rdbuf_get(base),
6348 &seek, pos, OPENMODE_out);
6349 if(seek.off==0 && seek.pos==-1 && seek.state==0)
6350 basic_ios_wchar_setstate(base, IOSTATE_failbit);
6352 return this;
6355 /* ?tellp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@XZ */
6356 /* ?tellp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
6357 /* ?tellp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@XZ */
6358 /* ?tellp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
6359 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_tellp, 8)
6360 fpos_int* __thiscall basic_ostream_wchar_tellp(basic_ostream_wchar *this, fpos_int *ret)
6362 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6364 TRACE("(%p)\n", this);
6366 if(!ios_base_fail(&base->base)) {
6367 basic_streambuf_wchar_pubseekoff(basic_ios_wchar_rdbuf_get(base),
6368 ret, 0, SEEKDIR_cur, OPENMODE_out);
6369 }else {
6370 ret->off = 0;
6371 ret->pos = -1;
6372 ret->state = 0;
6374 return ret;
6377 /* ?write@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PB_WH@Z */
6378 /* ?write@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEB_W_J@Z */
6379 /* ?write@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@PBGH@Z */
6380 /* ?write@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEBG_J@Z */
6381 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_write, 12)
6382 basic_ostream_wchar* __thiscall basic_ostream_wchar_write(basic_ostream_wchar *this, const wchar_t *str, streamsize count)
6384 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6386 TRACE("(%p %s %ld)\n", this, debugstr_w(str), count);
6388 if(!basic_ostream_wchar_sentry_create(this)
6389 || basic_streambuf_wchar_sputn(base->strbuf, str, count)!=count) {
6390 basic_ostream_wchar_sentry_destroy(this);
6391 basic_ios_wchar_setstate(base, IOSTATE_badbit);
6392 return this;
6395 basic_ostream_wchar_sentry_destroy(this);
6396 return this;
6399 static basic_ostream_wchar* basic_ostream_print_short(basic_ostream_wchar *this, short val, const num_put *numput)
6401 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6402 int state = IOSTATE_goodbit;
6404 TRACE("(%p %d)\n", this, val);
6406 if(basic_ostream_wchar_sentry_create(this)) {
6407 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6408 ostreambuf_iterator_wchar dest = {0, strbuf};
6410 num_put_wchar_put_long(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base),
6411 (ios_base_flags_get(&base->base) & FMTFLAG_basefield & (FMTFLAG_oct | FMTFLAG_hex))
6412 ? (LONG)((unsigned short)val) : (LONG)val);
6414 basic_ostream_wchar_sentry_destroy(this);
6416 basic_ios_wchar_setstate(base, state);
6417 return this;
6420 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@F@Z */
6421 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@F@Z */
6422 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_short, 8)
6423 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_short(basic_ostream_wchar *this, short val)
6425 return basic_ostream_print_short(this, val, num_put_wchar_use_facet(
6426 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6429 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@F@Z */
6430 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@F@Z */
6431 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_short, 8)
6432 basic_ostream_wchar* __thiscall basic_ostream_short_print_short(basic_ostream_wchar *this, short val)
6434 return basic_ostream_print_short(this, val, num_put_short_use_facet(
6435 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6438 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@G@Z */
6439 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@G@Z */
6440 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_ushort, 8)
6441 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_ushort(basic_ostream_wchar *this, unsigned short val)
6443 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6444 int state = IOSTATE_goodbit;
6446 TRACE("(%p %u)\n", this, val);
6448 if(basic_ostream_wchar_sentry_create(this)) {
6449 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6450 const num_put *numput = num_put_wchar_use_facet(strbuf->loc);
6451 ostreambuf_iterator_wchar dest = {0, strbuf};
6453 num_put_wchar_put_ulong(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
6455 basic_ostream_wchar_sentry_destroy(this);
6457 basic_ios_wchar_setstate(base, state);
6458 return this;
6461 static basic_ostream_wchar* basic_ostream_print_int(basic_ostream_wchar *this, int val, const num_put *numput)
6463 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6464 int state = IOSTATE_goodbit;
6466 TRACE("(%p %d)\n", this, val);
6468 if(basic_ostream_wchar_sentry_create(this)) {
6469 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6470 ostreambuf_iterator_wchar dest = {0, strbuf};
6472 num_put_wchar_put_long(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
6474 basic_ostream_wchar_sentry_destroy(this);
6476 basic_ios_wchar_setstate(base, state);
6477 return this;
6480 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@H@Z */
6481 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@H@Z */
6482 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@J@Z */
6483 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@J@Z */
6484 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_int, 8)
6485 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_int(basic_ostream_wchar *this, int val)
6487 return basic_ostream_print_int(this, val, num_put_wchar_use_facet(
6488 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6491 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@H@Z */
6492 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@H@Z */
6493 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@J@Z */
6494 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@J@Z */
6495 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_int, 8)
6496 basic_ostream_wchar* __thiscall basic_ostream_short_print_int(basic_ostream_wchar *this, int val)
6498 return basic_ostream_print_int(this, val, num_put_short_use_facet(
6499 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6502 static basic_ostream_wchar* basic_ostream_print_uint(basic_ostream_wchar *this, unsigned int val, const num_put *numput)
6504 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6505 int state = IOSTATE_goodbit;
6507 TRACE("(%p %u)\n", this, val);
6509 if(basic_ostream_wchar_sentry_create(this)) {
6510 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6511 ostreambuf_iterator_wchar dest = {0, strbuf};
6513 num_put_wchar_put_ulong(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
6515 basic_ostream_wchar_sentry_destroy(this);
6517 basic_ios_wchar_setstate(base, state);
6518 return this;
6521 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@I@Z */
6522 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@I@Z */
6523 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@K@Z */
6524 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@K@Z */
6525 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_uint, 8)
6526 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_uint(basic_ostream_wchar *this, unsigned int val)
6528 return basic_ostream_print_uint(this, val, num_put_wchar_use_facet(
6529 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6532 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@I@Z */
6533 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@I@Z */
6534 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@K@Z */
6535 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@K@Z */
6536 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_uint, 8)
6537 basic_ostream_wchar* __thiscall basic_ostream_short_print_uint(basic_ostream_wchar *this, unsigned int val)
6539 return basic_ostream_print_uint(this, val, num_put_short_use_facet(
6540 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6543 static basic_ostream_wchar* basic_ostream_print_float(basic_ostream_wchar *this, float val, const num_put *numput)
6545 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6546 int state = IOSTATE_goodbit;
6548 TRACE("(%p %f)\n", this, val);
6550 if(basic_ostream_wchar_sentry_create(this)) {
6551 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6552 ostreambuf_iterator_wchar dest = {0, strbuf};
6554 num_put_wchar_put_double(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
6556 basic_ostream_wchar_sentry_destroy(this);
6558 basic_ios_wchar_setstate(base, state);
6559 return this;
6562 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@M@Z */
6563 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@M@Z */
6564 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_float, 8)
6565 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_float(basic_ostream_wchar *this, float val)
6567 return basic_ostream_print_float(this, val, num_put_wchar_use_facet(
6568 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6571 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@M@Z */
6572 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@M@Z */
6573 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_float, 8)
6574 basic_ostream_wchar* __thiscall basic_ostream_short_print_float(basic_ostream_wchar *this, float val)
6576 return basic_ostream_print_float(this, val, num_put_short_use_facet(
6577 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6580 static basic_ostream_wchar* basic_ostream_print_double(basic_ostream_wchar *this, double val, const num_put *numput)
6582 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6583 int state = IOSTATE_goodbit;
6585 TRACE("(%p %lf)\n", this, val);
6587 if(basic_ostream_wchar_sentry_create(this)) {
6588 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6589 ostreambuf_iterator_wchar dest = {0, strbuf};
6591 num_put_wchar_put_double(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
6593 basic_ostream_wchar_sentry_destroy(this);
6595 basic_ios_wchar_setstate(base, state);
6596 return this;
6599 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@N@Z */
6600 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@N@Z */
6601 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_double, 12)
6602 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_double(basic_ostream_wchar *this, double val)
6604 return basic_ostream_print_double(this, val, num_put_wchar_use_facet(
6605 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6608 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@N@Z */
6609 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@N@Z */
6610 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_double, 12)
6611 basic_ostream_wchar* __thiscall basic_ostream_short_print_double(basic_ostream_wchar *this, double val)
6613 return basic_ostream_print_double(this, val, num_put_short_use_facet(
6614 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6617 static basic_ostream_wchar* basic_ostream_print_ldouble(basic_ostream_wchar *this, double val, const num_put *numput)
6619 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6620 int state = IOSTATE_goodbit;
6622 TRACE("(%p %lf)\n", this, val);
6624 if(basic_ostream_wchar_sentry_create(this)) {
6625 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6626 ostreambuf_iterator_wchar dest = {0, strbuf};
6628 num_put_wchar_put_ldouble(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
6630 basic_ostream_wchar_sentry_destroy(this);
6632 basic_ios_wchar_setstate(base, state);
6633 return this;
6636 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@O@Z */
6637 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@O@Z */
6638 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_ldouble, 12)
6639 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_ldouble(basic_ostream_wchar *this, double val)
6641 return basic_ostream_print_ldouble(this, val, num_put_wchar_use_facet(
6642 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6645 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@O@Z */
6646 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@O@Z */
6647 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_ldouble, 12)
6648 basic_ostream_wchar* __thiscall basic_ostream_short_print_ldouble(basic_ostream_wchar *this, double val)
6650 return basic_ostream_print_ldouble(this, val, num_put_short_use_facet(
6651 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6654 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
6655 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
6656 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
6657 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
6658 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_streambuf, 8)
6659 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_streambuf(basic_ostream_wchar *this, basic_streambuf_wchar *val)
6661 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6662 IOSB_iostate state = IOSTATE_badbit;
6663 unsigned short c = '\n';
6665 TRACE("(%p %p)\n", this, val);
6667 if(basic_ostream_wchar_sentry_create(this)) {
6668 for(c = basic_streambuf_wchar_sgetc(val); c!=WEOF;
6669 c = basic_streambuf_wchar_snextc(val)) {
6670 state = IOSTATE_goodbit;
6672 if(basic_streambuf_wchar_sputc(base->strbuf, c) == WEOF) {
6673 state = IOSTATE_badbit;
6674 break;
6677 }else {
6678 state = IOSTATE_badbit;
6680 basic_ostream_wchar_sentry_destroy(this);
6682 ios_base_width_set(&base->base, 0);
6683 basic_ios_wchar_setstate(base, state);
6684 return this;
6687 static basic_ostream_wchar* basic_ostream_print_ptr(basic_ostream_wchar *this, const void *val, const num_put *numput)
6689 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6690 int state = IOSTATE_goodbit;
6692 TRACE("(%p %p)\n", this, val);
6694 if(basic_ostream_wchar_sentry_create(this)) {
6695 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6696 ostreambuf_iterator_wchar dest = {0, strbuf};
6698 num_put_wchar_put_ptr(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
6700 basic_ostream_wchar_sentry_destroy(this);
6702 basic_ios_wchar_setstate(base, state);
6703 return this;
6706 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@PBX@Z */
6707 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@PEBX@Z */
6708 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_ptr, 8)
6709 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_ptr(basic_ostream_wchar *this, const void *val)
6711 return basic_ostream_print_ptr(this, val, num_put_wchar_use_facet(
6712 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6715 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@PBX@Z */
6716 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@PEBX@Z */
6717 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_ptr, 8)
6718 basic_ostream_wchar* __thiscall basic_ostream_short_print_ptr(basic_ostream_wchar *this, const void *val)
6720 return basic_ostream_print_ptr(this, val, num_put_short_use_facet(
6721 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6724 static basic_ostream_wchar* basic_ostream_print_int64(basic_ostream_wchar *this, __int64 val, const num_put *numput)
6726 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6727 int state = IOSTATE_goodbit;
6729 TRACE("(%p)\n", this);
6731 if(basic_ostream_wchar_sentry_create(this)) {
6732 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6733 ostreambuf_iterator_wchar dest = {0, strbuf};
6735 num_put_wchar_put_int64(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
6737 basic_ostream_wchar_sentry_destroy(this);
6739 basic_ios_wchar_setstate(base, state);
6740 return this;
6743 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@_J@Z */
6744 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@_J@Z */
6745 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_int64, 12)
6746 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_int64(basic_ostream_wchar *this, __int64 val)
6748 return basic_ostream_print_int64(this, val, num_put_wchar_use_facet(
6749 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6752 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@_J@Z */
6753 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@_J@Z */
6754 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_int64, 12)
6755 basic_ostream_wchar* __thiscall basic_ostream_short_print_int64(basic_ostream_wchar *this, __int64 val)
6757 return basic_ostream_print_int64(this, val, num_put_short_use_facet(
6758 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6761 static basic_ostream_wchar* basic_ostream_print_uint64(basic_ostream_wchar *this, unsigned __int64 val, const num_put *numput)
6763 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6764 int state = IOSTATE_goodbit;
6766 TRACE("(%p)\n", this);
6768 if(basic_ostream_wchar_sentry_create(this)) {
6769 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6770 ostreambuf_iterator_wchar dest = {0, strbuf};
6772 num_put_wchar_put_uint64(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
6774 basic_ostream_wchar_sentry_destroy(this);
6776 basic_ios_wchar_setstate(base, state);
6777 return this;
6780 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@_K@Z */
6781 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@_K@Z */
6782 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_uint64, 12)
6783 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_uint64(basic_ostream_wchar *this, unsigned __int64 val)
6785 return basic_ostream_print_uint64(this, val, num_put_wchar_use_facet(
6786 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6789 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@_K@Z */
6790 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@_K@Z */
6791 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_uint64, 12)
6792 basic_ostream_wchar* __thiscall basic_ostream_short_print_uint64(basic_ostream_wchar *this, unsigned __int64 val)
6794 return basic_ostream_print_uint64(this, val, num_put_short_use_facet(
6795 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6798 static basic_ostream_wchar* basic_ostream_print_bool(basic_ostream_wchar *this, MSVCP_bool val, const num_put *numput)
6800 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6801 int state = IOSTATE_goodbit;
6803 TRACE("(%p %x)\n", this, val);
6805 if(basic_ostream_wchar_sentry_create(this)) {
6806 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6807 ostreambuf_iterator_wchar dest = {0, strbuf};
6809 num_put_wchar_put_bool(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
6811 basic_ostream_wchar_sentry_destroy(this);
6813 basic_ios_wchar_setstate(base, state);
6814 return this;
6817 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@_N@Z */
6818 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@_N@Z */
6819 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_bool, 8)
6820 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_bool(basic_ostream_wchar *this, MSVCP_bool val)
6822 return basic_ostream_print_bool(this, val, num_put_wchar_use_facet(
6823 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6826 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@_N@Z */
6827 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@_N@Z */
6828 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_bool, 8)
6829 basic_ostream_wchar* __thiscall basic_ostream_short_print_bool(basic_ostream_wchar *this, MSVCP_bool val)
6831 return basic_ostream_print_bool(this, val, num_put_short_use_facet(
6832 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6835 /* ?endl@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@AAV21@@Z */
6836 /* ?endl@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@AEAV21@@Z */
6837 /* ?endl@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@1@AAV21@@Z */
6838 /* ?endl@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@1@AEAV21@@Z */
6839 basic_ostream_wchar* __cdecl basic_ostream_wchar_endl(basic_ostream_wchar *ostr)
6841 TRACE("(%p)\n", ostr);
6843 basic_ostream_wchar_put(ostr, '\n');
6844 basic_ostream_wchar_flush(ostr);
6845 return ostr;
6848 /* ??$?6_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AAV10@ABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z */
6849 /* ??$?6_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AEAV10@AEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z */
6850 /* ??$?6GU?$char_traits@G@std@@V?$allocator@G@1@@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@0@AAV10@ABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
6851 /* ??$?6GU?$char_traits@G@std@@V?$allocator@G@1@@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@0@AEAV10@AEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
6852 basic_ostream_wchar* __cdecl basic_ostream_wchar_print_bstr(basic_ostream_wchar *ostr, const basic_string_wchar *str)
6854 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(ostr);
6855 IOSB_iostate state = IOSTATE_goodbit;
6857 TRACE("(%p %p)\n", ostr, str);
6859 if(basic_ostream_wchar_sentry_create(ostr)) {
6860 MSVCP_size_t len = MSVCP_basic_string_wchar_length(str);
6861 streamsize pad = (base->base.wide>len ? base->base.wide-len : 0);
6863 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
6864 for(; pad!=0; pad--) {
6865 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
6866 state = IOSTATE_badbit;
6867 break;
6872 if(state == IOSTATE_goodbit) {
6873 if(basic_streambuf_wchar_sputn(base->strbuf, MSVCP_basic_string_wchar_c_str(str), len) != len)
6874 state = IOSTATE_badbit;
6877 if(state == IOSTATE_goodbit) {
6878 for(; pad!=0; pad--) {
6879 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
6880 state = IOSTATE_badbit;
6881 break;
6886 base->base.wide = 0;
6887 }else {
6888 state = IOSTATE_badbit;
6890 basic_ostream_wchar_sentry_destroy(ostr);
6892 basic_ios_wchar_setstate(base, state);
6893 return ostr;
6896 /* ??$?6_WU?$char_traits@_W@std@@@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AAV10@_W@Z */
6897 /* ??$?6_WU?$char_traits@_W@std@@@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AEAV10@_W@Z */
6898 /* ??$?6GU?$char_traits@G@std@@@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@0@AAV10@G@Z */
6899 /* ??$?6GU?$char_traits@G@std@@@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@0@AEAV10@G@Z */
6900 basic_ostream_wchar* __cdecl basic_ostream_wchar_print_ch(basic_ostream_wchar *ostr, wchar_t ch)
6902 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(ostr);
6903 IOSB_iostate state = IOSTATE_goodbit;
6905 TRACE("(%p %d)\n", ostr, ch);
6907 if(basic_ostream_wchar_sentry_create(ostr)) {
6908 streamsize pad = (base->base.wide>1 ? base->base.wide-1 : 0);
6910 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
6911 for(; pad!=0; pad--) {
6912 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
6913 state = IOSTATE_badbit;
6914 break;
6919 if(state == IOSTATE_goodbit) {
6920 if(basic_streambuf_wchar_sputc(base->strbuf, ch) == WEOF)
6921 state = IOSTATE_badbit;
6924 if(state == IOSTATE_goodbit) {
6925 for(; pad!=0; pad--) {
6926 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
6927 state = IOSTATE_badbit;
6928 break;
6933 base->base.wide = 0;
6934 }else {
6935 state = IOSTATE_badbit;
6937 basic_ostream_wchar_sentry_destroy(ostr);
6939 basic_ios_wchar_setstate(base, state);
6940 return ostr;
6943 /* ??$?6_WU?$char_traits@_W@std@@@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AAV10@PB_W@Z */
6944 /* ??$?6_WU?$char_traits@_W@std@@@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AEAV10@PEB_W@Z */
6945 /* ??$?6GU?$char_traits@G@std@@@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@0@AAV10@PBG@Z */
6946 /* ??$?6GU?$char_traits@G@std@@@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@0@AEAV10@PEBG@Z */
6947 basic_ostream_wchar* __cdecl basic_ostream_wchar_print_str(basic_ostream_wchar *ostr, const wchar_t *str)
6949 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(ostr);
6950 IOSB_iostate state = IOSTATE_goodbit;
6952 TRACE("(%p %s)\n", ostr, debugstr_w(str));
6954 if(basic_ostream_wchar_sentry_create(ostr)) {
6955 MSVCP_size_t len = wcslen(str);
6956 streamsize pad = (base->base.wide>len ? base->base.wide-len : 0);
6958 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
6959 for(; pad!=0; pad--) {
6960 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
6961 state = IOSTATE_badbit;
6962 break;
6967 if(state == IOSTATE_goodbit) {
6968 if(basic_streambuf_wchar_sputn(base->strbuf, str, len) != len)
6969 state = IOSTATE_badbit;
6972 if(state == IOSTATE_goodbit) {
6973 for(; pad!=0; pad--) {
6974 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
6975 state = IOSTATE_badbit;
6976 break;
6981 base->base.wide = 0;
6982 }else {
6983 state = IOSTATE_badbit;
6985 basic_ostream_wchar_sentry_destroy(ostr);
6987 basic_ios_wchar_setstate(base, state);
6988 return ostr;
6991 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
6992 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
6993 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
6994 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
6995 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_func, 8)
6996 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_func(basic_ostream_wchar *this,
6997 basic_ostream_wchar* (__cdecl *pfunc)(basic_ostream_wchar*))
6999 TRACE("(%p %p)\n", this, pfunc);
7000 pfunc(this);
7001 return this;
7004 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@_WU?$char_traits@_W@std@@@1@AAV21@@Z@Z */
7005 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@_WU?$char_traits@_W@std@@@1@AEAV21@@Z@Z */
7006 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@GU?$char_traits@G@std@@@1@AAV21@@Z@Z */
7007 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@GU?$char_traits@G@std@@@1@AEAV21@@Z@Z */
7008 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_func_basic_ios, 8)
7009 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_func_basic_ios(basic_ostream_wchar *this,
7010 basic_ios_wchar* (__cdecl *pfunc)(basic_ios_wchar*))
7012 TRACE("(%p %p)\n", this, pfunc);
7013 pfunc(basic_ostream_wchar_get_basic_ios(this));
7014 return this;
7017 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
7018 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
7019 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
7020 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
7021 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_func_ios_base, 8)
7022 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_func_ios_base(
7023 basic_ostream_wchar *this, ios_base* (__cdecl *pfunc)(ios_base*))
7025 TRACE("(%p %p)\n", this, pfunc);
7026 pfunc(&basic_ostream_wchar_get_basic_ios(this)->base);
7027 return this;
7030 /* Caution: basic_istream uses virtual inheritance. */
7031 static inline basic_ios_char* basic_istream_char_get_basic_ios(basic_istream_char *this)
7033 return (basic_ios_char*)((char*)this+this->vbtable[1]);
7036 static inline basic_ios_char* basic_istream_char_to_basic_ios(basic_istream_char *ptr)
7038 return (basic_ios_char*)((char*)ptr+basic_istream_char_vbtable[1]);
7041 static inline basic_istream_char* basic_istream_char_from_basic_ios(basic_ios_char *ptr)
7043 return (basic_istream_char*)((char*)ptr-basic_istream_char_vbtable[1]);
7046 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N1@Z */
7047 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N1@Z */
7048 DEFINE_THISCALL_WRAPPER(basic_istream_char_ctor_init, 20)
7049 basic_istream_char* __thiscall basic_istream_char_ctor_init(basic_istream_char *this, basic_streambuf_char *strbuf, MSVCP_bool isstd, MSVCP_bool noinit, MSVCP_bool virt_init)
7051 basic_ios_char *base;
7053 TRACE("(%p %p %d %d %d)\n", this, strbuf, isstd, noinit, virt_init);
7055 if(virt_init) {
7056 this->vbtable = basic_istream_char_vbtable;
7057 base = basic_istream_char_get_basic_ios(this);
7058 basic_ios_char_ctor(base);
7059 }else {
7060 base = basic_istream_char_get_basic_ios(this);
7063 base->base.vtable = &MSVCP_basic_istream_char_vtable;
7064 this->count = 0;
7065 if(!noinit)
7066 basic_ios_char_init(base, strbuf, isstd);
7067 return this;
7070 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z */
7071 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z */
7072 DEFINE_THISCALL_WRAPPER(basic_istream_char_ctor, 16)
7073 basic_istream_char* __thiscall basic_istream_char_ctor(basic_istream_char *this, basic_streambuf_char *strbuf, MSVCP_bool isstd, MSVCP_bool virt_init)
7075 return basic_istream_char_ctor_init(this, strbuf, isstd, FALSE, virt_init);
7078 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@W4_Uninitialized@1@@Z */
7079 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
7080 DEFINE_THISCALL_WRAPPER(basic_istream_char_ctor_uninitialized, 12)
7081 basic_istream_char* __thiscall basic_istream_char_ctor_uninitialized(basic_istream_char *this, int uninitialized, MSVCP_bool virt_init)
7083 basic_ios_char *base;
7085 TRACE("(%p %d %d)\n", this, uninitialized, virt_init);
7087 if(virt_init) {
7088 this->vbtable = basic_istream_char_vbtable;
7089 base = basic_istream_char_get_basic_ios(this);
7090 basic_ios_char_ctor(base);
7091 }else {
7092 base = basic_istream_char_get_basic_ios(this);
7095 base->base.vtable = &MSVCP_basic_istream_char_vtable;
7096 ios_base_Addstd(&base->base);
7097 return this;
7100 /* ??1?$basic_istream@DU?$char_traits@D@std@@@std@@UAE@XZ */
7101 /* ??1?$basic_istream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
7102 DEFINE_THISCALL_WRAPPER(basic_istream_char_dtor, 4)
7103 void __thiscall basic_istream_char_dtor(basic_ios_char *base)
7105 basic_istream_char *this = basic_istream_char_from_basic_ios(base);
7107 /* don't destroy virtual base here */
7108 TRACE("(%p)\n", this);
7111 /* ??_D?$basic_istream@DU?$char_traits@D@std@@@std@@QAEXXZ */
7112 /* ??_D?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
7113 DEFINE_THISCALL_WRAPPER(basic_istream_char_vbase_dtor, 4)
7114 void __thiscall basic_istream_char_vbase_dtor(basic_istream_char *this)
7116 TRACE("(%p)\n", this);
7117 basic_istream_char_dtor(basic_istream_char_to_basic_ios(this));
7118 basic_ios_char_dtor(basic_istream_char_get_basic_ios(this));
7121 DEFINE_THISCALL_WRAPPER(MSVCP_basic_istream_char_vector_dtor, 8)
7122 basic_istream_char* __thiscall MSVCP_basic_istream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
7124 basic_istream_char *this = basic_istream_char_from_basic_ios(base);
7126 TRACE("(%p %x)\n", this, flags);
7128 if(flags & 2) {
7129 /* we have an array, with the number of elements stored before the first object */
7130 int i, *ptr = (int *)this-1;
7132 for(i=*ptr-1; i>=0; i--)
7133 basic_istream_char_vbase_dtor(this+i);
7134 MSVCRT_operator_delete(ptr);
7135 } else {
7136 basic_istream_char_vbase_dtor(this);
7137 if(flags & 1)
7138 MSVCRT_operator_delete(this);
7141 return this;
7144 /* ?_Ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE_N_N@Z */
7145 /* ?_Ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_N_N@Z */
7146 DEFINE_THISCALL_WRAPPER(basic_istream_char__Ipfx, 8)
7147 MSVCP_bool __thiscall basic_istream_char__Ipfx(basic_istream_char *this, MSVCP_bool noskip)
7149 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7151 TRACE("(%p %d)\n", this, noskip);
7153 if(!ios_base_good(&base->base)) {
7154 basic_ios_char_setstate(base, IOSTATE_failbit);
7155 return FALSE;
7158 if(basic_ios_char_tie_get(base))
7159 basic_ostream_char_flush(basic_ios_char_tie_get(base));
7161 if(!noskip && (ios_base_flags_get(&base->base) & FMTFLAG_skipws)) {
7162 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7163 const ctype_char *ctype = ctype_char_use_facet(base->strbuf->loc);
7164 int ch;
7166 for(ch = basic_streambuf_char_sgetc(strbuf); ;
7167 ch = basic_streambuf_char_snextc(strbuf)) {
7168 if(ch == EOF) {
7169 basic_ios_char_setstate(base, IOSTATE_eofbit);
7170 return FALSE;
7173 if(!ctype_char_is_ch(ctype, _SPACE|_BLANK, ch))
7174 break;
7178 return TRUE;
7181 /* ?ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE_N_N@Z */
7182 /* ?ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_N_N@Z */
7183 DEFINE_THISCALL_WRAPPER(basic_istream_char_ipfx, 8)
7184 MSVCP_bool __thiscall basic_istream_char_ipfx(basic_istream_char *this, MSVCP_bool noskip)
7186 return basic_istream_char__Ipfx(this, noskip);
7189 /* ?isfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEXXZ */
7190 /* ?isfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
7191 DEFINE_THISCALL_WRAPPER(basic_istream_char_isfx, 4)
7192 void __thiscall basic_istream_char_isfx(basic_istream_char *this)
7194 TRACE("(%p)\n", this);
7197 static BOOL basic_istream_char_sentry_create(basic_istream_char *istr, MSVCP_bool noskip)
7199 basic_ios_char *base = basic_istream_char_get_basic_ios(istr);
7201 if(basic_ios_char_rdbuf_get(base))
7202 basic_streambuf_char__Lock(base->strbuf);
7204 return basic_istream_char_ipfx(istr, noskip);
7207 static void basic_istream_char_sentry_destroy(basic_istream_char *istr)
7209 basic_ios_char *base = basic_istream_char_get_basic_ios(istr);
7211 if(basic_ios_char_rdbuf_get(base))
7212 basic_streambuf_char__Unlock(base->strbuf);
7215 /* ?gcount@?$basic_istream@DU?$char_traits@D@std@@@std@@QBEHXZ */
7216 /* ?gcount@?$basic_istream@DU?$char_traits@D@std@@@std@@QEBA_JXZ */
7217 DEFINE_THISCALL_WRAPPER(basic_istream_char_gcount, 4)
7218 int __thiscall basic_istream_char_gcount(const basic_istream_char *this)
7220 TRACE("(%p)\n", this);
7221 return this->count;
7224 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHXZ */
7225 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAHXZ */
7226 DEFINE_THISCALL_WRAPPER(basic_istream_char_get, 4)
7227 int __thiscall basic_istream_char_get(basic_istream_char *this)
7229 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7230 int ret;
7232 TRACE("(%p)\n", this);
7234 this->count = 0;
7236 if(!basic_istream_char_sentry_create(this, TRUE)) {
7237 basic_istream_char_sentry_destroy(this);
7238 return EOF;
7241 ret = basic_streambuf_char_sbumpc(basic_ios_char_rdbuf_get(base));
7242 basic_istream_char_sentry_destroy(this);
7243 if(ret == EOF)
7244 basic_ios_char_setstate(base, IOSTATE_eofbit|IOSTATE_failbit);
7245 else
7246 this->count++;
7248 return ret;
7251 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@AAD@Z */
7252 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEAD@Z */
7253 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_ch, 8)
7254 basic_istream_char* __thiscall basic_istream_char_get_ch(basic_istream_char *this, char *ch)
7256 int ret;
7258 TRACE("(%p %p)\n", this, ch);
7260 ret = basic_istream_char_get(this);
7261 if(ret != EOF)
7262 *ch = (char)ret;
7263 return this;
7266 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADHD@Z */
7267 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_JD@Z */
7268 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_str_delim, 16)
7269 basic_istream_char* __thiscall basic_istream_char_get_str_delim(basic_istream_char *this, char *str, streamsize count, char delim)
7271 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7272 int ch = delim;
7274 TRACE("(%p %p %ld %c)\n", this, str, count, delim);
7276 this->count = 0;
7278 if(basic_istream_char_sentry_create(this, TRUE)) {
7279 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7281 for(ch = basic_streambuf_char_sgetc(strbuf); count>1;
7282 ch = basic_streambuf_char_snextc(strbuf)) {
7283 if(ch==EOF || ch==delim)
7284 break;
7286 *str++ = ch;
7287 this->count++;
7288 count--;
7291 basic_istream_char_sentry_destroy(this);
7293 basic_ios_char_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) |
7294 (ch==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
7295 if(count > 0)
7296 *str = 0;
7297 return this;
7300 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADH@Z */
7301 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_J@Z */
7302 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_str, 12)
7303 basic_istream_char* __thiscall basic_istream_char_get_str(basic_istream_char *this, char *str, streamsize count)
7305 return basic_istream_char_get_str_delim(this, str, count, '\n');
7308 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@AAV?$basic_streambuf@DU?$char_traits@D@std@@@2@D@Z */
7309 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@D@Z */
7310 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_streambuf_delim, 12)
7311 basic_istream_char* __thiscall basic_istream_char_get_streambuf_delim(basic_istream_char *this, basic_streambuf_char *strbuf, char delim)
7313 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7314 int ch = delim;
7316 TRACE("(%p %p %c)\n", this, strbuf, delim);
7318 this->count = 0;
7320 if(basic_istream_char_sentry_create(this, TRUE)) {
7321 basic_streambuf_char *strbuf_read = basic_ios_char_rdbuf_get(base);
7323 for(ch = basic_streambuf_char_sgetc(strbuf_read); ;
7324 ch = basic_streambuf_char_snextc(strbuf_read)) {
7325 if(ch==EOF || ch==delim)
7326 break;
7328 if(basic_streambuf_char_sputc(strbuf, ch) == EOF)
7329 break;
7330 this->count++;
7333 basic_istream_char_sentry_destroy(this);
7335 basic_ios_char_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) |
7336 (ch==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
7337 return this;
7340 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@AAV?$basic_streambuf@DU?$char_traits@D@std@@@2@@Z */
7341 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@@Z */
7342 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_streambuf, 8)
7343 basic_istream_char* __thiscall basic_istream_char_get_streambuf(basic_istream_char *this, basic_streambuf_char *strbuf)
7345 return basic_istream_char_get_streambuf_delim(this, strbuf, '\n');
7348 /* ?getline@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADHD@Z */
7349 /* ?getline@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_JD@Z */
7350 DEFINE_THISCALL_WRAPPER(basic_istream_char_getline_delim, 16)
7351 basic_istream_char* __thiscall basic_istream_char_getline_delim(basic_istream_char *this, char *str, streamsize count, char delim)
7353 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7354 int ch = delim;
7356 TRACE("(%p %p %ld %c)\n", this, str, count, delim);
7358 this->count = 0;
7360 if(basic_istream_char_sentry_create(this, TRUE) && count>0) {
7361 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7363 while(count > 1) {
7364 ch = basic_streambuf_char_sbumpc(strbuf);
7366 if(ch==EOF || ch==delim)
7367 break;
7369 *str++ = ch;
7370 this->count++;
7371 count--;
7374 if(ch == delim)
7375 this->count++;
7376 else if(ch != EOF) {
7377 ch = basic_streambuf_char_sgetc(strbuf);
7379 if(ch == delim) {
7380 basic_streambuf_char__Gninc(strbuf);
7381 this->count++;
7385 basic_istream_char_sentry_destroy(this);
7387 basic_ios_char_setstate(base, (ch==EOF ? IOSTATE_eofbit : IOSTATE_goodbit) |
7388 (!this->count || (ch!=delim && ch!=EOF) ? IOSTATE_failbit : IOSTATE_goodbit));
7389 if(count > 0)
7390 *str = 0;
7391 return this;
7394 /* ?getline@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADH@Z */
7395 /* ?getline@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_J@Z */
7396 DEFINE_THISCALL_WRAPPER(basic_istream_char_getline, 12)
7397 basic_istream_char* __thiscall basic_istream_char_getline(basic_istream_char *this, char *str, streamsize count)
7399 return basic_istream_char_getline_delim(this, str, count, '\n');
7402 /* ?ignore@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@HH@Z */
7403 /* ?ignore@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@_JH@Z */
7404 DEFINE_THISCALL_WRAPPER(basic_istream_char_ignore, 12)
7405 basic_istream_char* __thiscall basic_istream_char_ignore(basic_istream_char *this, streamsize count, int delim)
7407 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7408 int ch = delim;
7410 TRACE("(%p %ld %d)\n", this, count, delim);
7412 this->count = 0;
7414 if(basic_istream_char_sentry_create(this, TRUE)) {
7415 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7417 while(count > 0) {
7418 ch = basic_streambuf_char_sbumpc(strbuf);
7420 if(ch==EOF || ch==delim)
7421 break;
7423 this->count++;
7424 if(count != INT_MAX)
7425 count--;
7428 basic_istream_char_sentry_destroy(this);
7430 if(ch == EOF)
7431 basic_ios_char_setstate(base, IOSTATE_eofbit);
7432 return this;
7435 /* ?peek@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHXZ */
7436 /* ?peek@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAHXZ */
7437 DEFINE_THISCALL_WRAPPER(basic_istream_char_peek, 4)
7438 int __thiscall basic_istream_char_peek(basic_istream_char *this)
7440 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7441 int ret = EOF;
7443 TRACE("(%p)\n", this);
7445 this->count = 0;
7447 if(basic_istream_char_sentry_create(this, TRUE))
7448 ret = basic_streambuf_char_sgetc(basic_ios_char_rdbuf_get(base));
7449 basic_istream_char_sentry_destroy(this);
7450 return ret;
7453 /* ?_Read_s@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADIH@Z */
7454 /* ?_Read_s@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_K_J@Z */
7455 DEFINE_THISCALL_WRAPPER(basic_istream_char__Read_s, 16)
7456 basic_istream_char* __thiscall basic_istream_char__Read_s(basic_istream_char *this, char *str, MSVCP_size_t size, streamsize count)
7458 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7459 IOSB_iostate state = IOSTATE_goodbit;
7461 TRACE("(%p %p %lu %ld)\n", this, str, size, count);
7463 if(basic_istream_char_sentry_create(this, TRUE)) {
7464 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7466 this->count = basic_streambuf_char__Sgetn_s(strbuf, str, size, count);
7467 if(this->count != count)
7468 state |= IOSTATE_failbit | IOSTATE_eofbit;
7469 }else {
7470 this->count = 0;
7472 basic_istream_char_sentry_destroy(this);
7474 basic_ios_char_setstate(base, state);
7475 return this;
7478 /* ?read@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADH@Z */
7479 /* ?read@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_J@Z */
7480 DEFINE_THISCALL_WRAPPER(basic_istream_char_read, 12)
7481 basic_istream_char* __thiscall basic_istream_char_read(basic_istream_char *this, char *str, streamsize count)
7483 return basic_istream_char__Read_s(this, str, count, count);
7486 /* ?_Readsome_s@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHPADIH@Z */
7487 /* ?_Readsome_s@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_K_J@Z */
7488 DEFINE_THISCALL_WRAPPER(basic_istream_char__Readsome_s, 16)
7489 streamsize __thiscall basic_istream_char__Readsome_s(basic_istream_char *this, char *str, MSVCP_size_t size, streamsize count)
7491 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7492 IOSB_iostate state = IOSTATE_goodbit;
7494 TRACE("(%p %p %lu %ld)\n", this, str, size, count);
7496 this->count = 0;
7498 if(basic_istream_char_sentry_create(this, TRUE)) {
7499 streamsize avail = basic_streambuf_char_in_avail(basic_ios_char_rdbuf_get(base));
7500 if(avail > count)
7501 avail = count;
7503 if(avail == -1)
7504 state |= IOSTATE_eofbit;
7505 else if(avail > 0)
7506 basic_istream_char__Read_s(this, str, size, avail);
7507 }else {
7508 state |= IOSTATE_failbit;
7510 basic_istream_char_sentry_destroy(this);
7512 basic_ios_char_setstate(base, state);
7513 return this->count;
7516 /* ?readsome@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHPADH@Z */
7517 /* ?readsome@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_J@Z */
7518 DEFINE_THISCALL_WRAPPER(basic_istream_char_readsome, 12)
7519 streamsize __thiscall basic_istream_char_readsome(basic_istream_char *this, char *str, streamsize count)
7521 return basic_istream_char__Readsome_s(this, str, count, count);
7524 /* ?putback@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@D@Z */
7525 /* ?putback@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@D@Z */
7526 DEFINE_THISCALL_WRAPPER(basic_istream_char_putback, 8)
7527 basic_istream_char* __thiscall basic_istream_char_putback(basic_istream_char *this, char ch)
7529 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7530 IOSB_iostate state = IOSTATE_goodbit;
7532 TRACE("(%p %c)\n", this, ch);
7534 this->count = 0;
7536 if(basic_istream_char_sentry_create(this, TRUE)) {
7537 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7539 if(!ios_base_good(&base->base))
7540 state |= IOSTATE_failbit;
7541 else if(!strbuf || basic_streambuf_char_sputbackc(strbuf, ch)==EOF)
7542 state |= IOSTATE_badbit;
7544 basic_istream_char_sentry_destroy(this);
7546 basic_ios_char_setstate(base, state);
7547 return this;
7550 /* ?unget@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@XZ */
7551 /* ?unget@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@XZ */
7552 DEFINE_THISCALL_WRAPPER(basic_istream_char_unget, 4)
7553 basic_istream_char* __thiscall basic_istream_char_unget(basic_istream_char *this)
7555 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7556 IOSB_iostate state = IOSTATE_goodbit;
7558 TRACE("(%p)\n", this);
7560 this->count = 0;
7562 if(basic_istream_char_sentry_create(this, TRUE)) {
7563 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7565 if(!ios_base_good(&base->base))
7566 state |= IOSTATE_failbit;
7567 else if(!strbuf || basic_streambuf_char_sungetc(strbuf)==EOF)
7568 state |= IOSTATE_badbit;
7570 basic_istream_char_sentry_destroy(this);
7572 basic_ios_char_setstate(base, state);
7573 return this;
7576 /* ?sync@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHXZ */
7577 /* ?sync@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAHXZ */
7578 DEFINE_THISCALL_WRAPPER(basic_istream_char_sync, 4)
7579 int __thiscall basic_istream_char_sync(basic_istream_char *this)
7581 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7582 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7584 TRACE("(%p)\n", this);
7586 if(!strbuf)
7587 return -1;
7589 if(basic_istream_char_sentry_create(this, TRUE)) {
7590 if(basic_streambuf_char_pubsync(strbuf) != -1) {
7591 basic_istream_char_sentry_destroy(this);
7592 return 0;
7595 basic_istream_char_sentry_destroy(this);
7597 basic_ios_char_setstate(base, IOSTATE_badbit);
7598 return -1;
7601 /* ?tellg@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@XZ */
7602 /* ?tellg@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
7603 DEFINE_THISCALL_WRAPPER(basic_istream_char_tellg, 8)
7604 fpos_int* __thiscall basic_istream_char_tellg(basic_istream_char *this, fpos_int *ret)
7606 TRACE("(%p %p)\n", this, ret);
7608 if(basic_istream_char_sentry_create(this, TRUE)) {
7609 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7610 if(!ios_base_fail(&base->base)) {
7611 basic_streambuf_char_pubseekoff(basic_ios_char_rdbuf_get(base),
7612 ret, 0, SEEKDIR_cur, OPENMODE_in);
7613 basic_istream_char_sentry_destroy(this);
7615 if(ret->off==0 && ret->pos==-1 && ret->state==0)
7616 basic_ios_char_setstate(base, IOSTATE_failbit);
7617 return ret;
7620 basic_istream_char_sentry_destroy(this);
7622 ret->off = 0;
7623 ret->pos = -1;
7624 ret->state = 0;
7625 return ret;
7628 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@JH@Z */
7629 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@_JH@Z */
7630 DEFINE_THISCALL_WRAPPER(basic_istream_char_seekg, 12)
7631 basic_istream_char* __thiscall basic_istream_char_seekg(basic_istream_char *this, streamoff off, int dir)
7633 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7635 TRACE("(%p %ld %d)\n", this, off, dir);
7637 if(basic_istream_char_sentry_create(this, TRUE)) {
7638 if(!ios_base_fail(&base->base)) {
7639 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7640 fpos_int ret;
7642 basic_streambuf_char_pubseekoff(strbuf, &ret, off, dir, OPENMODE_in);
7643 basic_istream_char_sentry_destroy(this);
7645 if(ret.off==0 && ret.pos==-1 && ret.state==0)
7646 basic_ios_char_setstate(base, IOSTATE_failbit);
7647 else
7648 basic_ios_char_clear(base, IOSTATE_goodbit);
7649 return this;
7652 basic_istream_char_sentry_destroy(this);
7654 basic_ios_char_setstate(base, IOSTATE_failbit);
7655 return this;
7658 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
7659 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
7660 DEFINE_THISCALL_WRAPPER(basic_istream_char_seekg_fpos, 28)
7661 basic_istream_char* __thiscall basic_istream_char_seekg_fpos(basic_istream_char *this, fpos_int pos)
7663 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7665 TRACE("(%p %s)\n", this, debugstr_fpos_int(&pos));
7667 if(basic_istream_char_sentry_create(this, TRUE)) {
7668 if(!ios_base_fail(&base->base)) {
7669 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7670 fpos_int ret;
7672 basic_streambuf_char_pubseekpos(strbuf, &ret, pos, OPENMODE_in);
7673 basic_istream_char_sentry_destroy(this);
7675 if(ret.off==0 && ret.pos==-1 && ret.state==0)
7676 basic_ios_char_setstate(base, IOSTATE_failbit);
7677 else
7678 basic_ios_char_clear(base, IOSTATE_goodbit);
7679 return this;
7682 basic_istream_char_sentry_destroy(this);
7684 basic_ios_char_setstate(base, IOSTATE_failbit);
7685 return this;
7688 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAF@Z */
7689 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAF@Z */
7690 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_short, 8)
7691 basic_istream_char* __thiscall basic_istream_char_read_short(basic_istream_char *this, short *v)
7693 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7694 int state = IOSTATE_goodbit;
7696 TRACE("(%p %p)\n", this, v);
7698 if(basic_istream_char_sentry_create(this, FALSE)) {
7699 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7700 const num_get *numget = num_get_char_use_facet(strbuf->loc);
7701 istreambuf_iterator_char first={0}, last={0};
7702 LONG tmp;
7704 first.strbuf = strbuf;
7705 num_get_char_get_long(numget, &last, first, last, &base->base, &state, &tmp);
7707 if(!(state&IOSTATE_failbit) && tmp==(LONG)((short)tmp))
7708 *v = tmp;
7709 else
7710 state |= IOSTATE_failbit;
7712 basic_istream_char_sentry_destroy(this);
7714 basic_ios_char_setstate(base, state);
7715 return this;
7718 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAG@Z */
7719 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAG@Z */
7720 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_ushort, 8)
7721 basic_istream_char* __thiscall basic_istream_char_read_ushort(basic_istream_char *this, unsigned short *v)
7723 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7724 int state = IOSTATE_goodbit;
7726 TRACE("(%p %p)\n", this, v);
7728 if(basic_istream_char_sentry_create(this, FALSE)) {
7729 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7730 const num_get *numget = num_get_char_use_facet(strbuf->loc);
7731 istreambuf_iterator_char first={0}, last={0};
7733 first.strbuf = strbuf;
7734 num_get_char_get_ushort(numget, &last, first, last, &base->base, &state, v);
7736 basic_istream_char_sentry_destroy(this);
7738 basic_ios_char_setstate(base, state);
7739 return this;
7742 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAH@Z */
7743 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAH@Z */
7744 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_int, 8)
7745 basic_istream_char* __thiscall basic_istream_char_read_int(basic_istream_char *this, int *v)
7747 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7748 int state = IOSTATE_goodbit;
7750 TRACE("(%p %p)\n", this, v);
7752 if(basic_istream_char_sentry_create(this, FALSE)) {
7753 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7754 const num_get *numget = num_get_char_use_facet(strbuf->loc);
7755 istreambuf_iterator_char first={0}, last={0};
7757 first.strbuf = strbuf;
7758 num_get_char_get_long(numget, &last, first, last, &base->base, &state, v);
7760 basic_istream_char_sentry_destroy(this);
7762 basic_ios_char_setstate(base, state);
7763 return this;
7766 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAI@Z */
7767 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAI@Z */
7768 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_uint, 8)
7769 basic_istream_char* __thiscall basic_istream_char_read_uint(basic_istream_char *this, unsigned int *v)
7771 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7772 int state = IOSTATE_goodbit;
7774 TRACE("(%p %p)\n", this, v);
7776 if(basic_istream_char_sentry_create(this, FALSE)) {
7777 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7778 const num_get *numget = num_get_char_use_facet(strbuf->loc);
7779 istreambuf_iterator_char first={0}, last={0};
7781 first.strbuf = strbuf;
7782 num_get_char_get_uint(numget, &last, first, last, &base->base, &state, v);
7784 basic_istream_char_sentry_destroy(this);
7786 basic_ios_char_setstate(base, state);
7787 return this;
7790 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAJ@Z */
7791 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAJ@Z */
7792 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_long, 8)
7793 basic_istream_char* __thiscall basic_istream_char_read_long(basic_istream_char *this, LONG *v)
7795 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7796 int state = IOSTATE_goodbit;
7798 TRACE("(%p %p)\n", this, v);
7800 if(basic_istream_char_sentry_create(this, FALSE)) {
7801 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7802 const num_get *numget = num_get_char_use_facet(strbuf->loc);
7803 istreambuf_iterator_char first={0}, last={0};
7805 first.strbuf = strbuf;
7806 num_get_char_get_long(numget, &last, first, last, &base->base, &state, v);
7808 basic_istream_char_sentry_destroy(this);
7810 basic_ios_char_setstate(base, state);
7811 return this;
7814 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAK@Z */
7815 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAK@Z */
7816 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_ulong, 8)
7817 basic_istream_char* __thiscall basic_istream_char_read_ulong(basic_istream_char *this, ULONG *v)
7819 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7820 int state = IOSTATE_goodbit;
7822 TRACE("(%p %p)\n", this, v);
7824 if(basic_istream_char_sentry_create(this, FALSE)) {
7825 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7826 const num_get *numget = num_get_char_use_facet(strbuf->loc);
7827 istreambuf_iterator_char first={0}, last={0};
7829 first.strbuf = strbuf;
7830 num_get_char_get_ulong(numget, &last, first, last, &base->base, &state, v);
7832 basic_istream_char_sentry_destroy(this);
7834 basic_ios_char_setstate(base, state);
7835 return this;
7838 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAM@Z */
7839 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAM@Z */
7840 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_float, 8)
7841 basic_istream_char* __thiscall basic_istream_char_read_float(basic_istream_char *this, float *v)
7843 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7844 int state = IOSTATE_goodbit;
7846 TRACE("(%p %p)\n", this, v);
7848 if(basic_istream_char_sentry_create(this, FALSE)) {
7849 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7850 const num_get *numget = num_get_char_use_facet(strbuf->loc);
7851 istreambuf_iterator_char first={0}, last={0};
7853 first.strbuf = strbuf;
7854 num_get_char_get_float(numget, &last, first, last, &base->base, &state, v);
7856 basic_istream_char_sentry_destroy(this);
7858 basic_ios_char_setstate(base, state);
7859 return this;
7862 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAN@Z */
7863 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAN@Z */
7864 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_double, 8)
7865 basic_istream_char* __thiscall basic_istream_char_read_double(basic_istream_char *this, double *v)
7867 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7868 int state = IOSTATE_goodbit;
7870 TRACE("(%p %p)\n", this, v);
7872 if(basic_istream_char_sentry_create(this, FALSE)) {
7873 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7874 const num_get *numget = num_get_char_use_facet(strbuf->loc);
7875 istreambuf_iterator_char first={0}, last={0};
7877 first.strbuf = strbuf;
7878 num_get_char_get_double(numget, &last, first, last, &base->base, &state, v);
7880 basic_istream_char_sentry_destroy(this);
7882 basic_ios_char_setstate(base, state);
7883 return this;
7886 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAO@Z */
7887 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAO@Z */
7888 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_ldouble, 8)
7889 basic_istream_char* __thiscall basic_istream_char_read_ldouble(basic_istream_char *this, double *v)
7891 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7892 int state = IOSTATE_goodbit;
7894 TRACE("(%p %p)\n", this, v);
7896 if(basic_istream_char_sentry_create(this, FALSE)) {
7897 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7898 const num_get *numget = num_get_char_use_facet(strbuf->loc);
7899 istreambuf_iterator_char first={0}, last={0};
7901 first.strbuf = strbuf;
7902 num_get_char_get_ldouble(numget, &last, first, last, &base->base, &state, v);
7904 basic_istream_char_sentry_destroy(this);
7906 basic_ios_char_setstate(base, state);
7907 return this;
7910 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAPAX@Z */
7911 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAPEAX@Z */
7912 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_ptr, 8)
7913 basic_istream_char* __thiscall basic_istream_char_read_ptr(basic_istream_char *this, void **v)
7915 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7916 int state = IOSTATE_goodbit;
7918 TRACE("(%p %p)\n", this, v);
7920 if(basic_istream_char_sentry_create(this, FALSE)) {
7921 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7922 const num_get *numget = num_get_char_use_facet(strbuf->loc);
7923 istreambuf_iterator_char first={0}, last={0};
7925 first.strbuf = strbuf;
7926 num_get_char_get_void(numget, &last, first, last, &base->base, &state, v);
7928 basic_istream_char_sentry_destroy(this);
7930 basic_ios_char_setstate(base, state);
7931 return this;
7934 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AA_J@Z */
7935 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEA_J@Z */
7936 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_int64, 8)
7937 basic_istream_char* __thiscall basic_istream_char_read_int64(basic_istream_char *this, __int64 *v)
7939 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7940 int state = IOSTATE_goodbit;
7942 TRACE("(%p %p)\n", this, v);
7944 if(basic_istream_char_sentry_create(this, FALSE)) {
7945 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7946 const num_get *numget = num_get_char_use_facet(strbuf->loc);
7947 istreambuf_iterator_char first={0}, last={0};
7949 first.strbuf = strbuf;
7950 num_get_char_get_int64(numget, &last, first, last, &base->base, &state, v);
7952 basic_istream_char_sentry_destroy(this);
7954 basic_ios_char_setstate(base, state);
7955 return this;
7958 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AA_K@Z */
7959 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEA_K@Z */
7960 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_uint64, 8)
7961 basic_istream_char* __thiscall basic_istream_char_read_uint64(basic_istream_char *this, unsigned __int64 *v)
7963 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7964 int state = IOSTATE_goodbit;
7966 TRACE("(%p %p)\n", this, v);
7968 if(basic_istream_char_sentry_create(this, FALSE)) {
7969 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7970 const num_get *numget = num_get_char_use_facet(strbuf->loc);
7971 istreambuf_iterator_char first={0}, last={0};
7973 first.strbuf = strbuf;
7974 num_get_char_get_uint64(numget, &last, first, last, &base->base, &state, v);
7976 basic_istream_char_sentry_destroy(this);
7978 basic_ios_char_setstate(base, state);
7979 return this;
7982 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AA_N@Z */
7983 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEA_N@Z */
7984 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_bool, 8)
7985 basic_istream_char* __thiscall basic_istream_char_read_bool(basic_istream_char *this, MSVCP_bool *v)
7987 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7988 int state = IOSTATE_goodbit;
7990 TRACE("(%p %p)\n", this, v);
7992 if(basic_istream_char_sentry_create(this, FALSE)) {
7993 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7994 const num_get *numget = num_get_char_use_facet(strbuf->loc);
7995 istreambuf_iterator_char first={0}, last={0};
7997 first.strbuf = strbuf;
7998 num_get_char_get_bool(numget, &last, first, last, &base->base, &state, v);
8000 basic_istream_char_sentry_destroy(this);
8002 basic_ios_char_setstate(base, state);
8003 return this;
8006 /* ??$getline@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@D@Z */
8007 /* ??$getline@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@D@Z */
8008 basic_istream_char* __cdecl basic_istream_char_getline_bstr_delim(
8009 basic_istream_char *istream, basic_string_char *str, char delim)
8011 IOSB_iostate state = IOSTATE_failbit;
8012 int c = delim;
8014 TRACE("(%p %p %c)\n", istream, str, delim);
8016 if(basic_istream_char_sentry_create(istream, TRUE)) {
8017 MSVCP_basic_string_char_clear(str);
8019 for(c = basic_istream_char_get(istream); c!=delim && c!=EOF;
8020 c = basic_istream_char_get(istream)) {
8021 state = IOSTATE_goodbit;
8022 MSVCP_basic_string_char_append_ch(str, c);
8025 basic_istream_char_sentry_destroy(istream);
8027 basic_ios_char_setstate(basic_istream_char_get_basic_ios(istream),
8028 state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
8029 return istream;
8032 /* ??$getline@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
8033 /* ??$getline@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
8034 basic_istream_char* __cdecl basic_istream_char_getline_bstr(
8035 basic_istream_char *istream, basic_string_char *str)
8037 return basic_istream_char_getline_bstr_delim(istream, str, '\n');
8040 /* ??$?5DU?$char_traits@D@std@@V?$allocator@D@1@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
8041 /* ??$?5DU?$char_traits@D@std@@V?$allocator@D@1@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
8042 basic_istream_char* __cdecl basic_istream_char_read_bstr(
8043 basic_istream_char *istream, basic_string_char *str)
8045 basic_ios_char *base = basic_istream_char_get_basic_ios(istream);
8046 IOSB_iostate state = IOSTATE_failbit;
8047 int c = '\n';
8049 TRACE("(%p %p)\n", istream, str);
8051 if(basic_istream_char_sentry_create(istream, FALSE)) {
8052 const ctype_char *ctype = ctype_char_use_facet(base->strbuf->loc);
8053 MSVCP_size_t count = ios_base_width_get(&base->base);
8055 if(!count)
8056 count = -1;
8058 MSVCP_basic_string_char_clear(str);
8060 for(c = basic_streambuf_char_sgetc(basic_ios_char_rdbuf_get(base));
8061 c!=EOF && !ctype_char_is_ch(ctype, _SPACE|_BLANK, c) && count>0;
8062 c = basic_streambuf_char_snextc(basic_ios_char_rdbuf_get(base)), count--) {
8063 state = IOSTATE_goodbit;
8064 MSVCP_basic_string_char_append_ch(str, c);
8067 ios_base_width_set(&base->base, 0);
8069 basic_istream_char_sentry_destroy(istream);
8071 basic_ios_char_setstate(base, state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
8072 return istream;
8075 /* ??$?5DU?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@PAD@Z */
8076 /* ??$?5DU?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@PEAD@Z */
8077 /* ??$?5U?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@PAC@Z */
8078 /* ??$?5U?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@PEAC@Z */
8079 /* ??$?5U?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@PAE@Z */
8080 /* ??$?5U?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@PEAE@Z */
8081 basic_istream_char* __cdecl basic_istream_char_read_str(basic_istream_char *istream, char *str)
8083 basic_ios_char *base = basic_istream_char_get_basic_ios(istream);
8084 IOSB_iostate state = IOSTATE_failbit;
8085 int c = '\n';
8087 TRACE("(%p %p)\n", istream, str);
8089 if(basic_istream_char_sentry_create(istream, FALSE)) {
8090 const ctype_char *ctype = ctype_char_use_facet(base->strbuf->loc);
8091 MSVCP_size_t count = ios_base_width_get(&base->base)-1;
8093 for(c = basic_streambuf_char_sgetc(basic_ios_char_rdbuf_get(base));
8094 c!=EOF && !ctype_char_is_ch(ctype, _SPACE|_BLANK, c) && count>0;
8095 c = basic_streambuf_char_snextc(basic_ios_char_rdbuf_get(base)), count--) {
8096 state = IOSTATE_goodbit;
8097 *str++ = c;
8100 *str = 0;
8101 ios_base_width_set(&base->base, 0);
8103 basic_istream_char_sentry_destroy(istream);
8105 basic_ios_char_setstate(base, state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
8106 return istream;
8109 /* ??$?5DU?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAD@Z */
8110 /* ??$?5DU?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAD@Z */
8111 /* ??$?5U?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAC@Z */
8112 /* ??$?5U?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAC@Z */
8113 /* ??$?5U?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAE@Z */
8114 /* ??$?5U?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAE@Z */
8115 basic_istream_char* __cdecl basic_istream_char_read_ch(basic_istream_char *istream, char *ch)
8117 IOSB_iostate state = IOSTATE_failbit;
8118 int c = 0;
8120 TRACE("(%p %p)\n", istream, ch);
8122 if(basic_istream_char_sentry_create(istream, FALSE)) {
8123 c = basic_streambuf_char_sbumpc(basic_ios_char_rdbuf_get(
8124 basic_istream_char_get_basic_ios(istream)));
8125 if(c != EOF) {
8126 state = IOSTATE_goodbit;
8127 *ch = c;
8130 basic_istream_char_sentry_destroy(istream);
8132 basic_ios_char_setstate(basic_istream_char_get_basic_ios(istream),
8133 state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
8134 return istream;
8137 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
8138 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
8139 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_streambuf, 8)
8140 basic_istream_char* __thiscall basic_istream_char_read_streambuf(
8141 basic_istream_char *this, basic_streambuf_char *streambuf)
8143 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8144 IOSB_iostate state = IOSTATE_failbit;
8145 int c = '\n';
8147 TRACE("(%p %p)\n", this, streambuf);
8149 if(basic_istream_char_sentry_create(this, FALSE)) {
8150 for(c = basic_streambuf_char_sgetc(basic_ios_char_rdbuf_get(base)); c!=EOF;
8151 c = basic_streambuf_char_snextc(basic_ios_char_rdbuf_get(base))) {
8152 state = IOSTATE_goodbit;
8153 if(basic_streambuf_char_sputc(streambuf, c) == EOF)
8154 break;
8157 basic_istream_char_sentry_destroy(this);
8159 basic_ios_char_setstate(base, state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
8160 return this;
8163 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
8164 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
8165 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_func, 8)
8166 basic_istream_char* __thiscall basic_istream_char_read_func(basic_istream_char *this,
8167 basic_istream_char* (__cdecl *pfunc)(basic_istream_char*))
8169 TRACE("(%p %p)\n", this, pfunc);
8170 pfunc(this);
8171 return this;
8174 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@DU?$char_traits@D@std@@@1@AAV21@@Z@Z */
8175 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@DU?$char_traits@D@std@@@1@AEAV21@@Z@Z */
8176 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_func_basic_ios, 8)
8177 basic_istream_char* __thiscall basic_istream_char_read_func_basic_ios(basic_istream_char *this,
8178 basic_ios_char* (__cdecl *pfunc)(basic_ios_char*))
8180 TRACE("(%p %p)\n", this, pfunc);
8181 pfunc(basic_istream_char_get_basic_ios(this));
8182 return this;
8185 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
8186 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
8187 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_func_ios_base, 8)
8188 basic_istream_char* __thiscall basic_istream_char_read_func_ios_base(basic_istream_char *this,
8189 ios_base* (__cdecl *pfunc)(ios_base*))
8191 TRACE("(%p %p)\n", this, pfunc);
8192 pfunc(&basic_istream_char_get_basic_ios(this)->base);
8193 return this;
8196 /* Caution: basic_istream uses virtual inheritance. */
8197 static inline basic_ios_wchar* basic_istream_wchar_get_basic_ios(basic_istream_wchar *this)
8199 return (basic_ios_wchar*)((char*)this+this->vbtable[1]);
8202 static inline basic_ios_wchar* basic_istream_wchar_to_basic_ios(basic_istream_wchar *ptr)
8204 return (basic_ios_wchar*)((char*)ptr+basic_istream_wchar_vbtable[1]);
8207 static inline basic_istream_wchar* basic_istream_wchar_from_basic_ios(basic_ios_wchar *ptr)
8209 return (basic_istream_wchar*)((char*)ptr-basic_istream_wchar_vbtable[1]);
8212 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N1@Z */
8213 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N1@Z */
8214 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ctor_init, 20)
8215 basic_istream_wchar* __thiscall basic_istream_wchar_ctor_init(basic_istream_wchar *this,
8216 basic_streambuf_wchar *strbuf, MSVCP_bool isstd, MSVCP_bool noinit, MSVCP_bool virt_init)
8218 basic_ios_wchar *base;
8220 TRACE("(%p %p %d %d %d)\n", this, strbuf, isstd, noinit, virt_init);
8222 if(virt_init) {
8223 this->vbtable = basic_istream_wchar_vbtable;
8224 base = basic_istream_wchar_get_basic_ios(this);
8225 basic_ios_wchar_ctor(base);
8226 }else {
8227 base = basic_istream_wchar_get_basic_ios(this);
8230 base->base.vtable = &MSVCP_basic_istream_wchar_vtable;
8231 this->count = 0;
8232 if(!noinit)
8233 basic_ios_wchar_init(base, strbuf, isstd);
8234 return this;
8237 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N1@Z */
8238 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N1@Z */
8239 DEFINE_THISCALL_WRAPPER(basic_istream_short_ctor_init, 20)
8240 basic_istream_wchar* __thiscall basic_istream_short_ctor_init(basic_istream_wchar *this,
8241 basic_streambuf_wchar *strbuf, MSVCP_bool isstd, MSVCP_bool noinit, MSVCP_bool virt_init)
8243 basic_istream_wchar_ctor_init(this, strbuf, isstd, noinit, virt_init);
8244 basic_istream_wchar_get_basic_ios(this)->base.vtable = &MSVCP_basic_istream_short_vtable;
8245 return this;
8248 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z */
8249 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z */
8250 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ctor, 16)
8251 basic_istream_wchar* __thiscall basic_istream_wchar_ctor(basic_istream_wchar *this,
8252 basic_streambuf_wchar *strbuf, MSVCP_bool isstd, MSVCP_bool virt_init)
8254 return basic_istream_wchar_ctor_init(this, strbuf, isstd, FALSE, virt_init);
8257 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N@Z */
8258 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N@Z */
8259 DEFINE_THISCALL_WRAPPER(basic_istream_short_ctor, 16)
8260 basic_istream_wchar* __thiscall basic_istream_short_ctor(basic_istream_wchar *this,
8261 basic_streambuf_wchar *strbuf, MSVCP_bool isstd, MSVCP_bool virt_init)
8263 return basic_istream_short_ctor_init(this, strbuf, isstd, FALSE, virt_init);
8266 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE@W4_Uninitialized@1@@Z */
8267 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
8268 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ctor_uninitialized, 12)
8269 basic_istream_wchar* __thiscall basic_istream_wchar_ctor_uninitialized(
8270 basic_istream_wchar *this, int uninitialized, MSVCP_bool virt_init)
8272 basic_ios_wchar *base;
8274 TRACE("(%p %d %d)\n", this, uninitialized, virt_init);
8276 if(virt_init) {
8277 this->vbtable = basic_istream_wchar_vbtable;
8278 base = basic_istream_wchar_get_basic_ios(this);
8279 basic_ios_wchar_ctor(base);
8280 }else {
8281 base = basic_istream_wchar_get_basic_ios(this);
8284 base->base.vtable = &MSVCP_basic_istream_wchar_vtable;
8285 ios_base_Addstd(&base->base);
8286 return this;
8289 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QAE@W4_Uninitialized@1@@Z */
8290 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
8291 DEFINE_THISCALL_WRAPPER(basic_istream_short_ctor_uninitialized, 12)
8292 basic_istream_wchar* __thiscall basic_istream_short_ctor_uninitialized(
8293 basic_istream_wchar *this, int uninitialized, MSVCP_bool virt_init)
8295 basic_istream_wchar_ctor_uninitialized(this, uninitialized, virt_init);
8296 basic_istream_wchar_get_basic_ios(this)->base.vtable = &MSVCP_basic_istream_short_vtable;
8297 return this;
8300 /* ??1?$basic_istream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
8301 /* ??1?$basic_istream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
8302 /* ??1?$basic_istream@GU?$char_traits@G@std@@@std@@UAE@XZ */
8303 /* ??1?$basic_istream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
8304 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_dtor, 4)
8305 void __thiscall basic_istream_wchar_dtor(basic_ios_wchar *base)
8307 basic_istream_wchar *this = basic_istream_wchar_from_basic_ios(base);
8309 /* don't destroy virtual base here */
8310 TRACE("(%p)\n", this);
8313 /* ??_D?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
8314 /* ??_D?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
8315 /* ??_D?$basic_istream@GU?$char_traits@G@std@@@std@@QAEXXZ */
8316 /* ??_D?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
8317 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_vbase_dtor, 4)
8318 void __thiscall basic_istream_wchar_vbase_dtor(basic_istream_wchar *this)
8320 TRACE("(%p)\n", this);
8321 basic_istream_wchar_dtor(basic_istream_wchar_to_basic_ios(this));
8322 basic_ios_wchar_dtor(basic_istream_wchar_get_basic_ios(this));
8325 DEFINE_THISCALL_WRAPPER(MSVCP_basic_istream_wchar_vector_dtor, 8)
8326 basic_istream_wchar* __thiscall MSVCP_basic_istream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
8328 basic_istream_wchar *this = basic_istream_wchar_from_basic_ios(base);
8330 TRACE("(%p %x)\n", this, flags);
8332 if(flags & 2) {
8333 /* we have an array, with the number of elements stored before the first object */
8334 int i, *ptr = (int *)this-1;
8336 for(i=*ptr-1; i>=0; i--)
8337 basic_istream_wchar_vbase_dtor(this+i);
8338 MSVCRT_operator_delete(ptr);
8339 } else {
8340 basic_istream_wchar_vbase_dtor(this);
8341 if(flags & 1)
8342 MSVCRT_operator_delete(this);
8345 return this;
8348 DEFINE_THISCALL_WRAPPER(MSVCP_basic_istream_short_vector_dtor, 8)
8349 basic_istream_wchar* __thiscall MSVCP_basic_istream_short_vector_dtor(basic_ios_wchar *base, unsigned int flags)
8351 return MSVCP_basic_istream_wchar_vector_dtor(base, flags);
8354 /* ?_Ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE_N_N@Z */
8355 /* ?_Ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_N_N@Z */
8356 /* ?_Ipfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QAE_N_N@Z */
8357 /* ?_Ipfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA_N_N@Z */
8358 DEFINE_THISCALL_WRAPPER(basic_istream_wchar__Ipfx, 8)
8359 MSVCP_bool __thiscall basic_istream_wchar__Ipfx(basic_istream_wchar *this, MSVCP_bool noskip)
8361 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8363 TRACE("(%p %d)\n", this, noskip);
8365 if(!ios_base_good(&base->base)) {
8366 basic_ios_wchar_setstate(base, IOSTATE_failbit);
8367 return FALSE;
8370 if(basic_ios_wchar_tie_get(base))
8371 basic_ostream_wchar_flush(basic_ios_wchar_tie_get(base));
8373 if(!noskip && (ios_base_flags_get(&base->base) & FMTFLAG_skipws)) {
8374 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8375 const ctype_wchar *ctype = ctype_wchar_use_facet(base->strbuf->loc);
8376 int ch;
8378 for(ch = basic_streambuf_wchar_sgetc(strbuf); ;
8379 ch = basic_streambuf_wchar_snextc(strbuf)) {
8380 if(ch == WEOF) {
8381 basic_ios_wchar_setstate(base, IOSTATE_eofbit);
8382 return FALSE;
8385 if(!ctype_wchar_is_ch(ctype, _SPACE|_BLANK, ch))
8386 break;
8390 return TRUE;
8393 /* ?ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE_N_N@Z */
8394 /* ?ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_N_N@Z */
8395 /* ?ipfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QAE_N_N@Z */
8396 /* ?ipfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA_N_N@Z */
8397 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ipfx, 8)
8398 MSVCP_bool __thiscall basic_istream_wchar_ipfx(basic_istream_wchar *this, MSVCP_bool noskip)
8400 return basic_istream_wchar__Ipfx(this, noskip);
8403 /* ?isfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
8404 /* ?isfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
8405 /* ?isfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEXXZ */
8406 /* ?isfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
8407 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_isfx, 4)
8408 void __thiscall basic_istream_wchar_isfx(basic_istream_wchar *this)
8410 TRACE("(%p)\n", this);
8413 static BOOL basic_istream_wchar_sentry_create(basic_istream_wchar *istr, MSVCP_bool noskip)
8415 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istr);
8417 if(basic_ios_wchar_rdbuf_get(base))
8418 basic_streambuf_wchar__Lock(base->strbuf);
8420 return basic_istream_wchar_ipfx(istr, noskip);
8423 static void basic_istream_wchar_sentry_destroy(basic_istream_wchar *istr)
8425 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istr);
8427 if(basic_ios_wchar_rdbuf_get(base))
8428 basic_streambuf_wchar__Unlock(base->strbuf);
8431 /* ?gcount@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QBEHXZ */
8432 /* ?gcount@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEBA_JXZ */
8433 /* ?gcount@?$basic_istream@GU?$char_traits@G@std@@@std@@QBEHXZ */
8434 /* ?gcount@?$basic_istream@GU?$char_traits@G@std@@@std@@QEBA_JXZ */
8435 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_gcount, 4)
8436 int __thiscall basic_istream_wchar_gcount(const basic_istream_wchar *this)
8438 TRACE("(%p)\n", this);
8439 return this->count;
8442 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
8443 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
8444 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEGXZ */
8445 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAGXZ */
8446 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get, 4)
8447 unsigned short __thiscall basic_istream_wchar_get(basic_istream_wchar *this)
8449 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8450 int ret;
8452 TRACE("(%p)\n", this);
8454 this->count = 0;
8456 if(!basic_istream_wchar_sentry_create(this, TRUE)) {
8457 basic_istream_wchar_sentry_destroy(this);
8458 return WEOF;
8461 ret = basic_streambuf_wchar_sbumpc(basic_ios_wchar_rdbuf_get(base));
8462 basic_istream_wchar_sentry_destroy(this);
8463 if(ret == WEOF)
8464 basic_ios_wchar_setstate(base, IOSTATE_eofbit|IOSTATE_failbit);
8465 else
8466 this->count++;
8468 return ret;
8471 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@AA_W@Z */
8472 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEA_W@Z */
8473 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@AAG@Z */
8474 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@AEAG@Z */
8475 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_ch, 8)
8476 basic_istream_wchar* __thiscall basic_istream_wchar_get_ch(basic_istream_wchar *this, wchar_t *ch)
8478 unsigned short ret;
8480 TRACE("(%p %p)\n", this, ch);
8482 ret = basic_istream_wchar_get(this);
8483 if(ret != WEOF)
8484 *ch = (wchar_t)ret;
8485 return this;
8488 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH_W@Z */
8489 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J_W@Z */
8490 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGHG@Z */
8491 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_JG@Z */
8492 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_str_delim, 16)
8493 basic_istream_wchar* __thiscall basic_istream_wchar_get_str_delim(basic_istream_wchar *this, wchar_t *str, streamsize count, wchar_t delim)
8495 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8496 unsigned short ch = delim;
8498 TRACE("(%p %p %ld %c)\n", this, str, count, delim);
8500 this->count = 0;
8502 if(basic_istream_wchar_sentry_create(this, TRUE)) {
8503 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8505 for(ch = basic_streambuf_wchar_sgetc(strbuf); count>1;
8506 ch = basic_streambuf_wchar_snextc(strbuf)) {
8507 if(ch==WEOF || ch==delim)
8508 break;
8510 *str++ = ch;
8511 this->count++;
8512 count--;
8515 basic_istream_wchar_sentry_destroy(this);
8517 basic_ios_wchar_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) |
8518 (ch==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
8519 if(count > 0)
8520 *str = 0;
8521 return this;
8524 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH@Z */
8525 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J@Z */
8526 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGH@Z */
8527 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_J@Z */
8528 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_str, 12)
8529 basic_istream_wchar* __thiscall basic_istream_wchar_get_str(basic_istream_wchar *this, wchar_t *str, streamsize count)
8531 return basic_istream_wchar_get_str_delim(this, str, count, '\n');
8534 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@AAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_W@Z */
8535 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_W@Z */
8536 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@AAV?$basic_streambuf@GU?$char_traits@G@std@@@2@G@Z */
8537 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@G@Z */
8538 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_streambuf_delim, 12)
8539 basic_istream_wchar* __thiscall basic_istream_wchar_get_streambuf_delim(basic_istream_wchar *this, basic_streambuf_wchar *strbuf, wchar_t delim)
8541 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8542 unsigned short ch = delim;
8544 TRACE("(%p %p %c)\n", this, strbuf, delim);
8546 this->count = 0;
8548 if(basic_istream_wchar_sentry_create(this, TRUE)) {
8549 basic_streambuf_wchar *strbuf_read = basic_ios_wchar_rdbuf_get(base);
8551 for(ch = basic_streambuf_wchar_sgetc(strbuf_read); ;
8552 ch = basic_streambuf_wchar_snextc(strbuf_read)) {
8553 if(ch==WEOF || ch==delim)
8554 break;
8556 if(basic_streambuf_wchar_sputc(strbuf, ch) == WEOF)
8557 break;
8558 this->count++;
8561 basic_istream_wchar_sentry_destroy(this);
8563 basic_ios_wchar_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) |
8564 (ch==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
8565 return this;
8568 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@AAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@@Z */
8569 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@@Z */
8570 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@AAV?$basic_streambuf@GU?$char_traits@G@std@@@2@@Z */
8571 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@@Z */
8572 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_streambuf, 8)
8573 basic_istream_wchar* __thiscall basic_istream_wchar_get_streambuf(basic_istream_wchar *this, basic_streambuf_wchar *strbuf)
8575 return basic_istream_wchar_get_streambuf_delim(this, strbuf, '\n');
8578 /* ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH_W@Z */
8579 /* ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J_W@Z */
8580 /* ?getline@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGHG@Z */
8581 /* ?getline@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_JG@Z */
8582 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_getline_delim, 16)
8583 basic_istream_wchar* __thiscall basic_istream_wchar_getline_delim(basic_istream_wchar *this, wchar_t *str, streamsize count, wchar_t delim)
8585 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8586 unsigned short ch = delim;
8588 TRACE("(%p %p %ld %c)\n", this, str, count, delim);
8590 this->count = 0;
8592 if(basic_istream_wchar_sentry_create(this, TRUE) && count>0) {
8593 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8595 while(count > 1) {
8596 ch = basic_streambuf_wchar_sbumpc(strbuf);
8598 if(ch==WEOF || ch==delim)
8599 break;
8601 *str++ = ch;
8602 this->count++;
8603 count--;
8606 if(ch == delim)
8607 this->count++;
8608 else if(ch != WEOF) {
8609 ch = basic_streambuf_wchar_sgetc(strbuf);
8611 if(ch == delim) {
8612 basic_streambuf_wchar__Gninc(strbuf);
8613 this->count++;
8617 basic_istream_wchar_sentry_destroy(this);
8619 basic_ios_wchar_setstate(base, (ch==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit) |
8620 (!this->count || (ch!=delim && ch!=WEOF) ? IOSTATE_failbit : IOSTATE_goodbit));
8621 if(count > 0)
8622 *str = 0;
8623 return this;
8626 /* ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH@Z */
8627 /* ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J@Z */
8628 /* ?getline@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGH@Z */
8629 /* ?getline@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_J@Z */
8630 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_getline, 12)
8631 basic_istream_wchar* __thiscall basic_istream_wchar_getline(basic_istream_wchar *this, wchar_t *str, streamsize count)
8633 return basic_istream_wchar_getline_delim(this, str, count, '\n');
8636 /* ?ignore@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@HG@Z */
8637 /* ?ignore@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_JG@Z */
8638 /* ?ignore@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@HG@Z */
8639 /* ?ignore@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@_JG@Z */
8640 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ignore, 12)
8641 basic_istream_wchar* __thiscall basic_istream_wchar_ignore(basic_istream_wchar *this, streamsize count, unsigned short delim)
8643 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8644 unsigned short ch = delim;
8646 TRACE("(%p %ld %d)\n", this, count, delim);
8648 this->count = 0;
8650 if(basic_istream_wchar_sentry_create(this, TRUE)) {
8651 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8653 while(count > 0) {
8654 ch = basic_streambuf_wchar_sbumpc(strbuf);
8656 if(ch==WEOF || ch==delim)
8657 break;
8659 this->count++;
8660 if(count != INT_MAX)
8661 count--;
8664 basic_istream_wchar_sentry_destroy(this);
8666 if(ch == WEOF)
8667 basic_ios_wchar_setstate(base, IOSTATE_eofbit);
8668 return this;
8671 /* ?peek@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
8672 /* ?peek@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
8673 /* ?peek@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEGXZ */
8674 /* ?peek@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAGXZ */
8675 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_peek, 4)
8676 unsigned short __thiscall basic_istream_wchar_peek(basic_istream_wchar *this)
8678 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8679 unsigned short ret = WEOF;
8681 TRACE("(%p)\n", this);
8683 this->count = 0;
8685 if(basic_istream_wchar_sentry_create(this, TRUE))
8686 ret = basic_streambuf_wchar_sgetc(basic_ios_wchar_rdbuf_get(base));
8687 basic_istream_wchar_sentry_destroy(this);
8688 return ret;
8691 /* ?_Read_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WIH@Z */
8692 /* ?_Read_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_K_J@Z */
8693 /* ?_Read_s@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGIH@Z */
8694 /* ?_Read_s@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_K_J@Z */
8695 DEFINE_THISCALL_WRAPPER(basic_istream_wchar__Read_s, 16)
8696 basic_istream_wchar* __thiscall basic_istream_wchar__Read_s(basic_istream_wchar *this, wchar_t *str, MSVCP_size_t size, streamsize count)
8698 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8699 IOSB_iostate state = IOSTATE_goodbit;
8701 TRACE("(%p %p %lu %ld)\n", this, str, size, count);
8703 if(basic_istream_wchar_sentry_create(this, TRUE)) {
8704 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8706 this->count = basic_streambuf_wchar__Sgetn_s(strbuf, str, size, count);
8707 if(this->count != count)
8708 state |= IOSTATE_failbit | IOSTATE_eofbit;
8709 }else {
8710 this->count = 0;
8712 basic_istream_wchar_sentry_destroy(this);
8714 basic_ios_wchar_setstate(base, state);
8715 return this;
8718 /* ?read@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH@Z */
8719 /* ?read@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J@Z */
8720 /* ?read@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGH@Z */
8721 /* ?read@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_J@Z */
8722 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read, 12)
8723 basic_istream_wchar* __thiscall basic_istream_wchar_read(basic_istream_wchar *this, wchar_t *str, streamsize count)
8725 return basic_istream_wchar__Read_s(this, str, count, count);
8728 /* ?_Readsome_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEHPA_WIH@Z */
8729 /* ?_Readsome_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_JPEA_W_K_J@Z */
8730 /* ?_Readsome_s@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEHPAGIH@Z */
8731 /* ?_Readsome_s@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA_JPEAG_K_J@Z */
8732 DEFINE_THISCALL_WRAPPER(basic_istream_wchar__Readsome_s, 16)
8733 streamsize __thiscall basic_istream_wchar__Readsome_s(basic_istream_wchar *this, wchar_t *str, MSVCP_size_t size, streamsize count)
8735 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8736 IOSB_iostate state = IOSTATE_goodbit;
8738 TRACE("(%p %p %lu %ld)\n", this, str, size, count);
8740 this->count = 0;
8742 if(basic_istream_wchar_sentry_create(this, TRUE)) {
8743 streamsize avail = basic_streambuf_wchar_in_avail(basic_ios_wchar_rdbuf_get(base));
8744 if(avail > count)
8745 avail = count;
8747 if(avail == -1)
8748 state |= IOSTATE_eofbit;
8749 else if(avail > 0)
8750 basic_istream_wchar__Read_s(this, str, size, avail);
8751 }else {
8752 state |= IOSTATE_failbit;
8754 basic_istream_wchar_sentry_destroy(this);
8756 basic_ios_wchar_setstate(base, state);
8757 return this->count;
8760 /* ?readsome@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEHPA_WH@Z */
8761 /* ?readsome@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_JPEA_W_J@Z */
8762 /* ?readsome@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEHPAGH@Z */
8763 /* ?readsome@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA_JPEAG_J@Z */
8764 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_readsome, 12)
8765 streamsize __thiscall basic_istream_wchar_readsome(basic_istream_wchar *this, wchar_t *str, streamsize count)
8767 return basic_istream_wchar__Readsome_s(this, str, count, count);
8770 /* ?putback@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@_W@Z */
8771 /* ?putback@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_W@Z */
8772 /* ?putback@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@G@Z */
8773 /* ?putback@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@G@Z */
8774 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_putback, 8)
8775 basic_istream_wchar* __thiscall basic_istream_wchar_putback(basic_istream_wchar *this, wchar_t ch)
8777 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8778 IOSB_iostate state = IOSTATE_goodbit;
8780 TRACE("(%p %c)\n", this, ch);
8782 this->count = 0;
8784 if(basic_istream_wchar_sentry_create(this, TRUE)) {
8785 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8787 if(!ios_base_good(&base->base))
8788 state |= IOSTATE_failbit;
8789 else if(!strbuf || basic_streambuf_wchar_sputbackc(strbuf, ch)==WEOF)
8790 state |= IOSTATE_badbit;
8792 basic_istream_wchar_sentry_destroy(this);
8794 basic_ios_wchar_setstate(base, state);
8795 return this;
8798 /* ?unget@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@XZ */
8799 /* ?unget@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@XZ */
8800 /* ?unget@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@XZ */
8801 /* ?unget@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@XZ */
8802 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_unget, 4)
8803 basic_istream_wchar* __thiscall basic_istream_wchar_unget(basic_istream_wchar *this)
8805 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8806 IOSB_iostate state = IOSTATE_goodbit;
8808 TRACE("(%p)\n", this);
8810 this->count = 0;
8812 if(basic_istream_wchar_sentry_create(this, TRUE)) {
8813 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8815 if(!ios_base_good(&base->base))
8816 state |= IOSTATE_failbit;
8817 else if(!strbuf || basic_streambuf_wchar_sungetc(strbuf)==WEOF)
8818 state |= IOSTATE_badbit;
8820 basic_istream_wchar_sentry_destroy(this);
8822 basic_ios_wchar_setstate(base, state);
8823 return this;
8826 /* ?sync@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEHXZ */
8827 /* ?sync@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAHXZ */
8828 /* ?sync@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEHXZ */
8829 /* ?sync@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAHXZ */
8830 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_sync, 4)
8831 int __thiscall basic_istream_wchar_sync(basic_istream_wchar *this)
8833 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8834 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8836 TRACE("(%p)\n", this);
8838 if(!strbuf)
8839 return -1;
8841 if(basic_istream_wchar_sentry_create(this, TRUE)) {
8842 if(basic_streambuf_wchar_pubsync(strbuf) != -1) {
8843 basic_istream_wchar_sentry_destroy(this);
8844 return 0;
8847 basic_istream_wchar_sentry_destroy(this);
8849 basic_ios_wchar_setstate(base, IOSTATE_badbit);
8850 return -1;
8853 /* ?tellg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@XZ */
8854 /* ?tellg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
8855 /* ?tellg@?$basic_istream@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@XZ */
8856 /* ?tellg@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
8857 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_tellg, 8)
8858 fpos_int* __thiscall basic_istream_wchar_tellg(basic_istream_wchar *this, fpos_int *ret)
8860 TRACE("(%p %p)\n", this, ret);
8862 if(basic_istream_wchar_sentry_create(this, TRUE)) {
8863 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8864 if(!ios_base_fail(&base->base)) {
8865 basic_streambuf_wchar_pubseekoff(basic_ios_wchar_rdbuf_get(base),
8866 ret, 0, SEEKDIR_cur, OPENMODE_in);
8867 basic_istream_wchar_sentry_destroy(this);
8869 if(ret->off==0 && ret->pos==-1 && ret->state==0)
8870 basic_ios_wchar_setstate(base, IOSTATE_failbit);
8871 return ret;
8874 basic_istream_wchar_sentry_destroy(this);
8876 ret->off = 0;
8877 ret->pos = -1;
8878 ret->state = 0;
8879 return ret;
8882 /* ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@JH@Z */
8883 /* ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_JH@Z */
8884 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@JH@Z */
8885 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@_JH@Z */
8886 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_seekg, 12)
8887 basic_istream_wchar* __thiscall basic_istream_wchar_seekg(basic_istream_wchar *this, streamoff off, int dir)
8889 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8891 TRACE("(%p %ld %d)\n", this, off, dir);
8893 if(basic_istream_wchar_sentry_create(this, TRUE)) {
8894 if(!ios_base_fail(&base->base)) {
8895 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8896 fpos_int ret;
8898 basic_streambuf_wchar_pubseekoff(strbuf, &ret, off, dir, OPENMODE_in);
8899 basic_istream_wchar_sentry_destroy(this);
8901 if(ret.off==0 && ret.pos==-1 && ret.state==0)
8902 basic_ios_wchar_setstate(base, IOSTATE_failbit);
8903 else
8904 basic_ios_wchar_clear(base, IOSTATE_goodbit);
8905 return this;
8908 basic_istream_wchar_sentry_destroy(this);
8910 basic_ios_wchar_setstate(base, IOSTATE_failbit);
8911 return this;
8914 /* ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
8915 /* ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
8916 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
8917 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
8918 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_seekg_fpos, 28)
8919 basic_istream_wchar* __thiscall basic_istream_wchar_seekg_fpos(basic_istream_wchar *this, fpos_int pos)
8921 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8923 TRACE("(%p %s)\n", this, debugstr_fpos_int(&pos));
8925 if(basic_istream_wchar_sentry_create(this, TRUE)) {
8926 if(!ios_base_fail(&base->base)) {
8927 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8928 fpos_int ret;
8930 basic_streambuf_wchar_pubseekpos(strbuf, &ret, pos, OPENMODE_in);
8931 basic_istream_wchar_sentry_destroy(this);
8933 if(ret.off==0 && ret.pos==-1 && ret.state==0)
8934 basic_ios_wchar_setstate(base, IOSTATE_failbit);
8935 else
8936 basic_ios_wchar_clear(base, IOSTATE_goodbit);
8937 return this;
8940 basic_istream_wchar_sentry_destroy(this);
8942 basic_ios_wchar_setstate(base, IOSTATE_failbit);
8943 return this;
8946 static basic_istream_wchar* basic_istream_read_short(basic_istream_wchar *this, short *v, const num_get *numget)
8948 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8949 int state = IOSTATE_goodbit;
8951 TRACE("(%p %p)\n", this, v);
8953 if(basic_istream_wchar_sentry_create(this, FALSE)) {
8954 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8955 istreambuf_iterator_wchar first={0}, last={0};
8956 LONG tmp;
8958 first.strbuf = strbuf;
8959 num_get_wchar_get_long(numget, &last, first, last, &base->base, &state, &tmp);
8961 if(!(state&IOSTATE_failbit) && tmp==(LONG)((short)tmp))
8962 *v = tmp;
8963 else
8964 state |= IOSTATE_failbit;
8966 basic_istream_wchar_sentry_destroy(this);
8968 basic_ios_wchar_setstate(base, state);
8969 return this;
8972 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAF@Z */
8973 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAF@Z */
8974 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_short, 8)
8975 basic_istream_wchar* __thiscall basic_istream_wchar_read_short(basic_istream_wchar *this, short *v)
8977 return basic_istream_read_short(this, v, num_get_wchar_use_facet(
8978 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
8981 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAF@Z */
8982 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAF@Z */
8983 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_short, 8)
8984 basic_istream_wchar* __thiscall basic_istream_short_read_short(basic_istream_wchar *this, short *v)
8986 return basic_istream_read_short(this, v, num_get_short_use_facet(
8987 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
8990 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAG@Z */
8991 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAG@Z */
8992 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_ushort, 8)
8993 basic_istream_wchar* __thiscall basic_istream_wchar_read_ushort(basic_istream_wchar *this, unsigned short *v)
8995 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8996 int state = IOSTATE_goodbit;
8998 TRACE("(%p %p)\n", this, v);
9000 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9001 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9002 const num_get *numget = num_get_wchar_use_facet(strbuf->loc);
9003 istreambuf_iterator_wchar first={0}, last={0};
9005 first.strbuf = strbuf;
9006 num_get_wchar_get_ushort(numget, &last, first, last, &base->base, &state, v);
9008 basic_istream_wchar_sentry_destroy(this);
9010 basic_ios_wchar_setstate(base, state);
9011 return this;
9014 static basic_istream_wchar* basic_istream_read_int(basic_istream_wchar *this, int *v, const num_get *numget)
9016 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9017 int state = IOSTATE_goodbit;
9019 TRACE("(%p %p)\n", this, v);
9021 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9022 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9023 istreambuf_iterator_wchar first={0}, last={0};
9025 first.strbuf = strbuf;
9026 num_get_wchar_get_long(numget, &last, first, last, &base->base, &state, v);
9028 basic_istream_wchar_sentry_destroy(this);
9030 basic_ios_wchar_setstate(base, state);
9031 return this;
9034 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAH@Z */
9035 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAH@Z */
9036 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_int, 8)
9037 basic_istream_wchar* __thiscall basic_istream_wchar_read_int(basic_istream_wchar *this, int *v)
9039 return basic_istream_read_int(this, v, num_get_wchar_use_facet(
9040 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9043 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAH@Z */
9044 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAH@Z */
9045 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_int, 8)
9046 basic_istream_wchar* __thiscall basic_istream_short_read_int(basic_istream_wchar *this, int *v)
9048 return basic_istream_read_int(this, v, num_get_short_use_facet(
9049 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9052 static basic_istream_wchar* basic_istream_read_uint(basic_istream_wchar *this, unsigned int *v, const num_get *numget)
9054 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9055 int state = IOSTATE_goodbit;
9057 TRACE("(%p %p)\n", this, v);
9059 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9060 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9061 istreambuf_iterator_wchar first={0}, last={0};
9063 first.strbuf = strbuf;
9064 num_get_wchar_get_uint(numget, &last, first, last, &base->base, &state, v);
9066 basic_istream_wchar_sentry_destroy(this);
9068 basic_ios_wchar_setstate(base, state);
9069 return this;
9072 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAI@Z */
9073 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAI@Z */
9074 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_uint, 8)
9075 basic_istream_wchar* __thiscall basic_istream_wchar_read_uint(basic_istream_wchar *this, unsigned int *v)
9077 return basic_istream_read_uint(this, v, num_get_wchar_use_facet(
9078 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9081 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAI@Z */
9082 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAI@Z */
9083 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_uint, 8)
9084 basic_istream_wchar* __thiscall basic_istream_short_read_uint(basic_istream_wchar *this, unsigned int *v)
9086 return basic_istream_read_uint(this, v, num_get_short_use_facet(
9087 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9090 static basic_istream_wchar* basic_istream_read_long(basic_istream_wchar *this, LONG *v, const num_get *numget)
9092 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9093 int state = IOSTATE_goodbit;
9095 TRACE("(%p %p)\n", this, v);
9097 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9098 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9099 istreambuf_iterator_wchar first={0}, last={0};
9101 first.strbuf = strbuf;
9102 num_get_wchar_get_long(numget, &last, first, last, &base->base, &state, v);
9104 basic_istream_wchar_sentry_destroy(this);
9106 basic_ios_wchar_setstate(base, state);
9107 return this;
9110 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAJ@Z */
9111 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAJ@Z */
9112 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_long, 8)
9113 basic_istream_wchar* __thiscall basic_istream_wchar_read_long(basic_istream_wchar *this, LONG *v)
9115 return basic_istream_read_long(this, v, num_get_wchar_use_facet(
9116 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9119 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAJ@Z */
9120 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAJ@Z */
9121 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_long, 8)
9122 basic_istream_wchar* __thiscall basic_istream_short_read_long(basic_istream_wchar *this, LONG *v)
9124 return basic_istream_read_long(this, v, num_get_short_use_facet(
9125 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9128 static basic_istream_wchar* basic_istream_read_ulong(basic_istream_wchar *this, ULONG *v, const num_get *numget)
9130 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9131 int state = IOSTATE_goodbit;
9133 TRACE("(%p %p)\n", this, v);
9135 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9136 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9137 istreambuf_iterator_wchar first={0}, last={0};
9139 first.strbuf = strbuf;
9140 num_get_wchar_get_ulong(numget, &last, first, last, &base->base, &state, v);
9142 basic_istream_wchar_sentry_destroy(this);
9144 basic_ios_wchar_setstate(base, state);
9145 return this;
9148 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAK@Z */
9149 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAK@Z */
9150 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_ulong, 8)
9151 basic_istream_wchar* __thiscall basic_istream_wchar_read_ulong(basic_istream_wchar *this, ULONG *v)
9153 return basic_istream_read_ulong(this, v, num_get_wchar_use_facet(
9154 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9157 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAK@Z */
9158 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAK@Z */
9159 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_ulong, 8)
9160 basic_istream_wchar* __thiscall basic_istream_short_read_ulong(basic_istream_wchar *this, ULONG *v)
9162 return basic_istream_read_ulong(this, v, num_get_short_use_facet(
9163 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9166 static basic_istream_wchar* basic_istream_read_float(basic_istream_wchar *this, float *v, const num_get *numget)
9168 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9169 int state = IOSTATE_goodbit;
9171 TRACE("(%p %p)\n", this, v);
9173 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9174 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9175 istreambuf_iterator_wchar first={0}, last={0};
9177 first.strbuf = strbuf;
9178 num_get_wchar_get_float(numget, &last, first, last, &base->base, &state, v);
9180 basic_istream_wchar_sentry_destroy(this);
9182 basic_ios_wchar_setstate(base, state);
9183 return this;
9186 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAM@Z */
9187 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAM@Z */
9188 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_float, 8)
9189 basic_istream_wchar* __thiscall basic_istream_wchar_read_float(basic_istream_wchar *this, float *v)
9191 return basic_istream_read_float(this, v, num_get_wchar_use_facet(
9192 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9195 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAM@Z */
9196 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAM@Z */
9197 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_float, 8)
9198 basic_istream_wchar* __thiscall basic_istream_short_read_float(basic_istream_wchar *this, float *v)
9200 return basic_istream_read_float(this, v, num_get_short_use_facet(
9201 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9204 static basic_istream_wchar* basic_istream_read_double(basic_istream_wchar *this, double *v, const num_get *numget)
9206 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9207 int state = IOSTATE_goodbit;
9209 TRACE("(%p %p)\n", this, v);
9211 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9212 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9213 istreambuf_iterator_wchar first={0}, last={0};
9215 first.strbuf = strbuf;
9216 num_get_wchar_get_double(numget, &last, first, last, &base->base, &state, v);
9218 basic_istream_wchar_sentry_destroy(this);
9220 basic_ios_wchar_setstate(base, state);
9221 return this;
9224 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAN@Z */
9225 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAN@Z */
9226 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_double, 8)
9227 basic_istream_wchar* __thiscall basic_istream_wchar_read_double(basic_istream_wchar *this, double *v)
9229 return basic_istream_read_double(this, v, num_get_wchar_use_facet(
9230 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9233 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAN@Z */
9234 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAN@Z */
9235 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_double, 8)
9236 basic_istream_wchar* __thiscall basic_istream_short_read_double(basic_istream_wchar *this, double *v)
9238 return basic_istream_read_double(this, v, num_get_short_use_facet(
9239 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9242 static basic_istream_wchar* basic_istream_read_ldouble(basic_istream_wchar *this, double *v, const num_get *numget)
9244 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9245 int state = IOSTATE_goodbit;
9247 TRACE("(%p %p)\n", this, v);
9249 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9250 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9251 istreambuf_iterator_wchar first={0}, last={0};
9253 first.strbuf = strbuf;
9254 num_get_wchar_get_ldouble(numget, &last, first, last, &base->base, &state, v);
9256 basic_istream_wchar_sentry_destroy(this);
9258 basic_ios_wchar_setstate(base, state);
9259 return this;
9262 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAO@Z */
9263 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAO@Z */
9264 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_ldouble, 8)
9265 basic_istream_wchar* __thiscall basic_istream_wchar_read_ldouble(basic_istream_wchar *this, double *v)
9267 return basic_istream_read_ldouble(this, v, num_get_wchar_use_facet(
9268 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9271 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAO@Z */
9272 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAO@Z */
9273 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_ldouble, 8)
9274 basic_istream_wchar* __thiscall basic_istream_short_read_ldouble(basic_istream_wchar *this, double *v)
9276 return basic_istream_read_ldouble(this, v, num_get_short_use_facet(
9277 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9280 static basic_istream_wchar* basic_istream_read_ptr(basic_istream_wchar *this, void **v, const num_get *numget)
9282 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9283 int state = IOSTATE_goodbit;
9285 TRACE("(%p %p)\n", this, v);
9287 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9288 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9289 istreambuf_iterator_wchar first={0}, last={0};
9291 first.strbuf = strbuf;
9292 num_get_wchar_get_void(numget, &last, first, last, &base->base, &state, v);
9294 basic_istream_wchar_sentry_destroy(this);
9296 basic_ios_wchar_setstate(base, state);
9297 return this;
9300 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAPAX@Z */
9301 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAPEAX@Z */
9302 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_ptr, 8)
9303 basic_istream_wchar* __thiscall basic_istream_wchar_read_ptr(basic_istream_wchar *this, void **v)
9305 return basic_istream_read_ptr(this, v, num_get_wchar_use_facet(
9306 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9309 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAPAX@Z */
9310 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAPEAX@Z */
9311 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_ptr, 8)
9312 basic_istream_wchar* __thiscall basic_istream_short_read_ptr(basic_istream_wchar *this, void **v)
9314 return basic_istream_read_ptr(this, v, num_get_short_use_facet(
9315 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9318 static basic_istream_wchar* basic_istream_read_int64(basic_istream_wchar *this, __int64 *v, const num_get *numget)
9320 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9321 int state = IOSTATE_goodbit;
9323 TRACE("(%p %p)\n", this, v);
9325 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9326 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9327 istreambuf_iterator_wchar first={0}, last={0};
9329 first.strbuf = strbuf;
9330 num_get_wchar_get_int64(numget, &last, first, last, &base->base, &state, v);
9332 basic_istream_wchar_sentry_destroy(this);
9334 basic_ios_wchar_setstate(base, state);
9335 return this;
9338 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AA_J@Z */
9339 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEA_J@Z */
9340 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_int64, 8)
9341 basic_istream_wchar* __thiscall basic_istream_wchar_read_int64(basic_istream_wchar *this, __int64 *v)
9343 return basic_istream_read_int64(this, v, num_get_wchar_use_facet(
9344 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9347 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AA_J@Z */
9348 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEA_J@Z */
9349 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_int64, 8)
9350 basic_istream_wchar* __thiscall basic_istream_short_read_int64(basic_istream_wchar *this, __int64 *v)
9352 return basic_istream_read_int64(this, v, num_get_short_use_facet(
9353 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9356 static basic_istream_wchar* basic_istream_read_uint64(basic_istream_wchar *this, unsigned __int64 *v, const num_get *numget)
9358 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9359 int state = IOSTATE_goodbit;
9361 TRACE("(%p %p)\n", this, v);
9363 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9364 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9365 istreambuf_iterator_wchar first={0}, last={0};
9367 first.strbuf = strbuf;
9368 num_get_wchar_get_uint64(numget, &last, first, last, &base->base, &state, v);
9370 basic_istream_wchar_sentry_destroy(this);
9372 basic_ios_wchar_setstate(base, state);
9373 return this;
9376 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AA_K@Z */
9377 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEA_K@Z */
9378 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_uint64, 8)
9379 basic_istream_wchar* __thiscall basic_istream_wchar_read_uint64(basic_istream_wchar *this, unsigned __int64 *v)
9381 return basic_istream_read_uint64(this, v, num_get_wchar_use_facet(
9382 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9385 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AA_K@Z */
9386 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEA_K@Z */
9387 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_uint64, 8)
9388 basic_istream_wchar* __thiscall basic_istream_short_read_uint64(basic_istream_wchar *this, unsigned __int64 *v)
9390 return basic_istream_read_uint64(this, v, num_get_short_use_facet(
9391 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9394 static basic_istream_wchar* basic_istream_read_bool(basic_istream_wchar *this, MSVCP_bool *v, const num_get *numget)
9396 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9397 int state = IOSTATE_goodbit;
9399 TRACE("(%p %p)\n", this, v);
9401 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9402 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9403 istreambuf_iterator_wchar first={0}, last={0};
9405 first.strbuf = strbuf;
9406 num_get_wchar_get_bool(numget, &last, first, last, &base->base, &state, v);
9408 basic_istream_wchar_sentry_destroy(this);
9410 basic_ios_wchar_setstate(base, state);
9411 return this;
9414 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AA_N@Z */
9415 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEA_N@Z */
9416 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_bool, 8)
9417 basic_istream_wchar* __thiscall basic_istream_wchar_read_bool(basic_istream_wchar *this, MSVCP_bool *v)
9419 return basic_istream_read_bool(this, v, num_get_wchar_use_facet(
9420 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9423 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AA_N@Z */
9424 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEA_N@Z */
9425 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_bool, 8)
9426 basic_istream_wchar* __thiscall basic_istream_short_read_bool(basic_istream_wchar *this, MSVCP_bool *v)
9428 return basic_istream_read_bool(this, v, num_get_short_use_facet(
9429 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9432 /* ??$getline@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@YAAAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AAV10@AAV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@_W@Z */
9433 /* ??$getline@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@YAAEAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AEAV10@AEAV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@_W@Z */
9434 /* ??$getline@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@0@AAV10@AAV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@G@Z */
9435 /* ??$getline@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@YAAEAV?$basic_istream@GU?$char_traits@G@std@@@0@AEAV10@AEAV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@G@Z */
9436 basic_istream_wchar* __cdecl basic_istream_wchar_getline_bstr_delim(
9437 basic_istream_wchar *istream, basic_string_wchar *str, wchar_t delim)
9439 IOSB_iostate state = IOSTATE_failbit;
9440 int c = delim;
9442 TRACE("(%p %p %c)\n", istream, str, delim);
9444 if(basic_istream_wchar_sentry_create(istream, TRUE)) {
9445 MSVCP_basic_string_wchar_clear(str);
9447 for(c = basic_istream_wchar_get(istream); c!=delim && c!=WEOF;
9448 c = basic_istream_wchar_get(istream)) {
9449 state = IOSTATE_goodbit;
9450 MSVCP_basic_string_wchar_append_ch(str, c);
9453 basic_istream_wchar_sentry_destroy(istream);
9455 basic_ios_wchar_setstate(basic_istream_wchar_get_basic_ios(istream),
9456 state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
9457 return istream;
9460 /* ??$getline@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@YAAAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AAV10@AAV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z */
9461 /* ??$getline@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@YAAEAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AEAV10@AEAV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z */
9462 /* ??$getline@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@0@AAV10@AAV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
9463 /* ??$getline@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@YAAEAV?$basic_istream@GU?$char_traits@G@std@@@0@AEAV10@AEAV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
9464 basic_istream_wchar* __cdecl basic_istream_wchar_getline_bstr(
9465 basic_istream_wchar *istream, basic_string_wchar *str)
9467 return basic_istream_wchar_getline_bstr_delim(istream, str, '\n');
9470 static basic_istream_wchar* basic_istream_read_bstr(basic_istream_wchar *istream,
9471 basic_string_wchar *str, const ctype_wchar *ctype)
9473 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istream);
9474 IOSB_iostate state = IOSTATE_failbit;
9475 int c = '\n';
9477 TRACE("(%p %p)\n", istream, str);
9479 if(basic_istream_wchar_sentry_create(istream, FALSE)) {
9480 MSVCP_size_t count = ios_base_width_get(&base->base);
9482 if(!count)
9483 count = -1;
9485 MSVCP_basic_string_wchar_clear(str);
9487 for(c = basic_streambuf_wchar_sgetc(basic_ios_wchar_rdbuf_get(base));
9488 c!=WEOF && !ctype_wchar_is_ch(ctype, _SPACE|_BLANK, c) && count>0;
9489 c = basic_streambuf_wchar_snextc(basic_ios_wchar_rdbuf_get(base)), count--) {
9490 state = IOSTATE_goodbit;
9491 MSVCP_basic_string_wchar_append_ch(str, c);
9494 ios_base_width_set(&base->base, 0);
9496 basic_istream_wchar_sentry_destroy(istream);
9498 basic_ios_wchar_setstate(base, state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
9499 return istream;
9502 /* ??$?5_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YAAAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AAV10@AAV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z */
9503 /* ??$?5_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YAAEAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AEAV10@AEAV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z */
9504 basic_istream_wchar* __cdecl basic_istream_wchar_read_bstr(
9505 basic_istream_wchar *istream, basic_string_wchar *str)
9507 return basic_istream_read_bstr(istream, str, ctype_wchar_use_facet(
9508 basic_istream_wchar_get_basic_ios(istream)->strbuf->loc));
9511 /* ??$?5GU?$char_traits@G@std@@V?$allocator@G@1@@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@0@AAV10@AAV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
9512 /* ??$?5GU?$char_traits@G@std@@V?$allocator@G@1@@std@@YAAEAV?$basic_istream@GU?$char_traits@G@std@@@0@AEAV10@AEAV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
9513 basic_istream_wchar* __cdecl basic_istream_short_read_bstr(
9514 basic_istream_wchar *istream, basic_string_wchar *str)
9516 return basic_istream_read_bstr(istream, str, ctype_short_use_facet(
9517 basic_istream_wchar_get_basic_ios(istream)->strbuf->loc));
9520 basic_istream_wchar* basic_istream_read_str(basic_istream_wchar *istream, wchar_t *str, const ctype_wchar *ctype)
9522 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istream);
9523 IOSB_iostate state = IOSTATE_failbit;
9524 unsigned short c = '\n';
9526 TRACE("(%p %p)\n", istream, str);
9528 if(basic_istream_wchar_sentry_create(istream, FALSE)) {
9529 MSVCP_size_t count = ios_base_width_get(&base->base)-1;
9531 for(c = basic_streambuf_wchar_sgetc(basic_ios_wchar_rdbuf_get(base));
9532 c!=WEOF && !ctype_wchar_is_ch(ctype, _SPACE|_BLANK, c) && count>0;
9533 c = basic_streambuf_wchar_snextc(basic_ios_wchar_rdbuf_get(base)), count--) {
9534 state = IOSTATE_goodbit;
9535 *str++ = c;
9538 *str = 0;
9539 ios_base_width_set(&base->base, 0);
9541 basic_istream_wchar_sentry_destroy(istream);
9543 basic_ios_wchar_setstate(base, state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
9544 return istream;
9547 /* ??$?5_WU?$char_traits@_W@std@@@std@@YAAAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AAV10@PA_W@Z */
9548 /* ??$?5_WU?$char_traits@_W@std@@@std@@YAAEAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AEAV10@PEA_W@Z */
9549 basic_istream_wchar* __cdecl basic_istream_wchar_read_str(basic_istream_wchar *istream, wchar_t *str)
9551 return basic_istream_read_str(istream, str, ctype_wchar_use_facet(
9552 basic_istream_wchar_get_basic_ios(istream)->strbuf->loc));
9555 /* ??$?5GU?$char_traits@G@std@@@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@0@AAV10@PAG@Z */
9556 /* ??$?5GU?$char_traits@G@std@@@std@@YAAEAV?$basic_istream@GU?$char_traits@G@std@@@0@AEAV10@PEAG@Z */
9557 basic_istream_wchar* __cdecl basic_istream_short_read_str(basic_istream_wchar *istream, wchar_t *str)
9559 return basic_istream_read_str(istream, str, ctype_short_use_facet(
9560 basic_istream_wchar_get_basic_ios(istream)->strbuf->loc));
9563 /* ??$?5_WU?$char_traits@_W@std@@@std@@YAAAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AAV10@AA_W@Z */
9564 /* ??$?5_WU?$char_traits@_W@std@@@std@@YAAEAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AEAV10@AEA_W@Z */
9565 /* ??$?5GU?$char_traits@G@std@@@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@0@AAV10@AAG@Z */
9566 /* ??$?5GU?$char_traits@G@std@@@std@@YAAEAV?$basic_istream@GU?$char_traits@G@std@@@0@AEAV10@AEAG@Z */
9567 basic_istream_wchar* __cdecl basic_istream_wchar_read_ch(basic_istream_wchar *istream, wchar_t *ch)
9569 IOSB_iostate state = IOSTATE_failbit;
9570 unsigned short c = 0;
9572 TRACE("(%p %p)\n", istream, ch);
9574 if(basic_istream_wchar_sentry_create(istream, FALSE)) {
9575 c = basic_streambuf_wchar_sbumpc(basic_ios_wchar_rdbuf_get(
9576 basic_istream_wchar_get_basic_ios(istream)));
9577 if(c != WEOF) {
9578 state = IOSTATE_goodbit;
9579 *ch = c;
9582 basic_istream_wchar_sentry_destroy(istream);
9584 basic_ios_wchar_setstate(basic_istream_wchar_get_basic_ios(istream),
9585 state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
9586 return istream;
9589 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
9590 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
9591 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
9592 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
9593 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_streambuf, 8)
9594 basic_istream_wchar* __thiscall basic_istream_wchar_read_streambuf(
9595 basic_istream_wchar *this, basic_streambuf_wchar *streambuf)
9597 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9598 IOSB_iostate state = IOSTATE_failbit;
9599 unsigned short c = '\n';
9601 TRACE("(%p %p)\n", this, streambuf);
9603 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9604 for(c = basic_streambuf_wchar_sgetc(basic_ios_wchar_rdbuf_get(base)); c!=WEOF;
9605 c = basic_streambuf_wchar_snextc(basic_ios_wchar_rdbuf_get(base))) {
9606 state = IOSTATE_goodbit;
9607 if(basic_streambuf_wchar_sputc(streambuf, c) == WEOF)
9608 break;
9611 basic_istream_wchar_sentry_destroy(this);
9613 basic_ios_wchar_setstate(base, state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
9614 return this;
9617 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
9618 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
9619 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
9620 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
9621 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_func, 8)
9622 basic_istream_wchar* __thiscall basic_istream_wchar_read_func(basic_istream_wchar *this,
9623 basic_istream_wchar* (__cdecl *pfunc)(basic_istream_wchar*))
9625 TRACE("(%p %p)\n", this, pfunc);
9626 pfunc(this);
9627 return this;
9630 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@_WU?$char_traits@_W@std@@@1@AAV21@@Z@Z */
9631 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@_WU?$char_traits@_W@std@@@1@AEAV21@@Z@Z */
9632 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@GU?$char_traits@G@std@@@1@AAV21@@Z@Z */
9633 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@GU?$char_traits@G@std@@@1@AEAV21@@Z@Z */
9634 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_func_basic_ios, 8)
9635 basic_istream_wchar* __thiscall basic_istream_wchar_read_func_basic_ios(basic_istream_wchar *this,
9636 basic_ios_wchar* (__cdecl *pfunc)(basic_ios_wchar*))
9638 TRACE("(%p %p)\n", this, pfunc);
9639 pfunc(basic_istream_wchar_get_basic_ios(this));
9640 return this;
9643 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
9644 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
9645 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
9646 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
9647 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_func_ios_base, 8)
9648 basic_istream_wchar* __thiscall basic_istream_wchar_read_func_ios_base(
9649 basic_istream_wchar *this, ios_base* (__cdecl *pfunc)(ios_base*))
9651 TRACE("(%p %p)\n", this, pfunc);
9652 pfunc(&basic_istream_wchar_get_basic_ios(this)->base);
9653 return this;
9656 static inline basic_ios_char* basic_iostream_char_to_basic_ios(basic_iostream_char *ptr)
9658 return (basic_ios_char*)((char*)ptr+basic_iostream_char_vbtable1[1]);
9661 static inline basic_iostream_char* basic_iostream_char_from_basic_ios(basic_ios_char *ptr)
9663 return (basic_iostream_char*)((char*)ptr-basic_iostream_char_vbtable1[1]);
9666 /* ??0?$basic_iostream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
9667 /* ??0?$basic_iostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
9668 DEFINE_THISCALL_WRAPPER(basic_iostream_char_ctor, 12)
9669 basic_iostream_char* __thiscall basic_iostream_char_ctor(basic_iostream_char *this, basic_streambuf_char *strbuf, MSVCP_bool virt_init)
9671 basic_ios_char *basic_ios;
9673 TRACE("(%p %p %d)\n", this, strbuf, virt_init);
9675 if(virt_init) {
9676 this->base1.vbtable = basic_iostream_char_vbtable1;
9677 this->base2.vbtable = basic_iostream_char_vbtable2;
9678 basic_ios = basic_istream_char_get_basic_ios(&this->base1);
9679 basic_ios_char_ctor(basic_ios);
9680 }else {
9681 basic_ios = basic_istream_char_get_basic_ios(&this->base1);
9684 basic_ios->base.vtable = &MSVCP_basic_iostream_char_vtable;
9686 basic_istream_char_ctor(&this->base1, strbuf, FALSE, FALSE);
9687 basic_ostream_char_ctor_uninitialized(&this->base2, 0, FALSE, FALSE);
9688 return this;
9691 /* ??1?$basic_iostream@DU?$char_traits@D@std@@@std@@UAE@XZ */
9692 /* ??1?$basic_iostream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
9693 DEFINE_THISCALL_WRAPPER(basic_iostream_char_dtor, 4)
9694 void __thiscall basic_iostream_char_dtor(basic_ios_char *base)
9696 basic_iostream_char *this = basic_iostream_char_from_basic_ios(base);
9698 TRACE("(%p)\n", this);
9699 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(&this->base2));
9700 basic_istream_char_dtor(basic_istream_char_to_basic_ios(&this->base1));
9703 /* ??_D?$basic_iostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
9704 /* ??_D?$basic_iostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
9705 DEFINE_THISCALL_WRAPPER(basic_iostream_char_vbase_dtor, 4)
9706 void __thiscall basic_iostream_char_vbase_dtor(basic_iostream_char *this)
9708 TRACE("(%p)\n", this);
9709 basic_iostream_char_dtor(basic_iostream_char_to_basic_ios(this));
9710 basic_ios_char_dtor(basic_istream_char_get_basic_ios(&this->base1));
9713 DEFINE_THISCALL_WRAPPER(MSVCP_basic_iostream_char_vector_dtor, 8)
9714 basic_iostream_char* __thiscall MSVCP_basic_iostream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
9716 basic_iostream_char *this = basic_iostream_char_from_basic_ios(base);
9718 TRACE("(%p %x)\n", this, flags);
9720 if(flags & 2) {
9721 /* we have an array, with the number of elements stored before the first object */
9722 int i, *ptr = (int *)this-1;
9724 for(i=*ptr-1; i>=0; i--)
9725 basic_iostream_char_vbase_dtor(this+i);
9726 MSVCRT_operator_delete(ptr);
9727 } else {
9728 basic_iostream_char_vbase_dtor(this);
9729 if(flags & 1)
9730 MSVCRT_operator_delete(this);
9733 return this;
9736 static inline basic_ios_wchar* basic_iostream_wchar_to_basic_ios(basic_iostream_wchar *ptr)
9738 return (basic_ios_wchar*)((char*)ptr+basic_iostream_wchar_vbtable1[1]);
9741 static inline basic_iostream_wchar* basic_iostream_wchar_from_basic_ios(basic_ios_wchar *ptr)
9743 return (basic_iostream_wchar*)((char*)ptr-basic_iostream_wchar_vbtable1[1]);
9746 /* ??0?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
9747 /* ??0?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
9748 DEFINE_THISCALL_WRAPPER(basic_iostream_wchar_ctor, 12)
9749 basic_iostream_wchar* __thiscall basic_iostream_wchar_ctor(basic_iostream_wchar *this,
9750 basic_streambuf_wchar *strbuf, MSVCP_bool virt_init)
9752 basic_ios_wchar *basic_ios;
9754 TRACE("(%p %p %d)\n", this, strbuf, virt_init);
9756 if(virt_init) {
9757 this->base1.vbtable = basic_iostream_wchar_vbtable1;
9758 this->base2.vbtable = basic_iostream_wchar_vbtable2;
9759 basic_ios = basic_istream_wchar_get_basic_ios(&this->base1);
9760 basic_ios_wchar_ctor(basic_ios);
9761 }else {
9762 basic_ios = basic_istream_wchar_get_basic_ios(&this->base1);
9765 basic_istream_wchar_ctor(&this->base1, strbuf, FALSE, FALSE);
9766 basic_ostream_wchar_ctor_uninitialized(&this->base2, 0, FALSE, FALSE);
9768 basic_ios->base.vtable = &MSVCP_basic_iostream_wchar_vtable;
9769 return this;
9772 /* ??0?$basic_iostream@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
9773 /* ??0?$basic_iostream@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
9774 DEFINE_THISCALL_WRAPPER(basic_iostream_short_ctor, 12)
9775 basic_iostream_wchar* __thiscall basic_iostream_short_ctor(basic_iostream_wchar *this,
9776 basic_streambuf_wchar *strbuf, MSVCP_bool virt_init)
9778 basic_iostream_wchar_ctor(this, strbuf, virt_init);
9779 basic_istream_wchar_get_basic_ios(&this->base1)->base.vtable = &MSVCP_basic_iostream_short_vtable;
9780 return this;
9783 /* ??1?$basic_iostream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
9784 /* ??1?$basic_iostream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
9785 /* ??1?$basic_iostream@GU?$char_traits@G@std@@@std@@UAE@XZ */
9786 /* ??1?$basic_iostream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
9787 DEFINE_THISCALL_WRAPPER(basic_iostream_wchar_dtor, 4)
9788 void __thiscall basic_iostream_wchar_dtor(basic_ios_wchar *base)
9790 basic_iostream_wchar *this = basic_iostream_wchar_from_basic_ios(base);
9792 TRACE("(%p)\n", this);
9793 basic_ostream_wchar_dtor(basic_ostream_wchar_to_basic_ios(&this->base2));
9794 basic_istream_wchar_dtor(basic_istream_wchar_to_basic_ios(&this->base1));
9797 /* ??_D?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
9798 /* ??_D?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
9799 /* ??_D?$basic_iostream@GU?$char_traits@G@std@@@std@@QAEXXZ */
9800 /* ??_D?$basic_iostream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
9801 DEFINE_THISCALL_WRAPPER(basic_iostream_wchar_vbase_dtor, 4)
9802 void __thiscall basic_iostream_wchar_vbase_dtor(basic_iostream_wchar *this)
9804 TRACE("(%p)\n", this);
9805 basic_iostream_wchar_dtor(basic_iostream_wchar_to_basic_ios(this));
9806 basic_ios_wchar_dtor(basic_istream_wchar_get_basic_ios(&this->base1));
9809 DEFINE_THISCALL_WRAPPER(MSVCP_basic_iostream_wchar_vector_dtor, 8)
9810 basic_iostream_wchar* __thiscall MSVCP_basic_iostream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
9812 basic_iostream_wchar *this = basic_iostream_wchar_from_basic_ios(base);
9814 TRACE("(%p %x)\n", this, flags);
9816 if(flags & 2) {
9817 /* we have an array, with the number of elements stored before the first object */
9818 int i, *ptr = (int *)this-1;
9820 for(i=*ptr-1; i>=0; i--)
9821 basic_iostream_wchar_vbase_dtor(this+i);
9822 MSVCRT_operator_delete(ptr);
9823 } else {
9824 basic_iostream_wchar_vbase_dtor(this);
9825 if(flags & 1)
9826 MSVCRT_operator_delete(this);
9829 return this;
9832 DEFINE_THISCALL_WRAPPER(MSVCP_basic_iostream_short_vector_dtor, 8)
9833 basic_iostream_wchar* __thiscall MSVCP_basic_iostream_short_vector_dtor(basic_ios_wchar *base, unsigned int flags)
9835 return MSVCP_basic_iostream_wchar_vector_dtor(base, flags);
9838 static inline basic_ios_char* basic_ofstream_char_to_basic_ios(basic_ofstream_char *ptr)
9840 return (basic_ios_char*)((char*)ptr+basic_ofstream_char_vbtable[1]);
9843 static inline basic_ofstream_char* basic_ofstream_char_from_basic_ios(basic_ios_char *ptr)
9845 return (basic_ofstream_char*)((char*)ptr-basic_ofstream_char_vbtable[1]);
9848 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@XZ */
9849 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@XZ */
9850 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_ctor, 8)
9851 basic_ofstream_char* __thiscall basic_ofstream_char_ctor(basic_ofstream_char *this, MSVCP_bool virt_init)
9853 basic_ios_char *basic_ios;
9855 TRACE("(%p %d)\n", this, virt_init);
9857 if(virt_init) {
9858 this->base.vbtable = basic_ofstream_char_vbtable;
9859 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
9860 basic_ios_char_ctor(basic_ios);
9861 }else {
9862 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
9865 basic_filebuf_char_ctor(&this->filebuf);
9866 basic_ostream_char_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
9867 basic_ios->base.vtable = &MSVCP_basic_ofstream_char_vtable;
9868 return this;
9871 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PAU_iobuf@@@Z */
9872 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@PEAU_iobuf@@@Z */
9873 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_ctor_file, 12)
9874 basic_ofstream_char* __thiscall basic_ofstream_char_ctor_file(
9875 basic_ofstream_char *this, FILE *file, MSVCP_bool virt_init)
9877 basic_ios_char *basic_ios;
9879 TRACE("(%p %p %d)\n", this, file, virt_init);
9881 if(virt_init) {
9882 this->base.vbtable = basic_ofstream_char_vbtable;
9883 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
9884 basic_ios_char_ctor(basic_ios);
9885 }else {
9886 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
9889 basic_filebuf_char_ctor_file(&this->filebuf, file);
9890 basic_ostream_char_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
9891 basic_ios->base.vtable = &MSVCP_basic_ofstream_char_vtable;
9892 return this;
9895 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PBDHH@Z */
9896 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDHH@Z */
9897 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_ctor_name, 20)
9898 basic_ofstream_char* __thiscall basic_ofstream_char_ctor_name(basic_ofstream_char *this,
9899 const char *name, int mode, int prot, MSVCP_bool virt_init)
9901 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
9903 basic_ofstream_char_ctor(this, virt_init);
9905 if(!basic_filebuf_char_open(&this->filebuf, name, mode|OPENMODE_out, prot)) {
9906 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
9907 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
9909 return this;
9912 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PBGHH@Z */
9913 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@PEBGHH@Z */
9914 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PB_WHH@Z */
9915 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@PEB_WHH@Z */
9916 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_ctor_name_wchar, 20)
9917 basic_ofstream_char* __thiscall basic_ofstream_char_ctor_name_wchar(basic_ofstream_char *this,
9918 const wchar_t *name, int mode, int prot, MSVCP_bool virt_init)
9920 TRACE("(%p %s %d %d %d)\n", this, debugstr_w(name), mode, prot, virt_init);
9922 basic_ofstream_char_ctor(this, virt_init);
9924 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode|OPENMODE_out, prot)) {
9925 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
9926 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
9928 return this;
9931 /* ??1?$basic_ofstream@DU?$char_traits@D@std@@@std@@UAE@XZ */
9932 /* ??1?$basic_ofstream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
9933 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_dtor, 4)
9934 void __thiscall basic_ofstream_char_dtor(basic_ios_char *base)
9936 basic_ofstream_char *this = basic_ofstream_char_from_basic_ios(base);
9938 TRACE("(%p)\n", this);
9940 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(&this->base));
9941 basic_filebuf_char_dtor(&this->filebuf);
9944 /* ??_D?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
9945 /* ??_D?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
9946 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_vbase_dtor, 4)
9947 void __thiscall basic_ofstream_char_vbase_dtor(basic_ofstream_char *this)
9949 TRACE("(%p)\n", this);
9951 basic_ofstream_char_dtor(basic_ofstream_char_to_basic_ios(this));
9952 basic_ios_char_dtor(basic_ostream_char_get_basic_ios(&this->base));
9955 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ofstream_char_vector_dtor, 8)
9956 basic_ofstream_char* __thiscall MSVCP_basic_ofstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
9958 basic_ofstream_char *this = basic_ofstream_char_from_basic_ios(base);
9960 TRACE("(%p %x)\n", this, flags);
9962 if(flags & 2) {
9963 /* we have an array, with the number of elements stored before the first object */
9964 int i, *ptr = (int *)this-1;
9966 for(i=*ptr-1; i>=0; i--)
9967 basic_ofstream_char_vbase_dtor(this+i);
9968 MSVCRT_operator_delete(ptr);
9969 } else {
9970 basic_ofstream_char_vbase_dtor(this);
9971 if(flags & 1)
9972 MSVCRT_operator_delete(this);
9975 return this;
9978 /* ?close@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
9979 /* ?close@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
9980 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_close, 4)
9981 void __thiscall basic_ofstream_char_close(basic_ofstream_char *this)
9983 TRACE("(%p)\n", this);
9985 if(!basic_filebuf_char_close(&this->filebuf)) {
9986 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
9987 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
9991 /* ?is_open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QBE_NXZ */
9992 /* ?is_open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEBA_NXZ */
9993 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_is_open, 4)
9994 MSVCP_bool __thiscall basic_ofstream_char_is_open(const basic_ofstream_char *this)
9996 TRACE("(%p)\n", this);
9997 return basic_filebuf_char_is_open(&this->filebuf);
10000 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPBDHH@Z */
10001 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDHH@Z */
10002 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_open, 16)
10003 void __thiscall basic_ofstream_char_open(basic_ofstream_char *this,
10004 const char *name, int mode, int prot)
10006 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
10008 if(!basic_filebuf_char_open(&this->filebuf, name, mode|OPENMODE_out, prot)) {
10009 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
10010 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
10014 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPBDI@Z */
10015 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDI@Z */
10016 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_open_old, 12)
10017 void __thiscall basic_ofstream_char_open_old(basic_ofstream_char *this,
10018 const char *name, unsigned int mode)
10020 basic_ofstream_char_open(this, name, mode, _SH_DENYNO);
10023 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPBGHH@Z */
10024 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGHH@Z */
10025 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPB_WHH@Z */
10026 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WHH@Z */
10027 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_open_wchar, 16)
10028 void __thiscall basic_ofstream_char_open_wchar(basic_ofstream_char *this,
10029 const wchar_t *name, int mode, int prot)
10031 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
10033 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode|OPENMODE_out, prot)) {
10034 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
10035 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
10039 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPBGI@Z */
10040 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGI@Z */
10041 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPB_WI@Z */
10042 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WI@Z */
10043 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_open_wchar_old, 12)
10044 void __thiscall basic_ofstream_char_open_wchar_old(basic_ofstream_char *this,
10045 const wchar_t *name, unsigned int mode)
10047 basic_ofstream_char_open_wchar(this, name, mode, _SH_DENYNO);
10050 /* ?rdbuf@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
10051 /* ?rdbuf@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
10052 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_rdbuf, 4)
10053 basic_filebuf_char* __thiscall basic_ofstream_char_rdbuf(const basic_ofstream_char *this)
10055 TRACE("(%p)\n", this);
10056 return (basic_filebuf_char*)&this->filebuf;
10059 static inline basic_ios_wchar* basic_ofstream_wchar_to_basic_ios(basic_ofstream_wchar *ptr)
10061 return (basic_ios_wchar*)((char*)ptr+basic_ofstream_wchar_vbtable[1]);
10064 static inline basic_ofstream_wchar* basic_ofstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
10066 return (basic_ofstream_wchar*)((char*)ptr-basic_ofstream_wchar_vbtable[1]);
10069 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAE@XZ */
10070 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAA@XZ */
10071 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_ctor, 8)
10072 basic_ofstream_wchar* __thiscall basic_ofstream_wchar_ctor(basic_ofstream_wchar *this, MSVCP_bool virt_init)
10074 basic_ios_wchar *basic_ios;
10076 TRACE("(%p %d)\n", this, virt_init);
10078 if(virt_init) {
10079 this->base.vbtable = basic_ofstream_wchar_vbtable;
10080 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
10081 basic_ios_wchar_ctor(basic_ios);
10082 }else {
10083 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
10086 basic_filebuf_wchar_ctor(&this->filebuf);
10087 basic_ostream_wchar_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
10088 basic_ios->base.vtable = &MSVCP_basic_ofstream_wchar_vtable;
10089 return this;
10092 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@XZ */
10093 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@XZ */
10094 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_ctor, 8)
10095 basic_ofstream_wchar* __thiscall basic_ofstream_short_ctor(basic_ofstream_wchar *this, MSVCP_bool virt_init)
10097 basic_ofstream_wchar_ctor(this, virt_init);
10098 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ofstream_short_vtable;
10099 return this;
10102 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAE@PAU_iobuf@@@Z */
10103 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAU_iobuf@@@Z */
10104 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_ctor_file, 12)
10105 basic_ofstream_wchar* __thiscall basic_ofstream_wchar_ctor_file(
10106 basic_ofstream_wchar *this, FILE *file, MSVCP_bool virt_init)
10108 basic_ios_wchar *basic_ios;
10110 TRACE("(%p %p %d)\n", this, file, virt_init);
10112 if(virt_init) {
10113 this->base.vbtable = basic_ofstream_wchar_vbtable;
10114 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
10115 basic_ios_wchar_ctor(basic_ios);
10116 }else {
10117 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
10120 basic_filebuf_wchar_ctor_file(&this->filebuf, file);
10121 basic_ostream_wchar_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
10122 basic_ios->base.vtable = &MSVCP_basic_ofstream_wchar_vtable;
10123 return this;
10126 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@PAU_iobuf@@@Z */
10127 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@PEAU_iobuf@@@Z */
10128 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_ctor_file, 12)
10129 basic_ofstream_wchar* __thiscall basic_ofstream_short_ctor_file(
10130 basic_ofstream_wchar *this, FILE *file, MSVCP_bool virt_init)
10132 basic_ofstream_wchar_ctor_file(this, file, virt_init);
10133 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ofstream_short_vtable;
10134 return this;
10137 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAE@PBDHH@Z */
10138 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEBDHH@Z */
10139 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_ctor_name, 20)
10140 basic_ofstream_wchar* __thiscall basic_ofstream_wchar_ctor_name(basic_ofstream_wchar *this,
10141 const char *name, int mode, int prot, MSVCP_bool virt_init)
10143 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
10145 basic_ofstream_wchar_ctor(this, virt_init);
10147 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode|OPENMODE_out, prot)) {
10148 basic_ios_wchar *basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
10149 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
10151 return this;
10154 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@PBDHH@Z */
10155 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@PEBDHH@Z */
10156 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_ctor_name, 20)
10157 basic_ofstream_wchar* __thiscall basic_ofstream_short_ctor_name(basic_ofstream_wchar *this,
10158 const char *name, int mode, int prot, MSVCP_bool virt_init)
10160 basic_ofstream_wchar_ctor_name(this, name, mode, prot, virt_init);
10161 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ofstream_short_vtable;
10162 return this;
10165 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAE@PBGHH@Z */
10166 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEBGHH@Z */
10167 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAE@PB_WHH@Z */
10168 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEB_WHH@Z */
10169 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_ctor_name_wchar, 20)
10170 basic_ofstream_wchar* __thiscall basic_ofstream_wchar_ctor_name_wchar(basic_ofstream_wchar *this,
10171 const wchar_t *name, int mode, int prot, MSVCP_bool virt_init)
10173 TRACE("(%p %s %d %d %d)\n", this, debugstr_w(name), mode, prot, virt_init);
10175 basic_ofstream_wchar_ctor(this, virt_init);
10177 if(!basic_filebuf_wchar_open_wchar(&this->filebuf, name, mode|OPENMODE_out, prot)) {
10178 basic_ios_wchar *basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
10179 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
10181 return this;
10184 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@PBGHH@Z */
10185 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@PEBGHH@Z */
10186 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@PB_WHH@Z */
10187 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@PEB_WHH@Z */
10188 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_ctor_name_wchar, 20)
10189 basic_ofstream_wchar* __thiscall basic_ofstream_short_ctor_name_wchar(basic_ofstream_wchar *this,
10190 const wchar_t *name, int mode, int prot, MSVCP_bool virt_init)
10192 basic_ofstream_wchar_ctor_name_wchar(this, name, mode, prot, virt_init);
10193 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ofstream_short_vtable;
10194 return this;
10197 /* ??1?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
10198 /* ??1?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
10199 /* ??1?$basic_ofstream@GU?$char_traits@G@std@@@std@@UAE@XZ */
10200 /* ??1?$basic_ofstream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
10201 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_dtor, 4)
10202 void __thiscall basic_ofstream_wchar_dtor(basic_ios_wchar *base)
10204 basic_ofstream_wchar *this = basic_ofstream_wchar_from_basic_ios(base);
10206 TRACE("(%p)\n", this);
10208 basic_ostream_wchar_dtor(basic_ostream_wchar_to_basic_ios(&this->base));
10209 basic_filebuf_wchar_dtor(&this->filebuf);
10212 /* ??_D?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
10213 /* ??_D?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
10214 /* ??_D?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
10215 /* ??_D?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
10216 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_vbase_dtor, 4)
10217 void __thiscall basic_ofstream_wchar_vbase_dtor(basic_ofstream_wchar *this)
10219 TRACE("(%p)\n", this);
10221 basic_ofstream_wchar_dtor(basic_ofstream_wchar_to_basic_ios(this));
10222 basic_ios_wchar_dtor(basic_ostream_wchar_get_basic_ios(&this->base));
10225 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ofstream_wchar_vector_dtor, 8)
10226 basic_ofstream_wchar* __thiscall MSVCP_basic_ofstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
10228 basic_ofstream_wchar *this = basic_ofstream_wchar_from_basic_ios(base);
10230 TRACE("(%p %x)\n", this, flags);
10232 if(flags & 2) {
10233 /* we have an array, with the number of elements stored before the first object */
10234 int i, *ptr = (int *)this-1;
10236 for(i=*ptr-1; i>=0; i--)
10237 basic_ofstream_wchar_vbase_dtor(this+i);
10238 MSVCRT_operator_delete(ptr);
10239 } else {
10240 basic_ofstream_wchar_vbase_dtor(this);
10241 if(flags & 1)
10242 MSVCRT_operator_delete(this);
10245 return this;
10248 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ofstream_short_vector_dtor, 8)
10249 basic_ofstream_wchar* __thiscall MSVCP_basic_ofstream_short_vector_dtor(basic_ios_wchar *base, unsigned int flags)
10251 return MSVCP_basic_ofstream_wchar_vector_dtor(base, flags);
10254 /* ?close@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
10255 /* ?close@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
10256 /* ?close@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
10257 /* ?close@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
10258 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_close, 4)
10259 void __thiscall basic_ofstream_wchar_close(basic_ofstream_wchar *this)
10261 TRACE("(%p)\n", this);
10263 if(!basic_filebuf_wchar_close(&this->filebuf)) {
10264 basic_ios_wchar *basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
10265 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
10269 /* ?is_open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QBE_NXZ */
10270 /* ?is_open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEBA_NXZ */
10271 /* ?is_open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QBE_NXZ */
10272 /* ?is_open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEBA_NXZ */
10273 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_is_open, 4)
10274 MSVCP_bool __thiscall basic_ofstream_wchar_is_open(const basic_ofstream_wchar *this)
10276 TRACE("(%p)\n", this);
10277 return basic_filebuf_wchar_is_open(&this->filebuf);
10280 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDHH@Z */
10281 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDHH@Z */
10282 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPBDHH@Z */
10283 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDHH@Z */
10284 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_open, 16)
10285 void __thiscall basic_ofstream_wchar_open(basic_ofstream_wchar *this,
10286 const char *name, int mode, int prot)
10288 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
10290 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode|OPENMODE_out, prot)) {
10291 basic_ios_wchar *basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
10292 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
10296 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDI@Z */
10297 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDI@Z */
10298 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPBDI@Z */
10299 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDI@Z */
10300 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_open_old, 12)
10301 void __thiscall basic_ofstream_wchar_open_old(basic_ofstream_wchar *this,
10302 const char *name, unsigned int mode)
10304 basic_ofstream_wchar_open(this, name, mode, _SH_DENYNO);
10307 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXPBGHH@Z */
10308 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBGHH@Z */
10309 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXPB_WHH@Z */
10310 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEB_WHH@Z */
10311 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPBGHH@Z */
10312 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEBGHH@Z */
10313 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPB_WHH@Z */
10314 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEB_WHH@Z */
10315 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_open_wchar, 16)
10316 void __thiscall basic_ofstream_wchar_open_wchar(basic_ofstream_wchar *this,
10317 const wchar_t *name, int mode, int prot)
10319 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
10321 if(!basic_filebuf_wchar_open_wchar(&this->filebuf, name, mode|OPENMODE_out, prot)) {
10322 basic_ios_wchar *basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
10323 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
10327 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXPBGI@Z */
10328 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBGI@Z */
10329 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXPB_WI@Z */
10330 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEB_WI@Z */
10331 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPBGI@Z */
10332 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEBGI@Z */
10333 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPB_WI@Z */
10334 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEB_WI@Z */
10335 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_open_wchar_old, 12)
10336 void __thiscall basic_ofstream_wchar_open_wchar_old(basic_ofstream_wchar *this,
10337 const wchar_t *name, unsigned int mode)
10339 basic_ofstream_wchar_open_wchar(this, name, mode, _SH_DENYNO);
10342 /* ?rdbuf@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
10343 /* ?rdbuf@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
10344 /* ?rdbuf@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
10345 /* ?rdbuf@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
10346 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_rdbuf, 4)
10347 basic_filebuf_wchar* __thiscall basic_ofstream_wchar_rdbuf(const basic_ofstream_wchar *this)
10349 TRACE("(%p)\n", this);
10350 return (basic_filebuf_wchar*)&this->filebuf;
10353 static inline basic_ios_char* basic_ifstream_char_to_basic_ios(basic_ifstream_char *ptr)
10355 return (basic_ios_char*)((char*)ptr+basic_ifstream_char_vbtable[1]);
10358 static inline basic_ifstream_char* basic_ifstream_char_from_basic_ios(basic_ios_char *ptr)
10360 return (basic_ifstream_char*)((char*)ptr-basic_ifstream_char_vbtable[1]);
10363 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@XZ */
10364 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@XZ */
10365 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor, 8)
10366 basic_ifstream_char* __thiscall basic_ifstream_char_ctor(basic_ifstream_char *this, MSVCP_bool virt_init)
10368 basic_ios_char *basic_ios;
10370 TRACE("(%p %d)\n", this, virt_init);
10372 if(virt_init) {
10373 this->base.vbtable = basic_ifstream_char_vbtable;
10374 basic_ios = basic_istream_char_get_basic_ios(&this->base);
10375 basic_ios_char_ctor(basic_ios);
10376 }else {
10377 basic_ios = basic_istream_char_get_basic_ios(&this->base);
10380 basic_filebuf_char_ctor(&this->filebuf);
10381 basic_istream_char_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
10382 basic_ios->base.vtable = &MSVCP_basic_ifstream_char_vtable;
10383 return this;
10386 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@PAU_iobuf@@@Z */
10387 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@PEAU_iobuf@@@Z */
10388 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor_file, 12)
10389 basic_ifstream_char* __thiscall basic_ifstream_char_ctor_file(
10390 basic_ifstream_char *this, FILE *file, MSVCP_bool virt_init)
10392 basic_ios_char *basic_ios;
10394 TRACE("(%p %p %d)\n", this, file, virt_init);
10396 if(virt_init) {
10397 this->base.vbtable = basic_ifstream_char_vbtable;
10398 basic_ios = basic_istream_char_get_basic_ios(&this->base);
10399 basic_ios_char_ctor(basic_ios);
10400 }else {
10401 basic_ios = basic_istream_char_get_basic_ios(&this->base);
10404 basic_filebuf_char_ctor_file(&this->filebuf, file);
10405 basic_istream_char_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
10406 basic_ios->base.vtable = &MSVCP_basic_ifstream_char_vtable;
10407 return this;
10410 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@PBDHH@Z */
10411 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDHH@Z */
10412 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor_name, 20)
10413 basic_ifstream_char* __thiscall basic_ifstream_char_ctor_name(basic_ifstream_char *this,
10414 const char *name, int mode, int prot, MSVCP_bool virt_init)
10416 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
10418 basic_ifstream_char_ctor(this, virt_init);
10420 if(!basic_filebuf_char_open(&this->filebuf, name, mode|OPENMODE_in, prot)) {
10421 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
10422 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
10424 return this;
10427 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@PBGHH@Z */
10428 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@PEBGHH@Z */
10429 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@PB_WHH@Z */
10430 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@PEB_WHH@Z */
10431 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor_name_wchar, 20)
10432 basic_ifstream_char* __thiscall basic_ifstream_char_ctor_name_wchar(basic_ifstream_char *this,
10433 const wchar_t *name, int mode, int prot, MSVCP_bool virt_init)
10435 TRACE("(%p %s %d %d %d)\n", this, debugstr_w(name), mode, prot, virt_init);
10437 basic_ifstream_char_ctor(this, virt_init);
10439 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode|OPENMODE_in, prot)) {
10440 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
10441 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
10443 return this;
10446 /* ??1?$basic_ifstream@DU?$char_traits@D@std@@@std@@UAE@XZ */
10447 /* ??1?$basic_ifstream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
10448 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_dtor, 4)
10449 void __thiscall basic_ifstream_char_dtor(basic_ios_char *base)
10451 basic_ifstream_char *this = basic_ifstream_char_from_basic_ios(base);
10453 TRACE("(%p)\n", this);
10455 basic_istream_char_dtor(basic_istream_char_to_basic_ios(&this->base));
10456 basic_filebuf_char_dtor(&this->filebuf);
10459 /* ??_D?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
10460 /* ??_D?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
10461 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_vbase_dtor, 4)
10462 void __thiscall basic_ifstream_char_vbase_dtor(basic_ifstream_char *this)
10464 TRACE("(%p)\n", this);
10466 basic_ifstream_char_dtor(basic_ifstream_char_to_basic_ios(this));
10467 basic_ios_char_dtor(basic_istream_char_get_basic_ios(&this->base));
10470 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ifstream_char_vector_dtor, 8)
10471 basic_ifstream_char* __thiscall MSVCP_basic_ifstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
10473 basic_ifstream_char *this = basic_ifstream_char_from_basic_ios(base);
10475 TRACE("(%p %x)\n", this, flags);
10477 if(flags & 2) {
10478 /* we have an array, with the number of elements stored before the first object */
10479 int i, *ptr = (int *)this-1;
10481 for(i=*ptr-1; i>=0; i--)
10482 basic_ifstream_char_vbase_dtor(this+i);
10483 MSVCRT_operator_delete(ptr);
10484 } else {
10485 basic_ifstream_char_vbase_dtor(this);
10486 if(flags & 1)
10487 MSVCRT_operator_delete(this);
10490 return this;
10493 /* ?close@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
10494 /* ?close@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
10495 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_close, 4)
10496 void __thiscall basic_ifstream_char_close(basic_ifstream_char *this)
10498 TRACE("(%p)\n", this);
10500 if(!basic_filebuf_char_close(&this->filebuf)) {
10501 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
10502 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
10506 /* ?is_open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QBE_NXZ */
10507 /* ?is_open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEBA_NXZ */
10508 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_is_open, 4)
10509 MSVCP_bool __thiscall basic_ifstream_char_is_open(const basic_ifstream_char *this)
10511 TRACE("(%p)\n", this);
10512 return basic_filebuf_char_is_open(&this->filebuf);
10515 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPBDHH@Z */
10516 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDHH@Z */
10517 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_open, 16)
10518 void __thiscall basic_ifstream_char_open(basic_ifstream_char *this,
10519 const char *name, int mode, int prot)
10521 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
10523 if(!basic_filebuf_char_open(&this->filebuf, name, mode|OPENMODE_in, prot)) {
10524 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
10525 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
10529 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPBDI@Z */
10530 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDI@Z */
10531 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_open_old, 12)
10532 void __thiscall basic_ifstream_char_open_old(basic_ifstream_char *this,
10533 const char *name, unsigned int mode)
10535 basic_ifstream_char_open(this, name, mode, _SH_DENYNO);
10538 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPBGHH@Z */
10539 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGHH@Z */
10540 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPB_WHH@Z */
10541 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WHH@Z */
10542 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_open_wchar, 16)
10543 void __thiscall basic_ifstream_char_open_wchar(basic_ifstream_char *this,
10544 const wchar_t *name, int mode, int prot)
10546 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
10548 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode|OPENMODE_in, prot)) {
10549 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
10550 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
10554 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPBGI@Z */
10555 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGI@Z */
10556 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPB_WI@Z */
10557 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WI@Z */
10558 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_open_wchar_old, 12)
10559 void __thiscall basic_ifstream_char_open_wchar_old(basic_ifstream_char *this,
10560 const wchar_t *name, unsigned int mode)
10562 basic_ifstream_char_open_wchar(this, name, mode, _SH_DENYNO);
10565 /* ?rdbuf@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
10566 /* ?rdbuf@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
10567 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_rdbuf, 4)
10568 basic_filebuf_char* __thiscall basic_ifstream_char_rdbuf(const basic_ifstream_char *this)
10570 TRACE("(%p)\n", this);
10571 return (basic_filebuf_char*)&this->filebuf;
10574 static inline basic_ios_wchar* basic_ifstream_wchar_to_basic_ios(basic_ifstream_wchar *ptr)
10576 return (basic_ios_wchar*)((char*)ptr+basic_ifstream_wchar_vbtable[1]);
10579 static inline basic_ifstream_wchar* basic_ifstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
10581 return (basic_ifstream_wchar*)((char*)ptr-basic_ifstream_wchar_vbtable[1]);
10584 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAE@XZ */
10585 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAA@XZ */
10586 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_ctor, 8)
10587 basic_ifstream_wchar* __thiscall basic_ifstream_wchar_ctor(basic_ifstream_wchar *this, MSVCP_bool virt_init)
10589 basic_ios_wchar *basic_ios;
10591 TRACE("(%p %d)\n", this, virt_init);
10593 if(virt_init) {
10594 this->base.vbtable = basic_ifstream_wchar_vbtable;
10595 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
10596 basic_ios_wchar_ctor(basic_ios);
10597 }else {
10598 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
10601 basic_filebuf_wchar_ctor(&this->filebuf);
10602 basic_istream_wchar_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
10603 basic_ios->base.vtable = &MSVCP_basic_ifstream_wchar_vtable;
10604 return this;
10607 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@XZ */
10608 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@XZ */
10609 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_ctor, 8)
10610 basic_ifstream_wchar* __thiscall basic_ifstream_short_ctor(basic_ifstream_wchar *this, MSVCP_bool virt_init)
10612 basic_ifstream_wchar_ctor(this, virt_init);
10613 basic_istream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ifstream_short_vtable;
10614 return this;
10617 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAE@PAU_iobuf@@@Z */
10618 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAU_iobuf@@@Z */
10619 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_ctor_file, 12)
10620 basic_ifstream_wchar* __thiscall basic_ifstream_wchar_ctor_file(
10621 basic_ifstream_wchar *this, FILE *file, MSVCP_bool virt_init)
10623 basic_ios_wchar *basic_ios;
10625 TRACE("(%p %p %d)\n", this, file, virt_init);
10627 if(virt_init) {
10628 this->base.vbtable = basic_ifstream_wchar_vbtable;
10629 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
10630 basic_ios_wchar_ctor(basic_ios);
10631 }else {
10632 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
10635 basic_filebuf_wchar_ctor_file(&this->filebuf, file);
10636 basic_istream_wchar_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
10637 basic_ios->base.vtable = &MSVCP_basic_ifstream_wchar_vtable;
10638 return this;
10641 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@PAU_iobuf@@@Z */
10642 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@PEAU_iobuf@@@Z */
10643 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_ctor_file, 12)
10644 basic_ifstream_wchar* __thiscall basic_ifstream_short_ctor_file(
10645 basic_ifstream_wchar *this, FILE *file, MSVCP_bool virt_init)
10647 basic_ifstream_wchar_ctor_file(this, file, virt_init);
10648 basic_istream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ifstream_short_vtable;
10649 return this;
10652 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAE@PBDHH@Z */
10653 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEBDHH@Z */
10654 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_ctor_name, 20)
10655 basic_ifstream_wchar* __thiscall basic_ifstream_wchar_ctor_name(basic_ifstream_wchar *this,
10656 const char *name, int mode, int prot, MSVCP_bool virt_init)
10658 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
10660 basic_ifstream_wchar_ctor(this, virt_init);
10662 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode|OPENMODE_in, prot)) {
10663 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
10664 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
10666 return this;
10669 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@PBDHH@Z */
10670 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@PEBDHH@Z */
10671 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_ctor_name, 20)
10672 basic_ifstream_wchar* __thiscall basic_ifstream_short_ctor_name(basic_ifstream_wchar *this,
10673 const char *name, int mode, int prot, MSVCP_bool virt_init)
10675 basic_ifstream_wchar_ctor_name(this, name, mode, prot, virt_init);
10676 basic_istream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ifstream_short_vtable;
10677 return this;
10680 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAE@PBGHH@Z */
10681 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEBGHH@Z */
10682 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAE@PB_WHH@Z */
10683 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEB_WHH@Z */
10684 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_ctor_name_wchar, 20)
10685 basic_ifstream_wchar* __thiscall basic_ifstream_wchar_ctor_name_wchar(basic_ifstream_wchar *this,
10686 const wchar_t *name, int mode, int prot, MSVCP_bool virt_init)
10688 TRACE("(%p %s %d %d %d)\n", this, debugstr_w(name), mode, prot, virt_init);
10690 basic_ifstream_wchar_ctor(this, virt_init);
10692 if(!basic_filebuf_wchar_open_wchar(&this->filebuf, name, mode|OPENMODE_in, prot)) {
10693 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
10694 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
10696 return this;
10699 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@PBGHH@Z */
10700 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@PEBGHH@Z */
10701 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@PB_WHH@Z */
10702 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@PEB_WHH@Z */
10703 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_ctor_name_wchar, 20)
10704 basic_ifstream_wchar* __thiscall basic_ifstream_short_ctor_name_wchar(basic_ifstream_wchar *this,
10705 const wchar_t *name, int mode, int prot, MSVCP_bool virt_init)
10707 basic_ifstream_wchar_ctor_name_wchar(this, name, mode, prot, virt_init);
10708 basic_istream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ifstream_short_vtable;
10709 return this;
10712 /* ??1?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
10713 /* ??1?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
10714 /* ??1?$basic_ifstream@GU?$char_traits@G@std@@@std@@UAE@XZ */
10715 /* ??1?$basic_ifstream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
10716 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_dtor, 4)
10717 void __thiscall basic_ifstream_wchar_dtor(basic_ios_wchar *base)
10719 basic_ifstream_wchar *this = basic_ifstream_wchar_from_basic_ios(base);
10721 TRACE("(%p)\n", this);
10723 basic_istream_wchar_dtor(basic_istream_wchar_to_basic_ios(&this->base));
10724 basic_filebuf_wchar_dtor(&this->filebuf);
10727 /* ??_D?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
10728 /* ??_D?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
10729 /* ??_D?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
10730 /* ??_D?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
10731 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_vbase_dtor, 4)
10732 void __thiscall basic_ifstream_wchar_vbase_dtor(basic_ifstream_wchar *this)
10734 TRACE("(%p)\n", this);
10736 basic_ifstream_wchar_dtor(basic_ifstream_wchar_to_basic_ios(this));
10737 basic_ios_wchar_dtor(basic_istream_wchar_get_basic_ios(&this->base));
10740 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ifstream_wchar_vector_dtor, 8)
10741 basic_ifstream_wchar* __thiscall MSVCP_basic_ifstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
10743 basic_ifstream_wchar *this = basic_ifstream_wchar_from_basic_ios(base);
10745 TRACE("(%p %x)\n", this, flags);
10747 if(flags & 2) {
10748 /* we have an array, with the number of elements stored before the first object */
10749 int i, *ptr = (int *)this-1;
10751 for(i=*ptr-1; i>=0; i--)
10752 basic_ifstream_wchar_vbase_dtor(this+i);
10753 MSVCRT_operator_delete(ptr);
10754 } else {
10755 basic_ifstream_wchar_vbase_dtor(this);
10756 if(flags & 1)
10757 MSVCRT_operator_delete(this);
10760 return this;
10763 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ifstream_short_vector_dtor, 8)
10764 basic_ifstream_wchar* __thiscall MSVCP_basic_ifstream_short_vector_dtor(basic_ios_wchar *base, unsigned int flags)
10766 return MSVCP_basic_ifstream_wchar_vector_dtor(base, flags);
10769 /* ?close@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
10770 /* ?close@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
10771 /* ?close@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
10772 /* ?close@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
10773 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_close, 4)
10774 void __thiscall basic_ifstream_wchar_close(basic_ifstream_wchar *this)
10776 TRACE("(%p)\n", this);
10778 if(!basic_filebuf_wchar_close(&this->filebuf)) {
10779 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
10780 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
10784 /* ?is_open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QBE_NXZ */
10785 /* ?is_open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEBA_NXZ */
10786 /* ?is_open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QBE_NXZ */
10787 /* ?is_open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEBA_NXZ */
10788 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_is_open, 4)
10789 MSVCP_bool __thiscall basic_ifstream_wchar_is_open(const basic_ifstream_wchar *this)
10791 TRACE("(%p)\n", this);
10792 return basic_filebuf_wchar_is_open(&this->filebuf);
10795 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDHH@Z */
10796 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDHH@Z */
10797 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPBDHH@Z */
10798 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDHH@Z */
10799 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_open, 16)
10800 void __thiscall basic_ifstream_wchar_open(basic_ifstream_wchar *this,
10801 const char *name, int mode, int prot)
10803 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
10805 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode|OPENMODE_in, prot)) {
10806 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
10807 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
10811 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDI@Z */
10812 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDI@Z */
10813 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPBDI@Z */
10814 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDI@Z */
10815 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_open_old, 12)
10816 void __thiscall basic_ifstream_wchar_open_old(basic_ifstream_wchar *this,
10817 const char *name, unsigned int mode)
10819 basic_ifstream_wchar_open(this, name, mode, _SH_DENYNO);
10822 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXPBGHH@Z */
10823 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBGHH@Z */
10824 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXPB_WHH@Z */
10825 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEB_WHH@Z */
10826 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPBGHH@Z */
10827 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEBGHH@Z */
10828 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPB_WHH@Z */
10829 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEB_WHH@Z */
10830 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_open_wchar, 16)
10831 void __thiscall basic_ifstream_wchar_open_wchar(basic_ifstream_wchar *this,
10832 const wchar_t *name, int mode, int prot)
10834 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
10836 if(!basic_filebuf_wchar_open_wchar(&this->filebuf, name, mode|OPENMODE_in, prot)) {
10837 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
10838 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
10842 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXPBGI@Z */
10843 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBGI@Z */
10844 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXPB_WI@Z */
10845 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEB_WI@Z */
10846 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPBGI@Z */
10847 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEBGI@Z */
10848 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPB_WI@Z */
10849 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEB_WI@Z */
10850 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_open_wchar_old, 12)
10851 void __thiscall basic_ifstream_wchar_open_wchar_old(basic_ifstream_wchar *this,
10852 const wchar_t *name, unsigned int mode)
10854 basic_ifstream_wchar_open_wchar(this, name, mode, _SH_DENYNO);
10857 /* ?rdbuf@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
10858 /* ?rdbuf@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
10859 /* ?rdbuf@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
10860 /* ?rdbuf@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
10861 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_rdbuf, 4)
10862 basic_filebuf_wchar* __thiscall basic_ifstream_wchar_rdbuf(const basic_ifstream_wchar *this)
10864 TRACE("(%p)\n", this);
10865 return (basic_filebuf_wchar*)&this->filebuf;
10868 static inline basic_ios_char* basic_fstream_char_to_basic_ios(basic_fstream_char *ptr)
10870 return (basic_ios_char*)((char*)ptr+basic_fstream_char_vbtable1[1]);
10873 static inline basic_fstream_char* basic_fstream_char_from_basic_ios(basic_ios_char *ptr)
10875 return (basic_fstream_char*)((char*)ptr-basic_fstream_char_vbtable1[1]);
10878 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@XZ */
10879 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@XZ */
10880 DEFINE_THISCALL_WRAPPER(basic_fstream_char_ctor, 8)
10881 basic_fstream_char* __thiscall basic_fstream_char_ctor(basic_fstream_char *this, MSVCP_bool virt_init)
10883 basic_ios_char *basic_ios;
10885 TRACE("(%p %d)\n", this, virt_init);
10887 if(virt_init) {
10888 this->base.base1.vbtable = basic_fstream_char_vbtable1;
10889 this->base.base2.vbtable = basic_fstream_char_vbtable2;
10890 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
10891 basic_ios_char_ctor(basic_ios);
10892 }else {
10893 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
10896 basic_filebuf_char_ctor(&this->filebuf);
10897 basic_iostream_char_ctor(&this->base, &this->filebuf.base, FALSE);
10898 basic_ios->base.vtable = &MSVCP_basic_fstream_char_vtable;
10899 return this;
10902 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@PAU_iobuf@@@Z */
10903 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@PEAU_iobuf@@@Z */
10904 DEFINE_THISCALL_WRAPPER(basic_fstream_char_ctor_file, 12)
10905 basic_fstream_char* __thiscall basic_fstream_char_ctor_file(basic_fstream_char *this,
10906 FILE *file, MSVCP_bool virt_init)
10908 basic_ios_char *basic_ios;
10910 TRACE("(%p %p %d)\n", this, file, virt_init);
10912 if(virt_init) {
10913 this->base.base1.vbtable = basic_fstream_char_vbtable1;
10914 this->base.base2.vbtable = basic_fstream_char_vbtable2;
10915 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
10916 basic_ios_char_ctor(basic_ios);
10917 }else {
10918 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
10921 basic_filebuf_char_ctor_file(&this->filebuf, file);
10922 basic_iostream_char_ctor(&this->base, &this->filebuf.base, FALSE);
10923 basic_ios->base.vtable = &MSVCP_basic_fstream_char_vtable;
10924 return this;
10927 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@PBDHH@Z */
10928 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDHH@Z */
10929 DEFINE_THISCALL_WRAPPER(basic_fstream_char_ctor_name, 20)
10930 basic_fstream_char* __thiscall basic_fstream_char_ctor_name(basic_fstream_char *this,
10931 const char *name, int mode, int prot, MSVCP_bool virt_init)
10933 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
10935 basic_fstream_char_ctor(this, virt_init);
10937 if(!basic_filebuf_char_open(&this->filebuf, name, mode, prot)) {
10938 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
10939 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
10941 return this;
10944 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@PBGHH@Z */
10945 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@PEBGHH@Z */
10946 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@PB_WHH@Z */
10947 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@PEB_WHH@Z */
10948 DEFINE_THISCALL_WRAPPER(basic_fstream_char_ctor_name_wchar, 20)
10949 basic_fstream_char* __thiscall basic_fstream_char_ctor_name_wchar(basic_fstream_char *this,
10950 const wchar_t *name, int mode, int prot, MSVCP_bool virt_init)
10952 TRACE("(%p %s %d %d %d)\n", this, debugstr_w(name), mode, prot, virt_init);
10954 basic_fstream_char_ctor(this, virt_init);
10956 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode, prot)) {
10957 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
10958 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
10960 return this;
10963 /* ??1?$basic_fstream@DU?$char_traits@D@std@@@std@@UAE@XZ */
10964 /* ??1?$basic_fstream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
10965 DEFINE_THISCALL_WRAPPER(basic_fstream_char_dtor, 4)
10966 void __thiscall basic_fstream_char_dtor(basic_ios_char *base)
10968 basic_fstream_char *this = basic_fstream_char_from_basic_ios(base);
10970 TRACE("(%p)\n", this);
10972 basic_iostream_char_dtor(basic_iostream_char_to_basic_ios(&this->base));
10973 basic_filebuf_char_dtor(&this->filebuf);
10976 /* ??_D?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
10977 /* ??_D?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
10978 DEFINE_THISCALL_WRAPPER(basic_fstream_char_vbase_dtor, 4)
10979 void __thiscall basic_fstream_char_vbase_dtor(basic_fstream_char *this)
10981 TRACE("(%p)\n", this);
10983 basic_fstream_char_dtor(basic_fstream_char_to_basic_ios(this));
10984 basic_ios_char_dtor(basic_istream_char_get_basic_ios(&this->base.base1));
10987 DEFINE_THISCALL_WRAPPER(MSVCP_basic_fstream_char_vector_dtor, 8)
10988 basic_fstream_char* __thiscall MSVCP_basic_fstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
10990 basic_fstream_char *this = basic_fstream_char_from_basic_ios(base);
10992 TRACE("(%p %x)\n", this, flags);
10994 if(flags & 2) {
10995 /* we have an array, with the number of elements stored before the first object */
10996 int i, *ptr = (int *)this-1;
10998 for(i=*ptr-1; i>=0; i--)
10999 basic_fstream_char_vbase_dtor(this+i);
11000 MSVCRT_operator_delete(ptr);
11001 } else {
11002 basic_fstream_char_vbase_dtor(this);
11003 if(flags & 1)
11004 MSVCRT_operator_delete(this);
11007 return this;
11010 /* ?close@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
11011 /* ?close@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
11012 DEFINE_THISCALL_WRAPPER(basic_fstream_char_close, 4)
11013 void __thiscall basic_fstream_char_close(basic_fstream_char *this)
11015 TRACE("(%p)\n", this);
11017 if(!basic_filebuf_char_close(&this->filebuf)) {
11018 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
11019 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
11023 /* ?is_open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QBE_NXZ */
11024 /* ?is_open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEBA_NXZ */
11025 DEFINE_THISCALL_WRAPPER(basic_fstream_char_is_open, 4)
11026 MSVCP_bool __thiscall basic_fstream_char_is_open(const basic_fstream_char *this)
11028 TRACE("(%p)\n", this);
11029 return basic_filebuf_char_is_open(&this->filebuf);
11032 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPBDHH@Z */
11033 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDHH@Z */
11034 DEFINE_THISCALL_WRAPPER(basic_fstream_char_open, 16)
11035 void __thiscall basic_fstream_char_open(basic_fstream_char *this,
11036 const char *name, int mode, int prot)
11038 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
11040 if(!basic_filebuf_char_open(&this->filebuf, name, mode, prot)) {
11041 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
11042 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
11046 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPBDI@Z */
11047 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDI@Z */
11048 DEFINE_THISCALL_WRAPPER(basic_fstream_char_open_old, 12)
11049 void __thiscall basic_fstream_char_open_old(basic_fstream_char *this,
11050 const char *name, unsigned int mode)
11052 basic_fstream_char_open(this, name, mode, _SH_DENYNO);
11055 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPBGHH@Z */
11056 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGHH@Z */
11057 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPB_WHH@Z */
11058 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WHH@Z */
11059 DEFINE_THISCALL_WRAPPER(basic_fstream_char_open_wchar, 16)
11060 void __thiscall basic_fstream_char_open_wchar(basic_fstream_char *this,
11061 const wchar_t *name, int mode, int prot)
11063 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
11065 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode, prot)) {
11066 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
11067 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
11071 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPBGI@Z */
11072 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGI@Z */
11073 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPB_WI@Z */
11074 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WI@Z */
11075 DEFINE_THISCALL_WRAPPER(basic_fstream_char_open_wchar_old, 12)
11076 void __thiscall basic_fstream_char_open_wchar_old(basic_fstream_char *this,
11077 const wchar_t *name, unsigned int mode)
11079 basic_fstream_char_open_wchar(this, name, mode, _SH_DENYNO);
11082 /* ?rdbuf@?$basic_fstream@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
11083 /* ?rdbuf@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
11084 DEFINE_THISCALL_WRAPPER(basic_fstream_char_rdbuf, 4)
11085 basic_filebuf_char* __thiscall basic_fstream_char_rdbuf(const basic_fstream_char *this)
11087 TRACE("(%p)\n", this);
11088 return (basic_filebuf_char*)&this->filebuf;
11091 static inline basic_ios_wchar* basic_fstream_wchar_to_basic_ios(basic_fstream_wchar *ptr)
11093 return (basic_ios_wchar*)((char*)ptr+basic_fstream_wchar_vbtable1[1]);
11096 static inline basic_fstream_wchar* basic_fstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
11098 return (basic_fstream_wchar*)((char*)ptr-basic_fstream_wchar_vbtable1[1]);
11101 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAE@XZ */
11102 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAA@XZ */
11103 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_ctor, 8)
11104 basic_fstream_wchar* __thiscall basic_fstream_wchar_ctor(basic_fstream_wchar *this, MSVCP_bool virt_init)
11106 basic_ios_wchar *basic_ios;
11108 TRACE("(%p %d)\n", this, virt_init);
11110 if(virt_init) {
11111 this->base.base1.vbtable = basic_fstream_wchar_vbtable1;
11112 this->base.base2.vbtable = basic_fstream_wchar_vbtable2;
11113 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
11114 basic_ios_wchar_ctor(basic_ios);
11115 }else {
11116 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
11119 basic_filebuf_wchar_ctor(&this->filebuf);
11120 basic_iostream_wchar_ctor(&this->base, &this->filebuf.base, FALSE);
11121 basic_ios->base.vtable = &MSVCP_basic_fstream_wchar_vtable;
11122 return this;
11125 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@XZ */
11126 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@XZ */
11127 DEFINE_THISCALL_WRAPPER(basic_fstream_short_ctor, 8)
11128 basic_fstream_wchar* __thiscall basic_fstream_short_ctor(basic_fstream_wchar *this, MSVCP_bool virt_init)
11130 basic_fstream_wchar_ctor(this, virt_init);
11131 basic_istream_wchar_get_basic_ios(&this->base.base1)->base.vtable = &MSVCP_basic_fstream_short_vtable;
11132 return this;
11135 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAE@PAU_iobuf@@@Z */
11136 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAU_iobuf@@@Z */
11137 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_ctor_file, 12)
11138 basic_fstream_wchar* __thiscall basic_fstream_wchar_ctor_file(basic_fstream_wchar *this,
11139 FILE *file, MSVCP_bool virt_init)
11141 basic_ios_wchar *basic_ios;
11143 TRACE("(%p %p %d)\n", this, file, virt_init);
11145 if(virt_init) {
11146 this->base.base1.vbtable = basic_fstream_wchar_vbtable1;
11147 this->base.base2.vbtable = basic_fstream_wchar_vbtable2;
11148 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
11149 basic_ios_wchar_ctor(basic_ios);
11150 }else {
11151 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
11154 basic_filebuf_wchar_ctor_file(&this->filebuf, file);
11155 basic_iostream_wchar_ctor(&this->base, &this->filebuf.base, FALSE);
11156 basic_ios->base.vtable = &MSVCP_basic_fstream_wchar_vtable;
11157 return this;
11160 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@PAU_iobuf@@@Z */
11161 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@PEAU_iobuf@@@Z */
11162 DEFINE_THISCALL_WRAPPER(basic_fstream_short_ctor_file, 12)
11163 basic_fstream_wchar* __thiscall basic_fstream_short_ctor_file(basic_fstream_wchar *this,
11164 FILE *file, MSVCP_bool virt_init)
11166 basic_fstream_wchar_ctor_file(this, file, virt_init);
11167 basic_istream_wchar_get_basic_ios(&this->base.base1)->base.vtable = &MSVCP_basic_fstream_short_vtable;
11168 return this;
11171 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAE@PB_WHH@Z */
11172 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEB_WHH@Z */
11173 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_ctor_name, 20)
11174 basic_fstream_wchar* __thiscall basic_fstream_wchar_ctor_name(basic_fstream_wchar *this,
11175 const char *name, int mode, int prot, MSVCP_bool virt_init)
11177 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
11179 basic_fstream_wchar_ctor(this, virt_init);
11181 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode, prot)) {
11182 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
11183 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
11185 return this;
11188 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@PBGHH@Z */
11189 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@PEBGHH@Z */
11190 DEFINE_THISCALL_WRAPPER(basic_fstream_short_ctor_name, 20)
11191 basic_fstream_wchar* __thiscall basic_fstream_short_ctor_name(basic_fstream_wchar *this,
11192 const char *name, int mode, int prot, MSVCP_bool virt_init)
11194 basic_fstream_wchar_ctor_name(this, name, mode, prot, virt_init);
11195 basic_istream_wchar_get_basic_ios(&this->base.base1)->base.vtable = &MSVCP_basic_fstream_short_vtable;
11196 return this;
11199 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAE@PBGHH@Z */
11200 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEBGHH@Z */
11201 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAE@PB_WHH@Z */
11202 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEB_WHH@Z */
11203 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_ctor_name_wchar, 20)
11204 basic_fstream_wchar* __thiscall basic_fstream_wchar_ctor_name_wchar(basic_fstream_wchar *this,
11205 const wchar_t *name, int mode, int prot, MSVCP_bool virt_init)
11207 TRACE("(%p %s %d %d %d)\n", this, debugstr_w(name), mode, prot, virt_init);
11209 basic_fstream_wchar_ctor(this, virt_init);
11211 if(!basic_filebuf_wchar_open_wchar(&this->filebuf, name, mode, prot)) {
11212 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
11213 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
11215 return this;
11218 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@PBGHH@Z */
11219 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@PEBGHH@Z */
11220 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@PB_WHH@Z */
11221 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@PEB_WHH@Z */
11222 DEFINE_THISCALL_WRAPPER(basic_fstream_short_ctor_name_wchar, 20)
11223 basic_fstream_wchar* __thiscall basic_fstream_short_ctor_name_wchar(basic_fstream_wchar *this,
11224 const wchar_t *name, int mode, int prot, MSVCP_bool virt_init)
11226 basic_fstream_wchar_ctor_name_wchar(this, name, mode, prot, virt_init);
11227 basic_istream_wchar_get_basic_ios(&this->base.base1)->base.vtable = &MSVCP_basic_fstream_short_vtable;
11228 return this;
11231 /* ??1?$basic_fstream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
11232 /* ??1?$basic_fstream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
11233 /* ??1?$basic_fstream@GU?$char_traits@G@std@@@std@@UAE@XZ */
11234 /* ??1?$basic_fstream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
11235 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_dtor, 4)
11236 void __thiscall basic_fstream_wchar_dtor(basic_ios_wchar *base)
11238 basic_fstream_wchar *this = basic_fstream_wchar_from_basic_ios(base);
11240 TRACE("(%p)\n", this);
11242 basic_iostream_wchar_dtor(basic_iostream_wchar_to_basic_ios(&this->base));
11243 basic_filebuf_wchar_dtor(&this->filebuf);
11246 /* ??_D?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
11247 /* ??_D?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
11248 /* ??_D?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
11249 /* ??_D?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
11250 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_vbase_dtor, 4)
11251 void __thiscall basic_fstream_wchar_vbase_dtor(basic_fstream_wchar *this)
11253 TRACE("(%p)\n", this);
11255 basic_fstream_wchar_dtor(basic_fstream_wchar_to_basic_ios(this));
11256 basic_ios_wchar_dtor(basic_istream_wchar_get_basic_ios(&this->base.base1));
11259 DEFINE_THISCALL_WRAPPER(MSVCP_basic_fstream_wchar_vector_dtor, 8)
11260 basic_fstream_wchar* __thiscall MSVCP_basic_fstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
11262 basic_fstream_wchar *this = basic_fstream_wchar_from_basic_ios(base);
11264 TRACE("(%p %x)\n", this, flags);
11266 if(flags & 2) {
11267 /* we have an array, with the number of elements stored before the first object */
11268 int i, *ptr = (int *)this-1;
11270 for(i=*ptr-1; i>=0; i--)
11271 basic_fstream_wchar_vbase_dtor(this+i);
11272 MSVCRT_operator_delete(ptr);
11273 } else {
11274 basic_fstream_wchar_vbase_dtor(this);
11275 if(flags & 1)
11276 MSVCRT_operator_delete(this);
11279 return this;
11282 DEFINE_THISCALL_WRAPPER(MSVCP_basic_fstream_short_vector_dtor, 8)
11283 basic_fstream_wchar* __thiscall MSVCP_basic_fstream_short_vector_dtor(basic_ios_wchar *base, unsigned int flags)
11285 return MSVCP_basic_fstream_wchar_vector_dtor(base, flags);
11288 /* ?close@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
11289 /* ?close@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
11290 /* ?close@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
11291 /* ?close@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
11292 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_close, 4)
11293 void __thiscall basic_fstream_wchar_close(basic_fstream_wchar *this)
11295 TRACE("(%p)\n", this);
11297 if(!basic_filebuf_wchar_close(&this->filebuf)) {
11298 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
11299 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
11303 /* ?is_open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QBE_NXZ */
11304 /* ?is_open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEBA_NXZ */
11305 /* ?is_open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QBE_NXZ */
11306 /* ?is_open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEBA_NXZ */
11307 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_is_open, 4)
11308 MSVCP_bool __thiscall basic_fstream_wchar_is_open(const basic_fstream_wchar *this)
11310 TRACE("(%p)\n", this);
11311 return basic_filebuf_wchar_is_open(&this->filebuf);
11314 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDHH@Z */
11315 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDHH@Z */
11316 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXPBDHH@Z */
11317 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDHH@Z */
11318 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_open, 16)
11319 void __thiscall basic_fstream_wchar_open(basic_fstream_wchar *this,
11320 const char *name, int mode, int prot)
11322 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
11324 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode, prot)) {
11325 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
11326 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
11330 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDI@Z */
11331 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDI@Z */
11332 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXPBDI@Z */
11333 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDI@Z */
11334 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_open_old, 12)
11335 void __thiscall basic_fstream_wchar_open_old(basic_fstream_wchar *this,
11336 const char *name, unsigned int mode)
11338 basic_fstream_wchar_open(this, name, mode, _SH_DENYNO);
11341 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXPBGHH@Z */
11342 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBGHH@Z */
11343 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXPB_WHH@Z */
11344 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEB_WHH@Z */
11345 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXPBGHH@Z */
11346 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXPEBGHH@Z */
11347 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXPB_WHH@Z */
11348 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXPEB_WHH@Z */
11349 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_open_wchar, 16)
11350 void __thiscall basic_fstream_wchar_open_wchar(basic_fstream_wchar *this,
11351 const wchar_t *name, int mode, int prot)
11353 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
11355 if(!basic_filebuf_wchar_open_wchar(&this->filebuf, name, mode, prot)) {
11356 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
11357 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
11361 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXPBGI@Z */
11362 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBGI@Z */
11363 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXPB_WI@Z */
11364 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEB_WI@Z */
11365 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXPBGI@Z */
11366 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXPEBGI@Z */
11367 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXPB_WI@Z */
11368 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXPEB_WI@Z */
11369 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_open_wchar_old, 12)
11370 void __thiscall basic_fstream_wchar_open_wchar_old(basic_fstream_wchar *this,
11371 const wchar_t *name, unsigned int mode)
11373 basic_fstream_wchar_open_wchar(this, name, mode, _SH_DENYNO);
11376 /* ?rdbuf@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
11377 /* ?rdbuf@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
11378 /* ?rdbuf@?$basic_fstream@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
11379 /* ?rdbuf@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
11380 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_rdbuf, 4)
11381 basic_filebuf_wchar* __thiscall basic_fstream_wchar_rdbuf(const basic_fstream_wchar *this)
11383 TRACE("(%p)\n", this);
11384 return (basic_filebuf_wchar*)&this->filebuf;
11387 static inline basic_ios_char* basic_ostringstream_char_to_basic_ios(basic_ostringstream_char *ptr)
11389 return (basic_ios_char*)((char*)ptr+basic_ostringstream_char_vbtable[1]);
11392 static inline basic_ostringstream_char* basic_ostringstream_char_from_basic_ios(basic_ios_char *ptr)
11394 return (basic_ostringstream_char*)((char*)ptr-basic_ostringstream_char_vbtable[1]);
11397 /* ??0?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@H@Z */
11398 /* ??0?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@H@Z */
11399 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_ctor_str, 16)
11400 basic_ostringstream_char* __thiscall basic_ostringstream_char_ctor_str(basic_ostringstream_char *this,
11401 const basic_string_char *str, int mode, MSVCP_bool virt_init)
11403 basic_ios_char *basic_ios;
11405 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
11407 if(virt_init) {
11408 this->base.vbtable = basic_ostringstream_char_vbtable;
11409 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11410 basic_ios_char_ctor(basic_ios);
11411 }else {
11412 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11415 basic_stringbuf_char_ctor_str(&this->strbuf, str, mode|OPENMODE_out);
11416 basic_ostream_char_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
11417 basic_ios->base.vtable = &MSVCP_basic_ostringstream_char_vtable;
11418 return this;
11421 /* ??0?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z */
11422 /* ??0?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z */
11423 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_ctor_mode, 12)
11424 basic_ostringstream_char* __thiscall basic_ostringstream_char_ctor_mode(
11425 basic_ostringstream_char *this, int mode, MSVCP_bool virt_init)
11427 basic_ios_char *basic_ios;
11429 TRACE("(%p %d %d)\n", this, mode, virt_init);
11431 if(virt_init) {
11432 this->base.vbtable = basic_ostringstream_char_vbtable;
11433 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11434 basic_ios_char_ctor(basic_ios);
11435 }else {
11436 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11439 basic_stringbuf_char_ctor_mode(&this->strbuf, mode|OPENMODE_out);
11440 basic_ostream_char_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
11441 basic_ios->base.vtable = &MSVCP_basic_ostringstream_char_vtable;
11442 return this;
11445 /* ??_F?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
11446 /* ??_F?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
11447 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_ctor, 8)
11448 basic_ostringstream_char* __thiscall basic_ostringstream_char_ctor(
11449 basic_ostringstream_char *this, MSVCP_bool virt_init)
11451 return basic_ostringstream_char_ctor_mode(this, 0, virt_init);
11454 /* ??1?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ */
11455 /* ??1?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ */
11456 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_dtor, 4)
11457 void __thiscall basic_ostringstream_char_dtor(basic_ios_char *base)
11459 basic_ostringstream_char *this = basic_ostringstream_char_from_basic_ios(base);
11461 TRACE("(%p)\n", this);
11463 basic_stringbuf_char_dtor(&this->strbuf);
11464 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(&this->base));
11467 /* ??_D?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
11468 /* ??_D?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
11469 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_vbase_dtor, 4)
11470 void __thiscall basic_ostringstream_char_vbase_dtor(basic_ostringstream_char *this)
11472 TRACE("(%p)\n", this);
11474 basic_ostringstream_char_dtor(basic_ostringstream_char_to_basic_ios(this));
11475 basic_ios_char_dtor(basic_ostream_char_get_basic_ios(&this->base));
11478 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ostringstream_char_vector_dtor, 8)
11479 basic_ostringstream_char* __thiscall MSVCP_basic_ostringstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
11481 basic_ostringstream_char *this = basic_ostringstream_char_from_basic_ios(base);
11483 TRACE("(%p %x)\n", this, flags);
11485 if(flags & 2) {
11486 /* we have an array, with the number of elements stored before the first object */
11487 int i, *ptr = (int *)this-1;
11489 for(i=*ptr-1; i>=0; i--)
11490 basic_ostringstream_char_vbase_dtor(this+i);
11491 MSVCRT_operator_delete(ptr);
11492 } else {
11493 basic_ostringstream_char_vbase_dtor(this);
11494 if(flags & 1)
11495 MSVCRT_operator_delete(this);
11498 return this;
11501 /* ?rdbuf@?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPAV?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
11502 /* ?rdbuf@?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAPEAV?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
11503 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_rdbuf, 4)
11504 basic_stringbuf_char* __thiscall basic_ostringstream_char_rdbuf(const basic_ostringstream_char *this)
11506 TRACE("(%p)\n", this);
11507 return (basic_stringbuf_char*)&this->strbuf;
11510 /* ?str@?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z */
11511 /* ?str@?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z */
11512 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_str_set, 8)
11513 void __thiscall basic_ostringstream_char_str_set(basic_ostringstream_char *this, const basic_string_char *str)
11515 TRACE("(%p %p)\n", this, str);
11516 basic_stringbuf_char_str_set(&this->strbuf, str);
11519 /* ?str@?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
11520 /* ?str@?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
11521 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_str_get, 8)
11522 basic_string_char* __thiscall basic_ostringstream_char_str_get(const basic_ostringstream_char *this, basic_string_char *ret)
11524 TRACE("(%p %p)\n", this, ret);
11525 return basic_stringbuf_char_str_get(&this->strbuf, ret);
11528 static inline basic_ios_wchar* basic_ostringstream_wchar_to_basic_ios(basic_ostringstream_wchar *ptr)
11530 return (basic_ios_wchar*)((char*)ptr+basic_ostringstream_wchar_vbtable[1]);
11533 static inline basic_ostringstream_wchar* basic_ostringstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
11535 return (basic_ostringstream_wchar*)((char*)ptr-basic_ostringstream_wchar_vbtable[1]);
11538 /* ??0?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@H@Z */
11539 /* ??0?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@H@Z */
11540 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_ctor_str, 16)
11541 basic_ostringstream_wchar* __thiscall basic_ostringstream_wchar_ctor_str(basic_ostringstream_wchar *this,
11542 const basic_string_wchar *str, int mode, MSVCP_bool virt_init)
11544 basic_ios_wchar *basic_ios;
11546 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
11548 if(virt_init) {
11549 this->base.vbtable = basic_ostringstream_wchar_vbtable;
11550 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11551 basic_ios_wchar_ctor(basic_ios);
11552 }else {
11553 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11556 basic_stringbuf_wchar_ctor_str(&this->strbuf, str, mode|OPENMODE_out);
11557 basic_ostream_wchar_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
11558 basic_ios->base.vtable = &MSVCP_basic_ostringstream_wchar_vtable;
11559 return this;
11562 /* ??0?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@1@H@Z */
11563 /* ??0?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@1@H@Z */
11564 DEFINE_THISCALL_WRAPPER(basic_ostringstream_short_ctor_str, 16)
11565 basic_ostringstream_wchar* __thiscall basic_ostringstream_short_ctor_str(basic_ostringstream_wchar *this,
11566 const basic_string_wchar *str, int mode, MSVCP_bool virt_init)
11568 basic_ostringstream_wchar_ctor_str(this, str, mode, virt_init);
11569 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ostringstream_short_vtable;
11570 return this;
11573 /* ??0?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@H@Z */
11574 /* ??0?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@H@Z */
11575 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_ctor_mode, 12)
11576 basic_ostringstream_wchar* __thiscall basic_ostringstream_wchar_ctor_mode(
11577 basic_ostringstream_wchar *this, int mode, MSVCP_bool virt_init)
11579 basic_ios_wchar *basic_ios;
11581 TRACE("(%p %d %d)\n", this, mode, virt_init);
11583 if(virt_init) {
11584 this->base.vbtable = basic_ostringstream_wchar_vbtable;
11585 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11586 basic_ios_wchar_ctor(basic_ios);
11587 }else {
11588 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11591 basic_stringbuf_wchar_ctor_mode(&this->strbuf, mode|OPENMODE_out);
11592 basic_ostream_wchar_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
11593 basic_ios->base.vtable = &MSVCP_basic_ostringstream_wchar_vtable;
11594 return this;
11597 /* ??0?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@H@Z */
11598 /* ??0?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@H@Z */
11599 DEFINE_THISCALL_WRAPPER(basic_ostringstream_short_ctor_mode, 12)
11600 basic_ostringstream_wchar* __thiscall basic_ostringstream_short_ctor_mode(
11601 basic_ostringstream_wchar *this, int mode, MSVCP_bool virt_init)
11603 basic_ostringstream_wchar_ctor_mode(this, mode, virt_init);
11604 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ostringstream_short_vtable;
11605 return this;
11608 /* ??_F?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
11609 /* ??_F?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
11610 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_ctor, 8)
11611 basic_ostringstream_wchar* __thiscall basic_ostringstream_wchar_ctor(
11612 basic_ostringstream_wchar *this, MSVCP_bool virt_init)
11614 return basic_ostringstream_wchar_ctor_mode(this, 0, virt_init);
11617 /* ??_F?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
11618 /* ??_F?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
11619 DEFINE_THISCALL_WRAPPER(basic_ostringstream_short_ctor, 8)
11620 basic_ostringstream_wchar* __thiscall basic_ostringstream_short_ctor(
11621 basic_ostringstream_wchar *this, MSVCP_bool virt_init)
11623 return basic_ostringstream_short_ctor_mode(this, 0, virt_init);
11626 /* ??1?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UAE@XZ */
11627 /* ??1?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UEAA@XZ */
11628 /* ??1?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UAE@XZ */
11629 /* ??1?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UEAA@XZ */
11630 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_dtor, 4)
11631 void __thiscall basic_ostringstream_wchar_dtor(basic_ios_wchar *base)
11633 basic_ostringstream_wchar *this = basic_ostringstream_wchar_from_basic_ios(base);
11635 TRACE("(%p)\n", this);
11637 basic_stringbuf_wchar_dtor(&this->strbuf);
11638 basic_ostream_wchar_dtor(basic_ostream_wchar_to_basic_ios(&this->base));
11641 /* ??_D?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
11642 /* ??_D?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
11643 /* ??_D?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
11644 /* ??_D?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
11645 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_vbase_dtor, 4)
11646 void __thiscall basic_ostringstream_wchar_vbase_dtor(basic_ostringstream_wchar *this)
11648 TRACE("(%p)\n", this);
11650 basic_ostringstream_wchar_dtor(basic_ostringstream_wchar_to_basic_ios(this));
11651 basic_ios_wchar_dtor(basic_ostream_wchar_get_basic_ios(&this->base));
11654 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ostringstream_wchar_vector_dtor, 8)
11655 basic_ostringstream_wchar* __thiscall MSVCP_basic_ostringstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
11657 basic_ostringstream_wchar *this = basic_ostringstream_wchar_from_basic_ios(base);
11659 TRACE("(%p %x)\n", this, flags);
11661 if(flags & 2) {
11662 /* we have an array, with the number of elements stored before the first object */
11663 int i, *ptr = (int *)this-1;
11665 for(i=*ptr-1; i>=0; i--)
11666 basic_ostringstream_wchar_vbase_dtor(this+i);
11667 MSVCRT_operator_delete(ptr);
11668 } else {
11669 basic_ostringstream_wchar_vbase_dtor(this);
11670 if(flags & 1)
11671 MSVCRT_operator_delete(this);
11674 return this;
11677 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ostringstream_short_vector_dtor, 8)
11678 basic_ostringstream_wchar* __thiscall MSVCP_basic_ostringstream_short_vector_dtor(basic_ios_wchar *base, unsigned int flags)
11680 return MSVCP_basic_ostringstream_wchar_vector_dtor(base, flags);
11683 /* ?rdbuf@?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEPAV?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
11684 /* ?rdbuf@?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAPEAV?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
11685 /* ?rdbuf@?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEPAV?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
11686 /* ?rdbuf@?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAPEAV?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
11687 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_rdbuf, 4)
11688 basic_stringbuf_wchar* __thiscall basic_ostringstream_wchar_rdbuf(const basic_ostringstream_wchar *this)
11690 TRACE("(%p)\n", this);
11691 return (basic_stringbuf_wchar*)&this->strbuf;
11694 /* ?str@?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@@Z */
11695 /* ?str@?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@@Z */
11696 /* ?str@?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@@Z */
11697 /* ?str@?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@@Z */
11698 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_str_set, 8)
11699 void __thiscall basic_ostringstream_wchar_str_set(basic_ostringstream_wchar *this, const basic_string_wchar *str)
11701 TRACE("(%p %p)\n", this, str);
11702 basic_stringbuf_wchar_str_set(&this->strbuf, str);
11705 /* ?str@?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
11706 /* ?str@?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
11707 /* ?str@?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
11708 /* ?str@?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
11709 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_str_get, 8)
11710 basic_string_wchar* __thiscall basic_ostringstream_wchar_str_get(const basic_ostringstream_wchar *this, basic_string_wchar *ret)
11712 TRACE("(%p %p)\n", this, ret);
11713 return basic_stringbuf_wchar_str_get(&this->strbuf, ret);
11716 static inline basic_ios_char* basic_istringstream_char_to_basic_ios(basic_istringstream_char *ptr)
11718 return (basic_ios_char*)((char*)ptr+basic_istringstream_char_vbtable[1]);
11721 static inline basic_istringstream_char* basic_istringstream_char_from_basic_ios(basic_ios_char *ptr)
11723 return (basic_istringstream_char*)((char*)ptr-basic_istringstream_char_vbtable[1]);
11726 /* ??0?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@H@Z */
11727 /* ??0?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@H@Z */
11728 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_ctor_str, 16)
11729 basic_istringstream_char* __thiscall basic_istringstream_char_ctor_str(basic_istringstream_char *this,
11730 const basic_string_char *str, int mode, MSVCP_bool virt_init)
11732 basic_ios_char *basic_ios;
11734 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
11736 if(virt_init) {
11737 this->base.vbtable = basic_istringstream_char_vbtable;
11738 basic_ios = basic_istream_char_get_basic_ios(&this->base);
11739 basic_ios_char_ctor(basic_ios);
11740 }else {
11741 basic_ios = basic_istream_char_get_basic_ios(&this->base);
11744 basic_stringbuf_char_ctor_str(&this->strbuf, str, mode|OPENMODE_in);
11745 basic_istream_char_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
11746 basic_ios->base.vtable = &MSVCP_basic_istringstream_char_vtable;
11747 return this;
11750 /* ??0?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z */
11751 /* ??0?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z */
11752 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_ctor_mode, 12)
11753 basic_istringstream_char* __thiscall basic_istringstream_char_ctor_mode(
11754 basic_istringstream_char *this, int mode, MSVCP_bool virt_init)
11756 basic_ios_char *basic_ios;
11758 TRACE("(%p %d %d)\n", this, mode, virt_init);
11760 if(virt_init) {
11761 this->base.vbtable = basic_istringstream_char_vbtable;
11762 basic_ios = basic_istream_char_get_basic_ios(&this->base);
11763 basic_ios_char_ctor(basic_ios);
11764 }else {
11765 basic_ios = basic_istream_char_get_basic_ios(&this->base);
11768 basic_stringbuf_char_ctor_mode(&this->strbuf, mode|OPENMODE_in);
11769 basic_istream_char_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
11770 basic_ios->base.vtable = &MSVCP_basic_istringstream_char_vtable;
11771 return this;
11774 /* ??_F?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
11775 /* ??_F?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
11776 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_ctor, 8)
11777 basic_istringstream_char* __thiscall basic_istringstream_char_ctor(
11778 basic_istringstream_char *this, MSVCP_bool virt_init)
11780 return basic_istringstream_char_ctor_mode(this, 0, virt_init);
11783 /* ??1?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ */
11784 /* ??1?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ */
11785 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_dtor, 4)
11786 void __thiscall basic_istringstream_char_dtor(basic_ios_char *base)
11788 basic_istringstream_char *this = basic_istringstream_char_from_basic_ios(base);
11790 TRACE("(%p)\n", this);
11792 basic_stringbuf_char_dtor(&this->strbuf);
11793 basic_istream_char_dtor(basic_istream_char_to_basic_ios(&this->base));
11796 /* ??_D?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
11797 /* ??_D?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
11798 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_vbase_dtor, 4)
11799 void __thiscall basic_istringstream_char_vbase_dtor(basic_istringstream_char *this)
11801 TRACE("(%p)\n", this);
11803 basic_istringstream_char_dtor(basic_istringstream_char_to_basic_ios(this));
11804 basic_ios_char_dtor(basic_istream_char_get_basic_ios(&this->base));
11807 DEFINE_THISCALL_WRAPPER(MSVCP_basic_istringstream_char_vector_dtor, 8)
11808 basic_istringstream_char* __thiscall MSVCP_basic_istringstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
11810 basic_istringstream_char *this = basic_istringstream_char_from_basic_ios(base);
11812 TRACE("(%p %x)\n", this, flags);
11814 if(flags & 2) {
11815 /* we have an array, with the number of elements stored before the first object */
11816 int i, *ptr = (int *)this-1;
11818 for(i=*ptr-1; i>=0; i--)
11819 basic_istringstream_char_vbase_dtor(this+i);
11820 MSVCRT_operator_delete(ptr);
11821 } else {
11822 basic_istringstream_char_vbase_dtor(this);
11823 if(flags & 1)
11824 MSVCRT_operator_delete(this);
11827 return this;
11830 /* ?rdbuf@?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPAV?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
11831 /* ?rdbuf@?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAPEAV?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
11832 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_rdbuf, 4)
11833 basic_stringbuf_char* __thiscall basic_istringstream_char_rdbuf(const basic_istringstream_char *this)
11835 TRACE("(%p)\n", this);
11836 return (basic_stringbuf_char*)&this->strbuf;
11839 /* ?str@?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z */
11840 /* ?str@?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z */
11841 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_str_set, 8)
11842 void __thiscall basic_istringstream_char_str_set(basic_istringstream_char *this, const basic_string_char *str)
11844 TRACE("(%p %p)\n", this, str);
11845 basic_stringbuf_char_str_set(&this->strbuf, str);
11848 /* ?str@?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
11849 /* ?str@?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
11850 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_str_get, 8)
11851 basic_string_char* __thiscall basic_istringstream_char_str_get(const basic_istringstream_char *this, basic_string_char *ret)
11853 TRACE("(%p %p)\n", this, ret);
11854 return basic_stringbuf_char_str_get(&this->strbuf, ret);
11857 static inline basic_ios_wchar* basic_istringstream_wchar_to_basic_ios(basic_istringstream_wchar *ptr)
11859 return (basic_ios_wchar*)((char*)ptr+basic_istringstream_wchar_vbtable[1]);
11862 static inline basic_istringstream_wchar* basic_istringstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
11864 return (basic_istringstream_wchar*)((char*)ptr-basic_istringstream_wchar_vbtable[1]);
11867 /* ??0?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@H@Z */
11868 /* ??0?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@H@Z */
11869 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_ctor_str, 16)
11870 basic_istringstream_wchar* __thiscall basic_istringstream_wchar_ctor_str(basic_istringstream_wchar *this,
11871 const basic_string_wchar *str, int mode, MSVCP_bool virt_init)
11873 basic_ios_wchar *basic_ios;
11875 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
11877 if(virt_init) {
11878 this->base.vbtable = basic_istringstream_wchar_vbtable;
11879 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
11880 basic_ios_wchar_ctor(basic_ios);
11881 }else {
11882 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
11885 basic_stringbuf_wchar_ctor_str(&this->strbuf, str, mode|OPENMODE_in);
11886 basic_istream_wchar_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
11887 basic_ios->base.vtable = &MSVCP_basic_istringstream_wchar_vtable;
11888 return this;
11891 /* ??0?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@H@Z */
11892 /* ??0?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@H@Z */
11893 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_ctor_mode, 12)
11894 basic_istringstream_wchar* __thiscall basic_istringstream_wchar_ctor_mode(
11895 basic_istringstream_wchar *this, int mode, MSVCP_bool virt_init)
11897 basic_ios_wchar *basic_ios;
11899 TRACE("(%p %d %d)\n", this, mode, virt_init);
11901 if(virt_init) {
11902 this->base.vbtable = basic_istringstream_wchar_vbtable;
11903 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
11904 basic_ios_wchar_ctor(basic_ios);
11905 }else {
11906 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
11909 basic_stringbuf_wchar_ctor_mode(&this->strbuf, mode|OPENMODE_in);
11910 basic_istream_wchar_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
11911 basic_ios->base.vtable = &MSVCP_basic_istringstream_wchar_vtable;
11912 return this;
11915 /* ??_F?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
11916 /* ??_F?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
11917 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_ctor, 8)
11918 basic_istringstream_wchar* __thiscall basic_istringstream_wchar_ctor(
11919 basic_istringstream_wchar *this, MSVCP_bool virt_init)
11921 return basic_istringstream_wchar_ctor_mode(this, 0, virt_init);
11924 /* ??1?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UAE@XZ */
11925 /* ??1?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UEAA@XZ */
11926 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_dtor, 4)
11927 void __thiscall basic_istringstream_wchar_dtor(basic_ios_wchar *base)
11929 basic_istringstream_wchar *this = basic_istringstream_wchar_from_basic_ios(base);
11931 TRACE("(%p)\n", this);
11933 basic_stringbuf_wchar_dtor(&this->strbuf);
11934 basic_istream_wchar_dtor(basic_istream_wchar_to_basic_ios(&this->base));
11937 /* ??_D?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
11938 /* ??_D?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
11939 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_vbase_dtor, 4)
11940 void __thiscall basic_istringstream_wchar_vbase_dtor(basic_istringstream_wchar *this)
11942 TRACE("(%p)\n", this);
11944 basic_istringstream_wchar_dtor(basic_istringstream_wchar_to_basic_ios(this));
11945 basic_ios_wchar_dtor(basic_istream_wchar_get_basic_ios(&this->base));
11948 DEFINE_THISCALL_WRAPPER(MSVCP_basic_istringstream_wchar_vector_dtor, 8)
11949 basic_istringstream_wchar* __thiscall MSVCP_basic_istringstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
11951 basic_istringstream_wchar *this = basic_istringstream_wchar_from_basic_ios(base);
11953 TRACE("(%p %x)\n", this, flags);
11955 if(flags & 2) {
11956 /* we have an array, with the number of elements stored before the first object */
11957 int i, *ptr = (int *)this-1;
11959 for(i=*ptr-1; i>=0; i--)
11960 basic_istringstream_wchar_vbase_dtor(this+i);
11961 MSVCRT_operator_delete(ptr);
11962 } else {
11963 basic_istringstream_wchar_vbase_dtor(this);
11964 if(flags & 1)
11965 MSVCRT_operator_delete(this);
11968 return this;
11971 /* ?rdbuf@?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEPAV?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
11972 /* ?rdbuf@?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAPEAV?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
11973 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_rdbuf, 4)
11974 basic_stringbuf_wchar* __thiscall basic_istringstream_wchar_rdbuf(const basic_istringstream_wchar *this)
11976 TRACE("(%p)\n", this);
11977 return (basic_stringbuf_wchar*)&this->strbuf;
11980 /* ?str@?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@@Z */
11981 /* ?str@?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@@Z */
11982 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_str_set, 8)
11983 void __thiscall basic_istringstream_wchar_str_set(basic_istringstream_wchar *this, const basic_string_wchar *str)
11985 TRACE("(%p %p)\n", this, str);
11986 basic_stringbuf_wchar_str_set(&this->strbuf, str);
11989 /* ?str@?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
11990 /* ?str@?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
11991 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_str_get, 8)
11992 basic_string_wchar* __thiscall basic_istringstream_wchar_str_get(const basic_istringstream_wchar *this, basic_string_wchar *ret)
11994 TRACE("(%p %p)\n", this, ret);
11995 return basic_stringbuf_wchar_str_get(&this->strbuf, ret);
11998 static inline basic_ios_char* basic_stringstream_char_to_basic_ios(basic_stringstream_char *ptr)
12000 return (basic_ios_char*)((char*)ptr+basic_stringstream_char_vbtable1[1]);
12003 static inline basic_stringstream_char* basic_stringstream_char_from_basic_ios(basic_ios_char *ptr)
12005 return (basic_stringstream_char*)((char*)ptr-basic_stringstream_char_vbtable1[1]);
12008 /* ??0?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@H@Z */
12009 /* ??0?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@H@Z */
12010 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_ctor_str, 16)
12011 basic_stringstream_char* __thiscall basic_stringstream_char_ctor_str(basic_stringstream_char *this,
12012 const basic_string_char *str, int mode, MSVCP_bool virt_init)
12014 basic_ios_char *basic_ios;
12016 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
12018 if(virt_init) {
12019 this->base.base1.vbtable = basic_stringstream_char_vbtable1;
12020 this->base.base2.vbtable = basic_stringstream_char_vbtable2;
12021 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
12022 basic_ios_char_ctor(basic_ios);
12023 }else {
12024 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
12027 basic_stringbuf_char_ctor_str(&this->strbuf, str, mode);
12028 basic_iostream_char_ctor(&this->base, &this->strbuf.base, FALSE);
12029 basic_ios->base.vtable = &MSVCP_basic_stringstream_char_vtable;
12030 return this;
12033 /* ??0?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z */
12034 /* ??0?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z */
12035 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_ctor_mode, 12)
12036 basic_stringstream_char* __thiscall basic_stringstream_char_ctor_mode(
12037 basic_stringstream_char *this, int mode, MSVCP_bool virt_init)
12039 basic_ios_char *basic_ios;
12041 TRACE("(%p %d %d)\n", this, mode, virt_init);
12043 if(virt_init) {
12044 this->base.base1.vbtable = basic_stringstream_char_vbtable1;
12045 this->base.base2.vbtable = basic_stringstream_char_vbtable2;
12046 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
12047 basic_ios_char_ctor(basic_ios);
12048 }else {
12049 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
12052 basic_stringbuf_char_ctor_mode(&this->strbuf, mode);
12053 basic_iostream_char_ctor(&this->base, &this->strbuf.base, FALSE);
12054 basic_ios->base.vtable = &MSVCP_basic_stringstream_char_vtable;
12055 return this;
12058 /* ??_F?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
12059 /* ??_F?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
12060 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_ctor, 8)
12061 basic_stringstream_char* __thiscall basic_stringstream_char_ctor(
12062 basic_stringstream_char *this, MSVCP_bool virt_init)
12064 return basic_stringstream_char_ctor_mode(
12065 this, OPENMODE_out|OPENMODE_in, virt_init);
12068 /* ??1?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ */
12069 /* ??1?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ */
12070 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_dtor, 4)
12071 void __thiscall basic_stringstream_char_dtor(basic_ios_char *base)
12073 basic_stringstream_char *this = basic_stringstream_char_from_basic_ios(base);
12075 TRACE("(%p)\n", this);
12077 basic_iostream_char_dtor(basic_iostream_char_to_basic_ios(&this->base));
12078 basic_stringbuf_char_dtor(&this->strbuf);
12081 /* ??_D?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
12082 /* ??_D?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
12083 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_vbase_dtor, 4)
12084 void __thiscall basic_stringstream_char_vbase_dtor(basic_stringstream_char *this)
12086 TRACE("(%p)\n", this);
12088 basic_stringstream_char_dtor(basic_stringstream_char_to_basic_ios(this));
12089 basic_ios_char_dtor(basic_istream_char_get_basic_ios(&this->base.base1));
12092 DEFINE_THISCALL_WRAPPER(MSVCP_basic_stringstream_char_vector_dtor, 8)
12093 basic_stringstream_char* __thiscall MSVCP_basic_stringstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
12095 basic_stringstream_char *this = basic_stringstream_char_from_basic_ios(base);
12097 TRACE("(%p %x)\n", this, flags);
12099 if(flags & 2) {
12100 /* we have an array, with the number of elements stored before the first object */
12101 int i, *ptr = (int *)this-1;
12103 for(i=*ptr-1; i>=0; i--)
12104 basic_stringstream_char_vbase_dtor(this+i);
12105 MSVCRT_operator_delete(ptr);
12106 } else {
12107 basic_stringstream_char_vbase_dtor(this);
12108 if(flags & 1)
12109 MSVCRT_operator_delete(this);
12112 return this;
12115 /* ?rdbuf@?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPAV?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
12116 /* ?rdbuf@?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAPEAV?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
12117 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_rdbuf, 4)
12118 basic_stringbuf_char* __thiscall basic_stringstream_char_rdbuf(const basic_stringstream_char *this)
12120 TRACE("(%p)\n", this);
12121 return (basic_stringbuf_char*)&this->strbuf;
12124 /* ?str@?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z */
12125 /* ?str@?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z */
12126 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_str_set, 8)
12127 void __thiscall basic_stringstream_char_str_set(basic_stringstream_char *this, const basic_string_char *str)
12129 TRACE("(%p %p)\n", this, str);
12130 basic_stringbuf_char_str_set(&this->strbuf, str);
12133 /* ?str@?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
12134 /* ?str@?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
12135 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_str_get, 8)
12136 basic_string_char* __thiscall basic_stringstream_char_str_get(const basic_stringstream_char *this, basic_string_char *ret)
12138 TRACE("(%p %p)\n", this, ret);
12139 return basic_stringbuf_char_str_get(&this->strbuf, ret);
12142 static inline basic_ios_wchar* basic_stringstream_wchar_to_basic_ios(basic_stringstream_wchar *ptr)
12144 return (basic_ios_wchar*)((char*)ptr+basic_stringstream_wchar_vbtable1[1]);
12147 static inline basic_stringstream_wchar* basic_stringstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
12149 return (basic_stringstream_wchar*)((char*)ptr-basic_stringstream_wchar_vbtable1[1]);
12152 /* ??0?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@H@Z */
12153 /* ??0?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@H@Z */
12154 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_ctor_str, 16)
12155 basic_stringstream_wchar* __thiscall basic_stringstream_wchar_ctor_str(basic_stringstream_wchar *this,
12156 const basic_string_wchar *str, int mode, MSVCP_bool virt_init)
12158 basic_ios_wchar *basic_ios;
12160 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
12162 if(virt_init) {
12163 this->base.base1.vbtable = basic_stringstream_wchar_vbtable1;
12164 this->base.base2.vbtable = basic_stringstream_wchar_vbtable2;
12165 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12166 basic_ios_wchar_ctor(basic_ios);
12167 }else {
12168 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12171 basic_stringbuf_wchar_ctor_str(&this->strbuf, str, mode);
12172 basic_iostream_wchar_ctor(&this->base, &this->strbuf.base, FALSE);
12173 basic_ios->base.vtable = &MSVCP_basic_stringstream_wchar_vtable;
12174 return this;
12177 /* ??0?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@H@Z */
12178 /* ??0?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@H@Z */
12179 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_ctor_mode, 12)
12180 basic_stringstream_wchar* __thiscall basic_stringstream_wchar_ctor_mode(
12181 basic_stringstream_wchar *this, int mode, MSVCP_bool virt_init)
12183 basic_ios_wchar *basic_ios;
12185 TRACE("(%p %d %d)\n", this, mode, virt_init);
12187 if(virt_init) {
12188 this->base.base1.vbtable = basic_stringstream_wchar_vbtable1;
12189 this->base.base2.vbtable = basic_stringstream_wchar_vbtable2;
12190 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12191 basic_ios_wchar_ctor(basic_ios);
12192 }else {
12193 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12196 basic_stringbuf_wchar_ctor_mode(&this->strbuf, mode);
12197 basic_iostream_wchar_ctor(&this->base, &this->strbuf.base, FALSE);
12198 basic_ios->base.vtable = &MSVCP_basic_stringstream_wchar_vtable;
12199 return this;
12202 /* ??_F?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
12203 /* ??_F?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
12204 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_ctor, 8)
12205 basic_stringstream_wchar* __thiscall basic_stringstream_wchar_ctor(
12206 basic_stringstream_wchar *this, MSVCP_bool virt_init)
12208 return basic_stringstream_wchar_ctor_mode(
12209 this, OPENMODE_out|OPENMODE_in, virt_init);
12212 /* ??1?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UAE@XZ */
12213 /* ??1?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UEAA@XZ */
12214 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_dtor, 4)
12215 void __thiscall basic_stringstream_wchar_dtor(basic_ios_wchar *base)
12217 basic_stringstream_wchar *this = basic_stringstream_wchar_from_basic_ios(base);
12219 TRACE("(%p)\n", this);
12221 basic_iostream_wchar_dtor(basic_iostream_wchar_to_basic_ios(&this->base));
12222 basic_stringbuf_wchar_dtor(&this->strbuf);
12225 /* ??_D?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
12226 /* ??_D?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
12227 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_vbase_dtor, 4)
12228 void __thiscall basic_stringstream_wchar_vbase_dtor(basic_stringstream_wchar *this)
12230 TRACE("(%p)\n", this);
12232 basic_stringstream_wchar_dtor(basic_stringstream_wchar_to_basic_ios(this));
12233 basic_ios_wchar_dtor(basic_istream_wchar_get_basic_ios(&this->base.base1));
12236 DEFINE_THISCALL_WRAPPER(MSVCP_basic_stringstream_wchar_vector_dtor, 8)
12237 basic_stringstream_wchar* __thiscall MSVCP_basic_stringstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
12239 basic_stringstream_wchar *this = basic_stringstream_wchar_from_basic_ios(base);
12241 TRACE("(%p %x)\n", this, flags);
12243 if(flags & 2) {
12244 /* we have an array, with the number of elements stored before the first object */
12245 int i, *ptr = (int *)this-1;
12247 for(i=*ptr-1; i>=0; i--)
12248 basic_stringstream_wchar_vbase_dtor(this+i);
12249 MSVCRT_operator_delete(ptr);
12250 } else {
12251 basic_stringstream_wchar_vbase_dtor(this);
12252 if(flags & 1)
12253 MSVCRT_operator_delete(this);
12256 return this;
12259 /* ?rdbuf@?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEPAV?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
12260 /* ?rdbuf@?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAPEAV?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
12261 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_rdbuf, 4)
12262 basic_stringbuf_wchar* __thiscall basic_stringstream_wchar_rdbuf(const basic_stringstream_wchar *this)
12264 TRACE("(%p)\n", this);
12265 return (basic_stringbuf_wchar*)&this->strbuf;
12268 /* ?str@?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@@Z */
12269 /* ?str@?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@@Z */
12270 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_str_set, 8)
12271 void __thiscall basic_stringstream_wchar_str_set(basic_stringstream_wchar *this, const basic_string_wchar *str)
12273 TRACE("(%p %p)\n", this, str);
12274 basic_stringbuf_wchar_str_set(&this->strbuf, str);
12277 /* ?str@?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
12278 /* ?str@?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
12279 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_str_get, 8)
12280 basic_string_wchar* __thiscall basic_stringstream_wchar_str_get(const basic_stringstream_wchar *this, basic_string_wchar *ret)
12282 TRACE("(%p %p)\n", this, ret);
12283 return basic_stringbuf_wchar_str_get(&this->strbuf, ret);
12286 static void __cdecl setprecision_func(ios_base *base, streamsize prec)
12288 ios_base_precision_set(base, prec);
12291 /* ?setprecision@std@@YA?AU?$_Smanip@H@1@H@Z */
12292 /* ?setprecision@std@@YA?AU?$_Smanip@_J@1@_J@Z */
12293 manip_streamsize* __cdecl setprecision(manip_streamsize *ret, streamsize prec)
12295 TRACE("(%p %ld)\n", ret, prec);
12297 ret->pfunc = setprecision_func;
12298 ret->arg = prec;
12299 return ret;
12302 static void __cdecl setw_func(ios_base *base, streamsize width)
12304 ios_base_width_set(base, width);
12307 /* ?setw@std@@YA?AU?$_Smanip@H@1@H@Z */
12308 /* ?setw@std@@YA?AU?$_Smanip@_J@1@_J@Z */
12309 manip_streamsize* __cdecl setw(manip_streamsize *ret, streamsize width)
12311 TRACE("(%p %ld)\n", ret, width);
12313 ret->pfunc = setw_func;
12314 ret->arg = width;
12315 return ret;
12318 static basic_filebuf_char filebuf_char_stdin;
12319 /* ?cin@std@@3V?$basic_istream@DU?$char_traits@D@std@@@1@A */
12320 struct {
12321 basic_istream_char obj;
12322 basic_ios_char vbase;
12323 } cin = { { 0 } };
12324 /* ?_Ptr_cin@std@@3PAV?$basic_istream@DU?$char_traits@D@std@@@1@A */
12325 /* ?_Ptr_cin@std@@3PEAV?$basic_istream@DU?$char_traits@D@std@@@1@EA */
12326 basic_istream_char *_Ptr_cin = &cin.obj;
12328 static basic_filebuf_wchar filebuf_short_stdin;
12329 /* ?wcin@std@@3V?$basic_istream@GU?$char_traits@G@std@@@1@A */
12330 struct {
12331 basic_istream_wchar obj;
12332 basic_ios_wchar vbase;
12333 } ucin = { { 0 } };
12334 /* ?_Ptr_wcin@std@@3PAV?$basic_istream@GU?$char_traits@G@std@@@1@A */
12335 /* ?_Ptr_wcin@std@@3PEAV?$basic_istream@GU?$char_traits@G@std@@@1@EA */
12336 basic_istream_wchar *_Ptr_ucin = &ucin.obj;
12338 static basic_filebuf_wchar filebuf_wchar_stdin;
12339 /* ?wcin@std@@3V?$basic_istream@_WU?$char_traits@_W@std@@@1@A */
12340 struct {
12341 basic_istream_wchar obj;
12342 basic_ios_wchar vbase;
12343 } wcin = { { 0 } };
12344 /* ?_Ptr_wcin@std@@3PAV?$basic_istream@_WU?$char_traits@_W@std@@@1@A */
12345 /* ?_Ptr_wcin@std@@3PEAV?$basic_istream@_WU?$char_traits@_W@std@@@1@EA */
12346 basic_istream_wchar *_Ptr_wcin = &wcin.obj;
12348 static basic_filebuf_char filebuf_char_stdout;
12349 /* ?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A */
12350 struct {
12351 basic_ostream_char obj;
12352 basic_ios_char vbase;
12353 } cout = { { 0 } };
12354 /* ?_Ptr_cout@std@@3PAV?$basic_ostream@DU?$char_traits@D@std@@@1@A */
12355 /* ?_Ptr_cout@std@@3PEAV?$basic_ostream@DU?$char_traits@D@std@@@1@EA */
12356 basic_ostream_char *_Ptr_cout = &cout.obj;
12358 static basic_filebuf_wchar filebuf_short_stdout;
12359 /* ?wcout@std@@3V?$basic_ostream@GU?$char_traits@G@std@@@1@A */
12360 struct {
12361 basic_ostream_wchar obj;
12362 basic_ios_wchar vbase;
12363 } ucout = { { 0 } };
12364 /* ?_Ptr_wcout@std@@3PAV?$basic_ostream@GU?$char_traits@G@std@@@1@A */
12365 /* ?_Ptr_wcout@std@@3PEAV?$basic_ostream@GU?$char_traits@G@std@@@1@EA */
12366 basic_ostream_wchar *_Ptr_ucout = &ucout.obj;
12368 static basic_filebuf_wchar filebuf_wchar_stdout;
12369 /* ?wcout@std@@3V?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
12370 struct {
12371 basic_ostream_wchar obj;
12372 basic_ios_wchar vbase;
12373 } wcout = { { 0 } };
12374 /* ?_Ptr_wcout@std@@3PAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
12375 /* ?_Ptr_wcout@std@@3PEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@EA */
12376 basic_ostream_wchar *_Ptr_wcout = &wcout.obj;
12378 static basic_filebuf_char filebuf_char_stderr;
12379 /* ?cerr@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A */
12380 struct {
12381 basic_ostream_char obj;
12382 basic_ios_char vbase;
12383 } cerr = { { 0 } };
12384 /* ?_Ptr_cerr@std@@3PAV?$basic_ostream@DU?$char_traits@D@std@@@1@A */
12385 /* ?_Ptr_cerr@std@@3PEAV?$basic_ostream@DU?$char_traits@D@std@@@1@EA */
12386 basic_ostream_char *_Ptr_cerr = &cerr.obj;
12388 static basic_filebuf_wchar filebuf_short_stderr;
12389 /* ?wcerr@std@@3V?$basic_ostream@GU?$char_traits@G@std@@@1@A */
12390 struct {
12391 basic_ostream_wchar obj;
12392 basic_ios_wchar vbase;
12393 } ucerr = { { 0 } };
12394 /* ?_Ptr_wcerr@std@@3PAV?$basic_ostream@GU?$char_traits@G@std@@@1@A */
12395 /* ?_Ptr_wcerr@std@@3PEAV?$basic_ostream@GU?$char_traits@G@std@@@1@EA */
12396 basic_ostream_wchar *_Ptr_ucerr = &ucerr.obj;
12398 static basic_filebuf_wchar filebuf_wchar_stderr;
12399 /* ?wcerr@std@@3V?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
12400 struct {
12401 basic_ostream_wchar obj;
12402 basic_ios_wchar vbase;
12403 } wcerr = { { 0 } };
12404 /* ?_Ptr_wcerr@std@@3PAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
12405 /* ?_Ptr_wcerr@std@@3PEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@EA */
12406 basic_ostream_wchar *_Ptr_wcerr = &wcerr.obj;
12408 static basic_filebuf_char filebuf_char_log;
12409 /* ?clog@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A */
12410 struct {
12411 basic_ostream_char obj;
12412 basic_ios_char vbase;
12413 } clog = { { 0 } };
12414 /* ?_Ptr_clog@std@@3PAV?$basic_ostream@DU?$char_traits@D@std@@@1@A */
12415 /* ?_Ptr_clog@std@@3PEAV?$basic_ostream@DU?$char_traits@D@std@@@1@EA */
12416 basic_ostream_char *_Ptr_clog = &clog.obj;
12418 static basic_filebuf_wchar filebuf_short_log;
12419 /* ?wclog@std@@3V?$basic_ostream@GU?$char_traits@G@std@@@1@A */
12420 struct {
12421 basic_ostream_wchar obj;
12422 basic_ios_wchar vbase;
12423 } uclog = { { 0 } };
12424 /* ?_Ptr_wclog@std@@3PAV?$basic_ostream@GU?$char_traits@G@std@@@1@A */
12425 /* ?_Ptr_wclog@std@@3PEAV?$basic_ostream@GU?$char_traits@G@std@@@1@EA */
12426 basic_ostream_wchar *_Ptr_uclog = &uclog.obj;
12428 static basic_filebuf_wchar filebuf_wchar_log;
12429 /* ?wclog@std@@3V?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
12430 struct {
12431 basic_ostream_wchar obj;
12432 basic_ios_wchar vbase;
12433 } wclog = { { 0 } };
12434 /* ?_Ptr_wclog@std@@3PAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
12435 /* ?_Ptr_wclog@std@@3PEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@EA */
12436 basic_ostream_wchar *_Ptr_wclog = &wclog.obj;
12438 void init_io(void)
12440 basic_filebuf_char_ctor_file(&filebuf_char_stdin, stdin);
12441 basic_istream_char_ctor(&cin.obj, &filebuf_char_stdin.base, FALSE/*FIXME*/, TRUE);
12443 basic_filebuf_short_ctor_file(&filebuf_short_stdin, stdin);
12444 basic_istream_short_ctor(&ucin.obj, &filebuf_short_stdin.base, FALSE/*FIXME*/, TRUE);
12446 basic_filebuf_wchar_ctor_file(&filebuf_wchar_stdin, stdin);
12447 basic_istream_wchar_ctor(&wcin.obj, &filebuf_wchar_stdin.base, FALSE/*FIXME*/, TRUE);
12449 basic_filebuf_char_ctor_file(&filebuf_char_stdout, stdout);
12450 basic_ostream_char_ctor(&cout.obj, &filebuf_char_stdout.base, FALSE/*FIXME*/, TRUE);
12452 basic_filebuf_short_ctor_file(&filebuf_short_stdout, stdout);
12453 basic_ostream_short_ctor(&ucout.obj, &filebuf_short_stdout.base, FALSE/*FIXME*/, TRUE);
12455 basic_filebuf_wchar_ctor_file(&filebuf_wchar_stdout, stdout);
12456 basic_ostream_wchar_ctor(&wcout.obj, &filebuf_wchar_stdout.base, FALSE/*FIXME*/, TRUE);
12458 basic_filebuf_char_ctor_file(&filebuf_char_stderr, stderr);
12459 basic_ostream_char_ctor(&cerr.obj, &filebuf_char_stderr.base, FALSE/*FIXME*/, TRUE);
12461 basic_filebuf_short_ctor_file(&filebuf_short_stderr, stderr);
12462 basic_ostream_short_ctor(&ucerr.obj, &filebuf_short_stderr.base, FALSE/*FIXME*/, TRUE);
12464 basic_filebuf_wchar_ctor_file(&filebuf_wchar_stderr, stderr);
12465 basic_ostream_wchar_ctor(&wcerr.obj, &filebuf_wchar_stderr.base, FALSE/*FIXME*/, TRUE);
12467 basic_filebuf_char_ctor_file(&filebuf_char_log, stderr);
12468 basic_ostream_char_ctor(&clog.obj, &filebuf_char_log.base, FALSE/*FIXME*/, TRUE);
12470 basic_filebuf_short_ctor_file(&filebuf_short_log, stderr);
12471 basic_ostream_short_ctor(&uclog.obj, &filebuf_short_log.base, FALSE/*FIXME*/, TRUE);
12473 basic_filebuf_wchar_ctor_file(&filebuf_wchar_log, stderr);
12474 basic_ostream_wchar_ctor(&wclog.obj, &filebuf_wchar_log.base, FALSE/*FIXME*/, TRUE);
12477 void free_io(void)
12479 basic_istream_char_dtor(basic_istream_char_to_basic_ios(&cin.obj));
12480 basic_filebuf_char_dtor(&filebuf_char_stdin);
12482 basic_istream_wchar_dtor(basic_istream_wchar_to_basic_ios(&ucin.obj));
12483 basic_filebuf_wchar_dtor(&filebuf_short_stdin);
12485 basic_istream_wchar_dtor(basic_istream_wchar_to_basic_ios(&wcin.obj));
12486 basic_filebuf_wchar_dtor(&filebuf_wchar_stdin);
12488 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(&cout.obj));
12489 basic_filebuf_char_dtor(&filebuf_char_stdout);
12491 basic_ostream_wchar_dtor(basic_ostream_wchar_to_basic_ios(&ucout.obj));
12492 basic_filebuf_wchar_dtor(&filebuf_short_stdout);
12494 basic_ostream_wchar_dtor(basic_ostream_wchar_to_basic_ios(&wcout.obj));
12495 basic_filebuf_wchar_dtor(&filebuf_wchar_stdout);
12497 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(&cerr.obj));
12498 basic_filebuf_char_dtor(&filebuf_char_stderr);
12500 basic_ostream_wchar_dtor(basic_ostream_wchar_to_basic_ios(&ucerr.obj));
12501 basic_filebuf_wchar_dtor(&filebuf_short_stderr);
12503 basic_ostream_wchar_dtor(basic_ostream_wchar_to_basic_ios(&wcerr.obj));
12504 basic_filebuf_wchar_dtor(&filebuf_wchar_stderr);
12506 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(&clog.obj));
12507 basic_filebuf_char_dtor(&filebuf_char_log);
12509 basic_ostream_wchar_dtor(basic_ostream_wchar_to_basic_ios(&uclog.obj));
12510 basic_filebuf_wchar_dtor(&filebuf_short_log);
12512 basic_ostream_wchar_dtor(basic_ostream_wchar_to_basic_ios(&wclog.obj));
12513 basic_filebuf_wchar_dtor(&filebuf_wchar_log);