include/mscvpdb.h: Use flexible array members for the rest of structures.
[wine.git] / dlls / msvcp90 / ios.c
blob1bf1a41cca471ad01bd3bb9edcd01c06e4f535c3
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 <stdarg.h>
20 #include <limits.h>
21 #include <share.h>
23 #include "msvcp90.h"
24 #include "windef.h"
25 #include "winbase.h"
26 #include "winnls.h"
27 #include "wine/debug.h"
29 WINE_DEFAULT_DEBUG_CHANNEL(msvcp);
31 #define SECSPERDAY 86400
32 /* 1601 to 1970 is 369 years plus 89 leap days */
33 #define SECS_1601_TO_1970 ((369 * 365 + 89) * (ULONGLONG)SECSPERDAY)
34 #define TICKSPERSEC 10000000
35 #define TICKS_1601_TO_1970 (SECS_1601_TO_1970 * TICKSPERSEC)
37 /* ?_Index@ios_base@std@@0HA */
38 int ios_base_Index = 0;
39 /* ?_Sync@ios_base@std@@0_NA */
40 bool ios_base_Sync = FALSE;
42 typedef struct {
43 streamoff off;
44 __int64 DECLSPEC_ALIGN(8) pos;
45 _Mbstatet state;
46 } fpos_mbstatet;
48 static inline const char* debugstr_fpos_mbstatet(fpos_mbstatet *fpos)
50 return wine_dbg_sprintf("fpos(%s %s %d)", wine_dbgstr_longlong(fpos->off),
51 wine_dbgstr_longlong(fpos->pos), MBSTATET_TO_INT(&fpos->state));
54 typedef struct {
55 void (__cdecl *pfunc)(ios_base*, streamsize);
56 streamsize arg;
57 } manip_streamsize;
59 typedef struct {
60 void (__cdecl *pfunc)(ios_base*, int);
61 int arg;
62 } manip_int;
64 typedef enum {
65 INITFL_new = 0,
66 INITFL_open = 1,
67 INITFL_close = 2
68 } basic_filebuf__Initfl;
70 typedef struct {
71 basic_streambuf_char base;
72 codecvt_char *cvt;
73 #if _MSVCP_VER < 80
74 int state0;
75 char putback;
76 basic_string_char *conv;
77 #else
78 char putback;
79 #endif
80 bool wrotesome;
81 _Mbstatet state;
82 bool close;
83 #if _MSVCP_VER == 70
84 locale loc;
85 #endif
86 FILE *file;
87 } basic_filebuf_char;
89 typedef struct {
90 basic_streambuf_wchar base;
91 codecvt_wchar *cvt;
92 #if _MSVCP_VER < 80
93 int state0;
94 wchar_t putback;
95 basic_string_char *conv;
96 #else
97 wchar_t putback;
98 #endif
99 bool wrotesome;
100 _Mbstatet state;
101 bool close;
102 #if _MSVCP_VER == 70
103 locale loc;
104 #endif
105 FILE *file;
106 } basic_filebuf_wchar;
108 typedef enum {
109 STRINGBUF_allocated = 1,
110 STRINGBUF_no_write = 2,
111 STRINGBUF_no_read = 4,
112 STRINGBUF_append = 8,
113 STRINGBUF_at_end = 16
114 } basic_stringbuf_state;
116 typedef struct {
117 basic_streambuf_char base;
118 char *seekhigh;
119 int state;
120 char allocator; /* empty struct */
121 } basic_stringbuf_char;
123 typedef struct {
124 basic_streambuf_wchar base;
125 wchar_t *seekhigh;
126 int state;
127 char allocator; /* empty struct */
128 } basic_stringbuf_wchar;
130 typedef struct {
131 ios_base base;
132 basic_streambuf_char *strbuf;
133 struct _basic_ostream_char *stream;
134 char fillch;
135 } basic_ios_char;
137 typedef struct {
138 ios_base base;
139 basic_streambuf_wchar *strbuf;
140 struct _basic_ostream_wchar *stream;
141 wchar_t fillch;
142 } basic_ios_wchar;
144 typedef struct _basic_ostream_char {
145 const int *vbtable;
146 /* virtual inheritance
147 * basic_ios_char basic_ios;
149 } basic_ostream_char;
151 typedef struct _basic_ostream_wchar {
152 const int *vbtable;
153 /* virtual inheritance
154 * basic_ios_wchar basic_ios;
156 } basic_ostream_wchar;
158 typedef struct {
159 const int *vbtable;
160 streamsize count;
161 /* virtual inheritance
162 * basic_ios_char basic_ios;
164 } basic_istream_char;
166 typedef struct {
167 const int *vbtable;
168 streamsize count;
169 /* virtual inheritance
170 * basic_ios_wchar basic_ios;
172 } basic_istream_wchar;
174 typedef struct {
175 basic_istream_char base1;
176 basic_ostream_char base2;
177 /* virtual inheritance
178 * basic_ios_char basic_ios;
180 } basic_iostream_char;
182 typedef struct {
183 basic_istream_wchar base1;
184 basic_ostream_wchar base2;
185 /* virtual inheritance
186 * basic_ios_wchar basic_ios;
188 } basic_iostream_wchar;
190 typedef struct {
191 basic_ostream_char base;
192 basic_filebuf_char filebuf;
193 /* virtual inheritance
194 * basic_ios_char basic_ios;
196 } basic_ofstream_char;
198 typedef struct {
199 basic_ostream_wchar base;
200 basic_filebuf_wchar filebuf;
201 /* virtual inheritance
202 * basic_ios_wchar basic_ios;
204 } basic_ofstream_wchar;
206 typedef struct {
207 basic_istream_char base;
208 basic_filebuf_char filebuf;
209 /* virtual inheritance
210 * basic_ios_char basic_ios;
212 } basic_ifstream_char;
214 typedef struct {
215 basic_istream_wchar base;
216 basic_filebuf_wchar filebuf;
217 /* virtual inheritance
218 * basic_ios_wchar basic_ios;
220 } basic_ifstream_wchar;
222 typedef struct {
223 basic_iostream_char base;
224 basic_filebuf_char filebuf;
225 /* virtual inheritance
226 * basic_ios_char basic_ios;
228 } basic_fstream_char;
230 typedef struct {
231 basic_iostream_wchar base;
232 basic_filebuf_wchar filebuf;
233 /* virtual inheritance
234 * basic_ios_char basic_ios;
236 } basic_fstream_wchar;
238 typedef struct {
239 basic_ostream_char base;
240 basic_stringbuf_char strbuf;
241 /* virtual inheritance
242 * basic_ios_char basic_ios;
244 } basic_ostringstream_char;
246 typedef struct {
247 basic_ostream_wchar base;
248 basic_stringbuf_wchar strbuf;
249 /* virtual inheritance
250 * basic_ios_wchar basic_ios;
252 } basic_ostringstream_wchar;
254 typedef struct {
255 basic_istream_char base;
256 basic_stringbuf_char strbuf;
257 /* virtual inheritance
258 * basic_ios_char basic_ios;
260 } basic_istringstream_char;
262 typedef struct {
263 basic_istream_wchar base;
264 basic_stringbuf_wchar strbuf;
265 /* virtual inheritance
266 * basic_ios_wchar basic_ios;
268 } basic_istringstream_wchar;
270 typedef struct {
271 basic_iostream_char base;
272 basic_stringbuf_char strbuf;
273 /* virtual inheritance
274 * basic_ios_char basic_ios;
276 } basic_stringstream_char;
278 typedef struct {
279 basic_iostream_wchar base;
280 basic_stringbuf_wchar strbuf;
281 /* virtual inheritance
282 * basic_ios_wchar basic_ios;
284 } basic_stringstream_wchar;
286 typedef enum {
287 STRSTATE_Allocated = 1,
288 STRSTATE_Constant = 2,
289 STRSTATE_Dynamic = 4,
290 STRSTATE_Frozen = 8
291 } strstreambuf__Strstate;
293 typedef struct {
294 basic_streambuf_char base;
295 streamsize minsize;
296 char *endsave;
297 char *seekhigh;
298 int strmode;
299 void* (__cdecl *palloc)(size_t);
300 void (__cdecl *pfree)(void*);
301 } strstreambuf;
303 typedef struct {
304 basic_ostream_char base;
305 strstreambuf buf;
306 /* virtual inheritance
307 * basic_ios_char basic_ios;
309 } ostrstream;
311 typedef struct {
312 basic_istream_char base;
313 strstreambuf buf;
314 /* virtual inheritance
315 * basic_ios_char basic_ios;
317 } istrstream;
319 typedef struct {
320 basic_iostream_char base;
321 strstreambuf buf;
322 /* virtual inheritance
323 * basic_ios_char basic_ios;
325 } strstream;
327 struct space_info {
328 ULONGLONG capacity;
329 ULONGLONG free;
330 ULONGLONG available;
333 enum file_type {
334 #if _MSVCP_VER < 140
335 status_unknown,
336 file_not_found,
337 #else
338 file_not_found = -1,
339 none_file,
340 #endif
341 regular_file,
342 directory_file,
343 symlink_file,
344 block_file,
345 character_file,
346 fifo_file,
347 socket_file,
348 #if _MSVCP_VER < 140
349 type_unknown,
350 #else
351 status_unknown
352 #endif
355 #if _MSVCP_VER >= 110
356 #define BASIC_IOS_VTORDISP 1
357 #define INIT_BASIC_IOS_VTORDISP(basic_ios) ((int*)basic_ios)[-1] = 0
358 #else
359 #define BASIC_IOS_VTORDISP 0
360 #define INIT_BASIC_IOS_VTORDISP(basic_ios)
361 #endif
363 #define VBTABLE_ENTRY(class, offset, vbase, vtordisp) ALIGNED_SIZE(sizeof(class)+vtordisp*sizeof(int), TYPE_ALIGNMENT(vbase))-offset
364 #define VBTABLE_BASIC_IOS_ENTRY(class, offset) VBTABLE_ENTRY(class, offset, basic_ios_char, BASIC_IOS_VTORDISP)
366 extern const vtable_ptr iosb_vtable;
368 /* ??_7ios_base@std@@6B@ */
369 extern const vtable_ptr ios_base_vtable;
371 /* ??_7?$basic_ios@DU?$char_traits@D@std@@@std@@6B@ */
372 extern const vtable_ptr basic_ios_char_vtable;
374 /* ??_7?$basic_ios@_WU?$char_traits@_W@std@@@std@@6B@ */
375 extern const vtable_ptr basic_ios_wchar_vtable;
377 /* ??_7?$basic_ios@GU?$char_traits@G@std@@@std@@6B@ */
378 extern const vtable_ptr basic_ios_short_vtable;
380 /* ??_7?$basic_streambuf@DU?$char_traits@D@std@@@std@@6B@ */
381 extern const vtable_ptr basic_streambuf_char_vtable;
383 /* ??_7?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@6B@ */
384 extern const vtable_ptr basic_streambuf_wchar_vtable;
386 /* ??_7?$basic_streambuf@GU?$char_traits@G@std@@@std@@6B@ */
387 extern const vtable_ptr basic_streambuf_short_vtable;
389 /* ??_7?$basic_filebuf@DU?$char_traits@D@std@@@std@@6B@ */
390 extern const vtable_ptr basic_filebuf_char_vtable;
392 /* ??_7?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@6B@ */
393 extern const vtable_ptr basic_filebuf_wchar_vtable;
395 /* ??_7?$basic_filebuf@GU?$char_traits@G@std@@@std@@6B@ */
396 extern const vtable_ptr basic_filebuf_short_vtable;
398 /* ??_7?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */
399 extern const vtable_ptr basic_stringbuf_char_vtable;
401 /* ??_7?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@6B@ */
402 extern const vtable_ptr basic_stringbuf_wchar_vtable;
404 /* ??_7?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@6B@ */
405 extern const vtable_ptr basic_stringbuf_short_vtable;
407 /* ??_8?$basic_ostream@DU?$char_traits@D@std@@@std@@7B@ */
408 const int basic_ostream_char_vbtable[] = {0,
409 VBTABLE_BASIC_IOS_ENTRY(basic_ostream_char, 0)};
410 /* ??_7?$basic_ostream@DU?$char_traits@D@std@@@std@@6B@ */
411 extern const vtable_ptr basic_ostream_char_vtable;
413 /* ??_8?$basic_ostream@_WU?$char_traits@_W@std@@@std@@7B@ */
414 const int basic_ostream_wchar_vbtable[] = {0,
415 VBTABLE_BASIC_IOS_ENTRY(basic_ostream_wchar, 0)};
416 /* ??_7?$basic_ostream@_WU?$char_traits@_W@std@@@std@@6B@ */
417 extern const vtable_ptr basic_ostream_wchar_vtable;
419 /* ??_8?$basic_ostream@GU?$char_traits@G@std@@@std@@7B@ */
420 const int basic_ostream_short_vbtable[] = {0,
421 VBTABLE_BASIC_IOS_ENTRY(basic_ostream_wchar, 0)};
422 /* ??_7?$basic_ostream@GU?$char_traits@G@std@@@std@@6B@ */
423 extern const vtable_ptr basic_ostream_short_vtable;
425 /* ??_8?$basic_istream@DU?$char_traits@D@std@@@std@@7B@ */
426 const int basic_istream_char_vbtable[] = {0,
427 VBTABLE_BASIC_IOS_ENTRY(basic_istream_char, 0)};
428 /* ??_7?$basic_istream@DU?$char_traits@D@std@@@std@@6B@ */
429 extern const vtable_ptr basic_istream_char_vtable;
431 /* ??_8?$basic_istream@_WU?$char_traits@_W@std@@@std@@7B@ */
432 const int basic_istream_wchar_vbtable[] = {0,
433 VBTABLE_BASIC_IOS_ENTRY(basic_istream_wchar, 0)};
434 /* ??_7?$basic_istream@_WU?$char_traits@_W@std@@@std@@6B@ */
435 extern const vtable_ptr basic_istream_wchar_vtable;
437 /* ??_8?$basic_istream@GU?$char_traits@G@std@@@std@@7B@ */
438 const int basic_istream_short_vbtable[] = {0,
439 VBTABLE_BASIC_IOS_ENTRY(basic_istream_wchar, 0)};
440 /* ??_7?$basic_istream@GU?$char_traits@G@std@@@std@@6B@ */
441 extern const vtable_ptr basic_istream_short_vtable;
443 /* ??_8?$basic_iostream@DU?$char_traits@D@std@@@std@@7B?$basic_istream@DU?$char_traits@D@std@@@1@@ */
444 const int basic_iostream_char_vbtable1[] = {0,
445 VBTABLE_BASIC_IOS_ENTRY(basic_iostream_char, 0)};
446 /* ??_8?$basic_iostream@DU?$char_traits@D@std@@@std@@7B?$basic_ostream@DU?$char_traits@D@std@@@1@@ */
447 const int basic_iostream_char_vbtable2[] = {0,
448 VBTABLE_BASIC_IOS_ENTRY(basic_iostream_char, FIELD_OFFSET(basic_iostream_char, base2))};
449 /* ??_7?$basic_iostream@DU?$char_traits@D@std@@@std@@6B@ */
450 extern const vtable_ptr basic_iostream_char_vtable;
452 /* ??_8?$basic_iostream@_WU?$char_traits@_W@std@@@std@@7B?$basic_istream@_WU?$char_traits@_W@std@@@1@@ */
453 /* ??_8?$basic_iostream@GU?$char_traits@G@std@@@std@@7B?$basic_istream@GU?$char_traits@G@std@@@1@@ */
454 const int basic_iostream_wchar_vbtable1[] = {0,
455 VBTABLE_BASIC_IOS_ENTRY(basic_iostream_wchar, 0)};
456 /* ??_8?$basic_iostream@_WU?$char_traits@_W@std@@@std@@7B?$basic_ostream@_WU?$char_traits@_W@std@@@1@@ */
457 /* ??_8?$basic_iostream@GU?$char_traits@G@std@@@std@@7B?$basic_ostream@GU?$char_traits@G@std@@@1@@ */
458 const int basic_iostream_wchar_vbtable2[] = {0,
459 VBTABLE_BASIC_IOS_ENTRY(basic_iostream_wchar, FIELD_OFFSET(basic_iostream_wchar, base2))};
460 /* ??_7?$basic_iostream@_WU?$char_traits@_W@std@@@std@@6B@ */
461 extern const vtable_ptr basic_iostream_wchar_vtable;
462 /* ??_7?$basic_iostream@GU?$char_traits@G@std@@@std@@6B@ */
463 extern const vtable_ptr basic_iostream_short_vtable;
465 /* ??_8?$basic_ofstream@DU?$char_traits@D@std@@@std@@7B@ */
466 const int basic_ofstream_char_vbtable[] = {0,
467 VBTABLE_BASIC_IOS_ENTRY(basic_ofstream_char, 0)};
468 /* ??_7?$basic_ofstream@DU?$char_traits@D@std@@@std@@6B@ */
469 extern const vtable_ptr basic_ofstream_char_vtable;
471 /* ??_8?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@7B@ */
472 const int basic_ofstream_wchar_vbtable[] = {0,
473 VBTABLE_BASIC_IOS_ENTRY(basic_ofstream_wchar, 0)};
474 /* ??_7?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@6B@ */
475 extern const vtable_ptr basic_ofstream_wchar_vtable;
477 /* ??_8?$basic_ofstream@GU?$char_traits@G@std@@@std@@7B@ */
478 const int basic_ofstream_short_vbtable[] = {0,
479 VBTABLE_BASIC_IOS_ENTRY(basic_ofstream_wchar, 0)};
480 /* ??_7?$basic_ofstream@GU?$char_traits@G@std@@@std@@6B@ */
481 extern const vtable_ptr basic_ofstream_short_vtable;
483 /* ??_8?$basic_ifstream@DU?$char_traits@D@std@@@std@@7B@ */
484 const int basic_ifstream_char_vbtable[] = {0,
485 VBTABLE_BASIC_IOS_ENTRY(basic_ifstream_char, 0)};
486 /* ??_7?$basic_ifstream@DU?$char_traits@D@std@@@std@@6B@ */
487 extern const vtable_ptr basic_ifstream_char_vtable;
489 /* ??_8?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@7B@ */
490 const int basic_ifstream_wchar_vbtable[] = {0,
491 VBTABLE_BASIC_IOS_ENTRY(basic_ifstream_wchar, 0)};
492 /* ??_7?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@6B@ */
493 extern const vtable_ptr basic_ifstream_wchar_vtable;
495 /* ??_8?$basic_ifstream@GU?$char_traits@G@std@@@std@@7B@ */
496 const int basic_ifstream_short_vbtable[] = {0,
497 VBTABLE_BASIC_IOS_ENTRY(basic_ifstream_wchar, 0)};
498 /* ??_7?$basic_ifstream@GU?$char_traits@G@std@@@std@@6B@ */
499 extern const vtable_ptr basic_ifstream_short_vtable;
501 /* ??_8?$basic_fstream@DU?$char_traits@D@std@@@std@@7B?$basic_istream@DU?$char_traits@D@std@@@1@@ */
502 const int basic_fstream_char_vbtable1[] = {0,
503 VBTABLE_BASIC_IOS_ENTRY(basic_fstream_char, 0)};
504 /* ??_8?$basic_fstream@DU?$char_traits@D@std@@@std@@7B?$basic_ostream@DU?$char_traits@D@std@@@1@@ */
505 const int basic_fstream_char_vbtable2[] = {0,
506 VBTABLE_BASIC_IOS_ENTRY(basic_fstream_char, FIELD_OFFSET(basic_fstream_char, base.base2))};
507 /* ??_7?$basic_fstream@DU?$char_traits@D@std@@@std@@6B@ */
508 extern const vtable_ptr basic_fstream_char_vtable;
510 /* ??_8?$basic_fstream@_WU?$char_traits@_W@std@@@std@@7B?$basic_istream@_WU?$char_traits@_W@std@@@1@@ */
511 /* ??_8?$basic_fstream@GU?$char_traits@G@std@@@std@@7B?$basic_istream@GU?$char_traits@G@std@@@1@@ */
512 const int basic_fstream_wchar_vbtable1[] = {0,
513 VBTABLE_BASIC_IOS_ENTRY(basic_fstream_wchar, 0)};
514 /* ??_8?$basic_fstream@_WU?$char_traits@_W@std@@@std@@7B?$basic_ostream@_WU?$char_traits@_W@std@@@1@@ */
515 /* ??_8?$basic_fstream@GU?$char_traits@G@std@@@std@@7B?$basic_ostream@GU?$char_traits@G@std@@@1@@ */
516 const int basic_fstream_wchar_vbtable2[] = {0,
517 VBTABLE_BASIC_IOS_ENTRY(basic_fstream_wchar, FIELD_OFFSET(basic_fstream_wchar, base.base2))};
518 /* ??_7?$basic_fstream@_WU?$char_traits@_W@std@@@std@@6B@ */
519 extern const vtable_ptr basic_fstream_wchar_vtable;
520 /* ??_7?$basic_fstream@GU?$char_traits@G@std@@@std@@6B@ */
521 extern const vtable_ptr basic_fstream_short_vtable;
523 /* ??_8?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B@ */
524 const int basic_ostringstream_char_vbtable[] = {0,
525 VBTABLE_BASIC_IOS_ENTRY(basic_ostringstream_char, 0)};
526 /* ??_7?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */
527 extern const vtable_ptr basic_ostringstream_char_vtable;
529 /* ??_8?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@7B@ */
530 const int basic_ostringstream_wchar_vbtable[] = {0,
531 VBTABLE_BASIC_IOS_ENTRY(basic_ostringstream_wchar, 0)};
532 /* ??_7?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@6B@ */
533 extern const vtable_ptr basic_ostringstream_wchar_vtable;
535 /* ??_8?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@7B@ */
536 const int basic_ostringstream_short_vbtable[] = {0,
537 VBTABLE_BASIC_IOS_ENTRY(basic_ostringstream_wchar, 0)};
538 /* ??_7?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@6B@ */
539 extern const vtable_ptr basic_ostringstream_short_vtable;
541 /* ??_8?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B@ */
542 const int basic_istringstream_char_vbtable[] = {0,
543 VBTABLE_BASIC_IOS_ENTRY(basic_istringstream_char, 0)};
544 /* ??_7?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */
545 extern const vtable_ptr basic_istringstream_char_vtable;
547 /* ??_8?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@7B@ */
548 const int basic_istringstream_wchar_vbtable[] = {0,
549 VBTABLE_BASIC_IOS_ENTRY(basic_istringstream_wchar, 0)};
550 /* ??_7?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@6B@ */
551 extern const vtable_ptr basic_istringstream_wchar_vtable;
553 /* ??_8?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@7B@ */
554 const int basic_istringstream_short_vbtable[] = {0,
555 VBTABLE_BASIC_IOS_ENTRY(basic_istringstream_wchar, 0)};
556 /* ??_7?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@6B@ */
557 extern const vtable_ptr basic_istringstream_short_vtable;
559 /* ??_8?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B?$basic_istream@DU?$char_traits@D@std@@@1@@ */
560 const int basic_stringstream_char_vbtable1[] = {0,
561 VBTABLE_BASIC_IOS_ENTRY(basic_stringstream_char, 0)};
562 /* ??_8?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B?$basic_ostream@DU?$char_traits@D@std@@@1@@ */
563 const int basic_stringstream_char_vbtable2[] = {0,
564 VBTABLE_BASIC_IOS_ENTRY(basic_stringstream_char, FIELD_OFFSET(basic_stringstream_char, base.base2))};
565 /* ??_7?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */
566 extern const vtable_ptr basic_stringstream_char_vtable;
568 /* ??_8?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@7B?$basic_istream@_WU?$char_traits@_W@std@@@1@@ */
569 const int basic_stringstream_wchar_vbtable1[] = {0,
570 VBTABLE_BASIC_IOS_ENTRY(basic_stringstream_wchar, 0)};
571 /* ??_8?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@7B?$basic_ostream@_WU?$char_traits@_W@std@@@1@@ */
572 const int basic_stringstream_wchar_vbtable2[] = {0,
573 VBTABLE_BASIC_IOS_ENTRY(basic_stringstream_wchar, FIELD_OFFSET(basic_stringstream_wchar, base.base2))};
574 /* ??_7?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@6B@ */
575 extern const vtable_ptr basic_stringstream_wchar_vtable;
577 /* ??_8?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@7B?$basic_istream@GU?$char_traits@G@std@@@1@@ */
578 const int basic_stringstream_short_vbtable1[] = {0,
579 VBTABLE_BASIC_IOS_ENTRY(basic_stringstream_wchar, 0)};
580 /* ??_8?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@7B?$basic_ostream@GU?$char_traits@G@std@@@1@@ */
581 const int basic_stringstream_short_vbtable2[] = {0,
582 VBTABLE_BASIC_IOS_ENTRY(basic_stringstream_wchar, FIELD_OFFSET(basic_stringstream_wchar, base.base2))};
583 /* ??_7?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@6B@ */
584 extern const vtable_ptr basic_stringstream_short_vtable;
586 /* ??_7strstreambuf@std@@6B */
587 extern const vtable_ptr strstreambuf_vtable;
589 static const int ostrstream_vbtable[] = {0, VBTABLE_BASIC_IOS_ENTRY(ostrstream, 0)};
590 extern const vtable_ptr ostrstream_vtable;
592 static const int istrstream_vbtable[] = {0, VBTABLE_BASIC_IOS_ENTRY(istrstream, 0)};
594 static const int strstream_vbtable1[] = {0, VBTABLE_BASIC_IOS_ENTRY(strstream, 0)};
595 static const int strstream_vbtable2[] = {0,
596 VBTABLE_BASIC_IOS_ENTRY(strstream, FIELD_OFFSET(strstream, base.base2))};
597 extern const vtable_ptr strstream_vtable;
599 DEFINE_RTTI_DATA0(iosb, 0, ".?AV?$_Iosb@H@std@@")
600 DEFINE_RTTI_DATA1(ios_base, 0, &iosb_rtti_base_descriptor, ".?AV?$_Iosb@H@std@@")
601 DEFINE_RTTI_DATA2(basic_ios_char, 0, &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
602 ".?AV?$basic_ios@DU?$char_traits@D@std@@@std@@")
603 DEFINE_RTTI_DATA2(basic_ios_wchar, 0, &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
604 ".?AV?$basic_ios@_WU?$char_traits@_W@std@@@std@@")
605 DEFINE_RTTI_DATA2(basic_ios_short, 0, &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
606 ".?AV?$basic_ios@GU?$char_traits@G@std@@@std@@")
607 DEFINE_RTTI_DATA0(basic_streambuf_char, 0,
608 ".?AV?$basic_streambuf@DU?$char_traits@D@std@@@std@@")
609 DEFINE_RTTI_DATA0(basic_streambuf_wchar, 0,
610 ".?AV?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@")
611 DEFINE_RTTI_DATA0(basic_streambuf_short, 0,
612 ".?AV?$basic_streambuf@GU?$char_traits@G@std@@@std@@")
613 DEFINE_RTTI_DATA1(basic_filebuf_char, 0, &basic_streambuf_char_rtti_base_descriptor,
614 ".?AV?$basic_filebuf@DU?$char_traits@D@std@@@std@@")
615 DEFINE_RTTI_DATA1(basic_filebuf_wchar, 0, &basic_streambuf_wchar_rtti_base_descriptor,
616 ".?AV?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@")
617 DEFINE_RTTI_DATA1(basic_filebuf_short, 0, &basic_streambuf_short_rtti_base_descriptor,
618 ".?AV?$basic_filebuf@GU?$char_traits@G@std@@@std@@")
619 DEFINE_RTTI_DATA1(basic_stringbuf_char, 0, &basic_streambuf_char_rtti_base_descriptor,
620 ".?AV?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@")
621 DEFINE_RTTI_DATA1(basic_stringbuf_wchar, 0, &basic_streambuf_wchar_rtti_base_descriptor,
622 ".?AV?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@")
623 DEFINE_RTTI_DATA1(basic_stringbuf_short, 0, &basic_streambuf_short_rtti_base_descriptor,
624 ".?AV?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@")
625 DEFINE_RTTI_DATA3(basic_ostream_char, sizeof(basic_ostream_char), &basic_ios_char_rtti_base_descriptor,
626 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
627 ".?AV?$basic_ostream@DU?$char_traits@D@std@@@std@@")
628 DEFINE_RTTI_DATA3(basic_ostream_wchar, sizeof(basic_ostream_wchar), &basic_ios_wchar_rtti_base_descriptor,
629 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
630 ".?AV?$basic_ostream@_WU?$char_traits@_W@std@@@std@@")
631 DEFINE_RTTI_DATA3(basic_ostream_short, sizeof(basic_ostream_wchar), &basic_ios_short_rtti_base_descriptor,
632 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
633 ".?AV?$basic_ostream@GU?$char_traits@G@std@@@std@@")
634 DEFINE_RTTI_DATA3(basic_istream_char, sizeof(basic_istream_char), &basic_ios_char_rtti_base_descriptor,
635 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
636 ".?AV?$basic_istream@DU?$char_traits@D@std@@@std@@")
637 DEFINE_RTTI_DATA3(basic_istream_wchar, sizeof(basic_istream_wchar), &basic_ios_wchar_rtti_base_descriptor,
638 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
639 ".?AV?$basic_istream@_WU?$char_traits@_W@std@@@std@@")
640 DEFINE_RTTI_DATA3(basic_istream_short, sizeof(basic_istream_wchar), &basic_ios_short_rtti_base_descriptor,
641 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
642 ".?AV?$basic_istream@GU?$char_traits@G@std@@@std@@")
643 DEFINE_RTTI_DATA8(basic_iostream_char, sizeof(basic_iostream_char),
644 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
645 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
646 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
647 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
648 ".?AV?$basic_iostream@DU?$char_traits@D@std@@@std@@")
649 DEFINE_RTTI_DATA8(basic_iostream_wchar, sizeof(basic_iostream_wchar),
650 &basic_istream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
651 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
652 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
653 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
654 ".?AV?$basic_iostream@_WU?$char_traits@_W@std@@@std@@")
655 DEFINE_RTTI_DATA8(basic_iostream_short, sizeof(basic_iostream_wchar),
656 &basic_istream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
657 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
658 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
659 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
660 ".?AV?$basic_iostream@GU?$char_traits@G@std@@@std@@")
661 DEFINE_RTTI_DATA4(basic_ofstream_char, sizeof(basic_ofstream_char),
662 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
663 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
664 ".?AV?$basic_ofstream@DU?$char_traits@D@std@@@std@@")
665 DEFINE_RTTI_DATA4(basic_ofstream_wchar, sizeof(basic_ofstream_wchar),
666 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
667 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
668 ".?AV?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@")
669 DEFINE_RTTI_DATA4(basic_ofstream_short, sizeof(basic_ofstream_wchar),
670 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
671 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
672 ".?AV?$basic_ofstream@GU?$char_traits@G@std@@@std@@")
673 DEFINE_RTTI_DATA4(basic_ifstream_char, sizeof(basic_ifstream_char),
674 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
675 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
676 ".?AV?$basic_ifstream@DU?$char_traits@D@std@@@std@@")
677 DEFINE_RTTI_DATA4(basic_ifstream_wchar, sizeof(basic_ifstream_wchar),
678 &basic_istream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
679 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
680 ".?AV?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@")
681 DEFINE_RTTI_DATA4(basic_ifstream_short, sizeof(basic_ifstream_wchar),
682 &basic_istream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
683 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
684 ".?AV?$basic_ifstream@GU?$char_traits@G@std@@@std@@")
685 DEFINE_RTTI_DATA8(basic_fstream_char, sizeof(basic_fstream_char),
686 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
687 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
688 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
689 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
690 ".?AV?$basic_fstream@DU?$char_traits@D@std@@@std@@")
691 DEFINE_RTTI_DATA8(basic_fstream_wchar, sizeof(basic_fstream_wchar),
692 &basic_istream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
693 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
694 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
695 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
696 ".?AV?$basic_fstream@_WU?$char_traits@_W@std@@@std@@")
697 DEFINE_RTTI_DATA8(basic_fstream_short, sizeof(basic_fstream_wchar),
698 &basic_istream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
699 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
700 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
701 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
702 ".?AV?$basic_fstream@GU?$char_traits@G@std@@@std@@")
703 DEFINE_RTTI_DATA4(basic_ostringstream_char, sizeof(basic_ostringstream_char),
704 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
705 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
706 ".?AV?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@")
707 DEFINE_RTTI_DATA4(basic_ostringstream_wchar, sizeof(basic_ostringstream_wchar),
708 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
709 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
710 ".?AV?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@")
711 DEFINE_RTTI_DATA4(basic_ostringstream_short, sizeof(basic_ostringstream_wchar),
712 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
713 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
714 ".?AV?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@")
715 DEFINE_RTTI_DATA4(basic_istringstream_char, sizeof(basic_istringstream_char),
716 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
717 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
718 ".?AV?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@")
719 DEFINE_RTTI_DATA4(basic_istringstream_wchar, sizeof(basic_istringstream_wchar),
720 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
721 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
722 ".?AV?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@")
723 DEFINE_RTTI_DATA4(basic_istringstream_short, sizeof(basic_istringstream_wchar),
724 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
725 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
726 ".?AV?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@")
727 DEFINE_RTTI_DATA8(basic_stringstream_char, sizeof(basic_stringstream_char),
728 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
729 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
730 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
731 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
732 ".?AV?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@")
733 DEFINE_RTTI_DATA8(basic_stringstream_wchar, sizeof(basic_stringstream_wchar),
734 &basic_istream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
735 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
736 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
737 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
738 ".?AV?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@")
739 DEFINE_RTTI_DATA8(basic_stringstream_short, sizeof(basic_stringstream_wchar),
740 &basic_istream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
741 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
742 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
743 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
744 ".?AV?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@")
745 DEFINE_RTTI_DATA1(strstreambuf, sizeof(strstreambuf),
746 &basic_streambuf_char_rtti_base_descriptor, ".?AVstrstreambuf@std@@")
747 DEFINE_RTTI_DATA4(ostrstream, sizeof(ostrstream),
748 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
749 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
750 "?AVostrstream@std@@")
751 DEFINE_RTTI_DATA8(strstream, sizeof(strstream),
752 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
753 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
754 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
755 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
756 "?AVstrstream@std@@")
758 __ASM_BLOCK_BEGIN(ios_vtables)
759 __ASM_VTABLE(iosb,
760 VTABLE_ADD_FUNC(iosb_vector_dtor));
761 __ASM_VTABLE(ios_base,
762 VTABLE_ADD_FUNC(ios_base_vector_dtor));
763 __ASM_VTABLE(basic_ios_char,
764 VTABLE_ADD_FUNC(basic_ios_char_vector_dtor)
765 #if _MSVCP_VER == 110
766 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
767 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
768 #endif
770 __ASM_VTABLE(basic_ios_wchar,
771 VTABLE_ADD_FUNC(basic_ios_wchar_vector_dtor)
772 #if _MSVCP_VER == 110
773 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
774 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
775 #endif
777 __ASM_VTABLE(basic_ios_short,
778 VTABLE_ADD_FUNC(basic_ios_wchar_vector_dtor)
779 #if _MSVCP_VER == 110
780 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
781 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
782 #endif
784 __ASM_VTABLE(basic_streambuf_char,
785 VTABLE_ADD_FUNC(basic_streambuf_char_vector_dtor)
786 #if _MSVCP_VER >= 100
787 VTABLE_ADD_FUNC(basic_streambuf_char__Lock)
788 VTABLE_ADD_FUNC(basic_streambuf_char__Unlock)
789 #endif
790 VTABLE_ADD_FUNC(basic_streambuf_char_overflow)
791 VTABLE_ADD_FUNC(basic_streambuf_char_pbackfail)
792 VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc)
793 VTABLE_ADD_FUNC(basic_streambuf_char_underflow)
794 VTABLE_ADD_FUNC(basic_streambuf_char_uflow)
795 VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn)
796 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
797 VTABLE_ADD_FUNC(basic_streambuf_char__Xsgetn_s)
798 #endif
799 VTABLE_ADD_FUNC(basic_streambuf_char_xsputn)
800 VTABLE_ADD_FUNC(basic_streambuf_char_seekoff)
801 VTABLE_ADD_FUNC(basic_streambuf_char_seekpos)
802 VTABLE_ADD_FUNC(basic_streambuf_char_setbuf)
803 VTABLE_ADD_FUNC(basic_streambuf_char_sync)
804 VTABLE_ADD_FUNC(basic_streambuf_char_imbue));
805 __ASM_VTABLE(basic_streambuf_wchar,
806 VTABLE_ADD_FUNC(basic_streambuf_wchar_vector_dtor)
807 #if _MSVCP_VER >= 100
808 VTABLE_ADD_FUNC(basic_streambuf_wchar__Lock)
809 VTABLE_ADD_FUNC(basic_streambuf_wchar__Unlock)
810 #endif
811 VTABLE_ADD_FUNC(basic_streambuf_wchar_overflow)
812 VTABLE_ADD_FUNC(basic_streambuf_wchar_pbackfail)
813 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
814 VTABLE_ADD_FUNC(basic_streambuf_wchar_underflow)
815 VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow)
816 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
817 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
818 VTABLE_ADD_FUNC(basic_streambuf_wchar__Xsgetn_s)
819 #endif
820 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
821 VTABLE_ADD_FUNC(basic_streambuf_wchar_seekoff)
822 VTABLE_ADD_FUNC(basic_streambuf_wchar_seekpos)
823 VTABLE_ADD_FUNC(basic_streambuf_wchar_setbuf)
824 VTABLE_ADD_FUNC(basic_streambuf_wchar_sync)
825 VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue));
826 __ASM_VTABLE(basic_streambuf_short,
827 VTABLE_ADD_FUNC(basic_streambuf_wchar_vector_dtor)
828 #if _MSVCP_VER >= 100
829 VTABLE_ADD_FUNC(basic_streambuf_wchar__Lock)
830 VTABLE_ADD_FUNC(basic_streambuf_wchar__Unlock)
831 #endif
832 VTABLE_ADD_FUNC(basic_streambuf_wchar_overflow)
833 VTABLE_ADD_FUNC(basic_streambuf_wchar_pbackfail)
834 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
835 VTABLE_ADD_FUNC(basic_streambuf_wchar_underflow)
836 VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow)
837 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
838 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
839 VTABLE_ADD_FUNC(basic_streambuf_wchar__Xsgetn_s)
840 #endif
841 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
842 VTABLE_ADD_FUNC(basic_streambuf_wchar_seekoff)
843 VTABLE_ADD_FUNC(basic_streambuf_wchar_seekpos)
844 VTABLE_ADD_FUNC(basic_streambuf_wchar_setbuf)
845 VTABLE_ADD_FUNC(basic_streambuf_wchar_sync)
846 VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue));
847 __ASM_VTABLE(basic_filebuf_char,
848 VTABLE_ADD_FUNC(basic_filebuf_char_vector_dtor)
849 #if _MSVCP_VER >= 100
850 VTABLE_ADD_FUNC(basic_streambuf_char__Lock)
851 VTABLE_ADD_FUNC(basic_streambuf_char__Unlock)
852 #endif
853 VTABLE_ADD_FUNC(basic_filebuf_char_overflow)
854 VTABLE_ADD_FUNC(basic_filebuf_char_pbackfail)
855 VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc)
856 VTABLE_ADD_FUNC(basic_filebuf_char_underflow)
857 VTABLE_ADD_FUNC(basic_filebuf_char_uflow)
858 VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn)
859 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
860 VTABLE_ADD_FUNC(basic_streambuf_char__Xsgetn_s)
861 #endif
862 VTABLE_ADD_FUNC(basic_streambuf_char_xsputn)
863 VTABLE_ADD_FUNC(basic_filebuf_char_seekoff)
864 VTABLE_ADD_FUNC(basic_filebuf_char_seekpos)
865 VTABLE_ADD_FUNC(basic_filebuf_char_setbuf)
866 VTABLE_ADD_FUNC(basic_filebuf_char_sync)
867 VTABLE_ADD_FUNC(basic_filebuf_char_imbue));
868 __ASM_VTABLE(basic_filebuf_wchar,
869 VTABLE_ADD_FUNC(basic_filebuf_wchar_vector_dtor)
870 #if _MSVCP_VER >= 100
871 VTABLE_ADD_FUNC(basic_streambuf_wchar__Lock)
872 VTABLE_ADD_FUNC(basic_streambuf_wchar__Unlock)
873 #endif
874 VTABLE_ADD_FUNC(basic_filebuf_wchar_overflow)
875 VTABLE_ADD_FUNC(basic_filebuf_wchar_pbackfail)
876 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
877 VTABLE_ADD_FUNC(basic_filebuf_wchar_underflow)
878 VTABLE_ADD_FUNC(basic_filebuf_wchar_uflow)
879 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
880 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
881 VTABLE_ADD_FUNC(basic_streambuf_wchar__Xsgetn_s)
882 #endif
883 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
884 VTABLE_ADD_FUNC(basic_filebuf_wchar_seekoff)
885 VTABLE_ADD_FUNC(basic_filebuf_wchar_seekpos)
886 VTABLE_ADD_FUNC(basic_filebuf_wchar_setbuf)
887 VTABLE_ADD_FUNC(basic_filebuf_wchar_sync)
888 VTABLE_ADD_FUNC(basic_filebuf_wchar_imbue));
889 __ASM_VTABLE(basic_filebuf_short,
890 VTABLE_ADD_FUNC(basic_filebuf_wchar_vector_dtor)
891 #if _MSVCP_VER >= 100
892 VTABLE_ADD_FUNC(basic_streambuf_wchar__Lock)
893 VTABLE_ADD_FUNC(basic_streambuf_wchar__Unlock)
894 #endif
895 VTABLE_ADD_FUNC(basic_filebuf_wchar_overflow)
896 VTABLE_ADD_FUNC(basic_filebuf_wchar_pbackfail)
897 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
898 VTABLE_ADD_FUNC(basic_filebuf_wchar_underflow)
899 VTABLE_ADD_FUNC(basic_filebuf_wchar_uflow)
900 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
901 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
902 VTABLE_ADD_FUNC(basic_streambuf_wchar__Xsgetn_s)
903 #endif
904 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
905 VTABLE_ADD_FUNC(basic_filebuf_wchar_seekoff)
906 VTABLE_ADD_FUNC(basic_filebuf_wchar_seekpos)
907 VTABLE_ADD_FUNC(basic_filebuf_short_setbuf)
908 VTABLE_ADD_FUNC(basic_filebuf_wchar_sync)
909 VTABLE_ADD_FUNC(basic_filebuf_short_imbue));
910 __ASM_VTABLE(basic_stringbuf_char,
911 VTABLE_ADD_FUNC(basic_stringbuf_char_vector_dtor)
912 VTABLE_ADD_FUNC(basic_stringbuf_char_overflow)
913 VTABLE_ADD_FUNC(basic_stringbuf_char_pbackfail)
914 VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc)
915 VTABLE_ADD_FUNC(basic_stringbuf_char_underflow)
916 VTABLE_ADD_FUNC(basic_streambuf_char_uflow)
917 VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn)
918 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
919 VTABLE_ADD_FUNC(basic_streambuf_char__Xsgetn_s)
920 #endif
921 VTABLE_ADD_FUNC(basic_streambuf_char_xsputn)
922 VTABLE_ADD_FUNC(basic_stringbuf_char_seekoff)
923 VTABLE_ADD_FUNC(basic_stringbuf_char_seekpos)
924 VTABLE_ADD_FUNC(basic_streambuf_char_setbuf)
925 VTABLE_ADD_FUNC(basic_streambuf_char_sync)
926 VTABLE_ADD_FUNC(basic_streambuf_char_imbue));
927 __ASM_VTABLE(basic_stringbuf_wchar,
928 VTABLE_ADD_FUNC(basic_stringbuf_wchar_vector_dtor)
929 VTABLE_ADD_FUNC(basic_stringbuf_wchar_overflow)
930 VTABLE_ADD_FUNC(basic_stringbuf_wchar_pbackfail)
931 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
932 VTABLE_ADD_FUNC(basic_stringbuf_wchar_underflow)
933 VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow)
934 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
935 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
936 VTABLE_ADD_FUNC(basic_streambuf_wchar__Xsgetn_s)
937 #endif
938 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
939 VTABLE_ADD_FUNC(basic_stringbuf_wchar_seekoff)
940 VTABLE_ADD_FUNC(basic_stringbuf_wchar_seekpos)
941 VTABLE_ADD_FUNC(basic_streambuf_wchar_setbuf)
942 VTABLE_ADD_FUNC(basic_streambuf_wchar_sync)
943 VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue));
944 __ASM_VTABLE(basic_stringbuf_short,
945 VTABLE_ADD_FUNC(basic_stringbuf_wchar_vector_dtor)
946 VTABLE_ADD_FUNC(basic_stringbuf_wchar_overflow)
947 VTABLE_ADD_FUNC(basic_stringbuf_wchar_pbackfail)
948 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
949 VTABLE_ADD_FUNC(basic_stringbuf_wchar_underflow)
950 VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow)
951 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
952 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
953 VTABLE_ADD_FUNC(basic_streambuf_wchar__Xsgetn_s)
954 #endif
955 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
956 VTABLE_ADD_FUNC(basic_stringbuf_wchar_seekoff)
957 VTABLE_ADD_FUNC(basic_stringbuf_wchar_seekpos)
958 VTABLE_ADD_FUNC(basic_streambuf_wchar_setbuf)
959 VTABLE_ADD_FUNC(basic_streambuf_wchar_sync)
960 VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue));
961 __ASM_VTABLE(basic_ostream_char,
962 VTABLE_ADD_FUNC(basic_ostream_char_vector_dtor)
963 #if _MSVCP_VER == 110
964 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
965 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
966 #endif
968 __ASM_VTABLE(basic_ostream_wchar,
969 VTABLE_ADD_FUNC(basic_ostream_wchar_vector_dtor)
970 #if _MSVCP_VER == 110
971 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
972 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
973 #endif
975 __ASM_VTABLE(basic_ostream_short,
976 VTABLE_ADD_FUNC(basic_ostream_wchar_vector_dtor)
977 #if _MSVCP_VER == 110
978 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
979 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
980 #endif
982 __ASM_VTABLE(basic_istream_char,
983 VTABLE_ADD_FUNC(basic_istream_char_vector_dtor)
984 #if _MSVCP_VER == 110
985 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
986 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
987 #endif
989 __ASM_VTABLE(basic_istream_wchar,
990 VTABLE_ADD_FUNC(basic_istream_wchar_vector_dtor)
991 #if _MSVCP_VER == 110
992 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
993 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
994 #endif
996 __ASM_VTABLE(basic_istream_short,
997 VTABLE_ADD_FUNC(basic_istream_wchar_vector_dtor)
998 #if _MSVCP_VER == 110
999 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1000 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1001 #endif
1003 __ASM_VTABLE(basic_iostream_char,
1004 VTABLE_ADD_FUNC(basic_iostream_char_vector_dtor)
1005 #if _MSVCP_VER == 110
1006 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1007 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1008 #endif
1010 __ASM_VTABLE(basic_iostream_wchar,
1011 VTABLE_ADD_FUNC(basic_iostream_wchar_vector_dtor)
1012 #if _MSVCP_VER == 110
1013 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1014 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1015 #endif
1017 __ASM_VTABLE(basic_iostream_short,
1018 VTABLE_ADD_FUNC(basic_iostream_wchar_vector_dtor)
1019 #if _MSVCP_VER == 110
1020 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1021 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1022 #endif
1024 __ASM_VTABLE(basic_ofstream_char,
1025 VTABLE_ADD_FUNC(basic_ofstream_char_vector_dtor)
1026 #if _MSVCP_VER == 110
1027 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1028 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1029 #endif
1031 __ASM_VTABLE(basic_ofstream_wchar,
1032 VTABLE_ADD_FUNC(basic_ofstream_wchar_vector_dtor)
1033 #if _MSVCP_VER == 110
1034 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1035 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1036 #endif
1038 __ASM_VTABLE(basic_ofstream_short,
1039 VTABLE_ADD_FUNC(basic_ofstream_wchar_vector_dtor)
1040 #if _MSVCP_VER == 110
1041 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1042 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1043 #endif
1045 __ASM_VTABLE(basic_ifstream_char,
1046 VTABLE_ADD_FUNC(basic_ifstream_char_vector_dtor)
1047 #if _MSVCP_VER == 110
1048 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1049 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1050 #endif
1052 __ASM_VTABLE(basic_ifstream_wchar,
1053 VTABLE_ADD_FUNC(basic_ifstream_wchar_vector_dtor)
1054 #if _MSVCP_VER == 110
1055 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1056 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1057 #endif
1059 __ASM_VTABLE(basic_ifstream_short,
1060 VTABLE_ADD_FUNC(basic_ifstream_wchar_vector_dtor)
1061 #if _MSVCP_VER == 110
1062 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1063 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1064 #endif
1066 __ASM_VTABLE(basic_fstream_char,
1067 VTABLE_ADD_FUNC(basic_fstream_char_vector_dtor)
1068 #if _MSVCP_VER == 110
1069 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1070 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1071 #endif
1073 __ASM_VTABLE(basic_fstream_wchar,
1074 VTABLE_ADD_FUNC(basic_fstream_wchar_vector_dtor)
1075 #if _MSVCP_VER == 110
1076 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1077 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1078 #endif
1080 __ASM_VTABLE(basic_fstream_short,
1081 VTABLE_ADD_FUNC(basic_fstream_wchar_vector_dtor)
1082 #if _MSVCP_VER == 110
1083 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1084 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1085 #endif
1087 __ASM_VTABLE(basic_ostringstream_char,
1088 VTABLE_ADD_FUNC(basic_ostringstream_char_vector_dtor)
1089 #if _MSVCP_VER == 110
1090 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1091 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1092 #endif
1094 __ASM_VTABLE(basic_ostringstream_wchar,
1095 VTABLE_ADD_FUNC(basic_ostringstream_wchar_vector_dtor)
1096 #if _MSVCP_VER == 110
1097 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1098 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1099 #endif
1101 __ASM_VTABLE(basic_ostringstream_short,
1102 VTABLE_ADD_FUNC(basic_ostringstream_wchar_vector_dtor)
1103 #if _MSVCP_VER == 110
1104 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1105 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1106 #endif
1108 __ASM_VTABLE(basic_istringstream_char,
1109 VTABLE_ADD_FUNC(basic_istringstream_char_vector_dtor)
1110 #if _MSVCP_VER == 110
1111 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1112 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1113 #endif
1115 __ASM_VTABLE(basic_istringstream_wchar,
1116 VTABLE_ADD_FUNC(basic_istringstream_wchar_vector_dtor)
1117 #if _MSVCP_VER == 110
1118 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1119 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1120 #endif
1122 __ASM_VTABLE(basic_istringstream_short,
1123 VTABLE_ADD_FUNC(basic_istringstream_wchar_vector_dtor)
1124 #if _MSVCP_VER == 110
1125 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1126 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1127 #endif
1129 __ASM_VTABLE(basic_stringstream_char,
1130 VTABLE_ADD_FUNC(basic_stringstream_char_vector_dtor)
1131 #if _MSVCP_VER == 110
1132 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1133 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1134 #endif
1136 __ASM_VTABLE(basic_stringstream_wchar,
1137 VTABLE_ADD_FUNC(basic_stringstream_wchar_vector_dtor)
1138 #if _MSVCP_VER == 110
1139 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1140 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1141 #endif
1143 __ASM_VTABLE(basic_stringstream_short,
1144 VTABLE_ADD_FUNC(basic_stringstream_wchar_vector_dtor)
1145 #if _MSVCP_VER == 110
1146 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1147 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1148 #endif
1150 __ASM_VTABLE(strstreambuf,
1151 VTABLE_ADD_FUNC(strstreambuf_vector_dtor)
1152 VTABLE_ADD_FUNC(strstreambuf_overflow)
1153 VTABLE_ADD_FUNC(strstreambuf_pbackfail)
1154 VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc)
1155 VTABLE_ADD_FUNC(strstreambuf_underflow)
1156 VTABLE_ADD_FUNC(basic_streambuf_char_uflow)
1157 VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn)
1158 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
1159 VTABLE_ADD_FUNC(basic_streambuf_char__Xsgetn_s)
1160 #endif
1161 VTABLE_ADD_FUNC(basic_streambuf_char_xsputn)
1162 VTABLE_ADD_FUNC(strstreambuf_seekoff)
1163 VTABLE_ADD_FUNC(strstreambuf_seekpos)
1164 VTABLE_ADD_FUNC(basic_streambuf_char_setbuf)
1165 VTABLE_ADD_FUNC(basic_streambuf_char_sync)
1166 VTABLE_ADD_FUNC(basic_streambuf_char_imbue));
1167 __ASM_VTABLE(ostrstream,
1168 VTABLE_ADD_FUNC(ostrstream_vector_dtor)
1169 #if _MSVCP_VER == 110
1170 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1171 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1172 #endif
1174 __ASM_VTABLE(strstream,
1175 VTABLE_ADD_FUNC(strstream_vector_dtor)
1176 #if _MSVCP_VER == 110
1177 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1178 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1179 #endif
1181 __ASM_BLOCK_END
1183 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD00@Z */
1184 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD00@Z */
1185 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setp_next, 16)
1186 void __thiscall basic_streambuf_char_setp_next(basic_streambuf_char *this, char *first, char *next, char *last)
1188 TRACE("(%p %p %p %p)\n", this, first, next, last);
1190 this->wbuf = first;
1191 this->wpos = next;
1192 this->wsize = last-next;
1195 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD0@Z */
1196 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD0@Z */
1197 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setp, 12)
1198 void __thiscall basic_streambuf_char_setp(basic_streambuf_char *this, char *first, char *last)
1200 basic_streambuf_char_setp_next(this, first, first, last);
1203 /* ?setg@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD00@Z */
1204 /* ?setg@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD00@Z */
1205 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setg, 16)
1206 void __thiscall basic_streambuf_char_setg(basic_streambuf_char *this, char *first, char *next, char *last)
1208 TRACE("(%p %p %p %p)\n", this, first, next, last);
1210 this->rbuf = first;
1211 this->rpos = next;
1212 this->rsize = last-next;
1215 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXXZ */
1216 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXXZ */
1217 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Init_empty, 4)
1218 void __thiscall basic_streambuf_char__Init_empty(basic_streambuf_char *this)
1220 TRACE("(%p)\n", this);
1222 this->prbuf = &this->rbuf;
1223 this->pwbuf = &this->wbuf;
1224 this->prpos = &this->rpos;
1225 this->pwpos = &this->wpos;
1226 this->prsize = &this->rsize;
1227 this->pwsize = &this->wsize;
1229 basic_streambuf_char_setp(this, NULL, NULL);
1230 basic_streambuf_char_setg(this, NULL, NULL, NULL);
1233 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAE@W4_Uninitialized@1@@Z */
1234 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@W4_Uninitialized@1@@Z */
1235 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_ctor_uninitialized, 8)
1236 basic_streambuf_char* __thiscall basic_streambuf_char_ctor_uninitialized(basic_streambuf_char *this, int uninitialized)
1238 TRACE("(%p %d)\n", this, uninitialized);
1239 this->vtable = &basic_streambuf_char_vtable;
1240 #if _MSVCP_VER >= 70 && _MSVCP_VER <= 100
1241 mutex_ctor(&this->lock);
1242 #endif
1243 return this;
1246 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAE@XZ */
1247 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@XZ */
1248 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_ctor, 4)
1249 basic_streambuf_char* __thiscall basic_streambuf_char_ctor(basic_streambuf_char *this)
1251 TRACE("(%p)\n", this);
1253 this->vtable = &basic_streambuf_char_vtable;
1254 #if _MSVCP_VER >= 70 && _MSVCP_VER <= 100
1255 mutex_ctor(&this->lock);
1256 #endif
1257 #if _MSVCP_VER >= 70
1258 this->loc = operator_new(sizeof(locale));
1259 #endif
1260 locale_ctor(IOS_LOCALE(this));
1261 basic_streambuf_char__Init_empty(this);
1263 return this;
1266 /* ??1?$basic_streambuf@DU?$char_traits@D@std@@@std@@UAE@XZ */
1267 /* ??1?$basic_streambuf@DU?$char_traits@D@std@@@std@@UEAA@XZ */
1268 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_dtor, 4)
1269 void __thiscall basic_streambuf_char_dtor(basic_streambuf_char *this)
1271 TRACE("(%p)\n", this);
1273 #if _MSVCP_VER >= 70 && _MSVCP_VER <= 100
1274 mutex_dtor(&this->lock);
1275 #endif
1276 locale_dtor(IOS_LOCALE(this));
1277 #if _MSVCP_VER >= 70
1278 operator_delete(this->loc);
1279 #endif
1282 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_vector_dtor, 8)
1283 basic_streambuf_char* __thiscall basic_streambuf_char_vector_dtor(basic_streambuf_char *this, unsigned int flags)
1285 TRACE("(%p %x)\n", this, flags);
1286 if(flags & 2) {
1287 /* we have an array, with the number of elements stored before the first object */
1288 INT_PTR i, *ptr = (INT_PTR *)this-1;
1290 for(i=*ptr-1; i>=0; i--)
1291 basic_streambuf_char_dtor(this+i);
1292 operator_delete(ptr);
1293 } else {
1294 basic_streambuf_char_dtor(this);
1295 if(flags & 1)
1296 operator_delete(this);
1299 return this;
1302 /* ?_Gnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEHXZ */
1303 /* ?_Gnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBA_JXZ */
1304 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gnavail, 4)
1305 streamsize __thiscall basic_streambuf_char__Gnavail(const basic_streambuf_char *this)
1307 TRACE("(%p)\n", this);
1308 return *this->prpos ? *this->prsize : 0;
1311 /* ?_Gndec@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
1312 /* ?_Gndec@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
1313 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gndec, 4)
1314 char* __thiscall basic_streambuf_char__Gndec(basic_streambuf_char *this)
1316 TRACE("(%p)\n", this);
1317 (*this->prsize)++;
1318 (*this->prpos)--;
1319 return *this->prpos;
1322 /* ?_Gninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
1323 /* ?_Gninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
1324 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gninc, 4)
1325 char* __thiscall basic_streambuf_char__Gninc(basic_streambuf_char *this)
1327 TRACE("(%p)\n", this);
1328 (*this->prsize)--;
1329 return (*this->prpos)++;
1332 /* ?_Gnpreinc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
1333 /* ?_Gnpreinc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
1334 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gnpreinc, 4)
1335 char* __thiscall basic_streambuf_char__Gnpreinc(basic_streambuf_char *this)
1337 TRACE("(%p)\n", this);
1338 (*this->prsize)--;
1339 (*this->prpos)++;
1340 return *this->prpos;
1343 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAPAD0PAH001@Z */
1344 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAPEAD0PEAH001@Z */
1345 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Init, 28)
1346 void __thiscall basic_streambuf_char__Init(basic_streambuf_char *this, char **gf, char **gn, int *gc, char **pf, char **pn, int *pc)
1348 TRACE("(%p %p %p %p %p %p %p)\n", this, gf, gn, gc, pf, pn, pc);
1350 this->prbuf = gf;
1351 this->pwbuf = pf;
1352 this->prpos = gn;
1353 this->pwpos = pn;
1354 this->prsize = gc;
1355 this->pwsize = pc;
1358 /* ?_Lock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
1359 /* ?_Lock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
1360 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Lock, 4)
1361 #if _MSVCP_VER >= 100
1362 #define call_basic_streambuf_char__Lock(this) CALL_VTBL_FUNC(this, 4, void, (basic_streambuf_char*), (this))
1363 #else
1364 #define call_basic_streambuf_char__Lock(this) basic_streambuf_char__Lock(this)
1365 #endif
1366 void __thiscall basic_streambuf_char__Lock(basic_streambuf_char *this)
1368 TRACE("(%p)\n", this);
1369 #if _MSVCP_VER >= 70 && _MSVCP_VER <= 100
1370 mutex_lock(&this->lock);
1371 #endif
1374 /* ?_Pnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEHXZ */
1375 /* ?_Pnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBA_JXZ */
1376 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Pnavail, 4)
1377 streamsize __thiscall basic_streambuf_char__Pnavail(const basic_streambuf_char *this)
1379 TRACE("(%p)\n", this);
1380 return *this->pwpos ? *this->pwsize : 0;
1383 /* ?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
1384 /* ?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
1385 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Pninc, 4)
1386 char* __thiscall basic_streambuf_char__Pninc(basic_streambuf_char *this)
1388 TRACE("(%p)\n", this);
1389 (*this->pwsize)--;
1390 return (*this->pwpos)++;
1393 /* ?underflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
1394 /* ?underflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
1395 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_underflow, 4)
1396 #if _MSVCP_VER >= 100
1397 #define call_basic_streambuf_char_underflow(this) CALL_VTBL_FUNC(this, 24, int, (basic_streambuf_char*), (this))
1398 #else
1399 #define call_basic_streambuf_char_underflow(this) CALL_VTBL_FUNC(this, 16, int, (basic_streambuf_char*), (this))
1400 #endif
1401 int __thiscall basic_streambuf_char_underflow(basic_streambuf_char *this)
1403 TRACE("(%p)\n", this);
1404 return EOF;
1407 /* ?uflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
1408 /* ?uflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
1409 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_uflow, 4)
1410 #if _MSVCP_VER >= 100
1411 #define call_basic_streambuf_char_uflow(this) CALL_VTBL_FUNC(this, 28, int, (basic_streambuf_char*), (this))
1412 #else
1413 #define call_basic_streambuf_char_uflow(this) CALL_VTBL_FUNC(this, 20, int, (basic_streambuf_char*), (this))
1414 #endif
1415 int __thiscall basic_streambuf_char_uflow(basic_streambuf_char *this)
1417 int ret;
1419 TRACE("(%p)\n", this);
1421 if(call_basic_streambuf_char_underflow(this)==EOF)
1422 return EOF;
1424 ret = (unsigned char)**this->prpos;
1425 (*this->prsize)--;
1426 (*this->prpos)++;
1427 return ret;
1430 /* ?_Xsgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHPADIH@Z */
1431 /* ?_Xsgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEAD_K_J@Z */
1432 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
1433 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Xsgetn_s, 20)
1434 #else
1435 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Xsgetn_s, 16)
1436 #endif
1437 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
1438 #define call_basic_streambuf_char__Xsgetn_s(this, ptr, size, count) CALL_VTBL_FUNC(this, 28, \
1439 streamsize, (basic_streambuf_char*, char*, size_t, streamsize), (this, ptr, size, count))
1440 #else
1441 #define call_basic_streambuf_char__Xsgetn_s(this, ptr, size, count) basic_streambuf_char__Xsgetn_s(this, ptr, size, count)
1442 #endif
1443 streamsize __thiscall basic_streambuf_char__Xsgetn_s(basic_streambuf_char *this, char *ptr, size_t size, streamsize count)
1445 streamsize copied, chunk;
1446 int c;
1448 TRACE("(%p %p %Iu %s)\n", this, ptr, size, wine_dbgstr_longlong(count));
1450 for(copied=0; copied<count && size;) {
1451 chunk = basic_streambuf_char__Gnavail(this);
1452 if(chunk > count-copied)
1453 chunk = count-copied;
1455 if(chunk > 0) {
1456 memcpy_s(ptr+copied, size, *this->prpos, chunk);
1457 *this->prpos += chunk;
1458 *this->prsize -= chunk;
1459 copied += chunk;
1460 size -= chunk;
1461 }else if((c = call_basic_streambuf_char_uflow(this)) != EOF) {
1462 ptr[copied] = c;
1463 copied++;
1464 size--;
1465 }else {
1466 break;
1470 return copied;
1473 /* ?_Sgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPADIH@Z */
1474 /* ?_Sgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_K_J@Z */
1475 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
1476 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Sgetn_s, 20)
1477 #else
1478 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Sgetn_s, 16)
1479 #endif
1480 streamsize __thiscall basic_streambuf_char__Sgetn_s(basic_streambuf_char *this, char *ptr, size_t size, streamsize count)
1482 TRACE("(%p %p %Iu %s)\n", this, ptr, size, wine_dbgstr_longlong(count));
1483 return call_basic_streambuf_char__Xsgetn_s(this, ptr, size, count);
1486 /* ?_Unlock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
1487 /* ?_Unlock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
1488 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Unlock, 4)
1489 #if _MSVCP_VER >= 100
1490 #define call_basic_streambuf_char__Unlock(this) CALL_VTBL_FUNC(this, 8, void, (basic_streambuf_char*), (this))
1491 #else
1492 #define call_basic_streambuf_char__Unlock(this) basic_streambuf_char__Unlock(this)
1493 #endif
1494 void __thiscall basic_streambuf_char__Unlock(basic_streambuf_char *this)
1496 TRACE("(%p)\n", this);
1497 #if _MSVCP_VER >= 70 && _MSVCP_VER <= 100
1498 mutex_unlock(&this->lock);
1499 #endif
1502 /* ?eback@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1503 /* ?eback@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1504 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_eback, 4)
1505 char* __thiscall basic_streambuf_char_eback(const basic_streambuf_char *this)
1507 TRACE("(%p)\n", this);
1508 return *this->prbuf;
1511 /* ?gptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1512 /* ?gptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1513 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_gptr, 4)
1514 char* __thiscall basic_streambuf_char_gptr(const basic_streambuf_char *this)
1516 TRACE("(%p)\n", this);
1517 return *this->prpos;
1520 /* ?egptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1521 /* ?egptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1522 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_egptr, 4)
1523 char* __thiscall basic_streambuf_char_egptr(const basic_streambuf_char *this)
1525 TRACE("(%p)\n", this);
1526 return *this->prpos+*this->prsize;
1529 /* ?epptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1530 /* ?epptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1531 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_epptr, 4)
1532 char* __thiscall basic_streambuf_char_epptr(const basic_streambuf_char *this)
1534 TRACE("(%p)\n", this);
1535 return *this->pwpos+*this->pwsize;
1538 /* ?gbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXH@Z */
1539 /* ?gbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXH@Z */
1540 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_gbump, 8)
1541 void __thiscall basic_streambuf_char_gbump(basic_streambuf_char *this, int off)
1543 TRACE("(%p %d)\n", this, off);
1544 *this->prpos += off;
1545 *this->prsize -= off;
1548 /* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AVlocale@2@XZ */
1549 /* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QBE?AVlocale@2@XZ */
1550 /* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AVlocale@2@XZ */
1551 /* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEBA?AVlocale@2@XZ */
1552 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_getloc, 8)
1553 locale* __thiscall basic_streambuf_char_getloc(const basic_streambuf_char *this, locale *ret)
1555 TRACE("(%p)\n", this);
1556 return locale_copy_ctor(ret, IOS_LOCALE(this));
1559 /* ?imbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEXABVlocale@2@@Z */
1560 /* ?imbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAXAEBVlocale@2@@Z */
1561 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_imbue, 8)
1562 #if _MSVCP_VER >= 100
1563 #define call_basic_streambuf_char_imbue(this, loc) CALL_VTBL_FUNC(this, 56, void, (basic_streambuf_char*, const locale*), (this, loc))
1564 #elif _MSVCP_VER >= 80
1565 #define call_basic_streambuf_char_imbue(this, loc) CALL_VTBL_FUNC(this, 52, void, (basic_streambuf_char*, const locale*), (this, loc))
1566 #else
1567 #define call_basic_streambuf_char_imbue(this, loc) CALL_VTBL_FUNC(this, 48, void, (basic_streambuf_char*, const locale*), (this, loc))
1568 #endif
1569 void __thiscall basic_streambuf_char_imbue(basic_streambuf_char *this, const locale *loc)
1571 TRACE("(%p %p)\n", this, loc);
1574 /* ?overflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
1575 /* ?overflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
1576 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_overflow, 8)
1577 #if _MSVCP_VER >= 100
1578 #define call_basic_streambuf_char_overflow(this, ch) CALL_VTBL_FUNC(this, 12, int, (basic_streambuf_char*, int), (this, ch))
1579 #else
1580 #define call_basic_streambuf_char_overflow(this, ch) CALL_VTBL_FUNC(this, 4, int, (basic_streambuf_char*, int), (this, ch))
1581 #endif
1582 int __thiscall basic_streambuf_char_overflow(basic_streambuf_char *this, int ch)
1584 TRACE("(%p %d)\n", this, ch);
1585 return EOF;
1588 /* ?pbackfail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
1589 /* ?pbackfail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
1590 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pbackfail, 8)
1591 #if _MSVCP_VER >= 100
1592 #define call_basic_streambuf_char_pbackfail(this, ch) CALL_VTBL_FUNC(this, 16, int, (basic_streambuf_char*, int), (this, ch))
1593 #else
1594 #define call_basic_streambuf_char_pbackfail(this, ch) CALL_VTBL_FUNC(this, 8, int, (basic_streambuf_char*, int), (this, ch))
1595 #endif
1596 int __thiscall basic_streambuf_char_pbackfail(basic_streambuf_char *this, int ch)
1598 TRACE("(%p %d)\n", this, ch);
1599 return EOF;
1602 /* ?pbase@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1603 /* ?pbase@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1604 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pbase, 4)
1605 char* __thiscall basic_streambuf_char_pbase(const basic_streambuf_char *this)
1607 TRACE("(%p)\n", this);
1608 return *this->pwbuf;
1611 /* ?pbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXH@Z */
1612 /* ?pbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXH@Z */
1613 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pbump, 8)
1614 void __thiscall basic_streambuf_char_pbump(basic_streambuf_char *this, int off)
1616 TRACE("(%p %d)\n", this, off);
1617 *this->pwpos += off;
1618 *this->pwsize -= off;
1621 /* ?pptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1622 /* ?pptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1623 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pptr, 4)
1624 char* __thiscall basic_streambuf_char_pptr(const basic_streambuf_char *this)
1626 TRACE("(%p)\n", this);
1627 return *this->pwpos;
1630 /* ?pubimbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
1631 /* ?pubimbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
1632 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubimbue, 12)
1633 locale* __thiscall basic_streambuf_char_pubimbue(basic_streambuf_char *this, locale *ret, const locale *loc)
1635 TRACE("(%p %p)\n", this, loc);
1636 memcpy(ret, IOS_LOCALE(this), sizeof(locale));
1637 call_basic_streambuf_char_imbue(this, loc);
1638 locale_copy_ctor(IOS_LOCALE(this), loc);
1639 return ret;
1642 /* ?seekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
1643 /* ?seekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@_JW4seekdir@ios_base@2@H@Z */
1644 /* ?seekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
1645 /* ?seekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
1646 #if STREAMOFF_BITS == 64
1647 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_seekoff, 24)
1648 #else
1649 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_seekoff, 20)
1650 #endif
1651 #if _MSVCP_VER >= 100
1652 #define call_basic_streambuf_char_seekoff(this, ret, off, way, mode) \
1653 CALL_VTBL_FUNC(this, 40, fpos_mbstatet*, (basic_streambuf_char*, fpos_mbstatet*, streamoff, int, int), (this, ret, off, way, mode))
1654 #elif _MSVCP_VER >= 80
1655 #define call_basic_streambuf_char_seekoff(this, ret, off, way, mode) \
1656 CALL_VTBL_FUNC(this, 36, fpos_mbstatet*, (basic_streambuf_char*, fpos_mbstatet*, streamoff, int, int), (this, ret, off, way, mode))
1657 #else
1658 #define call_basic_streambuf_char_seekoff(this, ret, off, way, mode) \
1659 CALL_VTBL_FUNC(this, 32, fpos_mbstatet*, (basic_streambuf_char*, fpos_mbstatet*, streamoff, int, int), (this, ret, off, way, mode))
1660 #endif
1661 fpos_mbstatet* __thiscall basic_streambuf_char_seekoff(basic_streambuf_char *this,
1662 fpos_mbstatet *ret, streamoff off, int way, int mode)
1664 TRACE("(%p %s %d %d)\n", this, wine_dbgstr_longlong(off), way, mode);
1665 ret->off = -1;
1666 ret->pos = 0;
1667 memset(&ret->state, 0, sizeof(ret->state));
1668 return ret;
1671 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@JHH@Z */
1672 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@_JHH@Z */
1673 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@JFF@Z */
1674 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@_JFF@Z */
1675 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
1676 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@_JW4seekdir@ios_base@2@H@Z */
1677 #if STREAMOFF_BITS == 64
1678 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekoff, 24)
1679 #else
1680 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekoff, 20)
1681 #endif
1682 fpos_mbstatet* __thiscall basic_streambuf_char_pubseekoff(basic_streambuf_char *this,
1683 fpos_mbstatet *ret, streamoff off, int way, int mode)
1685 TRACE("(%p %s %d %d)\n", this, wine_dbgstr_longlong(off), way, mode);
1686 return call_basic_streambuf_char_seekoff(this, ret, off, way, mode);
1689 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@JII@Z */
1690 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@_JII@Z */
1691 #if STREAMOFF_BITS == 64
1692 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekoff_old, 24)
1693 #else
1694 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekoff_old, 20)
1695 #endif
1696 fpos_mbstatet* __thiscall basic_streambuf_char_pubseekoff_old(basic_streambuf_char *this,
1697 fpos_mbstatet *ret, streamoff off, unsigned int way, unsigned int mode)
1699 TRACE("(%p %s %d %d)\n", this, wine_dbgstr_longlong(off), way, mode);
1700 return basic_streambuf_char_pubseekoff(this, ret, off, way, mode);
1703 /* ?seekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
1704 /* ?seekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
1705 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_seekpos, 36)
1706 #if _MSVCP_VER >= 100
1707 #define call_basic_streambuf_char_seekpos(this, ret, pos, mode) \
1708 CALL_VTBL_FUNC(this, 44, fpos_mbstatet*, (basic_streambuf_char*, fpos_mbstatet*, fpos_mbstatet, int), (this, ret, pos, mode))
1709 #elif _MSVCP_VER >= 80
1710 #define call_basic_streambuf_char_seekpos(this, ret, pos, mode) \
1711 CALL_VTBL_FUNC(this, 40, fpos_mbstatet*, (basic_streambuf_char*, fpos_mbstatet*, fpos_mbstatet, int), (this, ret, pos, mode))
1712 #else
1713 #define call_basic_streambuf_char_seekpos(this, ret, pos, mode) \
1714 CALL_VTBL_FUNC(this, 36, fpos_mbstatet*, (basic_streambuf_char*, fpos_mbstatet*, fpos_mbstatet, int), (this, ret, pos, mode))
1715 #endif
1716 fpos_mbstatet* __thiscall basic_streambuf_char_seekpos(basic_streambuf_char *this,
1717 fpos_mbstatet *ret, fpos_mbstatet pos, int mode)
1719 TRACE("(%p %s %d)\n", this, debugstr_fpos_mbstatet(&pos), mode);
1720 ret->off = -1;
1721 ret->pos = 0;
1722 memset(&ret->state, 0, sizeof(ret->state));
1723 return ret;
1726 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@V32@H@Z */
1727 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@V32@H@Z */
1728 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekpos, 36)
1729 fpos_mbstatet* __thiscall basic_streambuf_char_pubseekpos(basic_streambuf_char *this,
1730 fpos_mbstatet *ret, fpos_mbstatet pos, int mode)
1732 TRACE("(%p %s %d)\n", this, debugstr_fpos_mbstatet(&pos), mode);
1733 return call_basic_streambuf_char_seekpos(this, ret, pos, mode);
1736 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@V32@I@Z */
1737 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@V32@I@Z */
1738 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekpos_old, 36)
1739 fpos_mbstatet* __thiscall basic_streambuf_char_pubseekpos_old(basic_streambuf_char *this,
1740 fpos_mbstatet *ret, fpos_mbstatet pos, unsigned int mode)
1742 TRACE("(%p %s %d)\n", this, debugstr_fpos_mbstatet(&pos), mode);
1743 return basic_streambuf_char_pubseekpos(this, ret, pos, mode);
1746 /* ?setbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEPAV12@PADH@Z */
1747 /* ?setbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAPEAV12@PEAD_J@Z */
1748 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
1749 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setbuf, 16)
1750 #else
1751 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setbuf, 12)
1752 #endif
1753 #if _MSVCP_VER >= 100
1754 #define call_basic_streambuf_char_setbuf(this, buf, count) CALL_VTBL_FUNC(this, 48, basic_streambuf_char*, (basic_streambuf_char*, char*, streamsize), (this, buf, count))
1755 #elif _MSVCP_VER >= 80
1756 #define call_basic_streambuf_char_setbuf(this, buf, count) CALL_VTBL_FUNC(this, 44, basic_streambuf_char*, (basic_streambuf_char*, char*, streamsize), (this, buf, count))
1757 #else
1758 #define call_basic_streambuf_char_setbuf(this, buf, count) CALL_VTBL_FUNC(this, 40, basic_streambuf_char*, (basic_streambuf_char*, char*, streamsize), (this, buf, count))
1759 #endif
1760 basic_streambuf_char* __thiscall basic_streambuf_char_setbuf(basic_streambuf_char *this, char *buf, streamsize count)
1762 TRACE("(%p %p %s)\n", this, buf, wine_dbgstr_longlong(count));
1763 return this;
1766 /* ?pubsetbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PADH@Z */
1767 /* ?pubsetbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEAD_J@Z */
1768 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
1769 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubsetbuf, 16)
1770 #else
1771 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubsetbuf, 12)
1772 #endif
1773 basic_streambuf_char* __thiscall basic_streambuf_char_pubsetbuf(basic_streambuf_char *this, char *buf, streamsize count)
1775 TRACE("(%p %p %s)\n", this, buf, wine_dbgstr_longlong(count));
1776 return call_basic_streambuf_char_setbuf(this, buf, count);
1779 /* ?sync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
1780 /* ?sync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
1781 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sync, 4)
1782 #if _MSVCP_VER >= 100
1783 #define call_basic_streambuf_char_sync(this) CALL_VTBL_FUNC(this, 52, int, (basic_streambuf_char*), (this))
1784 #elif _MSVCP_VER >= 80
1785 #define call_basic_streambuf_char_sync(this) CALL_VTBL_FUNC(this, 48, int, (basic_streambuf_char*), (this))
1786 #else
1787 #define call_basic_streambuf_char_sync(this) CALL_VTBL_FUNC(this, 44, int, (basic_streambuf_char*), (this))
1788 #endif
1789 int __thiscall basic_streambuf_char_sync(basic_streambuf_char *this)
1791 TRACE("(%p)\n", this);
1792 return 0;
1795 /* ?pubsync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1796 /* ?pubsync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1797 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubsync, 4)
1798 int __thiscall basic_streambuf_char_pubsync(basic_streambuf_char *this)
1800 TRACE("(%p)\n", this);
1801 return call_basic_streambuf_char_sync(this);
1804 /* ?sgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPADH@Z */
1805 /* ?sgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_J@Z */
1806 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
1807 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sgetn, 16)
1808 #else
1809 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sgetn, 12)
1810 #endif
1811 streamsize __thiscall basic_streambuf_char_sgetn(basic_streambuf_char *this, char *ptr, streamsize count)
1813 TRACE("(%p %p %s)\n", this, ptr, wine_dbgstr_longlong(count));
1814 return call_basic_streambuf_char__Xsgetn_s(this, ptr, -1, count);
1817 /* ?showmanyc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
1818 /* ?showmanyc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JXZ */
1819 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_showmanyc, 4)
1820 #if _MSVCP_VER >= 100
1821 #define call_basic_streambuf_char_showmanyc(this) CALL_VTBL_FUNC(this, 20, streamsize, (basic_streambuf_char*), (this))
1822 #else
1823 #define call_basic_streambuf_char_showmanyc(this) CALL_VTBL_FUNC(this, 12, streamsize, (basic_streambuf_char*), (this))
1824 #endif
1825 streamsize __thiscall basic_streambuf_char_showmanyc(basic_streambuf_char *this)
1827 TRACE("(%p)\n", this);
1828 return 0;
1831 /* ?in_avail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1832 /* ?in_avail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JXZ */
1833 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_in_avail, 4)
1834 streamsize __thiscall basic_streambuf_char_in_avail(basic_streambuf_char *this)
1836 streamsize ret;
1838 TRACE("(%p)\n", this);
1840 ret = basic_streambuf_char__Gnavail(this);
1841 return ret ? ret : call_basic_streambuf_char_showmanyc(this);
1844 /* ?sputbackc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHD@Z */
1845 /* ?sputbackc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z */
1846 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputbackc, 8)
1847 int __thiscall basic_streambuf_char_sputbackc(basic_streambuf_char *this, char ch)
1849 TRACE("(%p %d)\n", this, ch);
1850 if(*this->prpos && *this->prpos>*this->prbuf && (*this->prpos)[-1]==ch) {
1851 (*this->prsize)++;
1852 (*this->prpos)--;
1853 return (unsigned char)ch;
1856 return call_basic_streambuf_char_pbackfail(this, (unsigned char)ch);
1859 /* ?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHD@Z */
1860 /* ?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z */
1861 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputc, 8)
1862 int __thiscall basic_streambuf_char_sputc(basic_streambuf_char *this, char ch)
1864 TRACE("(%p %d)\n", this, ch);
1865 return basic_streambuf_char__Pnavail(this) ?
1866 (unsigned char)(*basic_streambuf_char__Pninc(this) = ch) :
1867 call_basic_streambuf_char_overflow(this, (unsigned char)ch);
1870 /* ?sungetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1871 /* ?sungetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1872 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sungetc, 4)
1873 int __thiscall basic_streambuf_char_sungetc(basic_streambuf_char *this)
1875 TRACE("(%p)\n", this);
1876 if(*this->prpos && *this->prpos>*this->prbuf) {
1877 (*this->prsize)++;
1878 (*this->prpos)--;
1879 return (unsigned char)**this->prpos;
1882 return call_basic_streambuf_char_pbackfail(this, EOF);
1885 /* ?stossc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
1886 /* ?stossc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
1887 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_stossc, 4)
1888 void __thiscall basic_streambuf_char_stossc(basic_streambuf_char *this)
1890 TRACE("(%p)\n", this);
1891 if(basic_streambuf_char__Gnavail(this))
1892 basic_streambuf_char__Gninc(this);
1893 else
1894 call_basic_streambuf_char_uflow(this);
1897 /* ?sbumpc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1898 /* ?sbumpc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1899 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sbumpc, 4)
1900 int __thiscall basic_streambuf_char_sbumpc(basic_streambuf_char *this)
1902 TRACE("(%p)\n", this);
1903 return basic_streambuf_char__Gnavail(this) ?
1904 (int)(unsigned char)*basic_streambuf_char__Gninc(this) : call_basic_streambuf_char_uflow(this);
1907 /* ?sgetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1908 /* ?sgetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1909 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sgetc, 4)
1910 int __thiscall basic_streambuf_char_sgetc(basic_streambuf_char *this)
1912 TRACE("(%p)\n", this);
1913 return basic_streambuf_char__Gnavail(this) ?
1914 (int)(unsigned char)*basic_streambuf_char_gptr(this) : call_basic_streambuf_char_underflow(this);
1917 /* ?snextc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1918 /* ?snextc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1919 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_snextc, 4)
1920 int __thiscall basic_streambuf_char_snextc(basic_streambuf_char *this)
1922 TRACE("(%p)\n", this);
1924 if(basic_streambuf_char__Gnavail(this) > 1)
1925 return (unsigned char)*basic_streambuf_char__Gnpreinc(this);
1926 return basic_streambuf_char_sbumpc(this)==EOF ?
1927 EOF : basic_streambuf_char_sgetc(this);
1930 /* ?xsgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHPADH@Z */
1931 /* ?xsgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEAD_J@Z */
1932 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
1933 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_xsgetn, 16)
1934 #else
1935 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_xsgetn, 12)
1936 #endif
1937 #if _MSVCP_VER >= 100
1938 #define call_basic_streambuf_char_xsgetn(this, ptr, count) CALL_VTBL_FUNC(this, 32, streamsize, (basic_streambuf_char*, char*, streamsize), (this, ptr, count))
1939 #else
1940 #define call_basic_streambuf_char_xsgetn(this, ptr, count) CALL_VTBL_FUNC(this, 24, streamsize, (basic_streambuf_char*, char*, streamsize), (this, ptr, count))
1941 #endif
1942 streamsize __thiscall basic_streambuf_char_xsgetn(basic_streambuf_char *this, char *ptr, streamsize count)
1944 TRACE("(%p %p %s)\n", this, ptr, wine_dbgstr_longlong(count));
1945 return call_basic_streambuf_char__Xsgetn_s(this, ptr, -1, count);
1948 /* ?xsputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHPBDH@Z */
1949 /* ?xsputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEBD_J@Z */
1950 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
1951 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_xsputn, 16)
1952 #else
1953 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_xsputn, 12)
1954 #endif
1955 #if _MSVCP_VER >= 100
1956 #define call_basic_streambuf_char_xsputn(this, ptr, count) CALL_VTBL_FUNC(this, 36, streamsize, (basic_streambuf_char*, const char*, streamsize), (this, ptr, count))
1957 #elif _MSVCP_VER >= 80
1958 #define call_basic_streambuf_char_xsputn(this, ptr, count) CALL_VTBL_FUNC(this, 32, streamsize, (basic_streambuf_char*, const char*, streamsize), (this, ptr, count))
1959 #else
1960 #define call_basic_streambuf_char_xsputn(this, ptr, count) CALL_VTBL_FUNC(this, 28, streamsize, (basic_streambuf_char*, const char*, streamsize), (this, ptr, count))
1961 #endif
1962 streamsize __thiscall basic_streambuf_char_xsputn(basic_streambuf_char *this, const char *ptr, streamsize count)
1964 streamsize copied, chunk;
1966 TRACE("(%p %p %s)\n", this, ptr, wine_dbgstr_longlong(count));
1968 for(copied=0; copied<count;) {
1969 chunk = basic_streambuf_char__Pnavail(this);
1970 if(chunk > count-copied)
1971 chunk = count-copied;
1973 if(chunk > 0) {
1974 memcpy(*this->pwpos, ptr+copied, chunk);
1975 *this->pwpos += chunk;
1976 *this->pwsize -= chunk;
1977 copied += chunk;
1978 }else if(call_basic_streambuf_char_overflow(this, (unsigned char)ptr[copied]) != EOF) {
1979 copied++;
1980 }else {
1981 break;
1985 return copied;
1988 /* ?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPBDH@Z */
1989 /* ?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEBD_J@Z */
1990 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
1991 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputn, 16)
1992 #else
1993 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputn, 12)
1994 #endif
1995 streamsize __thiscall basic_streambuf_char_sputn(basic_streambuf_char *this, const char *ptr, streamsize count)
1997 TRACE("(%p %p %s)\n", this, ptr, wine_dbgstr_longlong(count));
1998 return call_basic_streambuf_char_xsputn(this, ptr, count);
2001 /* ?swap@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXAAV12@@Z */
2002 /* ?swap@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXAEAV12@@Z */
2003 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_swap, 8)
2004 void __thiscall basic_streambuf_char_swap(basic_streambuf_char *this, basic_streambuf_char *r)
2006 char *wfirst, *wnext, *wlast, *rfirst, *rnext, *rlast;
2007 #if _MSVCP_VER < 70
2008 locale loc;
2009 #else
2010 locale *loc;
2011 #endif
2013 TRACE("(%p %p)\n", this, r);
2015 if(this == r)
2016 return;
2018 wfirst = *this->pwbuf;
2019 wnext = *this->pwpos;
2020 wlast = *this->pwpos + *this->pwsize;
2021 rfirst = *this->prbuf;
2022 rnext = *this->prpos;
2023 rlast = *this->prpos + *this->prsize;
2024 loc = this->loc;
2026 basic_streambuf_char_setp_next(this, *r->pwbuf, *r->pwpos, *r->pwpos + *r->pwsize);
2027 basic_streambuf_char_setg(this, *r->prbuf, *r->prpos, *r->prpos + *r->prsize);
2028 this->loc = r->loc;
2030 basic_streambuf_char_setp_next(r, wfirst, wnext, wlast);
2031 basic_streambuf_char_setg(r, rfirst, rnext, rlast);
2032 r->loc = loc;
2035 /* ?setp@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXPA_W00@Z */
2036 /* ?setp@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEA_W00@Z */
2037 /* ?setp@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXPAG00@Z */
2038 /* ?setp@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXPEAG00@Z */
2039 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setp_next, 16)
2040 void __thiscall basic_streambuf_wchar_setp_next(basic_streambuf_wchar *this, wchar_t *first, wchar_t *next, wchar_t *last)
2042 TRACE("(%p %p %p %p)\n", this, first, next, last);
2044 this->wbuf = first;
2045 this->wpos = next;
2046 this->wsize = last-next;
2049 /* ?setp@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXPA_W0@Z */
2050 /* ?setp@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEA_W0@Z */
2051 /* ?setp@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXPAG0@Z */
2052 /* ?setp@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXPEAG0@Z */
2053 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setp, 12)
2054 void __thiscall basic_streambuf_wchar_setp(basic_streambuf_wchar *this, wchar_t *first, wchar_t *last)
2056 basic_streambuf_wchar_setp_next(this, first, first, last);
2059 /* ?setg@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXPA_W00@Z */
2060 /* ?setg@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEA_W00@Z */
2061 /* ?setg@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXPAG00@Z */
2062 /* ?setg@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXPEAG00@Z */
2063 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setg, 16)
2064 void __thiscall basic_streambuf_wchar_setg(basic_streambuf_wchar *this, wchar_t *first, wchar_t *next, wchar_t *last)
2066 TRACE("(%p %p %p %p)\n", this, first, next, last);
2068 this->rbuf = first;
2069 this->rpos = next;
2070 this->rsize = last-next;
2073 /* ?_Init@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXXZ */
2074 /* ?_Init@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXXZ */
2075 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXXZ */
2076 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXXZ */
2077 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Init_empty, 4)
2078 void __thiscall basic_streambuf_wchar__Init_empty(basic_streambuf_wchar *this)
2080 TRACE("(%p)\n", this);
2082 this->prbuf = &this->rbuf;
2083 this->pwbuf = &this->wbuf;
2084 this->prpos = &this->rpos;
2085 this->pwpos = &this->wpos;
2086 this->prsize = &this->rsize;
2087 this->pwsize = &this->wsize;
2089 basic_streambuf_wchar_setp(this, NULL, NULL);
2090 basic_streambuf_wchar_setg(this, NULL, NULL, NULL);
2093 /* ??0?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAE@W4_Uninitialized@1@@Z */
2094 /* ??0?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAA@W4_Uninitialized@1@@Z */
2095 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_ctor_uninitialized, 8)
2096 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_ctor_uninitialized(basic_streambuf_wchar *this, int uninitialized)
2098 TRACE("(%p %d)\n", this, uninitialized);
2099 this->vtable = &basic_streambuf_wchar_vtable;
2100 #if _MSVCP_VER >= 70 && _MSVCP_VER <= 100
2101 mutex_ctor(&this->lock);
2102 #endif
2103 return this;
2106 /* ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAE@W4_Uninitialized@1@@Z */
2107 /* ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAA@W4_Uninitialized@1@@Z */
2108 DEFINE_THISCALL_WRAPPER(basic_streambuf_short_ctor_uninitialized, 8)
2109 basic_streambuf_wchar* __thiscall basic_streambuf_short_ctor_uninitialized(basic_streambuf_wchar *this, int uninitialized)
2111 TRACE("(%p %d)\n", this, uninitialized);
2112 basic_streambuf_wchar_ctor_uninitialized(this, uninitialized);
2113 this->vtable = &basic_streambuf_short_vtable;
2114 return this;
2117 /* ??0?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAE@XZ */
2118 /* ??0?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAA@XZ */
2119 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_ctor, 4)
2120 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_ctor(basic_streambuf_wchar *this)
2122 TRACE("(%p)\n", this);
2124 this->vtable = &basic_streambuf_wchar_vtable;
2125 #if _MSVCP_VER >= 70 && _MSVCP_VER <= 100
2126 mutex_ctor(&this->lock);
2127 #endif
2128 #if _MSVCP_VER >= 70
2129 this->loc = operator_new(sizeof(locale));
2130 #endif
2131 locale_ctor(IOS_LOCALE(this));
2132 basic_streambuf_wchar__Init_empty(this);
2134 return this;
2137 /* ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAE@XZ */
2138 /* ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAA@XZ */
2139 DEFINE_THISCALL_WRAPPER(basic_streambuf_short_ctor, 4)
2140 basic_streambuf_wchar* __thiscall basic_streambuf_short_ctor(basic_streambuf_wchar *this)
2142 TRACE("(%p)\n", this);
2143 basic_streambuf_wchar_ctor(this);
2144 this->vtable = &basic_streambuf_short_vtable;
2145 return this;
2148 /* ??1?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
2149 /* ??1?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
2150 /* ??1?$basic_streambuf@GU?$char_traits@G@std@@@std@@UAE@XZ */
2151 /* ??1?$basic_streambuf@GU?$char_traits@G@std@@@std@@UEAA@XZ */
2152 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_dtor, 4)
2153 void __thiscall basic_streambuf_wchar_dtor(basic_streambuf_wchar *this)
2155 TRACE("(%p)\n", this);
2157 #if _MSVCP_VER >= 70 && _MSVCP_VER <= 100
2158 mutex_dtor(&this->lock);
2159 #endif
2160 locale_dtor(IOS_LOCALE(this));
2161 #if _MSVCP_VER >= 70
2162 operator_delete(this->loc);
2163 #endif
2166 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_vector_dtor, 8)
2167 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_vector_dtor(basic_streambuf_wchar *this, unsigned int flags)
2169 TRACE("(%p %x)\n", this, flags);
2170 if(flags & 2) {
2171 /* we have an array, with the number of elements stored before the first object */
2172 INT_PTR i, *ptr = (INT_PTR *)this-1;
2174 for(i=*ptr-1; i>=0; i--)
2175 basic_streambuf_wchar_dtor(this+i);
2176 operator_delete(ptr);
2177 } else {
2178 basic_streambuf_wchar_dtor(this);
2179 if(flags & 1)
2180 operator_delete(this);
2183 return this;
2186 /* ?_Gnavail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEHXZ */
2187 /* ?_Gnavail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBA_JXZ */
2188 /* ?_Gnavail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEHXZ */
2189 /* ?_Gnavail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBA_JXZ */
2190 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Gnavail, 4)
2191 streamsize __thiscall basic_streambuf_wchar__Gnavail(const basic_streambuf_wchar *this)
2193 TRACE("(%p)\n", this);
2194 return *this->prpos ? *this->prsize : 0;
2197 /* ?_Gndec@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEPA_WXZ */
2198 /* ?_Gndec@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAPEA_WXZ */
2199 /* ?_Gndec@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ */
2200 /* ?_Gndec@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAPEAGXZ */
2201 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Gndec, 4)
2202 wchar_t* __thiscall basic_streambuf_wchar__Gndec(basic_streambuf_wchar *this)
2204 TRACE("(%p)\n", this);
2205 (*this->prsize)++;
2206 (*this->prpos)--;
2207 return *this->prpos;
2210 /* ?_Gninc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEPA_WXZ */
2211 /* ?_Gninc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAPEA_WXZ */
2212 /* ?_Gninc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ */
2213 /* ?_Gninc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAPEAGXZ */
2214 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Gninc, 4)
2215 wchar_t* __thiscall basic_streambuf_wchar__Gninc(basic_streambuf_wchar *this)
2217 TRACE("(%p)\n", this);
2218 (*this->prsize)--;
2219 return (*this->prpos)++;
2222 /* ?_Gnpreinc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEPA_WXZ */
2223 /* ?_Gnpreinc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAPEA_WXZ */
2224 /* ?_Gnpreinc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ */
2225 /* ?_Gnpreinc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAPEAGXZ */
2226 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Gnpreinc, 4)
2227 wchar_t* __thiscall basic_streambuf_wchar__Gnpreinc(basic_streambuf_wchar *this)
2229 TRACE("(%p)\n", this);
2230 (*this->prsize)--;
2231 (*this->prpos)++;
2232 return *this->prpos;
2235 /* ?_Init@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXPAPA_W0PAH001@Z */
2236 /* ?_Init@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAPEA_W0PEAH001@Z */
2237 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXPAPAG0PAH001@Z */
2238 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXPEAPEAG0PEAH001@Z */
2239 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Init, 28)
2240 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)
2242 TRACE("(%p %p %p %p %p %p %p)\n", this, gf, gn, gc, pf, pn, pc);
2244 this->prbuf = gf;
2245 this->pwbuf = pf;
2246 this->prpos = gn;
2247 this->pwpos = pn;
2248 this->prsize = gc;
2249 this->pwsize = pc;
2252 /* ?_Lock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
2253 /* ?_Lock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
2254 /* ?_Lock@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEXXZ */
2255 /* ?_Lock@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAXXZ */
2256 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Lock, 4)
2257 void __thiscall basic_streambuf_wchar__Lock(basic_streambuf_wchar *this)
2259 TRACE("(%p)\n", this);
2260 #if _MSVCP_VER >= 70 && _MSVCP_VER <= 100
2261 mutex_lock(&this->lock);
2262 #endif
2265 /* ?_Pnavail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEHXZ */
2266 /* ?_Pnavail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBA_JXZ */
2267 /* ?_Pnavail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEHXZ */
2268 /* ?_Pnavail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBA_JXZ */
2269 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Pnavail, 4)
2270 streamsize __thiscall basic_streambuf_wchar__Pnavail(const basic_streambuf_wchar *this)
2272 TRACE("(%p)\n", this);
2273 return *this->pwpos ? *this->pwsize : 0;
2276 /* ?_Pninc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEPA_WXZ */
2277 /* ?_Pninc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAPEA_WXZ */
2278 /* ?_Pninc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ */
2279 /* ?_Pninc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAPEAGXZ */
2280 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Pninc, 4)
2281 wchar_t* __thiscall basic_streambuf_wchar__Pninc(basic_streambuf_wchar *this)
2283 TRACE("(%p)\n", this);
2284 (*this->pwsize)--;
2285 return (*this->pwpos)++;
2288 /* ?underflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEGXZ */
2289 /* ?underflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAGXZ */
2290 /* ?underflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEGXZ */
2291 /* ?underflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAGXZ */
2292 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_underflow, 4)
2293 #if _MSVCP_VER >= 100
2294 #define call_basic_streambuf_wchar_underflow(this) CALL_VTBL_FUNC(this, 24, unsigned short, (basic_streambuf_wchar*), (this))
2295 #else
2296 #define call_basic_streambuf_wchar_underflow(this) CALL_VTBL_FUNC(this, 16, unsigned short, (basic_streambuf_wchar*), (this))
2297 #endif
2298 unsigned short __thiscall basic_streambuf_wchar_underflow(basic_streambuf_wchar *this)
2300 TRACE("(%p)\n", this);
2301 return WEOF;
2304 /* ?uflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEGXZ */
2305 /* ?uflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAGXZ */
2306 /* ?uflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEGXZ */
2307 /* ?uflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAGXZ */
2308 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_uflow, 4)
2309 #if _MSVCP_VER >= 100
2310 #define call_basic_streambuf_wchar_uflow(this) CALL_VTBL_FUNC(this, 28, unsigned short, (basic_streambuf_wchar*), (this))
2311 #else
2312 #define call_basic_streambuf_wchar_uflow(this) CALL_VTBL_FUNC(this, 20, unsigned short, (basic_streambuf_wchar*), (this))
2313 #endif
2314 unsigned short __thiscall basic_streambuf_wchar_uflow(basic_streambuf_wchar *this)
2316 int ret;
2318 TRACE("(%p)\n", this);
2320 if(call_basic_streambuf_wchar_underflow(this)==WEOF)
2321 return WEOF;
2323 ret = **this->prpos;
2324 (*this->prsize)--;
2325 (*this->prpos)++;
2326 return ret;
2329 /* ?_Xsgetn_s@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHPA_WIH@Z */
2330 /* ?_Xsgetn_s@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA_JPEA_W_K_J@Z */
2331 /* ?_Xsgetn_s@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHPAGIH@Z */
2332 /* ?_Xsgetn_s@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA_JPEAG_K_J@Z */
2333 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
2334 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Xsgetn_s, 20)
2335 #else
2336 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Xsgetn_s, 16)
2337 #endif
2338 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
2339 #define call_basic_streambuf_wchar__Xsgetn_s(this, ptr, size, count) CALL_VTBL_FUNC(this, 28, \
2340 streamsize, (basic_streambuf_wchar*, wchar_t*, size_t, streamsize), (this, ptr, size, count))
2341 #else
2342 #define call_basic_streambuf_wchar__Xsgetn_s(this, ptr, size, count) basic_streambuf_wchar__Xsgetn_s(this, ptr, size, count)
2343 #endif
2344 streamsize __thiscall basic_streambuf_wchar__Xsgetn_s(basic_streambuf_wchar *this, wchar_t *ptr, size_t size, streamsize count)
2346 streamsize copied, chunk;
2347 unsigned short c;
2349 TRACE("(%p %p %Iu %s)\n", this, ptr, size, wine_dbgstr_longlong(count));
2351 for(copied=0; copied<count && size;) {
2352 chunk = basic_streambuf_wchar__Gnavail(this);
2353 if(chunk > count-copied)
2354 chunk = count-copied;
2356 if(chunk > 0) {
2357 memcpy_s(ptr+copied, size, *this->prpos, chunk*sizeof(wchar_t));
2358 *this->prpos += chunk;
2359 *this->prsize -= chunk;
2360 copied += chunk;
2361 size -= chunk*sizeof(wchar_t);
2362 }else if((c = call_basic_streambuf_wchar_uflow(this)) != WEOF) {
2363 ptr[copied] = c;
2364 copied++;
2365 size--;
2366 }else {
2367 break;
2371 return copied;
2374 /* ?_Sgetn_s@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHPA_WIH@Z */
2375 /* ?_Sgetn_s@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA_JPEA_W_K_J@Z */
2376 /* ?_Sgetn_s@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHPAGIH@Z */
2377 /* ?_Sgetn_s@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA_JPEAG_K_J@Z */
2378 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
2379 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Sgetn_s, 20)
2380 #else
2381 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Sgetn_s, 16)
2382 #endif
2383 streamsize __thiscall basic_streambuf_wchar__Sgetn_s(basic_streambuf_wchar *this, wchar_t *ptr, size_t size, streamsize count)
2385 TRACE("(%p %p %Iu %s)\n", this, ptr, size, wine_dbgstr_longlong(count));
2386 return call_basic_streambuf_wchar__Xsgetn_s(this, ptr, size, count);
2389 /* ?_Unlock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
2390 /* ?_Unlock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
2391 /* ?_Unlock@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEXXZ */
2392 /* ?_Unlock@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAXXZ */
2393 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Unlock, 4)
2394 void __thiscall basic_streambuf_wchar__Unlock(basic_streambuf_wchar *this)
2396 TRACE("(%p)\n", this);
2397 #if _MSVCP_VER >= 70 && _MSVCP_VER <= 100
2398 mutex_unlock(&this->lock);
2399 #endif
2402 /* ?eback@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
2403 /* ?eback@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
2404 /* ?eback@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
2405 /* ?eback@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
2406 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_eback, 4)
2407 wchar_t* __thiscall basic_streambuf_wchar_eback(const basic_streambuf_wchar *this)
2409 TRACE("(%p)\n", this);
2410 return *this->prbuf;
2413 /* ?gptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
2414 /* ?gptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
2415 /* ?gptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
2416 /* ?gptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
2417 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_gptr, 4)
2418 wchar_t* __thiscall basic_streambuf_wchar_gptr(const basic_streambuf_wchar *this)
2420 TRACE("(%p)\n", this);
2421 return *this->prpos;
2424 /* ?egptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
2425 /* ?egptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
2426 /* ?egptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
2427 /* ?egptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
2428 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_egptr, 4)
2429 wchar_t* __thiscall basic_streambuf_wchar_egptr(const basic_streambuf_wchar *this)
2431 TRACE("(%p)\n", this);
2432 return *this->prpos+*this->prsize;
2435 /* ?epptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
2436 /* ?epptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
2437 /* ?epptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
2438 /* ?epptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
2439 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_epptr, 4)
2440 wchar_t* __thiscall basic_streambuf_wchar_epptr(const basic_streambuf_wchar *this)
2442 TRACE("(%p)\n", this);
2443 return *this->pwpos+*this->pwsize;
2446 /* ?gbump@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXH@Z */
2447 /* ?gbump@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXH@Z */
2448 /* ?gbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXH@Z */
2449 /* ?gbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXH@Z */
2450 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_gbump, 8)
2451 void __thiscall basic_streambuf_wchar_gbump(basic_streambuf_wchar *this, int off)
2453 TRACE("(%p %d)\n", this, off);
2454 *this->prpos += off;
2455 *this->prsize -= off;
2458 /* ?getloc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QBE?AVlocale@2@XZ */
2459 /* ?getloc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEBA?AVlocale@2@XZ */
2460 /* ?getloc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QBE?AVlocale@2@XZ */
2461 /* ?getloc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEBA?AVlocale@2@XZ */
2462 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_getloc, 8)
2463 locale* __thiscall basic_streambuf_wchar_getloc(const basic_streambuf_wchar *this, locale *ret)
2465 TRACE("(%p)\n", this);
2466 return locale_copy_ctor(ret, IOS_LOCALE(this));
2469 /* ?imbue@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEXABVlocale@2@@Z */
2470 /* ?imbue@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAXAEBVlocale@2@@Z */
2471 /* ?imbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEXABVlocale@2@@Z */
2472 /* ?imbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAXAEBVlocale@2@@Z */
2473 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_imbue, 8)
2474 #if _MSVCP_VER >= 100
2475 #define call_basic_streambuf_wchar_imbue(this, loc) CALL_VTBL_FUNC(this, 56, void, (basic_streambuf_wchar*, const locale*), (this, loc))
2476 #elif _MSVCP_VER >= 80
2477 #define call_basic_streambuf_wchar_imbue(this, loc) CALL_VTBL_FUNC(this, 52, void, (basic_streambuf_wchar*, const locale*), (this, loc))
2478 #else
2479 #define call_basic_streambuf_wchar_imbue(this, loc) CALL_VTBL_FUNC(this, 48, void, (basic_streambuf_wchar*, const locale*), (this, loc))
2480 #endif
2481 void __thiscall basic_streambuf_wchar_imbue(basic_streambuf_wchar *this, const locale *loc)
2483 TRACE("(%p %p)\n", this, loc);
2486 /* ?overflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEGG@Z */
2487 /* ?overflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAGG@Z */
2488 /* ?overflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEGG@Z */
2489 /* ?overflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAGG@Z */
2490 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_overflow, 8)
2491 #if _MSVCP_VER >= 100
2492 #define call_basic_streambuf_wchar_overflow(this, ch) CALL_VTBL_FUNC(this, 12, unsigned short, (basic_streambuf_wchar*, unsigned short), (this, ch))
2493 #else
2494 #define call_basic_streambuf_wchar_overflow(this, ch) CALL_VTBL_FUNC(this, 4, unsigned short, (basic_streambuf_wchar*, unsigned short), (this, ch))
2495 #endif
2496 unsigned short __thiscall basic_streambuf_wchar_overflow(basic_streambuf_wchar *this, unsigned short ch)
2498 TRACE("(%p %d)\n", this, ch);
2499 return WEOF;
2502 /* ?pbackfail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEGG@Z */
2503 /* ?pbackfail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAGG@Z */
2504 /* ?pbackfail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEGG@Z */
2505 /* ?pbackfail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAGG@Z */
2506 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pbackfail, 8)
2507 #if _MSVCP_VER >= 100
2508 #define call_basic_streambuf_wchar_pbackfail(this, ch) CALL_VTBL_FUNC(this, 16, unsigned short, (basic_streambuf_wchar*, unsigned short), (this, ch))
2509 #else
2510 #define call_basic_streambuf_wchar_pbackfail(this, ch) CALL_VTBL_FUNC(this, 8, unsigned short, (basic_streambuf_wchar*, unsigned short), (this, ch))
2511 #endif
2512 unsigned short __thiscall basic_streambuf_wchar_pbackfail(basic_streambuf_wchar *this, unsigned short ch)
2514 TRACE("(%p %d)\n", this, ch);
2515 return WEOF;
2518 /* ?pbase@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
2519 /* ?pbase@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
2520 /* ?pbase@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
2521 /* ?pbase@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
2522 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pbase, 4)
2523 wchar_t* __thiscall basic_streambuf_wchar_pbase(const basic_streambuf_wchar *this)
2525 TRACE("(%p)\n", this);
2526 return *this->pwbuf;
2529 /* ?pbump@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXH@Z */
2530 /* ?pbump@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXH@Z */
2531 /* ?pbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXH@Z */
2532 /* ?pbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXH@Z */
2533 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pbump, 8)
2534 void __thiscall basic_streambuf_wchar_pbump(basic_streambuf_wchar *this, int off)
2536 TRACE("(%p %d)\n", this, off);
2537 *this->pwpos += off;
2538 *this->pwsize -= off;
2541 /* ?pptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
2542 /* ?pptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
2543 /* ?pptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
2544 /* ?pptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
2545 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pptr, 4)
2546 wchar_t* __thiscall basic_streambuf_wchar_pptr(const basic_streambuf_wchar *this)
2548 TRACE("(%p)\n", this);
2549 return *this->pwpos;
2552 /* ?pubimbue@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
2553 /* ?pubimbue@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
2554 /* ?pubimbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
2555 /* ?pubimbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
2556 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubimbue, 12)
2557 locale* __thiscall basic_streambuf_wchar_pubimbue(basic_streambuf_wchar *this, locale *ret, const locale *loc)
2559 TRACE("(%p %p)\n", this, loc);
2560 memcpy(ret, IOS_LOCALE(this), sizeof(locale));
2561 call_basic_streambuf_wchar_imbue(this, loc);
2562 locale_copy_ctor(IOS_LOCALE(this), loc);
2563 return ret;
2566 /* ?seekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
2567 /* ?seekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@_JW4seekdir@ios_base@2@H@Z */
2568 /* ?seekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
2569 /* ?seekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
2570 /* ?seekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
2571 /* ?seekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
2572 #if STREAMOFF_BITS == 64
2573 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_seekoff, 24)
2574 #else
2575 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_seekoff, 20)
2576 #endif
2577 #if _MSVCP_VER >= 100
2578 #define call_basic_streambuf_wchar_seekoff(this, ret, off, way, mode) \
2579 CALL_VTBL_FUNC(this, 40, fpos_mbstatet*, (basic_streambuf_wchar*, fpos_mbstatet*, streamoff, int, int), (this, ret, off, way, mode))
2580 #elif _MSVCP_VER >= 80
2581 #define call_basic_streambuf_wchar_seekoff(this, ret, off, way, mode) \
2582 CALL_VTBL_FUNC(this, 36, fpos_mbstatet*, (basic_streambuf_wchar*, fpos_mbstatet*, streamoff, int, int), (this, ret, off, way, mode))
2583 #else
2584 #define call_basic_streambuf_wchar_seekoff(this, ret, off, way, mode) \
2585 CALL_VTBL_FUNC(this, 32, fpos_mbstatet*, (basic_streambuf_wchar*, fpos_mbstatet*, streamoff, int, int), (this, ret, off, way, mode))
2586 #endif
2587 fpos_mbstatet* __thiscall basic_streambuf_wchar_seekoff(basic_streambuf_wchar *this,
2588 fpos_mbstatet *ret, streamoff off, int way, int mode)
2590 TRACE("(%p %s %d %d)\n", this, wine_dbgstr_longlong(off), way, mode);
2591 ret->off = -1;
2592 ret->pos = 0;
2593 memset(&ret->state, 0, sizeof(ret->state));
2594 return ret;
2597 /* ?pubseekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@JHH@Z */
2598 /* ?pubseekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@_JHH@Z */
2599 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@JHH@Z */
2600 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@_JHH@Z */
2601 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@JFF@Z */
2602 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@_JFF@Z */
2603 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
2604 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@_JW4seekdir@ioos_base@2@H@Z */
2605 #if STREAMOFF_BITS == 64
2606 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekoff, 24)
2607 #else
2608 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekoff, 20)
2609 #endif
2610 fpos_mbstatet* __thiscall basic_streambuf_wchar_pubseekoff(basic_streambuf_wchar *this,
2611 fpos_mbstatet *ret, streamoff off, int way, int mode)
2613 TRACE("(%p %s %d %d)\n", this, wine_dbgstr_longlong(off), way, mode);
2614 return call_basic_streambuf_wchar_seekoff(this, ret, off, way, mode);
2617 /* ?pubseekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@JII@Z */
2618 /* ?pubseekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@_JII@Z */
2619 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@JII@Z */
2620 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@_JII@Z */
2621 #if STREAMOFF_BITS == 64
2622 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekoff_old, 24)
2623 #else
2624 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekoff_old, 20)
2625 #endif
2626 fpos_mbstatet* __thiscall basic_streambuf_wchar_pubseekoff_old(basic_streambuf_wchar *this,
2627 fpos_mbstatet *ret, streamoff off, unsigned int way, unsigned int mode)
2629 TRACE("(%p %s %d %d)\n", this, wine_dbgstr_longlong(off), way, mode);
2630 return basic_streambuf_wchar_pubseekoff(this, ret, off, way, mode);
2633 /* ?seekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
2634 /* ?seekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
2635 /* ?seekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
2636 /* ?seekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
2637 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_seekpos, 36)
2638 #if _MSVCP_VER >= 100
2639 #define call_basic_streambuf_wchar_seekpos(this, ret, pos, mode) \
2640 CALL_VTBL_FUNC(this, 44, fpos_mbstatet*, (basic_streambuf_wchar*, fpos_mbstatet*, fpos_mbstatet, int), (this, ret, pos, mode))
2641 #elif _MSVCP_VER >= 80
2642 #define call_basic_streambuf_wchar_seekpos(this, ret, pos, mode) \
2643 CALL_VTBL_FUNC(this, 40, fpos_mbstatet*, (basic_streambuf_wchar*, fpos_mbstatet*, fpos_mbstatet, int), (this, ret, pos, mode))
2644 #else
2645 #define call_basic_streambuf_wchar_seekpos(this, ret, pos, mode) \
2646 CALL_VTBL_FUNC(this, 36, fpos_mbstatet*, (basic_streambuf_wchar*, fpos_mbstatet*, fpos_mbstatet, int), (this, ret, pos, mode))
2647 #endif
2648 fpos_mbstatet* __thiscall basic_streambuf_wchar_seekpos(basic_streambuf_wchar *this,
2649 fpos_mbstatet *ret, fpos_mbstatet pos, int mode)
2651 TRACE("(%p %s %d)\n", this, debugstr_fpos_mbstatet(&pos), mode);
2652 ret->off = -1;
2653 ret->pos = 0;
2654 memset(&ret->state, 0, sizeof(ret->state));
2655 return ret;
2658 /* ?pubseekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@V32@H@Z */
2659 /* ?pubseekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@V32@H@Z */
2660 /* ?pubseekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@V32@H@Z */
2661 /* ?pubseekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@V32@H@Z */
2662 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekpos, 36)
2663 fpos_mbstatet* __thiscall basic_streambuf_wchar_pubseekpos(basic_streambuf_wchar *this,
2664 fpos_mbstatet *ret, fpos_mbstatet pos, int mode)
2666 TRACE("(%p %s %d)\n", this, debugstr_fpos_mbstatet(&pos), mode);
2667 return call_basic_streambuf_wchar_seekpos(this, ret, pos, mode);
2670 /* ?pubseekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@V32@I@Z */
2671 /* ?pubseekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@V32@I@Z */
2672 /* ?pubseekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@V32@I@Z */
2673 /* ?pubseekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@V32@I@Z */
2674 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekpos_old, 36)
2675 fpos_mbstatet* __thiscall basic_streambuf_wchar_pubseekpos_old(basic_streambuf_wchar *this,
2676 fpos_mbstatet *ret, fpos_mbstatet pos, unsigned int mode)
2678 TRACE("(%p %s %d)\n", this, debugstr_fpos_mbstatet(&pos), mode);
2679 return basic_streambuf_wchar_pubseekpos(this, ret, pos, mode);
2682 /* ?setbuf@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEPAV12@PA_WH@Z */
2683 /* ?setbuf@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAPEAV12@PEA_W_J@Z */
2684 /* ?setbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEPAV12@PAGH@Z */
2685 /* ?setbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAPEAV12@PEAG_J@Z */
2686 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
2687 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setbuf, 16)
2688 #else
2689 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setbuf, 12)
2690 #endif
2691 #if _MSVCP_VER >= 100
2692 #define call_basic_streambuf_wchar_setbuf(this, buf, count) CALL_VTBL_FUNC(this, 48, basic_streambuf_wchar*, (basic_streambuf_wchar*, wchar_t*, streamsize), (this, buf, count))
2693 #elif _MSVCP_VER >= 80
2694 #define call_basic_streambuf_wchar_setbuf(this, buf, count) CALL_VTBL_FUNC(this, 44, basic_streambuf_wchar*, (basic_streambuf_wchar*, wchar_t*, streamsize), (this, buf, count))
2695 #else
2696 #define call_basic_streambuf_wchar_setbuf(this, buf, count) CALL_VTBL_FUNC(this, 40, basic_streambuf_wchar*, (basic_streambuf_wchar*, wchar_t*, streamsize), (this, buf, count))
2697 #endif
2698 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_setbuf(basic_streambuf_wchar *this, wchar_t *buf, streamsize count)
2700 TRACE("(%p %p %s)\n", this, buf, wine_dbgstr_longlong(count));
2701 return this;
2704 /* ?pubsetbuf@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PA_WH@Z */
2705 /* ?pubsetbuf@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEA_W_J@Z */
2706 /* ?pubsetbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PAGH@Z */
2707 /* ?pubsetbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEAG_J@Z */
2708 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
2709 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubsetbuf, 16)
2710 #else
2711 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubsetbuf, 12)
2712 #endif
2713 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_pubsetbuf(basic_streambuf_wchar *this, wchar_t *buf, streamsize count)
2715 TRACE("(%p %p %s)\n", this, buf, wine_dbgstr_longlong(count));
2716 return call_basic_streambuf_wchar_setbuf(this, buf, count);
2719 /* ?sync@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHXZ */
2720 /* ?sync@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAHXZ */
2721 /* ?sync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHXZ */
2722 /* ?sync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAHXZ */
2723 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sync, 4)
2724 #if _MSVCP_VER >= 100
2725 #define call_basic_streambuf_wchar_sync(this) CALL_VTBL_FUNC(this, 52, int, (basic_streambuf_wchar*), (this))
2726 #elif _MSVCP_VER >= 80
2727 #define call_basic_streambuf_wchar_sync(this) CALL_VTBL_FUNC(this, 48, int, (basic_streambuf_wchar*), (this))
2728 #else
2729 #define call_basic_streambuf_wchar_sync(this) CALL_VTBL_FUNC(this, 44, int, (basic_streambuf_wchar*), (this))
2730 #endif
2731 int __thiscall basic_streambuf_wchar_sync(basic_streambuf_wchar *this)
2733 TRACE("(%p)\n", this);
2734 return 0;
2737 /* ?pubsync@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHXZ */
2738 /* ?pubsync@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAHXZ */
2739 /* ?pubsync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHXZ */
2740 /* ?pubsync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAHXZ */
2741 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubsync, 4)
2742 int __thiscall basic_streambuf_wchar_pubsync(basic_streambuf_wchar *this)
2744 TRACE("(%p)\n", this);
2745 return call_basic_streambuf_wchar_sync(this);
2748 /* ?xsgetn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHPA_WH@Z */
2749 /* ?xsgetn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA_JPEA_W_J@Z */
2750 /* ?xsgetn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHPAGH@Z */
2751 /* ?xsgetn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA_JPEAG_J@Z */
2752 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
2753 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_xsgetn, 16)
2754 #else
2755 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_xsgetn, 12)
2756 #endif
2757 #if _MSVCP_VER >= 100
2758 #define call_basic_streambuf_wchar_xsgetn(this, ptr, count) CALL_VTBL_FUNC(this, 32, streamsize, (basic_streambuf_wchar*, wchar_t*, streamsize), (this, ptr, count))
2759 #else
2760 #define call_basic_streambuf_wchar_xsgetn(this, ptr, count) CALL_VTBL_FUNC(this, 24, streamsize, (basic_streambuf_wchar*, wchar_t*, streamsize), (this, ptr, count))
2761 #endif
2762 streamsize __thiscall basic_streambuf_wchar_xsgetn(basic_streambuf_wchar *this, wchar_t *ptr, streamsize count)
2764 TRACE("(%p %p %s)\n", this, ptr, wine_dbgstr_longlong(count));
2765 return call_basic_streambuf_wchar__Xsgetn_s(this, ptr, -1, count);
2768 /* ?sgetn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHPA_WH@Z */
2769 /* ?sgetn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA_JPEA_W_J@Z */
2770 /* ?sgetn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHPAGH@Z */
2771 /* ?sgetn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA_JPEAG_J@Z */
2772 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
2773 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sgetn, 16)
2774 #else
2775 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sgetn, 12)
2776 #endif
2777 streamsize __thiscall basic_streambuf_wchar_sgetn(basic_streambuf_wchar *this, wchar_t *ptr, streamsize count)
2779 TRACE("(%p %p %s)\n", this, ptr, wine_dbgstr_longlong(count));
2780 return call_basic_streambuf_wchar_xsgetn(this, ptr, count);
2783 /* ?showmanyc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHXZ */
2784 /* ?showmanyc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA_JXZ */
2785 /* ?showmanyc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHXZ */
2786 /* ?showmanyc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA_JXZ */
2787 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_showmanyc, 4)
2788 #if _MSVCP_VER >= 100
2789 #define call_basic_streambuf_wchar_showmanyc(this) CALL_VTBL_FUNC(this, 20, streamsize, (basic_streambuf_wchar*), (this))
2790 #else
2791 #define call_basic_streambuf_wchar_showmanyc(this) CALL_VTBL_FUNC(this, 12, streamsize, (basic_streambuf_wchar*), (this))
2792 #endif
2793 streamsize __thiscall basic_streambuf_wchar_showmanyc(basic_streambuf_wchar *this)
2795 TRACE("(%p)\n", this);
2796 return 0;
2799 /* ?in_avail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHXZ */
2800 /* ?in_avail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA_JXZ */
2801 /* ?in_avail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHXZ */
2802 /* ?in_avail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA_JXZ */
2803 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_in_avail, 4)
2804 streamsize __thiscall basic_streambuf_wchar_in_avail(basic_streambuf_wchar *this)
2806 streamsize ret;
2808 TRACE("(%p)\n", this);
2810 ret = basic_streambuf_wchar__Gnavail(this);
2811 return ret ? ret : call_basic_streambuf_wchar_showmanyc(this);
2814 /* ?sputbackc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEG_W@Z */
2815 /* ?sputbackc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAG_W@Z */
2816 /* ?sputbackc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGG@Z */
2817 /* ?sputbackc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGG@Z */
2818 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sputbackc, 8)
2819 unsigned short __thiscall basic_streambuf_wchar_sputbackc(basic_streambuf_wchar *this, wchar_t ch)
2821 TRACE("(%p %d)\n", this, ch);
2822 if(*this->prpos && *this->prpos>*this->prbuf && (*this->prpos)[-1]==ch) {
2823 (*this->prsize)++;
2824 (*this->prpos)--;
2825 return ch;
2828 return call_basic_streambuf_wchar_pbackfail(this, ch);
2831 /* ?sputc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEG_W@Z */
2832 /* ?sputc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAG_W@Z */
2833 /* ?sputc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGG@Z */
2834 /* ?sputc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAHG@Z */
2835 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sputc, 8)
2836 unsigned short __thiscall basic_streambuf_wchar_sputc(basic_streambuf_wchar *this, wchar_t ch)
2838 TRACE("(%p %d)\n", this, ch);
2839 return basic_streambuf_wchar__Pnavail(this) ?
2840 (*basic_streambuf_wchar__Pninc(this) = ch) :
2841 call_basic_streambuf_wchar_overflow(this, ch);
2844 /* ?sungetc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
2845 /* ?sungetc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
2846 /* ?sungetc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGXZ */
2847 /* ?sungetc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGXZ */
2848 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sungetc, 4)
2849 unsigned short __thiscall basic_streambuf_wchar_sungetc(basic_streambuf_wchar *this)
2851 TRACE("(%p)\n", this);
2852 if(*this->prpos && *this->prpos>*this->prbuf) {
2853 (*this->prsize)++;
2854 (*this->prpos)--;
2855 return **this->prpos;
2858 return call_basic_streambuf_wchar_pbackfail(this, WEOF);
2861 /* ?stossc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
2862 /* ?stossc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
2863 /* ?stossc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEXXZ */
2864 /* ?stossc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAXXZ */
2865 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_stossc, 4)
2866 void __thiscall basic_streambuf_wchar_stossc(basic_streambuf_wchar *this)
2868 TRACE("(%p)\n", this);
2869 if(basic_streambuf_wchar__Gnavail(this))
2870 basic_streambuf_wchar__Gninc(this);
2871 else
2872 call_basic_streambuf_wchar_uflow(this);
2875 /* ?sbumpc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
2876 /* ?sbumpc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
2877 /* ?sbumpc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGXZ */
2878 /* ?sbumpc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGXZ */
2879 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sbumpc, 4)
2880 unsigned short __thiscall basic_streambuf_wchar_sbumpc(basic_streambuf_wchar *this)
2882 TRACE("(%p)\n", this);
2883 return basic_streambuf_wchar__Gnavail(this) ?
2884 *basic_streambuf_wchar__Gninc(this) : call_basic_streambuf_wchar_uflow(this);
2887 /* ?sgetc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
2888 /* ?sgetc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
2889 /* ?sgetc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGXZ */
2890 /* ?sgetc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGXZ */
2891 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sgetc, 4)
2892 unsigned short __thiscall basic_streambuf_wchar_sgetc(basic_streambuf_wchar *this)
2894 TRACE("(%p)\n", this);
2895 return basic_streambuf_wchar__Gnavail(this) ?
2896 *basic_streambuf_wchar_gptr(this) : call_basic_streambuf_wchar_underflow(this);
2899 /* ?snextc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
2900 /* ?snextc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
2901 /* ?snextc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGXZ */
2902 /* ?snextc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGXZ */
2903 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_snextc, 4)
2904 unsigned short __thiscall basic_streambuf_wchar_snextc(basic_streambuf_wchar *this)
2906 TRACE("(%p)\n", this);
2908 if(basic_streambuf_wchar__Gnavail(this) > 1)
2909 return *basic_streambuf_wchar__Gnpreinc(this);
2910 return basic_streambuf_wchar_sbumpc(this)==WEOF ?
2911 WEOF : basic_streambuf_wchar_sgetc(this);
2914 /* ?xsputn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHPB_WH@Z */
2915 /* ?xsputn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA_JPEB_W_J@Z */
2916 /* ?xsputn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHPBGH@Z */
2917 /* ?xsputn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA_JPEBG_J@Z */
2918 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
2919 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_xsputn, 16)
2920 #else
2921 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_xsputn, 12)
2922 #endif
2923 #if _MSVCP_VER >= 100
2924 #define call_basic_streambuf_wchar_xsputn(this, ptr, count) CALL_VTBL_FUNC(this, 36, streamsize, (basic_streambuf_wchar*, const wchar_t*, streamsize), (this, ptr, count))
2925 #elif _MSVCP_VER >= 80
2926 #define call_basic_streambuf_wchar_xsputn(this, ptr, count) CALL_VTBL_FUNC(this, 32, streamsize, (basic_streambuf_wchar*, const wchar_t*, streamsize), (this, ptr, count))
2927 #else
2928 #define call_basic_streambuf_wchar_xsputn(this, ptr, count) CALL_VTBL_FUNC(this, 28, streamsize, (basic_streambuf_wchar*, const wchar_t*, streamsize), (this, ptr, count))
2929 #endif
2930 streamsize __thiscall basic_streambuf_wchar_xsputn(basic_streambuf_wchar *this, const wchar_t *ptr, streamsize count)
2932 streamsize copied, chunk;
2934 TRACE("(%p %p %s)\n", this, ptr, wine_dbgstr_longlong(count));
2936 for(copied=0; copied<count;) {
2937 chunk = basic_streambuf_wchar__Pnavail(this);
2938 if(chunk > count-copied)
2939 chunk = count-copied;
2941 if(chunk > 0) {
2942 memcpy(*this->pwpos, ptr+copied, chunk*sizeof(wchar_t));
2943 *this->pwpos += chunk;
2944 *this->pwsize -= chunk;
2945 copied += chunk;
2946 }else if(call_basic_streambuf_wchar_overflow(this, ptr[copied]) != WEOF) {
2947 copied++;
2948 }else {
2949 break;
2953 return copied;
2956 /* ?sputn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHPB_WH@Z */
2957 /* ?sputn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA_JPEB_W_J@Z */
2958 /* ?sputn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHPBGH@Z */
2959 /* ?sputn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA_JPEBG_J@Z */
2960 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
2961 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sputn, 16)
2962 #else
2963 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sputn, 12)
2964 #endif
2965 streamsize __thiscall basic_streambuf_wchar_sputn(basic_streambuf_wchar *this, const wchar_t *ptr, streamsize count)
2967 TRACE("(%p %p %s)\n", this, ptr, wine_dbgstr_longlong(count));
2968 return call_basic_streambuf_wchar_xsputn(this, ptr, count);
2971 /* ?swap@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXAAV12@@Z */
2972 /* ?swap@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXAEAV12@@Z */
2973 /* ?swap@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXAAV12@@Z */
2974 /* ?swap@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXAAV12@@Z */
2975 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_swap, 8)
2976 void __thiscall basic_streambuf_wchar_swap(basic_streambuf_wchar *this, basic_streambuf_wchar *r)
2978 wchar_t *wfirst, *wnext, *wlast, *rfirst, *rnext, *rlast;
2979 #if _MSVCP_VER < 70
2980 locale loc;
2981 #else
2982 locale *loc;
2983 #endif
2985 TRACE("(%p %p)\n", this, r);
2987 if(this == r)
2988 return;
2990 wfirst = *this->pwbuf;
2991 wnext = *this->pwpos;
2992 wlast = *this->pwpos + *this->pwsize;
2993 rfirst = *this->prbuf;
2994 rnext = *this->prpos;
2995 rlast = *this->prpos + *this->prsize;
2996 loc = this->loc;
2998 basic_streambuf_wchar_setp_next(this, *r->pwbuf, *r->pwpos, *r->pwpos + *r->pwsize);
2999 basic_streambuf_wchar_setg(this, *r->prbuf, *r->prpos, *r->prpos + *r->prsize);
3000 this->loc = r->loc;
3002 basic_streambuf_wchar_setp_next(r, wfirst, wnext, wlast);
3003 basic_streambuf_wchar_setg(r, rfirst, rnext, rlast);
3004 r->loc = loc;
3007 /* ?_Stinit@?1??_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@23@@Z@4HA */
3008 /* ?_Stinit@?1??_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@23@@Z@4HA */
3009 #if _MSVCP_VER >= 140
3010 _Mbstatet basic_filebuf_char__Init__Stinit = {0};
3011 #else
3012 _Mbstatet basic_filebuf_char__Init__Stinit = 0;
3013 #endif
3015 /* ?_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@12@@Z */
3016 /* ?_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@12@@Z */
3017 DEFINE_THISCALL_WRAPPER(basic_filebuf_char__Init, 12)
3018 void __thiscall basic_filebuf_char__Init(basic_filebuf_char *this, FILE *file, basic_filebuf__Initfl which)
3020 TRACE("(%p %p %d)\n", this, file, which);
3022 this->cvt = NULL;
3023 this->wrotesome = FALSE;
3024 this->state = basic_filebuf_char__Init__Stinit;
3025 this->close = (which == INITFL_open);
3026 this->file = file;
3028 basic_streambuf_char__Init_empty(&this->base);
3029 if(file)
3031 char **base, **ptr;
3032 int *cnt;
3034 #if _MSVCP_VER >= 140
3035 _get_stream_buffer_pointers(file, &base, &ptr, &cnt);
3036 #else
3037 base = &file->_base;
3038 ptr = &file->_ptr;
3039 cnt = &file->_cnt;
3040 #endif
3041 basic_streambuf_char__Init(&this->base, base, ptr, cnt, base, ptr, cnt);
3045 /* ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXPAV?$codecvt@DDH@2@@Z */
3046 /* ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXPEAV?$codecvt@DDH@2@@Z */
3047 DEFINE_THISCALL_WRAPPER(basic_filebuf_char__Initcvt_cvt, 8)
3048 void __thiscall basic_filebuf_char__Initcvt_cvt(basic_filebuf_char *this, codecvt_char *cvt)
3050 TRACE("(%p %p)\n", this, cvt);
3052 if(codecvt_base_always_noconv(&cvt->base)) {
3053 this->cvt = NULL;
3054 }else {
3055 basic_streambuf_char__Init_empty(&this->base);
3056 this->cvt = cvt;
3060 /* ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXXZ */
3061 /* ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXXZ */
3062 DEFINE_THISCALL_WRAPPER(basic_filebuf_char__Initcvt, 4)
3063 void __thiscall basic_filebuf_char__Initcvt(basic_filebuf_char *this)
3065 codecvt_char *cvt = codecvt_char_use_facet(IOS_LOCALE(&this->base));
3066 basic_filebuf_char__Initcvt_cvt( this, cvt );
3069 /* ?_Endwrite@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAE_NXZ */
3070 /* ?_Endwrite@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAA_NXZ */
3071 DEFINE_THISCALL_WRAPPER(basic_filebuf_char__Endwrite, 4)
3072 bool __thiscall basic_filebuf_char__Endwrite(basic_filebuf_char *this)
3074 TRACE("(%p)\n", this);
3076 if(!this->wrotesome || !this->cvt)
3077 return TRUE;
3080 if(call_basic_streambuf_char_overflow(&this->base, EOF) == EOF)
3081 return FALSE;
3083 while(1) {
3084 /* TODO: check if we need a dynamic buffer here */
3085 char buf[128];
3086 char *next;
3087 int ret;
3089 ret = codecvt_char_unshift(this->cvt, &this->state, buf, buf+sizeof(buf), &next);
3090 switch(ret) {
3091 case CODECVT_ok:
3092 this->wrotesome = FALSE;
3093 /* fall through */
3094 case CODECVT_partial:
3095 if(!fwrite(buf, next-buf, 1, this->file))
3096 return FALSE;
3097 if(this->wrotesome)
3098 break;
3099 /* fall through */
3100 case CODECVT_noconv:
3101 if(call_basic_streambuf_char_overflow(&this->base, EOF) == EOF)
3102 return FALSE;
3103 return TRUE;
3104 default:
3105 return FALSE;
3110 /* ?close@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@XZ */
3111 /* ?close@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@XZ */
3112 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_close, 4)
3113 basic_filebuf_char* __thiscall basic_filebuf_char_close(basic_filebuf_char *this)
3115 basic_filebuf_char *ret = this;
3117 TRACE("(%p)\n", this);
3119 if(!this->file)
3120 return NULL;
3122 /* TODO: handle exceptions */
3123 if(!basic_filebuf_char__Endwrite(this))
3124 ret = NULL;
3125 if(fclose(this->file))
3126 ret = NULL;
3128 basic_filebuf_char__Init(this, NULL, INITFL_close);
3129 return ret;
3132 /* ??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAE@PAU_iobuf@@@Z */
3133 /* ??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAA@PEAU_iobuf@@@Z */
3134 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_ctor_file, 8)
3135 basic_filebuf_char* __thiscall basic_filebuf_char_ctor_file(basic_filebuf_char *this, FILE *file)
3137 TRACE("(%p %p)\n", this, file);
3139 basic_streambuf_char_ctor(&this->base);
3140 this->base.vtable = &basic_filebuf_char_vtable;
3142 basic_filebuf_char__Init(this, file, INITFL_new);
3143 return this;
3146 /* ??_F?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
3147 /* ??_F?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
3148 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_ctor, 4)
3149 basic_filebuf_char* __thiscall basic_filebuf_char_ctor(basic_filebuf_char *this)
3151 return basic_filebuf_char_ctor_file(this, NULL);
3154 /* ??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAE@W4_Uninitialized@1@@Z */
3155 /* ??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
3156 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_ctor_uninitialized, 8)
3157 basic_filebuf_char* __thiscall basic_filebuf_char_ctor_uninitialized(basic_filebuf_char *this, int uninitialized)
3159 TRACE("(%p %d)\n", this, uninitialized);
3161 basic_streambuf_char_ctor(&this->base);
3162 this->base.vtable = &basic_filebuf_char_vtable;
3163 return this;
3166 /* ??1?$basic_filebuf@DU?$char_traits@D@std@@@std@@UAE@XZ */
3167 /* ??1?$basic_filebuf@DU?$char_traits@D@std@@@std@@UEAA@XZ */
3168 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_dtor, 4)
3169 void __thiscall basic_filebuf_char_dtor(basic_filebuf_char *this)
3171 TRACE("(%p)\n", this);
3173 if(this->close)
3174 basic_filebuf_char_close(this);
3175 basic_streambuf_char_dtor(&this->base);
3178 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_vector_dtor, 8)
3179 basic_filebuf_char* __thiscall basic_filebuf_char_vector_dtor(basic_filebuf_char *this, unsigned int flags)
3181 TRACE("(%p %x)\n", this, flags);
3182 if(flags & 2) {
3183 /* we have an array, with the number of elements stored before the first object */
3184 INT_PTR i, *ptr = (INT_PTR *)this-1;
3186 for(i=*ptr-1; i>=0; i--)
3187 basic_filebuf_char_dtor(this+i);
3188 operator_delete(ptr);
3189 } else {
3190 basic_filebuf_char_dtor(this);
3191 if(flags & 1)
3192 operator_delete(this);
3195 return this;
3198 /* ?is_open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QBE_NXZ */
3199 /* ?is_open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEBA_NXZ */
3200 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_is_open, 4)
3201 bool __thiscall basic_filebuf_char_is_open(const basic_filebuf_char *this)
3203 TRACE("(%p)\n", this);
3204 return this->file != NULL;
3207 /* ?_Fiopen@std@@YAPAU_iobuf@@PB_WHH@Z */
3208 /* ?_Fiopen@std@@YAPEAU_iobuf@@PEB_WHH@Z */
3209 FILE* __cdecl _Fiopen_wchar(const wchar_t *name, int mode, int prot)
3211 static const struct {
3212 int mode;
3213 const wchar_t str[4];
3214 const wchar_t str_bin[4];
3215 } str_mode[] = {
3216 {OPENMODE_out, L"w", L"wb"},
3217 {OPENMODE_out|OPENMODE_app, L"a", L"ab"},
3218 {OPENMODE_app, L"a", L"ab"},
3219 {OPENMODE_out|OPENMODE_trunc, L"w", L"wb"},
3220 {OPENMODE_in, L"r", L"rb"},
3221 {OPENMODE_in|OPENMODE_out, L"r+", L"r+b"},
3222 {OPENMODE_in|OPENMODE_out|OPENMODE_trunc, L"w+", L"w+b"},
3223 {OPENMODE_in|OPENMODE_out|OPENMODE_app, L"a+", L"a+b"},
3224 {OPENMODE_in|OPENMODE_app, L"a+", L"a+b"}
3227 int real_mode = mode & ~(OPENMODE_ate|OPENMODE__Nocreate|OPENMODE__Noreplace|OPENMODE_binary);
3228 size_t mode_idx;
3229 FILE *f = NULL;
3231 TRACE("(%s %d %d)\n", debugstr_w(name), mode, prot);
3233 for(mode_idx=0; mode_idx<ARRAY_SIZE(str_mode); mode_idx++)
3234 if(str_mode[mode_idx].mode == real_mode)
3235 break;
3236 if(mode_idx == ARRAY_SIZE(str_mode))
3237 return NULL;
3239 if((mode & OPENMODE__Nocreate) && !(f = _wfopen(name, L"r")))
3240 return NULL;
3241 else if(f)
3242 fclose(f);
3244 if((mode & OPENMODE__Noreplace) && (mode & (OPENMODE_out|OPENMODE_app))
3245 && (f = _wfopen(name, L"r"))) {
3246 fclose(f);
3247 return NULL;
3250 #if _MSVCP_VER < 80 /* msvcp60 - msvcp71 are ignoring prot argument */
3251 prot = SH_DENYNO;
3252 #endif
3254 f = _wfsopen(name, (mode & OPENMODE_binary) ? str_mode[mode_idx].str_bin
3255 : str_mode[mode_idx].str, prot);
3256 if(!f)
3257 return NULL;
3259 if((mode & OPENMODE_ate) && fseek(f, 0, SEEK_END)) {
3260 fclose(f);
3261 return NULL;
3264 return f;
3267 /* ?_Fiopen@std@@YAPAU_iobuf@@PBDHH@Z */
3268 /* ?_Fiopen@std@@YAPEAU_iobuf@@PEBDHH@Z */
3269 FILE* __cdecl _Fiopen(const char *name, int mode, int prot)
3271 wchar_t nameW[FILENAME_MAX];
3273 TRACE("(%s %d %d)\n", name, mode, prot);
3275 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
3276 if(mbstowcs_s(NULL, nameW, FILENAME_MAX, name, FILENAME_MAX-1) != 0)
3277 return NULL;
3278 #else
3279 if(!MultiByteToWideChar(CP_ACP, 0, name, -1, nameW, FILENAME_MAX-1))
3280 return NULL;
3281 #endif
3282 return _Fiopen_wchar(nameW, mode, prot);
3285 /* ?__Fiopen@std@@YAPAU_iobuf@@PBDH@Z */
3286 /* ?__Fiopen@std@@YAPEAU_iobuf@@PEBDH@Z */
3287 FILE* __cdecl ___Fiopen(const char *name, int mode)
3289 TRACE("(%p %d)\n", name, mode);
3290 return _Fiopen(name, mode, _SH_DENYNO);
3293 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PB_WHH@Z */
3294 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEB_WHH@Z */
3295 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBGHH@Z */
3296 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBGHH@Z */
3297 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open_wchar, 16)
3298 basic_filebuf_char* __thiscall basic_filebuf_char_open_wchar(basic_filebuf_char *this, const wchar_t *name, int mode, int prot)
3300 FILE *f = NULL;
3302 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
3304 if(basic_filebuf_char_is_open(this))
3305 return NULL;
3307 if(!(f = _Fiopen_wchar(name, mode, prot)))
3308 return NULL;
3310 basic_filebuf_char__Init(this, f, INITFL_open);
3311 basic_filebuf_char__Initcvt_cvt(this, codecvt_char_use_facet(IOS_LOCALE(&this->base)));
3312 return this;
3315 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PB_WI@Z */
3316 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEB_WI@Z */
3317 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBGI@Z */
3318 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBGI@Z */
3319 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open_wchar_mode, 12)
3320 basic_filebuf_char* __thiscall basic_filebuf_char_open_wchar_mode(basic_filebuf_char *this, const wchar_t *name, unsigned int mode)
3322 return basic_filebuf_char_open_wchar(this, name, mode, SH_DENYNO);
3325 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBDHH@Z */
3326 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBDHH@Z */
3327 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open, 16)
3328 basic_filebuf_char* __thiscall basic_filebuf_char_open(basic_filebuf_char *this, const char *name, int mode, int prot)
3330 wchar_t nameW[FILENAME_MAX];
3332 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
3334 if(mbstowcs_s(NULL, nameW, FILENAME_MAX, name, FILENAME_MAX-1) != 0)
3335 return NULL;
3336 return basic_filebuf_char_open_wchar(this, nameW, mode, prot);
3339 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBDF@Z */
3340 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBDF@Z */
3341 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open_mode_old, 12)
3342 basic_filebuf_char* __thiscall basic_filebuf_char_open_mode_old(basic_filebuf_char *this, const char *name, short mode)
3344 TRACE("(%p %p %d)\n", this, name, mode);
3345 return basic_filebuf_char_open(this, name, mode, SH_DENYNO);
3348 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBDH@Z */
3349 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBDH@Z */
3350 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBDI@Z */
3351 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBDI@Z */
3352 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open_mode, 12)
3353 basic_filebuf_char* __thiscall basic_filebuf_char_open_mode(basic_filebuf_char *this, const char *name, unsigned int mode)
3355 return basic_filebuf_char_open(this, name, mode, SH_DENYNO);
3358 /* ?overflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
3359 /* ?overflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
3360 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_overflow, 8)
3361 int __thiscall basic_filebuf_char_overflow(basic_filebuf_char *this, int c)
3363 char buf[8], *dyn_buf;
3364 char ch = c, *to_next;
3365 const char *from_next;
3366 int ret, max_size;
3369 TRACE("(%p %d)\n", this, c);
3371 if(!basic_filebuf_char_is_open(this))
3372 return EOF;
3373 if(c == EOF)
3374 return !c;
3376 if(!this->cvt)
3377 return fputc(ch, this->file);
3379 from_next = &ch;
3380 do {
3381 ret = codecvt_char_out(this->cvt, &this->state, from_next, &ch+1,
3382 &from_next, buf, buf+sizeof(buf), &to_next);
3384 switch(ret) {
3385 case CODECVT_partial:
3386 if(to_next == buf)
3387 break;
3388 /* fall through */
3389 case CODECVT_ok:
3390 if(!fwrite(buf, to_next-buf, 1, this->file))
3391 return EOF;
3392 if(ret == CODECVT_partial)
3393 continue;
3394 return c;
3395 case CODECVT_noconv:
3396 return fwrite(&ch, sizeof(char), 1, this->file) ? c : EOF;
3397 default:
3398 return EOF;
3401 break;
3402 } while(1);
3404 max_size = codecvt_base_max_length(&this->cvt->base);
3405 dyn_buf = malloc(max_size);
3406 if(!dyn_buf)
3407 return EOF;
3409 ret = codecvt_char_out(this->cvt, &this->state, from_next, &ch+1,
3410 &from_next, dyn_buf, dyn_buf+max_size, &to_next);
3412 switch(ret) {
3413 case CODECVT_ok:
3414 ret = fwrite(dyn_buf, to_next-dyn_buf, 1, this->file);
3415 free(dyn_buf);
3416 return ret ? c : EOF;
3417 case CODECVT_partial:
3418 ERR("buffer should be big enough to store all output\n");
3419 /* fall through */
3420 default:
3421 free(dyn_buf);
3422 return EOF;
3426 /* ?pbackfail@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
3427 /* ?pbackfail@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
3428 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_pbackfail, 8)
3429 int __thiscall basic_filebuf_char_pbackfail(basic_filebuf_char *this, int c)
3431 TRACE("(%p %d)\n", this, c);
3433 if(!basic_filebuf_char_is_open(this))
3434 return EOF;
3436 if(basic_streambuf_char_gptr(&this->base)>basic_streambuf_char_eback(&this->base)
3437 && (c==EOF || (int)(unsigned char)basic_streambuf_char_gptr(&this->base)[-1]==c)) {
3438 basic_streambuf_char__Gndec(&this->base);
3439 return c==EOF ? !c : c;
3440 }else if(c!=EOF && !this->cvt) {
3441 return ungetc(c, this->file);
3444 return EOF;
3447 /* ?uflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
3448 /* ?uflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
3449 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_uflow, 4)
3450 int __thiscall basic_filebuf_char_uflow(basic_filebuf_char *this)
3452 char ch, buf[128], *to_next;
3453 const char *buf_next;
3454 int c, j;
3455 size_t i;
3457 TRACE("(%p)\n", this);
3459 if(!basic_filebuf_char_is_open(this))
3460 return EOF;
3462 if(basic_streambuf_char_gptr(&this->base) < basic_streambuf_char_egptr(&this->base))
3463 return (unsigned char)*basic_streambuf_char__Gninc(&this->base);
3465 c = fgetc(this->file);
3466 if(!this->cvt || c==EOF)
3467 return c;
3469 buf_next = buf;
3470 for(i=0; i < ARRAY_SIZE(buf); i++) {
3471 buf[i] = c;
3473 switch(codecvt_char_in(this->cvt, &this->state, buf_next,
3474 buf+i+1, &buf_next, &ch, &ch+1, &to_next)) {
3475 case CODECVT_partial:
3476 case CODECVT_ok:
3477 if(to_next == &ch) {
3478 c = fgetc(this->file);
3479 if(c == EOF)
3480 return EOF;
3481 continue;
3484 for(j = --i; j >= buf_next-buf; j--)
3485 ungetc(buf[j], this->file);
3486 return ch;
3487 case CODECVT_noconv:
3488 return (unsigned char)buf[0];
3489 default:
3490 return EOF;
3494 FIXME("buffer is too small\n");
3495 return EOF;
3498 /* ?underflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
3499 /* ?underflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
3500 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_underflow, 4)
3501 int __thiscall basic_filebuf_char_underflow(basic_filebuf_char *this)
3503 int ret;
3505 TRACE("(%p)\n", this);
3507 if(basic_streambuf_char_gptr(&this->base) < basic_streambuf_char_egptr(&this->base))
3508 return (unsigned char)*basic_streambuf_char_gptr(&this->base);
3510 ret = call_basic_streambuf_char_uflow(&this->base);
3511 if(ret != EOF)
3512 ret = call_basic_streambuf_char_pbackfail(&this->base, ret);
3513 return ret;
3516 /* ?seekoff@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
3517 /* ?seekoff@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@_JW4seekdir@ios_base@2@H@Z */
3518 /* ?seekoff@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
3519 /* ?seekoff@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
3520 #if STREAMOFF_BITS == 64
3521 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_seekoff, 24)
3522 #else
3523 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_seekoff, 20)
3524 #endif
3525 fpos_mbstatet* __thiscall basic_filebuf_char_seekoff(basic_filebuf_char *this,
3526 fpos_mbstatet *ret, streamoff off, int way, int mode)
3528 fpos_t pos;
3530 TRACE("(%p %p %s %d %d)\n", this, ret, wine_dbgstr_longlong(off), way, mode);
3532 if(!basic_filebuf_char_is_open(this) || !basic_filebuf_char__Endwrite(this)
3533 || fseek(this->file, off, way)) {
3534 ret->off = -1;
3535 ret->pos = 0;
3536 memset(&ret->state, 0, sizeof(ret->state));
3537 return ret;
3540 fgetpos(this->file, &pos);
3541 ret->off = 0;
3542 ret->pos = pos;
3543 ret->state = this->state;
3544 return ret;
3547 /* ?seekpos@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
3548 /* ?seekpos@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
3549 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_seekpos, 36)
3550 fpos_mbstatet* __thiscall basic_filebuf_char_seekpos(basic_filebuf_char *this,
3551 fpos_mbstatet *ret, fpos_mbstatet pos, int mode)
3553 fpos_t fpos;
3555 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_mbstatet(&pos), mode);
3557 if(!basic_filebuf_char_is_open(this) || !basic_filebuf_char__Endwrite(this)
3558 || fseek(this->file, (LONG)pos.pos, SEEK_SET)
3559 || (pos.off && fseek(this->file, pos.off, SEEK_CUR))) {
3560 ret->off = -1;
3561 ret->pos = 0;
3562 memset(&ret->state, 0, sizeof(ret->state));
3563 return ret;
3566 fgetpos(this->file, &fpos);
3567 ret->off = 0;
3568 ret->pos = fpos;
3569 ret->state = this->state;
3570 return ret;
3573 /* ?setbuf@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PADH@Z */
3574 /* ?setbuf@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PEAD_J@Z */
3575 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
3576 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_setbuf, 16)
3577 #else
3578 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_setbuf, 12)
3579 #endif
3580 basic_streambuf_char* __thiscall basic_filebuf_char_setbuf(basic_filebuf_char *this, char *buf, streamsize count)
3582 TRACE("(%p %p %s)\n", this, buf, wine_dbgstr_longlong(count));
3584 if(!basic_filebuf_char_is_open(this))
3585 return NULL;
3587 if(setvbuf(this->file, buf, (buf==NULL && count==0) ? _IONBF : _IOFBF, count))
3588 return NULL;
3590 basic_filebuf_char__Init(this, this->file, INITFL_open);
3591 return &this->base;
3594 /* ?sync@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
3595 /* ?sync@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
3596 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_sync, 4)
3597 int __thiscall basic_filebuf_char_sync(basic_filebuf_char *this)
3599 TRACE("(%p)\n", this);
3601 if(!basic_filebuf_char_is_open(this))
3602 return 0;
3604 if(call_basic_streambuf_char_overflow(&this->base, EOF) == EOF)
3605 return 0;
3606 return fflush(this->file);
3609 /* ?imbue@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEXABVlocale@2@@Z */
3610 /* ?imbue@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAXAEBVlocale@2@@Z */
3611 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_imbue, 8)
3612 void __thiscall basic_filebuf_char_imbue(basic_filebuf_char *this, const locale *loc)
3614 TRACE("(%p %p)\n", this, loc);
3615 basic_filebuf_char__Initcvt_cvt(this, codecvt_char_use_facet(loc));
3618 /* ?_Stinit@?1??_Init@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@23@@Z@4HA */
3619 /* ?_Stinit@?1??_Init@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@23@@Z@4HA */
3620 #if _MSVCP_VER >= 140
3621 _Mbstatet basic_filebuf_wchar__Init__Stinit = {0};
3622 #else
3623 _Mbstatet basic_filebuf_wchar__Init__Stinit = 0;
3624 #endif
3626 /* ?_Stinit@?1??_Init@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@23@@Z@4HA */
3627 /* ?_Stinit@?1??_Init@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@23@@Z@4HA */
3628 #if _MSVCP_VER >= 140
3629 _Mbstatet basic_filebuf_short__Init__Stinit = {0};
3630 #else
3631 _Mbstatet basic_filebuf_short__Init__Stinit = 0;
3632 #endif
3634 /* ?_Init@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@12@@Z */
3635 /* ?_Init@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@12@@Z */
3636 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar__Init, 12)
3637 void __thiscall basic_filebuf_wchar__Init(basic_filebuf_wchar *this, FILE *file, basic_filebuf__Initfl which)
3639 TRACE("(%p %p %d)\n", this, file, which);
3641 this->cvt = NULL;
3642 this->wrotesome = FALSE;
3643 this->state = basic_filebuf_wchar__Init__Stinit;
3644 this->close = (which == INITFL_open);
3645 this->file = file;
3647 basic_streambuf_wchar__Init_empty(&this->base);
3650 /* ?_Init@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@12@@Z */
3651 /* ?_Init@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@12@@Z */
3652 DEFINE_THISCALL_WRAPPER(basic_filebuf_short__Init, 12)
3653 void __thiscall basic_filebuf_short__Init(basic_filebuf_wchar *this, FILE *file, basic_filebuf__Initfl which)
3655 TRACE("(%p %p %d)\n", this, file, which);
3657 this->cvt = NULL;
3658 this->wrotesome = FALSE;
3659 this->state = basic_filebuf_short__Init__Stinit;
3660 this->close = (which == INITFL_open);
3661 this->file = file;
3663 basic_streambuf_wchar__Init_empty(&this->base);
3666 /* ?_Initcvt@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAEXPAV?$codecvt@_WDH@2@@Z */
3667 /* ?_Initcvt@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAV?$codecvt@_WDH@2@@Z */
3668 /* ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXPAV?$codecvt@GDH@2@@Z */
3669 /* ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXPEAV?$codecvt@GDH@2@@Z */
3670 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar__Initcvt_cvt, 8)
3671 void __thiscall basic_filebuf_wchar__Initcvt_cvt(basic_filebuf_wchar *this, codecvt_wchar *cvt)
3673 TRACE("(%p %p)\n", this, cvt);
3675 if(codecvt_base_always_noconv(&cvt->base)) {
3676 this->cvt = NULL;
3677 }else {
3678 basic_streambuf_wchar__Init_empty(&this->base);
3679 this->cvt = cvt;
3683 /* ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXXZ */
3684 /* ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXXZ */
3685 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar__Initcvt, 4)
3686 void __thiscall basic_filebuf_wchar__Initcvt(basic_filebuf_wchar *this)
3688 codecvt_wchar *cvt = codecvt_wchar_use_facet(IOS_LOCALE(&this->base));
3689 basic_filebuf_wchar__Initcvt_cvt( this, cvt );
3692 /* ?_Endwrite@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAE_NXZ */
3693 /* ?_Endwrite@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAA_NXZ */
3694 /* ?_Endwrite@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAE_NXZ */
3695 /* ?_Endwrite@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAA_NXZ */
3696 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar__Endwrite, 4)
3697 bool __thiscall basic_filebuf_wchar__Endwrite(basic_filebuf_wchar *this)
3699 TRACE("(%p)\n", this);
3701 if(!this->wrotesome || !this->cvt)
3702 return TRUE;
3704 if(call_basic_streambuf_wchar_overflow(&this->base, WEOF) == WEOF)
3705 return FALSE;
3707 while(1) {
3708 /* TODO: check if we need a dynamic buffer here */
3709 char buf[128];
3710 char *next;
3711 int ret;
3713 ret = codecvt_wchar_unshift(this->cvt, &this->state, buf, buf+sizeof(buf), &next);
3714 switch(ret) {
3715 case CODECVT_ok:
3716 this->wrotesome = FALSE;
3717 /* fall through */
3718 case CODECVT_partial:
3719 if(!fwrite(buf, next-buf, 1, this->file))
3720 return FALSE;
3721 if(this->wrotesome)
3722 break;
3723 /* fall through */
3724 case CODECVT_noconv:
3725 if(call_basic_streambuf_wchar_overflow(&this->base, WEOF) == WEOF)
3726 return FALSE;
3727 return TRUE;
3728 default:
3729 return FALSE;
3734 /* ?close@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@XZ */
3735 /* ?close@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@XZ */
3736 /* ?close@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@XZ */
3737 /* ?close@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@XZ */
3738 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_close, 4)
3739 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_close(basic_filebuf_wchar *this)
3741 basic_filebuf_wchar *ret = this;
3743 TRACE("(%p)\n", this);
3745 if(!this->file)
3746 return NULL;
3748 /* TODO: handle exceptions */
3749 if(!basic_filebuf_wchar__Endwrite(this))
3750 ret = NULL;
3751 if(fclose(this->file))
3752 ret = NULL;
3754 basic_filebuf_wchar__Init(this, NULL, INITFL_close);
3755 return ret;
3758 /* ??0?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAE@PAU_iobuf@@@Z */
3759 /* ??0?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAA@PEAU_iobuf@@@Z */
3760 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_ctor_file, 8)
3761 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_ctor_file(basic_filebuf_wchar *this, FILE *file)
3763 TRACE("(%p %p)\n", this, file);
3765 basic_streambuf_wchar_ctor(&this->base);
3766 this->base.vtable = &basic_filebuf_wchar_vtable;
3768 basic_filebuf_wchar__Init(this, file, INITFL_new);
3769 return this;
3772 /* ??0?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAE@PAU_iobuf@@@Z */
3773 /* ??0?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAA@PEAU_iobuf@@@Z */
3774 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_ctor_file, 8)
3775 basic_filebuf_wchar* __thiscall basic_filebuf_short_ctor_file(basic_filebuf_wchar *this, FILE *file)
3777 TRACE("(%p %p)\n", this, file);
3779 basic_streambuf_short_ctor(&this->base);
3780 this->base.vtable = &basic_filebuf_short_vtable;
3782 basic_filebuf_short__Init(this, file, INITFL_new);
3783 return this;
3786 /* ??_F?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
3787 /* ??_F?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
3788 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_ctor, 4)
3789 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_ctor(basic_filebuf_wchar *this)
3791 return basic_filebuf_wchar_ctor_file(this, NULL);
3794 /* ??_F?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEXXZ */
3795 /* ??_F?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAXXZ */
3796 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_ctor, 4)
3797 basic_filebuf_wchar* __thiscall basic_filebuf_short_ctor(basic_filebuf_wchar *this)
3799 return basic_filebuf_short_ctor_file(this, NULL);
3802 /* ??0?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAE@W4_Uninitialized@1@@Z */
3803 /* ??0?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
3804 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_ctor_uninitialized, 8)
3805 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_ctor_uninitialized(basic_filebuf_wchar *this, int uninitialized)
3807 TRACE("(%p %d)\n", this, uninitialized);
3809 basic_streambuf_wchar_ctor(&this->base);
3810 this->base.vtable = &basic_filebuf_wchar_vtable;
3811 return this;
3814 /* ??0?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAE@W4_Uninitialized@1@@Z */
3815 /* ??0?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
3816 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_ctor_uninitialized, 8)
3817 basic_filebuf_wchar* __thiscall basic_filebuf_short_ctor_uninitialized(basic_filebuf_wchar *this, int uninitialized)
3819 TRACE("(%p %d)\n", this, uninitialized);
3821 basic_streambuf_short_ctor(&this->base);
3822 this->base.vtable = &basic_filebuf_short_vtable;
3823 return this;
3826 /* ??1?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
3827 /* ??1?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
3828 /* ??1?$basic_filebuf@GU?$char_traits@G@std@@@std@@UAE@XZ */
3829 /* ??1?$basic_filebuf@GU?$char_traits@G@std@@@std@@UEAA@XZ */
3830 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_dtor, 4)
3831 void __thiscall basic_filebuf_wchar_dtor(basic_filebuf_wchar *this)
3833 TRACE("(%p)\n", this);
3835 if(this->close)
3836 basic_filebuf_wchar_close(this);
3837 basic_streambuf_wchar_dtor(&this->base);
3840 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_vector_dtor, 8)
3841 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_vector_dtor(basic_filebuf_wchar *this, unsigned int flags)
3843 TRACE("(%p %x)\n", this, flags);
3844 if(flags & 2) {
3845 /* we have an array, with the number of elements stored before the first object */
3846 INT_PTR i, *ptr = (INT_PTR *)this-1;
3848 for(i=*ptr-1; i>=0; i--)
3849 basic_filebuf_wchar_dtor(this+i);
3850 operator_delete(ptr);
3851 } else {
3852 basic_filebuf_wchar_dtor(this);
3853 if(flags & 1)
3854 operator_delete(this);
3857 return this;
3860 /* ?is_open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QBE_NXZ */
3861 /* ?is_open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEBA_NXZ */
3862 /* ?is_open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QBE_NXZ */
3863 /* ?is_open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEBA_NXZ */
3864 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_is_open, 4)
3865 bool __thiscall basic_filebuf_wchar_is_open(const basic_filebuf_wchar *this)
3867 TRACE("(%p)\n", this);
3868 return this->file != NULL;
3871 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PB_WHH@Z */
3872 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEB_WHH@Z */
3873 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PBGHH@Z */
3874 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEBGHH@Z */
3875 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_open_wchar, 16)
3876 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_open_wchar(basic_filebuf_wchar *this, const wchar_t *name, int mode, int prot)
3878 FILE *f = NULL;
3880 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
3882 if(basic_filebuf_wchar_is_open(this))
3883 return NULL;
3885 if(!(f = _Fiopen_wchar(name, mode, prot)))
3886 return NULL;
3888 basic_filebuf_wchar__Init(this, f, INITFL_open);
3889 basic_filebuf_wchar__Initcvt_cvt(this, codecvt_wchar_use_facet(IOS_LOCALE(&this->base)));
3890 return this;
3893 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PB_WHH@Z */
3894 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEB_WHH@Z */
3895 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBGHH@Z */
3896 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBGHH@Z */
3897 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_open_wchar, 16)
3898 basic_filebuf_wchar* __thiscall basic_filebuf_short_open_wchar(basic_filebuf_wchar *this, const wchar_t *name, int mode, int prot)
3900 FILE *f = NULL;
3902 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
3904 if(basic_filebuf_wchar_is_open(this))
3905 return NULL;
3907 if(!(f = _Fiopen_wchar(name, mode, prot)))
3908 return NULL;
3910 basic_filebuf_short__Init(this, f, INITFL_open);
3911 basic_filebuf_wchar__Initcvt_cvt(this, codecvt_short_use_facet(IOS_LOCALE(&this->base)));
3912 return this;
3915 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PB_WI@Z */
3916 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEB_WI@Z */
3917 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PBGI@Z */
3918 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEBGI@Z */
3919 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_open_wchar_mode, 12)
3920 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_open_wchar_mode(basic_filebuf_wchar *this, const wchar_t *name, unsigned int mode)
3922 return basic_filebuf_wchar_open_wchar(this, name, mode, SH_DENYNO);
3925 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PB_WI@Z */
3926 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEB_WI@Z */
3927 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBGI@Z */
3928 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBGI@Z */
3929 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_open_wchar_mode, 12)
3930 basic_filebuf_wchar* __thiscall basic_filebuf_short_open_wchar_mode(basic_filebuf_wchar *this, const wchar_t *name, unsigned int mode)
3932 return basic_filebuf_short_open_wchar(this, name, mode, SH_DENYNO);
3935 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PBDHH@Z */
3936 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEBDHH@Z */
3937 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_open, 16)
3938 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_open(basic_filebuf_wchar *this, const char *name, int mode, int prot)
3940 wchar_t nameW[FILENAME_MAX];
3942 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
3944 if(mbstowcs_s(NULL, nameW, FILENAME_MAX, name, FILENAME_MAX-1) != 0)
3945 return NULL;
3946 return basic_filebuf_wchar_open_wchar(this, nameW, mode, prot);
3949 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBDHH@Z */
3950 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBDHH@Z */
3951 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_open, 16)
3952 basic_filebuf_wchar* __thiscall basic_filebuf_short_open(basic_filebuf_wchar *this, const char *name, int mode, int prot)
3954 wchar_t nameW[FILENAME_MAX];
3956 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
3958 if(mbstowcs_s(NULL, nameW, FILENAME_MAX, name, FILENAME_MAX-1) != 0)
3959 return NULL;
3960 return basic_filebuf_short_open_wchar(this, nameW, mode, prot);
3963 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBDF@Z */
3964 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBDF@Z */
3965 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_open_mode_old, 12)
3966 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_open_mode_old(basic_filebuf_wchar *this, const char *name, short mode)
3968 TRACE("(%p %p %d)\n", this, name, mode);
3969 return basic_filebuf_wchar_open(this, name, mode, SH_DENYNO);
3972 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBDH@Z */
3973 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBDH@Z */
3974 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PBDI@Z */
3975 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEBDI@Z */
3976 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_open_mode, 12)
3977 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_open_mode(basic_filebuf_wchar *this, const char *name, unsigned int mode)
3979 return basic_filebuf_wchar_open(this, name, mode, SH_DENYNO);
3982 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBDI@Z */
3983 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBDI@Z */
3984 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_open_mode, 12)
3985 basic_filebuf_wchar* __thiscall basic_filebuf_short_open_mode(basic_filebuf_wchar *this, const char *name, unsigned int mode)
3987 return basic_filebuf_short_open(this, name, mode, SH_DENYNO);
3990 /* ?overflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEGG@Z */
3991 /* ?overflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAGG@Z */
3992 /* ?overflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEGG@Z */
3993 /* ?overflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAGG@Z */
3994 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_overflow, 8)
3995 unsigned short __thiscall basic_filebuf_wchar_overflow(basic_filebuf_wchar *this, unsigned short c)
3997 char buf[8], *dyn_buf, *to_next;
3998 wchar_t ch = c;
3999 const wchar_t *from_next;
4000 int max_size;
4001 unsigned short ret;
4004 TRACE("(%p %d)\n", this, c);
4006 if(!basic_filebuf_wchar_is_open(this))
4007 return WEOF;
4008 if(c == WEOF)
4009 return !c;
4011 if(!this->cvt)
4012 return fputwc(ch, this->file);
4014 from_next = &ch;
4015 do {
4016 ret = codecvt_wchar_out(this->cvt, &this->state, from_next, &ch+1,
4017 &from_next, buf, buf+sizeof(buf), &to_next);
4019 switch(ret) {
4020 case CODECVT_partial:
4021 if(to_next == buf)
4022 break;
4023 /* fall through */
4024 case CODECVT_ok:
4025 if(!fwrite(buf, to_next-buf, 1, this->file))
4026 return WEOF;
4027 if(ret == CODECVT_partial)
4028 continue;
4029 return c;
4030 case CODECVT_noconv:
4031 return fwrite(&ch, sizeof(wchar_t), 1, this->file) ? c : WEOF;
4032 default:
4033 return WEOF;
4036 break;
4037 } while(1);
4039 max_size = codecvt_base_max_length(&this->cvt->base);
4040 dyn_buf = malloc(max_size);
4041 if(!dyn_buf)
4042 return WEOF;
4044 ret = codecvt_wchar_out(this->cvt, &this->state, from_next, &ch+1,
4045 &from_next, dyn_buf, dyn_buf+max_size, &to_next);
4047 switch(ret) {
4048 case CODECVT_ok:
4049 ret = fwrite(dyn_buf, to_next-dyn_buf, 1, this->file);
4050 free(dyn_buf);
4051 return ret ? c : WEOF;
4052 case CODECVT_partial:
4053 ERR("buffer should be big enough to store all output\n");
4054 /* fall through */
4055 default:
4056 free(dyn_buf);
4057 return WEOF;
4061 /* ?pbackfail@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEGG@Z */
4062 /* ?pbackfail@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAGG@Z */
4063 /* ?pbackfail@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEGG@Z */
4064 /* ?pbackfail@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAGG@Z */
4065 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_pbackfail, 8)
4066 unsigned short __thiscall basic_filebuf_wchar_pbackfail(basic_filebuf_wchar *this, unsigned short c)
4068 TRACE("(%p %d)\n", this, c);
4070 if(!basic_filebuf_wchar_is_open(this))
4071 return WEOF;
4073 if(basic_streambuf_wchar_gptr(&this->base)>basic_streambuf_wchar_eback(&this->base)
4074 && (c==WEOF || basic_streambuf_wchar_gptr(&this->base)[-1]==c)) {
4075 basic_streambuf_wchar__Gndec(&this->base);
4076 return c==WEOF ? !c : c;
4077 }else if(c!=WEOF && !this->cvt) {
4078 return ungetwc(c, this->file);
4079 }else if(c!=WEOF && basic_streambuf_wchar_gptr(&this->base)!=&this->putback) {
4080 this->putback = c;
4081 basic_streambuf_wchar_setg(&this->base, &this->putback, &this->putback, &this->putback+1);
4082 return c;
4085 return WEOF;
4088 /* ?uflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEGXZ */
4089 /* ?uflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAGXZ */
4090 /* ?uflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEGXZ */
4091 /* ?uflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAGXZ */
4092 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_uflow, 4)
4093 unsigned short __thiscall basic_filebuf_wchar_uflow(basic_filebuf_wchar *this)
4095 wchar_t ch, *to_next;
4096 char buf[128];
4097 const char *buf_next;
4098 int c, j;
4099 size_t i;
4101 TRACE("(%p)\n", this);
4103 if(!basic_filebuf_wchar_is_open(this))
4104 return WEOF;
4106 if(basic_streambuf_wchar_gptr(&this->base) < basic_streambuf_wchar_egptr(&this->base))
4107 return *basic_streambuf_wchar__Gninc(&this->base);
4109 if(!this->cvt)
4110 return fgetwc(this->file);
4112 buf_next = buf;
4113 for(i=0; i < ARRAY_SIZE(buf); i++) {
4114 if((c = fgetc(this->file)) == EOF)
4115 return WEOF;
4116 buf[i] = c;
4118 switch(codecvt_wchar_in(this->cvt, &this->state, buf_next,
4119 buf+i+1, &buf_next, &ch, &ch+1, &to_next)) {
4120 case CODECVT_partial:
4121 case CODECVT_ok:
4122 if(to_next == &ch)
4123 continue;
4125 for(j = --i; j >= buf_next-buf; j--)
4126 ungetc(buf[j], this->file);
4127 return ch;
4128 case CODECVT_noconv:
4129 if(i+1 < sizeof(wchar_t))
4130 continue;
4132 memcpy(&ch, buf, sizeof(wchar_t));
4133 return ch;
4134 default:
4135 return WEOF;
4139 FIXME("buffer is too small\n");
4140 return WEOF;
4143 /* ?underflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEGXZ */
4144 /* ?underflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAGXZ */
4145 /* ?underflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEGXZ */
4146 /* ?underflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAGXZ */
4147 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_underflow, 4)
4148 unsigned short __thiscall basic_filebuf_wchar_underflow(basic_filebuf_wchar *this)
4150 unsigned short ret;
4152 TRACE("(%p)\n", this);
4154 if(basic_streambuf_wchar_gptr(&this->base) < basic_streambuf_wchar_egptr(&this->base))
4155 return *basic_streambuf_wchar_gptr(&this->base);
4157 ret = call_basic_streambuf_wchar_uflow(&this->base);
4158 if(ret != WEOF)
4159 ret = call_basic_streambuf_wchar_pbackfail(&this->base, ret);
4160 return ret;
4163 /* ?seekoff@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
4164 /* ?seekoff@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@_JW4seekdir@ios_base@2@H@Z */
4165 /* ?seekoff@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
4166 /* ?seekoff@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
4167 /* ?seekoff@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
4168 /* ?seekoff@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
4169 #if STREAMOFF_BITS == 64
4170 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_seekoff, 24)
4171 #else
4172 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_seekoff, 20)
4173 #endif
4174 fpos_mbstatet* __thiscall basic_filebuf_wchar_seekoff(basic_filebuf_wchar *this,
4175 fpos_mbstatet *ret, streamoff off, int way, int mode)
4177 fpos_t pos;
4179 TRACE("(%p %p %s %d %d)\n", this, ret, wine_dbgstr_longlong(off), way, mode);
4181 if(basic_streambuf_wchar_gptr(&this->base) == &this->putback) {
4182 if(way == SEEKDIR_cur)
4183 off -= sizeof(wchar_t);
4185 basic_streambuf_wchar_setg(&this->base, &this->putback, &this->putback+1, &this->putback+1);
4188 if(!basic_filebuf_wchar_is_open(this) || !basic_filebuf_wchar__Endwrite(this)
4189 || fseek(this->file, off, way)) {
4190 ret->off = -1;
4191 ret->pos = 0;
4192 memset(&ret->state, 0, sizeof(ret->state));
4193 return ret;
4196 fgetpos(this->file, &pos);
4197 ret->off = 0;
4198 ret->pos = pos;
4199 ret->state = this->state;
4200 return ret;
4203 /* ?seekpos@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
4204 /* ?seekpos@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
4205 /* ?seekpos@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
4206 /* ?seekpos@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
4207 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_seekpos, 36)
4208 fpos_mbstatet* __thiscall basic_filebuf_wchar_seekpos(basic_filebuf_wchar *this,
4209 fpos_mbstatet *ret, fpos_mbstatet pos, int mode)
4211 fpos_t fpos;
4213 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_mbstatet(&pos), mode);
4215 if(!basic_filebuf_wchar_is_open(this) || !basic_filebuf_wchar__Endwrite(this)
4216 || fseek(this->file, (LONG)pos.pos, SEEK_SET)
4217 || (pos.off && fseek(this->file, pos.off, SEEK_CUR))) {
4218 ret->off = -1;
4219 ret->pos = 0;
4220 memset(&ret->state, 0, sizeof(ret->state));
4221 return ret;
4224 if(basic_streambuf_wchar_gptr(&this->base) == &this->putback)
4225 basic_streambuf_wchar_setg(&this->base, &this->putback, &this->putback+1, &this->putback+1);
4227 fgetpos(this->file, &fpos);
4228 ret->off = 0;
4229 ret->pos = fpos;
4230 ret->state = this->state;
4231 return ret;
4234 /* ?setbuf@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@PA_WH@Z */
4235 /* ?setbuf@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@PEA_W_J@Z */
4236 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
4237 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_setbuf, 16)
4238 #else
4239 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_setbuf, 12)
4240 #endif
4241 basic_streambuf_wchar* __thiscall basic_filebuf_wchar_setbuf(basic_filebuf_wchar *this, wchar_t *buf, streamsize count)
4243 TRACE("(%p %p %s)\n", this, buf, wine_dbgstr_longlong(count));
4245 if(!basic_filebuf_wchar_is_open(this))
4246 return NULL;
4248 if(setvbuf(this->file, (char*)buf, (buf==NULL && count==0) ? _IONBF : _IOFBF, count*sizeof(wchar_t)))
4249 return NULL;
4251 basic_filebuf_wchar__Init(this, this->file, INITFL_open);
4252 return &this->base;
4255 /* ?setbuf@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEPAV?$basic_streambuf@GU?$char_traits@G@std@@@2@PAGH@Z */
4256 /* ?setbuf@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAPEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@PEAG_J@Z */
4257 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
4258 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_setbuf, 16)
4259 #else
4260 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_setbuf, 12)
4261 #endif
4262 basic_streambuf_wchar* __thiscall basic_filebuf_short_setbuf(basic_filebuf_wchar *this, wchar_t *buf, streamsize count)
4264 TRACE("(%p %p %s)\n", this, buf, wine_dbgstr_longlong(count));
4266 if(!basic_filebuf_wchar_is_open(this))
4267 return NULL;
4269 if(setvbuf(this->file, (char*)buf, (buf==NULL && count==0) ? _IONBF : _IOFBF, count*sizeof(wchar_t)))
4270 return NULL;
4272 basic_filebuf_short__Init(this, this->file, INITFL_open);
4273 return &this->base;
4276 /* ?sync@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEHXZ */
4277 /* ?sync@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAHXZ */
4278 /* ?sync@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEHXZ */
4279 /* ?sync@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAHXZ */
4280 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_sync, 4)
4281 int __thiscall basic_filebuf_wchar_sync(basic_filebuf_wchar *this)
4283 TRACE("(%p)\n", this);
4285 if(!basic_filebuf_wchar_is_open(this))
4286 return 0;
4288 if(call_basic_streambuf_wchar_overflow(&this->base, WEOF) == WEOF)
4289 return 0;
4290 return fflush(this->file);
4293 /* ?imbue@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEXABVlocale@2@@Z */
4294 /* ?imbue@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAXAEBVlocale@2@@Z */
4295 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_imbue, 8)
4296 void __thiscall basic_filebuf_wchar_imbue(basic_filebuf_wchar *this, const locale *loc)
4298 TRACE("(%p %p)\n", this, loc);
4299 basic_filebuf_wchar__Initcvt_cvt(this, codecvt_wchar_use_facet(loc));
4302 /* ?imbue@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEXABVlocale@2@@Z */
4303 /* ?imbue@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAXAEBVlocale@2@@Z */
4304 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_imbue, 8)
4305 void __thiscall basic_filebuf_short_imbue(basic_filebuf_wchar *this, const locale *loc)
4307 TRACE("(%p %p)\n", this, loc);
4308 basic_filebuf_wchar__Initcvt_cvt(this, codecvt_short_use_facet(loc));
4311 /* ?_Getstate@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEHH@Z */
4312 /* ?_Getstate@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAHH@Z */
4313 /* ?_Mode@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEHH@Z */
4314 /* ?_Mode@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAHH@Z */
4315 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char__Getstate, 8)
4316 int __thiscall basic_stringbuf_char__Getstate(basic_stringbuf_char *this, IOSB_openmode mode)
4318 int state = 0;
4320 if(!(mode & OPENMODE_in))
4321 state |= STRINGBUF_no_read;
4323 if(!(mode & OPENMODE_out))
4324 state |= STRINGBUF_no_write;
4326 if(mode & OPENMODE_ate)
4327 state |= STRINGBUF_at_end;
4329 if(mode & OPENMODE_app)
4330 state |= STRINGBUF_append;
4332 return state;
4335 /* ?_Init@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXPBDIH@Z */
4336 /* ?_Init@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAXPEBD_KH@Z */
4337 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char__Init, 16)
4338 void __thiscall basic_stringbuf_char__Init(basic_stringbuf_char *this, const char *str, size_t count, int state)
4340 TRACE("(%p, %p, %Iu, %d)\n", this, str, count, state);
4342 basic_streambuf_char__Init_empty(&this->base);
4344 this->state = state;
4345 this->seekhigh = NULL;
4347 if(count && str) {
4348 char *buf = operator_new(count);
4350 memcpy(buf, str, count);
4351 this->seekhigh = buf + count;
4353 this->state |= STRINGBUF_allocated;
4355 if(!(state & STRINGBUF_no_read))
4356 basic_streambuf_char_setg(&this->base, buf, buf, buf + count);
4358 if(!(state & STRINGBUF_no_write)) {
4359 basic_streambuf_char_setp_next(&this->base, buf, (state & STRINGBUF_at_end) ? buf + count : buf, buf + count);
4361 if(!basic_streambuf_char_gptr(&this->base))
4362 basic_streambuf_char_setg(&this->base, buf, 0, buf);
4367 /* ??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 */
4368 /* ??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 */
4369 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_ctor_str, 12)
4370 basic_stringbuf_char* __thiscall basic_stringbuf_char_ctor_str(basic_stringbuf_char *this,
4371 const basic_string_char *str, IOSB_openmode mode)
4373 TRACE("(%p %p %d)\n", this, str, mode);
4375 basic_streambuf_char_ctor(&this->base);
4376 this->base.vtable = &basic_stringbuf_char_vtable;
4378 basic_stringbuf_char__Init(this, MSVCP_basic_string_char_c_str(str),
4379 str->size, basic_stringbuf_char__Getstate(this, mode));
4380 return this;
4383 /* ??0?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z */
4384 /* ??0?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z */
4385 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_ctor_mode, 8)
4386 basic_stringbuf_char* __thiscall basic_stringbuf_char_ctor_mode(
4387 basic_stringbuf_char *this, IOSB_openmode mode)
4389 TRACE("(%p %d)\n", this, mode);
4391 basic_streambuf_char_ctor(&this->base);
4392 this->base.vtable = &basic_stringbuf_char_vtable;
4394 basic_stringbuf_char__Init(this, NULL, 0, basic_stringbuf_char__Getstate(this, mode));
4395 return this;
4398 /* ??_F?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
4399 /* ??_F?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
4400 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_ctor, 4)
4401 basic_stringbuf_char* __thiscall basic_stringbuf_char_ctor(basic_stringbuf_char *this)
4403 return basic_stringbuf_char_ctor_mode(this, OPENMODE_in|OPENMODE_out);
4406 /* ?_Tidy@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXXZ */
4407 /* ?_Tidy@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAXXZ */
4408 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char__Tidy, 4)
4409 void __thiscall basic_stringbuf_char__Tidy(basic_stringbuf_char *this)
4411 TRACE("(%p)\n", this);
4413 if(this->state & STRINGBUF_allocated) {
4414 operator_delete(basic_streambuf_char_eback(&this->base));
4415 this->seekhigh = NULL;
4416 this->state &= ~STRINGBUF_allocated;
4419 basic_streambuf_char__Init_empty(&this->base);
4422 /* ??1?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ */
4423 /* ??1?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ */
4424 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_dtor, 4)
4425 void __thiscall basic_stringbuf_char_dtor(basic_stringbuf_char *this)
4427 TRACE("(%p)\n", this);
4429 basic_stringbuf_char__Tidy(this);
4430 basic_streambuf_char_dtor(&this->base);
4433 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_vector_dtor, 8)
4434 basic_stringbuf_char* __thiscall basic_stringbuf_char_vector_dtor(basic_stringbuf_char *this, unsigned int flags)
4436 TRACE("(%p %x)\n", this, flags);
4438 if(flags & 2) {
4439 /* we have an array, with the number of elements stored before the first object */
4440 INT_PTR i, *ptr = (INT_PTR *) this - 1;
4442 for (i = *ptr - 1; i >= 0; i--)
4443 basic_stringbuf_char_dtor(this+i);
4445 operator_delete(ptr);
4446 }else {
4447 basic_stringbuf_char_dtor(this);
4449 if(flags & 1)
4450 operator_delete(this);
4453 return this;
4456 /* ?overflow@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAEHH@Z */
4457 /* ?overflow@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAAHH@Z */
4458 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_overflow, 8)
4459 int __thiscall basic_stringbuf_char_overflow(basic_stringbuf_char *this, int meta)
4461 size_t oldsize, size;
4462 char *ptr, *buf;
4464 TRACE("(%p %x)\n", this, meta);
4466 if(meta == EOF)
4467 return !EOF;
4468 if(this->state & STRINGBUF_no_write)
4469 return EOF;
4471 ptr = basic_streambuf_char_pptr(&this->base);
4472 if((this->state&STRINGBUF_append) && ptr<this->seekhigh)
4473 basic_streambuf_char_setp_next(&this->base, basic_streambuf_char_pbase(&this->base),
4474 this->seekhigh, basic_streambuf_char_epptr(&this->base));
4476 if(ptr && ptr<basic_streambuf_char_epptr(&this->base))
4477 return (unsigned char)(*basic_streambuf_char__Pninc(&this->base) = meta);
4479 oldsize = (ptr ? basic_streambuf_char_epptr(&this->base)-basic_streambuf_char_eback(&this->base): 0);
4480 size = oldsize|0xf;
4481 size += size/2;
4482 buf = operator_new(size);
4484 if(!oldsize) {
4485 this->seekhigh = buf;
4486 basic_streambuf_char_setp(&this->base, buf, buf+size);
4487 if(this->state & STRINGBUF_no_read)
4488 basic_streambuf_char_setg(&this->base, buf, NULL, buf);
4489 else
4490 basic_streambuf_char_setg(&this->base, buf, buf, buf+1);
4492 this->state |= STRINGBUF_allocated;
4493 }else {
4494 ptr = basic_streambuf_char_eback(&this->base);
4495 memcpy(buf, ptr, oldsize);
4497 this->seekhigh = buf+(this->seekhigh-ptr);
4498 basic_streambuf_char_setp_next(&this->base, buf,
4499 buf+(basic_streambuf_char_pptr(&this->base)-ptr), buf+size);
4500 if(this->state & STRINGBUF_no_read)
4501 basic_streambuf_char_setg(&this->base, buf, NULL, buf);
4502 else
4503 basic_streambuf_char_setg(&this->base, buf,
4504 buf+(basic_streambuf_char_gptr(&this->base)-ptr),
4505 basic_streambuf_char_pptr(&this->base)+1);
4507 operator_delete(ptr);
4510 return (unsigned char)(*basic_streambuf_char__Pninc(&this->base) = meta);
4513 /* ?pbackfail@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAEHH@Z */
4514 /* ?pbackfail@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAAHH@Z */
4515 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_pbackfail, 8)
4516 int __thiscall basic_stringbuf_char_pbackfail(basic_stringbuf_char *this, int c)
4518 char *cur;
4520 TRACE("(%p %x)\n", this, c);
4522 cur = basic_streambuf_char_gptr(&this->base);
4523 if(!cur || cur==basic_streambuf_char_eback(&this->base)
4524 || (c!=EOF && c!=cur[-1] && this->state&STRINGBUF_no_write))
4525 return EOF;
4527 if(c != EOF)
4528 cur[-1] = c;
4529 basic_streambuf_char_gbump(&this->base, -1);
4530 return c==EOF ? !EOF : c;
4533 /* ?underflow@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAEHXZ */
4534 /* ?underflow@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAAHXZ */
4535 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_underflow, 4)
4536 int __thiscall basic_stringbuf_char_underflow(basic_stringbuf_char *this)
4538 char *ptr, *cur;
4540 TRACE("(%p)\n", this);
4542 cur = basic_streambuf_char_gptr(&this->base);
4543 if(!cur || this->state&STRINGBUF_no_read)
4544 return EOF;
4546 ptr = basic_streambuf_char_pptr(&this->base);
4547 if(this->seekhigh < ptr)
4548 this->seekhigh = ptr;
4550 ptr = basic_streambuf_char_egptr(&this->base);
4551 if(this->seekhigh > ptr)
4552 basic_streambuf_char_setg(&this->base, basic_streambuf_char_eback(&this->base), cur, this->seekhigh);
4554 if(cur < this->seekhigh)
4555 return (unsigned char)*cur;
4556 return EOF;
4559 /* ?seekoff@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
4560 /* ?seekoff@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAA?AV?$fpos@H@2@_JW4seekdir@ios_base@2@H@Z */
4561 /* ?seekoff@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAE?AV?$fpos@H@2@JHH@Z */
4562 /* ?seekoff@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
4563 #if STREAMOFF_BITS == 64
4564 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_seekoff, 24)
4565 #else
4566 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_seekoff, 20)
4567 #endif
4568 fpos_mbstatet* __thiscall basic_stringbuf_char_seekoff(basic_stringbuf_char *this,
4569 fpos_mbstatet *ret, streamoff off, int way, int mode)
4571 char *beg, *cur_r, *cur_w;
4573 TRACE("(%p %p %s %d %d)\n", this, ret, wine_dbgstr_longlong(off), way, mode);
4575 cur_w = basic_streambuf_char_pptr(&this->base);
4576 if(cur_w > this->seekhigh)
4577 this->seekhigh = cur_w;
4579 ret->off = 0;
4580 ret->pos = 0;
4581 memset(&ret->state, 0, sizeof(ret->state));
4583 beg = basic_streambuf_char_eback(&this->base);
4584 cur_r = basic_streambuf_char_gptr(&this->base);
4585 if((mode & OPENMODE_in) && cur_r) {
4586 if(way==SEEKDIR_cur && !(mode & OPENMODE_out))
4587 off += cur_r-beg;
4588 else if(way == SEEKDIR_end)
4589 off += this->seekhigh-beg;
4590 else if(way != SEEKDIR_beg)
4591 off = -1;
4593 if(off<0 || off>this->seekhigh-beg) {
4594 off = -1;
4595 }else {
4596 basic_streambuf_char_gbump(&this->base, beg-cur_r+off);
4597 if((mode & OPENMODE_out) && cur_w) {
4598 basic_streambuf_char_setp_next(&this->base, beg,
4599 basic_streambuf_char_gptr(&this->base),
4600 basic_streambuf_char_epptr(&this->base));
4603 }else if((mode & OPENMODE_out) && cur_w) {
4604 if(way == SEEKDIR_cur)
4605 off += cur_w-beg;
4606 else if(way == SEEKDIR_end)
4607 off += this->seekhigh-beg;
4608 else if(way != SEEKDIR_beg)
4609 off = -1;
4611 if(off<0 || off>this->seekhigh-beg)
4612 off = -1;
4613 else
4614 basic_streambuf_char_pbump(&this->base, beg-cur_w+off);
4615 }else {
4616 off = -1;
4619 ret->off = off;
4620 return ret;
4623 /* ?seekpos@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
4624 /* ?seekpos@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
4625 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_seekpos, 36)
4626 fpos_mbstatet* __thiscall basic_stringbuf_char_seekpos(basic_stringbuf_char *this,
4627 fpos_mbstatet *ret, fpos_mbstatet pos, int mode)
4629 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_mbstatet(&pos), mode);
4631 if(pos.off==-1 && pos.pos==0 && MBSTATET_TO_INT(&pos.state)==0) {
4632 *ret = pos;
4633 return ret;
4636 return basic_stringbuf_char_seekoff(this, ret, pos.pos+pos.off, SEEKDIR_beg, mode);
4639 /* ?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 */
4640 /* ?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 */
4641 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_str_set, 8)
4642 void __thiscall basic_stringbuf_char_str_set(basic_stringbuf_char *this, const basic_string_char *str)
4644 TRACE("(%p %p)\n", this, str);
4646 basic_stringbuf_char__Tidy(this);
4647 basic_stringbuf_char__Init(this, MSVCP_basic_string_char_c_str(str), str->size, this->state);
4650 /* ?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 */
4651 /* ?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 */
4652 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_str_get, 8)
4653 basic_string_char* __thiscall basic_stringbuf_char_str_get(const basic_stringbuf_char *this, basic_string_char *ret)
4655 char *ptr;
4657 TRACE("(%p)\n", this);
4659 if(!(this->state & STRINGBUF_no_write) && basic_streambuf_char_pptr(&this->base)) {
4660 char *pptr;
4662 ptr = basic_streambuf_char_pbase(&this->base);
4663 pptr = basic_streambuf_char_pptr(&this->base);
4665 return MSVCP_basic_string_char_ctor_cstr_len(ret, ptr, (this->seekhigh < pptr ? pptr : this->seekhigh) - ptr);
4668 if(!(this->state & STRINGBUF_no_read) && basic_streambuf_char_gptr(&this->base)) {
4669 ptr = basic_streambuf_char_eback(&this->base);
4670 return MSVCP_basic_string_char_ctor_cstr_len(ret, ptr, basic_streambuf_char_egptr(&this->base) - ptr);
4673 return MSVCP_basic_string_char_ctor(ret);
4676 /* ?_Getstate@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@AAEHH@Z */
4677 /* ?_Getstate@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@AEAAHH@Z */
4678 /* ?_Getstate@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEHH@Z */
4679 /* ?_Getstate@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAHH@Z */
4680 /* ?_Mode@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEHH@Z */
4681 /* ?_Mode@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAHH@Z */
4682 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar__Getstate, 8)
4683 int __thiscall basic_stringbuf_wchar__Getstate(basic_stringbuf_wchar *this, IOSB_openmode mode)
4685 int state = 0;
4687 if(!(mode & OPENMODE_in))
4688 state |= STRINGBUF_no_read;
4690 if(!(mode & OPENMODE_out))
4691 state |= STRINGBUF_no_write;
4693 if(mode & OPENMODE_ate)
4694 state |= STRINGBUF_at_end;
4696 if(mode & OPENMODE_app)
4697 state |= STRINGBUF_append;
4699 return state;
4702 /* ?_Init@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEXPB_WIH@Z */
4703 /* ?_Init@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAXPEB_W_KH@Z */
4704 /* ?_Init@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEXPBGIH@Z */
4705 /* ?_Init@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAXPEBG_KH@Z */
4706 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar__Init, 16)
4707 void __thiscall basic_stringbuf_wchar__Init(basic_stringbuf_wchar *this, const wchar_t *str, size_t count, int state)
4709 TRACE("(%p, %p, %Iu, %d)\n", this, str, count, state);
4711 basic_streambuf_wchar__Init_empty(&this->base);
4713 this->state = state;
4714 this->seekhigh = NULL;
4716 if(count && str) {
4717 wchar_t *buf = operator_new(count*sizeof(wchar_t));
4719 memcpy(buf, str, count*sizeof(wchar_t));
4720 this->seekhigh = buf + count;
4722 this->state |= STRINGBUF_allocated;
4724 if(!(state & STRINGBUF_no_read))
4725 basic_streambuf_wchar_setg(&this->base, buf, buf, buf + count);
4727 if(!(state & STRINGBUF_no_write)) {
4728 basic_streambuf_wchar_setp_next(&this->base, buf, (state & STRINGBUF_at_end) ? buf + count : buf, buf + count);
4730 if(!basic_streambuf_wchar_gptr(&this->base))
4731 basic_streambuf_wchar_setg(&this->base, buf, 0, buf);
4736 /* ??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 */
4737 /* ??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 */
4738 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_ctor_str, 12)
4739 basic_stringbuf_wchar* __thiscall basic_stringbuf_wchar_ctor_str(basic_stringbuf_wchar *this,
4740 const basic_string_wchar *str, IOSB_openmode mode)
4742 TRACE("(%p %p %d)\n", this, str, mode);
4744 basic_streambuf_wchar_ctor(&this->base);
4745 this->base.vtable = &basic_stringbuf_wchar_vtable;
4747 basic_stringbuf_wchar__Init(this, MSVCP_basic_string_wchar_c_str(str),
4748 str->size, basic_stringbuf_wchar__Getstate(this, mode));
4749 return this;
4752 /* ??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 */
4753 /* ??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 */
4754 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_ctor_str, 12)
4755 basic_stringbuf_wchar* __thiscall basic_stringbuf_short_ctor_str(basic_stringbuf_wchar *this,
4756 const basic_string_wchar *str, IOSB_openmode mode)
4758 basic_stringbuf_wchar_ctor_str(this, str, mode);
4759 this->base.vtable = &basic_stringbuf_short_vtable;
4760 return this;
4763 /* ??0?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@H@Z */
4764 /* ??0?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@H@Z */
4765 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_ctor_mode, 8)
4766 basic_stringbuf_wchar* __thiscall basic_stringbuf_wchar_ctor_mode(
4767 basic_stringbuf_wchar *this, IOSB_openmode mode)
4769 TRACE("(%p %d)\n", this, mode);
4771 basic_streambuf_wchar_ctor(&this->base);
4772 this->base.vtable = &basic_stringbuf_wchar_vtable;
4774 basic_stringbuf_wchar__Init(this, NULL, 0, basic_stringbuf_wchar__Getstate(this, mode));
4775 return this;
4778 /* ??0?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@H@Z */
4779 /* ??0?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@H@Z */
4780 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_ctor_mode, 8)
4781 basic_stringbuf_wchar* __thiscall basic_stringbuf_short_ctor_mode(
4782 basic_stringbuf_wchar *this, IOSB_openmode mode)
4784 basic_stringbuf_wchar_ctor_mode(this, mode);
4785 this->base.vtable = &basic_stringbuf_short_vtable;
4786 return this;
4789 /* ??_F?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
4790 /* ??_F?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
4791 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_ctor, 4)
4792 basic_stringbuf_wchar* __thiscall basic_stringbuf_wchar_ctor(basic_stringbuf_wchar *this)
4794 return basic_stringbuf_wchar_ctor_mode(this, OPENMODE_in|OPENMODE_out);
4797 /* ??_F?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
4798 /* ??_F?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
4799 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_ctor, 4)
4800 basic_stringbuf_wchar* __thiscall basic_stringbuf_short_ctor(basic_stringbuf_wchar *this)
4802 return basic_stringbuf_short_ctor_mode(this, OPENMODE_in|OPENMODE_out);
4805 /* ?_Tidy@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEXXZ */
4806 /* ?_Tidy@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAXXZ */
4807 /* ?_Tidy@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEXXZ */
4808 /* ?_Tidy@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAXXZ */
4809 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar__Tidy, 4)
4810 void __thiscall basic_stringbuf_wchar__Tidy(basic_stringbuf_wchar *this)
4812 TRACE("(%p)\n", this);
4814 if(this->state & STRINGBUF_allocated) {
4815 operator_delete(basic_streambuf_wchar_eback(&this->base));
4816 this->seekhigh = NULL;
4817 this->state &= ~STRINGBUF_allocated;
4820 basic_streambuf_wchar__Init_empty(&this->base);
4823 /* ??1?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UAE@XZ */
4824 /* ??1?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UEAA@XZ */
4825 /* ??1?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UAE@XZ */
4826 /* ??1?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UEAA@XZ */
4827 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_dtor, 4)
4828 void __thiscall basic_stringbuf_wchar_dtor(basic_stringbuf_wchar *this)
4830 TRACE("(%p)\n", this);
4832 basic_stringbuf_wchar__Tidy(this);
4833 basic_streambuf_wchar_dtor(&this->base);
4836 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_vector_dtor, 8)
4837 basic_stringbuf_wchar* __thiscall basic_stringbuf_wchar_vector_dtor(basic_stringbuf_wchar *this, unsigned int flags)
4839 TRACE("(%p %x)\n", this, flags);
4841 if(flags & 2) {
4842 /* we have an array, with the number of elements stored before the first object */
4843 INT_PTR i, *ptr = (INT_PTR *) this - 1;
4845 for (i = *ptr - 1; i >= 0; i--)
4846 basic_stringbuf_wchar_dtor(this+i);
4848 operator_delete(ptr);
4849 }else {
4850 basic_stringbuf_wchar_dtor(this);
4852 if(flags & 1)
4853 operator_delete(this);
4856 return this;
4859 /* ?overflow@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAEGG@Z */
4860 /* ?overflow@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAAGG@Z */
4861 /* ?overflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAEGG@Z */
4862 /* ?overflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAAGG@Z */
4863 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_overflow, 8)
4864 unsigned short __thiscall basic_stringbuf_wchar_overflow(basic_stringbuf_wchar *this, unsigned short meta)
4866 size_t oldsize, size;
4867 wchar_t *ptr, *buf;
4869 TRACE("(%p %x)\n", this, meta);
4871 if(meta == WEOF)
4872 return !WEOF;
4873 if(this->state & STRINGBUF_no_write)
4874 return WEOF;
4876 ptr = basic_streambuf_wchar_pptr(&this->base);
4877 if((this->state&STRINGBUF_append) && ptr<this->seekhigh)
4878 basic_streambuf_wchar_setp_next(&this->base, basic_streambuf_wchar_pbase(&this->base),
4879 this->seekhigh, basic_streambuf_wchar_epptr(&this->base));
4881 if(ptr && ptr<basic_streambuf_wchar_epptr(&this->base))
4882 return (*basic_streambuf_wchar__Pninc(&this->base) = meta);
4884 oldsize = (ptr ? basic_streambuf_wchar_epptr(&this->base)-basic_streambuf_wchar_eback(&this->base): 0);
4885 size = oldsize|0xf;
4886 size += size/2;
4887 buf = operator_new(size*sizeof(wchar_t));
4889 if(!oldsize) {
4890 this->seekhigh = buf;
4891 basic_streambuf_wchar_setp(&this->base, buf, buf+size);
4892 if(this->state & STRINGBUF_no_read)
4893 basic_streambuf_wchar_setg(&this->base, buf, NULL, buf);
4894 else
4895 basic_streambuf_wchar_setg(&this->base, buf, buf, buf+1);
4897 this->state |= STRINGBUF_allocated;
4898 }else {
4899 ptr = basic_streambuf_wchar_eback(&this->base);
4900 memcpy(buf, ptr, oldsize*sizeof(wchar_t));
4902 this->seekhigh = buf+(this->seekhigh-ptr);
4903 basic_streambuf_wchar_setp_next(&this->base, buf,
4904 buf+(basic_streambuf_wchar_pptr(&this->base)-ptr), buf+size);
4905 if(this->state & STRINGBUF_no_read)
4906 basic_streambuf_wchar_setg(&this->base, buf, NULL, buf);
4907 else
4908 basic_streambuf_wchar_setg(&this->base, buf,
4909 buf+(basic_streambuf_wchar_gptr(&this->base)-ptr),
4910 basic_streambuf_wchar_pptr(&this->base)+1);
4912 operator_delete(ptr);
4915 return (*basic_streambuf_wchar__Pninc(&this->base) = meta);
4918 /* ?pbackfail@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAEGG@Z */
4919 /* ?pbackfail@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAAGG@Z */
4920 /* ?pbackfail@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAEGG@Z */
4921 /* ?pbackfail@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAAGG@Z */
4922 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_pbackfail, 8)
4923 unsigned short __thiscall basic_stringbuf_wchar_pbackfail(basic_stringbuf_wchar *this, unsigned short c)
4925 wchar_t *cur;
4927 TRACE("(%p %x)\n", this, c);
4929 cur = basic_streambuf_wchar_gptr(&this->base);
4930 if(!cur || cur==basic_streambuf_wchar_eback(&this->base)
4931 || (c!=WEOF && c!=cur[-1] && this->state&STRINGBUF_no_write))
4932 return WEOF;
4934 if(c != WEOF)
4935 cur[-1] = c;
4936 basic_streambuf_wchar_gbump(&this->base, -1);
4937 return c==WEOF ? !WEOF : c;
4940 /* ?underflow@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAEGXZ */
4941 /* ?underflow@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAAGXZ */
4942 /* ?underflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAEGXZ */
4943 /* ?underflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAAGXZ */
4944 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_underflow, 4)
4945 unsigned short __thiscall basic_stringbuf_wchar_underflow(basic_stringbuf_wchar *this)
4947 wchar_t *ptr, *cur;
4949 TRACE("(%p)\n", this);
4951 cur = basic_streambuf_wchar_gptr(&this->base);
4952 if(!cur || this->state&STRINGBUF_no_read)
4953 return WEOF;
4955 ptr = basic_streambuf_wchar_pptr(&this->base);
4956 if(this->seekhigh < ptr)
4957 this->seekhigh = ptr;
4959 ptr = basic_streambuf_wchar_egptr(&this->base);
4960 if(this->seekhigh > ptr)
4961 basic_streambuf_wchar_setg(&this->base, basic_streambuf_wchar_eback(&this->base), cur, this->seekhigh);
4963 if(cur < this->seekhigh)
4964 return *cur;
4965 return WEOF;
4968 /* ?seekoff@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
4969 /* ?seekoff@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAA?AV?$fpos@H@2@_JW4seekdir@ios_base@2@H@Z */
4970 /* ?seekoff@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAE?AV?$fpos@H@2@JHH@Z */
4971 /* ?seekoff@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
4972 /* ?seekoff@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAE?AV?$fpos@H@2@JHH@Z */
4973 /* ?seekoff@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
4974 #if STREAMOFF_BITS == 64
4975 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_seekoff, 24)
4976 #else
4977 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_seekoff, 20)
4978 #endif
4979 fpos_mbstatet* __thiscall basic_stringbuf_wchar_seekoff(basic_stringbuf_wchar *this,
4980 fpos_mbstatet *ret, streamoff off, int way, int mode)
4982 wchar_t *beg, *cur_r, *cur_w;
4984 TRACE("(%p %p %s %d %d)\n", this, ret, wine_dbgstr_longlong(off), way, mode);
4986 cur_w = basic_streambuf_wchar_pptr(&this->base);
4987 if(cur_w > this->seekhigh)
4988 this->seekhigh = cur_w;
4990 ret->off = 0;
4991 ret->pos = 0;
4992 memset(&ret->state, 0, sizeof(ret->state));
4994 beg = basic_streambuf_wchar_eback(&this->base);
4995 cur_r = basic_streambuf_wchar_gptr(&this->base);
4996 if((mode & OPENMODE_in) && cur_r) {
4997 if(way==SEEKDIR_cur && !(mode & OPENMODE_out))
4998 off += cur_r-beg;
4999 else if(way == SEEKDIR_end)
5000 off += this->seekhigh-beg;
5001 else if(way != SEEKDIR_beg)
5002 off = -1;
5004 if(off<0 || off>this->seekhigh-beg) {
5005 off = -1;
5006 }else {
5007 basic_streambuf_wchar_gbump(&this->base, beg-cur_r+off);
5008 if((mode & OPENMODE_out) && cur_w) {
5009 basic_streambuf_wchar_setp_next(&this->base, beg,
5010 basic_streambuf_wchar_gptr(&this->base),
5011 basic_streambuf_wchar_epptr(&this->base));
5014 }else if((mode & OPENMODE_out) && cur_w) {
5015 if(way == SEEKDIR_cur)
5016 off += cur_w-beg;
5017 else if(way == SEEKDIR_end)
5018 off += this->seekhigh-beg;
5019 else if(way != SEEKDIR_beg)
5020 off = -1;
5022 if(off<0 || off>this->seekhigh-beg)
5023 off = -1;
5024 else
5025 basic_streambuf_wchar_pbump(&this->base, beg-cur_w+off);
5026 }else {
5027 off = -1;
5030 ret->off = off;
5031 return ret;
5034 /* ?seekpos@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
5035 /* ?seekpos@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
5036 /* ?seekpos@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
5037 /* ?seekpos@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
5038 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_seekpos, 36)
5039 fpos_mbstatet* __thiscall basic_stringbuf_wchar_seekpos(basic_stringbuf_wchar *this,
5040 fpos_mbstatet *ret, fpos_mbstatet pos, int mode)
5042 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_mbstatet(&pos), mode);
5044 if(pos.off==-1 && pos.pos==0 && MBSTATET_TO_INT(&pos.state)==0) {
5045 *ret = pos;
5046 return ret;
5049 return basic_stringbuf_wchar_seekoff(this, ret, pos.pos+pos.off, SEEKDIR_beg, mode);
5052 /* ?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 */
5053 /* ?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 */
5054 /* ?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 */
5055 /* ?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 */
5056 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_str_set, 8)
5057 void __thiscall basic_stringbuf_wchar_str_set(basic_stringbuf_wchar *this, const basic_string_wchar *str)
5059 TRACE("(%p %p)\n", this, str);
5061 basic_stringbuf_wchar__Tidy(this);
5062 basic_stringbuf_wchar__Init(this, MSVCP_basic_string_wchar_c_str(str), str->size, this->state);
5065 /* ?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 */
5066 /* ?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 */
5067 /* ?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 */
5068 /* ?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 */
5069 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_str_get, 8)
5070 basic_string_wchar* __thiscall basic_stringbuf_wchar_str_get(const basic_stringbuf_wchar *this, basic_string_wchar *ret)
5072 wchar_t *ptr;
5074 TRACE("(%p)\n", this);
5076 if(!(this->state & STRINGBUF_no_write) && basic_streambuf_wchar_pptr(&this->base)) {
5077 wchar_t *pptr;
5079 ptr = basic_streambuf_wchar_pbase(&this->base);
5080 pptr = basic_streambuf_wchar_pptr(&this->base);
5082 return MSVCP_basic_string_wchar_ctor_cstr_len(ret, ptr, (this->seekhigh < pptr ? pptr : this->seekhigh) - ptr);
5085 if(!(this->state & STRINGBUF_no_read) && basic_streambuf_wchar_gptr(&this->base)) {
5086 ptr = basic_streambuf_wchar_eback(&this->base);
5087 return MSVCP_basic_string_wchar_ctor_cstr_len(ret, ptr, basic_streambuf_wchar_egptr(&this->base) - ptr);
5090 return MSVCP_basic_string_wchar_ctor(ret);
5093 /* ??0ios_base@std@@IAE@XZ */
5094 /* ??0ios_base@std@@IEAA@XZ */
5095 DEFINE_THISCALL_WRAPPER(ios_base_ctor, 4)
5096 ios_base* __thiscall ios_base_ctor(ios_base *this)
5098 TRACE("(%p)\n", this);
5099 this->vtable = &ios_base_vtable;
5100 return this;
5103 /* ??0ios_base@std@@QAE@ABV01@@Z */
5104 /* ??0ios_base@std@@QEAA@AEBV01@@Z */
5105 DEFINE_THISCALL_WRAPPER(ios_base_copy_ctor, 8)
5106 ios_base* __thiscall ios_base_copy_ctor(ios_base *this, const ios_base *copy)
5108 TRACE("(%p %p)\n", this, copy);
5109 *this = *copy;
5110 this->vtable = &ios_base_vtable;
5111 return this;
5114 /* ?_Callfns@ios_base@std@@AAEXW4event@12@@Z */
5115 /* ?_Callfns@ios_base@std@@AEAAXW4event@12@@Z */
5116 DEFINE_THISCALL_WRAPPER(ios_base_Callfns, 8)
5117 void __thiscall ios_base_Callfns(ios_base *this, IOS_BASE_event event)
5119 IOS_BASE_fnarray *cur;
5121 TRACE("(%p %x)\n", this, event);
5123 for(cur=this->calls; cur; cur=cur->next)
5124 cur->event_handler(event, this, cur->index);
5127 /* ?_Tidy@ios_base@std@@AAAXXZ */
5128 /* ?_Tidy@ios_base@std@@AAEXXZ */
5129 /* ?_Tidy@ios_base@std@@AEAAXXZ */
5130 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
5131 void __cdecl ios_base_Tidy(ios_base *this)
5132 #else
5133 DEFINE_THISCALL_WRAPPER(ios_base_Tidy, 4)
5134 void __thiscall ios_base_Tidy(ios_base *this)
5135 #endif
5137 IOS_BASE_iosarray *arr_cur, *arr_next;
5138 IOS_BASE_fnarray *event_cur, *event_next;
5140 TRACE("(%p)\n", this);
5142 ios_base_Callfns(this, EVENT_erase_event);
5144 for(arr_cur=this->arr; arr_cur; arr_cur=arr_next) {
5145 arr_next = arr_cur->next;
5146 operator_delete(arr_cur);
5148 this->arr = NULL;
5150 for(event_cur=this->calls; event_cur; event_cur=event_next) {
5151 event_next = event_cur->next;
5152 operator_delete(event_cur);
5154 this->calls = NULL;
5157 /* ?_Ios_base_dtor@ios_base@std@@CAXPAV12@@Z */
5158 /* ?_Ios_base_dtor@ios_base@std@@CAXPEAV12@@Z */
5159 void __cdecl ios_base_Ios_base_dtor(ios_base *obj)
5161 TRACE("(%p)\n", obj);
5162 locale_dtor(IOS_LOCALE(obj));
5163 #if _MSVCP_VER >= 70
5164 operator_delete(obj->loc);
5165 #endif
5166 ios_base_Tidy(obj);
5169 /* ??1ios_base@std@@UAE@XZ */
5170 /* ??1ios_base@std@@UEAA@XZ */
5171 DEFINE_THISCALL_WRAPPER(ios_base_dtor, 4)
5172 void __thiscall ios_base_dtor(ios_base *this)
5174 ios_base_Ios_base_dtor(this);
5177 DEFINE_THISCALL_WRAPPER(ios_base_vector_dtor, 8)
5178 ios_base* __thiscall ios_base_vector_dtor(ios_base *this, unsigned int flags)
5180 TRACE("(%p %x)\n", this, flags);
5181 if(flags & 2) {
5182 /* we have an array, with the number of elements stored before the first object */
5183 INT_PTR i, *ptr = (INT_PTR *)this-1;
5185 for(i=*ptr-1; i>=0; i--)
5186 ios_base_dtor(this+i);
5187 operator_delete(ptr);
5188 } else {
5189 ios_base_dtor(this);
5190 if(flags & 1)
5191 operator_delete(this);
5194 return this;
5197 DEFINE_THISCALL_WRAPPER(iosb_vector_dtor, 8)
5198 void* __thiscall iosb_vector_dtor(void *this, unsigned int flags)
5200 TRACE("(%p %x)\n", this, flags);
5201 if(flags & 2) {
5202 INT_PTR *ptr = (INT_PTR *)this-1;
5203 operator_delete(ptr);
5204 } else {
5205 if(flags & 1)
5206 operator_delete(this);
5209 return this;
5212 /* ?_Findarr@ios_base@std@@AAEAAU_Iosarray@12@H@Z */
5213 /* ?_Findarr@ios_base@std@@AEAAAEAU_Iosarray@12@H@Z */
5214 DEFINE_THISCALL_WRAPPER(ios_base_Findarr, 8)
5215 IOS_BASE_iosarray* __thiscall ios_base_Findarr(ios_base *this, int index)
5217 IOS_BASE_iosarray *p;
5219 TRACE("(%p %d)\n", this, index);
5221 for(p=this->arr; p; p=p->next) {
5222 if(p->index == index)
5223 return p;
5226 for(p=this->arr; p; p=p->next) {
5227 if(!p->long_val && !p->ptr_val) {
5228 p->index = index;
5229 return p;
5233 p = operator_new(sizeof(IOS_BASE_iosarray));
5234 p->next = this->arr;
5235 p->index = index;
5236 p->long_val = 0;
5237 p->ptr_val = NULL;
5238 this->arr = p;
5239 return p;
5242 /* ?iword@ios_base@std@@QAEAAJH@Z */
5243 /* ?iword@ios_base@std@@QEAAAEAJH@Z */
5244 DEFINE_THISCALL_WRAPPER(ios_base_iword, 8)
5245 LONG* __thiscall ios_base_iword(ios_base *this, int index)
5247 TRACE("(%p %d)\n", this, index);
5248 return &ios_base_Findarr(this, index)->long_val;
5251 /* ?pword@ios_base@std@@QAEAAPAXH@Z */
5252 /* ?pword@ios_base@std@@QEAAAEAPEAXH@Z */
5253 DEFINE_THISCALL_WRAPPER(ios_base_pword, 8)
5254 void** __thiscall ios_base_pword(ios_base *this, int index)
5256 TRACE("(%p %d)\n", this, index);
5257 return &ios_base_Findarr(this, index)->ptr_val;
5260 /* ?register_callback@ios_base@std@@QAEXP6AXW4event@12@AAV12@H@ZH@Z */
5261 /* ?register_callback@ios_base@std@@QEAAXP6AXW4event@12@AEAV12@H@ZH@Z */
5262 DEFINE_THISCALL_WRAPPER(ios_base_register_callback, 12)
5263 void __thiscall ios_base_register_callback(ios_base *this, IOS_BASE_event_callback callback, int index)
5265 IOS_BASE_fnarray *event;
5267 TRACE("(%p %p %d)\n", this, callback, index);
5269 event = operator_new(sizeof(IOS_BASE_fnarray));
5270 event->next = this->calls;
5271 event->index = index;
5272 event->event_handler = callback;
5273 this->calls = event;
5276 /* ?clear@ios_base@std@@QAEXH_N@Z */
5277 /* ?clear@ios_base@std@@QEAAXH_N@Z */
5278 DEFINE_THISCALL_WRAPPER(ios_base_clear_reraise, 12)
5279 void __thiscall ios_base_clear_reraise(ios_base *this, IOSB_iostate state, bool reraise)
5281 TRACE("(%p %x %x)\n", this, state, reraise);
5283 this->state = state & IOSTATE_mask;
5284 if(!(this->state & this->except))
5285 return;
5287 if(reraise)
5288 _CxxThrowException(NULL, NULL);
5289 else if(this->state & this->except & IOSTATE_eofbit)
5290 throw_failure("eofbit is set");
5291 else if(this->state & this->except & IOSTATE_failbit)
5292 throw_failure("failbit is set");
5293 else if(this->state & this->except & IOSTATE_badbit)
5294 throw_failure("badbit is set");
5295 else if(this->state & this->except & IOSTATE__Hardfail)
5296 throw_failure("_Hardfail is set");
5299 /* ?clear@ios_base@std@@QAEXH@Z */
5300 /* ?clear@ios_base@std@@QEAAXH@Z */
5301 DEFINE_THISCALL_WRAPPER(ios_base_clear, 8)
5302 void __thiscall ios_base_clear(ios_base *this, IOSB_iostate state)
5304 ios_base_clear_reraise(this, state, FALSE);
5307 /* ?clear@ios_base@std@@QAEXI@Z */
5308 /* ?clear@ios_base@std@@QEAAXI@Z */
5309 DEFINE_THISCALL_WRAPPER(ios_base_clear_unsigned, 8)
5310 void __thiscall ios_base_clear_unsigned(ios_base *this, unsigned int state)
5312 ios_base_clear_reraise(this, (IOSB_iostate)state, FALSE);
5315 /* ?exceptions@ios_base@std@@QAEXH@Z */
5316 /* ?exceptions@ios_base@std@@QEAAXH@Z */
5317 DEFINE_THISCALL_WRAPPER(ios_base_exceptions_set, 8)
5318 void __thiscall ios_base_exceptions_set(ios_base *this, IOSB_iostate state)
5320 TRACE("(%p %x)\n", this, state);
5321 this->except = state & IOSTATE_mask;
5322 ios_base_clear(this, this->state);
5325 /* ?exceptions@ios_base@std@@QAEXI@Z */
5326 /* ?exceptions@ios_base@std@@QEAAXI@Z */
5327 DEFINE_THISCALL_WRAPPER(ios_base_exceptions_set_unsigned, 8)
5328 void __thiscall ios_base_exceptions_set_unsigned(ios_base *this, unsigned int state)
5330 TRACE("(%p %x)\n", this, state);
5331 ios_base_exceptions_set(this, state);
5334 /* ?exceptions@ios_base@std@@QBEHXZ */
5335 /* ?exceptions@ios_base@std@@QEBAHXZ */
5336 DEFINE_THISCALL_WRAPPER(ios_base_exceptions_get, 4)
5337 IOSB_iostate __thiscall ios_base_exceptions_get(ios_base *this)
5339 TRACE("(%p)\n", this);
5340 return this->except;
5343 /* ?copyfmt@ios_base@std@@QAEAAV12@ABV12@@Z */
5344 /* ?copyfmt@ios_base@std@@QEAAAEAV12@AEBV12@@Z */
5345 DEFINE_THISCALL_WRAPPER(ios_base_copyfmt, 8)
5346 ios_base* __thiscall ios_base_copyfmt(ios_base *this, const ios_base *rhs)
5348 TRACE("(%p %p)\n", this, rhs);
5350 if(this != rhs) {
5351 IOS_BASE_iosarray *arr_cur;
5352 IOS_BASE_fnarray *event_cur;
5354 ios_base_Tidy(this);
5356 for(arr_cur=rhs->arr; arr_cur; arr_cur=arr_cur->next) {
5357 if(arr_cur->long_val)
5358 *ios_base_iword(this, arr_cur->index) = arr_cur->long_val;
5359 if(arr_cur->ptr_val)
5360 *ios_base_pword(this, arr_cur->index) = arr_cur->ptr_val;
5362 this->stdstr = rhs->stdstr;
5363 this->fmtfl = rhs->fmtfl;
5364 this->prec = rhs->prec;
5365 this->wide = rhs->wide;
5366 locale_operator_assign(IOS_LOCALE(this), IOS_LOCALE(rhs));
5368 for(event_cur=rhs->calls; event_cur; event_cur=event_cur->next)
5369 ios_base_register_callback(this, event_cur->event_handler, event_cur->index);
5371 ios_base_Callfns(this, EVENT_copyfmt_event);
5372 ios_base_exceptions_set(this, rhs->except);
5375 return this;
5378 /* ??4ios_base@std@@QAEAAV01@ABV01@@Z */
5379 /* ??4ios_base@std@@QEAAAEAV01@AEBV01@@Z */
5380 DEFINE_THISCALL_WRAPPER(ios_base_assign, 8)
5381 ios_base* __thiscall ios_base_assign(ios_base *this, const ios_base *right)
5383 TRACE("(%p %p)\n", this, right);
5385 if(this != right) {
5386 this->state = right->state;
5387 ios_base_copyfmt(this, right);
5390 return this;
5393 /* ?fail@ios_base@std@@QBE_NXZ */
5394 /* ?fail@ios_base@std@@QEBA_NXZ */
5395 DEFINE_THISCALL_WRAPPER(ios_base_fail, 4)
5396 bool __thiscall ios_base_fail(const ios_base *this)
5398 TRACE("(%p)\n", this);
5399 return (this->state & (IOSTATE_failbit|IOSTATE_badbit)) != 0;
5402 /* ??7ios_base@std@@QBE_NXZ */
5403 /* ??7ios_base@std@@QEBA_NXZ */
5404 DEFINE_THISCALL_WRAPPER(ios_base_op_succ, 4)
5405 bool __thiscall ios_base_op_succ(const ios_base *this)
5407 TRACE("(%p)\n", this);
5408 return ios_base_fail(this);
5411 /* ??Bios_base@std@@QBEPAXXZ */
5412 /* ??Bios_base@std@@QEBAPEAXXZ */
5413 DEFINE_THISCALL_WRAPPER(ios_base_op_fail, 4)
5414 void* __thiscall ios_base_op_fail(const ios_base *this)
5416 TRACE("(%p)\n", this);
5417 return ios_base_fail(this) ? NULL : (void*)this;
5420 /* ??Bios_base@std@@QBA_NXZ */
5421 /* ??Bios_base@std@@QBE_NXZ */
5422 /* ??Bios_base@std@@QEBA_NXZ */
5423 DEFINE_THISCALL_WRAPPER(ios_base_operator_bool, 4)
5424 bool __thiscall ios_base_operator_bool(const ios_base *this)
5426 TRACE("(%p)\n", this);
5427 return (this->state & (IOSTATE_failbit|IOSTATE_badbit)) == 0;
5430 /* ?_Addstd@ios_base@std@@SAXPAV12@@Z */
5431 /* ?_Addstd@ios_base@std@@SAXPEAV12@@Z */
5432 void __cdecl ios_base_Addstd(ios_base *add)
5434 FIXME("(%p) stub\n", add);
5437 /* ?_Index_func@ios_base@std@@CAAAHXZ */
5438 /* ?_Index_func@ios_base@std@@CAAEAHXZ */
5439 int* __cdecl ios_base_Index_func(void)
5441 TRACE("\n");
5442 return &ios_base_Index;
5445 /* ?_Init@ios_base@std@@IAEXXZ */
5446 /* ?_Init@ios_base@std@@IEAAXXZ */
5447 DEFINE_THISCALL_WRAPPER(ios_base__Init, 4)
5448 void __thiscall ios_base__Init(ios_base *this)
5450 TRACE("(%p)\n", this);
5452 this->stdstr = 0;
5453 this->state = this->except = IOSTATE_goodbit;
5454 this->fmtfl = FMTFLAG_skipws | FMTFLAG_dec;
5455 this->prec = 6;
5456 this->wide = 0;
5457 this->arr = NULL;
5458 this->calls = NULL;
5459 #if _MSVCP_VER >= 70
5460 this->loc = operator_new(sizeof(locale));
5461 #endif
5462 locale_ctor(IOS_LOCALE(this));
5465 /* ?_Sync_func@ios_base@std@@CAAA_NXZ */
5466 /* ?_Sync_func@ios_base@std@@CAAEA_NXZ */
5467 bool* __cdecl ios_base_Sync_func(void)
5469 TRACE("\n");
5470 return &ios_base_Sync;
5473 /* ?bad@ios_base@std@@QBE_NXZ */
5474 /* ?bad@ios_base@std@@QEBA_NXZ */
5475 DEFINE_THISCALL_WRAPPER(ios_base_bad, 4)
5476 bool __thiscall ios_base_bad(const ios_base *this)
5478 TRACE("(%p)\n", this);
5479 return (this->state & IOSTATE_badbit) != 0;
5482 /* ?eof@ios_base@std@@QBE_NXZ */
5483 /* ?eof@ios_base@std@@QEBA_NXZ */
5484 DEFINE_THISCALL_WRAPPER(ios_base_eof, 4)
5485 bool __thiscall ios_base_eof(const ios_base *this)
5487 TRACE("(%p)\n", this);
5488 return (this->state & IOSTATE_eofbit) != 0;
5491 /* ?flags@ios_base@std@@QAEHH@Z */
5492 /* ?flags@ios_base@std@@QEAAHH@Z */
5493 DEFINE_THISCALL_WRAPPER(ios_base_flags_set, 8)
5494 IOSB_fmtflags __thiscall ios_base_flags_set(ios_base *this, IOSB_fmtflags flags)
5496 IOSB_fmtflags ret = this->fmtfl;
5498 TRACE("(%p %x)\n", this, flags);
5500 this->fmtfl = flags & FMTFLAG_mask;
5501 return ret;
5504 /* ?flags@ios_base@std@@QBEHXZ */
5505 /* ?flags@ios_base@std@@QEBAHXZ */
5506 DEFINE_THISCALL_WRAPPER(ios_base_flags_get, 4)
5507 IOSB_fmtflags __thiscall ios_base_flags_get(const ios_base *this)
5509 TRACE("(%p)\n", this);
5510 return this->fmtfl;
5513 /* ?getloc@ios_base@std@@QBE?AVlocale@2@XZ */
5514 /* ?getloc@ios_base@std@@QEBA?AVlocale@2@XZ */
5515 DEFINE_THISCALL_WRAPPER(ios_base_getloc, 8)
5516 locale* __thiscall ios_base_getloc(const ios_base *this, locale *ret)
5518 TRACE("(%p)\n", this);
5519 return locale_copy_ctor(ret, IOS_LOCALE(this));
5522 /* ?good@ios_base@std@@QBE_NXZ */
5523 /* ?good@ios_base@std@@QEBA_NXZ */
5524 DEFINE_THISCALL_WRAPPER(ios_base_good, 4)
5525 bool __thiscall ios_base_good(const ios_base *this)
5527 TRACE("(%p)\n", this);
5528 return this->state == IOSTATE_goodbit;
5531 /* ?imbue@ios_base@std@@QAE?AVlocale@2@ABV32@@Z */
5532 /* ?imbue@ios_base@std@@QEAA?AVlocale@2@AEBV32@@Z */
5533 DEFINE_THISCALL_WRAPPER(ios_base_imbue, 12)
5534 locale* __thiscall ios_base_imbue(ios_base *this, locale *ret, const locale *loc)
5536 TRACE("(%p %p)\n", this, loc);
5537 *ret = *IOS_LOCALE(this);
5538 locale_copy_ctor(IOS_LOCALE(this), loc);
5539 return ret;
5542 /* ?precision@ios_base@std@@QAEHH@Z */
5543 /* ?precision@ios_base@std@@QEAA_J_J@Z */
5544 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
5545 DEFINE_THISCALL_WRAPPER(ios_base_precision_set, 12)
5546 #else
5547 DEFINE_THISCALL_WRAPPER(ios_base_precision_set, 8)
5548 #endif
5549 streamsize __thiscall ios_base_precision_set(ios_base *this, streamsize precision)
5551 streamsize ret = this->prec;
5553 TRACE("(%p %s)\n", this, wine_dbgstr_longlong(precision));
5555 this->prec = precision;
5556 return ret;
5559 /* ?precision@ios_base@std@@QBEHXZ */
5560 /* ?precision@ios_base@std@@QEBA_JXZ */
5561 DEFINE_THISCALL_WRAPPER(ios_base_precision_get, 4)
5562 streamsize __thiscall ios_base_precision_get(const ios_base *this)
5564 TRACE("(%p)\n", this);
5565 return this->prec;
5568 /* ?rdstate@ios_base@std@@QBEHXZ */
5569 /* ?rdstate@ios_base@std@@QEBAHXZ */
5570 DEFINE_THISCALL_WRAPPER(ios_base_rdstate, 4)
5571 IOSB_iostate __thiscall ios_base_rdstate(const ios_base *this)
5573 TRACE("(%p)\n", this);
5574 return this->state;
5577 /* ?setf@ios_base@std@@QAEHHH@Z */
5578 /* ?setf@ios_base@std@@QEAAHHH@Z */
5579 DEFINE_THISCALL_WRAPPER(ios_base_setf_mask, 12)
5580 IOSB_fmtflags __thiscall ios_base_setf_mask(ios_base *this, IOSB_fmtflags flags, IOSB_fmtflags mask)
5582 IOSB_fmtflags ret = this->fmtfl;
5584 TRACE("(%p %x %x)\n", this, flags, mask);
5586 this->fmtfl = (this->fmtfl & (~mask)) | (flags & mask & FMTFLAG_mask);
5587 return ret;
5590 /* ?setf@ios_base@std@@QAEHH@Z */
5591 /* ?setf@ios_base@std@@QEAAHH@Z */
5592 DEFINE_THISCALL_WRAPPER(ios_base_setf, 8)
5593 IOSB_fmtflags __thiscall ios_base_setf(ios_base *this, IOSB_fmtflags flags)
5595 IOSB_fmtflags ret = this->fmtfl;
5597 TRACE("(%p %x)\n", this, flags);
5599 this->fmtfl |= flags & FMTFLAG_mask;
5600 return ret;
5603 /* ?setstate@ios_base@std@@QAEXH_N@Z */
5604 /* ?setstate@ios_base@std@@QEAAXH_N@Z */
5605 DEFINE_THISCALL_WRAPPER(ios_base_setstate_reraise, 12)
5606 void __thiscall ios_base_setstate_reraise(ios_base *this, IOSB_iostate state, bool reraise)
5608 TRACE("(%p %x %x)\n", this, state, reraise);
5610 if(state != IOSTATE_goodbit)
5611 ios_base_clear_reraise(this, this->state | state, reraise);
5614 /* ?setstate@ios_base@std@@QAEXH@Z */
5615 /* ?setstate@ios_base@std@@QEAAXH@Z */
5616 DEFINE_THISCALL_WRAPPER(ios_base_setstate, 8)
5617 void __thiscall ios_base_setstate(ios_base *this, IOSB_iostate state)
5619 ios_base_setstate_reraise(this, state, FALSE);
5622 /* ?setstate@ios_base@std@@QAEXI@Z */
5623 /* ?setstate@ios_base@std@@QEAAXI@Z */
5624 DEFINE_THISCALL_WRAPPER(ios_base_setstate_unsigned, 8)
5625 void __thiscall ios_base_setstate_unsigned(ios_base *this, unsigned int state)
5627 ios_base_setstate_reraise(this, (IOSB_iostate)state, FALSE);
5630 /* ?sync_with_stdio@ios_base@std@@SA_N_N@Z */
5631 bool __cdecl ios_base_sync_with_stdio(bool sync)
5633 _Lockit lock;
5634 bool ret;
5636 TRACE("(%x)\n", sync);
5638 _Lockit_ctor_locktype(&lock, _LOCK_STREAM);
5639 ret = ios_base_Sync;
5640 ios_base_Sync = sync;
5641 _Lockit_dtor(&lock);
5642 return ret;
5645 /* ?unsetf@ios_base@std@@QAEXH@Z */
5646 /* ?unsetf@ios_base@std@@QEAAXH@Z */
5647 DEFINE_THISCALL_WRAPPER(ios_base_unsetf, 8)
5648 void __thiscall ios_base_unsetf(ios_base *this, IOSB_fmtflags flags)
5650 TRACE("(%p %x)\n", this, flags);
5651 this->fmtfl &= ~flags;
5654 /* ?width@ios_base@std@@QAEHH@Z */
5655 /* ?width@ios_base@std@@QEAA_J_J@Z */
5656 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
5657 DEFINE_THISCALL_WRAPPER(ios_base_width_set, 12)
5658 #else
5659 DEFINE_THISCALL_WRAPPER(ios_base_width_set, 8)
5660 #endif
5661 streamsize __thiscall ios_base_width_set(ios_base *this, streamsize width)
5663 streamsize ret = this->wide;
5665 TRACE("(%p %s)\n", this, wine_dbgstr_longlong(width));
5667 this->wide = width;
5668 return ret;
5671 /* ?width@ios_base@std@@QBEHXZ */
5672 /* ?width@ios_base@std@@QEBA_JXZ */
5673 DEFINE_THISCALL_WRAPPER(ios_base_width_get, 4)
5674 streamsize __thiscall ios_base_width_get(ios_base *this)
5676 TRACE("(%p)\n", this);
5677 return this->wide;
5680 /* ?xalloc@ios_base@std@@SAHXZ */
5681 int __cdecl ios_base_xalloc(void)
5683 _Lockit lock;
5684 int ret;
5686 TRACE("\n");
5688 _Lockit_ctor_locktype(&lock, _LOCK_STREAM);
5689 ret = ios_base_Index++;
5690 _Lockit_dtor(&lock);
5691 return ret;
5694 /* ?swap@ios_base@std@@QAEXAAV12@@Z */
5695 /* ?swap@ios_base@std@@QEAAXAEAV12@@Z */
5696 DEFINE_THISCALL_WRAPPER(ios_base_swap, 8)
5697 void __thiscall ios_base_swap(ios_base *this, ios_base *r)
5699 ios_base tmp;
5701 TRACE("(%p %p)\n", this, r);
5703 if(this == r)
5704 return;
5706 tmp = *this;
5707 *this = *r;
5708 this->vtable = tmp.vtable;
5709 tmp.vtable = r->vtable;
5710 *r = tmp;
5713 DEFINE_THISCALL_WRAPPER(basic_ios__Add_vtordisp1, 4)
5714 void __thiscall basic_ios__Add_vtordisp1(void *this)
5716 WARN("should not be called (%p)\n", this);
5719 DEFINE_THISCALL_WRAPPER(basic_ios__Add_vtordisp2, 4)
5720 void __thiscall basic_ios__Add_vtordisp2(void *this)
5722 WARN("should not be called (%p)\n", this);
5725 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@IAE@XZ */
5726 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@IEAA@XZ */
5727 DEFINE_THISCALL_WRAPPER(basic_ios_char_ctor, 4)
5728 basic_ios_char* __thiscall basic_ios_char_ctor(basic_ios_char *this)
5730 TRACE("(%p)\n", this);
5732 ios_base_ctor(&this->base);
5733 this->base.vtable = &basic_ios_char_vtable;
5734 return this;
5737 /* ?init@?$basic_ios@DU?$char_traits@D@std@@@std@@IAEXPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@_N@Z */
5738 /* ?init@?$basic_ios@DU?$char_traits@D@std@@@std@@IEAAXPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@_N@Z */
5739 DEFINE_THISCALL_WRAPPER(basic_ios_char_init, 12)
5740 void __thiscall basic_ios_char_init(basic_ios_char *this, basic_streambuf_char *streambuf, bool isstd)
5742 TRACE("(%p %p %x)\n", this, streambuf, isstd);
5743 ios_base__Init(&this->base);
5744 this->strbuf = streambuf;
5745 this->stream = NULL;
5746 this->fillch = ' ';
5748 if(!streambuf)
5749 ios_base_setstate(&this->base, IOSTATE_badbit);
5751 if(isstd)
5752 FIXME("standard streams not handled yet\n");
5755 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
5756 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
5757 DEFINE_THISCALL_WRAPPER(basic_ios_char_ctor_streambuf, 8)
5758 basic_ios_char* __thiscall basic_ios_char_ctor_streambuf(basic_ios_char *this, basic_streambuf_char *strbuf)
5760 TRACE("(%p %p)\n", this, strbuf);
5762 basic_ios_char_ctor(this);
5763 basic_ios_char_init(this, strbuf, FALSE);
5764 return this;
5767 /* ??1?$basic_ios@DU?$char_traits@D@std@@@std@@UAE@XZ */
5768 /* ??1?$basic_ios@DU?$char_traits@D@std@@@std@@UEAA@XZ */
5769 DEFINE_THISCALL_WRAPPER(basic_ios_char_dtor, 4)
5770 void __thiscall basic_ios_char_dtor(basic_ios_char *this)
5772 TRACE("(%p)\n", this);
5773 ios_base_dtor(&this->base);
5776 DEFINE_THISCALL_WRAPPER(basic_ios_char_vector_dtor, 8)
5777 basic_ios_char* __thiscall basic_ios_char_vector_dtor(basic_ios_char *this, unsigned int flags)
5779 TRACE("(%p %x)\n", this, flags);
5780 if(flags & 2) {
5781 /* we have an array, with the number of elements stored before the first object */
5782 INT_PTR i, *ptr = (INT_PTR *)this-1;
5784 for(i=*ptr-1; i>=0; i--)
5785 basic_ios_char_dtor(this+i);
5786 operator_delete(ptr);
5787 } else {
5788 basic_ios_char_dtor(this);
5789 if(flags & 1)
5790 operator_delete(this);
5793 return this;
5796 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z */
5797 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z */
5798 DEFINE_THISCALL_WRAPPER(basic_ios_char_clear_reraise, 12)
5799 void __thiscall basic_ios_char_clear_reraise(basic_ios_char *this, IOSB_iostate state, bool reraise)
5801 TRACE("(%p %x %x)\n", this, state, reraise);
5802 ios_base_clear_reraise(&this->base, state | (this->strbuf ? IOSTATE_goodbit : IOSTATE_badbit), reraise);
5805 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXI@Z */
5806 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXI@Z */
5807 DEFINE_THISCALL_WRAPPER(basic_ios_char_clear, 8)
5808 void __thiscall basic_ios_char_clear(basic_ios_char *this, unsigned int state)
5810 basic_ios_char_clear_reraise(this, (IOSB_iostate)state, FALSE);
5813 /* ?copyfmt@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEAAV12@ABV12@@Z */
5814 /* ?copyfmt@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEBV12@@Z */
5815 DEFINE_THISCALL_WRAPPER(basic_ios_char_copyfmt, 8)
5816 basic_ios_char* __thiscall basic_ios_char_copyfmt(basic_ios_char *this, basic_ios_char *copy)
5818 TRACE("(%p %p)\n", this, copy);
5819 if(this == copy)
5820 return this;
5822 this->stream = copy->stream;
5823 this->fillch = copy->fillch;
5824 ios_base_copyfmt(&this->base, &copy->base);
5825 return this;
5828 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEDD@Z */
5829 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAADD@Z */
5830 DEFINE_THISCALL_WRAPPER(basic_ios_char_fill_set, 8)
5831 char __thiscall basic_ios_char_fill_set(basic_ios_char *this, char fill)
5833 char ret = this->fillch;
5835 TRACE("(%p %c)\n", this, fill);
5837 this->fillch = fill;
5838 return ret;
5841 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDXZ */
5842 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADXZ */
5843 DEFINE_THISCALL_WRAPPER(basic_ios_char_fill_get, 4)
5844 char __thiscall basic_ios_char_fill_get(basic_ios_char *this)
5846 TRACE("(%p)\n", this);
5847 return this->fillch;
5850 /* ?imbue@?$basic_ios@DU?$char_traits@D@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
5851 /* ?imbue@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
5852 DEFINE_THISCALL_WRAPPER(basic_ios_char_imbue, 12)
5853 locale *__thiscall basic_ios_char_imbue(basic_ios_char *this, locale *ret, const locale *loc)
5855 TRACE("(%p %p %p)\n", this, ret, loc);
5857 if(this->strbuf) {
5858 basic_streambuf_char_pubimbue(this->strbuf, ret, loc);
5859 locale_dtor(ret);
5862 return ios_base_imbue(&this->base, ret, loc);
5865 /* ?narrow@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDDD@Z */
5866 /* ?narrow@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADDD@Z */
5867 DEFINE_THISCALL_WRAPPER(basic_ios_char_narrow, 12)
5868 char __thiscall basic_ios_char_narrow(basic_ios_char *this, char ch, char def)
5870 TRACE("(%p %c %c)\n", this, ch, def);
5871 return ctype_char_narrow_ch(ctype_char_use_facet(IOS_LOCALE(&this->base)), ch, def);
5874 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PAV32@@Z */
5875 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PEAV32@@Z */
5876 DEFINE_THISCALL_WRAPPER(basic_ios_char_rdbuf_set, 8)
5877 basic_streambuf_char* __thiscall basic_ios_char_rdbuf_set(basic_ios_char *this, basic_streambuf_char *streambuf)
5879 basic_streambuf_char *ret = this->strbuf;
5881 TRACE("(%p %p)\n", this, streambuf);
5883 this->strbuf = streambuf;
5884 basic_ios_char_clear(this, IOSTATE_goodbit);
5885 return ret;
5888 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ */
5889 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ */
5890 DEFINE_THISCALL_WRAPPER(basic_ios_char_rdbuf_get, 4)
5891 basic_streambuf_char* __thiscall basic_ios_char_rdbuf_get(const basic_ios_char *this)
5893 TRACE("(%p)\n", this);
5894 return this->strbuf;
5897 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z */
5898 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z */
5899 DEFINE_THISCALL_WRAPPER(basic_ios_char_setstate_reraise, 12)
5900 void __thiscall basic_ios_char_setstate_reraise(basic_ios_char *this, IOSB_iostate state, bool reraise)
5902 TRACE("(%p %x %x)\n", this, state, reraise);
5904 if(state != IOSTATE_goodbit)
5905 basic_ios_char_clear_reraise(this, this->base.state | state, reraise);
5908 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXI@Z */
5909 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXI@Z */
5910 DEFINE_THISCALL_WRAPPER(basic_ios_char_setstate, 8)
5911 void __thiscall basic_ios_char_setstate(basic_ios_char *this, unsigned int state)
5913 basic_ios_char_setstate_reraise(this, (IOSB_iostate)state, FALSE);
5916 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEPAV?$basic_ostream@DU?$char_traits@D@std@@@2@PAV32@@Z */
5917 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAPEAV?$basic_ostream@DU?$char_traits@D@std@@@2@PEAV32@@Z */
5918 DEFINE_THISCALL_WRAPPER(basic_ios_char_tie_set, 8)
5919 basic_ostream_char* __thiscall basic_ios_char_tie_set(basic_ios_char *this, basic_ostream_char *ostream)
5921 basic_ostream_char *ret = this->stream;
5923 TRACE("(%p %p)\n", this, ostream);
5925 this->stream = ostream;
5926 return ret;
5929 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_ostream@DU?$char_traits@D@std@@@2@XZ */
5930 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_ostream@DU?$char_traits@D@std@@@2@XZ */
5931 DEFINE_THISCALL_WRAPPER(basic_ios_char_tie_get, 4)
5932 basic_ostream_char* __thiscall basic_ios_char_tie_get(const basic_ios_char *this)
5934 TRACE("(%p)\n", this);
5935 return this->stream;
5938 /* ?widen@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDD@Z */
5939 /* ?widen@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADD@Z */
5940 DEFINE_THISCALL_WRAPPER(basic_ios_char_widen, 8)
5941 char __thiscall basic_ios_char_widen(basic_ios_char *this, char ch)
5943 TRACE("(%p %c)\n", this, ch);
5944 return ctype_char_widen_ch(ctype_char_use_facet(IOS_LOCALE(&this->base)), ch);
5947 /* ?swap@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXAAV12@@Z */
5948 /* ?swap@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXAEAV12@@Z */
5949 DEFINE_THISCALL_WRAPPER(basic_ios_char_swap, 8)
5950 void __thiscall basic_ios_char_swap(basic_ios_char *this, basic_ios_char *r)
5952 void *swap_ptr;
5954 TRACE("(%p %p)\n", this, r);
5956 if(this == r)
5957 return;
5959 ios_base_swap(&this->base, &r->base);
5960 swap_ptr = this->stream;
5961 this->stream = r->stream;
5962 r->stream = swap_ptr;
5963 this->fillch ^= r->fillch;
5964 r->fillch ^= this->fillch;
5965 this->fillch ^= r->fillch;
5968 /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@IAE@XZ */
5969 /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@IEAA@XZ */
5970 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_ctor, 4)
5971 basic_ios_wchar* __thiscall basic_ios_wchar_ctor(basic_ios_wchar *this)
5973 TRACE("(%p)\n", this);
5975 ios_base_ctor(&this->base);
5976 this->base.vtable = &basic_ios_wchar_vtable;
5977 return this;
5980 /* ??0?$basic_ios@GU?$char_traits@G@std@@@std@@IAE@XZ */
5981 /* ??0?$basic_ios@GU?$char_traits@G@std@@@std@@IEAA@XZ */
5982 DEFINE_THISCALL_WRAPPER(basic_ios_short_ctor, 4)
5983 basic_ios_wchar* __thiscall basic_ios_short_ctor(basic_ios_wchar *this)
5985 basic_ios_wchar_ctor(this);
5986 this->base.vtable = &basic_ios_short_vtable;
5987 return this;
5990 /* ?init@?$basic_ios@_WU?$char_traits@_W@std@@@std@@IAEXPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_N@Z */
5991 /* ?init@?$basic_ios@_WU?$char_traits@_W@std@@@std@@IEAAXPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_N@Z */
5992 /* ?init@?$basic_ios@GU?$char_traits@G@std@@@std@@IAEXPAV?$basic_streambuf@GU?$char_traits@G@std@@@2@_N@Z */
5993 /* ?init@?$basic_ios@GU?$char_traits@G@std@@@std@@IEAAXPEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@_N@Z */
5994 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_init, 12)
5995 void __thiscall basic_ios_wchar_init(basic_ios_wchar *this, basic_streambuf_wchar *streambuf, bool isstd)
5997 TRACE("(%p %p %x)\n", this, streambuf, isstd);
5998 ios_base__Init(&this->base);
5999 this->strbuf = streambuf;
6000 this->stream = NULL;
6001 this->fillch = ' ';
6003 if(!streambuf)
6004 ios_base_setstate(&this->base, IOSTATE_badbit);
6006 if(isstd)
6007 FIXME("standard streams not handled yet\n");
6010 /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
6011 /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
6012 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_ctor_streambuf, 8)
6013 basic_ios_wchar* __thiscall basic_ios_wchar_ctor_streambuf(basic_ios_wchar *this, basic_streambuf_wchar *strbuf)
6015 TRACE("(%p %p)\n", this, strbuf);
6017 basic_ios_wchar_ctor(this);
6018 basic_ios_wchar_init(this, strbuf, FALSE);
6019 return this;
6022 /* ??0?$basic_ios@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
6023 /* ??0?$basic_ios@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
6024 DEFINE_THISCALL_WRAPPER(basic_ios_short_ctor_streambuf, 8)
6025 basic_ios_wchar* __thiscall basic_ios_short_ctor_streambuf(basic_ios_wchar *this, basic_streambuf_wchar *strbuf)
6027 basic_ios_wchar_ctor_streambuf(this, strbuf);
6028 this->base.vtable = &basic_ios_short_vtable;
6029 return this;
6032 /* ??1?$basic_ios@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
6033 /* ??1?$basic_ios@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
6034 /* ??1?$basic_ios@GU?$char_traits@G@std@@@std@@UAE@XZ */
6035 /* ??1?$basic_ios@GU?$char_traits@G@std@@@std@@UEAA@XZ */
6036 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_dtor, 4)
6037 void __thiscall basic_ios_wchar_dtor(basic_ios_wchar *this)
6039 TRACE("(%p)\n", this);
6040 ios_base_dtor(&this->base);
6043 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_vector_dtor, 8)
6044 basic_ios_wchar* __thiscall basic_ios_wchar_vector_dtor(basic_ios_wchar *this, unsigned int flags)
6046 TRACE("(%p %x)\n", this, flags);
6047 if(flags & 2) {
6048 /* we have an array, with the number of elements stored before the first object */
6049 INT_PTR i, *ptr = (INT_PTR *)this-1;
6051 for(i=*ptr-1; i>=0; i--)
6052 basic_ios_wchar_dtor(this+i);
6053 operator_delete(ptr);
6054 } else {
6055 basic_ios_wchar_dtor(this);
6056 if(flags & 1)
6057 operator_delete(this);
6060 return this;
6063 /* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXH_N@Z */
6064 /* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXH_N@Z */
6065 /* ?clear@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXH_N@Z */
6066 /* ?clear@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXH_N@Z */
6067 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_clear_reraise, 12)
6068 void __thiscall basic_ios_wchar_clear_reraise(basic_ios_wchar *this, IOSB_iostate state, bool reraise)
6070 TRACE("(%p %x %x)\n", this, state, reraise);
6071 ios_base_clear_reraise(&this->base, state | (this->strbuf ? IOSTATE_goodbit : IOSTATE_badbit), reraise);
6074 /* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXI@Z */
6075 /* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXI@Z */
6076 /* ?clear@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXI@Z */
6077 /* ?clear@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXI@Z */
6078 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_clear, 8)
6079 void __thiscall basic_ios_wchar_clear(basic_ios_wchar *this, unsigned int state)
6081 basic_ios_wchar_clear_reraise(this, (IOSB_iostate)state, FALSE);
6084 /* ?copyfmt@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEAAV12@ABV12@@Z */
6085 /* ?copyfmt@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEBV12@@Z */
6086 /* ?copyfmt@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEAAV12@ABV12@@Z */
6087 /* ?copyfmt@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAAEAV12@AEBV12@@Z */
6088 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_copyfmt, 8)
6089 basic_ios_wchar* __thiscall basic_ios_wchar_copyfmt(basic_ios_wchar *this, basic_ios_wchar *copy)
6091 TRACE("(%p %p)\n", this, copy);
6092 if(this == copy)
6093 return this;
6095 this->stream = copy->stream;
6096 this->fillch = copy->fillch;
6097 ios_base_copyfmt(&this->base, &copy->base);
6098 return this;
6101 /* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAE_W_W@Z */
6102 /* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAA_W_W@Z */
6103 /* ?fill@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEGG@Z */
6104 /* ?fill@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAGG@Z */
6105 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_fill_set, 8)
6106 wchar_t __thiscall basic_ios_wchar_fill_set(basic_ios_wchar *this, wchar_t fill)
6108 wchar_t ret = this->fillch;
6110 TRACE("(%p %c)\n", this, fill);
6112 this->fillch = fill;
6113 return ret;
6116 /* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBE_WXZ */
6117 /* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBA_WXZ */
6118 /* ?fill@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEGXZ */
6119 /* ?fill@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBAGXZ */
6120 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_fill_get, 4)
6121 wchar_t __thiscall basic_ios_wchar_fill_get(basic_ios_wchar *this)
6123 TRACE("(%p)\n", this);
6124 return this->fillch;
6127 /* ?imbue@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
6128 /* ?imbue@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
6129 /* ?imbue@?$basic_ios@GU?$char_traits@G@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
6130 /* ?imbue@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
6131 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_imbue, 12)
6132 locale *__thiscall basic_ios_wchar_imbue(basic_ios_wchar *this, locale *ret, const locale *loc)
6134 TRACE("(%p %p %p)\n", this, ret, loc);
6136 if(this->strbuf) {
6137 basic_streambuf_wchar_pubimbue(this->strbuf, ret, loc);
6138 locale_dtor(ret);
6141 return ios_base_imbue(&this->base, ret, loc);
6144 /* ?narrow@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBED_WD@Z */
6145 /* ?narrow@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBAD_WD@Z */
6146 /* ?narrow@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEDGD@Z */
6147 /* ?narrow@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBADGD@Z */
6148 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_narrow, 12)
6149 char __thiscall basic_ios_wchar_narrow(basic_ios_wchar *this, wchar_t ch, char def)
6151 TRACE("(%p %c %c)\n", this, ch, def);
6152 return ctype_wchar_narrow_ch(ctype_wchar_use_facet(IOS_LOCALE(&this->base)), ch, def);
6155 /* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@PAV32@@Z */
6156 /* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@PEAV32@@Z */
6157 /* ?rdbuf@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEPAV?$basic_streambuf@GU?$char_traits@G@std@@@2@PAV32@@Z */
6158 /* ?rdbuf@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAPEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@PEAV32@@Z */
6159 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_rdbuf_set, 8)
6160 basic_streambuf_wchar* __thiscall basic_ios_wchar_rdbuf_set(basic_ios_wchar *this, basic_streambuf_wchar *streambuf)
6162 basic_streambuf_wchar *ret = this->strbuf;
6164 TRACE("(%p %p)\n", this, streambuf);
6166 this->strbuf = streambuf;
6167 basic_ios_wchar_clear(this, IOSTATE_goodbit);
6168 return ret;
6171 /* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@XZ */
6172 /* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@XZ */
6173 /* ?rdbuf@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_streambuf@GU?$char_traits@G@std@@@2@XZ */
6174 /* ?rdbuf@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@XZ */
6175 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_rdbuf_get, 4)
6176 basic_streambuf_wchar* __thiscall basic_ios_wchar_rdbuf_get(const basic_ios_wchar *this)
6178 TRACE("(%p)\n", this);
6179 return this->strbuf;
6182 /* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXH_N@Z */
6183 /* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXH_N@Z */
6184 /* ?setstate@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXH_N@Z */
6185 /* ?setstate@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXH_N@Z */
6186 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_setstate_reraise, 12)
6187 void __thiscall basic_ios_wchar_setstate_reraise(basic_ios_wchar *this, IOSB_iostate state, bool reraise)
6189 TRACE("(%p %x %x)\n", this, state, reraise);
6191 if(state != IOSTATE_goodbit)
6192 basic_ios_wchar_clear_reraise(this, this->base.state | state, reraise);
6195 /* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXI@Z */
6196 /* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXI@Z */
6197 /* ?setstate@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXI@Z */
6198 /* ?setstate@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXI@Z */
6199 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_setstate, 8)
6200 void __thiscall basic_ios_wchar_setstate(basic_ios_wchar *this, IOSB_iostate state)
6202 basic_ios_wchar_setstate_reraise(this, state, FALSE);
6205 /* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEPAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@PAV32@@Z */
6206 /* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAPEAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@PEAV32@@Z */
6207 /* ?tie@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEPAV?$basic_ostream@GU?$char_traits@G@std@@@2@PAV32@@Z */
6208 /* ?tie@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAPEAV?$basic_ostream@GU?$char_traits@G@std@@@2@PEAV32@@Z */
6209 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_tie_set, 8)
6210 basic_ostream_wchar* __thiscall basic_ios_wchar_tie_set(basic_ios_wchar *this, basic_ostream_wchar *ostream)
6212 basic_ostream_wchar *ret = this->stream;
6214 TRACE("(%p %p)\n", this, ostream);
6216 this->stream = ostream;
6217 return ret;
6220 /* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@XZ */
6221 /* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@XZ */
6222 /* ?tie@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_ostream@GU?$char_traits@G@std@@@2@XZ */
6223 /* ?tie@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_ostream@GU?$char_traits@G@std@@@2@XZ */
6224 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_tie_get, 4)
6225 basic_ostream_wchar* __thiscall basic_ios_wchar_tie_get(const basic_ios_wchar *this)
6227 TRACE("(%p)\n", this);
6228 return this->stream;
6231 /* ?widen@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBE_WD@Z */
6232 /* ?widen@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBA_WD@Z */
6233 /* ?widen@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEGD@Z */
6234 /* ?widen@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBAGD@Z */
6235 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_widen, 8)
6236 wchar_t __thiscall basic_ios_wchar_widen(basic_ios_wchar *this, char ch)
6238 TRACE("(%p %c)\n", this, ch);
6239 return ctype_wchar_widen_ch(ctype_wchar_use_facet(IOS_LOCALE(&this->base)), ch);
6242 /* ?swap@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXAAV12@@Z */
6243 /* ?swap@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXAEAV12@@Z */
6244 /* ?swap@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXAAV12@@Z */
6245 /* ?swap@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXAEAV12@@Z */
6246 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_swap, 8)
6247 void __thiscall basic_ios_wchar_swap(basic_ios_wchar *this, basic_ios_wchar *r)
6249 void *swap_ptr;
6251 TRACE("(%p %p)\n", this, r);
6253 if(this == r)
6254 return;
6256 ios_base_swap(&this->base, &r->base);
6257 swap_ptr = this->stream;
6258 this->stream = r->stream;
6259 r->stream = swap_ptr;
6260 this->fillch ^= r->fillch;
6261 r->fillch ^= this->fillch;
6262 this->fillch ^= r->fillch;
6265 /* Caution: basic_ostream uses virtual inheritance.
6266 * All constructors have additional parameter that says if base class should be initialized.
6267 * Base class needs to be accessed using vbtable.
6269 static inline basic_ios_char* basic_ostream_char_get_basic_ios(basic_ostream_char *this)
6271 return (basic_ios_char*)((char*)this+this->vbtable[1]);
6274 static inline basic_ios_char* basic_ostream_char_to_basic_ios(basic_ostream_char *ptr)
6276 return (basic_ios_char*)((char*)ptr+basic_ostream_char_vbtable[1]);
6279 static inline basic_ostream_char* basic_ostream_char_from_basic_ios(basic_ios_char *ptr)
6281 return (basic_ostream_char*)((char*)ptr-basic_ostream_char_vbtable[1]);
6284 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z */
6285 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z */
6286 DEFINE_THISCALL_WRAPPER(basic_ostream_char_ctor, 16)
6287 basic_ostream_char* __thiscall basic_ostream_char_ctor(basic_ostream_char *this,
6288 basic_streambuf_char *strbuf, bool isstd, bool virt_init)
6290 basic_ios_char *base;
6292 TRACE("(%p %p %d %d)\n", this, strbuf, isstd, virt_init);
6294 if(virt_init) {
6295 this->vbtable = basic_ostream_char_vbtable;
6296 base = basic_ostream_char_get_basic_ios(this);
6297 INIT_BASIC_IOS_VTORDISP(base);
6298 basic_ios_char_ctor(base);
6299 }else {
6300 base = basic_ostream_char_get_basic_ios(this);
6303 base->base.vtable = &basic_ostream_char_vtable;
6304 basic_ios_char_init(base, strbuf, isstd);
6305 return this;
6308 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@W4_Uninitialized@1@_N@Z */
6309 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@W4_Uninitialized@1@_N@Z */
6310 DEFINE_THISCALL_WRAPPER(basic_ostream_char_ctor_uninitialized, 16)
6311 basic_ostream_char* __thiscall basic_ostream_char_ctor_uninitialized(basic_ostream_char *this,
6312 int uninitialized, bool addstd, bool virt_init)
6314 basic_ios_char *base;
6316 TRACE("(%p %d %x)\n", this, uninitialized, addstd);
6318 if(virt_init) {
6319 this->vbtable = basic_ostream_char_vbtable;
6320 base = basic_ostream_char_get_basic_ios(this);
6321 INIT_BASIC_IOS_VTORDISP(base);
6322 basic_ios_char_ctor(base);
6323 }else {
6324 base = basic_ostream_char_get_basic_ios(this);
6327 base->base.vtable = &basic_ostream_char_vtable;
6328 if(addstd)
6329 ios_base_Addstd(&base->base);
6330 return this;
6333 /* ??1?$basic_ostream@DU?$char_traits@D@std@@@std@@UAE@XZ */
6334 /* ??1?$basic_ostream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
6335 DEFINE_THISCALL_WRAPPER(basic_ostream_char_dtor, 4)
6336 void __thiscall basic_ostream_char_dtor(basic_ios_char *base)
6338 basic_ostream_char *this = basic_ostream_char_from_basic_ios(base);
6340 /* don't destroy virtual base here */
6341 TRACE("(%p)\n", this);
6344 /* ??_D?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
6345 /* ??_D?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
6346 DEFINE_THISCALL_WRAPPER(basic_ostream_char_vbase_dtor, 4)
6347 void __thiscall basic_ostream_char_vbase_dtor(basic_ostream_char *this)
6349 basic_ios_char *base = basic_ostream_char_to_basic_ios(this);
6351 TRACE("(%p)\n", this);
6353 basic_ostream_char_dtor(base);
6354 basic_ios_char_dtor(base);
6357 DEFINE_THISCALL_WRAPPER(basic_ostream_char_vector_dtor, 8)
6358 basic_ostream_char* __thiscall basic_ostream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
6360 basic_ostream_char *this = basic_ostream_char_from_basic_ios(base);
6362 TRACE("(%p %x)\n", this, flags);
6364 if(flags & 2) {
6365 /* we have an array, with the number of elements stored before the first object */
6366 INT_PTR i, *ptr = (INT_PTR *)this-1;
6368 for(i=*ptr-1; i>=0; i--)
6369 basic_ostream_char_vbase_dtor(this+i);
6370 operator_delete(ptr);
6371 } else {
6372 basic_ostream_char_vbase_dtor(this);
6373 if(flags & 1)
6374 operator_delete(this);
6377 return this;
6380 /* ?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@XZ */
6381 /* ?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@XZ */
6382 DEFINE_THISCALL_WRAPPER(basic_ostream_char_flush, 4)
6383 basic_ostream_char* __thiscall basic_ostream_char_flush(basic_ostream_char *this)
6385 /* this function is not matching C++ specification */
6386 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6388 TRACE("(%p)\n", this);
6390 if(basic_ios_char_rdbuf_get(base) && ios_base_good(&base->base)
6391 && basic_streambuf_char_pubsync(basic_ios_char_rdbuf_get(base))==-1)
6392 basic_ios_char_setstate(base, IOSTATE_badbit);
6393 return this;
6396 /* ?flush@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@@Z */
6397 /* ?flush@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@1@AEAV21@@Z */
6398 basic_ostream_char* __cdecl flush_ostream_char(basic_ostream_char *ostream)
6400 return basic_ostream_char_flush(ostream);
6403 /* ?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
6404 /* ?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
6405 DEFINE_THISCALL_WRAPPER(basic_ostream_char__Osfx, 4)
6406 void __thiscall basic_ostream_char__Osfx(basic_ostream_char *this)
6408 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6410 TRACE("(%p)\n", this);
6412 if(base->base.fmtfl & FMTFLAG_unitbuf)
6413 basic_ostream_char_flush(this);
6416 /* ?osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
6417 /* ?osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
6418 DEFINE_THISCALL_WRAPPER(basic_ostream_char_osfx, 4)
6419 void __thiscall basic_ostream_char_osfx(basic_ostream_char *this)
6421 TRACE("(%p)\n", this);
6422 basic_ostream_char__Osfx(this);
6425 static BOOL basic_ostream_char_sentry_create(basic_ostream_char *ostr)
6427 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
6429 if(basic_ios_char_rdbuf_get(base))
6430 call_basic_streambuf_char__Lock(base->strbuf);
6432 if(ios_base_good(&base->base) && base->stream)
6433 basic_ostream_char_flush(base->stream);
6435 return ios_base_good(&base->base);
6438 static void basic_ostream_char_sentry_destroy(basic_ostream_char *ostr)
6440 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
6442 if(ios_base_good(&base->base) && !__uncaught_exception())
6443 basic_ostream_char_osfx(ostr);
6445 if(basic_ios_char_rdbuf_get(base))
6446 call_basic_streambuf_char__Unlock(base->strbuf);
6449 /* ?opfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE_NXZ */
6450 /* ?opfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA_NXZ */
6451 DEFINE_THISCALL_WRAPPER(basic_ostream_char_opfx, 4)
6452 bool __thiscall basic_ostream_char_opfx(basic_ostream_char *this)
6454 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6456 TRACE("(%p)\n", this);
6458 if(ios_base_good(&base->base) && base->stream)
6459 basic_ostream_char_flush(base->stream);
6460 return ios_base_good(&base->base);
6463 /* ?put@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@D@Z */
6464 /* ?put@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@D@Z */
6465 DEFINE_THISCALL_WRAPPER(basic_ostream_char_put, 8)
6466 basic_ostream_char* __thiscall basic_ostream_char_put(basic_ostream_char *this, char ch)
6468 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6470 TRACE("(%p %c)\n", this, ch);
6472 if(!basic_ostream_char_sentry_create(this)
6473 || basic_streambuf_char_sputc(base->strbuf, ch)==EOF) {
6474 basic_ostream_char_sentry_destroy(this);
6475 basic_ios_char_setstate(base, IOSTATE_badbit);
6476 return this;
6479 basic_ostream_char_sentry_destroy(this);
6480 return this;
6483 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@JH@Z */
6484 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@_JH@Z */
6485 #if STREAMOFF_BITS == 64
6486 DEFINE_THISCALL_WRAPPER(basic_ostream_char_seekp, 16)
6487 #else
6488 DEFINE_THISCALL_WRAPPER(basic_ostream_char_seekp, 12)
6489 #endif
6490 basic_ostream_char* __thiscall basic_ostream_char_seekp(basic_ostream_char *this, streamoff off, int way)
6492 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6494 TRACE("(%p %s %d)\n", this, wine_dbgstr_longlong(off), way);
6496 if(!ios_base_fail(&base->base)) {
6497 fpos_mbstatet seek;
6499 basic_streambuf_char_pubseekoff(basic_ios_char_rdbuf_get(base),
6500 &seek, off, way, OPENMODE_out);
6501 if(seek.off==-1 && seek.pos==0 && MBSTATET_TO_INT(&seek.state)==0)
6502 basic_ios_char_setstate(base, IOSTATE_failbit);
6504 return this;
6507 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
6508 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
6509 DEFINE_THISCALL_WRAPPER(basic_ostream_char_seekp_fpos, 28)
6510 basic_ostream_char* __thiscall basic_ostream_char_seekp_fpos(basic_ostream_char *this, fpos_mbstatet pos)
6512 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6514 TRACE("(%p %s)\n", this, debugstr_fpos_mbstatet(&pos));
6516 if(!ios_base_fail(&base->base)) {
6517 fpos_mbstatet seek;
6519 basic_streambuf_char_pubseekpos(basic_ios_char_rdbuf_get(base),
6520 &seek, pos, OPENMODE_out);
6521 if(seek.off==-1 && seek.pos==0 && MBSTATET_TO_INT(&seek.state)==0)
6522 basic_ios_char_setstate(base, IOSTATE_failbit);
6524 return this;
6527 /* ?tellp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@XZ */
6528 /* ?tellp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
6529 DEFINE_THISCALL_WRAPPER(basic_ostream_char_tellp, 8)
6530 fpos_mbstatet* __thiscall basic_ostream_char_tellp(basic_ostream_char *this, fpos_mbstatet *ret)
6532 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6534 TRACE("(%p)\n", this);
6536 if(!ios_base_fail(&base->base)) {
6537 basic_streambuf_char_pubseekoff(basic_ios_char_rdbuf_get(base),
6538 ret, 0, SEEKDIR_cur, OPENMODE_out);
6539 }else {
6540 ret->off = -1;
6541 ret->pos = 0;
6542 memset(&ret->state, 0, sizeof(ret->state));
6544 return ret;
6547 /* ?write@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@PBDH@Z */
6548 /* ?write@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEBD_J@Z */
6549 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
6550 DEFINE_THISCALL_WRAPPER(basic_ostream_char_write, 16)
6551 #else
6552 DEFINE_THISCALL_WRAPPER(basic_ostream_char_write, 12)
6553 #endif
6554 basic_ostream_char* __thiscall basic_ostream_char_write(basic_ostream_char *this, const char *str, streamsize count)
6556 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6558 TRACE("(%p %s %s)\n", this, debugstr_a(str), wine_dbgstr_longlong(count));
6560 if(!basic_ostream_char_sentry_create(this)
6561 || basic_streambuf_char_sputn(base->strbuf, str, count)!=count) {
6562 basic_ostream_char_sentry_destroy(this);
6563 basic_ios_char_setstate(base, IOSTATE_badbit);
6564 return this;
6567 basic_ostream_char_sentry_destroy(this);
6568 return this;
6571 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@F@Z */
6572 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@F@Z */
6573 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_short, 8)
6574 basic_ostream_char* __thiscall basic_ostream_char_print_short(basic_ostream_char *this, short val)
6576 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6577 int state = IOSTATE_goodbit;
6579 TRACE("(%p %d)\n", this, val);
6581 if(basic_ostream_char_sentry_create(this)) {
6582 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6583 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
6584 ostreambuf_iterator_char dest;
6586 memset(&dest, 0, sizeof(dest));
6587 dest.strbuf = strbuf;
6588 num_put_char_put_long(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base),
6589 (ios_base_flags_get(&base->base) & FMTFLAG_basefield & (FMTFLAG_oct | FMTFLAG_hex))
6590 ? (LONG)((unsigned short)val) : (LONG)val);
6592 basic_ostream_char_sentry_destroy(this);
6594 basic_ios_char_setstate(base, state);
6595 return this;
6598 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@G@Z */
6599 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@G@Z */
6600 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_ushort, 8)
6601 basic_ostream_char* __thiscall basic_ostream_char_print_ushort(basic_ostream_char *this, unsigned short val)
6603 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6604 int state = IOSTATE_goodbit;
6606 TRACE("(%p %u)\n", this, val);
6608 if(basic_ostream_char_sentry_create(this)) {
6609 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6610 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
6611 ostreambuf_iterator_char dest;
6613 memset(&dest, 0, sizeof(dest));
6614 dest.strbuf = strbuf;
6615 num_put_char_put_ulong(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
6617 basic_ostream_char_sentry_destroy(this);
6619 basic_ios_char_setstate(base, state);
6620 return this;
6623 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@H@Z */
6624 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@H@Z */
6625 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@J@Z */
6626 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@J@Z */
6627 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_int, 8)
6628 basic_ostream_char* __thiscall basic_ostream_char_print_int(basic_ostream_char *this, int val)
6630 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6631 int state = IOSTATE_goodbit;
6633 TRACE("(%p %d)\n", this, val);
6635 if(basic_ostream_char_sentry_create(this)) {
6636 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6637 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
6638 ostreambuf_iterator_char dest;
6640 memset(&dest, 0, sizeof(dest));
6641 dest.strbuf = strbuf;
6642 num_put_char_put_long(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
6644 basic_ostream_char_sentry_destroy(this);
6646 basic_ios_char_setstate(base, state);
6647 return this;
6650 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@I@Z */
6651 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@I@Z */
6652 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@K@Z */
6653 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@K@Z */
6654 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_uint, 8)
6655 basic_ostream_char* __thiscall basic_ostream_char_print_uint(basic_ostream_char *this, unsigned int val)
6657 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6658 int state = IOSTATE_goodbit;
6660 TRACE("(%p %u)\n", this, val);
6662 if(basic_ostream_char_sentry_create(this)) {
6663 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6664 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
6665 ostreambuf_iterator_char dest;
6667 memset(&dest, 0, sizeof(dest));
6668 dest.strbuf = strbuf;
6669 num_put_char_put_ulong(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
6671 basic_ostream_char_sentry_destroy(this);
6673 basic_ios_char_setstate(base, state);
6674 return this;
6677 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@M@Z */
6678 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@M@Z */
6679 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_float, 8)
6680 basic_ostream_char* __thiscall basic_ostream_char_print_float(basic_ostream_char *this, float val)
6682 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6683 int state = IOSTATE_goodbit;
6685 TRACE("(%p %f)\n", this, val);
6687 if(basic_ostream_char_sentry_create(this)) {
6688 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6689 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
6690 ostreambuf_iterator_char dest;
6692 memset(&dest, 0, sizeof(dest));
6693 dest.strbuf = strbuf;
6694 num_put_char_put_double(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
6696 basic_ostream_char_sentry_destroy(this);
6698 basic_ios_char_setstate(base, state);
6699 return this;
6702 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@N@Z */
6703 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@N@Z */
6704 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_double, 12)
6705 basic_ostream_char* __thiscall basic_ostream_char_print_double(basic_ostream_char *this, double val)
6707 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6708 int state = IOSTATE_goodbit;
6710 TRACE("(%p %lf)\n", this, val);
6712 if(basic_ostream_char_sentry_create(this)) {
6713 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6714 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
6715 ostreambuf_iterator_char dest;
6717 memset(&dest, 0, sizeof(dest));
6718 dest.strbuf = strbuf;
6719 num_put_char_put_double(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
6721 basic_ostream_char_sentry_destroy(this);
6723 basic_ios_char_setstate(base, state);
6724 return this;
6727 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@O@Z */
6728 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@O@Z */
6729 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_ldouble, 12)
6730 basic_ostream_char* __thiscall basic_ostream_char_print_ldouble(basic_ostream_char *this, double val)
6732 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6733 int state = IOSTATE_goodbit;
6735 TRACE("(%p %lf)\n", this, val);
6737 if(basic_ostream_char_sentry_create(this)) {
6738 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6739 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
6740 ostreambuf_iterator_char dest;
6742 memset(&dest, 0, sizeof(dest));
6743 dest.strbuf = strbuf;
6744 num_put_char_put_ldouble(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
6746 basic_ostream_char_sentry_destroy(this);
6748 basic_ios_char_setstate(base, state);
6749 return this;
6752 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
6753 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
6754 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_streambuf, 8)
6755 basic_ostream_char* __thiscall basic_ostream_char_print_streambuf(basic_ostream_char *this, basic_streambuf_char *val)
6757 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6758 IOSB_iostate state = IOSTATE_badbit;
6759 int c = '\n';
6761 TRACE("(%p %p)\n", this, val);
6763 if(basic_ostream_char_sentry_create(this)) {
6764 for(c = basic_streambuf_char_sgetc(val); c!=EOF;
6765 c = basic_streambuf_char_snextc(val)) {
6766 state = IOSTATE_goodbit;
6768 if(basic_streambuf_char_sputc(base->strbuf, c) == EOF) {
6769 state = IOSTATE_badbit;
6770 break;
6773 }else {
6774 state = IOSTATE_badbit;
6776 basic_ostream_char_sentry_destroy(this);
6778 ios_base_width_set(&base->base, 0);
6779 basic_ios_char_setstate(base, state);
6780 return this;
6783 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@PBX@Z */
6784 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@PEBX@Z */
6785 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_ptr, 8)
6786 basic_ostream_char* __thiscall basic_ostream_char_print_ptr(basic_ostream_char *this, const void *val)
6788 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6789 int state = IOSTATE_goodbit;
6791 TRACE("(%p %p)\n", this, val);
6793 if(basic_ostream_char_sentry_create(this)) {
6794 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6795 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
6796 ostreambuf_iterator_char dest;
6798 memset(&dest, 0, sizeof(dest));
6799 dest.strbuf = strbuf;
6800 num_put_char_put_ptr(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
6802 basic_ostream_char_sentry_destroy(this);
6804 basic_ios_char_setstate(base, state);
6805 return this;
6808 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@_J@Z */
6809 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@_J@Z */
6810 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_int64, 12)
6811 basic_ostream_char* __thiscall basic_ostream_char_print_int64(basic_ostream_char *this, __int64 val)
6813 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6814 int state = IOSTATE_goodbit;
6816 TRACE("(%p)\n", this);
6818 if(basic_ostream_char_sentry_create(this)) {
6819 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6820 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
6821 ostreambuf_iterator_char dest;
6823 memset(&dest, 0, sizeof(dest));
6824 dest.strbuf = strbuf;
6825 num_put_char_put_int64(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
6827 basic_ostream_char_sentry_destroy(this);
6829 basic_ios_char_setstate(base, state);
6830 return this;
6833 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@_K@Z */
6834 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@_K@Z */
6835 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_uint64, 12)
6836 basic_ostream_char* __thiscall basic_ostream_char_print_uint64(basic_ostream_char *this, unsigned __int64 val)
6838 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6839 int state = IOSTATE_goodbit;
6841 TRACE("(%p)\n", this);
6843 if(basic_ostream_char_sentry_create(this)) {
6844 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6845 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
6846 ostreambuf_iterator_char dest;
6848 memset(&dest, 0, sizeof(dest));
6849 dest.strbuf = strbuf;
6850 num_put_char_put_uint64(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
6852 basic_ostream_char_sentry_destroy(this);
6854 basic_ios_char_setstate(base, state);
6855 return this;
6858 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@_N@Z */
6859 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@_N@Z */
6860 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_bool, 8)
6861 basic_ostream_char* __thiscall basic_ostream_char_print_bool(basic_ostream_char *this, bool val)
6863 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6864 int state = IOSTATE_goodbit;
6866 TRACE("(%p %x)\n", this, val);
6868 if(basic_ostream_char_sentry_create(this)) {
6869 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6870 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
6871 ostreambuf_iterator_char dest;
6873 memset(&dest, 0, sizeof(dest));
6874 dest.strbuf = strbuf;
6875 num_put_char_put_bool(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
6877 basic_ostream_char_sentry_destroy(this);
6879 basic_ios_char_setstate(base, state);
6880 return this;
6883 /* ?ends@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@@Z */
6884 /* ?ends@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@1@AEAV21@@Z */
6885 basic_ostream_char* __cdecl basic_ostream_char_ends(basic_ostream_char *ostr)
6887 TRACE("(%p)\n", ostr);
6889 basic_ostream_char_put(ostr, 0);
6890 return ostr;
6893 /* ?endl@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@@Z */
6894 /* ?endl@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@1@AEAV21@@Z */
6895 basic_ostream_char* __cdecl basic_ostream_char_endl(basic_ostream_char *ostr)
6897 TRACE("(%p)\n", ostr);
6899 basic_ostream_char_put(ostr, '\n');
6900 basic_ostream_char_flush(ostr);
6901 return ostr;
6904 /* ??$?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 */
6905 /* ??$?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 */
6906 basic_ostream_char* __cdecl basic_ostream_char_print_bstr(basic_ostream_char *ostr, const basic_string_char *str)
6908 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
6909 IOSB_iostate state = IOSTATE_goodbit;
6911 TRACE("(%p %p)\n", ostr, str);
6913 if(basic_ostream_char_sentry_create(ostr)) {
6914 size_t len = MSVCP_basic_string_char_length(str);
6915 streamsize pad = (base->base.wide>len ? base->base.wide-len : 0);
6917 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
6918 for(; pad!=0; pad--) {
6919 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
6920 state = IOSTATE_badbit;
6921 break;
6926 if(state == IOSTATE_goodbit) {
6927 if(basic_streambuf_char_sputn(base->strbuf, MSVCP_basic_string_char_c_str(str), len) != len)
6928 state = IOSTATE_badbit;
6931 if(state == IOSTATE_goodbit) {
6932 for(; pad!=0; pad--) {
6933 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
6934 state = IOSTATE_badbit;
6935 break;
6940 base->base.wide = 0;
6941 }else {
6942 state = IOSTATE_badbit;
6944 basic_ostream_char_sentry_destroy(ostr);
6946 basic_ios_char_setstate(base, state);
6947 return ostr;
6950 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@C@Z */
6951 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@C@Z */
6952 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@D@Z */
6953 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z */
6954 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@E@Z */
6955 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@E@Z */
6956 basic_ostream_char* __cdecl basic_ostream_char_print_ch(basic_ostream_char *ostr, char ch)
6958 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
6959 IOSB_iostate state = IOSTATE_goodbit;
6961 TRACE("(%p %d)\n", ostr, ch);
6963 if(basic_ostream_char_sentry_create(ostr)) {
6964 streamsize pad = (base->base.wide>1 ? base->base.wide-1 : 0);
6966 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
6967 for(; pad!=0; pad--) {
6968 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
6969 state = IOSTATE_badbit;
6970 break;
6975 if(state == IOSTATE_goodbit) {
6976 if(basic_streambuf_char_sputc(base->strbuf, ch) == EOF)
6977 state = IOSTATE_badbit;
6980 if(state == IOSTATE_goodbit) {
6981 for(; pad!=0; pad--) {
6982 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
6983 state = IOSTATE_badbit;
6984 break;
6989 base->base.wide = 0;
6990 }else {
6991 state = IOSTATE_badbit;
6993 basic_ostream_char_sentry_destroy(ostr);
6995 basic_ios_char_setstate(base, state);
6996 return ostr;
6999 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBC@Z */
7000 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBC@Z */
7001 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBD@Z */
7002 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBD@Z */
7003 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBE@Z */
7004 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBE@Z */
7005 basic_ostream_char* __cdecl basic_ostream_char_print_str(basic_ostream_char *ostr, const char *str)
7007 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
7008 IOSB_iostate state = IOSTATE_goodbit;
7010 TRACE("(%p %s)\n", ostr, str);
7012 if(basic_ostream_char_sentry_create(ostr)) {
7013 size_t len = strlen(str);
7014 streamsize pad = (base->base.wide>len ? base->base.wide-len : 0);
7016 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
7017 for(; pad!=0; pad--) {
7018 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
7019 state = IOSTATE_badbit;
7020 break;
7025 if(state == IOSTATE_goodbit) {
7026 if(basic_streambuf_char_sputn(base->strbuf, str, len) != len)
7027 state = IOSTATE_badbit;
7030 if(state == IOSTATE_goodbit) {
7031 for(; pad!=0; pad--) {
7032 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
7033 state = IOSTATE_badbit;
7034 break;
7039 base->base.wide = 0;
7040 }else {
7041 state = IOSTATE_badbit;
7043 basic_ostream_char_sentry_destroy(ostr);
7045 basic_ios_char_setstate(base, state);
7046 return ostr;
7049 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
7050 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
7051 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_func, 8)
7052 basic_ostream_char* __thiscall basic_ostream_char_print_func(basic_ostream_char *this,
7053 basic_ostream_char* (__cdecl *pfunc)(basic_ostream_char*))
7055 TRACE("(%p %p)\n", this, pfunc);
7056 pfunc(this);
7057 return this;
7060 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@DU?$char_traits@D@std@@@1@AAV21@@Z@Z */
7061 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@DU?$char_traits@D@std@@@1@AEAV21@@Z@Z */
7062 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_func_basic_ios, 8)
7063 basic_ostream_char* __thiscall basic_ostream_char_print_func_basic_ios(basic_ostream_char *this,
7064 basic_ios_char* (__cdecl *pfunc)(basic_ios_char*))
7066 TRACE("(%p %p)\n", this, pfunc);
7067 pfunc(basic_ostream_char_get_basic_ios(this));
7068 return this;
7071 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
7072 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
7073 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_func_ios_base, 8)
7074 basic_ostream_char* __thiscall basic_ostream_char_print_func_ios_base(
7075 basic_ostream_char *this, ios_base* (__cdecl *pfunc)(ios_base*))
7077 TRACE("(%p %p)\n", this, pfunc);
7078 pfunc(&basic_ostream_char_get_basic_ios(this)->base);
7079 return this;
7082 /* ?swap@?$basic_ostream@DU?$char_traits@D@std@@@std@@IAEXAAV12@@Z */
7083 /* ?swap@?$basic_ostream@DU?$char_traits@D@std@@@std@@IEAAXAEAV12@@Z */
7084 DEFINE_THISCALL_WRAPPER(basic_ostream_char_swap, 8)
7085 void __thiscall basic_ostream_char_swap(basic_ostream_char *this, basic_ostream_char *r)
7087 TRACE("(%p %p)\n", this, r);
7089 if(this == r)
7090 return;
7092 basic_ios_char_swap(basic_ostream_char_get_basic_ios(this),
7093 basic_ostream_char_get_basic_ios(r));
7096 /* Caution: basic_ostream uses virtual inheritance. */
7097 static inline basic_ios_wchar* basic_ostream_wchar_get_basic_ios(basic_ostream_wchar *this)
7099 return (basic_ios_wchar*)((char*)this+this->vbtable[1]);
7102 static inline basic_ios_wchar* basic_ostream_wchar_to_basic_ios(basic_ostream_wchar *ptr)
7104 return (basic_ios_wchar*)((char*)ptr+basic_ostream_wchar_vbtable[1]);
7107 static inline basic_ostream_wchar* basic_ostream_wchar_from_basic_ios(basic_ios_wchar *ptr)
7109 return (basic_ostream_wchar*)((char*)ptr-basic_ostream_wchar_vbtable[1]);
7112 /* ??0?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z */
7113 /* ??0?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z */
7114 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_ctor, 16)
7115 basic_ostream_wchar* __thiscall basic_ostream_wchar_ctor(basic_ostream_wchar *this,
7116 basic_streambuf_wchar *strbuf, bool isstd, bool virt_init)
7118 basic_ios_wchar *base;
7120 TRACE("(%p %p %d %d)\n", this, strbuf, isstd, virt_init);
7122 if(virt_init) {
7123 this->vbtable = basic_ostream_wchar_vbtable;
7124 base = basic_ostream_wchar_get_basic_ios(this);
7125 INIT_BASIC_IOS_VTORDISP(base);
7126 basic_ios_wchar_ctor(base);
7127 }else {
7128 base = basic_ostream_wchar_get_basic_ios(this);
7131 base->base.vtable = &basic_ostream_wchar_vtable;
7132 basic_ios_wchar_init(base, strbuf, isstd);
7133 return this;
7136 /* ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N@Z */
7137 /* ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N@Z */
7138 DEFINE_THISCALL_WRAPPER(basic_ostream_short_ctor, 16)
7139 basic_ostream_wchar* __thiscall basic_ostream_short_ctor(basic_ostream_wchar *this,
7140 basic_streambuf_wchar *strbuf, bool isstd, bool virt_init)
7142 basic_ostream_wchar_ctor(this, strbuf, isstd, virt_init);
7143 basic_ostream_wchar_get_basic_ios(this)->base.vtable = &basic_ostream_short_vtable;
7144 return this;
7147 /* ??0?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAE@W4_Uninitialized@1@_N@Z */
7148 /* ??0?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAA@W4_Uninitialized@1@_N@Z */
7149 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_ctor_uninitialized, 16)
7150 basic_ostream_wchar* __thiscall basic_ostream_wchar_ctor_uninitialized(basic_ostream_wchar *this,
7151 int uninitialized, bool addstd, bool virt_init)
7153 basic_ios_wchar *base;
7155 TRACE("(%p %d %x)\n", this, uninitialized, addstd);
7157 if(virt_init) {
7158 this->vbtable = basic_ostream_wchar_vbtable;
7159 base = basic_ostream_wchar_get_basic_ios(this);
7160 INIT_BASIC_IOS_VTORDISP(base);
7161 basic_ios_wchar_ctor(base);
7162 }else {
7163 base = basic_ostream_wchar_get_basic_ios(this);
7166 base->base.vtable = &basic_ostream_wchar_vtable;
7167 if(addstd)
7168 ios_base_Addstd(&base->base);
7169 return this;
7172 /* ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE@W4_Uninitialized@1@_N@Z */
7173 /* ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA@W4_Uninitialized@1@_N@Z */
7174 DEFINE_THISCALL_WRAPPER(basic_ostream_short_ctor_uninitialized, 16)
7175 basic_ostream_wchar* __thiscall basic_ostream_short_ctor_uninitialized(basic_ostream_wchar *this,
7176 int uninitialized, bool addstd, bool virt_init)
7178 basic_ostream_wchar_ctor_uninitialized(this, uninitialized, addstd, virt_init);
7179 basic_ostream_wchar_get_basic_ios(this)->base.vtable = &basic_ostream_short_vtable;
7180 return this;
7183 /* ??1?$basic_ostream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
7184 /* ??1?$basic_ostream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
7185 /* ??1?$basic_ostream@GU?$char_traits@G@std@@@std@@UAE@XZ */
7186 /* ??1?$basic_ostream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
7187 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_dtor, 4)
7188 void __thiscall basic_ostream_wchar_dtor(basic_ios_wchar *base)
7190 basic_ostream_wchar *this = basic_ostream_wchar_from_basic_ios(base);
7192 /* don't destroy virtual base here */
7193 TRACE("(%p)\n", this);
7196 /* ??_D?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
7197 /* ??_D?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
7198 /* ??_D?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEXXZ */
7199 /* ??_D?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
7200 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_vbase_dtor, 4)
7201 void __thiscall basic_ostream_wchar_vbase_dtor(basic_ostream_wchar *this)
7203 basic_ios_wchar *base = basic_ostream_wchar_to_basic_ios(this);
7205 TRACE("(%p)\n", this);
7207 basic_ostream_wchar_dtor(base);
7208 basic_ios_wchar_dtor(base);
7211 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_vector_dtor, 8)
7212 basic_ostream_wchar* __thiscall basic_ostream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
7214 basic_ostream_wchar *this = basic_ostream_wchar_from_basic_ios(base);
7216 TRACE("(%p %x)\n", this, flags);
7218 if(flags & 2) {
7219 /* we have an array, with the number of elements stored before the first object */
7220 INT_PTR i, *ptr = (INT_PTR *)this-1;
7222 for(i=*ptr-1; i>=0; i--)
7223 basic_ostream_wchar_vbase_dtor(this+i);
7224 operator_delete(ptr);
7225 } else {
7226 basic_ostream_wchar_vbase_dtor(this);
7227 if(flags & 1)
7228 operator_delete(this);
7231 return this;
7234 /* ?flush@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@XZ */
7235 /* ?flush@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@XZ */
7236 /* ?flush@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@XZ */
7237 /* ?flush@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@XZ */
7238 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_flush, 4)
7239 basic_ostream_wchar* __thiscall basic_ostream_wchar_flush(basic_ostream_wchar *this)
7241 /* this function is not matching C++ specification */
7242 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7244 TRACE("(%p)\n", this);
7246 if(basic_ios_wchar_rdbuf_get(base) && ios_base_good(&base->base)
7247 && basic_streambuf_wchar_pubsync(basic_ios_wchar_rdbuf_get(base))==-1)
7248 basic_ios_wchar_setstate(base, IOSTATE_badbit);
7249 return this;
7252 /* ?flush@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@AAV21@@Z */
7253 /* ?flush@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@AEAV21@@Z */
7254 /* ?flush@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@1@AAV21@@Z */
7255 /* ?flush@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@1@AEAV21@@Z */
7256 basic_ostream_wchar* __cdecl flush_ostream_wchar(basic_ostream_wchar *ostream)
7258 return basic_ostream_wchar_flush(ostream);
7261 /* ?_Osfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
7262 /* ?_Osfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
7263 /* ?_Osfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEXXZ */
7264 /* ?_Osfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
7265 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar__Osfx, 4)
7266 void __thiscall basic_ostream_wchar__Osfx(basic_ostream_wchar *this)
7268 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7270 TRACE("(%p)\n", this);
7272 if(base->base.fmtfl & FMTFLAG_unitbuf)
7273 basic_ostream_wchar_flush(this);
7276 /* ?osfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
7277 /* ?osfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
7278 /* ?osfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEXXZ */
7279 /* ?osfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
7280 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_osfx, 4)
7281 void __thiscall basic_ostream_wchar_osfx(basic_ostream_wchar *this)
7283 TRACE("(%p)\n", this);
7284 basic_ostream_wchar__Osfx(this);
7287 static BOOL basic_ostream_wchar_sentry_create(basic_ostream_wchar *ostr)
7289 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(ostr);
7291 if(basic_ios_wchar_rdbuf_get(base))
7292 basic_streambuf_wchar__Lock(base->strbuf);
7294 if(ios_base_good(&base->base) && base->stream)
7295 basic_ostream_wchar_flush(base->stream);
7297 return ios_base_good(&base->base);
7300 static void basic_ostream_wchar_sentry_destroy(basic_ostream_wchar *ostr)
7302 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(ostr);
7304 if(ios_base_good(&base->base) && !__uncaught_exception())
7305 basic_ostream_wchar_osfx(ostr);
7307 if(basic_ios_wchar_rdbuf_get(base))
7308 basic_streambuf_wchar__Unlock(base->strbuf);
7311 /* ?opfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAE_NXZ */
7312 /* ?opfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAA_NXZ */
7313 /* ?opfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE_NXZ */
7314 /* ?opfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA_NXZ */
7315 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_opfx, 4)
7316 bool __thiscall basic_ostream_wchar_opfx(basic_ostream_wchar *this)
7318 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7320 TRACE("(%p)\n", this);
7322 if(ios_base_good(&base->base) && base->stream)
7323 basic_ostream_wchar_flush(base->stream);
7324 return ios_base_good(&base->base);
7327 /* ?put@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@_W@Z */
7328 /* ?put@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_W@Z */
7329 /* ?put@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@G@Z */
7330 /* ?put@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@G@Z */
7331 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_put, 8)
7332 basic_ostream_wchar* __thiscall basic_ostream_wchar_put(basic_ostream_wchar *this, wchar_t ch)
7334 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7336 TRACE("(%p %c)\n", this, ch);
7338 if(!basic_ostream_wchar_sentry_create(this)
7339 || basic_streambuf_wchar_sputc(base->strbuf, ch)==WEOF) {
7340 basic_ostream_wchar_sentry_destroy(this);
7341 basic_ios_wchar_setstate(base, IOSTATE_badbit);
7342 return this;
7345 basic_ostream_wchar_sentry_destroy(this);
7346 return this;
7349 /* ?seekp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@JH@Z */
7350 /* ?seekp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_JH@Z */
7351 /* ?seekp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@JH@Z */
7352 /* ?seekp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@_JH@Z */
7353 #if STREAMOFF_BITS == 64
7354 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_seekp, 16)
7355 #else
7356 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_seekp, 12)
7357 #endif
7358 basic_ostream_wchar* __thiscall basic_ostream_wchar_seekp(basic_ostream_wchar *this, streamoff off, int way)
7360 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7362 TRACE("(%p %s %d)\n", this, wine_dbgstr_longlong(off), way);
7364 if(!ios_base_fail(&base->base)) {
7365 fpos_mbstatet seek;
7367 basic_streambuf_wchar_pubseekoff(basic_ios_wchar_rdbuf_get(base),
7368 &seek, off, way, OPENMODE_out);
7369 if(seek.off==-1 && seek.pos==0 && MBSTATET_TO_INT(&seek.state)==0)
7370 basic_ios_wchar_setstate(base, IOSTATE_failbit);
7372 return this;
7375 /* ?seekp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
7376 /* ?seekp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
7377 /* ?seekp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
7378 /* ?seekp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
7379 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_seekp_fpos, 28)
7380 basic_ostream_wchar* __thiscall basic_ostream_wchar_seekp_fpos(basic_ostream_wchar *this, fpos_mbstatet pos)
7382 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7384 TRACE("(%p %s)\n", this, debugstr_fpos_mbstatet(&pos));
7386 if(!ios_base_fail(&base->base)) {
7387 fpos_mbstatet seek;
7389 basic_streambuf_wchar_pubseekpos(basic_ios_wchar_rdbuf_get(base),
7390 &seek, pos, OPENMODE_out);
7391 if(seek.off==-1 && seek.pos==0 && MBSTATET_TO_INT(&seek.state)==0)
7392 basic_ios_wchar_setstate(base, IOSTATE_failbit);
7394 return this;
7397 /* ?tellp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@XZ */
7398 /* ?tellp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
7399 /* ?tellp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@XZ */
7400 /* ?tellp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
7401 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_tellp, 8)
7402 fpos_mbstatet* __thiscall basic_ostream_wchar_tellp(basic_ostream_wchar *this, fpos_mbstatet *ret)
7404 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7406 TRACE("(%p)\n", this);
7408 if(!ios_base_fail(&base->base)) {
7409 basic_streambuf_wchar_pubseekoff(basic_ios_wchar_rdbuf_get(base),
7410 ret, 0, SEEKDIR_cur, OPENMODE_out);
7411 }else {
7412 ret->off = -1;
7413 ret->pos = 0;
7414 memset(&ret->state, 0, sizeof(ret->state));
7416 return ret;
7419 /* ?write@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PB_WH@Z */
7420 /* ?write@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEB_W_J@Z */
7421 /* ?write@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@PBGH@Z */
7422 /* ?write@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEBG_J@Z */
7423 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
7424 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_write, 16)
7425 #else
7426 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_write, 12)
7427 #endif
7428 basic_ostream_wchar* __thiscall basic_ostream_wchar_write(basic_ostream_wchar *this, const wchar_t *str, streamsize count)
7430 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7432 TRACE("(%p %s %s)\n", this, debugstr_w(str), wine_dbgstr_longlong(count));
7434 if(!basic_ostream_wchar_sentry_create(this)
7435 || basic_streambuf_wchar_sputn(base->strbuf, str, count)!=count) {
7436 basic_ostream_wchar_sentry_destroy(this);
7437 basic_ios_wchar_setstate(base, IOSTATE_badbit);
7438 return this;
7441 basic_ostream_wchar_sentry_destroy(this);
7442 return this;
7445 static basic_ostream_wchar* basic_ostream_print_short(basic_ostream_wchar *this, short val, const num_put *numput)
7447 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7448 int state = IOSTATE_goodbit;
7450 TRACE("(%p %d)\n", this, val);
7452 if(basic_ostream_wchar_sentry_create(this)) {
7453 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7454 ostreambuf_iterator_wchar dest;
7456 memset(&dest, 0, sizeof(dest));
7457 dest.strbuf = strbuf;
7458 num_put_wchar_put_long(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base),
7459 (ios_base_flags_get(&base->base) & FMTFLAG_basefield & (FMTFLAG_oct | FMTFLAG_hex))
7460 ? (LONG)((unsigned short)val) : (LONG)val);
7462 basic_ostream_wchar_sentry_destroy(this);
7464 basic_ios_wchar_setstate(base, state);
7465 return this;
7468 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@F@Z */
7469 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@F@Z */
7470 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_short, 8)
7471 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_short(basic_ostream_wchar *this, short val)
7473 return basic_ostream_print_short(this, val, num_put_wchar_use_facet(
7474 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7477 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@F@Z */
7478 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@F@Z */
7479 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_short, 8)
7480 basic_ostream_wchar* __thiscall basic_ostream_short_print_short(basic_ostream_wchar *this, short val)
7482 return basic_ostream_print_short(this, val, num_put_short_use_facet(
7483 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7486 static basic_ostream_wchar* basic_ostream_print_ushort(basic_ostream_wchar *this, unsigned short val, const num_put *numput)
7488 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7489 int state = IOSTATE_goodbit;
7491 TRACE("(%p %d)\n", this, val);
7493 if(basic_ostream_wchar_sentry_create(this)) {
7494 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7495 ostreambuf_iterator_wchar dest;
7497 memset(&dest, 0, sizeof(dest));
7498 dest.strbuf = strbuf;
7499 num_put_wchar_put_ulong(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
7501 basic_ostream_wchar_sentry_destroy(this);
7503 basic_ios_wchar_setstate(base, state);
7504 return this;
7507 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@G@Z */
7508 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@G@Z */
7509 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_ushort, 8)
7510 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_ushort(basic_ostream_wchar *this, unsigned short val)
7512 return basic_ostream_print_ushort(this, val, num_put_wchar_use_facet(
7513 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7516 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@G@Z */
7517 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@G@Z */
7518 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_ushort, 8)
7519 basic_ostream_wchar* __thiscall basic_ostream_short_print_ushort(basic_ostream_wchar *this, unsigned short val)
7521 return basic_ostream_print_ushort(this, val, num_put_short_use_facet(
7522 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7525 /* ??6std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@0@AAV10@G@Z */
7526 /* ??6std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@0@AEAV10@G@Z */
7527 basic_ostream_wchar* __cdecl basic_ostream_short_print_ushort_global(basic_ostream_wchar *ostr, unsigned short val)
7529 return basic_ostream_print_ushort(ostr, val, num_put_short_use_facet(
7530 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(ostr)))));
7533 static basic_ostream_wchar* basic_ostream_print_int(basic_ostream_wchar *this, int val, const num_put *numput)
7535 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7536 int state = IOSTATE_goodbit;
7538 TRACE("(%p %d)\n", this, val);
7540 if(basic_ostream_wchar_sentry_create(this)) {
7541 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7542 ostreambuf_iterator_wchar dest;
7544 memset(&dest, 0, sizeof(dest));
7545 dest.strbuf = strbuf;
7546 num_put_wchar_put_long(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
7548 basic_ostream_wchar_sentry_destroy(this);
7550 basic_ios_wchar_setstate(base, state);
7551 return this;
7554 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@H@Z */
7555 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@H@Z */
7556 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@J@Z */
7557 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@J@Z */
7558 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_int, 8)
7559 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_int(basic_ostream_wchar *this, int val)
7561 return basic_ostream_print_int(this, val, num_put_wchar_use_facet(
7562 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7565 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@H@Z */
7566 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@H@Z */
7567 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@J@Z */
7568 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@J@Z */
7569 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_int, 8)
7570 basic_ostream_wchar* __thiscall basic_ostream_short_print_int(basic_ostream_wchar *this, int val)
7572 return basic_ostream_print_int(this, val, num_put_short_use_facet(
7573 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7576 static basic_ostream_wchar* basic_ostream_print_uint(basic_ostream_wchar *this, unsigned int val, const num_put *numput)
7578 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7579 int state = IOSTATE_goodbit;
7581 TRACE("(%p %u)\n", this, val);
7583 if(basic_ostream_wchar_sentry_create(this)) {
7584 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7585 ostreambuf_iterator_wchar dest;
7587 memset(&dest, 0, sizeof(dest));
7588 dest.strbuf = strbuf;
7589 num_put_wchar_put_ulong(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
7591 basic_ostream_wchar_sentry_destroy(this);
7593 basic_ios_wchar_setstate(base, state);
7594 return this;
7597 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@I@Z */
7598 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@I@Z */
7599 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@K@Z */
7600 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@K@Z */
7601 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_uint, 8)
7602 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_uint(basic_ostream_wchar *this, unsigned int val)
7604 return basic_ostream_print_uint(this, val, num_put_wchar_use_facet(
7605 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7608 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@I@Z */
7609 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@I@Z */
7610 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@K@Z */
7611 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@K@Z */
7612 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_uint, 8)
7613 basic_ostream_wchar* __thiscall basic_ostream_short_print_uint(basic_ostream_wchar *this, unsigned int val)
7615 return basic_ostream_print_uint(this, val, num_put_short_use_facet(
7616 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7619 static basic_ostream_wchar* basic_ostream_print_float(basic_ostream_wchar *this, float val, const num_put *numput)
7621 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7622 int state = IOSTATE_goodbit;
7624 TRACE("(%p %f)\n", this, val);
7626 if(basic_ostream_wchar_sentry_create(this)) {
7627 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7628 ostreambuf_iterator_wchar dest;
7630 memset(&dest, 0, sizeof(dest));
7631 dest.strbuf = strbuf;
7632 num_put_wchar_put_double(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
7634 basic_ostream_wchar_sentry_destroy(this);
7636 basic_ios_wchar_setstate(base, state);
7637 return this;
7640 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@M@Z */
7641 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@M@Z */
7642 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_float, 8)
7643 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_float(basic_ostream_wchar *this, float val)
7645 return basic_ostream_print_float(this, val, num_put_wchar_use_facet(
7646 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7649 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@M@Z */
7650 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@M@Z */
7651 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_float, 8)
7652 basic_ostream_wchar* __thiscall basic_ostream_short_print_float(basic_ostream_wchar *this, float val)
7654 return basic_ostream_print_float(this, val, num_put_short_use_facet(
7655 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7658 static basic_ostream_wchar* basic_ostream_print_double(basic_ostream_wchar *this, double val, const num_put *numput)
7660 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7661 int state = IOSTATE_goodbit;
7663 TRACE("(%p %lf)\n", this, val);
7665 if(basic_ostream_wchar_sentry_create(this)) {
7666 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7667 ostreambuf_iterator_wchar dest;
7669 memset(&dest, 0, sizeof(dest));
7670 dest.strbuf = strbuf;
7671 num_put_wchar_put_double(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
7673 basic_ostream_wchar_sentry_destroy(this);
7675 basic_ios_wchar_setstate(base, state);
7676 return this;
7679 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@N@Z */
7680 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@N@Z */
7681 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_double, 12)
7682 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_double(basic_ostream_wchar *this, double val)
7684 return basic_ostream_print_double(this, val, num_put_wchar_use_facet(
7685 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7688 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@N@Z */
7689 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@N@Z */
7690 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_double, 12)
7691 basic_ostream_wchar* __thiscall basic_ostream_short_print_double(basic_ostream_wchar *this, double val)
7693 return basic_ostream_print_double(this, val, num_put_short_use_facet(
7694 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7697 static basic_ostream_wchar* basic_ostream_print_ldouble(basic_ostream_wchar *this, double val, const num_put *numput)
7699 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7700 int state = IOSTATE_goodbit;
7702 TRACE("(%p %lf)\n", this, val);
7704 if(basic_ostream_wchar_sentry_create(this)) {
7705 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7706 ostreambuf_iterator_wchar dest;
7708 memset(&dest, 0, sizeof(dest));
7709 dest.strbuf = strbuf;
7710 num_put_wchar_put_ldouble(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
7712 basic_ostream_wchar_sentry_destroy(this);
7714 basic_ios_wchar_setstate(base, state);
7715 return this;
7718 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@O@Z */
7719 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@O@Z */
7720 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_ldouble, 12)
7721 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_ldouble(basic_ostream_wchar *this, double val)
7723 return basic_ostream_print_ldouble(this, val, num_put_wchar_use_facet(
7724 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7727 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@O@Z */
7728 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@O@Z */
7729 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_ldouble, 12)
7730 basic_ostream_wchar* __thiscall basic_ostream_short_print_ldouble(basic_ostream_wchar *this, double val)
7732 return basic_ostream_print_ldouble(this, val, num_put_short_use_facet(
7733 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7736 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
7737 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
7738 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
7739 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
7740 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_streambuf, 8)
7741 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_streambuf(basic_ostream_wchar *this, basic_streambuf_wchar *val)
7743 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7744 IOSB_iostate state = IOSTATE_badbit;
7745 unsigned short c = '\n';
7747 TRACE("(%p %p)\n", this, val);
7749 if(basic_ostream_wchar_sentry_create(this)) {
7750 for(c = basic_streambuf_wchar_sgetc(val); c!=WEOF;
7751 c = basic_streambuf_wchar_snextc(val)) {
7752 state = IOSTATE_goodbit;
7754 if(basic_streambuf_wchar_sputc(base->strbuf, c) == WEOF) {
7755 state = IOSTATE_badbit;
7756 break;
7759 }else {
7760 state = IOSTATE_badbit;
7762 basic_ostream_wchar_sentry_destroy(this);
7764 ios_base_width_set(&base->base, 0);
7765 basic_ios_wchar_setstate(base, state);
7766 return this;
7769 static basic_ostream_wchar* basic_ostream_print_ptr(basic_ostream_wchar *this, const void *val, const num_put *numput)
7771 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7772 int state = IOSTATE_goodbit;
7774 TRACE("(%p %p)\n", this, val);
7776 if(basic_ostream_wchar_sentry_create(this)) {
7777 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7778 ostreambuf_iterator_wchar dest;
7780 memset(&dest, 0, sizeof(dest));
7781 dest.strbuf = strbuf;
7782 num_put_wchar_put_ptr(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
7784 basic_ostream_wchar_sentry_destroy(this);
7786 basic_ios_wchar_setstate(base, state);
7787 return this;
7790 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@PBX@Z */
7791 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@PEBX@Z */
7792 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_ptr, 8)
7793 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_ptr(basic_ostream_wchar *this, const void *val)
7795 return basic_ostream_print_ptr(this, val, num_put_wchar_use_facet(
7796 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7799 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@PBX@Z */
7800 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@PEBX@Z */
7801 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_ptr, 8)
7802 basic_ostream_wchar* __thiscall basic_ostream_short_print_ptr(basic_ostream_wchar *this, const void *val)
7804 return basic_ostream_print_ptr(this, val, num_put_short_use_facet(
7805 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7808 static basic_ostream_wchar* basic_ostream_print_int64(basic_ostream_wchar *this, __int64 val, const num_put *numput)
7810 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7811 int state = IOSTATE_goodbit;
7813 TRACE("(%p)\n", this);
7815 if(basic_ostream_wchar_sentry_create(this)) {
7816 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7817 ostreambuf_iterator_wchar dest;
7819 memset(&dest, 0, sizeof(dest));
7820 dest.strbuf = strbuf;
7821 num_put_wchar_put_int64(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
7823 basic_ostream_wchar_sentry_destroy(this);
7825 basic_ios_wchar_setstate(base, state);
7826 return this;
7829 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@_J@Z */
7830 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@_J@Z */
7831 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_int64, 12)
7832 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_int64(basic_ostream_wchar *this, __int64 val)
7834 return basic_ostream_print_int64(this, val, num_put_wchar_use_facet(
7835 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7838 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@_J@Z */
7839 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@_J@Z */
7840 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_int64, 12)
7841 basic_ostream_wchar* __thiscall basic_ostream_short_print_int64(basic_ostream_wchar *this, __int64 val)
7843 return basic_ostream_print_int64(this, val, num_put_short_use_facet(
7844 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7847 static basic_ostream_wchar* basic_ostream_print_uint64(basic_ostream_wchar *this, unsigned __int64 val, const num_put *numput)
7849 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7850 int state = IOSTATE_goodbit;
7852 TRACE("(%p)\n", this);
7854 if(basic_ostream_wchar_sentry_create(this)) {
7855 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7856 ostreambuf_iterator_wchar dest;
7858 memset(&dest, 0, sizeof(dest));
7859 dest.strbuf = strbuf;
7860 num_put_wchar_put_uint64(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
7862 basic_ostream_wchar_sentry_destroy(this);
7864 basic_ios_wchar_setstate(base, state);
7865 return this;
7868 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@_K@Z */
7869 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@_K@Z */
7870 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_uint64, 12)
7871 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_uint64(basic_ostream_wchar *this, unsigned __int64 val)
7873 return basic_ostream_print_uint64(this, val, num_put_wchar_use_facet(
7874 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7877 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@_K@Z */
7878 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@_K@Z */
7879 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_uint64, 12)
7880 basic_ostream_wchar* __thiscall basic_ostream_short_print_uint64(basic_ostream_wchar *this, unsigned __int64 val)
7882 return basic_ostream_print_uint64(this, val, num_put_short_use_facet(
7883 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7886 static basic_ostream_wchar* basic_ostream_print_bool(basic_ostream_wchar *this, bool val, const num_put *numput)
7888 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7889 int state = IOSTATE_goodbit;
7891 TRACE("(%p %x)\n", this, val);
7893 if(basic_ostream_wchar_sentry_create(this)) {
7894 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7895 ostreambuf_iterator_wchar dest;
7897 memset(&dest, 0, sizeof(dest));
7898 dest.strbuf = strbuf;
7899 num_put_wchar_put_bool(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
7901 basic_ostream_wchar_sentry_destroy(this);
7903 basic_ios_wchar_setstate(base, state);
7904 return this;
7907 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@_N@Z */
7908 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@_N@Z */
7909 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_bool, 8)
7910 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_bool(basic_ostream_wchar *this, bool val)
7912 return basic_ostream_print_bool(this, val, num_put_wchar_use_facet(
7913 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7916 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@_N@Z */
7917 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@_N@Z */
7918 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_bool, 8)
7919 basic_ostream_wchar* __thiscall basic_ostream_short_print_bool(basic_ostream_wchar *this, bool val)
7921 return basic_ostream_print_bool(this, val, num_put_short_use_facet(
7922 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7925 /* ?ends@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@AAV21@@Z */
7926 /* ?ends@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@AEAV21@@Z */
7927 /* ?ends@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@1@AAV21@@Z */
7928 /* ?ends@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@1@AEAV21@@Z */
7929 basic_ostream_wchar* __cdecl basic_ostream_wchar_ends(basic_ostream_wchar *ostr)
7931 TRACE("(%p)\n", ostr);
7933 basic_ostream_wchar_put(ostr, 0);
7934 return ostr;
7937 /* ?endl@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@AAV21@@Z */
7938 /* ?endl@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@AEAV21@@Z */
7939 /* ?endl@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@1@AAV21@@Z */
7940 /* ?endl@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@1@AEAV21@@Z */
7941 basic_ostream_wchar* __cdecl basic_ostream_wchar_endl(basic_ostream_wchar *ostr)
7943 TRACE("(%p)\n", ostr);
7945 basic_ostream_wchar_put(ostr, '\n');
7946 basic_ostream_wchar_flush(ostr);
7947 return ostr;
7950 /* ??$?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 */
7951 /* ??$?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 */
7952 /* ??$?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 */
7953 /* ??$?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 */
7954 basic_ostream_wchar* __cdecl basic_ostream_wchar_print_bstr(basic_ostream_wchar *ostr, const basic_string_wchar *str)
7956 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(ostr);
7957 IOSB_iostate state = IOSTATE_goodbit;
7959 TRACE("(%p %p)\n", ostr, str);
7961 if(basic_ostream_wchar_sentry_create(ostr)) {
7962 size_t len = MSVCP_basic_string_wchar_length(str);
7963 streamsize pad = (base->base.wide>len ? base->base.wide-len : 0);
7965 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
7966 for(; pad!=0; pad--) {
7967 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
7968 state = IOSTATE_badbit;
7969 break;
7974 if(state == IOSTATE_goodbit) {
7975 if(basic_streambuf_wchar_sputn(base->strbuf, MSVCP_basic_string_wchar_c_str(str), len) != len)
7976 state = IOSTATE_badbit;
7979 if(state == IOSTATE_goodbit) {
7980 for(; pad!=0; pad--) {
7981 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
7982 state = IOSTATE_badbit;
7983 break;
7988 base->base.wide = 0;
7989 }else {
7990 state = IOSTATE_badbit;
7992 basic_ostream_wchar_sentry_destroy(ostr);
7994 basic_ios_wchar_setstate(base, state);
7995 return ostr;
7998 /* ??$?6_WU?$char_traits@_W@std@@@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AAV10@_W@Z */
7999 /* ??$?6_WU?$char_traits@_W@std@@@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AEAV10@_W@Z */
8000 /* ??$?6GU?$char_traits@G@std@@@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@0@AAV10@G@Z */
8001 /* ??$?6GU?$char_traits@G@std@@@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@0@AEAV10@G@Z */
8002 basic_ostream_wchar* __cdecl basic_ostream_wchar_print_ch(basic_ostream_wchar *ostr, wchar_t ch)
8004 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(ostr);
8005 IOSB_iostate state = IOSTATE_goodbit;
8007 TRACE("(%p %d)\n", ostr, ch);
8009 if(basic_ostream_wchar_sentry_create(ostr)) {
8010 streamsize pad = (base->base.wide>1 ? base->base.wide-1 : 0);
8012 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
8013 for(; pad!=0; pad--) {
8014 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
8015 state = IOSTATE_badbit;
8016 break;
8021 if(state == IOSTATE_goodbit) {
8022 if(basic_streambuf_wchar_sputc(base->strbuf, ch) == WEOF)
8023 state = IOSTATE_badbit;
8026 if(state == IOSTATE_goodbit) {
8027 for(; pad!=0; pad--) {
8028 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
8029 state = IOSTATE_badbit;
8030 break;
8035 base->base.wide = 0;
8036 }else {
8037 state = IOSTATE_badbit;
8039 basic_ostream_wchar_sentry_destroy(ostr);
8041 basic_ios_wchar_setstate(base, state);
8042 return ostr;
8045 /* ??$?6_WU?$char_traits@_W@std@@@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AAV10@PB_W@Z */
8046 /* ??$?6_WU?$char_traits@_W@std@@@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AEAV10@PEB_W@Z */
8047 /* ??$?6GU?$char_traits@G@std@@@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@0@AAV10@PBG@Z */
8048 /* ??$?6GU?$char_traits@G@std@@@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@0@AEAV10@PEBG@Z */
8049 basic_ostream_wchar* __cdecl basic_ostream_wchar_print_str(basic_ostream_wchar *ostr, const wchar_t *str)
8051 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(ostr);
8052 IOSB_iostate state = IOSTATE_goodbit;
8054 TRACE("(%p %s)\n", ostr, debugstr_w(str));
8056 if(basic_ostream_wchar_sentry_create(ostr)) {
8057 size_t len = wcslen(str);
8058 streamsize pad = (base->base.wide>len ? base->base.wide-len : 0);
8060 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
8061 for(; pad!=0; pad--) {
8062 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
8063 state = IOSTATE_badbit;
8064 break;
8069 if(state == IOSTATE_goodbit) {
8070 if(basic_streambuf_wchar_sputn(base->strbuf, str, len) != len)
8071 state = IOSTATE_badbit;
8074 if(state == IOSTATE_goodbit) {
8075 for(; pad!=0; pad--) {
8076 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
8077 state = IOSTATE_badbit;
8078 break;
8083 base->base.wide = 0;
8084 }else {
8085 state = IOSTATE_badbit;
8087 basic_ostream_wchar_sentry_destroy(ostr);
8089 basic_ios_wchar_setstate(base, state);
8090 return ostr;
8093 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
8094 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
8095 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
8096 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
8097 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_func, 8)
8098 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_func(basic_ostream_wchar *this,
8099 basic_ostream_wchar* (__cdecl *pfunc)(basic_ostream_wchar*))
8101 TRACE("(%p %p)\n", this, pfunc);
8102 pfunc(this);
8103 return this;
8106 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@_WU?$char_traits@_W@std@@@1@AAV21@@Z@Z */
8107 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@_WU?$char_traits@_W@std@@@1@AEAV21@@Z@Z */
8108 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@GU?$char_traits@G@std@@@1@AAV21@@Z@Z */
8109 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@GU?$char_traits@G@std@@@1@AEAV21@@Z@Z */
8110 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_func_basic_ios, 8)
8111 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_func_basic_ios(basic_ostream_wchar *this,
8112 basic_ios_wchar* (__cdecl *pfunc)(basic_ios_wchar*))
8114 TRACE("(%p %p)\n", this, pfunc);
8115 pfunc(basic_ostream_wchar_get_basic_ios(this));
8116 return this;
8119 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
8120 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
8121 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
8122 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
8123 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_func_ios_base, 8)
8124 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_func_ios_base(
8125 basic_ostream_wchar *this, ios_base* (__cdecl *pfunc)(ios_base*))
8127 TRACE("(%p %p)\n", this, pfunc);
8128 pfunc(&basic_ostream_wchar_get_basic_ios(this)->base);
8129 return this;
8132 /* ?swap@?$basic_ostream@GU?$char_traits@G@std@@@std@@IAEXAAV12@@Z */
8133 /* ?swap@?$basic_ostream@GU?$char_traits@G@std@@@std@@IEAAXAEAV12@@Z */
8134 /* ?swap@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@IAEXAAV12@@Z */
8135 /* ?swap@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@IEAAXAEAV12@@Z */
8136 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_swap, 8)
8137 void __thiscall basic_ostream_wchar_swap(basic_ostream_wchar *this, basic_ostream_wchar *r)
8139 TRACE("(%p %p)\n", this, r);
8141 if(this == r)
8142 return;
8144 basic_ios_wchar_swap(basic_ostream_wchar_get_basic_ios(this),
8145 basic_ostream_wchar_get_basic_ios(r));
8148 /* Caution: basic_istream uses virtual inheritance. */
8149 static inline basic_ios_char* basic_istream_char_get_basic_ios(basic_istream_char *this)
8151 return (basic_ios_char*)((char*)this+this->vbtable[1]);
8154 static inline basic_ios_char* basic_istream_char_to_basic_ios(basic_istream_char *ptr)
8156 return (basic_ios_char*)((char*)ptr+basic_istream_char_vbtable[1]);
8159 static inline basic_istream_char* basic_istream_char_from_basic_ios(basic_ios_char *ptr)
8161 return (basic_istream_char*)((char*)ptr-basic_istream_char_vbtable[1]);
8164 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N1@Z */
8165 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N1@Z */
8166 DEFINE_THISCALL_WRAPPER(basic_istream_char_ctor_init, 20)
8167 basic_istream_char* __thiscall basic_istream_char_ctor_init(basic_istream_char *this,
8168 basic_streambuf_char *strbuf, bool isstd, bool noinit, bool virt_init)
8170 basic_ios_char *base;
8172 TRACE("(%p %p %d %d %d)\n", this, strbuf, isstd, noinit, virt_init);
8174 if(virt_init) {
8175 this->vbtable = basic_istream_char_vbtable;
8176 base = basic_istream_char_get_basic_ios(this);
8177 INIT_BASIC_IOS_VTORDISP(base);
8178 basic_ios_char_ctor(base);
8179 }else {
8180 base = basic_istream_char_get_basic_ios(this);
8183 base->base.vtable = &basic_istream_char_vtable;
8184 this->count = 0;
8185 if(!noinit)
8186 basic_ios_char_init(base, strbuf, isstd);
8187 return this;
8190 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z */
8191 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z */
8192 DEFINE_THISCALL_WRAPPER(basic_istream_char_ctor, 16)
8193 basic_istream_char* __thiscall basic_istream_char_ctor(basic_istream_char *this,
8194 basic_streambuf_char *strbuf, bool isstd, bool virt_init)
8196 return basic_istream_char_ctor_init(this, strbuf, isstd, FALSE, virt_init);
8199 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@W4_Uninitialized@1@@Z */
8200 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
8201 DEFINE_THISCALL_WRAPPER(basic_istream_char_ctor_uninitialized, 12)
8202 basic_istream_char* __thiscall basic_istream_char_ctor_uninitialized(basic_istream_char *this,
8203 int uninitialized, bool virt_init)
8205 basic_ios_char *base;
8207 TRACE("(%p %d %d)\n", this, uninitialized, virt_init);
8209 if(virt_init) {
8210 this->vbtable = basic_istream_char_vbtable;
8211 base = basic_istream_char_get_basic_ios(this);
8212 INIT_BASIC_IOS_VTORDISP(base);
8213 basic_ios_char_ctor(base);
8214 }else {
8215 base = basic_istream_char_get_basic_ios(this);
8218 base->base.vtable = &basic_istream_char_vtable;
8219 ios_base_Addstd(&base->base);
8220 return this;
8223 /* ??1?$basic_istream@DU?$char_traits@D@std@@@std@@UAE@XZ */
8224 /* ??1?$basic_istream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
8225 DEFINE_THISCALL_WRAPPER(basic_istream_char_dtor, 4)
8226 void __thiscall basic_istream_char_dtor(basic_ios_char *base)
8228 basic_istream_char *this = basic_istream_char_from_basic_ios(base);
8230 /* don't destroy virtual base here */
8231 TRACE("(%p)\n", this);
8234 /* ??_D?$basic_istream@DU?$char_traits@D@std@@@std@@QAEXXZ */
8235 /* ??_D?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
8236 DEFINE_THISCALL_WRAPPER(basic_istream_char_vbase_dtor, 4)
8237 void __thiscall basic_istream_char_vbase_dtor(basic_istream_char *this)
8239 basic_ios_char *base = basic_istream_char_to_basic_ios(this);
8241 TRACE("(%p)\n", this);
8243 basic_istream_char_dtor(base);
8244 basic_ios_char_dtor(base);
8247 DEFINE_THISCALL_WRAPPER(basic_istream_char_vector_dtor, 8)
8248 basic_istream_char* __thiscall basic_istream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
8250 basic_istream_char *this = basic_istream_char_from_basic_ios(base);
8252 TRACE("(%p %x)\n", this, flags);
8254 if(flags & 2) {
8255 /* we have an array, with the number of elements stored before the first object */
8256 INT_PTR i, *ptr = (INT_PTR *)this-1;
8258 for(i=*ptr-1; i>=0; i--)
8259 basic_istream_char_vbase_dtor(this+i);
8260 operator_delete(ptr);
8261 } else {
8262 basic_istream_char_vbase_dtor(this);
8263 if(flags & 1)
8264 operator_delete(this);
8267 return this;
8270 /* ?_Ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE_N_N@Z */
8271 /* ?_Ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_N_N@Z */
8272 DEFINE_THISCALL_WRAPPER(basic_istream_char__Ipfx, 8)
8273 bool __thiscall basic_istream_char__Ipfx(basic_istream_char *this, bool noskip)
8275 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8277 TRACE("(%p %d)\n", this, noskip);
8279 if(ios_base_good(&base->base)) {
8280 if(basic_ios_char_tie_get(base))
8281 basic_ostream_char_flush(basic_ios_char_tie_get(base));
8283 if(!noskip && (ios_base_flags_get(&base->base) & FMTFLAG_skipws)) {
8284 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8285 const ctype_char *ctype = ctype_char_use_facet(IOS_LOCALE(base->strbuf));
8286 int ch;
8288 for(ch = basic_streambuf_char_sgetc(strbuf); ;
8289 ch = basic_streambuf_char_snextc(strbuf)) {
8290 if(ch == EOF) {
8291 basic_ios_char_setstate(base, IOSTATE_eofbit);
8292 break;
8295 if(!ctype_char_is_ch(ctype, _SPACE|_BLANK, ch))
8296 break;
8301 if(!ios_base_good(&base->base)) {
8302 basic_ios_char_setstate(base, IOSTATE_failbit);
8303 return FALSE;
8306 return TRUE;
8309 /* ?ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE_N_N@Z */
8310 /* ?ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_N_N@Z */
8311 DEFINE_THISCALL_WRAPPER(basic_istream_char_ipfx, 8)
8312 bool __thiscall basic_istream_char_ipfx(basic_istream_char *this, bool noskip)
8314 return basic_istream_char__Ipfx(this, noskip);
8317 /* ?isfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEXXZ */
8318 /* ?isfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
8319 DEFINE_THISCALL_WRAPPER(basic_istream_char_isfx, 4)
8320 void __thiscall basic_istream_char_isfx(basic_istream_char *this)
8322 TRACE("(%p)\n", this);
8325 static BOOL basic_istream_char_sentry_create(basic_istream_char *istr, bool noskip)
8327 basic_ios_char *base = basic_istream_char_get_basic_ios(istr);
8329 if(basic_ios_char_rdbuf_get(base))
8330 call_basic_streambuf_char__Lock(base->strbuf);
8332 return basic_istream_char_ipfx(istr, noskip);
8335 static void basic_istream_char_sentry_destroy(basic_istream_char *istr)
8337 basic_ios_char *base = basic_istream_char_get_basic_ios(istr);
8339 if(basic_ios_char_rdbuf_get(base))
8340 call_basic_streambuf_char__Unlock(base->strbuf);
8343 /* ?gcount@?$basic_istream@DU?$char_traits@D@std@@@std@@QBEHXZ */
8344 /* ?gcount@?$basic_istream@DU?$char_traits@D@std@@@std@@QEBA_JXZ */
8345 /* ?gcount@?$basic_istream@DU?$char_traits@D@std@@@std@@QBA_JXZ */
8346 /* ?gcount@?$basic_istream@DU?$char_traits@D@std@@@std@@QBE_JXZ */
8347 DEFINE_THISCALL_WRAPPER(basic_istream_char_gcount, 4)
8348 streamsize __thiscall basic_istream_char_gcount(const basic_istream_char *this)
8350 TRACE("(%p)\n", this);
8351 return this->count;
8354 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHXZ */
8355 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAHXZ */
8356 DEFINE_THISCALL_WRAPPER(basic_istream_char_get, 4)
8357 int __thiscall basic_istream_char_get(basic_istream_char *this)
8359 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8360 int ret;
8362 TRACE("(%p)\n", this);
8364 this->count = 0;
8366 if(!basic_istream_char_sentry_create(this, TRUE)) {
8367 basic_istream_char_sentry_destroy(this);
8368 return EOF;
8371 ret = basic_streambuf_char_sbumpc(basic_ios_char_rdbuf_get(base));
8372 basic_istream_char_sentry_destroy(this);
8373 if(ret == EOF)
8374 basic_ios_char_setstate(base, IOSTATE_eofbit|IOSTATE_failbit);
8375 else
8376 this->count++;
8378 return ret;
8381 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@AAD@Z */
8382 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEAD@Z */
8383 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_ch, 8)
8384 basic_istream_char* __thiscall basic_istream_char_get_ch(basic_istream_char *this, char *ch)
8386 int ret;
8388 TRACE("(%p %p)\n", this, ch);
8390 ret = basic_istream_char_get(this);
8391 if(ret != EOF)
8392 *ch = (char)ret;
8393 return this;
8396 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADHD@Z */
8397 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_JD@Z */
8398 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
8399 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_str_delim, 20)
8400 #else
8401 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_str_delim, 16)
8402 #endif
8403 basic_istream_char* __thiscall basic_istream_char_get_str_delim(basic_istream_char *this, char *str, streamsize count, char delim)
8405 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8406 int ch = delim;
8408 TRACE("(%p %p %s %s)\n", this, str, wine_dbgstr_longlong(count), debugstr_an(&delim, 1));
8410 this->count = 0;
8412 if(basic_istream_char_sentry_create(this, TRUE)) {
8413 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8415 for(ch = basic_streambuf_char_sgetc(strbuf); count>1;
8416 ch = basic_streambuf_char_snextc(strbuf)) {
8417 if(ch==EOF || ch==delim)
8418 break;
8420 *str++ = ch;
8421 this->count++;
8422 count--;
8425 basic_istream_char_sentry_destroy(this);
8427 basic_ios_char_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) |
8428 (ch==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
8429 if(count > 0)
8430 *str = 0;
8431 return this;
8434 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADH@Z */
8435 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_J@Z */
8436 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
8437 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_str, 16)
8438 #else
8439 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_str, 12)
8440 #endif
8441 basic_istream_char* __thiscall basic_istream_char_get_str(basic_istream_char *this, char *str, streamsize count)
8443 return basic_istream_char_get_str_delim(this, str, count, '\n');
8446 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@AAV?$basic_streambuf@DU?$char_traits@D@std@@@2@D@Z */
8447 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@D@Z */
8448 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_streambuf_delim, 12)
8449 basic_istream_char* __thiscall basic_istream_char_get_streambuf_delim(basic_istream_char *this, basic_streambuf_char *strbuf, char delim)
8451 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8452 int ch = delim;
8454 TRACE("(%p %p %s)\n", this, strbuf, debugstr_an(&delim, 1));
8456 this->count = 0;
8458 if(basic_istream_char_sentry_create(this, TRUE)) {
8459 basic_streambuf_char *strbuf_read = basic_ios_char_rdbuf_get(base);
8461 for(ch = basic_streambuf_char_sgetc(strbuf_read); ;
8462 ch = basic_streambuf_char_snextc(strbuf_read)) {
8463 if(ch==EOF || ch==delim)
8464 break;
8466 if(basic_streambuf_char_sputc(strbuf, ch) == EOF)
8467 break;
8468 this->count++;
8471 basic_istream_char_sentry_destroy(this);
8473 basic_ios_char_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) |
8474 (ch==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
8475 return this;
8478 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@AAV?$basic_streambuf@DU?$char_traits@D@std@@@2@@Z */
8479 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@@Z */
8480 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_streambuf, 8)
8481 basic_istream_char* __thiscall basic_istream_char_get_streambuf(basic_istream_char *this, basic_streambuf_char *strbuf)
8483 return basic_istream_char_get_streambuf_delim(this, strbuf, '\n');
8486 /* ?getline@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADHD@Z */
8487 /* ?getline@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_JD@Z */
8488 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
8489 DEFINE_THISCALL_WRAPPER(basic_istream_char_getline_delim, 20)
8490 #else
8491 DEFINE_THISCALL_WRAPPER(basic_istream_char_getline_delim, 16)
8492 #endif
8493 basic_istream_char* __thiscall basic_istream_char_getline_delim(basic_istream_char *this, char *str, streamsize count, char delim)
8495 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8496 int ch = (unsigned char)delim;
8498 TRACE("(%p %p %s %s)\n", this, str, wine_dbgstr_longlong(count), debugstr_an(&delim, 1));
8500 this->count = 0;
8502 if(basic_istream_char_sentry_create(this, TRUE) && count>0) {
8503 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8505 while(count > 1) {
8506 ch = basic_streambuf_char_sbumpc(strbuf);
8508 if(ch==EOF || ch==(unsigned char)delim)
8509 break;
8511 *str++ = ch;
8512 this->count++;
8513 count--;
8516 if(ch == (unsigned char)delim)
8517 this->count++;
8518 else if(ch != EOF) {
8519 ch = basic_streambuf_char_sgetc(strbuf);
8521 if(ch == (unsigned char)delim) {
8522 basic_streambuf_char__Gninc(strbuf);
8523 this->count++;
8527 basic_istream_char_sentry_destroy(this);
8529 basic_ios_char_setstate(base, (ch==EOF ? IOSTATE_eofbit : IOSTATE_goodbit) |
8530 (!this->count || (ch!=(unsigned char)delim && ch!=EOF) ? IOSTATE_failbit : IOSTATE_goodbit));
8531 if(count > 0)
8532 *str = 0;
8533 return this;
8536 /* ?getline@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADH@Z */
8537 /* ?getline@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_J@Z */
8538 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
8539 DEFINE_THISCALL_WRAPPER(basic_istream_char_getline, 16)
8540 #else
8541 DEFINE_THISCALL_WRAPPER(basic_istream_char_getline, 12)
8542 #endif
8543 basic_istream_char* __thiscall basic_istream_char_getline(basic_istream_char *this, char *str, streamsize count)
8545 return basic_istream_char_getline_delim(this, str, count, '\n');
8548 /* ?ignore@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@HH@Z */
8549 /* ?ignore@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@_JH@Z */
8550 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
8551 DEFINE_THISCALL_WRAPPER(basic_istream_char_ignore, 16)
8552 #else
8553 DEFINE_THISCALL_WRAPPER(basic_istream_char_ignore, 12)
8554 #endif
8555 basic_istream_char* __thiscall basic_istream_char_ignore(basic_istream_char *this, streamsize count, int delim)
8557 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8558 int ch = (unsigned char)delim;
8559 unsigned int state;
8561 TRACE("(%p %s %d)\n", this, wine_dbgstr_longlong(count), delim);
8563 this->count = 0;
8565 if(basic_istream_char_sentry_create(this, TRUE)) {
8566 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8567 state = IOSTATE_goodbit;
8569 while(count > 0) {
8570 ch = basic_streambuf_char_sbumpc(strbuf);
8572 if(ch==EOF) {
8573 state = IOSTATE_eofbit;
8574 break;
8577 if(ch==delim)
8578 break;
8580 this->count++;
8581 if(count != INT_MAX)
8582 count--;
8584 }else
8585 state = IOSTATE_failbit;
8586 basic_istream_char_sentry_destroy(this);
8588 basic_ios_char_setstate(base, state);
8589 return this;
8592 /* ?ws@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@1@AAV21@@Z */
8593 /* ?ws@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@1@AEAV21@@Z */
8594 basic_istream_char* __cdecl ws_basic_istream_char(basic_istream_char *istream)
8596 basic_ios_char *base = basic_istream_char_get_basic_ios(istream);
8597 int ch = '\n';
8599 TRACE("(%p)\n", istream);
8601 if(basic_istream_char_sentry_create(istream, TRUE)) {
8602 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8603 const ctype_char *ctype = ctype_char_use_facet(IOS_LOCALE(strbuf));
8605 for(ch = basic_streambuf_char_sgetc(strbuf); ctype_char_is_ch(ctype, _SPACE, ch);
8606 ch = basic_streambuf_char_snextc(strbuf)) {
8607 if(ch == EOF)
8608 break;
8611 basic_istream_char_sentry_destroy(istream);
8613 if(ch == EOF)
8614 basic_ios_char_setstate(base, IOSTATE_eofbit);
8615 return istream;
8618 /* ?peek@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHXZ */
8619 /* ?peek@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAHXZ */
8620 DEFINE_THISCALL_WRAPPER(basic_istream_char_peek, 4)
8621 int __thiscall basic_istream_char_peek(basic_istream_char *this)
8623 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8624 int ret = EOF;
8626 TRACE("(%p)\n", this);
8628 this->count = 0;
8630 if(basic_istream_char_sentry_create(this, TRUE))
8631 ret = basic_streambuf_char_sgetc(basic_ios_char_rdbuf_get(base));
8632 basic_istream_char_sentry_destroy(this);
8634 if (ret == EOF)
8635 basic_ios_char_setstate(base, IOSTATE_eofbit);
8637 return ret;
8640 /* ?_Read_s@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADIH@Z */
8641 /* ?_Read_s@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_K_J@Z */
8642 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
8643 DEFINE_THISCALL_WRAPPER(basic_istream_char__Read_s, 20)
8644 #else
8645 DEFINE_THISCALL_WRAPPER(basic_istream_char__Read_s, 16)
8646 #endif
8647 basic_istream_char* __thiscall basic_istream_char__Read_s(basic_istream_char *this, char *str, size_t size, streamsize count)
8649 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8650 IOSB_iostate state = IOSTATE_goodbit;
8652 TRACE("(%p %p %Iu %s)\n", this, str, size, wine_dbgstr_longlong(count));
8654 if(basic_istream_char_sentry_create(this, TRUE)) {
8655 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8657 this->count = basic_streambuf_char__Sgetn_s(strbuf, str, size, count);
8658 if(this->count != count)
8659 state |= IOSTATE_failbit | IOSTATE_eofbit;
8660 }else {
8661 this->count = 0;
8663 basic_istream_char_sentry_destroy(this);
8665 basic_ios_char_setstate(base, state);
8666 return this;
8669 /* ?read@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADH@Z */
8670 /* ?read@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_J@Z */
8671 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
8672 DEFINE_THISCALL_WRAPPER(basic_istream_char_read, 16)
8673 #else
8674 DEFINE_THISCALL_WRAPPER(basic_istream_char_read, 12)
8675 #endif
8676 basic_istream_char* __thiscall basic_istream_char_read(basic_istream_char *this, char *str, streamsize count)
8678 return basic_istream_char__Read_s(this, str, -1, count);
8681 /* ?_Readsome_s@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHPADIH@Z */
8682 /* ?_Readsome_s@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_K_J@Z */
8683 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
8684 DEFINE_THISCALL_WRAPPER(basic_istream_char__Readsome_s, 20)
8685 #else
8686 DEFINE_THISCALL_WRAPPER(basic_istream_char__Readsome_s, 16)
8687 #endif
8688 streamsize __thiscall basic_istream_char__Readsome_s(basic_istream_char *this, char *str, size_t size, streamsize count)
8690 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8691 IOSB_iostate state = IOSTATE_goodbit;
8693 TRACE("(%p %p %Iu %s)\n", this, str, size, wine_dbgstr_longlong(count));
8695 this->count = 0;
8697 if(basic_istream_char_sentry_create(this, TRUE)) {
8698 streamsize avail = basic_streambuf_char_in_avail(basic_ios_char_rdbuf_get(base));
8699 if(avail > count)
8700 avail = count;
8702 if(avail == -1)
8703 state |= IOSTATE_eofbit;
8704 else if(avail > 0)
8705 basic_istream_char__Read_s(this, str, size, avail);
8706 }else {
8707 state |= IOSTATE_failbit;
8709 basic_istream_char_sentry_destroy(this);
8711 basic_ios_char_setstate(base, state);
8712 return this->count;
8715 /* ?readsome@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHPADH@Z */
8716 /* ?readsome@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_J@Z */
8717 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
8718 DEFINE_THISCALL_WRAPPER(basic_istream_char_readsome, 16)
8719 #else
8720 DEFINE_THISCALL_WRAPPER(basic_istream_char_readsome, 12)
8721 #endif
8722 streamsize __thiscall basic_istream_char_readsome(basic_istream_char *this, char *str, streamsize count)
8724 return basic_istream_char__Readsome_s(this, str, count, count);
8727 /* ?putback@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@D@Z */
8728 /* ?putback@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@D@Z */
8729 DEFINE_THISCALL_WRAPPER(basic_istream_char_putback, 8)
8730 basic_istream_char* __thiscall basic_istream_char_putback(basic_istream_char *this, char ch)
8732 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8733 IOSB_iostate state = IOSTATE_goodbit;
8735 TRACE("(%p %c)\n", this, ch);
8737 this->count = 0;
8739 if(basic_istream_char_sentry_create(this, TRUE)) {
8740 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8742 if(!ios_base_good(&base->base))
8743 state |= IOSTATE_failbit;
8744 else if(!strbuf || basic_streambuf_char_sputbackc(strbuf, ch)==EOF)
8745 state |= IOSTATE_badbit;
8747 basic_istream_char_sentry_destroy(this);
8749 basic_ios_char_setstate(base, state);
8750 return this;
8753 /* ?unget@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@XZ */
8754 /* ?unget@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@XZ */
8755 DEFINE_THISCALL_WRAPPER(basic_istream_char_unget, 4)
8756 basic_istream_char* __thiscall basic_istream_char_unget(basic_istream_char *this)
8758 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8759 IOSB_iostate state = IOSTATE_goodbit;
8761 TRACE("(%p)\n", this);
8763 this->count = 0;
8765 if(basic_istream_char_sentry_create(this, TRUE)) {
8766 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8768 if(!ios_base_good(&base->base))
8769 state |= IOSTATE_failbit;
8770 else if(!strbuf || basic_streambuf_char_sungetc(strbuf)==EOF)
8771 state |= IOSTATE_badbit;
8773 basic_istream_char_sentry_destroy(this);
8775 basic_ios_char_setstate(base, state);
8776 return this;
8779 /* ?sync@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHXZ */
8780 /* ?sync@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAHXZ */
8781 DEFINE_THISCALL_WRAPPER(basic_istream_char_sync, 4)
8782 int __thiscall basic_istream_char_sync(basic_istream_char *this)
8784 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8785 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8787 TRACE("(%p)\n", this);
8789 if(!strbuf)
8790 return -1;
8792 if(basic_istream_char_sentry_create(this, TRUE)) {
8793 if(basic_streambuf_char_pubsync(strbuf) != -1) {
8794 basic_istream_char_sentry_destroy(this);
8795 return 0;
8798 basic_istream_char_sentry_destroy(this);
8800 basic_ios_char_setstate(base, IOSTATE_badbit);
8801 return -1;
8804 /* ?tellg@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@XZ */
8805 /* ?tellg@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
8806 DEFINE_THISCALL_WRAPPER(basic_istream_char_tellg, 8)
8807 fpos_mbstatet* __thiscall basic_istream_char_tellg(basic_istream_char *this, fpos_mbstatet *ret)
8809 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8811 TRACE("(%p %p)\n", this, ret);
8813 #if _MSVCP_VER >= 110
8814 if(basic_istream_char_sentry_create(this, TRUE)) {
8815 basic_streambuf_char_pubseekoff(basic_ios_char_rdbuf_get(base),
8816 ret, 0, SEEKDIR_cur, OPENMODE_in);
8817 }else {
8818 ret->off = -1;
8819 ret->pos = 0;
8820 memset(&ret->state, 0, sizeof(ret->state));
8822 basic_istream_char_sentry_destroy(this);
8823 #else
8824 if(ios_base_fail(&base->base)) {
8825 ret->off = -1;
8826 ret->pos = 0;
8827 memset(&ret->state, 0, sizeof(ret->state));
8828 return ret;
8831 basic_streambuf_char_pubseekoff(basic_ios_char_rdbuf_get(base),
8832 ret, 0, SEEKDIR_cur, OPENMODE_in);
8833 #endif
8835 return ret;
8838 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@JW4seekdir@ios_base@2@@Z */
8839 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@_JW4seekdir@ios_base@2@@Z */
8840 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@JH@Z */
8841 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@_JH@Z */
8842 #if STREAMOFF_BITS == 64
8843 DEFINE_THISCALL_WRAPPER(basic_istream_char_seekg, 16)
8844 #else
8845 DEFINE_THISCALL_WRAPPER(basic_istream_char_seekg, 12)
8846 #endif
8847 basic_istream_char* __thiscall basic_istream_char_seekg(basic_istream_char *this, streamoff off, int dir)
8849 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8850 #if _MSVCP_VER >= 110
8851 IOSB_iostate state;
8853 TRACE("(%p %s %d)\n", this, wine_dbgstr_longlong(off), dir);
8855 state = ios_base_rdstate(&base->base);
8856 ios_base_clear(&base->base, state & ~IOSTATE_eofbit);
8858 if(basic_istream_char_sentry_create(this, TRUE)) {
8859 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8860 fpos_mbstatet ret;
8862 basic_streambuf_char_pubseekoff(strbuf, &ret, off, dir, OPENMODE_in);
8864 if(ret.off==-1 && ret.pos==0 && MBSTATET_TO_INT(&ret.state)==0)
8865 basic_ios_char_setstate(base, IOSTATE_failbit);
8867 basic_istream_char_sentry_destroy(this);
8868 #else
8869 TRACE("(%p %s %d)\n", this, wine_dbgstr_longlong(off), dir);
8871 if(!ios_base_fail(&base->base)) {
8872 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8873 fpos_mbstatet ret;
8875 basic_streambuf_char_pubseekoff(strbuf, &ret, off, dir, OPENMODE_in);
8877 if(ret.off==-1 && ret.pos==0 && MBSTATET_TO_INT(&ret.state)==0)
8878 basic_ios_char_setstate(base, IOSTATE_failbit);
8879 else
8880 basic_ios_char_clear(base, IOSTATE_goodbit);
8881 return this;
8882 }else
8883 basic_ios_char_clear(base, IOSTATE_goodbit);
8884 #endif
8885 return this;
8888 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
8889 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
8890 DEFINE_THISCALL_WRAPPER(basic_istream_char_seekg_fpos, 28)
8891 basic_istream_char* __thiscall basic_istream_char_seekg_fpos(basic_istream_char *this, fpos_mbstatet pos)
8893 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8894 #if _MSVCP_VER >= 110
8895 IOSB_iostate state;
8897 TRACE("(%p %s)\n", this, debugstr_fpos_mbstatet(&pos));
8899 state = ios_base_rdstate(&base->base);
8900 ios_base_clear(&base->base, state & ~IOSTATE_eofbit);
8902 if(basic_istream_char_sentry_create(this, TRUE)) {
8903 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8904 fpos_mbstatet ret;
8906 basic_streambuf_char_pubseekpos(strbuf, &ret, pos, OPENMODE_in);
8908 if(ret.off==-1 && ret.pos==0 && MBSTATET_TO_INT(&ret.state)==0)
8909 basic_ios_char_setstate(base, IOSTATE_failbit);
8911 basic_istream_char_sentry_destroy(this);
8912 #else
8913 TRACE("(%p %s)\n", this, debugstr_fpos_mbstatet(&pos));
8915 if(!ios_base_fail(&base->base)) {
8916 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8917 fpos_mbstatet ret;
8919 basic_streambuf_char_pubseekpos(strbuf, &ret, pos, OPENMODE_in);
8921 if(ret.off==-1 && ret.pos==0 && MBSTATET_TO_INT(&ret.state)==0)
8922 basic_ios_char_setstate(base, IOSTATE_failbit);
8923 else
8924 basic_ios_char_clear(base, IOSTATE_goodbit);
8925 return this;
8926 }else
8927 basic_ios_char_clear(base, IOSTATE_goodbit);
8928 #endif
8929 return this;
8932 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAF@Z */
8933 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAF@Z */
8934 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_short, 8)
8935 basic_istream_char* __thiscall basic_istream_char_read_short(basic_istream_char *this, short *v)
8937 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8938 int state = IOSTATE_goodbit;
8940 TRACE("(%p %p)\n", this, v);
8942 if(basic_istream_char_sentry_create(this, FALSE)) {
8943 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8944 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
8945 istreambuf_iterator_char first={0}, last={0};
8946 LONG tmp;
8948 first.strbuf = strbuf;
8949 num_get_char_get_long(numget, &last, first, last, &base->base, &state, &tmp);
8951 if(!(state&IOSTATE_failbit) && tmp==(LONG)((short)tmp))
8952 *v = tmp;
8953 else
8954 state |= IOSTATE_failbit;
8956 basic_istream_char_sentry_destroy(this);
8958 basic_ios_char_setstate(base, state);
8959 return this;
8962 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAG@Z */
8963 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAG@Z */
8964 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_ushort, 8)
8965 basic_istream_char* __thiscall basic_istream_char_read_ushort(basic_istream_char *this, unsigned short *v)
8967 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8968 int state = IOSTATE_goodbit;
8970 TRACE("(%p %p)\n", this, v);
8972 if(basic_istream_char_sentry_create(this, FALSE)) {
8973 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8974 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
8975 istreambuf_iterator_char first={0}, last={0};
8977 first.strbuf = strbuf;
8978 num_get_char_get_ushort(numget, &last, first, last, &base->base, &state, v);
8980 basic_istream_char_sentry_destroy(this);
8982 basic_ios_char_setstate(base, state);
8983 return this;
8986 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAH@Z */
8987 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAH@Z */
8988 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_int, 8)
8989 basic_istream_char* __thiscall basic_istream_char_read_int(basic_istream_char *this, int *v)
8991 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8992 int state = IOSTATE_goodbit;
8994 TRACE("(%p %p)\n", this, v);
8996 if(basic_istream_char_sentry_create(this, FALSE)) {
8997 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8998 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
8999 istreambuf_iterator_char first={0}, last={0};
9001 first.strbuf = strbuf;
9002 num_get_char_get_long(numget, &last, first, last, &base->base, &state, (LONG*)v);
9004 basic_istream_char_sentry_destroy(this);
9006 basic_ios_char_setstate(base, state);
9007 return this;
9010 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAI@Z */
9011 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAI@Z */
9012 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_uint, 8)
9013 basic_istream_char* __thiscall basic_istream_char_read_uint(basic_istream_char *this, unsigned int *v)
9015 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9016 int state = IOSTATE_goodbit;
9018 TRACE("(%p %p)\n", this, v);
9020 if(basic_istream_char_sentry_create(this, FALSE)) {
9021 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
9022 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
9023 istreambuf_iterator_char first={0}, last={0};
9025 first.strbuf = strbuf;
9026 num_get_char_get_uint(numget, &last, first, last, &base->base, &state, v);
9028 basic_istream_char_sentry_destroy(this);
9030 basic_ios_char_setstate(base, state);
9031 return this;
9034 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAJ@Z */
9035 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAJ@Z */
9036 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_long, 8)
9037 basic_istream_char* __thiscall basic_istream_char_read_long(basic_istream_char *this, LONG *v)
9039 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9040 int state = IOSTATE_goodbit;
9042 TRACE("(%p %p)\n", this, v);
9044 if(basic_istream_char_sentry_create(this, FALSE)) {
9045 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
9046 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
9047 istreambuf_iterator_char first={0}, last={0};
9049 first.strbuf = strbuf;
9050 num_get_char_get_long(numget, &last, first, last, &base->base, &state, v);
9052 basic_istream_char_sentry_destroy(this);
9054 basic_ios_char_setstate(base, state);
9055 return this;
9058 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAK@Z */
9059 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAK@Z */
9060 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_ulong, 8)
9061 basic_istream_char* __thiscall basic_istream_char_read_ulong(basic_istream_char *this, ULONG *v)
9063 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9064 int state = IOSTATE_goodbit;
9066 TRACE("(%p %p)\n", this, v);
9068 if(basic_istream_char_sentry_create(this, FALSE)) {
9069 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
9070 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
9071 istreambuf_iterator_char first={0}, last={0};
9073 first.strbuf = strbuf;
9074 num_get_char_get_ulong(numget, &last, first, last, &base->base, &state, v);
9076 basic_istream_char_sentry_destroy(this);
9078 basic_ios_char_setstate(base, state);
9079 return this;
9082 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAM@Z */
9083 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAM@Z */
9084 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_float, 8)
9085 basic_istream_char* __thiscall basic_istream_char_read_float(basic_istream_char *this, float *v)
9087 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9088 int state = IOSTATE_goodbit;
9090 TRACE("(%p %p)\n", this, v);
9092 if(basic_istream_char_sentry_create(this, FALSE)) {
9093 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
9094 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
9095 istreambuf_iterator_char first={0}, last={0};
9097 first.strbuf = strbuf;
9098 num_get_char_get_float(numget, &last, first, last, &base->base, &state, v);
9100 basic_istream_char_sentry_destroy(this);
9102 basic_ios_char_setstate(base, state);
9103 return this;
9106 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAN@Z */
9107 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAN@Z */
9108 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_double, 8)
9109 basic_istream_char* __thiscall basic_istream_char_read_double(basic_istream_char *this, double *v)
9111 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9112 int state = IOSTATE_goodbit;
9114 TRACE("(%p %p)\n", this, v);
9116 if(basic_istream_char_sentry_create(this, FALSE)) {
9117 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
9118 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
9119 istreambuf_iterator_char first={0}, last={0};
9121 first.strbuf = strbuf;
9122 num_get_char_get_double(numget, &last, first, last, &base->base, &state, v);
9124 basic_istream_char_sentry_destroy(this);
9126 basic_ios_char_setstate(base, state);
9127 return this;
9130 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAO@Z */
9131 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAO@Z */
9132 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_ldouble, 8)
9133 basic_istream_char* __thiscall basic_istream_char_read_ldouble(basic_istream_char *this, double *v)
9135 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9136 int state = IOSTATE_goodbit;
9138 TRACE("(%p %p)\n", this, v);
9140 if(basic_istream_char_sentry_create(this, FALSE)) {
9141 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
9142 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
9143 istreambuf_iterator_char first={0}, last={0};
9145 first.strbuf = strbuf;
9146 num_get_char_get_ldouble(numget, &last, first, last, &base->base, &state, v);
9148 basic_istream_char_sentry_destroy(this);
9150 basic_ios_char_setstate(base, state);
9151 return this;
9154 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAPAX@Z */
9155 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAPEAX@Z */
9156 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_ptr, 8)
9157 basic_istream_char* __thiscall basic_istream_char_read_ptr(basic_istream_char *this, void **v)
9159 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9160 int state = IOSTATE_goodbit;
9162 TRACE("(%p %p)\n", this, v);
9164 if(basic_istream_char_sentry_create(this, FALSE)) {
9165 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
9166 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
9167 istreambuf_iterator_char first={0}, last={0};
9169 first.strbuf = strbuf;
9170 num_get_char_get_void(numget, &last, first, last, &base->base, &state, v);
9172 basic_istream_char_sentry_destroy(this);
9174 basic_ios_char_setstate(base, state);
9175 return this;
9178 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AA_J@Z */
9179 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEA_J@Z */
9180 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_int64, 8)
9181 basic_istream_char* __thiscall basic_istream_char_read_int64(basic_istream_char *this, __int64 *v)
9183 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9184 int state = IOSTATE_goodbit;
9186 TRACE("(%p %p)\n", this, v);
9188 if(basic_istream_char_sentry_create(this, FALSE)) {
9189 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
9190 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
9191 istreambuf_iterator_char first={0}, last={0};
9193 first.strbuf = strbuf;
9194 num_get_char_get_int64(numget, &last, first, last, &base->base, &state, v);
9196 basic_istream_char_sentry_destroy(this);
9198 basic_ios_char_setstate(base, state);
9199 return this;
9202 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AA_K@Z */
9203 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEA_K@Z */
9204 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_uint64, 8)
9205 basic_istream_char* __thiscall basic_istream_char_read_uint64(basic_istream_char *this, unsigned __int64 *v)
9207 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9208 int state = IOSTATE_goodbit;
9210 TRACE("(%p %p)\n", this, v);
9212 if(basic_istream_char_sentry_create(this, FALSE)) {
9213 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
9214 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
9215 istreambuf_iterator_char first={0}, last={0};
9217 first.strbuf = strbuf;
9218 num_get_char_get_uint64(numget, &last, first, last, &base->base, &state, v);
9220 basic_istream_char_sentry_destroy(this);
9222 basic_ios_char_setstate(base, state);
9223 return this;
9226 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AA_N@Z */
9227 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEA_N@Z */
9228 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_bool, 8)
9229 basic_istream_char* __thiscall basic_istream_char_read_bool(basic_istream_char *this, bool *v)
9231 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9232 int state = IOSTATE_goodbit;
9234 TRACE("(%p %p)\n", this, v);
9236 if(basic_istream_char_sentry_create(this, FALSE)) {
9237 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
9238 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
9239 istreambuf_iterator_char first={0}, last={0};
9241 first.strbuf = strbuf;
9242 num_get_char_get_bool(numget, &last, first, last, &base->base, &state, v);
9244 basic_istream_char_sentry_destroy(this);
9246 basic_ios_char_setstate(base, state);
9247 return this;
9250 /* ??$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 */
9251 /* ??$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 */
9252 basic_istream_char* __cdecl basic_istream_char_getline_bstr_delim(
9253 basic_istream_char *istream, basic_string_char *str, char delim)
9255 basic_ios_char *base = basic_istream_char_get_basic_ios(istream);
9256 IOSB_iostate state = IOSTATE_goodbit;
9257 int c = (unsigned char)delim;
9259 TRACE("(%p %p %s)\n", istream, str, debugstr_an(&delim, 1));
9261 if(basic_istream_char_sentry_create(istream, TRUE)) {
9262 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
9263 MSVCP_basic_string_char_clear(str);
9265 c = basic_streambuf_char_sgetc(strbuf);
9266 for(; c!=(unsigned char)delim && c!=EOF; c = basic_streambuf_char_snextc(strbuf))
9267 MSVCP_basic_string_char_append_ch(str, c);
9268 if(c==EOF) state |= IOSTATE_eofbit;
9269 else if(c==(unsigned char)delim) basic_streambuf_char_sbumpc(strbuf);
9271 if(!MSVCP_basic_string_char_length(str) && c!=(unsigned char)delim) state |= IOSTATE_failbit;
9273 basic_istream_char_sentry_destroy(istream);
9275 basic_ios_char_setstate(basic_istream_char_get_basic_ios(istream), state);
9276 return istream;
9279 /* ??$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 */
9280 /* ??$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 */
9281 basic_istream_char* __cdecl basic_istream_char_getline_bstr(
9282 basic_istream_char *istream, basic_string_char *str)
9284 return basic_istream_char_getline_bstr_delim(istream, str, '\n');
9287 /* ??$?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 */
9288 /* ??$?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 */
9289 basic_istream_char* __cdecl basic_istream_char_read_bstr(
9290 basic_istream_char *istream, basic_string_char *str)
9292 basic_ios_char *base = basic_istream_char_get_basic_ios(istream);
9293 IOSB_iostate state = IOSTATE_failbit;
9294 int c = '\n';
9296 TRACE("(%p %p)\n", istream, str);
9298 if(basic_istream_char_sentry_create(istream, FALSE)) {
9299 const ctype_char *ctype = ctype_char_use_facet(IOS_LOCALE(base->strbuf));
9300 size_t count = ios_base_width_get(&base->base);
9302 if(!count)
9303 count = -1;
9305 MSVCP_basic_string_char_clear(str);
9307 for(c = basic_streambuf_char_sgetc(basic_ios_char_rdbuf_get(base));
9308 c!=EOF && !ctype_char_is_ch(ctype, _SPACE|_BLANK, c) && count>0;
9309 c = basic_streambuf_char_snextc(basic_ios_char_rdbuf_get(base)), count--) {
9310 state = IOSTATE_goodbit;
9311 MSVCP_basic_string_char_append_ch(str, c);
9314 basic_istream_char_sentry_destroy(istream);
9316 ios_base_width_set(&base->base, 0);
9317 basic_ios_char_setstate(base, state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
9318 return istream;
9321 /* ??$?5DU?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@PAD@Z */
9322 /* ??$?5DU?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@PEAD@Z */
9323 /* ??$?5U?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@PAC@Z */
9324 /* ??$?5U?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@PEAC@Z */
9325 /* ??$?5U?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@PAE@Z */
9326 /* ??$?5U?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@PEAE@Z */
9327 basic_istream_char* __cdecl basic_istream_char_read_str(basic_istream_char *istream, char *str)
9329 basic_ios_char *base = basic_istream_char_get_basic_ios(istream);
9330 IOSB_iostate state = IOSTATE_failbit;
9331 int c = '\n';
9333 TRACE("(%p %p)\n", istream, str);
9335 if(basic_istream_char_sentry_create(istream, FALSE)) {
9336 const ctype_char *ctype = ctype_char_use_facet(IOS_LOCALE(base->strbuf));
9337 size_t count = ios_base_width_get(&base->base)-1;
9339 for(c = basic_streambuf_char_sgetc(basic_ios_char_rdbuf_get(base));
9340 c!=EOF && !ctype_char_is_ch(ctype, _SPACE|_BLANK, c) && count>0;
9341 c = basic_streambuf_char_snextc(basic_ios_char_rdbuf_get(base)), count--) {
9342 state = IOSTATE_goodbit;
9343 *str++ = c;
9346 basic_istream_char_sentry_destroy(istream);
9348 *str = 0;
9349 ios_base_width_set(&base->base, 0);
9350 basic_ios_char_setstate(base, state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
9351 return istream;
9354 /* ??$?5DU?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAD@Z */
9355 /* ??$?5DU?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAD@Z */
9356 /* ??$?5U?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAC@Z */
9357 /* ??$?5U?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAC@Z */
9358 /* ??$?5U?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAE@Z */
9359 /* ??$?5U?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAE@Z */
9360 basic_istream_char* __cdecl basic_istream_char_read_ch(basic_istream_char *istream, char *ch)
9362 IOSB_iostate state = IOSTATE_failbit;
9363 int c = 0;
9365 TRACE("(%p %p)\n", istream, ch);
9367 if(basic_istream_char_sentry_create(istream, FALSE)) {
9368 c = basic_streambuf_char_sbumpc(basic_ios_char_rdbuf_get(
9369 basic_istream_char_get_basic_ios(istream)));
9370 if(c != EOF) {
9371 state = IOSTATE_goodbit;
9372 *ch = c;
9375 basic_istream_char_sentry_destroy(istream);
9377 basic_ios_char_setstate(basic_istream_char_get_basic_ios(istream),
9378 state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
9379 return istream;
9382 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
9383 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
9384 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_streambuf, 8)
9385 basic_istream_char* __thiscall basic_istream_char_read_streambuf(
9386 basic_istream_char *this, basic_streambuf_char *streambuf)
9388 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9389 IOSB_iostate state = IOSTATE_failbit;
9390 int c = '\n';
9392 TRACE("(%p %p)\n", this, streambuf);
9394 if(basic_istream_char_sentry_create(this, FALSE)) {
9395 for(c = basic_streambuf_char_sgetc(basic_ios_char_rdbuf_get(base)); c!=EOF;
9396 c = basic_streambuf_char_snextc(basic_ios_char_rdbuf_get(base))) {
9397 state = IOSTATE_goodbit;
9398 if(basic_streambuf_char_sputc(streambuf, c) == EOF)
9399 break;
9402 basic_istream_char_sentry_destroy(this);
9404 basic_ios_char_setstate(base, state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
9405 return this;
9408 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
9409 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
9410 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_func, 8)
9411 basic_istream_char* __thiscall basic_istream_char_read_func(basic_istream_char *this,
9412 basic_istream_char* (__cdecl *pfunc)(basic_istream_char*))
9414 TRACE("(%p %p)\n", this, pfunc);
9415 pfunc(this);
9416 return this;
9419 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@DU?$char_traits@D@std@@@1@AAV21@@Z@Z */
9420 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@DU?$char_traits@D@std@@@1@AEAV21@@Z@Z */
9421 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_func_basic_ios, 8)
9422 basic_istream_char* __thiscall basic_istream_char_read_func_basic_ios(basic_istream_char *this,
9423 basic_ios_char* (__cdecl *pfunc)(basic_ios_char*))
9425 TRACE("(%p %p)\n", this, pfunc);
9426 pfunc(basic_istream_char_get_basic_ios(this));
9427 return this;
9430 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
9431 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
9432 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_func_ios_base, 8)
9433 basic_istream_char* __thiscall basic_istream_char_read_func_ios_base(basic_istream_char *this,
9434 ios_base* (__cdecl *pfunc)(ios_base*))
9436 TRACE("(%p %p)\n", this, pfunc);
9437 pfunc(&basic_istream_char_get_basic_ios(this)->base);
9438 return this;
9441 /* ??$?5MDU?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAV?$complex@M@0@@Z */
9442 /* ??$?5MDU?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAV?$complex@M@0@@Z */
9443 basic_istream_char* __cdecl basic_istream_char_read_complex_float(basic_istream_char *this, complex_float *v)
9445 float r;
9446 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9448 TRACE("(%p %p)\n", this, v);
9450 ws_basic_istream_char(this);
9451 if(basic_istream_char_peek(this) == '(') {
9452 char c;
9453 basic_istream_char_get(this);
9454 basic_istream_char_read_float(this, &r);
9456 if(ios_base_fail(&base->base))
9457 return this;
9459 ws_basic_istream_char(this);
9460 c = basic_istream_char_peek(this);
9461 if(c == ',') {
9462 float i;
9463 basic_istream_char_get(this);
9464 basic_istream_char_read_float(this, &i);
9466 if(ios_base_fail(&base->base))
9467 return this;
9469 ws_basic_istream_char(this);
9470 c = basic_istream_char_peek(this);
9471 if(c == ')') { /* supported format: (real, imag) */
9472 basic_istream_char_get(this);
9473 v->real = r;
9474 v->imag = i;
9475 }else {
9476 basic_ios_char_setstate(base, IOSTATE_failbit);
9477 return this;
9479 }else if(c == ')') { /* supported format: (real) */
9480 basic_istream_char_get(this);
9481 v->real = r;
9482 v->imag = 0;
9483 }else {
9484 basic_ios_char_setstate(base, IOSTATE_failbit);
9485 return this;
9487 }else { /* supported format: real */
9488 basic_istream_char_read_float(this, &r);
9490 if(ios_base_fail(&base->base))
9491 return this;
9493 v->real = r;
9494 v->imag = 0;
9497 return this;
9500 /* ??$?5NDU?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAV?$complex@N@0@@Z */
9501 /* ??$?5DU?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAV?$complex@N@0@@Z */
9502 basic_istream_char* __cdecl basic_istream_char_read_complex_double(basic_istream_char *this, complex_double *v)
9504 double r;
9505 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9507 TRACE("(%p %p)\n", this, v);
9509 ws_basic_istream_char(this);
9510 if(basic_istream_char_peek(this) == '(') {
9511 char c;
9512 basic_istream_char_get(this);
9513 basic_istream_char_read_double(this, &r);
9515 if(ios_base_fail(&base->base))
9516 return this;
9518 ws_basic_istream_char(this);
9519 c = basic_istream_char_peek(this);
9520 if(c == ',') {
9521 double i;
9522 basic_istream_char_get(this);
9523 basic_istream_char_read_double(this, &i);
9525 if(ios_base_fail(&base->base))
9526 return this;
9528 ws_basic_istream_char(this);
9529 c = basic_istream_char_peek(this);
9530 if(c == ')') { /* supported format: (real, imag) */
9531 basic_istream_char_get(this);
9532 v->real = r;
9533 v->imag = i;
9534 }else {
9535 basic_ios_char_setstate(base, IOSTATE_failbit);
9536 return this;
9538 }else if(c == ')') { /* supported format: (real) */
9539 basic_istream_char_get(this);
9540 v->real = r;
9541 v->imag = 0;
9542 }else {
9543 basic_ios_char_setstate(base, IOSTATE_failbit);
9544 return this;
9546 }else { /* supported format: real */
9547 basic_istream_char_read_double(this, &r);
9549 if(ios_base_fail(&base->base))
9550 return this;
9552 v->real = r;
9553 v->imag = 0;
9556 return this;
9559 /* ??$?5ODU?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAV?$complex@O@0@@Z */
9560 /* ??$?5ODU?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAV?$complex@O@0@@Z */
9561 basic_istream_char* __cdecl basic_istream_char_read_complex_ldouble(basic_istream_char *this, complex_double *v)
9563 double r;
9564 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9566 TRACE("(%p %p)\n", this, v);
9568 ws_basic_istream_char(this);
9569 if(basic_istream_char_peek(this) == '(') {
9570 char c;
9571 basic_istream_char_get(this);
9572 basic_istream_char_read_ldouble(this, &r);
9574 if(ios_base_fail(&base->base))
9575 return this;
9577 ws_basic_istream_char(this);
9578 c = basic_istream_char_peek(this);
9579 if(c == ',') {
9580 double i;
9581 basic_istream_char_get(this);
9582 basic_istream_char_read_ldouble(this, &i);
9584 if(ios_base_fail(&base->base))
9585 return this;
9587 ws_basic_istream_char(this);
9588 c = basic_istream_char_peek(this);
9589 if(c == ')') { /* supported format: (real, imag) */
9590 basic_istream_char_get(this);
9591 v->real = r;
9592 v->imag = i;
9593 }else {
9594 basic_ios_char_setstate(base, IOSTATE_failbit);
9595 return this;
9597 }else if(c == ')') { /* supported format: (real) */
9598 basic_istream_char_get(this);
9599 v->real = r;
9600 v->imag = 0;
9601 }else {
9602 basic_ios_char_setstate(base, IOSTATE_failbit);
9603 return this;
9605 }else { /* supported format: real */
9606 basic_istream_char_read_ldouble(this, &r);
9608 if(ios_base_fail(&base->base))
9609 return this;
9611 v->real = r;
9612 v->imag = 0;
9615 return this;
9618 /* ?swap@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEXAAV12@@Z */
9619 /* ?swap@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAXAEAV12@@Z */
9620 DEFINE_THISCALL_WRAPPER(basic_istream_char_swap, 8)
9621 void __thiscall basic_istream_char_swap(basic_istream_char *this, basic_istream_char *r)
9623 TRACE("(%p %p)\n", this, r);
9625 if(this == r)
9626 return;
9628 basic_ios_char_swap(basic_istream_char_get_basic_ios(this),
9629 basic_istream_char_get_basic_ios(r));
9630 this->count ^= r->count;
9631 r->count ^= this->count;
9632 this->count ^= r->count;
9635 /* Caution: basic_istream uses virtual inheritance. */
9636 static inline basic_ios_wchar* basic_istream_wchar_get_basic_ios(basic_istream_wchar *this)
9638 return (basic_ios_wchar*)((char*)this+this->vbtable[1]);
9641 static inline basic_ios_wchar* basic_istream_wchar_to_basic_ios(basic_istream_wchar *ptr)
9643 return (basic_ios_wchar*)((char*)ptr+basic_istream_wchar_vbtable[1]);
9646 static inline basic_istream_wchar* basic_istream_wchar_from_basic_ios(basic_ios_wchar *ptr)
9648 return (basic_istream_wchar*)((char*)ptr-basic_istream_wchar_vbtable[1]);
9651 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N1@Z */
9652 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N1@Z */
9653 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ctor_init, 20)
9654 basic_istream_wchar* __thiscall basic_istream_wchar_ctor_init(basic_istream_wchar *this,
9655 basic_streambuf_wchar *strbuf, bool isstd, bool noinit, bool virt_init)
9657 basic_ios_wchar *base;
9659 TRACE("(%p %p %d %d %d)\n", this, strbuf, isstd, noinit, virt_init);
9661 if(virt_init) {
9662 this->vbtable = basic_istream_wchar_vbtable;
9663 base = basic_istream_wchar_get_basic_ios(this);
9664 INIT_BASIC_IOS_VTORDISP(base);
9665 basic_ios_wchar_ctor(base);
9666 }else {
9667 base = basic_istream_wchar_get_basic_ios(this);
9670 base->base.vtable = &basic_istream_wchar_vtable;
9671 this->count = 0;
9672 if(!noinit)
9673 basic_ios_wchar_init(base, strbuf, isstd);
9674 return this;
9677 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N1@Z */
9678 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N1@Z */
9679 DEFINE_THISCALL_WRAPPER(basic_istream_short_ctor_init, 20)
9680 basic_istream_wchar* __thiscall basic_istream_short_ctor_init(basic_istream_wchar *this,
9681 basic_streambuf_wchar *strbuf, bool isstd, bool noinit, bool virt_init)
9683 basic_istream_wchar_ctor_init(this, strbuf, isstd, noinit, virt_init);
9684 basic_istream_wchar_get_basic_ios(this)->base.vtable = &basic_istream_short_vtable;
9685 return this;
9688 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z */
9689 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z */
9690 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ctor, 16)
9691 basic_istream_wchar* __thiscall basic_istream_wchar_ctor(basic_istream_wchar *this,
9692 basic_streambuf_wchar *strbuf, bool isstd, bool virt_init)
9694 return basic_istream_wchar_ctor_init(this, strbuf, isstd, FALSE, virt_init);
9697 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N@Z */
9698 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N@Z */
9699 DEFINE_THISCALL_WRAPPER(basic_istream_short_ctor, 16)
9700 basic_istream_wchar* __thiscall basic_istream_short_ctor(basic_istream_wchar *this,
9701 basic_streambuf_wchar *strbuf, bool isstd, bool virt_init)
9703 return basic_istream_short_ctor_init(this, strbuf, isstd, FALSE, virt_init);
9706 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE@W4_Uninitialized@1@@Z */
9707 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
9708 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ctor_uninitialized, 12)
9709 basic_istream_wchar* __thiscall basic_istream_wchar_ctor_uninitialized(
9710 basic_istream_wchar *this, int uninitialized, bool virt_init)
9712 basic_ios_wchar *base;
9714 TRACE("(%p %d %d)\n", this, uninitialized, virt_init);
9716 if(virt_init) {
9717 this->vbtable = basic_istream_wchar_vbtable;
9718 base = basic_istream_wchar_get_basic_ios(this);
9719 INIT_BASIC_IOS_VTORDISP(base);
9720 basic_ios_wchar_ctor(base);
9721 }else {
9722 base = basic_istream_wchar_get_basic_ios(this);
9725 base->base.vtable = &basic_istream_wchar_vtable;
9726 ios_base_Addstd(&base->base);
9727 return this;
9730 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QAE@W4_Uninitialized@1@@Z */
9731 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
9732 DEFINE_THISCALL_WRAPPER(basic_istream_short_ctor_uninitialized, 12)
9733 basic_istream_wchar* __thiscall basic_istream_short_ctor_uninitialized(
9734 basic_istream_wchar *this, int uninitialized, bool virt_init)
9736 basic_istream_wchar_ctor_uninitialized(this, uninitialized, virt_init);
9737 basic_istream_wchar_get_basic_ios(this)->base.vtable = &basic_istream_short_vtable;
9738 return this;
9741 /* ??1?$basic_istream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
9742 /* ??1?$basic_istream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
9743 /* ??1?$basic_istream@GU?$char_traits@G@std@@@std@@UAE@XZ */
9744 /* ??1?$basic_istream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
9745 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_dtor, 4)
9746 void __thiscall basic_istream_wchar_dtor(basic_ios_wchar *base)
9748 basic_istream_wchar *this = basic_istream_wchar_from_basic_ios(base);
9750 /* don't destroy virtual base here */
9751 TRACE("(%p)\n", this);
9754 /* ??_D?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
9755 /* ??_D?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
9756 /* ??_D?$basic_istream@GU?$char_traits@G@std@@@std@@QAEXXZ */
9757 /* ??_D?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
9758 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_vbase_dtor, 4)
9759 void __thiscall basic_istream_wchar_vbase_dtor(basic_istream_wchar *this)
9761 basic_ios_wchar *base = basic_istream_wchar_to_basic_ios(this);
9763 TRACE("(%p)\n", this);
9765 basic_istream_wchar_dtor(base);
9766 basic_ios_wchar_dtor(base);
9769 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_vector_dtor, 8)
9770 basic_istream_wchar* __thiscall basic_istream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
9772 basic_istream_wchar *this = basic_istream_wchar_from_basic_ios(base);
9774 TRACE("(%p %x)\n", this, flags);
9776 if(flags & 2) {
9777 /* we have an array, with the number of elements stored before the first object */
9778 INT_PTR i, *ptr = (INT_PTR *)this-1;
9780 for(i=*ptr-1; i>=0; i--)
9781 basic_istream_wchar_vbase_dtor(this+i);
9782 operator_delete(ptr);
9783 } else {
9784 basic_istream_wchar_vbase_dtor(this);
9785 if(flags & 1)
9786 operator_delete(this);
9789 return this;
9792 /* ?_Ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE_N_N@Z */
9793 /* ?_Ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_N_N@Z */
9794 /* ?_Ipfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QAE_N_N@Z */
9795 /* ?_Ipfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA_N_N@Z */
9796 DEFINE_THISCALL_WRAPPER(basic_istream_wchar__Ipfx, 8)
9797 bool __thiscall basic_istream_wchar__Ipfx(basic_istream_wchar *this, bool noskip)
9799 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9801 TRACE("(%p %d)\n", this, noskip);
9803 if(ios_base_good(&base->base)) {
9804 if(basic_ios_wchar_tie_get(base))
9805 basic_ostream_wchar_flush(basic_ios_wchar_tie_get(base));
9807 if(!noskip && (ios_base_flags_get(&base->base) & FMTFLAG_skipws)) {
9808 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9809 const ctype_wchar *ctype = ctype_wchar_use_facet(IOS_LOCALE(base->strbuf));
9810 int ch;
9812 for(ch = basic_streambuf_wchar_sgetc(strbuf); ;
9813 ch = basic_streambuf_wchar_snextc(strbuf)) {
9814 if(ch == WEOF) {
9815 basic_ios_wchar_setstate(base, IOSTATE_eofbit);
9816 break;
9819 if(!ctype_wchar_is_ch(ctype, _SPACE|_BLANK, ch))
9820 break;
9825 if(!ios_base_good(&base->base)) {
9826 basic_ios_wchar_setstate(base, IOSTATE_failbit);
9827 return FALSE;
9829 return TRUE;
9832 /* ?ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE_N_N@Z */
9833 /* ?ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_N_N@Z */
9834 /* ?ipfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QAE_N_N@Z */
9835 /* ?ipfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA_N_N@Z */
9836 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ipfx, 8)
9837 bool __thiscall basic_istream_wchar_ipfx(basic_istream_wchar *this, bool noskip)
9839 return basic_istream_wchar__Ipfx(this, noskip);
9842 /* ?isfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
9843 /* ?isfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
9844 /* ?isfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEXXZ */
9845 /* ?isfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
9846 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_isfx, 4)
9847 void __thiscall basic_istream_wchar_isfx(basic_istream_wchar *this)
9849 TRACE("(%p)\n", this);
9852 static BOOL basic_istream_wchar_sentry_create(basic_istream_wchar *istr, bool noskip)
9854 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istr);
9856 if(basic_ios_wchar_rdbuf_get(base))
9857 basic_streambuf_wchar__Lock(base->strbuf);
9859 return basic_istream_wchar_ipfx(istr, noskip);
9862 static void basic_istream_wchar_sentry_destroy(basic_istream_wchar *istr)
9864 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istr);
9866 if(basic_ios_wchar_rdbuf_get(base))
9867 basic_streambuf_wchar__Unlock(base->strbuf);
9870 /* ?gcount@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QBEHXZ */
9871 /* ?gcount@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEBA_JXZ */
9872 /* ?gcount@?$basic_istream@GU?$char_traits@G@std@@@std@@QBEHXZ */
9873 /* ?gcount@?$basic_istream@GU?$char_traits@G@std@@@std@@QEBA_JXZ */
9874 /* ?gcount@?$basic_istream@GU?$char_traits@G@std@@@std@@QBA_JXZ */
9875 /* ?gcount@?$basic_istream@GU?$char_traits@G@std@@@std@@QBE_JXZ */
9876 /* ?gcount@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QBA_JXZ */
9877 /* ?gcount@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QBE_JXZ */
9878 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_gcount, 4)
9879 streamsize __thiscall basic_istream_wchar_gcount(const basic_istream_wchar *this)
9881 TRACE("(%p)\n", this);
9882 return this->count;
9885 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
9886 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
9887 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEGXZ */
9888 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAGXZ */
9889 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get, 4)
9890 unsigned short __thiscall basic_istream_wchar_get(basic_istream_wchar *this)
9892 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9893 int ret;
9895 TRACE("(%p)\n", this);
9897 this->count = 0;
9899 if(!basic_istream_wchar_sentry_create(this, TRUE)) {
9900 basic_istream_wchar_sentry_destroy(this);
9901 return WEOF;
9904 ret = basic_streambuf_wchar_sbumpc(basic_ios_wchar_rdbuf_get(base));
9905 basic_istream_wchar_sentry_destroy(this);
9906 if(ret == WEOF)
9907 basic_ios_wchar_setstate(base, IOSTATE_eofbit|IOSTATE_failbit);
9908 else
9909 this->count++;
9911 return ret;
9914 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@AA_W@Z */
9915 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEA_W@Z */
9916 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@AAG@Z */
9917 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@AEAG@Z */
9918 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_ch, 8)
9919 basic_istream_wchar* __thiscall basic_istream_wchar_get_ch(basic_istream_wchar *this, wchar_t *ch)
9921 unsigned short ret;
9923 TRACE("(%p %p)\n", this, ch);
9925 ret = basic_istream_wchar_get(this);
9926 if(ret != WEOF)
9927 *ch = (wchar_t)ret;
9928 return this;
9931 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH_W@Z */
9932 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J_W@Z */
9933 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGHG@Z */
9934 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_JG@Z */
9935 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
9936 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_str_delim, 20)
9937 #else
9938 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_str_delim, 16)
9939 #endif
9940 basic_istream_wchar* __thiscall basic_istream_wchar_get_str_delim(basic_istream_wchar *this, wchar_t *str, streamsize count, wchar_t delim)
9942 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9943 unsigned short ch = delim;
9945 TRACE("(%p %p %s %s)\n", this, str, wine_dbgstr_longlong(count), debugstr_wn(&delim, 1));
9947 this->count = 0;
9949 if(basic_istream_wchar_sentry_create(this, TRUE)) {
9950 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9952 for(ch = basic_streambuf_wchar_sgetc(strbuf); count>1;
9953 ch = basic_streambuf_wchar_snextc(strbuf)) {
9954 if(ch==WEOF || ch==delim)
9955 break;
9957 *str++ = ch;
9958 this->count++;
9959 count--;
9962 basic_istream_wchar_sentry_destroy(this);
9964 basic_ios_wchar_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) |
9965 (ch==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
9966 if(count > 0)
9967 *str = 0;
9968 return this;
9971 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH@Z */
9972 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J@Z */
9973 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGH@Z */
9974 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_J@Z */
9975 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
9976 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_str, 16)
9977 #else
9978 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_str, 12)
9979 #endif
9980 basic_istream_wchar* __thiscall basic_istream_wchar_get_str(basic_istream_wchar *this, wchar_t *str, streamsize count)
9982 return basic_istream_wchar_get_str_delim(this, str, count, '\n');
9985 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@AAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_W@Z */
9986 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_W@Z */
9987 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@AAV?$basic_streambuf@GU?$char_traits@G@std@@@2@G@Z */
9988 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@G@Z */
9989 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_streambuf_delim, 12)
9990 basic_istream_wchar* __thiscall basic_istream_wchar_get_streambuf_delim(basic_istream_wchar *this, basic_streambuf_wchar *strbuf, wchar_t delim)
9992 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9993 unsigned short ch = delim;
9995 TRACE("(%p %p %s)\n", this, strbuf, debugstr_wn(&delim, 1));
9997 this->count = 0;
9999 if(basic_istream_wchar_sentry_create(this, TRUE)) {
10000 basic_streambuf_wchar *strbuf_read = basic_ios_wchar_rdbuf_get(base);
10002 for(ch = basic_streambuf_wchar_sgetc(strbuf_read); ;
10003 ch = basic_streambuf_wchar_snextc(strbuf_read)) {
10004 if(ch==WEOF || ch==delim)
10005 break;
10007 if(basic_streambuf_wchar_sputc(strbuf, ch) == WEOF)
10008 break;
10009 this->count++;
10012 basic_istream_wchar_sentry_destroy(this);
10014 basic_ios_wchar_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) |
10015 (ch==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
10016 return this;
10019 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@AAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@@Z */
10020 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@@Z */
10021 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@AAV?$basic_streambuf@GU?$char_traits@G@std@@@2@@Z */
10022 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@@Z */
10023 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_streambuf, 8)
10024 basic_istream_wchar* __thiscall basic_istream_wchar_get_streambuf(basic_istream_wchar *this, basic_streambuf_wchar *strbuf)
10026 return basic_istream_wchar_get_streambuf_delim(this, strbuf, '\n');
10029 /* ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH_W@Z */
10030 /* ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J_W@Z */
10031 /* ?getline@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGHG@Z */
10032 /* ?getline@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_JG@Z */
10033 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
10034 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_getline_delim, 20)
10035 #else
10036 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_getline_delim, 16)
10037 #endif
10038 basic_istream_wchar* __thiscall basic_istream_wchar_getline_delim(basic_istream_wchar *this, wchar_t *str, streamsize count, wchar_t delim)
10040 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10041 unsigned short ch = delim;
10043 TRACE("(%p %p %s %s)\n", this, str, wine_dbgstr_longlong(count), debugstr_wn(&delim, 1));
10045 this->count = 0;
10047 if(basic_istream_wchar_sentry_create(this, TRUE) && count>0) {
10048 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10050 while(count > 1) {
10051 ch = basic_streambuf_wchar_sbumpc(strbuf);
10053 if(ch==WEOF || ch==delim)
10054 break;
10056 *str++ = ch;
10057 this->count++;
10058 count--;
10061 if(ch == delim)
10062 this->count++;
10063 else if(ch != WEOF) {
10064 ch = basic_streambuf_wchar_sgetc(strbuf);
10066 if(ch == delim) {
10067 basic_streambuf_wchar__Gninc(strbuf);
10068 this->count++;
10072 basic_istream_wchar_sentry_destroy(this);
10074 basic_ios_wchar_setstate(base, (ch==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit) |
10075 (!this->count || (ch!=delim && ch!=WEOF) ? IOSTATE_failbit : IOSTATE_goodbit));
10076 if(count > 0)
10077 *str = 0;
10078 return this;
10081 /* ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH@Z */
10082 /* ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J@Z */
10083 /* ?getline@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGH@Z */
10084 /* ?getline@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_J@Z */
10085 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
10086 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_getline, 16)
10087 #else
10088 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_getline, 12)
10089 #endif
10090 basic_istream_wchar* __thiscall basic_istream_wchar_getline(basic_istream_wchar *this, wchar_t *str, streamsize count)
10092 return basic_istream_wchar_getline_delim(this, str, count, '\n');
10095 /* ?ignore@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@HG@Z */
10096 /* ?ignore@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_JG@Z */
10097 /* ?ignore@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@HG@Z */
10098 /* ?ignore@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@_JG@Z */
10099 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
10100 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ignore, 16)
10101 #else
10102 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ignore, 12)
10103 #endif
10104 basic_istream_wchar* __thiscall basic_istream_wchar_ignore(basic_istream_wchar *this, streamsize count, unsigned short delim)
10106 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10107 unsigned short ch = delim;
10108 unsigned int state;
10110 TRACE("(%p %s %d)\n", this, wine_dbgstr_longlong(count), delim);
10112 this->count = 0;
10114 if(basic_istream_wchar_sentry_create(this, TRUE)) {
10115 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10116 state = IOSTATE_goodbit;
10118 while(count > 0) {
10119 ch = basic_streambuf_wchar_sbumpc(strbuf);
10121 if(ch==WEOF) {
10122 state = IOSTATE_eofbit;
10123 break;
10126 if(ch==delim)
10127 break;
10129 this->count++;
10130 if(count != INT_MAX)
10131 count--;
10133 }else
10134 state = IOSTATE_failbit;
10135 basic_istream_wchar_sentry_destroy(this);
10137 basic_ios_wchar_setstate(base, state);
10138 return this;
10141 /* ?ws@std@@YAAAV?$basic_istream@_WU?$char_traits@_W@std@@@1@AAV21@@Z */
10142 /* ?ws@std@@YAAEAV?$basic_istream@_WU?$char_traits@_W@std@@@1@AEAV21@@Z */
10143 /* ?ws@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@1@AAV21@@Z */
10144 /* ?ws@std@@YAAEAV?$basic_istream@GU?$char_traits@G@std@@@1@AEAV21@@Z */
10145 basic_istream_wchar* __cdecl ws_basic_istream_wchar(basic_istream_wchar *istream)
10147 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istream);
10148 unsigned short ch = '\n';
10150 TRACE("(%p)\n", istream);
10152 if(basic_istream_wchar_sentry_create(istream, TRUE)) {
10153 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10154 const ctype_wchar *ctype = ctype_wchar_use_facet(IOS_LOCALE(strbuf));
10156 for(ch = basic_streambuf_wchar_sgetc(strbuf); ctype_wchar_is_ch(ctype, _SPACE, ch);
10157 ch = basic_streambuf_wchar_snextc(strbuf)) {
10158 if(ch == WEOF)
10159 break;
10162 basic_istream_wchar_sentry_destroy(istream);
10164 if(ch == WEOF)
10165 basic_ios_wchar_setstate(base, IOSTATE_eofbit);
10166 return istream;
10169 /* ?peek@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
10170 /* ?peek@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
10171 /* ?peek@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEGXZ */
10172 /* ?peek@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAGXZ */
10173 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_peek, 4)
10174 unsigned short __thiscall basic_istream_wchar_peek(basic_istream_wchar *this)
10176 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10177 unsigned short ret = WEOF;
10179 TRACE("(%p)\n", this);
10181 this->count = 0;
10183 if(basic_istream_wchar_sentry_create(this, TRUE))
10184 ret = basic_streambuf_wchar_sgetc(basic_ios_wchar_rdbuf_get(base));
10185 basic_istream_wchar_sentry_destroy(this);
10187 if (ret == WEOF)
10188 basic_ios_wchar_setstate(base, IOSTATE_eofbit);
10190 return ret;
10193 /* ?_Read_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WIH@Z */
10194 /* ?_Read_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_K_J@Z */
10195 /* ?_Read_s@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGIH@Z */
10196 /* ?_Read_s@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_K_J@Z */
10197 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
10198 DEFINE_THISCALL_WRAPPER(basic_istream_wchar__Read_s, 20)
10199 #else
10200 DEFINE_THISCALL_WRAPPER(basic_istream_wchar__Read_s, 16)
10201 #endif
10202 basic_istream_wchar* __thiscall basic_istream_wchar__Read_s(basic_istream_wchar *this, wchar_t *str, size_t size, streamsize count)
10204 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10205 IOSB_iostate state = IOSTATE_goodbit;
10207 TRACE("(%p %p %Iu %s)\n", this, str, size, wine_dbgstr_longlong(count));
10209 if(basic_istream_wchar_sentry_create(this, TRUE)) {
10210 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10212 this->count = basic_streambuf_wchar__Sgetn_s(strbuf, str, size, count);
10213 if(this->count != count)
10214 state |= IOSTATE_failbit | IOSTATE_eofbit;
10215 }else {
10216 this->count = 0;
10218 basic_istream_wchar_sentry_destroy(this);
10220 basic_ios_wchar_setstate(base, state);
10221 return this;
10224 /* ?read@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH@Z */
10225 /* ?read@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J@Z */
10226 /* ?read@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGH@Z */
10227 /* ?read@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_J@Z */
10228 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
10229 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read, 16)
10230 #else
10231 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read, 12)
10232 #endif
10233 basic_istream_wchar* __thiscall basic_istream_wchar_read(basic_istream_wchar *this, wchar_t *str, streamsize count)
10235 return basic_istream_wchar__Read_s(this, str, -1, count);
10238 /* ?_Readsome_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEHPA_WIH@Z */
10239 /* ?_Readsome_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_JPEA_W_K_J@Z */
10240 /* ?_Readsome_s@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEHPAGIH@Z */
10241 /* ?_Readsome_s@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA_JPEAG_K_J@Z */
10242 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
10243 DEFINE_THISCALL_WRAPPER(basic_istream_wchar__Readsome_s, 20)
10244 #else
10245 DEFINE_THISCALL_WRAPPER(basic_istream_wchar__Readsome_s, 16)
10246 #endif
10247 streamsize __thiscall basic_istream_wchar__Readsome_s(basic_istream_wchar *this, wchar_t *str, size_t size, streamsize count)
10249 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10250 IOSB_iostate state = IOSTATE_goodbit;
10252 TRACE("(%p %p %Iu %s)\n", this, str, size, wine_dbgstr_longlong(count));
10254 this->count = 0;
10256 if(basic_istream_wchar_sentry_create(this, TRUE)) {
10257 streamsize avail = basic_streambuf_wchar_in_avail(basic_ios_wchar_rdbuf_get(base));
10258 if(avail > count)
10259 avail = count;
10261 if(avail == -1)
10262 state |= IOSTATE_eofbit;
10263 else if(avail > 0)
10264 basic_istream_wchar__Read_s(this, str, size, avail);
10265 }else {
10266 state |= IOSTATE_failbit;
10268 basic_istream_wchar_sentry_destroy(this);
10270 basic_ios_wchar_setstate(base, state);
10271 return this->count;
10274 /* ?readsome@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEHPA_WH@Z */
10275 /* ?readsome@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_JPEA_W_J@Z */
10276 /* ?readsome@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEHPAGH@Z */
10277 /* ?readsome@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA_JPEAG_J@Z */
10278 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
10279 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_readsome, 16)
10280 #else
10281 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_readsome, 12)
10282 #endif
10283 streamsize __thiscall basic_istream_wchar_readsome(basic_istream_wchar *this, wchar_t *str, streamsize count)
10285 return basic_istream_wchar__Readsome_s(this, str, count, count);
10288 /* ?putback@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@_W@Z */
10289 /* ?putback@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_W@Z */
10290 /* ?putback@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@G@Z */
10291 /* ?putback@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@G@Z */
10292 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_putback, 8)
10293 basic_istream_wchar* __thiscall basic_istream_wchar_putback(basic_istream_wchar *this, wchar_t ch)
10295 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10296 IOSB_iostate state = IOSTATE_goodbit;
10298 TRACE("(%p %c)\n", this, ch);
10300 this->count = 0;
10302 if(basic_istream_wchar_sentry_create(this, TRUE)) {
10303 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10305 if(!ios_base_good(&base->base))
10306 state |= IOSTATE_failbit;
10307 else if(!strbuf || basic_streambuf_wchar_sputbackc(strbuf, ch)==WEOF)
10308 state |= IOSTATE_badbit;
10310 basic_istream_wchar_sentry_destroy(this);
10312 basic_ios_wchar_setstate(base, state);
10313 return this;
10316 /* ?unget@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@XZ */
10317 /* ?unget@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@XZ */
10318 /* ?unget@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@XZ */
10319 /* ?unget@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@XZ */
10320 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_unget, 4)
10321 basic_istream_wchar* __thiscall basic_istream_wchar_unget(basic_istream_wchar *this)
10323 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10324 IOSB_iostate state = IOSTATE_goodbit;
10326 TRACE("(%p)\n", this);
10328 this->count = 0;
10330 if(basic_istream_wchar_sentry_create(this, TRUE)) {
10331 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10333 if(!ios_base_good(&base->base))
10334 state |= IOSTATE_failbit;
10335 else if(!strbuf || basic_streambuf_wchar_sungetc(strbuf)==WEOF)
10336 state |= IOSTATE_badbit;
10338 basic_istream_wchar_sentry_destroy(this);
10340 basic_ios_wchar_setstate(base, state);
10341 return this;
10344 /* ?sync@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEHXZ */
10345 /* ?sync@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAHXZ */
10346 /* ?sync@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEHXZ */
10347 /* ?sync@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAHXZ */
10348 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_sync, 4)
10349 int __thiscall basic_istream_wchar_sync(basic_istream_wchar *this)
10351 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10352 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10354 TRACE("(%p)\n", this);
10356 if(!strbuf)
10357 return -1;
10359 if(basic_istream_wchar_sentry_create(this, TRUE)) {
10360 if(basic_streambuf_wchar_pubsync(strbuf) != -1) {
10361 basic_istream_wchar_sentry_destroy(this);
10362 return 0;
10365 basic_istream_wchar_sentry_destroy(this);
10367 basic_ios_wchar_setstate(base, IOSTATE_badbit);
10368 return -1;
10371 /* ?tellg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@XZ */
10372 /* ?tellg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
10373 /* ?tellg@?$basic_istream@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@XZ */
10374 /* ?tellg@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
10375 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_tellg, 8)
10376 fpos_mbstatet* __thiscall basic_istream_wchar_tellg(basic_istream_wchar *this, fpos_mbstatet *ret)
10378 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10380 TRACE("(%p %p)\n", this, ret);
10382 #if _MSVCP_VER >= 110
10383 if(basic_istream_wchar_sentry_create(this, TRUE)) {
10384 basic_streambuf_wchar_pubseekoff(basic_ios_wchar_rdbuf_get(base),
10385 ret, 0, SEEKDIR_cur, OPENMODE_in);
10386 }else {
10387 ret->off = -1;
10388 ret->pos = 0;
10389 memset(&ret->state, 0, sizeof(ret->state));
10391 basic_istream_wchar_sentry_destroy(this);
10392 #else
10393 if(ios_base_fail(&base->base)) {
10394 ret->off = -1;
10395 ret->pos = 0;
10396 memset(&ret->state, 0, sizeof(ret->state));
10397 return ret;
10400 basic_streambuf_wchar_pubseekoff(basic_ios_wchar_rdbuf_get(base),
10401 ret, 0, SEEKDIR_cur, OPENMODE_in);
10402 #endif
10403 return ret;
10406 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@JW4seekdir@ios_base@2@@Z */
10407 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@_JW4seekdir@ios_base@2@@Z */
10408 /* ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@JH@Z */
10409 /* ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_JH@Z */
10410 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@JH@Z */
10411 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@_JH@Z */
10412 #if STREAMOFF_BITS == 64
10413 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_seekg, 16)
10414 #else
10415 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_seekg, 12)
10416 #endif
10417 basic_istream_wchar* __thiscall basic_istream_wchar_seekg(basic_istream_wchar *this, streamoff off, int dir)
10419 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10420 #if _MSVCP_VER >= 110
10421 IOSB_iostate state;
10423 TRACE("(%p %s %d)\n", this, wine_dbgstr_longlong(off), dir);
10425 state = ios_base_rdstate(&base->base);
10426 ios_base_clear(&base->base, state & ~IOSTATE_eofbit);
10428 if(basic_istream_wchar_sentry_create(this, TRUE)) {
10429 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10430 fpos_mbstatet ret;
10432 basic_streambuf_wchar_pubseekoff(strbuf, &ret, off, dir, OPENMODE_in);
10434 if(ret.off==-1 && ret.pos==0 && MBSTATET_TO_INT(&ret.state)==0)
10435 basic_ios_wchar_setstate(base, IOSTATE_failbit);
10437 basic_istream_wchar_sentry_destroy(this);
10438 #else
10439 TRACE("(%p %s %d)\n", this, wine_dbgstr_longlong(off), dir);
10441 if(!ios_base_fail(&base->base)) {
10442 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10443 fpos_mbstatet ret;
10445 basic_streambuf_wchar_pubseekoff(strbuf, &ret, off, dir, OPENMODE_in);
10447 if(ret.off==-1 && ret.pos==0 && MBSTATET_TO_INT(&ret.state)==0)
10448 basic_ios_wchar_setstate(base, IOSTATE_failbit);
10449 else
10450 basic_ios_wchar_clear(base, IOSTATE_goodbit);
10451 return this;
10452 }else
10453 basic_ios_wchar_clear(base, IOSTATE_goodbit);
10454 #endif
10455 return this;
10458 /* ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
10459 /* ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
10460 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
10461 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
10462 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_seekg_fpos, 28)
10463 basic_istream_wchar* __thiscall basic_istream_wchar_seekg_fpos(basic_istream_wchar *this, fpos_mbstatet pos)
10465 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10466 #if _MSVCP_VER >= 110
10467 IOSB_iostate state;
10469 TRACE("(%p %s)\n", this, debugstr_fpos_mbstatet(&pos));
10471 state = ios_base_rdstate(&base->base);
10472 ios_base_clear(&base->base, state & ~IOSTATE_eofbit);
10474 if(basic_istream_wchar_sentry_create(this, TRUE)) {
10475 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10476 fpos_mbstatet ret;
10478 basic_streambuf_wchar_pubseekpos(strbuf, &ret, pos, OPENMODE_in);
10480 if(ret.off==-1 && ret.pos==0 && MBSTATET_TO_INT(&ret.state)==0)
10481 basic_ios_wchar_setstate(base, IOSTATE_failbit);
10483 basic_istream_wchar_sentry_destroy(this);
10484 #else
10485 TRACE("(%p %s)\n", this, debugstr_fpos_mbstatet(&pos));
10487 if(!ios_base_fail(&base->base)) {
10488 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10489 fpos_mbstatet ret;
10491 basic_streambuf_wchar_pubseekpos(strbuf, &ret, pos, OPENMODE_in);
10493 if(ret.off==-1 && ret.pos==0 && MBSTATET_TO_INT(&ret.state)==0)
10494 basic_ios_wchar_setstate(base, IOSTATE_failbit);
10495 else
10496 basic_ios_wchar_clear(base, IOSTATE_goodbit);
10497 return this;
10498 }else
10499 basic_ios_wchar_clear(base, IOSTATE_goodbit);
10500 #endif
10501 return this;
10504 static basic_istream_wchar* basic_istream_read_short(basic_istream_wchar *this, short *v, const num_get *numget)
10506 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10507 int state = IOSTATE_goodbit;
10509 TRACE("(%p %p)\n", this, v);
10511 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10512 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10513 istreambuf_iterator_wchar first={0}, last={0};
10514 LONG tmp;
10516 first.strbuf = strbuf;
10517 num_get_wchar_get_long(numget, &last, first, last, &base->base, &state, &tmp);
10519 if(!(state&IOSTATE_failbit) && tmp==(LONG)((short)tmp))
10520 *v = tmp;
10521 else
10522 state |= IOSTATE_failbit;
10524 basic_istream_wchar_sentry_destroy(this);
10526 basic_ios_wchar_setstate(base, state);
10527 return this;
10530 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAF@Z */
10531 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAF@Z */
10532 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_short, 8)
10533 basic_istream_wchar* __thiscall basic_istream_wchar_read_short(basic_istream_wchar *this, short *v)
10535 return basic_istream_read_short(this, v, num_get_wchar_use_facet(
10536 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10539 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAF@Z */
10540 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAF@Z */
10541 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_short, 8)
10542 basic_istream_wchar* __thiscall basic_istream_short_read_short(basic_istream_wchar *this, short *v)
10544 return basic_istream_read_short(this, v, num_get_short_use_facet(
10545 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10548 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAG@Z */
10549 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAG@Z */
10550 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_ushort, 8)
10551 basic_istream_wchar* __thiscall basic_istream_wchar_read_ushort(basic_istream_wchar *this, unsigned short *v)
10553 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10554 int state = IOSTATE_goodbit;
10556 TRACE("(%p %p)\n", this, v);
10558 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10559 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10560 const num_get *numget = num_get_wchar_use_facet(IOS_LOCALE(strbuf));
10561 istreambuf_iterator_wchar first={0}, last={0};
10563 first.strbuf = strbuf;
10564 num_get_wchar_get_ushort(numget, &last, first, last, &base->base, &state, v);
10566 basic_istream_wchar_sentry_destroy(this);
10568 basic_ios_wchar_setstate(base, state);
10569 return this;
10572 static basic_istream_wchar* basic_istream_read_int(basic_istream_wchar *this, int *v, const num_get *numget)
10574 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10575 int state = IOSTATE_goodbit;
10577 TRACE("(%p %p)\n", this, v);
10579 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10580 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10581 istreambuf_iterator_wchar first={0}, last={0};
10583 first.strbuf = strbuf;
10584 num_get_wchar_get_long(numget, &last, first, last, &base->base, &state, (LONG*)v);
10586 basic_istream_wchar_sentry_destroy(this);
10588 basic_ios_wchar_setstate(base, state);
10589 return this;
10592 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAH@Z */
10593 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAH@Z */
10594 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_int, 8)
10595 basic_istream_wchar* __thiscall basic_istream_wchar_read_int(basic_istream_wchar *this, int *v)
10597 return basic_istream_read_int(this, v, num_get_wchar_use_facet(
10598 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10601 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAH@Z */
10602 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAH@Z */
10603 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_int, 8)
10604 basic_istream_wchar* __thiscall basic_istream_short_read_int(basic_istream_wchar *this, int *v)
10606 return basic_istream_read_int(this, v, num_get_short_use_facet(
10607 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10610 static basic_istream_wchar* basic_istream_read_uint(basic_istream_wchar *this, unsigned int *v, const num_get *numget)
10612 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10613 int state = IOSTATE_goodbit;
10615 TRACE("(%p %p)\n", this, v);
10617 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10618 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10619 istreambuf_iterator_wchar first={0}, last={0};
10621 first.strbuf = strbuf;
10622 num_get_wchar_get_uint(numget, &last, first, last, &base->base, &state, v);
10624 basic_istream_wchar_sentry_destroy(this);
10626 basic_ios_wchar_setstate(base, state);
10627 return this;
10630 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAI@Z */
10631 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAI@Z */
10632 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_uint, 8)
10633 basic_istream_wchar* __thiscall basic_istream_wchar_read_uint(basic_istream_wchar *this, unsigned int *v)
10635 return basic_istream_read_uint(this, v, num_get_wchar_use_facet(
10636 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10639 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAI@Z */
10640 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAI@Z */
10641 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_uint, 8)
10642 basic_istream_wchar* __thiscall basic_istream_short_read_uint(basic_istream_wchar *this, unsigned int *v)
10644 return basic_istream_read_uint(this, v, num_get_short_use_facet(
10645 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10648 static basic_istream_wchar* basic_istream_read_long(basic_istream_wchar *this, LONG *v, const num_get *numget)
10650 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10651 int state = IOSTATE_goodbit;
10653 TRACE("(%p %p)\n", this, v);
10655 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10656 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10657 istreambuf_iterator_wchar first={0}, last={0};
10659 first.strbuf = strbuf;
10660 num_get_wchar_get_long(numget, &last, first, last, &base->base, &state, v);
10662 basic_istream_wchar_sentry_destroy(this);
10664 basic_ios_wchar_setstate(base, state);
10665 return this;
10668 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAJ@Z */
10669 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAJ@Z */
10670 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_long, 8)
10671 basic_istream_wchar* __thiscall basic_istream_wchar_read_long(basic_istream_wchar *this, LONG *v)
10673 return basic_istream_read_long(this, v, num_get_wchar_use_facet(
10674 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10677 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAJ@Z */
10678 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAJ@Z */
10679 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_long, 8)
10680 basic_istream_wchar* __thiscall basic_istream_short_read_long(basic_istream_wchar *this, LONG *v)
10682 return basic_istream_read_long(this, v, num_get_short_use_facet(
10683 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10686 static basic_istream_wchar* basic_istream_read_ulong(basic_istream_wchar *this, ULONG *v, const num_get *numget)
10688 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10689 int state = IOSTATE_goodbit;
10691 TRACE("(%p %p)\n", this, v);
10693 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10694 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10695 istreambuf_iterator_wchar first={0}, last={0};
10697 first.strbuf = strbuf;
10698 num_get_wchar_get_ulong(numget, &last, first, last, &base->base, &state, v);
10700 basic_istream_wchar_sentry_destroy(this);
10702 basic_ios_wchar_setstate(base, state);
10703 return this;
10706 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAK@Z */
10707 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAK@Z */
10708 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_ulong, 8)
10709 basic_istream_wchar* __thiscall basic_istream_wchar_read_ulong(basic_istream_wchar *this, ULONG *v)
10711 return basic_istream_read_ulong(this, v, num_get_wchar_use_facet(
10712 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10715 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAK@Z */
10716 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAK@Z */
10717 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_ulong, 8)
10718 basic_istream_wchar* __thiscall basic_istream_short_read_ulong(basic_istream_wchar *this, ULONG *v)
10720 return basic_istream_read_ulong(this, v, num_get_short_use_facet(
10721 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10724 static basic_istream_wchar* basic_istream_read_float(basic_istream_wchar *this, float *v, const num_get *numget)
10726 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10727 int state = IOSTATE_goodbit;
10729 TRACE("(%p %p)\n", this, v);
10731 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10732 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10733 istreambuf_iterator_wchar first={0}, last={0};
10735 first.strbuf = strbuf;
10736 num_get_wchar_get_float(numget, &last, first, last, &base->base, &state, v);
10738 basic_istream_wchar_sentry_destroy(this);
10740 basic_ios_wchar_setstate(base, state);
10741 return this;
10744 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAM@Z */
10745 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAM@Z */
10746 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_float, 8)
10747 basic_istream_wchar* __thiscall basic_istream_wchar_read_float(basic_istream_wchar *this, float *v)
10749 return basic_istream_read_float(this, v, num_get_wchar_use_facet(
10750 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10753 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAM@Z */
10754 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAM@Z */
10755 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_float, 8)
10756 basic_istream_wchar* __thiscall basic_istream_short_read_float(basic_istream_wchar *this, float *v)
10758 return basic_istream_read_float(this, v, num_get_short_use_facet(
10759 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10762 static basic_istream_wchar* basic_istream_read_double(basic_istream_wchar *this, double *v, const num_get *numget)
10764 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10765 int state = IOSTATE_goodbit;
10767 TRACE("(%p %p)\n", this, v);
10769 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10770 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10771 istreambuf_iterator_wchar first={0}, last={0};
10773 first.strbuf = strbuf;
10774 num_get_wchar_get_double(numget, &last, first, last, &base->base, &state, v);
10776 basic_istream_wchar_sentry_destroy(this);
10778 basic_ios_wchar_setstate(base, state);
10779 return this;
10782 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAN@Z */
10783 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAN@Z */
10784 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_double, 8)
10785 basic_istream_wchar* __thiscall basic_istream_wchar_read_double(basic_istream_wchar *this, double *v)
10787 return basic_istream_read_double(this, v, num_get_wchar_use_facet(
10788 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10791 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAN@Z */
10792 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAN@Z */
10793 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_double, 8)
10794 basic_istream_wchar* __thiscall basic_istream_short_read_double(basic_istream_wchar *this, double *v)
10796 return basic_istream_read_double(this, v, num_get_short_use_facet(
10797 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10800 static basic_istream_wchar* basic_istream_read_ldouble(basic_istream_wchar *this, double *v, const num_get *numget)
10802 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10803 int state = IOSTATE_goodbit;
10805 TRACE("(%p %p)\n", this, v);
10807 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10808 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10809 istreambuf_iterator_wchar first={0}, last={0};
10811 first.strbuf = strbuf;
10812 num_get_wchar_get_ldouble(numget, &last, first, last, &base->base, &state, v);
10814 basic_istream_wchar_sentry_destroy(this);
10816 basic_ios_wchar_setstate(base, state);
10817 return this;
10820 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAO@Z */
10821 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAO@Z */
10822 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_ldouble, 8)
10823 basic_istream_wchar* __thiscall basic_istream_wchar_read_ldouble(basic_istream_wchar *this, double *v)
10825 return basic_istream_read_ldouble(this, v, num_get_wchar_use_facet(
10826 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10829 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAO@Z */
10830 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAO@Z */
10831 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_ldouble, 8)
10832 basic_istream_wchar* __thiscall basic_istream_short_read_ldouble(basic_istream_wchar *this, double *v)
10834 return basic_istream_read_ldouble(this, v, num_get_short_use_facet(
10835 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10838 static basic_istream_wchar* basic_istream_read_ptr(basic_istream_wchar *this, void **v, const num_get *numget)
10840 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10841 int state = IOSTATE_goodbit;
10843 TRACE("(%p %p)\n", this, v);
10845 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10846 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10847 istreambuf_iterator_wchar first={0}, last={0};
10849 first.strbuf = strbuf;
10850 num_get_wchar_get_void(numget, &last, first, last, &base->base, &state, v);
10852 basic_istream_wchar_sentry_destroy(this);
10854 basic_ios_wchar_setstate(base, state);
10855 return this;
10858 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAPAX@Z */
10859 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAPEAX@Z */
10860 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_ptr, 8)
10861 basic_istream_wchar* __thiscall basic_istream_wchar_read_ptr(basic_istream_wchar *this, void **v)
10863 return basic_istream_read_ptr(this, v, num_get_wchar_use_facet(
10864 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10867 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAPAX@Z */
10868 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAPEAX@Z */
10869 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_ptr, 8)
10870 basic_istream_wchar* __thiscall basic_istream_short_read_ptr(basic_istream_wchar *this, void **v)
10872 return basic_istream_read_ptr(this, v, num_get_short_use_facet(
10873 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10876 static basic_istream_wchar* basic_istream_read_int64(basic_istream_wchar *this, __int64 *v, const num_get *numget)
10878 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10879 int state = IOSTATE_goodbit;
10881 TRACE("(%p %p)\n", this, v);
10883 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10884 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10885 istreambuf_iterator_wchar first={0}, last={0};
10887 first.strbuf = strbuf;
10888 num_get_wchar_get_int64(numget, &last, first, last, &base->base, &state, v);
10890 basic_istream_wchar_sentry_destroy(this);
10892 basic_ios_wchar_setstate(base, state);
10893 return this;
10896 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AA_J@Z */
10897 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEA_J@Z */
10898 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_int64, 8)
10899 basic_istream_wchar* __thiscall basic_istream_wchar_read_int64(basic_istream_wchar *this, __int64 *v)
10901 return basic_istream_read_int64(this, v, num_get_wchar_use_facet(
10902 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10905 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AA_J@Z */
10906 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEA_J@Z */
10907 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_int64, 8)
10908 basic_istream_wchar* __thiscall basic_istream_short_read_int64(basic_istream_wchar *this, __int64 *v)
10910 return basic_istream_read_int64(this, v, num_get_short_use_facet(
10911 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10914 static basic_istream_wchar* basic_istream_read_uint64(basic_istream_wchar *this, unsigned __int64 *v, const num_get *numget)
10916 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10917 int state = IOSTATE_goodbit;
10919 TRACE("(%p %p)\n", this, v);
10921 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10922 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10923 istreambuf_iterator_wchar first={0}, last={0};
10925 first.strbuf = strbuf;
10926 num_get_wchar_get_uint64(numget, &last, first, last, &base->base, &state, v);
10928 basic_istream_wchar_sentry_destroy(this);
10930 basic_ios_wchar_setstate(base, state);
10931 return this;
10934 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AA_K@Z */
10935 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEA_K@Z */
10936 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_uint64, 8)
10937 basic_istream_wchar* __thiscall basic_istream_wchar_read_uint64(basic_istream_wchar *this, unsigned __int64 *v)
10939 return basic_istream_read_uint64(this, v, num_get_wchar_use_facet(
10940 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10943 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AA_K@Z */
10944 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEA_K@Z */
10945 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_uint64, 8)
10946 basic_istream_wchar* __thiscall basic_istream_short_read_uint64(basic_istream_wchar *this, unsigned __int64 *v)
10948 return basic_istream_read_uint64(this, v, num_get_short_use_facet(
10949 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10952 static basic_istream_wchar* basic_istream_read_bool(basic_istream_wchar *this, bool *v, const num_get *numget)
10954 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10955 int state = IOSTATE_goodbit;
10957 TRACE("(%p %p)\n", this, v);
10959 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10960 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10961 istreambuf_iterator_wchar first={0}, last={0};
10963 first.strbuf = strbuf;
10964 num_get_wchar_get_bool(numget, &last, first, last, &base->base, &state, v);
10966 basic_istream_wchar_sentry_destroy(this);
10968 basic_ios_wchar_setstate(base, state);
10969 return this;
10972 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AA_N@Z */
10973 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEA_N@Z */
10974 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_bool, 8)
10975 basic_istream_wchar* __thiscall basic_istream_wchar_read_bool(basic_istream_wchar *this, bool *v)
10977 return basic_istream_read_bool(this, v, num_get_wchar_use_facet(
10978 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10981 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AA_N@Z */
10982 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEA_N@Z */
10983 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_bool, 8)
10984 basic_istream_wchar* __thiscall basic_istream_short_read_bool(basic_istream_wchar *this, bool *v)
10986 return basic_istream_read_bool(this, v, num_get_short_use_facet(
10987 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10990 /* ??$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 */
10991 /* ??$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 */
10992 /* ??$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 */
10993 /* ??$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 */
10994 basic_istream_wchar* __cdecl basic_istream_wchar_getline_bstr_delim(
10995 basic_istream_wchar *istream, basic_string_wchar *str, wchar_t delim)
10997 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istream);
10998 IOSB_iostate state = IOSTATE_goodbit;
10999 int c = delim;
11001 TRACE("(%p %p %s)\n", istream, str, debugstr_wn(&delim, 1));
11003 if(basic_istream_wchar_sentry_create(istream, TRUE)) {
11004 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
11005 MSVCP_basic_string_wchar_clear(str);
11007 c = basic_streambuf_wchar_sgetc(strbuf);
11008 for(; c!=delim && c!=WEOF; c = basic_streambuf_wchar_snextc(strbuf))
11009 MSVCP_basic_string_wchar_append_ch(str, c);
11010 if(c==delim) basic_streambuf_wchar_sbumpc(strbuf);
11011 else if(c==WEOF) state |= IOSTATE_eofbit;
11013 if(!MSVCP_basic_string_wchar_length(str) && c!=delim) state |= IOSTATE_failbit;
11015 basic_istream_wchar_sentry_destroy(istream);
11017 basic_ios_wchar_setstate(basic_istream_wchar_get_basic_ios(istream), state);
11018 return istream;
11021 /* ??$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 */
11022 /* ??$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 */
11023 /* ??$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 */
11024 /* ??$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 */
11025 basic_istream_wchar* __cdecl basic_istream_wchar_getline_bstr(
11026 basic_istream_wchar *istream, basic_string_wchar *str)
11028 return basic_istream_wchar_getline_bstr_delim(istream, str, '\n');
11031 static basic_istream_wchar* basic_istream_read_bstr(basic_istream_wchar *istream,
11032 basic_string_wchar *str, const ctype_wchar *ctype)
11034 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istream);
11035 IOSB_iostate state = IOSTATE_failbit;
11036 int c = '\n';
11038 TRACE("(%p %p)\n", istream, str);
11040 if(basic_istream_wchar_sentry_create(istream, FALSE)) {
11041 size_t count = ios_base_width_get(&base->base);
11043 if(!count)
11044 count = -1;
11046 MSVCP_basic_string_wchar_clear(str);
11048 for(c = basic_streambuf_wchar_sgetc(basic_ios_wchar_rdbuf_get(base));
11049 c!=WEOF && !ctype_wchar_is_ch(ctype, _SPACE|_BLANK, c) && count>0;
11050 c = basic_streambuf_wchar_snextc(basic_ios_wchar_rdbuf_get(base)), count--) {
11051 state = IOSTATE_goodbit;
11052 MSVCP_basic_string_wchar_append_ch(str, c);
11055 basic_istream_wchar_sentry_destroy(istream);
11057 ios_base_width_set(&base->base, 0);
11058 basic_ios_wchar_setstate(base, state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
11059 return istream;
11062 /* ??$?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 */
11063 /* ??$?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 */
11064 basic_istream_wchar* __cdecl basic_istream_wchar_read_bstr(
11065 basic_istream_wchar *istream, basic_string_wchar *str)
11067 return basic_istream_read_bstr(istream, str, ctype_wchar_use_facet(
11068 IOS_LOCALE(basic_istream_wchar_get_basic_ios(istream)->strbuf)));
11071 /* ??$?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 */
11072 /* ??$?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 */
11073 basic_istream_wchar* __cdecl basic_istream_short_read_bstr(
11074 basic_istream_wchar *istream, basic_string_wchar *str)
11076 return basic_istream_read_bstr(istream, str, ctype_short_use_facet(
11077 IOS_LOCALE(basic_istream_wchar_get_basic_ios(istream)->strbuf)));
11080 static basic_istream_wchar* basic_istream_read_str(basic_istream_wchar *istream, wchar_t *str, const ctype_wchar *ctype)
11082 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istream);
11083 IOSB_iostate state = IOSTATE_failbit;
11084 unsigned short c = '\n';
11086 TRACE("(%p %p)\n", istream, str);
11088 if(basic_istream_wchar_sentry_create(istream, FALSE)) {
11089 size_t count = ios_base_width_get(&base->base)-1;
11091 for(c = basic_streambuf_wchar_sgetc(basic_ios_wchar_rdbuf_get(base));
11092 c!=WEOF && !ctype_wchar_is_ch(ctype, _SPACE|_BLANK, c) && count>0;
11093 c = basic_streambuf_wchar_snextc(basic_ios_wchar_rdbuf_get(base)), count--) {
11094 state = IOSTATE_goodbit;
11095 *str++ = c;
11098 basic_istream_wchar_sentry_destroy(istream);
11100 *str = 0;
11101 ios_base_width_set(&base->base, 0);
11102 basic_ios_wchar_setstate(base, state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
11103 return istream;
11106 /* ??$?5_WU?$char_traits@_W@std@@@std@@YAAAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AAV10@PA_W@Z */
11107 /* ??$?5_WU?$char_traits@_W@std@@@std@@YAAEAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AEAV10@PEA_W@Z */
11108 basic_istream_wchar* __cdecl basic_istream_wchar_read_str(basic_istream_wchar *istream, wchar_t *str)
11110 return basic_istream_read_str(istream, str, ctype_wchar_use_facet(
11111 IOS_LOCALE(basic_istream_wchar_get_basic_ios(istream)->strbuf)));
11114 /* ??$?5GU?$char_traits@G@std@@@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@0@AAV10@PAG@Z */
11115 /* ??$?5GU?$char_traits@G@std@@@std@@YAAEAV?$basic_istream@GU?$char_traits@G@std@@@0@AEAV10@PEAG@Z */
11116 basic_istream_wchar* __cdecl basic_istream_short_read_str(basic_istream_wchar *istream, wchar_t *str)
11118 return basic_istream_read_str(istream, str, ctype_short_use_facet(
11119 IOS_LOCALE(basic_istream_wchar_get_basic_ios(istream)->strbuf)));
11122 /* ??$?5_WU?$char_traits@_W@std@@@std@@YAAAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AAV10@AA_W@Z */
11123 /* ??$?5_WU?$char_traits@_W@std@@@std@@YAAEAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AEAV10@AEA_W@Z */
11124 /* ??$?5GU?$char_traits@G@std@@@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@0@AAV10@AAG@Z */
11125 /* ??$?5GU?$char_traits@G@std@@@std@@YAAEAV?$basic_istream@GU?$char_traits@G@std@@@0@AEAV10@AEAG@Z */
11126 basic_istream_wchar* __cdecl basic_istream_wchar_read_ch(basic_istream_wchar *istream, wchar_t *ch)
11128 IOSB_iostate state = IOSTATE_failbit;
11129 unsigned short c = 0;
11131 TRACE("(%p %p)\n", istream, ch);
11133 if(basic_istream_wchar_sentry_create(istream, FALSE)) {
11134 c = basic_streambuf_wchar_sbumpc(basic_ios_wchar_rdbuf_get(
11135 basic_istream_wchar_get_basic_ios(istream)));
11136 if(c != WEOF) {
11137 state = IOSTATE_goodbit;
11138 *ch = c;
11141 basic_istream_wchar_sentry_destroy(istream);
11143 basic_ios_wchar_setstate(basic_istream_wchar_get_basic_ios(istream),
11144 state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
11145 return istream;
11148 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
11149 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
11150 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
11151 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
11152 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_streambuf, 8)
11153 basic_istream_wchar* __thiscall basic_istream_wchar_read_streambuf(
11154 basic_istream_wchar *this, basic_streambuf_wchar *streambuf)
11156 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
11157 IOSB_iostate state = IOSTATE_failbit;
11158 unsigned short c = '\n';
11160 TRACE("(%p %p)\n", this, streambuf);
11162 if(basic_istream_wchar_sentry_create(this, FALSE)) {
11163 for(c = basic_streambuf_wchar_sgetc(basic_ios_wchar_rdbuf_get(base)); c!=WEOF;
11164 c = basic_streambuf_wchar_snextc(basic_ios_wchar_rdbuf_get(base))) {
11165 state = IOSTATE_goodbit;
11166 if(basic_streambuf_wchar_sputc(streambuf, c) == WEOF)
11167 break;
11170 basic_istream_wchar_sentry_destroy(this);
11172 basic_ios_wchar_setstate(base, state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
11173 return this;
11176 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
11177 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
11178 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
11179 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
11180 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_func, 8)
11181 basic_istream_wchar* __thiscall basic_istream_wchar_read_func(basic_istream_wchar *this,
11182 basic_istream_wchar* (__cdecl *pfunc)(basic_istream_wchar*))
11184 TRACE("(%p %p)\n", this, pfunc);
11185 pfunc(this);
11186 return this;
11189 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@_WU?$char_traits@_W@std@@@1@AAV21@@Z@Z */
11190 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@_WU?$char_traits@_W@std@@@1@AEAV21@@Z@Z */
11191 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@GU?$char_traits@G@std@@@1@AAV21@@Z@Z */
11192 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@GU?$char_traits@G@std@@@1@AEAV21@@Z@Z */
11193 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_func_basic_ios, 8)
11194 basic_istream_wchar* __thiscall basic_istream_wchar_read_func_basic_ios(basic_istream_wchar *this,
11195 basic_ios_wchar* (__cdecl *pfunc)(basic_ios_wchar*))
11197 TRACE("(%p %p)\n", this, pfunc);
11198 pfunc(basic_istream_wchar_get_basic_ios(this));
11199 return this;
11202 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
11203 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
11204 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
11205 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
11206 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_func_ios_base, 8)
11207 basic_istream_wchar* __thiscall basic_istream_wchar_read_func_ios_base(
11208 basic_istream_wchar *this, ios_base* (__cdecl *pfunc)(ios_base*))
11210 TRACE("(%p %p)\n", this, pfunc);
11211 pfunc(&basic_istream_wchar_get_basic_ios(this)->base);
11212 return this;
11215 /* ?swap@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEXAAV12@@Z */
11216 /* ?swap@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAXAEAV12@@Z */
11217 /* ?swap@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEXAAV12@@Z */
11218 /* ?swap@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAXAEAV12@@Z */
11219 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_swap, 8)
11220 void __thiscall basic_istream_wchar_swap(basic_istream_wchar *this, basic_istream_wchar *r)
11222 TRACE("(%p %p)\n", this, r);
11224 if(this == r)
11225 return;
11227 basic_ios_wchar_swap(basic_istream_wchar_get_basic_ios(this),
11228 basic_istream_wchar_get_basic_ios(r));
11229 this->count ^= r->count;
11230 r->count ^= this->count;
11231 this->count ^= r->count;
11234 static inline basic_ios_char* basic_iostream_char_to_basic_ios(basic_iostream_char *ptr)
11236 return (basic_ios_char*)((char*)ptr+basic_iostream_char_vbtable1[1]);
11239 static inline basic_iostream_char* basic_iostream_char_from_basic_ios(basic_ios_char *ptr)
11241 return (basic_iostream_char*)((char*)ptr-basic_iostream_char_vbtable1[1]);
11244 /* ??0?$basic_iostream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
11245 /* ??0?$basic_iostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
11246 DEFINE_THISCALL_WRAPPER(basic_iostream_char_ctor, 12)
11247 basic_iostream_char* __thiscall basic_iostream_char_ctor(basic_iostream_char *this, basic_streambuf_char *strbuf, bool virt_init)
11249 basic_ios_char *basic_ios;
11251 TRACE("(%p %p %d)\n", this, strbuf, virt_init);
11253 if(virt_init) {
11254 this->base1.vbtable = basic_iostream_char_vbtable1;
11255 this->base2.vbtable = basic_iostream_char_vbtable2;
11256 basic_ios = basic_istream_char_get_basic_ios(&this->base1);
11257 INIT_BASIC_IOS_VTORDISP(basic_ios);
11258 basic_ios_char_ctor(basic_ios);
11259 }else {
11260 basic_ios = basic_istream_char_get_basic_ios(&this->base1);
11263 basic_istream_char_ctor(&this->base1, strbuf, FALSE, FALSE);
11264 basic_ostream_char_ctor_uninitialized(&this->base2, 0, FALSE, FALSE);
11265 basic_ios->base.vtable = &basic_iostream_char_vtable;
11266 return this;
11269 /* ??1?$basic_iostream@DU?$char_traits@D@std@@@std@@UAE@XZ */
11270 /* ??1?$basic_iostream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
11271 DEFINE_THISCALL_WRAPPER(basic_iostream_char_dtor, 4)
11272 void __thiscall basic_iostream_char_dtor(basic_ios_char *base)
11274 basic_iostream_char *this = basic_iostream_char_from_basic_ios(base);
11276 TRACE("(%p)\n", this);
11277 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(&this->base2));
11278 basic_istream_char_dtor(basic_istream_char_to_basic_ios(&this->base1));
11281 /* ??_D?$basic_iostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
11282 /* ??_D?$basic_iostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
11283 DEFINE_THISCALL_WRAPPER(basic_iostream_char_vbase_dtor, 4)
11284 void __thiscall basic_iostream_char_vbase_dtor(basic_iostream_char *this)
11286 basic_ios_char *base = basic_iostream_char_to_basic_ios(this);
11288 TRACE("(%p)\n", this);
11290 basic_iostream_char_dtor(base);
11291 basic_ios_char_dtor(base);
11294 DEFINE_THISCALL_WRAPPER(basic_iostream_char_vector_dtor, 8)
11295 basic_iostream_char* __thiscall basic_iostream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
11297 basic_iostream_char *this = basic_iostream_char_from_basic_ios(base);
11299 TRACE("(%p %x)\n", this, flags);
11301 if(flags & 2) {
11302 /* we have an array, with the number of elements stored before the first object */
11303 INT_PTR i, *ptr = (INT_PTR *)this-1;
11305 for(i=*ptr-1; i>=0; i--)
11306 basic_iostream_char_vbase_dtor(this+i);
11307 operator_delete(ptr);
11308 } else {
11309 basic_iostream_char_vbase_dtor(this);
11310 if(flags & 1)
11311 operator_delete(this);
11314 return this;
11317 /* ?swap@?$basic_iostream@DU?$char_traits@D@std@@@std@@QAEXAAV12@@Z */
11318 /* ?swap@?$basic_iostream@DU?$char_traits@D@std@@@std@@QEAAXAEAV12@@Z */
11319 DEFINE_THISCALL_WRAPPER(basic_iostream_char_swap, 8)
11320 void __thiscall basic_iostream_char_swap(basic_iostream_char *this, basic_iostream_char *r)
11322 TRACE("(%p %p)\n", this, r);
11324 if(this == r)
11325 return;
11327 basic_ios_char_swap(basic_istream_char_get_basic_ios(&this->base1),
11328 basic_istream_char_get_basic_ios(&r->base1));
11331 static inline basic_ios_wchar* basic_iostream_wchar_to_basic_ios(basic_iostream_wchar *ptr)
11333 return (basic_ios_wchar*)((char*)ptr+basic_iostream_wchar_vbtable1[1]);
11336 static inline basic_iostream_wchar* basic_iostream_wchar_from_basic_ios(basic_ios_wchar *ptr)
11338 return (basic_iostream_wchar*)((char*)ptr-basic_iostream_wchar_vbtable1[1]);
11341 /* ??0?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
11342 /* ??0?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
11343 DEFINE_THISCALL_WRAPPER(basic_iostream_wchar_ctor, 12)
11344 basic_iostream_wchar* __thiscall basic_iostream_wchar_ctor(basic_iostream_wchar *this,
11345 basic_streambuf_wchar *strbuf, bool virt_init)
11347 basic_ios_wchar *basic_ios;
11349 TRACE("(%p %p %d)\n", this, strbuf, virt_init);
11351 if(virt_init) {
11352 this->base1.vbtable = basic_iostream_wchar_vbtable1;
11353 this->base2.vbtable = basic_iostream_wchar_vbtable2;
11354 basic_ios = basic_istream_wchar_get_basic_ios(&this->base1);
11355 INIT_BASIC_IOS_VTORDISP(basic_ios);
11356 basic_ios_wchar_ctor(basic_ios);
11357 }else {
11358 basic_ios = basic_istream_wchar_get_basic_ios(&this->base1);
11361 basic_istream_wchar_ctor(&this->base1, strbuf, FALSE, FALSE);
11362 basic_ostream_wchar_ctor_uninitialized(&this->base2, 0, FALSE, FALSE);
11364 basic_ios->base.vtable = &basic_iostream_wchar_vtable;
11365 return this;
11368 /* ??0?$basic_iostream@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
11369 /* ??0?$basic_iostream@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
11370 DEFINE_THISCALL_WRAPPER(basic_iostream_short_ctor, 12)
11371 basic_iostream_wchar* __thiscall basic_iostream_short_ctor(basic_iostream_wchar *this,
11372 basic_streambuf_wchar *strbuf, bool virt_init)
11374 basic_iostream_wchar_ctor(this, strbuf, virt_init);
11375 basic_istream_wchar_get_basic_ios(&this->base1)->base.vtable = &basic_iostream_short_vtable;
11376 return this;
11379 /* ??1?$basic_iostream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
11380 /* ??1?$basic_iostream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
11381 /* ??1?$basic_iostream@GU?$char_traits@G@std@@@std@@UAE@XZ */
11382 /* ??1?$basic_iostream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
11383 DEFINE_THISCALL_WRAPPER(basic_iostream_wchar_dtor, 4)
11384 void __thiscall basic_iostream_wchar_dtor(basic_ios_wchar *base)
11386 basic_iostream_wchar *this = basic_iostream_wchar_from_basic_ios(base);
11388 TRACE("(%p)\n", this);
11389 basic_ostream_wchar_dtor(basic_ostream_wchar_to_basic_ios(&this->base2));
11390 basic_istream_wchar_dtor(basic_istream_wchar_to_basic_ios(&this->base1));
11393 /* ??_D?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
11394 /* ??_D?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
11395 /* ??_D?$basic_iostream@GU?$char_traits@G@std@@@std@@QAEXXZ */
11396 /* ??_D?$basic_iostream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
11397 DEFINE_THISCALL_WRAPPER(basic_iostream_wchar_vbase_dtor, 4)
11398 void __thiscall basic_iostream_wchar_vbase_dtor(basic_iostream_wchar *this)
11400 basic_ios_wchar *base = basic_iostream_wchar_to_basic_ios(this);
11402 TRACE("(%p)\n", this);
11404 basic_iostream_wchar_dtor(base);
11405 basic_ios_wchar_dtor(base);
11408 DEFINE_THISCALL_WRAPPER(basic_iostream_wchar_vector_dtor, 8)
11409 basic_iostream_wchar* __thiscall basic_iostream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
11411 basic_iostream_wchar *this = basic_iostream_wchar_from_basic_ios(base);
11413 TRACE("(%p %x)\n", this, flags);
11415 if(flags & 2) {
11416 /* we have an array, with the number of elements stored before the first object */
11417 INT_PTR i, *ptr = (INT_PTR *)this-1;
11419 for(i=*ptr-1; i>=0; i--)
11420 basic_iostream_wchar_vbase_dtor(this+i);
11421 operator_delete(ptr);
11422 } else {
11423 basic_iostream_wchar_vbase_dtor(this);
11424 if(flags & 1)
11425 operator_delete(this);
11428 return this;
11431 /* ?swap@?$basic_iostream@GU?$char_traits@G@std@@@std@@QAEXAAV12@@Z */
11432 /* ?swap@?$basic_iostream@GU?$char_traits@G@std@@@std@@QEAAXAEAV12@@Z */
11433 /* ?swap@?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QAEXAAV12@@Z */
11434 /* ?swap@?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QEAAXAEAV12@@Z */
11435 DEFINE_THISCALL_WRAPPER(basic_iostream_wchar_swap, 8)
11436 void __thiscall basic_iostream_wchar_swap(basic_iostream_wchar *this, basic_iostream_wchar *r)
11438 TRACE("(%p %p)\n", this, r);
11440 if(this == r)
11441 return;
11443 basic_ios_wchar_swap(basic_istream_wchar_get_basic_ios(&this->base1),
11444 basic_istream_wchar_get_basic_ios(&r->base1));
11447 static inline basic_ios_char* basic_ofstream_char_to_basic_ios(basic_ofstream_char *ptr)
11449 return (basic_ios_char*)((char*)ptr+basic_ofstream_char_vbtable[1]);
11452 static inline basic_ofstream_char* basic_ofstream_char_from_basic_ios(basic_ios_char *ptr)
11454 return (basic_ofstream_char*)((char*)ptr-basic_ofstream_char_vbtable[1]);
11457 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@XZ */
11458 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@XZ */
11459 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_ctor, 8)
11460 basic_ofstream_char* __thiscall basic_ofstream_char_ctor(basic_ofstream_char *this, bool virt_init)
11462 basic_ios_char *basic_ios;
11464 TRACE("(%p %d)\n", this, virt_init);
11466 if(virt_init) {
11467 this->base.vbtable = basic_ofstream_char_vbtable;
11468 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11469 INIT_BASIC_IOS_VTORDISP(basic_ios);
11470 basic_ios_char_ctor(basic_ios);
11471 }else {
11472 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11475 basic_filebuf_char_ctor(&this->filebuf);
11476 basic_ostream_char_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
11477 basic_ios->base.vtable = &basic_ofstream_char_vtable;
11478 return this;
11481 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PAU_iobuf@@@Z */
11482 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@PEAU_iobuf@@@Z */
11483 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_ctor_file, 12)
11484 basic_ofstream_char* __thiscall basic_ofstream_char_ctor_file(
11485 basic_ofstream_char *this, FILE *file, bool virt_init)
11487 basic_ios_char *basic_ios;
11489 TRACE("(%p %p %d)\n", this, file, virt_init);
11491 if(virt_init) {
11492 this->base.vbtable = basic_ofstream_char_vbtable;
11493 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11494 INIT_BASIC_IOS_VTORDISP(basic_ios);
11495 basic_ios_char_ctor(basic_ios);
11496 }else {
11497 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11500 basic_filebuf_char_ctor_file(&this->filebuf, file);
11501 basic_ostream_char_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
11502 basic_ios->base.vtable = &basic_ofstream_char_vtable;
11503 return this;
11506 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PBDHH@Z */
11507 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDHH@Z */
11508 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_ctor_name, 20)
11509 basic_ofstream_char* __thiscall basic_ofstream_char_ctor_name(basic_ofstream_char *this,
11510 const char *name, int mode, int prot, bool virt_init)
11512 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
11514 basic_ofstream_char_ctor(this, virt_init);
11516 if(!basic_filebuf_char_open(&this->filebuf, name, mode|OPENMODE_out, prot)) {
11517 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11518 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
11520 return this;
11523 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PBGHH@Z */
11524 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@PEBGHH@Z */
11525 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PB_WHH@Z */
11526 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@PEB_WHH@Z */
11527 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_ctor_name_wchar, 20)
11528 basic_ofstream_char* __thiscall basic_ofstream_char_ctor_name_wchar(basic_ofstream_char *this,
11529 const wchar_t *name, int mode, int prot, bool virt_init)
11531 TRACE("(%p %s %d %d %d)\n", this, debugstr_w(name), mode, prot, virt_init);
11533 basic_ofstream_char_ctor(this, virt_init);
11535 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode|OPENMODE_out, prot)) {
11536 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11537 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
11539 return this;
11542 /* ??1?$basic_ofstream@DU?$char_traits@D@std@@@std@@UAE@XZ */
11543 /* ??1?$basic_ofstream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
11544 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_dtor, 4)
11545 void __thiscall basic_ofstream_char_dtor(basic_ios_char *base)
11547 basic_ofstream_char *this = basic_ofstream_char_from_basic_ios(base);
11549 TRACE("(%p)\n", this);
11551 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(&this->base));
11552 basic_filebuf_char_dtor(&this->filebuf);
11555 /* ??_D?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
11556 /* ??_D?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
11557 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_vbase_dtor, 4)
11558 void __thiscall basic_ofstream_char_vbase_dtor(basic_ofstream_char *this)
11560 basic_ios_char *base = basic_ofstream_char_to_basic_ios(this);
11562 TRACE("(%p)\n", this);
11564 basic_ofstream_char_dtor(base);
11565 basic_ios_char_dtor(base);
11568 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_vector_dtor, 8)
11569 basic_ofstream_char* __thiscall basic_ofstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
11571 basic_ofstream_char *this = basic_ofstream_char_from_basic_ios(base);
11573 TRACE("(%p %x)\n", this, flags);
11575 if(flags & 2) {
11576 /* we have an array, with the number of elements stored before the first object */
11577 INT_PTR i, *ptr = (INT_PTR *)this-1;
11579 for(i=*ptr-1; i>=0; i--)
11580 basic_ofstream_char_vbase_dtor(this+i);
11581 operator_delete(ptr);
11582 } else {
11583 basic_ofstream_char_vbase_dtor(this);
11584 if(flags & 1)
11585 operator_delete(this);
11588 return this;
11591 /* ?close@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
11592 /* ?close@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
11593 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_close, 4)
11594 void __thiscall basic_ofstream_char_close(basic_ofstream_char *this)
11596 TRACE("(%p)\n", this);
11598 if(!basic_filebuf_char_close(&this->filebuf)) {
11599 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11600 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
11604 /* ?is_open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QBE_NXZ */
11605 /* ?is_open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEBA_NXZ */
11606 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_is_open, 4)
11607 bool __thiscall basic_ofstream_char_is_open(const basic_ofstream_char *this)
11609 TRACE("(%p)\n", this);
11610 return basic_filebuf_char_is_open(&this->filebuf);
11613 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPBDHH@Z */
11614 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDHH@Z */
11615 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_open, 16)
11616 void __thiscall basic_ofstream_char_open(basic_ofstream_char *this,
11617 const char *name, int mode, int prot)
11619 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
11621 if(!basic_filebuf_char_open(&this->filebuf, name, mode|OPENMODE_out, prot)) {
11622 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11623 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
11627 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPBDI@Z */
11628 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDI@Z */
11629 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_open_old, 12)
11630 void __thiscall basic_ofstream_char_open_old(basic_ofstream_char *this,
11631 const char *name, unsigned int mode)
11633 basic_ofstream_char_open(this, name, mode, _SH_DENYNO);
11636 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPBGHH@Z */
11637 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGHH@Z */
11638 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPB_WHH@Z */
11639 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WHH@Z */
11640 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_open_wchar, 16)
11641 void __thiscall basic_ofstream_char_open_wchar(basic_ofstream_char *this,
11642 const wchar_t *name, int mode, int prot)
11644 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
11646 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode|OPENMODE_out, prot)) {
11647 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11648 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
11652 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPBGI@Z */
11653 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGI@Z */
11654 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPB_WI@Z */
11655 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WI@Z */
11656 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_open_wchar_old, 12)
11657 void __thiscall basic_ofstream_char_open_wchar_old(basic_ofstream_char *this,
11658 const wchar_t *name, unsigned int mode)
11660 basic_ofstream_char_open_wchar(this, name, mode, _SH_DENYNO);
11663 /* ?rdbuf@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
11664 /* ?rdbuf@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
11665 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_rdbuf, 4)
11666 basic_filebuf_char* __thiscall basic_ofstream_char_rdbuf(const basic_ofstream_char *this)
11668 TRACE("(%p)\n", this);
11669 return (basic_filebuf_char*)&this->filebuf;
11672 static inline basic_ios_wchar* basic_ofstream_wchar_to_basic_ios(basic_ofstream_wchar *ptr)
11674 return (basic_ios_wchar*)((char*)ptr+basic_ofstream_wchar_vbtable[1]);
11677 static inline basic_ofstream_wchar* basic_ofstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
11679 return (basic_ofstream_wchar*)((char*)ptr-basic_ofstream_wchar_vbtable[1]);
11682 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAE@XZ */
11683 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAA@XZ */
11684 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_ctor, 8)
11685 basic_ofstream_wchar* __thiscall basic_ofstream_wchar_ctor(basic_ofstream_wchar *this, bool virt_init)
11687 basic_ios_wchar *basic_ios;
11689 TRACE("(%p %d)\n", this, virt_init);
11691 if(virt_init) {
11692 this->base.vbtable = basic_ofstream_wchar_vbtable;
11693 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11694 INIT_BASIC_IOS_VTORDISP(basic_ios);
11695 basic_ios_wchar_ctor(basic_ios);
11696 }else {
11697 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11700 basic_filebuf_wchar_ctor(&this->filebuf);
11701 basic_ostream_wchar_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
11702 basic_ios->base.vtable = &basic_ofstream_wchar_vtable;
11703 return this;
11706 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@XZ */
11707 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@XZ */
11708 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_ctor, 8)
11709 basic_ofstream_wchar* __thiscall basic_ofstream_short_ctor(basic_ofstream_wchar *this, bool virt_init)
11711 basic_ofstream_wchar_ctor(this, virt_init);
11712 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &basic_ofstream_short_vtable;
11713 return this;
11716 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAE@PAU_iobuf@@@Z */
11717 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAU_iobuf@@@Z */
11718 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_ctor_file, 12)
11719 basic_ofstream_wchar* __thiscall basic_ofstream_wchar_ctor_file(
11720 basic_ofstream_wchar *this, FILE *file, bool virt_init)
11722 basic_ios_wchar *basic_ios;
11724 TRACE("(%p %p %d)\n", this, file, virt_init);
11726 if(virt_init) {
11727 this->base.vbtable = basic_ofstream_wchar_vbtable;
11728 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11729 INIT_BASIC_IOS_VTORDISP(basic_ios);
11730 basic_ios_wchar_ctor(basic_ios);
11731 }else {
11732 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11735 basic_filebuf_wchar_ctor_file(&this->filebuf, file);
11736 basic_ostream_wchar_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
11737 basic_ios->base.vtable = &basic_ofstream_wchar_vtable;
11738 return this;
11741 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@PAU_iobuf@@@Z */
11742 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@PEAU_iobuf@@@Z */
11743 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_ctor_file, 12)
11744 basic_ofstream_wchar* __thiscall basic_ofstream_short_ctor_file(
11745 basic_ofstream_wchar *this, FILE *file, bool virt_init)
11747 basic_ofstream_wchar_ctor_file(this, file, virt_init);
11748 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &basic_ofstream_short_vtable;
11749 return this;
11752 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAE@PBDHH@Z */
11753 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEBDHH@Z */
11754 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_ctor_name, 20)
11755 basic_ofstream_wchar* __thiscall basic_ofstream_wchar_ctor_name(basic_ofstream_wchar *this,
11756 const char *name, int mode, int prot, bool virt_init)
11758 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
11760 basic_ofstream_wchar_ctor(this, virt_init);
11762 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode|OPENMODE_out, prot)) {
11763 basic_ios_wchar *basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11764 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
11766 return this;
11769 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@PBDHH@Z */
11770 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@PEBDHH@Z */
11771 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_ctor_name, 20)
11772 basic_ofstream_wchar* __thiscall basic_ofstream_short_ctor_name(basic_ofstream_wchar *this,
11773 const char *name, int mode, int prot, bool virt_init)
11775 basic_ofstream_wchar_ctor_name(this, name, mode, prot, virt_init);
11776 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &basic_ofstream_short_vtable;
11777 return this;
11780 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAE@PBGHH@Z */
11781 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEBGHH@Z */
11782 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAE@PB_WHH@Z */
11783 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEB_WHH@Z */
11784 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_ctor_name_wchar, 20)
11785 basic_ofstream_wchar* __thiscall basic_ofstream_wchar_ctor_name_wchar(basic_ofstream_wchar *this,
11786 const wchar_t *name, int mode, int prot, bool virt_init)
11788 TRACE("(%p %s %d %d %d)\n", this, debugstr_w(name), mode, prot, virt_init);
11790 basic_ofstream_wchar_ctor(this, virt_init);
11792 if(!basic_filebuf_wchar_open_wchar(&this->filebuf, name, mode|OPENMODE_out, prot)) {
11793 basic_ios_wchar *basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11794 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
11796 return this;
11799 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@PBGHH@Z */
11800 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@PEBGHH@Z */
11801 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@PB_WHH@Z */
11802 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@PEB_WHH@Z */
11803 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_ctor_name_wchar, 20)
11804 basic_ofstream_wchar* __thiscall basic_ofstream_short_ctor_name_wchar(basic_ofstream_wchar *this,
11805 const wchar_t *name, int mode, int prot, bool virt_init)
11807 basic_ofstream_wchar_ctor_name_wchar(this, name, mode, prot, virt_init);
11808 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &basic_ofstream_short_vtable;
11809 return this;
11812 /* ??1?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
11813 /* ??1?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
11814 /* ??1?$basic_ofstream@GU?$char_traits@G@std@@@std@@UAE@XZ */
11815 /* ??1?$basic_ofstream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
11816 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_dtor, 4)
11817 void __thiscall basic_ofstream_wchar_dtor(basic_ios_wchar *base)
11819 basic_ofstream_wchar *this = basic_ofstream_wchar_from_basic_ios(base);
11821 TRACE("(%p)\n", this);
11823 basic_ostream_wchar_dtor(basic_ostream_wchar_to_basic_ios(&this->base));
11824 basic_filebuf_wchar_dtor(&this->filebuf);
11827 /* ??_D?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
11828 /* ??_D?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
11829 /* ??_D?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
11830 /* ??_D?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
11831 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_vbase_dtor, 4)
11832 void __thiscall basic_ofstream_wchar_vbase_dtor(basic_ofstream_wchar *this)
11834 basic_ios_wchar *base = basic_ofstream_wchar_to_basic_ios(this);
11836 TRACE("(%p)\n", this);
11838 basic_ofstream_wchar_dtor(base);
11839 basic_ios_wchar_dtor(base);
11842 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_vector_dtor, 8)
11843 basic_ofstream_wchar* __thiscall basic_ofstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
11845 basic_ofstream_wchar *this = basic_ofstream_wchar_from_basic_ios(base);
11847 TRACE("(%p %x)\n", this, flags);
11849 if(flags & 2) {
11850 /* we have an array, with the number of elements stored before the first object */
11851 INT_PTR i, *ptr = (INT_PTR *)this-1;
11853 for(i=*ptr-1; i>=0; i--)
11854 basic_ofstream_wchar_vbase_dtor(this+i);
11855 operator_delete(ptr);
11856 } else {
11857 basic_ofstream_wchar_vbase_dtor(this);
11858 if(flags & 1)
11859 operator_delete(this);
11862 return this;
11865 /* ?close@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
11866 /* ?close@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
11867 /* ?close@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
11868 /* ?close@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
11869 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_close, 4)
11870 void __thiscall basic_ofstream_wchar_close(basic_ofstream_wchar *this)
11872 TRACE("(%p)\n", this);
11874 if(!basic_filebuf_wchar_close(&this->filebuf)) {
11875 basic_ios_wchar *basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11876 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
11880 /* ?is_open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QBE_NXZ */
11881 /* ?is_open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEBA_NXZ */
11882 /* ?is_open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QBE_NXZ */
11883 /* ?is_open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEBA_NXZ */
11884 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_is_open, 4)
11885 bool __thiscall basic_ofstream_wchar_is_open(const basic_ofstream_wchar *this)
11887 TRACE("(%p)\n", this);
11888 return basic_filebuf_wchar_is_open(&this->filebuf);
11891 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDHH@Z */
11892 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDHH@Z */
11893 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPBDHH@Z */
11894 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDHH@Z */
11895 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_open, 16)
11896 void __thiscall basic_ofstream_wchar_open(basic_ofstream_wchar *this,
11897 const char *name, int mode, int prot)
11899 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
11901 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode|OPENMODE_out, prot)) {
11902 basic_ios_wchar *basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11903 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
11907 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDI@Z */
11908 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDI@Z */
11909 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPBDI@Z */
11910 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDI@Z */
11911 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_open_old, 12)
11912 void __thiscall basic_ofstream_wchar_open_old(basic_ofstream_wchar *this,
11913 const char *name, unsigned int mode)
11915 basic_ofstream_wchar_open(this, name, mode, _SH_DENYNO);
11918 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXPBGHH@Z */
11919 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBGHH@Z */
11920 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXPB_WHH@Z */
11921 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEB_WHH@Z */
11922 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPBGHH@Z */
11923 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEBGHH@Z */
11924 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPB_WHH@Z */
11925 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEB_WHH@Z */
11926 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_open_wchar, 16)
11927 void __thiscall basic_ofstream_wchar_open_wchar(basic_ofstream_wchar *this,
11928 const wchar_t *name, int mode, int prot)
11930 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
11932 if(!basic_filebuf_wchar_open_wchar(&this->filebuf, name, mode|OPENMODE_out, prot)) {
11933 basic_ios_wchar *basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11934 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
11938 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXPBGI@Z */
11939 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBGI@Z */
11940 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXPB_WI@Z */
11941 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEB_WI@Z */
11942 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPBGI@Z */
11943 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEBGI@Z */
11944 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPB_WI@Z */
11945 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEB_WI@Z */
11946 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_open_wchar_old, 12)
11947 void __thiscall basic_ofstream_wchar_open_wchar_old(basic_ofstream_wchar *this,
11948 const wchar_t *name, unsigned int mode)
11950 basic_ofstream_wchar_open_wchar(this, name, mode, _SH_DENYNO);
11953 /* ?rdbuf@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
11954 /* ?rdbuf@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
11955 /* ?rdbuf@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
11956 /* ?rdbuf@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
11957 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_rdbuf, 4)
11958 basic_filebuf_wchar* __thiscall basic_ofstream_wchar_rdbuf(const basic_ofstream_wchar *this)
11960 TRACE("(%p)\n", this);
11961 return (basic_filebuf_wchar*)&this->filebuf;
11964 static inline basic_ios_char* basic_ifstream_char_to_basic_ios(basic_ifstream_char *ptr)
11966 return (basic_ios_char*)((char*)ptr+basic_ifstream_char_vbtable[1]);
11969 static inline basic_ifstream_char* basic_ifstream_char_from_basic_ios(basic_ios_char *ptr)
11971 return (basic_ifstream_char*)((char*)ptr-basic_ifstream_char_vbtable[1]);
11974 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@XZ */
11975 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@XZ */
11976 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor, 8)
11977 basic_ifstream_char* __thiscall basic_ifstream_char_ctor(basic_ifstream_char *this, bool virt_init)
11979 basic_ios_char *basic_ios;
11981 TRACE("(%p %d)\n", this, virt_init);
11983 if(virt_init) {
11984 this->base.vbtable = basic_ifstream_char_vbtable;
11985 basic_ios = basic_istream_char_get_basic_ios(&this->base);
11986 INIT_BASIC_IOS_VTORDISP(basic_ios);
11987 basic_ios_char_ctor(basic_ios);
11988 }else {
11989 basic_ios = basic_istream_char_get_basic_ios(&this->base);
11992 basic_filebuf_char_ctor(&this->filebuf);
11993 basic_istream_char_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
11994 basic_ios->base.vtable = &basic_ifstream_char_vtable;
11995 return this;
11998 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@PAU_iobuf@@@Z */
11999 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@PEAU_iobuf@@@Z */
12000 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor_file, 12)
12001 basic_ifstream_char* __thiscall basic_ifstream_char_ctor_file(
12002 basic_ifstream_char *this, FILE *file, bool virt_init)
12004 basic_ios_char *basic_ios;
12006 TRACE("(%p %p %d)\n", this, file, virt_init);
12008 if(virt_init) {
12009 this->base.vbtable = basic_ifstream_char_vbtable;
12010 basic_ios = basic_istream_char_get_basic_ios(&this->base);
12011 INIT_BASIC_IOS_VTORDISP(basic_ios);
12012 basic_ios_char_ctor(basic_ios);
12013 }else {
12014 basic_ios = basic_istream_char_get_basic_ios(&this->base);
12017 basic_filebuf_char_ctor_file(&this->filebuf, file);
12018 basic_istream_char_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
12019 basic_ios->base.vtable = &basic_ifstream_char_vtable;
12020 return this;
12023 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@PBDHH@Z */
12024 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDHH@Z */
12025 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor_name, 20)
12026 basic_ifstream_char* __thiscall basic_ifstream_char_ctor_name(basic_ifstream_char *this,
12027 const char *name, int mode, int prot, bool virt_init)
12029 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
12031 basic_ifstream_char_ctor(this, virt_init);
12033 if(!basic_filebuf_char_open(&this->filebuf, name, mode|OPENMODE_in, prot)) {
12034 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
12035 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
12037 return this;
12040 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@PBDH@Z */
12041 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDH@Z */
12042 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor_name_old, 16)
12043 basic_ifstream_char* __thiscall basic_ifstream_char_ctor_name_old(basic_ifstream_char *this,
12044 const char *name, int mode, bool virt_init)
12046 return basic_ifstream_char_ctor_name(this, name, mode, _SH_DENYNO, virt_init);
12049 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@PBGHH@Z */
12050 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@PEBGHH@Z */
12051 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@PB_WHH@Z */
12052 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@PEB_WHH@Z */
12053 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor_name_wchar, 20)
12054 basic_ifstream_char* __thiscall basic_ifstream_char_ctor_name_wchar(basic_ifstream_char *this,
12055 const wchar_t *name, int mode, int prot, bool virt_init)
12057 TRACE("(%p %s %d %d %d)\n", this, debugstr_w(name), mode, prot, virt_init);
12059 basic_ifstream_char_ctor(this, virt_init);
12061 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode|OPENMODE_in, prot)) {
12062 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
12063 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
12065 return this;
12068 /* ??1?$basic_ifstream@DU?$char_traits@D@std@@@std@@UAE@XZ */
12069 /* ??1?$basic_ifstream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
12070 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_dtor, 4)
12071 void __thiscall basic_ifstream_char_dtor(basic_ios_char *base)
12073 basic_ifstream_char *this = basic_ifstream_char_from_basic_ios(base);
12075 TRACE("(%p)\n", this);
12077 basic_istream_char_dtor(basic_istream_char_to_basic_ios(&this->base));
12078 basic_filebuf_char_dtor(&this->filebuf);
12081 /* ??_D?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
12082 /* ??_D?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
12083 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_vbase_dtor, 4)
12084 void __thiscall basic_ifstream_char_vbase_dtor(basic_ifstream_char *this)
12086 basic_ios_char *base = basic_ifstream_char_to_basic_ios(this);
12088 TRACE("(%p)\n", this);
12090 basic_ifstream_char_dtor(base);
12091 basic_ios_char_dtor(base);
12094 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_vector_dtor, 8)
12095 basic_ifstream_char* __thiscall basic_ifstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
12097 basic_ifstream_char *this = basic_ifstream_char_from_basic_ios(base);
12099 TRACE("(%p %x)\n", this, flags);
12101 if(flags & 2) {
12102 /* we have an array, with the number of elements stored before the first object */
12103 INT_PTR i, *ptr = (INT_PTR *)this-1;
12105 for(i=*ptr-1; i>=0; i--)
12106 basic_ifstream_char_vbase_dtor(this+i);
12107 operator_delete(ptr);
12108 } else {
12109 basic_ifstream_char_vbase_dtor(this);
12110 if(flags & 1)
12111 operator_delete(this);
12114 return this;
12117 /* ?close@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
12118 /* ?close@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
12119 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_close, 4)
12120 void __thiscall basic_ifstream_char_close(basic_ifstream_char *this)
12122 TRACE("(%p)\n", this);
12124 if(!basic_filebuf_char_close(&this->filebuf)) {
12125 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
12126 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
12130 /* ?is_open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QBE_NXZ */
12131 /* ?is_open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEBA_NXZ */
12132 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_is_open, 4)
12133 bool __thiscall basic_ifstream_char_is_open(const basic_ifstream_char *this)
12135 TRACE("(%p)\n", this);
12136 return basic_filebuf_char_is_open(&this->filebuf);
12139 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPBDHH@Z */
12140 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDHH@Z */
12141 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_open, 16)
12142 void __thiscall basic_ifstream_char_open(basic_ifstream_char *this,
12143 const char *name, int mode, int prot)
12145 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
12147 if(!basic_filebuf_char_open(&this->filebuf, name, mode|OPENMODE_in, prot)) {
12148 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
12149 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
12153 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPBDI@Z */
12154 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDI@Z */
12155 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_open_old, 12)
12156 void __thiscall basic_ifstream_char_open_old(basic_ifstream_char *this,
12157 const char *name, unsigned int mode)
12159 basic_ifstream_char_open(this, name, mode, _SH_DENYNO);
12162 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPBGHH@Z */
12163 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGHH@Z */
12164 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPB_WHH@Z */
12165 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WHH@Z */
12166 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_open_wchar, 16)
12167 void __thiscall basic_ifstream_char_open_wchar(basic_ifstream_char *this,
12168 const wchar_t *name, int mode, int prot)
12170 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
12172 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode|OPENMODE_in, prot)) {
12173 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
12174 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
12178 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPBGI@Z */
12179 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGI@Z */
12180 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPB_WI@Z */
12181 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WI@Z */
12182 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_open_wchar_old, 12)
12183 void __thiscall basic_ifstream_char_open_wchar_old(basic_ifstream_char *this,
12184 const wchar_t *name, unsigned int mode)
12186 basic_ifstream_char_open_wchar(this, name, mode, _SH_DENYNO);
12189 /* ?rdbuf@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
12190 /* ?rdbuf@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
12191 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_rdbuf, 4)
12192 basic_filebuf_char* __thiscall basic_ifstream_char_rdbuf(const basic_ifstream_char *this)
12194 TRACE("(%p)\n", this);
12195 return (basic_filebuf_char*)&this->filebuf;
12198 static inline basic_ios_wchar* basic_ifstream_wchar_to_basic_ios(basic_ifstream_wchar *ptr)
12200 return (basic_ios_wchar*)((char*)ptr+basic_ifstream_wchar_vbtable[1]);
12203 static inline basic_ifstream_wchar* basic_ifstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
12205 return (basic_ifstream_wchar*)((char*)ptr-basic_ifstream_wchar_vbtable[1]);
12208 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAE@XZ */
12209 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAA@XZ */
12210 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_ctor, 8)
12211 basic_ifstream_wchar* __thiscall basic_ifstream_wchar_ctor(basic_ifstream_wchar *this, bool virt_init)
12213 basic_ios_wchar *basic_ios;
12215 TRACE("(%p %d)\n", this, virt_init);
12217 if(virt_init) {
12218 this->base.vbtable = basic_ifstream_wchar_vbtable;
12219 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
12220 INIT_BASIC_IOS_VTORDISP(basic_ios);
12221 basic_ios_wchar_ctor(basic_ios);
12222 }else {
12223 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
12226 basic_filebuf_wchar_ctor(&this->filebuf);
12227 basic_istream_wchar_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
12228 basic_ios->base.vtable = &basic_ifstream_wchar_vtable;
12229 return this;
12232 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@XZ */
12233 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@XZ */
12234 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_ctor, 8)
12235 basic_ifstream_wchar* __thiscall basic_ifstream_short_ctor(basic_ifstream_wchar *this, bool virt_init)
12237 basic_ifstream_wchar_ctor(this, virt_init);
12238 basic_istream_wchar_get_basic_ios(&this->base)->base.vtable = &basic_ifstream_short_vtable;
12239 return this;
12242 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAE@PAU_iobuf@@@Z */
12243 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAU_iobuf@@@Z */
12244 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_ctor_file, 12)
12245 basic_ifstream_wchar* __thiscall basic_ifstream_wchar_ctor_file(
12246 basic_ifstream_wchar *this, FILE *file, bool virt_init)
12248 basic_ios_wchar *basic_ios;
12250 TRACE("(%p %p %d)\n", this, file, virt_init);
12252 if(virt_init) {
12253 this->base.vbtable = basic_ifstream_wchar_vbtable;
12254 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
12255 INIT_BASIC_IOS_VTORDISP(basic_ios);
12256 basic_ios_wchar_ctor(basic_ios);
12257 }else {
12258 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
12261 basic_filebuf_wchar_ctor_file(&this->filebuf, file);
12262 basic_istream_wchar_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
12263 basic_ios->base.vtable = &basic_ifstream_wchar_vtable;
12264 return this;
12267 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@PAU_iobuf@@@Z */
12268 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@PEAU_iobuf@@@Z */
12269 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_ctor_file, 12)
12270 basic_ifstream_wchar* __thiscall basic_ifstream_short_ctor_file(
12271 basic_ifstream_wchar *this, FILE *file, bool virt_init)
12273 basic_ifstream_wchar_ctor_file(this, file, virt_init);
12274 basic_istream_wchar_get_basic_ios(&this->base)->base.vtable = &basic_ifstream_short_vtable;
12275 return this;
12278 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAE@PBDHH@Z */
12279 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEBDHH@Z */
12280 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_ctor_name, 20)
12281 basic_ifstream_wchar* __thiscall basic_ifstream_wchar_ctor_name(basic_ifstream_wchar *this,
12282 const char *name, int mode, int prot, bool virt_init)
12284 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
12286 basic_ifstream_wchar_ctor(this, virt_init);
12288 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode|OPENMODE_in, prot)) {
12289 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
12290 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
12292 return this;
12295 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@PBDHH@Z */
12296 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@PEBDHH@Z */
12297 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_ctor_name, 20)
12298 basic_ifstream_wchar* __thiscall basic_ifstream_short_ctor_name(basic_ifstream_wchar *this,
12299 const char *name, int mode, int prot, bool virt_init)
12301 basic_ifstream_wchar_ctor_name(this, name, mode, prot, virt_init);
12302 basic_istream_wchar_get_basic_ios(&this->base)->base.vtable = &basic_ifstream_short_vtable;
12303 return this;
12306 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAE@PBDH@Z */
12307 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEBDH@Z */
12308 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_ctor_name_old, 16)
12309 basic_ifstream_wchar* __thiscall basic_ifstream_wchar_ctor_name_old(basic_ifstream_wchar *this,
12310 const char *name, int mode, bool virt_init)
12312 return basic_ifstream_wchar_ctor_name(this, name, mode, _SH_DENYNO, virt_init);
12315 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@PBDH@Z */
12316 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@PEBDH@Z */
12317 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_ctor_name_old, 16)
12318 basic_ifstream_wchar* __thiscall basic_ifstream_short_ctor_name_old(basic_ifstream_wchar *this,
12319 const char *name, int mode, bool virt_init)
12321 return basic_ifstream_short_ctor_name(this, name, mode, _SH_DENYNO, virt_init);
12324 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAE@PBGHH@Z */
12325 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEBGHH@Z */
12326 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAE@PB_WHH@Z */
12327 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEB_WHH@Z */
12328 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_ctor_name_wchar, 20)
12329 basic_ifstream_wchar* __thiscall basic_ifstream_wchar_ctor_name_wchar(basic_ifstream_wchar *this,
12330 const wchar_t *name, int mode, int prot, bool virt_init)
12332 TRACE("(%p %s %d %d %d)\n", this, debugstr_w(name), mode, prot, virt_init);
12334 basic_ifstream_wchar_ctor(this, virt_init);
12336 if(!basic_filebuf_wchar_open_wchar(&this->filebuf, name, mode|OPENMODE_in, prot)) {
12337 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
12338 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
12340 return this;
12343 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@PBGHH@Z */
12344 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@PEBGHH@Z */
12345 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@PB_WHH@Z */
12346 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@PEB_WHH@Z */
12347 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_ctor_name_wchar, 20)
12348 basic_ifstream_wchar* __thiscall basic_ifstream_short_ctor_name_wchar(basic_ifstream_wchar *this,
12349 const wchar_t *name, int mode, int prot, bool virt_init)
12351 basic_ifstream_wchar_ctor_name_wchar(this, name, mode, prot, virt_init);
12352 basic_istream_wchar_get_basic_ios(&this->base)->base.vtable = &basic_ifstream_short_vtable;
12353 return this;
12356 /* ??1?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
12357 /* ??1?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
12358 /* ??1?$basic_ifstream@GU?$char_traits@G@std@@@std@@UAE@XZ */
12359 /* ??1?$basic_ifstream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
12360 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_dtor, 4)
12361 void __thiscall basic_ifstream_wchar_dtor(basic_ios_wchar *base)
12363 basic_ifstream_wchar *this = basic_ifstream_wchar_from_basic_ios(base);
12365 TRACE("(%p)\n", this);
12367 basic_istream_wchar_dtor(basic_istream_wchar_to_basic_ios(&this->base));
12368 basic_filebuf_wchar_dtor(&this->filebuf);
12371 /* ??_D?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
12372 /* ??_D?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
12373 /* ??_D?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
12374 /* ??_D?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
12375 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_vbase_dtor, 4)
12376 void __thiscall basic_ifstream_wchar_vbase_dtor(basic_ifstream_wchar *this)
12378 basic_ios_wchar *base = basic_ifstream_wchar_to_basic_ios(this);
12380 TRACE("(%p)\n", this);
12382 basic_ifstream_wchar_dtor(base);
12383 basic_ios_wchar_dtor(base);
12386 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_vector_dtor, 8)
12387 basic_ifstream_wchar* __thiscall basic_ifstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
12389 basic_ifstream_wchar *this = basic_ifstream_wchar_from_basic_ios(base);
12391 TRACE("(%p %x)\n", this, flags);
12393 if(flags & 2) {
12394 /* we have an array, with the number of elements stored before the first object */
12395 INT_PTR i, *ptr = (INT_PTR *)this-1;
12397 for(i=*ptr-1; i>=0; i--)
12398 basic_ifstream_wchar_vbase_dtor(this+i);
12399 operator_delete(ptr);
12400 } else {
12401 basic_ifstream_wchar_vbase_dtor(this);
12402 if(flags & 1)
12403 operator_delete(this);
12406 return this;
12409 /* ?close@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
12410 /* ?close@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
12411 /* ?close@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
12412 /* ?close@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
12413 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_close, 4)
12414 void __thiscall basic_ifstream_wchar_close(basic_ifstream_wchar *this)
12416 TRACE("(%p)\n", this);
12418 if(!basic_filebuf_wchar_close(&this->filebuf)) {
12419 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
12420 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
12424 /* ?is_open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QBE_NXZ */
12425 /* ?is_open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEBA_NXZ */
12426 /* ?is_open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QBE_NXZ */
12427 /* ?is_open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEBA_NXZ */
12428 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_is_open, 4)
12429 bool __thiscall basic_ifstream_wchar_is_open(const basic_ifstream_wchar *this)
12431 TRACE("(%p)\n", this);
12432 return basic_filebuf_wchar_is_open(&this->filebuf);
12435 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDHH@Z */
12436 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDHH@Z */
12437 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPBDHH@Z */
12438 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDHH@Z */
12439 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_open, 16)
12440 void __thiscall basic_ifstream_wchar_open(basic_ifstream_wchar *this,
12441 const char *name, int mode, int prot)
12443 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
12445 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode|OPENMODE_in, prot)) {
12446 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
12447 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
12451 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDI@Z */
12452 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDI@Z */
12453 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPBDI@Z */
12454 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDI@Z */
12455 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_open_old, 12)
12456 void __thiscall basic_ifstream_wchar_open_old(basic_ifstream_wchar *this,
12457 const char *name, unsigned int mode)
12459 basic_ifstream_wchar_open(this, name, mode, _SH_DENYNO);
12462 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXPBGHH@Z */
12463 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBGHH@Z */
12464 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXPB_WHH@Z */
12465 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEB_WHH@Z */
12466 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPBGHH@Z */
12467 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEBGHH@Z */
12468 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPB_WHH@Z */
12469 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEB_WHH@Z */
12470 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_open_wchar, 16)
12471 void __thiscall basic_ifstream_wchar_open_wchar(basic_ifstream_wchar *this,
12472 const wchar_t *name, int mode, int prot)
12474 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
12476 if(!basic_filebuf_wchar_open_wchar(&this->filebuf, name, mode|OPENMODE_in, prot)) {
12477 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
12478 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
12482 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXPBGI@Z */
12483 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBGI@Z */
12484 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXPB_WI@Z */
12485 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEB_WI@Z */
12486 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPBGI@Z */
12487 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEBGI@Z */
12488 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPB_WI@Z */
12489 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEB_WI@Z */
12490 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_open_wchar_old, 12)
12491 void __thiscall basic_ifstream_wchar_open_wchar_old(basic_ifstream_wchar *this,
12492 const wchar_t *name, unsigned int mode)
12494 basic_ifstream_wchar_open_wchar(this, name, mode, _SH_DENYNO);
12497 /* ?rdbuf@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
12498 /* ?rdbuf@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
12499 /* ?rdbuf@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
12500 /* ?rdbuf@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
12501 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_rdbuf, 4)
12502 basic_filebuf_wchar* __thiscall basic_ifstream_wchar_rdbuf(const basic_ifstream_wchar *this)
12504 TRACE("(%p)\n", this);
12505 return (basic_filebuf_wchar*)&this->filebuf;
12508 static inline basic_ios_char* basic_fstream_char_to_basic_ios(basic_fstream_char *ptr)
12510 return (basic_ios_char*)((char*)ptr+basic_fstream_char_vbtable1[1]);
12513 static inline basic_fstream_char* basic_fstream_char_from_basic_ios(basic_ios_char *ptr)
12515 return (basic_fstream_char*)((char*)ptr-basic_fstream_char_vbtable1[1]);
12518 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@XZ */
12519 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@XZ */
12520 DEFINE_THISCALL_WRAPPER(basic_fstream_char_ctor, 8)
12521 basic_fstream_char* __thiscall basic_fstream_char_ctor(basic_fstream_char *this, bool virt_init)
12523 basic_ios_char *basic_ios;
12525 TRACE("(%p %d)\n", this, virt_init);
12527 if(virt_init) {
12528 this->base.base1.vbtable = basic_fstream_char_vbtable1;
12529 this->base.base2.vbtable = basic_fstream_char_vbtable2;
12530 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
12531 INIT_BASIC_IOS_VTORDISP(basic_ios);
12532 basic_ios_char_ctor(basic_ios);
12533 }else {
12534 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
12537 basic_filebuf_char_ctor(&this->filebuf);
12538 basic_iostream_char_ctor(&this->base, &this->filebuf.base, FALSE);
12539 basic_ios->base.vtable = &basic_fstream_char_vtable;
12540 return this;
12543 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@PAU_iobuf@@@Z */
12544 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@PEAU_iobuf@@@Z */
12545 DEFINE_THISCALL_WRAPPER(basic_fstream_char_ctor_file, 12)
12546 basic_fstream_char* __thiscall basic_fstream_char_ctor_file(basic_fstream_char *this,
12547 FILE *file, bool virt_init)
12549 basic_ios_char *basic_ios;
12551 TRACE("(%p %p %d)\n", this, file, virt_init);
12553 if(virt_init) {
12554 this->base.base1.vbtable = basic_fstream_char_vbtable1;
12555 this->base.base2.vbtable = basic_fstream_char_vbtable2;
12556 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
12557 INIT_BASIC_IOS_VTORDISP(basic_ios);
12558 basic_ios_char_ctor(basic_ios);
12559 }else {
12560 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
12563 basic_filebuf_char_ctor_file(&this->filebuf, file);
12564 basic_iostream_char_ctor(&this->base, &this->filebuf.base, FALSE);
12565 basic_ios->base.vtable = &basic_fstream_char_vtable;
12566 return this;
12569 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@PBDHH@Z */
12570 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDHH@Z */
12571 DEFINE_THISCALL_WRAPPER(basic_fstream_char_ctor_name, 20)
12572 basic_fstream_char* __thiscall basic_fstream_char_ctor_name(basic_fstream_char *this,
12573 const char *name, int mode, int prot, bool virt_init)
12575 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
12577 basic_fstream_char_ctor(this, virt_init);
12579 if(!basic_filebuf_char_open(&this->filebuf, name, mode, prot)) {
12580 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
12581 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
12583 return this;
12586 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@PBDH@Z */
12587 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDH@Z */
12588 DEFINE_THISCALL_WRAPPER(basic_fstream_char_ctor_name_noprot, 16)
12589 basic_fstream_char* __thiscall basic_fstream_char_ctor_name_noprot(basic_fstream_char *this,
12590 const char *name, int mode, bool virt_init)
12592 return basic_fstream_char_ctor_name(this, name, mode, _SH_DENYNO, virt_init);
12595 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@PBGHH@Z */
12596 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@PEBGHH@Z */
12597 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@PB_WHH@Z */
12598 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@PEB_WHH@Z */
12599 DEFINE_THISCALL_WRAPPER(basic_fstream_char_ctor_name_wchar, 20)
12600 basic_fstream_char* __thiscall basic_fstream_char_ctor_name_wchar(basic_fstream_char *this,
12601 const wchar_t *name, int mode, int prot, bool virt_init)
12603 TRACE("(%p %s %d %d %d)\n", this, debugstr_w(name), mode, prot, virt_init);
12605 basic_fstream_char_ctor(this, virt_init);
12607 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode, prot)) {
12608 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
12609 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
12611 return this;
12614 /* ??1?$basic_fstream@DU?$char_traits@D@std@@@std@@UAE@XZ */
12615 /* ??1?$basic_fstream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
12616 DEFINE_THISCALL_WRAPPER(basic_fstream_char_dtor, 4)
12617 void __thiscall basic_fstream_char_dtor(basic_ios_char *base)
12619 basic_fstream_char *this = basic_fstream_char_from_basic_ios(base);
12621 TRACE("(%p)\n", this);
12623 basic_iostream_char_dtor(basic_iostream_char_to_basic_ios(&this->base));
12624 basic_filebuf_char_dtor(&this->filebuf);
12627 /* ??_D?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
12628 /* ??_D?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
12629 DEFINE_THISCALL_WRAPPER(basic_fstream_char_vbase_dtor, 4)
12630 void __thiscall basic_fstream_char_vbase_dtor(basic_fstream_char *this)
12632 basic_ios_char *base = basic_fstream_char_to_basic_ios(this);
12634 TRACE("(%p)\n", this);
12636 basic_fstream_char_dtor(base);
12637 basic_ios_char_dtor(base);
12640 DEFINE_THISCALL_WRAPPER(basic_fstream_char_vector_dtor, 8)
12641 basic_fstream_char* __thiscall basic_fstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
12643 basic_fstream_char *this = basic_fstream_char_from_basic_ios(base);
12645 TRACE("(%p %x)\n", this, flags);
12647 if(flags & 2) {
12648 /* we have an array, with the number of elements stored before the first object */
12649 INT_PTR i, *ptr = (INT_PTR *)this-1;
12651 for(i=*ptr-1; i>=0; i--)
12652 basic_fstream_char_vbase_dtor(this+i);
12653 operator_delete(ptr);
12654 } else {
12655 basic_fstream_char_vbase_dtor(this);
12656 if(flags & 1)
12657 operator_delete(this);
12660 return this;
12663 /* ?close@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
12664 /* ?close@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
12665 DEFINE_THISCALL_WRAPPER(basic_fstream_char_close, 4)
12666 void __thiscall basic_fstream_char_close(basic_fstream_char *this)
12668 TRACE("(%p)\n", this);
12670 if(!basic_filebuf_char_close(&this->filebuf)) {
12671 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
12672 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
12676 /* ?is_open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QBE_NXZ */
12677 /* ?is_open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEBA_NXZ */
12678 DEFINE_THISCALL_WRAPPER(basic_fstream_char_is_open, 4)
12679 bool __thiscall basic_fstream_char_is_open(const basic_fstream_char *this)
12681 TRACE("(%p)\n", this);
12682 return basic_filebuf_char_is_open(&this->filebuf);
12685 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPBDHH@Z */
12686 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDHH@Z */
12687 DEFINE_THISCALL_WRAPPER(basic_fstream_char_open, 16)
12688 void __thiscall basic_fstream_char_open(basic_fstream_char *this,
12689 const char *name, int mode, int prot)
12691 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
12693 if(!basic_filebuf_char_open(&this->filebuf, name, mode, prot)) {
12694 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
12695 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
12699 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPBDI@Z */
12700 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDI@Z */
12701 DEFINE_THISCALL_WRAPPER(basic_fstream_char_open_old, 12)
12702 void __thiscall basic_fstream_char_open_old(basic_fstream_char *this,
12703 const char *name, unsigned int mode)
12705 basic_fstream_char_open(this, name, mode, _SH_DENYNO);
12708 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPBGHH@Z */
12709 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGHH@Z */
12710 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPB_WHH@Z */
12711 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WHH@Z */
12712 DEFINE_THISCALL_WRAPPER(basic_fstream_char_open_wchar, 16)
12713 void __thiscall basic_fstream_char_open_wchar(basic_fstream_char *this,
12714 const wchar_t *name, int mode, int prot)
12716 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
12718 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode, prot)) {
12719 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
12720 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
12724 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPBGI@Z */
12725 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGI@Z */
12726 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPB_WI@Z */
12727 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WI@Z */
12728 DEFINE_THISCALL_WRAPPER(basic_fstream_char_open_wchar_old, 12)
12729 void __thiscall basic_fstream_char_open_wchar_old(basic_fstream_char *this,
12730 const wchar_t *name, unsigned int mode)
12732 basic_fstream_char_open_wchar(this, name, mode, _SH_DENYNO);
12735 /* ?rdbuf@?$basic_fstream@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
12736 /* ?rdbuf@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
12737 DEFINE_THISCALL_WRAPPER(basic_fstream_char_rdbuf, 4)
12738 basic_filebuf_char* __thiscall basic_fstream_char_rdbuf(const basic_fstream_char *this)
12740 TRACE("(%p)\n", this);
12741 return (basic_filebuf_char*)&this->filebuf;
12744 static inline basic_ios_wchar* basic_fstream_wchar_to_basic_ios(basic_fstream_wchar *ptr)
12746 return (basic_ios_wchar*)((char*)ptr+basic_fstream_wchar_vbtable1[1]);
12749 static inline basic_fstream_wchar* basic_fstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
12751 return (basic_fstream_wchar*)((char*)ptr-basic_fstream_wchar_vbtable1[1]);
12754 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAE@XZ */
12755 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAA@XZ */
12756 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_ctor, 8)
12757 basic_fstream_wchar* __thiscall basic_fstream_wchar_ctor(basic_fstream_wchar *this, bool virt_init)
12759 basic_ios_wchar *basic_ios;
12761 TRACE("(%p %d)\n", this, virt_init);
12763 if(virt_init) {
12764 this->base.base1.vbtable = basic_fstream_wchar_vbtable1;
12765 this->base.base2.vbtable = basic_fstream_wchar_vbtable2;
12766 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12767 INIT_BASIC_IOS_VTORDISP(basic_ios);
12768 basic_ios_wchar_ctor(basic_ios);
12769 }else {
12770 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12773 basic_filebuf_wchar_ctor(&this->filebuf);
12774 basic_iostream_wchar_ctor(&this->base, &this->filebuf.base, FALSE);
12775 basic_ios->base.vtable = &basic_fstream_wchar_vtable;
12776 return this;
12779 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@XZ */
12780 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@XZ */
12781 DEFINE_THISCALL_WRAPPER(basic_fstream_short_ctor, 8)
12782 basic_fstream_wchar* __thiscall basic_fstream_short_ctor(basic_fstream_wchar *this, bool virt_init)
12784 basic_fstream_wchar_ctor(this, virt_init);
12785 basic_istream_wchar_get_basic_ios(&this->base.base1)->base.vtable = &basic_fstream_short_vtable;
12786 return this;
12789 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAE@PAU_iobuf@@@Z */
12790 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAU_iobuf@@@Z */
12791 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_ctor_file, 12)
12792 basic_fstream_wchar* __thiscall basic_fstream_wchar_ctor_file(basic_fstream_wchar *this,
12793 FILE *file, bool virt_init)
12795 basic_ios_wchar *basic_ios;
12797 TRACE("(%p %p %d)\n", this, file, virt_init);
12799 if(virt_init) {
12800 this->base.base1.vbtable = basic_fstream_wchar_vbtable1;
12801 this->base.base2.vbtable = basic_fstream_wchar_vbtable2;
12802 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12803 INIT_BASIC_IOS_VTORDISP(basic_ios);
12804 basic_ios_wchar_ctor(basic_ios);
12805 }else {
12806 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12809 basic_filebuf_wchar_ctor_file(&this->filebuf, file);
12810 basic_iostream_wchar_ctor(&this->base, &this->filebuf.base, FALSE);
12811 basic_ios->base.vtable = &basic_fstream_wchar_vtable;
12812 return this;
12815 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@PAU_iobuf@@@Z */
12816 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@PEAU_iobuf@@@Z */
12817 DEFINE_THISCALL_WRAPPER(basic_fstream_short_ctor_file, 12)
12818 basic_fstream_wchar* __thiscall basic_fstream_short_ctor_file(basic_fstream_wchar *this,
12819 FILE *file, bool virt_init)
12821 basic_fstream_wchar_ctor_file(this, file, virt_init);
12822 basic_istream_wchar_get_basic_ios(&this->base.base1)->base.vtable = &basic_fstream_short_vtable;
12823 return this;
12826 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAE@PB_WHH@Z */
12827 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEB_WHH@Z */
12828 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_ctor_name, 20)
12829 basic_fstream_wchar* __thiscall basic_fstream_wchar_ctor_name(basic_fstream_wchar *this,
12830 const char *name, int mode, int prot, bool virt_init)
12832 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
12834 basic_fstream_wchar_ctor(this, virt_init);
12836 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode, prot)) {
12837 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12838 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
12840 return this;
12843 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@PBGHH@Z */
12844 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@PEBGHH@Z */
12845 DEFINE_THISCALL_WRAPPER(basic_fstream_short_ctor_name, 20)
12846 basic_fstream_wchar* __thiscall basic_fstream_short_ctor_name(basic_fstream_wchar *this,
12847 const char *name, int mode, int prot, bool virt_init)
12849 basic_fstream_wchar_ctor_name(this, name, mode, prot, virt_init);
12850 basic_istream_wchar_get_basic_ios(&this->base.base1)->base.vtable = &basic_fstream_short_vtable;
12851 return this;
12854 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAE@PBDH@Z */
12855 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_ctor_name_noprot, 16)
12856 basic_fstream_wchar* __thiscall basic_fstream_wchar_ctor_name_noprot(basic_fstream_wchar *this,
12857 const char *name, int mode, bool virt_init)
12859 return basic_fstream_wchar_ctor_name(this, name, mode, _SH_DENYNO, virt_init);
12862 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@PBDH@Z */
12863 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@PEBDH@Z */
12864 DEFINE_THISCALL_WRAPPER(basic_fstream_short_ctor_name_noprot, 16)
12865 basic_fstream_wchar* __thiscall basic_fstream_short_ctor_name_noprot(basic_fstream_wchar *this,
12866 const char *name, int mode, bool virt_init)
12868 return basic_fstream_short_ctor_name(this, name, mode, _SH_DENYNO, virt_init);
12871 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAE@PBGHH@Z */
12872 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEBGHH@Z */
12873 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAE@PB_WHH@Z */
12874 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEB_WHH@Z */
12875 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_ctor_name_wchar, 20)
12876 basic_fstream_wchar* __thiscall basic_fstream_wchar_ctor_name_wchar(basic_fstream_wchar *this,
12877 const wchar_t *name, int mode, int prot, bool virt_init)
12879 TRACE("(%p %s %d %d %d)\n", this, debugstr_w(name), mode, prot, virt_init);
12881 basic_fstream_wchar_ctor(this, virt_init);
12883 if(!basic_filebuf_wchar_open_wchar(&this->filebuf, name, mode, prot)) {
12884 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12885 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
12887 return this;
12890 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@PBGHH@Z */
12891 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@PEBGHH@Z */
12892 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@PB_WHH@Z */
12893 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@PEB_WHH@Z */
12894 DEFINE_THISCALL_WRAPPER(basic_fstream_short_ctor_name_wchar, 20)
12895 basic_fstream_wchar* __thiscall basic_fstream_short_ctor_name_wchar(basic_fstream_wchar *this,
12896 const wchar_t *name, int mode, int prot, bool virt_init)
12898 basic_fstream_wchar_ctor_name_wchar(this, name, mode, prot, virt_init);
12899 basic_istream_wchar_get_basic_ios(&this->base.base1)->base.vtable = &basic_fstream_short_vtable;
12900 return this;
12903 /* ??1?$basic_fstream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
12904 /* ??1?$basic_fstream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
12905 /* ??1?$basic_fstream@GU?$char_traits@G@std@@@std@@UAE@XZ */
12906 /* ??1?$basic_fstream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
12907 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_dtor, 4)
12908 void __thiscall basic_fstream_wchar_dtor(basic_ios_wchar *base)
12910 basic_fstream_wchar *this = basic_fstream_wchar_from_basic_ios(base);
12912 TRACE("(%p)\n", this);
12914 basic_iostream_wchar_dtor(basic_iostream_wchar_to_basic_ios(&this->base));
12915 basic_filebuf_wchar_dtor(&this->filebuf);
12918 /* ??_D?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
12919 /* ??_D?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
12920 /* ??_D?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
12921 /* ??_D?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
12922 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_vbase_dtor, 4)
12923 void __thiscall basic_fstream_wchar_vbase_dtor(basic_fstream_wchar *this)
12925 basic_ios_wchar *base = basic_fstream_wchar_to_basic_ios(this);
12927 TRACE("(%p)\n", this);
12929 basic_fstream_wchar_dtor(base);
12930 basic_ios_wchar_dtor(base);
12933 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_vector_dtor, 8)
12934 basic_fstream_wchar* __thiscall basic_fstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
12936 basic_fstream_wchar *this = basic_fstream_wchar_from_basic_ios(base);
12938 TRACE("(%p %x)\n", this, flags);
12940 if(flags & 2) {
12941 /* we have an array, with the number of elements stored before the first object */
12942 INT_PTR i, *ptr = (INT_PTR *)this-1;
12944 for(i=*ptr-1; i>=0; i--)
12945 basic_fstream_wchar_vbase_dtor(this+i);
12946 operator_delete(ptr);
12947 } else {
12948 basic_fstream_wchar_vbase_dtor(this);
12949 if(flags & 1)
12950 operator_delete(this);
12953 return this;
12956 /* ?close@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
12957 /* ?close@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
12958 /* ?close@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
12959 /* ?close@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
12960 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_close, 4)
12961 void __thiscall basic_fstream_wchar_close(basic_fstream_wchar *this)
12963 TRACE("(%p)\n", this);
12965 if(!basic_filebuf_wchar_close(&this->filebuf)) {
12966 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12967 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
12971 /* ?is_open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QBE_NXZ */
12972 /* ?is_open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEBA_NXZ */
12973 /* ?is_open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QBE_NXZ */
12974 /* ?is_open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEBA_NXZ */
12975 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_is_open, 4)
12976 bool __thiscall basic_fstream_wchar_is_open(const basic_fstream_wchar *this)
12978 TRACE("(%p)\n", this);
12979 return basic_filebuf_wchar_is_open(&this->filebuf);
12982 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDHH@Z */
12983 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDHH@Z */
12984 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXPBDHH@Z */
12985 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDHH@Z */
12986 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_open, 16)
12987 void __thiscall basic_fstream_wchar_open(basic_fstream_wchar *this,
12988 const char *name, int mode, int prot)
12990 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
12992 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode, prot)) {
12993 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12994 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
12998 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDI@Z */
12999 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDI@Z */
13000 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXPBDI@Z */
13001 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDI@Z */
13002 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_open_old, 12)
13003 void __thiscall basic_fstream_wchar_open_old(basic_fstream_wchar *this,
13004 const char *name, unsigned int mode)
13006 basic_fstream_wchar_open(this, name, mode, _SH_DENYNO);
13009 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXPBGHH@Z */
13010 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBGHH@Z */
13011 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXPB_WHH@Z */
13012 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEB_WHH@Z */
13013 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXPBGHH@Z */
13014 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXPEBGHH@Z */
13015 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXPB_WHH@Z */
13016 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXPEB_WHH@Z */
13017 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_open_wchar, 16)
13018 void __thiscall basic_fstream_wchar_open_wchar(basic_fstream_wchar *this,
13019 const wchar_t *name, int mode, int prot)
13021 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
13023 if(!basic_filebuf_wchar_open_wchar(&this->filebuf, name, mode, prot)) {
13024 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
13025 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
13029 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXPBGI@Z */
13030 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBGI@Z */
13031 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXPB_WI@Z */
13032 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEB_WI@Z */
13033 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXPBGI@Z */
13034 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXPEBGI@Z */
13035 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXPB_WI@Z */
13036 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXPEB_WI@Z */
13037 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_open_wchar_old, 12)
13038 void __thiscall basic_fstream_wchar_open_wchar_old(basic_fstream_wchar *this,
13039 const wchar_t *name, unsigned int mode)
13041 basic_fstream_wchar_open_wchar(this, name, mode, _SH_DENYNO);
13044 /* ?rdbuf@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
13045 /* ?rdbuf@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
13046 /* ?rdbuf@?$basic_fstream@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
13047 /* ?rdbuf@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
13048 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_rdbuf, 4)
13049 basic_filebuf_wchar* __thiscall basic_fstream_wchar_rdbuf(const basic_fstream_wchar *this)
13051 TRACE("(%p)\n", this);
13052 return (basic_filebuf_wchar*)&this->filebuf;
13055 static inline basic_ios_char* basic_ostringstream_char_to_basic_ios(basic_ostringstream_char *ptr)
13057 return (basic_ios_char*)((char*)ptr+basic_ostringstream_char_vbtable[1]);
13060 static inline basic_ostringstream_char* basic_ostringstream_char_from_basic_ios(basic_ios_char *ptr)
13062 return (basic_ostringstream_char*)((char*)ptr-basic_ostringstream_char_vbtable[1]);
13065 /* ??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 */
13066 /* ??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 */
13067 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_ctor_str, 16)
13068 basic_ostringstream_char* __thiscall basic_ostringstream_char_ctor_str(basic_ostringstream_char *this,
13069 const basic_string_char *str, int mode, bool virt_init)
13071 basic_ios_char *basic_ios;
13073 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
13075 if(virt_init) {
13076 this->base.vbtable = basic_ostringstream_char_vbtable;
13077 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
13078 INIT_BASIC_IOS_VTORDISP(basic_ios);
13079 basic_ios_char_ctor(basic_ios);
13080 }else {
13081 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
13084 basic_stringbuf_char_ctor_str(&this->strbuf, str, mode|OPENMODE_out);
13085 basic_ostream_char_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
13086 basic_ios->base.vtable = &basic_ostringstream_char_vtable;
13087 return this;
13090 /* ??0?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z */
13091 /* ??0?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z */
13092 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_ctor_mode, 12)
13093 basic_ostringstream_char* __thiscall basic_ostringstream_char_ctor_mode(
13094 basic_ostringstream_char *this, int mode, bool virt_init)
13096 basic_ios_char *basic_ios;
13098 TRACE("(%p %d %d)\n", this, mode, virt_init);
13100 if(virt_init) {
13101 this->base.vbtable = basic_ostringstream_char_vbtable;
13102 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
13103 INIT_BASIC_IOS_VTORDISP(basic_ios);
13104 basic_ios_char_ctor(basic_ios);
13105 }else {
13106 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
13109 basic_stringbuf_char_ctor_mode(&this->strbuf, mode|OPENMODE_out);
13110 basic_ostream_char_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
13111 basic_ios->base.vtable = &basic_ostringstream_char_vtable;
13112 return this;
13115 /* ??_F?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
13116 /* ??_F?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
13117 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_ctor, 4)
13118 basic_ostringstream_char* __thiscall basic_ostringstream_char_ctor(
13119 basic_ostringstream_char *this)
13121 return basic_ostringstream_char_ctor_mode(this, 0, TRUE);
13124 /* ??1?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ */
13125 /* ??1?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ */
13126 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_dtor, 4)
13127 void __thiscall basic_ostringstream_char_dtor(basic_ios_char *base)
13129 basic_ostringstream_char *this = basic_ostringstream_char_from_basic_ios(base);
13131 TRACE("(%p)\n", this);
13133 basic_stringbuf_char_dtor(&this->strbuf);
13134 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(&this->base));
13137 /* ??_D?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
13138 /* ??_D?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
13139 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_vbase_dtor, 4)
13140 void __thiscall basic_ostringstream_char_vbase_dtor(basic_ostringstream_char *this)
13142 basic_ios_char *base = basic_ostringstream_char_to_basic_ios(this);
13144 TRACE("(%p)\n", this);
13146 basic_ostringstream_char_dtor(base);
13147 basic_ios_char_dtor(base);
13150 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_vector_dtor, 8)
13151 basic_ostringstream_char* __thiscall basic_ostringstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
13153 basic_ostringstream_char *this = basic_ostringstream_char_from_basic_ios(base);
13155 TRACE("(%p %x)\n", this, flags);
13157 if(flags & 2) {
13158 /* we have an array, with the number of elements stored before the first object */
13159 INT_PTR i, *ptr = (INT_PTR *)this-1;
13161 for(i=*ptr-1; i>=0; i--)
13162 basic_ostringstream_char_vbase_dtor(this+i);
13163 operator_delete(ptr);
13164 } else {
13165 basic_ostringstream_char_vbase_dtor(this);
13166 if(flags & 1)
13167 operator_delete(this);
13170 return this;
13173 /* ?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 */
13174 /* ?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 */
13175 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_rdbuf, 4)
13176 basic_stringbuf_char* __thiscall basic_ostringstream_char_rdbuf(const basic_ostringstream_char *this)
13178 TRACE("(%p)\n", this);
13179 return (basic_stringbuf_char*)&this->strbuf;
13182 /* ?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 */
13183 /* ?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 */
13184 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_str_set, 8)
13185 void __thiscall basic_ostringstream_char_str_set(basic_ostringstream_char *this, const basic_string_char *str)
13187 TRACE("(%p %p)\n", this, str);
13188 basic_stringbuf_char_str_set(&this->strbuf, str);
13191 /* ?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 */
13192 /* ?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 */
13193 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_str_get, 8)
13194 basic_string_char* __thiscall basic_ostringstream_char_str_get(const basic_ostringstream_char *this, basic_string_char *ret)
13196 TRACE("(%p %p)\n", this, ret);
13197 return basic_stringbuf_char_str_get(&this->strbuf, ret);
13200 static inline basic_ios_wchar* basic_ostringstream_wchar_to_basic_ios(basic_ostringstream_wchar *ptr)
13202 return (basic_ios_wchar*)((char*)ptr+basic_ostringstream_wchar_vbtable[1]);
13205 static inline basic_ostringstream_wchar* basic_ostringstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
13207 return (basic_ostringstream_wchar*)((char*)ptr-basic_ostringstream_wchar_vbtable[1]);
13210 /* ??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 */
13211 /* ??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 */
13212 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_ctor_str, 16)
13213 basic_ostringstream_wchar* __thiscall basic_ostringstream_wchar_ctor_str(basic_ostringstream_wchar *this,
13214 const basic_string_wchar *str, int mode, bool virt_init)
13216 basic_ios_wchar *basic_ios;
13218 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
13220 if(virt_init) {
13221 this->base.vbtable = basic_ostringstream_wchar_vbtable;
13222 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
13223 INIT_BASIC_IOS_VTORDISP(basic_ios);
13224 basic_ios_wchar_ctor(basic_ios);
13225 }else {
13226 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
13229 basic_stringbuf_wchar_ctor_str(&this->strbuf, str, mode|OPENMODE_out);
13230 basic_ostream_wchar_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
13231 basic_ios->base.vtable = &basic_ostringstream_wchar_vtable;
13232 return this;
13235 /* ??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 */
13236 /* ??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 */
13237 DEFINE_THISCALL_WRAPPER(basic_ostringstream_short_ctor_str, 16)
13238 basic_ostringstream_wchar* __thiscall basic_ostringstream_short_ctor_str(basic_ostringstream_wchar *this,
13239 const basic_string_wchar *str, int mode, bool virt_init)
13241 basic_ostringstream_wchar_ctor_str(this, str, mode, virt_init);
13242 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &basic_ostringstream_short_vtable;
13243 return this;
13246 /* ??0?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@H@Z */
13247 /* ??0?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@H@Z */
13248 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_ctor_mode, 12)
13249 basic_ostringstream_wchar* __thiscall basic_ostringstream_wchar_ctor_mode(
13250 basic_ostringstream_wchar *this, int mode, bool virt_init)
13252 basic_ios_wchar *basic_ios;
13254 TRACE("(%p %d %d)\n", this, mode, virt_init);
13256 if(virt_init) {
13257 this->base.vbtable = basic_ostringstream_wchar_vbtable;
13258 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
13259 INIT_BASIC_IOS_VTORDISP(basic_ios);
13260 basic_ios_wchar_ctor(basic_ios);
13261 }else {
13262 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
13265 basic_stringbuf_wchar_ctor_mode(&this->strbuf, mode|OPENMODE_out);
13266 basic_ostream_wchar_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
13267 basic_ios->base.vtable = &basic_ostringstream_wchar_vtable;
13268 return this;
13271 /* ??0?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@H@Z */
13272 /* ??0?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@H@Z */
13273 DEFINE_THISCALL_WRAPPER(basic_ostringstream_short_ctor_mode, 12)
13274 basic_ostringstream_wchar* __thiscall basic_ostringstream_short_ctor_mode(
13275 basic_ostringstream_wchar *this, int mode, bool virt_init)
13277 basic_ostringstream_wchar_ctor_mode(this, mode, virt_init);
13278 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &basic_ostringstream_short_vtable;
13279 return this;
13282 /* ??_F?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
13283 /* ??_F?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
13284 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_ctor, 4)
13285 basic_ostringstream_wchar* __thiscall basic_ostringstream_wchar_ctor(
13286 basic_ostringstream_wchar *this)
13288 return basic_ostringstream_wchar_ctor_mode(this, 0, TRUE);
13291 /* ??_F?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
13292 /* ??_F?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
13293 DEFINE_THISCALL_WRAPPER(basic_ostringstream_short_ctor, 4)
13294 basic_ostringstream_wchar* __thiscall basic_ostringstream_short_ctor(
13295 basic_ostringstream_wchar *this)
13297 return basic_ostringstream_short_ctor_mode(this, 0, TRUE);
13300 /* ??1?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UAE@XZ */
13301 /* ??1?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UEAA@XZ */
13302 /* ??1?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UAE@XZ */
13303 /* ??1?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UEAA@XZ */
13304 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_dtor, 4)
13305 void __thiscall basic_ostringstream_wchar_dtor(basic_ios_wchar *base)
13307 basic_ostringstream_wchar *this = basic_ostringstream_wchar_from_basic_ios(base);
13309 TRACE("(%p)\n", this);
13311 basic_stringbuf_wchar_dtor(&this->strbuf);
13312 basic_ostream_wchar_dtor(basic_ostream_wchar_to_basic_ios(&this->base));
13315 /* ??_D?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
13316 /* ??_D?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
13317 /* ??_D?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
13318 /* ??_D?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
13319 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_vbase_dtor, 4)
13320 void __thiscall basic_ostringstream_wchar_vbase_dtor(basic_ostringstream_wchar *this)
13322 basic_ios_wchar *base = basic_ostringstream_wchar_to_basic_ios(this);
13324 TRACE("(%p)\n", this);
13326 basic_ostringstream_wchar_dtor(base);
13327 basic_ios_wchar_dtor(base);
13330 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_vector_dtor, 8)
13331 basic_ostringstream_wchar* __thiscall basic_ostringstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
13333 basic_ostringstream_wchar *this = basic_ostringstream_wchar_from_basic_ios(base);
13335 TRACE("(%p %x)\n", this, flags);
13337 if(flags & 2) {
13338 /* we have an array, with the number of elements stored before the first object */
13339 INT_PTR i, *ptr = (INT_PTR *)this-1;
13341 for(i=*ptr-1; i>=0; i--)
13342 basic_ostringstream_wchar_vbase_dtor(this+i);
13343 operator_delete(ptr);
13344 } else {
13345 basic_ostringstream_wchar_vbase_dtor(this);
13346 if(flags & 1)
13347 operator_delete(this);
13350 return this;
13353 /* ?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 */
13354 /* ?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 */
13355 /* ?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 */
13356 /* ?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 */
13357 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_rdbuf, 4)
13358 basic_stringbuf_wchar* __thiscall basic_ostringstream_wchar_rdbuf(const basic_ostringstream_wchar *this)
13360 TRACE("(%p)\n", this);
13361 return (basic_stringbuf_wchar*)&this->strbuf;
13364 /* ?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 */
13365 /* ?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 */
13366 /* ?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 */
13367 /* ?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 */
13368 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_str_set, 8)
13369 void __thiscall basic_ostringstream_wchar_str_set(basic_ostringstream_wchar *this, const basic_string_wchar *str)
13371 TRACE("(%p %p)\n", this, str);
13372 basic_stringbuf_wchar_str_set(&this->strbuf, str);
13375 /* ?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 */
13376 /* ?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 */
13377 /* ?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 */
13378 /* ?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 */
13379 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_str_get, 8)
13380 basic_string_wchar* __thiscall basic_ostringstream_wchar_str_get(const basic_ostringstream_wchar *this, basic_string_wchar *ret)
13382 TRACE("(%p %p)\n", this, ret);
13383 return basic_stringbuf_wchar_str_get(&this->strbuf, ret);
13386 static inline basic_ios_char* basic_istringstream_char_to_basic_ios(basic_istringstream_char *ptr)
13388 return (basic_ios_char*)((char*)ptr+basic_istringstream_char_vbtable[1]);
13391 static inline basic_istringstream_char* basic_istringstream_char_from_basic_ios(basic_ios_char *ptr)
13393 return (basic_istringstream_char*)((char*)ptr-basic_istringstream_char_vbtable[1]);
13396 /* ??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 */
13397 /* ??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 */
13398 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_ctor_str, 16)
13399 basic_istringstream_char* __thiscall basic_istringstream_char_ctor_str(basic_istringstream_char *this,
13400 const basic_string_char *str, int mode, bool virt_init)
13402 basic_ios_char *basic_ios;
13404 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
13406 if(virt_init) {
13407 this->base.vbtable = basic_istringstream_char_vbtable;
13408 basic_ios = basic_istream_char_get_basic_ios(&this->base);
13409 INIT_BASIC_IOS_VTORDISP(basic_ios);
13410 basic_ios_char_ctor(basic_ios);
13411 }else {
13412 basic_ios = basic_istream_char_get_basic_ios(&this->base);
13415 basic_stringbuf_char_ctor_str(&this->strbuf, str, mode|OPENMODE_in);
13416 basic_istream_char_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
13417 basic_ios->base.vtable = &basic_istringstream_char_vtable;
13418 return this;
13421 /* ??0?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z */
13422 /* ??0?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z */
13423 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_ctor_mode, 12)
13424 basic_istringstream_char* __thiscall basic_istringstream_char_ctor_mode(
13425 basic_istringstream_char *this, int mode, bool virt_init)
13427 basic_ios_char *basic_ios;
13429 TRACE("(%p %d %d)\n", this, mode, virt_init);
13431 if(virt_init) {
13432 this->base.vbtable = basic_istringstream_char_vbtable;
13433 basic_ios = basic_istream_char_get_basic_ios(&this->base);
13434 INIT_BASIC_IOS_VTORDISP(basic_ios);
13435 basic_ios_char_ctor(basic_ios);
13436 }else {
13437 basic_ios = basic_istream_char_get_basic_ios(&this->base);
13440 basic_stringbuf_char_ctor_mode(&this->strbuf, mode|OPENMODE_in);
13441 basic_istream_char_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
13442 basic_ios->base.vtable = &basic_istringstream_char_vtable;
13443 return this;
13446 /* ??_F?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
13447 /* ??_F?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
13448 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_ctor, 4)
13449 basic_istringstream_char* __thiscall basic_istringstream_char_ctor(
13450 basic_istringstream_char *this)
13452 return basic_istringstream_char_ctor_mode(this, 0, TRUE);
13455 /* ??1?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ */
13456 /* ??1?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ */
13457 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_dtor, 4)
13458 void __thiscall basic_istringstream_char_dtor(basic_ios_char *base)
13460 basic_istringstream_char *this = basic_istringstream_char_from_basic_ios(base);
13462 TRACE("(%p)\n", this);
13464 basic_stringbuf_char_dtor(&this->strbuf);
13465 basic_istream_char_dtor(basic_istream_char_to_basic_ios(&this->base));
13468 /* ??_D?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
13469 /* ??_D?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
13470 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_vbase_dtor, 4)
13471 void __thiscall basic_istringstream_char_vbase_dtor(basic_istringstream_char *this)
13473 basic_ios_char *base = basic_istringstream_char_to_basic_ios(this);
13475 TRACE("(%p)\n", this);
13477 basic_istringstream_char_dtor(base);
13478 basic_ios_char_dtor(base);
13481 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_vector_dtor, 8)
13482 basic_istringstream_char* __thiscall basic_istringstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
13484 basic_istringstream_char *this = basic_istringstream_char_from_basic_ios(base);
13486 TRACE("(%p %x)\n", this, flags);
13488 if(flags & 2) {
13489 /* we have an array, with the number of elements stored before the first object */
13490 INT_PTR i, *ptr = (INT_PTR *)this-1;
13492 for(i=*ptr-1; i>=0; i--)
13493 basic_istringstream_char_vbase_dtor(this+i);
13494 operator_delete(ptr);
13495 } else {
13496 basic_istringstream_char_vbase_dtor(this);
13497 if(flags & 1)
13498 operator_delete(this);
13501 return this;
13504 /* ?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 */
13505 /* ?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 */
13506 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_rdbuf, 4)
13507 basic_stringbuf_char* __thiscall basic_istringstream_char_rdbuf(const basic_istringstream_char *this)
13509 TRACE("(%p)\n", this);
13510 return (basic_stringbuf_char*)&this->strbuf;
13513 /* ?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 */
13514 /* ?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 */
13515 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_str_set, 8)
13516 void __thiscall basic_istringstream_char_str_set(basic_istringstream_char *this, const basic_string_char *str)
13518 TRACE("(%p %p)\n", this, str);
13519 basic_stringbuf_char_str_set(&this->strbuf, str);
13522 /* ?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 */
13523 /* ?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 */
13524 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_str_get, 8)
13525 basic_string_char* __thiscall basic_istringstream_char_str_get(const basic_istringstream_char *this, basic_string_char *ret)
13527 TRACE("(%p %p)\n", this, ret);
13528 return basic_stringbuf_char_str_get(&this->strbuf, ret);
13531 static inline basic_ios_wchar* basic_istringstream_wchar_to_basic_ios(basic_istringstream_wchar *ptr)
13533 return (basic_ios_wchar*)((char*)ptr+basic_istringstream_wchar_vbtable[1]);
13536 static inline basic_istringstream_wchar* basic_istringstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
13538 return (basic_istringstream_wchar*)((char*)ptr-basic_istringstream_wchar_vbtable[1]);
13541 /* ??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 */
13542 /* ??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 */
13543 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_ctor_str, 16)
13544 basic_istringstream_wchar* __thiscall basic_istringstream_wchar_ctor_str(basic_istringstream_wchar *this,
13545 const basic_string_wchar *str, int mode, bool virt_init)
13547 basic_ios_wchar *basic_ios;
13549 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
13551 if(virt_init) {
13552 this->base.vbtable = basic_istringstream_wchar_vbtable;
13553 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
13554 INIT_BASIC_IOS_VTORDISP(basic_ios);
13555 basic_ios_wchar_ctor(basic_ios);
13556 }else {
13557 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
13560 basic_stringbuf_wchar_ctor_str(&this->strbuf, str, mode|OPENMODE_in);
13561 basic_istream_wchar_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
13562 basic_ios->base.vtable = &basic_istringstream_wchar_vtable;
13563 return this;
13566 /* ??0?$basic_istringstream@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 */
13567 /* ??0?$basic_istringstream@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 */
13568 DEFINE_THISCALL_WRAPPER(basic_istringstream_short_ctor_str, 16)
13569 basic_istringstream_wchar* __thiscall basic_istringstream_short_ctor_str(basic_istringstream_wchar *this,
13570 const basic_string_wchar *str, int mode, bool virt_init)
13572 basic_istringstream_wchar_ctor_str(this, str, mode, virt_init);
13573 basic_istream_wchar_get_basic_ios(&this->base)->base.vtable = &basic_istringstream_short_vtable;
13574 return this;
13577 /* ??0?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@H@Z */
13578 /* ??0?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@H@Z */
13579 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_ctor_mode, 12)
13580 basic_istringstream_wchar* __thiscall basic_istringstream_wchar_ctor_mode(
13581 basic_istringstream_wchar *this, int mode, bool virt_init)
13583 basic_ios_wchar *basic_ios;
13585 TRACE("(%p %d %d)\n", this, mode, virt_init);
13587 if(virt_init) {
13588 this->base.vbtable = basic_istringstream_wchar_vbtable;
13589 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
13590 INIT_BASIC_IOS_VTORDISP(basic_ios);
13591 basic_ios_wchar_ctor(basic_ios);
13592 }else {
13593 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
13596 basic_stringbuf_wchar_ctor_mode(&this->strbuf, mode|OPENMODE_in);
13597 basic_istream_wchar_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
13598 basic_ios->base.vtable = &basic_istringstream_wchar_vtable;
13599 return this;
13602 /* ??0?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@H@Z */
13603 /* ??0?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@H@Z */
13604 DEFINE_THISCALL_WRAPPER(basic_istringstream_short_ctor_mode, 12)
13605 basic_istringstream_wchar* __thiscall basic_istringstream_short_ctor_mode(
13606 basic_istringstream_wchar *this, int mode, bool virt_init)
13608 basic_istringstream_wchar_ctor_mode(this, mode, virt_init);
13609 basic_istream_wchar_get_basic_ios(&this->base)->base.vtable = &basic_istringstream_short_vtable;
13610 return this;
13613 /* ??_F?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
13614 /* ??_F?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
13615 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_ctor, 4)
13616 basic_istringstream_wchar* __thiscall basic_istringstream_wchar_ctor(
13617 basic_istringstream_wchar *this)
13619 return basic_istringstream_wchar_ctor_mode(this, 0, TRUE);
13622 /* ??_F?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
13623 /* ??_F?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
13624 DEFINE_THISCALL_WRAPPER(basic_istringstream_short_ctor, 4)
13625 basic_istringstream_wchar* __thiscall basic_istringstream_short_ctor(
13626 basic_istringstream_wchar *this)
13628 return basic_istringstream_short_ctor_mode(this, 0, TRUE);
13631 /* ??1?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UAE@XZ */
13632 /* ??1?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UEAA@XZ */
13633 /* ??1?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UAE@XZ */
13634 /* ??1?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UEAA@XZ */
13635 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_dtor, 4)
13636 void __thiscall basic_istringstream_wchar_dtor(basic_ios_wchar *base)
13638 basic_istringstream_wchar *this = basic_istringstream_wchar_from_basic_ios(base);
13640 TRACE("(%p)\n", this);
13642 basic_stringbuf_wchar_dtor(&this->strbuf);
13643 basic_istream_wchar_dtor(basic_istream_wchar_to_basic_ios(&this->base));
13646 /* ??_D?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
13647 /* ??_D?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
13648 /* ??_D?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
13649 /* ??_D?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
13650 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_vbase_dtor, 4)
13651 void __thiscall basic_istringstream_wchar_vbase_dtor(basic_istringstream_wchar *this)
13653 basic_ios_wchar *base = basic_istringstream_wchar_to_basic_ios(this);
13655 TRACE("(%p)\n", this);
13657 basic_istringstream_wchar_dtor(base);
13658 basic_ios_wchar_dtor(base);
13661 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_vector_dtor, 8)
13662 basic_istringstream_wchar* __thiscall basic_istringstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
13664 basic_istringstream_wchar *this = basic_istringstream_wchar_from_basic_ios(base);
13666 TRACE("(%p %x)\n", this, flags);
13668 if(flags & 2) {
13669 /* we have an array, with the number of elements stored before the first object */
13670 INT_PTR i, *ptr = (INT_PTR *)this-1;
13672 for(i=*ptr-1; i>=0; i--)
13673 basic_istringstream_wchar_vbase_dtor(this+i);
13674 operator_delete(ptr);
13675 } else {
13676 basic_istringstream_wchar_vbase_dtor(this);
13677 if(flags & 1)
13678 operator_delete(this);
13681 return this;
13684 /* ?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 */
13685 /* ?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 */
13686 /* ?rdbuf@?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEPAV?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
13687 /* ?rdbuf@?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAPEAV?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
13688 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_rdbuf, 4)
13689 basic_stringbuf_wchar* __thiscall basic_istringstream_wchar_rdbuf(const basic_istringstream_wchar *this)
13691 TRACE("(%p)\n", this);
13692 return (basic_stringbuf_wchar*)&this->strbuf;
13695 /* ?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 */
13696 /* ?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 */
13697 /* ?str@?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@@Z */
13698 /* ?str@?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@@Z */
13699 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_str_set, 8)
13700 void __thiscall basic_istringstream_wchar_str_set(basic_istringstream_wchar *this, const basic_string_wchar *str)
13702 TRACE("(%p %p)\n", this, str);
13703 basic_stringbuf_wchar_str_set(&this->strbuf, str);
13706 /* ?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 */
13707 /* ?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 */
13708 /* ?str@?$basic_istringstream@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 */
13709 /* ?str@?$basic_istringstream@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 */
13710 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_str_get, 8)
13711 basic_string_wchar* __thiscall basic_istringstream_wchar_str_get(const basic_istringstream_wchar *this, basic_string_wchar *ret)
13713 TRACE("(%p %p)\n", this, ret);
13714 return basic_stringbuf_wchar_str_get(&this->strbuf, ret);
13717 static inline basic_ios_char* basic_stringstream_char_to_basic_ios(basic_stringstream_char *ptr)
13719 return (basic_ios_char*)((char*)ptr+basic_stringstream_char_vbtable1[1]);
13722 static inline basic_stringstream_char* basic_stringstream_char_from_basic_ios(basic_ios_char *ptr)
13724 return (basic_stringstream_char*)((char*)ptr-basic_stringstream_char_vbtable1[1]);
13727 /* ??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 */
13728 /* ??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 */
13729 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_ctor_str, 16)
13730 basic_stringstream_char* __thiscall basic_stringstream_char_ctor_str(basic_stringstream_char *this,
13731 const basic_string_char *str, int mode, bool virt_init)
13733 basic_ios_char *basic_ios;
13735 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
13737 if(virt_init) {
13738 this->base.base1.vbtable = basic_stringstream_char_vbtable1;
13739 this->base.base2.vbtable = basic_stringstream_char_vbtable2;
13740 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
13741 INIT_BASIC_IOS_VTORDISP(basic_ios);
13742 basic_ios_char_ctor(basic_ios);
13743 }else {
13744 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
13747 basic_stringbuf_char_ctor_str(&this->strbuf, str, mode);
13748 basic_iostream_char_ctor(&this->base, &this->strbuf.base, FALSE);
13749 basic_ios->base.vtable = &basic_stringstream_char_vtable;
13750 return this;
13753 /* ??0?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z */
13754 /* ??0?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z */
13755 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_ctor_mode, 12)
13756 basic_stringstream_char* __thiscall basic_stringstream_char_ctor_mode(
13757 basic_stringstream_char *this, int mode, bool virt_init)
13759 basic_ios_char *basic_ios;
13761 TRACE("(%p %d %d)\n", this, mode, virt_init);
13763 if(virt_init) {
13764 this->base.base1.vbtable = basic_stringstream_char_vbtable1;
13765 this->base.base2.vbtable = basic_stringstream_char_vbtable2;
13766 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
13767 INIT_BASIC_IOS_VTORDISP(basic_ios);
13768 basic_ios_char_ctor(basic_ios);
13769 }else {
13770 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
13773 basic_stringbuf_char_ctor_mode(&this->strbuf, mode);
13774 basic_iostream_char_ctor(&this->base, &this->strbuf.base, FALSE);
13775 basic_ios->base.vtable = &basic_stringstream_char_vtable;
13776 return this;
13779 /* ??_F?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
13780 /* ??_F?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
13781 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_ctor, 4)
13782 basic_stringstream_char* __thiscall basic_stringstream_char_ctor(
13783 basic_stringstream_char *this)
13785 return basic_stringstream_char_ctor_mode(
13786 this, OPENMODE_out|OPENMODE_in, TRUE);
13789 /* ??1?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ */
13790 /* ??1?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ */
13791 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_dtor, 4)
13792 void __thiscall basic_stringstream_char_dtor(basic_ios_char *base)
13794 basic_stringstream_char *this = basic_stringstream_char_from_basic_ios(base);
13796 TRACE("(%p)\n", this);
13798 basic_iostream_char_dtor(basic_iostream_char_to_basic_ios(&this->base));
13799 basic_stringbuf_char_dtor(&this->strbuf);
13802 /* ??_D?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
13803 /* ??_D?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
13804 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_vbase_dtor, 4)
13805 void __thiscall basic_stringstream_char_vbase_dtor(basic_stringstream_char *this)
13807 basic_ios_char *base = basic_stringstream_char_to_basic_ios(this);
13809 TRACE("(%p)\n", this);
13811 basic_stringstream_char_dtor(base);
13812 basic_ios_char_dtor(base);
13815 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_vector_dtor, 8)
13816 basic_stringstream_char* __thiscall basic_stringstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
13818 basic_stringstream_char *this = basic_stringstream_char_from_basic_ios(base);
13820 TRACE("(%p %x)\n", this, flags);
13822 if(flags & 2) {
13823 /* we have an array, with the number of elements stored before the first object */
13824 INT_PTR i, *ptr = (INT_PTR *)this-1;
13826 for(i=*ptr-1; i>=0; i--)
13827 basic_stringstream_char_vbase_dtor(this+i);
13828 operator_delete(ptr);
13829 } else {
13830 basic_stringstream_char_vbase_dtor(this);
13831 if(flags & 1)
13832 operator_delete(this);
13835 return this;
13838 /* ?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 */
13839 /* ?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 */
13840 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_rdbuf, 4)
13841 basic_stringbuf_char* __thiscall basic_stringstream_char_rdbuf(const basic_stringstream_char *this)
13843 TRACE("(%p)\n", this);
13844 return (basic_stringbuf_char*)&this->strbuf;
13847 /* ?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 */
13848 /* ?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 */
13849 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_str_set, 8)
13850 void __thiscall basic_stringstream_char_str_set(basic_stringstream_char *this, const basic_string_char *str)
13852 TRACE("(%p %p)\n", this, str);
13853 basic_stringbuf_char_str_set(&this->strbuf, str);
13856 /* ?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 */
13857 /* ?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 */
13858 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_str_get, 8)
13859 basic_string_char* __thiscall basic_stringstream_char_str_get(const basic_stringstream_char *this, basic_string_char *ret)
13861 TRACE("(%p %p)\n", this, ret);
13862 return basic_stringbuf_char_str_get(&this->strbuf, ret);
13865 static inline basic_ios_wchar* basic_stringstream_wchar_to_basic_ios(basic_stringstream_wchar *ptr)
13867 return (basic_ios_wchar*)((char*)ptr+basic_stringstream_wchar_vbtable1[1]);
13870 static inline basic_stringstream_wchar* basic_stringstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
13872 return (basic_stringstream_wchar*)((char*)ptr-basic_stringstream_wchar_vbtable1[1]);
13875 /* ??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 */
13876 /* ??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 */
13877 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_ctor_str, 16)
13878 basic_stringstream_wchar* __thiscall basic_stringstream_wchar_ctor_str(basic_stringstream_wchar *this,
13879 const basic_string_wchar *str, int mode, bool virt_init)
13881 basic_ios_wchar *basic_ios;
13883 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
13885 if(virt_init) {
13886 this->base.base1.vbtable = basic_stringstream_wchar_vbtable1;
13887 this->base.base2.vbtable = basic_stringstream_wchar_vbtable2;
13888 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
13889 INIT_BASIC_IOS_VTORDISP(basic_ios);
13890 basic_ios_wchar_ctor(basic_ios);
13891 }else {
13892 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
13895 basic_stringbuf_wchar_ctor_str(&this->strbuf, str, mode);
13896 basic_iostream_wchar_ctor(&this->base, &this->strbuf.base, FALSE);
13897 basic_ios->base.vtable = &basic_stringstream_wchar_vtable;
13898 return this;
13901 /* ??0?$basic_stringstream@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 */
13902 /* ??0?$basic_stringstream@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 */
13903 DEFINE_THISCALL_WRAPPER(basic_stringstream_short_ctor_str, 16)
13904 basic_stringstream_wchar* __thiscall basic_stringstream_short_ctor_str(basic_stringstream_wchar *this,
13905 const basic_string_wchar *str, int mode, bool virt_init)
13907 basic_stringstream_wchar_ctor_str(this, str, mode, virt_init);
13908 basic_istream_wchar_get_basic_ios(&this->base.base1)->base.vtable = &basic_stringstream_short_vtable;
13909 return this;
13912 /* ??0?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@H@Z */
13913 /* ??0?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@H@Z */
13914 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_ctor_mode, 12)
13915 basic_stringstream_wchar* __thiscall basic_stringstream_wchar_ctor_mode(
13916 basic_stringstream_wchar *this, int mode, bool virt_init)
13918 basic_ios_wchar *basic_ios;
13920 TRACE("(%p %d %d)\n", this, mode, virt_init);
13922 if(virt_init) {
13923 this->base.base1.vbtable = basic_stringstream_wchar_vbtable1;
13924 this->base.base2.vbtable = basic_stringstream_wchar_vbtable2;
13925 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
13926 INIT_BASIC_IOS_VTORDISP(basic_ios);
13927 basic_ios_wchar_ctor(basic_ios);
13928 }else {
13929 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
13932 basic_stringbuf_wchar_ctor_mode(&this->strbuf, mode);
13933 basic_iostream_wchar_ctor(&this->base, &this->strbuf.base, FALSE);
13934 basic_ios->base.vtable = &basic_stringstream_wchar_vtable;
13935 return this;
13938 /* ??0?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@H@Z */
13939 /* ??0?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@H@Z */
13940 DEFINE_THISCALL_WRAPPER(basic_stringstream_short_ctor_mode, 12)
13941 basic_stringstream_wchar* __thiscall basic_stringstream_short_ctor_mode(
13942 basic_stringstream_wchar *this, int mode, bool virt_init)
13944 basic_stringstream_wchar_ctor_mode(this, mode, virt_init);
13945 basic_istream_wchar_get_basic_ios(&this->base.base1)->base.vtable = &basic_stringstream_short_vtable;
13946 return this;
13949 /* ??_F?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
13950 /* ??_F?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
13951 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_ctor, 4)
13952 basic_stringstream_wchar* __thiscall basic_stringstream_wchar_ctor(
13953 basic_stringstream_wchar *this)
13955 return basic_stringstream_wchar_ctor_mode(
13956 this, OPENMODE_out|OPENMODE_in, TRUE);
13959 /* ??_F?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
13960 /* ??_F?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
13961 DEFINE_THISCALL_WRAPPER(basic_stringstream_short_ctor, 4)
13962 basic_stringstream_wchar* __thiscall basic_stringstream_short_ctor(
13963 basic_stringstream_wchar *this)
13965 return basic_stringstream_short_ctor_mode(
13966 this, OPENMODE_out|OPENMODE_in, TRUE);
13969 /* ??1?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UAE@XZ */
13970 /* ??1?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UEAA@XZ */
13971 /* ??1?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UAE@XZ */
13972 /* ??1?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UEAA@XZ */
13973 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_dtor, 4)
13974 void __thiscall basic_stringstream_wchar_dtor(basic_ios_wchar *base)
13976 basic_stringstream_wchar *this = basic_stringstream_wchar_from_basic_ios(base);
13978 TRACE("(%p)\n", this);
13980 basic_iostream_wchar_dtor(basic_iostream_wchar_to_basic_ios(&this->base));
13981 basic_stringbuf_wchar_dtor(&this->strbuf);
13984 /* ??_D?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
13985 /* ??_D?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
13986 /* ??_D?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
13987 /* ??_D?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
13988 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_vbase_dtor, 4)
13989 void __thiscall basic_stringstream_wchar_vbase_dtor(basic_stringstream_wchar *this)
13991 basic_ios_wchar *base = basic_stringstream_wchar_to_basic_ios(this);
13993 TRACE("(%p)\n", this);
13995 basic_stringstream_wchar_dtor(base);
13996 basic_ios_wchar_dtor(base);
13999 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_vector_dtor, 8)
14000 basic_stringstream_wchar* __thiscall basic_stringstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
14002 basic_stringstream_wchar *this = basic_stringstream_wchar_from_basic_ios(base);
14004 TRACE("(%p %x)\n", this, flags);
14006 if(flags & 2) {
14007 /* we have an array, with the number of elements stored before the first object */
14008 INT_PTR i, *ptr = (INT_PTR *)this-1;
14010 for(i=*ptr-1; i>=0; i--)
14011 basic_stringstream_wchar_vbase_dtor(this+i);
14012 operator_delete(ptr);
14013 } else {
14014 basic_stringstream_wchar_vbase_dtor(this);
14015 if(flags & 1)
14016 operator_delete(this);
14019 return this;
14022 /* ?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 */
14023 /* ?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 */
14024 /* ?rdbuf@?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEPAV?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
14025 /* ?rdbuf@?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAPEAV?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
14026 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_rdbuf, 4)
14027 basic_stringbuf_wchar* __thiscall basic_stringstream_wchar_rdbuf(const basic_stringstream_wchar *this)
14029 TRACE("(%p)\n", this);
14030 return (basic_stringbuf_wchar*)&this->strbuf;
14033 /* ?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 */
14034 /* ?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 */
14035 /* ?str@?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@@Z */
14036 /* ?str@?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@@Z */
14037 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_str_set, 8)
14038 void __thiscall basic_stringstream_wchar_str_set(basic_stringstream_wchar *this, const basic_string_wchar *str)
14040 TRACE("(%p %p)\n", this, str);
14041 basic_stringbuf_wchar_str_set(&this->strbuf, str);
14044 /* ?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 */
14045 /* ?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 */
14046 /* ?str@?$basic_stringstream@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 */
14047 /* ?str@?$basic_stringstream@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 */
14048 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_str_get, 8)
14049 basic_string_wchar* __thiscall basic_stringstream_wchar_str_get(const basic_stringstream_wchar *this, basic_string_wchar *ret)
14051 TRACE("(%p %p)\n", this, ret);
14052 return basic_stringbuf_wchar_str_get(&this->strbuf, ret);
14055 /* ?_Init@strstreambuf@std@@IAEXHPAD0H@Z */
14056 /* ?_Init@strstreambuf@std@@IEAAX_JPEAD1H@Z */
14057 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
14058 DEFINE_THISCALL_WRAPPER(strstreambuf__Init, 24)
14059 #else
14060 DEFINE_THISCALL_WRAPPER(strstreambuf__Init, 20)
14061 #endif
14062 void __thiscall strstreambuf__Init(strstreambuf *this, streamsize len, char *g, char *p, int mode)
14064 TRACE("(%p %s %p %p %d)\n", this, wine_dbgstr_longlong(len), g, p, mode);
14066 this->minsize = 32;
14067 this->endsave = NULL;
14068 this->strmode = mode;
14069 this->palloc = NULL;
14070 this->pfree = NULL;
14072 if(!g) {
14073 this->strmode |= STRSTATE_Dynamic;
14074 if(len > this->minsize)
14075 this->minsize = len;
14076 this->seekhigh = NULL;
14077 return;
14080 if(len < 0)
14081 len = INT_MAX;
14082 else if(!len)
14083 len = strlen(g);
14085 this->seekhigh = g+len;
14086 basic_streambuf_char_setg(&this->base, g, g, p ? p : this->seekhigh);
14087 if(p)
14088 basic_streambuf_char_setp(&this->base, p, this->seekhigh);
14091 /* ??0strstreambuf@std@@QAE@PACH0@Z */
14092 /* ??0strstreambuf@std@@QEAA@PEAC_J0@Z */
14093 /* ??0strstreambuf@std@@QAE@PADH0@Z */
14094 /* ??0strstreambuf@std@@QEAA@PEAD_J0@Z */
14095 /* ??0strstreambuf@std@@QAE@PAEH0@Z */
14096 /* ??0strstreambuf@std@@QEAA@PEAE_J0@Z */
14097 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
14098 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_get_put, 20)
14099 #else
14100 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_get_put, 16)
14101 #endif
14102 strstreambuf* __thiscall strstreambuf_ctor_get_put(strstreambuf *this, char *g, streamsize len, char *p)
14104 TRACE("(%p %p %s %p)\n", this, g, wine_dbgstr_longlong(len), p);
14106 basic_streambuf_char_ctor(&this->base);
14107 this->base.vtable = &strstreambuf_vtable;
14109 strstreambuf__Init(this, len, g, p, 0);
14110 return this;
14113 /* ??0strstreambuf@std@@QAE@H@Z */
14114 /* ??0strstreambuf@std@@QEAA@_J@Z */
14115 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
14116 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_len, 12)
14117 #else
14118 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_len, 8)
14119 #endif
14120 strstreambuf* __thiscall strstreambuf_ctor_len(strstreambuf *this, streamsize len)
14122 return strstreambuf_ctor_get_put(this, NULL, len, NULL);
14125 /* ??0strstreambuf@std@@QAE@P6APAXI@ZP6AXPAX@Z@Z */
14126 /* ??0strstreambuf@std@@QEAA@P6APEAX_K@ZP6AXPEAX@Z@Z */
14127 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_alloc, 12)
14128 strstreambuf* __thiscall strstreambuf_ctor_alloc(strstreambuf *this,
14129 void* (__cdecl *palloc)(size_t), void (__cdecl *pfree)(void*))
14131 TRACE("(%p %p %p)\n", this, palloc, pfree);
14133 strstreambuf_ctor_get_put(this, NULL, 0, NULL);
14134 this->palloc = palloc;
14135 this->pfree = pfree;
14136 return this;
14139 /* ??0strstreambuf@std@@QAE@PBCH@Z */
14140 /* ??0strstreambuf@std@@QEAA@PEBC_J@Z */
14141 /* ??0strstreambuf@std@@QAE@PBDH@Z */
14142 /* ??0strstreambuf@std@@QEAA@PEBD_J@Z */
14143 /* ??0strstreambuf@std@@QAE@PBEH@Z */
14144 /* ??0strstreambuf@std@@QEAA@PEBE_J@Z */
14145 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
14146 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_get, 16)
14147 #else
14148 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_get, 12)
14149 #endif
14150 strstreambuf* __thiscall strstreambuf_ctor_get(strstreambuf *this, const char *g, streamsize len)
14152 TRACE("(%p %p %s)\n", this, g, wine_dbgstr_longlong(len));
14154 strstreambuf_ctor_get_put(this, (char*)g, len, NULL);
14155 this->strmode |= STRSTATE_Constant;
14156 return this;
14159 /* ??_Fstrstreambuf@std@@QAEXXZ */
14160 /* ??_Fstrstreambuf@std@@QEAAXXZ */
14161 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor, 4)
14162 strstreambuf* __thiscall strstreambuf_ctor(strstreambuf *this)
14164 return strstreambuf_ctor_get_put(this, NULL, 0, NULL);
14167 /* ?_Tidy@strstreambuf@std@@IAEXXZ */
14168 /* ?_Tidy@strstreambuf@std@@IEAAXXZ */
14169 DEFINE_THISCALL_WRAPPER(strstreambuf__Tidy, 4)
14170 void __thiscall strstreambuf__Tidy(strstreambuf *this)
14172 TRACE("(%p)\n", this);
14174 if((this->strmode & STRSTATE_Allocated) && !(this->strmode & STRSTATE_Frozen)) {
14175 if(this->pfree)
14176 this->pfree(basic_streambuf_char_eback(&this->base));
14177 else
14178 operator_delete(basic_streambuf_char_eback(&this->base));
14181 this->endsave = NULL;
14182 this->seekhigh = NULL;
14183 this->strmode &= ~(STRSTATE_Allocated | STRSTATE_Frozen);
14184 basic_streambuf_char_setg(&this->base, NULL, NULL, NULL);
14185 basic_streambuf_char_setp(&this->base, NULL, NULL);
14188 /* ??1strstreambuf@std@@UAE@XZ */
14189 /* ??1strstreambuf@std@@UEAA@XZ */
14190 DEFINE_THISCALL_WRAPPER(strstreambuf_dtor, 4)
14191 void __thiscall strstreambuf_dtor(strstreambuf *this)
14193 TRACE("(%p)\n", this);
14195 strstreambuf__Tidy(this);
14196 basic_streambuf_char_dtor(&this->base);
14199 DEFINE_THISCALL_WRAPPER(strstreambuf_vector_dtor, 8)
14200 strstreambuf* __thiscall strstreambuf_vector_dtor(strstreambuf *this, unsigned int flags)
14202 TRACE("(%p %x)\n", this, flags);
14203 if(flags & 2) {
14204 /* we have an array, with the number of elements stored before the first object */
14205 INT_PTR i, *ptr = (INT_PTR *)this-1;
14207 for(i=*ptr-1; i>=0; i--)
14208 strstreambuf_dtor(this+i);
14209 operator_delete(ptr);
14210 } else {
14211 strstreambuf_dtor(this);
14212 if(flags & 1)
14213 operator_delete(this);
14216 return this;
14219 /* ?freeze@strstreambuf@std@@QAEX_N@Z */
14220 /* ?freeze@strstreambuf@std@@QEAAX_N@Z */
14221 DEFINE_THISCALL_WRAPPER(strstreambuf_freeze, 8)
14222 void __thiscall strstreambuf_freeze(strstreambuf *this, bool freeze)
14224 TRACE("(%p %d)\n", this, freeze);
14226 if(!freeze == !(this->strmode & STRSTATE_Frozen))
14227 return;
14229 if(freeze) {
14230 this->strmode |= STRSTATE_Frozen;
14231 this->endsave = basic_streambuf_char_epptr(&this->base);
14232 basic_streambuf_char_setp_next(&this->base, basic_streambuf_char_pbase(&this->base),
14233 basic_streambuf_char_pptr(&this->base), basic_streambuf_char_eback(&this->base));
14234 }else {
14235 this->strmode &= ~STRSTATE_Frozen;
14236 basic_streambuf_char_setp_next(&this->base, basic_streambuf_char_pbase(&this->base),
14237 basic_streambuf_char_pptr(&this->base), this->endsave);
14241 /* ?str@strstreambuf@std@@QAEPADXZ */
14242 /* ?str@strstreambuf@std@@QEAAPEADXZ */
14243 DEFINE_THISCALL_WRAPPER(strstreambuf_str, 4)
14244 char* __thiscall strstreambuf_str(strstreambuf *this)
14246 TRACE("(%p)\n", this);
14248 strstreambuf_freeze(this, TRUE);
14249 return basic_streambuf_char_gptr(&this->base);
14252 /* ?pcount@strstreambuf@std@@QBEHXZ */
14253 /* ?pcount@strstreambuf@std@@QEBA_JXZ */
14254 DEFINE_THISCALL_WRAPPER(strstreambuf_pcount, 4)
14255 streamsize __thiscall strstreambuf_pcount(const strstreambuf *this)
14257 char *ppos = basic_streambuf_char_pptr(&this->base);
14259 TRACE("(%p)\n", this);
14261 return ppos ? ppos-basic_streambuf_char_pbase(&this->base) : 0;
14264 /* ?overflow@strstreambuf@std@@MAEHH@Z */
14265 /* ?overflow@strstreambuf@std@@MEAAHH@Z */
14266 DEFINE_THISCALL_WRAPPER(strstreambuf_overflow, 8)
14267 int __thiscall strstreambuf_overflow(strstreambuf *this, int c)
14269 size_t old_size, size;
14270 char *ptr, *buf;
14272 TRACE("(%p %d)\n", this, c);
14274 if(c == EOF)
14275 return !EOF;
14277 if(this->strmode & STRSTATE_Frozen)
14278 return EOF;
14280 ptr = basic_streambuf_char_pptr(&this->base);
14281 if(ptr && ptr<basic_streambuf_char_epptr(&this->base))
14282 return (unsigned char)(*basic_streambuf_char__Pninc(&this->base) = c);
14284 if(!(this->strmode & STRSTATE_Dynamic) || (this->strmode & STRSTATE_Constant))
14285 return EOF;
14287 ptr = basic_streambuf_char_eback(&this->base);
14288 old_size = ptr ? basic_streambuf_char_epptr(&this->base) - ptr : 0;
14290 size = old_size + old_size/2;
14291 if(size < this->minsize)
14292 size = this->minsize;
14294 if(this->palloc)
14295 buf = this->palloc(size);
14296 else
14297 buf = operator_new(size);
14298 if(!buf)
14299 return EOF;
14301 memcpy(buf, ptr, old_size);
14302 if(this->strmode & STRSTATE_Allocated) {
14303 if(this->pfree)
14304 this->pfree(ptr);
14305 else
14306 operator_delete(ptr);
14309 this->strmode |= STRSTATE_Allocated;
14310 if(!old_size) {
14311 this->seekhigh = buf;
14312 basic_streambuf_char_setp(&this->base, buf, buf+size);
14313 basic_streambuf_char_setg(&this->base, buf, buf, buf);
14314 }else {
14315 this->seekhigh = this->seekhigh-ptr+buf;
14316 basic_streambuf_char_setp_next(&this->base, basic_streambuf_char_pbase(&this->base)-ptr+buf,
14317 basic_streambuf_char_pptr(&this->base)-ptr+buf, buf+size);
14318 basic_streambuf_char_setg(&this->base, buf, basic_streambuf_char_gptr(&this->base)-ptr+buf,
14319 basic_streambuf_char_pptr(&this->base));
14322 return (unsigned char)(*basic_streambuf_char__Pninc(&this->base) = c);
14325 /* ?pbackfail@strstreambuf@std@@MAEHH@Z */
14326 /* ?pbackfail@strstreambuf@std@@MEAAHH@Z */
14327 DEFINE_THISCALL_WRAPPER(strstreambuf_pbackfail, 8)
14328 int __thiscall strstreambuf_pbackfail(strstreambuf *this, int c)
14330 char *ptr = basic_streambuf_char_gptr(&this->base);
14332 TRACE("(%p %d)\n", this, c);
14334 if(ptr<=basic_streambuf_char_eback(&this->base)
14335 || ((this->strmode & STRSTATE_Constant) && c!=ptr[-1]))
14336 return EOF;
14338 basic_streambuf_char_gbump(&this->base, -1);
14339 if(c == EOF)
14340 return !EOF;
14341 if(this->strmode & STRSTATE_Constant)
14342 return (unsigned char)c;
14344 return (unsigned char)(ptr[0] = c);
14347 /* ?seekoff@strstreambuf@std@@MAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
14348 /* ?seekoff@strstreambuf@std@@MEAA?AV?$fpos@H@2@_JW4seekdir@ios_base@2@H@Z */
14349 /* ?seekoff@strstreambuf@std@@MAE?AV?$fpos@H@2@JHH@Z */
14350 /* ?seekoff@strstreambuf@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
14351 #if STREAMOFF_BITS == 64
14352 DEFINE_THISCALL_WRAPPER(strstreambuf_seekoff, 24)
14353 #else
14354 DEFINE_THISCALL_WRAPPER(strstreambuf_seekoff, 20)
14355 #endif
14356 fpos_mbstatet* __thiscall strstreambuf_seekoff(strstreambuf *this, fpos_mbstatet *ret, streamoff off, int way, int mode)
14358 char *eback = basic_streambuf_char_eback(&this->base);
14359 char *pptr = basic_streambuf_char_pptr(&this->base);
14360 char *gptr = basic_streambuf_char_gptr(&this->base);
14362 TRACE("(%p %p %s %d %d)\n", this, ret, wine_dbgstr_longlong(off), way, mode);
14364 ret->off = 0;
14365 memset(&ret->state, 0, sizeof(ret->state));
14367 if(pptr > this->seekhigh)
14368 this->seekhigh = pptr;
14370 if((mode & OPENMODE_in) && gptr) {
14371 if(way==SEEKDIR_cur && !(mode & OPENMODE_out))
14372 off += gptr-eback;
14373 else if(way == SEEKDIR_end)
14374 off += this->seekhigh-eback;
14375 else if(way != SEEKDIR_beg)
14376 off = -1;
14378 if(off<0 || off>this->seekhigh-eback) {
14379 off = -1;
14380 }else {
14381 basic_streambuf_char_gbump(&this->base, eback-gptr+off);
14382 if((mode & OPENMODE_out) && pptr) {
14383 basic_streambuf_char_setp_next(&this->base, eback,
14384 gptr, basic_streambuf_char_epptr(&this->base));
14387 }else if((mode & OPENMODE_out) && pptr) {
14388 if(way == SEEKDIR_cur)
14389 off += pptr-eback;
14390 else if(way == SEEKDIR_end)
14391 off += this->seekhigh-eback;
14392 else if(way != SEEKDIR_beg)
14393 off = -1;
14395 if(off<0 || off>this->seekhigh-eback)
14396 off = -1;
14397 else
14398 basic_streambuf_char_pbump(&this->base, eback-pptr+off);
14399 }else {
14400 off = -1;
14403 ret->pos = off;
14404 return ret;
14407 /* ?seekpos@strstreambuf@std@@MAE?AV?$fpos@H@2@V32@H@Z */
14408 /* ?seekpos@strstreambuf@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
14409 DEFINE_THISCALL_WRAPPER(strstreambuf_seekpos, 36)
14410 fpos_mbstatet* __thiscall strstreambuf_seekpos(strstreambuf *this, fpos_mbstatet *ret, fpos_mbstatet pos, int mode)
14412 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_mbstatet(&pos), mode);
14414 if(pos.off==-1 && pos.pos==0 && MBSTATET_TO_INT(&pos.state)==0) {
14415 *ret = pos;
14416 return ret;
14419 return strstreambuf_seekoff(this, ret, pos.pos+pos.off, SEEKDIR_beg, mode);
14422 /* ?underflow@strstreambuf@std@@MAEHXZ */
14423 /* ?underflow@strstreambuf@std@@MEAAHXZ */
14424 DEFINE_THISCALL_WRAPPER(strstreambuf_underflow, 4)
14425 int __thiscall strstreambuf_underflow(strstreambuf *this)
14427 char *gptr = basic_streambuf_char_gptr(&this->base);
14428 char *pptr;
14430 TRACE("(%p)\n", this);
14432 if(!gptr)
14433 return EOF;
14435 if(gptr < basic_streambuf_char_egptr(&this->base))
14436 return (unsigned char)(*gptr);
14438 pptr = basic_streambuf_char_gptr(&this->base);
14439 if(pptr > this->seekhigh)
14440 this->seekhigh = pptr;
14442 if(this->seekhigh <= gptr)
14443 return EOF;
14445 basic_streambuf_char_setg(&this->base, basic_streambuf_char_eback(&this->base),
14446 gptr, this->seekhigh);
14447 return (unsigned char)(*gptr);
14450 static inline basic_ios_char* ostrstream_to_basic_ios(ostrstream *ptr)
14452 return (basic_ios_char*)((char*)ptr+ostrstream_vbtable[1]);
14455 static inline ostrstream* ostrstream_from_basic_ios(basic_ios_char *ptr)
14457 return (ostrstream*)((char*)ptr-ostrstream_vbtable[1]);
14460 /* ??0ostrstream@std@@QAE@PADHH@Z */
14461 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
14462 DEFINE_THISCALL_WRAPPER(ostrstream_ctor, 24)
14463 #else
14464 DEFINE_THISCALL_WRAPPER(ostrstream_ctor, 20)
14465 #endif
14466 ostrstream* __thiscall ostrstream_ctor(ostrstream *this, char *buf, streamsize size, int mode, bool virt_init)
14468 basic_ios_char *basic_ios;
14470 TRACE("(%p %p %s %d %d)\n", this, buf, wine_dbgstr_longlong(size), mode, virt_init);
14472 if(virt_init) {
14473 this->base.vbtable = ostrstream_vbtable;
14474 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
14475 INIT_BASIC_IOS_VTORDISP(basic_ios);
14476 basic_ios_char_ctor(basic_ios);
14477 }else {
14478 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
14481 strstreambuf_ctor_get_put(&this->buf, buf, size,
14482 buf && (mode & OPENMODE_app) ? buf+strlen(buf) : buf);
14483 basic_ostream_char_ctor(&this->base, &this->buf.base, FALSE, FALSE);
14484 basic_ios->base.vtable = &ostrstream_vtable;
14485 return this;
14488 /* ??1ostrstream@std@@UAE@XZ */
14489 /* ??1ostrstream@std@@UEAA@XZ */
14490 DEFINE_THISCALL_WRAPPER(ostrstream_dtor, 4)
14491 void __thiscall ostrstream_dtor(basic_ios_char *base)
14493 ostrstream *this = ostrstream_from_basic_ios(base);
14495 TRACE("(%p)\n", this);
14497 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(&this->base));
14498 strstreambuf_dtor(&this->buf);
14501 static void ostrstream_vbase_dtor(ostrstream *this)
14503 basic_ios_char *base = ostrstream_to_basic_ios(this);
14505 TRACE("(%p)\n", this);
14507 ostrstream_dtor(base);
14508 basic_ios_char_dtor(base);
14511 DEFINE_THISCALL_WRAPPER(ostrstream_vector_dtor, 8)
14512 ostrstream* __thiscall ostrstream_vector_dtor(basic_ios_char *base, unsigned int flags)
14514 ostrstream *this = ostrstream_from_basic_ios(base);
14516 TRACE("(%p %x)\n", this, flags);
14518 if(flags & 2) {
14519 /* we have an array, with the number of elements stored before the first object */
14520 INT_PTR i, *ptr = (INT_PTR *)this-1;
14522 for(i=*ptr-1; i>=0; i--)
14523 ostrstream_vbase_dtor(this+i);
14524 operator_delete(ptr);
14525 } else {
14526 ostrstream_vbase_dtor(this);
14527 if(flags & 1)
14528 operator_delete(this);
14531 return this;
14534 static inline istrstream* istrstream_from_basic_ios(basic_ios_char *ptr)
14536 return (istrstream*)((char*)ptr-istrstream_vbtable[1]);
14539 /* ??1istrstream@std@@UAE@XZ */
14540 /* ??1istrstream@std@@UEAA@XZ */
14541 DEFINE_THISCALL_WRAPPER(istrstream_dtor, 4)
14542 void __thiscall istrstream_dtor(basic_ios_char *base)
14544 istrstream *this = istrstream_from_basic_ios(base);
14546 TRACE("(%p)\n", this);
14548 basic_istream_char_dtor(basic_istream_char_to_basic_ios(&this->base));
14549 strstreambuf_dtor(&this->buf);
14552 static inline basic_ios_char* strstream_to_basic_ios(strstream *ptr)
14554 return (basic_ios_char*)((char*)ptr+strstream_vbtable1[1]);
14557 static inline strstream* strstream_from_basic_ios(basic_ios_char *ptr)
14559 return (strstream*)((char*)ptr-strstream_vbtable1[1]);
14562 /* ??$?6MDU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$complex@M@0@@Z */
14563 /* ??$?6MDU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@M@0@@Z */
14564 basic_ostream_char* __cdecl basic_ostream_char_print_complex_float(basic_ostream_char *ostr, const complex_float *val)
14566 struct {
14567 basic_ostringstream_char obj;
14568 basic_ios_char vbase;
14569 } oss;
14570 ios_base *ostringstream_ios_base, *ostream_ios_base;
14571 locale loc;
14572 basic_string_char str;
14573 basic_ostringstream_char_ctor(&oss.obj);
14574 ostringstream_ios_base = &oss.vbase.base;
14575 ostream_ios_base = &basic_ostream_char_get_basic_ios(ostr)->base;
14576 TRACE("(%p %p)\n", ostr, val);
14578 ios_base_imbue(ostringstream_ios_base, &loc, IOS_LOCALE(ostream_ios_base));
14579 locale_dtor(&loc);
14580 ios_base_precision_set(ostringstream_ios_base, ios_base_precision_get(ostream_ios_base));
14581 ios_base_flags_set(ostringstream_ios_base, ios_base_flags_get(ostream_ios_base));
14583 basic_ostream_char_print_ch(&oss.obj.base, '(');
14584 basic_ostream_char_print_float(&oss.obj.base, val->real);
14585 basic_ostream_char_print_ch(&oss.obj.base, ',');
14586 basic_ostream_char_print_float(&oss.obj.base, val->imag);
14587 basic_ostream_char_print_ch(&oss.obj.base, ')');
14589 basic_ostringstream_char_str_get(&oss.obj, &str);
14590 basic_ostringstream_char_dtor(&oss.vbase);
14591 basic_ostream_char_print_bstr(ostr, &str);
14592 MSVCP_basic_string_char_dtor(&str);
14593 return ostr;
14596 /* ??$?6NDU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$complex@N@0@@Z */
14597 /* ??$?6NDU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@N@0@@Z */
14598 basic_ostream_char* __cdecl basic_ostream_char_print_complex_double(basic_ostream_char *ostr, const complex_double *val)
14600 struct {
14601 basic_ostringstream_char obj;
14602 basic_ios_char vbase;
14603 } oss;
14604 ios_base *ostringstream_ios_base, *ostream_ios_base;
14605 locale loc;
14606 basic_string_char str;
14607 basic_ostringstream_char_ctor(&oss.obj);
14608 ostringstream_ios_base = &oss.vbase.base;
14609 ostream_ios_base = &basic_ostream_char_get_basic_ios(ostr)->base;
14610 TRACE("(%p %p)\n", ostr, val);
14612 ios_base_imbue(ostringstream_ios_base, &loc, IOS_LOCALE(ostream_ios_base));
14613 locale_dtor(&loc);
14614 ios_base_precision_set(ostringstream_ios_base, ios_base_precision_get(ostream_ios_base));
14615 ios_base_flags_set(ostringstream_ios_base, ios_base_flags_get(ostream_ios_base));
14617 basic_ostream_char_print_ch(&oss.obj.base, '(');
14618 basic_ostream_char_print_double(&oss.obj.base, val->real);
14619 basic_ostream_char_print_ch(&oss.obj.base, ',');
14620 basic_ostream_char_print_double(&oss.obj.base, val->imag);
14621 basic_ostream_char_print_ch(&oss.obj.base, ')');
14623 basic_ostringstream_char_str_get(&oss.obj, &str);
14624 basic_ostringstream_char_dtor(&oss.vbase);
14625 basic_ostream_char_print_bstr(ostr, &str);
14626 MSVCP_basic_string_char_dtor(&str);
14627 return ostr;
14630 /* ??$?6odu?$char_traits@d@std@@@std@@yaaav?$basic_ostream@du?$char_traits@d@std@@@0@aav10@abv?$complex@o@0@@Z */
14631 /* ??$?6ODU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@O@0@@Z */
14632 basic_ostream_char* __cdecl basic_ostream_char_print_complex_ldouble(basic_ostream_char *ostr, const complex_double *val)
14634 struct {
14635 basic_ostringstream_char obj;
14636 basic_ios_char vbase;
14637 } oss;
14638 ios_base *ostringstream_ios_base, *ostream_ios_base;
14639 locale loc;
14640 basic_string_char str;
14641 basic_ostringstream_char_ctor(&oss.obj);
14642 ostringstream_ios_base = &oss.vbase.base;
14643 ostream_ios_base = &basic_ostream_char_get_basic_ios(ostr)->base;
14644 TRACE("(%p %p)\n", ostr, val);
14646 ios_base_imbue(ostringstream_ios_base, &loc, IOS_LOCALE(ostream_ios_base));
14647 locale_dtor(&loc);
14648 ios_base_precision_set(ostringstream_ios_base, ios_base_precision_get(ostream_ios_base));
14649 ios_base_flags_set(ostringstream_ios_base, ios_base_flags_get(ostream_ios_base));
14651 basic_ostream_char_print_ch(&oss.obj.base, '(');
14652 basic_ostream_char_print_ldouble(&oss.obj.base, val->real);
14653 basic_ostream_char_print_ch(&oss.obj.base, ',');
14654 basic_ostream_char_print_ldouble(&oss.obj.base, val->imag);
14655 basic_ostream_char_print_ch(&oss.obj.base, ')');
14657 basic_ostringstream_char_str_get(&oss.obj, &str);
14658 basic_ostringstream_char_dtor(&oss.vbase);
14659 basic_ostream_char_print_bstr(ostr, &str);
14660 MSVCP_basic_string_char_dtor(&str);
14661 return ostr;
14664 /* ?_File_size@sys@tr2@std@@YA_KPBD@Z */
14665 /* ?_File_size@sys@tr2@std@@YA_KPEBD@Z */
14666 ULONGLONG __cdecl tr2_sys__File_size(char const* path)
14668 WIN32_FILE_ATTRIBUTE_DATA fad;
14670 TRACE("(%s)\n", debugstr_a(path));
14671 if(!GetFileAttributesExA(path, GetFileExInfoStandard, &fad))
14672 return 0;
14674 return ((ULONGLONG)(fad.nFileSizeHigh) << 32) + fad.nFileSizeLow;
14677 static int equivalent_handles(HANDLE h1, HANDLE h2)
14679 int ret;
14680 BY_HANDLE_FILE_INFORMATION info1, info2;
14682 if(h1 == INVALID_HANDLE_VALUE)
14683 return h2 == INVALID_HANDLE_VALUE ? -1 : 0;
14684 else if(h2 == INVALID_HANDLE_VALUE)
14685 return 0;
14687 ret = GetFileInformationByHandle(h1, &info1) && GetFileInformationByHandle(h2, &info2);
14688 if(!ret)
14689 return -1;
14690 return (info1.dwVolumeSerialNumber == info2.dwVolumeSerialNumber
14691 && info1.nFileIndexHigh == info2.nFileIndexHigh
14692 && info1.nFileIndexLow == info2.nFileIndexLow
14696 /* ?_Equivalent@sys@tr2@std@@YAHPBD0@Z */
14697 /* ?_Equivalent@sys@tr2@std@@YAHPEBD0@Z */
14698 int __cdecl tr2_sys__Equivalent(char const* path1, char const* path2)
14700 HANDLE h1, h2;
14701 int ret;
14703 TRACE("(%s %s)\n", debugstr_a(path1), debugstr_a(path2));
14705 h1 = CreateFileA(path1, 0, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
14706 NULL, OPEN_EXISTING, 0, 0);
14707 h2 = CreateFileA(path2, 0, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
14708 NULL, OPEN_EXISTING, 0, 0);
14709 ret = equivalent_handles(h1, h2);
14710 CloseHandle(h1);
14711 CloseHandle(h2);
14712 return ret;
14715 /* ?_Current_get@sys@tr2@std@@YAPADAAY0BAE@D@Z */
14716 /* ?_Current_get@sys@tr2@std@@YAPEADAEAY0BAE@D@Z */
14717 char* __cdecl tr2_sys__Current_get(char *current_path)
14719 TRACE("(%s)\n", debugstr_a(current_path));
14721 if(!GetCurrentDirectoryA(MAX_PATH, current_path))
14722 return NULL;
14723 return current_path;
14726 /* ?_Current_set@sys@tr2@std@@YA_NPBD@Z */
14727 /* ?_Current_set@sys@tr2@std@@YA_NPEBD@Z */
14728 bool __cdecl tr2_sys__Current_set(char const* path)
14730 TRACE("(%s)\n", debugstr_a(path));
14731 return SetCurrentDirectoryA(path) != 0;
14734 /* ?_Make_dir@sys@tr2@std@@YAHPBD@Z */
14735 /* ?_Make_dir@sys@tr2@std@@YAHPEBD@Z */
14736 int __cdecl tr2_sys__Make_dir(char const* path)
14738 TRACE("(%s)\n", debugstr_a(path));
14740 if(!CreateDirectoryA(path, NULL)) {
14741 if(GetLastError() == ERROR_ALREADY_EXISTS)
14742 return 0;
14743 else
14744 return -1;
14747 return 1;
14750 /* ?_Remove_dir@sys@tr2@std@@YA_NPBD@Z */
14751 /* ?_Remove_dir@sys@tr2@std@@YA_NPEBD@Z */
14752 bool __cdecl tr2_sys__Remove_dir(char const* path)
14754 TRACE("(%s)\n", debugstr_a(path));
14755 return RemoveDirectoryA(path) != 0;
14758 /* ?_Copy_file@sys@tr2@std@@YAHPBD0_N@Z */
14759 /* ?_Copy_file@sys@tr2@std@@YAHPEBD0_N@Z */
14760 int __cdecl tr2_sys__Copy_file(char const* source, char const* dest, bool fail_if_exists)
14762 TRACE("(%s %s %x)\n", debugstr_a(source), debugstr_a(dest), fail_if_exists);
14764 if(!source || !dest)
14765 return ERROR_INVALID_PARAMETER;
14767 if(CopyFileA(source, dest, fail_if_exists))
14768 return ERROR_SUCCESS;
14769 return GetLastError();
14772 /* ?_Rename@sys@tr2@std@@YAHPBD0@Z */
14773 /* ?_Rename@sys@tr2@std@@YAHPEBD0@Z */
14774 int __cdecl tr2_sys__Rename(char const* old_path, char const* new_path)
14776 TRACE("(%s %s)\n", debugstr_a(old_path), debugstr_a(new_path));
14778 if(!old_path || !new_path)
14779 return ERROR_INVALID_PARAMETER;
14781 if(MoveFileExA(old_path, new_path, MOVEFILE_COPY_ALLOWED))
14782 return ERROR_SUCCESS;
14783 return GetLastError();
14786 /* ?_Statvfs@sys@tr2@std@@YA?AUspace_info@123@PBD@Z */
14787 /* ?_Statvfs@sys@tr2@std@@YA?AUspace_info@123@PEBD@Z */
14788 struct space_info* __cdecl tr2_sys__Statvfs(struct space_info *ret, const char* path)
14790 ULARGE_INTEGER available, total, free;
14792 TRACE("(%s)\n", debugstr_a(path));
14794 if(!path || !GetDiskFreeSpaceExA(path, &available, &total, &free)) {
14795 ret->capacity = ret->free = ret->available = 0;
14796 }else {
14797 ret->capacity = total.QuadPart;
14798 ret->free = free.QuadPart;
14799 ret->available = available.QuadPart;
14801 return ret;
14804 /* ?_Stat@sys@tr2@std@@YA?AW4file_type@123@PBDAAH@Z */
14805 /* ?_Stat@sys@tr2@std@@YA?AW4file_type@123@PEBDAEAH@Z */
14806 enum file_type __cdecl tr2_sys__Stat(char const* path, int* err_code)
14808 DWORD attr;
14809 TRACE("(%s %p)\n", debugstr_a(path), err_code);
14810 if(!path) {
14811 *err_code = ERROR_INVALID_PARAMETER;
14812 return status_unknown;
14815 attr=GetFileAttributesA(path);
14816 if(attr == INVALID_FILE_ATTRIBUTES) {
14817 enum file_type ret;
14818 switch(GetLastError()) {
14819 case ERROR_FILE_NOT_FOUND:
14820 case ERROR_BAD_NETPATH:
14821 case ERROR_INVALID_NAME:
14822 case ERROR_BAD_PATHNAME:
14823 case ERROR_PATH_NOT_FOUND:
14824 ret = file_not_found;
14825 *err_code = ERROR_SUCCESS;
14826 break;
14827 default:
14828 ret = status_unknown;
14829 *err_code = GetLastError();
14831 return ret;
14834 *err_code = ERROR_SUCCESS;
14835 return (attr & FILE_ATTRIBUTE_DIRECTORY)?directory_file:regular_file;
14838 /* ?_Lstat@sys@tr2@std@@YA?AW4file_type@123@PBDAAH@Z */
14839 /* ?_Lstat@sys@tr2@std@@YA?AW4file_type@123@PEBDAEAH@Z */
14840 enum file_type __cdecl tr2_sys__Lstat(char const* path, int* err_code)
14842 return tr2_sys__Stat(path, err_code);
14845 static __int64 get_last_write_time(HANDLE h)
14847 FILETIME wt;
14848 __int64 ret;
14850 if(!GetFileTime(h, 0, 0, &wt))
14851 return -1;
14853 ret = (((__int64)wt.dwHighDateTime)<< 32) + wt.dwLowDateTime;
14854 ret -= TICKS_1601_TO_1970;
14855 return ret;
14858 /* ?_Last_write_time@sys@tr2@std@@YA_JPBD@Z */
14859 /* ?_Last_write_time@sys@tr2@std@@YA_JPEBD@Z */
14860 __int64 __cdecl tr2_sys__Last_write_time(char const* path)
14862 HANDLE handle;
14863 __int64 ret;
14865 TRACE("(%s)\n", debugstr_a(path));
14867 handle = CreateFileA(path, 0, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
14868 NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
14869 if(handle == INVALID_HANDLE_VALUE)
14870 return 0;
14872 ret = get_last_write_time(handle);
14873 CloseHandle(handle);
14874 return ret / TICKSPERSEC;
14877 /* _Last_write_time */
14878 __int64 __cdecl _Last_write_time(const wchar_t *path)
14880 HANDLE handle;
14881 __int64 ret;
14883 TRACE("(%s)\n", debugstr_w(path));
14885 handle = CreateFileW(path, 0, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
14886 NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
14887 if(handle == INVALID_HANDLE_VALUE)
14888 return -1;
14890 ret = get_last_write_time(handle);
14891 CloseHandle(handle);
14892 return ret;
14895 /* ?_Last_write_time@sys@tr2@std@@YA_JPB_W@Z */
14896 /* ?_Last_write_time@sys@tr2@std@@YA_JPEB_W@Z */
14897 __int64 __cdecl tr2_sys__Last_write_time_wchar(const wchar_t *path)
14899 TRACE("(%s)\n", debugstr_w(path));
14900 return _Last_write_time(path) / TICKSPERSEC;
14903 static int set_last_write_time(HANDLE h, __int64 time)
14905 FILETIME wt;
14907 time += TICKS_1601_TO_1970;
14908 wt.dwLowDateTime = (DWORD)time;
14909 wt.dwHighDateTime = (DWORD)(time >> 32);
14910 return SetFileTime(h, 0, 0, &wt);
14913 /* ?_Last_write_time@sys@tr2@std@@YAXPBD_J@Z */
14914 /* ?_Last_write_time@sys@tr2@std@@YAXPEBD_J@Z */
14915 void __cdecl tr2_sys__Last_write_time_set(char const* path, __int64 newtime)
14917 HANDLE handle;
14919 TRACE("(%s)\n", debugstr_a(path));
14921 handle = CreateFileA(path, FILE_WRITE_ATTRIBUTES,
14922 FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
14923 NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
14924 if(handle == INVALID_HANDLE_VALUE)
14925 return;
14927 /* This is the implementation based on the test of msvcp110.
14928 * According to the test of msvcp120,
14929 * msvcp120's implementation does nothing. Obviously, this is a bug of windows.
14931 set_last_write_time(handle, newtime * TICKSPERSEC);
14932 CloseHandle(handle);
14935 /* _Set_last_write_time */
14936 int __cdecl _Set_last_write_time(const wchar_t *path, __int64 time)
14938 HANDLE handle;
14939 int ret;
14941 TRACE("(%s)\n", debugstr_w(path));
14943 handle = CreateFileW(path, FILE_WRITE_ATTRIBUTES,
14944 FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
14945 NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
14946 if(handle == INVALID_HANDLE_VALUE)
14947 return 0;
14949 ret = set_last_write_time(handle, time);
14950 CloseHandle(handle);
14951 return ret;
14954 /* ?_Last_write_time@sys@tr2@std@@YAXPB_W_J@Z */
14955 /* ?_Last_write_time@sys@tr2@std@@YAXPEB_W_J@Z */
14956 void __cdecl tr2_sys__Last_write_time_set_wchar(const wchar_t *path, __int64 time)
14958 TRACE("(%s)\n", debugstr_w(path));
14959 _Set_last_write_time(path, time * TICKSPERSEC);
14962 /* ??_Open_dir@sys@tr2@std@@YAPAXPA_WPB_WAAHAAW4file_type@123@@Z */
14963 /* ??_Open_dir@sys@tr2@std@@YAPEAXPEA_WPEB_WAEAHAEAW4file_type@123@@Z */
14964 void* __cdecl tr2_sys__Open_dir_wchar(wchar_t* target, wchar_t const* dest, int* err_code, enum file_type* type)
14966 HANDLE handle;
14967 WIN32_FIND_DATAW data;
14968 wchar_t temppath[MAX_PATH];
14970 TRACE("(%p %s %p %p)\n", target, debugstr_w(dest), err_code, type);
14971 if(wcslen(dest) > MAX_PATH - 3) {
14972 *err_code = ERROR_BAD_PATHNAME;
14973 *target = '\0';
14974 return NULL;
14976 wcscpy(temppath, dest);
14977 wcscat(temppath, L"\\*");
14979 handle = FindFirstFileW(temppath, &data);
14980 if(handle == INVALID_HANDLE_VALUE) {
14981 *err_code = ERROR_BAD_PATHNAME;
14982 *target = '\0';
14983 return NULL;
14985 while(!wcscmp(data.cFileName, L".") || !wcscmp(data.cFileName, L"..")) {
14986 if(!FindNextFileW(handle, &data)) {
14987 *err_code = ERROR_SUCCESS;
14988 *type = status_unknown;
14989 *target = '\0';
14990 FindClose(handle);
14991 return NULL;
14995 wcscpy(target, data.cFileName);
14996 *err_code = ERROR_SUCCESS;
14997 if(data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
14998 *type = directory_file;
14999 else
15000 *type = regular_file;
15001 return handle;
15004 /* ?_Open_dir@sys@tr2@std@@YAPAXAAY0BAE@DPBDAAHAAW4file_type@123@@Z */
15005 /* ?_Open_dir@sys@tr2@std@@YAPEAXAEAY0BAE@DPEBDAEAHAEAW4file_type@123@@Z */
15006 void* __cdecl tr2_sys__Open_dir(char* target, char const* dest, int* err_code, enum file_type* type)
15008 void *handle;
15009 wchar_t target_w[MAX_PATH];
15010 wchar_t dest_w[MAX_PATH];
15012 TRACE("(%p %s %p %p)\n", target, debugstr_a(dest), err_code, type);
15014 if (dest && !MultiByteToWideChar(CP_ACP, 0, dest, -1, dest_w, MAX_PATH))
15016 WARN("Failed to convert input string.\n");
15017 *err_code = ERROR_BAD_PATHNAME;
15018 return NULL;
15021 handle = tr2_sys__Open_dir_wchar(target_w, dest ? dest_w : NULL, err_code, type);
15023 WideCharToMultiByte(CP_ACP, 0, target_w, -1, target, MAX_PATH, NULL, NULL);
15025 return handle;
15028 /* ??_Read_dir@sys@tr2@std@@YAPA_WPA_WPAXAAW4file_type@123@@Z */
15029 /* ??_Read_dir@sys@tr2@std@@YAPEA_WPEA_WPEAXAEAW4file_type@123@@Z */
15030 wchar_t* __cdecl tr2_sys__Read_dir_wchar(wchar_t* target, void* handle, enum file_type* type)
15032 WIN32_FIND_DATAW data;
15034 TRACE("(%p %p %p)\n", target, handle, type);
15036 do {
15037 if(!FindNextFileW(handle, &data)) {
15038 *type = status_unknown;
15039 *target = '\0';
15040 return target;
15042 } while(!wcscmp(data.cFileName, L".") || !wcscmp(data.cFileName, L".."));
15044 wcscpy(target, data.cFileName);
15045 if(data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
15046 *type = directory_file;
15047 else
15048 *type = regular_file;
15049 return target;
15052 /* ?_Read_dir@sys@tr2@std@@YAPADAAY0BAE@DPAXAAW4file_type@123@@Z */
15053 /* ?_Read_dir@sys@tr2@std@@YAPEADAEAY0BAE@DPEAXAEAW4file_type@123@@Z */
15054 char* __cdecl tr2_sys__Read_dir(char* target, void* handle, enum file_type* type)
15056 wchar_t target_w[MAX_PATH];
15058 tr2_sys__Read_dir_wchar(target_w, handle, type);
15059 WideCharToMultiByte(CP_ACP, 0, target_w, -1, target, MAX_PATH, NULL, NULL);
15061 return target;
15064 /* ?_Close_dir@sys@tr2@std@@YAXPAX@Z */
15065 /* ?_Close_dir@sys@tr2@std@@YAXPEAX@Z */
15066 void __cdecl tr2_sys__Close_dir(void* handle)
15068 TRACE("(%p)\n", handle);
15070 FindClose(handle);
15073 /* ?_Link@sys@tr2@std@@YAHPBD0@Z */
15074 /* ?_Link@sys@tr2@std@@YAHPEBD0@Z */
15075 int __cdecl tr2_sys__Link(char const* existing_path, char const* new_path)
15077 TRACE("(%s %s)\n", debugstr_a(existing_path), debugstr_a(new_path));
15078 if(!existing_path || !new_path)
15079 return ERROR_INVALID_PARAMETER;
15081 if(CreateHardLinkA(new_path, existing_path, NULL))
15082 return ERROR_SUCCESS;
15083 return GetLastError();
15086 /* ?_Link@sys@tr2@std@@YAHPB_W0@Z */
15087 /* ?_Link@sys@tr2@std@@YAHPEB_W0@Z */
15088 /* _Link */
15089 int __cdecl tr2_sys__Link_wchar(WCHAR const* existing_path, WCHAR const* new_path)
15091 TRACE("(%s %s)\n", debugstr_w(existing_path), debugstr_w(new_path));
15092 if(!existing_path || !new_path)
15093 return ERROR_INVALID_PARAMETER;
15095 if(CreateHardLinkW(new_path, existing_path, NULL))
15096 return ERROR_SUCCESS;
15097 return GetLastError();
15100 /* ?_Symlink@sys@tr2@std@@YAHPBD0@Z */
15101 /* ?_Symlink@sys@tr2@std@@YAHPEBD0@Z */
15102 int __cdecl tr2_sys__Symlink(char const* existing_file_name, char const* file_name)
15104 TRACE("(%s %s)\n", debugstr_a(existing_file_name), debugstr_a(file_name));
15105 if(!existing_file_name || !file_name)
15106 return ERROR_INVALID_PARAMETER;
15108 if(CreateSymbolicLinkA(file_name, existing_file_name, 0))
15109 return ERROR_SUCCESS;
15110 return GetLastError();
15113 /* ?_Symlink@sys@tr2@std@@YAHPB_W0@Z */
15114 /* ?_Symlink@sys@tr2@std@@YAHPEB_W0@Z */
15115 /* _Symlink */
15116 int __cdecl tr2_sys__Symlink_wchar(WCHAR const* existing_file_name, WCHAR const* file_name)
15118 TRACE("(%s %s)\n", debugstr_w(existing_file_name), debugstr_w(file_name));
15119 if(!existing_file_name || !file_name)
15120 return ERROR_INVALID_PARAMETER;
15122 if(CreateSymbolicLinkW(file_name, existing_file_name, 0))
15123 return ERROR_SUCCESS;
15124 return GetLastError();
15127 /* ?_Unlink@sys@tr2@std@@YAHPBD@Z */
15128 /* ?_Unlink@sys@tr2@std@@YAHPEBD@Z */
15129 int __cdecl tr2_sys__Unlink(char const* path)
15131 TRACE("(%s)\n", debugstr_a(path));
15133 if(DeleteFileA(path))
15134 return ERROR_SUCCESS;
15135 return GetLastError();
15138 /* ?_Unlink@sys@tr2@std@@YAHPB_W@Z */
15139 /* ?_Unlink@sys@tr2@std@@YAHPEB_W@Z */
15140 /* _Unlink */
15141 int __cdecl tr2_sys__Unlink_wchar(WCHAR const* path)
15143 TRACE("(%s)\n", debugstr_w(path));
15145 if(DeleteFileW(path))
15146 return ERROR_SUCCESS;
15147 return GetLastError();
15150 /* ??0strstream@std@@QAE@PADHH@Z */
15151 /* ??0strstream@std@@QEAA@PEAD_JH@Z */
15152 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
15153 DEFINE_THISCALL_WRAPPER(strstream_ctor, 24)
15154 #else
15155 DEFINE_THISCALL_WRAPPER(strstream_ctor, 20)
15156 #endif
15157 strstream* __thiscall strstream_ctor(strstream *this, char *buf, streamsize size, int mode, bool virt_init)
15159 basic_ios_char *basic_ios;
15161 TRACE("(%p %p %s %d %d)\n", this, buf, wine_dbgstr_longlong(size), mode, virt_init);
15163 if(virt_init) {
15164 this->base.base1.vbtable = strstream_vbtable1;
15165 this->base.base2.vbtable = strstream_vbtable2;
15166 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
15167 INIT_BASIC_IOS_VTORDISP(basic_ios);
15168 basic_ios_char_ctor(basic_ios);
15169 }else {
15170 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
15173 strstreambuf_ctor_get_put(&this->buf, buf, size,
15174 buf && (mode & OPENMODE_app) ? buf+strlen(buf) : buf);
15175 basic_iostream_char_ctor(&this->base, &this->buf.base, FALSE);
15176 basic_ios->base.vtable = &strstream_vtable;
15177 return this;
15180 /* ??1strstream@std@@UAE@XZ */
15181 /* ??1strstream@std@@UEAA@XZ */
15182 DEFINE_THISCALL_WRAPPER(strstream_dtor, 4)
15183 void __thiscall strstream_dtor(basic_ios_char *base)
15185 strstream *this = strstream_from_basic_ios(base);
15187 TRACE("(%p)\n", this);
15189 basic_iostream_char_dtor(basic_iostream_char_to_basic_ios(&this->base));
15190 strstreambuf_dtor(&this->buf);
15193 static void strstream_vbase_dtor(strstream *this)
15195 basic_ios_char *base = strstream_to_basic_ios(this);
15197 TRACE("(%p)\n", this);
15199 strstream_dtor(base);
15200 basic_ios_char_dtor(base);
15203 DEFINE_THISCALL_WRAPPER(strstream_vector_dtor, 8)
15204 strstream* __thiscall strstream_vector_dtor(basic_ios_char *base, unsigned int flags)
15206 strstream *this = strstream_from_basic_ios(base);
15208 TRACE("(%p %x)\n", this, flags);
15210 if(flags & 2) {
15211 /* we have an array, with the number of elements stored before the first object */
15212 INT_PTR i, *ptr = (INT_PTR *)this-1;
15214 for(i=*ptr-1; i>=0; i--)
15215 strstream_vbase_dtor(this+i);
15216 operator_delete(ptr);
15217 } else {
15218 strstream_vbase_dtor(this);
15219 if(flags & 1)
15220 operator_delete(this);
15223 return this;
15226 static void __cdecl setprecision_func(ios_base *base, streamsize prec)
15228 ios_base_precision_set(base, prec);
15231 /* ?setprecision@std@@YA?AU?$_Smanip@H@1@H@Z */
15232 /* ?setprecision@std@@YA?AU?$_Smanip@_J@1@_J@Z */
15233 manip_streamsize* __cdecl setprecision(manip_streamsize *ret, streamsize prec)
15235 TRACE("(%p %s)\n", ret, wine_dbgstr_longlong(prec));
15237 ret->pfunc = setprecision_func;
15238 ret->arg = prec;
15239 return ret;
15242 static void __cdecl setw_func(ios_base *base, streamsize width)
15244 ios_base_width_set(base, width);
15247 /* ?setw@std@@YA?AU?$_Smanip@H@1@H@Z */
15248 /* ?setw@std@@YA?AU?$_Smanip@_J@1@_J@Z */
15249 manip_streamsize* __cdecl setw(manip_streamsize *ret, streamsize width)
15251 TRACE("(%p %s)\n", ret, wine_dbgstr_longlong(width));
15253 ret->pfunc = setw_func;
15254 ret->arg = width;
15255 return ret;
15258 static void __cdecl resetioflags_func(ios_base *base, int mask)
15260 ios_base_setf_mask(base, 0, mask);
15263 /* ?resetiosflags@std@@YA?AU?$_Smanip@H@1@H@Z */
15264 manip_int* __cdecl resetiosflags(manip_int *ret, int mask)
15266 TRACE("(%p %d)\n", ret, mask);
15268 ret->pfunc = resetioflags_func;
15269 ret->arg = mask;
15270 return ret;
15273 static void __cdecl setiosflags_func(ios_base *base, int mask)
15275 ios_base_setf_mask(base, FMTFLAG_mask, mask);
15278 /* ?setiosflags@std@@YA?AU?$_Smanip@H@1@H@Z */
15279 manip_int* __cdecl setiosflags(manip_int *ret, int mask)
15281 TRACE("(%p %d)\n", ret, mask);
15283 ret->pfunc = setiosflags_func;
15284 ret->arg = mask;
15285 return ret;
15288 static void __cdecl setbase_func(ios_base *base, int set_base)
15290 if(set_base == 10)
15291 set_base = FMTFLAG_dec;
15292 else if(set_base == 8)
15293 set_base = FMTFLAG_oct;
15294 else if(set_base == 16)
15295 set_base = FMTFLAG_hex;
15296 else
15297 set_base = 0;
15299 ios_base_setf_mask(base, set_base, FMTFLAG_basefield);
15302 /* ?setbase@std@@YA?AU?$_Smanip@H@1@H@Z */
15303 manip_int* __cdecl setbase(manip_int *ret, int base)
15305 TRACE("(%p %d)\n", ret, base);
15307 ret->pfunc = setbase_func;
15308 ret->arg = base;
15309 return ret;
15312 static basic_filebuf_char filebuf_char_stdin;
15313 /* ?cin@std@@3V?$basic_istream@DU?$char_traits@D@std@@@1@A */
15314 struct {
15315 basic_istream_char obj;
15316 #if _MSVCP_VER >= 110
15317 int vtordisp;
15318 #endif
15319 basic_ios_char vbase;
15320 } cin = { { 0 } };
15321 C_ASSERT(sizeof(cin) == VBTABLE_BASIC_IOS_ENTRY(basic_istream_char, 0)+sizeof(basic_ios_char));
15322 /* ?_Ptr_cin@std@@3PAV?$basic_istream@DU?$char_traits@D@std@@@1@A */
15323 /* ?_Ptr_cin@std@@3PEAV?$basic_istream@DU?$char_traits@D@std@@@1@EA */
15324 basic_istream_char *_Ptr_cin = &cin.obj;
15326 static basic_filebuf_wchar filebuf_short_stdin;
15327 /* ?wcin@std@@3V?$basic_istream@GU?$char_traits@G@std@@@1@A */
15328 struct {
15329 basic_istream_wchar obj;
15330 #if _MSVCP_VER >= 110
15331 int vtordisp;
15332 #endif
15333 basic_ios_wchar vbase;
15334 } ucin = { { 0 } };
15335 C_ASSERT(sizeof(ucin) == VBTABLE_BASIC_IOS_ENTRY(basic_istream_wchar, 0)+sizeof(basic_ios_wchar));
15336 /* ?_Ptr_wcin@std@@3PAV?$basic_istream@GU?$char_traits@G@std@@@1@A */
15337 /* ?_Ptr_wcin@std@@3PEAV?$basic_istream@GU?$char_traits@G@std@@@1@EA */
15338 basic_istream_wchar *_Ptr_ucin = &ucin.obj;
15340 static basic_filebuf_wchar filebuf_wchar_stdin;
15341 /* ?wcin@std@@3V?$basic_istream@_WU?$char_traits@_W@std@@@1@A */
15342 struct {
15343 basic_istream_wchar obj;
15344 #if _MSVCP_VER >= 110
15345 int vtordisp;
15346 #endif
15347 basic_ios_wchar vbase;
15348 } wcin = { { 0 } };
15349 C_ASSERT(sizeof(wcin) == VBTABLE_BASIC_IOS_ENTRY(basic_istream_wchar, 0)+sizeof(basic_ios_wchar));
15350 /* ?_Ptr_wcin@std@@3PAV?$basic_istream@_WU?$char_traits@_W@std@@@1@A */
15351 /* ?_Ptr_wcin@std@@3PEAV?$basic_istream@_WU?$char_traits@_W@std@@@1@EA */
15352 basic_istream_wchar *_Ptr_wcin = &wcin.obj;
15354 static basic_filebuf_char filebuf_char_stdout;
15355 /* ?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A */
15356 struct {
15357 basic_ostream_char obj;
15358 #if _MSVCP_VER >= 110
15359 int vtordisp;
15360 #endif
15361 basic_ios_char vbase;
15362 } cout = { { 0 } };
15363 C_ASSERT(sizeof(cout) == VBTABLE_BASIC_IOS_ENTRY(basic_ostream_char, 0)+sizeof(basic_ios_char));
15364 /* ?_Ptr_cout@std@@3PAV?$basic_ostream@DU?$char_traits@D@std@@@1@A */
15365 /* ?_Ptr_cout@std@@3PEAV?$basic_ostream@DU?$char_traits@D@std@@@1@EA */
15366 basic_ostream_char *_Ptr_cout = &cout.obj;
15368 static basic_filebuf_wchar filebuf_short_stdout;
15369 /* ?wcout@std@@3V?$basic_ostream@GU?$char_traits@G@std@@@1@A */
15370 struct {
15371 basic_ostream_wchar obj;
15372 #if _MSVCP_VER >= 110
15373 int vtordisp;
15374 #endif
15375 basic_ios_wchar vbase;
15376 } ucout = { { 0 } };
15377 C_ASSERT(sizeof(ucout) == VBTABLE_BASIC_IOS_ENTRY(basic_ostream_wchar, 0)+sizeof(basic_ios_wchar));
15378 /* ?_Ptr_wcout@std@@3PAV?$basic_ostream@GU?$char_traits@G@std@@@1@A */
15379 /* ?_Ptr_wcout@std@@3PEAV?$basic_ostream@GU?$char_traits@G@std@@@1@EA */
15380 basic_ostream_wchar *_Ptr_ucout = &ucout.obj;
15382 static basic_filebuf_wchar filebuf_wchar_stdout;
15383 /* ?wcout@std@@3V?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
15384 struct {
15385 basic_ostream_wchar obj;
15386 #if _MSVCP_VER >= 110
15387 int vtordisp;
15388 #endif
15389 basic_ios_wchar vbase;
15390 } wcout = { { 0 } };
15391 C_ASSERT(sizeof(wcout) == VBTABLE_BASIC_IOS_ENTRY(basic_ostream_wchar, 0)+sizeof(basic_ios_wchar));
15392 /* ?_Ptr_wcout@std@@3PAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
15393 /* ?_Ptr_wcout@std@@3PEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@EA */
15394 basic_ostream_wchar *_Ptr_wcout = &wcout.obj;
15396 static basic_filebuf_char filebuf_char_stderr;
15397 /* ?cerr@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A */
15398 struct {
15399 basic_ostream_char obj;
15400 #if _MSVCP_VER >= 110
15401 int vtordisp;
15402 #endif
15403 basic_ios_char vbase;
15404 } cerr = { { 0 } };
15405 C_ASSERT(sizeof(cerr) == VBTABLE_BASIC_IOS_ENTRY(basic_ostream_char, 0)+sizeof(basic_ios_char));
15406 /* ?_Ptr_cerr@std@@3PAV?$basic_ostream@DU?$char_traits@D@std@@@1@A */
15407 /* ?_Ptr_cerr@std@@3PEAV?$basic_ostream@DU?$char_traits@D@std@@@1@EA */
15408 basic_ostream_char *_Ptr_cerr = &cerr.obj;
15410 static basic_filebuf_wchar filebuf_short_stderr;
15411 /* ?wcerr@std@@3V?$basic_ostream@GU?$char_traits@G@std@@@1@A */
15412 struct {
15413 basic_ostream_wchar obj;
15414 #if _MSVCP_VER >= 110
15415 int vtordisp;
15416 #endif
15417 basic_ios_wchar vbase;
15418 } ucerr = { { 0 } };
15419 C_ASSERT(sizeof(ucerr) == VBTABLE_BASIC_IOS_ENTRY(basic_ostream_wchar, 0)+sizeof(basic_ios_wchar));
15420 /* ?_Ptr_wcerr@std@@3PAV?$basic_ostream@GU?$char_traits@G@std@@@1@A */
15421 /* ?_Ptr_wcerr@std@@3PEAV?$basic_ostream@GU?$char_traits@G@std@@@1@EA */
15422 basic_ostream_wchar *_Ptr_ucerr = &ucerr.obj;
15424 static basic_filebuf_wchar filebuf_wchar_stderr;
15425 /* ?wcerr@std@@3V?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
15426 struct {
15427 basic_ostream_wchar obj;
15428 #if _MSVCP_VER >= 110
15429 int vtordisp;
15430 #endif
15431 basic_ios_wchar vbase;
15432 } wcerr = { { 0 } };
15433 C_ASSERT(sizeof(wcerr) == VBTABLE_BASIC_IOS_ENTRY(basic_ostream_wchar, 0)+sizeof(basic_ios_wchar));
15434 /* ?_Ptr_wcerr@std@@3PAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
15435 /* ?_Ptr_wcerr@std@@3PEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@EA */
15436 basic_ostream_wchar *_Ptr_wcerr = &wcerr.obj;
15438 static basic_filebuf_char filebuf_char_log;
15439 /* ?clog@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A */
15440 struct {
15441 basic_ostream_char obj;
15442 #if _MSVCP_VER >= 110
15443 int vtordisp;
15444 #endif
15445 basic_ios_char vbase;
15446 } MSVCP_clog = { { 0 } };
15447 C_ASSERT(sizeof(MSVCP_clog) == VBTABLE_BASIC_IOS_ENTRY(basic_ostream_char, 0)+sizeof(basic_ios_char));
15448 /* ?_Ptr_clog@std@@3PAV?$basic_ostream@DU?$char_traits@D@std@@@1@A */
15449 /* ?_Ptr_clog@std@@3PEAV?$basic_ostream@DU?$char_traits@D@std@@@1@EA */
15450 basic_ostream_char *_Ptr_clog = &MSVCP_clog.obj;
15452 static basic_filebuf_wchar filebuf_short_log;
15453 /* ?wclog@std@@3V?$basic_ostream@GU?$char_traits@G@std@@@1@A */
15454 struct {
15455 basic_ostream_wchar obj;
15456 #if _MSVCP_VER >= 110
15457 int vtordisp;
15458 #endif
15459 basic_ios_wchar vbase;
15460 } uclog = { { 0 } };
15461 C_ASSERT(sizeof(uclog) == VBTABLE_BASIC_IOS_ENTRY(basic_ostream_wchar, 0)+sizeof(basic_ios_wchar));
15462 /* ?_Ptr_wclog@std@@3PAV?$basic_ostream@GU?$char_traits@G@std@@@1@A */
15463 /* ?_Ptr_wclog@std@@3PEAV?$basic_ostream@GU?$char_traits@G@std@@@1@EA */
15464 basic_ostream_wchar *_Ptr_uclog = &uclog.obj;
15466 static basic_filebuf_wchar filebuf_wchar_log;
15467 /* ?wclog@std@@3V?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
15468 struct {
15469 basic_ostream_wchar obj;
15470 #if _MSVCP_VER >= 110
15471 int vtordisp;
15472 #endif
15473 basic_ios_wchar vbase;
15474 } wclog = { { 0 } };
15475 C_ASSERT(sizeof(wclog) == VBTABLE_BASIC_IOS_ENTRY(basic_ostream_wchar, 0)+sizeof(basic_ios_wchar));
15476 /* ?_Ptr_wclog@std@@3PAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
15477 /* ?_Ptr_wclog@std@@3PEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@EA */
15478 basic_ostream_wchar *_Ptr_wclog = &wclog.obj;
15480 /* ?_Init_cnt@Init@ios_base@std@@0HA */
15481 int ios_base_Init__Init_cnt = -1;
15483 /* ?_Init_cnt_func@Init@ios_base@std@@CAAAHXZ */
15484 /* ?_Init_cnt_func@Init@ios_base@std@@CAAEAHXZ */
15485 int* __cdecl ios_base_Init__Init_cnt_func(void)
15487 return &ios_base_Init__Init_cnt;
15490 /* ?_Init_ctor@Init@ios_base@std@@CAXPAV123@@Z */
15491 /* ?_Init_ctor@Init@ios_base@std@@CAXPEAV123@@Z */
15492 void __cdecl ios_base_Init__Init_ctor(void *this)
15494 TRACE("(%p)\n", this);
15496 if(ios_base_Init__Init_cnt < 0)
15497 ios_base_Init__Init_cnt = 1;
15498 else
15499 ios_base_Init__Init_cnt++;
15502 /* ??0Init@ios_base@std@@QAE@XZ */
15503 /* ??0Init@ios_base@std@@QEAA@XZ */
15504 DEFINE_THISCALL_WRAPPER(ios_base_Init_ctor, 4)
15505 void* __thiscall ios_base_Init_ctor(void *this)
15507 ios_base_Init__Init_ctor(this);
15508 return this;
15511 /* ?_Init_dtor@Init@ios_base@std@@CAXPAV123@@Z */
15512 /* ?_Init_dtor@Init@ios_base@std@@CAXPEAV123@@Z */
15513 void __cdecl ios_base_Init__Init_dtor(void *this)
15515 TRACE("(%p)\n", this);
15517 ios_base_Init__Init_cnt--;
15518 if(!ios_base_Init__Init_cnt) {
15519 basic_ostream_char_flush(&cout.obj);
15520 basic_ostream_char_flush(&cerr.obj);
15521 basic_ostream_char_flush(&MSVCP_clog.obj);
15525 /* ??1Init@ios_base@std@@QAE@XZ */
15526 /* ??1Init@ios_base@std@@QEAA@XZ */
15527 DEFINE_THISCALL_WRAPPER(ios_base_Init_dtor, 4)
15528 void __thiscall ios_base_Init_dtor(void *this)
15530 ios_base_Init__Init_dtor(this);
15533 /* ??4Init@ios_base@std@@QAEAAV012@ABV012@@Z */
15534 /* ??4Init@ios_base@std@@QEAAAEAV012@AEBV012@@Z */
15535 DEFINE_THISCALL_WRAPPER(ios_base_Init_op_assign, 8)
15536 void* __thiscall ios_base_Init_op_assign(void *this, void *rhs)
15538 TRACE("(%p %p)\n", this, rhs);
15539 return this;
15542 /* ?_Init_cnt@_Winit@std@@0HA */
15543 int _Winit__Init_cnt = -1;
15545 /* ??0_Winit@std@@QAE@XZ */
15546 /* ??0_Winit@std@@QEAA@XZ */
15547 DEFINE_THISCALL_WRAPPER(_Winit_ctor, 4)
15548 void* __thiscall _Winit_ctor(void *this)
15550 TRACE("(%p)\n", this);
15552 if(_Winit__Init_cnt < 0)
15553 _Winit__Init_cnt = 1;
15554 else
15555 _Winit__Init_cnt++;
15557 return this;
15560 /* ?_File_size@sys@tr2@std@@YA_KPB_W@Z */
15561 /* ?_File_size@sys@tr2@std@@YA_KPEB_W@Z */
15562 ULONGLONG __cdecl tr2_sys__File_size_wchar(WCHAR const* path)
15564 WIN32_FILE_ATTRIBUTE_DATA fad;
15566 TRACE("(%s)\n", debugstr_w(path));
15567 if(!GetFileAttributesExW(path, GetFileExInfoStandard, &fad))
15568 return 0;
15570 return ((ULONGLONG)(fad.nFileSizeHigh) << 32) + fad.nFileSizeLow;
15573 /* _File_size, msvcp140 version. Different error handling. */
15574 ULONGLONG __cdecl _File_size(WCHAR const* path)
15576 WIN32_FILE_ATTRIBUTE_DATA fad;
15578 TRACE("(%s)\n", debugstr_w(path));
15579 if(!GetFileAttributesExW(path, GetFileExInfoStandard, &fad))
15580 return ~(ULONGLONG)0;
15582 return ((ULONGLONG)(fad.nFileSizeHigh) << 32) + fad.nFileSizeLow;
15585 int __cdecl _Resize(const WCHAR *path, UINT64 size)
15587 LARGE_INTEGER offset;
15588 HANDLE file;
15589 BOOL ret;
15591 TRACE("(%s %s)\n", debugstr_w(path), wine_dbgstr_longlong(size));
15593 file = CreateFileW(path, FILE_GENERIC_WRITE, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
15594 NULL, OPEN_EXISTING, 0, 0);
15595 if(file == INVALID_HANDLE_VALUE)
15596 return GetLastError();
15598 offset.QuadPart = size;
15599 if((ret = SetFilePointerEx(file, offset, NULL, FILE_BEGIN)))
15600 ret = SetEndOfFile(file);
15601 CloseHandle(file);
15602 return ret ? 0 : GetLastError();
15605 /* ?_Equivalent@sys@tr2@std@@YAHPB_W0@Z */
15606 /* ?_Equivalent@sys@tr2@std@@YAHPEB_W0@Z */
15607 int __cdecl tr2_sys__Equivalent_wchar(WCHAR const* path1, WCHAR const* path2)
15609 HANDLE h1, h2;
15610 int ret;
15612 TRACE("(%s %s)\n", debugstr_w(path1), debugstr_w(path2));
15614 h1 = CreateFileW(path1, 0, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
15615 NULL, OPEN_EXISTING, 0, 0);
15616 h2 = CreateFileW(path2, 0, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
15617 NULL, OPEN_EXISTING, 0, 0);
15618 ret = equivalent_handles(h1, h2);
15619 CloseHandle(h1);
15620 CloseHandle(h2);
15621 return ret;
15624 /* _Equivalent, msvcp140 version */
15625 int __cdecl _Equivalent(WCHAR const* path1, WCHAR const* path2)
15627 HANDLE h1, h2;
15628 int ret;
15630 TRACE("(%s %s)\n", debugstr_w(path1), debugstr_w(path2));
15632 h1 = CreateFileW(path1, 0, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
15633 NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
15634 h2 = CreateFileW(path2, 0, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
15635 NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
15636 ret = equivalent_handles(h1, h2);
15637 CloseHandle(h1);
15638 CloseHandle(h2);
15639 return ret;
15642 /* ?_Current_get@sys@tr2@std@@YAPA_WAAY0BAE@_W@Z */
15643 /* ?_Current_get@sys@tr2@std@@YAPEA_WAEAY0BAE@_W@Z */
15644 WCHAR* __cdecl tr2_sys__Current_get_wchar(WCHAR *current_path)
15646 TRACE("(%s)\n", debugstr_w(current_path));
15648 if(!GetCurrentDirectoryW(MAX_PATH, current_path))
15649 return NULL;
15650 return current_path;
15653 /* _Current_get, msvcp140 version */
15654 BOOL __cdecl _Current_get(WCHAR *current_path)
15656 TRACE("(%s)\n", debugstr_w(current_path));
15658 if(!GetCurrentDirectoryW(MAX_PATH, current_path))
15659 return FALSE;
15660 return TRUE;
15663 /* ?_Current_set@sys@tr2@std@@YA_NPB_W@Z */
15664 /* ?_Current_set@sys@tr2@std@@YA_NPEB_W@Z */
15665 bool __cdecl tr2_sys__Current_set_wchar(WCHAR const* path)
15667 TRACE("(%s)\n", debugstr_w(path));
15668 return SetCurrentDirectoryW(path) != 0;
15671 /* ?_Make_dir@sys@tr2@std@@YAHPB_W@Z */
15672 /* ?_Make_dir@sys@tr2@std@@YAHPEB_W@Z */
15673 int __cdecl tr2_sys__Make_dir_wchar(WCHAR const* path)
15675 TRACE("(%s)\n", debugstr_w(path));
15677 if(!CreateDirectoryW(path, NULL)) {
15678 if(GetLastError() == ERROR_ALREADY_EXISTS)
15679 return 0;
15680 else
15681 return -1;
15684 return 1;
15687 /* ?_Remove_dir@sys@tr2@std@@YA_NPB_W@Z */
15688 /* ?_Remove_dir@sys@tr2@std@@YA_NPEB_W@Z */
15689 bool __cdecl tr2_sys__Remove_dir_wchar(WCHAR const* path)
15691 TRACE("(%s)\n", debugstr_w(path));
15692 return RemoveDirectoryW(path) != 0;
15695 /* ?_Copy_file@sys@tr2@std@@YAHPB_W0_N@Z */
15696 /* ?_Copy_file@sys@tr2@std@@YAHPEB_W0_N@Z */
15697 int __cdecl tr2_sys__Copy_file_wchar(WCHAR const* source, WCHAR const* dest, bool fail_if_exists)
15699 TRACE("(%s %s %x)\n", debugstr_w(source), debugstr_w(dest), fail_if_exists);
15701 if(CopyFileW(source, dest, fail_if_exists))
15702 return ERROR_SUCCESS;
15703 return GetLastError();
15706 /* ?_Rename@sys@tr2@std@@YAHPB_W0@Z */
15707 /* ?_Rename@sys@tr2@std@@YAHPEB_W0@Z */
15708 int __cdecl tr2_sys__Rename_wchar(WCHAR const* old_path, WCHAR const* new_path)
15710 TRACE("(%s %s)\n", debugstr_w(old_path), debugstr_w(new_path));
15712 if(MoveFileExW(old_path, new_path, MOVEFILE_COPY_ALLOWED))
15713 return ERROR_SUCCESS;
15714 return GetLastError();
15717 /* ?_Statvfs@sys@tr2@std@@YA?AUspace_info@123@PB_W@Z */
15718 /* ?_Statvfs@sys@tr2@std@@YA?AUspace_info@123@PEB_W@Z */
15719 struct space_info* __cdecl tr2_sys__Statvfs_wchar(struct space_info *ret, const WCHAR* path)
15721 ULARGE_INTEGER available, total, free;
15723 TRACE("(%s)\n", debugstr_w(path));
15725 if(!path || !GetDiskFreeSpaceExW(path, &available, &total, &free)) {
15726 ret->capacity = ret->free = ret->available = 0;
15727 }else {
15728 ret->capacity = total.QuadPart;
15729 ret->free = free.QuadPart;
15730 ret->available = available.QuadPart;
15732 return ret;
15735 /* ?_Stat@sys@tr2@std@@YA?AW4file_type@123@PB_WAAH@Z */
15736 /* ?_Stat@sys@tr2@std@@YA?AW4file_type@123@PEB_WAEAH@Z */
15737 enum file_type __cdecl tr2_sys__Stat_wchar(WCHAR const* path, int* err_code)
15739 DWORD attr;
15740 TRACE("(%s %p)\n", debugstr_w(path), err_code);
15741 if(!path) {
15742 *err_code = ERROR_INVALID_PARAMETER;
15743 return status_unknown;
15746 attr=GetFileAttributesW(path);
15747 if(attr == INVALID_FILE_ATTRIBUTES) {
15748 enum file_type ret;
15749 switch(GetLastError()) {
15750 case ERROR_FILE_NOT_FOUND:
15751 case ERROR_BAD_NETPATH:
15752 case ERROR_INVALID_NAME:
15753 case ERROR_BAD_PATHNAME:
15754 case ERROR_PATH_NOT_FOUND:
15755 ret = file_not_found;
15756 *err_code = ERROR_SUCCESS;
15757 break;
15758 default:
15759 ret = status_unknown;
15760 *err_code = GetLastError();
15762 return ret;
15765 *err_code = ERROR_SUCCESS;
15766 return (attr & FILE_ATTRIBUTE_DIRECTORY)?directory_file:regular_file;
15769 /* _Stat, msvcp140 version */
15770 enum file_type __cdecl _Stat(WCHAR const* path, int* permissions)
15772 DWORD attr;
15773 TRACE("(%s %p)\n", debugstr_w(path), permissions);
15774 if(!path) {
15775 return file_not_found;
15778 attr=GetFileAttributesW(path);
15779 if(attr == INVALID_FILE_ATTRIBUTES) {
15780 enum file_type ret;
15781 switch(GetLastError()) {
15782 case ERROR_FILE_NOT_FOUND:
15783 case ERROR_BAD_NETPATH:
15784 case ERROR_INVALID_NAME:
15785 case ERROR_BAD_PATHNAME:
15786 case ERROR_PATH_NOT_FOUND:
15787 ret = file_not_found;
15788 break;
15789 default:
15790 ret = status_unknown;
15792 return ret;
15795 if (permissions)
15796 *permissions = (attr & FILE_ATTRIBUTE_READONLY) ? 0555 : 0777;
15797 return (attr & FILE_ATTRIBUTE_DIRECTORY) ? directory_file : regular_file;
15800 /* _Copy_file, msvcp140 version */
15801 DWORD __cdecl _Copy_file(WCHAR const* src, WCHAR const* dst)
15803 TRACE("src %s, dst %s.\n", debugstr_w(src), debugstr_w(dst));
15805 if (CopyFileW(src, dst, FALSE))
15806 return ERROR_SUCCESS;
15808 return GetLastError();
15811 /* ?_Lstat@sys@tr2@std@@YA?AW4file_type@123@PB_WAAH@Z */
15812 /* ?_Lstat@sys@tr2@std@@YA?AW4file_type@123@PEB_WAEAH@Z */
15813 enum file_type __cdecl tr2_sys__Lstat_wchar(WCHAR const* path, int* err_code)
15815 return tr2_sys__Stat_wchar(path, err_code);
15818 /* _Lstat, msvcp140 version */
15819 enum file_type __cdecl _Lstat(WCHAR const* path, int* permissions)
15821 return _Stat(path, permissions);
15824 WCHAR * __cdecl _Temp_get(WCHAR *dst)
15826 GetTempPathW(MAX_PATH, dst);
15827 return dst;
15830 /* ??1_Winit@std@@QAE@XZ */
15831 /* ??1_Winit@std@@QAE@XZ */
15832 DEFINE_THISCALL_WRAPPER(_Winit_dtor, 4)
15833 void __thiscall _Winit_dtor(void *this)
15835 TRACE("(%p)\n", this);
15837 _Winit__Init_cnt--;
15838 if(!_Winit__Init_cnt) {
15839 basic_ostream_wchar_flush(&wcout.obj);
15840 basic_ostream_wchar_flush(&wcerr.obj);
15841 basic_ostream_wchar_flush(&wclog.obj);
15845 /* ??4_Winit@std@@QAEAAV01@ABV01@@Z */
15846 /* ??4_Winit@std@@QEAAAEAV01@AEBV01@@Z */
15847 DEFINE_THISCALL_WRAPPER(_Winit_op_assign, 8)
15848 void* __thiscall _Winit_op_assign(void *this, void *rhs)
15850 TRACE("(%p %p)\n", this, rhs);
15851 return this;
15854 void init_io(void *base)
15856 #ifdef RTTI_USE_RVA
15857 init_iosb_rtti(base);
15858 init_ios_base_rtti(base);
15859 init_basic_ios_char_rtti(base);
15860 init_basic_ios_wchar_rtti(base);
15861 init_basic_ios_short_rtti(base);
15862 init_basic_streambuf_char_rtti(base);
15863 init_basic_streambuf_wchar_rtti(base);
15864 init_basic_streambuf_short_rtti(base);
15865 init_basic_filebuf_char_rtti(base);
15866 init_basic_filebuf_wchar_rtti(base);
15867 init_basic_filebuf_short_rtti(base);
15868 init_basic_stringbuf_char_rtti(base);
15869 init_basic_stringbuf_wchar_rtti(base);
15870 init_basic_stringbuf_short_rtti(base);
15871 init_basic_ostream_char_rtti(base);
15872 init_basic_ostream_wchar_rtti(base);
15873 init_basic_ostream_short_rtti(base);
15874 init_basic_istream_char_rtti(base);
15875 init_basic_istream_wchar_rtti(base);
15876 init_basic_istream_short_rtti(base);
15877 init_basic_iostream_char_rtti(base);
15878 init_basic_iostream_wchar_rtti(base);
15879 init_basic_iostream_short_rtti(base);
15880 init_basic_ofstream_char_rtti(base);
15881 init_basic_ofstream_wchar_rtti(base);
15882 init_basic_ofstream_short_rtti(base);
15883 init_basic_ifstream_char_rtti(base);
15884 init_basic_ifstream_wchar_rtti(base);
15885 init_basic_ifstream_short_rtti(base);
15886 init_basic_fstream_char_rtti(base);
15887 init_basic_fstream_wchar_rtti(base);
15888 init_basic_fstream_short_rtti(base);
15889 init_basic_ostringstream_char_rtti(base);
15890 init_basic_ostringstream_wchar_rtti(base);
15891 init_basic_ostringstream_short_rtti(base);
15892 init_basic_istringstream_char_rtti(base);
15893 init_basic_istringstream_wchar_rtti(base);
15894 init_basic_istringstream_short_rtti(base);
15895 init_basic_stringstream_char_rtti(base);
15896 init_basic_stringstream_wchar_rtti(base);
15897 init_basic_stringstream_short_rtti(base);
15898 init_strstreambuf_rtti(base);
15899 init_strstream_rtti(base);
15900 init_ostrstream_rtti(base);
15901 #endif
15903 basic_filebuf_char_ctor_file(&filebuf_char_stdin, stdin);
15904 basic_istream_char_ctor(&cin.obj, &filebuf_char_stdin.base, FALSE/*FIXME*/, TRUE);
15906 basic_filebuf_short_ctor_file(&filebuf_short_stdin, stdin);
15907 basic_istream_short_ctor(&ucin.obj, &filebuf_short_stdin.base, FALSE/*FIXME*/, TRUE);
15909 basic_filebuf_wchar_ctor_file(&filebuf_wchar_stdin, stdin);
15910 basic_istream_wchar_ctor(&wcin.obj, &filebuf_wchar_stdin.base, FALSE/*FIXME*/, TRUE);
15912 basic_filebuf_char_ctor_file(&filebuf_char_stdout, stdout);
15913 basic_ostream_char_ctor(&cout.obj, &filebuf_char_stdout.base, FALSE/*FIXME*/, TRUE);
15915 basic_filebuf_short_ctor_file(&filebuf_short_stdout, stdout);
15916 basic_ostream_short_ctor(&ucout.obj, &filebuf_short_stdout.base, FALSE/*FIXME*/, TRUE);
15918 basic_filebuf_wchar_ctor_file(&filebuf_wchar_stdout, stdout);
15919 basic_ostream_wchar_ctor(&wcout.obj, &filebuf_wchar_stdout.base, FALSE/*FIXME*/, TRUE);
15921 basic_filebuf_char_ctor_file(&filebuf_char_stderr, stderr);
15922 basic_ostream_char_ctor(&cerr.obj, &filebuf_char_stderr.base, FALSE/*FIXME*/, TRUE);
15924 basic_filebuf_short_ctor_file(&filebuf_short_stderr, stderr);
15925 basic_ostream_short_ctor(&ucerr.obj, &filebuf_short_stderr.base, FALSE/*FIXME*/, TRUE);
15927 basic_filebuf_wchar_ctor_file(&filebuf_wchar_stderr, stderr);
15928 basic_ostream_wchar_ctor(&wcerr.obj, &filebuf_wchar_stderr.base, FALSE/*FIXME*/, TRUE);
15930 basic_filebuf_char_ctor_file(&filebuf_char_log, stderr);
15931 basic_ostream_char_ctor(&MSVCP_clog.obj, &filebuf_char_log.base, FALSE/*FIXME*/, TRUE);
15933 basic_filebuf_short_ctor_file(&filebuf_short_log, stderr);
15934 basic_ostream_short_ctor(&uclog.obj, &filebuf_short_log.base, FALSE/*FIXME*/, TRUE);
15936 basic_filebuf_wchar_ctor_file(&filebuf_wchar_log, stderr);
15937 basic_ostream_wchar_ctor(&wclog.obj, &filebuf_wchar_log.base, FALSE/*FIXME*/, TRUE);
15940 void free_io(void)
15942 basic_istream_char_vbase_dtor(&cin.obj);
15943 basic_filebuf_char_dtor(&filebuf_char_stdin);
15945 basic_istream_wchar_vbase_dtor(&ucin.obj);
15946 basic_filebuf_wchar_dtor(&filebuf_short_stdin);
15948 basic_istream_wchar_vbase_dtor(&wcin.obj);
15949 basic_filebuf_wchar_dtor(&filebuf_wchar_stdin);
15951 basic_ostream_char_vbase_dtor(&cout.obj);
15952 basic_filebuf_char_dtor(&filebuf_char_stdout);
15954 basic_ostream_wchar_vbase_dtor(&ucout.obj);
15955 basic_filebuf_wchar_dtor(&filebuf_short_stdout);
15957 basic_ostream_wchar_vbase_dtor(&wcout.obj);
15958 basic_filebuf_wchar_dtor(&filebuf_wchar_stdout);
15960 basic_ostream_char_vbase_dtor(&cerr.obj);
15961 basic_filebuf_char_dtor(&filebuf_char_stderr);
15963 basic_ostream_wchar_vbase_dtor(&ucerr.obj);
15964 basic_filebuf_wchar_dtor(&filebuf_short_stderr);
15966 basic_ostream_wchar_vbase_dtor(&wcerr.obj);
15967 basic_filebuf_wchar_dtor(&filebuf_wchar_stderr);
15969 basic_ostream_char_vbase_dtor(&MSVCP_clog.obj);
15970 basic_filebuf_char_dtor(&filebuf_char_log);
15972 basic_ostream_wchar_vbase_dtor(&uclog.obj);
15973 basic_filebuf_wchar_dtor(&filebuf_short_log);
15975 basic_ostream_wchar_vbase_dtor(&wclog.obj);
15976 basic_filebuf_wchar_dtor(&filebuf_wchar_log);
15979 /* ?_Cin_func@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@1@XZ */
15980 /* ?_Cin_func@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@1@XZ */
15981 basic_istream_char* __cdecl _Cin_func(void)
15983 return &cin.obj;
15986 /* ?_Wcin_func@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@1@XZ */
15987 /* ?_Wcin_func@std@@YAAEAV?$basic_istream@GU?$char_traits@G@std@@@1@XZ */
15988 basic_istream_wchar* __cdecl _Wcin_func_short(void)
15990 return &ucin.obj;
15993 /* ?_Wcin_func@std@@YAAAV?$basic_istream@_WU?$char_traits@_W@std@@@1@XZ */
15994 /* ?_Wcin_func@std@@YAAEAV?$basic_istream@_WU?$char_traits@_W@std@@@1@XZ */
15995 basic_istream_wchar* __cdecl _Wcin_func(void)
15997 return &wcin.obj;
16000 /* ?_Cout_func@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@XZ */
16001 /* ?_Cout_func@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@1@XZ */
16002 basic_ostream_char* __cdecl _Cout_func(void)
16004 return &cout.obj;
16007 /* ?_Wcout_func@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@1@XZ */
16008 /* ?_Wcout_func@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@1@XZ */
16009 basic_ostream_wchar* __cdecl _Wcout_func_short(void)
16011 return &ucout.obj;
16015 /* ?_Wcout_func@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@XZ */
16016 /* ?_Wcout_func@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@XZ */
16017 basic_ostream_wchar* __cdecl _Wcout_func(void)
16019 return &wcout.obj;
16022 /* ?_Clog_func@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@XZ */
16023 /* ?_Clog_func@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@1@XZ */
16024 basic_ostream_char* __cdecl _Clog_func(void)
16026 return &MSVCP_clog.obj;
16029 /* ?_Wclog_func@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@1@XZ */
16030 /* ?_Wclog_func@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@1@XZ */
16031 basic_ostream_wchar* __cdecl _Wclog_func_short(void)
16033 return &uclog.obj;
16036 /* ?_Wclog_func@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@XZ */
16037 /* ?_Wclog_func@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@XZ */
16038 basic_ostream_wchar* __cdecl _Wclog_func(void)
16040 return &wclog.obj;
16043 /* ?_Cerr_func@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@XZ */
16044 /* ?_Cerr_func@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@1@XZ */
16045 basic_ostream_char* __cdecl _Cerr_func(void)
16047 return &cerr.obj;
16050 /* ?_Wcerr_func@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@1@XZ */
16051 /* ?_Wcerr_func@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@1@XZ */
16052 basic_ostream_wchar* __cdecl _Wcerr_func_short(void)
16054 return &ucerr.obj;
16057 /* ?_Wcerr_func@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@XZ */
16058 /* ?_Wcerr_func@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@XZ */
16059 basic_ostream_wchar* __cdecl _Wcerr_func(void)
16061 return &wcerr.obj;