d3d10/effect: Add support for 'imul' instruction.
[wine.git] / dlls / msvcp90 / ios.c
blob1240bb537c9ab778bde676223cdb53ce5d0f1783
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 <stdio.h>
21 #include <limits.h>
22 #include <share.h>
24 #include "msvcp90.h"
25 #include "windef.h"
26 #include "winbase.h"
27 #include "winnls.h"
28 #include "wine/debug.h"
30 WINE_DEFAULT_DEBUG_CHANNEL(msvcp);
32 #define SECSPERDAY 86400
33 /* 1601 to 1970 is 369 years plus 89 leap days */
34 #define SECS_1601_TO_1970 ((369 * 365 + 89) * (ULONGLONG)SECSPERDAY)
35 #define TICKSPERSEC 10000000
36 #define TICKS_1601_TO_1970 (SECS_1601_TO_1970 * TICKSPERSEC)
38 /* ?_Index@ios_base@std@@0HA */
39 int ios_base_Index = 0;
40 /* ?_Sync@ios_base@std@@0_NA */
41 bool ios_base_Sync = FALSE;
43 typedef struct {
44 streamoff off;
45 __int64 DECLSPEC_ALIGN(8) pos;
46 _Mbstatet state;
47 } fpos_mbstatet;
49 static inline const char* debugstr_fpos_mbstatet(fpos_mbstatet *fpos)
51 return wine_dbg_sprintf("fpos(%s %s %d)", wine_dbgstr_longlong(fpos->off),
52 wine_dbgstr_longlong(fpos->pos), MBSTATET_TO_INT(&fpos->state));
55 typedef struct {
56 void (__cdecl *pfunc)(ios_base*, streamsize);
57 streamsize arg;
58 } manip_streamsize;
60 typedef struct {
61 void (__cdecl *pfunc)(ios_base*, int);
62 int arg;
63 } manip_int;
65 typedef enum {
66 INITFL_new = 0,
67 INITFL_open = 1,
68 INITFL_close = 2
69 } basic_filebuf__Initfl;
71 typedef struct {
72 basic_streambuf_char base;
73 codecvt_char *cvt;
74 #if _MSVCP_VER < 80
75 int state0;
76 char putback;
77 basic_string_char *conv;
78 #else
79 char putback;
80 #endif
81 bool wrotesome;
82 _Mbstatet state;
83 bool close;
84 #if _MSVCP_VER == 70
85 locale loc;
86 #endif
87 FILE *file;
88 } basic_filebuf_char;
90 typedef struct {
91 basic_streambuf_wchar base;
92 codecvt_wchar *cvt;
93 #if _MSVCP_VER < 80
94 int state0;
95 wchar_t putback;
96 basic_string_char *conv;
97 #else
98 wchar_t putback;
99 #endif
100 bool wrotesome;
101 _Mbstatet state;
102 bool close;
103 #if _MSVCP_VER == 70
104 locale loc;
105 #endif
106 FILE *file;
107 } basic_filebuf_wchar;
109 typedef enum {
110 STRINGBUF_allocated = 1,
111 STRINGBUF_no_write = 2,
112 STRINGBUF_no_read = 4,
113 STRINGBUF_append = 8,
114 STRINGBUF_at_end = 16
115 } basic_stringbuf_state;
117 typedef struct {
118 basic_streambuf_char base;
119 char *seekhigh;
120 int state;
121 char allocator; /* empty struct */
122 } basic_stringbuf_char;
124 typedef struct {
125 basic_streambuf_wchar base;
126 wchar_t *seekhigh;
127 int state;
128 char allocator; /* empty struct */
129 } basic_stringbuf_wchar;
131 typedef struct {
132 ios_base base;
133 basic_streambuf_char *strbuf;
134 struct _basic_ostream_char *stream;
135 char fillch;
136 } basic_ios_char;
138 typedef struct {
139 ios_base base;
140 basic_streambuf_wchar *strbuf;
141 struct _basic_ostream_wchar *stream;
142 wchar_t fillch;
143 } basic_ios_wchar;
145 typedef struct _basic_ostream_char {
146 const int *vbtable;
147 /* virtual inheritance
148 * basic_ios_char basic_ios;
150 } basic_ostream_char;
152 typedef struct _basic_ostream_wchar {
153 const int *vbtable;
154 /* virtual inheritance
155 * basic_ios_wchar basic_ios;
157 } basic_ostream_wchar;
159 typedef struct {
160 const int *vbtable;
161 streamsize count;
162 /* virtual inheritance
163 * basic_ios_char basic_ios;
165 } basic_istream_char;
167 typedef struct {
168 const int *vbtable;
169 streamsize count;
170 /* virtual inheritance
171 * basic_ios_wchar basic_ios;
173 } basic_istream_wchar;
175 typedef struct {
176 basic_istream_char base1;
177 basic_ostream_char base2;
178 /* virtual inheritance
179 * basic_ios_char basic_ios;
181 } basic_iostream_char;
183 typedef struct {
184 basic_istream_wchar base1;
185 basic_ostream_wchar base2;
186 /* virtual inheritance
187 * basic_ios_wchar basic_ios;
189 } basic_iostream_wchar;
191 typedef struct {
192 basic_ostream_char base;
193 basic_filebuf_char filebuf;
194 /* virtual inheritance
195 * basic_ios_char basic_ios;
197 } basic_ofstream_char;
199 typedef struct {
200 basic_ostream_wchar base;
201 basic_filebuf_wchar filebuf;
202 /* virtual inheritance
203 * basic_ios_wchar basic_ios;
205 } basic_ofstream_wchar;
207 typedef struct {
208 basic_istream_char base;
209 basic_filebuf_char filebuf;
210 /* virtual inheritance
211 * basic_ios_char basic_ios;
213 } basic_ifstream_char;
215 typedef struct {
216 basic_istream_wchar base;
217 basic_filebuf_wchar filebuf;
218 /* virtual inheritance
219 * basic_ios_wchar basic_ios;
221 } basic_ifstream_wchar;
223 typedef struct {
224 basic_iostream_char base;
225 basic_filebuf_char filebuf;
226 /* virtual inheritance
227 * basic_ios_char basic_ios;
229 } basic_fstream_char;
231 typedef struct {
232 basic_iostream_wchar base;
233 basic_filebuf_wchar filebuf;
234 /* virtual inheritance
235 * basic_ios_char basic_ios;
237 } basic_fstream_wchar;
239 typedef struct {
240 basic_ostream_char base;
241 basic_stringbuf_char strbuf;
242 /* virtual inheritance
243 * basic_ios_char basic_ios;
245 } basic_ostringstream_char;
247 typedef struct {
248 basic_ostream_wchar base;
249 basic_stringbuf_wchar strbuf;
250 /* virtual inheritance
251 * basic_ios_wchar basic_ios;
253 } basic_ostringstream_wchar;
255 typedef struct {
256 basic_istream_char base;
257 basic_stringbuf_char strbuf;
258 /* virtual inheritance
259 * basic_ios_char basic_ios;
261 } basic_istringstream_char;
263 typedef struct {
264 basic_istream_wchar base;
265 basic_stringbuf_wchar strbuf;
266 /* virtual inheritance
267 * basic_ios_wchar basic_ios;
269 } basic_istringstream_wchar;
271 typedef struct {
272 basic_iostream_char base;
273 basic_stringbuf_char strbuf;
274 /* virtual inheritance
275 * basic_ios_char basic_ios;
277 } basic_stringstream_char;
279 typedef struct {
280 basic_iostream_wchar base;
281 basic_stringbuf_wchar strbuf;
282 /* virtual inheritance
283 * basic_ios_wchar basic_ios;
285 } basic_stringstream_wchar;
287 typedef enum {
288 STRSTATE_Allocated = 1,
289 STRSTATE_Constant = 2,
290 STRSTATE_Dynamic = 4,
291 STRSTATE_Frozen = 8
292 } strstreambuf__Strstate;
294 typedef struct {
295 basic_streambuf_char base;
296 streamsize minsize;
297 char *endsave;
298 char *seekhigh;
299 int strmode;
300 void* (__cdecl *palloc)(size_t);
301 void (__cdecl *pfree)(void*);
302 } strstreambuf;
304 typedef struct {
305 basic_ostream_char base;
306 strstreambuf buf;
307 /* virtual inheritance
308 * basic_ios_char basic_ios;
310 } ostrstream;
312 typedef struct {
313 basic_istream_char base;
314 strstreambuf buf;
315 /* virtual inheritance
316 * basic_ios_char basic_ios;
318 } istrstream;
320 typedef struct {
321 basic_iostream_char base;
322 strstreambuf buf;
323 /* virtual inheritance
324 * basic_ios_char basic_ios;
326 } strstream;
328 struct space_info {
329 ULONGLONG capacity;
330 ULONGLONG free;
331 ULONGLONG available;
334 enum file_type {
335 #if _MSVCP_VER < 140
336 status_unknown,
337 file_not_found,
338 #else
339 file_not_found = -1,
340 none_file,
341 #endif
342 regular_file,
343 directory_file,
344 symlink_file,
345 block_file,
346 character_file,
347 fifo_file,
348 socket_file,
349 #if _MSVCP_VER < 140
350 type_unknown,
351 #else
352 status_unknown
353 #endif
356 #if _MSVCP_VER >= 110
357 #define BASIC_IOS_VTORDISP 1
358 #define INIT_BASIC_IOS_VTORDISP(basic_ios) ((int*)basic_ios)[-1] = 0
359 #else
360 #define BASIC_IOS_VTORDISP 0
361 #define INIT_BASIC_IOS_VTORDISP(basic_ios)
362 #endif
364 #define VBTABLE_ENTRY(class, offset, vbase, vtordisp) ALIGNED_SIZE(sizeof(class)+vtordisp*sizeof(int), TYPE_ALIGNMENT(vbase))-offset
365 #define VBTABLE_BASIC_IOS_ENTRY(class, offset) VBTABLE_ENTRY(class, offset, basic_ios_char, BASIC_IOS_VTORDISP)
367 extern const vtable_ptr iosb_vtable;
369 /* ??_7ios_base@std@@6B@ */
370 extern const vtable_ptr ios_base_vtable;
372 /* ??_7?$basic_ios@DU?$char_traits@D@std@@@std@@6B@ */
373 extern const vtable_ptr basic_ios_char_vtable;
375 /* ??_7?$basic_ios@_WU?$char_traits@_W@std@@@std@@6B@ */
376 extern const vtable_ptr basic_ios_wchar_vtable;
378 /* ??_7?$basic_ios@GU?$char_traits@G@std@@@std@@6B@ */
379 extern const vtable_ptr basic_ios_short_vtable;
381 /* ??_7?$basic_streambuf@DU?$char_traits@D@std@@@std@@6B@ */
382 extern const vtable_ptr basic_streambuf_char_vtable;
384 /* ??_7?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@6B@ */
385 extern const vtable_ptr basic_streambuf_wchar_vtable;
387 /* ??_7?$basic_streambuf@GU?$char_traits@G@std@@@std@@6B@ */
388 extern const vtable_ptr basic_streambuf_short_vtable;
390 /* ??_7?$basic_filebuf@DU?$char_traits@D@std@@@std@@6B@ */
391 extern const vtable_ptr basic_filebuf_char_vtable;
393 /* ??_7?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@6B@ */
394 extern const vtable_ptr basic_filebuf_wchar_vtable;
396 /* ??_7?$basic_filebuf@GU?$char_traits@G@std@@@std@@6B@ */
397 extern const vtable_ptr basic_filebuf_short_vtable;
399 /* ??_7?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */
400 extern const vtable_ptr basic_stringbuf_char_vtable;
402 /* ??_7?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@6B@ */
403 extern const vtable_ptr basic_stringbuf_wchar_vtable;
405 /* ??_7?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@6B@ */
406 extern const vtable_ptr basic_stringbuf_short_vtable;
408 /* ??_8?$basic_ostream@DU?$char_traits@D@std@@@std@@7B@ */
409 const int basic_ostream_char_vbtable[] = {0,
410 VBTABLE_BASIC_IOS_ENTRY(basic_ostream_char, 0)};
411 /* ??_7?$basic_ostream@DU?$char_traits@D@std@@@std@@6B@ */
412 extern const vtable_ptr basic_ostream_char_vtable;
414 /* ??_8?$basic_ostream@_WU?$char_traits@_W@std@@@std@@7B@ */
415 const int basic_ostream_wchar_vbtable[] = {0,
416 VBTABLE_BASIC_IOS_ENTRY(basic_ostream_wchar, 0)};
417 /* ??_7?$basic_ostream@_WU?$char_traits@_W@std@@@std@@6B@ */
418 extern const vtable_ptr basic_ostream_wchar_vtable;
420 /* ??_8?$basic_ostream@GU?$char_traits@G@std@@@std@@7B@ */
421 const int basic_ostream_short_vbtable[] = {0,
422 VBTABLE_BASIC_IOS_ENTRY(basic_ostream_wchar, 0)};
423 /* ??_7?$basic_ostream@GU?$char_traits@G@std@@@std@@6B@ */
424 extern const vtable_ptr basic_ostream_short_vtable;
426 /* ??_8?$basic_istream@DU?$char_traits@D@std@@@std@@7B@ */
427 const int basic_istream_char_vbtable[] = {0,
428 VBTABLE_BASIC_IOS_ENTRY(basic_istream_char, 0)};
429 /* ??_7?$basic_istream@DU?$char_traits@D@std@@@std@@6B@ */
430 extern const vtable_ptr basic_istream_char_vtable;
432 /* ??_8?$basic_istream@_WU?$char_traits@_W@std@@@std@@7B@ */
433 const int basic_istream_wchar_vbtable[] = {0,
434 VBTABLE_BASIC_IOS_ENTRY(basic_istream_wchar, 0)};
435 /* ??_7?$basic_istream@_WU?$char_traits@_W@std@@@std@@6B@ */
436 extern const vtable_ptr basic_istream_wchar_vtable;
438 /* ??_8?$basic_istream@GU?$char_traits@G@std@@@std@@7B@ */
439 const int basic_istream_short_vbtable[] = {0,
440 VBTABLE_BASIC_IOS_ENTRY(basic_istream_wchar, 0)};
441 /* ??_7?$basic_istream@GU?$char_traits@G@std@@@std@@6B@ */
442 extern const vtable_ptr basic_istream_short_vtable;
444 /* ??_8?$basic_iostream@DU?$char_traits@D@std@@@std@@7B?$basic_istream@DU?$char_traits@D@std@@@1@@ */
445 const int basic_iostream_char_vbtable1[] = {0,
446 VBTABLE_BASIC_IOS_ENTRY(basic_iostream_char, 0)};
447 /* ??_8?$basic_iostream@DU?$char_traits@D@std@@@std@@7B?$basic_ostream@DU?$char_traits@D@std@@@1@@ */
448 const int basic_iostream_char_vbtable2[] = {0,
449 VBTABLE_BASIC_IOS_ENTRY(basic_iostream_char, FIELD_OFFSET(basic_iostream_char, base2))};
450 /* ??_7?$basic_iostream@DU?$char_traits@D@std@@@std@@6B@ */
451 extern const vtable_ptr basic_iostream_char_vtable;
453 /* ??_8?$basic_iostream@_WU?$char_traits@_W@std@@@std@@7B?$basic_istream@_WU?$char_traits@_W@std@@@1@@ */
454 /* ??_8?$basic_iostream@GU?$char_traits@G@std@@@std@@7B?$basic_istream@GU?$char_traits@G@std@@@1@@ */
455 const int basic_iostream_wchar_vbtable1[] = {0,
456 VBTABLE_BASIC_IOS_ENTRY(basic_iostream_wchar, 0)};
457 /* ??_8?$basic_iostream@_WU?$char_traits@_W@std@@@std@@7B?$basic_ostream@_WU?$char_traits@_W@std@@@1@@ */
458 /* ??_8?$basic_iostream@GU?$char_traits@G@std@@@std@@7B?$basic_ostream@GU?$char_traits@G@std@@@1@@ */
459 const int basic_iostream_wchar_vbtable2[] = {0,
460 VBTABLE_BASIC_IOS_ENTRY(basic_iostream_wchar, FIELD_OFFSET(basic_iostream_wchar, base2))};
461 /* ??_7?$basic_iostream@_WU?$char_traits@_W@std@@@std@@6B@ */
462 extern const vtable_ptr basic_iostream_wchar_vtable;
463 /* ??_7?$basic_iostream@GU?$char_traits@G@std@@@std@@6B@ */
464 extern const vtable_ptr basic_iostream_short_vtable;
466 /* ??_8?$basic_ofstream@DU?$char_traits@D@std@@@std@@7B@ */
467 const int basic_ofstream_char_vbtable[] = {0,
468 VBTABLE_BASIC_IOS_ENTRY(basic_ofstream_char, 0)};
469 /* ??_7?$basic_ofstream@DU?$char_traits@D@std@@@std@@6B@ */
470 extern const vtable_ptr basic_ofstream_char_vtable;
472 /* ??_8?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@7B@ */
473 const int basic_ofstream_wchar_vbtable[] = {0,
474 VBTABLE_BASIC_IOS_ENTRY(basic_ofstream_wchar, 0)};
475 /* ??_7?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@6B@ */
476 extern const vtable_ptr basic_ofstream_wchar_vtable;
478 /* ??_8?$basic_ofstream@GU?$char_traits@G@std@@@std@@7B@ */
479 const int basic_ofstream_short_vbtable[] = {0,
480 VBTABLE_BASIC_IOS_ENTRY(basic_ofstream_wchar, 0)};
481 /* ??_7?$basic_ofstream@GU?$char_traits@G@std@@@std@@6B@ */
482 extern const vtable_ptr basic_ofstream_short_vtable;
484 /* ??_8?$basic_ifstream@DU?$char_traits@D@std@@@std@@7B@ */
485 const int basic_ifstream_char_vbtable[] = {0,
486 VBTABLE_BASIC_IOS_ENTRY(basic_ifstream_char, 0)};
487 /* ??_7?$basic_ifstream@DU?$char_traits@D@std@@@std@@6B@ */
488 extern const vtable_ptr basic_ifstream_char_vtable;
490 /* ??_8?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@7B@ */
491 const int basic_ifstream_wchar_vbtable[] = {0,
492 VBTABLE_BASIC_IOS_ENTRY(basic_ifstream_wchar, 0)};
493 /* ??_7?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@6B@ */
494 extern const vtable_ptr basic_ifstream_wchar_vtable;
496 /* ??_8?$basic_ifstream@GU?$char_traits@G@std@@@std@@7B@ */
497 const int basic_ifstream_short_vbtable[] = {0,
498 VBTABLE_BASIC_IOS_ENTRY(basic_ifstream_wchar, 0)};
499 /* ??_7?$basic_ifstream@GU?$char_traits@G@std@@@std@@6B@ */
500 extern const vtable_ptr basic_ifstream_short_vtable;
502 /* ??_8?$basic_fstream@DU?$char_traits@D@std@@@std@@7B?$basic_istream@DU?$char_traits@D@std@@@1@@ */
503 const int basic_fstream_char_vbtable1[] = {0,
504 VBTABLE_BASIC_IOS_ENTRY(basic_fstream_char, 0)};
505 /* ??_8?$basic_fstream@DU?$char_traits@D@std@@@std@@7B?$basic_ostream@DU?$char_traits@D@std@@@1@@ */
506 const int basic_fstream_char_vbtable2[] = {0,
507 VBTABLE_BASIC_IOS_ENTRY(basic_fstream_char, FIELD_OFFSET(basic_fstream_char, base.base2))};
508 /* ??_7?$basic_fstream@DU?$char_traits@D@std@@@std@@6B@ */
509 extern const vtable_ptr basic_fstream_char_vtable;
511 /* ??_8?$basic_fstream@_WU?$char_traits@_W@std@@@std@@7B?$basic_istream@_WU?$char_traits@_W@std@@@1@@ */
512 /* ??_8?$basic_fstream@GU?$char_traits@G@std@@@std@@7B?$basic_istream@GU?$char_traits@G@std@@@1@@ */
513 const int basic_fstream_wchar_vbtable1[] = {0,
514 VBTABLE_BASIC_IOS_ENTRY(basic_fstream_wchar, 0)};
515 /* ??_8?$basic_fstream@_WU?$char_traits@_W@std@@@std@@7B?$basic_ostream@_WU?$char_traits@_W@std@@@1@@ */
516 /* ??_8?$basic_fstream@GU?$char_traits@G@std@@@std@@7B?$basic_ostream@GU?$char_traits@G@std@@@1@@ */
517 const int basic_fstream_wchar_vbtable2[] = {0,
518 VBTABLE_BASIC_IOS_ENTRY(basic_fstream_wchar, FIELD_OFFSET(basic_fstream_wchar, base.base2))};
519 /* ??_7?$basic_fstream@_WU?$char_traits@_W@std@@@std@@6B@ */
520 extern const vtable_ptr basic_fstream_wchar_vtable;
521 /* ??_7?$basic_fstream@GU?$char_traits@G@std@@@std@@6B@ */
522 extern const vtable_ptr basic_fstream_short_vtable;
524 /* ??_8?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B@ */
525 const int basic_ostringstream_char_vbtable[] = {0,
526 VBTABLE_BASIC_IOS_ENTRY(basic_ostringstream_char, 0)};
527 /* ??_7?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */
528 extern const vtable_ptr basic_ostringstream_char_vtable;
530 /* ??_8?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@7B@ */
531 const int basic_ostringstream_wchar_vbtable[] = {0,
532 VBTABLE_BASIC_IOS_ENTRY(basic_ostringstream_wchar, 0)};
533 /* ??_7?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@6B@ */
534 extern const vtable_ptr basic_ostringstream_wchar_vtable;
536 /* ??_8?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@7B@ */
537 const int basic_ostringstream_short_vbtable[] = {0,
538 VBTABLE_BASIC_IOS_ENTRY(basic_ostringstream_wchar, 0)};
539 /* ??_7?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@6B@ */
540 extern const vtable_ptr basic_ostringstream_short_vtable;
542 /* ??_8?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B@ */
543 const int basic_istringstream_char_vbtable[] = {0,
544 VBTABLE_BASIC_IOS_ENTRY(basic_istringstream_char, 0)};
545 /* ??_7?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */
546 extern const vtable_ptr basic_istringstream_char_vtable;
548 /* ??_8?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@7B@ */
549 const int basic_istringstream_wchar_vbtable[] = {0,
550 VBTABLE_BASIC_IOS_ENTRY(basic_istringstream_wchar, 0)};
551 /* ??_7?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@6B@ */
552 extern const vtable_ptr basic_istringstream_wchar_vtable;
554 /* ??_8?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@7B@ */
555 const int basic_istringstream_short_vbtable[] = {0,
556 VBTABLE_BASIC_IOS_ENTRY(basic_istringstream_wchar, 0)};
557 /* ??_7?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@6B@ */
558 extern const vtable_ptr basic_istringstream_short_vtable;
560 /* ??_8?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B?$basic_istream@DU?$char_traits@D@std@@@1@@ */
561 const int basic_stringstream_char_vbtable1[] = {0,
562 VBTABLE_BASIC_IOS_ENTRY(basic_stringstream_char, 0)};
563 /* ??_8?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B?$basic_ostream@DU?$char_traits@D@std@@@1@@ */
564 const int basic_stringstream_char_vbtable2[] = {0,
565 VBTABLE_BASIC_IOS_ENTRY(basic_stringstream_char, FIELD_OFFSET(basic_stringstream_char, base.base2))};
566 /* ??_7?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */
567 extern const vtable_ptr basic_stringstream_char_vtable;
569 /* ??_8?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@7B?$basic_istream@_WU?$char_traits@_W@std@@@1@@ */
570 const int basic_stringstream_wchar_vbtable1[] = {0,
571 VBTABLE_BASIC_IOS_ENTRY(basic_stringstream_wchar, 0)};
572 /* ??_8?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@7B?$basic_ostream@_WU?$char_traits@_W@std@@@1@@ */
573 const int basic_stringstream_wchar_vbtable2[] = {0,
574 VBTABLE_BASIC_IOS_ENTRY(basic_stringstream_wchar, FIELD_OFFSET(basic_stringstream_wchar, base.base2))};
575 /* ??_7?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@6B@ */
576 extern const vtable_ptr basic_stringstream_wchar_vtable;
578 /* ??_8?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@7B?$basic_istream@GU?$char_traits@G@std@@@1@@ */
579 const int basic_stringstream_short_vbtable1[] = {0,
580 VBTABLE_BASIC_IOS_ENTRY(basic_stringstream_wchar, 0)};
581 /* ??_8?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@7B?$basic_ostream@GU?$char_traits@G@std@@@1@@ */
582 const int basic_stringstream_short_vbtable2[] = {0,
583 VBTABLE_BASIC_IOS_ENTRY(basic_stringstream_wchar, FIELD_OFFSET(basic_stringstream_wchar, base.base2))};
584 /* ??_7?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@6B@ */
585 extern const vtable_ptr basic_stringstream_short_vtable;
587 /* ??_7strstreambuf@std@@6B */
588 extern const vtable_ptr strstreambuf_vtable;
590 static const int ostrstream_vbtable[] = {0, VBTABLE_BASIC_IOS_ENTRY(ostrstream, 0)};
591 extern const vtable_ptr ostrstream_vtable;
593 static const int istrstream_vbtable[] = {0, VBTABLE_BASIC_IOS_ENTRY(istrstream, 0)};
595 static const int strstream_vbtable1[] = {0, VBTABLE_BASIC_IOS_ENTRY(strstream, 0)};
596 static const int strstream_vbtable2[] = {0,
597 VBTABLE_BASIC_IOS_ENTRY(strstream, FIELD_OFFSET(strstream, base.base2))};
598 extern const vtable_ptr strstream_vtable;
600 DEFINE_RTTI_DATA0(iosb, 0, ".?AV?$_Iosb@H@std@@")
601 DEFINE_RTTI_DATA1(ios_base, 0, &iosb_rtti_base_descriptor, ".?AV?$_Iosb@H@std@@")
602 DEFINE_RTTI_DATA2(basic_ios_char, 0, &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
603 ".?AV?$basic_ios@DU?$char_traits@D@std@@@std@@")
604 DEFINE_RTTI_DATA2(basic_ios_wchar, 0, &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
605 ".?AV?$basic_ios@_WU?$char_traits@_W@std@@@std@@")
606 DEFINE_RTTI_DATA2(basic_ios_short, 0, &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
607 ".?AV?$basic_ios@GU?$char_traits@G@std@@@std@@")
608 DEFINE_RTTI_DATA0(basic_streambuf_char, 0,
609 ".?AV?$basic_streambuf@DU?$char_traits@D@std@@@std@@")
610 DEFINE_RTTI_DATA0(basic_streambuf_wchar, 0,
611 ".?AV?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@")
612 DEFINE_RTTI_DATA0(basic_streambuf_short, 0,
613 ".?AV?$basic_streambuf@GU?$char_traits@G@std@@@std@@")
614 DEFINE_RTTI_DATA1(basic_filebuf_char, 0, &basic_streambuf_char_rtti_base_descriptor,
615 ".?AV?$basic_filebuf@DU?$char_traits@D@std@@@std@@")
616 DEFINE_RTTI_DATA1(basic_filebuf_wchar, 0, &basic_streambuf_wchar_rtti_base_descriptor,
617 ".?AV?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@")
618 DEFINE_RTTI_DATA1(basic_filebuf_short, 0, &basic_streambuf_short_rtti_base_descriptor,
619 ".?AV?$basic_filebuf@GU?$char_traits@G@std@@@std@@")
620 DEFINE_RTTI_DATA1(basic_stringbuf_char, 0, &basic_streambuf_char_rtti_base_descriptor,
621 ".?AV?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@")
622 DEFINE_RTTI_DATA1(basic_stringbuf_wchar, 0, &basic_streambuf_wchar_rtti_base_descriptor,
623 ".?AV?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@")
624 DEFINE_RTTI_DATA1(basic_stringbuf_short, 0, &basic_streambuf_short_rtti_base_descriptor,
625 ".?AV?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@")
626 DEFINE_RTTI_DATA3(basic_ostream_char, sizeof(basic_ostream_char), &basic_ios_char_rtti_base_descriptor,
627 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
628 ".?AV?$basic_ostream@DU?$char_traits@D@std@@@std@@")
629 DEFINE_RTTI_DATA3(basic_ostream_wchar, sizeof(basic_ostream_wchar), &basic_ios_wchar_rtti_base_descriptor,
630 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
631 ".?AV?$basic_ostream@_WU?$char_traits@_W@std@@@std@@")
632 DEFINE_RTTI_DATA3(basic_ostream_short, sizeof(basic_ostream_wchar), &basic_ios_short_rtti_base_descriptor,
633 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
634 ".?AV?$basic_ostream@GU?$char_traits@G@std@@@std@@")
635 DEFINE_RTTI_DATA3(basic_istream_char, sizeof(basic_istream_char), &basic_ios_char_rtti_base_descriptor,
636 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
637 ".?AV?$basic_istream@DU?$char_traits@D@std@@@std@@")
638 DEFINE_RTTI_DATA3(basic_istream_wchar, sizeof(basic_istream_wchar), &basic_ios_wchar_rtti_base_descriptor,
639 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
640 ".?AV?$basic_istream@_WU?$char_traits@_W@std@@@std@@")
641 DEFINE_RTTI_DATA3(basic_istream_short, sizeof(basic_istream_wchar), &basic_ios_short_rtti_base_descriptor,
642 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
643 ".?AV?$basic_istream@GU?$char_traits@G@std@@@std@@")
644 DEFINE_RTTI_DATA8(basic_iostream_char, sizeof(basic_iostream_char),
645 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
646 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
647 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
648 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
649 ".?AV?$basic_iostream@DU?$char_traits@D@std@@@std@@")
650 DEFINE_RTTI_DATA8(basic_iostream_wchar, sizeof(basic_iostream_wchar),
651 &basic_istream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
652 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
653 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
654 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
655 ".?AV?$basic_iostream@_WU?$char_traits@_W@std@@@std@@")
656 DEFINE_RTTI_DATA8(basic_iostream_short, sizeof(basic_iostream_wchar),
657 &basic_istream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
658 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
659 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
660 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
661 ".?AV?$basic_iostream@GU?$char_traits@G@std@@@std@@")
662 DEFINE_RTTI_DATA4(basic_ofstream_char, sizeof(basic_ofstream_char),
663 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
664 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
665 ".?AV?$basic_ofstream@DU?$char_traits@D@std@@@std@@")
666 DEFINE_RTTI_DATA4(basic_ofstream_wchar, sizeof(basic_ofstream_wchar),
667 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
668 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
669 ".?AV?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@")
670 DEFINE_RTTI_DATA4(basic_ofstream_short, sizeof(basic_ofstream_wchar),
671 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
672 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
673 ".?AV?$basic_ofstream@GU?$char_traits@G@std@@@std@@")
674 DEFINE_RTTI_DATA4(basic_ifstream_char, sizeof(basic_ifstream_char),
675 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
676 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
677 ".?AV?$basic_ifstream@DU?$char_traits@D@std@@@std@@")
678 DEFINE_RTTI_DATA4(basic_ifstream_wchar, sizeof(basic_ifstream_wchar),
679 &basic_istream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
680 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
681 ".?AV?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@")
682 DEFINE_RTTI_DATA4(basic_ifstream_short, sizeof(basic_ifstream_wchar),
683 &basic_istream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
684 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
685 ".?AV?$basic_ifstream@GU?$char_traits@G@std@@@std@@")
686 DEFINE_RTTI_DATA8(basic_fstream_char, sizeof(basic_fstream_char),
687 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
688 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
689 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
690 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
691 ".?AV?$basic_fstream@DU?$char_traits@D@std@@@std@@")
692 DEFINE_RTTI_DATA8(basic_fstream_wchar, sizeof(basic_fstream_wchar),
693 &basic_istream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
694 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
695 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
696 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
697 ".?AV?$basic_fstream@_WU?$char_traits@_W@std@@@std@@")
698 DEFINE_RTTI_DATA8(basic_fstream_short, sizeof(basic_fstream_wchar),
699 &basic_istream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
700 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
701 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
702 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
703 ".?AV?$basic_fstream@GU?$char_traits@G@std@@@std@@")
704 DEFINE_RTTI_DATA4(basic_ostringstream_char, sizeof(basic_ostringstream_char),
705 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
706 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
707 ".?AV?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@")
708 DEFINE_RTTI_DATA4(basic_ostringstream_wchar, sizeof(basic_ostringstream_wchar),
709 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
710 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
711 ".?AV?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@")
712 DEFINE_RTTI_DATA4(basic_ostringstream_short, sizeof(basic_ostringstream_wchar),
713 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
714 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
715 ".?AV?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@")
716 DEFINE_RTTI_DATA4(basic_istringstream_char, sizeof(basic_istringstream_char),
717 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
718 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
719 ".?AV?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@")
720 DEFINE_RTTI_DATA4(basic_istringstream_wchar, sizeof(basic_istringstream_wchar),
721 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
722 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
723 ".?AV?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@")
724 DEFINE_RTTI_DATA4(basic_istringstream_short, sizeof(basic_istringstream_wchar),
725 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
726 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
727 ".?AV?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@")
728 DEFINE_RTTI_DATA8(basic_stringstream_char, sizeof(basic_stringstream_char),
729 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
730 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
731 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
732 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
733 ".?AV?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@")
734 DEFINE_RTTI_DATA8(basic_stringstream_wchar, sizeof(basic_stringstream_wchar),
735 &basic_istream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
736 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
737 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
738 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
739 ".?AV?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@")
740 DEFINE_RTTI_DATA8(basic_stringstream_short, sizeof(basic_stringstream_wchar),
741 &basic_istream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
742 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
743 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
744 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
745 ".?AV?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@")
746 DEFINE_RTTI_DATA1(strstreambuf, sizeof(strstreambuf),
747 &basic_streambuf_char_rtti_base_descriptor, ".?AVstrstreambuf@std@@")
748 DEFINE_RTTI_DATA4(ostrstream, sizeof(ostrstream),
749 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
750 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
751 "?AVostrstream@std@@")
752 DEFINE_RTTI_DATA8(strstream, sizeof(strstream),
753 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
754 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
755 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
756 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
757 "?AVstrstream@std@@")
759 __ASM_BLOCK_BEGIN(ios_vtables)
760 __ASM_VTABLE(iosb,
761 VTABLE_ADD_FUNC(iosb_vector_dtor));
762 __ASM_VTABLE(ios_base,
763 VTABLE_ADD_FUNC(ios_base_vector_dtor));
764 __ASM_VTABLE(basic_ios_char,
765 VTABLE_ADD_FUNC(basic_ios_char_vector_dtor)
766 #if _MSVCP_VER == 110
767 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
768 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
769 #endif
771 __ASM_VTABLE(basic_ios_wchar,
772 VTABLE_ADD_FUNC(basic_ios_wchar_vector_dtor)
773 #if _MSVCP_VER == 110
774 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
775 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
776 #endif
778 __ASM_VTABLE(basic_ios_short,
779 VTABLE_ADD_FUNC(basic_ios_wchar_vector_dtor)
780 #if _MSVCP_VER == 110
781 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
782 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
783 #endif
785 __ASM_VTABLE(basic_streambuf_char,
786 VTABLE_ADD_FUNC(basic_streambuf_char_vector_dtor)
787 #if _MSVCP_VER >= 100
788 VTABLE_ADD_FUNC(basic_streambuf_char__Lock)
789 VTABLE_ADD_FUNC(basic_streambuf_char__Unlock)
790 #endif
791 VTABLE_ADD_FUNC(basic_streambuf_char_overflow)
792 VTABLE_ADD_FUNC(basic_streambuf_char_pbackfail)
793 VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc)
794 VTABLE_ADD_FUNC(basic_streambuf_char_underflow)
795 VTABLE_ADD_FUNC(basic_streambuf_char_uflow)
796 VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn)
797 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
798 VTABLE_ADD_FUNC(basic_streambuf_char__Xsgetn_s)
799 #endif
800 VTABLE_ADD_FUNC(basic_streambuf_char_xsputn)
801 VTABLE_ADD_FUNC(basic_streambuf_char_seekoff)
802 VTABLE_ADD_FUNC(basic_streambuf_char_seekpos)
803 VTABLE_ADD_FUNC(basic_streambuf_char_setbuf)
804 VTABLE_ADD_FUNC(basic_streambuf_char_sync)
805 VTABLE_ADD_FUNC(basic_streambuf_char_imbue));
806 __ASM_VTABLE(basic_streambuf_wchar,
807 VTABLE_ADD_FUNC(basic_streambuf_wchar_vector_dtor)
808 #if _MSVCP_VER >= 100
809 VTABLE_ADD_FUNC(basic_streambuf_wchar__Lock)
810 VTABLE_ADD_FUNC(basic_streambuf_wchar__Unlock)
811 #endif
812 VTABLE_ADD_FUNC(basic_streambuf_wchar_overflow)
813 VTABLE_ADD_FUNC(basic_streambuf_wchar_pbackfail)
814 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
815 VTABLE_ADD_FUNC(basic_streambuf_wchar_underflow)
816 VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow)
817 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
818 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
819 VTABLE_ADD_FUNC(basic_streambuf_wchar__Xsgetn_s)
820 #endif
821 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
822 VTABLE_ADD_FUNC(basic_streambuf_wchar_seekoff)
823 VTABLE_ADD_FUNC(basic_streambuf_wchar_seekpos)
824 VTABLE_ADD_FUNC(basic_streambuf_wchar_setbuf)
825 VTABLE_ADD_FUNC(basic_streambuf_wchar_sync)
826 VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue));
827 __ASM_VTABLE(basic_streambuf_short,
828 VTABLE_ADD_FUNC(basic_streambuf_wchar_vector_dtor)
829 #if _MSVCP_VER >= 100
830 VTABLE_ADD_FUNC(basic_streambuf_wchar__Lock)
831 VTABLE_ADD_FUNC(basic_streambuf_wchar__Unlock)
832 #endif
833 VTABLE_ADD_FUNC(basic_streambuf_wchar_overflow)
834 VTABLE_ADD_FUNC(basic_streambuf_wchar_pbackfail)
835 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
836 VTABLE_ADD_FUNC(basic_streambuf_wchar_underflow)
837 VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow)
838 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
839 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
840 VTABLE_ADD_FUNC(basic_streambuf_wchar__Xsgetn_s)
841 #endif
842 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
843 VTABLE_ADD_FUNC(basic_streambuf_wchar_seekoff)
844 VTABLE_ADD_FUNC(basic_streambuf_wchar_seekpos)
845 VTABLE_ADD_FUNC(basic_streambuf_wchar_setbuf)
846 VTABLE_ADD_FUNC(basic_streambuf_wchar_sync)
847 VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue));
848 __ASM_VTABLE(basic_filebuf_char,
849 VTABLE_ADD_FUNC(basic_filebuf_char_vector_dtor)
850 #if _MSVCP_VER >= 100
851 VTABLE_ADD_FUNC(basic_streambuf_char__Lock)
852 VTABLE_ADD_FUNC(basic_streambuf_char__Unlock)
853 #endif
854 VTABLE_ADD_FUNC(basic_filebuf_char_overflow)
855 VTABLE_ADD_FUNC(basic_filebuf_char_pbackfail)
856 VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc)
857 VTABLE_ADD_FUNC(basic_filebuf_char_underflow)
858 VTABLE_ADD_FUNC(basic_filebuf_char_uflow)
859 VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn)
860 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
861 VTABLE_ADD_FUNC(basic_streambuf_char__Xsgetn_s)
862 #endif
863 VTABLE_ADD_FUNC(basic_streambuf_char_xsputn)
864 VTABLE_ADD_FUNC(basic_filebuf_char_seekoff)
865 VTABLE_ADD_FUNC(basic_filebuf_char_seekpos)
866 VTABLE_ADD_FUNC(basic_filebuf_char_setbuf)
867 VTABLE_ADD_FUNC(basic_filebuf_char_sync)
868 VTABLE_ADD_FUNC(basic_filebuf_char_imbue));
869 __ASM_VTABLE(basic_filebuf_wchar,
870 VTABLE_ADD_FUNC(basic_filebuf_wchar_vector_dtor)
871 #if _MSVCP_VER >= 100
872 VTABLE_ADD_FUNC(basic_streambuf_wchar__Lock)
873 VTABLE_ADD_FUNC(basic_streambuf_wchar__Unlock)
874 #endif
875 VTABLE_ADD_FUNC(basic_filebuf_wchar_overflow)
876 VTABLE_ADD_FUNC(basic_filebuf_wchar_pbackfail)
877 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
878 VTABLE_ADD_FUNC(basic_filebuf_wchar_underflow)
879 VTABLE_ADD_FUNC(basic_filebuf_wchar_uflow)
880 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
881 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
882 VTABLE_ADD_FUNC(basic_streambuf_wchar__Xsgetn_s)
883 #endif
884 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
885 VTABLE_ADD_FUNC(basic_filebuf_wchar_seekoff)
886 VTABLE_ADD_FUNC(basic_filebuf_wchar_seekpos)
887 VTABLE_ADD_FUNC(basic_filebuf_wchar_setbuf)
888 VTABLE_ADD_FUNC(basic_filebuf_wchar_sync)
889 VTABLE_ADD_FUNC(basic_filebuf_wchar_imbue));
890 __ASM_VTABLE(basic_filebuf_short,
891 VTABLE_ADD_FUNC(basic_filebuf_wchar_vector_dtor)
892 #if _MSVCP_VER >= 100
893 VTABLE_ADD_FUNC(basic_streambuf_wchar__Lock)
894 VTABLE_ADD_FUNC(basic_streambuf_wchar__Unlock)
895 #endif
896 VTABLE_ADD_FUNC(basic_filebuf_wchar_overflow)
897 VTABLE_ADD_FUNC(basic_filebuf_wchar_pbackfail)
898 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
899 VTABLE_ADD_FUNC(basic_filebuf_wchar_underflow)
900 VTABLE_ADD_FUNC(basic_filebuf_wchar_uflow)
901 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
902 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
903 VTABLE_ADD_FUNC(basic_streambuf_wchar__Xsgetn_s)
904 #endif
905 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
906 VTABLE_ADD_FUNC(basic_filebuf_wchar_seekoff)
907 VTABLE_ADD_FUNC(basic_filebuf_wchar_seekpos)
908 VTABLE_ADD_FUNC(basic_filebuf_short_setbuf)
909 VTABLE_ADD_FUNC(basic_filebuf_wchar_sync)
910 VTABLE_ADD_FUNC(basic_filebuf_short_imbue));
911 __ASM_VTABLE(basic_stringbuf_char,
912 VTABLE_ADD_FUNC(basic_stringbuf_char_vector_dtor)
913 VTABLE_ADD_FUNC(basic_stringbuf_char_overflow)
914 VTABLE_ADD_FUNC(basic_stringbuf_char_pbackfail)
915 VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc)
916 VTABLE_ADD_FUNC(basic_stringbuf_char_underflow)
917 VTABLE_ADD_FUNC(basic_streambuf_char_uflow)
918 VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn)
919 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
920 VTABLE_ADD_FUNC(basic_streambuf_char__Xsgetn_s)
921 #endif
922 VTABLE_ADD_FUNC(basic_streambuf_char_xsputn)
923 VTABLE_ADD_FUNC(basic_stringbuf_char_seekoff)
924 VTABLE_ADD_FUNC(basic_stringbuf_char_seekpos)
925 VTABLE_ADD_FUNC(basic_streambuf_char_setbuf)
926 VTABLE_ADD_FUNC(basic_streambuf_char_sync)
927 VTABLE_ADD_FUNC(basic_streambuf_char_imbue));
928 __ASM_VTABLE(basic_stringbuf_wchar,
929 VTABLE_ADD_FUNC(basic_stringbuf_wchar_vector_dtor)
930 VTABLE_ADD_FUNC(basic_stringbuf_wchar_overflow)
931 VTABLE_ADD_FUNC(basic_stringbuf_wchar_pbackfail)
932 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
933 VTABLE_ADD_FUNC(basic_stringbuf_wchar_underflow)
934 VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow)
935 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
936 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
937 VTABLE_ADD_FUNC(basic_streambuf_wchar__Xsgetn_s)
938 #endif
939 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
940 VTABLE_ADD_FUNC(basic_stringbuf_wchar_seekoff)
941 VTABLE_ADD_FUNC(basic_stringbuf_wchar_seekpos)
942 VTABLE_ADD_FUNC(basic_streambuf_wchar_setbuf)
943 VTABLE_ADD_FUNC(basic_streambuf_wchar_sync)
944 VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue));
945 __ASM_VTABLE(basic_stringbuf_short,
946 VTABLE_ADD_FUNC(basic_stringbuf_wchar_vector_dtor)
947 VTABLE_ADD_FUNC(basic_stringbuf_wchar_overflow)
948 VTABLE_ADD_FUNC(basic_stringbuf_wchar_pbackfail)
949 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
950 VTABLE_ADD_FUNC(basic_stringbuf_wchar_underflow)
951 VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow)
952 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
953 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
954 VTABLE_ADD_FUNC(basic_streambuf_wchar__Xsgetn_s)
955 #endif
956 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
957 VTABLE_ADD_FUNC(basic_stringbuf_wchar_seekoff)
958 VTABLE_ADD_FUNC(basic_stringbuf_wchar_seekpos)
959 VTABLE_ADD_FUNC(basic_streambuf_wchar_setbuf)
960 VTABLE_ADD_FUNC(basic_streambuf_wchar_sync)
961 VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue));
962 __ASM_VTABLE(basic_ostream_char,
963 VTABLE_ADD_FUNC(basic_ostream_char_vector_dtor)
964 #if _MSVCP_VER == 110
965 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
966 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
967 #endif
969 __ASM_VTABLE(basic_ostream_wchar,
970 VTABLE_ADD_FUNC(basic_ostream_wchar_vector_dtor)
971 #if _MSVCP_VER == 110
972 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
973 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
974 #endif
976 __ASM_VTABLE(basic_ostream_short,
977 VTABLE_ADD_FUNC(basic_ostream_wchar_vector_dtor)
978 #if _MSVCP_VER == 110
979 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
980 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
981 #endif
983 __ASM_VTABLE(basic_istream_char,
984 VTABLE_ADD_FUNC(basic_istream_char_vector_dtor)
985 #if _MSVCP_VER == 110
986 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
987 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
988 #endif
990 __ASM_VTABLE(basic_istream_wchar,
991 VTABLE_ADD_FUNC(basic_istream_wchar_vector_dtor)
992 #if _MSVCP_VER == 110
993 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
994 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
995 #endif
997 __ASM_VTABLE(basic_istream_short,
998 VTABLE_ADD_FUNC(basic_istream_wchar_vector_dtor)
999 #if _MSVCP_VER == 110
1000 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1001 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1002 #endif
1004 __ASM_VTABLE(basic_iostream_char,
1005 VTABLE_ADD_FUNC(basic_iostream_char_vector_dtor)
1006 #if _MSVCP_VER == 110
1007 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1008 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1009 #endif
1011 __ASM_VTABLE(basic_iostream_wchar,
1012 VTABLE_ADD_FUNC(basic_iostream_wchar_vector_dtor)
1013 #if _MSVCP_VER == 110
1014 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1015 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1016 #endif
1018 __ASM_VTABLE(basic_iostream_short,
1019 VTABLE_ADD_FUNC(basic_iostream_wchar_vector_dtor)
1020 #if _MSVCP_VER == 110
1021 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1022 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1023 #endif
1025 __ASM_VTABLE(basic_ofstream_char,
1026 VTABLE_ADD_FUNC(basic_ofstream_char_vector_dtor)
1027 #if _MSVCP_VER == 110
1028 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1029 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1030 #endif
1032 __ASM_VTABLE(basic_ofstream_wchar,
1033 VTABLE_ADD_FUNC(basic_ofstream_wchar_vector_dtor)
1034 #if _MSVCP_VER == 110
1035 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1036 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1037 #endif
1039 __ASM_VTABLE(basic_ofstream_short,
1040 VTABLE_ADD_FUNC(basic_ofstream_wchar_vector_dtor)
1041 #if _MSVCP_VER == 110
1042 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1043 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1044 #endif
1046 __ASM_VTABLE(basic_ifstream_char,
1047 VTABLE_ADD_FUNC(basic_ifstream_char_vector_dtor)
1048 #if _MSVCP_VER == 110
1049 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1050 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1051 #endif
1053 __ASM_VTABLE(basic_ifstream_wchar,
1054 VTABLE_ADD_FUNC(basic_ifstream_wchar_vector_dtor)
1055 #if _MSVCP_VER == 110
1056 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1057 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1058 #endif
1060 __ASM_VTABLE(basic_ifstream_short,
1061 VTABLE_ADD_FUNC(basic_ifstream_wchar_vector_dtor)
1062 #if _MSVCP_VER == 110
1063 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1064 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1065 #endif
1067 __ASM_VTABLE(basic_fstream_char,
1068 VTABLE_ADD_FUNC(basic_fstream_char_vector_dtor)
1069 #if _MSVCP_VER == 110
1070 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1071 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1072 #endif
1074 __ASM_VTABLE(basic_fstream_wchar,
1075 VTABLE_ADD_FUNC(basic_fstream_wchar_vector_dtor)
1076 #if _MSVCP_VER == 110
1077 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1078 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1079 #endif
1081 __ASM_VTABLE(basic_fstream_short,
1082 VTABLE_ADD_FUNC(basic_fstream_wchar_vector_dtor)
1083 #if _MSVCP_VER == 110
1084 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1085 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1086 #endif
1088 __ASM_VTABLE(basic_ostringstream_char,
1089 VTABLE_ADD_FUNC(basic_ostringstream_char_vector_dtor)
1090 #if _MSVCP_VER == 110
1091 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1092 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1093 #endif
1095 __ASM_VTABLE(basic_ostringstream_wchar,
1096 VTABLE_ADD_FUNC(basic_ostringstream_wchar_vector_dtor)
1097 #if _MSVCP_VER == 110
1098 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1099 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1100 #endif
1102 __ASM_VTABLE(basic_ostringstream_short,
1103 VTABLE_ADD_FUNC(basic_ostringstream_wchar_vector_dtor)
1104 #if _MSVCP_VER == 110
1105 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1106 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1107 #endif
1109 __ASM_VTABLE(basic_istringstream_char,
1110 VTABLE_ADD_FUNC(basic_istringstream_char_vector_dtor)
1111 #if _MSVCP_VER == 110
1112 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1113 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1114 #endif
1116 __ASM_VTABLE(basic_istringstream_wchar,
1117 VTABLE_ADD_FUNC(basic_istringstream_wchar_vector_dtor)
1118 #if _MSVCP_VER == 110
1119 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1120 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1121 #endif
1123 __ASM_VTABLE(basic_istringstream_short,
1124 VTABLE_ADD_FUNC(basic_istringstream_wchar_vector_dtor)
1125 #if _MSVCP_VER == 110
1126 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1127 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1128 #endif
1130 __ASM_VTABLE(basic_stringstream_char,
1131 VTABLE_ADD_FUNC(basic_stringstream_char_vector_dtor)
1132 #if _MSVCP_VER == 110
1133 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1134 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1135 #endif
1137 __ASM_VTABLE(basic_stringstream_wchar,
1138 VTABLE_ADD_FUNC(basic_stringstream_wchar_vector_dtor)
1139 #if _MSVCP_VER == 110
1140 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1141 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1142 #endif
1144 __ASM_VTABLE(basic_stringstream_short,
1145 VTABLE_ADD_FUNC(basic_stringstream_wchar_vector_dtor)
1146 #if _MSVCP_VER == 110
1147 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1148 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1149 #endif
1151 __ASM_VTABLE(strstreambuf,
1152 VTABLE_ADD_FUNC(strstreambuf_vector_dtor)
1153 VTABLE_ADD_FUNC(strstreambuf_overflow)
1154 VTABLE_ADD_FUNC(strstreambuf_pbackfail)
1155 VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc)
1156 VTABLE_ADD_FUNC(strstreambuf_underflow)
1157 VTABLE_ADD_FUNC(basic_streambuf_char_uflow)
1158 VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn)
1159 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
1160 VTABLE_ADD_FUNC(basic_streambuf_char__Xsgetn_s)
1161 #endif
1162 VTABLE_ADD_FUNC(basic_streambuf_char_xsputn)
1163 VTABLE_ADD_FUNC(strstreambuf_seekoff)
1164 VTABLE_ADD_FUNC(strstreambuf_seekpos)
1165 VTABLE_ADD_FUNC(basic_streambuf_char_setbuf)
1166 VTABLE_ADD_FUNC(basic_streambuf_char_sync)
1167 VTABLE_ADD_FUNC(basic_streambuf_char_imbue));
1168 __ASM_VTABLE(ostrstream,
1169 VTABLE_ADD_FUNC(ostrstream_vector_dtor)
1170 #if _MSVCP_VER == 110
1171 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1172 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1173 #endif
1175 __ASM_VTABLE(strstream,
1176 VTABLE_ADD_FUNC(strstream_vector_dtor)
1177 #if _MSVCP_VER == 110
1178 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1179 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1180 #endif
1182 __ASM_BLOCK_END
1184 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD00@Z */
1185 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD00@Z */
1186 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setp_next, 16)
1187 void __thiscall basic_streambuf_char_setp_next(basic_streambuf_char *this, char *first, char *next, char *last)
1189 TRACE("(%p %p %p %p)\n", this, first, next, last);
1191 this->wbuf = first;
1192 this->wpos = next;
1193 this->wsize = last-next;
1196 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD0@Z */
1197 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD0@Z */
1198 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setp, 12)
1199 void __thiscall basic_streambuf_char_setp(basic_streambuf_char *this, char *first, char *last)
1201 basic_streambuf_char_setp_next(this, first, first, last);
1204 /* ?setg@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD00@Z */
1205 /* ?setg@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD00@Z */
1206 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setg, 16)
1207 void __thiscall basic_streambuf_char_setg(basic_streambuf_char *this, char *first, char *next, char *last)
1209 TRACE("(%p %p %p %p)\n", this, first, next, last);
1211 this->rbuf = first;
1212 this->rpos = next;
1213 this->rsize = last-next;
1216 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXXZ */
1217 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXXZ */
1218 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Init_empty, 4)
1219 void __thiscall basic_streambuf_char__Init_empty(basic_streambuf_char *this)
1221 TRACE("(%p)\n", this);
1223 this->prbuf = &this->rbuf;
1224 this->pwbuf = &this->wbuf;
1225 this->prpos = &this->rpos;
1226 this->pwpos = &this->wpos;
1227 this->prsize = &this->rsize;
1228 this->pwsize = &this->wsize;
1230 basic_streambuf_char_setp(this, NULL, NULL);
1231 basic_streambuf_char_setg(this, NULL, NULL, NULL);
1234 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAE@W4_Uninitialized@1@@Z */
1235 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@W4_Uninitialized@1@@Z */
1236 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_ctor_uninitialized, 8)
1237 basic_streambuf_char* __thiscall basic_streambuf_char_ctor_uninitialized(basic_streambuf_char *this, int uninitialized)
1239 TRACE("(%p %d)\n", this, uninitialized);
1240 this->vtable = &basic_streambuf_char_vtable;
1241 #if _MSVCP_VER >= 70 && _MSVCP_VER <= 100
1242 mutex_ctor(&this->lock);
1243 #endif
1244 return this;
1247 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAE@XZ */
1248 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@XZ */
1249 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_ctor, 4)
1250 basic_streambuf_char* __thiscall basic_streambuf_char_ctor(basic_streambuf_char *this)
1252 TRACE("(%p)\n", this);
1254 this->vtable = &basic_streambuf_char_vtable;
1255 #if _MSVCP_VER >= 70 && _MSVCP_VER <= 100
1256 mutex_ctor(&this->lock);
1257 #endif
1258 #if _MSVCP_VER >= 70
1259 this->loc = operator_new(sizeof(locale));
1260 #endif
1261 locale_ctor(IOS_LOCALE(this));
1262 basic_streambuf_char__Init_empty(this);
1264 return this;
1267 /* ??1?$basic_streambuf@DU?$char_traits@D@std@@@std@@UAE@XZ */
1268 /* ??1?$basic_streambuf@DU?$char_traits@D@std@@@std@@UEAA@XZ */
1269 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_dtor, 4)
1270 void __thiscall basic_streambuf_char_dtor(basic_streambuf_char *this)
1272 TRACE("(%p)\n", this);
1274 #if _MSVCP_VER >= 70 && _MSVCP_VER <= 100
1275 mutex_dtor(&this->lock);
1276 #endif
1277 locale_dtor(IOS_LOCALE(this));
1278 #if _MSVCP_VER >= 70
1279 operator_delete(this->loc);
1280 #endif
1283 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_vector_dtor, 8)
1284 basic_streambuf_char* __thiscall basic_streambuf_char_vector_dtor(basic_streambuf_char *this, unsigned int flags)
1286 TRACE("(%p %x)\n", this, flags);
1287 if(flags & 2) {
1288 /* we have an array, with the number of elements stored before the first object */
1289 INT_PTR i, *ptr = (INT_PTR *)this-1;
1291 for(i=*ptr-1; i>=0; i--)
1292 basic_streambuf_char_dtor(this+i);
1293 operator_delete(ptr);
1294 } else {
1295 basic_streambuf_char_dtor(this);
1296 if(flags & 1)
1297 operator_delete(this);
1300 return this;
1303 /* ?_Gnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEHXZ */
1304 /* ?_Gnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBA_JXZ */
1305 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gnavail, 4)
1306 streamsize __thiscall basic_streambuf_char__Gnavail(const basic_streambuf_char *this)
1308 TRACE("(%p)\n", this);
1309 return *this->prpos ? *this->prsize : 0;
1312 /* ?_Gndec@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
1313 /* ?_Gndec@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
1314 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gndec, 4)
1315 char* __thiscall basic_streambuf_char__Gndec(basic_streambuf_char *this)
1317 TRACE("(%p)\n", this);
1318 (*this->prsize)++;
1319 (*this->prpos)--;
1320 return *this->prpos;
1323 /* ?_Gninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
1324 /* ?_Gninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
1325 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gninc, 4)
1326 char* __thiscall basic_streambuf_char__Gninc(basic_streambuf_char *this)
1328 TRACE("(%p)\n", this);
1329 (*this->prsize)--;
1330 return (*this->prpos)++;
1333 /* ?_Gnpreinc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
1334 /* ?_Gnpreinc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
1335 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gnpreinc, 4)
1336 char* __thiscall basic_streambuf_char__Gnpreinc(basic_streambuf_char *this)
1338 TRACE("(%p)\n", this);
1339 (*this->prsize)--;
1340 (*this->prpos)++;
1341 return *this->prpos;
1344 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAPAD0PAH001@Z */
1345 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAPEAD0PEAH001@Z */
1346 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Init, 28)
1347 void __thiscall basic_streambuf_char__Init(basic_streambuf_char *this, char **gf, char **gn, int *gc, char **pf, char **pn, int *pc)
1349 TRACE("(%p %p %p %p %p %p %p)\n", this, gf, gn, gc, pf, pn, pc);
1351 this->prbuf = gf;
1352 this->pwbuf = pf;
1353 this->prpos = gn;
1354 this->pwpos = pn;
1355 this->prsize = gc;
1356 this->pwsize = pc;
1359 /* ?_Lock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
1360 /* ?_Lock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
1361 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Lock, 4)
1362 #if _MSVCP_VER >= 100
1363 #define call_basic_streambuf_char__Lock(this) CALL_VTBL_FUNC(this, 4, void, (basic_streambuf_char*), (this))
1364 #else
1365 #define call_basic_streambuf_char__Lock(this) basic_streambuf_char__Lock(this)
1366 #endif
1367 void __thiscall basic_streambuf_char__Lock(basic_streambuf_char *this)
1369 TRACE("(%p)\n", this);
1370 #if _MSVCP_VER >= 70 && _MSVCP_VER <= 100
1371 mutex_lock(&this->lock);
1372 #endif
1375 /* ?_Pnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEHXZ */
1376 /* ?_Pnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBA_JXZ */
1377 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Pnavail, 4)
1378 streamsize __thiscall basic_streambuf_char__Pnavail(const basic_streambuf_char *this)
1380 TRACE("(%p)\n", this);
1381 return *this->pwpos ? *this->pwsize : 0;
1384 /* ?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
1385 /* ?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
1386 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Pninc, 4)
1387 char* __thiscall basic_streambuf_char__Pninc(basic_streambuf_char *this)
1389 TRACE("(%p)\n", this);
1390 (*this->pwsize)--;
1391 return (*this->pwpos)++;
1394 /* ?underflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
1395 /* ?underflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
1396 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_underflow, 4)
1397 #if _MSVCP_VER >= 100
1398 #define call_basic_streambuf_char_underflow(this) CALL_VTBL_FUNC(this, 24, int, (basic_streambuf_char*), (this))
1399 #else
1400 #define call_basic_streambuf_char_underflow(this) CALL_VTBL_FUNC(this, 16, int, (basic_streambuf_char*), (this))
1401 #endif
1402 int __thiscall basic_streambuf_char_underflow(basic_streambuf_char *this)
1404 TRACE("(%p)\n", this);
1405 return EOF;
1408 /* ?uflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
1409 /* ?uflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
1410 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_uflow, 4)
1411 #if _MSVCP_VER >= 100
1412 #define call_basic_streambuf_char_uflow(this) CALL_VTBL_FUNC(this, 28, int, (basic_streambuf_char*), (this))
1413 #else
1414 #define call_basic_streambuf_char_uflow(this) CALL_VTBL_FUNC(this, 20, int, (basic_streambuf_char*), (this))
1415 #endif
1416 int __thiscall basic_streambuf_char_uflow(basic_streambuf_char *this)
1418 int ret;
1420 TRACE("(%p)\n", this);
1422 if(call_basic_streambuf_char_underflow(this)==EOF)
1423 return EOF;
1425 ret = (unsigned char)**this->prpos;
1426 (*this->prsize)--;
1427 (*this->prpos)++;
1428 return ret;
1431 /* ?_Xsgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHPADIH@Z */
1432 /* ?_Xsgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEAD_K_J@Z */
1433 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
1434 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Xsgetn_s, 20)
1435 #else
1436 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Xsgetn_s, 16)
1437 #endif
1438 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
1439 #define call_basic_streambuf_char__Xsgetn_s(this, ptr, size, count) CALL_VTBL_FUNC(this, 28, \
1440 streamsize, (basic_streambuf_char*, char*, size_t, streamsize), (this, ptr, size, count))
1441 #else
1442 #define call_basic_streambuf_char__Xsgetn_s(this, ptr, size, count) basic_streambuf_char__Xsgetn_s(this, ptr, size, count)
1443 #endif
1444 streamsize __thiscall basic_streambuf_char__Xsgetn_s(basic_streambuf_char *this, char *ptr, size_t size, streamsize count)
1446 streamsize copied, chunk;
1447 int c;
1449 TRACE("(%p %p %Iu %s)\n", this, ptr, size, wine_dbgstr_longlong(count));
1451 for(copied=0; copied<count && size;) {
1452 chunk = basic_streambuf_char__Gnavail(this);
1453 if(chunk > count-copied)
1454 chunk = count-copied;
1456 if(chunk > 0) {
1457 memcpy_s(ptr+copied, size, *this->prpos, chunk);
1458 *this->prpos += chunk;
1459 *this->prsize -= chunk;
1460 copied += chunk;
1461 size -= chunk;
1462 }else if((c = call_basic_streambuf_char_uflow(this)) != EOF) {
1463 ptr[copied] = c;
1464 copied++;
1465 size--;
1466 }else {
1467 break;
1471 return copied;
1474 /* ?_Sgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPADIH@Z */
1475 /* ?_Sgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_K_J@Z */
1476 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
1477 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Sgetn_s, 20)
1478 #else
1479 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Sgetn_s, 16)
1480 #endif
1481 streamsize __thiscall basic_streambuf_char__Sgetn_s(basic_streambuf_char *this, char *ptr, size_t size, streamsize count)
1483 TRACE("(%p %p %Iu %s)\n", this, ptr, size, wine_dbgstr_longlong(count));
1484 return call_basic_streambuf_char__Xsgetn_s(this, ptr, size, count);
1487 /* ?_Unlock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
1488 /* ?_Unlock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
1489 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Unlock, 4)
1490 #if _MSVCP_VER >= 100
1491 #define call_basic_streambuf_char__Unlock(this) CALL_VTBL_FUNC(this, 8, void, (basic_streambuf_char*), (this))
1492 #else
1493 #define call_basic_streambuf_char__Unlock(this) basic_streambuf_char__Unlock(this)
1494 #endif
1495 void __thiscall basic_streambuf_char__Unlock(basic_streambuf_char *this)
1497 TRACE("(%p)\n", this);
1498 #if _MSVCP_VER >= 70 && _MSVCP_VER <= 100
1499 mutex_unlock(&this->lock);
1500 #endif
1503 /* ?eback@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1504 /* ?eback@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1505 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_eback, 4)
1506 char* __thiscall basic_streambuf_char_eback(const basic_streambuf_char *this)
1508 TRACE("(%p)\n", this);
1509 return *this->prbuf;
1512 /* ?gptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1513 /* ?gptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1514 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_gptr, 4)
1515 char* __thiscall basic_streambuf_char_gptr(const basic_streambuf_char *this)
1517 TRACE("(%p)\n", this);
1518 return *this->prpos;
1521 /* ?egptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1522 /* ?egptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1523 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_egptr, 4)
1524 char* __thiscall basic_streambuf_char_egptr(const basic_streambuf_char *this)
1526 TRACE("(%p)\n", this);
1527 return *this->prpos+*this->prsize;
1530 /* ?epptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1531 /* ?epptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1532 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_epptr, 4)
1533 char* __thiscall basic_streambuf_char_epptr(const basic_streambuf_char *this)
1535 TRACE("(%p)\n", this);
1536 return *this->pwpos+*this->pwsize;
1539 /* ?gbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXH@Z */
1540 /* ?gbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXH@Z */
1541 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_gbump, 8)
1542 void __thiscall basic_streambuf_char_gbump(basic_streambuf_char *this, int off)
1544 TRACE("(%p %d)\n", this, off);
1545 *this->prpos += off;
1546 *this->prsize -= off;
1549 /* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AVlocale@2@XZ */
1550 /* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QBE?AVlocale@2@XZ */
1551 /* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AVlocale@2@XZ */
1552 /* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEBA?AVlocale@2@XZ */
1553 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_getloc, 8)
1554 locale* __thiscall basic_streambuf_char_getloc(const basic_streambuf_char *this, locale *ret)
1556 TRACE("(%p)\n", this);
1557 return locale_copy_ctor(ret, IOS_LOCALE(this));
1560 /* ?imbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEXABVlocale@2@@Z */
1561 /* ?imbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAXAEBVlocale@2@@Z */
1562 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_imbue, 8)
1563 #if _MSVCP_VER >= 100
1564 #define call_basic_streambuf_char_imbue(this, loc) CALL_VTBL_FUNC(this, 56, void, (basic_streambuf_char*, const locale*), (this, loc))
1565 #elif _MSVCP_VER >= 80
1566 #define call_basic_streambuf_char_imbue(this, loc) CALL_VTBL_FUNC(this, 52, void, (basic_streambuf_char*, const locale*), (this, loc))
1567 #else
1568 #define call_basic_streambuf_char_imbue(this, loc) CALL_VTBL_FUNC(this, 48, void, (basic_streambuf_char*, const locale*), (this, loc))
1569 #endif
1570 void __thiscall basic_streambuf_char_imbue(basic_streambuf_char *this, const locale *loc)
1572 TRACE("(%p %p)\n", this, loc);
1575 /* ?overflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
1576 /* ?overflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
1577 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_overflow, 8)
1578 #if _MSVCP_VER >= 100
1579 #define call_basic_streambuf_char_overflow(this, ch) CALL_VTBL_FUNC(this, 12, int, (basic_streambuf_char*, int), (this, ch))
1580 #else
1581 #define call_basic_streambuf_char_overflow(this, ch) CALL_VTBL_FUNC(this, 4, int, (basic_streambuf_char*, int), (this, ch))
1582 #endif
1583 int __thiscall basic_streambuf_char_overflow(basic_streambuf_char *this, int ch)
1585 TRACE("(%p %d)\n", this, ch);
1586 return EOF;
1589 /* ?pbackfail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
1590 /* ?pbackfail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
1591 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pbackfail, 8)
1592 #if _MSVCP_VER >= 100
1593 #define call_basic_streambuf_char_pbackfail(this, ch) CALL_VTBL_FUNC(this, 16, int, (basic_streambuf_char*, int), (this, ch))
1594 #else
1595 #define call_basic_streambuf_char_pbackfail(this, ch) CALL_VTBL_FUNC(this, 8, int, (basic_streambuf_char*, int), (this, ch))
1596 #endif
1597 int __thiscall basic_streambuf_char_pbackfail(basic_streambuf_char *this, int ch)
1599 TRACE("(%p %d)\n", this, ch);
1600 return EOF;
1603 /* ?pbase@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1604 /* ?pbase@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1605 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pbase, 4)
1606 char* __thiscall basic_streambuf_char_pbase(const basic_streambuf_char *this)
1608 TRACE("(%p)\n", this);
1609 return *this->pwbuf;
1612 /* ?pbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXH@Z */
1613 /* ?pbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXH@Z */
1614 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pbump, 8)
1615 void __thiscall basic_streambuf_char_pbump(basic_streambuf_char *this, int off)
1617 TRACE("(%p %d)\n", this, off);
1618 *this->pwpos += off;
1619 *this->pwsize -= off;
1622 /* ?pptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1623 /* ?pptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1624 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pptr, 4)
1625 char* __thiscall basic_streambuf_char_pptr(const basic_streambuf_char *this)
1627 TRACE("(%p)\n", this);
1628 return *this->pwpos;
1631 /* ?pubimbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
1632 /* ?pubimbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
1633 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubimbue, 12)
1634 locale* __thiscall basic_streambuf_char_pubimbue(basic_streambuf_char *this, locale *ret, const locale *loc)
1636 TRACE("(%p %p)\n", this, loc);
1637 memcpy(ret, IOS_LOCALE(this), sizeof(locale));
1638 call_basic_streambuf_char_imbue(this, loc);
1639 locale_copy_ctor(IOS_LOCALE(this), loc);
1640 return ret;
1643 /* ?seekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
1644 /* ?seekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@_JW4seekdir@ios_base@2@H@Z */
1645 /* ?seekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
1646 /* ?seekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
1647 #if STREAMOFF_BITS == 64
1648 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_seekoff, 24)
1649 #else
1650 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_seekoff, 20)
1651 #endif
1652 #if _MSVCP_VER >= 100
1653 #define call_basic_streambuf_char_seekoff(this, ret, off, way, mode) \
1654 CALL_VTBL_FUNC(this, 40, fpos_mbstatet*, (basic_streambuf_char*, fpos_mbstatet*, streamoff, int, int), (this, ret, off, way, mode))
1655 #elif _MSVCP_VER >= 80
1656 #define call_basic_streambuf_char_seekoff(this, ret, off, way, mode) \
1657 CALL_VTBL_FUNC(this, 36, fpos_mbstatet*, (basic_streambuf_char*, fpos_mbstatet*, streamoff, int, int), (this, ret, off, way, mode))
1658 #else
1659 #define call_basic_streambuf_char_seekoff(this, ret, off, way, mode) \
1660 CALL_VTBL_FUNC(this, 32, fpos_mbstatet*, (basic_streambuf_char*, fpos_mbstatet*, streamoff, int, int), (this, ret, off, way, mode))
1661 #endif
1662 fpos_mbstatet* __thiscall basic_streambuf_char_seekoff(basic_streambuf_char *this,
1663 fpos_mbstatet *ret, streamoff off, int way, int mode)
1665 TRACE("(%p %s %d %d)\n", this, wine_dbgstr_longlong(off), way, mode);
1666 ret->off = -1;
1667 ret->pos = 0;
1668 memset(&ret->state, 0, sizeof(ret->state));
1669 return ret;
1672 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@JHH@Z */
1673 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@_JHH@Z */
1674 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@JFF@Z */
1675 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@_JFF@Z */
1676 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
1677 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@_JW4seekdir@ios_base@2@H@Z */
1678 #if STREAMOFF_BITS == 64
1679 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekoff, 24)
1680 #else
1681 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekoff, 20)
1682 #endif
1683 fpos_mbstatet* __thiscall basic_streambuf_char_pubseekoff(basic_streambuf_char *this,
1684 fpos_mbstatet *ret, streamoff off, int way, int mode)
1686 TRACE("(%p %s %d %d)\n", this, wine_dbgstr_longlong(off), way, mode);
1687 return call_basic_streambuf_char_seekoff(this, ret, off, way, mode);
1690 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@JII@Z */
1691 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@_JII@Z */
1692 #if STREAMOFF_BITS == 64
1693 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekoff_old, 24)
1694 #else
1695 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekoff_old, 20)
1696 #endif
1697 fpos_mbstatet* __thiscall basic_streambuf_char_pubseekoff_old(basic_streambuf_char *this,
1698 fpos_mbstatet *ret, streamoff off, unsigned int way, unsigned int mode)
1700 TRACE("(%p %s %d %d)\n", this, wine_dbgstr_longlong(off), way, mode);
1701 return basic_streambuf_char_pubseekoff(this, ret, off, way, mode);
1704 /* ?seekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
1705 /* ?seekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
1706 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_seekpos, 36)
1707 #if _MSVCP_VER >= 100
1708 #define call_basic_streambuf_char_seekpos(this, ret, pos, mode) \
1709 CALL_VTBL_FUNC(this, 44, fpos_mbstatet*, (basic_streambuf_char*, fpos_mbstatet*, fpos_mbstatet, int), (this, ret, pos, mode))
1710 #elif _MSVCP_VER >= 80
1711 #define call_basic_streambuf_char_seekpos(this, ret, pos, mode) \
1712 CALL_VTBL_FUNC(this, 40, fpos_mbstatet*, (basic_streambuf_char*, fpos_mbstatet*, fpos_mbstatet, int), (this, ret, pos, mode))
1713 #else
1714 #define call_basic_streambuf_char_seekpos(this, ret, pos, mode) \
1715 CALL_VTBL_FUNC(this, 36, fpos_mbstatet*, (basic_streambuf_char*, fpos_mbstatet*, fpos_mbstatet, int), (this, ret, pos, mode))
1716 #endif
1717 fpos_mbstatet* __thiscall basic_streambuf_char_seekpos(basic_streambuf_char *this,
1718 fpos_mbstatet *ret, fpos_mbstatet pos, int mode)
1720 TRACE("(%p %s %d)\n", this, debugstr_fpos_mbstatet(&pos), mode);
1721 ret->off = -1;
1722 ret->pos = 0;
1723 memset(&ret->state, 0, sizeof(ret->state));
1724 return ret;
1727 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@V32@H@Z */
1728 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@V32@H@Z */
1729 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekpos, 36)
1730 fpos_mbstatet* __thiscall basic_streambuf_char_pubseekpos(basic_streambuf_char *this,
1731 fpos_mbstatet *ret, fpos_mbstatet pos, int mode)
1733 TRACE("(%p %s %d)\n", this, debugstr_fpos_mbstatet(&pos), mode);
1734 return call_basic_streambuf_char_seekpos(this, ret, pos, mode);
1737 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@V32@I@Z */
1738 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@V32@I@Z */
1739 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekpos_old, 36)
1740 fpos_mbstatet* __thiscall basic_streambuf_char_pubseekpos_old(basic_streambuf_char *this,
1741 fpos_mbstatet *ret, fpos_mbstatet pos, unsigned int mode)
1743 TRACE("(%p %s %d)\n", this, debugstr_fpos_mbstatet(&pos), mode);
1744 return basic_streambuf_char_pubseekpos(this, ret, pos, mode);
1747 /* ?setbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEPAV12@PADH@Z */
1748 /* ?setbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAPEAV12@PEAD_J@Z */
1749 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
1750 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setbuf, 16)
1751 #else
1752 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setbuf, 12)
1753 #endif
1754 #if _MSVCP_VER >= 100
1755 #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))
1756 #elif _MSVCP_VER >= 80
1757 #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))
1758 #else
1759 #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))
1760 #endif
1761 basic_streambuf_char* __thiscall basic_streambuf_char_setbuf(basic_streambuf_char *this, char *buf, streamsize count)
1763 TRACE("(%p %p %s)\n", this, buf, wine_dbgstr_longlong(count));
1764 return this;
1767 /* ?pubsetbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PADH@Z */
1768 /* ?pubsetbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEAD_J@Z */
1769 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
1770 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubsetbuf, 16)
1771 #else
1772 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubsetbuf, 12)
1773 #endif
1774 basic_streambuf_char* __thiscall basic_streambuf_char_pubsetbuf(basic_streambuf_char *this, char *buf, streamsize count)
1776 TRACE("(%p %p %s)\n", this, buf, wine_dbgstr_longlong(count));
1777 return call_basic_streambuf_char_setbuf(this, buf, count);
1780 /* ?sync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
1781 /* ?sync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
1782 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sync, 4)
1783 #if _MSVCP_VER >= 100
1784 #define call_basic_streambuf_char_sync(this) CALL_VTBL_FUNC(this, 52, int, (basic_streambuf_char*), (this))
1785 #elif _MSVCP_VER >= 80
1786 #define call_basic_streambuf_char_sync(this) CALL_VTBL_FUNC(this, 48, int, (basic_streambuf_char*), (this))
1787 #else
1788 #define call_basic_streambuf_char_sync(this) CALL_VTBL_FUNC(this, 44, int, (basic_streambuf_char*), (this))
1789 #endif
1790 int __thiscall basic_streambuf_char_sync(basic_streambuf_char *this)
1792 TRACE("(%p)\n", this);
1793 return 0;
1796 /* ?pubsync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1797 /* ?pubsync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1798 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubsync, 4)
1799 int __thiscall basic_streambuf_char_pubsync(basic_streambuf_char *this)
1801 TRACE("(%p)\n", this);
1802 return call_basic_streambuf_char_sync(this);
1805 /* ?sgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPADH@Z */
1806 /* ?sgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_J@Z */
1807 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
1808 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sgetn, 16)
1809 #else
1810 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sgetn, 12)
1811 #endif
1812 streamsize __thiscall basic_streambuf_char_sgetn(basic_streambuf_char *this, char *ptr, streamsize count)
1814 TRACE("(%p %p %s)\n", this, ptr, wine_dbgstr_longlong(count));
1815 return call_basic_streambuf_char__Xsgetn_s(this, ptr, -1, count);
1818 /* ?showmanyc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
1819 /* ?showmanyc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JXZ */
1820 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_showmanyc, 4)
1821 #if _MSVCP_VER >= 100
1822 #define call_basic_streambuf_char_showmanyc(this) CALL_VTBL_FUNC(this, 20, streamsize, (basic_streambuf_char*), (this))
1823 #else
1824 #define call_basic_streambuf_char_showmanyc(this) CALL_VTBL_FUNC(this, 12, streamsize, (basic_streambuf_char*), (this))
1825 #endif
1826 streamsize __thiscall basic_streambuf_char_showmanyc(basic_streambuf_char *this)
1828 TRACE("(%p)\n", this);
1829 return 0;
1832 /* ?in_avail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1833 /* ?in_avail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JXZ */
1834 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_in_avail, 4)
1835 streamsize __thiscall basic_streambuf_char_in_avail(basic_streambuf_char *this)
1837 streamsize ret;
1839 TRACE("(%p)\n", this);
1841 ret = basic_streambuf_char__Gnavail(this);
1842 return ret ? ret : call_basic_streambuf_char_showmanyc(this);
1845 /* ?sputbackc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHD@Z */
1846 /* ?sputbackc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z */
1847 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputbackc, 8)
1848 int __thiscall basic_streambuf_char_sputbackc(basic_streambuf_char *this, char ch)
1850 TRACE("(%p %d)\n", this, ch);
1851 if(*this->prpos && *this->prpos>*this->prbuf && (*this->prpos)[-1]==ch) {
1852 (*this->prsize)++;
1853 (*this->prpos)--;
1854 return (unsigned char)ch;
1857 return call_basic_streambuf_char_pbackfail(this, (unsigned char)ch);
1860 /* ?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHD@Z */
1861 /* ?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z */
1862 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputc, 8)
1863 int __thiscall basic_streambuf_char_sputc(basic_streambuf_char *this, char ch)
1865 TRACE("(%p %d)\n", this, ch);
1866 return basic_streambuf_char__Pnavail(this) ?
1867 (unsigned char)(*basic_streambuf_char__Pninc(this) = ch) :
1868 call_basic_streambuf_char_overflow(this, (unsigned char)ch);
1871 /* ?sungetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1872 /* ?sungetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1873 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sungetc, 4)
1874 int __thiscall basic_streambuf_char_sungetc(basic_streambuf_char *this)
1876 TRACE("(%p)\n", this);
1877 if(*this->prpos && *this->prpos>*this->prbuf) {
1878 (*this->prsize)++;
1879 (*this->prpos)--;
1880 return (unsigned char)**this->prpos;
1883 return call_basic_streambuf_char_pbackfail(this, EOF);
1886 /* ?stossc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
1887 /* ?stossc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
1888 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_stossc, 4)
1889 void __thiscall basic_streambuf_char_stossc(basic_streambuf_char *this)
1891 TRACE("(%p)\n", this);
1892 if(basic_streambuf_char__Gnavail(this))
1893 basic_streambuf_char__Gninc(this);
1894 else
1895 call_basic_streambuf_char_uflow(this);
1898 /* ?sbumpc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1899 /* ?sbumpc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1900 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sbumpc, 4)
1901 int __thiscall basic_streambuf_char_sbumpc(basic_streambuf_char *this)
1903 TRACE("(%p)\n", this);
1904 return basic_streambuf_char__Gnavail(this) ?
1905 (int)(unsigned char)*basic_streambuf_char__Gninc(this) : call_basic_streambuf_char_uflow(this);
1908 /* ?sgetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1909 /* ?sgetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1910 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sgetc, 4)
1911 int __thiscall basic_streambuf_char_sgetc(basic_streambuf_char *this)
1913 TRACE("(%p)\n", this);
1914 return basic_streambuf_char__Gnavail(this) ?
1915 (int)(unsigned char)*basic_streambuf_char_gptr(this) : call_basic_streambuf_char_underflow(this);
1918 /* ?snextc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1919 /* ?snextc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1920 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_snextc, 4)
1921 int __thiscall basic_streambuf_char_snextc(basic_streambuf_char *this)
1923 TRACE("(%p)\n", this);
1925 if(basic_streambuf_char__Gnavail(this) > 1)
1926 return (unsigned char)*basic_streambuf_char__Gnpreinc(this);
1927 return basic_streambuf_char_sbumpc(this)==EOF ?
1928 EOF : basic_streambuf_char_sgetc(this);
1931 /* ?xsgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHPADH@Z */
1932 /* ?xsgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEAD_J@Z */
1933 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
1934 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_xsgetn, 16)
1935 #else
1936 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_xsgetn, 12)
1937 #endif
1938 #if _MSVCP_VER >= 100
1939 #define call_basic_streambuf_char_xsgetn(this, ptr, count) CALL_VTBL_FUNC(this, 32, streamsize, (basic_streambuf_char*, char*, streamsize), (this, ptr, count))
1940 #else
1941 #define call_basic_streambuf_char_xsgetn(this, ptr, count) CALL_VTBL_FUNC(this, 24, streamsize, (basic_streambuf_char*, char*, streamsize), (this, ptr, count))
1942 #endif
1943 streamsize __thiscall basic_streambuf_char_xsgetn(basic_streambuf_char *this, char *ptr, streamsize count)
1945 TRACE("(%p %p %s)\n", this, ptr, wine_dbgstr_longlong(count));
1946 return call_basic_streambuf_char__Xsgetn_s(this, ptr, -1, count);
1949 /* ?xsputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHPBDH@Z */
1950 /* ?xsputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEBD_J@Z */
1951 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
1952 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_xsputn, 16)
1953 #else
1954 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_xsputn, 12)
1955 #endif
1956 #if _MSVCP_VER >= 100
1957 #define call_basic_streambuf_char_xsputn(this, ptr, count) CALL_VTBL_FUNC(this, 36, streamsize, (basic_streambuf_char*, const char*, streamsize), (this, ptr, count))
1958 #elif _MSVCP_VER >= 80
1959 #define call_basic_streambuf_char_xsputn(this, ptr, count) CALL_VTBL_FUNC(this, 32, streamsize, (basic_streambuf_char*, const char*, streamsize), (this, ptr, count))
1960 #else
1961 #define call_basic_streambuf_char_xsputn(this, ptr, count) CALL_VTBL_FUNC(this, 28, streamsize, (basic_streambuf_char*, const char*, streamsize), (this, ptr, count))
1962 #endif
1963 streamsize __thiscall basic_streambuf_char_xsputn(basic_streambuf_char *this, const char *ptr, streamsize count)
1965 streamsize copied, chunk;
1967 TRACE("(%p %p %s)\n", this, ptr, wine_dbgstr_longlong(count));
1969 for(copied=0; copied<count;) {
1970 chunk = basic_streambuf_char__Pnavail(this);
1971 if(chunk > count-copied)
1972 chunk = count-copied;
1974 if(chunk > 0) {
1975 memcpy(*this->pwpos, ptr+copied, chunk);
1976 *this->pwpos += chunk;
1977 *this->pwsize -= chunk;
1978 copied += chunk;
1979 }else if(call_basic_streambuf_char_overflow(this, (unsigned char)ptr[copied]) != EOF) {
1980 copied++;
1981 }else {
1982 break;
1986 return copied;
1989 /* ?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPBDH@Z */
1990 /* ?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEBD_J@Z */
1991 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
1992 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputn, 16)
1993 #else
1994 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputn, 12)
1995 #endif
1996 streamsize __thiscall basic_streambuf_char_sputn(basic_streambuf_char *this, const char *ptr, streamsize count)
1998 TRACE("(%p %p %s)\n", this, ptr, wine_dbgstr_longlong(count));
1999 return call_basic_streambuf_char_xsputn(this, ptr, count);
2002 /* ?swap@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXAAV12@@Z */
2003 /* ?swap@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXAEAV12@@Z */
2004 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_swap, 8)
2005 void __thiscall basic_streambuf_char_swap(basic_streambuf_char *this, basic_streambuf_char *r)
2007 char *wfirst, *wnext, *wlast, *rfirst, *rnext, *rlast;
2008 #if _MSVCP_VER < 70
2009 locale loc;
2010 #else
2011 locale *loc;
2012 #endif
2014 TRACE("(%p %p)\n", this, r);
2016 if(this == r)
2017 return;
2019 wfirst = *this->pwbuf;
2020 wnext = *this->pwpos;
2021 wlast = *this->pwpos + *this->pwsize;
2022 rfirst = *this->prbuf;
2023 rnext = *this->prpos;
2024 rlast = *this->prpos + *this->prsize;
2025 loc = this->loc;
2027 basic_streambuf_char_setp_next(this, *r->pwbuf, *r->pwpos, *r->pwpos + *r->pwsize);
2028 basic_streambuf_char_setg(this, *r->prbuf, *r->prpos, *r->prpos + *r->prsize);
2029 this->loc = r->loc;
2031 basic_streambuf_char_setp_next(r, wfirst, wnext, wlast);
2032 basic_streambuf_char_setg(r, rfirst, rnext, rlast);
2033 r->loc = loc;
2036 /* ?setp@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXPA_W00@Z */
2037 /* ?setp@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEA_W00@Z */
2038 /* ?setp@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXPAG00@Z */
2039 /* ?setp@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXPEAG00@Z */
2040 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setp_next, 16)
2041 void __thiscall basic_streambuf_wchar_setp_next(basic_streambuf_wchar *this, wchar_t *first, wchar_t *next, wchar_t *last)
2043 TRACE("(%p %p %p %p)\n", this, first, next, last);
2045 this->wbuf = first;
2046 this->wpos = next;
2047 this->wsize = last-next;
2050 /* ?setp@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXPA_W0@Z */
2051 /* ?setp@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEA_W0@Z */
2052 /* ?setp@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXPAG0@Z */
2053 /* ?setp@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXPEAG0@Z */
2054 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setp, 12)
2055 void __thiscall basic_streambuf_wchar_setp(basic_streambuf_wchar *this, wchar_t *first, wchar_t *last)
2057 basic_streambuf_wchar_setp_next(this, first, first, last);
2060 /* ?setg@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXPA_W00@Z */
2061 /* ?setg@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEA_W00@Z */
2062 /* ?setg@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXPAG00@Z */
2063 /* ?setg@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXPEAG00@Z */
2064 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setg, 16)
2065 void __thiscall basic_streambuf_wchar_setg(basic_streambuf_wchar *this, wchar_t *first, wchar_t *next, wchar_t *last)
2067 TRACE("(%p %p %p %p)\n", this, first, next, last);
2069 this->rbuf = first;
2070 this->rpos = next;
2071 this->rsize = last-next;
2074 /* ?_Init@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXXZ */
2075 /* ?_Init@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXXZ */
2076 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXXZ */
2077 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXXZ */
2078 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Init_empty, 4)
2079 void __thiscall basic_streambuf_wchar__Init_empty(basic_streambuf_wchar *this)
2081 TRACE("(%p)\n", this);
2083 this->prbuf = &this->rbuf;
2084 this->pwbuf = &this->wbuf;
2085 this->prpos = &this->rpos;
2086 this->pwpos = &this->wpos;
2087 this->prsize = &this->rsize;
2088 this->pwsize = &this->wsize;
2090 basic_streambuf_wchar_setp(this, NULL, NULL);
2091 basic_streambuf_wchar_setg(this, NULL, NULL, NULL);
2094 /* ??0?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAE@W4_Uninitialized@1@@Z */
2095 /* ??0?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAA@W4_Uninitialized@1@@Z */
2096 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_ctor_uninitialized, 8)
2097 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_ctor_uninitialized(basic_streambuf_wchar *this, int uninitialized)
2099 TRACE("(%p %d)\n", this, uninitialized);
2100 this->vtable = &basic_streambuf_wchar_vtable;
2101 #if _MSVCP_VER >= 70 && _MSVCP_VER <= 100
2102 mutex_ctor(&this->lock);
2103 #endif
2104 return this;
2107 /* ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAE@W4_Uninitialized@1@@Z */
2108 /* ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAA@W4_Uninitialized@1@@Z */
2109 DEFINE_THISCALL_WRAPPER(basic_streambuf_short_ctor_uninitialized, 8)
2110 basic_streambuf_wchar* __thiscall basic_streambuf_short_ctor_uninitialized(basic_streambuf_wchar *this, int uninitialized)
2112 TRACE("(%p %d)\n", this, uninitialized);
2113 basic_streambuf_wchar_ctor_uninitialized(this, uninitialized);
2114 this->vtable = &basic_streambuf_short_vtable;
2115 return this;
2118 /* ??0?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAE@XZ */
2119 /* ??0?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAA@XZ */
2120 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_ctor, 4)
2121 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_ctor(basic_streambuf_wchar *this)
2123 TRACE("(%p)\n", this);
2125 this->vtable = &basic_streambuf_wchar_vtable;
2126 #if _MSVCP_VER >= 70 && _MSVCP_VER <= 100
2127 mutex_ctor(&this->lock);
2128 #endif
2129 #if _MSVCP_VER >= 70
2130 this->loc = operator_new(sizeof(locale));
2131 #endif
2132 locale_ctor(IOS_LOCALE(this));
2133 basic_streambuf_wchar__Init_empty(this);
2135 return this;
2138 /* ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAE@XZ */
2139 /* ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAA@XZ */
2140 DEFINE_THISCALL_WRAPPER(basic_streambuf_short_ctor, 4)
2141 basic_streambuf_wchar* __thiscall basic_streambuf_short_ctor(basic_streambuf_wchar *this)
2143 TRACE("(%p)\n", this);
2144 basic_streambuf_wchar_ctor(this);
2145 this->vtable = &basic_streambuf_short_vtable;
2146 return this;
2149 /* ??1?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
2150 /* ??1?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
2151 /* ??1?$basic_streambuf@GU?$char_traits@G@std@@@std@@UAE@XZ */
2152 /* ??1?$basic_streambuf@GU?$char_traits@G@std@@@std@@UEAA@XZ */
2153 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_dtor, 4)
2154 void __thiscall basic_streambuf_wchar_dtor(basic_streambuf_wchar *this)
2156 TRACE("(%p)\n", this);
2158 #if _MSVCP_VER >= 70 && _MSVCP_VER <= 100
2159 mutex_dtor(&this->lock);
2160 #endif
2161 locale_dtor(IOS_LOCALE(this));
2162 #if _MSVCP_VER >= 70
2163 operator_delete(this->loc);
2164 #endif
2167 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_vector_dtor, 8)
2168 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_vector_dtor(basic_streambuf_wchar *this, unsigned int flags)
2170 TRACE("(%p %x)\n", this, flags);
2171 if(flags & 2) {
2172 /* we have an array, with the number of elements stored before the first object */
2173 INT_PTR i, *ptr = (INT_PTR *)this-1;
2175 for(i=*ptr-1; i>=0; i--)
2176 basic_streambuf_wchar_dtor(this+i);
2177 operator_delete(ptr);
2178 } else {
2179 basic_streambuf_wchar_dtor(this);
2180 if(flags & 1)
2181 operator_delete(this);
2184 return this;
2187 /* ?_Gnavail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEHXZ */
2188 /* ?_Gnavail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBA_JXZ */
2189 /* ?_Gnavail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEHXZ */
2190 /* ?_Gnavail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBA_JXZ */
2191 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Gnavail, 4)
2192 streamsize __thiscall basic_streambuf_wchar__Gnavail(const basic_streambuf_wchar *this)
2194 TRACE("(%p)\n", this);
2195 return *this->prpos ? *this->prsize : 0;
2198 /* ?_Gndec@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEPA_WXZ */
2199 /* ?_Gndec@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAPEA_WXZ */
2200 /* ?_Gndec@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ */
2201 /* ?_Gndec@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAPEAGXZ */
2202 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Gndec, 4)
2203 wchar_t* __thiscall basic_streambuf_wchar__Gndec(basic_streambuf_wchar *this)
2205 TRACE("(%p)\n", this);
2206 (*this->prsize)++;
2207 (*this->prpos)--;
2208 return *this->prpos;
2211 /* ?_Gninc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEPA_WXZ */
2212 /* ?_Gninc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAPEA_WXZ */
2213 /* ?_Gninc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ */
2214 /* ?_Gninc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAPEAGXZ */
2215 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Gninc, 4)
2216 wchar_t* __thiscall basic_streambuf_wchar__Gninc(basic_streambuf_wchar *this)
2218 TRACE("(%p)\n", this);
2219 (*this->prsize)--;
2220 return (*this->prpos)++;
2223 /* ?_Gnpreinc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEPA_WXZ */
2224 /* ?_Gnpreinc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAPEA_WXZ */
2225 /* ?_Gnpreinc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ */
2226 /* ?_Gnpreinc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAPEAGXZ */
2227 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Gnpreinc, 4)
2228 wchar_t* __thiscall basic_streambuf_wchar__Gnpreinc(basic_streambuf_wchar *this)
2230 TRACE("(%p)\n", this);
2231 (*this->prsize)--;
2232 (*this->prpos)++;
2233 return *this->prpos;
2236 /* ?_Init@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXPAPA_W0PAH001@Z */
2237 /* ?_Init@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAPEA_W0PEAH001@Z */
2238 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXPAPAG0PAH001@Z */
2239 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXPEAPEAG0PEAH001@Z */
2240 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Init, 28)
2241 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)
2243 TRACE("(%p %p %p %p %p %p %p)\n", this, gf, gn, gc, pf, pn, pc);
2245 this->prbuf = gf;
2246 this->pwbuf = pf;
2247 this->prpos = gn;
2248 this->pwpos = pn;
2249 this->prsize = gc;
2250 this->pwsize = pc;
2253 /* ?_Lock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
2254 /* ?_Lock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
2255 /* ?_Lock@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEXXZ */
2256 /* ?_Lock@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAXXZ */
2257 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Lock, 4)
2258 void __thiscall basic_streambuf_wchar__Lock(basic_streambuf_wchar *this)
2260 TRACE("(%p)\n", this);
2261 #if _MSVCP_VER >= 70 && _MSVCP_VER <= 100
2262 mutex_lock(&this->lock);
2263 #endif
2266 /* ?_Pnavail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEHXZ */
2267 /* ?_Pnavail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBA_JXZ */
2268 /* ?_Pnavail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEHXZ */
2269 /* ?_Pnavail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBA_JXZ */
2270 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Pnavail, 4)
2271 streamsize __thiscall basic_streambuf_wchar__Pnavail(const basic_streambuf_wchar *this)
2273 TRACE("(%p)\n", this);
2274 return *this->pwpos ? *this->pwsize : 0;
2277 /* ?_Pninc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEPA_WXZ */
2278 /* ?_Pninc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAPEA_WXZ */
2279 /* ?_Pninc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ */
2280 /* ?_Pninc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAPEAGXZ */
2281 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Pninc, 4)
2282 wchar_t* __thiscall basic_streambuf_wchar__Pninc(basic_streambuf_wchar *this)
2284 TRACE("(%p)\n", this);
2285 (*this->pwsize)--;
2286 return (*this->pwpos)++;
2289 /* ?underflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEGXZ */
2290 /* ?underflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAGXZ */
2291 /* ?underflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEGXZ */
2292 /* ?underflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAGXZ */
2293 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_underflow, 4)
2294 #if _MSVCP_VER >= 100
2295 #define call_basic_streambuf_wchar_underflow(this) CALL_VTBL_FUNC(this, 24, unsigned short, (basic_streambuf_wchar*), (this))
2296 #else
2297 #define call_basic_streambuf_wchar_underflow(this) CALL_VTBL_FUNC(this, 16, unsigned short, (basic_streambuf_wchar*), (this))
2298 #endif
2299 unsigned short __thiscall basic_streambuf_wchar_underflow(basic_streambuf_wchar *this)
2301 TRACE("(%p)\n", this);
2302 return WEOF;
2305 /* ?uflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEGXZ */
2306 /* ?uflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAGXZ */
2307 /* ?uflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEGXZ */
2308 /* ?uflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAGXZ */
2309 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_uflow, 4)
2310 #if _MSVCP_VER >= 100
2311 #define call_basic_streambuf_wchar_uflow(this) CALL_VTBL_FUNC(this, 28, unsigned short, (basic_streambuf_wchar*), (this))
2312 #else
2313 #define call_basic_streambuf_wchar_uflow(this) CALL_VTBL_FUNC(this, 20, unsigned short, (basic_streambuf_wchar*), (this))
2314 #endif
2315 unsigned short __thiscall basic_streambuf_wchar_uflow(basic_streambuf_wchar *this)
2317 int ret;
2319 TRACE("(%p)\n", this);
2321 if(call_basic_streambuf_wchar_underflow(this)==WEOF)
2322 return WEOF;
2324 ret = **this->prpos;
2325 (*this->prsize)--;
2326 (*this->prpos)++;
2327 return ret;
2330 /* ?_Xsgetn_s@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHPA_WIH@Z */
2331 /* ?_Xsgetn_s@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA_JPEA_W_K_J@Z */
2332 /* ?_Xsgetn_s@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHPAGIH@Z */
2333 /* ?_Xsgetn_s@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA_JPEAG_K_J@Z */
2334 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
2335 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Xsgetn_s, 20)
2336 #else
2337 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Xsgetn_s, 16)
2338 #endif
2339 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
2340 #define call_basic_streambuf_wchar__Xsgetn_s(this, ptr, size, count) CALL_VTBL_FUNC(this, 28, \
2341 streamsize, (basic_streambuf_wchar*, wchar_t*, size_t, streamsize), (this, ptr, size, count))
2342 #else
2343 #define call_basic_streambuf_wchar__Xsgetn_s(this, ptr, size, count) basic_streambuf_wchar__Xsgetn_s(this, ptr, size, count)
2344 #endif
2345 streamsize __thiscall basic_streambuf_wchar__Xsgetn_s(basic_streambuf_wchar *this, wchar_t *ptr, size_t size, streamsize count)
2347 streamsize copied, chunk;
2348 unsigned short c;
2350 TRACE("(%p %p %Iu %s)\n", this, ptr, size, wine_dbgstr_longlong(count));
2352 for(copied=0; copied<count && size;) {
2353 chunk = basic_streambuf_wchar__Gnavail(this);
2354 if(chunk > count-copied)
2355 chunk = count-copied;
2357 if(chunk > 0) {
2358 memcpy_s(ptr+copied, size, *this->prpos, chunk*sizeof(wchar_t));
2359 *this->prpos += chunk;
2360 *this->prsize -= chunk;
2361 copied += chunk;
2362 size -= chunk*sizeof(wchar_t);
2363 }else if((c = call_basic_streambuf_wchar_uflow(this)) != WEOF) {
2364 ptr[copied] = c;
2365 copied++;
2366 size--;
2367 }else {
2368 break;
2372 return copied;
2375 /* ?_Sgetn_s@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHPA_WIH@Z */
2376 /* ?_Sgetn_s@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA_JPEA_W_K_J@Z */
2377 /* ?_Sgetn_s@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHPAGIH@Z */
2378 /* ?_Sgetn_s@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA_JPEAG_K_J@Z */
2379 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
2380 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Sgetn_s, 20)
2381 #else
2382 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Sgetn_s, 16)
2383 #endif
2384 streamsize __thiscall basic_streambuf_wchar__Sgetn_s(basic_streambuf_wchar *this, wchar_t *ptr, size_t size, streamsize count)
2386 TRACE("(%p %p %Iu %s)\n", this, ptr, size, wine_dbgstr_longlong(count));
2387 return call_basic_streambuf_wchar__Xsgetn_s(this, ptr, size, count);
2390 /* ?_Unlock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
2391 /* ?_Unlock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
2392 /* ?_Unlock@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEXXZ */
2393 /* ?_Unlock@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAXXZ */
2394 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Unlock, 4)
2395 void __thiscall basic_streambuf_wchar__Unlock(basic_streambuf_wchar *this)
2397 TRACE("(%p)\n", this);
2398 #if _MSVCP_VER >= 70 && _MSVCP_VER <= 100
2399 mutex_unlock(&this->lock);
2400 #endif
2403 /* ?eback@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
2404 /* ?eback@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
2405 /* ?eback@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
2406 /* ?eback@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
2407 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_eback, 4)
2408 wchar_t* __thiscall basic_streambuf_wchar_eback(const basic_streambuf_wchar *this)
2410 TRACE("(%p)\n", this);
2411 return *this->prbuf;
2414 /* ?gptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
2415 /* ?gptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
2416 /* ?gptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
2417 /* ?gptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
2418 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_gptr, 4)
2419 wchar_t* __thiscall basic_streambuf_wchar_gptr(const basic_streambuf_wchar *this)
2421 TRACE("(%p)\n", this);
2422 return *this->prpos;
2425 /* ?egptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
2426 /* ?egptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
2427 /* ?egptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
2428 /* ?egptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
2429 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_egptr, 4)
2430 wchar_t* __thiscall basic_streambuf_wchar_egptr(const basic_streambuf_wchar *this)
2432 TRACE("(%p)\n", this);
2433 return *this->prpos+*this->prsize;
2436 /* ?epptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
2437 /* ?epptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
2438 /* ?epptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
2439 /* ?epptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
2440 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_epptr, 4)
2441 wchar_t* __thiscall basic_streambuf_wchar_epptr(const basic_streambuf_wchar *this)
2443 TRACE("(%p)\n", this);
2444 return *this->pwpos+*this->pwsize;
2447 /* ?gbump@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXH@Z */
2448 /* ?gbump@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXH@Z */
2449 /* ?gbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXH@Z */
2450 /* ?gbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXH@Z */
2451 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_gbump, 8)
2452 void __thiscall basic_streambuf_wchar_gbump(basic_streambuf_wchar *this, int off)
2454 TRACE("(%p %d)\n", this, off);
2455 *this->prpos += off;
2456 *this->prsize -= off;
2459 /* ?getloc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QBE?AVlocale@2@XZ */
2460 /* ?getloc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEBA?AVlocale@2@XZ */
2461 /* ?getloc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QBE?AVlocale@2@XZ */
2462 /* ?getloc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEBA?AVlocale@2@XZ */
2463 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_getloc, 8)
2464 locale* __thiscall basic_streambuf_wchar_getloc(const basic_streambuf_wchar *this, locale *ret)
2466 TRACE("(%p)\n", this);
2467 return locale_copy_ctor(ret, IOS_LOCALE(this));
2470 /* ?imbue@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEXABVlocale@2@@Z */
2471 /* ?imbue@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAXAEBVlocale@2@@Z */
2472 /* ?imbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEXABVlocale@2@@Z */
2473 /* ?imbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAXAEBVlocale@2@@Z */
2474 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_imbue, 8)
2475 #if _MSVCP_VER >= 100
2476 #define call_basic_streambuf_wchar_imbue(this, loc) CALL_VTBL_FUNC(this, 56, void, (basic_streambuf_wchar*, const locale*), (this, loc))
2477 #elif _MSVCP_VER >= 80
2478 #define call_basic_streambuf_wchar_imbue(this, loc) CALL_VTBL_FUNC(this, 52, void, (basic_streambuf_wchar*, const locale*), (this, loc))
2479 #else
2480 #define call_basic_streambuf_wchar_imbue(this, loc) CALL_VTBL_FUNC(this, 48, void, (basic_streambuf_wchar*, const locale*), (this, loc))
2481 #endif
2482 void __thiscall basic_streambuf_wchar_imbue(basic_streambuf_wchar *this, const locale *loc)
2484 TRACE("(%p %p)\n", this, loc);
2487 /* ?overflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEGG@Z */
2488 /* ?overflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAGG@Z */
2489 /* ?overflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEGG@Z */
2490 /* ?overflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAGG@Z */
2491 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_overflow, 8)
2492 #if _MSVCP_VER >= 100
2493 #define call_basic_streambuf_wchar_overflow(this, ch) CALL_VTBL_FUNC(this, 12, unsigned short, (basic_streambuf_wchar*, unsigned short), (this, ch))
2494 #else
2495 #define call_basic_streambuf_wchar_overflow(this, ch) CALL_VTBL_FUNC(this, 4, unsigned short, (basic_streambuf_wchar*, unsigned short), (this, ch))
2496 #endif
2497 unsigned short __thiscall basic_streambuf_wchar_overflow(basic_streambuf_wchar *this, unsigned short ch)
2499 TRACE("(%p %d)\n", this, ch);
2500 return WEOF;
2503 /* ?pbackfail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEGG@Z */
2504 /* ?pbackfail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAGG@Z */
2505 /* ?pbackfail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEGG@Z */
2506 /* ?pbackfail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAGG@Z */
2507 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pbackfail, 8)
2508 #if _MSVCP_VER >= 100
2509 #define call_basic_streambuf_wchar_pbackfail(this, ch) CALL_VTBL_FUNC(this, 16, unsigned short, (basic_streambuf_wchar*, unsigned short), (this, ch))
2510 #else
2511 #define call_basic_streambuf_wchar_pbackfail(this, ch) CALL_VTBL_FUNC(this, 8, unsigned short, (basic_streambuf_wchar*, unsigned short), (this, ch))
2512 #endif
2513 unsigned short __thiscall basic_streambuf_wchar_pbackfail(basic_streambuf_wchar *this, unsigned short ch)
2515 TRACE("(%p %d)\n", this, ch);
2516 return WEOF;
2519 /* ?pbase@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
2520 /* ?pbase@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
2521 /* ?pbase@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
2522 /* ?pbase@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
2523 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pbase, 4)
2524 wchar_t* __thiscall basic_streambuf_wchar_pbase(const basic_streambuf_wchar *this)
2526 TRACE("(%p)\n", this);
2527 return *this->pwbuf;
2530 /* ?pbump@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXH@Z */
2531 /* ?pbump@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXH@Z */
2532 /* ?pbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXH@Z */
2533 /* ?pbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXH@Z */
2534 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pbump, 8)
2535 void __thiscall basic_streambuf_wchar_pbump(basic_streambuf_wchar *this, int off)
2537 TRACE("(%p %d)\n", this, off);
2538 *this->pwpos += off;
2539 *this->pwsize -= off;
2542 /* ?pptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
2543 /* ?pptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
2544 /* ?pptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
2545 /* ?pptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
2546 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pptr, 4)
2547 wchar_t* __thiscall basic_streambuf_wchar_pptr(const basic_streambuf_wchar *this)
2549 TRACE("(%p)\n", this);
2550 return *this->pwpos;
2553 /* ?pubimbue@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
2554 /* ?pubimbue@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
2555 /* ?pubimbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
2556 /* ?pubimbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
2557 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubimbue, 12)
2558 locale* __thiscall basic_streambuf_wchar_pubimbue(basic_streambuf_wchar *this, locale *ret, const locale *loc)
2560 TRACE("(%p %p)\n", this, loc);
2561 memcpy(ret, IOS_LOCALE(this), sizeof(locale));
2562 call_basic_streambuf_wchar_imbue(this, loc);
2563 locale_copy_ctor(IOS_LOCALE(this), loc);
2564 return ret;
2567 /* ?seekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
2568 /* ?seekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@_JW4seekdir@ios_base@2@H@Z */
2569 /* ?seekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
2570 /* ?seekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
2571 /* ?seekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
2572 /* ?seekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
2573 #if STREAMOFF_BITS == 64
2574 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_seekoff, 24)
2575 #else
2576 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_seekoff, 20)
2577 #endif
2578 #if _MSVCP_VER >= 100
2579 #define call_basic_streambuf_wchar_seekoff(this, ret, off, way, mode) \
2580 CALL_VTBL_FUNC(this, 40, fpos_mbstatet*, (basic_streambuf_wchar*, fpos_mbstatet*, streamoff, int, int), (this, ret, off, way, mode))
2581 #elif _MSVCP_VER >= 80
2582 #define call_basic_streambuf_wchar_seekoff(this, ret, off, way, mode) \
2583 CALL_VTBL_FUNC(this, 36, fpos_mbstatet*, (basic_streambuf_wchar*, fpos_mbstatet*, streamoff, int, int), (this, ret, off, way, mode))
2584 #else
2585 #define call_basic_streambuf_wchar_seekoff(this, ret, off, way, mode) \
2586 CALL_VTBL_FUNC(this, 32, fpos_mbstatet*, (basic_streambuf_wchar*, fpos_mbstatet*, streamoff, int, int), (this, ret, off, way, mode))
2587 #endif
2588 fpos_mbstatet* __thiscall basic_streambuf_wchar_seekoff(basic_streambuf_wchar *this,
2589 fpos_mbstatet *ret, streamoff off, int way, int mode)
2591 TRACE("(%p %s %d %d)\n", this, wine_dbgstr_longlong(off), way, mode);
2592 ret->off = -1;
2593 ret->pos = 0;
2594 memset(&ret->state, 0, sizeof(ret->state));
2595 return ret;
2598 /* ?pubseekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@JHH@Z */
2599 /* ?pubseekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@_JHH@Z */
2600 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@JHH@Z */
2601 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@_JHH@Z */
2602 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@JFF@Z */
2603 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@_JFF@Z */
2604 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
2605 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@_JW4seekdir@ioos_base@2@H@Z */
2606 #if STREAMOFF_BITS == 64
2607 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekoff, 24)
2608 #else
2609 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekoff, 20)
2610 #endif
2611 fpos_mbstatet* __thiscall basic_streambuf_wchar_pubseekoff(basic_streambuf_wchar *this,
2612 fpos_mbstatet *ret, streamoff off, int way, int mode)
2614 TRACE("(%p %s %d %d)\n", this, wine_dbgstr_longlong(off), way, mode);
2615 return call_basic_streambuf_wchar_seekoff(this, ret, off, way, mode);
2618 /* ?pubseekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@JII@Z */
2619 /* ?pubseekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@_JII@Z */
2620 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@JII@Z */
2621 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@_JII@Z */
2622 #if STREAMOFF_BITS == 64
2623 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekoff_old, 24)
2624 #else
2625 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekoff_old, 20)
2626 #endif
2627 fpos_mbstatet* __thiscall basic_streambuf_wchar_pubseekoff_old(basic_streambuf_wchar *this,
2628 fpos_mbstatet *ret, streamoff off, unsigned int way, unsigned int mode)
2630 TRACE("(%p %s %d %d)\n", this, wine_dbgstr_longlong(off), way, mode);
2631 return basic_streambuf_wchar_pubseekoff(this, ret, off, way, mode);
2634 /* ?seekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
2635 /* ?seekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
2636 /* ?seekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
2637 /* ?seekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
2638 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_seekpos, 36)
2639 #if _MSVCP_VER >= 100
2640 #define call_basic_streambuf_wchar_seekpos(this, ret, pos, mode) \
2641 CALL_VTBL_FUNC(this, 44, fpos_mbstatet*, (basic_streambuf_wchar*, fpos_mbstatet*, fpos_mbstatet, int), (this, ret, pos, mode))
2642 #elif _MSVCP_VER >= 80
2643 #define call_basic_streambuf_wchar_seekpos(this, ret, pos, mode) \
2644 CALL_VTBL_FUNC(this, 40, fpos_mbstatet*, (basic_streambuf_wchar*, fpos_mbstatet*, fpos_mbstatet, int), (this, ret, pos, mode))
2645 #else
2646 #define call_basic_streambuf_wchar_seekpos(this, ret, pos, mode) \
2647 CALL_VTBL_FUNC(this, 36, fpos_mbstatet*, (basic_streambuf_wchar*, fpos_mbstatet*, fpos_mbstatet, int), (this, ret, pos, mode))
2648 #endif
2649 fpos_mbstatet* __thiscall basic_streambuf_wchar_seekpos(basic_streambuf_wchar *this,
2650 fpos_mbstatet *ret, fpos_mbstatet pos, int mode)
2652 TRACE("(%p %s %d)\n", this, debugstr_fpos_mbstatet(&pos), mode);
2653 ret->off = -1;
2654 ret->pos = 0;
2655 memset(&ret->state, 0, sizeof(ret->state));
2656 return ret;
2659 /* ?pubseekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@V32@H@Z */
2660 /* ?pubseekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@V32@H@Z */
2661 /* ?pubseekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@V32@H@Z */
2662 /* ?pubseekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@V32@H@Z */
2663 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekpos, 36)
2664 fpos_mbstatet* __thiscall basic_streambuf_wchar_pubseekpos(basic_streambuf_wchar *this,
2665 fpos_mbstatet *ret, fpos_mbstatet pos, int mode)
2667 TRACE("(%p %s %d)\n", this, debugstr_fpos_mbstatet(&pos), mode);
2668 return call_basic_streambuf_wchar_seekpos(this, ret, pos, mode);
2671 /* ?pubseekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@V32@I@Z */
2672 /* ?pubseekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@V32@I@Z */
2673 /* ?pubseekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@V32@I@Z */
2674 /* ?pubseekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@V32@I@Z */
2675 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekpos_old, 36)
2676 fpos_mbstatet* __thiscall basic_streambuf_wchar_pubseekpos_old(basic_streambuf_wchar *this,
2677 fpos_mbstatet *ret, fpos_mbstatet pos, unsigned int mode)
2679 TRACE("(%p %s %d)\n", this, debugstr_fpos_mbstatet(&pos), mode);
2680 return basic_streambuf_wchar_pubseekpos(this, ret, pos, mode);
2683 /* ?setbuf@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEPAV12@PA_WH@Z */
2684 /* ?setbuf@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAPEAV12@PEA_W_J@Z */
2685 /* ?setbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEPAV12@PAGH@Z */
2686 /* ?setbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAPEAV12@PEAG_J@Z */
2687 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
2688 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setbuf, 16)
2689 #else
2690 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setbuf, 12)
2691 #endif
2692 #if _MSVCP_VER >= 100
2693 #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))
2694 #elif _MSVCP_VER >= 80
2695 #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))
2696 #else
2697 #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))
2698 #endif
2699 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_setbuf(basic_streambuf_wchar *this, wchar_t *buf, streamsize count)
2701 TRACE("(%p %p %s)\n", this, buf, wine_dbgstr_longlong(count));
2702 return this;
2705 /* ?pubsetbuf@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PA_WH@Z */
2706 /* ?pubsetbuf@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEA_W_J@Z */
2707 /* ?pubsetbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PAGH@Z */
2708 /* ?pubsetbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEAG_J@Z */
2709 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
2710 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubsetbuf, 16)
2711 #else
2712 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubsetbuf, 12)
2713 #endif
2714 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_pubsetbuf(basic_streambuf_wchar *this, wchar_t *buf, streamsize count)
2716 TRACE("(%p %p %s)\n", this, buf, wine_dbgstr_longlong(count));
2717 return call_basic_streambuf_wchar_setbuf(this, buf, count);
2720 /* ?sync@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHXZ */
2721 /* ?sync@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAHXZ */
2722 /* ?sync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHXZ */
2723 /* ?sync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAHXZ */
2724 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sync, 4)
2725 #if _MSVCP_VER >= 100
2726 #define call_basic_streambuf_wchar_sync(this) CALL_VTBL_FUNC(this, 52, int, (basic_streambuf_wchar*), (this))
2727 #elif _MSVCP_VER >= 80
2728 #define call_basic_streambuf_wchar_sync(this) CALL_VTBL_FUNC(this, 48, int, (basic_streambuf_wchar*), (this))
2729 #else
2730 #define call_basic_streambuf_wchar_sync(this) CALL_VTBL_FUNC(this, 44, int, (basic_streambuf_wchar*), (this))
2731 #endif
2732 int __thiscall basic_streambuf_wchar_sync(basic_streambuf_wchar *this)
2734 TRACE("(%p)\n", this);
2735 return 0;
2738 /* ?pubsync@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHXZ */
2739 /* ?pubsync@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAHXZ */
2740 /* ?pubsync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHXZ */
2741 /* ?pubsync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAHXZ */
2742 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubsync, 4)
2743 int __thiscall basic_streambuf_wchar_pubsync(basic_streambuf_wchar *this)
2745 TRACE("(%p)\n", this);
2746 return call_basic_streambuf_wchar_sync(this);
2749 /* ?xsgetn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHPA_WH@Z */
2750 /* ?xsgetn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA_JPEA_W_J@Z */
2751 /* ?xsgetn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHPAGH@Z */
2752 /* ?xsgetn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA_JPEAG_J@Z */
2753 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
2754 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_xsgetn, 16)
2755 #else
2756 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_xsgetn, 12)
2757 #endif
2758 #if _MSVCP_VER >= 100
2759 #define call_basic_streambuf_wchar_xsgetn(this, ptr, count) CALL_VTBL_FUNC(this, 32, streamsize, (basic_streambuf_wchar*, wchar_t*, streamsize), (this, ptr, count))
2760 #else
2761 #define call_basic_streambuf_wchar_xsgetn(this, ptr, count) CALL_VTBL_FUNC(this, 24, streamsize, (basic_streambuf_wchar*, wchar_t*, streamsize), (this, ptr, count))
2762 #endif
2763 streamsize __thiscall basic_streambuf_wchar_xsgetn(basic_streambuf_wchar *this, wchar_t *ptr, streamsize count)
2765 TRACE("(%p %p %s)\n", this, ptr, wine_dbgstr_longlong(count));
2766 return call_basic_streambuf_wchar__Xsgetn_s(this, ptr, -1, count);
2769 /* ?sgetn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHPA_WH@Z */
2770 /* ?sgetn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA_JPEA_W_J@Z */
2771 /* ?sgetn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHPAGH@Z */
2772 /* ?sgetn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA_JPEAG_J@Z */
2773 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
2774 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sgetn, 16)
2775 #else
2776 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sgetn, 12)
2777 #endif
2778 streamsize __thiscall basic_streambuf_wchar_sgetn(basic_streambuf_wchar *this, wchar_t *ptr, streamsize count)
2780 TRACE("(%p %p %s)\n", this, ptr, wine_dbgstr_longlong(count));
2781 return call_basic_streambuf_wchar_xsgetn(this, ptr, count);
2784 /* ?showmanyc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHXZ */
2785 /* ?showmanyc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA_JXZ */
2786 /* ?showmanyc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHXZ */
2787 /* ?showmanyc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA_JXZ */
2788 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_showmanyc, 4)
2789 #if _MSVCP_VER >= 100
2790 #define call_basic_streambuf_wchar_showmanyc(this) CALL_VTBL_FUNC(this, 20, streamsize, (basic_streambuf_wchar*), (this))
2791 #else
2792 #define call_basic_streambuf_wchar_showmanyc(this) CALL_VTBL_FUNC(this, 12, streamsize, (basic_streambuf_wchar*), (this))
2793 #endif
2794 streamsize __thiscall basic_streambuf_wchar_showmanyc(basic_streambuf_wchar *this)
2796 TRACE("(%p)\n", this);
2797 return 0;
2800 /* ?in_avail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHXZ */
2801 /* ?in_avail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA_JXZ */
2802 /* ?in_avail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHXZ */
2803 /* ?in_avail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA_JXZ */
2804 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_in_avail, 4)
2805 streamsize __thiscall basic_streambuf_wchar_in_avail(basic_streambuf_wchar *this)
2807 streamsize ret;
2809 TRACE("(%p)\n", this);
2811 ret = basic_streambuf_wchar__Gnavail(this);
2812 return ret ? ret : call_basic_streambuf_wchar_showmanyc(this);
2815 /* ?sputbackc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEG_W@Z */
2816 /* ?sputbackc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAG_W@Z */
2817 /* ?sputbackc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGG@Z */
2818 /* ?sputbackc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGG@Z */
2819 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sputbackc, 8)
2820 unsigned short __thiscall basic_streambuf_wchar_sputbackc(basic_streambuf_wchar *this, wchar_t ch)
2822 TRACE("(%p %d)\n", this, ch);
2823 if(*this->prpos && *this->prpos>*this->prbuf && (*this->prpos)[-1]==ch) {
2824 (*this->prsize)++;
2825 (*this->prpos)--;
2826 return ch;
2829 return call_basic_streambuf_wchar_pbackfail(this, ch);
2832 /* ?sputc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEG_W@Z */
2833 /* ?sputc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAG_W@Z */
2834 /* ?sputc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGG@Z */
2835 /* ?sputc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAHG@Z */
2836 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sputc, 8)
2837 unsigned short __thiscall basic_streambuf_wchar_sputc(basic_streambuf_wchar *this, wchar_t ch)
2839 TRACE("(%p %d)\n", this, ch);
2840 return basic_streambuf_wchar__Pnavail(this) ?
2841 (*basic_streambuf_wchar__Pninc(this) = ch) :
2842 call_basic_streambuf_wchar_overflow(this, ch);
2845 /* ?sungetc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
2846 /* ?sungetc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
2847 /* ?sungetc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGXZ */
2848 /* ?sungetc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGXZ */
2849 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sungetc, 4)
2850 unsigned short __thiscall basic_streambuf_wchar_sungetc(basic_streambuf_wchar *this)
2852 TRACE("(%p)\n", this);
2853 if(*this->prpos && *this->prpos>*this->prbuf) {
2854 (*this->prsize)++;
2855 (*this->prpos)--;
2856 return **this->prpos;
2859 return call_basic_streambuf_wchar_pbackfail(this, WEOF);
2862 /* ?stossc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
2863 /* ?stossc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
2864 /* ?stossc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEXXZ */
2865 /* ?stossc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAXXZ */
2866 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_stossc, 4)
2867 void __thiscall basic_streambuf_wchar_stossc(basic_streambuf_wchar *this)
2869 TRACE("(%p)\n", this);
2870 if(basic_streambuf_wchar__Gnavail(this))
2871 basic_streambuf_wchar__Gninc(this);
2872 else
2873 call_basic_streambuf_wchar_uflow(this);
2876 /* ?sbumpc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
2877 /* ?sbumpc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
2878 /* ?sbumpc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGXZ */
2879 /* ?sbumpc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGXZ */
2880 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sbumpc, 4)
2881 unsigned short __thiscall basic_streambuf_wchar_sbumpc(basic_streambuf_wchar *this)
2883 TRACE("(%p)\n", this);
2884 return basic_streambuf_wchar__Gnavail(this) ?
2885 *basic_streambuf_wchar__Gninc(this) : call_basic_streambuf_wchar_uflow(this);
2888 /* ?sgetc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
2889 /* ?sgetc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
2890 /* ?sgetc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGXZ */
2891 /* ?sgetc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGXZ */
2892 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sgetc, 4)
2893 unsigned short __thiscall basic_streambuf_wchar_sgetc(basic_streambuf_wchar *this)
2895 TRACE("(%p)\n", this);
2896 return basic_streambuf_wchar__Gnavail(this) ?
2897 *basic_streambuf_wchar_gptr(this) : call_basic_streambuf_wchar_underflow(this);
2900 /* ?snextc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
2901 /* ?snextc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
2902 /* ?snextc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGXZ */
2903 /* ?snextc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGXZ */
2904 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_snextc, 4)
2905 unsigned short __thiscall basic_streambuf_wchar_snextc(basic_streambuf_wchar *this)
2907 TRACE("(%p)\n", this);
2909 if(basic_streambuf_wchar__Gnavail(this) > 1)
2910 return *basic_streambuf_wchar__Gnpreinc(this);
2911 return basic_streambuf_wchar_sbumpc(this)==WEOF ?
2912 WEOF : basic_streambuf_wchar_sgetc(this);
2915 /* ?xsputn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHPB_WH@Z */
2916 /* ?xsputn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA_JPEB_W_J@Z */
2917 /* ?xsputn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHPBGH@Z */
2918 /* ?xsputn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA_JPEBG_J@Z */
2919 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
2920 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_xsputn, 16)
2921 #else
2922 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_xsputn, 12)
2923 #endif
2924 #if _MSVCP_VER >= 100
2925 #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))
2926 #elif _MSVCP_VER >= 80
2927 #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))
2928 #else
2929 #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))
2930 #endif
2931 streamsize __thiscall basic_streambuf_wchar_xsputn(basic_streambuf_wchar *this, const wchar_t *ptr, streamsize count)
2933 streamsize copied, chunk;
2935 TRACE("(%p %p %s)\n", this, ptr, wine_dbgstr_longlong(count));
2937 for(copied=0; copied<count;) {
2938 chunk = basic_streambuf_wchar__Pnavail(this);
2939 if(chunk > count-copied)
2940 chunk = count-copied;
2942 if(chunk > 0) {
2943 memcpy(*this->pwpos, ptr+copied, chunk*sizeof(wchar_t));
2944 *this->pwpos += chunk;
2945 *this->pwsize -= chunk;
2946 copied += chunk;
2947 }else if(call_basic_streambuf_wchar_overflow(this, ptr[copied]) != WEOF) {
2948 copied++;
2949 }else {
2950 break;
2954 return copied;
2957 /* ?sputn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHPB_WH@Z */
2958 /* ?sputn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA_JPEB_W_J@Z */
2959 /* ?sputn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHPBGH@Z */
2960 /* ?sputn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA_JPEBG_J@Z */
2961 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
2962 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sputn, 16)
2963 #else
2964 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sputn, 12)
2965 #endif
2966 streamsize __thiscall basic_streambuf_wchar_sputn(basic_streambuf_wchar *this, const wchar_t *ptr, streamsize count)
2968 TRACE("(%p %p %s)\n", this, ptr, wine_dbgstr_longlong(count));
2969 return call_basic_streambuf_wchar_xsputn(this, ptr, count);
2972 /* ?swap@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXAAV12@@Z */
2973 /* ?swap@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXAEAV12@@Z */
2974 /* ?swap@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXAAV12@@Z */
2975 /* ?swap@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXAAV12@@Z */
2976 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_swap, 8)
2977 void __thiscall basic_streambuf_wchar_swap(basic_streambuf_wchar *this, basic_streambuf_wchar *r)
2979 wchar_t *wfirst, *wnext, *wlast, *rfirst, *rnext, *rlast;
2980 #if _MSVCP_VER < 70
2981 locale loc;
2982 #else
2983 locale *loc;
2984 #endif
2986 TRACE("(%p %p)\n", this, r);
2988 if(this == r)
2989 return;
2991 wfirst = *this->pwbuf;
2992 wnext = *this->pwpos;
2993 wlast = *this->pwpos + *this->pwsize;
2994 rfirst = *this->prbuf;
2995 rnext = *this->prpos;
2996 rlast = *this->prpos + *this->prsize;
2997 loc = this->loc;
2999 basic_streambuf_wchar_setp_next(this, *r->pwbuf, *r->pwpos, *r->pwpos + *r->pwsize);
3000 basic_streambuf_wchar_setg(this, *r->prbuf, *r->prpos, *r->prpos + *r->prsize);
3001 this->loc = r->loc;
3003 basic_streambuf_wchar_setp_next(r, wfirst, wnext, wlast);
3004 basic_streambuf_wchar_setg(r, rfirst, rnext, rlast);
3005 r->loc = loc;
3008 /* ?_Stinit@?1??_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@23@@Z@4HA */
3009 /* ?_Stinit@?1??_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@23@@Z@4HA */
3010 #if _MSVCP_VER >= 140
3011 _Mbstatet basic_filebuf_char__Init__Stinit = {0};
3012 #else
3013 _Mbstatet basic_filebuf_char__Init__Stinit = 0;
3014 #endif
3016 /* ?_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@12@@Z */
3017 /* ?_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@12@@Z */
3018 DEFINE_THISCALL_WRAPPER(basic_filebuf_char__Init, 12)
3019 void __thiscall basic_filebuf_char__Init(basic_filebuf_char *this, FILE *file, basic_filebuf__Initfl which)
3021 TRACE("(%p %p %d)\n", this, file, which);
3023 this->cvt = NULL;
3024 this->wrotesome = FALSE;
3025 this->state = basic_filebuf_char__Init__Stinit;
3026 this->close = (which == INITFL_open);
3027 this->file = file;
3029 basic_streambuf_char__Init_empty(&this->base);
3030 if(file)
3031 basic_streambuf_char__Init(&this->base, &file->_base, &file->_ptr,
3032 &file->_cnt, &file->_base, &file->_ptr, &file->_cnt);
3035 /* ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXPAV?$codecvt@DDH@2@@Z */
3036 /* ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXPEAV?$codecvt@DDH@2@@Z */
3037 DEFINE_THISCALL_WRAPPER(basic_filebuf_char__Initcvt_cvt, 8)
3038 void __thiscall basic_filebuf_char__Initcvt_cvt(basic_filebuf_char *this, codecvt_char *cvt)
3040 TRACE("(%p %p)\n", this, cvt);
3042 if(codecvt_base_always_noconv(&cvt->base)) {
3043 this->cvt = NULL;
3044 }else {
3045 basic_streambuf_char__Init_empty(&this->base);
3046 this->cvt = cvt;
3050 /* ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXXZ */
3051 /* ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXXZ */
3052 DEFINE_THISCALL_WRAPPER(basic_filebuf_char__Initcvt, 4)
3053 void __thiscall basic_filebuf_char__Initcvt(basic_filebuf_char *this)
3055 codecvt_char *cvt = codecvt_char_use_facet(IOS_LOCALE(&this->base));
3056 basic_filebuf_char__Initcvt_cvt( this, cvt );
3059 /* ?_Endwrite@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAE_NXZ */
3060 /* ?_Endwrite@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAA_NXZ */
3061 DEFINE_THISCALL_WRAPPER(basic_filebuf_char__Endwrite, 4)
3062 bool __thiscall basic_filebuf_char__Endwrite(basic_filebuf_char *this)
3064 TRACE("(%p)\n", this);
3066 if(!this->wrotesome || !this->cvt)
3067 return TRUE;
3070 if(call_basic_streambuf_char_overflow(&this->base, EOF) == EOF)
3071 return FALSE;
3073 while(1) {
3074 /* TODO: check if we need a dynamic buffer here */
3075 char buf[128];
3076 char *next;
3077 int ret;
3079 ret = codecvt_char_unshift(this->cvt, &this->state, buf, buf+sizeof(buf), &next);
3080 switch(ret) {
3081 case CODECVT_ok:
3082 this->wrotesome = FALSE;
3083 /* fall through */
3084 case CODECVT_partial:
3085 if(!fwrite(buf, next-buf, 1, this->file))
3086 return FALSE;
3087 if(this->wrotesome)
3088 break;
3089 /* fall through */
3090 case CODECVT_noconv:
3091 if(call_basic_streambuf_char_overflow(&this->base, EOF) == EOF)
3092 return FALSE;
3093 return TRUE;
3094 default:
3095 return FALSE;
3100 /* ?close@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@XZ */
3101 /* ?close@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@XZ */
3102 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_close, 4)
3103 basic_filebuf_char* __thiscall basic_filebuf_char_close(basic_filebuf_char *this)
3105 basic_filebuf_char *ret = this;
3107 TRACE("(%p)\n", this);
3109 if(!this->file)
3110 return NULL;
3112 /* TODO: handle exceptions */
3113 if(!basic_filebuf_char__Endwrite(this))
3114 ret = NULL;
3115 if(fclose(this->file))
3116 ret = NULL;
3118 basic_filebuf_char__Init(this, NULL, INITFL_close);
3119 return ret;
3122 /* ??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAE@PAU_iobuf@@@Z */
3123 /* ??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAA@PEAU_iobuf@@@Z */
3124 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_ctor_file, 8)
3125 basic_filebuf_char* __thiscall basic_filebuf_char_ctor_file(basic_filebuf_char *this, FILE *file)
3127 TRACE("(%p %p)\n", this, file);
3129 basic_streambuf_char_ctor(&this->base);
3130 this->base.vtable = &basic_filebuf_char_vtable;
3132 basic_filebuf_char__Init(this, file, INITFL_new);
3133 return this;
3136 /* ??_F?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
3137 /* ??_F?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
3138 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_ctor, 4)
3139 basic_filebuf_char* __thiscall basic_filebuf_char_ctor(basic_filebuf_char *this)
3141 return basic_filebuf_char_ctor_file(this, NULL);
3144 /* ??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAE@W4_Uninitialized@1@@Z */
3145 /* ??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
3146 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_ctor_uninitialized, 8)
3147 basic_filebuf_char* __thiscall basic_filebuf_char_ctor_uninitialized(basic_filebuf_char *this, int uninitialized)
3149 TRACE("(%p %d)\n", this, uninitialized);
3151 basic_streambuf_char_ctor(&this->base);
3152 this->base.vtable = &basic_filebuf_char_vtable;
3153 return this;
3156 /* ??1?$basic_filebuf@DU?$char_traits@D@std@@@std@@UAE@XZ */
3157 /* ??1?$basic_filebuf@DU?$char_traits@D@std@@@std@@UEAA@XZ */
3158 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_dtor, 4)
3159 void __thiscall basic_filebuf_char_dtor(basic_filebuf_char *this)
3161 TRACE("(%p)\n", this);
3163 if(this->close)
3164 basic_filebuf_char_close(this);
3165 basic_streambuf_char_dtor(&this->base);
3168 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_vector_dtor, 8)
3169 basic_filebuf_char* __thiscall basic_filebuf_char_vector_dtor(basic_filebuf_char *this, unsigned int flags)
3171 TRACE("(%p %x)\n", this, flags);
3172 if(flags & 2) {
3173 /* we have an array, with the number of elements stored before the first object */
3174 INT_PTR i, *ptr = (INT_PTR *)this-1;
3176 for(i=*ptr-1; i>=0; i--)
3177 basic_filebuf_char_dtor(this+i);
3178 operator_delete(ptr);
3179 } else {
3180 basic_filebuf_char_dtor(this);
3181 if(flags & 1)
3182 operator_delete(this);
3185 return this;
3188 /* ?is_open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QBE_NXZ */
3189 /* ?is_open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEBA_NXZ */
3190 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_is_open, 4)
3191 bool __thiscall basic_filebuf_char_is_open(const basic_filebuf_char *this)
3193 TRACE("(%p)\n", this);
3194 return this->file != NULL;
3197 /* ?_Fiopen@std@@YAPAU_iobuf@@PB_WHH@Z */
3198 /* ?_Fiopen@std@@YAPEAU_iobuf@@PEB_WHH@Z */
3199 FILE* __cdecl _Fiopen_wchar(const wchar_t *name, int mode, int prot)
3201 static const struct {
3202 int mode;
3203 const wchar_t str[4];
3204 const wchar_t str_bin[4];
3205 } str_mode[] = {
3206 {OPENMODE_out, L"w", L"wb"},
3207 {OPENMODE_out|OPENMODE_app, L"a", L"ab"},
3208 {OPENMODE_app, L"a", L"ab"},
3209 {OPENMODE_out|OPENMODE_trunc, L"w", L"wb"},
3210 {OPENMODE_in, L"r", L"rb"},
3211 {OPENMODE_in|OPENMODE_out, L"r+", L"r+b"},
3212 {OPENMODE_in|OPENMODE_out|OPENMODE_trunc, L"w+", L"w+b"},
3213 {OPENMODE_in|OPENMODE_out|OPENMODE_app, L"a+", L"a+b"},
3214 {OPENMODE_in|OPENMODE_app, L"a+", L"a+b"}
3217 int real_mode = mode & ~(OPENMODE_ate|OPENMODE__Nocreate|OPENMODE__Noreplace|OPENMODE_binary);
3218 size_t mode_idx;
3219 FILE *f = NULL;
3221 TRACE("(%s %d %d)\n", debugstr_w(name), mode, prot);
3223 for(mode_idx=0; mode_idx<ARRAY_SIZE(str_mode); mode_idx++)
3224 if(str_mode[mode_idx].mode == real_mode)
3225 break;
3226 if(mode_idx == ARRAY_SIZE(str_mode))
3227 return NULL;
3229 if((mode & OPENMODE__Nocreate) && !(f = _wfopen(name, L"r")))
3230 return NULL;
3231 else if(f)
3232 fclose(f);
3234 if((mode & OPENMODE__Noreplace) && (mode & (OPENMODE_out|OPENMODE_app))
3235 && (f = _wfopen(name, L"r"))) {
3236 fclose(f);
3237 return NULL;
3240 #if _MSVCP_VER < 80 /* msvcp60 - msvcp71 are ignoring prot argument */
3241 prot = SH_DENYNO;
3242 #endif
3244 f = _wfsopen(name, (mode & OPENMODE_binary) ? str_mode[mode_idx].str_bin
3245 : str_mode[mode_idx].str, prot);
3246 if(!f)
3247 return NULL;
3249 if((mode & OPENMODE_ate) && fseek(f, 0, SEEK_END)) {
3250 fclose(f);
3251 return NULL;
3254 return f;
3257 /* ?_Fiopen@std@@YAPAU_iobuf@@PBDHH@Z */
3258 /* ?_Fiopen@std@@YAPEAU_iobuf@@PEBDHH@Z */
3259 FILE* __cdecl _Fiopen(const char *name, int mode, int prot)
3261 wchar_t nameW[FILENAME_MAX];
3263 TRACE("(%s %d %d)\n", name, mode, prot);
3265 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
3266 if(mbstowcs_s(NULL, nameW, FILENAME_MAX, name, FILENAME_MAX-1) != 0)
3267 return NULL;
3268 #else
3269 if(!MultiByteToWideChar(CP_ACP, 0, name, -1, nameW, FILENAME_MAX-1))
3270 return NULL;
3271 #endif
3272 return _Fiopen_wchar(nameW, mode, prot);
3275 /* ?__Fiopen@std@@YAPAU_iobuf@@PBDH@Z */
3276 /* ?__Fiopen@std@@YAPEAU_iobuf@@PEBDH@Z */
3277 FILE* __cdecl ___Fiopen(const char *name, int mode)
3279 TRACE("(%p %d)\n", name, mode);
3280 return _Fiopen(name, mode, _SH_DENYNO);
3283 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PB_WHH@Z */
3284 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEB_WHH@Z */
3285 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBGHH@Z */
3286 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBGHH@Z */
3287 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open_wchar, 16)
3288 basic_filebuf_char* __thiscall basic_filebuf_char_open_wchar(basic_filebuf_char *this, const wchar_t *name, int mode, int prot)
3290 FILE *f = NULL;
3292 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
3294 if(basic_filebuf_char_is_open(this))
3295 return NULL;
3297 if(!(f = _Fiopen_wchar(name, mode, prot)))
3298 return NULL;
3300 basic_filebuf_char__Init(this, f, INITFL_open);
3301 basic_filebuf_char__Initcvt_cvt(this, codecvt_char_use_facet(IOS_LOCALE(&this->base)));
3302 return this;
3305 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PB_WI@Z */
3306 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEB_WI@Z */
3307 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBGI@Z */
3308 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBGI@Z */
3309 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open_wchar_mode, 12)
3310 basic_filebuf_char* __thiscall basic_filebuf_char_open_wchar_mode(basic_filebuf_char *this, const wchar_t *name, unsigned int mode)
3312 return basic_filebuf_char_open_wchar(this, name, mode, SH_DENYNO);
3315 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBDHH@Z */
3316 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBDHH@Z */
3317 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open, 16)
3318 basic_filebuf_char* __thiscall basic_filebuf_char_open(basic_filebuf_char *this, const char *name, int mode, int prot)
3320 wchar_t nameW[FILENAME_MAX];
3322 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
3324 if(mbstowcs_s(NULL, nameW, FILENAME_MAX, name, FILENAME_MAX-1) != 0)
3325 return NULL;
3326 return basic_filebuf_char_open_wchar(this, nameW, mode, prot);
3329 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBDF@Z */
3330 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBDF@Z */
3331 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open_mode_old, 12)
3332 basic_filebuf_char* __thiscall basic_filebuf_char_open_mode_old(basic_filebuf_char *this, const char *name, short mode)
3334 TRACE("(%p %p %d)\n", this, name, mode);
3335 return basic_filebuf_char_open(this, name, mode, SH_DENYNO);
3338 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBDH@Z */
3339 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBDH@Z */
3340 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBDI@Z */
3341 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBDI@Z */
3342 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open_mode, 12)
3343 basic_filebuf_char* __thiscall basic_filebuf_char_open_mode(basic_filebuf_char *this, const char *name, unsigned int mode)
3345 return basic_filebuf_char_open(this, name, mode, SH_DENYNO);
3348 /* ?overflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
3349 /* ?overflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
3350 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_overflow, 8)
3351 int __thiscall basic_filebuf_char_overflow(basic_filebuf_char *this, int c)
3353 char buf[8], *dyn_buf;
3354 char ch = c, *to_next;
3355 const char *from_next;
3356 int ret, max_size;
3359 TRACE("(%p %d)\n", this, c);
3361 if(!basic_filebuf_char_is_open(this))
3362 return EOF;
3363 if(c == EOF)
3364 return !c;
3366 if(!this->cvt)
3367 return fputc(ch, this->file);
3369 from_next = &ch;
3370 do {
3371 ret = codecvt_char_out(this->cvt, &this->state, from_next, &ch+1,
3372 &from_next, buf, buf+sizeof(buf), &to_next);
3374 switch(ret) {
3375 case CODECVT_partial:
3376 if(to_next == buf)
3377 break;
3378 /* fall through */
3379 case CODECVT_ok:
3380 if(!fwrite(buf, to_next-buf, 1, this->file))
3381 return EOF;
3382 if(ret == CODECVT_partial)
3383 continue;
3384 return c;
3385 case CODECVT_noconv:
3386 return fwrite(&ch, sizeof(char), 1, this->file) ? c : EOF;
3387 default:
3388 return EOF;
3391 break;
3392 } while(1);
3394 max_size = codecvt_base_max_length(&this->cvt->base);
3395 dyn_buf = malloc(max_size);
3396 if(!dyn_buf)
3397 return EOF;
3399 ret = codecvt_char_out(this->cvt, &this->state, from_next, &ch+1,
3400 &from_next, dyn_buf, dyn_buf+max_size, &to_next);
3402 switch(ret) {
3403 case CODECVT_ok:
3404 ret = fwrite(dyn_buf, to_next-dyn_buf, 1, this->file);
3405 free(dyn_buf);
3406 return ret ? c : EOF;
3407 case CODECVT_partial:
3408 ERR("buffer should be big enough to store all output\n");
3409 /* fall through */
3410 default:
3411 free(dyn_buf);
3412 return EOF;
3416 /* ?pbackfail@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
3417 /* ?pbackfail@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
3418 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_pbackfail, 8)
3419 int __thiscall basic_filebuf_char_pbackfail(basic_filebuf_char *this, int c)
3421 TRACE("(%p %d)\n", this, c);
3423 if(!basic_filebuf_char_is_open(this))
3424 return EOF;
3426 if(basic_streambuf_char_gptr(&this->base)>basic_streambuf_char_eback(&this->base)
3427 && (c==EOF || (int)(unsigned char)basic_streambuf_char_gptr(&this->base)[-1]==c)) {
3428 basic_streambuf_char__Gndec(&this->base);
3429 return c==EOF ? !c : c;
3430 }else if(c!=EOF && !this->cvt) {
3431 return ungetc(c, this->file);
3434 return EOF;
3437 /* ?uflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
3438 /* ?uflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
3439 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_uflow, 4)
3440 int __thiscall basic_filebuf_char_uflow(basic_filebuf_char *this)
3442 char ch, buf[128], *to_next;
3443 const char *buf_next;
3444 int c, j;
3445 size_t i;
3447 TRACE("(%p)\n", this);
3449 if(!basic_filebuf_char_is_open(this))
3450 return EOF;
3452 if(basic_streambuf_char_gptr(&this->base) < basic_streambuf_char_egptr(&this->base))
3453 return (unsigned char)*basic_streambuf_char__Gninc(&this->base);
3455 c = fgetc(this->file);
3456 if(!this->cvt || c==EOF)
3457 return c;
3459 buf_next = buf;
3460 for(i=0; i < ARRAY_SIZE(buf); i++) {
3461 buf[i] = c;
3463 switch(codecvt_char_in(this->cvt, &this->state, buf_next,
3464 buf+i+1, &buf_next, &ch, &ch+1, &to_next)) {
3465 case CODECVT_partial:
3466 case CODECVT_ok:
3467 if(to_next == &ch) {
3468 c = fgetc(this->file);
3469 if(c == EOF)
3470 return EOF;
3471 continue;
3474 for(j = --i; j >= buf_next-buf; j--)
3475 ungetc(buf[j], this->file);
3476 return ch;
3477 case CODECVT_noconv:
3478 return (unsigned char)buf[0];
3479 default:
3480 return EOF;
3484 FIXME("buffer is too small\n");
3485 return EOF;
3488 /* ?underflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
3489 /* ?underflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
3490 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_underflow, 4)
3491 int __thiscall basic_filebuf_char_underflow(basic_filebuf_char *this)
3493 int ret;
3495 TRACE("(%p)\n", this);
3497 if(basic_streambuf_char_gptr(&this->base) < basic_streambuf_char_egptr(&this->base))
3498 return (unsigned char)*basic_streambuf_char_gptr(&this->base);
3500 ret = call_basic_streambuf_char_uflow(&this->base);
3501 if(ret != EOF)
3502 ret = call_basic_streambuf_char_pbackfail(&this->base, ret);
3503 return ret;
3506 /* ?seekoff@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
3507 /* ?seekoff@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@_JW4seekdir@ios_base@2@H@Z */
3508 /* ?seekoff@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
3509 /* ?seekoff@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
3510 #if STREAMOFF_BITS == 64
3511 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_seekoff, 24)
3512 #else
3513 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_seekoff, 20)
3514 #endif
3515 fpos_mbstatet* __thiscall basic_filebuf_char_seekoff(basic_filebuf_char *this,
3516 fpos_mbstatet *ret, streamoff off, int way, int mode)
3518 fpos_t pos;
3520 TRACE("(%p %p %s %d %d)\n", this, ret, wine_dbgstr_longlong(off), way, mode);
3522 if(!basic_filebuf_char_is_open(this) || !basic_filebuf_char__Endwrite(this)
3523 || fseek(this->file, off, way)) {
3524 ret->off = -1;
3525 ret->pos = 0;
3526 memset(&ret->state, 0, sizeof(ret->state));
3527 return ret;
3530 fgetpos(this->file, &pos);
3531 ret->off = 0;
3532 ret->pos = pos;
3533 ret->state = this->state;
3534 return ret;
3537 /* ?seekpos@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
3538 /* ?seekpos@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
3539 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_seekpos, 36)
3540 fpos_mbstatet* __thiscall basic_filebuf_char_seekpos(basic_filebuf_char *this,
3541 fpos_mbstatet *ret, fpos_mbstatet pos, int mode)
3543 fpos_t fpos;
3545 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_mbstatet(&pos), mode);
3547 if(!basic_filebuf_char_is_open(this) || !basic_filebuf_char__Endwrite(this)
3548 || fseek(this->file, (LONG)pos.pos, SEEK_SET)
3549 || (pos.off && fseek(this->file, pos.off, SEEK_CUR))) {
3550 ret->off = -1;
3551 ret->pos = 0;
3552 memset(&ret->state, 0, sizeof(ret->state));
3553 return ret;
3556 fgetpos(this->file, &fpos);
3557 ret->off = 0;
3558 ret->pos = fpos;
3559 ret->state = this->state;
3560 return ret;
3563 /* ?setbuf@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PADH@Z */
3564 /* ?setbuf@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PEAD_J@Z */
3565 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
3566 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_setbuf, 16)
3567 #else
3568 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_setbuf, 12)
3569 #endif
3570 basic_streambuf_char* __thiscall basic_filebuf_char_setbuf(basic_filebuf_char *this, char *buf, streamsize count)
3572 TRACE("(%p %p %s)\n", this, buf, wine_dbgstr_longlong(count));
3574 if(!basic_filebuf_char_is_open(this))
3575 return NULL;
3577 if(setvbuf(this->file, buf, (buf==NULL && count==0) ? _IONBF : _IOFBF, count))
3578 return NULL;
3580 basic_filebuf_char__Init(this, this->file, INITFL_open);
3581 return &this->base;
3584 /* ?sync@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
3585 /* ?sync@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
3586 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_sync, 4)
3587 int __thiscall basic_filebuf_char_sync(basic_filebuf_char *this)
3589 TRACE("(%p)\n", this);
3591 if(!basic_filebuf_char_is_open(this))
3592 return 0;
3594 if(call_basic_streambuf_char_overflow(&this->base, EOF) == EOF)
3595 return 0;
3596 return fflush(this->file);
3599 /* ?imbue@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEXABVlocale@2@@Z */
3600 /* ?imbue@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAXAEBVlocale@2@@Z */
3601 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_imbue, 8)
3602 void __thiscall basic_filebuf_char_imbue(basic_filebuf_char *this, const locale *loc)
3604 TRACE("(%p %p)\n", this, loc);
3605 basic_filebuf_char__Initcvt_cvt(this, codecvt_char_use_facet(loc));
3608 /* ?_Stinit@?1??_Init@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@23@@Z@4HA */
3609 /* ?_Stinit@?1??_Init@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@23@@Z@4HA */
3610 #if _MSVCP_VER >= 140
3611 _Mbstatet basic_filebuf_wchar__Init__Stinit = {0};
3612 #else
3613 _Mbstatet basic_filebuf_wchar__Init__Stinit = 0;
3614 #endif
3616 /* ?_Stinit@?1??_Init@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@23@@Z@4HA */
3617 /* ?_Stinit@?1??_Init@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@23@@Z@4HA */
3618 #if _MSVCP_VER >= 140
3619 _Mbstatet basic_filebuf_short__Init__Stinit = {0};
3620 #else
3621 _Mbstatet basic_filebuf_short__Init__Stinit = 0;
3622 #endif
3624 /* ?_Init@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@12@@Z */
3625 /* ?_Init@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@12@@Z */
3626 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar__Init, 12)
3627 void __thiscall basic_filebuf_wchar__Init(basic_filebuf_wchar *this, FILE *file, basic_filebuf__Initfl which)
3629 TRACE("(%p %p %d)\n", this, file, which);
3631 this->cvt = NULL;
3632 this->wrotesome = FALSE;
3633 this->state = basic_filebuf_wchar__Init__Stinit;
3634 this->close = (which == INITFL_open);
3635 this->file = file;
3637 basic_streambuf_wchar__Init_empty(&this->base);
3640 /* ?_Init@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@12@@Z */
3641 /* ?_Init@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@12@@Z */
3642 DEFINE_THISCALL_WRAPPER(basic_filebuf_short__Init, 12)
3643 void __thiscall basic_filebuf_short__Init(basic_filebuf_wchar *this, FILE *file, basic_filebuf__Initfl which)
3645 TRACE("(%p %p %d)\n", this, file, which);
3647 this->cvt = NULL;
3648 this->wrotesome = FALSE;
3649 this->state = basic_filebuf_short__Init__Stinit;
3650 this->close = (which == INITFL_open);
3651 this->file = file;
3653 basic_streambuf_wchar__Init_empty(&this->base);
3656 /* ?_Initcvt@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAEXPAV?$codecvt@_WDH@2@@Z */
3657 /* ?_Initcvt@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAV?$codecvt@_WDH@2@@Z */
3658 /* ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXPAV?$codecvt@GDH@2@@Z */
3659 /* ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXPEAV?$codecvt@GDH@2@@Z */
3660 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar__Initcvt_cvt, 8)
3661 void __thiscall basic_filebuf_wchar__Initcvt_cvt(basic_filebuf_wchar *this, codecvt_wchar *cvt)
3663 TRACE("(%p %p)\n", this, cvt);
3665 if(codecvt_base_always_noconv(&cvt->base)) {
3666 this->cvt = NULL;
3667 }else {
3668 basic_streambuf_wchar__Init_empty(&this->base);
3669 this->cvt = cvt;
3673 /* ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXXZ */
3674 /* ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXXZ */
3675 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar__Initcvt, 4)
3676 void __thiscall basic_filebuf_wchar__Initcvt(basic_filebuf_wchar *this)
3678 codecvt_wchar *cvt = codecvt_wchar_use_facet(IOS_LOCALE(&this->base));
3679 basic_filebuf_wchar__Initcvt_cvt( this, cvt );
3682 /* ?_Endwrite@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAE_NXZ */
3683 /* ?_Endwrite@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAA_NXZ */
3684 /* ?_Endwrite@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAE_NXZ */
3685 /* ?_Endwrite@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAA_NXZ */
3686 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar__Endwrite, 4)
3687 bool __thiscall basic_filebuf_wchar__Endwrite(basic_filebuf_wchar *this)
3689 TRACE("(%p)\n", this);
3691 if(!this->wrotesome || !this->cvt)
3692 return TRUE;
3694 if(call_basic_streambuf_wchar_overflow(&this->base, WEOF) == WEOF)
3695 return FALSE;
3697 while(1) {
3698 /* TODO: check if we need a dynamic buffer here */
3699 char buf[128];
3700 char *next;
3701 int ret;
3703 ret = codecvt_wchar_unshift(this->cvt, &this->state, buf, buf+sizeof(buf), &next);
3704 switch(ret) {
3705 case CODECVT_ok:
3706 this->wrotesome = FALSE;
3707 /* fall through */
3708 case CODECVT_partial:
3709 if(!fwrite(buf, next-buf, 1, this->file))
3710 return FALSE;
3711 if(this->wrotesome)
3712 break;
3713 /* fall through */
3714 case CODECVT_noconv:
3715 if(call_basic_streambuf_wchar_overflow(&this->base, WEOF) == WEOF)
3716 return FALSE;
3717 return TRUE;
3718 default:
3719 return FALSE;
3724 /* ?close@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@XZ */
3725 /* ?close@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@XZ */
3726 /* ?close@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@XZ */
3727 /* ?close@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@XZ */
3728 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_close, 4)
3729 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_close(basic_filebuf_wchar *this)
3731 basic_filebuf_wchar *ret = this;
3733 TRACE("(%p)\n", this);
3735 if(!this->file)
3736 return NULL;
3738 /* TODO: handle exceptions */
3739 if(!basic_filebuf_wchar__Endwrite(this))
3740 ret = NULL;
3741 if(fclose(this->file))
3742 ret = NULL;
3744 basic_filebuf_wchar__Init(this, NULL, INITFL_close);
3745 return ret;
3748 /* ??0?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAE@PAU_iobuf@@@Z */
3749 /* ??0?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAA@PEAU_iobuf@@@Z */
3750 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_ctor_file, 8)
3751 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_ctor_file(basic_filebuf_wchar *this, FILE *file)
3753 TRACE("(%p %p)\n", this, file);
3755 basic_streambuf_wchar_ctor(&this->base);
3756 this->base.vtable = &basic_filebuf_wchar_vtable;
3758 basic_filebuf_wchar__Init(this, file, INITFL_new);
3759 return this;
3762 /* ??0?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAE@PAU_iobuf@@@Z */
3763 /* ??0?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAA@PEAU_iobuf@@@Z */
3764 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_ctor_file, 8)
3765 basic_filebuf_wchar* __thiscall basic_filebuf_short_ctor_file(basic_filebuf_wchar *this, FILE *file)
3767 TRACE("(%p %p)\n", this, file);
3769 basic_streambuf_short_ctor(&this->base);
3770 this->base.vtable = &basic_filebuf_short_vtable;
3772 basic_filebuf_short__Init(this, file, INITFL_new);
3773 return this;
3776 /* ??_F?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
3777 /* ??_F?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
3778 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_ctor, 4)
3779 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_ctor(basic_filebuf_wchar *this)
3781 return basic_filebuf_wchar_ctor_file(this, NULL);
3784 /* ??_F?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEXXZ */
3785 /* ??_F?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAXXZ */
3786 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_ctor, 4)
3787 basic_filebuf_wchar* __thiscall basic_filebuf_short_ctor(basic_filebuf_wchar *this)
3789 return basic_filebuf_short_ctor_file(this, NULL);
3792 /* ??0?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAE@W4_Uninitialized@1@@Z */
3793 /* ??0?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
3794 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_ctor_uninitialized, 8)
3795 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_ctor_uninitialized(basic_filebuf_wchar *this, int uninitialized)
3797 TRACE("(%p %d)\n", this, uninitialized);
3799 basic_streambuf_wchar_ctor(&this->base);
3800 this->base.vtable = &basic_filebuf_wchar_vtable;
3801 return this;
3804 /* ??0?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAE@W4_Uninitialized@1@@Z */
3805 /* ??0?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
3806 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_ctor_uninitialized, 8)
3807 basic_filebuf_wchar* __thiscall basic_filebuf_short_ctor_uninitialized(basic_filebuf_wchar *this, int uninitialized)
3809 TRACE("(%p %d)\n", this, uninitialized);
3811 basic_streambuf_short_ctor(&this->base);
3812 this->base.vtable = &basic_filebuf_short_vtable;
3813 return this;
3816 /* ??1?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
3817 /* ??1?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
3818 /* ??1?$basic_filebuf@GU?$char_traits@G@std@@@std@@UAE@XZ */
3819 /* ??1?$basic_filebuf@GU?$char_traits@G@std@@@std@@UEAA@XZ */
3820 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_dtor, 4)
3821 void __thiscall basic_filebuf_wchar_dtor(basic_filebuf_wchar *this)
3823 TRACE("(%p)\n", this);
3825 if(this->close)
3826 basic_filebuf_wchar_close(this);
3827 basic_streambuf_wchar_dtor(&this->base);
3830 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_vector_dtor, 8)
3831 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_vector_dtor(basic_filebuf_wchar *this, unsigned int flags)
3833 TRACE("(%p %x)\n", this, flags);
3834 if(flags & 2) {
3835 /* we have an array, with the number of elements stored before the first object */
3836 INT_PTR i, *ptr = (INT_PTR *)this-1;
3838 for(i=*ptr-1; i>=0; i--)
3839 basic_filebuf_wchar_dtor(this+i);
3840 operator_delete(ptr);
3841 } else {
3842 basic_filebuf_wchar_dtor(this);
3843 if(flags & 1)
3844 operator_delete(this);
3847 return this;
3850 /* ?is_open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QBE_NXZ */
3851 /* ?is_open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEBA_NXZ */
3852 /* ?is_open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QBE_NXZ */
3853 /* ?is_open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEBA_NXZ */
3854 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_is_open, 4)
3855 bool __thiscall basic_filebuf_wchar_is_open(const basic_filebuf_wchar *this)
3857 TRACE("(%p)\n", this);
3858 return this->file != NULL;
3861 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PB_WHH@Z */
3862 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEB_WHH@Z */
3863 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PBGHH@Z */
3864 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEBGHH@Z */
3865 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_open_wchar, 16)
3866 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_open_wchar(basic_filebuf_wchar *this, const wchar_t *name, int mode, int prot)
3868 FILE *f = NULL;
3870 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
3872 if(basic_filebuf_wchar_is_open(this))
3873 return NULL;
3875 if(!(f = _Fiopen_wchar(name, mode, prot)))
3876 return NULL;
3878 basic_filebuf_wchar__Init(this, f, INITFL_open);
3879 basic_filebuf_wchar__Initcvt_cvt(this, codecvt_wchar_use_facet(IOS_LOCALE(&this->base)));
3880 return this;
3883 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PB_WHH@Z */
3884 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEB_WHH@Z */
3885 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBGHH@Z */
3886 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBGHH@Z */
3887 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_open_wchar, 16)
3888 basic_filebuf_wchar* __thiscall basic_filebuf_short_open_wchar(basic_filebuf_wchar *this, const wchar_t *name, int mode, int prot)
3890 FILE *f = NULL;
3892 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
3894 if(basic_filebuf_wchar_is_open(this))
3895 return NULL;
3897 if(!(f = _Fiopen_wchar(name, mode, prot)))
3898 return NULL;
3900 basic_filebuf_short__Init(this, f, INITFL_open);
3901 basic_filebuf_wchar__Initcvt_cvt(this, codecvt_short_use_facet(IOS_LOCALE(&this->base)));
3902 return this;
3905 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PB_WI@Z */
3906 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEB_WI@Z */
3907 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PBGI@Z */
3908 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEBGI@Z */
3909 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_open_wchar_mode, 12)
3910 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_open_wchar_mode(basic_filebuf_wchar *this, const wchar_t *name, unsigned int mode)
3912 return basic_filebuf_wchar_open_wchar(this, name, mode, SH_DENYNO);
3915 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PB_WI@Z */
3916 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEB_WI@Z */
3917 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBGI@Z */
3918 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBGI@Z */
3919 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_open_wchar_mode, 12)
3920 basic_filebuf_wchar* __thiscall basic_filebuf_short_open_wchar_mode(basic_filebuf_wchar *this, const wchar_t *name, unsigned int mode)
3922 return basic_filebuf_short_open_wchar(this, name, mode, SH_DENYNO);
3925 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PBDHH@Z */
3926 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEBDHH@Z */
3927 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_open, 16)
3928 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_open(basic_filebuf_wchar *this, const char *name, int mode, int prot)
3930 wchar_t nameW[FILENAME_MAX];
3932 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
3934 if(mbstowcs_s(NULL, nameW, FILENAME_MAX, name, FILENAME_MAX-1) != 0)
3935 return NULL;
3936 return basic_filebuf_wchar_open_wchar(this, nameW, mode, prot);
3939 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBDHH@Z */
3940 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBDHH@Z */
3941 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_open, 16)
3942 basic_filebuf_wchar* __thiscall basic_filebuf_short_open(basic_filebuf_wchar *this, const char *name, int mode, int prot)
3944 wchar_t nameW[FILENAME_MAX];
3946 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
3948 if(mbstowcs_s(NULL, nameW, FILENAME_MAX, name, FILENAME_MAX-1) != 0)
3949 return NULL;
3950 return basic_filebuf_short_open_wchar(this, nameW, mode, prot);
3953 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBDF@Z */
3954 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBDF@Z */
3955 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_open_mode_old, 12)
3956 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_open_mode_old(basic_filebuf_wchar *this, const char *name, short mode)
3958 TRACE("(%p %p %d)\n", this, name, mode);
3959 return basic_filebuf_wchar_open(this, name, mode, SH_DENYNO);
3962 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBDH@Z */
3963 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBDH@Z */
3964 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PBDI@Z */
3965 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEBDI@Z */
3966 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_open_mode, 12)
3967 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_open_mode(basic_filebuf_wchar *this, const char *name, unsigned int mode)
3969 return basic_filebuf_wchar_open(this, name, mode, SH_DENYNO);
3972 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBDI@Z */
3973 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBDI@Z */
3974 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_open_mode, 12)
3975 basic_filebuf_wchar* __thiscall basic_filebuf_short_open_mode(basic_filebuf_wchar *this, const char *name, unsigned int mode)
3977 return basic_filebuf_short_open(this, name, mode, SH_DENYNO);
3980 /* ?overflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEGG@Z */
3981 /* ?overflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAGG@Z */
3982 /* ?overflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEGG@Z */
3983 /* ?overflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAGG@Z */
3984 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_overflow, 8)
3985 unsigned short __thiscall basic_filebuf_wchar_overflow(basic_filebuf_wchar *this, unsigned short c)
3987 char buf[8], *dyn_buf, *to_next;
3988 wchar_t ch = c;
3989 const wchar_t *from_next;
3990 int max_size;
3991 unsigned short ret;
3994 TRACE("(%p %d)\n", this, c);
3996 if(!basic_filebuf_wchar_is_open(this))
3997 return WEOF;
3998 if(c == WEOF)
3999 return !c;
4001 if(!this->cvt)
4002 return fputwc(ch, this->file);
4004 from_next = &ch;
4005 do {
4006 ret = codecvt_wchar_out(this->cvt, &this->state, from_next, &ch+1,
4007 &from_next, buf, buf+sizeof(buf), &to_next);
4009 switch(ret) {
4010 case CODECVT_partial:
4011 if(to_next == buf)
4012 break;
4013 /* fall through */
4014 case CODECVT_ok:
4015 if(!fwrite(buf, to_next-buf, 1, this->file))
4016 return WEOF;
4017 if(ret == CODECVT_partial)
4018 continue;
4019 return c;
4020 case CODECVT_noconv:
4021 return fwrite(&ch, sizeof(wchar_t), 1, this->file) ? c : WEOF;
4022 default:
4023 return WEOF;
4026 break;
4027 } while(1);
4029 max_size = codecvt_base_max_length(&this->cvt->base);
4030 dyn_buf = malloc(max_size);
4031 if(!dyn_buf)
4032 return WEOF;
4034 ret = codecvt_wchar_out(this->cvt, &this->state, from_next, &ch+1,
4035 &from_next, dyn_buf, dyn_buf+max_size, &to_next);
4037 switch(ret) {
4038 case CODECVT_ok:
4039 ret = fwrite(dyn_buf, to_next-dyn_buf, 1, this->file);
4040 free(dyn_buf);
4041 return ret ? c : WEOF;
4042 case CODECVT_partial:
4043 ERR("buffer should be big enough to store all output\n");
4044 /* fall through */
4045 default:
4046 free(dyn_buf);
4047 return WEOF;
4051 /* ?pbackfail@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEGG@Z */
4052 /* ?pbackfail@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAGG@Z */
4053 /* ?pbackfail@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEGG@Z */
4054 /* ?pbackfail@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAGG@Z */
4055 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_pbackfail, 8)
4056 unsigned short __thiscall basic_filebuf_wchar_pbackfail(basic_filebuf_wchar *this, unsigned short c)
4058 TRACE("(%p %d)\n", this, c);
4060 if(!basic_filebuf_wchar_is_open(this))
4061 return WEOF;
4063 if(basic_streambuf_wchar_gptr(&this->base)>basic_streambuf_wchar_eback(&this->base)
4064 && (c==WEOF || basic_streambuf_wchar_gptr(&this->base)[-1]==c)) {
4065 basic_streambuf_wchar__Gndec(&this->base);
4066 return c==WEOF ? !c : c;
4067 }else if(c!=WEOF && !this->cvt) {
4068 return ungetwc(c, this->file);
4069 }else if(c!=WEOF && basic_streambuf_wchar_gptr(&this->base)!=&this->putback) {
4070 this->putback = c;
4071 basic_streambuf_wchar_setg(&this->base, &this->putback, &this->putback, &this->putback+1);
4072 return c;
4075 return WEOF;
4078 /* ?uflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEGXZ */
4079 /* ?uflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAGXZ */
4080 /* ?uflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEGXZ */
4081 /* ?uflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAGXZ */
4082 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_uflow, 4)
4083 unsigned short __thiscall basic_filebuf_wchar_uflow(basic_filebuf_wchar *this)
4085 wchar_t ch, *to_next;
4086 char buf[128];
4087 const char *buf_next;
4088 int c, j;
4089 size_t i;
4091 TRACE("(%p)\n", this);
4093 if(!basic_filebuf_wchar_is_open(this))
4094 return WEOF;
4096 if(basic_streambuf_wchar_gptr(&this->base) < basic_streambuf_wchar_egptr(&this->base))
4097 return *basic_streambuf_wchar__Gninc(&this->base);
4099 if(!this->cvt)
4100 return fgetwc(this->file);
4102 buf_next = buf;
4103 for(i=0; i < ARRAY_SIZE(buf); i++) {
4104 if((c = fgetc(this->file)) == EOF)
4105 return WEOF;
4106 buf[i] = c;
4108 switch(codecvt_wchar_in(this->cvt, &this->state, buf_next,
4109 buf+i+1, &buf_next, &ch, &ch+1, &to_next)) {
4110 case CODECVT_partial:
4111 case CODECVT_ok:
4112 if(to_next == &ch)
4113 continue;
4115 for(j = --i; j >= buf_next-buf; j--)
4116 ungetc(buf[j], this->file);
4117 return ch;
4118 case CODECVT_noconv:
4119 if(i+1 < sizeof(wchar_t))
4120 continue;
4122 memcpy(&ch, buf, sizeof(wchar_t));
4123 return ch;
4124 default:
4125 return WEOF;
4129 FIXME("buffer is too small\n");
4130 return WEOF;
4133 /* ?underflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEGXZ */
4134 /* ?underflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAGXZ */
4135 /* ?underflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEGXZ */
4136 /* ?underflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAGXZ */
4137 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_underflow, 4)
4138 unsigned short __thiscall basic_filebuf_wchar_underflow(basic_filebuf_wchar *this)
4140 unsigned short ret;
4142 TRACE("(%p)\n", this);
4144 if(basic_streambuf_wchar_gptr(&this->base) < basic_streambuf_wchar_egptr(&this->base))
4145 return *basic_streambuf_wchar_gptr(&this->base);
4147 ret = call_basic_streambuf_wchar_uflow(&this->base);
4148 if(ret != WEOF)
4149 ret = call_basic_streambuf_wchar_pbackfail(&this->base, ret);
4150 return ret;
4153 /* ?seekoff@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
4154 /* ?seekoff@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@_JW4seekdir@ios_base@2@H@Z */
4155 /* ?seekoff@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
4156 /* ?seekoff@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
4157 /* ?seekoff@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
4158 /* ?seekoff@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
4159 #if STREAMOFF_BITS == 64
4160 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_seekoff, 24)
4161 #else
4162 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_seekoff, 20)
4163 #endif
4164 fpos_mbstatet* __thiscall basic_filebuf_wchar_seekoff(basic_filebuf_wchar *this,
4165 fpos_mbstatet *ret, streamoff off, int way, int mode)
4167 fpos_t pos;
4169 TRACE("(%p %p %s %d %d)\n", this, ret, wine_dbgstr_longlong(off), way, mode);
4171 if(basic_streambuf_wchar_gptr(&this->base) == &this->putback) {
4172 if(way == SEEKDIR_cur)
4173 off -= sizeof(wchar_t);
4175 basic_streambuf_wchar_setg(&this->base, &this->putback, &this->putback+1, &this->putback+1);
4178 if(!basic_filebuf_wchar_is_open(this) || !basic_filebuf_wchar__Endwrite(this)
4179 || fseek(this->file, off, way)) {
4180 ret->off = -1;
4181 ret->pos = 0;
4182 memset(&ret->state, 0, sizeof(ret->state));
4183 return ret;
4186 fgetpos(this->file, &pos);
4187 ret->off = 0;
4188 ret->pos = pos;
4189 ret->state = this->state;
4190 return ret;
4193 /* ?seekpos@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
4194 /* ?seekpos@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
4195 /* ?seekpos@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
4196 /* ?seekpos@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
4197 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_seekpos, 36)
4198 fpos_mbstatet* __thiscall basic_filebuf_wchar_seekpos(basic_filebuf_wchar *this,
4199 fpos_mbstatet *ret, fpos_mbstatet pos, int mode)
4201 fpos_t fpos;
4203 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_mbstatet(&pos), mode);
4205 if(!basic_filebuf_wchar_is_open(this) || !basic_filebuf_wchar__Endwrite(this)
4206 || fseek(this->file, (LONG)pos.pos, SEEK_SET)
4207 || (pos.off && fseek(this->file, pos.off, SEEK_CUR))) {
4208 ret->off = -1;
4209 ret->pos = 0;
4210 memset(&ret->state, 0, sizeof(ret->state));
4211 return ret;
4214 if(basic_streambuf_wchar_gptr(&this->base) == &this->putback)
4215 basic_streambuf_wchar_setg(&this->base, &this->putback, &this->putback+1, &this->putback+1);
4217 fgetpos(this->file, &fpos);
4218 ret->off = 0;
4219 ret->pos = fpos;
4220 ret->state = this->state;
4221 return ret;
4224 /* ?setbuf@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@PA_WH@Z */
4225 /* ?setbuf@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@PEA_W_J@Z */
4226 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
4227 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_setbuf, 16)
4228 #else
4229 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_setbuf, 12)
4230 #endif
4231 basic_streambuf_wchar* __thiscall basic_filebuf_wchar_setbuf(basic_filebuf_wchar *this, wchar_t *buf, streamsize count)
4233 TRACE("(%p %p %s)\n", this, buf, wine_dbgstr_longlong(count));
4235 if(!basic_filebuf_wchar_is_open(this))
4236 return NULL;
4238 if(setvbuf(this->file, (char*)buf, (buf==NULL && count==0) ? _IONBF : _IOFBF, count*sizeof(wchar_t)))
4239 return NULL;
4241 basic_filebuf_wchar__Init(this, this->file, INITFL_open);
4242 return &this->base;
4245 /* ?setbuf@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEPAV?$basic_streambuf@GU?$char_traits@G@std@@@2@PAGH@Z */
4246 /* ?setbuf@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAPEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@PEAG_J@Z */
4247 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
4248 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_setbuf, 16)
4249 #else
4250 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_setbuf, 12)
4251 #endif
4252 basic_streambuf_wchar* __thiscall basic_filebuf_short_setbuf(basic_filebuf_wchar *this, wchar_t *buf, streamsize count)
4254 TRACE("(%p %p %s)\n", this, buf, wine_dbgstr_longlong(count));
4256 if(!basic_filebuf_wchar_is_open(this))
4257 return NULL;
4259 if(setvbuf(this->file, (char*)buf, (buf==NULL && count==0) ? _IONBF : _IOFBF, count*sizeof(wchar_t)))
4260 return NULL;
4262 basic_filebuf_short__Init(this, this->file, INITFL_open);
4263 return &this->base;
4266 /* ?sync@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEHXZ */
4267 /* ?sync@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAHXZ */
4268 /* ?sync@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEHXZ */
4269 /* ?sync@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAHXZ */
4270 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_sync, 4)
4271 int __thiscall basic_filebuf_wchar_sync(basic_filebuf_wchar *this)
4273 TRACE("(%p)\n", this);
4275 if(!basic_filebuf_wchar_is_open(this))
4276 return 0;
4278 if(call_basic_streambuf_wchar_overflow(&this->base, WEOF) == WEOF)
4279 return 0;
4280 return fflush(this->file);
4283 /* ?imbue@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEXABVlocale@2@@Z */
4284 /* ?imbue@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAXAEBVlocale@2@@Z */
4285 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_imbue, 8)
4286 void __thiscall basic_filebuf_wchar_imbue(basic_filebuf_wchar *this, const locale *loc)
4288 TRACE("(%p %p)\n", this, loc);
4289 basic_filebuf_wchar__Initcvt_cvt(this, codecvt_wchar_use_facet(loc));
4292 /* ?imbue@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEXABVlocale@2@@Z */
4293 /* ?imbue@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAXAEBVlocale@2@@Z */
4294 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_imbue, 8)
4295 void __thiscall basic_filebuf_short_imbue(basic_filebuf_wchar *this, const locale *loc)
4297 TRACE("(%p %p)\n", this, loc);
4298 basic_filebuf_wchar__Initcvt_cvt(this, codecvt_short_use_facet(loc));
4301 /* ?_Getstate@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEHH@Z */
4302 /* ?_Getstate@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAHH@Z */
4303 /* ?_Mode@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEHH@Z */
4304 /* ?_Mode@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAHH@Z */
4305 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char__Getstate, 8)
4306 int __thiscall basic_stringbuf_char__Getstate(basic_stringbuf_char *this, IOSB_openmode mode)
4308 int state = 0;
4310 if(!(mode & OPENMODE_in))
4311 state |= STRINGBUF_no_read;
4313 if(!(mode & OPENMODE_out))
4314 state |= STRINGBUF_no_write;
4316 if(mode & OPENMODE_ate)
4317 state |= STRINGBUF_at_end;
4319 if(mode & OPENMODE_app)
4320 state |= STRINGBUF_append;
4322 return state;
4325 /* ?_Init@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXPBDIH@Z */
4326 /* ?_Init@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAXPEBD_KH@Z */
4327 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char__Init, 16)
4328 void __thiscall basic_stringbuf_char__Init(basic_stringbuf_char *this, const char *str, size_t count, int state)
4330 TRACE("(%p, %p, %Iu, %d)\n", this, str, count, state);
4332 basic_streambuf_char__Init_empty(&this->base);
4334 this->state = state;
4335 this->seekhigh = NULL;
4337 if(count && str) {
4338 char *buf = operator_new(count);
4340 memcpy(buf, str, count);
4341 this->seekhigh = buf + count;
4343 this->state |= STRINGBUF_allocated;
4345 if(!(state & STRINGBUF_no_read))
4346 basic_streambuf_char_setg(&this->base, buf, buf, buf + count);
4348 if(!(state & STRINGBUF_no_write)) {
4349 basic_streambuf_char_setp_next(&this->base, buf, (state & STRINGBUF_at_end) ? buf + count : buf, buf + count);
4351 if(!basic_streambuf_char_gptr(&this->base))
4352 basic_streambuf_char_setg(&this->base, buf, 0, buf);
4357 /* ??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 */
4358 /* ??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 */
4359 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_ctor_str, 12)
4360 basic_stringbuf_char* __thiscall basic_stringbuf_char_ctor_str(basic_stringbuf_char *this,
4361 const basic_string_char *str, IOSB_openmode mode)
4363 TRACE("(%p %p %d)\n", this, str, mode);
4365 basic_streambuf_char_ctor(&this->base);
4366 this->base.vtable = &basic_stringbuf_char_vtable;
4368 basic_stringbuf_char__Init(this, MSVCP_basic_string_char_c_str(str),
4369 str->size, basic_stringbuf_char__Getstate(this, mode));
4370 return this;
4373 /* ??0?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z */
4374 /* ??0?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z */
4375 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_ctor_mode, 8)
4376 basic_stringbuf_char* __thiscall basic_stringbuf_char_ctor_mode(
4377 basic_stringbuf_char *this, IOSB_openmode mode)
4379 TRACE("(%p %d)\n", this, mode);
4381 basic_streambuf_char_ctor(&this->base);
4382 this->base.vtable = &basic_stringbuf_char_vtable;
4384 basic_stringbuf_char__Init(this, NULL, 0, basic_stringbuf_char__Getstate(this, mode));
4385 return this;
4388 /* ??_F?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
4389 /* ??_F?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
4390 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_ctor, 4)
4391 basic_stringbuf_char* __thiscall basic_stringbuf_char_ctor(basic_stringbuf_char *this)
4393 return basic_stringbuf_char_ctor_mode(this, OPENMODE_in|OPENMODE_out);
4396 /* ?_Tidy@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXXZ */
4397 /* ?_Tidy@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAXXZ */
4398 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char__Tidy, 4)
4399 void __thiscall basic_stringbuf_char__Tidy(basic_stringbuf_char *this)
4401 TRACE("(%p)\n", this);
4403 if(this->state & STRINGBUF_allocated) {
4404 operator_delete(basic_streambuf_char_eback(&this->base));
4405 this->seekhigh = NULL;
4406 this->state &= ~STRINGBUF_allocated;
4409 basic_streambuf_char__Init_empty(&this->base);
4412 /* ??1?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ */
4413 /* ??1?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ */
4414 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_dtor, 4)
4415 void __thiscall basic_stringbuf_char_dtor(basic_stringbuf_char *this)
4417 TRACE("(%p)\n", this);
4419 basic_stringbuf_char__Tidy(this);
4420 basic_streambuf_char_dtor(&this->base);
4423 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_vector_dtor, 8)
4424 basic_stringbuf_char* __thiscall basic_stringbuf_char_vector_dtor(basic_stringbuf_char *this, unsigned int flags)
4426 TRACE("(%p %x)\n", this, flags);
4428 if(flags & 2) {
4429 /* we have an array, with the number of elements stored before the first object */
4430 INT_PTR i, *ptr = (INT_PTR *) this - 1;
4432 for (i = *ptr - 1; i >= 0; i--)
4433 basic_stringbuf_char_dtor(this+i);
4435 operator_delete(ptr);
4436 }else {
4437 basic_stringbuf_char_dtor(this);
4439 if(flags & 1)
4440 operator_delete(this);
4443 return this;
4446 /* ?overflow@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAEHH@Z */
4447 /* ?overflow@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAAHH@Z */
4448 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_overflow, 8)
4449 int __thiscall basic_stringbuf_char_overflow(basic_stringbuf_char *this, int meta)
4451 size_t oldsize, size;
4452 char *ptr, *buf;
4454 TRACE("(%p %x)\n", this, meta);
4456 if(meta == EOF)
4457 return !EOF;
4458 if(this->state & STRINGBUF_no_write)
4459 return EOF;
4461 ptr = basic_streambuf_char_pptr(&this->base);
4462 if((this->state&STRINGBUF_append) && ptr<this->seekhigh)
4463 basic_streambuf_char_setp_next(&this->base, basic_streambuf_char_pbase(&this->base),
4464 this->seekhigh, basic_streambuf_char_epptr(&this->base));
4466 if(ptr && ptr<basic_streambuf_char_epptr(&this->base))
4467 return (unsigned char)(*basic_streambuf_char__Pninc(&this->base) = meta);
4469 oldsize = (ptr ? basic_streambuf_char_epptr(&this->base)-basic_streambuf_char_eback(&this->base): 0);
4470 size = oldsize|0xf;
4471 size += size/2;
4472 buf = operator_new(size);
4474 if(!oldsize) {
4475 this->seekhigh = buf;
4476 basic_streambuf_char_setp(&this->base, buf, buf+size);
4477 if(this->state & STRINGBUF_no_read)
4478 basic_streambuf_char_setg(&this->base, buf, NULL, buf);
4479 else
4480 basic_streambuf_char_setg(&this->base, buf, buf, buf+1);
4482 this->state |= STRINGBUF_allocated;
4483 }else {
4484 ptr = basic_streambuf_char_eback(&this->base);
4485 memcpy(buf, ptr, oldsize);
4487 this->seekhigh = buf+(this->seekhigh-ptr);
4488 basic_streambuf_char_setp_next(&this->base, buf,
4489 buf+(basic_streambuf_char_pptr(&this->base)-ptr), buf+size);
4490 if(this->state & STRINGBUF_no_read)
4491 basic_streambuf_char_setg(&this->base, buf, NULL, buf);
4492 else
4493 basic_streambuf_char_setg(&this->base, buf,
4494 buf+(basic_streambuf_char_gptr(&this->base)-ptr),
4495 basic_streambuf_char_pptr(&this->base)+1);
4497 operator_delete(ptr);
4500 return (unsigned char)(*basic_streambuf_char__Pninc(&this->base) = meta);
4503 /* ?pbackfail@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAEHH@Z */
4504 /* ?pbackfail@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAAHH@Z */
4505 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_pbackfail, 8)
4506 int __thiscall basic_stringbuf_char_pbackfail(basic_stringbuf_char *this, int c)
4508 char *cur;
4510 TRACE("(%p %x)\n", this, c);
4512 cur = basic_streambuf_char_gptr(&this->base);
4513 if(!cur || cur==basic_streambuf_char_eback(&this->base)
4514 || (c!=EOF && c!=cur[-1] && this->state&STRINGBUF_no_write))
4515 return EOF;
4517 if(c != EOF)
4518 cur[-1] = c;
4519 basic_streambuf_char_gbump(&this->base, -1);
4520 return c==EOF ? !EOF : c;
4523 /* ?underflow@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAEHXZ */
4524 /* ?underflow@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAAHXZ */
4525 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_underflow, 4)
4526 int __thiscall basic_stringbuf_char_underflow(basic_stringbuf_char *this)
4528 char *ptr, *cur;
4530 TRACE("(%p)\n", this);
4532 cur = basic_streambuf_char_gptr(&this->base);
4533 if(!cur || this->state&STRINGBUF_no_read)
4534 return EOF;
4536 ptr = basic_streambuf_char_pptr(&this->base);
4537 if(this->seekhigh < ptr)
4538 this->seekhigh = ptr;
4540 ptr = basic_streambuf_char_egptr(&this->base);
4541 if(this->seekhigh > ptr)
4542 basic_streambuf_char_setg(&this->base, basic_streambuf_char_eback(&this->base), cur, this->seekhigh);
4544 if(cur < this->seekhigh)
4545 return (unsigned char)*cur;
4546 return EOF;
4549 /* ?seekoff@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
4550 /* ?seekoff@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAA?AV?$fpos@H@2@_JW4seekdir@ios_base@2@H@Z */
4551 /* ?seekoff@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAE?AV?$fpos@H@2@JHH@Z */
4552 /* ?seekoff@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
4553 #if STREAMOFF_BITS == 64
4554 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_seekoff, 24)
4555 #else
4556 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_seekoff, 20)
4557 #endif
4558 fpos_mbstatet* __thiscall basic_stringbuf_char_seekoff(basic_stringbuf_char *this,
4559 fpos_mbstatet *ret, streamoff off, int way, int mode)
4561 char *beg, *cur_r, *cur_w;
4563 TRACE("(%p %p %s %d %d)\n", this, ret, wine_dbgstr_longlong(off), way, mode);
4565 cur_w = basic_streambuf_char_pptr(&this->base);
4566 if(cur_w > this->seekhigh)
4567 this->seekhigh = cur_w;
4569 ret->off = 0;
4570 ret->pos = 0;
4571 memset(&ret->state, 0, sizeof(ret->state));
4573 beg = basic_streambuf_char_eback(&this->base);
4574 cur_r = basic_streambuf_char_gptr(&this->base);
4575 if((mode & OPENMODE_in) && cur_r) {
4576 if(way==SEEKDIR_cur && !(mode & OPENMODE_out))
4577 off += cur_r-beg;
4578 else if(way == SEEKDIR_end)
4579 off += this->seekhigh-beg;
4580 else if(way != SEEKDIR_beg)
4581 off = -1;
4583 if(off<0 || off>this->seekhigh-beg) {
4584 off = -1;
4585 }else {
4586 basic_streambuf_char_gbump(&this->base, beg-cur_r+off);
4587 if((mode & OPENMODE_out) && cur_w) {
4588 basic_streambuf_char_setp_next(&this->base, beg,
4589 basic_streambuf_char_gptr(&this->base),
4590 basic_streambuf_char_epptr(&this->base));
4593 }else if((mode & OPENMODE_out) && cur_w) {
4594 if(way == SEEKDIR_cur)
4595 off += cur_w-beg;
4596 else if(way == SEEKDIR_end)
4597 off += this->seekhigh-beg;
4598 else if(way != SEEKDIR_beg)
4599 off = -1;
4601 if(off<0 || off>this->seekhigh-beg)
4602 off = -1;
4603 else
4604 basic_streambuf_char_pbump(&this->base, beg-cur_w+off);
4605 }else {
4606 off = -1;
4609 ret->off = off;
4610 return ret;
4613 /* ?seekpos@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
4614 /* ?seekpos@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
4615 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_seekpos, 36)
4616 fpos_mbstatet* __thiscall basic_stringbuf_char_seekpos(basic_stringbuf_char *this,
4617 fpos_mbstatet *ret, fpos_mbstatet pos, int mode)
4619 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_mbstatet(&pos), mode);
4621 if(pos.off==-1 && pos.pos==0 && MBSTATET_TO_INT(&pos.state)==0) {
4622 *ret = pos;
4623 return ret;
4626 return basic_stringbuf_char_seekoff(this, ret, pos.pos+pos.off, SEEKDIR_beg, mode);
4629 /* ?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 */
4630 /* ?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 */
4631 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_str_set, 8)
4632 void __thiscall basic_stringbuf_char_str_set(basic_stringbuf_char *this, const basic_string_char *str)
4634 TRACE("(%p %p)\n", this, str);
4636 basic_stringbuf_char__Tidy(this);
4637 basic_stringbuf_char__Init(this, MSVCP_basic_string_char_c_str(str), str->size, this->state);
4640 /* ?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 */
4641 /* ?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 */
4642 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_str_get, 8)
4643 basic_string_char* __thiscall basic_stringbuf_char_str_get(const basic_stringbuf_char *this, basic_string_char *ret)
4645 char *ptr;
4647 TRACE("(%p)\n", this);
4649 if(!(this->state & STRINGBUF_no_write) && basic_streambuf_char_pptr(&this->base)) {
4650 char *pptr;
4652 ptr = basic_streambuf_char_pbase(&this->base);
4653 pptr = basic_streambuf_char_pptr(&this->base);
4655 return MSVCP_basic_string_char_ctor_cstr_len(ret, ptr, (this->seekhigh < pptr ? pptr : this->seekhigh) - ptr);
4658 if(!(this->state & STRINGBUF_no_read) && basic_streambuf_char_gptr(&this->base)) {
4659 ptr = basic_streambuf_char_eback(&this->base);
4660 return MSVCP_basic_string_char_ctor_cstr_len(ret, ptr, basic_streambuf_char_egptr(&this->base) - ptr);
4663 return MSVCP_basic_string_char_ctor(ret);
4666 /* ?_Getstate@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@AAEHH@Z */
4667 /* ?_Getstate@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@AEAAHH@Z */
4668 /* ?_Getstate@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEHH@Z */
4669 /* ?_Getstate@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAHH@Z */
4670 /* ?_Mode@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEHH@Z */
4671 /* ?_Mode@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAHH@Z */
4672 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar__Getstate, 8)
4673 int __thiscall basic_stringbuf_wchar__Getstate(basic_stringbuf_wchar *this, IOSB_openmode mode)
4675 int state = 0;
4677 if(!(mode & OPENMODE_in))
4678 state |= STRINGBUF_no_read;
4680 if(!(mode & OPENMODE_out))
4681 state |= STRINGBUF_no_write;
4683 if(mode & OPENMODE_ate)
4684 state |= STRINGBUF_at_end;
4686 if(mode & OPENMODE_app)
4687 state |= STRINGBUF_append;
4689 return state;
4692 /* ?_Init@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEXPB_WIH@Z */
4693 /* ?_Init@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAXPEB_W_KH@Z */
4694 /* ?_Init@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEXPBGIH@Z */
4695 /* ?_Init@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAXPEBG_KH@Z */
4696 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar__Init, 16)
4697 void __thiscall basic_stringbuf_wchar__Init(basic_stringbuf_wchar *this, const wchar_t *str, size_t count, int state)
4699 TRACE("(%p, %p, %Iu, %d)\n", this, str, count, state);
4701 basic_streambuf_wchar__Init_empty(&this->base);
4703 this->state = state;
4704 this->seekhigh = NULL;
4706 if(count && str) {
4707 wchar_t *buf = operator_new(count*sizeof(wchar_t));
4709 memcpy(buf, str, count*sizeof(wchar_t));
4710 this->seekhigh = buf + count;
4712 this->state |= STRINGBUF_allocated;
4714 if(!(state & STRINGBUF_no_read))
4715 basic_streambuf_wchar_setg(&this->base, buf, buf, buf + count);
4717 if(!(state & STRINGBUF_no_write)) {
4718 basic_streambuf_wchar_setp_next(&this->base, buf, (state & STRINGBUF_at_end) ? buf + count : buf, buf + count);
4720 if(!basic_streambuf_wchar_gptr(&this->base))
4721 basic_streambuf_wchar_setg(&this->base, buf, 0, buf);
4726 /* ??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 */
4727 /* ??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 */
4728 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_ctor_str, 12)
4729 basic_stringbuf_wchar* __thiscall basic_stringbuf_wchar_ctor_str(basic_stringbuf_wchar *this,
4730 const basic_string_wchar *str, IOSB_openmode mode)
4732 TRACE("(%p %p %d)\n", this, str, mode);
4734 basic_streambuf_wchar_ctor(&this->base);
4735 this->base.vtable = &basic_stringbuf_wchar_vtable;
4737 basic_stringbuf_wchar__Init(this, MSVCP_basic_string_wchar_c_str(str),
4738 str->size, basic_stringbuf_wchar__Getstate(this, mode));
4739 return this;
4742 /* ??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 */
4743 /* ??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 */
4744 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_ctor_str, 12)
4745 basic_stringbuf_wchar* __thiscall basic_stringbuf_short_ctor_str(basic_stringbuf_wchar *this,
4746 const basic_string_wchar *str, IOSB_openmode mode)
4748 basic_stringbuf_wchar_ctor_str(this, str, mode);
4749 this->base.vtable = &basic_stringbuf_short_vtable;
4750 return this;
4753 /* ??0?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@H@Z */
4754 /* ??0?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@H@Z */
4755 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_ctor_mode, 8)
4756 basic_stringbuf_wchar* __thiscall basic_stringbuf_wchar_ctor_mode(
4757 basic_stringbuf_wchar *this, IOSB_openmode mode)
4759 TRACE("(%p %d)\n", this, mode);
4761 basic_streambuf_wchar_ctor(&this->base);
4762 this->base.vtable = &basic_stringbuf_wchar_vtable;
4764 basic_stringbuf_wchar__Init(this, NULL, 0, basic_stringbuf_wchar__Getstate(this, mode));
4765 return this;
4768 /* ??0?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@H@Z */
4769 /* ??0?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@H@Z */
4770 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_ctor_mode, 8)
4771 basic_stringbuf_wchar* __thiscall basic_stringbuf_short_ctor_mode(
4772 basic_stringbuf_wchar *this, IOSB_openmode mode)
4774 basic_stringbuf_wchar_ctor_mode(this, mode);
4775 this->base.vtable = &basic_stringbuf_short_vtable;
4776 return this;
4779 /* ??_F?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
4780 /* ??_F?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
4781 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_ctor, 4)
4782 basic_stringbuf_wchar* __thiscall basic_stringbuf_wchar_ctor(basic_stringbuf_wchar *this)
4784 return basic_stringbuf_wchar_ctor_mode(this, OPENMODE_in|OPENMODE_out);
4787 /* ??_F?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
4788 /* ??_F?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
4789 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_ctor, 4)
4790 basic_stringbuf_wchar* __thiscall basic_stringbuf_short_ctor(basic_stringbuf_wchar *this)
4792 return basic_stringbuf_short_ctor_mode(this, OPENMODE_in|OPENMODE_out);
4795 /* ?_Tidy@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEXXZ */
4796 /* ?_Tidy@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAXXZ */
4797 /* ?_Tidy@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEXXZ */
4798 /* ?_Tidy@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAXXZ */
4799 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar__Tidy, 4)
4800 void __thiscall basic_stringbuf_wchar__Tidy(basic_stringbuf_wchar *this)
4802 TRACE("(%p)\n", this);
4804 if(this->state & STRINGBUF_allocated) {
4805 operator_delete(basic_streambuf_wchar_eback(&this->base));
4806 this->seekhigh = NULL;
4807 this->state &= ~STRINGBUF_allocated;
4810 basic_streambuf_wchar__Init_empty(&this->base);
4813 /* ??1?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UAE@XZ */
4814 /* ??1?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UEAA@XZ */
4815 /* ??1?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UAE@XZ */
4816 /* ??1?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UEAA@XZ */
4817 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_dtor, 4)
4818 void __thiscall basic_stringbuf_wchar_dtor(basic_stringbuf_wchar *this)
4820 TRACE("(%p)\n", this);
4822 basic_stringbuf_wchar__Tidy(this);
4823 basic_streambuf_wchar_dtor(&this->base);
4826 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_vector_dtor, 8)
4827 basic_stringbuf_wchar* __thiscall basic_stringbuf_wchar_vector_dtor(basic_stringbuf_wchar *this, unsigned int flags)
4829 TRACE("(%p %x)\n", this, flags);
4831 if(flags & 2) {
4832 /* we have an array, with the number of elements stored before the first object */
4833 INT_PTR i, *ptr = (INT_PTR *) this - 1;
4835 for (i = *ptr - 1; i >= 0; i--)
4836 basic_stringbuf_wchar_dtor(this+i);
4838 operator_delete(ptr);
4839 }else {
4840 basic_stringbuf_wchar_dtor(this);
4842 if(flags & 1)
4843 operator_delete(this);
4846 return this;
4849 /* ?overflow@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAEGG@Z */
4850 /* ?overflow@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAAGG@Z */
4851 /* ?overflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAEGG@Z */
4852 /* ?overflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAAGG@Z */
4853 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_overflow, 8)
4854 unsigned short __thiscall basic_stringbuf_wchar_overflow(basic_stringbuf_wchar *this, unsigned short meta)
4856 size_t oldsize, size;
4857 wchar_t *ptr, *buf;
4859 TRACE("(%p %x)\n", this, meta);
4861 if(meta == WEOF)
4862 return !WEOF;
4863 if(this->state & STRINGBUF_no_write)
4864 return WEOF;
4866 ptr = basic_streambuf_wchar_pptr(&this->base);
4867 if((this->state&STRINGBUF_append) && ptr<this->seekhigh)
4868 basic_streambuf_wchar_setp_next(&this->base, basic_streambuf_wchar_pbase(&this->base),
4869 this->seekhigh, basic_streambuf_wchar_epptr(&this->base));
4871 if(ptr && ptr<basic_streambuf_wchar_epptr(&this->base))
4872 return (*basic_streambuf_wchar__Pninc(&this->base) = meta);
4874 oldsize = (ptr ? basic_streambuf_wchar_epptr(&this->base)-basic_streambuf_wchar_eback(&this->base): 0);
4875 size = oldsize|0xf;
4876 size += size/2;
4877 buf = operator_new(size*sizeof(wchar_t));
4879 if(!oldsize) {
4880 this->seekhigh = buf;
4881 basic_streambuf_wchar_setp(&this->base, buf, buf+size);
4882 if(this->state & STRINGBUF_no_read)
4883 basic_streambuf_wchar_setg(&this->base, buf, NULL, buf);
4884 else
4885 basic_streambuf_wchar_setg(&this->base, buf, buf, buf+1);
4887 this->state |= STRINGBUF_allocated;
4888 }else {
4889 ptr = basic_streambuf_wchar_eback(&this->base);
4890 memcpy(buf, ptr, oldsize*sizeof(wchar_t));
4892 this->seekhigh = buf+(this->seekhigh-ptr);
4893 basic_streambuf_wchar_setp_next(&this->base, buf,
4894 buf+(basic_streambuf_wchar_pptr(&this->base)-ptr), buf+size);
4895 if(this->state & STRINGBUF_no_read)
4896 basic_streambuf_wchar_setg(&this->base, buf, NULL, buf);
4897 else
4898 basic_streambuf_wchar_setg(&this->base, buf,
4899 buf+(basic_streambuf_wchar_gptr(&this->base)-ptr),
4900 basic_streambuf_wchar_pptr(&this->base)+1);
4902 operator_delete(ptr);
4905 return (*basic_streambuf_wchar__Pninc(&this->base) = meta);
4908 /* ?pbackfail@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAEGG@Z */
4909 /* ?pbackfail@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAAGG@Z */
4910 /* ?pbackfail@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAEGG@Z */
4911 /* ?pbackfail@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAAGG@Z */
4912 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_pbackfail, 8)
4913 unsigned short __thiscall basic_stringbuf_wchar_pbackfail(basic_stringbuf_wchar *this, unsigned short c)
4915 wchar_t *cur;
4917 TRACE("(%p %x)\n", this, c);
4919 cur = basic_streambuf_wchar_gptr(&this->base);
4920 if(!cur || cur==basic_streambuf_wchar_eback(&this->base)
4921 || (c!=WEOF && c!=cur[-1] && this->state&STRINGBUF_no_write))
4922 return WEOF;
4924 if(c != WEOF)
4925 cur[-1] = c;
4926 basic_streambuf_wchar_gbump(&this->base, -1);
4927 return c==WEOF ? !WEOF : c;
4930 /* ?underflow@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAEGXZ */
4931 /* ?underflow@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAAGXZ */
4932 /* ?underflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAEGXZ */
4933 /* ?underflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAAGXZ */
4934 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_underflow, 4)
4935 unsigned short __thiscall basic_stringbuf_wchar_underflow(basic_stringbuf_wchar *this)
4937 wchar_t *ptr, *cur;
4939 TRACE("(%p)\n", this);
4941 cur = basic_streambuf_wchar_gptr(&this->base);
4942 if(!cur || this->state&STRINGBUF_no_read)
4943 return WEOF;
4945 ptr = basic_streambuf_wchar_pptr(&this->base);
4946 if(this->seekhigh < ptr)
4947 this->seekhigh = ptr;
4949 ptr = basic_streambuf_wchar_egptr(&this->base);
4950 if(this->seekhigh > ptr)
4951 basic_streambuf_wchar_setg(&this->base, basic_streambuf_wchar_eback(&this->base), cur, this->seekhigh);
4953 if(cur < this->seekhigh)
4954 return *cur;
4955 return WEOF;
4958 /* ?seekoff@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
4959 /* ?seekoff@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAA?AV?$fpos@H@2@_JW4seekdir@ios_base@2@H@Z */
4960 /* ?seekoff@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAE?AV?$fpos@H@2@JHH@Z */
4961 /* ?seekoff@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
4962 /* ?seekoff@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAE?AV?$fpos@H@2@JHH@Z */
4963 /* ?seekoff@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
4964 #if STREAMOFF_BITS == 64
4965 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_seekoff, 24)
4966 #else
4967 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_seekoff, 20)
4968 #endif
4969 fpos_mbstatet* __thiscall basic_stringbuf_wchar_seekoff(basic_stringbuf_wchar *this,
4970 fpos_mbstatet *ret, streamoff off, int way, int mode)
4972 wchar_t *beg, *cur_r, *cur_w;
4974 TRACE("(%p %p %s %d %d)\n", this, ret, wine_dbgstr_longlong(off), way, mode);
4976 cur_w = basic_streambuf_wchar_pptr(&this->base);
4977 if(cur_w > this->seekhigh)
4978 this->seekhigh = cur_w;
4980 ret->off = 0;
4981 ret->pos = 0;
4982 memset(&ret->state, 0, sizeof(ret->state));
4984 beg = basic_streambuf_wchar_eback(&this->base);
4985 cur_r = basic_streambuf_wchar_gptr(&this->base);
4986 if((mode & OPENMODE_in) && cur_r) {
4987 if(way==SEEKDIR_cur && !(mode & OPENMODE_out))
4988 off += cur_r-beg;
4989 else if(way == SEEKDIR_end)
4990 off += this->seekhigh-beg;
4991 else if(way != SEEKDIR_beg)
4992 off = -1;
4994 if(off<0 || off>this->seekhigh-beg) {
4995 off = -1;
4996 }else {
4997 basic_streambuf_wchar_gbump(&this->base, beg-cur_r+off);
4998 if((mode & OPENMODE_out) && cur_w) {
4999 basic_streambuf_wchar_setp_next(&this->base, beg,
5000 basic_streambuf_wchar_gptr(&this->base),
5001 basic_streambuf_wchar_epptr(&this->base));
5004 }else if((mode & OPENMODE_out) && cur_w) {
5005 if(way == SEEKDIR_cur)
5006 off += cur_w-beg;
5007 else if(way == SEEKDIR_end)
5008 off += this->seekhigh-beg;
5009 else if(way != SEEKDIR_beg)
5010 off = -1;
5012 if(off<0 || off>this->seekhigh-beg)
5013 off = -1;
5014 else
5015 basic_streambuf_wchar_pbump(&this->base, beg-cur_w+off);
5016 }else {
5017 off = -1;
5020 ret->off = off;
5021 return ret;
5024 /* ?seekpos@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
5025 /* ?seekpos@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
5026 /* ?seekpos@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
5027 /* ?seekpos@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
5028 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_seekpos, 36)
5029 fpos_mbstatet* __thiscall basic_stringbuf_wchar_seekpos(basic_stringbuf_wchar *this,
5030 fpos_mbstatet *ret, fpos_mbstatet pos, int mode)
5032 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_mbstatet(&pos), mode);
5034 if(pos.off==-1 && pos.pos==0 && MBSTATET_TO_INT(&pos.state)==0) {
5035 *ret = pos;
5036 return ret;
5039 return basic_stringbuf_wchar_seekoff(this, ret, pos.pos+pos.off, SEEKDIR_beg, mode);
5042 /* ?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 */
5043 /* ?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 */
5044 /* ?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 */
5045 /* ?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 */
5046 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_str_set, 8)
5047 void __thiscall basic_stringbuf_wchar_str_set(basic_stringbuf_wchar *this, const basic_string_wchar *str)
5049 TRACE("(%p %p)\n", this, str);
5051 basic_stringbuf_wchar__Tidy(this);
5052 basic_stringbuf_wchar__Init(this, MSVCP_basic_string_wchar_c_str(str), str->size, this->state);
5055 /* ?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 */
5056 /* ?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 */
5057 /* ?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 */
5058 /* ?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 */
5059 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_str_get, 8)
5060 basic_string_wchar* __thiscall basic_stringbuf_wchar_str_get(const basic_stringbuf_wchar *this, basic_string_wchar *ret)
5062 wchar_t *ptr;
5064 TRACE("(%p)\n", this);
5066 if(!(this->state & STRINGBUF_no_write) && basic_streambuf_wchar_pptr(&this->base)) {
5067 wchar_t *pptr;
5069 ptr = basic_streambuf_wchar_pbase(&this->base);
5070 pptr = basic_streambuf_wchar_pptr(&this->base);
5072 return MSVCP_basic_string_wchar_ctor_cstr_len(ret, ptr, (this->seekhigh < pptr ? pptr : this->seekhigh) - ptr);
5075 if(!(this->state & STRINGBUF_no_read) && basic_streambuf_wchar_gptr(&this->base)) {
5076 ptr = basic_streambuf_wchar_eback(&this->base);
5077 return MSVCP_basic_string_wchar_ctor_cstr_len(ret, ptr, basic_streambuf_wchar_egptr(&this->base) - ptr);
5080 return MSVCP_basic_string_wchar_ctor(ret);
5083 /* ??0ios_base@std@@IAE@XZ */
5084 /* ??0ios_base@std@@IEAA@XZ */
5085 DEFINE_THISCALL_WRAPPER(ios_base_ctor, 4)
5086 ios_base* __thiscall ios_base_ctor(ios_base *this)
5088 TRACE("(%p)\n", this);
5089 this->vtable = &ios_base_vtable;
5090 return this;
5093 /* ??0ios_base@std@@QAE@ABV01@@Z */
5094 /* ??0ios_base@std@@QEAA@AEBV01@@Z */
5095 DEFINE_THISCALL_WRAPPER(ios_base_copy_ctor, 8)
5096 ios_base* __thiscall ios_base_copy_ctor(ios_base *this, const ios_base *copy)
5098 TRACE("(%p %p)\n", this, copy);
5099 *this = *copy;
5100 this->vtable = &ios_base_vtable;
5101 return this;
5104 /* ?_Callfns@ios_base@std@@AAEXW4event@12@@Z */
5105 /* ?_Callfns@ios_base@std@@AEAAXW4event@12@@Z */
5106 DEFINE_THISCALL_WRAPPER(ios_base_Callfns, 8)
5107 void __thiscall ios_base_Callfns(ios_base *this, IOS_BASE_event event)
5109 IOS_BASE_fnarray *cur;
5111 TRACE("(%p %x)\n", this, event);
5113 for(cur=this->calls; cur; cur=cur->next)
5114 cur->event_handler(event, this, cur->index);
5117 /* ?_Tidy@ios_base@std@@AAAXXZ */
5118 /* ?_Tidy@ios_base@std@@AEAAXXZ */
5119 void __cdecl ios_base_Tidy(ios_base *this)
5121 IOS_BASE_iosarray *arr_cur, *arr_next;
5122 IOS_BASE_fnarray *event_cur, *event_next;
5124 TRACE("(%p)\n", this);
5126 ios_base_Callfns(this, EVENT_erase_event);
5128 for(arr_cur=this->arr; arr_cur; arr_cur=arr_next) {
5129 arr_next = arr_cur->next;
5130 operator_delete(arr_cur);
5132 this->arr = NULL;
5134 for(event_cur=this->calls; event_cur; event_cur=event_next) {
5135 event_next = event_cur->next;
5136 operator_delete(event_cur);
5138 this->calls = NULL;
5141 /* ?_Ios_base_dtor@ios_base@std@@CAXPAV12@@Z */
5142 /* ?_Ios_base_dtor@ios_base@std@@CAXPEAV12@@Z */
5143 void __cdecl ios_base_Ios_base_dtor(ios_base *obj)
5145 TRACE("(%p)\n", obj);
5146 locale_dtor(IOS_LOCALE(obj));
5147 #if _MSVCP_VER >= 70
5148 operator_delete(obj->loc);
5149 #endif
5150 ios_base_Tidy(obj);
5153 /* ??1ios_base@std@@UAE@XZ */
5154 /* ??1ios_base@std@@UEAA@XZ */
5155 DEFINE_THISCALL_WRAPPER(ios_base_dtor, 4)
5156 void __thiscall ios_base_dtor(ios_base *this)
5158 ios_base_Ios_base_dtor(this);
5161 DEFINE_THISCALL_WRAPPER(ios_base_vector_dtor, 8)
5162 ios_base* __thiscall ios_base_vector_dtor(ios_base *this, unsigned int flags)
5164 TRACE("(%p %x)\n", this, flags);
5165 if(flags & 2) {
5166 /* we have an array, with the number of elements stored before the first object */
5167 INT_PTR i, *ptr = (INT_PTR *)this-1;
5169 for(i=*ptr-1; i>=0; i--)
5170 ios_base_dtor(this+i);
5171 operator_delete(ptr);
5172 } else {
5173 ios_base_dtor(this);
5174 if(flags & 1)
5175 operator_delete(this);
5178 return this;
5181 DEFINE_THISCALL_WRAPPER(iosb_vector_dtor, 8)
5182 void* __thiscall iosb_vector_dtor(void *this, unsigned int flags)
5184 TRACE("(%p %x)\n", this, flags);
5185 if(flags & 2) {
5186 INT_PTR *ptr = (INT_PTR *)this-1;
5187 operator_delete(ptr);
5188 } else {
5189 if(flags & 1)
5190 operator_delete(this);
5193 return this;
5196 /* ?_Findarr@ios_base@std@@AAEAAU_Iosarray@12@H@Z */
5197 /* ?_Findarr@ios_base@std@@AEAAAEAU_Iosarray@12@H@Z */
5198 DEFINE_THISCALL_WRAPPER(ios_base_Findarr, 8)
5199 IOS_BASE_iosarray* __thiscall ios_base_Findarr(ios_base *this, int index)
5201 IOS_BASE_iosarray *p;
5203 TRACE("(%p %d)\n", this, index);
5205 for(p=this->arr; p; p=p->next) {
5206 if(p->index == index)
5207 return p;
5210 for(p=this->arr; p; p=p->next) {
5211 if(!p->long_val && !p->ptr_val) {
5212 p->index = index;
5213 return p;
5217 p = operator_new(sizeof(IOS_BASE_iosarray));
5218 p->next = this->arr;
5219 p->index = index;
5220 p->long_val = 0;
5221 p->ptr_val = NULL;
5222 this->arr = p;
5223 return p;
5226 /* ?iword@ios_base@std@@QAEAAJH@Z */
5227 /* ?iword@ios_base@std@@QEAAAEAJH@Z */
5228 DEFINE_THISCALL_WRAPPER(ios_base_iword, 8)
5229 LONG* __thiscall ios_base_iword(ios_base *this, int index)
5231 TRACE("(%p %d)\n", this, index);
5232 return &ios_base_Findarr(this, index)->long_val;
5235 /* ?pword@ios_base@std@@QAEAAPAXH@Z */
5236 /* ?pword@ios_base@std@@QEAAAEAPEAXH@Z */
5237 DEFINE_THISCALL_WRAPPER(ios_base_pword, 8)
5238 void** __thiscall ios_base_pword(ios_base *this, int index)
5240 TRACE("(%p %d)\n", this, index);
5241 return &ios_base_Findarr(this, index)->ptr_val;
5244 /* ?register_callback@ios_base@std@@QAEXP6AXW4event@12@AAV12@H@ZH@Z */
5245 /* ?register_callback@ios_base@std@@QEAAXP6AXW4event@12@AEAV12@H@ZH@Z */
5246 DEFINE_THISCALL_WRAPPER(ios_base_register_callback, 12)
5247 void __thiscall ios_base_register_callback(ios_base *this, IOS_BASE_event_callback callback, int index)
5249 IOS_BASE_fnarray *event;
5251 TRACE("(%p %p %d)\n", this, callback, index);
5253 event = operator_new(sizeof(IOS_BASE_fnarray));
5254 event->next = this->calls;
5255 event->index = index;
5256 event->event_handler = callback;
5257 this->calls = event;
5260 /* ?clear@ios_base@std@@QAEXH_N@Z */
5261 /* ?clear@ios_base@std@@QEAAXH_N@Z */
5262 DEFINE_THISCALL_WRAPPER(ios_base_clear_reraise, 12)
5263 void __thiscall ios_base_clear_reraise(ios_base *this, IOSB_iostate state, bool reraise)
5265 TRACE("(%p %x %x)\n", this, state, reraise);
5267 this->state = state & IOSTATE_mask;
5268 if(!(this->state & this->except))
5269 return;
5271 if(reraise)
5272 _CxxThrowException(NULL, NULL);
5273 else if(this->state & this->except & IOSTATE_eofbit)
5274 throw_failure("eofbit is set");
5275 else if(this->state & this->except & IOSTATE_failbit)
5276 throw_failure("failbit is set");
5277 else if(this->state & this->except & IOSTATE_badbit)
5278 throw_failure("badbit is set");
5279 else if(this->state & this->except & IOSTATE__Hardfail)
5280 throw_failure("_Hardfail is set");
5283 /* ?clear@ios_base@std@@QAEXH@Z */
5284 /* ?clear@ios_base@std@@QEAAXH@Z */
5285 DEFINE_THISCALL_WRAPPER(ios_base_clear, 8)
5286 void __thiscall ios_base_clear(ios_base *this, IOSB_iostate state)
5288 ios_base_clear_reraise(this, state, FALSE);
5291 /* ?clear@ios_base@std@@QAEXI@Z */
5292 /* ?clear@ios_base@std@@QEAAXI@Z */
5293 DEFINE_THISCALL_WRAPPER(ios_base_clear_unsigned, 8)
5294 void __thiscall ios_base_clear_unsigned(ios_base *this, unsigned int state)
5296 ios_base_clear_reraise(this, (IOSB_iostate)state, FALSE);
5299 /* ?exceptions@ios_base@std@@QAEXH@Z */
5300 /* ?exceptions@ios_base@std@@QEAAXH@Z */
5301 DEFINE_THISCALL_WRAPPER(ios_base_exceptions_set, 8)
5302 void __thiscall ios_base_exceptions_set(ios_base *this, IOSB_iostate state)
5304 TRACE("(%p %x)\n", this, state);
5305 this->except = state & IOSTATE_mask;
5306 ios_base_clear(this, this->state);
5309 /* ?exceptions@ios_base@std@@QAEXI@Z */
5310 /* ?exceptions@ios_base@std@@QEAAXI@Z */
5311 DEFINE_THISCALL_WRAPPER(ios_base_exceptions_set_unsigned, 8)
5312 void __thiscall ios_base_exceptions_set_unsigned(ios_base *this, unsigned int state)
5314 TRACE("(%p %x)\n", this, state);
5315 ios_base_exceptions_set(this, state);
5318 /* ?exceptions@ios_base@std@@QBEHXZ */
5319 /* ?exceptions@ios_base@std@@QEBAHXZ */
5320 DEFINE_THISCALL_WRAPPER(ios_base_exceptions_get, 4)
5321 IOSB_iostate __thiscall ios_base_exceptions_get(ios_base *this)
5323 TRACE("(%p)\n", this);
5324 return this->except;
5327 /* ?copyfmt@ios_base@std@@QAEAAV12@ABV12@@Z */
5328 /* ?copyfmt@ios_base@std@@QEAAAEAV12@AEBV12@@Z */
5329 DEFINE_THISCALL_WRAPPER(ios_base_copyfmt, 8)
5330 ios_base* __thiscall ios_base_copyfmt(ios_base *this, const ios_base *rhs)
5332 TRACE("(%p %p)\n", this, rhs);
5334 if(this != rhs) {
5335 IOS_BASE_iosarray *arr_cur;
5336 IOS_BASE_fnarray *event_cur;
5338 ios_base_Tidy(this);
5340 for(arr_cur=rhs->arr; arr_cur; arr_cur=arr_cur->next) {
5341 if(arr_cur->long_val)
5342 *ios_base_iword(this, arr_cur->index) = arr_cur->long_val;
5343 if(arr_cur->ptr_val)
5344 *ios_base_pword(this, arr_cur->index) = arr_cur->ptr_val;
5346 this->stdstr = rhs->stdstr;
5347 this->fmtfl = rhs->fmtfl;
5348 this->prec = rhs->prec;
5349 this->wide = rhs->wide;
5350 locale_operator_assign(IOS_LOCALE(this), IOS_LOCALE(rhs));
5352 for(event_cur=rhs->calls; event_cur; event_cur=event_cur->next)
5353 ios_base_register_callback(this, event_cur->event_handler, event_cur->index);
5355 ios_base_Callfns(this, EVENT_copyfmt_event);
5356 ios_base_exceptions_set(this, rhs->except);
5359 return this;
5362 /* ??4ios_base@std@@QAEAAV01@ABV01@@Z */
5363 /* ??4ios_base@std@@QEAAAEAV01@AEBV01@@Z */
5364 DEFINE_THISCALL_WRAPPER(ios_base_assign, 8)
5365 ios_base* __thiscall ios_base_assign(ios_base *this, const ios_base *right)
5367 TRACE("(%p %p)\n", this, right);
5369 if(this != right) {
5370 this->state = right->state;
5371 ios_base_copyfmt(this, right);
5374 return this;
5377 /* ?fail@ios_base@std@@QBE_NXZ */
5378 /* ?fail@ios_base@std@@QEBA_NXZ */
5379 DEFINE_THISCALL_WRAPPER(ios_base_fail, 4)
5380 bool __thiscall ios_base_fail(const ios_base *this)
5382 TRACE("(%p)\n", this);
5383 return (this->state & (IOSTATE_failbit|IOSTATE_badbit)) != 0;
5386 /* ??7ios_base@std@@QBE_NXZ */
5387 /* ??7ios_base@std@@QEBA_NXZ */
5388 DEFINE_THISCALL_WRAPPER(ios_base_op_succ, 4)
5389 bool __thiscall ios_base_op_succ(const ios_base *this)
5391 TRACE("(%p)\n", this);
5392 return ios_base_fail(this);
5395 /* ??Bios_base@std@@QBEPAXXZ */
5396 /* ??Bios_base@std@@QEBAPEAXXZ */
5397 DEFINE_THISCALL_WRAPPER(ios_base_op_fail, 4)
5398 void* __thiscall ios_base_op_fail(const ios_base *this)
5400 TRACE("(%p)\n", this);
5401 return ios_base_fail(this) ? NULL : (void*)this;
5404 /* ??Bios_base@std@@QBA_NXZ */
5405 /* ??Bios_base@std@@QBE_NXZ */
5406 /* ??Bios_base@std@@QEBA_NXZ */
5407 DEFINE_THISCALL_WRAPPER(ios_base_operator_bool, 4)
5408 bool __thiscall ios_base_operator_bool(const ios_base *this)
5410 TRACE("(%p)\n", this);
5411 return (this->state & (IOSTATE_failbit|IOSTATE_badbit)) == 0;
5414 /* ?_Addstd@ios_base@std@@SAXPAV12@@Z */
5415 /* ?_Addstd@ios_base@std@@SAXPEAV12@@Z */
5416 void __cdecl ios_base_Addstd(ios_base *add)
5418 FIXME("(%p) stub\n", add);
5421 /* ?_Index_func@ios_base@std@@CAAAHXZ */
5422 /* ?_Index_func@ios_base@std@@CAAEAHXZ */
5423 int* __cdecl ios_base_Index_func(void)
5425 TRACE("\n");
5426 return &ios_base_Index;
5429 /* ?_Init@ios_base@std@@IAEXXZ */
5430 /* ?_Init@ios_base@std@@IEAAXXZ */
5431 DEFINE_THISCALL_WRAPPER(ios_base__Init, 4)
5432 void __thiscall ios_base__Init(ios_base *this)
5434 TRACE("(%p)\n", this);
5436 this->stdstr = 0;
5437 this->state = this->except = IOSTATE_goodbit;
5438 this->fmtfl = FMTFLAG_skipws | FMTFLAG_dec;
5439 this->prec = 6;
5440 this->wide = 0;
5441 this->arr = NULL;
5442 this->calls = NULL;
5443 #if _MSVCP_VER >= 70
5444 this->loc = operator_new(sizeof(locale));
5445 #endif
5446 locale_ctor(IOS_LOCALE(this));
5449 /* ?_Sync_func@ios_base@std@@CAAA_NXZ */
5450 /* ?_Sync_func@ios_base@std@@CAAEA_NXZ */
5451 bool* __cdecl ios_base_Sync_func(void)
5453 TRACE("\n");
5454 return &ios_base_Sync;
5457 /* ?bad@ios_base@std@@QBE_NXZ */
5458 /* ?bad@ios_base@std@@QEBA_NXZ */
5459 DEFINE_THISCALL_WRAPPER(ios_base_bad, 4)
5460 bool __thiscall ios_base_bad(const ios_base *this)
5462 TRACE("(%p)\n", this);
5463 return (this->state & IOSTATE_badbit) != 0;
5466 /* ?eof@ios_base@std@@QBE_NXZ */
5467 /* ?eof@ios_base@std@@QEBA_NXZ */
5468 DEFINE_THISCALL_WRAPPER(ios_base_eof, 4)
5469 bool __thiscall ios_base_eof(const ios_base *this)
5471 TRACE("(%p)\n", this);
5472 return (this->state & IOSTATE_eofbit) != 0;
5475 /* ?flags@ios_base@std@@QAEHH@Z */
5476 /* ?flags@ios_base@std@@QEAAHH@Z */
5477 DEFINE_THISCALL_WRAPPER(ios_base_flags_set, 8)
5478 IOSB_fmtflags __thiscall ios_base_flags_set(ios_base *this, IOSB_fmtflags flags)
5480 IOSB_fmtflags ret = this->fmtfl;
5482 TRACE("(%p %x)\n", this, flags);
5484 this->fmtfl = flags & FMTFLAG_mask;
5485 return ret;
5488 /* ?flags@ios_base@std@@QBEHXZ */
5489 /* ?flags@ios_base@std@@QEBAHXZ */
5490 DEFINE_THISCALL_WRAPPER(ios_base_flags_get, 4)
5491 IOSB_fmtflags __thiscall ios_base_flags_get(const ios_base *this)
5493 TRACE("(%p)\n", this);
5494 return this->fmtfl;
5497 /* ?getloc@ios_base@std@@QBE?AVlocale@2@XZ */
5498 /* ?getloc@ios_base@std@@QEBA?AVlocale@2@XZ */
5499 DEFINE_THISCALL_WRAPPER(ios_base_getloc, 8)
5500 locale* __thiscall ios_base_getloc(const ios_base *this, locale *ret)
5502 TRACE("(%p)\n", this);
5503 return locale_copy_ctor(ret, IOS_LOCALE(this));
5506 /* ?good@ios_base@std@@QBE_NXZ */
5507 /* ?good@ios_base@std@@QEBA_NXZ */
5508 DEFINE_THISCALL_WRAPPER(ios_base_good, 4)
5509 bool __thiscall ios_base_good(const ios_base *this)
5511 TRACE("(%p)\n", this);
5512 return this->state == IOSTATE_goodbit;
5515 /* ?imbue@ios_base@std@@QAE?AVlocale@2@ABV32@@Z */
5516 /* ?imbue@ios_base@std@@QEAA?AVlocale@2@AEBV32@@Z */
5517 DEFINE_THISCALL_WRAPPER(ios_base_imbue, 12)
5518 locale* __thiscall ios_base_imbue(ios_base *this, locale *ret, const locale *loc)
5520 TRACE("(%p %p)\n", this, loc);
5521 *ret = *IOS_LOCALE(this);
5522 locale_copy_ctor(IOS_LOCALE(this), loc);
5523 return ret;
5526 /* ?precision@ios_base@std@@QAEHH@Z */
5527 /* ?precision@ios_base@std@@QEAA_J_J@Z */
5528 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
5529 DEFINE_THISCALL_WRAPPER(ios_base_precision_set, 12)
5530 #else
5531 DEFINE_THISCALL_WRAPPER(ios_base_precision_set, 8)
5532 #endif
5533 streamsize __thiscall ios_base_precision_set(ios_base *this, streamsize precision)
5535 streamsize ret = this->prec;
5537 TRACE("(%p %s)\n", this, wine_dbgstr_longlong(precision));
5539 this->prec = precision;
5540 return ret;
5543 /* ?precision@ios_base@std@@QBEHXZ */
5544 /* ?precision@ios_base@std@@QEBA_JXZ */
5545 DEFINE_THISCALL_WRAPPER(ios_base_precision_get, 4)
5546 streamsize __thiscall ios_base_precision_get(const ios_base *this)
5548 TRACE("(%p)\n", this);
5549 return this->prec;
5552 /* ?rdstate@ios_base@std@@QBEHXZ */
5553 /* ?rdstate@ios_base@std@@QEBAHXZ */
5554 DEFINE_THISCALL_WRAPPER(ios_base_rdstate, 4)
5555 IOSB_iostate __thiscall ios_base_rdstate(const ios_base *this)
5557 TRACE("(%p)\n", this);
5558 return this->state;
5561 /* ?setf@ios_base@std@@QAEHHH@Z */
5562 /* ?setf@ios_base@std@@QEAAHHH@Z */
5563 DEFINE_THISCALL_WRAPPER(ios_base_setf_mask, 12)
5564 IOSB_fmtflags __thiscall ios_base_setf_mask(ios_base *this, IOSB_fmtflags flags, IOSB_fmtflags mask)
5566 IOSB_fmtflags ret = this->fmtfl;
5568 TRACE("(%p %x %x)\n", this, flags, mask);
5570 this->fmtfl = (this->fmtfl & (~mask)) | (flags & mask & FMTFLAG_mask);
5571 return ret;
5574 /* ?setf@ios_base@std@@QAEHH@Z */
5575 /* ?setf@ios_base@std@@QEAAHH@Z */
5576 DEFINE_THISCALL_WRAPPER(ios_base_setf, 8)
5577 IOSB_fmtflags __thiscall ios_base_setf(ios_base *this, IOSB_fmtflags flags)
5579 IOSB_fmtflags ret = this->fmtfl;
5581 TRACE("(%p %x)\n", this, flags);
5583 this->fmtfl |= flags & FMTFLAG_mask;
5584 return ret;
5587 /* ?setstate@ios_base@std@@QAEXH_N@Z */
5588 /* ?setstate@ios_base@std@@QEAAXH_N@Z */
5589 DEFINE_THISCALL_WRAPPER(ios_base_setstate_reraise, 12)
5590 void __thiscall ios_base_setstate_reraise(ios_base *this, IOSB_iostate state, bool reraise)
5592 TRACE("(%p %x %x)\n", this, state, reraise);
5594 if(state != IOSTATE_goodbit)
5595 ios_base_clear_reraise(this, this->state | state, reraise);
5598 /* ?setstate@ios_base@std@@QAEXH@Z */
5599 /* ?setstate@ios_base@std@@QEAAXH@Z */
5600 DEFINE_THISCALL_WRAPPER(ios_base_setstate, 8)
5601 void __thiscall ios_base_setstate(ios_base *this, IOSB_iostate state)
5603 ios_base_setstate_reraise(this, state, FALSE);
5606 /* ?setstate@ios_base@std@@QAEXI@Z */
5607 /* ?setstate@ios_base@std@@QEAAXI@Z */
5608 DEFINE_THISCALL_WRAPPER(ios_base_setstate_unsigned, 8)
5609 void __thiscall ios_base_setstate_unsigned(ios_base *this, unsigned int state)
5611 ios_base_setstate_reraise(this, (IOSB_iostate)state, FALSE);
5614 /* ?sync_with_stdio@ios_base@std@@SA_N_N@Z */
5615 bool __cdecl ios_base_sync_with_stdio(bool sync)
5617 _Lockit lock;
5618 bool ret;
5620 TRACE("(%x)\n", sync);
5622 _Lockit_ctor_locktype(&lock, _LOCK_STREAM);
5623 ret = ios_base_Sync;
5624 ios_base_Sync = sync;
5625 _Lockit_dtor(&lock);
5626 return ret;
5629 /* ?unsetf@ios_base@std@@QAEXH@Z */
5630 /* ?unsetf@ios_base@std@@QEAAXH@Z */
5631 DEFINE_THISCALL_WRAPPER(ios_base_unsetf, 8)
5632 void __thiscall ios_base_unsetf(ios_base *this, IOSB_fmtflags flags)
5634 TRACE("(%p %x)\n", this, flags);
5635 this->fmtfl &= ~flags;
5638 /* ?width@ios_base@std@@QAEHH@Z */
5639 /* ?width@ios_base@std@@QEAA_J_J@Z */
5640 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
5641 DEFINE_THISCALL_WRAPPER(ios_base_width_set, 12)
5642 #else
5643 DEFINE_THISCALL_WRAPPER(ios_base_width_set, 8)
5644 #endif
5645 streamsize __thiscall ios_base_width_set(ios_base *this, streamsize width)
5647 streamsize ret = this->wide;
5649 TRACE("(%p %s)\n", this, wine_dbgstr_longlong(width));
5651 this->wide = width;
5652 return ret;
5655 /* ?width@ios_base@std@@QBEHXZ */
5656 /* ?width@ios_base@std@@QEBA_JXZ */
5657 DEFINE_THISCALL_WRAPPER(ios_base_width_get, 4)
5658 streamsize __thiscall ios_base_width_get(ios_base *this)
5660 TRACE("(%p)\n", this);
5661 return this->wide;
5664 /* ?xalloc@ios_base@std@@SAHXZ */
5665 int __cdecl ios_base_xalloc(void)
5667 _Lockit lock;
5668 int ret;
5670 TRACE("\n");
5672 _Lockit_ctor_locktype(&lock, _LOCK_STREAM);
5673 ret = ios_base_Index++;
5674 _Lockit_dtor(&lock);
5675 return ret;
5678 /* ?swap@ios_base@std@@QAEXAAV12@@Z */
5679 /* ?swap@ios_base@std@@QEAAXAEAV12@@Z */
5680 DEFINE_THISCALL_WRAPPER(ios_base_swap, 8)
5681 void __thiscall ios_base_swap(ios_base *this, ios_base *r)
5683 ios_base tmp;
5685 TRACE("(%p %p)\n", this, r);
5687 if(this == r)
5688 return;
5690 tmp = *this;
5691 *this = *r;
5692 this->vtable = tmp.vtable;
5693 tmp.vtable = r->vtable;
5694 *r = tmp;
5697 DEFINE_THISCALL_WRAPPER(basic_ios__Add_vtordisp1, 4)
5698 void __thiscall basic_ios__Add_vtordisp1(void *this)
5700 WARN("should not be called (%p)\n", this);
5703 DEFINE_THISCALL_WRAPPER(basic_ios__Add_vtordisp2, 4)
5704 void __thiscall basic_ios__Add_vtordisp2(void *this)
5706 WARN("should not be called (%p)\n", this);
5709 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@IAE@XZ */
5710 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@IEAA@XZ */
5711 DEFINE_THISCALL_WRAPPER(basic_ios_char_ctor, 4)
5712 basic_ios_char* __thiscall basic_ios_char_ctor(basic_ios_char *this)
5714 TRACE("(%p)\n", this);
5716 ios_base_ctor(&this->base);
5717 this->base.vtable = &basic_ios_char_vtable;
5718 return this;
5721 /* ?init@?$basic_ios@DU?$char_traits@D@std@@@std@@IAEXPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@_N@Z */
5722 /* ?init@?$basic_ios@DU?$char_traits@D@std@@@std@@IEAAXPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@_N@Z */
5723 DEFINE_THISCALL_WRAPPER(basic_ios_char_init, 12)
5724 void __thiscall basic_ios_char_init(basic_ios_char *this, basic_streambuf_char *streambuf, bool isstd)
5726 TRACE("(%p %p %x)\n", this, streambuf, isstd);
5727 ios_base__Init(&this->base);
5728 this->strbuf = streambuf;
5729 this->stream = NULL;
5730 this->fillch = ' ';
5732 if(!streambuf)
5733 ios_base_setstate(&this->base, IOSTATE_badbit);
5735 if(isstd)
5736 FIXME("standard streams not handled yet\n");
5739 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
5740 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
5741 DEFINE_THISCALL_WRAPPER(basic_ios_char_ctor_streambuf, 8)
5742 basic_ios_char* __thiscall basic_ios_char_ctor_streambuf(basic_ios_char *this, basic_streambuf_char *strbuf)
5744 TRACE("(%p %p)\n", this, strbuf);
5746 basic_ios_char_ctor(this);
5747 basic_ios_char_init(this, strbuf, FALSE);
5748 return this;
5751 /* ??1?$basic_ios@DU?$char_traits@D@std@@@std@@UAE@XZ */
5752 /* ??1?$basic_ios@DU?$char_traits@D@std@@@std@@UEAA@XZ */
5753 DEFINE_THISCALL_WRAPPER(basic_ios_char_dtor, 4)
5754 void __thiscall basic_ios_char_dtor(basic_ios_char *this)
5756 TRACE("(%p)\n", this);
5757 ios_base_dtor(&this->base);
5760 DEFINE_THISCALL_WRAPPER(basic_ios_char_vector_dtor, 8)
5761 basic_ios_char* __thiscall basic_ios_char_vector_dtor(basic_ios_char *this, unsigned int flags)
5763 TRACE("(%p %x)\n", this, flags);
5764 if(flags & 2) {
5765 /* we have an array, with the number of elements stored before the first object */
5766 INT_PTR i, *ptr = (INT_PTR *)this-1;
5768 for(i=*ptr-1; i>=0; i--)
5769 basic_ios_char_dtor(this+i);
5770 operator_delete(ptr);
5771 } else {
5772 basic_ios_char_dtor(this);
5773 if(flags & 1)
5774 operator_delete(this);
5777 return this;
5780 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z */
5781 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z */
5782 DEFINE_THISCALL_WRAPPER(basic_ios_char_clear_reraise, 12)
5783 void __thiscall basic_ios_char_clear_reraise(basic_ios_char *this, IOSB_iostate state, bool reraise)
5785 TRACE("(%p %x %x)\n", this, state, reraise);
5786 ios_base_clear_reraise(&this->base, state | (this->strbuf ? IOSTATE_goodbit : IOSTATE_badbit), reraise);
5789 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXI@Z */
5790 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXI@Z */
5791 DEFINE_THISCALL_WRAPPER(basic_ios_char_clear, 8)
5792 void __thiscall basic_ios_char_clear(basic_ios_char *this, unsigned int state)
5794 basic_ios_char_clear_reraise(this, (IOSB_iostate)state, FALSE);
5797 /* ?copyfmt@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEAAV12@ABV12@@Z */
5798 /* ?copyfmt@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEBV12@@Z */
5799 DEFINE_THISCALL_WRAPPER(basic_ios_char_copyfmt, 8)
5800 basic_ios_char* __thiscall basic_ios_char_copyfmt(basic_ios_char *this, basic_ios_char *copy)
5802 TRACE("(%p %p)\n", this, copy);
5803 if(this == copy)
5804 return this;
5806 this->stream = copy->stream;
5807 this->fillch = copy->fillch;
5808 ios_base_copyfmt(&this->base, &copy->base);
5809 return this;
5812 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEDD@Z */
5813 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAADD@Z */
5814 DEFINE_THISCALL_WRAPPER(basic_ios_char_fill_set, 8)
5815 char __thiscall basic_ios_char_fill_set(basic_ios_char *this, char fill)
5817 char ret = this->fillch;
5819 TRACE("(%p %c)\n", this, fill);
5821 this->fillch = fill;
5822 return ret;
5825 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDXZ */
5826 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADXZ */
5827 DEFINE_THISCALL_WRAPPER(basic_ios_char_fill_get, 4)
5828 char __thiscall basic_ios_char_fill_get(basic_ios_char *this)
5830 TRACE("(%p)\n", this);
5831 return this->fillch;
5834 /* ?imbue@?$basic_ios@DU?$char_traits@D@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
5835 /* ?imbue@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
5836 DEFINE_THISCALL_WRAPPER(basic_ios_char_imbue, 12)
5837 locale *__thiscall basic_ios_char_imbue(basic_ios_char *this, locale *ret, const locale *loc)
5839 TRACE("(%p %p %p)\n", this, ret, loc);
5841 if(this->strbuf) {
5842 basic_streambuf_char_pubimbue(this->strbuf, ret, loc);
5843 locale_dtor(ret);
5846 return ios_base_imbue(&this->base, ret, loc);
5849 /* ?narrow@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDDD@Z */
5850 /* ?narrow@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADDD@Z */
5851 DEFINE_THISCALL_WRAPPER(basic_ios_char_narrow, 12)
5852 char __thiscall basic_ios_char_narrow(basic_ios_char *this, char ch, char def)
5854 TRACE("(%p %c %c)\n", this, ch, def);
5855 return ctype_char_narrow_ch(ctype_char_use_facet(IOS_LOCALE(&this->base)), ch, def);
5858 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PAV32@@Z */
5859 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PEAV32@@Z */
5860 DEFINE_THISCALL_WRAPPER(basic_ios_char_rdbuf_set, 8)
5861 basic_streambuf_char* __thiscall basic_ios_char_rdbuf_set(basic_ios_char *this, basic_streambuf_char *streambuf)
5863 basic_streambuf_char *ret = this->strbuf;
5865 TRACE("(%p %p)\n", this, streambuf);
5867 this->strbuf = streambuf;
5868 basic_ios_char_clear(this, IOSTATE_goodbit);
5869 return ret;
5872 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ */
5873 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ */
5874 DEFINE_THISCALL_WRAPPER(basic_ios_char_rdbuf_get, 4)
5875 basic_streambuf_char* __thiscall basic_ios_char_rdbuf_get(const basic_ios_char *this)
5877 TRACE("(%p)\n", this);
5878 return this->strbuf;
5881 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z */
5882 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z */
5883 DEFINE_THISCALL_WRAPPER(basic_ios_char_setstate_reraise, 12)
5884 void __thiscall basic_ios_char_setstate_reraise(basic_ios_char *this, IOSB_iostate state, bool reraise)
5886 TRACE("(%p %x %x)\n", this, state, reraise);
5888 if(state != IOSTATE_goodbit)
5889 basic_ios_char_clear_reraise(this, this->base.state | state, reraise);
5892 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXI@Z */
5893 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXI@Z */
5894 DEFINE_THISCALL_WRAPPER(basic_ios_char_setstate, 8)
5895 void __thiscall basic_ios_char_setstate(basic_ios_char *this, unsigned int state)
5897 basic_ios_char_setstate_reraise(this, (IOSB_iostate)state, FALSE);
5900 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEPAV?$basic_ostream@DU?$char_traits@D@std@@@2@PAV32@@Z */
5901 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAPEAV?$basic_ostream@DU?$char_traits@D@std@@@2@PEAV32@@Z */
5902 DEFINE_THISCALL_WRAPPER(basic_ios_char_tie_set, 8)
5903 basic_ostream_char* __thiscall basic_ios_char_tie_set(basic_ios_char *this, basic_ostream_char *ostream)
5905 basic_ostream_char *ret = this->stream;
5907 TRACE("(%p %p)\n", this, ostream);
5909 this->stream = ostream;
5910 return ret;
5913 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_ostream@DU?$char_traits@D@std@@@2@XZ */
5914 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_ostream@DU?$char_traits@D@std@@@2@XZ */
5915 DEFINE_THISCALL_WRAPPER(basic_ios_char_tie_get, 4)
5916 basic_ostream_char* __thiscall basic_ios_char_tie_get(const basic_ios_char *this)
5918 TRACE("(%p)\n", this);
5919 return this->stream;
5922 /* ?widen@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDD@Z */
5923 /* ?widen@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADD@Z */
5924 DEFINE_THISCALL_WRAPPER(basic_ios_char_widen, 8)
5925 char __thiscall basic_ios_char_widen(basic_ios_char *this, char ch)
5927 TRACE("(%p %c)\n", this, ch);
5928 return ctype_char_widen_ch(ctype_char_use_facet(IOS_LOCALE(&this->base)), ch);
5931 /* ?swap@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXAAV12@@Z */
5932 /* ?swap@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXAEAV12@@Z */
5933 DEFINE_THISCALL_WRAPPER(basic_ios_char_swap, 8)
5934 void __thiscall basic_ios_char_swap(basic_ios_char *this, basic_ios_char *r)
5936 void *swap_ptr;
5938 TRACE("(%p %p)\n", this, r);
5940 if(this == r)
5941 return;
5943 ios_base_swap(&this->base, &r->base);
5944 swap_ptr = this->stream;
5945 this->stream = r->stream;
5946 r->stream = swap_ptr;
5947 this->fillch ^= r->fillch;
5948 r->fillch ^= this->fillch;
5949 this->fillch ^= r->fillch;
5952 /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@IAE@XZ */
5953 /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@IEAA@XZ */
5954 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_ctor, 4)
5955 basic_ios_wchar* __thiscall basic_ios_wchar_ctor(basic_ios_wchar *this)
5957 TRACE("(%p)\n", this);
5959 ios_base_ctor(&this->base);
5960 this->base.vtable = &basic_ios_wchar_vtable;
5961 return this;
5964 /* ??0?$basic_ios@GU?$char_traits@G@std@@@std@@IAE@XZ */
5965 /* ??0?$basic_ios@GU?$char_traits@G@std@@@std@@IEAA@XZ */
5966 DEFINE_THISCALL_WRAPPER(basic_ios_short_ctor, 4)
5967 basic_ios_wchar* __thiscall basic_ios_short_ctor(basic_ios_wchar *this)
5969 basic_ios_wchar_ctor(this);
5970 this->base.vtable = &basic_ios_short_vtable;
5971 return this;
5974 /* ?init@?$basic_ios@_WU?$char_traits@_W@std@@@std@@IAEXPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_N@Z */
5975 /* ?init@?$basic_ios@_WU?$char_traits@_W@std@@@std@@IEAAXPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_N@Z */
5976 /* ?init@?$basic_ios@GU?$char_traits@G@std@@@std@@IAEXPAV?$basic_streambuf@GU?$char_traits@G@std@@@2@_N@Z */
5977 /* ?init@?$basic_ios@GU?$char_traits@G@std@@@std@@IEAAXPEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@_N@Z */
5978 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_init, 12)
5979 void __thiscall basic_ios_wchar_init(basic_ios_wchar *this, basic_streambuf_wchar *streambuf, bool isstd)
5981 TRACE("(%p %p %x)\n", this, streambuf, isstd);
5982 ios_base__Init(&this->base);
5983 this->strbuf = streambuf;
5984 this->stream = NULL;
5985 this->fillch = ' ';
5987 if(!streambuf)
5988 ios_base_setstate(&this->base, IOSTATE_badbit);
5990 if(isstd)
5991 FIXME("standard streams not handled yet\n");
5994 /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
5995 /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
5996 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_ctor_streambuf, 8)
5997 basic_ios_wchar* __thiscall basic_ios_wchar_ctor_streambuf(basic_ios_wchar *this, basic_streambuf_wchar *strbuf)
5999 TRACE("(%p %p)\n", this, strbuf);
6001 basic_ios_wchar_ctor(this);
6002 basic_ios_wchar_init(this, strbuf, FALSE);
6003 return this;
6006 /* ??0?$basic_ios@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
6007 /* ??0?$basic_ios@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
6008 DEFINE_THISCALL_WRAPPER(basic_ios_short_ctor_streambuf, 8)
6009 basic_ios_wchar* __thiscall basic_ios_short_ctor_streambuf(basic_ios_wchar *this, basic_streambuf_wchar *strbuf)
6011 basic_ios_wchar_ctor_streambuf(this, strbuf);
6012 this->base.vtable = &basic_ios_short_vtable;
6013 return this;
6016 /* ??1?$basic_ios@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
6017 /* ??1?$basic_ios@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
6018 /* ??1?$basic_ios@GU?$char_traits@G@std@@@std@@UAE@XZ */
6019 /* ??1?$basic_ios@GU?$char_traits@G@std@@@std@@UEAA@XZ */
6020 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_dtor, 4)
6021 void __thiscall basic_ios_wchar_dtor(basic_ios_wchar *this)
6023 TRACE("(%p)\n", this);
6024 ios_base_dtor(&this->base);
6027 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_vector_dtor, 8)
6028 basic_ios_wchar* __thiscall basic_ios_wchar_vector_dtor(basic_ios_wchar *this, unsigned int flags)
6030 TRACE("(%p %x)\n", this, flags);
6031 if(flags & 2) {
6032 /* we have an array, with the number of elements stored before the first object */
6033 INT_PTR i, *ptr = (INT_PTR *)this-1;
6035 for(i=*ptr-1; i>=0; i--)
6036 basic_ios_wchar_dtor(this+i);
6037 operator_delete(ptr);
6038 } else {
6039 basic_ios_wchar_dtor(this);
6040 if(flags & 1)
6041 operator_delete(this);
6044 return this;
6047 /* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXH_N@Z */
6048 /* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXH_N@Z */
6049 /* ?clear@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXH_N@Z */
6050 /* ?clear@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXH_N@Z */
6051 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_clear_reraise, 12)
6052 void __thiscall basic_ios_wchar_clear_reraise(basic_ios_wchar *this, IOSB_iostate state, bool reraise)
6054 TRACE("(%p %x %x)\n", this, state, reraise);
6055 ios_base_clear_reraise(&this->base, state | (this->strbuf ? IOSTATE_goodbit : IOSTATE_badbit), reraise);
6058 /* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXI@Z */
6059 /* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXI@Z */
6060 /* ?clear@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXI@Z */
6061 /* ?clear@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXI@Z */
6062 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_clear, 8)
6063 void __thiscall basic_ios_wchar_clear(basic_ios_wchar *this, unsigned int state)
6065 basic_ios_wchar_clear_reraise(this, (IOSB_iostate)state, FALSE);
6068 /* ?copyfmt@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEAAV12@ABV12@@Z */
6069 /* ?copyfmt@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEBV12@@Z */
6070 /* ?copyfmt@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEAAV12@ABV12@@Z */
6071 /* ?copyfmt@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAAEAV12@AEBV12@@Z */
6072 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_copyfmt, 8)
6073 basic_ios_wchar* __thiscall basic_ios_wchar_copyfmt(basic_ios_wchar *this, basic_ios_wchar *copy)
6075 TRACE("(%p %p)\n", this, copy);
6076 if(this == copy)
6077 return this;
6079 this->stream = copy->stream;
6080 this->fillch = copy->fillch;
6081 ios_base_copyfmt(&this->base, &copy->base);
6082 return this;
6085 /* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAE_W_W@Z */
6086 /* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAA_W_W@Z */
6087 /* ?fill@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEGG@Z */
6088 /* ?fill@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAGG@Z */
6089 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_fill_set, 8)
6090 wchar_t __thiscall basic_ios_wchar_fill_set(basic_ios_wchar *this, wchar_t fill)
6092 wchar_t ret = this->fillch;
6094 TRACE("(%p %c)\n", this, fill);
6096 this->fillch = fill;
6097 return ret;
6100 /* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBE_WXZ */
6101 /* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBA_WXZ */
6102 /* ?fill@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEGXZ */
6103 /* ?fill@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBAGXZ */
6104 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_fill_get, 4)
6105 wchar_t __thiscall basic_ios_wchar_fill_get(basic_ios_wchar *this)
6107 TRACE("(%p)\n", this);
6108 return this->fillch;
6111 /* ?imbue@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
6112 /* ?imbue@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
6113 /* ?imbue@?$basic_ios@GU?$char_traits@G@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
6114 /* ?imbue@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
6115 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_imbue, 12)
6116 locale *__thiscall basic_ios_wchar_imbue(basic_ios_wchar *this, locale *ret, const locale *loc)
6118 TRACE("(%p %p %p)\n", this, ret, loc);
6120 if(this->strbuf) {
6121 basic_streambuf_wchar_pubimbue(this->strbuf, ret, loc);
6122 locale_dtor(ret);
6125 return ios_base_imbue(&this->base, ret, loc);
6128 /* ?narrow@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBED_WD@Z */
6129 /* ?narrow@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBAD_WD@Z */
6130 /* ?narrow@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEDGD@Z */
6131 /* ?narrow@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBADGD@Z */
6132 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_narrow, 12)
6133 char __thiscall basic_ios_wchar_narrow(basic_ios_wchar *this, wchar_t ch, char def)
6135 TRACE("(%p %c %c)\n", this, ch, def);
6136 return ctype_wchar_narrow_ch(ctype_wchar_use_facet(IOS_LOCALE(&this->base)), ch, def);
6139 /* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@PAV32@@Z */
6140 /* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@PEAV32@@Z */
6141 /* ?rdbuf@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEPAV?$basic_streambuf@GU?$char_traits@G@std@@@2@PAV32@@Z */
6142 /* ?rdbuf@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAPEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@PEAV32@@Z */
6143 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_rdbuf_set, 8)
6144 basic_streambuf_wchar* __thiscall basic_ios_wchar_rdbuf_set(basic_ios_wchar *this, basic_streambuf_wchar *streambuf)
6146 basic_streambuf_wchar *ret = this->strbuf;
6148 TRACE("(%p %p)\n", this, streambuf);
6150 this->strbuf = streambuf;
6151 basic_ios_wchar_clear(this, IOSTATE_goodbit);
6152 return ret;
6155 /* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@XZ */
6156 /* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@XZ */
6157 /* ?rdbuf@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_streambuf@GU?$char_traits@G@std@@@2@XZ */
6158 /* ?rdbuf@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@XZ */
6159 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_rdbuf_get, 4)
6160 basic_streambuf_wchar* __thiscall basic_ios_wchar_rdbuf_get(const basic_ios_wchar *this)
6162 TRACE("(%p)\n", this);
6163 return this->strbuf;
6166 /* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXH_N@Z */
6167 /* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXH_N@Z */
6168 /* ?setstate@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXH_N@Z */
6169 /* ?setstate@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXH_N@Z */
6170 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_setstate_reraise, 12)
6171 void __thiscall basic_ios_wchar_setstate_reraise(basic_ios_wchar *this, IOSB_iostate state, bool reraise)
6173 TRACE("(%p %x %x)\n", this, state, reraise);
6175 if(state != IOSTATE_goodbit)
6176 basic_ios_wchar_clear_reraise(this, this->base.state | state, reraise);
6179 /* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXI@Z */
6180 /* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXI@Z */
6181 /* ?setstate@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXI@Z */
6182 /* ?setstate@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXI@Z */
6183 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_setstate, 8)
6184 void __thiscall basic_ios_wchar_setstate(basic_ios_wchar *this, IOSB_iostate state)
6186 basic_ios_wchar_setstate_reraise(this, state, FALSE);
6189 /* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEPAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@PAV32@@Z */
6190 /* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAPEAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@PEAV32@@Z */
6191 /* ?tie@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEPAV?$basic_ostream@GU?$char_traits@G@std@@@2@PAV32@@Z */
6192 /* ?tie@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAPEAV?$basic_ostream@GU?$char_traits@G@std@@@2@PEAV32@@Z */
6193 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_tie_set, 8)
6194 basic_ostream_wchar* __thiscall basic_ios_wchar_tie_set(basic_ios_wchar *this, basic_ostream_wchar *ostream)
6196 basic_ostream_wchar *ret = this->stream;
6198 TRACE("(%p %p)\n", this, ostream);
6200 this->stream = ostream;
6201 return ret;
6204 /* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@XZ */
6205 /* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@XZ */
6206 /* ?tie@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_ostream@GU?$char_traits@G@std@@@2@XZ */
6207 /* ?tie@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_ostream@GU?$char_traits@G@std@@@2@XZ */
6208 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_tie_get, 4)
6209 basic_ostream_wchar* __thiscall basic_ios_wchar_tie_get(const basic_ios_wchar *this)
6211 TRACE("(%p)\n", this);
6212 return this->stream;
6215 /* ?widen@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBE_WD@Z */
6216 /* ?widen@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBA_WD@Z */
6217 /* ?widen@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEGD@Z */
6218 /* ?widen@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBAGD@Z */
6219 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_widen, 8)
6220 wchar_t __thiscall basic_ios_wchar_widen(basic_ios_wchar *this, char ch)
6222 TRACE("(%p %c)\n", this, ch);
6223 return ctype_wchar_widen_ch(ctype_wchar_use_facet(IOS_LOCALE(&this->base)), ch);
6226 /* ?swap@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXAAV12@@Z */
6227 /* ?swap@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXAEAV12@@Z */
6228 /* ?swap@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXAAV12@@Z */
6229 /* ?swap@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXAEAV12@@Z */
6230 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_swap, 8)
6231 void __thiscall basic_ios_wchar_swap(basic_ios_wchar *this, basic_ios_wchar *r)
6233 void *swap_ptr;
6235 TRACE("(%p %p)\n", this, r);
6237 if(this == r)
6238 return;
6240 ios_base_swap(&this->base, &r->base);
6241 swap_ptr = this->stream;
6242 this->stream = r->stream;
6243 r->stream = swap_ptr;
6244 this->fillch ^= r->fillch;
6245 r->fillch ^= this->fillch;
6246 this->fillch ^= r->fillch;
6249 /* Caution: basic_ostream uses virtual inheritance.
6250 * All constructors have additional parameter that says if base class should be initialized.
6251 * Base class needs to be accessed using vbtable.
6253 static inline basic_ios_char* basic_ostream_char_get_basic_ios(basic_ostream_char *this)
6255 return (basic_ios_char*)((char*)this+this->vbtable[1]);
6258 static inline basic_ios_char* basic_ostream_char_to_basic_ios(basic_ostream_char *ptr)
6260 return (basic_ios_char*)((char*)ptr+basic_ostream_char_vbtable[1]);
6263 static inline basic_ostream_char* basic_ostream_char_from_basic_ios(basic_ios_char *ptr)
6265 return (basic_ostream_char*)((char*)ptr-basic_ostream_char_vbtable[1]);
6268 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z */
6269 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z */
6270 DEFINE_THISCALL_WRAPPER(basic_ostream_char_ctor, 16)
6271 basic_ostream_char* __thiscall basic_ostream_char_ctor(basic_ostream_char *this,
6272 basic_streambuf_char *strbuf, bool isstd, bool virt_init)
6274 basic_ios_char *base;
6276 TRACE("(%p %p %d %d)\n", this, strbuf, isstd, virt_init);
6278 if(virt_init) {
6279 this->vbtable = basic_ostream_char_vbtable;
6280 base = basic_ostream_char_get_basic_ios(this);
6281 INIT_BASIC_IOS_VTORDISP(base);
6282 basic_ios_char_ctor(base);
6283 }else {
6284 base = basic_ostream_char_get_basic_ios(this);
6287 base->base.vtable = &basic_ostream_char_vtable;
6288 basic_ios_char_init(base, strbuf, isstd);
6289 return this;
6292 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@W4_Uninitialized@1@_N@Z */
6293 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@W4_Uninitialized@1@_N@Z */
6294 DEFINE_THISCALL_WRAPPER(basic_ostream_char_ctor_uninitialized, 16)
6295 basic_ostream_char* __thiscall basic_ostream_char_ctor_uninitialized(basic_ostream_char *this,
6296 int uninitialized, bool addstd, bool virt_init)
6298 basic_ios_char *base;
6300 TRACE("(%p %d %x)\n", this, uninitialized, addstd);
6302 if(virt_init) {
6303 this->vbtable = basic_ostream_char_vbtable;
6304 base = basic_ostream_char_get_basic_ios(this);
6305 INIT_BASIC_IOS_VTORDISP(base);
6306 basic_ios_char_ctor(base);
6307 }else {
6308 base = basic_ostream_char_get_basic_ios(this);
6311 base->base.vtable = &basic_ostream_char_vtable;
6312 if(addstd)
6313 ios_base_Addstd(&base->base);
6314 return this;
6317 /* ??1?$basic_ostream@DU?$char_traits@D@std@@@std@@UAE@XZ */
6318 /* ??1?$basic_ostream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
6319 DEFINE_THISCALL_WRAPPER(basic_ostream_char_dtor, 4)
6320 void __thiscall basic_ostream_char_dtor(basic_ios_char *base)
6322 basic_ostream_char *this = basic_ostream_char_from_basic_ios(base);
6324 /* don't destroy virtual base here */
6325 TRACE("(%p)\n", this);
6328 /* ??_D?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
6329 /* ??_D?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
6330 DEFINE_THISCALL_WRAPPER(basic_ostream_char_vbase_dtor, 4)
6331 void __thiscall basic_ostream_char_vbase_dtor(basic_ostream_char *this)
6333 basic_ios_char *base = basic_ostream_char_to_basic_ios(this);
6335 TRACE("(%p)\n", this);
6337 basic_ostream_char_dtor(base);
6338 basic_ios_char_dtor(base);
6341 DEFINE_THISCALL_WRAPPER(basic_ostream_char_vector_dtor, 8)
6342 basic_ostream_char* __thiscall basic_ostream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
6344 basic_ostream_char *this = basic_ostream_char_from_basic_ios(base);
6346 TRACE("(%p %x)\n", this, flags);
6348 if(flags & 2) {
6349 /* we have an array, with the number of elements stored before the first object */
6350 INT_PTR i, *ptr = (INT_PTR *)this-1;
6352 for(i=*ptr-1; i>=0; i--)
6353 basic_ostream_char_vbase_dtor(this+i);
6354 operator_delete(ptr);
6355 } else {
6356 basic_ostream_char_vbase_dtor(this);
6357 if(flags & 1)
6358 operator_delete(this);
6361 return this;
6364 /* ?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@XZ */
6365 /* ?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@XZ */
6366 DEFINE_THISCALL_WRAPPER(basic_ostream_char_flush, 4)
6367 basic_ostream_char* __thiscall basic_ostream_char_flush(basic_ostream_char *this)
6369 /* this function is not matching C++ specification */
6370 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6372 TRACE("(%p)\n", this);
6374 if(basic_ios_char_rdbuf_get(base) && ios_base_good(&base->base)
6375 && basic_streambuf_char_pubsync(basic_ios_char_rdbuf_get(base))==-1)
6376 basic_ios_char_setstate(base, IOSTATE_badbit);
6377 return this;
6380 /* ?flush@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@@Z */
6381 /* ?flush@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@1@AEAV21@@Z */
6382 basic_ostream_char* __cdecl flush_ostream_char(basic_ostream_char *ostream)
6384 return basic_ostream_char_flush(ostream);
6387 /* ?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
6388 /* ?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
6389 DEFINE_THISCALL_WRAPPER(basic_ostream_char__Osfx, 4)
6390 void __thiscall basic_ostream_char__Osfx(basic_ostream_char *this)
6392 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6394 TRACE("(%p)\n", this);
6396 if(base->base.fmtfl & FMTFLAG_unitbuf)
6397 basic_ostream_char_flush(this);
6400 /* ?osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
6401 /* ?osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
6402 DEFINE_THISCALL_WRAPPER(basic_ostream_char_osfx, 4)
6403 void __thiscall basic_ostream_char_osfx(basic_ostream_char *this)
6405 TRACE("(%p)\n", this);
6406 basic_ostream_char__Osfx(this);
6409 static BOOL basic_ostream_char_sentry_create(basic_ostream_char *ostr)
6411 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
6413 if(basic_ios_char_rdbuf_get(base))
6414 call_basic_streambuf_char__Lock(base->strbuf);
6416 if(ios_base_good(&base->base) && base->stream)
6417 basic_ostream_char_flush(base->stream);
6419 return ios_base_good(&base->base);
6422 static void basic_ostream_char_sentry_destroy(basic_ostream_char *ostr)
6424 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
6426 if(ios_base_good(&base->base) && !__uncaught_exception())
6427 basic_ostream_char_osfx(ostr);
6429 if(basic_ios_char_rdbuf_get(base))
6430 call_basic_streambuf_char__Unlock(base->strbuf);
6433 /* ?opfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE_NXZ */
6434 /* ?opfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA_NXZ */
6435 DEFINE_THISCALL_WRAPPER(basic_ostream_char_opfx, 4)
6436 bool __thiscall basic_ostream_char_opfx(basic_ostream_char *this)
6438 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6440 TRACE("(%p)\n", this);
6442 if(ios_base_good(&base->base) && base->stream)
6443 basic_ostream_char_flush(base->stream);
6444 return ios_base_good(&base->base);
6447 /* ?put@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@D@Z */
6448 /* ?put@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@D@Z */
6449 DEFINE_THISCALL_WRAPPER(basic_ostream_char_put, 8)
6450 basic_ostream_char* __thiscall basic_ostream_char_put(basic_ostream_char *this, char ch)
6452 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6454 TRACE("(%p %c)\n", this, ch);
6456 if(!basic_ostream_char_sentry_create(this)
6457 || basic_streambuf_char_sputc(base->strbuf, ch)==EOF) {
6458 basic_ostream_char_sentry_destroy(this);
6459 basic_ios_char_setstate(base, IOSTATE_badbit);
6460 return this;
6463 basic_ostream_char_sentry_destroy(this);
6464 return this;
6467 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@JH@Z */
6468 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@_JH@Z */
6469 #if STREAMOFF_BITS == 64
6470 DEFINE_THISCALL_WRAPPER(basic_ostream_char_seekp, 16)
6471 #else
6472 DEFINE_THISCALL_WRAPPER(basic_ostream_char_seekp, 12)
6473 #endif
6474 basic_ostream_char* __thiscall basic_ostream_char_seekp(basic_ostream_char *this, streamoff off, int way)
6476 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6478 TRACE("(%p %s %d)\n", this, wine_dbgstr_longlong(off), way);
6480 if(!ios_base_fail(&base->base)) {
6481 fpos_mbstatet seek;
6483 basic_streambuf_char_pubseekoff(basic_ios_char_rdbuf_get(base),
6484 &seek, off, way, OPENMODE_out);
6485 if(seek.off==-1 && seek.pos==0 && MBSTATET_TO_INT(&seek.state)==0)
6486 basic_ios_char_setstate(base, IOSTATE_failbit);
6488 return this;
6491 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
6492 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
6493 DEFINE_THISCALL_WRAPPER(basic_ostream_char_seekp_fpos, 28)
6494 basic_ostream_char* __thiscall basic_ostream_char_seekp_fpos(basic_ostream_char *this, fpos_mbstatet pos)
6496 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6498 TRACE("(%p %s)\n", this, debugstr_fpos_mbstatet(&pos));
6500 if(!ios_base_fail(&base->base)) {
6501 fpos_mbstatet seek;
6503 basic_streambuf_char_pubseekpos(basic_ios_char_rdbuf_get(base),
6504 &seek, pos, OPENMODE_out);
6505 if(seek.off==-1 && seek.pos==0 && MBSTATET_TO_INT(&seek.state)==0)
6506 basic_ios_char_setstate(base, IOSTATE_failbit);
6508 return this;
6511 /* ?tellp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@XZ */
6512 /* ?tellp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
6513 DEFINE_THISCALL_WRAPPER(basic_ostream_char_tellp, 8)
6514 fpos_mbstatet* __thiscall basic_ostream_char_tellp(basic_ostream_char *this, fpos_mbstatet *ret)
6516 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6518 TRACE("(%p)\n", this);
6520 if(!ios_base_fail(&base->base)) {
6521 basic_streambuf_char_pubseekoff(basic_ios_char_rdbuf_get(base),
6522 ret, 0, SEEKDIR_cur, OPENMODE_out);
6523 }else {
6524 ret->off = -1;
6525 ret->pos = 0;
6526 memset(&ret->state, 0, sizeof(ret->state));
6528 return ret;
6531 /* ?write@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@PBDH@Z */
6532 /* ?write@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEBD_J@Z */
6533 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
6534 DEFINE_THISCALL_WRAPPER(basic_ostream_char_write, 16)
6535 #else
6536 DEFINE_THISCALL_WRAPPER(basic_ostream_char_write, 12)
6537 #endif
6538 basic_ostream_char* __thiscall basic_ostream_char_write(basic_ostream_char *this, const char *str, streamsize count)
6540 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6542 TRACE("(%p %s %s)\n", this, debugstr_a(str), wine_dbgstr_longlong(count));
6544 if(!basic_ostream_char_sentry_create(this)
6545 || basic_streambuf_char_sputn(base->strbuf, str, count)!=count) {
6546 basic_ostream_char_sentry_destroy(this);
6547 basic_ios_char_setstate(base, IOSTATE_badbit);
6548 return this;
6551 basic_ostream_char_sentry_destroy(this);
6552 return this;
6555 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@F@Z */
6556 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@F@Z */
6557 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_short, 8)
6558 basic_ostream_char* __thiscall basic_ostream_char_print_short(basic_ostream_char *this, short val)
6560 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6561 int state = IOSTATE_goodbit;
6563 TRACE("(%p %d)\n", this, val);
6565 if(basic_ostream_char_sentry_create(this)) {
6566 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6567 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
6568 ostreambuf_iterator_char dest;
6570 memset(&dest, 0, sizeof(dest));
6571 dest.strbuf = strbuf;
6572 num_put_char_put_long(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base),
6573 (ios_base_flags_get(&base->base) & FMTFLAG_basefield & (FMTFLAG_oct | FMTFLAG_hex))
6574 ? (LONG)((unsigned short)val) : (LONG)val);
6576 basic_ostream_char_sentry_destroy(this);
6578 basic_ios_char_setstate(base, state);
6579 return this;
6582 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@G@Z */
6583 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@G@Z */
6584 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_ushort, 8)
6585 basic_ostream_char* __thiscall basic_ostream_char_print_ushort(basic_ostream_char *this, unsigned short val)
6587 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6588 int state = IOSTATE_goodbit;
6590 TRACE("(%p %u)\n", this, val);
6592 if(basic_ostream_char_sentry_create(this)) {
6593 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6594 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
6595 ostreambuf_iterator_char dest;
6597 memset(&dest, 0, sizeof(dest));
6598 dest.strbuf = strbuf;
6599 num_put_char_put_ulong(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
6601 basic_ostream_char_sentry_destroy(this);
6603 basic_ios_char_setstate(base, state);
6604 return this;
6607 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@H@Z */
6608 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@H@Z */
6609 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@J@Z */
6610 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@J@Z */
6611 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_int, 8)
6612 basic_ostream_char* __thiscall basic_ostream_char_print_int(basic_ostream_char *this, int val)
6614 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6615 int state = IOSTATE_goodbit;
6617 TRACE("(%p %d)\n", this, val);
6619 if(basic_ostream_char_sentry_create(this)) {
6620 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6621 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
6622 ostreambuf_iterator_char dest;
6624 memset(&dest, 0, sizeof(dest));
6625 dest.strbuf = strbuf;
6626 num_put_char_put_long(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
6628 basic_ostream_char_sentry_destroy(this);
6630 basic_ios_char_setstate(base, state);
6631 return this;
6634 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@I@Z */
6635 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@I@Z */
6636 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@K@Z */
6637 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@K@Z */
6638 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_uint, 8)
6639 basic_ostream_char* __thiscall basic_ostream_char_print_uint(basic_ostream_char *this, unsigned int val)
6641 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6642 int state = IOSTATE_goodbit;
6644 TRACE("(%p %u)\n", this, val);
6646 if(basic_ostream_char_sentry_create(this)) {
6647 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6648 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
6649 ostreambuf_iterator_char dest;
6651 memset(&dest, 0, sizeof(dest));
6652 dest.strbuf = strbuf;
6653 num_put_char_put_ulong(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
6655 basic_ostream_char_sentry_destroy(this);
6657 basic_ios_char_setstate(base, state);
6658 return this;
6661 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@M@Z */
6662 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@M@Z */
6663 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_float, 8)
6664 basic_ostream_char* __thiscall basic_ostream_char_print_float(basic_ostream_char *this, float val)
6666 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6667 int state = IOSTATE_goodbit;
6669 TRACE("(%p %f)\n", this, val);
6671 if(basic_ostream_char_sentry_create(this)) {
6672 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6673 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
6674 ostreambuf_iterator_char dest;
6676 memset(&dest, 0, sizeof(dest));
6677 dest.strbuf = strbuf;
6678 num_put_char_put_double(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
6680 basic_ostream_char_sentry_destroy(this);
6682 basic_ios_char_setstate(base, state);
6683 return this;
6686 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@N@Z */
6687 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@N@Z */
6688 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_double, 12)
6689 basic_ostream_char* __thiscall basic_ostream_char_print_double(basic_ostream_char *this, double val)
6691 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6692 int state = IOSTATE_goodbit;
6694 TRACE("(%p %lf)\n", this, val);
6696 if(basic_ostream_char_sentry_create(this)) {
6697 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6698 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
6699 ostreambuf_iterator_char dest;
6701 memset(&dest, 0, sizeof(dest));
6702 dest.strbuf = strbuf;
6703 num_put_char_put_double(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
6705 basic_ostream_char_sentry_destroy(this);
6707 basic_ios_char_setstate(base, state);
6708 return this;
6711 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@O@Z */
6712 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@O@Z */
6713 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_ldouble, 12)
6714 basic_ostream_char* __thiscall basic_ostream_char_print_ldouble(basic_ostream_char *this, double val)
6716 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6717 int state = IOSTATE_goodbit;
6719 TRACE("(%p %lf)\n", this, val);
6721 if(basic_ostream_char_sentry_create(this)) {
6722 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6723 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
6724 ostreambuf_iterator_char dest;
6726 memset(&dest, 0, sizeof(dest));
6727 dest.strbuf = strbuf;
6728 num_put_char_put_ldouble(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
6730 basic_ostream_char_sentry_destroy(this);
6732 basic_ios_char_setstate(base, state);
6733 return this;
6736 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
6737 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
6738 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_streambuf, 8)
6739 basic_ostream_char* __thiscall basic_ostream_char_print_streambuf(basic_ostream_char *this, basic_streambuf_char *val)
6741 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6742 IOSB_iostate state = IOSTATE_badbit;
6743 int c = '\n';
6745 TRACE("(%p %p)\n", this, val);
6747 if(basic_ostream_char_sentry_create(this)) {
6748 for(c = basic_streambuf_char_sgetc(val); c!=EOF;
6749 c = basic_streambuf_char_snextc(val)) {
6750 state = IOSTATE_goodbit;
6752 if(basic_streambuf_char_sputc(base->strbuf, c) == EOF) {
6753 state = IOSTATE_badbit;
6754 break;
6757 }else {
6758 state = IOSTATE_badbit;
6760 basic_ostream_char_sentry_destroy(this);
6762 ios_base_width_set(&base->base, 0);
6763 basic_ios_char_setstate(base, state);
6764 return this;
6767 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@PBX@Z */
6768 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@PEBX@Z */
6769 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_ptr, 8)
6770 basic_ostream_char* __thiscall basic_ostream_char_print_ptr(basic_ostream_char *this, const void *val)
6772 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6773 int state = IOSTATE_goodbit;
6775 TRACE("(%p %p)\n", this, val);
6777 if(basic_ostream_char_sentry_create(this)) {
6778 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6779 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
6780 ostreambuf_iterator_char dest;
6782 memset(&dest, 0, sizeof(dest));
6783 dest.strbuf = strbuf;
6784 num_put_char_put_ptr(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
6786 basic_ostream_char_sentry_destroy(this);
6788 basic_ios_char_setstate(base, state);
6789 return this;
6792 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@_J@Z */
6793 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@_J@Z */
6794 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_int64, 12)
6795 basic_ostream_char* __thiscall basic_ostream_char_print_int64(basic_ostream_char *this, __int64 val)
6797 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6798 int state = IOSTATE_goodbit;
6800 TRACE("(%p)\n", this);
6802 if(basic_ostream_char_sentry_create(this)) {
6803 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6804 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
6805 ostreambuf_iterator_char dest;
6807 memset(&dest, 0, sizeof(dest));
6808 dest.strbuf = strbuf;
6809 num_put_char_put_int64(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
6811 basic_ostream_char_sentry_destroy(this);
6813 basic_ios_char_setstate(base, state);
6814 return this;
6817 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@_K@Z */
6818 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@_K@Z */
6819 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_uint64, 12)
6820 basic_ostream_char* __thiscall basic_ostream_char_print_uint64(basic_ostream_char *this, unsigned __int64 val)
6822 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6823 int state = IOSTATE_goodbit;
6825 TRACE("(%p)\n", this);
6827 if(basic_ostream_char_sentry_create(this)) {
6828 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6829 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
6830 ostreambuf_iterator_char dest;
6832 memset(&dest, 0, sizeof(dest));
6833 dest.strbuf = strbuf;
6834 num_put_char_put_uint64(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
6836 basic_ostream_char_sentry_destroy(this);
6838 basic_ios_char_setstate(base, state);
6839 return this;
6842 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@_N@Z */
6843 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@_N@Z */
6844 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_bool, 8)
6845 basic_ostream_char* __thiscall basic_ostream_char_print_bool(basic_ostream_char *this, bool val)
6847 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6848 int state = IOSTATE_goodbit;
6850 TRACE("(%p %x)\n", this, val);
6852 if(basic_ostream_char_sentry_create(this)) {
6853 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6854 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
6855 ostreambuf_iterator_char dest;
6857 memset(&dest, 0, sizeof(dest));
6858 dest.strbuf = strbuf;
6859 num_put_char_put_bool(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
6861 basic_ostream_char_sentry_destroy(this);
6863 basic_ios_char_setstate(base, state);
6864 return this;
6867 /* ?ends@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@@Z */
6868 /* ?ends@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@1@AEAV21@@Z */
6869 basic_ostream_char* __cdecl basic_ostream_char_ends(basic_ostream_char *ostr)
6871 TRACE("(%p)\n", ostr);
6873 basic_ostream_char_put(ostr, 0);
6874 return ostr;
6877 /* ?endl@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@@Z */
6878 /* ?endl@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@1@AEAV21@@Z */
6879 basic_ostream_char* __cdecl basic_ostream_char_endl(basic_ostream_char *ostr)
6881 TRACE("(%p)\n", ostr);
6883 basic_ostream_char_put(ostr, '\n');
6884 basic_ostream_char_flush(ostr);
6885 return ostr;
6888 /* ??$?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 */
6889 /* ??$?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 */
6890 basic_ostream_char* __cdecl basic_ostream_char_print_bstr(basic_ostream_char *ostr, const basic_string_char *str)
6892 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
6893 IOSB_iostate state = IOSTATE_goodbit;
6895 TRACE("(%p %p)\n", ostr, str);
6897 if(basic_ostream_char_sentry_create(ostr)) {
6898 size_t len = MSVCP_basic_string_char_length(str);
6899 streamsize pad = (base->base.wide>len ? base->base.wide-len : 0);
6901 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
6902 for(; pad!=0; pad--) {
6903 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
6904 state = IOSTATE_badbit;
6905 break;
6910 if(state == IOSTATE_goodbit) {
6911 if(basic_streambuf_char_sputn(base->strbuf, MSVCP_basic_string_char_c_str(str), len) != len)
6912 state = IOSTATE_badbit;
6915 if(state == IOSTATE_goodbit) {
6916 for(; pad!=0; pad--) {
6917 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
6918 state = IOSTATE_badbit;
6919 break;
6924 base->base.wide = 0;
6925 }else {
6926 state = IOSTATE_badbit;
6928 basic_ostream_char_sentry_destroy(ostr);
6930 basic_ios_char_setstate(base, state);
6931 return ostr;
6934 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@C@Z */
6935 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@C@Z */
6936 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@D@Z */
6937 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z */
6938 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@E@Z */
6939 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@E@Z */
6940 basic_ostream_char* __cdecl basic_ostream_char_print_ch(basic_ostream_char *ostr, char ch)
6942 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
6943 IOSB_iostate state = IOSTATE_goodbit;
6945 TRACE("(%p %d)\n", ostr, ch);
6947 if(basic_ostream_char_sentry_create(ostr)) {
6948 streamsize pad = (base->base.wide>1 ? base->base.wide-1 : 0);
6950 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
6951 for(; pad!=0; pad--) {
6952 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
6953 state = IOSTATE_badbit;
6954 break;
6959 if(state == IOSTATE_goodbit) {
6960 if(basic_streambuf_char_sputc(base->strbuf, ch) == EOF)
6961 state = IOSTATE_badbit;
6964 if(state == IOSTATE_goodbit) {
6965 for(; pad!=0; pad--) {
6966 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
6967 state = IOSTATE_badbit;
6968 break;
6973 base->base.wide = 0;
6974 }else {
6975 state = IOSTATE_badbit;
6977 basic_ostream_char_sentry_destroy(ostr);
6979 basic_ios_char_setstate(base, state);
6980 return ostr;
6983 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBC@Z */
6984 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBC@Z */
6985 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBD@Z */
6986 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBD@Z */
6987 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBE@Z */
6988 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBE@Z */
6989 basic_ostream_char* __cdecl basic_ostream_char_print_str(basic_ostream_char *ostr, const char *str)
6991 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
6992 IOSB_iostate state = IOSTATE_goodbit;
6994 TRACE("(%p %s)\n", ostr, str);
6996 if(basic_ostream_char_sentry_create(ostr)) {
6997 size_t len = strlen(str);
6998 streamsize pad = (base->base.wide>len ? base->base.wide-len : 0);
7000 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
7001 for(; pad!=0; pad--) {
7002 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
7003 state = IOSTATE_badbit;
7004 break;
7009 if(state == IOSTATE_goodbit) {
7010 if(basic_streambuf_char_sputn(base->strbuf, str, len) != len)
7011 state = IOSTATE_badbit;
7014 if(state == IOSTATE_goodbit) {
7015 for(; pad!=0; pad--) {
7016 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
7017 state = IOSTATE_badbit;
7018 break;
7023 base->base.wide = 0;
7024 }else {
7025 state = IOSTATE_badbit;
7027 basic_ostream_char_sentry_destroy(ostr);
7029 basic_ios_char_setstate(base, state);
7030 return ostr;
7033 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
7034 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
7035 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_func, 8)
7036 basic_ostream_char* __thiscall basic_ostream_char_print_func(basic_ostream_char *this,
7037 basic_ostream_char* (__cdecl *pfunc)(basic_ostream_char*))
7039 TRACE("(%p %p)\n", this, pfunc);
7040 pfunc(this);
7041 return this;
7044 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@DU?$char_traits@D@std@@@1@AAV21@@Z@Z */
7045 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@DU?$char_traits@D@std@@@1@AEAV21@@Z@Z */
7046 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_func_basic_ios, 8)
7047 basic_ostream_char* __thiscall basic_ostream_char_print_func_basic_ios(basic_ostream_char *this,
7048 basic_ios_char* (__cdecl *pfunc)(basic_ios_char*))
7050 TRACE("(%p %p)\n", this, pfunc);
7051 pfunc(basic_ostream_char_get_basic_ios(this));
7052 return this;
7055 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
7056 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
7057 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_func_ios_base, 8)
7058 basic_ostream_char* __thiscall basic_ostream_char_print_func_ios_base(
7059 basic_ostream_char *this, ios_base* (__cdecl *pfunc)(ios_base*))
7061 TRACE("(%p %p)\n", this, pfunc);
7062 pfunc(&basic_ostream_char_get_basic_ios(this)->base);
7063 return this;
7066 /* ?swap@?$basic_ostream@DU?$char_traits@D@std@@@std@@IAEXAAV12@@Z */
7067 /* ?swap@?$basic_ostream@DU?$char_traits@D@std@@@std@@IEAAXAEAV12@@Z */
7068 DEFINE_THISCALL_WRAPPER(basic_ostream_char_swap, 8)
7069 void __thiscall basic_ostream_char_swap(basic_ostream_char *this, basic_ostream_char *r)
7071 TRACE("(%p %p)\n", this, r);
7073 if(this == r)
7074 return;
7076 basic_ios_char_swap(basic_ostream_char_get_basic_ios(this),
7077 basic_ostream_char_get_basic_ios(r));
7080 /* Caution: basic_ostream uses virtual inheritance. */
7081 static inline basic_ios_wchar* basic_ostream_wchar_get_basic_ios(basic_ostream_wchar *this)
7083 return (basic_ios_wchar*)((char*)this+this->vbtable[1]);
7086 static inline basic_ios_wchar* basic_ostream_wchar_to_basic_ios(basic_ostream_wchar *ptr)
7088 return (basic_ios_wchar*)((char*)ptr+basic_ostream_wchar_vbtable[1]);
7091 static inline basic_ostream_wchar* basic_ostream_wchar_from_basic_ios(basic_ios_wchar *ptr)
7093 return (basic_ostream_wchar*)((char*)ptr-basic_ostream_wchar_vbtable[1]);
7096 /* ??0?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z */
7097 /* ??0?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z */
7098 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_ctor, 16)
7099 basic_ostream_wchar* __thiscall basic_ostream_wchar_ctor(basic_ostream_wchar *this,
7100 basic_streambuf_wchar *strbuf, bool isstd, bool virt_init)
7102 basic_ios_wchar *base;
7104 TRACE("(%p %p %d %d)\n", this, strbuf, isstd, virt_init);
7106 if(virt_init) {
7107 this->vbtable = basic_ostream_wchar_vbtable;
7108 base = basic_ostream_wchar_get_basic_ios(this);
7109 INIT_BASIC_IOS_VTORDISP(base);
7110 basic_ios_wchar_ctor(base);
7111 }else {
7112 base = basic_ostream_wchar_get_basic_ios(this);
7115 base->base.vtable = &basic_ostream_wchar_vtable;
7116 basic_ios_wchar_init(base, strbuf, isstd);
7117 return this;
7120 /* ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N@Z */
7121 /* ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N@Z */
7122 DEFINE_THISCALL_WRAPPER(basic_ostream_short_ctor, 16)
7123 basic_ostream_wchar* __thiscall basic_ostream_short_ctor(basic_ostream_wchar *this,
7124 basic_streambuf_wchar *strbuf, bool isstd, bool virt_init)
7126 basic_ostream_wchar_ctor(this, strbuf, isstd, virt_init);
7127 basic_ostream_wchar_get_basic_ios(this)->base.vtable = &basic_ostream_short_vtable;
7128 return this;
7131 /* ??0?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAE@W4_Uninitialized@1@_N@Z */
7132 /* ??0?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAA@W4_Uninitialized@1@_N@Z */
7133 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_ctor_uninitialized, 16)
7134 basic_ostream_wchar* __thiscall basic_ostream_wchar_ctor_uninitialized(basic_ostream_wchar *this,
7135 int uninitialized, bool addstd, bool virt_init)
7137 basic_ios_wchar *base;
7139 TRACE("(%p %d %x)\n", this, uninitialized, addstd);
7141 if(virt_init) {
7142 this->vbtable = basic_ostream_wchar_vbtable;
7143 base = basic_ostream_wchar_get_basic_ios(this);
7144 INIT_BASIC_IOS_VTORDISP(base);
7145 basic_ios_wchar_ctor(base);
7146 }else {
7147 base = basic_ostream_wchar_get_basic_ios(this);
7150 base->base.vtable = &basic_ostream_wchar_vtable;
7151 if(addstd)
7152 ios_base_Addstd(&base->base);
7153 return this;
7156 /* ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE@W4_Uninitialized@1@_N@Z */
7157 /* ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA@W4_Uninitialized@1@_N@Z */
7158 DEFINE_THISCALL_WRAPPER(basic_ostream_short_ctor_uninitialized, 16)
7159 basic_ostream_wchar* __thiscall basic_ostream_short_ctor_uninitialized(basic_ostream_wchar *this,
7160 int uninitialized, bool addstd, bool virt_init)
7162 basic_ostream_wchar_ctor_uninitialized(this, uninitialized, addstd, virt_init);
7163 basic_ostream_wchar_get_basic_ios(this)->base.vtable = &basic_ostream_short_vtable;
7164 return this;
7167 /* ??1?$basic_ostream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
7168 /* ??1?$basic_ostream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
7169 /* ??1?$basic_ostream@GU?$char_traits@G@std@@@std@@UAE@XZ */
7170 /* ??1?$basic_ostream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
7171 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_dtor, 4)
7172 void __thiscall basic_ostream_wchar_dtor(basic_ios_wchar *base)
7174 basic_ostream_wchar *this = basic_ostream_wchar_from_basic_ios(base);
7176 /* don't destroy virtual base here */
7177 TRACE("(%p)\n", this);
7180 /* ??_D?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
7181 /* ??_D?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
7182 /* ??_D?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEXXZ */
7183 /* ??_D?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
7184 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_vbase_dtor, 4)
7185 void __thiscall basic_ostream_wchar_vbase_dtor(basic_ostream_wchar *this)
7187 basic_ios_wchar *base = basic_ostream_wchar_to_basic_ios(this);
7189 TRACE("(%p)\n", this);
7191 basic_ostream_wchar_dtor(base);
7192 basic_ios_wchar_dtor(base);
7195 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_vector_dtor, 8)
7196 basic_ostream_wchar* __thiscall basic_ostream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
7198 basic_ostream_wchar *this = basic_ostream_wchar_from_basic_ios(base);
7200 TRACE("(%p %x)\n", this, flags);
7202 if(flags & 2) {
7203 /* we have an array, with the number of elements stored before the first object */
7204 INT_PTR i, *ptr = (INT_PTR *)this-1;
7206 for(i=*ptr-1; i>=0; i--)
7207 basic_ostream_wchar_vbase_dtor(this+i);
7208 operator_delete(ptr);
7209 } else {
7210 basic_ostream_wchar_vbase_dtor(this);
7211 if(flags & 1)
7212 operator_delete(this);
7215 return this;
7218 /* ?flush@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@XZ */
7219 /* ?flush@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@XZ */
7220 /* ?flush@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@XZ */
7221 /* ?flush@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@XZ */
7222 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_flush, 4)
7223 basic_ostream_wchar* __thiscall basic_ostream_wchar_flush(basic_ostream_wchar *this)
7225 /* this function is not matching C++ specification */
7226 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7228 TRACE("(%p)\n", this);
7230 if(basic_ios_wchar_rdbuf_get(base) && ios_base_good(&base->base)
7231 && basic_streambuf_wchar_pubsync(basic_ios_wchar_rdbuf_get(base))==-1)
7232 basic_ios_wchar_setstate(base, IOSTATE_badbit);
7233 return this;
7236 /* ?flush@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@AAV21@@Z */
7237 /* ?flush@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@AEAV21@@Z */
7238 /* ?flush@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@1@AAV21@@Z */
7239 /* ?flush@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@1@AEAV21@@Z */
7240 basic_ostream_wchar* __cdecl flush_ostream_wchar(basic_ostream_wchar *ostream)
7242 return basic_ostream_wchar_flush(ostream);
7245 /* ?_Osfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
7246 /* ?_Osfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
7247 /* ?_Osfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEXXZ */
7248 /* ?_Osfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
7249 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar__Osfx, 4)
7250 void __thiscall basic_ostream_wchar__Osfx(basic_ostream_wchar *this)
7252 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7254 TRACE("(%p)\n", this);
7256 if(base->base.fmtfl & FMTFLAG_unitbuf)
7257 basic_ostream_wchar_flush(this);
7260 /* ?osfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
7261 /* ?osfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
7262 /* ?osfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEXXZ */
7263 /* ?osfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
7264 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_osfx, 4)
7265 void __thiscall basic_ostream_wchar_osfx(basic_ostream_wchar *this)
7267 TRACE("(%p)\n", this);
7268 basic_ostream_wchar__Osfx(this);
7271 static BOOL basic_ostream_wchar_sentry_create(basic_ostream_wchar *ostr)
7273 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(ostr);
7275 if(basic_ios_wchar_rdbuf_get(base))
7276 basic_streambuf_wchar__Lock(base->strbuf);
7278 if(ios_base_good(&base->base) && base->stream)
7279 basic_ostream_wchar_flush(base->stream);
7281 return ios_base_good(&base->base);
7284 static void basic_ostream_wchar_sentry_destroy(basic_ostream_wchar *ostr)
7286 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(ostr);
7288 if(ios_base_good(&base->base) && !__uncaught_exception())
7289 basic_ostream_wchar_osfx(ostr);
7291 if(basic_ios_wchar_rdbuf_get(base))
7292 basic_streambuf_wchar__Unlock(base->strbuf);
7295 /* ?opfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAE_NXZ */
7296 /* ?opfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAA_NXZ */
7297 /* ?opfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE_NXZ */
7298 /* ?opfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA_NXZ */
7299 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_opfx, 4)
7300 bool __thiscall basic_ostream_wchar_opfx(basic_ostream_wchar *this)
7302 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7304 TRACE("(%p)\n", this);
7306 if(ios_base_good(&base->base) && base->stream)
7307 basic_ostream_wchar_flush(base->stream);
7308 return ios_base_good(&base->base);
7311 /* ?put@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@_W@Z */
7312 /* ?put@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_W@Z */
7313 /* ?put@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@G@Z */
7314 /* ?put@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@G@Z */
7315 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_put, 8)
7316 basic_ostream_wchar* __thiscall basic_ostream_wchar_put(basic_ostream_wchar *this, wchar_t ch)
7318 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7320 TRACE("(%p %c)\n", this, ch);
7322 if(!basic_ostream_wchar_sentry_create(this)
7323 || basic_streambuf_wchar_sputc(base->strbuf, ch)==WEOF) {
7324 basic_ostream_wchar_sentry_destroy(this);
7325 basic_ios_wchar_setstate(base, IOSTATE_badbit);
7326 return this;
7329 basic_ostream_wchar_sentry_destroy(this);
7330 return this;
7333 /* ?seekp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@JH@Z */
7334 /* ?seekp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_JH@Z */
7335 /* ?seekp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@JH@Z */
7336 /* ?seekp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@_JH@Z */
7337 #if STREAMOFF_BITS == 64
7338 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_seekp, 16)
7339 #else
7340 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_seekp, 12)
7341 #endif
7342 basic_ostream_wchar* __thiscall basic_ostream_wchar_seekp(basic_ostream_wchar *this, streamoff off, int way)
7344 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7346 TRACE("(%p %s %d)\n", this, wine_dbgstr_longlong(off), way);
7348 if(!ios_base_fail(&base->base)) {
7349 fpos_mbstatet seek;
7351 basic_streambuf_wchar_pubseekoff(basic_ios_wchar_rdbuf_get(base),
7352 &seek, off, way, OPENMODE_out);
7353 if(seek.off==-1 && seek.pos==0 && MBSTATET_TO_INT(&seek.state)==0)
7354 basic_ios_wchar_setstate(base, IOSTATE_failbit);
7356 return this;
7359 /* ?seekp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
7360 /* ?seekp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
7361 /* ?seekp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
7362 /* ?seekp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
7363 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_seekp_fpos, 28)
7364 basic_ostream_wchar* __thiscall basic_ostream_wchar_seekp_fpos(basic_ostream_wchar *this, fpos_mbstatet pos)
7366 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7368 TRACE("(%p %s)\n", this, debugstr_fpos_mbstatet(&pos));
7370 if(!ios_base_fail(&base->base)) {
7371 fpos_mbstatet seek;
7373 basic_streambuf_wchar_pubseekpos(basic_ios_wchar_rdbuf_get(base),
7374 &seek, pos, OPENMODE_out);
7375 if(seek.off==-1 && seek.pos==0 && MBSTATET_TO_INT(&seek.state)==0)
7376 basic_ios_wchar_setstate(base, IOSTATE_failbit);
7378 return this;
7381 /* ?tellp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@XZ */
7382 /* ?tellp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
7383 /* ?tellp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@XZ */
7384 /* ?tellp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
7385 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_tellp, 8)
7386 fpos_mbstatet* __thiscall basic_ostream_wchar_tellp(basic_ostream_wchar *this, fpos_mbstatet *ret)
7388 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7390 TRACE("(%p)\n", this);
7392 if(!ios_base_fail(&base->base)) {
7393 basic_streambuf_wchar_pubseekoff(basic_ios_wchar_rdbuf_get(base),
7394 ret, 0, SEEKDIR_cur, OPENMODE_out);
7395 }else {
7396 ret->off = -1;
7397 ret->pos = 0;
7398 memset(&ret->state, 0, sizeof(ret->state));
7400 return ret;
7403 /* ?write@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PB_WH@Z */
7404 /* ?write@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEB_W_J@Z */
7405 /* ?write@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@PBGH@Z */
7406 /* ?write@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEBG_J@Z */
7407 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
7408 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_write, 16)
7409 #else
7410 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_write, 12)
7411 #endif
7412 basic_ostream_wchar* __thiscall basic_ostream_wchar_write(basic_ostream_wchar *this, const wchar_t *str, streamsize count)
7414 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7416 TRACE("(%p %s %s)\n", this, debugstr_w(str), wine_dbgstr_longlong(count));
7418 if(!basic_ostream_wchar_sentry_create(this)
7419 || basic_streambuf_wchar_sputn(base->strbuf, str, count)!=count) {
7420 basic_ostream_wchar_sentry_destroy(this);
7421 basic_ios_wchar_setstate(base, IOSTATE_badbit);
7422 return this;
7425 basic_ostream_wchar_sentry_destroy(this);
7426 return this;
7429 static basic_ostream_wchar* basic_ostream_print_short(basic_ostream_wchar *this, short val, const num_put *numput)
7431 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7432 int state = IOSTATE_goodbit;
7434 TRACE("(%p %d)\n", this, val);
7436 if(basic_ostream_wchar_sentry_create(this)) {
7437 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7438 ostreambuf_iterator_wchar dest;
7440 memset(&dest, 0, sizeof(dest));
7441 dest.strbuf = strbuf;
7442 num_put_wchar_put_long(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base),
7443 (ios_base_flags_get(&base->base) & FMTFLAG_basefield & (FMTFLAG_oct | FMTFLAG_hex))
7444 ? (LONG)((unsigned short)val) : (LONG)val);
7446 basic_ostream_wchar_sentry_destroy(this);
7448 basic_ios_wchar_setstate(base, state);
7449 return this;
7452 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@F@Z */
7453 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@F@Z */
7454 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_short, 8)
7455 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_short(basic_ostream_wchar *this, short val)
7457 return basic_ostream_print_short(this, val, num_put_wchar_use_facet(
7458 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7461 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@F@Z */
7462 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@F@Z */
7463 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_short, 8)
7464 basic_ostream_wchar* __thiscall basic_ostream_short_print_short(basic_ostream_wchar *this, short val)
7466 return basic_ostream_print_short(this, val, num_put_short_use_facet(
7467 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7470 static basic_ostream_wchar* basic_ostream_print_ushort(basic_ostream_wchar *this, unsigned short val, const num_put *numput)
7472 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7473 int state = IOSTATE_goodbit;
7475 TRACE("(%p %d)\n", this, val);
7477 if(basic_ostream_wchar_sentry_create(this)) {
7478 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7479 ostreambuf_iterator_wchar dest;
7481 memset(&dest, 0, sizeof(dest));
7482 dest.strbuf = strbuf;
7483 num_put_wchar_put_ulong(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
7485 basic_ostream_wchar_sentry_destroy(this);
7487 basic_ios_wchar_setstate(base, state);
7488 return this;
7491 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@G@Z */
7492 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@G@Z */
7493 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_ushort, 8)
7494 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_ushort(basic_ostream_wchar *this, unsigned short val)
7496 return basic_ostream_print_ushort(this, val, num_put_wchar_use_facet(
7497 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7500 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@G@Z */
7501 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@G@Z */
7502 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_ushort, 8)
7503 basic_ostream_wchar* __thiscall basic_ostream_short_print_ushort(basic_ostream_wchar *this, unsigned short val)
7505 return basic_ostream_print_ushort(this, val, num_put_short_use_facet(
7506 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7509 /* ??6std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@0@AAV10@G@Z */
7510 /* ??6std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@0@AEAV10@G@Z */
7511 basic_ostream_wchar* __cdecl basic_ostream_short_print_ushort_global(basic_ostream_wchar *ostr, unsigned short val)
7513 return basic_ostream_print_ushort(ostr, val, num_put_short_use_facet(
7514 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(ostr)))));
7517 static basic_ostream_wchar* basic_ostream_print_int(basic_ostream_wchar *this, int val, const num_put *numput)
7519 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7520 int state = IOSTATE_goodbit;
7522 TRACE("(%p %d)\n", this, val);
7524 if(basic_ostream_wchar_sentry_create(this)) {
7525 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7526 ostreambuf_iterator_wchar dest;
7528 memset(&dest, 0, sizeof(dest));
7529 dest.strbuf = strbuf;
7530 num_put_wchar_put_long(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
7532 basic_ostream_wchar_sentry_destroy(this);
7534 basic_ios_wchar_setstate(base, state);
7535 return this;
7538 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@H@Z */
7539 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@H@Z */
7540 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@J@Z */
7541 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@J@Z */
7542 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_int, 8)
7543 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_int(basic_ostream_wchar *this, int val)
7545 return basic_ostream_print_int(this, val, num_put_wchar_use_facet(
7546 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7549 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@H@Z */
7550 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@H@Z */
7551 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@J@Z */
7552 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@J@Z */
7553 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_int, 8)
7554 basic_ostream_wchar* __thiscall basic_ostream_short_print_int(basic_ostream_wchar *this, int val)
7556 return basic_ostream_print_int(this, val, num_put_short_use_facet(
7557 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7560 static basic_ostream_wchar* basic_ostream_print_uint(basic_ostream_wchar *this, unsigned int val, const num_put *numput)
7562 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7563 int state = IOSTATE_goodbit;
7565 TRACE("(%p %u)\n", this, val);
7567 if(basic_ostream_wchar_sentry_create(this)) {
7568 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7569 ostreambuf_iterator_wchar dest;
7571 memset(&dest, 0, sizeof(dest));
7572 dest.strbuf = strbuf;
7573 num_put_wchar_put_ulong(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
7575 basic_ostream_wchar_sentry_destroy(this);
7577 basic_ios_wchar_setstate(base, state);
7578 return this;
7581 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@I@Z */
7582 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@I@Z */
7583 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@K@Z */
7584 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@K@Z */
7585 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_uint, 8)
7586 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_uint(basic_ostream_wchar *this, unsigned int val)
7588 return basic_ostream_print_uint(this, val, num_put_wchar_use_facet(
7589 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7592 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@I@Z */
7593 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@I@Z */
7594 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@K@Z */
7595 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@K@Z */
7596 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_uint, 8)
7597 basic_ostream_wchar* __thiscall basic_ostream_short_print_uint(basic_ostream_wchar *this, unsigned int val)
7599 return basic_ostream_print_uint(this, val, num_put_short_use_facet(
7600 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7603 static basic_ostream_wchar* basic_ostream_print_float(basic_ostream_wchar *this, float val, const num_put *numput)
7605 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7606 int state = IOSTATE_goodbit;
7608 TRACE("(%p %f)\n", this, val);
7610 if(basic_ostream_wchar_sentry_create(this)) {
7611 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7612 ostreambuf_iterator_wchar dest;
7614 memset(&dest, 0, sizeof(dest));
7615 dest.strbuf = strbuf;
7616 num_put_wchar_put_double(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
7618 basic_ostream_wchar_sentry_destroy(this);
7620 basic_ios_wchar_setstate(base, state);
7621 return this;
7624 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@M@Z */
7625 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@M@Z */
7626 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_float, 8)
7627 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_float(basic_ostream_wchar *this, float val)
7629 return basic_ostream_print_float(this, val, num_put_wchar_use_facet(
7630 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7633 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@M@Z */
7634 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@M@Z */
7635 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_float, 8)
7636 basic_ostream_wchar* __thiscall basic_ostream_short_print_float(basic_ostream_wchar *this, float val)
7638 return basic_ostream_print_float(this, val, num_put_short_use_facet(
7639 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7642 static basic_ostream_wchar* basic_ostream_print_double(basic_ostream_wchar *this, double val, const num_put *numput)
7644 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7645 int state = IOSTATE_goodbit;
7647 TRACE("(%p %lf)\n", this, val);
7649 if(basic_ostream_wchar_sentry_create(this)) {
7650 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7651 ostreambuf_iterator_wchar dest;
7653 memset(&dest, 0, sizeof(dest));
7654 dest.strbuf = strbuf;
7655 num_put_wchar_put_double(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
7657 basic_ostream_wchar_sentry_destroy(this);
7659 basic_ios_wchar_setstate(base, state);
7660 return this;
7663 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@N@Z */
7664 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@N@Z */
7665 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_double, 12)
7666 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_double(basic_ostream_wchar *this, double val)
7668 return basic_ostream_print_double(this, val, num_put_wchar_use_facet(
7669 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7672 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@N@Z */
7673 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@N@Z */
7674 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_double, 12)
7675 basic_ostream_wchar* __thiscall basic_ostream_short_print_double(basic_ostream_wchar *this, double val)
7677 return basic_ostream_print_double(this, val, num_put_short_use_facet(
7678 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7681 static basic_ostream_wchar* basic_ostream_print_ldouble(basic_ostream_wchar *this, double val, const num_put *numput)
7683 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7684 int state = IOSTATE_goodbit;
7686 TRACE("(%p %lf)\n", this, val);
7688 if(basic_ostream_wchar_sentry_create(this)) {
7689 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7690 ostreambuf_iterator_wchar dest;
7692 memset(&dest, 0, sizeof(dest));
7693 dest.strbuf = strbuf;
7694 num_put_wchar_put_ldouble(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
7696 basic_ostream_wchar_sentry_destroy(this);
7698 basic_ios_wchar_setstate(base, state);
7699 return this;
7702 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@O@Z */
7703 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@O@Z */
7704 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_ldouble, 12)
7705 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_ldouble(basic_ostream_wchar *this, double val)
7707 return basic_ostream_print_ldouble(this, val, num_put_wchar_use_facet(
7708 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7711 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@O@Z */
7712 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@O@Z */
7713 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_ldouble, 12)
7714 basic_ostream_wchar* __thiscall basic_ostream_short_print_ldouble(basic_ostream_wchar *this, double val)
7716 return basic_ostream_print_ldouble(this, val, num_put_short_use_facet(
7717 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7720 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
7721 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
7722 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
7723 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
7724 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_streambuf, 8)
7725 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_streambuf(basic_ostream_wchar *this, basic_streambuf_wchar *val)
7727 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7728 IOSB_iostate state = IOSTATE_badbit;
7729 unsigned short c = '\n';
7731 TRACE("(%p %p)\n", this, val);
7733 if(basic_ostream_wchar_sentry_create(this)) {
7734 for(c = basic_streambuf_wchar_sgetc(val); c!=WEOF;
7735 c = basic_streambuf_wchar_snextc(val)) {
7736 state = IOSTATE_goodbit;
7738 if(basic_streambuf_wchar_sputc(base->strbuf, c) == WEOF) {
7739 state = IOSTATE_badbit;
7740 break;
7743 }else {
7744 state = IOSTATE_badbit;
7746 basic_ostream_wchar_sentry_destroy(this);
7748 ios_base_width_set(&base->base, 0);
7749 basic_ios_wchar_setstate(base, state);
7750 return this;
7753 static basic_ostream_wchar* basic_ostream_print_ptr(basic_ostream_wchar *this, const void *val, const num_put *numput)
7755 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7756 int state = IOSTATE_goodbit;
7758 TRACE("(%p %p)\n", this, val);
7760 if(basic_ostream_wchar_sentry_create(this)) {
7761 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7762 ostreambuf_iterator_wchar dest;
7764 memset(&dest, 0, sizeof(dest));
7765 dest.strbuf = strbuf;
7766 num_put_wchar_put_ptr(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
7768 basic_ostream_wchar_sentry_destroy(this);
7770 basic_ios_wchar_setstate(base, state);
7771 return this;
7774 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@PBX@Z */
7775 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@PEBX@Z */
7776 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_ptr, 8)
7777 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_ptr(basic_ostream_wchar *this, const void *val)
7779 return basic_ostream_print_ptr(this, val, num_put_wchar_use_facet(
7780 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7783 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@PBX@Z */
7784 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@PEBX@Z */
7785 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_ptr, 8)
7786 basic_ostream_wchar* __thiscall basic_ostream_short_print_ptr(basic_ostream_wchar *this, const void *val)
7788 return basic_ostream_print_ptr(this, val, num_put_short_use_facet(
7789 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7792 static basic_ostream_wchar* basic_ostream_print_int64(basic_ostream_wchar *this, __int64 val, const num_put *numput)
7794 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7795 int state = IOSTATE_goodbit;
7797 TRACE("(%p)\n", this);
7799 if(basic_ostream_wchar_sentry_create(this)) {
7800 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7801 ostreambuf_iterator_wchar dest;
7803 memset(&dest, 0, sizeof(dest));
7804 dest.strbuf = strbuf;
7805 num_put_wchar_put_int64(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
7807 basic_ostream_wchar_sentry_destroy(this);
7809 basic_ios_wchar_setstate(base, state);
7810 return this;
7813 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@_J@Z */
7814 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@_J@Z */
7815 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_int64, 12)
7816 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_int64(basic_ostream_wchar *this, __int64 val)
7818 return basic_ostream_print_int64(this, val, num_put_wchar_use_facet(
7819 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7822 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@_J@Z */
7823 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@_J@Z */
7824 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_int64, 12)
7825 basic_ostream_wchar* __thiscall basic_ostream_short_print_int64(basic_ostream_wchar *this, __int64 val)
7827 return basic_ostream_print_int64(this, val, num_put_short_use_facet(
7828 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7831 static basic_ostream_wchar* basic_ostream_print_uint64(basic_ostream_wchar *this, unsigned __int64 val, const num_put *numput)
7833 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7834 int state = IOSTATE_goodbit;
7836 TRACE("(%p)\n", this);
7838 if(basic_ostream_wchar_sentry_create(this)) {
7839 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7840 ostreambuf_iterator_wchar dest;
7842 memset(&dest, 0, sizeof(dest));
7843 dest.strbuf = strbuf;
7844 num_put_wchar_put_uint64(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
7846 basic_ostream_wchar_sentry_destroy(this);
7848 basic_ios_wchar_setstate(base, state);
7849 return this;
7852 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@_K@Z */
7853 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@_K@Z */
7854 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_uint64, 12)
7855 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_uint64(basic_ostream_wchar *this, unsigned __int64 val)
7857 return basic_ostream_print_uint64(this, val, num_put_wchar_use_facet(
7858 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7861 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@_K@Z */
7862 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@_K@Z */
7863 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_uint64, 12)
7864 basic_ostream_wchar* __thiscall basic_ostream_short_print_uint64(basic_ostream_wchar *this, unsigned __int64 val)
7866 return basic_ostream_print_uint64(this, val, num_put_short_use_facet(
7867 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7870 static basic_ostream_wchar* basic_ostream_print_bool(basic_ostream_wchar *this, bool val, const num_put *numput)
7872 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7873 int state = IOSTATE_goodbit;
7875 TRACE("(%p %x)\n", this, val);
7877 if(basic_ostream_wchar_sentry_create(this)) {
7878 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7879 ostreambuf_iterator_wchar dest;
7881 memset(&dest, 0, sizeof(dest));
7882 dest.strbuf = strbuf;
7883 num_put_wchar_put_bool(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
7885 basic_ostream_wchar_sentry_destroy(this);
7887 basic_ios_wchar_setstate(base, state);
7888 return this;
7891 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@_N@Z */
7892 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@_N@Z */
7893 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_bool, 8)
7894 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_bool(basic_ostream_wchar *this, bool val)
7896 return basic_ostream_print_bool(this, val, num_put_wchar_use_facet(
7897 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7900 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@_N@Z */
7901 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@_N@Z */
7902 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_bool, 8)
7903 basic_ostream_wchar* __thiscall basic_ostream_short_print_bool(basic_ostream_wchar *this, bool val)
7905 return basic_ostream_print_bool(this, val, num_put_short_use_facet(
7906 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7909 /* ?ends@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@AAV21@@Z */
7910 /* ?ends@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@AEAV21@@Z */
7911 /* ?ends@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@1@AAV21@@Z */
7912 /* ?ends@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@1@AEAV21@@Z */
7913 basic_ostream_wchar* __cdecl basic_ostream_wchar_ends(basic_ostream_wchar *ostr)
7915 TRACE("(%p)\n", ostr);
7917 basic_ostream_wchar_put(ostr, 0);
7918 return ostr;
7921 /* ?endl@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@AAV21@@Z */
7922 /* ?endl@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@AEAV21@@Z */
7923 /* ?endl@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@1@AAV21@@Z */
7924 /* ?endl@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@1@AEAV21@@Z */
7925 basic_ostream_wchar* __cdecl basic_ostream_wchar_endl(basic_ostream_wchar *ostr)
7927 TRACE("(%p)\n", ostr);
7929 basic_ostream_wchar_put(ostr, '\n');
7930 basic_ostream_wchar_flush(ostr);
7931 return ostr;
7934 /* ??$?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 */
7935 /* ??$?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 */
7936 /* ??$?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 */
7937 /* ??$?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 */
7938 basic_ostream_wchar* __cdecl basic_ostream_wchar_print_bstr(basic_ostream_wchar *ostr, const basic_string_wchar *str)
7940 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(ostr);
7941 IOSB_iostate state = IOSTATE_goodbit;
7943 TRACE("(%p %p)\n", ostr, str);
7945 if(basic_ostream_wchar_sentry_create(ostr)) {
7946 size_t len = MSVCP_basic_string_wchar_length(str);
7947 streamsize pad = (base->base.wide>len ? base->base.wide-len : 0);
7949 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
7950 for(; pad!=0; pad--) {
7951 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
7952 state = IOSTATE_badbit;
7953 break;
7958 if(state == IOSTATE_goodbit) {
7959 if(basic_streambuf_wchar_sputn(base->strbuf, MSVCP_basic_string_wchar_c_str(str), len) != len)
7960 state = IOSTATE_badbit;
7963 if(state == IOSTATE_goodbit) {
7964 for(; pad!=0; pad--) {
7965 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
7966 state = IOSTATE_badbit;
7967 break;
7972 base->base.wide = 0;
7973 }else {
7974 state = IOSTATE_badbit;
7976 basic_ostream_wchar_sentry_destroy(ostr);
7978 basic_ios_wchar_setstate(base, state);
7979 return ostr;
7982 /* ??$?6_WU?$char_traits@_W@std@@@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AAV10@_W@Z */
7983 /* ??$?6_WU?$char_traits@_W@std@@@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AEAV10@_W@Z */
7984 /* ??$?6GU?$char_traits@G@std@@@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@0@AAV10@G@Z */
7985 /* ??$?6GU?$char_traits@G@std@@@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@0@AEAV10@G@Z */
7986 basic_ostream_wchar* __cdecl basic_ostream_wchar_print_ch(basic_ostream_wchar *ostr, wchar_t ch)
7988 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(ostr);
7989 IOSB_iostate state = IOSTATE_goodbit;
7991 TRACE("(%p %d)\n", ostr, ch);
7993 if(basic_ostream_wchar_sentry_create(ostr)) {
7994 streamsize pad = (base->base.wide>1 ? base->base.wide-1 : 0);
7996 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
7997 for(; pad!=0; pad--) {
7998 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
7999 state = IOSTATE_badbit;
8000 break;
8005 if(state == IOSTATE_goodbit) {
8006 if(basic_streambuf_wchar_sputc(base->strbuf, ch) == WEOF)
8007 state = IOSTATE_badbit;
8010 if(state == IOSTATE_goodbit) {
8011 for(; pad!=0; pad--) {
8012 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
8013 state = IOSTATE_badbit;
8014 break;
8019 base->base.wide = 0;
8020 }else {
8021 state = IOSTATE_badbit;
8023 basic_ostream_wchar_sentry_destroy(ostr);
8025 basic_ios_wchar_setstate(base, state);
8026 return ostr;
8029 /* ??$?6_WU?$char_traits@_W@std@@@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AAV10@PB_W@Z */
8030 /* ??$?6_WU?$char_traits@_W@std@@@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AEAV10@PEB_W@Z */
8031 /* ??$?6GU?$char_traits@G@std@@@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@0@AAV10@PBG@Z */
8032 /* ??$?6GU?$char_traits@G@std@@@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@0@AEAV10@PEBG@Z */
8033 basic_ostream_wchar* __cdecl basic_ostream_wchar_print_str(basic_ostream_wchar *ostr, const wchar_t *str)
8035 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(ostr);
8036 IOSB_iostate state = IOSTATE_goodbit;
8038 TRACE("(%p %s)\n", ostr, debugstr_w(str));
8040 if(basic_ostream_wchar_sentry_create(ostr)) {
8041 size_t len = wcslen(str);
8042 streamsize pad = (base->base.wide>len ? base->base.wide-len : 0);
8044 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
8045 for(; pad!=0; pad--) {
8046 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
8047 state = IOSTATE_badbit;
8048 break;
8053 if(state == IOSTATE_goodbit) {
8054 if(basic_streambuf_wchar_sputn(base->strbuf, str, len) != len)
8055 state = IOSTATE_badbit;
8058 if(state == IOSTATE_goodbit) {
8059 for(; pad!=0; pad--) {
8060 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
8061 state = IOSTATE_badbit;
8062 break;
8067 base->base.wide = 0;
8068 }else {
8069 state = IOSTATE_badbit;
8071 basic_ostream_wchar_sentry_destroy(ostr);
8073 basic_ios_wchar_setstate(base, state);
8074 return ostr;
8077 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
8078 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
8079 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
8080 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
8081 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_func, 8)
8082 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_func(basic_ostream_wchar *this,
8083 basic_ostream_wchar* (__cdecl *pfunc)(basic_ostream_wchar*))
8085 TRACE("(%p %p)\n", this, pfunc);
8086 pfunc(this);
8087 return this;
8090 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@_WU?$char_traits@_W@std@@@1@AAV21@@Z@Z */
8091 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@_WU?$char_traits@_W@std@@@1@AEAV21@@Z@Z */
8092 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@GU?$char_traits@G@std@@@1@AAV21@@Z@Z */
8093 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@GU?$char_traits@G@std@@@1@AEAV21@@Z@Z */
8094 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_func_basic_ios, 8)
8095 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_func_basic_ios(basic_ostream_wchar *this,
8096 basic_ios_wchar* (__cdecl *pfunc)(basic_ios_wchar*))
8098 TRACE("(%p %p)\n", this, pfunc);
8099 pfunc(basic_ostream_wchar_get_basic_ios(this));
8100 return this;
8103 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
8104 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
8105 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
8106 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
8107 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_func_ios_base, 8)
8108 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_func_ios_base(
8109 basic_ostream_wchar *this, ios_base* (__cdecl *pfunc)(ios_base*))
8111 TRACE("(%p %p)\n", this, pfunc);
8112 pfunc(&basic_ostream_wchar_get_basic_ios(this)->base);
8113 return this;
8116 /* ?swap@?$basic_ostream@GU?$char_traits@G@std@@@std@@IAEXAAV12@@Z */
8117 /* ?swap@?$basic_ostream@GU?$char_traits@G@std@@@std@@IEAAXAEAV12@@Z */
8118 /* ?swap@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@IAEXAAV12@@Z */
8119 /* ?swap@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@IEAAXAEAV12@@Z */
8120 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_swap, 8)
8121 void __thiscall basic_ostream_wchar_swap(basic_ostream_wchar *this, basic_ostream_wchar *r)
8123 TRACE("(%p %p)\n", this, r);
8125 if(this == r)
8126 return;
8128 basic_ios_wchar_swap(basic_ostream_wchar_get_basic_ios(this),
8129 basic_ostream_wchar_get_basic_ios(r));
8132 /* Caution: basic_istream uses virtual inheritance. */
8133 static inline basic_ios_char* basic_istream_char_get_basic_ios(basic_istream_char *this)
8135 return (basic_ios_char*)((char*)this+this->vbtable[1]);
8138 static inline basic_ios_char* basic_istream_char_to_basic_ios(basic_istream_char *ptr)
8140 return (basic_ios_char*)((char*)ptr+basic_istream_char_vbtable[1]);
8143 static inline basic_istream_char* basic_istream_char_from_basic_ios(basic_ios_char *ptr)
8145 return (basic_istream_char*)((char*)ptr-basic_istream_char_vbtable[1]);
8148 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N1@Z */
8149 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N1@Z */
8150 DEFINE_THISCALL_WRAPPER(basic_istream_char_ctor_init, 20)
8151 basic_istream_char* __thiscall basic_istream_char_ctor_init(basic_istream_char *this,
8152 basic_streambuf_char *strbuf, bool isstd, bool noinit, bool virt_init)
8154 basic_ios_char *base;
8156 TRACE("(%p %p %d %d %d)\n", this, strbuf, isstd, noinit, virt_init);
8158 if(virt_init) {
8159 this->vbtable = basic_istream_char_vbtable;
8160 base = basic_istream_char_get_basic_ios(this);
8161 INIT_BASIC_IOS_VTORDISP(base);
8162 basic_ios_char_ctor(base);
8163 }else {
8164 base = basic_istream_char_get_basic_ios(this);
8167 base->base.vtable = &basic_istream_char_vtable;
8168 this->count = 0;
8169 if(!noinit)
8170 basic_ios_char_init(base, strbuf, isstd);
8171 return this;
8174 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z */
8175 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z */
8176 DEFINE_THISCALL_WRAPPER(basic_istream_char_ctor, 16)
8177 basic_istream_char* __thiscall basic_istream_char_ctor(basic_istream_char *this,
8178 basic_streambuf_char *strbuf, bool isstd, bool virt_init)
8180 return basic_istream_char_ctor_init(this, strbuf, isstd, FALSE, virt_init);
8183 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@W4_Uninitialized@1@@Z */
8184 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
8185 DEFINE_THISCALL_WRAPPER(basic_istream_char_ctor_uninitialized, 12)
8186 basic_istream_char* __thiscall basic_istream_char_ctor_uninitialized(basic_istream_char *this,
8187 int uninitialized, bool virt_init)
8189 basic_ios_char *base;
8191 TRACE("(%p %d %d)\n", this, uninitialized, virt_init);
8193 if(virt_init) {
8194 this->vbtable = basic_istream_char_vbtable;
8195 base = basic_istream_char_get_basic_ios(this);
8196 INIT_BASIC_IOS_VTORDISP(base);
8197 basic_ios_char_ctor(base);
8198 }else {
8199 base = basic_istream_char_get_basic_ios(this);
8202 base->base.vtable = &basic_istream_char_vtable;
8203 ios_base_Addstd(&base->base);
8204 return this;
8207 /* ??1?$basic_istream@DU?$char_traits@D@std@@@std@@UAE@XZ */
8208 /* ??1?$basic_istream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
8209 DEFINE_THISCALL_WRAPPER(basic_istream_char_dtor, 4)
8210 void __thiscall basic_istream_char_dtor(basic_ios_char *base)
8212 basic_istream_char *this = basic_istream_char_from_basic_ios(base);
8214 /* don't destroy virtual base here */
8215 TRACE("(%p)\n", this);
8218 /* ??_D?$basic_istream@DU?$char_traits@D@std@@@std@@QAEXXZ */
8219 /* ??_D?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
8220 DEFINE_THISCALL_WRAPPER(basic_istream_char_vbase_dtor, 4)
8221 void __thiscall basic_istream_char_vbase_dtor(basic_istream_char *this)
8223 basic_ios_char *base = basic_istream_char_to_basic_ios(this);
8225 TRACE("(%p)\n", this);
8227 basic_istream_char_dtor(base);
8228 basic_ios_char_dtor(base);
8231 DEFINE_THISCALL_WRAPPER(basic_istream_char_vector_dtor, 8)
8232 basic_istream_char* __thiscall basic_istream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
8234 basic_istream_char *this = basic_istream_char_from_basic_ios(base);
8236 TRACE("(%p %x)\n", this, flags);
8238 if(flags & 2) {
8239 /* we have an array, with the number of elements stored before the first object */
8240 INT_PTR i, *ptr = (INT_PTR *)this-1;
8242 for(i=*ptr-1; i>=0; i--)
8243 basic_istream_char_vbase_dtor(this+i);
8244 operator_delete(ptr);
8245 } else {
8246 basic_istream_char_vbase_dtor(this);
8247 if(flags & 1)
8248 operator_delete(this);
8251 return this;
8254 /* ?_Ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE_N_N@Z */
8255 /* ?_Ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_N_N@Z */
8256 DEFINE_THISCALL_WRAPPER(basic_istream_char__Ipfx, 8)
8257 bool __thiscall basic_istream_char__Ipfx(basic_istream_char *this, bool noskip)
8259 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8261 TRACE("(%p %d)\n", this, noskip);
8263 if(ios_base_good(&base->base)) {
8264 if(basic_ios_char_tie_get(base))
8265 basic_ostream_char_flush(basic_ios_char_tie_get(base));
8267 if(!noskip && (ios_base_flags_get(&base->base) & FMTFLAG_skipws)) {
8268 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8269 const ctype_char *ctype = ctype_char_use_facet(IOS_LOCALE(base->strbuf));
8270 int ch;
8272 for(ch = basic_streambuf_char_sgetc(strbuf); ;
8273 ch = basic_streambuf_char_snextc(strbuf)) {
8274 if(ch == EOF) {
8275 basic_ios_char_setstate(base, IOSTATE_eofbit);
8276 break;
8279 if(!ctype_char_is_ch(ctype, _SPACE|_BLANK, ch))
8280 break;
8285 if(!ios_base_good(&base->base)) {
8286 basic_ios_char_setstate(base, IOSTATE_failbit);
8287 return FALSE;
8290 return TRUE;
8293 /* ?ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE_N_N@Z */
8294 /* ?ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_N_N@Z */
8295 DEFINE_THISCALL_WRAPPER(basic_istream_char_ipfx, 8)
8296 bool __thiscall basic_istream_char_ipfx(basic_istream_char *this, bool noskip)
8298 return basic_istream_char__Ipfx(this, noskip);
8301 /* ?isfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEXXZ */
8302 /* ?isfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
8303 DEFINE_THISCALL_WRAPPER(basic_istream_char_isfx, 4)
8304 void __thiscall basic_istream_char_isfx(basic_istream_char *this)
8306 TRACE("(%p)\n", this);
8309 static BOOL basic_istream_char_sentry_create(basic_istream_char *istr, bool noskip)
8311 basic_ios_char *base = basic_istream_char_get_basic_ios(istr);
8313 if(basic_ios_char_rdbuf_get(base))
8314 call_basic_streambuf_char__Lock(base->strbuf);
8316 return basic_istream_char_ipfx(istr, noskip);
8319 static void basic_istream_char_sentry_destroy(basic_istream_char *istr)
8321 basic_ios_char *base = basic_istream_char_get_basic_ios(istr);
8323 if(basic_ios_char_rdbuf_get(base))
8324 call_basic_streambuf_char__Unlock(base->strbuf);
8327 /* ?gcount@?$basic_istream@DU?$char_traits@D@std@@@std@@QBEHXZ */
8328 /* ?gcount@?$basic_istream@DU?$char_traits@D@std@@@std@@QEBA_JXZ */
8329 /* ?gcount@?$basic_istream@DU?$char_traits@D@std@@@std@@QBA_JXZ */
8330 /* ?gcount@?$basic_istream@DU?$char_traits@D@std@@@std@@QBE_JXZ */
8331 DEFINE_THISCALL_WRAPPER(basic_istream_char_gcount, 4)
8332 streamsize __thiscall basic_istream_char_gcount(const basic_istream_char *this)
8334 TRACE("(%p)\n", this);
8335 return this->count;
8338 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHXZ */
8339 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAHXZ */
8340 DEFINE_THISCALL_WRAPPER(basic_istream_char_get, 4)
8341 int __thiscall basic_istream_char_get(basic_istream_char *this)
8343 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8344 int ret;
8346 TRACE("(%p)\n", this);
8348 this->count = 0;
8350 if(!basic_istream_char_sentry_create(this, TRUE)) {
8351 basic_istream_char_sentry_destroy(this);
8352 return EOF;
8355 ret = basic_streambuf_char_sbumpc(basic_ios_char_rdbuf_get(base));
8356 basic_istream_char_sentry_destroy(this);
8357 if(ret == EOF)
8358 basic_ios_char_setstate(base, IOSTATE_eofbit|IOSTATE_failbit);
8359 else
8360 this->count++;
8362 return ret;
8365 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@AAD@Z */
8366 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEAD@Z */
8367 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_ch, 8)
8368 basic_istream_char* __thiscall basic_istream_char_get_ch(basic_istream_char *this, char *ch)
8370 int ret;
8372 TRACE("(%p %p)\n", this, ch);
8374 ret = basic_istream_char_get(this);
8375 if(ret != EOF)
8376 *ch = (char)ret;
8377 return this;
8380 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADHD@Z */
8381 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_JD@Z */
8382 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
8383 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_str_delim, 20)
8384 #else
8385 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_str_delim, 16)
8386 #endif
8387 basic_istream_char* __thiscall basic_istream_char_get_str_delim(basic_istream_char *this, char *str, streamsize count, char delim)
8389 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8390 int ch = delim;
8392 TRACE("(%p %p %s %s)\n", this, str, wine_dbgstr_longlong(count), debugstr_an(&delim, 1));
8394 this->count = 0;
8396 if(basic_istream_char_sentry_create(this, TRUE)) {
8397 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8399 for(ch = basic_streambuf_char_sgetc(strbuf); count>1;
8400 ch = basic_streambuf_char_snextc(strbuf)) {
8401 if(ch==EOF || ch==delim)
8402 break;
8404 *str++ = ch;
8405 this->count++;
8406 count--;
8409 basic_istream_char_sentry_destroy(this);
8411 basic_ios_char_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) |
8412 (ch==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
8413 if(count > 0)
8414 *str = 0;
8415 return this;
8418 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADH@Z */
8419 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_J@Z */
8420 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
8421 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_str, 16)
8422 #else
8423 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_str, 12)
8424 #endif
8425 basic_istream_char* __thiscall basic_istream_char_get_str(basic_istream_char *this, char *str, streamsize count)
8427 return basic_istream_char_get_str_delim(this, str, count, '\n');
8430 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@AAV?$basic_streambuf@DU?$char_traits@D@std@@@2@D@Z */
8431 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@D@Z */
8432 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_streambuf_delim, 12)
8433 basic_istream_char* __thiscall basic_istream_char_get_streambuf_delim(basic_istream_char *this, basic_streambuf_char *strbuf, char delim)
8435 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8436 int ch = delim;
8438 TRACE("(%p %p %s)\n", this, strbuf, debugstr_an(&delim, 1));
8440 this->count = 0;
8442 if(basic_istream_char_sentry_create(this, TRUE)) {
8443 basic_streambuf_char *strbuf_read = basic_ios_char_rdbuf_get(base);
8445 for(ch = basic_streambuf_char_sgetc(strbuf_read); ;
8446 ch = basic_streambuf_char_snextc(strbuf_read)) {
8447 if(ch==EOF || ch==delim)
8448 break;
8450 if(basic_streambuf_char_sputc(strbuf, ch) == EOF)
8451 break;
8452 this->count++;
8455 basic_istream_char_sentry_destroy(this);
8457 basic_ios_char_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) |
8458 (ch==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
8459 return this;
8462 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@AAV?$basic_streambuf@DU?$char_traits@D@std@@@2@@Z */
8463 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@@Z */
8464 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_streambuf, 8)
8465 basic_istream_char* __thiscall basic_istream_char_get_streambuf(basic_istream_char *this, basic_streambuf_char *strbuf)
8467 return basic_istream_char_get_streambuf_delim(this, strbuf, '\n');
8470 /* ?getline@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADHD@Z */
8471 /* ?getline@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_JD@Z */
8472 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
8473 DEFINE_THISCALL_WRAPPER(basic_istream_char_getline_delim, 20)
8474 #else
8475 DEFINE_THISCALL_WRAPPER(basic_istream_char_getline_delim, 16)
8476 #endif
8477 basic_istream_char* __thiscall basic_istream_char_getline_delim(basic_istream_char *this, char *str, streamsize count, char delim)
8479 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8480 int ch = (unsigned char)delim;
8482 TRACE("(%p %p %s %s)\n", this, str, wine_dbgstr_longlong(count), debugstr_an(&delim, 1));
8484 this->count = 0;
8486 if(basic_istream_char_sentry_create(this, TRUE) && count>0) {
8487 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8489 while(count > 1) {
8490 ch = basic_streambuf_char_sbumpc(strbuf);
8492 if(ch==EOF || ch==(unsigned char)delim)
8493 break;
8495 *str++ = ch;
8496 this->count++;
8497 count--;
8500 if(ch == (unsigned char)delim)
8501 this->count++;
8502 else if(ch != EOF) {
8503 ch = basic_streambuf_char_sgetc(strbuf);
8505 if(ch == (unsigned char)delim) {
8506 basic_streambuf_char__Gninc(strbuf);
8507 this->count++;
8511 basic_istream_char_sentry_destroy(this);
8513 basic_ios_char_setstate(base, (ch==EOF ? IOSTATE_eofbit : IOSTATE_goodbit) |
8514 (!this->count || (ch!=(unsigned char)delim && ch!=EOF) ? IOSTATE_failbit : IOSTATE_goodbit));
8515 if(count > 0)
8516 *str = 0;
8517 return this;
8520 /* ?getline@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADH@Z */
8521 /* ?getline@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_J@Z */
8522 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
8523 DEFINE_THISCALL_WRAPPER(basic_istream_char_getline, 16)
8524 #else
8525 DEFINE_THISCALL_WRAPPER(basic_istream_char_getline, 12)
8526 #endif
8527 basic_istream_char* __thiscall basic_istream_char_getline(basic_istream_char *this, char *str, streamsize count)
8529 return basic_istream_char_getline_delim(this, str, count, '\n');
8532 /* ?ignore@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@HH@Z */
8533 /* ?ignore@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@_JH@Z */
8534 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
8535 DEFINE_THISCALL_WRAPPER(basic_istream_char_ignore, 16)
8536 #else
8537 DEFINE_THISCALL_WRAPPER(basic_istream_char_ignore, 12)
8538 #endif
8539 basic_istream_char* __thiscall basic_istream_char_ignore(basic_istream_char *this, streamsize count, int delim)
8541 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8542 int ch = (unsigned char)delim;
8543 unsigned int state;
8545 TRACE("(%p %s %d)\n", this, wine_dbgstr_longlong(count), delim);
8547 this->count = 0;
8549 if(basic_istream_char_sentry_create(this, TRUE)) {
8550 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8551 state = IOSTATE_goodbit;
8553 while(count > 0) {
8554 ch = basic_streambuf_char_sbumpc(strbuf);
8556 if(ch==EOF) {
8557 state = IOSTATE_eofbit;
8558 break;
8561 if(ch==delim)
8562 break;
8564 this->count++;
8565 if(count != INT_MAX)
8566 count--;
8568 }else
8569 state = IOSTATE_failbit;
8570 basic_istream_char_sentry_destroy(this);
8572 basic_ios_char_setstate(base, state);
8573 return this;
8576 /* ?ws@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@1@AAV21@@Z */
8577 /* ?ws@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@1@AEAV21@@Z */
8578 basic_istream_char* __cdecl ws_basic_istream_char(basic_istream_char *istream)
8580 basic_ios_char *base = basic_istream_char_get_basic_ios(istream);
8581 int ch = '\n';
8583 TRACE("(%p)\n", istream);
8585 if(basic_istream_char_sentry_create(istream, TRUE)) {
8586 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8587 const ctype_char *ctype = ctype_char_use_facet(IOS_LOCALE(strbuf));
8589 for(ch = basic_streambuf_char_sgetc(strbuf); ctype_char_is_ch(ctype, _SPACE, ch);
8590 ch = basic_streambuf_char_snextc(strbuf)) {
8591 if(ch == EOF)
8592 break;
8595 basic_istream_char_sentry_destroy(istream);
8597 if(ch == EOF)
8598 basic_ios_char_setstate(base, IOSTATE_eofbit);
8599 return istream;
8602 /* ?peek@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHXZ */
8603 /* ?peek@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAHXZ */
8604 DEFINE_THISCALL_WRAPPER(basic_istream_char_peek, 4)
8605 int __thiscall basic_istream_char_peek(basic_istream_char *this)
8607 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8608 int ret = EOF;
8610 TRACE("(%p)\n", this);
8612 this->count = 0;
8614 if(basic_istream_char_sentry_create(this, TRUE))
8615 ret = basic_streambuf_char_sgetc(basic_ios_char_rdbuf_get(base));
8616 basic_istream_char_sentry_destroy(this);
8618 if (ret == EOF)
8619 basic_ios_char_setstate(base, IOSTATE_eofbit);
8621 return ret;
8624 /* ?_Read_s@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADIH@Z */
8625 /* ?_Read_s@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_K_J@Z */
8626 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
8627 DEFINE_THISCALL_WRAPPER(basic_istream_char__Read_s, 20)
8628 #else
8629 DEFINE_THISCALL_WRAPPER(basic_istream_char__Read_s, 16)
8630 #endif
8631 basic_istream_char* __thiscall basic_istream_char__Read_s(basic_istream_char *this, char *str, size_t size, streamsize count)
8633 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8634 IOSB_iostate state = IOSTATE_goodbit;
8636 TRACE("(%p %p %Iu %s)\n", this, str, size, wine_dbgstr_longlong(count));
8638 if(basic_istream_char_sentry_create(this, TRUE)) {
8639 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8641 this->count = basic_streambuf_char__Sgetn_s(strbuf, str, size, count);
8642 if(this->count != count)
8643 state |= IOSTATE_failbit | IOSTATE_eofbit;
8644 }else {
8645 this->count = 0;
8647 basic_istream_char_sentry_destroy(this);
8649 basic_ios_char_setstate(base, state);
8650 return this;
8653 /* ?read@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADH@Z */
8654 /* ?read@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_J@Z */
8655 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
8656 DEFINE_THISCALL_WRAPPER(basic_istream_char_read, 16)
8657 #else
8658 DEFINE_THISCALL_WRAPPER(basic_istream_char_read, 12)
8659 #endif
8660 basic_istream_char* __thiscall basic_istream_char_read(basic_istream_char *this, char *str, streamsize count)
8662 return basic_istream_char__Read_s(this, str, -1, count);
8665 /* ?_Readsome_s@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHPADIH@Z */
8666 /* ?_Readsome_s@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_K_J@Z */
8667 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
8668 DEFINE_THISCALL_WRAPPER(basic_istream_char__Readsome_s, 20)
8669 #else
8670 DEFINE_THISCALL_WRAPPER(basic_istream_char__Readsome_s, 16)
8671 #endif
8672 streamsize __thiscall basic_istream_char__Readsome_s(basic_istream_char *this, char *str, size_t size, streamsize count)
8674 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8675 IOSB_iostate state = IOSTATE_goodbit;
8677 TRACE("(%p %p %Iu %s)\n", this, str, size, wine_dbgstr_longlong(count));
8679 this->count = 0;
8681 if(basic_istream_char_sentry_create(this, TRUE)) {
8682 streamsize avail = basic_streambuf_char_in_avail(basic_ios_char_rdbuf_get(base));
8683 if(avail > count)
8684 avail = count;
8686 if(avail == -1)
8687 state |= IOSTATE_eofbit;
8688 else if(avail > 0)
8689 basic_istream_char__Read_s(this, str, size, avail);
8690 }else {
8691 state |= IOSTATE_failbit;
8693 basic_istream_char_sentry_destroy(this);
8695 basic_ios_char_setstate(base, state);
8696 return this->count;
8699 /* ?readsome@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHPADH@Z */
8700 /* ?readsome@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_J@Z */
8701 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
8702 DEFINE_THISCALL_WRAPPER(basic_istream_char_readsome, 16)
8703 #else
8704 DEFINE_THISCALL_WRAPPER(basic_istream_char_readsome, 12)
8705 #endif
8706 streamsize __thiscall basic_istream_char_readsome(basic_istream_char *this, char *str, streamsize count)
8708 return basic_istream_char__Readsome_s(this, str, count, count);
8711 /* ?putback@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@D@Z */
8712 /* ?putback@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@D@Z */
8713 DEFINE_THISCALL_WRAPPER(basic_istream_char_putback, 8)
8714 basic_istream_char* __thiscall basic_istream_char_putback(basic_istream_char *this, char ch)
8716 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8717 IOSB_iostate state = IOSTATE_goodbit;
8719 TRACE("(%p %c)\n", this, ch);
8721 this->count = 0;
8723 if(basic_istream_char_sentry_create(this, TRUE)) {
8724 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8726 if(!ios_base_good(&base->base))
8727 state |= IOSTATE_failbit;
8728 else if(!strbuf || basic_streambuf_char_sputbackc(strbuf, ch)==EOF)
8729 state |= IOSTATE_badbit;
8731 basic_istream_char_sentry_destroy(this);
8733 basic_ios_char_setstate(base, state);
8734 return this;
8737 /* ?unget@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@XZ */
8738 /* ?unget@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@XZ */
8739 DEFINE_THISCALL_WRAPPER(basic_istream_char_unget, 4)
8740 basic_istream_char* __thiscall basic_istream_char_unget(basic_istream_char *this)
8742 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8743 IOSB_iostate state = IOSTATE_goodbit;
8745 TRACE("(%p)\n", this);
8747 this->count = 0;
8749 if(basic_istream_char_sentry_create(this, TRUE)) {
8750 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8752 if(!ios_base_good(&base->base))
8753 state |= IOSTATE_failbit;
8754 else if(!strbuf || basic_streambuf_char_sungetc(strbuf)==EOF)
8755 state |= IOSTATE_badbit;
8757 basic_istream_char_sentry_destroy(this);
8759 basic_ios_char_setstate(base, state);
8760 return this;
8763 /* ?sync@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHXZ */
8764 /* ?sync@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAHXZ */
8765 DEFINE_THISCALL_WRAPPER(basic_istream_char_sync, 4)
8766 int __thiscall basic_istream_char_sync(basic_istream_char *this)
8768 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8769 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8771 TRACE("(%p)\n", this);
8773 if(!strbuf)
8774 return -1;
8776 if(basic_istream_char_sentry_create(this, TRUE)) {
8777 if(basic_streambuf_char_pubsync(strbuf) != -1) {
8778 basic_istream_char_sentry_destroy(this);
8779 return 0;
8782 basic_istream_char_sentry_destroy(this);
8784 basic_ios_char_setstate(base, IOSTATE_badbit);
8785 return -1;
8788 /* ?tellg@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@XZ */
8789 /* ?tellg@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
8790 DEFINE_THISCALL_WRAPPER(basic_istream_char_tellg, 8)
8791 fpos_mbstatet* __thiscall basic_istream_char_tellg(basic_istream_char *this, fpos_mbstatet *ret)
8793 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8795 TRACE("(%p %p)\n", this, ret);
8797 #if _MSVCP_VER >= 110
8798 if(basic_istream_char_sentry_create(this, TRUE)) {
8799 basic_streambuf_char_pubseekoff(basic_ios_char_rdbuf_get(base),
8800 ret, 0, SEEKDIR_cur, OPENMODE_in);
8801 }else {
8802 ret->off = -1;
8803 ret->pos = 0;
8804 memset(&ret->state, 0, sizeof(ret->state));
8806 basic_istream_char_sentry_destroy(this);
8807 #else
8808 if(ios_base_fail(&base->base)) {
8809 ret->off = -1;
8810 ret->pos = 0;
8811 memset(&ret->state, 0, sizeof(ret->state));
8812 return ret;
8815 basic_streambuf_char_pubseekoff(basic_ios_char_rdbuf_get(base),
8816 ret, 0, SEEKDIR_cur, OPENMODE_in);
8817 #endif
8819 return ret;
8822 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@JW4seekdir@ios_base@2@@Z */
8823 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@_JW4seekdir@ios_base@2@@Z */
8824 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@JH@Z */
8825 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@_JH@Z */
8826 #if STREAMOFF_BITS == 64
8827 DEFINE_THISCALL_WRAPPER(basic_istream_char_seekg, 16)
8828 #else
8829 DEFINE_THISCALL_WRAPPER(basic_istream_char_seekg, 12)
8830 #endif
8831 basic_istream_char* __thiscall basic_istream_char_seekg(basic_istream_char *this, streamoff off, int dir)
8833 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8834 #if _MSVCP_VER >= 110
8835 IOSB_iostate state;
8837 TRACE("(%p %s %d)\n", this, wine_dbgstr_longlong(off), dir);
8839 state = ios_base_rdstate(&base->base);
8840 ios_base_clear(&base->base, state & ~IOSTATE_eofbit);
8842 if(basic_istream_char_sentry_create(this, TRUE)) {
8843 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8844 fpos_mbstatet ret;
8846 basic_streambuf_char_pubseekoff(strbuf, &ret, off, dir, OPENMODE_in);
8848 if(ret.off==-1 && ret.pos==0 && MBSTATET_TO_INT(&ret.state)==0)
8849 basic_ios_char_setstate(base, IOSTATE_failbit);
8851 basic_istream_char_sentry_destroy(this);
8852 #else
8853 TRACE("(%p %s %d)\n", this, wine_dbgstr_longlong(off), dir);
8855 if(!ios_base_fail(&base->base)) {
8856 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8857 fpos_mbstatet ret;
8859 basic_streambuf_char_pubseekoff(strbuf, &ret, off, dir, OPENMODE_in);
8861 if(ret.off==-1 && ret.pos==0 && MBSTATET_TO_INT(&ret.state)==0)
8862 basic_ios_char_setstate(base, IOSTATE_failbit);
8863 else
8864 basic_ios_char_clear(base, IOSTATE_goodbit);
8865 return this;
8866 }else
8867 basic_ios_char_clear(base, IOSTATE_goodbit);
8868 #endif
8869 return this;
8872 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
8873 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
8874 DEFINE_THISCALL_WRAPPER(basic_istream_char_seekg_fpos, 28)
8875 basic_istream_char* __thiscall basic_istream_char_seekg_fpos(basic_istream_char *this, fpos_mbstatet pos)
8877 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8878 #if _MSVCP_VER >= 110
8879 IOSB_iostate state;
8881 TRACE("(%p %s)\n", this, debugstr_fpos_mbstatet(&pos));
8883 state = ios_base_rdstate(&base->base);
8884 ios_base_clear(&base->base, state & ~IOSTATE_eofbit);
8886 if(basic_istream_char_sentry_create(this, TRUE)) {
8887 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8888 fpos_mbstatet ret;
8890 basic_streambuf_char_pubseekpos(strbuf, &ret, pos, OPENMODE_in);
8892 if(ret.off==-1 && ret.pos==0 && MBSTATET_TO_INT(&ret.state)==0)
8893 basic_ios_char_setstate(base, IOSTATE_failbit);
8895 basic_istream_char_sentry_destroy(this);
8896 #else
8897 TRACE("(%p %s)\n", this, debugstr_fpos_mbstatet(&pos));
8899 if(!ios_base_fail(&base->base)) {
8900 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8901 fpos_mbstatet ret;
8903 basic_streambuf_char_pubseekpos(strbuf, &ret, pos, OPENMODE_in);
8905 if(ret.off==-1 && ret.pos==0 && MBSTATET_TO_INT(&ret.state)==0)
8906 basic_ios_char_setstate(base, IOSTATE_failbit);
8907 else
8908 basic_ios_char_clear(base, IOSTATE_goodbit);
8909 return this;
8910 }else
8911 basic_ios_char_clear(base, IOSTATE_goodbit);
8912 #endif
8913 return this;
8916 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAF@Z */
8917 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAF@Z */
8918 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_short, 8)
8919 basic_istream_char* __thiscall basic_istream_char_read_short(basic_istream_char *this, short *v)
8921 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8922 int state = IOSTATE_goodbit;
8924 TRACE("(%p %p)\n", this, v);
8926 if(basic_istream_char_sentry_create(this, FALSE)) {
8927 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8928 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
8929 istreambuf_iterator_char first={0}, last={0};
8930 LONG tmp;
8932 first.strbuf = strbuf;
8933 num_get_char_get_long(numget, &last, first, last, &base->base, &state, &tmp);
8935 if(!(state&IOSTATE_failbit) && tmp==(LONG)((short)tmp))
8936 *v = tmp;
8937 else
8938 state |= IOSTATE_failbit;
8940 basic_istream_char_sentry_destroy(this);
8942 basic_ios_char_setstate(base, state);
8943 return this;
8946 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAG@Z */
8947 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAG@Z */
8948 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_ushort, 8)
8949 basic_istream_char* __thiscall basic_istream_char_read_ushort(basic_istream_char *this, unsigned short *v)
8951 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8952 int state = IOSTATE_goodbit;
8954 TRACE("(%p %p)\n", this, v);
8956 if(basic_istream_char_sentry_create(this, FALSE)) {
8957 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8958 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
8959 istreambuf_iterator_char first={0}, last={0};
8961 first.strbuf = strbuf;
8962 num_get_char_get_ushort(numget, &last, first, last, &base->base, &state, v);
8964 basic_istream_char_sentry_destroy(this);
8966 basic_ios_char_setstate(base, state);
8967 return this;
8970 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAH@Z */
8971 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAH@Z */
8972 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_int, 8)
8973 basic_istream_char* __thiscall basic_istream_char_read_int(basic_istream_char *this, int *v)
8975 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8976 int state = IOSTATE_goodbit;
8978 TRACE("(%p %p)\n", this, v);
8980 if(basic_istream_char_sentry_create(this, FALSE)) {
8981 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8982 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
8983 istreambuf_iterator_char first={0}, last={0};
8985 first.strbuf = strbuf;
8986 num_get_char_get_long(numget, &last, first, last, &base->base, &state, (LONG*)v);
8988 basic_istream_char_sentry_destroy(this);
8990 basic_ios_char_setstate(base, state);
8991 return this;
8994 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAI@Z */
8995 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAI@Z */
8996 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_uint, 8)
8997 basic_istream_char* __thiscall basic_istream_char_read_uint(basic_istream_char *this, unsigned int *v)
8999 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9000 int state = IOSTATE_goodbit;
9002 TRACE("(%p %p)\n", this, v);
9004 if(basic_istream_char_sentry_create(this, FALSE)) {
9005 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
9006 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
9007 istreambuf_iterator_char first={0}, last={0};
9009 first.strbuf = strbuf;
9010 num_get_char_get_uint(numget, &last, first, last, &base->base, &state, v);
9012 basic_istream_char_sentry_destroy(this);
9014 basic_ios_char_setstate(base, state);
9015 return this;
9018 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAJ@Z */
9019 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAJ@Z */
9020 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_long, 8)
9021 basic_istream_char* __thiscall basic_istream_char_read_long(basic_istream_char *this, LONG *v)
9023 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9024 int state = IOSTATE_goodbit;
9026 TRACE("(%p %p)\n", this, v);
9028 if(basic_istream_char_sentry_create(this, FALSE)) {
9029 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
9030 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
9031 istreambuf_iterator_char first={0}, last={0};
9033 first.strbuf = strbuf;
9034 num_get_char_get_long(numget, &last, first, last, &base->base, &state, v);
9036 basic_istream_char_sentry_destroy(this);
9038 basic_ios_char_setstate(base, state);
9039 return this;
9042 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAK@Z */
9043 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAK@Z */
9044 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_ulong, 8)
9045 basic_istream_char* __thiscall basic_istream_char_read_ulong(basic_istream_char *this, ULONG *v)
9047 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9048 int state = IOSTATE_goodbit;
9050 TRACE("(%p %p)\n", this, v);
9052 if(basic_istream_char_sentry_create(this, FALSE)) {
9053 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
9054 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
9055 istreambuf_iterator_char first={0}, last={0};
9057 first.strbuf = strbuf;
9058 num_get_char_get_ulong(numget, &last, first, last, &base->base, &state, v);
9060 basic_istream_char_sentry_destroy(this);
9062 basic_ios_char_setstate(base, state);
9063 return this;
9066 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAM@Z */
9067 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAM@Z */
9068 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_float, 8)
9069 basic_istream_char* __thiscall basic_istream_char_read_float(basic_istream_char *this, float *v)
9071 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9072 int state = IOSTATE_goodbit;
9074 TRACE("(%p %p)\n", this, v);
9076 if(basic_istream_char_sentry_create(this, FALSE)) {
9077 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
9078 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
9079 istreambuf_iterator_char first={0}, last={0};
9081 first.strbuf = strbuf;
9082 num_get_char_get_float(numget, &last, first, last, &base->base, &state, v);
9084 basic_istream_char_sentry_destroy(this);
9086 basic_ios_char_setstate(base, state);
9087 return this;
9090 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAN@Z */
9091 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAN@Z */
9092 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_double, 8)
9093 basic_istream_char* __thiscall basic_istream_char_read_double(basic_istream_char *this, double *v)
9095 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9096 int state = IOSTATE_goodbit;
9098 TRACE("(%p %p)\n", this, v);
9100 if(basic_istream_char_sentry_create(this, FALSE)) {
9101 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
9102 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
9103 istreambuf_iterator_char first={0}, last={0};
9105 first.strbuf = strbuf;
9106 num_get_char_get_double(numget, &last, first, last, &base->base, &state, v);
9108 basic_istream_char_sentry_destroy(this);
9110 basic_ios_char_setstate(base, state);
9111 return this;
9114 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAO@Z */
9115 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAO@Z */
9116 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_ldouble, 8)
9117 basic_istream_char* __thiscall basic_istream_char_read_ldouble(basic_istream_char *this, double *v)
9119 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9120 int state = IOSTATE_goodbit;
9122 TRACE("(%p %p)\n", this, v);
9124 if(basic_istream_char_sentry_create(this, FALSE)) {
9125 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
9126 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
9127 istreambuf_iterator_char first={0}, last={0};
9129 first.strbuf = strbuf;
9130 num_get_char_get_ldouble(numget, &last, first, last, &base->base, &state, v);
9132 basic_istream_char_sentry_destroy(this);
9134 basic_ios_char_setstate(base, state);
9135 return this;
9138 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAPAX@Z */
9139 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAPEAX@Z */
9140 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_ptr, 8)
9141 basic_istream_char* __thiscall basic_istream_char_read_ptr(basic_istream_char *this, void **v)
9143 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9144 int state = IOSTATE_goodbit;
9146 TRACE("(%p %p)\n", this, v);
9148 if(basic_istream_char_sentry_create(this, FALSE)) {
9149 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
9150 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
9151 istreambuf_iterator_char first={0}, last={0};
9153 first.strbuf = strbuf;
9154 num_get_char_get_void(numget, &last, first, last, &base->base, &state, v);
9156 basic_istream_char_sentry_destroy(this);
9158 basic_ios_char_setstate(base, state);
9159 return this;
9162 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AA_J@Z */
9163 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEA_J@Z */
9164 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_int64, 8)
9165 basic_istream_char* __thiscall basic_istream_char_read_int64(basic_istream_char *this, __int64 *v)
9167 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9168 int state = IOSTATE_goodbit;
9170 TRACE("(%p %p)\n", this, v);
9172 if(basic_istream_char_sentry_create(this, FALSE)) {
9173 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
9174 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
9175 istreambuf_iterator_char first={0}, last={0};
9177 first.strbuf = strbuf;
9178 num_get_char_get_int64(numget, &last, first, last, &base->base, &state, v);
9180 basic_istream_char_sentry_destroy(this);
9182 basic_ios_char_setstate(base, state);
9183 return this;
9186 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AA_K@Z */
9187 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEA_K@Z */
9188 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_uint64, 8)
9189 basic_istream_char* __thiscall basic_istream_char_read_uint64(basic_istream_char *this, unsigned __int64 *v)
9191 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9192 int state = IOSTATE_goodbit;
9194 TRACE("(%p %p)\n", this, v);
9196 if(basic_istream_char_sentry_create(this, FALSE)) {
9197 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
9198 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
9199 istreambuf_iterator_char first={0}, last={0};
9201 first.strbuf = strbuf;
9202 num_get_char_get_uint64(numget, &last, first, last, &base->base, &state, v);
9204 basic_istream_char_sentry_destroy(this);
9206 basic_ios_char_setstate(base, state);
9207 return this;
9210 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AA_N@Z */
9211 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEA_N@Z */
9212 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_bool, 8)
9213 basic_istream_char* __thiscall basic_istream_char_read_bool(basic_istream_char *this, bool *v)
9215 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9216 int state = IOSTATE_goodbit;
9218 TRACE("(%p %p)\n", this, v);
9220 if(basic_istream_char_sentry_create(this, FALSE)) {
9221 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
9222 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
9223 istreambuf_iterator_char first={0}, last={0};
9225 first.strbuf = strbuf;
9226 num_get_char_get_bool(numget, &last, first, last, &base->base, &state, v);
9228 basic_istream_char_sentry_destroy(this);
9230 basic_ios_char_setstate(base, state);
9231 return this;
9234 /* ??$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 */
9235 /* ??$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 */
9236 basic_istream_char* __cdecl basic_istream_char_getline_bstr_delim(
9237 basic_istream_char *istream, basic_string_char *str, char delim)
9239 basic_ios_char *base = basic_istream_char_get_basic_ios(istream);
9240 IOSB_iostate state = IOSTATE_goodbit;
9241 int c = (unsigned char)delim;
9243 TRACE("(%p %p %s)\n", istream, str, debugstr_an(&delim, 1));
9245 if(basic_istream_char_sentry_create(istream, TRUE)) {
9246 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
9247 MSVCP_basic_string_char_clear(str);
9249 c = basic_streambuf_char_sgetc(strbuf);
9250 for(; c!=(unsigned char)delim && c!=EOF; c = basic_streambuf_char_snextc(strbuf))
9251 MSVCP_basic_string_char_append_ch(str, c);
9252 if(c==EOF) state |= IOSTATE_eofbit;
9253 else if(c==(unsigned char)delim) basic_streambuf_char_sbumpc(strbuf);
9255 if(!MSVCP_basic_string_char_length(str) && c!=(unsigned char)delim) state |= IOSTATE_failbit;
9257 basic_istream_char_sentry_destroy(istream);
9259 basic_ios_char_setstate(basic_istream_char_get_basic_ios(istream), state);
9260 return istream;
9263 /* ??$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 */
9264 /* ??$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 */
9265 basic_istream_char* __cdecl basic_istream_char_getline_bstr(
9266 basic_istream_char *istream, basic_string_char *str)
9268 return basic_istream_char_getline_bstr_delim(istream, str, '\n');
9271 /* ??$?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 */
9272 /* ??$?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 */
9273 basic_istream_char* __cdecl basic_istream_char_read_bstr(
9274 basic_istream_char *istream, basic_string_char *str)
9276 basic_ios_char *base = basic_istream_char_get_basic_ios(istream);
9277 IOSB_iostate state = IOSTATE_failbit;
9278 int c = '\n';
9280 TRACE("(%p %p)\n", istream, str);
9282 if(basic_istream_char_sentry_create(istream, FALSE)) {
9283 const ctype_char *ctype = ctype_char_use_facet(IOS_LOCALE(base->strbuf));
9284 size_t count = ios_base_width_get(&base->base);
9286 if(!count)
9287 count = -1;
9289 MSVCP_basic_string_char_clear(str);
9291 for(c = basic_streambuf_char_sgetc(basic_ios_char_rdbuf_get(base));
9292 c!=EOF && !ctype_char_is_ch(ctype, _SPACE|_BLANK, c) && count>0;
9293 c = basic_streambuf_char_snextc(basic_ios_char_rdbuf_get(base)), count--) {
9294 state = IOSTATE_goodbit;
9295 MSVCP_basic_string_char_append_ch(str, c);
9298 basic_istream_char_sentry_destroy(istream);
9300 ios_base_width_set(&base->base, 0);
9301 basic_ios_char_setstate(base, state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
9302 return istream;
9305 /* ??$?5DU?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@PAD@Z */
9306 /* ??$?5DU?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@PEAD@Z */
9307 /* ??$?5U?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@PAC@Z */
9308 /* ??$?5U?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@PEAC@Z */
9309 /* ??$?5U?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@PAE@Z */
9310 /* ??$?5U?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@PEAE@Z */
9311 basic_istream_char* __cdecl basic_istream_char_read_str(basic_istream_char *istream, char *str)
9313 basic_ios_char *base = basic_istream_char_get_basic_ios(istream);
9314 IOSB_iostate state = IOSTATE_failbit;
9315 int c = '\n';
9317 TRACE("(%p %p)\n", istream, str);
9319 if(basic_istream_char_sentry_create(istream, FALSE)) {
9320 const ctype_char *ctype = ctype_char_use_facet(IOS_LOCALE(base->strbuf));
9321 size_t count = ios_base_width_get(&base->base)-1;
9323 for(c = basic_streambuf_char_sgetc(basic_ios_char_rdbuf_get(base));
9324 c!=EOF && !ctype_char_is_ch(ctype, _SPACE|_BLANK, c) && count>0;
9325 c = basic_streambuf_char_snextc(basic_ios_char_rdbuf_get(base)), count--) {
9326 state = IOSTATE_goodbit;
9327 *str++ = c;
9330 basic_istream_char_sentry_destroy(istream);
9332 *str = 0;
9333 ios_base_width_set(&base->base, 0);
9334 basic_ios_char_setstate(base, state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
9335 return istream;
9338 /* ??$?5DU?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAD@Z */
9339 /* ??$?5DU?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAD@Z */
9340 /* ??$?5U?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAC@Z */
9341 /* ??$?5U?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAC@Z */
9342 /* ??$?5U?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAE@Z */
9343 /* ??$?5U?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAE@Z */
9344 basic_istream_char* __cdecl basic_istream_char_read_ch(basic_istream_char *istream, char *ch)
9346 IOSB_iostate state = IOSTATE_failbit;
9347 int c = 0;
9349 TRACE("(%p %p)\n", istream, ch);
9351 if(basic_istream_char_sentry_create(istream, FALSE)) {
9352 c = basic_streambuf_char_sbumpc(basic_ios_char_rdbuf_get(
9353 basic_istream_char_get_basic_ios(istream)));
9354 if(c != EOF) {
9355 state = IOSTATE_goodbit;
9356 *ch = c;
9359 basic_istream_char_sentry_destroy(istream);
9361 basic_ios_char_setstate(basic_istream_char_get_basic_ios(istream),
9362 state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
9363 return istream;
9366 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
9367 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
9368 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_streambuf, 8)
9369 basic_istream_char* __thiscall basic_istream_char_read_streambuf(
9370 basic_istream_char *this, basic_streambuf_char *streambuf)
9372 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9373 IOSB_iostate state = IOSTATE_failbit;
9374 int c = '\n';
9376 TRACE("(%p %p)\n", this, streambuf);
9378 if(basic_istream_char_sentry_create(this, FALSE)) {
9379 for(c = basic_streambuf_char_sgetc(basic_ios_char_rdbuf_get(base)); c!=EOF;
9380 c = basic_streambuf_char_snextc(basic_ios_char_rdbuf_get(base))) {
9381 state = IOSTATE_goodbit;
9382 if(basic_streambuf_char_sputc(streambuf, c) == EOF)
9383 break;
9386 basic_istream_char_sentry_destroy(this);
9388 basic_ios_char_setstate(base, state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
9389 return this;
9392 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
9393 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
9394 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_func, 8)
9395 basic_istream_char* __thiscall basic_istream_char_read_func(basic_istream_char *this,
9396 basic_istream_char* (__cdecl *pfunc)(basic_istream_char*))
9398 TRACE("(%p %p)\n", this, pfunc);
9399 pfunc(this);
9400 return this;
9403 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@DU?$char_traits@D@std@@@1@AAV21@@Z@Z */
9404 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@DU?$char_traits@D@std@@@1@AEAV21@@Z@Z */
9405 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_func_basic_ios, 8)
9406 basic_istream_char* __thiscall basic_istream_char_read_func_basic_ios(basic_istream_char *this,
9407 basic_ios_char* (__cdecl *pfunc)(basic_ios_char*))
9409 TRACE("(%p %p)\n", this, pfunc);
9410 pfunc(basic_istream_char_get_basic_ios(this));
9411 return this;
9414 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
9415 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
9416 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_func_ios_base, 8)
9417 basic_istream_char* __thiscall basic_istream_char_read_func_ios_base(basic_istream_char *this,
9418 ios_base* (__cdecl *pfunc)(ios_base*))
9420 TRACE("(%p %p)\n", this, pfunc);
9421 pfunc(&basic_istream_char_get_basic_ios(this)->base);
9422 return this;
9425 /* ??$?5MDU?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAV?$complex@M@0@@Z */
9426 /* ??$?5MDU?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAV?$complex@M@0@@Z */
9427 basic_istream_char* __cdecl basic_istream_char_read_complex_float(basic_istream_char *this, complex_float *v)
9429 float r;
9430 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9432 TRACE("(%p %p)\n", this, v);
9434 ws_basic_istream_char(this);
9435 if(basic_istream_char_peek(this) == '(') {
9436 char c;
9437 basic_istream_char_get(this);
9438 basic_istream_char_read_float(this, &r);
9440 if(ios_base_fail(&base->base))
9441 return this;
9443 ws_basic_istream_char(this);
9444 c = basic_istream_char_peek(this);
9445 if(c == ',') {
9446 float i;
9447 basic_istream_char_get(this);
9448 basic_istream_char_read_float(this, &i);
9450 if(ios_base_fail(&base->base))
9451 return this;
9453 ws_basic_istream_char(this);
9454 c = basic_istream_char_peek(this);
9455 if(c == ')') { /* supported format: (real, imag) */
9456 basic_istream_char_get(this);
9457 v->real = r;
9458 v->imag = i;
9459 }else {
9460 basic_ios_char_setstate(base, IOSTATE_failbit);
9461 return this;
9463 }else if(c == ')') { /* supported format: (real) */
9464 basic_istream_char_get(this);
9465 v->real = r;
9466 v->imag = 0;
9467 }else {
9468 basic_ios_char_setstate(base, IOSTATE_failbit);
9469 return this;
9471 }else { /* supported format: real */
9472 basic_istream_char_read_float(this, &r);
9474 if(ios_base_fail(&base->base))
9475 return this;
9477 v->real = r;
9478 v->imag = 0;
9481 return this;
9484 /* ??$?5NDU?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAV?$complex@N@0@@Z */
9485 /* ??$?5DU?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAV?$complex@N@0@@Z */
9486 basic_istream_char* __cdecl basic_istream_char_read_complex_double(basic_istream_char *this, complex_double *v)
9488 double r;
9489 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9491 TRACE("(%p %p)\n", this, v);
9493 ws_basic_istream_char(this);
9494 if(basic_istream_char_peek(this) == '(') {
9495 char c;
9496 basic_istream_char_get(this);
9497 basic_istream_char_read_double(this, &r);
9499 if(ios_base_fail(&base->base))
9500 return this;
9502 ws_basic_istream_char(this);
9503 c = basic_istream_char_peek(this);
9504 if(c == ',') {
9505 double i;
9506 basic_istream_char_get(this);
9507 basic_istream_char_read_double(this, &i);
9509 if(ios_base_fail(&base->base))
9510 return this;
9512 ws_basic_istream_char(this);
9513 c = basic_istream_char_peek(this);
9514 if(c == ')') { /* supported format: (real, imag) */
9515 basic_istream_char_get(this);
9516 v->real = r;
9517 v->imag = i;
9518 }else {
9519 basic_ios_char_setstate(base, IOSTATE_failbit);
9520 return this;
9522 }else if(c == ')') { /* supported format: (real) */
9523 basic_istream_char_get(this);
9524 v->real = r;
9525 v->imag = 0;
9526 }else {
9527 basic_ios_char_setstate(base, IOSTATE_failbit);
9528 return this;
9530 }else { /* supported format: real */
9531 basic_istream_char_read_double(this, &r);
9533 if(ios_base_fail(&base->base))
9534 return this;
9536 v->real = r;
9537 v->imag = 0;
9540 return this;
9543 /* ??$?5ODU?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAV?$complex@O@0@@Z */
9544 /* ??$?5ODU?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAV?$complex@O@0@@Z */
9545 basic_istream_char* __cdecl basic_istream_char_read_complex_ldouble(basic_istream_char *this, complex_double *v)
9547 double r;
9548 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9550 TRACE("(%p %p)\n", this, v);
9552 ws_basic_istream_char(this);
9553 if(basic_istream_char_peek(this) == '(') {
9554 char c;
9555 basic_istream_char_get(this);
9556 basic_istream_char_read_ldouble(this, &r);
9558 if(ios_base_fail(&base->base))
9559 return this;
9561 ws_basic_istream_char(this);
9562 c = basic_istream_char_peek(this);
9563 if(c == ',') {
9564 double i;
9565 basic_istream_char_get(this);
9566 basic_istream_char_read_ldouble(this, &i);
9568 if(ios_base_fail(&base->base))
9569 return this;
9571 ws_basic_istream_char(this);
9572 c = basic_istream_char_peek(this);
9573 if(c == ')') { /* supported format: (real, imag) */
9574 basic_istream_char_get(this);
9575 v->real = r;
9576 v->imag = i;
9577 }else {
9578 basic_ios_char_setstate(base, IOSTATE_failbit);
9579 return this;
9581 }else if(c == ')') { /* supported format: (real) */
9582 basic_istream_char_get(this);
9583 v->real = r;
9584 v->imag = 0;
9585 }else {
9586 basic_ios_char_setstate(base, IOSTATE_failbit);
9587 return this;
9589 }else { /* supported format: real */
9590 basic_istream_char_read_ldouble(this, &r);
9592 if(ios_base_fail(&base->base))
9593 return this;
9595 v->real = r;
9596 v->imag = 0;
9599 return this;
9602 /* ?swap@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEXAAV12@@Z */
9603 /* ?swap@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAXAEAV12@@Z */
9604 DEFINE_THISCALL_WRAPPER(basic_istream_char_swap, 8)
9605 void __thiscall basic_istream_char_swap(basic_istream_char *this, basic_istream_char *r)
9607 TRACE("(%p %p)\n", this, r);
9609 if(this == r)
9610 return;
9612 basic_ios_char_swap(basic_istream_char_get_basic_ios(this),
9613 basic_istream_char_get_basic_ios(r));
9614 this->count ^= r->count;
9615 r->count ^= this->count;
9616 this->count ^= r->count;
9619 /* Caution: basic_istream uses virtual inheritance. */
9620 static inline basic_ios_wchar* basic_istream_wchar_get_basic_ios(basic_istream_wchar *this)
9622 return (basic_ios_wchar*)((char*)this+this->vbtable[1]);
9625 static inline basic_ios_wchar* basic_istream_wchar_to_basic_ios(basic_istream_wchar *ptr)
9627 return (basic_ios_wchar*)((char*)ptr+basic_istream_wchar_vbtable[1]);
9630 static inline basic_istream_wchar* basic_istream_wchar_from_basic_ios(basic_ios_wchar *ptr)
9632 return (basic_istream_wchar*)((char*)ptr-basic_istream_wchar_vbtable[1]);
9635 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N1@Z */
9636 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N1@Z */
9637 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ctor_init, 20)
9638 basic_istream_wchar* __thiscall basic_istream_wchar_ctor_init(basic_istream_wchar *this,
9639 basic_streambuf_wchar *strbuf, bool isstd, bool noinit, bool virt_init)
9641 basic_ios_wchar *base;
9643 TRACE("(%p %p %d %d %d)\n", this, strbuf, isstd, noinit, virt_init);
9645 if(virt_init) {
9646 this->vbtable = basic_istream_wchar_vbtable;
9647 base = basic_istream_wchar_get_basic_ios(this);
9648 INIT_BASIC_IOS_VTORDISP(base);
9649 basic_ios_wchar_ctor(base);
9650 }else {
9651 base = basic_istream_wchar_get_basic_ios(this);
9654 base->base.vtable = &basic_istream_wchar_vtable;
9655 this->count = 0;
9656 if(!noinit)
9657 basic_ios_wchar_init(base, strbuf, isstd);
9658 return this;
9661 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N1@Z */
9662 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N1@Z */
9663 DEFINE_THISCALL_WRAPPER(basic_istream_short_ctor_init, 20)
9664 basic_istream_wchar* __thiscall basic_istream_short_ctor_init(basic_istream_wchar *this,
9665 basic_streambuf_wchar *strbuf, bool isstd, bool noinit, bool virt_init)
9667 basic_istream_wchar_ctor_init(this, strbuf, isstd, noinit, virt_init);
9668 basic_istream_wchar_get_basic_ios(this)->base.vtable = &basic_istream_short_vtable;
9669 return this;
9672 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z */
9673 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z */
9674 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ctor, 16)
9675 basic_istream_wchar* __thiscall basic_istream_wchar_ctor(basic_istream_wchar *this,
9676 basic_streambuf_wchar *strbuf, bool isstd, bool virt_init)
9678 return basic_istream_wchar_ctor_init(this, strbuf, isstd, FALSE, virt_init);
9681 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N@Z */
9682 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N@Z */
9683 DEFINE_THISCALL_WRAPPER(basic_istream_short_ctor, 16)
9684 basic_istream_wchar* __thiscall basic_istream_short_ctor(basic_istream_wchar *this,
9685 basic_streambuf_wchar *strbuf, bool isstd, bool virt_init)
9687 return basic_istream_short_ctor_init(this, strbuf, isstd, FALSE, virt_init);
9690 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE@W4_Uninitialized@1@@Z */
9691 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
9692 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ctor_uninitialized, 12)
9693 basic_istream_wchar* __thiscall basic_istream_wchar_ctor_uninitialized(
9694 basic_istream_wchar *this, int uninitialized, bool virt_init)
9696 basic_ios_wchar *base;
9698 TRACE("(%p %d %d)\n", this, uninitialized, virt_init);
9700 if(virt_init) {
9701 this->vbtable = basic_istream_wchar_vbtable;
9702 base = basic_istream_wchar_get_basic_ios(this);
9703 INIT_BASIC_IOS_VTORDISP(base);
9704 basic_ios_wchar_ctor(base);
9705 }else {
9706 base = basic_istream_wchar_get_basic_ios(this);
9709 base->base.vtable = &basic_istream_wchar_vtable;
9710 ios_base_Addstd(&base->base);
9711 return this;
9714 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QAE@W4_Uninitialized@1@@Z */
9715 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
9716 DEFINE_THISCALL_WRAPPER(basic_istream_short_ctor_uninitialized, 12)
9717 basic_istream_wchar* __thiscall basic_istream_short_ctor_uninitialized(
9718 basic_istream_wchar *this, int uninitialized, bool virt_init)
9720 basic_istream_wchar_ctor_uninitialized(this, uninitialized, virt_init);
9721 basic_istream_wchar_get_basic_ios(this)->base.vtable = &basic_istream_short_vtable;
9722 return this;
9725 /* ??1?$basic_istream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
9726 /* ??1?$basic_istream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
9727 /* ??1?$basic_istream@GU?$char_traits@G@std@@@std@@UAE@XZ */
9728 /* ??1?$basic_istream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
9729 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_dtor, 4)
9730 void __thiscall basic_istream_wchar_dtor(basic_ios_wchar *base)
9732 basic_istream_wchar *this = basic_istream_wchar_from_basic_ios(base);
9734 /* don't destroy virtual base here */
9735 TRACE("(%p)\n", this);
9738 /* ??_D?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
9739 /* ??_D?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
9740 /* ??_D?$basic_istream@GU?$char_traits@G@std@@@std@@QAEXXZ */
9741 /* ??_D?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
9742 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_vbase_dtor, 4)
9743 void __thiscall basic_istream_wchar_vbase_dtor(basic_istream_wchar *this)
9745 basic_ios_wchar *base = basic_istream_wchar_to_basic_ios(this);
9747 TRACE("(%p)\n", this);
9749 basic_istream_wchar_dtor(base);
9750 basic_ios_wchar_dtor(base);
9753 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_vector_dtor, 8)
9754 basic_istream_wchar* __thiscall basic_istream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
9756 basic_istream_wchar *this = basic_istream_wchar_from_basic_ios(base);
9758 TRACE("(%p %x)\n", this, flags);
9760 if(flags & 2) {
9761 /* we have an array, with the number of elements stored before the first object */
9762 INT_PTR i, *ptr = (INT_PTR *)this-1;
9764 for(i=*ptr-1; i>=0; i--)
9765 basic_istream_wchar_vbase_dtor(this+i);
9766 operator_delete(ptr);
9767 } else {
9768 basic_istream_wchar_vbase_dtor(this);
9769 if(flags & 1)
9770 operator_delete(this);
9773 return this;
9776 /* ?_Ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE_N_N@Z */
9777 /* ?_Ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_N_N@Z */
9778 /* ?_Ipfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QAE_N_N@Z */
9779 /* ?_Ipfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA_N_N@Z */
9780 DEFINE_THISCALL_WRAPPER(basic_istream_wchar__Ipfx, 8)
9781 bool __thiscall basic_istream_wchar__Ipfx(basic_istream_wchar *this, bool noskip)
9783 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9785 TRACE("(%p %d)\n", this, noskip);
9787 if(ios_base_good(&base->base)) {
9788 if(basic_ios_wchar_tie_get(base))
9789 basic_ostream_wchar_flush(basic_ios_wchar_tie_get(base));
9791 if(!noskip && (ios_base_flags_get(&base->base) & FMTFLAG_skipws)) {
9792 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9793 const ctype_wchar *ctype = ctype_wchar_use_facet(IOS_LOCALE(base->strbuf));
9794 int ch;
9796 for(ch = basic_streambuf_wchar_sgetc(strbuf); ;
9797 ch = basic_streambuf_wchar_snextc(strbuf)) {
9798 if(ch == WEOF) {
9799 basic_ios_wchar_setstate(base, IOSTATE_eofbit);
9800 break;
9803 if(!ctype_wchar_is_ch(ctype, _SPACE|_BLANK, ch))
9804 break;
9809 if(!ios_base_good(&base->base)) {
9810 basic_ios_wchar_setstate(base, IOSTATE_failbit);
9811 return FALSE;
9813 return TRUE;
9816 /* ?ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE_N_N@Z */
9817 /* ?ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_N_N@Z */
9818 /* ?ipfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QAE_N_N@Z */
9819 /* ?ipfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA_N_N@Z */
9820 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ipfx, 8)
9821 bool __thiscall basic_istream_wchar_ipfx(basic_istream_wchar *this, bool noskip)
9823 return basic_istream_wchar__Ipfx(this, noskip);
9826 /* ?isfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
9827 /* ?isfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
9828 /* ?isfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEXXZ */
9829 /* ?isfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
9830 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_isfx, 4)
9831 void __thiscall basic_istream_wchar_isfx(basic_istream_wchar *this)
9833 TRACE("(%p)\n", this);
9836 static BOOL basic_istream_wchar_sentry_create(basic_istream_wchar *istr, bool noskip)
9838 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istr);
9840 if(basic_ios_wchar_rdbuf_get(base))
9841 basic_streambuf_wchar__Lock(base->strbuf);
9843 return basic_istream_wchar_ipfx(istr, noskip);
9846 static void basic_istream_wchar_sentry_destroy(basic_istream_wchar *istr)
9848 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istr);
9850 if(basic_ios_wchar_rdbuf_get(base))
9851 basic_streambuf_wchar__Unlock(base->strbuf);
9854 /* ?gcount@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QBEHXZ */
9855 /* ?gcount@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEBA_JXZ */
9856 /* ?gcount@?$basic_istream@GU?$char_traits@G@std@@@std@@QBEHXZ */
9857 /* ?gcount@?$basic_istream@GU?$char_traits@G@std@@@std@@QEBA_JXZ */
9858 /* ?gcount@?$basic_istream@GU?$char_traits@G@std@@@std@@QBA_JXZ */
9859 /* ?gcount@?$basic_istream@GU?$char_traits@G@std@@@std@@QBE_JXZ */
9860 /* ?gcount@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QBA_JXZ */
9861 /* ?gcount@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QBE_JXZ */
9862 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_gcount, 4)
9863 streamsize __thiscall basic_istream_wchar_gcount(const basic_istream_wchar *this)
9865 TRACE("(%p)\n", this);
9866 return this->count;
9869 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
9870 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
9871 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEGXZ */
9872 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAGXZ */
9873 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get, 4)
9874 unsigned short __thiscall basic_istream_wchar_get(basic_istream_wchar *this)
9876 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9877 int ret;
9879 TRACE("(%p)\n", this);
9881 this->count = 0;
9883 if(!basic_istream_wchar_sentry_create(this, TRUE)) {
9884 basic_istream_wchar_sentry_destroy(this);
9885 return WEOF;
9888 ret = basic_streambuf_wchar_sbumpc(basic_ios_wchar_rdbuf_get(base));
9889 basic_istream_wchar_sentry_destroy(this);
9890 if(ret == WEOF)
9891 basic_ios_wchar_setstate(base, IOSTATE_eofbit|IOSTATE_failbit);
9892 else
9893 this->count++;
9895 return ret;
9898 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@AA_W@Z */
9899 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEA_W@Z */
9900 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@AAG@Z */
9901 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@AEAG@Z */
9902 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_ch, 8)
9903 basic_istream_wchar* __thiscall basic_istream_wchar_get_ch(basic_istream_wchar *this, wchar_t *ch)
9905 unsigned short ret;
9907 TRACE("(%p %p)\n", this, ch);
9909 ret = basic_istream_wchar_get(this);
9910 if(ret != WEOF)
9911 *ch = (wchar_t)ret;
9912 return this;
9915 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH_W@Z */
9916 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J_W@Z */
9917 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGHG@Z */
9918 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_JG@Z */
9919 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
9920 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_str_delim, 20)
9921 #else
9922 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_str_delim, 16)
9923 #endif
9924 basic_istream_wchar* __thiscall basic_istream_wchar_get_str_delim(basic_istream_wchar *this, wchar_t *str, streamsize count, wchar_t delim)
9926 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9927 unsigned short ch = delim;
9929 TRACE("(%p %p %s %s)\n", this, str, wine_dbgstr_longlong(count), debugstr_wn(&delim, 1));
9931 this->count = 0;
9933 if(basic_istream_wchar_sentry_create(this, TRUE)) {
9934 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9936 for(ch = basic_streambuf_wchar_sgetc(strbuf); count>1;
9937 ch = basic_streambuf_wchar_snextc(strbuf)) {
9938 if(ch==WEOF || ch==delim)
9939 break;
9941 *str++ = ch;
9942 this->count++;
9943 count--;
9946 basic_istream_wchar_sentry_destroy(this);
9948 basic_ios_wchar_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) |
9949 (ch==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
9950 if(count > 0)
9951 *str = 0;
9952 return this;
9955 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH@Z */
9956 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J@Z */
9957 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGH@Z */
9958 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_J@Z */
9959 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
9960 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_str, 16)
9961 #else
9962 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_str, 12)
9963 #endif
9964 basic_istream_wchar* __thiscall basic_istream_wchar_get_str(basic_istream_wchar *this, wchar_t *str, streamsize count)
9966 return basic_istream_wchar_get_str_delim(this, str, count, '\n');
9969 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@AAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_W@Z */
9970 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_W@Z */
9971 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@AAV?$basic_streambuf@GU?$char_traits@G@std@@@2@G@Z */
9972 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@G@Z */
9973 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_streambuf_delim, 12)
9974 basic_istream_wchar* __thiscall basic_istream_wchar_get_streambuf_delim(basic_istream_wchar *this, basic_streambuf_wchar *strbuf, wchar_t delim)
9976 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9977 unsigned short ch = delim;
9979 TRACE("(%p %p %s)\n", this, strbuf, debugstr_wn(&delim, 1));
9981 this->count = 0;
9983 if(basic_istream_wchar_sentry_create(this, TRUE)) {
9984 basic_streambuf_wchar *strbuf_read = basic_ios_wchar_rdbuf_get(base);
9986 for(ch = basic_streambuf_wchar_sgetc(strbuf_read); ;
9987 ch = basic_streambuf_wchar_snextc(strbuf_read)) {
9988 if(ch==WEOF || ch==delim)
9989 break;
9991 if(basic_streambuf_wchar_sputc(strbuf, ch) == WEOF)
9992 break;
9993 this->count++;
9996 basic_istream_wchar_sentry_destroy(this);
9998 basic_ios_wchar_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) |
9999 (ch==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
10000 return this;
10003 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@AAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@@Z */
10004 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@@Z */
10005 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@AAV?$basic_streambuf@GU?$char_traits@G@std@@@2@@Z */
10006 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@@Z */
10007 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_streambuf, 8)
10008 basic_istream_wchar* __thiscall basic_istream_wchar_get_streambuf(basic_istream_wchar *this, basic_streambuf_wchar *strbuf)
10010 return basic_istream_wchar_get_streambuf_delim(this, strbuf, '\n');
10013 /* ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH_W@Z */
10014 /* ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J_W@Z */
10015 /* ?getline@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGHG@Z */
10016 /* ?getline@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_JG@Z */
10017 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
10018 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_getline_delim, 20)
10019 #else
10020 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_getline_delim, 16)
10021 #endif
10022 basic_istream_wchar* __thiscall basic_istream_wchar_getline_delim(basic_istream_wchar *this, wchar_t *str, streamsize count, wchar_t delim)
10024 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10025 unsigned short ch = delim;
10027 TRACE("(%p %p %s %s)\n", this, str, wine_dbgstr_longlong(count), debugstr_wn(&delim, 1));
10029 this->count = 0;
10031 if(basic_istream_wchar_sentry_create(this, TRUE) && count>0) {
10032 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10034 while(count > 1) {
10035 ch = basic_streambuf_wchar_sbumpc(strbuf);
10037 if(ch==WEOF || ch==delim)
10038 break;
10040 *str++ = ch;
10041 this->count++;
10042 count--;
10045 if(ch == delim)
10046 this->count++;
10047 else if(ch != WEOF) {
10048 ch = basic_streambuf_wchar_sgetc(strbuf);
10050 if(ch == delim) {
10051 basic_streambuf_wchar__Gninc(strbuf);
10052 this->count++;
10056 basic_istream_wchar_sentry_destroy(this);
10058 basic_ios_wchar_setstate(base, (ch==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit) |
10059 (!this->count || (ch!=delim && ch!=WEOF) ? IOSTATE_failbit : IOSTATE_goodbit));
10060 if(count > 0)
10061 *str = 0;
10062 return this;
10065 /* ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH@Z */
10066 /* ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J@Z */
10067 /* ?getline@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGH@Z */
10068 /* ?getline@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_J@Z */
10069 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
10070 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_getline, 16)
10071 #else
10072 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_getline, 12)
10073 #endif
10074 basic_istream_wchar* __thiscall basic_istream_wchar_getline(basic_istream_wchar *this, wchar_t *str, streamsize count)
10076 return basic_istream_wchar_getline_delim(this, str, count, '\n');
10079 /* ?ignore@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@HG@Z */
10080 /* ?ignore@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_JG@Z */
10081 /* ?ignore@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@HG@Z */
10082 /* ?ignore@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@_JG@Z */
10083 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
10084 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ignore, 16)
10085 #else
10086 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ignore, 12)
10087 #endif
10088 basic_istream_wchar* __thiscall basic_istream_wchar_ignore(basic_istream_wchar *this, streamsize count, unsigned short delim)
10090 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10091 unsigned short ch = delim;
10092 unsigned int state;
10094 TRACE("(%p %s %d)\n", this, wine_dbgstr_longlong(count), delim);
10096 this->count = 0;
10098 if(basic_istream_wchar_sentry_create(this, TRUE)) {
10099 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10100 state = IOSTATE_goodbit;
10102 while(count > 0) {
10103 ch = basic_streambuf_wchar_sbumpc(strbuf);
10105 if(ch==WEOF) {
10106 state = IOSTATE_eofbit;
10107 break;
10110 if(ch==delim)
10111 break;
10113 this->count++;
10114 if(count != INT_MAX)
10115 count--;
10117 }else
10118 state = IOSTATE_failbit;
10119 basic_istream_wchar_sentry_destroy(this);
10121 basic_ios_wchar_setstate(base, state);
10122 return this;
10125 /* ?ws@std@@YAAAV?$basic_istream@_WU?$char_traits@_W@std@@@1@AAV21@@Z */
10126 /* ?ws@std@@YAAEAV?$basic_istream@_WU?$char_traits@_W@std@@@1@AEAV21@@Z */
10127 /* ?ws@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@1@AAV21@@Z */
10128 /* ?ws@std@@YAAEAV?$basic_istream@GU?$char_traits@G@std@@@1@AEAV21@@Z */
10129 basic_istream_wchar* __cdecl ws_basic_istream_wchar(basic_istream_wchar *istream)
10131 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istream);
10132 unsigned short ch = '\n';
10134 TRACE("(%p)\n", istream);
10136 if(basic_istream_wchar_sentry_create(istream, TRUE)) {
10137 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10138 const ctype_wchar *ctype = ctype_wchar_use_facet(IOS_LOCALE(strbuf));
10140 for(ch = basic_streambuf_wchar_sgetc(strbuf); ctype_wchar_is_ch(ctype, _SPACE, ch);
10141 ch = basic_streambuf_wchar_snextc(strbuf)) {
10142 if(ch == WEOF)
10143 break;
10146 basic_istream_wchar_sentry_destroy(istream);
10148 if(ch == WEOF)
10149 basic_ios_wchar_setstate(base, IOSTATE_eofbit);
10150 return istream;
10153 /* ?peek@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
10154 /* ?peek@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
10155 /* ?peek@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEGXZ */
10156 /* ?peek@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAGXZ */
10157 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_peek, 4)
10158 unsigned short __thiscall basic_istream_wchar_peek(basic_istream_wchar *this)
10160 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10161 unsigned short ret = WEOF;
10163 TRACE("(%p)\n", this);
10165 this->count = 0;
10167 if(basic_istream_wchar_sentry_create(this, TRUE))
10168 ret = basic_streambuf_wchar_sgetc(basic_ios_wchar_rdbuf_get(base));
10169 basic_istream_wchar_sentry_destroy(this);
10171 if (ret == WEOF)
10172 basic_ios_wchar_setstate(base, IOSTATE_eofbit);
10174 return ret;
10177 /* ?_Read_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WIH@Z */
10178 /* ?_Read_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_K_J@Z */
10179 /* ?_Read_s@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGIH@Z */
10180 /* ?_Read_s@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_K_J@Z */
10181 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
10182 DEFINE_THISCALL_WRAPPER(basic_istream_wchar__Read_s, 20)
10183 #else
10184 DEFINE_THISCALL_WRAPPER(basic_istream_wchar__Read_s, 16)
10185 #endif
10186 basic_istream_wchar* __thiscall basic_istream_wchar__Read_s(basic_istream_wchar *this, wchar_t *str, size_t size, streamsize count)
10188 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10189 IOSB_iostate state = IOSTATE_goodbit;
10191 TRACE("(%p %p %Iu %s)\n", this, str, size, wine_dbgstr_longlong(count));
10193 if(basic_istream_wchar_sentry_create(this, TRUE)) {
10194 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10196 this->count = basic_streambuf_wchar__Sgetn_s(strbuf, str, size, count);
10197 if(this->count != count)
10198 state |= IOSTATE_failbit | IOSTATE_eofbit;
10199 }else {
10200 this->count = 0;
10202 basic_istream_wchar_sentry_destroy(this);
10204 basic_ios_wchar_setstate(base, state);
10205 return this;
10208 /* ?read@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH@Z */
10209 /* ?read@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J@Z */
10210 /* ?read@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGH@Z */
10211 /* ?read@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_J@Z */
10212 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
10213 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read, 16)
10214 #else
10215 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read, 12)
10216 #endif
10217 basic_istream_wchar* __thiscall basic_istream_wchar_read(basic_istream_wchar *this, wchar_t *str, streamsize count)
10219 return basic_istream_wchar__Read_s(this, str, -1, count);
10222 /* ?_Readsome_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEHPA_WIH@Z */
10223 /* ?_Readsome_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_JPEA_W_K_J@Z */
10224 /* ?_Readsome_s@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEHPAGIH@Z */
10225 /* ?_Readsome_s@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA_JPEAG_K_J@Z */
10226 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
10227 DEFINE_THISCALL_WRAPPER(basic_istream_wchar__Readsome_s, 20)
10228 #else
10229 DEFINE_THISCALL_WRAPPER(basic_istream_wchar__Readsome_s, 16)
10230 #endif
10231 streamsize __thiscall basic_istream_wchar__Readsome_s(basic_istream_wchar *this, wchar_t *str, size_t size, streamsize count)
10233 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10234 IOSB_iostate state = IOSTATE_goodbit;
10236 TRACE("(%p %p %Iu %s)\n", this, str, size, wine_dbgstr_longlong(count));
10238 this->count = 0;
10240 if(basic_istream_wchar_sentry_create(this, TRUE)) {
10241 streamsize avail = basic_streambuf_wchar_in_avail(basic_ios_wchar_rdbuf_get(base));
10242 if(avail > count)
10243 avail = count;
10245 if(avail == -1)
10246 state |= IOSTATE_eofbit;
10247 else if(avail > 0)
10248 basic_istream_wchar__Read_s(this, str, size, avail);
10249 }else {
10250 state |= IOSTATE_failbit;
10252 basic_istream_wchar_sentry_destroy(this);
10254 basic_ios_wchar_setstate(base, state);
10255 return this->count;
10258 /* ?readsome@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEHPA_WH@Z */
10259 /* ?readsome@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_JPEA_W_J@Z */
10260 /* ?readsome@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEHPAGH@Z */
10261 /* ?readsome@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA_JPEAG_J@Z */
10262 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
10263 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_readsome, 16)
10264 #else
10265 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_readsome, 12)
10266 #endif
10267 streamsize __thiscall basic_istream_wchar_readsome(basic_istream_wchar *this, wchar_t *str, streamsize count)
10269 return basic_istream_wchar__Readsome_s(this, str, count, count);
10272 /* ?putback@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@_W@Z */
10273 /* ?putback@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_W@Z */
10274 /* ?putback@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@G@Z */
10275 /* ?putback@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@G@Z */
10276 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_putback, 8)
10277 basic_istream_wchar* __thiscall basic_istream_wchar_putback(basic_istream_wchar *this, wchar_t ch)
10279 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10280 IOSB_iostate state = IOSTATE_goodbit;
10282 TRACE("(%p %c)\n", this, ch);
10284 this->count = 0;
10286 if(basic_istream_wchar_sentry_create(this, TRUE)) {
10287 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10289 if(!ios_base_good(&base->base))
10290 state |= IOSTATE_failbit;
10291 else if(!strbuf || basic_streambuf_wchar_sputbackc(strbuf, ch)==WEOF)
10292 state |= IOSTATE_badbit;
10294 basic_istream_wchar_sentry_destroy(this);
10296 basic_ios_wchar_setstate(base, state);
10297 return this;
10300 /* ?unget@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@XZ */
10301 /* ?unget@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@XZ */
10302 /* ?unget@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@XZ */
10303 /* ?unget@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@XZ */
10304 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_unget, 4)
10305 basic_istream_wchar* __thiscall basic_istream_wchar_unget(basic_istream_wchar *this)
10307 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10308 IOSB_iostate state = IOSTATE_goodbit;
10310 TRACE("(%p)\n", this);
10312 this->count = 0;
10314 if(basic_istream_wchar_sentry_create(this, TRUE)) {
10315 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10317 if(!ios_base_good(&base->base))
10318 state |= IOSTATE_failbit;
10319 else if(!strbuf || basic_streambuf_wchar_sungetc(strbuf)==WEOF)
10320 state |= IOSTATE_badbit;
10322 basic_istream_wchar_sentry_destroy(this);
10324 basic_ios_wchar_setstate(base, state);
10325 return this;
10328 /* ?sync@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEHXZ */
10329 /* ?sync@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAHXZ */
10330 /* ?sync@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEHXZ */
10331 /* ?sync@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAHXZ */
10332 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_sync, 4)
10333 int __thiscall basic_istream_wchar_sync(basic_istream_wchar *this)
10335 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10336 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10338 TRACE("(%p)\n", this);
10340 if(!strbuf)
10341 return -1;
10343 if(basic_istream_wchar_sentry_create(this, TRUE)) {
10344 if(basic_streambuf_wchar_pubsync(strbuf) != -1) {
10345 basic_istream_wchar_sentry_destroy(this);
10346 return 0;
10349 basic_istream_wchar_sentry_destroy(this);
10351 basic_ios_wchar_setstate(base, IOSTATE_badbit);
10352 return -1;
10355 /* ?tellg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@XZ */
10356 /* ?tellg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
10357 /* ?tellg@?$basic_istream@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@XZ */
10358 /* ?tellg@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
10359 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_tellg, 8)
10360 fpos_mbstatet* __thiscall basic_istream_wchar_tellg(basic_istream_wchar *this, fpos_mbstatet *ret)
10362 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10364 TRACE("(%p %p)\n", this, ret);
10366 #if _MSVCP_VER >= 110
10367 if(basic_istream_wchar_sentry_create(this, TRUE)) {
10368 basic_streambuf_wchar_pubseekoff(basic_ios_wchar_rdbuf_get(base),
10369 ret, 0, SEEKDIR_cur, OPENMODE_in);
10370 }else {
10371 ret->off = -1;
10372 ret->pos = 0;
10373 memset(&ret->state, 0, sizeof(ret->state));
10375 basic_istream_wchar_sentry_destroy(this);
10376 #else
10377 if(ios_base_fail(&base->base)) {
10378 ret->off = -1;
10379 ret->pos = 0;
10380 memset(&ret->state, 0, sizeof(ret->state));
10381 return ret;
10384 basic_streambuf_wchar_pubseekoff(basic_ios_wchar_rdbuf_get(base),
10385 ret, 0, SEEKDIR_cur, OPENMODE_in);
10386 #endif
10387 return ret;
10390 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@JW4seekdir@ios_base@2@@Z */
10391 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@_JW4seekdir@ios_base@2@@Z */
10392 /* ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@JH@Z */
10393 /* ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_JH@Z */
10394 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@JH@Z */
10395 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@_JH@Z */
10396 #if STREAMOFF_BITS == 64
10397 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_seekg, 16)
10398 #else
10399 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_seekg, 12)
10400 #endif
10401 basic_istream_wchar* __thiscall basic_istream_wchar_seekg(basic_istream_wchar *this, streamoff off, int dir)
10403 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10404 #if _MSVCP_VER >= 110
10405 IOSB_iostate state;
10407 TRACE("(%p %s %d)\n", this, wine_dbgstr_longlong(off), dir);
10409 state = ios_base_rdstate(&base->base);
10410 ios_base_clear(&base->base, state & ~IOSTATE_eofbit);
10412 if(basic_istream_wchar_sentry_create(this, TRUE)) {
10413 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10414 fpos_mbstatet ret;
10416 basic_streambuf_wchar_pubseekoff(strbuf, &ret, off, dir, OPENMODE_in);
10418 if(ret.off==-1 && ret.pos==0 && MBSTATET_TO_INT(&ret.state)==0)
10419 basic_ios_wchar_setstate(base, IOSTATE_failbit);
10421 basic_istream_wchar_sentry_destroy(this);
10422 #else
10423 TRACE("(%p %s %d)\n", this, wine_dbgstr_longlong(off), dir);
10425 if(!ios_base_fail(&base->base)) {
10426 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10427 fpos_mbstatet ret;
10429 basic_streambuf_wchar_pubseekoff(strbuf, &ret, off, dir, OPENMODE_in);
10431 if(ret.off==-1 && ret.pos==0 && MBSTATET_TO_INT(&ret.state)==0)
10432 basic_ios_wchar_setstate(base, IOSTATE_failbit);
10433 else
10434 basic_ios_wchar_clear(base, IOSTATE_goodbit);
10435 return this;
10436 }else
10437 basic_ios_wchar_clear(base, IOSTATE_goodbit);
10438 #endif
10439 return this;
10442 /* ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
10443 /* ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
10444 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
10445 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
10446 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_seekg_fpos, 28)
10447 basic_istream_wchar* __thiscall basic_istream_wchar_seekg_fpos(basic_istream_wchar *this, fpos_mbstatet pos)
10449 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10450 #if _MSVCP_VER >= 110
10451 IOSB_iostate state;
10453 TRACE("(%p %s)\n", this, debugstr_fpos_mbstatet(&pos));
10455 state = ios_base_rdstate(&base->base);
10456 ios_base_clear(&base->base, state & ~IOSTATE_eofbit);
10458 if(basic_istream_wchar_sentry_create(this, TRUE)) {
10459 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10460 fpos_mbstatet ret;
10462 basic_streambuf_wchar_pubseekpos(strbuf, &ret, pos, OPENMODE_in);
10464 if(ret.off==-1 && ret.pos==0 && MBSTATET_TO_INT(&ret.state)==0)
10465 basic_ios_wchar_setstate(base, IOSTATE_failbit);
10467 basic_istream_wchar_sentry_destroy(this);
10468 #else
10469 TRACE("(%p %s)\n", this, debugstr_fpos_mbstatet(&pos));
10471 if(!ios_base_fail(&base->base)) {
10472 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10473 fpos_mbstatet ret;
10475 basic_streambuf_wchar_pubseekpos(strbuf, &ret, pos, OPENMODE_in);
10477 if(ret.off==-1 && ret.pos==0 && MBSTATET_TO_INT(&ret.state)==0)
10478 basic_ios_wchar_setstate(base, IOSTATE_failbit);
10479 else
10480 basic_ios_wchar_clear(base, IOSTATE_goodbit);
10481 return this;
10482 }else
10483 basic_ios_wchar_clear(base, IOSTATE_goodbit);
10484 #endif
10485 return this;
10488 static basic_istream_wchar* basic_istream_read_short(basic_istream_wchar *this, short *v, const num_get *numget)
10490 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10491 int state = IOSTATE_goodbit;
10493 TRACE("(%p %p)\n", this, v);
10495 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10496 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10497 istreambuf_iterator_wchar first={0}, last={0};
10498 LONG tmp;
10500 first.strbuf = strbuf;
10501 num_get_wchar_get_long(numget, &last, first, last, &base->base, &state, &tmp);
10503 if(!(state&IOSTATE_failbit) && tmp==(LONG)((short)tmp))
10504 *v = tmp;
10505 else
10506 state |= IOSTATE_failbit;
10508 basic_istream_wchar_sentry_destroy(this);
10510 basic_ios_wchar_setstate(base, state);
10511 return this;
10514 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAF@Z */
10515 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAF@Z */
10516 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_short, 8)
10517 basic_istream_wchar* __thiscall basic_istream_wchar_read_short(basic_istream_wchar *this, short *v)
10519 return basic_istream_read_short(this, v, num_get_wchar_use_facet(
10520 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10523 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAF@Z */
10524 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAF@Z */
10525 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_short, 8)
10526 basic_istream_wchar* __thiscall basic_istream_short_read_short(basic_istream_wchar *this, short *v)
10528 return basic_istream_read_short(this, v, num_get_short_use_facet(
10529 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10532 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAG@Z */
10533 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAG@Z */
10534 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_ushort, 8)
10535 basic_istream_wchar* __thiscall basic_istream_wchar_read_ushort(basic_istream_wchar *this, unsigned short *v)
10537 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10538 int state = IOSTATE_goodbit;
10540 TRACE("(%p %p)\n", this, v);
10542 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10543 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10544 const num_get *numget = num_get_wchar_use_facet(IOS_LOCALE(strbuf));
10545 istreambuf_iterator_wchar first={0}, last={0};
10547 first.strbuf = strbuf;
10548 num_get_wchar_get_ushort(numget, &last, first, last, &base->base, &state, v);
10550 basic_istream_wchar_sentry_destroy(this);
10552 basic_ios_wchar_setstate(base, state);
10553 return this;
10556 static basic_istream_wchar* basic_istream_read_int(basic_istream_wchar *this, int *v, const num_get *numget)
10558 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10559 int state = IOSTATE_goodbit;
10561 TRACE("(%p %p)\n", this, v);
10563 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10564 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10565 istreambuf_iterator_wchar first={0}, last={0};
10567 first.strbuf = strbuf;
10568 num_get_wchar_get_long(numget, &last, first, last, &base->base, &state, (LONG*)v);
10570 basic_istream_wchar_sentry_destroy(this);
10572 basic_ios_wchar_setstate(base, state);
10573 return this;
10576 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAH@Z */
10577 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAH@Z */
10578 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_int, 8)
10579 basic_istream_wchar* __thiscall basic_istream_wchar_read_int(basic_istream_wchar *this, int *v)
10581 return basic_istream_read_int(this, v, num_get_wchar_use_facet(
10582 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10585 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAH@Z */
10586 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAH@Z */
10587 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_int, 8)
10588 basic_istream_wchar* __thiscall basic_istream_short_read_int(basic_istream_wchar *this, int *v)
10590 return basic_istream_read_int(this, v, num_get_short_use_facet(
10591 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10594 static basic_istream_wchar* basic_istream_read_uint(basic_istream_wchar *this, unsigned int *v, const num_get *numget)
10596 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10597 int state = IOSTATE_goodbit;
10599 TRACE("(%p %p)\n", this, v);
10601 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10602 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10603 istreambuf_iterator_wchar first={0}, last={0};
10605 first.strbuf = strbuf;
10606 num_get_wchar_get_uint(numget, &last, first, last, &base->base, &state, v);
10608 basic_istream_wchar_sentry_destroy(this);
10610 basic_ios_wchar_setstate(base, state);
10611 return this;
10614 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAI@Z */
10615 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAI@Z */
10616 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_uint, 8)
10617 basic_istream_wchar* __thiscall basic_istream_wchar_read_uint(basic_istream_wchar *this, unsigned int *v)
10619 return basic_istream_read_uint(this, v, num_get_wchar_use_facet(
10620 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10623 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAI@Z */
10624 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAI@Z */
10625 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_uint, 8)
10626 basic_istream_wchar* __thiscall basic_istream_short_read_uint(basic_istream_wchar *this, unsigned int *v)
10628 return basic_istream_read_uint(this, v, num_get_short_use_facet(
10629 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10632 static basic_istream_wchar* basic_istream_read_long(basic_istream_wchar *this, LONG *v, const num_get *numget)
10634 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10635 int state = IOSTATE_goodbit;
10637 TRACE("(%p %p)\n", this, v);
10639 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10640 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10641 istreambuf_iterator_wchar first={0}, last={0};
10643 first.strbuf = strbuf;
10644 num_get_wchar_get_long(numget, &last, first, last, &base->base, &state, v);
10646 basic_istream_wchar_sentry_destroy(this);
10648 basic_ios_wchar_setstate(base, state);
10649 return this;
10652 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAJ@Z */
10653 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAJ@Z */
10654 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_long, 8)
10655 basic_istream_wchar* __thiscall basic_istream_wchar_read_long(basic_istream_wchar *this, LONG *v)
10657 return basic_istream_read_long(this, v, num_get_wchar_use_facet(
10658 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10661 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAJ@Z */
10662 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAJ@Z */
10663 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_long, 8)
10664 basic_istream_wchar* __thiscall basic_istream_short_read_long(basic_istream_wchar *this, LONG *v)
10666 return basic_istream_read_long(this, v, num_get_short_use_facet(
10667 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10670 static basic_istream_wchar* basic_istream_read_ulong(basic_istream_wchar *this, ULONG *v, const num_get *numget)
10672 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10673 int state = IOSTATE_goodbit;
10675 TRACE("(%p %p)\n", this, v);
10677 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10678 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10679 istreambuf_iterator_wchar first={0}, last={0};
10681 first.strbuf = strbuf;
10682 num_get_wchar_get_ulong(numget, &last, first, last, &base->base, &state, v);
10684 basic_istream_wchar_sentry_destroy(this);
10686 basic_ios_wchar_setstate(base, state);
10687 return this;
10690 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAK@Z */
10691 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAK@Z */
10692 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_ulong, 8)
10693 basic_istream_wchar* __thiscall basic_istream_wchar_read_ulong(basic_istream_wchar *this, ULONG *v)
10695 return basic_istream_read_ulong(this, v, num_get_wchar_use_facet(
10696 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10699 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAK@Z */
10700 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAK@Z */
10701 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_ulong, 8)
10702 basic_istream_wchar* __thiscall basic_istream_short_read_ulong(basic_istream_wchar *this, ULONG *v)
10704 return basic_istream_read_ulong(this, v, num_get_short_use_facet(
10705 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10708 static basic_istream_wchar* basic_istream_read_float(basic_istream_wchar *this, float *v, const num_get *numget)
10710 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10711 int state = IOSTATE_goodbit;
10713 TRACE("(%p %p)\n", this, v);
10715 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10716 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10717 istreambuf_iterator_wchar first={0}, last={0};
10719 first.strbuf = strbuf;
10720 num_get_wchar_get_float(numget, &last, first, last, &base->base, &state, v);
10722 basic_istream_wchar_sentry_destroy(this);
10724 basic_ios_wchar_setstate(base, state);
10725 return this;
10728 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAM@Z */
10729 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAM@Z */
10730 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_float, 8)
10731 basic_istream_wchar* __thiscall basic_istream_wchar_read_float(basic_istream_wchar *this, float *v)
10733 return basic_istream_read_float(this, v, num_get_wchar_use_facet(
10734 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10737 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAM@Z */
10738 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAM@Z */
10739 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_float, 8)
10740 basic_istream_wchar* __thiscall basic_istream_short_read_float(basic_istream_wchar *this, float *v)
10742 return basic_istream_read_float(this, v, num_get_short_use_facet(
10743 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10746 static basic_istream_wchar* basic_istream_read_double(basic_istream_wchar *this, double *v, const num_get *numget)
10748 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10749 int state = IOSTATE_goodbit;
10751 TRACE("(%p %p)\n", this, v);
10753 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10754 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10755 istreambuf_iterator_wchar first={0}, last={0};
10757 first.strbuf = strbuf;
10758 num_get_wchar_get_double(numget, &last, first, last, &base->base, &state, v);
10760 basic_istream_wchar_sentry_destroy(this);
10762 basic_ios_wchar_setstate(base, state);
10763 return this;
10766 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAN@Z */
10767 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAN@Z */
10768 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_double, 8)
10769 basic_istream_wchar* __thiscall basic_istream_wchar_read_double(basic_istream_wchar *this, double *v)
10771 return basic_istream_read_double(this, v, num_get_wchar_use_facet(
10772 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10775 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAN@Z */
10776 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAN@Z */
10777 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_double, 8)
10778 basic_istream_wchar* __thiscall basic_istream_short_read_double(basic_istream_wchar *this, double *v)
10780 return basic_istream_read_double(this, v, num_get_short_use_facet(
10781 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10784 static basic_istream_wchar* basic_istream_read_ldouble(basic_istream_wchar *this, double *v, const num_get *numget)
10786 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10787 int state = IOSTATE_goodbit;
10789 TRACE("(%p %p)\n", this, v);
10791 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10792 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10793 istreambuf_iterator_wchar first={0}, last={0};
10795 first.strbuf = strbuf;
10796 num_get_wchar_get_ldouble(numget, &last, first, last, &base->base, &state, v);
10798 basic_istream_wchar_sentry_destroy(this);
10800 basic_ios_wchar_setstate(base, state);
10801 return this;
10804 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAO@Z */
10805 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAO@Z */
10806 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_ldouble, 8)
10807 basic_istream_wchar* __thiscall basic_istream_wchar_read_ldouble(basic_istream_wchar *this, double *v)
10809 return basic_istream_read_ldouble(this, v, num_get_wchar_use_facet(
10810 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10813 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAO@Z */
10814 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAO@Z */
10815 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_ldouble, 8)
10816 basic_istream_wchar* __thiscall basic_istream_short_read_ldouble(basic_istream_wchar *this, double *v)
10818 return basic_istream_read_ldouble(this, v, num_get_short_use_facet(
10819 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10822 static basic_istream_wchar* basic_istream_read_ptr(basic_istream_wchar *this, void **v, const num_get *numget)
10824 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10825 int state = IOSTATE_goodbit;
10827 TRACE("(%p %p)\n", this, v);
10829 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10830 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10831 istreambuf_iterator_wchar first={0}, last={0};
10833 first.strbuf = strbuf;
10834 num_get_wchar_get_void(numget, &last, first, last, &base->base, &state, v);
10836 basic_istream_wchar_sentry_destroy(this);
10838 basic_ios_wchar_setstate(base, state);
10839 return this;
10842 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAPAX@Z */
10843 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAPEAX@Z */
10844 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_ptr, 8)
10845 basic_istream_wchar* __thiscall basic_istream_wchar_read_ptr(basic_istream_wchar *this, void **v)
10847 return basic_istream_read_ptr(this, v, num_get_wchar_use_facet(
10848 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10851 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAPAX@Z */
10852 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAPEAX@Z */
10853 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_ptr, 8)
10854 basic_istream_wchar* __thiscall basic_istream_short_read_ptr(basic_istream_wchar *this, void **v)
10856 return basic_istream_read_ptr(this, v, num_get_short_use_facet(
10857 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10860 static basic_istream_wchar* basic_istream_read_int64(basic_istream_wchar *this, __int64 *v, const num_get *numget)
10862 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10863 int state = IOSTATE_goodbit;
10865 TRACE("(%p %p)\n", this, v);
10867 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10868 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10869 istreambuf_iterator_wchar first={0}, last={0};
10871 first.strbuf = strbuf;
10872 num_get_wchar_get_int64(numget, &last, first, last, &base->base, &state, v);
10874 basic_istream_wchar_sentry_destroy(this);
10876 basic_ios_wchar_setstate(base, state);
10877 return this;
10880 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AA_J@Z */
10881 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEA_J@Z */
10882 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_int64, 8)
10883 basic_istream_wchar* __thiscall basic_istream_wchar_read_int64(basic_istream_wchar *this, __int64 *v)
10885 return basic_istream_read_int64(this, v, num_get_wchar_use_facet(
10886 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10889 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AA_J@Z */
10890 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEA_J@Z */
10891 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_int64, 8)
10892 basic_istream_wchar* __thiscall basic_istream_short_read_int64(basic_istream_wchar *this, __int64 *v)
10894 return basic_istream_read_int64(this, v, num_get_short_use_facet(
10895 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10898 static basic_istream_wchar* basic_istream_read_uint64(basic_istream_wchar *this, unsigned __int64 *v, const num_get *numget)
10900 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10901 int state = IOSTATE_goodbit;
10903 TRACE("(%p %p)\n", this, v);
10905 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10906 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10907 istreambuf_iterator_wchar first={0}, last={0};
10909 first.strbuf = strbuf;
10910 num_get_wchar_get_uint64(numget, &last, first, last, &base->base, &state, v);
10912 basic_istream_wchar_sentry_destroy(this);
10914 basic_ios_wchar_setstate(base, state);
10915 return this;
10918 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AA_K@Z */
10919 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEA_K@Z */
10920 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_uint64, 8)
10921 basic_istream_wchar* __thiscall basic_istream_wchar_read_uint64(basic_istream_wchar *this, unsigned __int64 *v)
10923 return basic_istream_read_uint64(this, v, num_get_wchar_use_facet(
10924 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10927 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AA_K@Z */
10928 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEA_K@Z */
10929 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_uint64, 8)
10930 basic_istream_wchar* __thiscall basic_istream_short_read_uint64(basic_istream_wchar *this, unsigned __int64 *v)
10932 return basic_istream_read_uint64(this, v, num_get_short_use_facet(
10933 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10936 static basic_istream_wchar* basic_istream_read_bool(basic_istream_wchar *this, bool *v, const num_get *numget)
10938 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10939 int state = IOSTATE_goodbit;
10941 TRACE("(%p %p)\n", this, v);
10943 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10944 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10945 istreambuf_iterator_wchar first={0}, last={0};
10947 first.strbuf = strbuf;
10948 num_get_wchar_get_bool(numget, &last, first, last, &base->base, &state, v);
10950 basic_istream_wchar_sentry_destroy(this);
10952 basic_ios_wchar_setstate(base, state);
10953 return this;
10956 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AA_N@Z */
10957 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEA_N@Z */
10958 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_bool, 8)
10959 basic_istream_wchar* __thiscall basic_istream_wchar_read_bool(basic_istream_wchar *this, bool *v)
10961 return basic_istream_read_bool(this, v, num_get_wchar_use_facet(
10962 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10965 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AA_N@Z */
10966 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEA_N@Z */
10967 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_bool, 8)
10968 basic_istream_wchar* __thiscall basic_istream_short_read_bool(basic_istream_wchar *this, bool *v)
10970 return basic_istream_read_bool(this, v, num_get_short_use_facet(
10971 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10974 /* ??$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 */
10975 /* ??$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 */
10976 /* ??$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 */
10977 /* ??$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 */
10978 basic_istream_wchar* __cdecl basic_istream_wchar_getline_bstr_delim(
10979 basic_istream_wchar *istream, basic_string_wchar *str, wchar_t delim)
10981 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istream);
10982 IOSB_iostate state = IOSTATE_goodbit;
10983 int c = delim;
10985 TRACE("(%p %p %s)\n", istream, str, debugstr_wn(&delim, 1));
10987 if(basic_istream_wchar_sentry_create(istream, TRUE)) {
10988 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10989 MSVCP_basic_string_wchar_clear(str);
10991 c = basic_streambuf_wchar_sgetc(strbuf);
10992 for(; c!=delim && c!=WEOF; c = basic_streambuf_wchar_snextc(strbuf))
10993 MSVCP_basic_string_wchar_append_ch(str, c);
10994 if(c==delim) basic_streambuf_wchar_sbumpc(strbuf);
10995 else if(c==WEOF) state |= IOSTATE_eofbit;
10997 if(!MSVCP_basic_string_wchar_length(str) && c!=delim) state |= IOSTATE_failbit;
10999 basic_istream_wchar_sentry_destroy(istream);
11001 basic_ios_wchar_setstate(basic_istream_wchar_get_basic_ios(istream), state);
11002 return istream;
11005 /* ??$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 */
11006 /* ??$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 */
11007 /* ??$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 */
11008 /* ??$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 */
11009 basic_istream_wchar* __cdecl basic_istream_wchar_getline_bstr(
11010 basic_istream_wchar *istream, basic_string_wchar *str)
11012 return basic_istream_wchar_getline_bstr_delim(istream, str, '\n');
11015 static basic_istream_wchar* basic_istream_read_bstr(basic_istream_wchar *istream,
11016 basic_string_wchar *str, const ctype_wchar *ctype)
11018 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istream);
11019 IOSB_iostate state = IOSTATE_failbit;
11020 int c = '\n';
11022 TRACE("(%p %p)\n", istream, str);
11024 if(basic_istream_wchar_sentry_create(istream, FALSE)) {
11025 size_t count = ios_base_width_get(&base->base);
11027 if(!count)
11028 count = -1;
11030 MSVCP_basic_string_wchar_clear(str);
11032 for(c = basic_streambuf_wchar_sgetc(basic_ios_wchar_rdbuf_get(base));
11033 c!=WEOF && !ctype_wchar_is_ch(ctype, _SPACE|_BLANK, c) && count>0;
11034 c = basic_streambuf_wchar_snextc(basic_ios_wchar_rdbuf_get(base)), count--) {
11035 state = IOSTATE_goodbit;
11036 MSVCP_basic_string_wchar_append_ch(str, c);
11039 basic_istream_wchar_sentry_destroy(istream);
11041 ios_base_width_set(&base->base, 0);
11042 basic_ios_wchar_setstate(base, state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
11043 return istream;
11046 /* ??$?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 */
11047 /* ??$?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 */
11048 basic_istream_wchar* __cdecl basic_istream_wchar_read_bstr(
11049 basic_istream_wchar *istream, basic_string_wchar *str)
11051 return basic_istream_read_bstr(istream, str, ctype_wchar_use_facet(
11052 IOS_LOCALE(basic_istream_wchar_get_basic_ios(istream)->strbuf)));
11055 /* ??$?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 */
11056 /* ??$?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 */
11057 basic_istream_wchar* __cdecl basic_istream_short_read_bstr(
11058 basic_istream_wchar *istream, basic_string_wchar *str)
11060 return basic_istream_read_bstr(istream, str, ctype_short_use_facet(
11061 IOS_LOCALE(basic_istream_wchar_get_basic_ios(istream)->strbuf)));
11064 static basic_istream_wchar* basic_istream_read_str(basic_istream_wchar *istream, wchar_t *str, const ctype_wchar *ctype)
11066 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istream);
11067 IOSB_iostate state = IOSTATE_failbit;
11068 unsigned short c = '\n';
11070 TRACE("(%p %p)\n", istream, str);
11072 if(basic_istream_wchar_sentry_create(istream, FALSE)) {
11073 size_t count = ios_base_width_get(&base->base)-1;
11075 for(c = basic_streambuf_wchar_sgetc(basic_ios_wchar_rdbuf_get(base));
11076 c!=WEOF && !ctype_wchar_is_ch(ctype, _SPACE|_BLANK, c) && count>0;
11077 c = basic_streambuf_wchar_snextc(basic_ios_wchar_rdbuf_get(base)), count--) {
11078 state = IOSTATE_goodbit;
11079 *str++ = c;
11082 basic_istream_wchar_sentry_destroy(istream);
11084 *str = 0;
11085 ios_base_width_set(&base->base, 0);
11086 basic_ios_wchar_setstate(base, state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
11087 return istream;
11090 /* ??$?5_WU?$char_traits@_W@std@@@std@@YAAAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AAV10@PA_W@Z */
11091 /* ??$?5_WU?$char_traits@_W@std@@@std@@YAAEAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AEAV10@PEA_W@Z */
11092 basic_istream_wchar* __cdecl basic_istream_wchar_read_str(basic_istream_wchar *istream, wchar_t *str)
11094 return basic_istream_read_str(istream, str, ctype_wchar_use_facet(
11095 IOS_LOCALE(basic_istream_wchar_get_basic_ios(istream)->strbuf)));
11098 /* ??$?5GU?$char_traits@G@std@@@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@0@AAV10@PAG@Z */
11099 /* ??$?5GU?$char_traits@G@std@@@std@@YAAEAV?$basic_istream@GU?$char_traits@G@std@@@0@AEAV10@PEAG@Z */
11100 basic_istream_wchar* __cdecl basic_istream_short_read_str(basic_istream_wchar *istream, wchar_t *str)
11102 return basic_istream_read_str(istream, str, ctype_short_use_facet(
11103 IOS_LOCALE(basic_istream_wchar_get_basic_ios(istream)->strbuf)));
11106 /* ??$?5_WU?$char_traits@_W@std@@@std@@YAAAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AAV10@AA_W@Z */
11107 /* ??$?5_WU?$char_traits@_W@std@@@std@@YAAEAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AEAV10@AEA_W@Z */
11108 /* ??$?5GU?$char_traits@G@std@@@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@0@AAV10@AAG@Z */
11109 /* ??$?5GU?$char_traits@G@std@@@std@@YAAEAV?$basic_istream@GU?$char_traits@G@std@@@0@AEAV10@AEAG@Z */
11110 basic_istream_wchar* __cdecl basic_istream_wchar_read_ch(basic_istream_wchar *istream, wchar_t *ch)
11112 IOSB_iostate state = IOSTATE_failbit;
11113 unsigned short c = 0;
11115 TRACE("(%p %p)\n", istream, ch);
11117 if(basic_istream_wchar_sentry_create(istream, FALSE)) {
11118 c = basic_streambuf_wchar_sbumpc(basic_ios_wchar_rdbuf_get(
11119 basic_istream_wchar_get_basic_ios(istream)));
11120 if(c != WEOF) {
11121 state = IOSTATE_goodbit;
11122 *ch = c;
11125 basic_istream_wchar_sentry_destroy(istream);
11127 basic_ios_wchar_setstate(basic_istream_wchar_get_basic_ios(istream),
11128 state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
11129 return istream;
11132 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
11133 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
11134 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
11135 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
11136 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_streambuf, 8)
11137 basic_istream_wchar* __thiscall basic_istream_wchar_read_streambuf(
11138 basic_istream_wchar *this, basic_streambuf_wchar *streambuf)
11140 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
11141 IOSB_iostate state = IOSTATE_failbit;
11142 unsigned short c = '\n';
11144 TRACE("(%p %p)\n", this, streambuf);
11146 if(basic_istream_wchar_sentry_create(this, FALSE)) {
11147 for(c = basic_streambuf_wchar_sgetc(basic_ios_wchar_rdbuf_get(base)); c!=WEOF;
11148 c = basic_streambuf_wchar_snextc(basic_ios_wchar_rdbuf_get(base))) {
11149 state = IOSTATE_goodbit;
11150 if(basic_streambuf_wchar_sputc(streambuf, c) == WEOF)
11151 break;
11154 basic_istream_wchar_sentry_destroy(this);
11156 basic_ios_wchar_setstate(base, state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
11157 return this;
11160 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
11161 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
11162 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
11163 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
11164 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_func, 8)
11165 basic_istream_wchar* __thiscall basic_istream_wchar_read_func(basic_istream_wchar *this,
11166 basic_istream_wchar* (__cdecl *pfunc)(basic_istream_wchar*))
11168 TRACE("(%p %p)\n", this, pfunc);
11169 pfunc(this);
11170 return this;
11173 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@_WU?$char_traits@_W@std@@@1@AAV21@@Z@Z */
11174 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@_WU?$char_traits@_W@std@@@1@AEAV21@@Z@Z */
11175 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@GU?$char_traits@G@std@@@1@AAV21@@Z@Z */
11176 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@GU?$char_traits@G@std@@@1@AEAV21@@Z@Z */
11177 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_func_basic_ios, 8)
11178 basic_istream_wchar* __thiscall basic_istream_wchar_read_func_basic_ios(basic_istream_wchar *this,
11179 basic_ios_wchar* (__cdecl *pfunc)(basic_ios_wchar*))
11181 TRACE("(%p %p)\n", this, pfunc);
11182 pfunc(basic_istream_wchar_get_basic_ios(this));
11183 return this;
11186 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
11187 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
11188 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
11189 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
11190 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_func_ios_base, 8)
11191 basic_istream_wchar* __thiscall basic_istream_wchar_read_func_ios_base(
11192 basic_istream_wchar *this, ios_base* (__cdecl *pfunc)(ios_base*))
11194 TRACE("(%p %p)\n", this, pfunc);
11195 pfunc(&basic_istream_wchar_get_basic_ios(this)->base);
11196 return this;
11199 /* ?swap@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEXAAV12@@Z */
11200 /* ?swap@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAXAEAV12@@Z */
11201 /* ?swap@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEXAAV12@@Z */
11202 /* ?swap@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAXAEAV12@@Z */
11203 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_swap, 8)
11204 void __thiscall basic_istream_wchar_swap(basic_istream_wchar *this, basic_istream_wchar *r)
11206 TRACE("(%p %p)\n", this, r);
11208 if(this == r)
11209 return;
11211 basic_ios_wchar_swap(basic_istream_wchar_get_basic_ios(this),
11212 basic_istream_wchar_get_basic_ios(r));
11213 this->count ^= r->count;
11214 r->count ^= this->count;
11215 this->count ^= r->count;
11218 static inline basic_ios_char* basic_iostream_char_to_basic_ios(basic_iostream_char *ptr)
11220 return (basic_ios_char*)((char*)ptr+basic_iostream_char_vbtable1[1]);
11223 static inline basic_iostream_char* basic_iostream_char_from_basic_ios(basic_ios_char *ptr)
11225 return (basic_iostream_char*)((char*)ptr-basic_iostream_char_vbtable1[1]);
11228 /* ??0?$basic_iostream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
11229 /* ??0?$basic_iostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
11230 DEFINE_THISCALL_WRAPPER(basic_iostream_char_ctor, 12)
11231 basic_iostream_char* __thiscall basic_iostream_char_ctor(basic_iostream_char *this, basic_streambuf_char *strbuf, bool virt_init)
11233 basic_ios_char *basic_ios;
11235 TRACE("(%p %p %d)\n", this, strbuf, virt_init);
11237 if(virt_init) {
11238 this->base1.vbtable = basic_iostream_char_vbtable1;
11239 this->base2.vbtable = basic_iostream_char_vbtable2;
11240 basic_ios = basic_istream_char_get_basic_ios(&this->base1);
11241 INIT_BASIC_IOS_VTORDISP(basic_ios);
11242 basic_ios_char_ctor(basic_ios);
11243 }else {
11244 basic_ios = basic_istream_char_get_basic_ios(&this->base1);
11247 basic_istream_char_ctor(&this->base1, strbuf, FALSE, FALSE);
11248 basic_ostream_char_ctor_uninitialized(&this->base2, 0, FALSE, FALSE);
11249 basic_ios->base.vtable = &basic_iostream_char_vtable;
11250 return this;
11253 /* ??1?$basic_iostream@DU?$char_traits@D@std@@@std@@UAE@XZ */
11254 /* ??1?$basic_iostream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
11255 DEFINE_THISCALL_WRAPPER(basic_iostream_char_dtor, 4)
11256 void __thiscall basic_iostream_char_dtor(basic_ios_char *base)
11258 basic_iostream_char *this = basic_iostream_char_from_basic_ios(base);
11260 TRACE("(%p)\n", this);
11261 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(&this->base2));
11262 basic_istream_char_dtor(basic_istream_char_to_basic_ios(&this->base1));
11265 /* ??_D?$basic_iostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
11266 /* ??_D?$basic_iostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
11267 DEFINE_THISCALL_WRAPPER(basic_iostream_char_vbase_dtor, 4)
11268 void __thiscall basic_iostream_char_vbase_dtor(basic_iostream_char *this)
11270 basic_ios_char *base = basic_iostream_char_to_basic_ios(this);
11272 TRACE("(%p)\n", this);
11274 basic_iostream_char_dtor(base);
11275 basic_ios_char_dtor(base);
11278 DEFINE_THISCALL_WRAPPER(basic_iostream_char_vector_dtor, 8)
11279 basic_iostream_char* __thiscall basic_iostream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
11281 basic_iostream_char *this = basic_iostream_char_from_basic_ios(base);
11283 TRACE("(%p %x)\n", this, flags);
11285 if(flags & 2) {
11286 /* we have an array, with the number of elements stored before the first object */
11287 INT_PTR i, *ptr = (INT_PTR *)this-1;
11289 for(i=*ptr-1; i>=0; i--)
11290 basic_iostream_char_vbase_dtor(this+i);
11291 operator_delete(ptr);
11292 } else {
11293 basic_iostream_char_vbase_dtor(this);
11294 if(flags & 1)
11295 operator_delete(this);
11298 return this;
11301 /* ?swap@?$basic_iostream@DU?$char_traits@D@std@@@std@@QAEXAAV12@@Z */
11302 /* ?swap@?$basic_iostream@DU?$char_traits@D@std@@@std@@QEAAXAEAV12@@Z */
11303 DEFINE_THISCALL_WRAPPER(basic_iostream_char_swap, 8)
11304 void __thiscall basic_iostream_char_swap(basic_iostream_char *this, basic_iostream_char *r)
11306 TRACE("(%p %p)\n", this, r);
11308 if(this == r)
11309 return;
11311 basic_ios_char_swap(basic_istream_char_get_basic_ios(&this->base1),
11312 basic_istream_char_get_basic_ios(&r->base1));
11315 static inline basic_ios_wchar* basic_iostream_wchar_to_basic_ios(basic_iostream_wchar *ptr)
11317 return (basic_ios_wchar*)((char*)ptr+basic_iostream_wchar_vbtable1[1]);
11320 static inline basic_iostream_wchar* basic_iostream_wchar_from_basic_ios(basic_ios_wchar *ptr)
11322 return (basic_iostream_wchar*)((char*)ptr-basic_iostream_wchar_vbtable1[1]);
11325 /* ??0?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
11326 /* ??0?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
11327 DEFINE_THISCALL_WRAPPER(basic_iostream_wchar_ctor, 12)
11328 basic_iostream_wchar* __thiscall basic_iostream_wchar_ctor(basic_iostream_wchar *this,
11329 basic_streambuf_wchar *strbuf, bool virt_init)
11331 basic_ios_wchar *basic_ios;
11333 TRACE("(%p %p %d)\n", this, strbuf, virt_init);
11335 if(virt_init) {
11336 this->base1.vbtable = basic_iostream_wchar_vbtable1;
11337 this->base2.vbtable = basic_iostream_wchar_vbtable2;
11338 basic_ios = basic_istream_wchar_get_basic_ios(&this->base1);
11339 INIT_BASIC_IOS_VTORDISP(basic_ios);
11340 basic_ios_wchar_ctor(basic_ios);
11341 }else {
11342 basic_ios = basic_istream_wchar_get_basic_ios(&this->base1);
11345 basic_istream_wchar_ctor(&this->base1, strbuf, FALSE, FALSE);
11346 basic_ostream_wchar_ctor_uninitialized(&this->base2, 0, FALSE, FALSE);
11348 basic_ios->base.vtable = &basic_iostream_wchar_vtable;
11349 return this;
11352 /* ??0?$basic_iostream@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
11353 /* ??0?$basic_iostream@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
11354 DEFINE_THISCALL_WRAPPER(basic_iostream_short_ctor, 12)
11355 basic_iostream_wchar* __thiscall basic_iostream_short_ctor(basic_iostream_wchar *this,
11356 basic_streambuf_wchar *strbuf, bool virt_init)
11358 basic_iostream_wchar_ctor(this, strbuf, virt_init);
11359 basic_istream_wchar_get_basic_ios(&this->base1)->base.vtable = &basic_iostream_short_vtable;
11360 return this;
11363 /* ??1?$basic_iostream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
11364 /* ??1?$basic_iostream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
11365 /* ??1?$basic_iostream@GU?$char_traits@G@std@@@std@@UAE@XZ */
11366 /* ??1?$basic_iostream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
11367 DEFINE_THISCALL_WRAPPER(basic_iostream_wchar_dtor, 4)
11368 void __thiscall basic_iostream_wchar_dtor(basic_ios_wchar *base)
11370 basic_iostream_wchar *this = basic_iostream_wchar_from_basic_ios(base);
11372 TRACE("(%p)\n", this);
11373 basic_ostream_wchar_dtor(basic_ostream_wchar_to_basic_ios(&this->base2));
11374 basic_istream_wchar_dtor(basic_istream_wchar_to_basic_ios(&this->base1));
11377 /* ??_D?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
11378 /* ??_D?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
11379 /* ??_D?$basic_iostream@GU?$char_traits@G@std@@@std@@QAEXXZ */
11380 /* ??_D?$basic_iostream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
11381 DEFINE_THISCALL_WRAPPER(basic_iostream_wchar_vbase_dtor, 4)
11382 void __thiscall basic_iostream_wchar_vbase_dtor(basic_iostream_wchar *this)
11384 basic_ios_wchar *base = basic_iostream_wchar_to_basic_ios(this);
11386 TRACE("(%p)\n", this);
11388 basic_iostream_wchar_dtor(base);
11389 basic_ios_wchar_dtor(base);
11392 DEFINE_THISCALL_WRAPPER(basic_iostream_wchar_vector_dtor, 8)
11393 basic_iostream_wchar* __thiscall basic_iostream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
11395 basic_iostream_wchar *this = basic_iostream_wchar_from_basic_ios(base);
11397 TRACE("(%p %x)\n", this, flags);
11399 if(flags & 2) {
11400 /* we have an array, with the number of elements stored before the first object */
11401 INT_PTR i, *ptr = (INT_PTR *)this-1;
11403 for(i=*ptr-1; i>=0; i--)
11404 basic_iostream_wchar_vbase_dtor(this+i);
11405 operator_delete(ptr);
11406 } else {
11407 basic_iostream_wchar_vbase_dtor(this);
11408 if(flags & 1)
11409 operator_delete(this);
11412 return this;
11415 /* ?swap@?$basic_iostream@GU?$char_traits@G@std@@@std@@QAEXAAV12@@Z */
11416 /* ?swap@?$basic_iostream@GU?$char_traits@G@std@@@std@@QEAAXAEAV12@@Z */
11417 /* ?swap@?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QAEXAAV12@@Z */
11418 /* ?swap@?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QEAAXAEAV12@@Z */
11419 DEFINE_THISCALL_WRAPPER(basic_iostream_wchar_swap, 8)
11420 void __thiscall basic_iostream_wchar_swap(basic_iostream_wchar *this, basic_iostream_wchar *r)
11422 TRACE("(%p %p)\n", this, r);
11424 if(this == r)
11425 return;
11427 basic_ios_wchar_swap(basic_istream_wchar_get_basic_ios(&this->base1),
11428 basic_istream_wchar_get_basic_ios(&r->base1));
11431 static inline basic_ios_char* basic_ofstream_char_to_basic_ios(basic_ofstream_char *ptr)
11433 return (basic_ios_char*)((char*)ptr+basic_ofstream_char_vbtable[1]);
11436 static inline basic_ofstream_char* basic_ofstream_char_from_basic_ios(basic_ios_char *ptr)
11438 return (basic_ofstream_char*)((char*)ptr-basic_ofstream_char_vbtable[1]);
11441 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@XZ */
11442 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@XZ */
11443 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_ctor, 8)
11444 basic_ofstream_char* __thiscall basic_ofstream_char_ctor(basic_ofstream_char *this, bool virt_init)
11446 basic_ios_char *basic_ios;
11448 TRACE("(%p %d)\n", this, virt_init);
11450 if(virt_init) {
11451 this->base.vbtable = basic_ofstream_char_vbtable;
11452 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11453 INIT_BASIC_IOS_VTORDISP(basic_ios);
11454 basic_ios_char_ctor(basic_ios);
11455 }else {
11456 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11459 basic_filebuf_char_ctor(&this->filebuf);
11460 basic_ostream_char_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
11461 basic_ios->base.vtable = &basic_ofstream_char_vtable;
11462 return this;
11465 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PAU_iobuf@@@Z */
11466 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@PEAU_iobuf@@@Z */
11467 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_ctor_file, 12)
11468 basic_ofstream_char* __thiscall basic_ofstream_char_ctor_file(
11469 basic_ofstream_char *this, FILE *file, bool virt_init)
11471 basic_ios_char *basic_ios;
11473 TRACE("(%p %p %d)\n", this, file, virt_init);
11475 if(virt_init) {
11476 this->base.vbtable = basic_ofstream_char_vbtable;
11477 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11478 INIT_BASIC_IOS_VTORDISP(basic_ios);
11479 basic_ios_char_ctor(basic_ios);
11480 }else {
11481 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11484 basic_filebuf_char_ctor_file(&this->filebuf, file);
11485 basic_ostream_char_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
11486 basic_ios->base.vtable = &basic_ofstream_char_vtable;
11487 return this;
11490 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PBDHH@Z */
11491 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDHH@Z */
11492 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_ctor_name, 20)
11493 basic_ofstream_char* __thiscall basic_ofstream_char_ctor_name(basic_ofstream_char *this,
11494 const char *name, int mode, int prot, bool virt_init)
11496 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
11498 basic_ofstream_char_ctor(this, virt_init);
11500 if(!basic_filebuf_char_open(&this->filebuf, name, mode|OPENMODE_out, prot)) {
11501 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11502 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
11504 return this;
11507 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PBGHH@Z */
11508 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@PEBGHH@Z */
11509 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PB_WHH@Z */
11510 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@PEB_WHH@Z */
11511 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_ctor_name_wchar, 20)
11512 basic_ofstream_char* __thiscall basic_ofstream_char_ctor_name_wchar(basic_ofstream_char *this,
11513 const wchar_t *name, int mode, int prot, bool virt_init)
11515 TRACE("(%p %s %d %d %d)\n", this, debugstr_w(name), mode, prot, virt_init);
11517 basic_ofstream_char_ctor(this, virt_init);
11519 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode|OPENMODE_out, prot)) {
11520 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11521 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
11523 return this;
11526 /* ??1?$basic_ofstream@DU?$char_traits@D@std@@@std@@UAE@XZ */
11527 /* ??1?$basic_ofstream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
11528 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_dtor, 4)
11529 void __thiscall basic_ofstream_char_dtor(basic_ios_char *base)
11531 basic_ofstream_char *this = basic_ofstream_char_from_basic_ios(base);
11533 TRACE("(%p)\n", this);
11535 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(&this->base));
11536 basic_filebuf_char_dtor(&this->filebuf);
11539 /* ??_D?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
11540 /* ??_D?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
11541 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_vbase_dtor, 4)
11542 void __thiscall basic_ofstream_char_vbase_dtor(basic_ofstream_char *this)
11544 basic_ios_char *base = basic_ofstream_char_to_basic_ios(this);
11546 TRACE("(%p)\n", this);
11548 basic_ofstream_char_dtor(base);
11549 basic_ios_char_dtor(base);
11552 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_vector_dtor, 8)
11553 basic_ofstream_char* __thiscall basic_ofstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
11555 basic_ofstream_char *this = basic_ofstream_char_from_basic_ios(base);
11557 TRACE("(%p %x)\n", this, flags);
11559 if(flags & 2) {
11560 /* we have an array, with the number of elements stored before the first object */
11561 INT_PTR i, *ptr = (INT_PTR *)this-1;
11563 for(i=*ptr-1; i>=0; i--)
11564 basic_ofstream_char_vbase_dtor(this+i);
11565 operator_delete(ptr);
11566 } else {
11567 basic_ofstream_char_vbase_dtor(this);
11568 if(flags & 1)
11569 operator_delete(this);
11572 return this;
11575 /* ?close@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
11576 /* ?close@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
11577 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_close, 4)
11578 void __thiscall basic_ofstream_char_close(basic_ofstream_char *this)
11580 TRACE("(%p)\n", this);
11582 if(!basic_filebuf_char_close(&this->filebuf)) {
11583 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11584 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
11588 /* ?is_open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QBE_NXZ */
11589 /* ?is_open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEBA_NXZ */
11590 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_is_open, 4)
11591 bool __thiscall basic_ofstream_char_is_open(const basic_ofstream_char *this)
11593 TRACE("(%p)\n", this);
11594 return basic_filebuf_char_is_open(&this->filebuf);
11597 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPBDHH@Z */
11598 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDHH@Z */
11599 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_open, 16)
11600 void __thiscall basic_ofstream_char_open(basic_ofstream_char *this,
11601 const char *name, int mode, int prot)
11603 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
11605 if(!basic_filebuf_char_open(&this->filebuf, name, mode|OPENMODE_out, prot)) {
11606 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11607 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
11611 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPBDI@Z */
11612 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDI@Z */
11613 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_open_old, 12)
11614 void __thiscall basic_ofstream_char_open_old(basic_ofstream_char *this,
11615 const char *name, unsigned int mode)
11617 basic_ofstream_char_open(this, name, mode, _SH_DENYNO);
11620 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPBGHH@Z */
11621 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGHH@Z */
11622 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPB_WHH@Z */
11623 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WHH@Z */
11624 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_open_wchar, 16)
11625 void __thiscall basic_ofstream_char_open_wchar(basic_ofstream_char *this,
11626 const wchar_t *name, int mode, int prot)
11628 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
11630 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode|OPENMODE_out, prot)) {
11631 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11632 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
11636 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPBGI@Z */
11637 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGI@Z */
11638 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPB_WI@Z */
11639 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WI@Z */
11640 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_open_wchar_old, 12)
11641 void __thiscall basic_ofstream_char_open_wchar_old(basic_ofstream_char *this,
11642 const wchar_t *name, unsigned int mode)
11644 basic_ofstream_char_open_wchar(this, name, mode, _SH_DENYNO);
11647 /* ?rdbuf@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
11648 /* ?rdbuf@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
11649 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_rdbuf, 4)
11650 basic_filebuf_char* __thiscall basic_ofstream_char_rdbuf(const basic_ofstream_char *this)
11652 TRACE("(%p)\n", this);
11653 return (basic_filebuf_char*)&this->filebuf;
11656 static inline basic_ios_wchar* basic_ofstream_wchar_to_basic_ios(basic_ofstream_wchar *ptr)
11658 return (basic_ios_wchar*)((char*)ptr+basic_ofstream_wchar_vbtable[1]);
11661 static inline basic_ofstream_wchar* basic_ofstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
11663 return (basic_ofstream_wchar*)((char*)ptr-basic_ofstream_wchar_vbtable[1]);
11666 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAE@XZ */
11667 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAA@XZ */
11668 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_ctor, 8)
11669 basic_ofstream_wchar* __thiscall basic_ofstream_wchar_ctor(basic_ofstream_wchar *this, bool virt_init)
11671 basic_ios_wchar *basic_ios;
11673 TRACE("(%p %d)\n", this, virt_init);
11675 if(virt_init) {
11676 this->base.vbtable = basic_ofstream_wchar_vbtable;
11677 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11678 INIT_BASIC_IOS_VTORDISP(basic_ios);
11679 basic_ios_wchar_ctor(basic_ios);
11680 }else {
11681 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11684 basic_filebuf_wchar_ctor(&this->filebuf);
11685 basic_ostream_wchar_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
11686 basic_ios->base.vtable = &basic_ofstream_wchar_vtable;
11687 return this;
11690 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@XZ */
11691 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@XZ */
11692 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_ctor, 8)
11693 basic_ofstream_wchar* __thiscall basic_ofstream_short_ctor(basic_ofstream_wchar *this, bool virt_init)
11695 basic_ofstream_wchar_ctor(this, virt_init);
11696 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &basic_ofstream_short_vtable;
11697 return this;
11700 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAE@PAU_iobuf@@@Z */
11701 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAU_iobuf@@@Z */
11702 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_ctor_file, 12)
11703 basic_ofstream_wchar* __thiscall basic_ofstream_wchar_ctor_file(
11704 basic_ofstream_wchar *this, FILE *file, bool virt_init)
11706 basic_ios_wchar *basic_ios;
11708 TRACE("(%p %p %d)\n", this, file, virt_init);
11710 if(virt_init) {
11711 this->base.vbtable = basic_ofstream_wchar_vbtable;
11712 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11713 INIT_BASIC_IOS_VTORDISP(basic_ios);
11714 basic_ios_wchar_ctor(basic_ios);
11715 }else {
11716 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11719 basic_filebuf_wchar_ctor_file(&this->filebuf, file);
11720 basic_ostream_wchar_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
11721 basic_ios->base.vtable = &basic_ofstream_wchar_vtable;
11722 return this;
11725 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@PAU_iobuf@@@Z */
11726 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@PEAU_iobuf@@@Z */
11727 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_ctor_file, 12)
11728 basic_ofstream_wchar* __thiscall basic_ofstream_short_ctor_file(
11729 basic_ofstream_wchar *this, FILE *file, bool virt_init)
11731 basic_ofstream_wchar_ctor_file(this, file, virt_init);
11732 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &basic_ofstream_short_vtable;
11733 return this;
11736 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAE@PBDHH@Z */
11737 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEBDHH@Z */
11738 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_ctor_name, 20)
11739 basic_ofstream_wchar* __thiscall basic_ofstream_wchar_ctor_name(basic_ofstream_wchar *this,
11740 const char *name, int mode, int prot, bool virt_init)
11742 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
11744 basic_ofstream_wchar_ctor(this, virt_init);
11746 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode|OPENMODE_out, prot)) {
11747 basic_ios_wchar *basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11748 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
11750 return this;
11753 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@PBDHH@Z */
11754 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@PEBDHH@Z */
11755 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_ctor_name, 20)
11756 basic_ofstream_wchar* __thiscall basic_ofstream_short_ctor_name(basic_ofstream_wchar *this,
11757 const char *name, int mode, int prot, bool virt_init)
11759 basic_ofstream_wchar_ctor_name(this, name, mode, prot, virt_init);
11760 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &basic_ofstream_short_vtable;
11761 return this;
11764 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAE@PBGHH@Z */
11765 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEBGHH@Z */
11766 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAE@PB_WHH@Z */
11767 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEB_WHH@Z */
11768 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_ctor_name_wchar, 20)
11769 basic_ofstream_wchar* __thiscall basic_ofstream_wchar_ctor_name_wchar(basic_ofstream_wchar *this,
11770 const wchar_t *name, int mode, int prot, bool virt_init)
11772 TRACE("(%p %s %d %d %d)\n", this, debugstr_w(name), mode, prot, virt_init);
11774 basic_ofstream_wchar_ctor(this, virt_init);
11776 if(!basic_filebuf_wchar_open_wchar(&this->filebuf, name, mode|OPENMODE_out, prot)) {
11777 basic_ios_wchar *basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11778 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
11780 return this;
11783 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@PBGHH@Z */
11784 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@PEBGHH@Z */
11785 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@PB_WHH@Z */
11786 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@PEB_WHH@Z */
11787 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_ctor_name_wchar, 20)
11788 basic_ofstream_wchar* __thiscall basic_ofstream_short_ctor_name_wchar(basic_ofstream_wchar *this,
11789 const wchar_t *name, int mode, int prot, bool virt_init)
11791 basic_ofstream_wchar_ctor_name_wchar(this, name, mode, prot, virt_init);
11792 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &basic_ofstream_short_vtable;
11793 return this;
11796 /* ??1?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
11797 /* ??1?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
11798 /* ??1?$basic_ofstream@GU?$char_traits@G@std@@@std@@UAE@XZ */
11799 /* ??1?$basic_ofstream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
11800 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_dtor, 4)
11801 void __thiscall basic_ofstream_wchar_dtor(basic_ios_wchar *base)
11803 basic_ofstream_wchar *this = basic_ofstream_wchar_from_basic_ios(base);
11805 TRACE("(%p)\n", this);
11807 basic_ostream_wchar_dtor(basic_ostream_wchar_to_basic_ios(&this->base));
11808 basic_filebuf_wchar_dtor(&this->filebuf);
11811 /* ??_D?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
11812 /* ??_D?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
11813 /* ??_D?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
11814 /* ??_D?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
11815 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_vbase_dtor, 4)
11816 void __thiscall basic_ofstream_wchar_vbase_dtor(basic_ofstream_wchar *this)
11818 basic_ios_wchar *base = basic_ofstream_wchar_to_basic_ios(this);
11820 TRACE("(%p)\n", this);
11822 basic_ofstream_wchar_dtor(base);
11823 basic_ios_wchar_dtor(base);
11826 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_vector_dtor, 8)
11827 basic_ofstream_wchar* __thiscall basic_ofstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
11829 basic_ofstream_wchar *this = basic_ofstream_wchar_from_basic_ios(base);
11831 TRACE("(%p %x)\n", this, flags);
11833 if(flags & 2) {
11834 /* we have an array, with the number of elements stored before the first object */
11835 INT_PTR i, *ptr = (INT_PTR *)this-1;
11837 for(i=*ptr-1; i>=0; i--)
11838 basic_ofstream_wchar_vbase_dtor(this+i);
11839 operator_delete(ptr);
11840 } else {
11841 basic_ofstream_wchar_vbase_dtor(this);
11842 if(flags & 1)
11843 operator_delete(this);
11846 return this;
11849 /* ?close@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
11850 /* ?close@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
11851 /* ?close@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
11852 /* ?close@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
11853 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_close, 4)
11854 void __thiscall basic_ofstream_wchar_close(basic_ofstream_wchar *this)
11856 TRACE("(%p)\n", this);
11858 if(!basic_filebuf_wchar_close(&this->filebuf)) {
11859 basic_ios_wchar *basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11860 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
11864 /* ?is_open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QBE_NXZ */
11865 /* ?is_open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEBA_NXZ */
11866 /* ?is_open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QBE_NXZ */
11867 /* ?is_open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEBA_NXZ */
11868 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_is_open, 4)
11869 bool __thiscall basic_ofstream_wchar_is_open(const basic_ofstream_wchar *this)
11871 TRACE("(%p)\n", this);
11872 return basic_filebuf_wchar_is_open(&this->filebuf);
11875 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDHH@Z */
11876 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDHH@Z */
11877 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPBDHH@Z */
11878 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDHH@Z */
11879 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_open, 16)
11880 void __thiscall basic_ofstream_wchar_open(basic_ofstream_wchar *this,
11881 const char *name, int mode, int prot)
11883 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
11885 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode|OPENMODE_out, prot)) {
11886 basic_ios_wchar *basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11887 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
11891 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDI@Z */
11892 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDI@Z */
11893 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPBDI@Z */
11894 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDI@Z */
11895 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_open_old, 12)
11896 void __thiscall basic_ofstream_wchar_open_old(basic_ofstream_wchar *this,
11897 const char *name, unsigned int mode)
11899 basic_ofstream_wchar_open(this, name, mode, _SH_DENYNO);
11902 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXPBGHH@Z */
11903 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBGHH@Z */
11904 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXPB_WHH@Z */
11905 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEB_WHH@Z */
11906 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPBGHH@Z */
11907 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEBGHH@Z */
11908 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPB_WHH@Z */
11909 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEB_WHH@Z */
11910 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_open_wchar, 16)
11911 void __thiscall basic_ofstream_wchar_open_wchar(basic_ofstream_wchar *this,
11912 const wchar_t *name, int mode, int prot)
11914 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
11916 if(!basic_filebuf_wchar_open_wchar(&this->filebuf, name, mode|OPENMODE_out, prot)) {
11917 basic_ios_wchar *basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11918 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
11922 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXPBGI@Z */
11923 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBGI@Z */
11924 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXPB_WI@Z */
11925 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEB_WI@Z */
11926 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPBGI@Z */
11927 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEBGI@Z */
11928 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPB_WI@Z */
11929 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEB_WI@Z */
11930 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_open_wchar_old, 12)
11931 void __thiscall basic_ofstream_wchar_open_wchar_old(basic_ofstream_wchar *this,
11932 const wchar_t *name, unsigned int mode)
11934 basic_ofstream_wchar_open_wchar(this, name, mode, _SH_DENYNO);
11937 /* ?rdbuf@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
11938 /* ?rdbuf@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
11939 /* ?rdbuf@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
11940 /* ?rdbuf@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
11941 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_rdbuf, 4)
11942 basic_filebuf_wchar* __thiscall basic_ofstream_wchar_rdbuf(const basic_ofstream_wchar *this)
11944 TRACE("(%p)\n", this);
11945 return (basic_filebuf_wchar*)&this->filebuf;
11948 static inline basic_ios_char* basic_ifstream_char_to_basic_ios(basic_ifstream_char *ptr)
11950 return (basic_ios_char*)((char*)ptr+basic_ifstream_char_vbtable[1]);
11953 static inline basic_ifstream_char* basic_ifstream_char_from_basic_ios(basic_ios_char *ptr)
11955 return (basic_ifstream_char*)((char*)ptr-basic_ifstream_char_vbtable[1]);
11958 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@XZ */
11959 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@XZ */
11960 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor, 8)
11961 basic_ifstream_char* __thiscall basic_ifstream_char_ctor(basic_ifstream_char *this, bool virt_init)
11963 basic_ios_char *basic_ios;
11965 TRACE("(%p %d)\n", this, virt_init);
11967 if(virt_init) {
11968 this->base.vbtable = basic_ifstream_char_vbtable;
11969 basic_ios = basic_istream_char_get_basic_ios(&this->base);
11970 INIT_BASIC_IOS_VTORDISP(basic_ios);
11971 basic_ios_char_ctor(basic_ios);
11972 }else {
11973 basic_ios = basic_istream_char_get_basic_ios(&this->base);
11976 basic_filebuf_char_ctor(&this->filebuf);
11977 basic_istream_char_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
11978 basic_ios->base.vtable = &basic_ifstream_char_vtable;
11979 return this;
11982 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@PAU_iobuf@@@Z */
11983 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@PEAU_iobuf@@@Z */
11984 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor_file, 12)
11985 basic_ifstream_char* __thiscall basic_ifstream_char_ctor_file(
11986 basic_ifstream_char *this, FILE *file, bool virt_init)
11988 basic_ios_char *basic_ios;
11990 TRACE("(%p %p %d)\n", this, file, virt_init);
11992 if(virt_init) {
11993 this->base.vbtable = basic_ifstream_char_vbtable;
11994 basic_ios = basic_istream_char_get_basic_ios(&this->base);
11995 INIT_BASIC_IOS_VTORDISP(basic_ios);
11996 basic_ios_char_ctor(basic_ios);
11997 }else {
11998 basic_ios = basic_istream_char_get_basic_ios(&this->base);
12001 basic_filebuf_char_ctor_file(&this->filebuf, file);
12002 basic_istream_char_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
12003 basic_ios->base.vtable = &basic_ifstream_char_vtable;
12004 return this;
12007 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@PBDHH@Z */
12008 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDHH@Z */
12009 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor_name, 20)
12010 basic_ifstream_char* __thiscall basic_ifstream_char_ctor_name(basic_ifstream_char *this,
12011 const char *name, int mode, int prot, bool virt_init)
12013 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
12015 basic_ifstream_char_ctor(this, virt_init);
12017 if(!basic_filebuf_char_open(&this->filebuf, name, mode|OPENMODE_in, prot)) {
12018 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
12019 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
12021 return this;
12024 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@PBDH@Z */
12025 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDH@Z */
12026 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor_name_old, 16)
12027 basic_ifstream_char* __thiscall basic_ifstream_char_ctor_name_old(basic_ifstream_char *this,
12028 const char *name, int mode, bool virt_init)
12030 return basic_ifstream_char_ctor_name(this, name, mode, _SH_DENYNO, virt_init);
12033 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@PBGHH@Z */
12034 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@PEBGHH@Z */
12035 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@PB_WHH@Z */
12036 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@PEB_WHH@Z */
12037 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor_name_wchar, 20)
12038 basic_ifstream_char* __thiscall basic_ifstream_char_ctor_name_wchar(basic_ifstream_char *this,
12039 const wchar_t *name, int mode, int prot, bool virt_init)
12041 TRACE("(%p %s %d %d %d)\n", this, debugstr_w(name), mode, prot, virt_init);
12043 basic_ifstream_char_ctor(this, virt_init);
12045 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode|OPENMODE_in, prot)) {
12046 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
12047 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
12049 return this;
12052 /* ??1?$basic_ifstream@DU?$char_traits@D@std@@@std@@UAE@XZ */
12053 /* ??1?$basic_ifstream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
12054 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_dtor, 4)
12055 void __thiscall basic_ifstream_char_dtor(basic_ios_char *base)
12057 basic_ifstream_char *this = basic_ifstream_char_from_basic_ios(base);
12059 TRACE("(%p)\n", this);
12061 basic_istream_char_dtor(basic_istream_char_to_basic_ios(&this->base));
12062 basic_filebuf_char_dtor(&this->filebuf);
12065 /* ??_D?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
12066 /* ??_D?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
12067 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_vbase_dtor, 4)
12068 void __thiscall basic_ifstream_char_vbase_dtor(basic_ifstream_char *this)
12070 basic_ios_char *base = basic_ifstream_char_to_basic_ios(this);
12072 TRACE("(%p)\n", this);
12074 basic_ifstream_char_dtor(base);
12075 basic_ios_char_dtor(base);
12078 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_vector_dtor, 8)
12079 basic_ifstream_char* __thiscall basic_ifstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
12081 basic_ifstream_char *this = basic_ifstream_char_from_basic_ios(base);
12083 TRACE("(%p %x)\n", this, flags);
12085 if(flags & 2) {
12086 /* we have an array, with the number of elements stored before the first object */
12087 INT_PTR i, *ptr = (INT_PTR *)this-1;
12089 for(i=*ptr-1; i>=0; i--)
12090 basic_ifstream_char_vbase_dtor(this+i);
12091 operator_delete(ptr);
12092 } else {
12093 basic_ifstream_char_vbase_dtor(this);
12094 if(flags & 1)
12095 operator_delete(this);
12098 return this;
12101 /* ?close@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
12102 /* ?close@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
12103 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_close, 4)
12104 void __thiscall basic_ifstream_char_close(basic_ifstream_char *this)
12106 TRACE("(%p)\n", this);
12108 if(!basic_filebuf_char_close(&this->filebuf)) {
12109 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
12110 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
12114 /* ?is_open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QBE_NXZ */
12115 /* ?is_open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEBA_NXZ */
12116 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_is_open, 4)
12117 bool __thiscall basic_ifstream_char_is_open(const basic_ifstream_char *this)
12119 TRACE("(%p)\n", this);
12120 return basic_filebuf_char_is_open(&this->filebuf);
12123 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPBDHH@Z */
12124 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDHH@Z */
12125 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_open, 16)
12126 void __thiscall basic_ifstream_char_open(basic_ifstream_char *this,
12127 const char *name, int mode, int prot)
12129 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
12131 if(!basic_filebuf_char_open(&this->filebuf, name, mode|OPENMODE_in, prot)) {
12132 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
12133 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
12137 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPBDI@Z */
12138 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDI@Z */
12139 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_open_old, 12)
12140 void __thiscall basic_ifstream_char_open_old(basic_ifstream_char *this,
12141 const char *name, unsigned int mode)
12143 basic_ifstream_char_open(this, name, mode, _SH_DENYNO);
12146 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPBGHH@Z */
12147 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGHH@Z */
12148 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPB_WHH@Z */
12149 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WHH@Z */
12150 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_open_wchar, 16)
12151 void __thiscall basic_ifstream_char_open_wchar(basic_ifstream_char *this,
12152 const wchar_t *name, int mode, int prot)
12154 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
12156 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode|OPENMODE_in, prot)) {
12157 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
12158 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
12162 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPBGI@Z */
12163 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGI@Z */
12164 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPB_WI@Z */
12165 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WI@Z */
12166 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_open_wchar_old, 12)
12167 void __thiscall basic_ifstream_char_open_wchar_old(basic_ifstream_char *this,
12168 const wchar_t *name, unsigned int mode)
12170 basic_ifstream_char_open_wchar(this, name, mode, _SH_DENYNO);
12173 /* ?rdbuf@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
12174 /* ?rdbuf@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
12175 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_rdbuf, 4)
12176 basic_filebuf_char* __thiscall basic_ifstream_char_rdbuf(const basic_ifstream_char *this)
12178 TRACE("(%p)\n", this);
12179 return (basic_filebuf_char*)&this->filebuf;
12182 static inline basic_ios_wchar* basic_ifstream_wchar_to_basic_ios(basic_ifstream_wchar *ptr)
12184 return (basic_ios_wchar*)((char*)ptr+basic_ifstream_wchar_vbtable[1]);
12187 static inline basic_ifstream_wchar* basic_ifstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
12189 return (basic_ifstream_wchar*)((char*)ptr-basic_ifstream_wchar_vbtable[1]);
12192 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAE@XZ */
12193 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAA@XZ */
12194 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_ctor, 8)
12195 basic_ifstream_wchar* __thiscall basic_ifstream_wchar_ctor(basic_ifstream_wchar *this, bool virt_init)
12197 basic_ios_wchar *basic_ios;
12199 TRACE("(%p %d)\n", this, virt_init);
12201 if(virt_init) {
12202 this->base.vbtable = basic_ifstream_wchar_vbtable;
12203 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
12204 INIT_BASIC_IOS_VTORDISP(basic_ios);
12205 basic_ios_wchar_ctor(basic_ios);
12206 }else {
12207 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
12210 basic_filebuf_wchar_ctor(&this->filebuf);
12211 basic_istream_wchar_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
12212 basic_ios->base.vtable = &basic_ifstream_wchar_vtable;
12213 return this;
12216 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@XZ */
12217 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@XZ */
12218 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_ctor, 8)
12219 basic_ifstream_wchar* __thiscall basic_ifstream_short_ctor(basic_ifstream_wchar *this, bool virt_init)
12221 basic_ifstream_wchar_ctor(this, virt_init);
12222 basic_istream_wchar_get_basic_ios(&this->base)->base.vtable = &basic_ifstream_short_vtable;
12223 return this;
12226 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAE@PAU_iobuf@@@Z */
12227 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAU_iobuf@@@Z */
12228 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_ctor_file, 12)
12229 basic_ifstream_wchar* __thiscall basic_ifstream_wchar_ctor_file(
12230 basic_ifstream_wchar *this, FILE *file, bool virt_init)
12232 basic_ios_wchar *basic_ios;
12234 TRACE("(%p %p %d)\n", this, file, virt_init);
12236 if(virt_init) {
12237 this->base.vbtable = basic_ifstream_wchar_vbtable;
12238 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
12239 INIT_BASIC_IOS_VTORDISP(basic_ios);
12240 basic_ios_wchar_ctor(basic_ios);
12241 }else {
12242 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
12245 basic_filebuf_wchar_ctor_file(&this->filebuf, file);
12246 basic_istream_wchar_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
12247 basic_ios->base.vtable = &basic_ifstream_wchar_vtable;
12248 return this;
12251 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@PAU_iobuf@@@Z */
12252 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@PEAU_iobuf@@@Z */
12253 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_ctor_file, 12)
12254 basic_ifstream_wchar* __thiscall basic_ifstream_short_ctor_file(
12255 basic_ifstream_wchar *this, FILE *file, bool virt_init)
12257 basic_ifstream_wchar_ctor_file(this, file, virt_init);
12258 basic_istream_wchar_get_basic_ios(&this->base)->base.vtable = &basic_ifstream_short_vtable;
12259 return this;
12262 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAE@PBDHH@Z */
12263 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEBDHH@Z */
12264 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_ctor_name, 20)
12265 basic_ifstream_wchar* __thiscall basic_ifstream_wchar_ctor_name(basic_ifstream_wchar *this,
12266 const char *name, int mode, int prot, bool virt_init)
12268 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
12270 basic_ifstream_wchar_ctor(this, virt_init);
12272 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode|OPENMODE_in, prot)) {
12273 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
12274 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
12276 return this;
12279 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@PBDHH@Z */
12280 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@PEBDHH@Z */
12281 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_ctor_name, 20)
12282 basic_ifstream_wchar* __thiscall basic_ifstream_short_ctor_name(basic_ifstream_wchar *this,
12283 const char *name, int mode, int prot, bool virt_init)
12285 basic_ifstream_wchar_ctor_name(this, name, mode, prot, virt_init);
12286 basic_istream_wchar_get_basic_ios(&this->base)->base.vtable = &basic_ifstream_short_vtable;
12287 return this;
12290 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAE@PBDH@Z */
12291 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEBDH@Z */
12292 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_ctor_name_old, 16)
12293 basic_ifstream_wchar* __thiscall basic_ifstream_wchar_ctor_name_old(basic_ifstream_wchar *this,
12294 const char *name, int mode, bool virt_init)
12296 return basic_ifstream_wchar_ctor_name(this, name, mode, _SH_DENYNO, virt_init);
12299 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@PBDH@Z */
12300 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@PEBDH@Z */
12301 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_ctor_name_old, 16)
12302 basic_ifstream_wchar* __thiscall basic_ifstream_short_ctor_name_old(basic_ifstream_wchar *this,
12303 const char *name, int mode, bool virt_init)
12305 return basic_ifstream_short_ctor_name(this, name, mode, _SH_DENYNO, virt_init);
12308 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAE@PBGHH@Z */
12309 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEBGHH@Z */
12310 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAE@PB_WHH@Z */
12311 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEB_WHH@Z */
12312 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_ctor_name_wchar, 20)
12313 basic_ifstream_wchar* __thiscall basic_ifstream_wchar_ctor_name_wchar(basic_ifstream_wchar *this,
12314 const wchar_t *name, int mode, int prot, bool virt_init)
12316 TRACE("(%p %s %d %d %d)\n", this, debugstr_w(name), mode, prot, virt_init);
12318 basic_ifstream_wchar_ctor(this, virt_init);
12320 if(!basic_filebuf_wchar_open_wchar(&this->filebuf, name, mode|OPENMODE_in, prot)) {
12321 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
12322 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
12324 return this;
12327 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@PBGHH@Z */
12328 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@PEBGHH@Z */
12329 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@PB_WHH@Z */
12330 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@PEB_WHH@Z */
12331 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_ctor_name_wchar, 20)
12332 basic_ifstream_wchar* __thiscall basic_ifstream_short_ctor_name_wchar(basic_ifstream_wchar *this,
12333 const wchar_t *name, int mode, int prot, bool virt_init)
12335 basic_ifstream_wchar_ctor_name_wchar(this, name, mode, prot, virt_init);
12336 basic_istream_wchar_get_basic_ios(&this->base)->base.vtable = &basic_ifstream_short_vtable;
12337 return this;
12340 /* ??1?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
12341 /* ??1?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
12342 /* ??1?$basic_ifstream@GU?$char_traits@G@std@@@std@@UAE@XZ */
12343 /* ??1?$basic_ifstream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
12344 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_dtor, 4)
12345 void __thiscall basic_ifstream_wchar_dtor(basic_ios_wchar *base)
12347 basic_ifstream_wchar *this = basic_ifstream_wchar_from_basic_ios(base);
12349 TRACE("(%p)\n", this);
12351 basic_istream_wchar_dtor(basic_istream_wchar_to_basic_ios(&this->base));
12352 basic_filebuf_wchar_dtor(&this->filebuf);
12355 /* ??_D?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
12356 /* ??_D?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
12357 /* ??_D?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
12358 /* ??_D?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
12359 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_vbase_dtor, 4)
12360 void __thiscall basic_ifstream_wchar_vbase_dtor(basic_ifstream_wchar *this)
12362 basic_ios_wchar *base = basic_ifstream_wchar_to_basic_ios(this);
12364 TRACE("(%p)\n", this);
12366 basic_ifstream_wchar_dtor(base);
12367 basic_ios_wchar_dtor(base);
12370 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_vector_dtor, 8)
12371 basic_ifstream_wchar* __thiscall basic_ifstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
12373 basic_ifstream_wchar *this = basic_ifstream_wchar_from_basic_ios(base);
12375 TRACE("(%p %x)\n", this, flags);
12377 if(flags & 2) {
12378 /* we have an array, with the number of elements stored before the first object */
12379 INT_PTR i, *ptr = (INT_PTR *)this-1;
12381 for(i=*ptr-1; i>=0; i--)
12382 basic_ifstream_wchar_vbase_dtor(this+i);
12383 operator_delete(ptr);
12384 } else {
12385 basic_ifstream_wchar_vbase_dtor(this);
12386 if(flags & 1)
12387 operator_delete(this);
12390 return this;
12393 /* ?close@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
12394 /* ?close@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
12395 /* ?close@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
12396 /* ?close@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
12397 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_close, 4)
12398 void __thiscall basic_ifstream_wchar_close(basic_ifstream_wchar *this)
12400 TRACE("(%p)\n", this);
12402 if(!basic_filebuf_wchar_close(&this->filebuf)) {
12403 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
12404 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
12408 /* ?is_open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QBE_NXZ */
12409 /* ?is_open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEBA_NXZ */
12410 /* ?is_open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QBE_NXZ */
12411 /* ?is_open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEBA_NXZ */
12412 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_is_open, 4)
12413 bool __thiscall basic_ifstream_wchar_is_open(const basic_ifstream_wchar *this)
12415 TRACE("(%p)\n", this);
12416 return basic_filebuf_wchar_is_open(&this->filebuf);
12419 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDHH@Z */
12420 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDHH@Z */
12421 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPBDHH@Z */
12422 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDHH@Z */
12423 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_open, 16)
12424 void __thiscall basic_ifstream_wchar_open(basic_ifstream_wchar *this,
12425 const char *name, int mode, int prot)
12427 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
12429 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode|OPENMODE_in, prot)) {
12430 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
12431 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
12435 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDI@Z */
12436 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDI@Z */
12437 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPBDI@Z */
12438 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDI@Z */
12439 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_open_old, 12)
12440 void __thiscall basic_ifstream_wchar_open_old(basic_ifstream_wchar *this,
12441 const char *name, unsigned int mode)
12443 basic_ifstream_wchar_open(this, name, mode, _SH_DENYNO);
12446 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXPBGHH@Z */
12447 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBGHH@Z */
12448 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXPB_WHH@Z */
12449 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEB_WHH@Z */
12450 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPBGHH@Z */
12451 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEBGHH@Z */
12452 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPB_WHH@Z */
12453 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEB_WHH@Z */
12454 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_open_wchar, 16)
12455 void __thiscall basic_ifstream_wchar_open_wchar(basic_ifstream_wchar *this,
12456 const wchar_t *name, int mode, int prot)
12458 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
12460 if(!basic_filebuf_wchar_open_wchar(&this->filebuf, name, mode|OPENMODE_in, prot)) {
12461 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
12462 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
12466 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXPBGI@Z */
12467 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBGI@Z */
12468 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXPB_WI@Z */
12469 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEB_WI@Z */
12470 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPBGI@Z */
12471 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEBGI@Z */
12472 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPB_WI@Z */
12473 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEB_WI@Z */
12474 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_open_wchar_old, 12)
12475 void __thiscall basic_ifstream_wchar_open_wchar_old(basic_ifstream_wchar *this,
12476 const wchar_t *name, unsigned int mode)
12478 basic_ifstream_wchar_open_wchar(this, name, mode, _SH_DENYNO);
12481 /* ?rdbuf@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
12482 /* ?rdbuf@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
12483 /* ?rdbuf@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
12484 /* ?rdbuf@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
12485 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_rdbuf, 4)
12486 basic_filebuf_wchar* __thiscall basic_ifstream_wchar_rdbuf(const basic_ifstream_wchar *this)
12488 TRACE("(%p)\n", this);
12489 return (basic_filebuf_wchar*)&this->filebuf;
12492 static inline basic_ios_char* basic_fstream_char_to_basic_ios(basic_fstream_char *ptr)
12494 return (basic_ios_char*)((char*)ptr+basic_fstream_char_vbtable1[1]);
12497 static inline basic_fstream_char* basic_fstream_char_from_basic_ios(basic_ios_char *ptr)
12499 return (basic_fstream_char*)((char*)ptr-basic_fstream_char_vbtable1[1]);
12502 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@XZ */
12503 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@XZ */
12504 DEFINE_THISCALL_WRAPPER(basic_fstream_char_ctor, 8)
12505 basic_fstream_char* __thiscall basic_fstream_char_ctor(basic_fstream_char *this, bool virt_init)
12507 basic_ios_char *basic_ios;
12509 TRACE("(%p %d)\n", this, virt_init);
12511 if(virt_init) {
12512 this->base.base1.vbtable = basic_fstream_char_vbtable1;
12513 this->base.base2.vbtable = basic_fstream_char_vbtable2;
12514 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
12515 INIT_BASIC_IOS_VTORDISP(basic_ios);
12516 basic_ios_char_ctor(basic_ios);
12517 }else {
12518 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
12521 basic_filebuf_char_ctor(&this->filebuf);
12522 basic_iostream_char_ctor(&this->base, &this->filebuf.base, FALSE);
12523 basic_ios->base.vtable = &basic_fstream_char_vtable;
12524 return this;
12527 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@PAU_iobuf@@@Z */
12528 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@PEAU_iobuf@@@Z */
12529 DEFINE_THISCALL_WRAPPER(basic_fstream_char_ctor_file, 12)
12530 basic_fstream_char* __thiscall basic_fstream_char_ctor_file(basic_fstream_char *this,
12531 FILE *file, bool virt_init)
12533 basic_ios_char *basic_ios;
12535 TRACE("(%p %p %d)\n", this, file, virt_init);
12537 if(virt_init) {
12538 this->base.base1.vbtable = basic_fstream_char_vbtable1;
12539 this->base.base2.vbtable = basic_fstream_char_vbtable2;
12540 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
12541 INIT_BASIC_IOS_VTORDISP(basic_ios);
12542 basic_ios_char_ctor(basic_ios);
12543 }else {
12544 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
12547 basic_filebuf_char_ctor_file(&this->filebuf, file);
12548 basic_iostream_char_ctor(&this->base, &this->filebuf.base, FALSE);
12549 basic_ios->base.vtable = &basic_fstream_char_vtable;
12550 return this;
12553 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@PBDHH@Z */
12554 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDHH@Z */
12555 DEFINE_THISCALL_WRAPPER(basic_fstream_char_ctor_name, 20)
12556 basic_fstream_char* __thiscall basic_fstream_char_ctor_name(basic_fstream_char *this,
12557 const char *name, int mode, int prot, bool virt_init)
12559 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
12561 basic_fstream_char_ctor(this, virt_init);
12563 if(!basic_filebuf_char_open(&this->filebuf, name, mode, prot)) {
12564 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
12565 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
12567 return this;
12570 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@PBDH@Z */
12571 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDH@Z */
12572 DEFINE_THISCALL_WRAPPER(basic_fstream_char_ctor_name_noprot, 16)
12573 basic_fstream_char* __thiscall basic_fstream_char_ctor_name_noprot(basic_fstream_char *this,
12574 const char *name, int mode, bool virt_init)
12576 return basic_fstream_char_ctor_name(this, name, mode, _SH_DENYNO, virt_init);
12579 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@PBGHH@Z */
12580 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@PEBGHH@Z */
12581 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@PB_WHH@Z */
12582 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@PEB_WHH@Z */
12583 DEFINE_THISCALL_WRAPPER(basic_fstream_char_ctor_name_wchar, 20)
12584 basic_fstream_char* __thiscall basic_fstream_char_ctor_name_wchar(basic_fstream_char *this,
12585 const wchar_t *name, int mode, int prot, bool virt_init)
12587 TRACE("(%p %s %d %d %d)\n", this, debugstr_w(name), mode, prot, virt_init);
12589 basic_fstream_char_ctor(this, virt_init);
12591 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode, prot)) {
12592 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
12593 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
12595 return this;
12598 /* ??1?$basic_fstream@DU?$char_traits@D@std@@@std@@UAE@XZ */
12599 /* ??1?$basic_fstream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
12600 DEFINE_THISCALL_WRAPPER(basic_fstream_char_dtor, 4)
12601 void __thiscall basic_fstream_char_dtor(basic_ios_char *base)
12603 basic_fstream_char *this = basic_fstream_char_from_basic_ios(base);
12605 TRACE("(%p)\n", this);
12607 basic_iostream_char_dtor(basic_iostream_char_to_basic_ios(&this->base));
12608 basic_filebuf_char_dtor(&this->filebuf);
12611 /* ??_D?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
12612 /* ??_D?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
12613 DEFINE_THISCALL_WRAPPER(basic_fstream_char_vbase_dtor, 4)
12614 void __thiscall basic_fstream_char_vbase_dtor(basic_fstream_char *this)
12616 basic_ios_char *base = basic_fstream_char_to_basic_ios(this);
12618 TRACE("(%p)\n", this);
12620 basic_fstream_char_dtor(base);
12621 basic_ios_char_dtor(base);
12624 DEFINE_THISCALL_WRAPPER(basic_fstream_char_vector_dtor, 8)
12625 basic_fstream_char* __thiscall basic_fstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
12627 basic_fstream_char *this = basic_fstream_char_from_basic_ios(base);
12629 TRACE("(%p %x)\n", this, flags);
12631 if(flags & 2) {
12632 /* we have an array, with the number of elements stored before the first object */
12633 INT_PTR i, *ptr = (INT_PTR *)this-1;
12635 for(i=*ptr-1; i>=0; i--)
12636 basic_fstream_char_vbase_dtor(this+i);
12637 operator_delete(ptr);
12638 } else {
12639 basic_fstream_char_vbase_dtor(this);
12640 if(flags & 1)
12641 operator_delete(this);
12644 return this;
12647 /* ?close@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
12648 /* ?close@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
12649 DEFINE_THISCALL_WRAPPER(basic_fstream_char_close, 4)
12650 void __thiscall basic_fstream_char_close(basic_fstream_char *this)
12652 TRACE("(%p)\n", this);
12654 if(!basic_filebuf_char_close(&this->filebuf)) {
12655 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
12656 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
12660 /* ?is_open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QBE_NXZ */
12661 /* ?is_open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEBA_NXZ */
12662 DEFINE_THISCALL_WRAPPER(basic_fstream_char_is_open, 4)
12663 bool __thiscall basic_fstream_char_is_open(const basic_fstream_char *this)
12665 TRACE("(%p)\n", this);
12666 return basic_filebuf_char_is_open(&this->filebuf);
12669 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPBDHH@Z */
12670 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDHH@Z */
12671 DEFINE_THISCALL_WRAPPER(basic_fstream_char_open, 16)
12672 void __thiscall basic_fstream_char_open(basic_fstream_char *this,
12673 const char *name, int mode, int prot)
12675 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
12677 if(!basic_filebuf_char_open(&this->filebuf, name, mode, prot)) {
12678 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
12679 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
12683 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPBDI@Z */
12684 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDI@Z */
12685 DEFINE_THISCALL_WRAPPER(basic_fstream_char_open_old, 12)
12686 void __thiscall basic_fstream_char_open_old(basic_fstream_char *this,
12687 const char *name, unsigned int mode)
12689 basic_fstream_char_open(this, name, mode, _SH_DENYNO);
12692 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPBGHH@Z */
12693 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGHH@Z */
12694 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPB_WHH@Z */
12695 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WHH@Z */
12696 DEFINE_THISCALL_WRAPPER(basic_fstream_char_open_wchar, 16)
12697 void __thiscall basic_fstream_char_open_wchar(basic_fstream_char *this,
12698 const wchar_t *name, int mode, int prot)
12700 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
12702 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode, prot)) {
12703 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
12704 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
12708 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPBGI@Z */
12709 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGI@Z */
12710 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPB_WI@Z */
12711 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WI@Z */
12712 DEFINE_THISCALL_WRAPPER(basic_fstream_char_open_wchar_old, 12)
12713 void __thiscall basic_fstream_char_open_wchar_old(basic_fstream_char *this,
12714 const wchar_t *name, unsigned int mode)
12716 basic_fstream_char_open_wchar(this, name, mode, _SH_DENYNO);
12719 /* ?rdbuf@?$basic_fstream@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
12720 /* ?rdbuf@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
12721 DEFINE_THISCALL_WRAPPER(basic_fstream_char_rdbuf, 4)
12722 basic_filebuf_char* __thiscall basic_fstream_char_rdbuf(const basic_fstream_char *this)
12724 TRACE("(%p)\n", this);
12725 return (basic_filebuf_char*)&this->filebuf;
12728 static inline basic_ios_wchar* basic_fstream_wchar_to_basic_ios(basic_fstream_wchar *ptr)
12730 return (basic_ios_wchar*)((char*)ptr+basic_fstream_wchar_vbtable1[1]);
12733 static inline basic_fstream_wchar* basic_fstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
12735 return (basic_fstream_wchar*)((char*)ptr-basic_fstream_wchar_vbtable1[1]);
12738 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAE@XZ */
12739 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAA@XZ */
12740 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_ctor, 8)
12741 basic_fstream_wchar* __thiscall basic_fstream_wchar_ctor(basic_fstream_wchar *this, bool virt_init)
12743 basic_ios_wchar *basic_ios;
12745 TRACE("(%p %d)\n", this, virt_init);
12747 if(virt_init) {
12748 this->base.base1.vbtable = basic_fstream_wchar_vbtable1;
12749 this->base.base2.vbtable = basic_fstream_wchar_vbtable2;
12750 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12751 INIT_BASIC_IOS_VTORDISP(basic_ios);
12752 basic_ios_wchar_ctor(basic_ios);
12753 }else {
12754 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12757 basic_filebuf_wchar_ctor(&this->filebuf);
12758 basic_iostream_wchar_ctor(&this->base, &this->filebuf.base, FALSE);
12759 basic_ios->base.vtable = &basic_fstream_wchar_vtable;
12760 return this;
12763 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@XZ */
12764 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@XZ */
12765 DEFINE_THISCALL_WRAPPER(basic_fstream_short_ctor, 8)
12766 basic_fstream_wchar* __thiscall basic_fstream_short_ctor(basic_fstream_wchar *this, bool virt_init)
12768 basic_fstream_wchar_ctor(this, virt_init);
12769 basic_istream_wchar_get_basic_ios(&this->base.base1)->base.vtable = &basic_fstream_short_vtable;
12770 return this;
12773 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAE@PAU_iobuf@@@Z */
12774 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAU_iobuf@@@Z */
12775 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_ctor_file, 12)
12776 basic_fstream_wchar* __thiscall basic_fstream_wchar_ctor_file(basic_fstream_wchar *this,
12777 FILE *file, bool virt_init)
12779 basic_ios_wchar *basic_ios;
12781 TRACE("(%p %p %d)\n", this, file, virt_init);
12783 if(virt_init) {
12784 this->base.base1.vbtable = basic_fstream_wchar_vbtable1;
12785 this->base.base2.vbtable = basic_fstream_wchar_vbtable2;
12786 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12787 INIT_BASIC_IOS_VTORDISP(basic_ios);
12788 basic_ios_wchar_ctor(basic_ios);
12789 }else {
12790 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12793 basic_filebuf_wchar_ctor_file(&this->filebuf, file);
12794 basic_iostream_wchar_ctor(&this->base, &this->filebuf.base, FALSE);
12795 basic_ios->base.vtable = &basic_fstream_wchar_vtable;
12796 return this;
12799 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@PAU_iobuf@@@Z */
12800 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@PEAU_iobuf@@@Z */
12801 DEFINE_THISCALL_WRAPPER(basic_fstream_short_ctor_file, 12)
12802 basic_fstream_wchar* __thiscall basic_fstream_short_ctor_file(basic_fstream_wchar *this,
12803 FILE *file, bool virt_init)
12805 basic_fstream_wchar_ctor_file(this, file, virt_init);
12806 basic_istream_wchar_get_basic_ios(&this->base.base1)->base.vtable = &basic_fstream_short_vtable;
12807 return this;
12810 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAE@PB_WHH@Z */
12811 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEB_WHH@Z */
12812 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_ctor_name, 20)
12813 basic_fstream_wchar* __thiscall basic_fstream_wchar_ctor_name(basic_fstream_wchar *this,
12814 const char *name, int mode, int prot, bool virt_init)
12816 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
12818 basic_fstream_wchar_ctor(this, virt_init);
12820 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode, prot)) {
12821 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12822 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
12824 return this;
12827 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@PBGHH@Z */
12828 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@PEBGHH@Z */
12829 DEFINE_THISCALL_WRAPPER(basic_fstream_short_ctor_name, 20)
12830 basic_fstream_wchar* __thiscall basic_fstream_short_ctor_name(basic_fstream_wchar *this,
12831 const char *name, int mode, int prot, bool virt_init)
12833 basic_fstream_wchar_ctor_name(this, name, mode, prot, virt_init);
12834 basic_istream_wchar_get_basic_ios(&this->base.base1)->base.vtable = &basic_fstream_short_vtable;
12835 return this;
12838 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAE@PBDH@Z */
12839 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_ctor_name_noprot, 16)
12840 basic_fstream_wchar* __thiscall basic_fstream_wchar_ctor_name_noprot(basic_fstream_wchar *this,
12841 const char *name, int mode, bool virt_init)
12843 return basic_fstream_wchar_ctor_name(this, name, mode, _SH_DENYNO, virt_init);
12846 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@PBDH@Z */
12847 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@PEBDH@Z */
12848 DEFINE_THISCALL_WRAPPER(basic_fstream_short_ctor_name_noprot, 16)
12849 basic_fstream_wchar* __thiscall basic_fstream_short_ctor_name_noprot(basic_fstream_wchar *this,
12850 const char *name, int mode, bool virt_init)
12852 return basic_fstream_short_ctor_name(this, name, mode, _SH_DENYNO, virt_init);
12855 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAE@PBGHH@Z */
12856 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEBGHH@Z */
12857 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAE@PB_WHH@Z */
12858 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEB_WHH@Z */
12859 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_ctor_name_wchar, 20)
12860 basic_fstream_wchar* __thiscall basic_fstream_wchar_ctor_name_wchar(basic_fstream_wchar *this,
12861 const wchar_t *name, int mode, int prot, bool virt_init)
12863 TRACE("(%p %s %d %d %d)\n", this, debugstr_w(name), mode, prot, virt_init);
12865 basic_fstream_wchar_ctor(this, virt_init);
12867 if(!basic_filebuf_wchar_open_wchar(&this->filebuf, name, mode, prot)) {
12868 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12869 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
12871 return this;
12874 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@PBGHH@Z */
12875 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@PEBGHH@Z */
12876 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@PB_WHH@Z */
12877 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@PEB_WHH@Z */
12878 DEFINE_THISCALL_WRAPPER(basic_fstream_short_ctor_name_wchar, 20)
12879 basic_fstream_wchar* __thiscall basic_fstream_short_ctor_name_wchar(basic_fstream_wchar *this,
12880 const wchar_t *name, int mode, int prot, bool virt_init)
12882 basic_fstream_wchar_ctor_name_wchar(this, name, mode, prot, virt_init);
12883 basic_istream_wchar_get_basic_ios(&this->base.base1)->base.vtable = &basic_fstream_short_vtable;
12884 return this;
12887 /* ??1?$basic_fstream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
12888 /* ??1?$basic_fstream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
12889 /* ??1?$basic_fstream@GU?$char_traits@G@std@@@std@@UAE@XZ */
12890 /* ??1?$basic_fstream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
12891 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_dtor, 4)
12892 void __thiscall basic_fstream_wchar_dtor(basic_ios_wchar *base)
12894 basic_fstream_wchar *this = basic_fstream_wchar_from_basic_ios(base);
12896 TRACE("(%p)\n", this);
12898 basic_iostream_wchar_dtor(basic_iostream_wchar_to_basic_ios(&this->base));
12899 basic_filebuf_wchar_dtor(&this->filebuf);
12902 /* ??_D?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
12903 /* ??_D?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
12904 /* ??_D?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
12905 /* ??_D?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
12906 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_vbase_dtor, 4)
12907 void __thiscall basic_fstream_wchar_vbase_dtor(basic_fstream_wchar *this)
12909 basic_ios_wchar *base = basic_fstream_wchar_to_basic_ios(this);
12911 TRACE("(%p)\n", this);
12913 basic_fstream_wchar_dtor(base);
12914 basic_ios_wchar_dtor(base);
12917 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_vector_dtor, 8)
12918 basic_fstream_wchar* __thiscall basic_fstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
12920 basic_fstream_wchar *this = basic_fstream_wchar_from_basic_ios(base);
12922 TRACE("(%p %x)\n", this, flags);
12924 if(flags & 2) {
12925 /* we have an array, with the number of elements stored before the first object */
12926 INT_PTR i, *ptr = (INT_PTR *)this-1;
12928 for(i=*ptr-1; i>=0; i--)
12929 basic_fstream_wchar_vbase_dtor(this+i);
12930 operator_delete(ptr);
12931 } else {
12932 basic_fstream_wchar_vbase_dtor(this);
12933 if(flags & 1)
12934 operator_delete(this);
12937 return this;
12940 /* ?close@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
12941 /* ?close@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
12942 /* ?close@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
12943 /* ?close@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
12944 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_close, 4)
12945 void __thiscall basic_fstream_wchar_close(basic_fstream_wchar *this)
12947 TRACE("(%p)\n", this);
12949 if(!basic_filebuf_wchar_close(&this->filebuf)) {
12950 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12951 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
12955 /* ?is_open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QBE_NXZ */
12956 /* ?is_open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEBA_NXZ */
12957 /* ?is_open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QBE_NXZ */
12958 /* ?is_open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEBA_NXZ */
12959 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_is_open, 4)
12960 bool __thiscall basic_fstream_wchar_is_open(const basic_fstream_wchar *this)
12962 TRACE("(%p)\n", this);
12963 return basic_filebuf_wchar_is_open(&this->filebuf);
12966 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDHH@Z */
12967 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDHH@Z */
12968 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXPBDHH@Z */
12969 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDHH@Z */
12970 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_open, 16)
12971 void __thiscall basic_fstream_wchar_open(basic_fstream_wchar *this,
12972 const char *name, int mode, int prot)
12974 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
12976 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode, prot)) {
12977 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12978 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
12982 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDI@Z */
12983 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDI@Z */
12984 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXPBDI@Z */
12985 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDI@Z */
12986 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_open_old, 12)
12987 void __thiscall basic_fstream_wchar_open_old(basic_fstream_wchar *this,
12988 const char *name, unsigned int mode)
12990 basic_fstream_wchar_open(this, name, mode, _SH_DENYNO);
12993 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXPBGHH@Z */
12994 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBGHH@Z */
12995 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXPB_WHH@Z */
12996 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEB_WHH@Z */
12997 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXPBGHH@Z */
12998 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXPEBGHH@Z */
12999 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXPB_WHH@Z */
13000 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXPEB_WHH@Z */
13001 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_open_wchar, 16)
13002 void __thiscall basic_fstream_wchar_open_wchar(basic_fstream_wchar *this,
13003 const wchar_t *name, int mode, int prot)
13005 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
13007 if(!basic_filebuf_wchar_open_wchar(&this->filebuf, name, mode, prot)) {
13008 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
13009 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
13013 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXPBGI@Z */
13014 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBGI@Z */
13015 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXPB_WI@Z */
13016 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEB_WI@Z */
13017 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXPBGI@Z */
13018 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXPEBGI@Z */
13019 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXPB_WI@Z */
13020 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXPEB_WI@Z */
13021 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_open_wchar_old, 12)
13022 void __thiscall basic_fstream_wchar_open_wchar_old(basic_fstream_wchar *this,
13023 const wchar_t *name, unsigned int mode)
13025 basic_fstream_wchar_open_wchar(this, name, mode, _SH_DENYNO);
13028 /* ?rdbuf@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
13029 /* ?rdbuf@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
13030 /* ?rdbuf@?$basic_fstream@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
13031 /* ?rdbuf@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
13032 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_rdbuf, 4)
13033 basic_filebuf_wchar* __thiscall basic_fstream_wchar_rdbuf(const basic_fstream_wchar *this)
13035 TRACE("(%p)\n", this);
13036 return (basic_filebuf_wchar*)&this->filebuf;
13039 static inline basic_ios_char* basic_ostringstream_char_to_basic_ios(basic_ostringstream_char *ptr)
13041 return (basic_ios_char*)((char*)ptr+basic_ostringstream_char_vbtable[1]);
13044 static inline basic_ostringstream_char* basic_ostringstream_char_from_basic_ios(basic_ios_char *ptr)
13046 return (basic_ostringstream_char*)((char*)ptr-basic_ostringstream_char_vbtable[1]);
13049 /* ??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 */
13050 /* ??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 */
13051 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_ctor_str, 16)
13052 basic_ostringstream_char* __thiscall basic_ostringstream_char_ctor_str(basic_ostringstream_char *this,
13053 const basic_string_char *str, int mode, bool virt_init)
13055 basic_ios_char *basic_ios;
13057 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
13059 if(virt_init) {
13060 this->base.vbtable = basic_ostringstream_char_vbtable;
13061 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
13062 INIT_BASIC_IOS_VTORDISP(basic_ios);
13063 basic_ios_char_ctor(basic_ios);
13064 }else {
13065 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
13068 basic_stringbuf_char_ctor_str(&this->strbuf, str, mode|OPENMODE_out);
13069 basic_ostream_char_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
13070 basic_ios->base.vtable = &basic_ostringstream_char_vtable;
13071 return this;
13074 /* ??0?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z */
13075 /* ??0?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z */
13076 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_ctor_mode, 12)
13077 basic_ostringstream_char* __thiscall basic_ostringstream_char_ctor_mode(
13078 basic_ostringstream_char *this, int mode, bool virt_init)
13080 basic_ios_char *basic_ios;
13082 TRACE("(%p %d %d)\n", this, mode, virt_init);
13084 if(virt_init) {
13085 this->base.vbtable = basic_ostringstream_char_vbtable;
13086 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
13087 INIT_BASIC_IOS_VTORDISP(basic_ios);
13088 basic_ios_char_ctor(basic_ios);
13089 }else {
13090 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
13093 basic_stringbuf_char_ctor_mode(&this->strbuf, mode|OPENMODE_out);
13094 basic_ostream_char_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
13095 basic_ios->base.vtable = &basic_ostringstream_char_vtable;
13096 return this;
13099 /* ??_F?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
13100 /* ??_F?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
13101 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_ctor, 4)
13102 basic_ostringstream_char* __thiscall basic_ostringstream_char_ctor(
13103 basic_ostringstream_char *this)
13105 return basic_ostringstream_char_ctor_mode(this, 0, TRUE);
13108 /* ??1?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ */
13109 /* ??1?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ */
13110 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_dtor, 4)
13111 void __thiscall basic_ostringstream_char_dtor(basic_ios_char *base)
13113 basic_ostringstream_char *this = basic_ostringstream_char_from_basic_ios(base);
13115 TRACE("(%p)\n", this);
13117 basic_stringbuf_char_dtor(&this->strbuf);
13118 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(&this->base));
13121 /* ??_D?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
13122 /* ??_D?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
13123 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_vbase_dtor, 4)
13124 void __thiscall basic_ostringstream_char_vbase_dtor(basic_ostringstream_char *this)
13126 basic_ios_char *base = basic_ostringstream_char_to_basic_ios(this);
13128 TRACE("(%p)\n", this);
13130 basic_ostringstream_char_dtor(base);
13131 basic_ios_char_dtor(base);
13134 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_vector_dtor, 8)
13135 basic_ostringstream_char* __thiscall basic_ostringstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
13137 basic_ostringstream_char *this = basic_ostringstream_char_from_basic_ios(base);
13139 TRACE("(%p %x)\n", this, flags);
13141 if(flags & 2) {
13142 /* we have an array, with the number of elements stored before the first object */
13143 INT_PTR i, *ptr = (INT_PTR *)this-1;
13145 for(i=*ptr-1; i>=0; i--)
13146 basic_ostringstream_char_vbase_dtor(this+i);
13147 operator_delete(ptr);
13148 } else {
13149 basic_ostringstream_char_vbase_dtor(this);
13150 if(flags & 1)
13151 operator_delete(this);
13154 return this;
13157 /* ?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 */
13158 /* ?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 */
13159 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_rdbuf, 4)
13160 basic_stringbuf_char* __thiscall basic_ostringstream_char_rdbuf(const basic_ostringstream_char *this)
13162 TRACE("(%p)\n", this);
13163 return (basic_stringbuf_char*)&this->strbuf;
13166 /* ?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 */
13167 /* ?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 */
13168 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_str_set, 8)
13169 void __thiscall basic_ostringstream_char_str_set(basic_ostringstream_char *this, const basic_string_char *str)
13171 TRACE("(%p %p)\n", this, str);
13172 basic_stringbuf_char_str_set(&this->strbuf, str);
13175 /* ?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 */
13176 /* ?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 */
13177 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_str_get, 8)
13178 basic_string_char* __thiscall basic_ostringstream_char_str_get(const basic_ostringstream_char *this, basic_string_char *ret)
13180 TRACE("(%p %p)\n", this, ret);
13181 return basic_stringbuf_char_str_get(&this->strbuf, ret);
13184 static inline basic_ios_wchar* basic_ostringstream_wchar_to_basic_ios(basic_ostringstream_wchar *ptr)
13186 return (basic_ios_wchar*)((char*)ptr+basic_ostringstream_wchar_vbtable[1]);
13189 static inline basic_ostringstream_wchar* basic_ostringstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
13191 return (basic_ostringstream_wchar*)((char*)ptr-basic_ostringstream_wchar_vbtable[1]);
13194 /* ??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 */
13195 /* ??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 */
13196 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_ctor_str, 16)
13197 basic_ostringstream_wchar* __thiscall basic_ostringstream_wchar_ctor_str(basic_ostringstream_wchar *this,
13198 const basic_string_wchar *str, int mode, bool virt_init)
13200 basic_ios_wchar *basic_ios;
13202 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
13204 if(virt_init) {
13205 this->base.vbtable = basic_ostringstream_wchar_vbtable;
13206 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
13207 INIT_BASIC_IOS_VTORDISP(basic_ios);
13208 basic_ios_wchar_ctor(basic_ios);
13209 }else {
13210 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
13213 basic_stringbuf_wchar_ctor_str(&this->strbuf, str, mode|OPENMODE_out);
13214 basic_ostream_wchar_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
13215 basic_ios->base.vtable = &basic_ostringstream_wchar_vtable;
13216 return this;
13219 /* ??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 */
13220 /* ??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 */
13221 DEFINE_THISCALL_WRAPPER(basic_ostringstream_short_ctor_str, 16)
13222 basic_ostringstream_wchar* __thiscall basic_ostringstream_short_ctor_str(basic_ostringstream_wchar *this,
13223 const basic_string_wchar *str, int mode, bool virt_init)
13225 basic_ostringstream_wchar_ctor_str(this, str, mode, virt_init);
13226 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &basic_ostringstream_short_vtable;
13227 return this;
13230 /* ??0?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@H@Z */
13231 /* ??0?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@H@Z */
13232 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_ctor_mode, 12)
13233 basic_ostringstream_wchar* __thiscall basic_ostringstream_wchar_ctor_mode(
13234 basic_ostringstream_wchar *this, int mode, bool virt_init)
13236 basic_ios_wchar *basic_ios;
13238 TRACE("(%p %d %d)\n", this, mode, virt_init);
13240 if(virt_init) {
13241 this->base.vbtable = basic_ostringstream_wchar_vbtable;
13242 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
13243 INIT_BASIC_IOS_VTORDISP(basic_ios);
13244 basic_ios_wchar_ctor(basic_ios);
13245 }else {
13246 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
13249 basic_stringbuf_wchar_ctor_mode(&this->strbuf, mode|OPENMODE_out);
13250 basic_ostream_wchar_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
13251 basic_ios->base.vtable = &basic_ostringstream_wchar_vtable;
13252 return this;
13255 /* ??0?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@H@Z */
13256 /* ??0?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@H@Z */
13257 DEFINE_THISCALL_WRAPPER(basic_ostringstream_short_ctor_mode, 12)
13258 basic_ostringstream_wchar* __thiscall basic_ostringstream_short_ctor_mode(
13259 basic_ostringstream_wchar *this, int mode, bool virt_init)
13261 basic_ostringstream_wchar_ctor_mode(this, mode, virt_init);
13262 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &basic_ostringstream_short_vtable;
13263 return this;
13266 /* ??_F?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
13267 /* ??_F?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
13268 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_ctor, 4)
13269 basic_ostringstream_wchar* __thiscall basic_ostringstream_wchar_ctor(
13270 basic_ostringstream_wchar *this)
13272 return basic_ostringstream_wchar_ctor_mode(this, 0, TRUE);
13275 /* ??_F?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
13276 /* ??_F?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
13277 DEFINE_THISCALL_WRAPPER(basic_ostringstream_short_ctor, 4)
13278 basic_ostringstream_wchar* __thiscall basic_ostringstream_short_ctor(
13279 basic_ostringstream_wchar *this)
13281 return basic_ostringstream_short_ctor_mode(this, 0, TRUE);
13284 /* ??1?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UAE@XZ */
13285 /* ??1?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UEAA@XZ */
13286 /* ??1?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UAE@XZ */
13287 /* ??1?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UEAA@XZ */
13288 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_dtor, 4)
13289 void __thiscall basic_ostringstream_wchar_dtor(basic_ios_wchar *base)
13291 basic_ostringstream_wchar *this = basic_ostringstream_wchar_from_basic_ios(base);
13293 TRACE("(%p)\n", this);
13295 basic_stringbuf_wchar_dtor(&this->strbuf);
13296 basic_ostream_wchar_dtor(basic_ostream_wchar_to_basic_ios(&this->base));
13299 /* ??_D?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
13300 /* ??_D?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
13301 /* ??_D?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
13302 /* ??_D?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
13303 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_vbase_dtor, 4)
13304 void __thiscall basic_ostringstream_wchar_vbase_dtor(basic_ostringstream_wchar *this)
13306 basic_ios_wchar *base = basic_ostringstream_wchar_to_basic_ios(this);
13308 TRACE("(%p)\n", this);
13310 basic_ostringstream_wchar_dtor(base);
13311 basic_ios_wchar_dtor(base);
13314 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_vector_dtor, 8)
13315 basic_ostringstream_wchar* __thiscall basic_ostringstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
13317 basic_ostringstream_wchar *this = basic_ostringstream_wchar_from_basic_ios(base);
13319 TRACE("(%p %x)\n", this, flags);
13321 if(flags & 2) {
13322 /* we have an array, with the number of elements stored before the first object */
13323 INT_PTR i, *ptr = (INT_PTR *)this-1;
13325 for(i=*ptr-1; i>=0; i--)
13326 basic_ostringstream_wchar_vbase_dtor(this+i);
13327 operator_delete(ptr);
13328 } else {
13329 basic_ostringstream_wchar_vbase_dtor(this);
13330 if(flags & 1)
13331 operator_delete(this);
13334 return this;
13337 /* ?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 */
13338 /* ?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 */
13339 /* ?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 */
13340 /* ?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 */
13341 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_rdbuf, 4)
13342 basic_stringbuf_wchar* __thiscall basic_ostringstream_wchar_rdbuf(const basic_ostringstream_wchar *this)
13344 TRACE("(%p)\n", this);
13345 return (basic_stringbuf_wchar*)&this->strbuf;
13348 /* ?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 */
13349 /* ?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 */
13350 /* ?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 */
13351 /* ?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 */
13352 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_str_set, 8)
13353 void __thiscall basic_ostringstream_wchar_str_set(basic_ostringstream_wchar *this, const basic_string_wchar *str)
13355 TRACE("(%p %p)\n", this, str);
13356 basic_stringbuf_wchar_str_set(&this->strbuf, str);
13359 /* ?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 */
13360 /* ?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 */
13361 /* ?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 */
13362 /* ?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 */
13363 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_str_get, 8)
13364 basic_string_wchar* __thiscall basic_ostringstream_wchar_str_get(const basic_ostringstream_wchar *this, basic_string_wchar *ret)
13366 TRACE("(%p %p)\n", this, ret);
13367 return basic_stringbuf_wchar_str_get(&this->strbuf, ret);
13370 static inline basic_ios_char* basic_istringstream_char_to_basic_ios(basic_istringstream_char *ptr)
13372 return (basic_ios_char*)((char*)ptr+basic_istringstream_char_vbtable[1]);
13375 static inline basic_istringstream_char* basic_istringstream_char_from_basic_ios(basic_ios_char *ptr)
13377 return (basic_istringstream_char*)((char*)ptr-basic_istringstream_char_vbtable[1]);
13380 /* ??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 */
13381 /* ??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 */
13382 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_ctor_str, 16)
13383 basic_istringstream_char* __thiscall basic_istringstream_char_ctor_str(basic_istringstream_char *this,
13384 const basic_string_char *str, int mode, bool virt_init)
13386 basic_ios_char *basic_ios;
13388 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
13390 if(virt_init) {
13391 this->base.vbtable = basic_istringstream_char_vbtable;
13392 basic_ios = basic_istream_char_get_basic_ios(&this->base);
13393 INIT_BASIC_IOS_VTORDISP(basic_ios);
13394 basic_ios_char_ctor(basic_ios);
13395 }else {
13396 basic_ios = basic_istream_char_get_basic_ios(&this->base);
13399 basic_stringbuf_char_ctor_str(&this->strbuf, str, mode|OPENMODE_in);
13400 basic_istream_char_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
13401 basic_ios->base.vtable = &basic_istringstream_char_vtable;
13402 return this;
13405 /* ??0?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z */
13406 /* ??0?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z */
13407 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_ctor_mode, 12)
13408 basic_istringstream_char* __thiscall basic_istringstream_char_ctor_mode(
13409 basic_istringstream_char *this, int mode, bool virt_init)
13411 basic_ios_char *basic_ios;
13413 TRACE("(%p %d %d)\n", this, mode, virt_init);
13415 if(virt_init) {
13416 this->base.vbtable = basic_istringstream_char_vbtable;
13417 basic_ios = basic_istream_char_get_basic_ios(&this->base);
13418 INIT_BASIC_IOS_VTORDISP(basic_ios);
13419 basic_ios_char_ctor(basic_ios);
13420 }else {
13421 basic_ios = basic_istream_char_get_basic_ios(&this->base);
13424 basic_stringbuf_char_ctor_mode(&this->strbuf, mode|OPENMODE_in);
13425 basic_istream_char_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
13426 basic_ios->base.vtable = &basic_istringstream_char_vtable;
13427 return this;
13430 /* ??_F?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
13431 /* ??_F?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
13432 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_ctor, 4)
13433 basic_istringstream_char* __thiscall basic_istringstream_char_ctor(
13434 basic_istringstream_char *this)
13436 return basic_istringstream_char_ctor_mode(this, 0, TRUE);
13439 /* ??1?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ */
13440 /* ??1?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ */
13441 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_dtor, 4)
13442 void __thiscall basic_istringstream_char_dtor(basic_ios_char *base)
13444 basic_istringstream_char *this = basic_istringstream_char_from_basic_ios(base);
13446 TRACE("(%p)\n", this);
13448 basic_stringbuf_char_dtor(&this->strbuf);
13449 basic_istream_char_dtor(basic_istream_char_to_basic_ios(&this->base));
13452 /* ??_D?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
13453 /* ??_D?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
13454 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_vbase_dtor, 4)
13455 void __thiscall basic_istringstream_char_vbase_dtor(basic_istringstream_char *this)
13457 basic_ios_char *base = basic_istringstream_char_to_basic_ios(this);
13459 TRACE("(%p)\n", this);
13461 basic_istringstream_char_dtor(base);
13462 basic_ios_char_dtor(base);
13465 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_vector_dtor, 8)
13466 basic_istringstream_char* __thiscall basic_istringstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
13468 basic_istringstream_char *this = basic_istringstream_char_from_basic_ios(base);
13470 TRACE("(%p %x)\n", this, flags);
13472 if(flags & 2) {
13473 /* we have an array, with the number of elements stored before the first object */
13474 INT_PTR i, *ptr = (INT_PTR *)this-1;
13476 for(i=*ptr-1; i>=0; i--)
13477 basic_istringstream_char_vbase_dtor(this+i);
13478 operator_delete(ptr);
13479 } else {
13480 basic_istringstream_char_vbase_dtor(this);
13481 if(flags & 1)
13482 operator_delete(this);
13485 return this;
13488 /* ?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 */
13489 /* ?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 */
13490 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_rdbuf, 4)
13491 basic_stringbuf_char* __thiscall basic_istringstream_char_rdbuf(const basic_istringstream_char *this)
13493 TRACE("(%p)\n", this);
13494 return (basic_stringbuf_char*)&this->strbuf;
13497 /* ?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 */
13498 /* ?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 */
13499 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_str_set, 8)
13500 void __thiscall basic_istringstream_char_str_set(basic_istringstream_char *this, const basic_string_char *str)
13502 TRACE("(%p %p)\n", this, str);
13503 basic_stringbuf_char_str_set(&this->strbuf, str);
13506 /* ?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 */
13507 /* ?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 */
13508 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_str_get, 8)
13509 basic_string_char* __thiscall basic_istringstream_char_str_get(const basic_istringstream_char *this, basic_string_char *ret)
13511 TRACE("(%p %p)\n", this, ret);
13512 return basic_stringbuf_char_str_get(&this->strbuf, ret);
13515 static inline basic_ios_wchar* basic_istringstream_wchar_to_basic_ios(basic_istringstream_wchar *ptr)
13517 return (basic_ios_wchar*)((char*)ptr+basic_istringstream_wchar_vbtable[1]);
13520 static inline basic_istringstream_wchar* basic_istringstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
13522 return (basic_istringstream_wchar*)((char*)ptr-basic_istringstream_wchar_vbtable[1]);
13525 /* ??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 */
13526 /* ??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 */
13527 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_ctor_str, 16)
13528 basic_istringstream_wchar* __thiscall basic_istringstream_wchar_ctor_str(basic_istringstream_wchar *this,
13529 const basic_string_wchar *str, int mode, bool virt_init)
13531 basic_ios_wchar *basic_ios;
13533 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
13535 if(virt_init) {
13536 this->base.vbtable = basic_istringstream_wchar_vbtable;
13537 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
13538 INIT_BASIC_IOS_VTORDISP(basic_ios);
13539 basic_ios_wchar_ctor(basic_ios);
13540 }else {
13541 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
13544 basic_stringbuf_wchar_ctor_str(&this->strbuf, str, mode|OPENMODE_in);
13545 basic_istream_wchar_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
13546 basic_ios->base.vtable = &basic_istringstream_wchar_vtable;
13547 return this;
13550 /* ??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 */
13551 /* ??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 */
13552 DEFINE_THISCALL_WRAPPER(basic_istringstream_short_ctor_str, 16)
13553 basic_istringstream_wchar* __thiscall basic_istringstream_short_ctor_str(basic_istringstream_wchar *this,
13554 const basic_string_wchar *str, int mode, bool virt_init)
13556 basic_istringstream_wchar_ctor_str(this, str, mode, virt_init);
13557 basic_istream_wchar_get_basic_ios(&this->base)->base.vtable = &basic_istringstream_short_vtable;
13558 return this;
13561 /* ??0?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@H@Z */
13562 /* ??0?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@H@Z */
13563 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_ctor_mode, 12)
13564 basic_istringstream_wchar* __thiscall basic_istringstream_wchar_ctor_mode(
13565 basic_istringstream_wchar *this, int mode, bool virt_init)
13567 basic_ios_wchar *basic_ios;
13569 TRACE("(%p %d %d)\n", this, mode, virt_init);
13571 if(virt_init) {
13572 this->base.vbtable = basic_istringstream_wchar_vbtable;
13573 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
13574 INIT_BASIC_IOS_VTORDISP(basic_ios);
13575 basic_ios_wchar_ctor(basic_ios);
13576 }else {
13577 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
13580 basic_stringbuf_wchar_ctor_mode(&this->strbuf, mode|OPENMODE_in);
13581 basic_istream_wchar_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
13582 basic_ios->base.vtable = &basic_istringstream_wchar_vtable;
13583 return this;
13586 /* ??0?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@H@Z */
13587 /* ??0?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@H@Z */
13588 DEFINE_THISCALL_WRAPPER(basic_istringstream_short_ctor_mode, 12)
13589 basic_istringstream_wchar* __thiscall basic_istringstream_short_ctor_mode(
13590 basic_istringstream_wchar *this, int mode, bool virt_init)
13592 basic_istringstream_wchar_ctor_mode(this, mode, virt_init);
13593 basic_istream_wchar_get_basic_ios(&this->base)->base.vtable = &basic_istringstream_short_vtable;
13594 return this;
13597 /* ??_F?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
13598 /* ??_F?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
13599 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_ctor, 4)
13600 basic_istringstream_wchar* __thiscall basic_istringstream_wchar_ctor(
13601 basic_istringstream_wchar *this)
13603 return basic_istringstream_wchar_ctor_mode(this, 0, TRUE);
13606 /* ??_F?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
13607 /* ??_F?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
13608 DEFINE_THISCALL_WRAPPER(basic_istringstream_short_ctor, 4)
13609 basic_istringstream_wchar* __thiscall basic_istringstream_short_ctor(
13610 basic_istringstream_wchar *this)
13612 return basic_istringstream_short_ctor_mode(this, 0, TRUE);
13615 /* ??1?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UAE@XZ */
13616 /* ??1?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UEAA@XZ */
13617 /* ??1?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UAE@XZ */
13618 /* ??1?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UEAA@XZ */
13619 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_dtor, 4)
13620 void __thiscall basic_istringstream_wchar_dtor(basic_ios_wchar *base)
13622 basic_istringstream_wchar *this = basic_istringstream_wchar_from_basic_ios(base);
13624 TRACE("(%p)\n", this);
13626 basic_stringbuf_wchar_dtor(&this->strbuf);
13627 basic_istream_wchar_dtor(basic_istream_wchar_to_basic_ios(&this->base));
13630 /* ??_D?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
13631 /* ??_D?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
13632 /* ??_D?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
13633 /* ??_D?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
13634 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_vbase_dtor, 4)
13635 void __thiscall basic_istringstream_wchar_vbase_dtor(basic_istringstream_wchar *this)
13637 basic_ios_wchar *base = basic_istringstream_wchar_to_basic_ios(this);
13639 TRACE("(%p)\n", this);
13641 basic_istringstream_wchar_dtor(base);
13642 basic_ios_wchar_dtor(base);
13645 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_vector_dtor, 8)
13646 basic_istringstream_wchar* __thiscall basic_istringstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
13648 basic_istringstream_wchar *this = basic_istringstream_wchar_from_basic_ios(base);
13650 TRACE("(%p %x)\n", this, flags);
13652 if(flags & 2) {
13653 /* we have an array, with the number of elements stored before the first object */
13654 INT_PTR i, *ptr = (INT_PTR *)this-1;
13656 for(i=*ptr-1; i>=0; i--)
13657 basic_istringstream_wchar_vbase_dtor(this+i);
13658 operator_delete(ptr);
13659 } else {
13660 basic_istringstream_wchar_vbase_dtor(this);
13661 if(flags & 1)
13662 operator_delete(this);
13665 return this;
13668 /* ?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 */
13669 /* ?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 */
13670 /* ?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 */
13671 /* ?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 */
13672 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_rdbuf, 4)
13673 basic_stringbuf_wchar* __thiscall basic_istringstream_wchar_rdbuf(const basic_istringstream_wchar *this)
13675 TRACE("(%p)\n", this);
13676 return (basic_stringbuf_wchar*)&this->strbuf;
13679 /* ?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 */
13680 /* ?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 */
13681 /* ?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 */
13682 /* ?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 */
13683 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_str_set, 8)
13684 void __thiscall basic_istringstream_wchar_str_set(basic_istringstream_wchar *this, const basic_string_wchar *str)
13686 TRACE("(%p %p)\n", this, str);
13687 basic_stringbuf_wchar_str_set(&this->strbuf, str);
13690 /* ?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 */
13691 /* ?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 */
13692 /* ?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 */
13693 /* ?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 */
13694 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_str_get, 8)
13695 basic_string_wchar* __thiscall basic_istringstream_wchar_str_get(const basic_istringstream_wchar *this, basic_string_wchar *ret)
13697 TRACE("(%p %p)\n", this, ret);
13698 return basic_stringbuf_wchar_str_get(&this->strbuf, ret);
13701 static inline basic_ios_char* basic_stringstream_char_to_basic_ios(basic_stringstream_char *ptr)
13703 return (basic_ios_char*)((char*)ptr+basic_stringstream_char_vbtable1[1]);
13706 static inline basic_stringstream_char* basic_stringstream_char_from_basic_ios(basic_ios_char *ptr)
13708 return (basic_stringstream_char*)((char*)ptr-basic_stringstream_char_vbtable1[1]);
13711 /* ??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 */
13712 /* ??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 */
13713 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_ctor_str, 16)
13714 basic_stringstream_char* __thiscall basic_stringstream_char_ctor_str(basic_stringstream_char *this,
13715 const basic_string_char *str, int mode, bool virt_init)
13717 basic_ios_char *basic_ios;
13719 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
13721 if(virt_init) {
13722 this->base.base1.vbtable = basic_stringstream_char_vbtable1;
13723 this->base.base2.vbtable = basic_stringstream_char_vbtable2;
13724 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
13725 INIT_BASIC_IOS_VTORDISP(basic_ios);
13726 basic_ios_char_ctor(basic_ios);
13727 }else {
13728 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
13731 basic_stringbuf_char_ctor_str(&this->strbuf, str, mode);
13732 basic_iostream_char_ctor(&this->base, &this->strbuf.base, FALSE);
13733 basic_ios->base.vtable = &basic_stringstream_char_vtable;
13734 return this;
13737 /* ??0?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z */
13738 /* ??0?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z */
13739 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_ctor_mode, 12)
13740 basic_stringstream_char* __thiscall basic_stringstream_char_ctor_mode(
13741 basic_stringstream_char *this, int mode, bool virt_init)
13743 basic_ios_char *basic_ios;
13745 TRACE("(%p %d %d)\n", this, mode, virt_init);
13747 if(virt_init) {
13748 this->base.base1.vbtable = basic_stringstream_char_vbtable1;
13749 this->base.base2.vbtable = basic_stringstream_char_vbtable2;
13750 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
13751 INIT_BASIC_IOS_VTORDISP(basic_ios);
13752 basic_ios_char_ctor(basic_ios);
13753 }else {
13754 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
13757 basic_stringbuf_char_ctor_mode(&this->strbuf, mode);
13758 basic_iostream_char_ctor(&this->base, &this->strbuf.base, FALSE);
13759 basic_ios->base.vtable = &basic_stringstream_char_vtable;
13760 return this;
13763 /* ??_F?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
13764 /* ??_F?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
13765 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_ctor, 4)
13766 basic_stringstream_char* __thiscall basic_stringstream_char_ctor(
13767 basic_stringstream_char *this)
13769 return basic_stringstream_char_ctor_mode(
13770 this, OPENMODE_out|OPENMODE_in, TRUE);
13773 /* ??1?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ */
13774 /* ??1?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ */
13775 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_dtor, 4)
13776 void __thiscall basic_stringstream_char_dtor(basic_ios_char *base)
13778 basic_stringstream_char *this = basic_stringstream_char_from_basic_ios(base);
13780 TRACE("(%p)\n", this);
13782 basic_iostream_char_dtor(basic_iostream_char_to_basic_ios(&this->base));
13783 basic_stringbuf_char_dtor(&this->strbuf);
13786 /* ??_D?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
13787 /* ??_D?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
13788 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_vbase_dtor, 4)
13789 void __thiscall basic_stringstream_char_vbase_dtor(basic_stringstream_char *this)
13791 basic_ios_char *base = basic_stringstream_char_to_basic_ios(this);
13793 TRACE("(%p)\n", this);
13795 basic_stringstream_char_dtor(base);
13796 basic_ios_char_dtor(base);
13799 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_vector_dtor, 8)
13800 basic_stringstream_char* __thiscall basic_stringstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
13802 basic_stringstream_char *this = basic_stringstream_char_from_basic_ios(base);
13804 TRACE("(%p %x)\n", this, flags);
13806 if(flags & 2) {
13807 /* we have an array, with the number of elements stored before the first object */
13808 INT_PTR i, *ptr = (INT_PTR *)this-1;
13810 for(i=*ptr-1; i>=0; i--)
13811 basic_stringstream_char_vbase_dtor(this+i);
13812 operator_delete(ptr);
13813 } else {
13814 basic_stringstream_char_vbase_dtor(this);
13815 if(flags & 1)
13816 operator_delete(this);
13819 return this;
13822 /* ?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 */
13823 /* ?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 */
13824 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_rdbuf, 4)
13825 basic_stringbuf_char* __thiscall basic_stringstream_char_rdbuf(const basic_stringstream_char *this)
13827 TRACE("(%p)\n", this);
13828 return (basic_stringbuf_char*)&this->strbuf;
13831 /* ?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 */
13832 /* ?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 */
13833 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_str_set, 8)
13834 void __thiscall basic_stringstream_char_str_set(basic_stringstream_char *this, const basic_string_char *str)
13836 TRACE("(%p %p)\n", this, str);
13837 basic_stringbuf_char_str_set(&this->strbuf, str);
13840 /* ?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 */
13841 /* ?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 */
13842 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_str_get, 8)
13843 basic_string_char* __thiscall basic_stringstream_char_str_get(const basic_stringstream_char *this, basic_string_char *ret)
13845 TRACE("(%p %p)\n", this, ret);
13846 return basic_stringbuf_char_str_get(&this->strbuf, ret);
13849 static inline basic_ios_wchar* basic_stringstream_wchar_to_basic_ios(basic_stringstream_wchar *ptr)
13851 return (basic_ios_wchar*)((char*)ptr+basic_stringstream_wchar_vbtable1[1]);
13854 static inline basic_stringstream_wchar* basic_stringstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
13856 return (basic_stringstream_wchar*)((char*)ptr-basic_stringstream_wchar_vbtable1[1]);
13859 /* ??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 */
13860 /* ??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 */
13861 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_ctor_str, 16)
13862 basic_stringstream_wchar* __thiscall basic_stringstream_wchar_ctor_str(basic_stringstream_wchar *this,
13863 const basic_string_wchar *str, int mode, bool virt_init)
13865 basic_ios_wchar *basic_ios;
13867 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
13869 if(virt_init) {
13870 this->base.base1.vbtable = basic_stringstream_wchar_vbtable1;
13871 this->base.base2.vbtable = basic_stringstream_wchar_vbtable2;
13872 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
13873 INIT_BASIC_IOS_VTORDISP(basic_ios);
13874 basic_ios_wchar_ctor(basic_ios);
13875 }else {
13876 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
13879 basic_stringbuf_wchar_ctor_str(&this->strbuf, str, mode);
13880 basic_iostream_wchar_ctor(&this->base, &this->strbuf.base, FALSE);
13881 basic_ios->base.vtable = &basic_stringstream_wchar_vtable;
13882 return this;
13885 /* ??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 */
13886 /* ??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 */
13887 DEFINE_THISCALL_WRAPPER(basic_stringstream_short_ctor_str, 16)
13888 basic_stringstream_wchar* __thiscall basic_stringstream_short_ctor_str(basic_stringstream_wchar *this,
13889 const basic_string_wchar *str, int mode, bool virt_init)
13891 basic_stringstream_wchar_ctor_str(this, str, mode, virt_init);
13892 basic_istream_wchar_get_basic_ios(&this->base.base1)->base.vtable = &basic_stringstream_short_vtable;
13893 return this;
13896 /* ??0?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@H@Z */
13897 /* ??0?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@H@Z */
13898 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_ctor_mode, 12)
13899 basic_stringstream_wchar* __thiscall basic_stringstream_wchar_ctor_mode(
13900 basic_stringstream_wchar *this, int mode, bool virt_init)
13902 basic_ios_wchar *basic_ios;
13904 TRACE("(%p %d %d)\n", this, mode, virt_init);
13906 if(virt_init) {
13907 this->base.base1.vbtable = basic_stringstream_wchar_vbtable1;
13908 this->base.base2.vbtable = basic_stringstream_wchar_vbtable2;
13909 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
13910 INIT_BASIC_IOS_VTORDISP(basic_ios);
13911 basic_ios_wchar_ctor(basic_ios);
13912 }else {
13913 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
13916 basic_stringbuf_wchar_ctor_mode(&this->strbuf, mode);
13917 basic_iostream_wchar_ctor(&this->base, &this->strbuf.base, FALSE);
13918 basic_ios->base.vtable = &basic_stringstream_wchar_vtable;
13919 return this;
13922 /* ??0?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@H@Z */
13923 /* ??0?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@H@Z */
13924 DEFINE_THISCALL_WRAPPER(basic_stringstream_short_ctor_mode, 12)
13925 basic_stringstream_wchar* __thiscall basic_stringstream_short_ctor_mode(
13926 basic_stringstream_wchar *this, int mode, bool virt_init)
13928 basic_stringstream_wchar_ctor_mode(this, mode, virt_init);
13929 basic_istream_wchar_get_basic_ios(&this->base.base1)->base.vtable = &basic_stringstream_short_vtable;
13930 return this;
13933 /* ??_F?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
13934 /* ??_F?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
13935 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_ctor, 4)
13936 basic_stringstream_wchar* __thiscall basic_stringstream_wchar_ctor(
13937 basic_stringstream_wchar *this)
13939 return basic_stringstream_wchar_ctor_mode(
13940 this, OPENMODE_out|OPENMODE_in, TRUE);
13943 /* ??_F?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
13944 /* ??_F?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
13945 DEFINE_THISCALL_WRAPPER(basic_stringstream_short_ctor, 4)
13946 basic_stringstream_wchar* __thiscall basic_stringstream_short_ctor(
13947 basic_stringstream_wchar *this)
13949 return basic_stringstream_short_ctor_mode(
13950 this, OPENMODE_out|OPENMODE_in, TRUE);
13953 /* ??1?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UAE@XZ */
13954 /* ??1?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UEAA@XZ */
13955 /* ??1?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UAE@XZ */
13956 /* ??1?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UEAA@XZ */
13957 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_dtor, 4)
13958 void __thiscall basic_stringstream_wchar_dtor(basic_ios_wchar *base)
13960 basic_stringstream_wchar *this = basic_stringstream_wchar_from_basic_ios(base);
13962 TRACE("(%p)\n", this);
13964 basic_iostream_wchar_dtor(basic_iostream_wchar_to_basic_ios(&this->base));
13965 basic_stringbuf_wchar_dtor(&this->strbuf);
13968 /* ??_D?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
13969 /* ??_D?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
13970 /* ??_D?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
13971 /* ??_D?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
13972 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_vbase_dtor, 4)
13973 void __thiscall basic_stringstream_wchar_vbase_dtor(basic_stringstream_wchar *this)
13975 basic_ios_wchar *base = basic_stringstream_wchar_to_basic_ios(this);
13977 TRACE("(%p)\n", this);
13979 basic_stringstream_wchar_dtor(base);
13980 basic_ios_wchar_dtor(base);
13983 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_vector_dtor, 8)
13984 basic_stringstream_wchar* __thiscall basic_stringstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
13986 basic_stringstream_wchar *this = basic_stringstream_wchar_from_basic_ios(base);
13988 TRACE("(%p %x)\n", this, flags);
13990 if(flags & 2) {
13991 /* we have an array, with the number of elements stored before the first object */
13992 INT_PTR i, *ptr = (INT_PTR *)this-1;
13994 for(i=*ptr-1; i>=0; i--)
13995 basic_stringstream_wchar_vbase_dtor(this+i);
13996 operator_delete(ptr);
13997 } else {
13998 basic_stringstream_wchar_vbase_dtor(this);
13999 if(flags & 1)
14000 operator_delete(this);
14003 return this;
14006 /* ?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 */
14007 /* ?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 */
14008 /* ?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 */
14009 /* ?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 */
14010 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_rdbuf, 4)
14011 basic_stringbuf_wchar* __thiscall basic_stringstream_wchar_rdbuf(const basic_stringstream_wchar *this)
14013 TRACE("(%p)\n", this);
14014 return (basic_stringbuf_wchar*)&this->strbuf;
14017 /* ?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 */
14018 /* ?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 */
14019 /* ?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 */
14020 /* ?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 */
14021 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_str_set, 8)
14022 void __thiscall basic_stringstream_wchar_str_set(basic_stringstream_wchar *this, const basic_string_wchar *str)
14024 TRACE("(%p %p)\n", this, str);
14025 basic_stringbuf_wchar_str_set(&this->strbuf, str);
14028 /* ?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 */
14029 /* ?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 */
14030 /* ?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 */
14031 /* ?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 */
14032 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_str_get, 8)
14033 basic_string_wchar* __thiscall basic_stringstream_wchar_str_get(const basic_stringstream_wchar *this, basic_string_wchar *ret)
14035 TRACE("(%p %p)\n", this, ret);
14036 return basic_stringbuf_wchar_str_get(&this->strbuf, ret);
14039 /* ?_Init@strstreambuf@std@@IAEXHPAD0H@Z */
14040 /* ?_Init@strstreambuf@std@@IEAAX_JPEAD1H@Z */
14041 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
14042 DEFINE_THISCALL_WRAPPER(strstreambuf__Init, 24)
14043 #else
14044 DEFINE_THISCALL_WRAPPER(strstreambuf__Init, 20)
14045 #endif
14046 void __thiscall strstreambuf__Init(strstreambuf *this, streamsize len, char *g, char *p, int mode)
14048 TRACE("(%p %s %p %p %d)\n", this, wine_dbgstr_longlong(len), g, p, mode);
14050 this->minsize = 32;
14051 this->endsave = NULL;
14052 this->strmode = mode;
14053 this->palloc = NULL;
14054 this->pfree = NULL;
14056 if(!g) {
14057 this->strmode |= STRSTATE_Dynamic;
14058 if(len > this->minsize)
14059 this->minsize = len;
14060 this->seekhigh = NULL;
14061 return;
14064 if(len < 0)
14065 len = INT_MAX;
14066 else if(!len)
14067 len = strlen(g);
14069 this->seekhigh = g+len;
14070 basic_streambuf_char_setg(&this->base, g, g, p ? p : this->seekhigh);
14071 if(p)
14072 basic_streambuf_char_setp(&this->base, p, this->seekhigh);
14075 /* ??0strstreambuf@std@@QAE@PACH0@Z */
14076 /* ??0strstreambuf@std@@QEAA@PEAC_J0@Z */
14077 /* ??0strstreambuf@std@@QAE@PADH0@Z */
14078 /* ??0strstreambuf@std@@QEAA@PEAD_J0@Z */
14079 /* ??0strstreambuf@std@@QAE@PAEH0@Z */
14080 /* ??0strstreambuf@std@@QEAA@PEAE_J0@Z */
14081 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
14082 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_get_put, 20)
14083 #else
14084 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_get_put, 16)
14085 #endif
14086 strstreambuf* __thiscall strstreambuf_ctor_get_put(strstreambuf *this, char *g, streamsize len, char *p)
14088 TRACE("(%p %p %s %p)\n", this, g, wine_dbgstr_longlong(len), p);
14090 basic_streambuf_char_ctor(&this->base);
14091 this->base.vtable = &strstreambuf_vtable;
14093 strstreambuf__Init(this, len, g, p, 0);
14094 return this;
14097 /* ??0strstreambuf@std@@QAE@H@Z */
14098 /* ??0strstreambuf@std@@QEAA@_J@Z */
14099 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
14100 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_len, 12)
14101 #else
14102 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_len, 8)
14103 #endif
14104 strstreambuf* __thiscall strstreambuf_ctor_len(strstreambuf *this, streamsize len)
14106 return strstreambuf_ctor_get_put(this, NULL, len, NULL);
14109 /* ??0strstreambuf@std@@QAE@P6APAXI@ZP6AXPAX@Z@Z */
14110 /* ??0strstreambuf@std@@QEAA@P6APEAX_K@ZP6AXPEAX@Z@Z */
14111 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_alloc, 12)
14112 strstreambuf* __thiscall strstreambuf_ctor_alloc(strstreambuf *this,
14113 void* (__cdecl *palloc)(size_t), void (__cdecl *pfree)(void*))
14115 TRACE("(%p %p %p)\n", this, palloc, pfree);
14117 strstreambuf_ctor_get_put(this, NULL, 0, NULL);
14118 this->palloc = palloc;
14119 this->pfree = pfree;
14120 return this;
14123 /* ??0strstreambuf@std@@QAE@PBCH@Z */
14124 /* ??0strstreambuf@std@@QEAA@PEBC_J@Z */
14125 /* ??0strstreambuf@std@@QAE@PBDH@Z */
14126 /* ??0strstreambuf@std@@QEAA@PEBD_J@Z */
14127 /* ??0strstreambuf@std@@QAE@PBEH@Z */
14128 /* ??0strstreambuf@std@@QEAA@PEBE_J@Z */
14129 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
14130 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_get, 16)
14131 #else
14132 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_get, 12)
14133 #endif
14134 strstreambuf* __thiscall strstreambuf_ctor_get(strstreambuf *this, const char *g, streamsize len)
14136 TRACE("(%p %p %s)\n", this, g, wine_dbgstr_longlong(len));
14138 strstreambuf_ctor_get_put(this, (char*)g, len, NULL);
14139 this->strmode |= STRSTATE_Constant;
14140 return this;
14143 /* ??_Fstrstreambuf@std@@QAEXXZ */
14144 /* ??_Fstrstreambuf@std@@QEAAXXZ */
14145 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor, 4)
14146 strstreambuf* __thiscall strstreambuf_ctor(strstreambuf *this)
14148 return strstreambuf_ctor_get_put(this, NULL, 0, NULL);
14151 /* ?_Tidy@strstreambuf@std@@IAEXXZ */
14152 /* ?_Tidy@strstreambuf@std@@IEAAXXZ */
14153 DEFINE_THISCALL_WRAPPER(strstreambuf__Tidy, 4)
14154 void __thiscall strstreambuf__Tidy(strstreambuf *this)
14156 TRACE("(%p)\n", this);
14158 if((this->strmode & STRSTATE_Allocated) && !(this->strmode & STRSTATE_Frozen)) {
14159 if(this->pfree)
14160 this->pfree(basic_streambuf_char_eback(&this->base));
14161 else
14162 operator_delete(basic_streambuf_char_eback(&this->base));
14165 this->endsave = NULL;
14166 this->seekhigh = NULL;
14167 this->strmode &= ~(STRSTATE_Allocated | STRSTATE_Frozen);
14168 basic_streambuf_char_setg(&this->base, NULL, NULL, NULL);
14169 basic_streambuf_char_setp(&this->base, NULL, NULL);
14172 /* ??1strstreambuf@std@@UAE@XZ */
14173 /* ??1strstreambuf@std@@UEAA@XZ */
14174 DEFINE_THISCALL_WRAPPER(strstreambuf_dtor, 4)
14175 void __thiscall strstreambuf_dtor(strstreambuf *this)
14177 TRACE("(%p)\n", this);
14179 strstreambuf__Tidy(this);
14180 basic_streambuf_char_dtor(&this->base);
14183 DEFINE_THISCALL_WRAPPER(strstreambuf_vector_dtor, 8)
14184 strstreambuf* __thiscall strstreambuf_vector_dtor(strstreambuf *this, unsigned int flags)
14186 TRACE("(%p %x)\n", this, flags);
14187 if(flags & 2) {
14188 /* we have an array, with the number of elements stored before the first object */
14189 INT_PTR i, *ptr = (INT_PTR *)this-1;
14191 for(i=*ptr-1; i>=0; i--)
14192 strstreambuf_dtor(this+i);
14193 operator_delete(ptr);
14194 } else {
14195 strstreambuf_dtor(this);
14196 if(flags & 1)
14197 operator_delete(this);
14200 return this;
14203 /* ?freeze@strstreambuf@std@@QAEX_N@Z */
14204 /* ?freeze@strstreambuf@std@@QEAAX_N@Z */
14205 DEFINE_THISCALL_WRAPPER(strstreambuf_freeze, 8)
14206 void __thiscall strstreambuf_freeze(strstreambuf *this, bool freeze)
14208 TRACE("(%p %d)\n", this, freeze);
14210 if(!freeze == !(this->strmode & STRSTATE_Frozen))
14211 return;
14213 if(freeze) {
14214 this->strmode |= STRSTATE_Frozen;
14215 this->endsave = basic_streambuf_char_epptr(&this->base);
14216 basic_streambuf_char_setp_next(&this->base, basic_streambuf_char_pbase(&this->base),
14217 basic_streambuf_char_pptr(&this->base), basic_streambuf_char_eback(&this->base));
14218 }else {
14219 this->strmode &= ~STRSTATE_Frozen;
14220 basic_streambuf_char_setp_next(&this->base, basic_streambuf_char_pbase(&this->base),
14221 basic_streambuf_char_pptr(&this->base), this->endsave);
14225 /* ?str@strstreambuf@std@@QAEPADXZ */
14226 /* ?str@strstreambuf@std@@QEAAPEADXZ */
14227 DEFINE_THISCALL_WRAPPER(strstreambuf_str, 4)
14228 char* __thiscall strstreambuf_str(strstreambuf *this)
14230 TRACE("(%p)\n", this);
14232 strstreambuf_freeze(this, TRUE);
14233 return basic_streambuf_char_gptr(&this->base);
14236 /* ?pcount@strstreambuf@std@@QBEHXZ */
14237 /* ?pcount@strstreambuf@std@@QEBA_JXZ */
14238 DEFINE_THISCALL_WRAPPER(strstreambuf_pcount, 4)
14239 streamsize __thiscall strstreambuf_pcount(const strstreambuf *this)
14241 char *ppos = basic_streambuf_char_pptr(&this->base);
14243 TRACE("(%p)\n", this);
14245 return ppos ? ppos-basic_streambuf_char_pbase(&this->base) : 0;
14248 /* ?overflow@strstreambuf@std@@MAEHH@Z */
14249 /* ?overflow@strstreambuf@std@@MEAAHH@Z */
14250 DEFINE_THISCALL_WRAPPER(strstreambuf_overflow, 8)
14251 int __thiscall strstreambuf_overflow(strstreambuf *this, int c)
14253 size_t old_size, size;
14254 char *ptr, *buf;
14256 TRACE("(%p %d)\n", this, c);
14258 if(c == EOF)
14259 return !EOF;
14261 if(this->strmode & STRSTATE_Frozen)
14262 return EOF;
14264 ptr = basic_streambuf_char_pptr(&this->base);
14265 if(ptr && ptr<basic_streambuf_char_epptr(&this->base))
14266 return (unsigned char)(*basic_streambuf_char__Pninc(&this->base) = c);
14268 if(!(this->strmode & STRSTATE_Dynamic) || (this->strmode & STRSTATE_Constant))
14269 return EOF;
14271 ptr = basic_streambuf_char_eback(&this->base);
14272 old_size = ptr ? basic_streambuf_char_epptr(&this->base) - ptr : 0;
14274 size = old_size + old_size/2;
14275 if(size < this->minsize)
14276 size = this->minsize;
14278 if(this->palloc)
14279 buf = this->palloc(size);
14280 else
14281 buf = operator_new(size);
14282 if(!buf)
14283 return EOF;
14285 memcpy(buf, ptr, old_size);
14286 if(this->strmode & STRSTATE_Allocated) {
14287 if(this->pfree)
14288 this->pfree(ptr);
14289 else
14290 operator_delete(ptr);
14293 this->strmode |= STRSTATE_Allocated;
14294 if(!old_size) {
14295 this->seekhigh = buf;
14296 basic_streambuf_char_setp(&this->base, buf, buf+size);
14297 basic_streambuf_char_setg(&this->base, buf, buf, buf);
14298 }else {
14299 this->seekhigh = this->seekhigh-ptr+buf;
14300 basic_streambuf_char_setp_next(&this->base, basic_streambuf_char_pbase(&this->base)-ptr+buf,
14301 basic_streambuf_char_pptr(&this->base)-ptr+buf, buf+size);
14302 basic_streambuf_char_setg(&this->base, buf, basic_streambuf_char_gptr(&this->base)-ptr+buf,
14303 basic_streambuf_char_pptr(&this->base));
14306 return (unsigned char)(*basic_streambuf_char__Pninc(&this->base) = c);
14309 /* ?pbackfail@strstreambuf@std@@MAEHH@Z */
14310 /* ?pbackfail@strstreambuf@std@@MEAAHH@Z */
14311 DEFINE_THISCALL_WRAPPER(strstreambuf_pbackfail, 8)
14312 int __thiscall strstreambuf_pbackfail(strstreambuf *this, int c)
14314 char *ptr = basic_streambuf_char_gptr(&this->base);
14316 TRACE("(%p %d)\n", this, c);
14318 if(ptr<=basic_streambuf_char_eback(&this->base)
14319 || ((this->strmode & STRSTATE_Constant) && c!=ptr[-1]))
14320 return EOF;
14322 basic_streambuf_char_gbump(&this->base, -1);
14323 if(c == EOF)
14324 return !EOF;
14325 if(this->strmode & STRSTATE_Constant)
14326 return (unsigned char)c;
14328 return (unsigned char)(ptr[0] = c);
14331 /* ?seekoff@strstreambuf@std@@MAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
14332 /* ?seekoff@strstreambuf@std@@MEAA?AV?$fpos@H@2@_JW4seekdir@ios_base@2@H@Z */
14333 /* ?seekoff@strstreambuf@std@@MAE?AV?$fpos@H@2@JHH@Z */
14334 /* ?seekoff@strstreambuf@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
14335 #if STREAMOFF_BITS == 64
14336 DEFINE_THISCALL_WRAPPER(strstreambuf_seekoff, 24)
14337 #else
14338 DEFINE_THISCALL_WRAPPER(strstreambuf_seekoff, 20)
14339 #endif
14340 fpos_mbstatet* __thiscall strstreambuf_seekoff(strstreambuf *this, fpos_mbstatet *ret, streamoff off, int way, int mode)
14342 char *eback = basic_streambuf_char_eback(&this->base);
14343 char *pptr = basic_streambuf_char_pptr(&this->base);
14344 char *gptr = basic_streambuf_char_gptr(&this->base);
14346 TRACE("(%p %p %s %d %d)\n", this, ret, wine_dbgstr_longlong(off), way, mode);
14348 ret->off = 0;
14349 memset(&ret->state, 0, sizeof(ret->state));
14351 if(pptr > this->seekhigh)
14352 this->seekhigh = pptr;
14354 if((mode & OPENMODE_in) && gptr) {
14355 if(way==SEEKDIR_cur && !(mode & OPENMODE_out))
14356 off += gptr-eback;
14357 else if(way == SEEKDIR_end)
14358 off += this->seekhigh-eback;
14359 else if(way != SEEKDIR_beg)
14360 off = -1;
14362 if(off<0 || off>this->seekhigh-eback) {
14363 off = -1;
14364 }else {
14365 basic_streambuf_char_gbump(&this->base, eback-gptr+off);
14366 if((mode & OPENMODE_out) && pptr) {
14367 basic_streambuf_char_setp_next(&this->base, eback,
14368 gptr, basic_streambuf_char_epptr(&this->base));
14371 }else if((mode & OPENMODE_out) && pptr) {
14372 if(way == SEEKDIR_cur)
14373 off += pptr-eback;
14374 else if(way == SEEKDIR_end)
14375 off += this->seekhigh-eback;
14376 else if(way != SEEKDIR_beg)
14377 off = -1;
14379 if(off<0 || off>this->seekhigh-eback)
14380 off = -1;
14381 else
14382 basic_streambuf_char_pbump(&this->base, eback-pptr+off);
14383 }else {
14384 off = -1;
14387 ret->pos = off;
14388 return ret;
14391 /* ?seekpos@strstreambuf@std@@MAE?AV?$fpos@H@2@V32@H@Z */
14392 /* ?seekpos@strstreambuf@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
14393 DEFINE_THISCALL_WRAPPER(strstreambuf_seekpos, 36)
14394 fpos_mbstatet* __thiscall strstreambuf_seekpos(strstreambuf *this, fpos_mbstatet *ret, fpos_mbstatet pos, int mode)
14396 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_mbstatet(&pos), mode);
14398 if(pos.off==-1 && pos.pos==0 && MBSTATET_TO_INT(&pos.state)==0) {
14399 *ret = pos;
14400 return ret;
14403 return strstreambuf_seekoff(this, ret, pos.pos+pos.off, SEEKDIR_beg, mode);
14406 /* ?underflow@strstreambuf@std@@MAEHXZ */
14407 /* ?underflow@strstreambuf@std@@MEAAHXZ */
14408 DEFINE_THISCALL_WRAPPER(strstreambuf_underflow, 4)
14409 int __thiscall strstreambuf_underflow(strstreambuf *this)
14411 char *gptr = basic_streambuf_char_gptr(&this->base);
14412 char *pptr;
14414 TRACE("(%p)\n", this);
14416 if(!gptr)
14417 return EOF;
14419 if(gptr < basic_streambuf_char_egptr(&this->base))
14420 return (unsigned char)(*gptr);
14422 pptr = basic_streambuf_char_gptr(&this->base);
14423 if(pptr > this->seekhigh)
14424 this->seekhigh = pptr;
14426 if(this->seekhigh <= gptr)
14427 return EOF;
14429 basic_streambuf_char_setg(&this->base, basic_streambuf_char_eback(&this->base),
14430 gptr, this->seekhigh);
14431 return (unsigned char)(*gptr);
14434 static inline basic_ios_char* ostrstream_to_basic_ios(ostrstream *ptr)
14436 return (basic_ios_char*)((char*)ptr+ostrstream_vbtable[1]);
14439 static inline ostrstream* ostrstream_from_basic_ios(basic_ios_char *ptr)
14441 return (ostrstream*)((char*)ptr-ostrstream_vbtable[1]);
14444 /* ??0ostrstream@std@@QAE@PADHH@Z */
14445 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
14446 DEFINE_THISCALL_WRAPPER(ostrstream_ctor, 24)
14447 #else
14448 DEFINE_THISCALL_WRAPPER(ostrstream_ctor, 20)
14449 #endif
14450 ostrstream* __thiscall ostrstream_ctor(ostrstream *this, char *buf, streamsize size, int mode, bool virt_init)
14452 basic_ios_char *basic_ios;
14454 TRACE("(%p %p %s %d %d)\n", this, buf, wine_dbgstr_longlong(size), mode, virt_init);
14456 if(virt_init) {
14457 this->base.vbtable = ostrstream_vbtable;
14458 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
14459 INIT_BASIC_IOS_VTORDISP(basic_ios);
14460 basic_ios_char_ctor(basic_ios);
14461 }else {
14462 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
14465 strstreambuf_ctor_get_put(&this->buf, buf, size,
14466 buf && (mode & OPENMODE_app) ? buf+strlen(buf) : buf);
14467 basic_ostream_char_ctor(&this->base, &this->buf.base, FALSE, FALSE);
14468 basic_ios->base.vtable = &ostrstream_vtable;
14469 return this;
14472 /* ??1ostrstream@std@@UAE@XZ */
14473 /* ??1ostrstream@std@@UEAA@XZ */
14474 DEFINE_THISCALL_WRAPPER(ostrstream_dtor, 4)
14475 void __thiscall ostrstream_dtor(basic_ios_char *base)
14477 ostrstream *this = ostrstream_from_basic_ios(base);
14479 TRACE("(%p)\n", this);
14481 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(&this->base));
14482 strstreambuf_dtor(&this->buf);
14485 static void ostrstream_vbase_dtor(ostrstream *this)
14487 basic_ios_char *base = ostrstream_to_basic_ios(this);
14489 TRACE("(%p)\n", this);
14491 ostrstream_dtor(base);
14492 basic_ios_char_dtor(base);
14495 DEFINE_THISCALL_WRAPPER(ostrstream_vector_dtor, 8)
14496 ostrstream* __thiscall ostrstream_vector_dtor(basic_ios_char *base, unsigned int flags)
14498 ostrstream *this = ostrstream_from_basic_ios(base);
14500 TRACE("(%p %x)\n", this, flags);
14502 if(flags & 2) {
14503 /* we have an array, with the number of elements stored before the first object */
14504 INT_PTR i, *ptr = (INT_PTR *)this-1;
14506 for(i=*ptr-1; i>=0; i--)
14507 ostrstream_vbase_dtor(this+i);
14508 operator_delete(ptr);
14509 } else {
14510 ostrstream_vbase_dtor(this);
14511 if(flags & 1)
14512 operator_delete(this);
14515 return this;
14518 static inline istrstream* istrstream_from_basic_ios(basic_ios_char *ptr)
14520 return (istrstream*)((char*)ptr-istrstream_vbtable[1]);
14523 /* ??1istrstream@std@@UAE@XZ */
14524 /* ??1istrstream@std@@UEAA@XZ */
14525 DEFINE_THISCALL_WRAPPER(istrstream_dtor, 4)
14526 void __thiscall istrstream_dtor(basic_ios_char *base)
14528 istrstream *this = istrstream_from_basic_ios(base);
14530 TRACE("(%p)\n", this);
14532 basic_istream_char_dtor(basic_istream_char_to_basic_ios(&this->base));
14533 strstreambuf_dtor(&this->buf);
14536 static inline basic_ios_char* strstream_to_basic_ios(strstream *ptr)
14538 return (basic_ios_char*)((char*)ptr+strstream_vbtable1[1]);
14541 static inline strstream* strstream_from_basic_ios(basic_ios_char *ptr)
14543 return (strstream*)((char*)ptr-strstream_vbtable1[1]);
14546 /* ??$?6MDU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$complex@M@0@@Z */
14547 /* ??$?6MDU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@M@0@@Z */
14548 basic_ostream_char* __cdecl basic_ostream_char_print_complex_float(basic_ostream_char *ostr, const complex_float *val)
14550 struct {
14551 basic_ostringstream_char obj;
14552 basic_ios_char vbase;
14553 } oss;
14554 ios_base *ostringstream_ios_base, *ostream_ios_base;
14555 locale loc;
14556 basic_string_char str;
14557 basic_ostringstream_char_ctor(&oss.obj);
14558 ostringstream_ios_base = &oss.vbase.base;
14559 ostream_ios_base = &basic_ostream_char_get_basic_ios(ostr)->base;
14560 TRACE("(%p %p)\n", ostr, val);
14562 ios_base_imbue(ostringstream_ios_base, &loc, IOS_LOCALE(ostream_ios_base));
14563 locale_dtor(&loc);
14564 ios_base_precision_set(ostringstream_ios_base, ios_base_precision_get(ostream_ios_base));
14565 ios_base_flags_set(ostringstream_ios_base, ios_base_flags_get(ostream_ios_base));
14567 basic_ostream_char_print_ch(&oss.obj.base, '(');
14568 basic_ostream_char_print_float(&oss.obj.base, val->real);
14569 basic_ostream_char_print_ch(&oss.obj.base, ',');
14570 basic_ostream_char_print_float(&oss.obj.base, val->imag);
14571 basic_ostream_char_print_ch(&oss.obj.base, ')');
14573 basic_ostringstream_char_str_get(&oss.obj, &str);
14574 basic_ostringstream_char_dtor(&oss.vbase);
14575 basic_ostream_char_print_bstr(ostr, &str);
14576 MSVCP_basic_string_char_dtor(&str);
14577 return ostr;
14580 /* ??$?6NDU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$complex@N@0@@Z */
14581 /* ??$?6NDU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@N@0@@Z */
14582 basic_ostream_char* __cdecl basic_ostream_char_print_complex_double(basic_ostream_char *ostr, const complex_double *val)
14584 struct {
14585 basic_ostringstream_char obj;
14586 basic_ios_char vbase;
14587 } oss;
14588 ios_base *ostringstream_ios_base, *ostream_ios_base;
14589 locale loc;
14590 basic_string_char str;
14591 basic_ostringstream_char_ctor(&oss.obj);
14592 ostringstream_ios_base = &oss.vbase.base;
14593 ostream_ios_base = &basic_ostream_char_get_basic_ios(ostr)->base;
14594 TRACE("(%p %p)\n", ostr, val);
14596 ios_base_imbue(ostringstream_ios_base, &loc, IOS_LOCALE(ostream_ios_base));
14597 locale_dtor(&loc);
14598 ios_base_precision_set(ostringstream_ios_base, ios_base_precision_get(ostream_ios_base));
14599 ios_base_flags_set(ostringstream_ios_base, ios_base_flags_get(ostream_ios_base));
14601 basic_ostream_char_print_ch(&oss.obj.base, '(');
14602 basic_ostream_char_print_double(&oss.obj.base, val->real);
14603 basic_ostream_char_print_ch(&oss.obj.base, ',');
14604 basic_ostream_char_print_double(&oss.obj.base, val->imag);
14605 basic_ostream_char_print_ch(&oss.obj.base, ')');
14607 basic_ostringstream_char_str_get(&oss.obj, &str);
14608 basic_ostringstream_char_dtor(&oss.vbase);
14609 basic_ostream_char_print_bstr(ostr, &str);
14610 MSVCP_basic_string_char_dtor(&str);
14611 return ostr;
14614 /* ??$?6odu?$char_traits@d@std@@@std@@yaaav?$basic_ostream@du?$char_traits@d@std@@@0@aav10@abv?$complex@o@0@@Z */
14615 /* ??$?6ODU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@O@0@@Z */
14616 basic_ostream_char* __cdecl basic_ostream_char_print_complex_ldouble(basic_ostream_char *ostr, const complex_double *val)
14618 struct {
14619 basic_ostringstream_char obj;
14620 basic_ios_char vbase;
14621 } oss;
14622 ios_base *ostringstream_ios_base, *ostream_ios_base;
14623 locale loc;
14624 basic_string_char str;
14625 basic_ostringstream_char_ctor(&oss.obj);
14626 ostringstream_ios_base = &oss.vbase.base;
14627 ostream_ios_base = &basic_ostream_char_get_basic_ios(ostr)->base;
14628 TRACE("(%p %p)\n", ostr, val);
14630 ios_base_imbue(ostringstream_ios_base, &loc, IOS_LOCALE(ostream_ios_base));
14631 locale_dtor(&loc);
14632 ios_base_precision_set(ostringstream_ios_base, ios_base_precision_get(ostream_ios_base));
14633 ios_base_flags_set(ostringstream_ios_base, ios_base_flags_get(ostream_ios_base));
14635 basic_ostream_char_print_ch(&oss.obj.base, '(');
14636 basic_ostream_char_print_ldouble(&oss.obj.base, val->real);
14637 basic_ostream_char_print_ch(&oss.obj.base, ',');
14638 basic_ostream_char_print_ldouble(&oss.obj.base, val->imag);
14639 basic_ostream_char_print_ch(&oss.obj.base, ')');
14641 basic_ostringstream_char_str_get(&oss.obj, &str);
14642 basic_ostringstream_char_dtor(&oss.vbase);
14643 basic_ostream_char_print_bstr(ostr, &str);
14644 MSVCP_basic_string_char_dtor(&str);
14645 return ostr;
14648 /* ?_File_size@sys@tr2@std@@YA_KPBD@Z */
14649 /* ?_File_size@sys@tr2@std@@YA_KPEBD@Z */
14650 ULONGLONG __cdecl tr2_sys__File_size(char const* path)
14652 WIN32_FILE_ATTRIBUTE_DATA fad;
14654 TRACE("(%s)\n", debugstr_a(path));
14655 if(!GetFileAttributesExA(path, GetFileExInfoStandard, &fad))
14656 return 0;
14658 return ((ULONGLONG)(fad.nFileSizeHigh) << 32) + fad.nFileSizeLow;
14661 static int equivalent_handles(HANDLE h1, HANDLE h2)
14663 int ret;
14664 BY_HANDLE_FILE_INFORMATION info1, info2;
14666 if(h1 == INVALID_HANDLE_VALUE)
14667 return h2 == INVALID_HANDLE_VALUE ? -1 : 0;
14668 else if(h2 == INVALID_HANDLE_VALUE)
14669 return 0;
14671 ret = GetFileInformationByHandle(h1, &info1) && GetFileInformationByHandle(h2, &info2);
14672 if(!ret)
14673 return -1;
14674 return (info1.dwVolumeSerialNumber == info2.dwVolumeSerialNumber
14675 && info1.nFileIndexHigh == info2.nFileIndexHigh
14676 && info1.nFileIndexLow == info2.nFileIndexLow
14680 /* ?_Equivalent@sys@tr2@std@@YAHPBD0@Z */
14681 /* ?_Equivalent@sys@tr2@std@@YAHPEBD0@Z */
14682 int __cdecl tr2_sys__Equivalent(char const* path1, char const* path2)
14684 HANDLE h1, h2;
14685 int ret;
14687 TRACE("(%s %s)\n", debugstr_a(path1), debugstr_a(path2));
14689 h1 = CreateFileA(path1, 0, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
14690 NULL, OPEN_EXISTING, 0, 0);
14691 h2 = CreateFileA(path2, 0, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
14692 NULL, OPEN_EXISTING, 0, 0);
14693 ret = equivalent_handles(h1, h2);
14694 CloseHandle(h1);
14695 CloseHandle(h2);
14696 return ret;
14699 /* ?_Current_get@sys@tr2@std@@YAPADAAY0BAE@D@Z */
14700 /* ?_Current_get@sys@tr2@std@@YAPEADAEAY0BAE@D@Z */
14701 char* __cdecl tr2_sys__Current_get(char *current_path)
14703 TRACE("(%s)\n", debugstr_a(current_path));
14705 if(!GetCurrentDirectoryA(MAX_PATH, current_path))
14706 return NULL;
14707 return current_path;
14710 /* ?_Current_set@sys@tr2@std@@YA_NPBD@Z */
14711 /* ?_Current_set@sys@tr2@std@@YA_NPEBD@Z */
14712 bool __cdecl tr2_sys__Current_set(char const* path)
14714 TRACE("(%s)\n", debugstr_a(path));
14715 return SetCurrentDirectoryA(path) != 0;
14718 /* ?_Make_dir@sys@tr2@std@@YAHPBD@Z */
14719 /* ?_Make_dir@sys@tr2@std@@YAHPEBD@Z */
14720 int __cdecl tr2_sys__Make_dir(char const* path)
14722 TRACE("(%s)\n", debugstr_a(path));
14724 if(!CreateDirectoryA(path, NULL)) {
14725 if(GetLastError() == ERROR_ALREADY_EXISTS)
14726 return 0;
14727 else
14728 return -1;
14731 return 1;
14734 /* ?_Remove_dir@sys@tr2@std@@YA_NPBD@Z */
14735 /* ?_Remove_dir@sys@tr2@std@@YA_NPEBD@Z */
14736 bool __cdecl tr2_sys__Remove_dir(char const* path)
14738 TRACE("(%s)\n", debugstr_a(path));
14739 return RemoveDirectoryA(path) != 0;
14742 /* ?_Copy_file@sys@tr2@std@@YAHPBD0_N@Z */
14743 /* ?_Copy_file@sys@tr2@std@@YAHPEBD0_N@Z */
14744 int __cdecl tr2_sys__Copy_file(char const* source, char const* dest, bool fail_if_exists)
14746 TRACE("(%s %s %x)\n", debugstr_a(source), debugstr_a(dest), fail_if_exists);
14748 if(!source || !dest)
14749 return ERROR_INVALID_PARAMETER;
14751 if(CopyFileA(source, dest, fail_if_exists))
14752 return ERROR_SUCCESS;
14753 return GetLastError();
14756 /* ?_Rename@sys@tr2@std@@YAHPBD0@Z */
14757 /* ?_Rename@sys@tr2@std@@YAHPEBD0@Z */
14758 int __cdecl tr2_sys__Rename(char const* old_path, char const* new_path)
14760 TRACE("(%s %s)\n", debugstr_a(old_path), debugstr_a(new_path));
14762 if(!old_path || !new_path)
14763 return ERROR_INVALID_PARAMETER;
14765 if(MoveFileExA(old_path, new_path, MOVEFILE_COPY_ALLOWED))
14766 return ERROR_SUCCESS;
14767 return GetLastError();
14770 /* ?_Statvfs@sys@tr2@std@@YA?AUspace_info@123@PBD@Z */
14771 /* ?_Statvfs@sys@tr2@std@@YA?AUspace_info@123@PEBD@Z */
14772 struct space_info* __cdecl tr2_sys__Statvfs(struct space_info *ret, const char* path)
14774 ULARGE_INTEGER available, total, free;
14776 TRACE("(%s)\n", debugstr_a(path));
14778 if(!path || !GetDiskFreeSpaceExA(path, &available, &total, &free)) {
14779 ret->capacity = ret->free = ret->available = 0;
14780 }else {
14781 ret->capacity = total.QuadPart;
14782 ret->free = free.QuadPart;
14783 ret->available = available.QuadPart;
14785 return ret;
14788 /* ?_Stat@sys@tr2@std@@YA?AW4file_type@123@PBDAAH@Z */
14789 /* ?_Stat@sys@tr2@std@@YA?AW4file_type@123@PEBDAEAH@Z */
14790 enum file_type __cdecl tr2_sys__Stat(char const* path, int* err_code)
14792 DWORD attr;
14793 TRACE("(%s %p)\n", debugstr_a(path), err_code);
14794 if(!path) {
14795 *err_code = ERROR_INVALID_PARAMETER;
14796 return status_unknown;
14799 attr=GetFileAttributesA(path);
14800 if(attr == INVALID_FILE_ATTRIBUTES) {
14801 enum file_type ret;
14802 switch(GetLastError()) {
14803 case ERROR_FILE_NOT_FOUND:
14804 case ERROR_BAD_NETPATH:
14805 case ERROR_INVALID_NAME:
14806 case ERROR_BAD_PATHNAME:
14807 case ERROR_PATH_NOT_FOUND:
14808 ret = file_not_found;
14809 *err_code = ERROR_SUCCESS;
14810 break;
14811 default:
14812 ret = status_unknown;
14813 *err_code = GetLastError();
14815 return ret;
14818 *err_code = ERROR_SUCCESS;
14819 return (attr & FILE_ATTRIBUTE_DIRECTORY)?directory_file:regular_file;
14822 /* ?_Lstat@sys@tr2@std@@YA?AW4file_type@123@PBDAAH@Z */
14823 /* ?_Lstat@sys@tr2@std@@YA?AW4file_type@123@PEBDAEAH@Z */
14824 enum file_type __cdecl tr2_sys__Lstat(char const* path, int* err_code)
14826 return tr2_sys__Stat(path, err_code);
14829 static __int64 get_last_write_time(HANDLE h)
14831 FILETIME wt;
14832 __int64 ret;
14834 if(!GetFileTime(h, 0, 0, &wt))
14835 return -1;
14837 ret = (((__int64)wt.dwHighDateTime)<< 32) + wt.dwLowDateTime;
14838 ret -= TICKS_1601_TO_1970;
14839 return ret;
14842 /* ?_Last_write_time@sys@tr2@std@@YA_JPBD@Z */
14843 /* ?_Last_write_time@sys@tr2@std@@YA_JPEBD@Z */
14844 __int64 __cdecl tr2_sys__Last_write_time(char const* path)
14846 HANDLE handle;
14847 __int64 ret;
14849 TRACE("(%s)\n", debugstr_a(path));
14851 handle = CreateFileA(path, 0, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
14852 NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
14853 if(handle == INVALID_HANDLE_VALUE)
14854 return 0;
14856 ret = get_last_write_time(handle);
14857 CloseHandle(handle);
14858 return ret / TICKSPERSEC;
14861 /* _Last_write_time */
14862 __int64 __cdecl _Last_write_time(const wchar_t *path)
14864 HANDLE handle;
14865 __int64 ret;
14867 TRACE("(%s)\n", debugstr_w(path));
14869 handle = CreateFileW(path, 0, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
14870 NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
14871 if(handle == INVALID_HANDLE_VALUE)
14872 return -1;
14874 ret = get_last_write_time(handle);
14875 CloseHandle(handle);
14876 return ret;
14879 /* ?_Last_write_time@sys@tr2@std@@YA_JPB_W@Z */
14880 /* ?_Last_write_time@sys@tr2@std@@YA_JPEB_W@Z */
14881 __int64 __cdecl tr2_sys__Last_write_time_wchar(const wchar_t *path)
14883 TRACE("(%s)\n", debugstr_w(path));
14884 return _Last_write_time(path) / TICKSPERSEC;
14887 static int set_last_write_time(HANDLE h, __int64 time)
14889 FILETIME wt;
14891 time += TICKS_1601_TO_1970;
14892 wt.dwLowDateTime = (DWORD)time;
14893 wt.dwHighDateTime = (DWORD)(time >> 32);
14894 return SetFileTime(h, 0, 0, &wt);
14897 /* ?_Last_write_time@sys@tr2@std@@YAXPBD_J@Z */
14898 /* ?_Last_write_time@sys@tr2@std@@YAXPEBD_J@Z */
14899 void __cdecl tr2_sys__Last_write_time_set(char const* path, __int64 newtime)
14901 HANDLE handle;
14903 TRACE("(%s)\n", debugstr_a(path));
14905 handle = CreateFileA(path, FILE_WRITE_ATTRIBUTES,
14906 FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
14907 NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
14908 if(handle == INVALID_HANDLE_VALUE)
14909 return;
14911 /* This is the implementation based on the test of msvcp110.
14912 * According to the test of msvcp120,
14913 * msvcp120's implementation does nothing. Obviously, this is a bug of windows.
14915 set_last_write_time(handle, newtime * TICKSPERSEC);
14916 CloseHandle(handle);
14919 /* _Set_last_write_time */
14920 int __cdecl _Set_last_write_time(const wchar_t *path, __int64 time)
14922 HANDLE handle;
14923 int ret;
14925 TRACE("(%s)\n", debugstr_w(path));
14927 handle = CreateFileW(path, FILE_WRITE_ATTRIBUTES,
14928 FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
14929 NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
14930 if(handle == INVALID_HANDLE_VALUE)
14931 return 0;
14933 ret = set_last_write_time(handle, time);
14934 CloseHandle(handle);
14935 return ret;
14938 /* ?_Last_write_time@sys@tr2@std@@YAXPB_W_J@Z */
14939 /* ?_Last_write_time@sys@tr2@std@@YAXPEB_W_J@Z */
14940 void __cdecl tr2_sys__Last_write_time_set_wchar(const wchar_t *path, __int64 time)
14942 TRACE("(%s)\n", debugstr_w(path));
14943 _Set_last_write_time(path, time * TICKSPERSEC);
14946 /* ??_Open_dir@sys@tr2@std@@YAPAXPA_WPB_WAAHAAW4file_type@123@@Z */
14947 /* ??_Open_dir@sys@tr2@std@@YAPEAXPEA_WPEB_WAEAHAEAW4file_type@123@@Z */
14948 void* __cdecl tr2_sys__Open_dir_wchar(wchar_t* target, wchar_t const* dest, int* err_code, enum file_type* type)
14950 HANDLE handle;
14951 WIN32_FIND_DATAW data;
14952 wchar_t temppath[MAX_PATH];
14954 TRACE("(%p %s %p %p)\n", target, debugstr_w(dest), err_code, type);
14955 if(wcslen(dest) > MAX_PATH - 3) {
14956 *err_code = ERROR_BAD_PATHNAME;
14957 *target = '\0';
14958 return NULL;
14960 wcscpy(temppath, dest);
14961 wcscat(temppath, L"\\*");
14963 handle = FindFirstFileW(temppath, &data);
14964 if(handle == INVALID_HANDLE_VALUE) {
14965 *err_code = ERROR_BAD_PATHNAME;
14966 *target = '\0';
14967 return NULL;
14969 while(!wcscmp(data.cFileName, L".") || !wcscmp(data.cFileName, L"..")) {
14970 if(!FindNextFileW(handle, &data)) {
14971 *err_code = ERROR_SUCCESS;
14972 *type = status_unknown;
14973 *target = '\0';
14974 FindClose(handle);
14975 return NULL;
14979 wcscpy(target, data.cFileName);
14980 *err_code = ERROR_SUCCESS;
14981 if(data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
14982 *type = directory_file;
14983 else
14984 *type = regular_file;
14985 return handle;
14988 /* ?_Open_dir@sys@tr2@std@@YAPAXAAY0BAE@DPBDAAHAAW4file_type@123@@Z */
14989 /* ?_Open_dir@sys@tr2@std@@YAPEAXAEAY0BAE@DPEBDAEAHAEAW4file_type@123@@Z */
14990 void* __cdecl tr2_sys__Open_dir(char* target, char const* dest, int* err_code, enum file_type* type)
14992 void *handle;
14993 wchar_t target_w[MAX_PATH];
14994 wchar_t dest_w[MAX_PATH];
14996 TRACE("(%p %s %p %p)\n", target, debugstr_a(dest), err_code, type);
14998 if (dest && !MultiByteToWideChar(CP_ACP, 0, dest, -1, dest_w, MAX_PATH))
15000 WARN("Failed to convert input string.\n");
15001 *err_code = ERROR_BAD_PATHNAME;
15002 return NULL;
15005 handle = tr2_sys__Open_dir_wchar(target_w, dest ? dest_w : NULL, err_code, type);
15007 WideCharToMultiByte(CP_ACP, 0, target_w, -1, target, MAX_PATH, NULL, NULL);
15009 return handle;
15012 /* ??_Read_dir@sys@tr2@std@@YAPA_WPA_WPAXAAW4file_type@123@@Z */
15013 /* ??_Read_dir@sys@tr2@std@@YAPEA_WPEA_WPEAXAEAW4file_type@123@@Z */
15014 wchar_t* __cdecl tr2_sys__Read_dir_wchar(wchar_t* target, void* handle, enum file_type* type)
15016 WIN32_FIND_DATAW data;
15018 TRACE("(%p %p %p)\n", target, handle, type);
15020 do {
15021 if(!FindNextFileW(handle, &data)) {
15022 *type = status_unknown;
15023 *target = '\0';
15024 return target;
15026 } while(!wcscmp(data.cFileName, L".") || !wcscmp(data.cFileName, L".."));
15028 wcscpy(target, data.cFileName);
15029 if(data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
15030 *type = directory_file;
15031 else
15032 *type = regular_file;
15033 return target;
15036 /* ?_Read_dir@sys@tr2@std@@YAPADAAY0BAE@DPAXAAW4file_type@123@@Z */
15037 /* ?_Read_dir@sys@tr2@std@@YAPEADAEAY0BAE@DPEAXAEAW4file_type@123@@Z */
15038 char* __cdecl tr2_sys__Read_dir(char* target, void* handle, enum file_type* type)
15040 wchar_t target_w[MAX_PATH];
15042 tr2_sys__Read_dir_wchar(target_w, handle, type);
15043 WideCharToMultiByte(CP_ACP, 0, target_w, -1, target, MAX_PATH, NULL, NULL);
15045 return target;
15048 /* ?_Close_dir@sys@tr2@std@@YAXPAX@Z */
15049 /* ?_Close_dir@sys@tr2@std@@YAXPEAX@Z */
15050 void __cdecl tr2_sys__Close_dir(void* handle)
15052 TRACE("(%p)\n", handle);
15054 FindClose(handle);
15057 /* ?_Link@sys@tr2@std@@YAHPBD0@Z */
15058 /* ?_Link@sys@tr2@std@@YAHPEBD0@Z */
15059 int __cdecl tr2_sys__Link(char const* existing_path, char const* new_path)
15061 TRACE("(%s %s)\n", debugstr_a(existing_path), debugstr_a(new_path));
15062 if(!existing_path || !new_path)
15063 return ERROR_INVALID_PARAMETER;
15065 if(CreateHardLinkA(new_path, existing_path, NULL))
15066 return ERROR_SUCCESS;
15067 return GetLastError();
15070 /* ?_Link@sys@tr2@std@@YAHPB_W0@Z */
15071 /* ?_Link@sys@tr2@std@@YAHPEB_W0@Z */
15072 /* _Link */
15073 int __cdecl tr2_sys__Link_wchar(WCHAR const* existing_path, WCHAR const* new_path)
15075 TRACE("(%s %s)\n", debugstr_w(existing_path), debugstr_w(new_path));
15076 if(!existing_path || !new_path)
15077 return ERROR_INVALID_PARAMETER;
15079 if(CreateHardLinkW(new_path, existing_path, NULL))
15080 return ERROR_SUCCESS;
15081 return GetLastError();
15084 /* ?_Symlink@sys@tr2@std@@YAHPBD0@Z */
15085 /* ?_Symlink@sys@tr2@std@@YAHPEBD0@Z */
15086 int __cdecl tr2_sys__Symlink(char const* existing_file_name, char const* file_name)
15088 TRACE("(%s %s)\n", debugstr_a(existing_file_name), debugstr_a(file_name));
15089 if(!existing_file_name || !file_name)
15090 return ERROR_INVALID_PARAMETER;
15092 if(CreateSymbolicLinkA(file_name, existing_file_name, 0))
15093 return ERROR_SUCCESS;
15094 return GetLastError();
15097 /* ?_Symlink@sys@tr2@std@@YAHPB_W0@Z */
15098 /* ?_Symlink@sys@tr2@std@@YAHPEB_W0@Z */
15099 /* _Symlink */
15100 int __cdecl tr2_sys__Symlink_wchar(WCHAR const* existing_file_name, WCHAR const* file_name)
15102 TRACE("(%s %s)\n", debugstr_w(existing_file_name), debugstr_w(file_name));
15103 if(!existing_file_name || !file_name)
15104 return ERROR_INVALID_PARAMETER;
15106 if(CreateSymbolicLinkW(file_name, existing_file_name, 0))
15107 return ERROR_SUCCESS;
15108 return GetLastError();
15111 /* ?_Unlink@sys@tr2@std@@YAHPBD@Z */
15112 /* ?_Unlink@sys@tr2@std@@YAHPEBD@Z */
15113 int __cdecl tr2_sys__Unlink(char const* path)
15115 TRACE("(%s)\n", debugstr_a(path));
15117 if(DeleteFileA(path))
15118 return ERROR_SUCCESS;
15119 return GetLastError();
15122 /* ?_Unlink@sys@tr2@std@@YAHPB_W@Z */
15123 /* ?_Unlink@sys@tr2@std@@YAHPEB_W@Z */
15124 /* _Unlink */
15125 int __cdecl tr2_sys__Unlink_wchar(WCHAR const* path)
15127 TRACE("(%s)\n", debugstr_w(path));
15129 if(DeleteFileW(path))
15130 return ERROR_SUCCESS;
15131 return GetLastError();
15134 /* ??0strstream@std@@QAE@PADHH@Z */
15135 /* ??0strstream@std@@QEAA@PEAD_JH@Z */
15136 #if _MSVCP_VER >= 100 /* sizeof(streamsize) == 8 */
15137 DEFINE_THISCALL_WRAPPER(strstream_ctor, 24)
15138 #else
15139 DEFINE_THISCALL_WRAPPER(strstream_ctor, 20)
15140 #endif
15141 strstream* __thiscall strstream_ctor(strstream *this, char *buf, streamsize size, int mode, bool virt_init)
15143 basic_ios_char *basic_ios;
15145 TRACE("(%p %p %s %d %d)\n", this, buf, wine_dbgstr_longlong(size), mode, virt_init);
15147 if(virt_init) {
15148 this->base.base1.vbtable = strstream_vbtable1;
15149 this->base.base2.vbtable = strstream_vbtable2;
15150 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
15151 INIT_BASIC_IOS_VTORDISP(basic_ios);
15152 basic_ios_char_ctor(basic_ios);
15153 }else {
15154 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
15157 strstreambuf_ctor_get_put(&this->buf, buf, size,
15158 buf && (mode & OPENMODE_app) ? buf+strlen(buf) : buf);
15159 basic_iostream_char_ctor(&this->base, &this->buf.base, FALSE);
15160 basic_ios->base.vtable = &strstream_vtable;
15161 return this;
15164 /* ??1strstream@std@@UAE@XZ */
15165 /* ??1strstream@std@@UEAA@XZ */
15166 DEFINE_THISCALL_WRAPPER(strstream_dtor, 4)
15167 void __thiscall strstream_dtor(basic_ios_char *base)
15169 strstream *this = strstream_from_basic_ios(base);
15171 TRACE("(%p)\n", this);
15173 basic_iostream_char_dtor(basic_iostream_char_to_basic_ios(&this->base));
15174 strstreambuf_dtor(&this->buf);
15177 static void strstream_vbase_dtor(strstream *this)
15179 basic_ios_char *base = strstream_to_basic_ios(this);
15181 TRACE("(%p)\n", this);
15183 strstream_dtor(base);
15184 basic_ios_char_dtor(base);
15187 DEFINE_THISCALL_WRAPPER(strstream_vector_dtor, 8)
15188 strstream* __thiscall strstream_vector_dtor(basic_ios_char *base, unsigned int flags)
15190 strstream *this = strstream_from_basic_ios(base);
15192 TRACE("(%p %x)\n", this, flags);
15194 if(flags & 2) {
15195 /* we have an array, with the number of elements stored before the first object */
15196 INT_PTR i, *ptr = (INT_PTR *)this-1;
15198 for(i=*ptr-1; i>=0; i--)
15199 strstream_vbase_dtor(this+i);
15200 operator_delete(ptr);
15201 } else {
15202 strstream_vbase_dtor(this);
15203 if(flags & 1)
15204 operator_delete(this);
15207 return this;
15210 static void __cdecl setprecision_func(ios_base *base, streamsize prec)
15212 ios_base_precision_set(base, prec);
15215 /* ?setprecision@std@@YA?AU?$_Smanip@H@1@H@Z */
15216 /* ?setprecision@std@@YA?AU?$_Smanip@_J@1@_J@Z */
15217 manip_streamsize* __cdecl setprecision(manip_streamsize *ret, streamsize prec)
15219 TRACE("(%p %s)\n", ret, wine_dbgstr_longlong(prec));
15221 ret->pfunc = setprecision_func;
15222 ret->arg = prec;
15223 return ret;
15226 static void __cdecl setw_func(ios_base *base, streamsize width)
15228 ios_base_width_set(base, width);
15231 /* ?setw@std@@YA?AU?$_Smanip@H@1@H@Z */
15232 /* ?setw@std@@YA?AU?$_Smanip@_J@1@_J@Z */
15233 manip_streamsize* __cdecl setw(manip_streamsize *ret, streamsize width)
15235 TRACE("(%p %s)\n", ret, wine_dbgstr_longlong(width));
15237 ret->pfunc = setw_func;
15238 ret->arg = width;
15239 return ret;
15242 static void __cdecl resetioflags_func(ios_base *base, int mask)
15244 ios_base_setf_mask(base, 0, mask);
15247 /* ?resetiosflags@std@@YA?AU?$_Smanip@H@1@H@Z */
15248 manip_int* __cdecl resetiosflags(manip_int *ret, int mask)
15250 TRACE("(%p %d)\n", ret, mask);
15252 ret->pfunc = resetioflags_func;
15253 ret->arg = mask;
15254 return ret;
15257 static void __cdecl setiosflags_func(ios_base *base, int mask)
15259 ios_base_setf_mask(base, FMTFLAG_mask, mask);
15262 /* ?setiosflags@std@@YA?AU?$_Smanip@H@1@H@Z */
15263 manip_int* __cdecl setiosflags(manip_int *ret, int mask)
15265 TRACE("(%p %d)\n", ret, mask);
15267 ret->pfunc = setiosflags_func;
15268 ret->arg = mask;
15269 return ret;
15272 static void __cdecl setbase_func(ios_base *base, int set_base)
15274 if(set_base == 10)
15275 set_base = FMTFLAG_dec;
15276 else if(set_base == 8)
15277 set_base = FMTFLAG_oct;
15278 else if(set_base == 16)
15279 set_base = FMTFLAG_hex;
15280 else
15281 set_base = 0;
15283 ios_base_setf_mask(base, set_base, FMTFLAG_basefield);
15286 /* ?setbase@std@@YA?AU?$_Smanip@H@1@H@Z */
15287 manip_int* __cdecl setbase(manip_int *ret, int base)
15289 TRACE("(%p %d)\n", ret, base);
15291 ret->pfunc = setbase_func;
15292 ret->arg = base;
15293 return ret;
15296 static basic_filebuf_char filebuf_char_stdin;
15297 /* ?cin@std@@3V?$basic_istream@DU?$char_traits@D@std@@@1@A */
15298 struct {
15299 basic_istream_char obj;
15300 #if _MSVCP_VER >= 110
15301 int vtordisp;
15302 #endif
15303 basic_ios_char vbase;
15304 } cin = { { 0 } };
15305 C_ASSERT(sizeof(cin) == VBTABLE_BASIC_IOS_ENTRY(basic_istream_char, 0)+sizeof(basic_ios_char));
15306 /* ?_Ptr_cin@std@@3PAV?$basic_istream@DU?$char_traits@D@std@@@1@A */
15307 /* ?_Ptr_cin@std@@3PEAV?$basic_istream@DU?$char_traits@D@std@@@1@EA */
15308 basic_istream_char *_Ptr_cin = &cin.obj;
15310 static basic_filebuf_wchar filebuf_short_stdin;
15311 /* ?wcin@std@@3V?$basic_istream@GU?$char_traits@G@std@@@1@A */
15312 struct {
15313 basic_istream_wchar obj;
15314 #if _MSVCP_VER >= 110
15315 int vtordisp;
15316 #endif
15317 basic_ios_wchar vbase;
15318 } ucin = { { 0 } };
15319 C_ASSERT(sizeof(ucin) == VBTABLE_BASIC_IOS_ENTRY(basic_istream_wchar, 0)+sizeof(basic_ios_wchar));
15320 /* ?_Ptr_wcin@std@@3PAV?$basic_istream@GU?$char_traits@G@std@@@1@A */
15321 /* ?_Ptr_wcin@std@@3PEAV?$basic_istream@GU?$char_traits@G@std@@@1@EA */
15322 basic_istream_wchar *_Ptr_ucin = &ucin.obj;
15324 static basic_filebuf_wchar filebuf_wchar_stdin;
15325 /* ?wcin@std@@3V?$basic_istream@_WU?$char_traits@_W@std@@@1@A */
15326 struct {
15327 basic_istream_wchar obj;
15328 #if _MSVCP_VER >= 110
15329 int vtordisp;
15330 #endif
15331 basic_ios_wchar vbase;
15332 } wcin = { { 0 } };
15333 C_ASSERT(sizeof(wcin) == VBTABLE_BASIC_IOS_ENTRY(basic_istream_wchar, 0)+sizeof(basic_ios_wchar));
15334 /* ?_Ptr_wcin@std@@3PAV?$basic_istream@_WU?$char_traits@_W@std@@@1@A */
15335 /* ?_Ptr_wcin@std@@3PEAV?$basic_istream@_WU?$char_traits@_W@std@@@1@EA */
15336 basic_istream_wchar *_Ptr_wcin = &wcin.obj;
15338 static basic_filebuf_char filebuf_char_stdout;
15339 /* ?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A */
15340 struct {
15341 basic_ostream_char obj;
15342 #if _MSVCP_VER >= 110
15343 int vtordisp;
15344 #endif
15345 basic_ios_char vbase;
15346 } cout = { { 0 } };
15347 C_ASSERT(sizeof(cout) == VBTABLE_BASIC_IOS_ENTRY(basic_ostream_char, 0)+sizeof(basic_ios_char));
15348 /* ?_Ptr_cout@std@@3PAV?$basic_ostream@DU?$char_traits@D@std@@@1@A */
15349 /* ?_Ptr_cout@std@@3PEAV?$basic_ostream@DU?$char_traits@D@std@@@1@EA */
15350 basic_ostream_char *_Ptr_cout = &cout.obj;
15352 static basic_filebuf_wchar filebuf_short_stdout;
15353 /* ?wcout@std@@3V?$basic_ostream@GU?$char_traits@G@std@@@1@A */
15354 struct {
15355 basic_ostream_wchar obj;
15356 #if _MSVCP_VER >= 110
15357 int vtordisp;
15358 #endif
15359 basic_ios_wchar vbase;
15360 } ucout = { { 0 } };
15361 C_ASSERT(sizeof(ucout) == VBTABLE_BASIC_IOS_ENTRY(basic_ostream_wchar, 0)+sizeof(basic_ios_wchar));
15362 /* ?_Ptr_wcout@std@@3PAV?$basic_ostream@GU?$char_traits@G@std@@@1@A */
15363 /* ?_Ptr_wcout@std@@3PEAV?$basic_ostream@GU?$char_traits@G@std@@@1@EA */
15364 basic_ostream_wchar *_Ptr_ucout = &ucout.obj;
15366 static basic_filebuf_wchar filebuf_wchar_stdout;
15367 /* ?wcout@std@@3V?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
15368 struct {
15369 basic_ostream_wchar obj;
15370 #if _MSVCP_VER >= 110
15371 int vtordisp;
15372 #endif
15373 basic_ios_wchar vbase;
15374 } wcout = { { 0 } };
15375 C_ASSERT(sizeof(wcout) == VBTABLE_BASIC_IOS_ENTRY(basic_ostream_wchar, 0)+sizeof(basic_ios_wchar));
15376 /* ?_Ptr_wcout@std@@3PAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
15377 /* ?_Ptr_wcout@std@@3PEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@EA */
15378 basic_ostream_wchar *_Ptr_wcout = &wcout.obj;
15380 static basic_filebuf_char filebuf_char_stderr;
15381 /* ?cerr@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A */
15382 struct {
15383 basic_ostream_char obj;
15384 #if _MSVCP_VER >= 110
15385 int vtordisp;
15386 #endif
15387 basic_ios_char vbase;
15388 } cerr = { { 0 } };
15389 C_ASSERT(sizeof(cerr) == VBTABLE_BASIC_IOS_ENTRY(basic_ostream_char, 0)+sizeof(basic_ios_char));
15390 /* ?_Ptr_cerr@std@@3PAV?$basic_ostream@DU?$char_traits@D@std@@@1@A */
15391 /* ?_Ptr_cerr@std@@3PEAV?$basic_ostream@DU?$char_traits@D@std@@@1@EA */
15392 basic_ostream_char *_Ptr_cerr = &cerr.obj;
15394 static basic_filebuf_wchar filebuf_short_stderr;
15395 /* ?wcerr@std@@3V?$basic_ostream@GU?$char_traits@G@std@@@1@A */
15396 struct {
15397 basic_ostream_wchar obj;
15398 #if _MSVCP_VER >= 110
15399 int vtordisp;
15400 #endif
15401 basic_ios_wchar vbase;
15402 } ucerr = { { 0 } };
15403 C_ASSERT(sizeof(ucerr) == VBTABLE_BASIC_IOS_ENTRY(basic_ostream_wchar, 0)+sizeof(basic_ios_wchar));
15404 /* ?_Ptr_wcerr@std@@3PAV?$basic_ostream@GU?$char_traits@G@std@@@1@A */
15405 /* ?_Ptr_wcerr@std@@3PEAV?$basic_ostream@GU?$char_traits@G@std@@@1@EA */
15406 basic_ostream_wchar *_Ptr_ucerr = &ucerr.obj;
15408 static basic_filebuf_wchar filebuf_wchar_stderr;
15409 /* ?wcerr@std@@3V?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
15410 struct {
15411 basic_ostream_wchar obj;
15412 #if _MSVCP_VER >= 110
15413 int vtordisp;
15414 #endif
15415 basic_ios_wchar vbase;
15416 } wcerr = { { 0 } };
15417 C_ASSERT(sizeof(wcerr) == VBTABLE_BASIC_IOS_ENTRY(basic_ostream_wchar, 0)+sizeof(basic_ios_wchar));
15418 /* ?_Ptr_wcerr@std@@3PAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
15419 /* ?_Ptr_wcerr@std@@3PEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@EA */
15420 basic_ostream_wchar *_Ptr_wcerr = &wcerr.obj;
15422 static basic_filebuf_char filebuf_char_log;
15423 /* ?clog@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A */
15424 struct {
15425 basic_ostream_char obj;
15426 #if _MSVCP_VER >= 110
15427 int vtordisp;
15428 #endif
15429 basic_ios_char vbase;
15430 } MSVCP_clog = { { 0 } };
15431 C_ASSERT(sizeof(MSVCP_clog) == VBTABLE_BASIC_IOS_ENTRY(basic_ostream_char, 0)+sizeof(basic_ios_char));
15432 /* ?_Ptr_clog@std@@3PAV?$basic_ostream@DU?$char_traits@D@std@@@1@A */
15433 /* ?_Ptr_clog@std@@3PEAV?$basic_ostream@DU?$char_traits@D@std@@@1@EA */
15434 basic_ostream_char *_Ptr_clog = &MSVCP_clog.obj;
15436 static basic_filebuf_wchar filebuf_short_log;
15437 /* ?wclog@std@@3V?$basic_ostream@GU?$char_traits@G@std@@@1@A */
15438 struct {
15439 basic_ostream_wchar obj;
15440 #if _MSVCP_VER >= 110
15441 int vtordisp;
15442 #endif
15443 basic_ios_wchar vbase;
15444 } uclog = { { 0 } };
15445 C_ASSERT(sizeof(uclog) == VBTABLE_BASIC_IOS_ENTRY(basic_ostream_wchar, 0)+sizeof(basic_ios_wchar));
15446 /* ?_Ptr_wclog@std@@3PAV?$basic_ostream@GU?$char_traits@G@std@@@1@A */
15447 /* ?_Ptr_wclog@std@@3PEAV?$basic_ostream@GU?$char_traits@G@std@@@1@EA */
15448 basic_ostream_wchar *_Ptr_uclog = &uclog.obj;
15450 static basic_filebuf_wchar filebuf_wchar_log;
15451 /* ?wclog@std@@3V?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
15452 struct {
15453 basic_ostream_wchar obj;
15454 #if _MSVCP_VER >= 110
15455 int vtordisp;
15456 #endif
15457 basic_ios_wchar vbase;
15458 } wclog = { { 0 } };
15459 C_ASSERT(sizeof(wclog) == VBTABLE_BASIC_IOS_ENTRY(basic_ostream_wchar, 0)+sizeof(basic_ios_wchar));
15460 /* ?_Ptr_wclog@std@@3PAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
15461 /* ?_Ptr_wclog@std@@3PEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@EA */
15462 basic_ostream_wchar *_Ptr_wclog = &wclog.obj;
15464 /* ?_Init_cnt@Init@ios_base@std@@0HA */
15465 int ios_base_Init__Init_cnt = -1;
15467 /* ?_Init_cnt_func@Init@ios_base@std@@CAAAHXZ */
15468 /* ?_Init_cnt_func@Init@ios_base@std@@CAAEAHXZ */
15469 int* __cdecl ios_base_Init__Init_cnt_func(void)
15471 return &ios_base_Init__Init_cnt;
15474 /* ?_Init_ctor@Init@ios_base@std@@CAXPAV123@@Z */
15475 /* ?_Init_ctor@Init@ios_base@std@@CAXPEAV123@@Z */
15476 void __cdecl ios_base_Init__Init_ctor(void *this)
15478 TRACE("(%p)\n", this);
15480 if(ios_base_Init__Init_cnt < 0)
15481 ios_base_Init__Init_cnt = 1;
15482 else
15483 ios_base_Init__Init_cnt++;
15486 /* ??0Init@ios_base@std@@QAE@XZ */
15487 /* ??0Init@ios_base@std@@QEAA@XZ */
15488 DEFINE_THISCALL_WRAPPER(ios_base_Init_ctor, 4)
15489 void* __thiscall ios_base_Init_ctor(void *this)
15491 ios_base_Init__Init_ctor(this);
15492 return this;
15495 /* ?_Init_dtor@Init@ios_base@std@@CAXPAV123@@Z */
15496 /* ?_Init_dtor@Init@ios_base@std@@CAXPEAV123@@Z */
15497 void __cdecl ios_base_Init__Init_dtor(void *this)
15499 TRACE("(%p)\n", this);
15501 ios_base_Init__Init_cnt--;
15502 if(!ios_base_Init__Init_cnt) {
15503 basic_ostream_char_flush(&cout.obj);
15504 basic_ostream_char_flush(&cerr.obj);
15505 basic_ostream_char_flush(&MSVCP_clog.obj);
15509 /* ??1Init@ios_base@std@@QAE@XZ */
15510 /* ??1Init@ios_base@std@@QEAA@XZ */
15511 DEFINE_THISCALL_WRAPPER(ios_base_Init_dtor, 4)
15512 void __thiscall ios_base_Init_dtor(void *this)
15514 ios_base_Init__Init_dtor(this);
15517 /* ??4Init@ios_base@std@@QAEAAV012@ABV012@@Z */
15518 /* ??4Init@ios_base@std@@QEAAAEAV012@AEBV012@@Z */
15519 DEFINE_THISCALL_WRAPPER(ios_base_Init_op_assign, 8)
15520 void* __thiscall ios_base_Init_op_assign(void *this, void *rhs)
15522 TRACE("(%p %p)\n", this, rhs);
15523 return this;
15526 /* ?_Init_cnt@_Winit@std@@0HA */
15527 int _Winit__Init_cnt = -1;
15529 /* ??0_Winit@std@@QAE@XZ */
15530 /* ??0_Winit@std@@QEAA@XZ */
15531 DEFINE_THISCALL_WRAPPER(_Winit_ctor, 4)
15532 void* __thiscall _Winit_ctor(void *this)
15534 TRACE("(%p)\n", this);
15536 if(_Winit__Init_cnt < 0)
15537 _Winit__Init_cnt = 1;
15538 else
15539 _Winit__Init_cnt++;
15541 return this;
15544 /* ?_File_size@sys@tr2@std@@YA_KPB_W@Z */
15545 /* ?_File_size@sys@tr2@std@@YA_KPEB_W@Z */
15546 ULONGLONG __cdecl tr2_sys__File_size_wchar(WCHAR const* path)
15548 WIN32_FILE_ATTRIBUTE_DATA fad;
15550 TRACE("(%s)\n", debugstr_w(path));
15551 if(!GetFileAttributesExW(path, GetFileExInfoStandard, &fad))
15552 return 0;
15554 return ((ULONGLONG)(fad.nFileSizeHigh) << 32) + fad.nFileSizeLow;
15557 /* _File_size, msvcp140 version. Different error handling. */
15558 ULONGLONG __cdecl _File_size(WCHAR const* path)
15560 WIN32_FILE_ATTRIBUTE_DATA fad;
15562 TRACE("(%s)\n", debugstr_w(path));
15563 if(!GetFileAttributesExW(path, GetFileExInfoStandard, &fad))
15564 return ~(ULONGLONG)0;
15566 return ((ULONGLONG)(fad.nFileSizeHigh) << 32) + fad.nFileSizeLow;
15569 int __cdecl _Resize(const WCHAR *path, UINT64 size)
15571 LARGE_INTEGER offset;
15572 HANDLE file;
15573 BOOL ret;
15575 TRACE("(%s %s)\n", debugstr_w(path), wine_dbgstr_longlong(size));
15577 file = CreateFileW(path, FILE_GENERIC_WRITE, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
15578 NULL, OPEN_EXISTING, 0, 0);
15579 if(file == INVALID_HANDLE_VALUE)
15580 return GetLastError();
15582 offset.QuadPart = size;
15583 if((ret = SetFilePointerEx(file, offset, NULL, FILE_BEGIN)))
15584 ret = SetEndOfFile(file);
15585 CloseHandle(file);
15586 return ret ? 0 : GetLastError();
15589 /* ?_Equivalent@sys@tr2@std@@YAHPB_W0@Z */
15590 /* ?_Equivalent@sys@tr2@std@@YAHPEB_W0@Z */
15591 int __cdecl tr2_sys__Equivalent_wchar(WCHAR const* path1, WCHAR const* path2)
15593 HANDLE h1, h2;
15594 int ret;
15596 TRACE("(%s %s)\n", debugstr_w(path1), debugstr_w(path2));
15598 h1 = CreateFileW(path1, 0, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
15599 NULL, OPEN_EXISTING, 0, 0);
15600 h2 = CreateFileW(path2, 0, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
15601 NULL, OPEN_EXISTING, 0, 0);
15602 ret = equivalent_handles(h1, h2);
15603 CloseHandle(h1);
15604 CloseHandle(h2);
15605 return ret;
15608 /* _Equivalent, msvcp140 version */
15609 int __cdecl _Equivalent(WCHAR const* path1, WCHAR const* path2)
15611 HANDLE h1, h2;
15612 int ret;
15614 TRACE("(%s %s)\n", debugstr_w(path1), debugstr_w(path2));
15616 h1 = CreateFileW(path1, 0, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
15617 NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
15618 h2 = CreateFileW(path2, 0, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
15619 NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
15620 ret = equivalent_handles(h1, h2);
15621 CloseHandle(h1);
15622 CloseHandle(h2);
15623 return ret;
15626 /* ?_Current_get@sys@tr2@std@@YAPA_WAAY0BAE@_W@Z */
15627 /* ?_Current_get@sys@tr2@std@@YAPEA_WAEAY0BAE@_W@Z */
15628 WCHAR* __cdecl tr2_sys__Current_get_wchar(WCHAR *current_path)
15630 TRACE("(%s)\n", debugstr_w(current_path));
15632 if(!GetCurrentDirectoryW(MAX_PATH, current_path))
15633 return NULL;
15634 return current_path;
15637 /* _Current_get, msvcp140 version */
15638 BOOL __cdecl _Current_get(WCHAR *current_path)
15640 TRACE("(%s)\n", debugstr_w(current_path));
15642 if(!GetCurrentDirectoryW(MAX_PATH, current_path))
15643 return FALSE;
15644 return TRUE;
15647 /* ?_Current_set@sys@tr2@std@@YA_NPB_W@Z */
15648 /* ?_Current_set@sys@tr2@std@@YA_NPEB_W@Z */
15649 bool __cdecl tr2_sys__Current_set_wchar(WCHAR const* path)
15651 TRACE("(%s)\n", debugstr_w(path));
15652 return SetCurrentDirectoryW(path) != 0;
15655 /* ?_Make_dir@sys@tr2@std@@YAHPB_W@Z */
15656 /* ?_Make_dir@sys@tr2@std@@YAHPEB_W@Z */
15657 int __cdecl tr2_sys__Make_dir_wchar(WCHAR const* path)
15659 TRACE("(%s)\n", debugstr_w(path));
15661 if(!CreateDirectoryW(path, NULL)) {
15662 if(GetLastError() == ERROR_ALREADY_EXISTS)
15663 return 0;
15664 else
15665 return -1;
15668 return 1;
15671 /* ?_Remove_dir@sys@tr2@std@@YA_NPB_W@Z */
15672 /* ?_Remove_dir@sys@tr2@std@@YA_NPEB_W@Z */
15673 bool __cdecl tr2_sys__Remove_dir_wchar(WCHAR const* path)
15675 TRACE("(%s)\n", debugstr_w(path));
15676 return RemoveDirectoryW(path) != 0;
15679 /* ?_Copy_file@sys@tr2@std@@YAHPB_W0_N@Z */
15680 /* ?_Copy_file@sys@tr2@std@@YAHPEB_W0_N@Z */
15681 int __cdecl tr2_sys__Copy_file_wchar(WCHAR const* source, WCHAR const* dest, bool fail_if_exists)
15683 TRACE("(%s %s %x)\n", debugstr_w(source), debugstr_w(dest), fail_if_exists);
15685 if(CopyFileW(source, dest, fail_if_exists))
15686 return ERROR_SUCCESS;
15687 return GetLastError();
15690 /* ?_Rename@sys@tr2@std@@YAHPB_W0@Z */
15691 /* ?_Rename@sys@tr2@std@@YAHPEB_W0@Z */
15692 int __cdecl tr2_sys__Rename_wchar(WCHAR const* old_path, WCHAR const* new_path)
15694 TRACE("(%s %s)\n", debugstr_w(old_path), debugstr_w(new_path));
15696 if(MoveFileExW(old_path, new_path, MOVEFILE_COPY_ALLOWED))
15697 return ERROR_SUCCESS;
15698 return GetLastError();
15701 /* ?_Statvfs@sys@tr2@std@@YA?AUspace_info@123@PB_W@Z */
15702 /* ?_Statvfs@sys@tr2@std@@YA?AUspace_info@123@PEB_W@Z */
15703 struct space_info* __cdecl tr2_sys__Statvfs_wchar(struct space_info *ret, const WCHAR* path)
15705 ULARGE_INTEGER available, total, free;
15707 TRACE("(%s)\n", debugstr_w(path));
15709 if(!path || !GetDiskFreeSpaceExW(path, &available, &total, &free)) {
15710 ret->capacity = ret->free = ret->available = 0;
15711 }else {
15712 ret->capacity = total.QuadPart;
15713 ret->free = free.QuadPart;
15714 ret->available = available.QuadPart;
15716 return ret;
15719 /* ?_Stat@sys@tr2@std@@YA?AW4file_type@123@PB_WAAH@Z */
15720 /* ?_Stat@sys@tr2@std@@YA?AW4file_type@123@PEB_WAEAH@Z */
15721 enum file_type __cdecl tr2_sys__Stat_wchar(WCHAR const* path, int* err_code)
15723 DWORD attr;
15724 TRACE("(%s %p)\n", debugstr_w(path), err_code);
15725 if(!path) {
15726 *err_code = ERROR_INVALID_PARAMETER;
15727 return status_unknown;
15730 attr=GetFileAttributesW(path);
15731 if(attr == INVALID_FILE_ATTRIBUTES) {
15732 enum file_type ret;
15733 switch(GetLastError()) {
15734 case ERROR_FILE_NOT_FOUND:
15735 case ERROR_BAD_NETPATH:
15736 case ERROR_INVALID_NAME:
15737 case ERROR_BAD_PATHNAME:
15738 case ERROR_PATH_NOT_FOUND:
15739 ret = file_not_found;
15740 *err_code = ERROR_SUCCESS;
15741 break;
15742 default:
15743 ret = status_unknown;
15744 *err_code = GetLastError();
15746 return ret;
15749 *err_code = ERROR_SUCCESS;
15750 return (attr & FILE_ATTRIBUTE_DIRECTORY)?directory_file:regular_file;
15753 /* _Stat, msvcp140 version */
15754 enum file_type __cdecl _Stat(WCHAR const* path, int* permissions)
15756 DWORD attr;
15757 TRACE("(%s %p)\n", debugstr_w(path), permissions);
15758 if(!path) {
15759 return file_not_found;
15762 attr=GetFileAttributesW(path);
15763 if(attr == INVALID_FILE_ATTRIBUTES) {
15764 enum file_type ret;
15765 switch(GetLastError()) {
15766 case ERROR_FILE_NOT_FOUND:
15767 case ERROR_BAD_NETPATH:
15768 case ERROR_INVALID_NAME:
15769 case ERROR_BAD_PATHNAME:
15770 case ERROR_PATH_NOT_FOUND:
15771 ret = file_not_found;
15772 break;
15773 default:
15774 ret = status_unknown;
15776 return ret;
15779 if (permissions)
15780 *permissions = (attr & FILE_ATTRIBUTE_READONLY) ? 0555 : 0777;
15781 return (attr & FILE_ATTRIBUTE_DIRECTORY) ? directory_file : regular_file;
15784 /* _Copy_file, msvcp140 version */
15785 DWORD __cdecl _Copy_file(WCHAR const* src, WCHAR const* dst)
15787 TRACE("src %s, dst %s.\n", debugstr_w(src), debugstr_w(dst));
15789 if (CopyFileW(src, dst, FALSE))
15790 return ERROR_SUCCESS;
15792 return GetLastError();
15795 /* ?_Lstat@sys@tr2@std@@YA?AW4file_type@123@PB_WAAH@Z */
15796 /* ?_Lstat@sys@tr2@std@@YA?AW4file_type@123@PEB_WAEAH@Z */
15797 enum file_type __cdecl tr2_sys__Lstat_wchar(WCHAR const* path, int* err_code)
15799 return tr2_sys__Stat_wchar(path, err_code);
15802 /* _Lstat, msvcp140 version */
15803 enum file_type __cdecl _Lstat(WCHAR const* path, int* permissions)
15805 return _Stat(path, permissions);
15808 WCHAR * __cdecl _Temp_get(WCHAR *dst)
15810 GetTempPathW(MAX_PATH, dst);
15811 return dst;
15814 /* ??1_Winit@std@@QAE@XZ */
15815 /* ??1_Winit@std@@QAE@XZ */
15816 DEFINE_THISCALL_WRAPPER(_Winit_dtor, 4)
15817 void __thiscall _Winit_dtor(void *this)
15819 TRACE("(%p)\n", this);
15821 _Winit__Init_cnt--;
15822 if(!_Winit__Init_cnt) {
15823 basic_ostream_wchar_flush(&wcout.obj);
15824 basic_ostream_wchar_flush(&wcerr.obj);
15825 basic_ostream_wchar_flush(&wclog.obj);
15829 /* ??4_Winit@std@@QAEAAV01@ABV01@@Z */
15830 /* ??4_Winit@std@@QEAAAEAV01@AEBV01@@Z */
15831 DEFINE_THISCALL_WRAPPER(_Winit_op_assign, 8)
15832 void* __thiscall _Winit_op_assign(void *this, void *rhs)
15834 TRACE("(%p %p)\n", this, rhs);
15835 return this;
15838 void init_io(void *base)
15840 #ifdef __x86_64__
15841 init_iosb_rtti(base);
15842 init_ios_base_rtti(base);
15843 init_basic_ios_char_rtti(base);
15844 init_basic_ios_wchar_rtti(base);
15845 init_basic_ios_short_rtti(base);
15846 init_basic_streambuf_char_rtti(base);
15847 init_basic_streambuf_wchar_rtti(base);
15848 init_basic_streambuf_short_rtti(base);
15849 init_basic_filebuf_char_rtti(base);
15850 init_basic_filebuf_wchar_rtti(base);
15851 init_basic_filebuf_short_rtti(base);
15852 init_basic_stringbuf_char_rtti(base);
15853 init_basic_stringbuf_wchar_rtti(base);
15854 init_basic_stringbuf_short_rtti(base);
15855 init_basic_ostream_char_rtti(base);
15856 init_basic_ostream_wchar_rtti(base);
15857 init_basic_ostream_short_rtti(base);
15858 init_basic_istream_char_rtti(base);
15859 init_basic_istream_wchar_rtti(base);
15860 init_basic_istream_short_rtti(base);
15861 init_basic_iostream_char_rtti(base);
15862 init_basic_iostream_wchar_rtti(base);
15863 init_basic_iostream_short_rtti(base);
15864 init_basic_ofstream_char_rtti(base);
15865 init_basic_ofstream_wchar_rtti(base);
15866 init_basic_ofstream_short_rtti(base);
15867 init_basic_ifstream_char_rtti(base);
15868 init_basic_ifstream_wchar_rtti(base);
15869 init_basic_ifstream_short_rtti(base);
15870 init_basic_fstream_char_rtti(base);
15871 init_basic_fstream_wchar_rtti(base);
15872 init_basic_fstream_short_rtti(base);
15873 init_basic_ostringstream_char_rtti(base);
15874 init_basic_ostringstream_wchar_rtti(base);
15875 init_basic_ostringstream_short_rtti(base);
15876 init_basic_istringstream_char_rtti(base);
15877 init_basic_istringstream_wchar_rtti(base);
15878 init_basic_istringstream_short_rtti(base);
15879 init_basic_stringstream_char_rtti(base);
15880 init_basic_stringstream_wchar_rtti(base);
15881 init_basic_stringstream_short_rtti(base);
15882 init_strstreambuf_rtti(base);
15883 init_strstream_rtti(base);
15884 init_ostrstream_rtti(base);
15885 #endif
15887 basic_filebuf_char_ctor_file(&filebuf_char_stdin, stdin);
15888 basic_istream_char_ctor(&cin.obj, &filebuf_char_stdin.base, FALSE/*FIXME*/, TRUE);
15890 basic_filebuf_short_ctor_file(&filebuf_short_stdin, stdin);
15891 basic_istream_short_ctor(&ucin.obj, &filebuf_short_stdin.base, FALSE/*FIXME*/, TRUE);
15893 basic_filebuf_wchar_ctor_file(&filebuf_wchar_stdin, stdin);
15894 basic_istream_wchar_ctor(&wcin.obj, &filebuf_wchar_stdin.base, FALSE/*FIXME*/, TRUE);
15896 basic_filebuf_char_ctor_file(&filebuf_char_stdout, stdout);
15897 basic_ostream_char_ctor(&cout.obj, &filebuf_char_stdout.base, FALSE/*FIXME*/, TRUE);
15899 basic_filebuf_short_ctor_file(&filebuf_short_stdout, stdout);
15900 basic_ostream_short_ctor(&ucout.obj, &filebuf_short_stdout.base, FALSE/*FIXME*/, TRUE);
15902 basic_filebuf_wchar_ctor_file(&filebuf_wchar_stdout, stdout);
15903 basic_ostream_wchar_ctor(&wcout.obj, &filebuf_wchar_stdout.base, FALSE/*FIXME*/, TRUE);
15905 basic_filebuf_char_ctor_file(&filebuf_char_stderr, stderr);
15906 basic_ostream_char_ctor(&cerr.obj, &filebuf_char_stderr.base, FALSE/*FIXME*/, TRUE);
15908 basic_filebuf_short_ctor_file(&filebuf_short_stderr, stderr);
15909 basic_ostream_short_ctor(&ucerr.obj, &filebuf_short_stderr.base, FALSE/*FIXME*/, TRUE);
15911 basic_filebuf_wchar_ctor_file(&filebuf_wchar_stderr, stderr);
15912 basic_ostream_wchar_ctor(&wcerr.obj, &filebuf_wchar_stderr.base, FALSE/*FIXME*/, TRUE);
15914 basic_filebuf_char_ctor_file(&filebuf_char_log, stderr);
15915 basic_ostream_char_ctor(&MSVCP_clog.obj, &filebuf_char_log.base, FALSE/*FIXME*/, TRUE);
15917 basic_filebuf_short_ctor_file(&filebuf_short_log, stderr);
15918 basic_ostream_short_ctor(&uclog.obj, &filebuf_short_log.base, FALSE/*FIXME*/, TRUE);
15920 basic_filebuf_wchar_ctor_file(&filebuf_wchar_log, stderr);
15921 basic_ostream_wchar_ctor(&wclog.obj, &filebuf_wchar_log.base, FALSE/*FIXME*/, TRUE);
15924 void free_io(void)
15926 basic_istream_char_vbase_dtor(&cin.obj);
15927 basic_filebuf_char_dtor(&filebuf_char_stdin);
15929 basic_istream_wchar_vbase_dtor(&ucin.obj);
15930 basic_filebuf_wchar_dtor(&filebuf_short_stdin);
15932 basic_istream_wchar_vbase_dtor(&wcin.obj);
15933 basic_filebuf_wchar_dtor(&filebuf_wchar_stdin);
15935 basic_ostream_char_vbase_dtor(&cout.obj);
15936 basic_filebuf_char_dtor(&filebuf_char_stdout);
15938 basic_ostream_wchar_vbase_dtor(&ucout.obj);
15939 basic_filebuf_wchar_dtor(&filebuf_short_stdout);
15941 basic_ostream_wchar_vbase_dtor(&wcout.obj);
15942 basic_filebuf_wchar_dtor(&filebuf_wchar_stdout);
15944 basic_ostream_char_vbase_dtor(&cerr.obj);
15945 basic_filebuf_char_dtor(&filebuf_char_stderr);
15947 basic_ostream_wchar_vbase_dtor(&ucerr.obj);
15948 basic_filebuf_wchar_dtor(&filebuf_short_stderr);
15950 basic_ostream_wchar_vbase_dtor(&wcerr.obj);
15951 basic_filebuf_wchar_dtor(&filebuf_wchar_stderr);
15953 basic_ostream_char_vbase_dtor(&MSVCP_clog.obj);
15954 basic_filebuf_char_dtor(&filebuf_char_log);
15956 basic_ostream_wchar_vbase_dtor(&uclog.obj);
15957 basic_filebuf_wchar_dtor(&filebuf_short_log);
15959 basic_ostream_wchar_vbase_dtor(&wclog.obj);
15960 basic_filebuf_wchar_dtor(&filebuf_wchar_log);
15963 /* ?_Cin_func@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@1@XZ */
15964 /* ?_Cin_func@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@1@XZ */
15965 basic_istream_char* __cdecl _Cin_func(void)
15967 return &cin.obj;
15970 /* ?_Wcin_func@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@1@XZ */
15971 /* ?_Wcin_func@std@@YAAEAV?$basic_istream@GU?$char_traits@G@std@@@1@XZ */
15972 basic_istream_wchar* __cdecl _Wcin_func_short(void)
15974 return &ucin.obj;
15977 /* ?_Wcin_func@std@@YAAAV?$basic_istream@_WU?$char_traits@_W@std@@@1@XZ */
15978 /* ?_Wcin_func@std@@YAAEAV?$basic_istream@_WU?$char_traits@_W@std@@@1@XZ */
15979 basic_istream_wchar* __cdecl _Wcin_func(void)
15981 return &wcin.obj;
15984 /* ?_Cout_func@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@XZ */
15985 /* ?_Cout_func@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@1@XZ */
15986 basic_ostream_char* __cdecl _Cout_func(void)
15988 return &cout.obj;
15991 /* ?_Wcout_func@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@1@XZ */
15992 /* ?_Wcout_func@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@1@XZ */
15993 basic_ostream_wchar* __cdecl _Wcout_func_short(void)
15995 return &ucout.obj;
15999 /* ?_Wcout_func@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@XZ */
16000 /* ?_Wcout_func@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@XZ */
16001 basic_ostream_wchar* __cdecl _Wcout_func(void)
16003 return &wcout.obj;
16006 /* ?_Clog_func@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@XZ */
16007 /* ?_Clog_func@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@1@XZ */
16008 basic_ostream_char* __cdecl _Clog_func(void)
16010 return &MSVCP_clog.obj;
16013 /* ?_Wclog_func@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@1@XZ */
16014 /* ?_Wclog_func@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@1@XZ */
16015 basic_ostream_wchar* __cdecl _Wclog_func_short(void)
16017 return &uclog.obj;
16020 /* ?_Wclog_func@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@XZ */
16021 /* ?_Wclog_func@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@XZ */
16022 basic_ostream_wchar* __cdecl _Wclog_func(void)
16024 return &wclog.obj;
16027 /* ?_Cerr_func@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@XZ */
16028 /* ?_Cerr_func@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@1@XZ */
16029 basic_ostream_char* __cdecl _Cerr_func(void)
16031 return &cerr.obj;
16034 /* ?_Wcerr_func@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@1@XZ */
16035 /* ?_Wcerr_func@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@1@XZ */
16036 basic_ostream_wchar* __cdecl _Wcerr_func_short(void)
16038 return &ucerr.obj;
16041 /* ?_Wcerr_func@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@XZ */
16042 /* ?_Wcerr_func@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@XZ */
16043 basic_ostream_wchar* __cdecl _Wcerr_func(void)
16045 return &wcerr.obj;