d3d8/tests: Make the window client rect match the d3d swapchain size.
[wine.git] / dlls / msvcp90 / ios.c
blob84a6bf2c5edc965ebf49fa90476ddc4fe7fd52fe
1 /*
2 * Copyright 2011 Piotr Caban for CodeWeavers
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 #include "config.h"
21 #include <stdarg.h>
22 #include <stdio.h>
23 #include <limits.h>
24 #include <share.h>
26 #include "msvcp90.h"
27 #include "windef.h"
28 #include "winbase.h"
29 #include "wine/debug.h"
30 WINE_DEFAULT_DEBUG_CHANNEL(msvcp);
32 #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 #if _MSVCP_VER >= 140
39 FILE* __cdecl __acrt_iob_func(unsigned);
40 #undef stdin
41 #undef stdout
42 #undef stderr
43 #define stdin __acrt_iob_func(STDIN_FILENO)
44 #define stdout __acrt_iob_func(STDOUT_FILENO)
45 #define stderr __acrt_iob_func(STDERR_FILENO)
46 #endif
48 /* ?_Index@ios_base@std@@0HA */
49 int ios_base_Index = 0;
50 /* ?_Sync@ios_base@std@@0_NA */
51 MSVCP_bool ios_base_Sync = FALSE;
53 typedef struct {
54 streamoff off;
55 __int64 DECLSPEC_ALIGN(8) pos;
56 _Mbstatet state;
57 } fpos_mbstatet;
59 static inline const char* debugstr_fpos_mbstatet(fpos_mbstatet *fpos)
61 return wine_dbg_sprintf("fpos(%s %s %d)", wine_dbgstr_longlong(fpos->off),
62 wine_dbgstr_longlong(fpos->pos), MBSTATET_TO_INT(&fpos->state));
65 typedef struct {
66 void (__cdecl *pfunc)(ios_base*, streamsize);
67 streamsize arg;
68 } manip_streamsize;
70 typedef struct {
71 void (__cdecl *pfunc)(ios_base*, int);
72 int arg;
73 } manip_int;
75 typedef enum {
76 INITFL_new = 0,
77 INITFL_open = 1,
78 INITFL_close = 2
79 } basic_filebuf__Initfl;
81 typedef struct {
82 basic_streambuf_char base;
83 codecvt_char *cvt;
84 #if _MSVCP_VER < 80
85 int state0;
86 char putback;
87 basic_string_char *conv;
88 #else
89 char putback;
90 #endif
91 MSVCP_bool wrotesome;
92 _Mbstatet state;
93 MSVCP_bool close;
94 #if _MSVCP_VER == 70
95 locale loc;
96 #endif
97 FILE *file;
98 } basic_filebuf_char;
100 typedef struct {
101 basic_streambuf_wchar base;
102 codecvt_wchar *cvt;
103 #if _MSVCP_VER < 80
104 int state0;
105 wchar_t putback;
106 basic_string_char *conv;
107 #else
108 wchar_t putback;
109 #endif
110 MSVCP_bool wrotesome;
111 _Mbstatet state;
112 MSVCP_bool close;
113 #if _MSVCP_VER == 70
114 locale loc;
115 #endif
116 FILE *file;
117 } basic_filebuf_wchar;
119 typedef enum {
120 STRINGBUF_allocated = 1,
121 STRINGBUF_no_write = 2,
122 STRINGBUF_no_read = 4,
123 STRINGBUF_append = 8,
124 STRINGBUF_at_end = 16
125 } basic_stringbuf_state;
127 typedef struct {
128 basic_streambuf_char base;
129 char *seekhigh;
130 int state;
131 char allocator; /* empty struct */
132 } basic_stringbuf_char;
134 typedef struct {
135 basic_streambuf_wchar base;
136 wchar_t *seekhigh;
137 int state;
138 char allocator; /* empty struct */
139 } basic_stringbuf_wchar;
141 typedef struct {
142 ios_base base;
143 basic_streambuf_char *strbuf;
144 struct _basic_ostream_char *stream;
145 char fillch;
146 } basic_ios_char;
148 typedef struct {
149 ios_base base;
150 basic_streambuf_wchar *strbuf;
151 struct _basic_ostream_wchar *stream;
152 wchar_t fillch;
153 } basic_ios_wchar;
155 typedef struct _basic_ostream_char {
156 const int *vbtable;
157 /* virtual inheritance
158 * basic_ios_char basic_ios;
160 } basic_ostream_char;
162 typedef struct _basic_ostream_wchar {
163 const int *vbtable;
164 /* virtual inheritance
165 * basic_ios_wchar basic_ios;
167 } basic_ostream_wchar;
169 typedef struct {
170 const int *vbtable;
171 streamsize count;
172 /* virtual inheritance
173 * basic_ios_char basic_ios;
175 } basic_istream_char;
177 typedef struct {
178 const int *vbtable;
179 streamsize count;
180 /* virtual inheritance
181 * basic_ios_wchar basic_ios;
183 } basic_istream_wchar;
185 typedef struct {
186 basic_istream_char base1;
187 basic_ostream_char base2;
188 /* virtual inheritance
189 * basic_ios_char basic_ios;
191 } basic_iostream_char;
193 typedef struct {
194 basic_istream_wchar base1;
195 basic_ostream_wchar base2;
196 /* virtual inheritance
197 * basic_ios_wchar basic_ios;
199 } basic_iostream_wchar;
201 typedef struct {
202 basic_ostream_char base;
203 basic_filebuf_char filebuf;
204 /* virtual inheritance
205 * basic_ios_char basic_ios;
207 } basic_ofstream_char;
209 typedef struct {
210 basic_ostream_wchar base;
211 basic_filebuf_wchar filebuf;
212 /* virtual inheritance
213 * basic_ios_wchar basic_ios;
215 } basic_ofstream_wchar;
217 typedef struct {
218 basic_istream_char base;
219 basic_filebuf_char filebuf;
220 /* virtual inheritance
221 * basic_ios_char basic_ios;
223 } basic_ifstream_char;
225 typedef struct {
226 basic_istream_wchar base;
227 basic_filebuf_wchar filebuf;
228 /* virtual inheritance
229 * basic_ios_wchar basic_ios;
231 } basic_ifstream_wchar;
233 typedef struct {
234 basic_iostream_char base;
235 basic_filebuf_char filebuf;
236 /* virtual inheritance
237 * basic_ios_char basic_ios;
239 } basic_fstream_char;
241 typedef struct {
242 basic_iostream_wchar base;
243 basic_filebuf_wchar filebuf;
244 /* virtual inheritance
245 * basic_ios_char basic_ios;
247 } basic_fstream_wchar;
249 typedef struct {
250 basic_ostream_char base;
251 basic_stringbuf_char strbuf;
252 /* virtual inheritance
253 * basic_ios_char basic_ios;
255 } basic_ostringstream_char;
257 typedef struct {
258 basic_ostream_wchar base;
259 basic_stringbuf_wchar strbuf;
260 /* virtual inheritance
261 * basic_ios_wchar basic_ios;
263 } basic_ostringstream_wchar;
265 typedef struct {
266 basic_istream_char base;
267 basic_stringbuf_char strbuf;
268 /* virtual inheritance
269 * basic_ios_char basic_ios;
271 } basic_istringstream_char;
273 typedef struct {
274 basic_istream_wchar base;
275 basic_stringbuf_wchar strbuf;
276 /* virtual inheritance
277 * basic_ios_wchar basic_ios;
279 } basic_istringstream_wchar;
281 typedef struct {
282 basic_iostream_char base;
283 basic_stringbuf_char strbuf;
284 /* virtual inheritance
285 * basic_ios_char basic_ios;
287 } basic_stringstream_char;
289 typedef struct {
290 basic_iostream_wchar base;
291 basic_stringbuf_wchar strbuf;
292 /* virtual inheritance
293 * basic_ios_wchar basic_ios;
295 } basic_stringstream_wchar;
297 typedef enum {
298 STRSTATE_Allocated = 1,
299 STRSTATE_Constant = 2,
300 STRSTATE_Dynamic = 4,
301 STRSTATE_Frozen = 8
302 } strstreambuf__Strstate;
304 typedef struct {
305 basic_streambuf_char base;
306 streamsize minsize;
307 char *endsave;
308 char *seekhigh;
309 int strmode;
310 void* (__cdecl *palloc)(MSVCP_size_t);
311 void (__cdecl *pfree)(void*);
312 } strstreambuf;
314 typedef struct {
315 basic_ostream_char base;
316 strstreambuf buf;
317 /* virtual inheritance
318 * basic_ios_char basic_ios;
320 } ostrstream;
322 typedef struct {
323 basic_istream_char base;
324 strstreambuf buf;
325 /* virtual inheritance
326 * basic_ios_char basic_ios;
328 } istrstream;
330 typedef struct {
331 basic_iostream_char base;
332 strstreambuf buf;
333 /* virtual inheritance
334 * basic_ios_char basic_ios;
336 } strstream;
338 struct space_info {
339 ULONGLONG capacity;
340 ULONGLONG free;
341 ULONGLONG available;
344 enum file_type {
345 status_unknown, file_not_found, regular_file, directory_file,
346 symlink_file, block_file, character_file, fifo_file, socket_file,
347 type_unknown
350 #if _MSVCP_VER >= 110
351 #define BASIC_IOS_VTORDISP 1
352 #define INIT_BASIC_IOS_VTORDISP(basic_ios) ((int*)basic_ios)[-1] = 0
353 #else
354 #define BASIC_IOS_VTORDISP 0
355 #define INIT_BASIC_IOS_VTORDISP(basic_ios)
356 #endif
358 #define VBTABLE_ENTRY(class, offset, vbase, vtordisp) ALIGNED_SIZE(sizeof(class)+vtordisp*sizeof(int), TYPE_ALIGNMENT(vbase))-offset
359 #define VBTABLE_BASIC_IOS_ENTRY(class, offset) VBTABLE_ENTRY(class, offset, basic_ios_char, BASIC_IOS_VTORDISP)
361 extern const vtable_ptr MSVCP_iosb_vtable;
363 /* ??_7ios_base@std@@6B@ */
364 extern const vtable_ptr MSVCP_ios_base_vtable;
366 /* ??_7?$basic_ios@DU?$char_traits@D@std@@@std@@6B@ */
367 extern const vtable_ptr MSVCP_basic_ios_char_vtable;
369 /* ??_7?$basic_ios@_WU?$char_traits@_W@std@@@std@@6B@ */
370 extern const vtable_ptr MSVCP_basic_ios_wchar_vtable;
372 /* ??_7?$basic_ios@GU?$char_traits@G@std@@@std@@6B@ */
373 extern const vtable_ptr MSVCP_basic_ios_short_vtable;
375 /* ??_7?$basic_streambuf@DU?$char_traits@D@std@@@std@@6B@ */
376 extern const vtable_ptr MSVCP_basic_streambuf_char_vtable;
378 /* ??_7?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@6B@ */
379 extern const vtable_ptr MSVCP_basic_streambuf_wchar_vtable;
381 /* ??_7?$basic_streambuf@GU?$char_traits@G@std@@@std@@6B@ */
382 extern const vtable_ptr MSVCP_basic_streambuf_short_vtable;
384 /* ??_7?$basic_filebuf@DU?$char_traits@D@std@@@std@@6B@ */
385 extern const vtable_ptr MSVCP_basic_filebuf_char_vtable;
387 /* ??_7?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@6B@ */
388 extern const vtable_ptr MSVCP_basic_filebuf_wchar_vtable;
390 /* ??_7?$basic_filebuf@GU?$char_traits@G@std@@@std@@6B@ */
391 extern const vtable_ptr MSVCP_basic_filebuf_short_vtable;
393 /* ??_7?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */
394 extern const vtable_ptr MSVCP_basic_stringbuf_char_vtable;
396 /* ??_7?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@6B@ */
397 extern const vtable_ptr MSVCP_basic_stringbuf_wchar_vtable;
399 /* ??_7?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@6B@ */
400 extern const vtable_ptr MSVCP_basic_stringbuf_short_vtable;
402 /* ??_8?$basic_ostream@DU?$char_traits@D@std@@@std@@7B@ */
403 const int basic_ostream_char_vbtable[] = {0,
404 VBTABLE_BASIC_IOS_ENTRY(basic_ostream_char, 0)};
405 /* ??_7?$basic_ostream@DU?$char_traits@D@std@@@std@@6B@ */
406 extern const vtable_ptr MSVCP_basic_ostream_char_vtable;
408 /* ??_8?$basic_ostream@_WU?$char_traits@_W@std@@@std@@7B@ */
409 const int basic_ostream_wchar_vbtable[] = {0,
410 VBTABLE_BASIC_IOS_ENTRY(basic_ostream_wchar, 0)};
411 /* ??_7?$basic_ostream@_WU?$char_traits@_W@std@@@std@@6B@ */
412 extern const vtable_ptr MSVCP_basic_ostream_wchar_vtable;
414 /* ??_8?$basic_ostream@GU?$char_traits@G@std@@@std@@7B@ */
415 const int basic_ostream_short_vbtable[] = {0,
416 VBTABLE_BASIC_IOS_ENTRY(basic_ostream_wchar, 0)};
417 /* ??_7?$basic_ostream@GU?$char_traits@G@std@@@std@@6B@ */
418 extern const vtable_ptr MSVCP_basic_ostream_short_vtable;
420 /* ??_8?$basic_istream@DU?$char_traits@D@std@@@std@@7B@ */
421 const int basic_istream_char_vbtable[] = {0,
422 VBTABLE_BASIC_IOS_ENTRY(basic_istream_char, 0)};
423 /* ??_7?$basic_istream@DU?$char_traits@D@std@@@std@@6B@ */
424 extern const vtable_ptr MSVCP_basic_istream_char_vtable;
426 /* ??_8?$basic_istream@_WU?$char_traits@_W@std@@@std@@7B@ */
427 const int basic_istream_wchar_vbtable[] = {0,
428 VBTABLE_BASIC_IOS_ENTRY(basic_istream_wchar, 0)};
429 /* ??_7?$basic_istream@_WU?$char_traits@_W@std@@@std@@6B@ */
430 extern const vtable_ptr MSVCP_basic_istream_wchar_vtable;
432 /* ??_8?$basic_istream@GU?$char_traits@G@std@@@std@@7B@ */
433 const int basic_istream_short_vbtable[] = {0,
434 VBTABLE_BASIC_IOS_ENTRY(basic_istream_wchar, 0)};
435 /* ??_7?$basic_istream@GU?$char_traits@G@std@@@std@@6B@ */
436 extern const vtable_ptr MSVCP_basic_istream_short_vtable;
438 /* ??_8?$basic_iostream@DU?$char_traits@D@std@@@std@@7B?$basic_istream@DU?$char_traits@D@std@@@1@@ */
439 const int basic_iostream_char_vbtable1[] = {0,
440 VBTABLE_BASIC_IOS_ENTRY(basic_iostream_char, 0)};
441 /* ??_8?$basic_iostream@DU?$char_traits@D@std@@@std@@7B?$basic_ostream@DU?$char_traits@D@std@@@1@@ */
442 const int basic_iostream_char_vbtable2[] = {0,
443 VBTABLE_BASIC_IOS_ENTRY(basic_iostream_char, FIELD_OFFSET(basic_iostream_char, base2))};
444 /* ??_7?$basic_iostream@DU?$char_traits@D@std@@@std@@6B@ */
445 extern const vtable_ptr MSVCP_basic_iostream_char_vtable;
447 /* ??_8?$basic_iostream@_WU?$char_traits@_W@std@@@std@@7B?$basic_istream@_WU?$char_traits@_W@std@@@1@@ */
448 /* ??_8?$basic_iostream@GU?$char_traits@G@std@@@std@@7B?$basic_istream@GU?$char_traits@G@std@@@1@@ */
449 const int basic_iostream_wchar_vbtable1[] = {0,
450 VBTABLE_BASIC_IOS_ENTRY(basic_iostream_wchar, 0)};
451 /* ??_8?$basic_iostream@_WU?$char_traits@_W@std@@@std@@7B?$basic_ostream@_WU?$char_traits@_W@std@@@1@@ */
452 /* ??_8?$basic_iostream@GU?$char_traits@G@std@@@std@@7B?$basic_ostream@GU?$char_traits@G@std@@@1@@ */
453 const int basic_iostream_wchar_vbtable2[] = {0,
454 VBTABLE_BASIC_IOS_ENTRY(basic_iostream_wchar, FIELD_OFFSET(basic_iostream_wchar, base2))};
455 /* ??_7?$basic_iostream@_WU?$char_traits@_W@std@@@std@@6B@ */
456 extern const vtable_ptr MSVCP_basic_iostream_wchar_vtable;
457 /* ??_7?$basic_iostream@GU?$char_traits@G@std@@@std@@6B@ */
458 extern const vtable_ptr MSVCP_basic_iostream_short_vtable;
460 /* ??_8?$basic_ofstream@DU?$char_traits@D@std@@@std@@7B@ */
461 const int basic_ofstream_char_vbtable[] = {0,
462 VBTABLE_BASIC_IOS_ENTRY(basic_ofstream_char, 0)};
463 /* ??_7?$basic_ofstream@DU?$char_traits@D@std@@@std@@6B@ */
464 extern const vtable_ptr MSVCP_basic_ofstream_char_vtable;
466 /* ??_8?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@7B@ */
467 const int basic_ofstream_wchar_vbtable[] = {0,
468 VBTABLE_BASIC_IOS_ENTRY(basic_ofstream_wchar, 0)};
469 /* ??_7?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@6B@ */
470 extern const vtable_ptr MSVCP_basic_ofstream_wchar_vtable;
472 /* ??_8?$basic_ofstream@GU?$char_traits@G@std@@@std@@7B@ */
473 const int basic_ofstream_short_vbtable[] = {0,
474 VBTABLE_BASIC_IOS_ENTRY(basic_ofstream_wchar, 0)};
475 /* ??_7?$basic_ofstream@GU?$char_traits@G@std@@@std@@6B@ */
476 extern const vtable_ptr MSVCP_basic_ofstream_short_vtable;
478 /* ??_8?$basic_ifstream@DU?$char_traits@D@std@@@std@@7B@ */
479 const int basic_ifstream_char_vbtable[] = {0,
480 VBTABLE_BASIC_IOS_ENTRY(basic_ifstream_char, 0)};
481 /* ??_7?$basic_ifstream@DU?$char_traits@D@std@@@std@@6B@ */
482 extern const vtable_ptr MSVCP_basic_ifstream_char_vtable;
484 /* ??_8?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@7B@ */
485 const int basic_ifstream_wchar_vbtable[] = {0,
486 VBTABLE_BASIC_IOS_ENTRY(basic_ifstream_wchar, 0)};
487 /* ??_7?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@6B@ */
488 extern const vtable_ptr MSVCP_basic_ifstream_wchar_vtable;
490 /* ??_8?$basic_ifstream@GU?$char_traits@G@std@@@std@@7B@ */
491 const int basic_ifstream_short_vbtable[] = {0,
492 VBTABLE_BASIC_IOS_ENTRY(basic_ifstream_wchar, 0)};
493 /* ??_7?$basic_ifstream@GU?$char_traits@G@std@@@std@@6B@ */
494 extern const vtable_ptr MSVCP_basic_ifstream_short_vtable;
496 /* ??_8?$basic_fstream@DU?$char_traits@D@std@@@std@@7B?$basic_istream@DU?$char_traits@D@std@@@1@@ */
497 const int basic_fstream_char_vbtable1[] = {0,
498 VBTABLE_BASIC_IOS_ENTRY(basic_fstream_char, 0)};
499 /* ??_8?$basic_fstream@DU?$char_traits@D@std@@@std@@7B?$basic_ostream@DU?$char_traits@D@std@@@1@@ */
500 const int basic_fstream_char_vbtable2[] = {0,
501 VBTABLE_BASIC_IOS_ENTRY(basic_fstream_char, FIELD_OFFSET(basic_fstream_char, base.base2))};
502 /* ??_7?$basic_fstream@DU?$char_traits@D@std@@@std@@6B@ */
503 extern const vtable_ptr MSVCP_basic_fstream_char_vtable;
505 /* ??_8?$basic_fstream@_WU?$char_traits@_W@std@@@std@@7B?$basic_istream@_WU?$char_traits@_W@std@@@1@@ */
506 /* ??_8?$basic_fstream@GU?$char_traits@G@std@@@std@@7B?$basic_istream@GU?$char_traits@G@std@@@1@@ */
507 const int basic_fstream_wchar_vbtable1[] = {0,
508 VBTABLE_BASIC_IOS_ENTRY(basic_fstream_wchar, 0)};
509 /* ??_8?$basic_fstream@_WU?$char_traits@_W@std@@@std@@7B?$basic_ostream@_WU?$char_traits@_W@std@@@1@@ */
510 /* ??_8?$basic_fstream@GU?$char_traits@G@std@@@std@@7B?$basic_ostream@GU?$char_traits@G@std@@@1@@ */
511 const int basic_fstream_wchar_vbtable2[] = {0,
512 VBTABLE_BASIC_IOS_ENTRY(basic_fstream_wchar, FIELD_OFFSET(basic_fstream_wchar, base.base2))};
513 /* ??_7?$basic_fstream@_WU?$char_traits@_W@std@@@std@@6B@ */
514 extern const vtable_ptr MSVCP_basic_fstream_wchar_vtable;
515 /* ??_7?$basic_fstream@GU?$char_traits@G@std@@@std@@6B@ */
516 extern const vtable_ptr MSVCP_basic_fstream_short_vtable;
518 /* ??_8?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B@ */
519 const int basic_ostringstream_char_vbtable[] = {0,
520 VBTABLE_BASIC_IOS_ENTRY(basic_ostringstream_char, 0)};
521 /* ??_7?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */
522 extern const vtable_ptr MSVCP_basic_ostringstream_char_vtable;
524 /* ??_8?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@7B@ */
525 const int basic_ostringstream_wchar_vbtable[] = {0,
526 VBTABLE_BASIC_IOS_ENTRY(basic_ostringstream_wchar, 0)};
527 /* ??_7?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@6B@ */
528 extern const vtable_ptr MSVCP_basic_ostringstream_wchar_vtable;
530 /* ??_8?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@7B@ */
531 const int basic_ostringstream_short_vbtable[] = {0,
532 VBTABLE_BASIC_IOS_ENTRY(basic_ostringstream_wchar, 0)};
533 /* ??_7?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@6B@ */
534 extern const vtable_ptr MSVCP_basic_ostringstream_short_vtable;
536 /* ??_8?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B@ */
537 const int basic_istringstream_char_vbtable[] = {0,
538 VBTABLE_BASIC_IOS_ENTRY(basic_istringstream_char, 0)};
539 /* ??_7?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */
540 extern const vtable_ptr MSVCP_basic_istringstream_char_vtable;
542 /* ??_8?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@7B@ */
543 const int basic_istringstream_wchar_vbtable[] = {0,
544 VBTABLE_BASIC_IOS_ENTRY(basic_istringstream_wchar, 0)};
545 /* ??_7?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@6B@ */
546 extern const vtable_ptr MSVCP_basic_istringstream_wchar_vtable;
548 /* ??_8?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@7B@ */
549 const int basic_istringstream_short_vbtable[] = {0,
550 VBTABLE_BASIC_IOS_ENTRY(basic_istringstream_wchar, 0)};
551 /* ??_7?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@6B@ */
552 extern const vtable_ptr MSVCP_basic_istringstream_short_vtable;
554 /* ??_8?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B?$basic_istream@DU?$char_traits@D@std@@@1@@ */
555 const int basic_stringstream_char_vbtable1[] = {0,
556 VBTABLE_BASIC_IOS_ENTRY(basic_stringstream_char, 0)};
557 /* ??_8?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B?$basic_ostream@DU?$char_traits@D@std@@@1@@ */
558 const int basic_stringstream_char_vbtable2[] = {0,
559 VBTABLE_BASIC_IOS_ENTRY(basic_stringstream_char, FIELD_OFFSET(basic_stringstream_char, base.base2))};
560 /* ??_7?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */
561 extern const vtable_ptr MSVCP_basic_stringstream_char_vtable;
563 /* ??_8?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@7B?$basic_istream@_WU?$char_traits@_W@std@@@1@@ */
564 const int basic_stringstream_wchar_vbtable1[] = {0,
565 VBTABLE_BASIC_IOS_ENTRY(basic_stringstream_wchar, 0)};
566 /* ??_8?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@7B?$basic_ostream@_WU?$char_traits@_W@std@@@1@@ */
567 const int basic_stringstream_wchar_vbtable2[] = {0,
568 VBTABLE_BASIC_IOS_ENTRY(basic_stringstream_wchar, FIELD_OFFSET(basic_stringstream_wchar, base.base2))};
569 /* ??_7?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@6B@ */
570 extern const vtable_ptr MSVCP_basic_stringstream_wchar_vtable;
572 /* ??_8?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@7B?$basic_istream@GU?$char_traits@G@std@@@1@@ */
573 const int basic_stringstream_short_vbtable1[] = {0,
574 VBTABLE_BASIC_IOS_ENTRY(basic_stringstream_wchar, 0)};
575 /* ??_8?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@7B?$basic_ostream@GU?$char_traits@G@std@@@1@@ */
576 const int basic_stringstream_short_vbtable2[] = {0,
577 VBTABLE_BASIC_IOS_ENTRY(basic_stringstream_wchar, FIELD_OFFSET(basic_stringstream_wchar, base.base2))};
578 /* ??_7?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@6B@ */
579 extern const vtable_ptr MSVCP_basic_stringstream_short_vtable;
581 /* ??_7strstreambuf@std@@6B */
582 extern const vtable_ptr MSVCP_strstreambuf_vtable;
584 static const int ostrstream_vbtable[] = {0, VBTABLE_BASIC_IOS_ENTRY(ostrstream, 0)};
585 extern const vtable_ptr MSVCP_ostrstream_vtable;
587 static const int istrstream_vbtable[] = {0, VBTABLE_BASIC_IOS_ENTRY(istrstream, 0)};
589 static const int strstream_vbtable1[] = {0, VBTABLE_BASIC_IOS_ENTRY(strstream, 0)};
590 static const int strstream_vbtable2[] = {0,
591 VBTABLE_BASIC_IOS_ENTRY(strstream, FIELD_OFFSET(strstream, base.base2))};
592 extern const vtable_ptr MSVCP_strstream_vtable;
594 DEFINE_RTTI_DATA0(iosb, 0, ".?AV?$_Iosb@H@std@@")
595 DEFINE_RTTI_DATA1(ios_base, 0, &iosb_rtti_base_descriptor, ".?AV?$_Iosb@H@std@@")
596 DEFINE_RTTI_DATA2(basic_ios_char, 0, &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
597 ".?AV?$basic_ios@DU?$char_traits@D@std@@@std@@")
598 DEFINE_RTTI_DATA2(basic_ios_wchar, 0, &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
599 ".?AV?$basic_ios@_WU?$char_traits@_W@std@@@std@@")
600 DEFINE_RTTI_DATA2(basic_ios_short, 0, &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
601 ".?AV?$basic_ios@GU?$char_traits@G@std@@@std@@")
602 DEFINE_RTTI_DATA0(basic_streambuf_char, 0,
603 ".?AV?$basic_streambuf@DU?$char_traits@D@std@@@std@@")
604 DEFINE_RTTI_DATA0(basic_streambuf_wchar, 0,
605 ".?AV?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@")
606 DEFINE_RTTI_DATA0(basic_streambuf_short, 0,
607 ".?AV?$basic_streambuf@GU?$char_traits@G@std@@@std@@")
608 DEFINE_RTTI_DATA1(basic_filebuf_char, 0, &basic_streambuf_char_rtti_base_descriptor,
609 ".?AV?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@")
610 DEFINE_RTTI_DATA1(basic_filebuf_wchar, 0, &basic_streambuf_wchar_rtti_base_descriptor,
611 ".?AV?$basic_filebuf@GU?$char_traits@G@std@@@std@@")
612 DEFINE_RTTI_DATA1(basic_filebuf_short, 0, &basic_streambuf_short_rtti_base_descriptor,
613 ".?AV?$basic_filebuf@DU?$char_traits@D@std@@@std@@")
614 DEFINE_RTTI_DATA1(basic_stringbuf_char, 0, &basic_streambuf_char_rtti_base_descriptor,
615 ".?AV?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@")
616 DEFINE_RTTI_DATA1(basic_stringbuf_wchar, 0, &basic_streambuf_wchar_rtti_base_descriptor,
617 ".?AV?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@")
618 DEFINE_RTTI_DATA1(basic_stringbuf_short, 0, &basic_streambuf_short_rtti_base_descriptor,
619 ".?AV?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@")
620 DEFINE_RTTI_DATA3(basic_ostream_char, sizeof(basic_ostream_char), &basic_ios_char_rtti_base_descriptor,
621 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
622 ".?AV?$basic_ostream@DU?$char_traits@D@std@@@std@@")
623 DEFINE_RTTI_DATA3(basic_ostream_wchar, sizeof(basic_ostream_wchar), &basic_ios_wchar_rtti_base_descriptor,
624 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
625 ".?AV?$basic_ostream@_WU?$char_traits@_W@std@@@std@@")
626 DEFINE_RTTI_DATA3(basic_ostream_short, sizeof(basic_ostream_wchar), &basic_ios_short_rtti_base_descriptor,
627 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
628 ".?AV?$basic_ostream@GU?$char_traits@G@std@@@std@@")
629 DEFINE_RTTI_DATA3(basic_istream_char, sizeof(basic_istream_char), &basic_ios_char_rtti_base_descriptor,
630 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
631 ".?AV?$basic_istream@DU?$char_traits@D@std@@@std@@")
632 DEFINE_RTTI_DATA3(basic_istream_wchar, sizeof(basic_istream_wchar), &basic_ios_wchar_rtti_base_descriptor,
633 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
634 ".?AV?$basic_istream@_WU?$char_traits@_W@std@@@std@@")
635 DEFINE_RTTI_DATA3(basic_istream_short, sizeof(basic_istream_wchar), &basic_ios_short_rtti_base_descriptor,
636 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
637 ".?AV?$basic_istream@GU?$char_traits@G@std@@@std@@")
638 DEFINE_RTTI_DATA8(basic_iostream_char, sizeof(basic_iostream_char),
639 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
640 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
641 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
642 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
643 ".?AV?$basic_iostream@DU?$char_traits@D@std@@@std@@")
644 DEFINE_RTTI_DATA8(basic_iostream_wchar, sizeof(basic_iostream_wchar),
645 &basic_istream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
646 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
647 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
648 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
649 ".?AV?$basic_iostream@_WU?$char_traits@_W@std@@@std@@")
650 DEFINE_RTTI_DATA8(basic_iostream_short, sizeof(basic_iostream_wchar),
651 &basic_istream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
652 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
653 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
654 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
655 ".?AV?$basic_iostream@GU?$char_traits@G@std@@@std@@")
656 DEFINE_RTTI_DATA4(basic_ofstream_char, sizeof(basic_ofstream_char),
657 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
658 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
659 ".?AV?$basic_ofstream@DU?$char_traits@D@std@@@std@@")
660 DEFINE_RTTI_DATA4(basic_ofstream_wchar, sizeof(basic_ofstream_wchar),
661 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
662 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
663 ".?AV?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@")
664 DEFINE_RTTI_DATA4(basic_ofstream_short, sizeof(basic_ofstream_wchar),
665 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
666 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
667 ".?AV?$basic_ofstream@GU?$char_traits@G@std@@@std@@")
668 DEFINE_RTTI_DATA4(basic_ifstream_char, sizeof(basic_ifstream_char),
669 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
670 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
671 ".?AV?$basic_ifstream@DU?$char_traits@D@std@@@std@@")
672 DEFINE_RTTI_DATA4(basic_ifstream_wchar, sizeof(basic_ifstream_wchar),
673 &basic_istream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
674 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
675 ".?AV?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@")
676 DEFINE_RTTI_DATA4(basic_ifstream_short, sizeof(basic_ifstream_wchar),
677 &basic_istream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
678 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
679 ".?AV?$basic_ifstream@GU?$char_traits@G@std@@@std@@")
680 DEFINE_RTTI_DATA8(basic_fstream_char, sizeof(basic_fstream_char),
681 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
682 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
683 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
684 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
685 ".?AV?$basic_fstream@DU?$char_traits@D@std@@@std@@")
686 DEFINE_RTTI_DATA8(basic_fstream_wchar, sizeof(basic_fstream_wchar),
687 &basic_istream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
688 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
689 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
690 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
691 ".?AV?$basic_fstream@_WU?$char_traits@_W@std@@@std@@")
692 DEFINE_RTTI_DATA8(basic_fstream_short, sizeof(basic_fstream_wchar),
693 &basic_istream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
694 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
695 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
696 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
697 ".?AV?$basic_fstream@GU?$char_traits@G@std@@@std@@")
698 DEFINE_RTTI_DATA4(basic_ostringstream_char, sizeof(basic_ostringstream_char),
699 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
700 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
701 ".?AV?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@")
702 DEFINE_RTTI_DATA4(basic_ostringstream_wchar, sizeof(basic_ostringstream_wchar),
703 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
704 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
705 ".?AV?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@")
706 DEFINE_RTTI_DATA4(basic_ostringstream_short, sizeof(basic_ostringstream_wchar),
707 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
708 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
709 ".?AV?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@")
710 DEFINE_RTTI_DATA4(basic_istringstream_char, sizeof(basic_istringstream_char),
711 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
712 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
713 ".?AV?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@")
714 DEFINE_RTTI_DATA4(basic_istringstream_wchar, sizeof(basic_istringstream_wchar),
715 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
716 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
717 ".?AV?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@")
718 DEFINE_RTTI_DATA4(basic_istringstream_short, sizeof(basic_istringstream_wchar),
719 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
720 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
721 ".?AV?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@")
722 DEFINE_RTTI_DATA8(basic_stringstream_char, sizeof(basic_stringstream_char),
723 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
724 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
725 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
726 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
727 ".?AV?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@")
728 DEFINE_RTTI_DATA8(basic_stringstream_wchar, sizeof(basic_stringstream_wchar),
729 &basic_istream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
730 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
731 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
732 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
733 ".?AV?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@")
734 DEFINE_RTTI_DATA8(basic_stringstream_short, sizeof(basic_stringstream_wchar),
735 &basic_istream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
736 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
737 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
738 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
739 ".?AV?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@")
740 DEFINE_RTTI_DATA1(strstreambuf, sizeof(strstreambuf),
741 &basic_streambuf_char_rtti_base_descriptor, ".?AVstrstreambuf@std@@")
742 DEFINE_RTTI_DATA4(ostrstream, sizeof(ostrstream),
743 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
744 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
745 "?AVostrstream@std@@")
746 DEFINE_RTTI_DATA8(strstream, sizeof(strstream),
747 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
748 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
749 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
750 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
751 "?AVstrstream@std@@")
753 #ifndef __GNUC__
754 void __asm_dummy_vtables(void) {
755 #endif
756 __ASM_VTABLE(iosb,
757 VTABLE_ADD_FUNC(iosb_vector_dtor));
758 __ASM_VTABLE(ios_base,
759 VTABLE_ADD_FUNC(ios_base_vector_dtor));
760 __ASM_VTABLE(basic_ios_char,
761 VTABLE_ADD_FUNC(basic_ios_char_vector_dtor)
762 #if _MSVCP_VER == 110
763 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
764 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
765 #endif
767 __ASM_VTABLE(basic_ios_wchar,
768 VTABLE_ADD_FUNC(basic_ios_wchar_vector_dtor)
769 #if _MSVCP_VER == 110
770 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
771 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
772 #endif
774 __ASM_VTABLE(basic_ios_short,
775 VTABLE_ADD_FUNC(basic_ios_wchar_vector_dtor)
776 #if _MSVCP_VER == 110
777 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
778 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
779 #endif
781 __ASM_VTABLE(basic_streambuf_char,
782 VTABLE_ADD_FUNC(basic_streambuf_char_vector_dtor)
783 #if _MSVCP_VER >= 100
784 VTABLE_ADD_FUNC(basic_streambuf_char__Lock)
785 VTABLE_ADD_FUNC(basic_streambuf_char__Unlock)
786 #endif
787 VTABLE_ADD_FUNC(basic_streambuf_char_overflow)
788 VTABLE_ADD_FUNC(basic_streambuf_char_pbackfail)
789 VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc)
790 VTABLE_ADD_FUNC(basic_streambuf_char_underflow)
791 VTABLE_ADD_FUNC(basic_streambuf_char_uflow)
792 VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn)
793 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
794 VTABLE_ADD_FUNC(basic_streambuf_char__Xsgetn_s)
795 #endif
796 VTABLE_ADD_FUNC(basic_streambuf_char_xsputn)
797 VTABLE_ADD_FUNC(basic_streambuf_char_seekoff)
798 VTABLE_ADD_FUNC(basic_streambuf_char_seekpos)
799 VTABLE_ADD_FUNC(basic_streambuf_char_setbuf)
800 VTABLE_ADD_FUNC(basic_streambuf_char_sync)
801 VTABLE_ADD_FUNC(basic_streambuf_char_imbue));
802 __ASM_VTABLE(basic_streambuf_wchar,
803 VTABLE_ADD_FUNC(basic_streambuf_wchar_vector_dtor)
804 #if _MSVCP_VER >= 100
805 VTABLE_ADD_FUNC(basic_streambuf_wchar__Lock)
806 VTABLE_ADD_FUNC(basic_streambuf_wchar__Unlock)
807 #endif
808 VTABLE_ADD_FUNC(basic_streambuf_wchar_overflow)
809 VTABLE_ADD_FUNC(basic_streambuf_wchar_pbackfail)
810 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
811 VTABLE_ADD_FUNC(basic_streambuf_wchar_underflow)
812 VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow)
813 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
814 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
815 VTABLE_ADD_FUNC(basic_streambuf_wchar__Xsgetn_s)
816 #endif
817 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
818 VTABLE_ADD_FUNC(basic_streambuf_wchar_seekoff)
819 VTABLE_ADD_FUNC(basic_streambuf_wchar_seekpos)
820 VTABLE_ADD_FUNC(basic_streambuf_wchar_setbuf)
821 VTABLE_ADD_FUNC(basic_streambuf_wchar_sync)
822 VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue));
823 __ASM_VTABLE(basic_streambuf_short,
824 VTABLE_ADD_FUNC(basic_streambuf_wchar_vector_dtor)
825 #if _MSVCP_VER >= 100
826 VTABLE_ADD_FUNC(basic_streambuf_wchar__Lock)
827 VTABLE_ADD_FUNC(basic_streambuf_wchar__Unlock)
828 #endif
829 VTABLE_ADD_FUNC(basic_streambuf_wchar_overflow)
830 VTABLE_ADD_FUNC(basic_streambuf_wchar_pbackfail)
831 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
832 VTABLE_ADD_FUNC(basic_streambuf_wchar_underflow)
833 VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow)
834 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
835 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
836 VTABLE_ADD_FUNC(basic_streambuf_wchar__Xsgetn_s)
837 #endif
838 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
839 VTABLE_ADD_FUNC(basic_streambuf_wchar_seekoff)
840 VTABLE_ADD_FUNC(basic_streambuf_wchar_seekpos)
841 VTABLE_ADD_FUNC(basic_streambuf_wchar_setbuf)
842 VTABLE_ADD_FUNC(basic_streambuf_wchar_sync)
843 VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue));
844 __ASM_VTABLE(basic_filebuf_char,
845 VTABLE_ADD_FUNC(basic_filebuf_char_vector_dtor)
846 #if _MSVCP_VER >= 100
847 VTABLE_ADD_FUNC(basic_streambuf_char__Lock)
848 VTABLE_ADD_FUNC(basic_streambuf_char__Unlock)
849 #endif
850 VTABLE_ADD_FUNC(basic_filebuf_char_overflow)
851 VTABLE_ADD_FUNC(basic_filebuf_char_pbackfail)
852 VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc)
853 VTABLE_ADD_FUNC(basic_filebuf_char_underflow)
854 VTABLE_ADD_FUNC(basic_filebuf_char_uflow)
855 VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn)
856 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
857 VTABLE_ADD_FUNC(basic_streambuf_char__Xsgetn_s)
858 #endif
859 VTABLE_ADD_FUNC(basic_streambuf_char_xsputn)
860 VTABLE_ADD_FUNC(basic_filebuf_char_seekoff)
861 VTABLE_ADD_FUNC(basic_filebuf_char_seekpos)
862 VTABLE_ADD_FUNC(basic_filebuf_char_setbuf)
863 VTABLE_ADD_FUNC(basic_filebuf_char_sync)
864 VTABLE_ADD_FUNC(basic_filebuf_char_imbue));
865 __ASM_VTABLE(basic_filebuf_wchar,
866 VTABLE_ADD_FUNC(basic_filebuf_wchar_vector_dtor)
867 #if _MSVCP_VER >= 100
868 VTABLE_ADD_FUNC(basic_streambuf_wchar__Lock)
869 VTABLE_ADD_FUNC(basic_streambuf_wchar__Unlock)
870 #endif
871 VTABLE_ADD_FUNC(basic_filebuf_wchar_overflow)
872 VTABLE_ADD_FUNC(basic_filebuf_wchar_pbackfail)
873 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
874 VTABLE_ADD_FUNC(basic_filebuf_wchar_underflow)
875 VTABLE_ADD_FUNC(basic_filebuf_wchar_uflow)
876 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
877 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
878 VTABLE_ADD_FUNC(basic_streambuf_wchar__Xsgetn_s)
879 #endif
880 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
881 VTABLE_ADD_FUNC(basic_filebuf_wchar_seekoff)
882 VTABLE_ADD_FUNC(basic_filebuf_wchar_seekpos)
883 VTABLE_ADD_FUNC(basic_filebuf_wchar_setbuf)
884 VTABLE_ADD_FUNC(basic_filebuf_wchar_sync)
885 VTABLE_ADD_FUNC(basic_filebuf_wchar_imbue));
886 __ASM_VTABLE(basic_filebuf_short,
887 VTABLE_ADD_FUNC(basic_filebuf_wchar_vector_dtor)
888 #if _MSVCP_VER >= 100
889 VTABLE_ADD_FUNC(basic_streambuf_wchar__Lock)
890 VTABLE_ADD_FUNC(basic_streambuf_wchar__Unlock)
891 #endif
892 VTABLE_ADD_FUNC(basic_filebuf_wchar_overflow)
893 VTABLE_ADD_FUNC(basic_filebuf_wchar_pbackfail)
894 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
895 VTABLE_ADD_FUNC(basic_filebuf_wchar_underflow)
896 VTABLE_ADD_FUNC(basic_filebuf_wchar_uflow)
897 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
898 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
899 VTABLE_ADD_FUNC(basic_streambuf_wchar__Xsgetn_s)
900 #endif
901 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
902 VTABLE_ADD_FUNC(basic_filebuf_wchar_seekoff)
903 VTABLE_ADD_FUNC(basic_filebuf_wchar_seekpos)
904 VTABLE_ADD_FUNC(basic_filebuf_short_setbuf)
905 VTABLE_ADD_FUNC(basic_filebuf_wchar_sync)
906 VTABLE_ADD_FUNC(basic_filebuf_short_imbue));
907 __ASM_VTABLE(basic_stringbuf_char,
908 VTABLE_ADD_FUNC(basic_stringbuf_char_vector_dtor)
909 VTABLE_ADD_FUNC(basic_stringbuf_char_overflow)
910 VTABLE_ADD_FUNC(basic_stringbuf_char_pbackfail)
911 VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc)
912 VTABLE_ADD_FUNC(basic_stringbuf_char_underflow)
913 VTABLE_ADD_FUNC(basic_streambuf_char_uflow)
914 VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn)
915 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
916 VTABLE_ADD_FUNC(basic_streambuf_char__Xsgetn_s)
917 #endif
918 VTABLE_ADD_FUNC(basic_streambuf_char_xsputn)
919 VTABLE_ADD_FUNC(basic_stringbuf_char_seekoff)
920 VTABLE_ADD_FUNC(basic_stringbuf_char_seekpos)
921 VTABLE_ADD_FUNC(basic_streambuf_char_setbuf)
922 VTABLE_ADD_FUNC(basic_streambuf_char_sync)
923 VTABLE_ADD_FUNC(basic_streambuf_char_imbue));
924 __ASM_VTABLE(basic_stringbuf_wchar,
925 VTABLE_ADD_FUNC(basic_stringbuf_wchar_vector_dtor)
926 VTABLE_ADD_FUNC(basic_stringbuf_wchar_overflow)
927 VTABLE_ADD_FUNC(basic_stringbuf_wchar_pbackfail)
928 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
929 VTABLE_ADD_FUNC(basic_stringbuf_wchar_underflow)
930 VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow)
931 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
932 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
933 VTABLE_ADD_FUNC(basic_streambuf_wchar__Xsgetn_s)
934 #endif
935 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
936 VTABLE_ADD_FUNC(basic_stringbuf_wchar_seekoff)
937 VTABLE_ADD_FUNC(basic_stringbuf_wchar_seekpos)
938 VTABLE_ADD_FUNC(basic_streambuf_wchar_setbuf)
939 VTABLE_ADD_FUNC(basic_streambuf_wchar_sync)
940 VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue));
941 __ASM_VTABLE(basic_stringbuf_short,
942 VTABLE_ADD_FUNC(basic_stringbuf_wchar_vector_dtor)
943 VTABLE_ADD_FUNC(basic_stringbuf_wchar_overflow)
944 VTABLE_ADD_FUNC(basic_stringbuf_wchar_pbackfail)
945 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
946 VTABLE_ADD_FUNC(basic_stringbuf_wchar_underflow)
947 VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow)
948 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
949 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
950 VTABLE_ADD_FUNC(basic_streambuf_wchar__Xsgetn_s)
951 #endif
952 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
953 VTABLE_ADD_FUNC(basic_stringbuf_wchar_seekoff)
954 VTABLE_ADD_FUNC(basic_stringbuf_wchar_seekpos)
955 VTABLE_ADD_FUNC(basic_streambuf_wchar_setbuf)
956 VTABLE_ADD_FUNC(basic_streambuf_wchar_sync)
957 VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue));
958 __ASM_VTABLE(basic_ostream_char,
959 VTABLE_ADD_FUNC(basic_ostream_char_vector_dtor)
960 #if _MSVCP_VER == 110
961 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
962 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
963 #endif
965 __ASM_VTABLE(basic_ostream_wchar,
966 VTABLE_ADD_FUNC(basic_ostream_wchar_vector_dtor)
967 #if _MSVCP_VER == 110
968 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
969 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
970 #endif
972 __ASM_VTABLE(basic_ostream_short,
973 VTABLE_ADD_FUNC(basic_ostream_wchar_vector_dtor)
974 #if _MSVCP_VER == 110
975 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
976 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
977 #endif
979 __ASM_VTABLE(basic_istream_char,
980 VTABLE_ADD_FUNC(basic_istream_char_vector_dtor)
981 #if _MSVCP_VER == 110
982 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
983 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
984 #endif
986 __ASM_VTABLE(basic_istream_wchar,
987 VTABLE_ADD_FUNC(basic_istream_wchar_vector_dtor)
988 #if _MSVCP_VER == 110
989 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
990 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
991 #endif
993 __ASM_VTABLE(basic_istream_short,
994 VTABLE_ADD_FUNC(basic_istream_wchar_vector_dtor)
995 #if _MSVCP_VER == 110
996 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
997 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
998 #endif
1000 __ASM_VTABLE(basic_iostream_char,
1001 VTABLE_ADD_FUNC(basic_iostream_char_vector_dtor)
1002 #if _MSVCP_VER == 110
1003 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1004 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1005 #endif
1007 __ASM_VTABLE(basic_iostream_wchar,
1008 VTABLE_ADD_FUNC(basic_iostream_wchar_vector_dtor)
1009 #if _MSVCP_VER == 110
1010 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1011 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1012 #endif
1014 __ASM_VTABLE(basic_iostream_short,
1015 VTABLE_ADD_FUNC(basic_iostream_wchar_vector_dtor)
1016 #if _MSVCP_VER == 110
1017 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1018 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1019 #endif
1021 __ASM_VTABLE(basic_ofstream_char,
1022 VTABLE_ADD_FUNC(basic_ofstream_char_vector_dtor)
1023 #if _MSVCP_VER == 110
1024 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1025 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1026 #endif
1028 __ASM_VTABLE(basic_ofstream_wchar,
1029 VTABLE_ADD_FUNC(basic_ofstream_wchar_vector_dtor)
1030 #if _MSVCP_VER == 110
1031 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1032 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1033 #endif
1035 __ASM_VTABLE(basic_ofstream_short,
1036 VTABLE_ADD_FUNC(basic_ofstream_wchar_vector_dtor)
1037 #if _MSVCP_VER == 110
1038 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1039 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1040 #endif
1042 __ASM_VTABLE(basic_ifstream_char,
1043 VTABLE_ADD_FUNC(basic_ifstream_char_vector_dtor)
1044 #if _MSVCP_VER == 110
1045 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1046 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1047 #endif
1049 __ASM_VTABLE(basic_ifstream_wchar,
1050 VTABLE_ADD_FUNC(basic_ifstream_wchar_vector_dtor)
1051 #if _MSVCP_VER == 110
1052 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1053 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1054 #endif
1056 __ASM_VTABLE(basic_ifstream_short,
1057 VTABLE_ADD_FUNC(basic_ifstream_wchar_vector_dtor)
1058 #if _MSVCP_VER == 110
1059 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1060 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1061 #endif
1063 __ASM_VTABLE(basic_fstream_char,
1064 VTABLE_ADD_FUNC(basic_fstream_char_vector_dtor)
1065 #if _MSVCP_VER == 110
1066 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1067 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1068 #endif
1070 __ASM_VTABLE(basic_fstream_wchar,
1071 VTABLE_ADD_FUNC(basic_fstream_wchar_vector_dtor)
1072 #if _MSVCP_VER == 110
1073 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1074 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1075 #endif
1077 __ASM_VTABLE(basic_fstream_short,
1078 VTABLE_ADD_FUNC(basic_fstream_wchar_vector_dtor)
1079 #if _MSVCP_VER == 110
1080 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1081 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1082 #endif
1084 __ASM_VTABLE(basic_ostringstream_char,
1085 VTABLE_ADD_FUNC(basic_ostringstream_char_vector_dtor)
1086 #if _MSVCP_VER == 110
1087 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1088 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1089 #endif
1091 __ASM_VTABLE(basic_ostringstream_wchar,
1092 VTABLE_ADD_FUNC(basic_ostringstream_wchar_vector_dtor)
1093 #if _MSVCP_VER == 110
1094 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1095 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1096 #endif
1098 __ASM_VTABLE(basic_ostringstream_short,
1099 VTABLE_ADD_FUNC(basic_ostringstream_wchar_vector_dtor)
1100 #if _MSVCP_VER == 110
1101 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1102 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1103 #endif
1105 __ASM_VTABLE(basic_istringstream_char,
1106 VTABLE_ADD_FUNC(basic_istringstream_char_vector_dtor)
1107 #if _MSVCP_VER == 110
1108 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1109 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1110 #endif
1112 __ASM_VTABLE(basic_istringstream_wchar,
1113 VTABLE_ADD_FUNC(basic_istringstream_wchar_vector_dtor)
1114 #if _MSVCP_VER == 110
1115 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1116 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1117 #endif
1119 __ASM_VTABLE(basic_istringstream_short,
1120 VTABLE_ADD_FUNC(basic_istringstream_wchar_vector_dtor)
1121 #if _MSVCP_VER == 110
1122 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1123 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1124 #endif
1126 __ASM_VTABLE(basic_stringstream_char,
1127 VTABLE_ADD_FUNC(basic_stringstream_char_vector_dtor)
1128 #if _MSVCP_VER == 110
1129 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1130 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1131 #endif
1133 __ASM_VTABLE(basic_stringstream_wchar,
1134 VTABLE_ADD_FUNC(basic_stringstream_wchar_vector_dtor)
1135 #if _MSVCP_VER == 110
1136 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1137 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1138 #endif
1140 __ASM_VTABLE(basic_stringstream_short,
1141 VTABLE_ADD_FUNC(basic_stringstream_wchar_vector_dtor)
1142 #if _MSVCP_VER == 110
1143 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1144 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1145 #endif
1147 __ASM_VTABLE(strstreambuf,
1148 VTABLE_ADD_FUNC(strstreambuf_vector_dtor)
1149 VTABLE_ADD_FUNC(strstreambuf_overflow)
1150 VTABLE_ADD_FUNC(strstreambuf_pbackfail)
1151 VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc)
1152 VTABLE_ADD_FUNC(strstreambuf_underflow)
1153 VTABLE_ADD_FUNC(basic_streambuf_char_uflow)
1154 VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn)
1155 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
1156 VTABLE_ADD_FUNC(basic_streambuf_char__Xsgetn_s)
1157 #endif
1158 VTABLE_ADD_FUNC(basic_streambuf_char_xsputn)
1159 VTABLE_ADD_FUNC(strstreambuf_seekoff)
1160 VTABLE_ADD_FUNC(strstreambuf_seekpos)
1161 VTABLE_ADD_FUNC(basic_streambuf_char_setbuf)
1162 VTABLE_ADD_FUNC(basic_streambuf_char_sync)
1163 VTABLE_ADD_FUNC(basic_streambuf_char_imbue));
1164 __ASM_VTABLE(ostrstream,
1165 VTABLE_ADD_FUNC(ostrstream_vector_dtor)
1166 #if _MSVCP_VER == 110
1167 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1168 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1169 #endif
1171 __ASM_VTABLE(strstream,
1172 VTABLE_ADD_FUNC(strstream_vector_dtor)
1173 #if _MSVCP_VER == 110
1174 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp1)
1175 VTABLE_ADD_FUNC(basic_ios__Add_vtordisp2)
1176 #endif
1178 #ifndef __GNUC__
1180 #endif
1182 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD00@Z */
1183 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD00@Z */
1184 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setp_next, 16)
1185 void __thiscall basic_streambuf_char_setp_next(basic_streambuf_char *this, char *first, char *next, char *last)
1187 TRACE("(%p %p %p %p)\n", this, first, next, last);
1189 this->wbuf = first;
1190 this->wpos = next;
1191 this->wsize = last-next;
1194 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD0@Z */
1195 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD0@Z */
1196 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setp, 12)
1197 void __thiscall basic_streambuf_char_setp(basic_streambuf_char *this, char *first, char *last)
1199 basic_streambuf_char_setp_next(this, first, first, last);
1202 /* ?setg@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD00@Z */
1203 /* ?setg@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD00@Z */
1204 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setg, 16)
1205 void __thiscall basic_streambuf_char_setg(basic_streambuf_char *this, char *first, char *next, char *last)
1207 TRACE("(%p %p %p %p)\n", this, first, next, last);
1209 this->rbuf = first;
1210 this->rpos = next;
1211 this->rsize = last-next;
1214 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXXZ */
1215 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXXZ */
1216 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Init_empty, 4)
1217 void __thiscall basic_streambuf_char__Init_empty(basic_streambuf_char *this)
1219 TRACE("(%p)\n", this);
1221 this->prbuf = &this->rbuf;
1222 this->pwbuf = &this->wbuf;
1223 this->prpos = &this->rpos;
1224 this->pwpos = &this->wpos;
1225 this->prsize = &this->rsize;
1226 this->pwsize = &this->wsize;
1228 basic_streambuf_char_setp(this, NULL, NULL);
1229 basic_streambuf_char_setg(this, NULL, NULL, NULL);
1232 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAE@W4_Uninitialized@1@@Z */
1233 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@W4_Uninitialized@1@@Z */
1234 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_ctor_uninitialized, 8)
1235 basic_streambuf_char* __thiscall basic_streambuf_char_ctor_uninitialized(basic_streambuf_char *this, int uninitialized)
1237 TRACE("(%p %d)\n", this, uninitialized);
1238 this->vtable = &MSVCP_basic_streambuf_char_vtable;
1239 #if _MSVCP_VER >= 70 && _MSVCP_VER <= 100
1240 mutex_ctor(&this->lock);
1241 #endif
1242 return this;
1245 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAE@XZ */
1246 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@XZ */
1247 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_ctor, 4)
1248 basic_streambuf_char* __thiscall basic_streambuf_char_ctor(basic_streambuf_char *this)
1250 TRACE("(%p)\n", this);
1252 this->vtable = &MSVCP_basic_streambuf_char_vtable;
1253 #if _MSVCP_VER >= 70 && _MSVCP_VER <= 100
1254 mutex_ctor(&this->lock);
1255 #endif
1256 #if _MSVCP_VER >= 70
1257 this->loc = MSVCRT_operator_new(sizeof(locale));
1258 #endif
1259 locale_ctor(IOS_LOCALE(this));
1260 basic_streambuf_char__Init_empty(this);
1262 return this;
1265 /* ??1?$basic_streambuf@DU?$char_traits@D@std@@@std@@UAE@XZ */
1266 /* ??1?$basic_streambuf@DU?$char_traits@D@std@@@std@@UEAA@XZ */
1267 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_dtor, 4)
1268 void __thiscall basic_streambuf_char_dtor(basic_streambuf_char *this)
1270 TRACE("(%p)\n", this);
1272 #if _MSVCP_VER >= 70 && _MSVCP_VER <= 100
1273 mutex_dtor(&this->lock);
1274 #endif
1275 locale_dtor(IOS_LOCALE(this));
1276 #if _MSVCP_VER >= 70
1277 MSVCRT_operator_delete(this->loc);
1278 #endif
1281 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_vector_dtor, 8)
1282 basic_streambuf_char* __thiscall basic_streambuf_char_vector_dtor(basic_streambuf_char *this, unsigned int flags)
1284 TRACE("(%p %x)\n", this, flags);
1285 if(flags & 2) {
1286 /* we have an array, with the number of elements stored before the first object */
1287 INT_PTR i, *ptr = (INT_PTR *)this-1;
1289 for(i=*ptr-1; i>=0; i--)
1290 basic_streambuf_char_dtor(this+i);
1291 MSVCRT_operator_delete(ptr);
1292 } else {
1293 basic_streambuf_char_dtor(this);
1294 if(flags & 1)
1295 MSVCRT_operator_delete(this);
1298 return this;
1301 /* ?_Gnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEHXZ */
1302 /* ?_Gnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBA_JXZ */
1303 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gnavail, 4)
1304 streamsize __thiscall basic_streambuf_char__Gnavail(const basic_streambuf_char *this)
1306 TRACE("(%p)\n", this);
1307 return *this->prpos ? *this->prsize : 0;
1310 /* ?_Gndec@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
1311 /* ?_Gndec@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
1312 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gndec, 4)
1313 char* __thiscall basic_streambuf_char__Gndec(basic_streambuf_char *this)
1315 TRACE("(%p)\n", this);
1316 (*this->prsize)++;
1317 (*this->prpos)--;
1318 return *this->prpos;
1321 /* ?_Gninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
1322 /* ?_Gninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
1323 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gninc, 4)
1324 char* __thiscall basic_streambuf_char__Gninc(basic_streambuf_char *this)
1326 TRACE("(%p)\n", this);
1327 (*this->prsize)--;
1328 return (*this->prpos)++;
1331 /* ?_Gnpreinc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
1332 /* ?_Gnpreinc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
1333 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gnpreinc, 4)
1334 char* __thiscall basic_streambuf_char__Gnpreinc(basic_streambuf_char *this)
1336 TRACE("(%p)\n", this);
1337 (*this->prsize)--;
1338 (*this->prpos)++;
1339 return *this->prpos;
1342 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAPAD0PAH001@Z */
1343 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAPEAD0PEAH001@Z */
1344 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Init, 28)
1345 void __thiscall basic_streambuf_char__Init(basic_streambuf_char *this, char **gf, char **gn, int *gc, char **pf, char **pn, int *pc)
1347 TRACE("(%p %p %p %p %p %p %p)\n", this, gf, gn, gc, pf, pn, pc);
1349 this->prbuf = gf;
1350 this->pwbuf = pf;
1351 this->prpos = gn;
1352 this->pwpos = pn;
1353 this->prsize = gc;
1354 this->pwsize = pc;
1357 /* ?_Lock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
1358 /* ?_Lock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
1359 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Lock, 4)
1360 #if _MSVCP_VER >= 100
1361 #define call_basic_streambuf_char__Lock(this) CALL_VTBL_FUNC(this, 4, void, (basic_streambuf_char*), (this))
1362 #else
1363 #define call_basic_streambuf_char__Lock(this) basic_streambuf_char__Lock(this)
1364 #endif
1365 void __thiscall basic_streambuf_char__Lock(basic_streambuf_char *this)
1367 TRACE("(%p)\n", this);
1368 #if _MSVCP_VER >= 70 && _MSVCP_VER <= 100
1369 mutex_lock(&this->lock);
1370 #endif
1373 /* ?_Pnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEHXZ */
1374 /* ?_Pnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBA_JXZ */
1375 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Pnavail, 4)
1376 streamsize __thiscall basic_streambuf_char__Pnavail(const basic_streambuf_char *this)
1378 TRACE("(%p)\n", this);
1379 return *this->pwpos ? *this->pwsize : 0;
1382 /* ?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
1383 /* ?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
1384 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Pninc, 4)
1385 char* __thiscall basic_streambuf_char__Pninc(basic_streambuf_char *this)
1387 TRACE("(%p)\n", this);
1388 (*this->pwsize)--;
1389 return (*this->pwpos)++;
1392 /* ?underflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
1393 /* ?underflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
1394 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_underflow, 4)
1395 #if _MSVCP_VER >= 100
1396 #define call_basic_streambuf_char_underflow(this) CALL_VTBL_FUNC(this, 24, int, (basic_streambuf_char*), (this))
1397 #else
1398 #define call_basic_streambuf_char_underflow(this) CALL_VTBL_FUNC(this, 16, int, (basic_streambuf_char*), (this))
1399 #endif
1400 int __thiscall basic_streambuf_char_underflow(basic_streambuf_char *this)
1402 TRACE("(%p)\n", this);
1403 return EOF;
1406 /* ?uflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
1407 /* ?uflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
1408 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_uflow, 4)
1409 #if _MSVCP_VER >= 100
1410 #define call_basic_streambuf_char_uflow(this) CALL_VTBL_FUNC(this, 28, int, (basic_streambuf_char*), (this))
1411 #else
1412 #define call_basic_streambuf_char_uflow(this) CALL_VTBL_FUNC(this, 20, int, (basic_streambuf_char*), (this))
1413 #endif
1414 int __thiscall basic_streambuf_char_uflow(basic_streambuf_char *this)
1416 int ret;
1418 TRACE("(%p)\n", this);
1420 if(call_basic_streambuf_char_underflow(this)==EOF)
1421 return EOF;
1423 ret = (unsigned char)**this->prpos;
1424 (*this->prsize)--;
1425 (*this->prpos)++;
1426 return ret;
1429 /* ?_Xsgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHPADIH@Z */
1430 /* ?_Xsgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEAD_K_J@Z */
1431 #if STREAMSIZE_BITS == 64
1432 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Xsgetn_s, 20)
1433 #else
1434 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Xsgetn_s, 16)
1435 #endif
1436 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
1437 #define call_basic_streambuf_char__Xsgetn_s(this, ptr, size, count) CALL_VTBL_FUNC(this, 28, \
1438 streamsize, (basic_streambuf_char*, char*, MSVCP_size_t, streamsize), (this, ptr, size, count))
1439 #else
1440 #define call_basic_streambuf_char__Xsgetn_s(this, ptr, size, count) basic_streambuf_char__Xsgetn_s(this, ptr, size, count)
1441 #endif
1442 streamsize __thiscall basic_streambuf_char__Xsgetn_s(basic_streambuf_char *this, char *ptr, MSVCP_size_t size, streamsize count)
1444 streamsize copied, chunk;
1445 int c;
1447 TRACE("(%p %p %lu %s)\n", this, ptr, size, wine_dbgstr_longlong(count));
1449 for(copied=0; copied<count && size;) {
1450 chunk = basic_streambuf_char__Gnavail(this);
1451 if(chunk > count-copied)
1452 chunk = count-copied;
1454 if(chunk > 0) {
1455 memcpy_s(ptr+copied, size, *this->prpos, chunk);
1456 *this->prpos += chunk;
1457 *this->prsize -= chunk;
1458 copied += chunk;
1459 size -= chunk;
1460 }else if((c = call_basic_streambuf_char_uflow(this)) != EOF) {
1461 ptr[copied] = c;
1462 copied++;
1463 size--;
1464 }else {
1465 break;
1469 return copied;
1472 /* ?_Sgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPADIH@Z */
1473 /* ?_Sgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_K_J@Z */
1474 #if STREAMSIZE_BITS == 64
1475 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Sgetn_s, 20)
1476 #else
1477 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Sgetn_s, 16)
1478 #endif
1479 streamsize __thiscall basic_streambuf_char__Sgetn_s(basic_streambuf_char *this, char *ptr, MSVCP_size_t size, streamsize count)
1481 TRACE("(%p %p %lu %s)\n", this, ptr, size, wine_dbgstr_longlong(count));
1482 return call_basic_streambuf_char__Xsgetn_s(this, ptr, size, count);
1485 /* ?_Unlock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
1486 /* ?_Unlock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
1487 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Unlock, 4)
1488 #if _MSVCP_VER >= 100
1489 #define call_basic_streambuf_char__Unlock(this) CALL_VTBL_FUNC(this, 8, void, (basic_streambuf_char*), (this))
1490 #else
1491 #define call_basic_streambuf_char__Unlock(this) basic_streambuf_char__Unlock(this)
1492 #endif
1493 void __thiscall basic_streambuf_char__Unlock(basic_streambuf_char *this)
1495 TRACE("(%p)\n", this);
1496 #if _MSVCP_VER >= 70 && _MSVCP_VER <= 100
1497 mutex_unlock(&this->lock);
1498 #endif
1501 /* ?eback@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1502 /* ?eback@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1503 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_eback, 4)
1504 char* __thiscall basic_streambuf_char_eback(const basic_streambuf_char *this)
1506 TRACE("(%p)\n", this);
1507 return *this->prbuf;
1510 /* ?gptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1511 /* ?gptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1512 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_gptr, 4)
1513 char* __thiscall basic_streambuf_char_gptr(const basic_streambuf_char *this)
1515 TRACE("(%p)\n", this);
1516 return *this->prpos;
1519 /* ?egptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1520 /* ?egptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1521 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_egptr, 4)
1522 char* __thiscall basic_streambuf_char_egptr(const basic_streambuf_char *this)
1524 TRACE("(%p)\n", this);
1525 return *this->prpos+*this->prsize;
1528 /* ?epptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1529 /* ?epptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1530 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_epptr, 4)
1531 char* __thiscall basic_streambuf_char_epptr(const basic_streambuf_char *this)
1533 TRACE("(%p)\n", this);
1534 return *this->pwpos+*this->pwsize;
1537 /* ?gbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXH@Z */
1538 /* ?gbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXH@Z */
1539 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_gbump, 8)
1540 void __thiscall basic_streambuf_char_gbump(basic_streambuf_char *this, int off)
1542 TRACE("(%p %d)\n", this, off);
1543 *this->prpos += off;
1544 *this->prsize -= off;
1547 /* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AVlocale@2@XZ */
1548 /* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QBE?AVlocale@2@XZ */
1549 /* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AVlocale@2@XZ */
1550 /* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEBA?AVlocale@2@XZ */
1551 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_getloc, 8)
1552 locale* __thiscall basic_streambuf_char_getloc(const basic_streambuf_char *this, locale *ret)
1554 TRACE("(%p)\n", this);
1555 return locale_copy_ctor(ret, IOS_LOCALE(this));
1558 /* ?imbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEXABVlocale@2@@Z */
1559 /* ?imbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAXAEBVlocale@2@@Z */
1560 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_imbue, 8)
1561 #if _MSVCP_VER >= 100
1562 #define call_basic_streambuf_char_imbue(this, loc) CALL_VTBL_FUNC(this, 56, void, (basic_streambuf_char*, const locale*), (this, loc))
1563 #elif _MSVCP_VER >= 80
1564 #define call_basic_streambuf_char_imbue(this, loc) CALL_VTBL_FUNC(this, 52, void, (basic_streambuf_char*, const locale*), (this, loc))
1565 #else
1566 #define call_basic_streambuf_char_imbue(this, loc) CALL_VTBL_FUNC(this, 48, void, (basic_streambuf_char*, const locale*), (this, loc))
1567 #endif
1568 void __thiscall basic_streambuf_char_imbue(basic_streambuf_char *this, const locale *loc)
1570 TRACE("(%p %p)\n", this, loc);
1573 /* ?overflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
1574 /* ?overflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
1575 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_overflow, 8)
1576 #if _MSVCP_VER >= 100
1577 #define call_basic_streambuf_char_overflow(this, ch) CALL_VTBL_FUNC(this, 12, int, (basic_streambuf_char*, int), (this, ch))
1578 #else
1579 #define call_basic_streambuf_char_overflow(this, ch) CALL_VTBL_FUNC(this, 4, int, (basic_streambuf_char*, int), (this, ch))
1580 #endif
1581 int __thiscall basic_streambuf_char_overflow(basic_streambuf_char *this, int ch)
1583 TRACE("(%p %d)\n", this, ch);
1584 return EOF;
1587 /* ?pbackfail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
1588 /* ?pbackfail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
1589 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pbackfail, 8)
1590 #if _MSVCP_VER >= 100
1591 #define call_basic_streambuf_char_pbackfail(this, ch) CALL_VTBL_FUNC(this, 16, int, (basic_streambuf_char*, int), (this, ch))
1592 #else
1593 #define call_basic_streambuf_char_pbackfail(this, ch) CALL_VTBL_FUNC(this, 8, int, (basic_streambuf_char*, int), (this, ch))
1594 #endif
1595 int __thiscall basic_streambuf_char_pbackfail(basic_streambuf_char *this, int ch)
1597 TRACE("(%p %d)\n", this, ch);
1598 return EOF;
1601 /* ?pbase@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1602 /* ?pbase@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1603 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pbase, 4)
1604 char* __thiscall basic_streambuf_char_pbase(const basic_streambuf_char *this)
1606 TRACE("(%p)\n", this);
1607 return *this->pwbuf;
1610 /* ?pbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXH@Z */
1611 /* ?pbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXH@Z */
1612 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pbump, 8)
1613 void __thiscall basic_streambuf_char_pbump(basic_streambuf_char *this, int off)
1615 TRACE("(%p %d)\n", this, off);
1616 *this->pwpos += off;
1617 *this->pwsize -= off;
1620 /* ?pptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1621 /* ?pptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1622 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pptr, 4)
1623 char* __thiscall basic_streambuf_char_pptr(const basic_streambuf_char *this)
1625 TRACE("(%p)\n", this);
1626 return *this->pwpos;
1629 /* ?pubimbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
1630 /* ?pubimbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
1631 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubimbue, 12)
1632 locale* __thiscall basic_streambuf_char_pubimbue(basic_streambuf_char *this, locale *ret, const locale *loc)
1634 TRACE("(%p %p)\n", this, loc);
1635 memcpy(ret, IOS_LOCALE(this), sizeof(locale));
1636 call_basic_streambuf_char_imbue(this, loc);
1637 locale_copy_ctor(IOS_LOCALE(this), loc);
1638 return ret;
1641 /* ?seekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
1642 /* ?seekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@_JW4seekdir@ios_base@2@H@Z */
1643 /* ?seekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
1644 /* ?seekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
1645 #if STREAMOFF_BITS == 64
1646 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_seekoff, 24)
1647 #else
1648 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_seekoff, 20)
1649 #endif
1650 #if _MSVCP_VER >= 100
1651 #define call_basic_streambuf_char_seekoff(this, ret, off, way, mode) \
1652 CALL_VTBL_FUNC(this, 40, fpos_mbstatet*, (basic_streambuf_char*, fpos_mbstatet*, streamoff, int, int), (this, ret, off, way, mode))
1653 #elif _MSVCP_VER >= 80
1654 #define call_basic_streambuf_char_seekoff(this, ret, off, way, mode) \
1655 CALL_VTBL_FUNC(this, 36, fpos_mbstatet*, (basic_streambuf_char*, fpos_mbstatet*, streamoff, int, int), (this, ret, off, way, mode))
1656 #else
1657 #define call_basic_streambuf_char_seekoff(this, ret, off, way, mode) \
1658 CALL_VTBL_FUNC(this, 32, fpos_mbstatet*, (basic_streambuf_char*, fpos_mbstatet*, streamoff, int, int), (this, ret, off, way, mode))
1659 #endif
1660 fpos_mbstatet* __thiscall basic_streambuf_char_seekoff(basic_streambuf_char *this,
1661 fpos_mbstatet *ret, streamoff off, int way, int mode)
1663 TRACE("(%p %s %d %d)\n", this, wine_dbgstr_longlong(off), way, mode);
1664 ret->off = -1;
1665 ret->pos = 0;
1666 memset(&ret->state, 0, sizeof(ret->state));
1667 return ret;
1670 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@JHH@Z */
1671 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@_JHH@Z */
1672 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@JFF@Z */
1673 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@_JFF@Z */
1674 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
1675 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@_JW4seekdir@ios_base@2@H@Z */
1676 #if STREAMOFF_BITS == 64
1677 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekoff, 24)
1678 #else
1679 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekoff, 20)
1680 #endif
1681 fpos_mbstatet* __thiscall basic_streambuf_char_pubseekoff(basic_streambuf_char *this,
1682 fpos_mbstatet *ret, streamoff off, int way, int mode)
1684 TRACE("(%p %s %d %d)\n", this, wine_dbgstr_longlong(off), way, mode);
1685 return call_basic_streambuf_char_seekoff(this, ret, off, way, mode);
1688 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@JII@Z */
1689 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@_JII@Z */
1690 #if STREAMOFF_BITS == 64
1691 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekoff_old, 24)
1692 #else
1693 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekoff_old, 20)
1694 #endif
1695 fpos_mbstatet* __thiscall basic_streambuf_char_pubseekoff_old(basic_streambuf_char *this,
1696 fpos_mbstatet *ret, streamoff off, unsigned int way, unsigned int mode)
1698 TRACE("(%p %s %d %d)\n", this, wine_dbgstr_longlong(off), way, mode);
1699 return basic_streambuf_char_pubseekoff(this, ret, off, way, mode);
1702 /* ?seekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
1703 /* ?seekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
1704 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_seekpos, 36)
1705 #if _MSVCP_VER >= 100
1706 #define call_basic_streambuf_char_seekpos(this, ret, pos, mode) \
1707 CALL_VTBL_FUNC(this, 44, fpos_mbstatet*, (basic_streambuf_char*, fpos_mbstatet*, fpos_mbstatet, int), (this, ret, pos, mode))
1708 #elif _MSVCP_VER >= 80
1709 #define call_basic_streambuf_char_seekpos(this, ret, pos, mode) \
1710 CALL_VTBL_FUNC(this, 40, fpos_mbstatet*, (basic_streambuf_char*, fpos_mbstatet*, fpos_mbstatet, int), (this, ret, pos, mode))
1711 #else
1712 #define call_basic_streambuf_char_seekpos(this, ret, pos, mode) \
1713 CALL_VTBL_FUNC(this, 36, fpos_mbstatet*, (basic_streambuf_char*, fpos_mbstatet*, fpos_mbstatet, int), (this, ret, pos, mode))
1714 #endif
1715 fpos_mbstatet* __thiscall basic_streambuf_char_seekpos(basic_streambuf_char *this,
1716 fpos_mbstatet *ret, fpos_mbstatet pos, int mode)
1718 TRACE("(%p %s %d)\n", this, debugstr_fpos_mbstatet(&pos), mode);
1719 ret->off = -1;
1720 ret->pos = 0;
1721 memset(&ret->state, 0, sizeof(ret->state));
1722 return ret;
1725 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@V32@H@Z */
1726 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@V32@H@Z */
1727 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekpos, 36)
1728 fpos_mbstatet* __thiscall basic_streambuf_char_pubseekpos(basic_streambuf_char *this,
1729 fpos_mbstatet *ret, fpos_mbstatet pos, int mode)
1731 TRACE("(%p %s %d)\n", this, debugstr_fpos_mbstatet(&pos), mode);
1732 return call_basic_streambuf_char_seekpos(this, ret, pos, mode);
1735 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@V32@I@Z */
1736 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@V32@I@Z */
1737 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekpos_old, 36)
1738 fpos_mbstatet* __thiscall basic_streambuf_char_pubseekpos_old(basic_streambuf_char *this,
1739 fpos_mbstatet *ret, fpos_mbstatet pos, unsigned int mode)
1741 TRACE("(%p %s %d)\n", this, debugstr_fpos_mbstatet(&pos), mode);
1742 return basic_streambuf_char_pubseekpos(this, ret, pos, mode);
1745 /* ?setbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEPAV12@PADH@Z */
1746 /* ?setbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAPEAV12@PEAD_J@Z */
1747 #if STREAMSIZE_BITS == 64
1748 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setbuf, 16)
1749 #else
1750 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setbuf, 12)
1751 #endif
1752 #if _MSVCP_VER >= 100
1753 #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))
1754 #elif _MSVCP_VER >= 80
1755 #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))
1756 #else
1757 #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))
1758 #endif
1759 basic_streambuf_char* __thiscall basic_streambuf_char_setbuf(basic_streambuf_char *this, char *buf, streamsize count)
1761 TRACE("(%p %p %s)\n", this, buf, wine_dbgstr_longlong(count));
1762 return this;
1765 /* ?pubsetbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PADH@Z */
1766 /* ?pubsetbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEAD_J@Z */
1767 #if STREAMSIZE_BITS == 64
1768 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubsetbuf, 16)
1769 #else
1770 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubsetbuf, 12)
1771 #endif
1772 basic_streambuf_char* __thiscall basic_streambuf_char_pubsetbuf(basic_streambuf_char *this, char *buf, streamsize count)
1774 TRACE("(%p %p %s)\n", this, buf, wine_dbgstr_longlong(count));
1775 return call_basic_streambuf_char_setbuf(this, buf, count);
1778 /* ?sync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
1779 /* ?sync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
1780 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sync, 4)
1781 #if _MSVCP_VER >= 100
1782 #define call_basic_streambuf_char_sync(this) CALL_VTBL_FUNC(this, 52, int, (basic_streambuf_char*), (this))
1783 #elif _MSVCP_VER >= 80
1784 #define call_basic_streambuf_char_sync(this) CALL_VTBL_FUNC(this, 48, int, (basic_streambuf_char*), (this))
1785 #else
1786 #define call_basic_streambuf_char_sync(this) CALL_VTBL_FUNC(this, 44, int, (basic_streambuf_char*), (this))
1787 #endif
1788 int __thiscall basic_streambuf_char_sync(basic_streambuf_char *this)
1790 TRACE("(%p)\n", this);
1791 return 0;
1794 /* ?pubsync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1795 /* ?pubsync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1796 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubsync, 4)
1797 int __thiscall basic_streambuf_char_pubsync(basic_streambuf_char *this)
1799 TRACE("(%p)\n", this);
1800 return call_basic_streambuf_char_sync(this);
1803 /* ?sgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPADH@Z */
1804 /* ?sgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_J@Z */
1805 #if STREAMSIZE_BITS == 64
1806 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sgetn, 16)
1807 #else
1808 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sgetn, 12)
1809 #endif
1810 streamsize __thiscall basic_streambuf_char_sgetn(basic_streambuf_char *this, char *ptr, streamsize count)
1812 TRACE("(%p %p %s)\n", this, ptr, wine_dbgstr_longlong(count));
1813 return call_basic_streambuf_char__Xsgetn_s(this, ptr, -1, count);
1816 /* ?showmanyc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
1817 /* ?showmanyc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JXZ */
1818 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_showmanyc, 4)
1819 #if _MSVCP_VER >= 100
1820 #define call_basic_streambuf_char_showmanyc(this) CALL_VTBL_FUNC(this, 20, streamsize, (basic_streambuf_char*), (this))
1821 #else
1822 #define call_basic_streambuf_char_showmanyc(this) CALL_VTBL_FUNC(this, 12, streamsize, (basic_streambuf_char*), (this))
1823 #endif
1824 streamsize __thiscall basic_streambuf_char_showmanyc(basic_streambuf_char *this)
1826 TRACE("(%p)\n", this);
1827 return 0;
1830 /* ?in_avail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1831 /* ?in_avail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JXZ */
1832 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_in_avail, 4)
1833 streamsize __thiscall basic_streambuf_char_in_avail(basic_streambuf_char *this)
1835 streamsize ret;
1837 TRACE("(%p)\n", this);
1839 ret = basic_streambuf_char__Gnavail(this);
1840 return ret ? ret : call_basic_streambuf_char_showmanyc(this);
1843 /* ?sputbackc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHD@Z */
1844 /* ?sputbackc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z */
1845 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputbackc, 8)
1846 int __thiscall basic_streambuf_char_sputbackc(basic_streambuf_char *this, char ch)
1848 TRACE("(%p %d)\n", this, ch);
1849 if(*this->prpos && *this->prpos>*this->prbuf && (*this->prpos)[-1]==ch) {
1850 (*this->prsize)++;
1851 (*this->prpos)--;
1852 return (unsigned char)ch;
1855 return call_basic_streambuf_char_pbackfail(this, (unsigned char)ch);
1858 /* ?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHD@Z */
1859 /* ?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z */
1860 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputc, 8)
1861 int __thiscall basic_streambuf_char_sputc(basic_streambuf_char *this, char ch)
1863 TRACE("(%p %d)\n", this, ch);
1864 return basic_streambuf_char__Pnavail(this) ?
1865 (unsigned char)(*basic_streambuf_char__Pninc(this) = ch) :
1866 call_basic_streambuf_char_overflow(this, (unsigned char)ch);
1869 /* ?sungetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1870 /* ?sungetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1871 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sungetc, 4)
1872 int __thiscall basic_streambuf_char_sungetc(basic_streambuf_char *this)
1874 TRACE("(%p)\n", this);
1875 if(*this->prpos && *this->prpos>*this->prbuf) {
1876 (*this->prsize)++;
1877 (*this->prpos)--;
1878 return (unsigned char)**this->prpos;
1881 return call_basic_streambuf_char_pbackfail(this, EOF);
1884 /* ?stossc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
1885 /* ?stossc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
1886 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_stossc, 4)
1887 void __thiscall basic_streambuf_char_stossc(basic_streambuf_char *this)
1889 TRACE("(%p)\n", this);
1890 if(basic_streambuf_char__Gnavail(this))
1891 basic_streambuf_char__Gninc(this);
1892 else
1893 call_basic_streambuf_char_uflow(this);
1896 /* ?sbumpc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1897 /* ?sbumpc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1898 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sbumpc, 4)
1899 int __thiscall basic_streambuf_char_sbumpc(basic_streambuf_char *this)
1901 TRACE("(%p)\n", this);
1902 return basic_streambuf_char__Gnavail(this) ?
1903 (int)(unsigned char)*basic_streambuf_char__Gninc(this) : call_basic_streambuf_char_uflow(this);
1906 /* ?sgetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1907 /* ?sgetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1908 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sgetc, 4)
1909 int __thiscall basic_streambuf_char_sgetc(basic_streambuf_char *this)
1911 TRACE("(%p)\n", this);
1912 return basic_streambuf_char__Gnavail(this) ?
1913 (int)(unsigned char)*basic_streambuf_char_gptr(this) : call_basic_streambuf_char_underflow(this);
1916 /* ?snextc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1917 /* ?snextc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1918 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_snextc, 4)
1919 int __thiscall basic_streambuf_char_snextc(basic_streambuf_char *this)
1921 TRACE("(%p)\n", this);
1923 if(basic_streambuf_char__Gnavail(this) > 1)
1924 return (unsigned char)*basic_streambuf_char__Gnpreinc(this);
1925 return basic_streambuf_char_sbumpc(this)==EOF ?
1926 EOF : basic_streambuf_char_sgetc(this);
1929 /* ?xsgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHPADH@Z */
1930 /* ?xsgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEAD_J@Z */
1931 #if STREAMSIZE_BITS == 64
1932 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_xsgetn, 16)
1933 #else
1934 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_xsgetn, 12)
1935 #endif
1936 #if _MSVCP_VER >= 100
1937 #define call_basic_streambuf_char_xsgetn(this, ptr, count) CALL_VTBL_FUNC(this, 32, streamsize, (basic_streambuf_char*, char*, streamsize), (this, ptr, count))
1938 #else
1939 #define call_basic_streambuf_char_xsgetn(this, ptr, count) CALL_VTBL_FUNC(this, 24, streamsize, (basic_streambuf_char*, char*, streamsize), (this, ptr, count))
1940 #endif
1941 streamsize __thiscall basic_streambuf_char_xsgetn(basic_streambuf_char *this, char *ptr, streamsize count)
1943 TRACE("(%p %p %s)\n", this, ptr, wine_dbgstr_longlong(count));
1944 return call_basic_streambuf_char__Xsgetn_s(this, ptr, -1, count);
1947 /* ?xsputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHPBDH@Z */
1948 /* ?xsputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEBD_J@Z */
1949 #if STREAMSIZE_BITS == 64
1950 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_xsputn, 16)
1951 #else
1952 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_xsputn, 12)
1953 #endif
1954 #if _MSVCP_VER >= 100
1955 #define call_basic_streambuf_char_xsputn(this, ptr, count) CALL_VTBL_FUNC(this, 36, streamsize, (basic_streambuf_char*, const char*, streamsize), (this, ptr, count))
1956 #elif _MSVCP_VER >= 80
1957 #define call_basic_streambuf_char_xsputn(this, ptr, count) CALL_VTBL_FUNC(this, 32, streamsize, (basic_streambuf_char*, const char*, streamsize), (this, ptr, count))
1958 #else
1959 #define call_basic_streambuf_char_xsputn(this, ptr, count) CALL_VTBL_FUNC(this, 28, streamsize, (basic_streambuf_char*, const char*, streamsize), (this, ptr, count))
1960 #endif
1961 streamsize __thiscall basic_streambuf_char_xsputn(basic_streambuf_char *this, const char *ptr, streamsize count)
1963 streamsize copied, chunk;
1965 TRACE("(%p %p %s)\n", this, ptr, wine_dbgstr_longlong(count));
1967 for(copied=0; copied<count;) {
1968 chunk = basic_streambuf_char__Pnavail(this);
1969 if(chunk > count-copied)
1970 chunk = count-copied;
1972 if(chunk > 0) {
1973 memcpy(*this->pwpos, ptr+copied, chunk);
1974 *this->pwpos += chunk;
1975 *this->pwsize -= chunk;
1976 copied += chunk;
1977 }else if(call_basic_streambuf_char_overflow(this, (unsigned char)ptr[copied]) != EOF) {
1978 copied++;
1979 }else {
1980 break;
1984 return copied;
1987 /* ?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPBDH@Z */
1988 /* ?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEBD_J@Z */
1989 #if STREAMSIZE_BITS == 64
1990 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputn, 16)
1991 #else
1992 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputn, 12)
1993 #endif
1994 streamsize __thiscall basic_streambuf_char_sputn(basic_streambuf_char *this, const char *ptr, streamsize count)
1996 TRACE("(%p %p %s)\n", this, ptr, wine_dbgstr_longlong(count));
1997 return call_basic_streambuf_char_xsputn(this, ptr, count);
2000 /* ?swap@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXAAV12@@Z */
2001 /* ?swap@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXAEAV12@@Z */
2002 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_swap, 8)
2003 void __thiscall basic_streambuf_char_swap(basic_streambuf_char *this, basic_streambuf_char *r)
2005 basic_streambuf_char tmp;
2007 TRACE("(%p %p)\n", this, r);
2009 if(this == r)
2010 return;
2012 tmp = *this;
2013 *this = *r;
2014 this->vtable = tmp.vtable;
2015 tmp.vtable = r->vtable;
2016 *r = tmp;
2019 /* ?setp@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXPA_W00@Z */
2020 /* ?setp@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEA_W00@Z */
2021 /* ?setp@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXPAG00@Z */
2022 /* ?setp@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXPEAG00@Z */
2023 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setp_next, 16)
2024 void __thiscall basic_streambuf_wchar_setp_next(basic_streambuf_wchar *this, wchar_t *first, wchar_t *next, wchar_t *last)
2026 TRACE("(%p %p %p %p)\n", this, first, next, last);
2028 this->wbuf = first;
2029 this->wpos = next;
2030 this->wsize = last-next;
2033 /* ?setp@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXPA_W0@Z */
2034 /* ?setp@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEA_W0@Z */
2035 /* ?setp@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXPAG0@Z */
2036 /* ?setp@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXPEAG0@Z */
2037 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setp, 12)
2038 void __thiscall basic_streambuf_wchar_setp(basic_streambuf_wchar *this, wchar_t *first, wchar_t *last)
2040 basic_streambuf_wchar_setp_next(this, first, first, last);
2043 /* ?setg@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXPA_W00@Z */
2044 /* ?setg@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEA_W00@Z */
2045 /* ?setg@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXPAG00@Z */
2046 /* ?setg@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXPEAG00@Z */
2047 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setg, 16)
2048 void __thiscall basic_streambuf_wchar_setg(basic_streambuf_wchar *this, wchar_t *first, wchar_t *next, wchar_t *last)
2050 TRACE("(%p %p %p %p)\n", this, first, next, last);
2052 this->rbuf = first;
2053 this->rpos = next;
2054 this->rsize = last-next;
2057 /* ?_Init@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXXZ */
2058 /* ?_Init@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXXZ */
2059 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXXZ */
2060 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXXZ */
2061 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Init_empty, 4)
2062 void __thiscall basic_streambuf_wchar__Init_empty(basic_streambuf_wchar *this)
2064 TRACE("(%p)\n", this);
2066 this->prbuf = &this->rbuf;
2067 this->pwbuf = &this->wbuf;
2068 this->prpos = &this->rpos;
2069 this->pwpos = &this->wpos;
2070 this->prsize = &this->rsize;
2071 this->pwsize = &this->wsize;
2073 basic_streambuf_wchar_setp(this, NULL, NULL);
2074 basic_streambuf_wchar_setg(this, NULL, NULL, NULL);
2077 /* ??0?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAE@W4_Uninitialized@1@@Z */
2078 /* ??0?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAA@W4_Uninitialized@1@@Z */
2079 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_ctor_uninitialized, 8)
2080 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_ctor_uninitialized(basic_streambuf_wchar *this, int uninitialized)
2082 TRACE("(%p %d)\n", this, uninitialized);
2083 this->vtable = &MSVCP_basic_streambuf_wchar_vtable;
2084 #if _MSVCP_VER >= 70 && _MSVCP_VER <= 100
2085 mutex_ctor(&this->lock);
2086 #endif
2087 return this;
2090 /* ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAE@W4_Uninitialized@1@@Z */
2091 /* ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAA@W4_Uninitialized@1@@Z */
2092 DEFINE_THISCALL_WRAPPER(basic_streambuf_short_ctor_uninitialized, 8)
2093 basic_streambuf_wchar* __thiscall basic_streambuf_short_ctor_uninitialized(basic_streambuf_wchar *this, int uninitialized)
2095 TRACE("(%p %d)\n", this, uninitialized);
2096 basic_streambuf_wchar_ctor_uninitialized(this, uninitialized);
2097 this->vtable = &MSVCP_basic_streambuf_short_vtable;
2098 return this;
2101 /* ??0?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAE@XZ */
2102 /* ??0?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAA@XZ */
2103 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_ctor, 4)
2104 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_ctor(basic_streambuf_wchar *this)
2106 TRACE("(%p)\n", this);
2108 this->vtable = &MSVCP_basic_streambuf_wchar_vtable;
2109 #if _MSVCP_VER >= 70 && _MSVCP_VER <= 100
2110 mutex_ctor(&this->lock);
2111 #endif
2112 #if _MSVCP_VER >= 70
2113 this->loc = MSVCRT_operator_new(sizeof(locale));
2114 #endif
2115 locale_ctor(IOS_LOCALE(this));
2116 basic_streambuf_wchar__Init_empty(this);
2118 return this;
2121 /* ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAE@XZ */
2122 /* ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAA@XZ */
2123 DEFINE_THISCALL_WRAPPER(basic_streambuf_short_ctor, 4)
2124 basic_streambuf_wchar* __thiscall basic_streambuf_short_ctor(basic_streambuf_wchar *this)
2126 TRACE("(%p)\n", this);
2127 basic_streambuf_wchar_ctor(this);
2128 this->vtable = &MSVCP_basic_streambuf_short_vtable;
2129 return this;
2132 /* ??1?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
2133 /* ??1?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
2134 /* ??1?$basic_streambuf@GU?$char_traits@G@std@@@std@@UAE@XZ */
2135 /* ??1?$basic_streambuf@GU?$char_traits@G@std@@@std@@UEAA@XZ */
2136 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_dtor, 4)
2137 void __thiscall basic_streambuf_wchar_dtor(basic_streambuf_wchar *this)
2139 TRACE("(%p)\n", this);
2141 #if _MSVCP_VER >= 70 && _MSVCP_VER <= 100
2142 mutex_dtor(&this->lock);
2143 #endif
2144 locale_dtor(IOS_LOCALE(this));
2145 #if _MSVCP_VER >= 70
2146 MSVCRT_operator_delete(this->loc);
2147 #endif
2150 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_vector_dtor, 8)
2151 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_vector_dtor(basic_streambuf_wchar *this, unsigned int flags)
2153 TRACE("(%p %x)\n", this, flags);
2154 if(flags & 2) {
2155 /* we have an array, with the number of elements stored before the first object */
2156 INT_PTR i, *ptr = (INT_PTR *)this-1;
2158 for(i=*ptr-1; i>=0; i--)
2159 basic_streambuf_wchar_dtor(this+i);
2160 MSVCRT_operator_delete(ptr);
2161 } else {
2162 basic_streambuf_wchar_dtor(this);
2163 if(flags & 1)
2164 MSVCRT_operator_delete(this);
2167 return this;
2170 /* ?_Gnavail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEHXZ */
2171 /* ?_Gnavail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBA_JXZ */
2172 /* ?_Gnavail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEHXZ */
2173 /* ?_Gnavail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBA_JXZ */
2174 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Gnavail, 4)
2175 streamsize __thiscall basic_streambuf_wchar__Gnavail(const basic_streambuf_wchar *this)
2177 TRACE("(%p)\n", this);
2178 return *this->prpos ? *this->prsize : 0;
2181 /* ?_Gndec@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEPA_WXZ */
2182 /* ?_Gndec@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAPEA_WXZ */
2183 /* ?_Gndec@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ */
2184 /* ?_Gndec@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAPEAGXZ */
2185 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Gndec, 4)
2186 wchar_t* __thiscall basic_streambuf_wchar__Gndec(basic_streambuf_wchar *this)
2188 TRACE("(%p)\n", this);
2189 (*this->prsize)++;
2190 (*this->prpos)--;
2191 return *this->prpos;
2194 /* ?_Gninc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEPA_WXZ */
2195 /* ?_Gninc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAPEA_WXZ */
2196 /* ?_Gninc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ */
2197 /* ?_Gninc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAPEAGXZ */
2198 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Gninc, 4)
2199 wchar_t* __thiscall basic_streambuf_wchar__Gninc(basic_streambuf_wchar *this)
2201 TRACE("(%p)\n", this);
2202 (*this->prsize)--;
2203 return (*this->prpos)++;
2206 /* ?_Gnpreinc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEPA_WXZ */
2207 /* ?_Gnpreinc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAPEA_WXZ */
2208 /* ?_Gnpreinc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ */
2209 /* ?_Gnpreinc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAPEAGXZ */
2210 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Gnpreinc, 4)
2211 wchar_t* __thiscall basic_streambuf_wchar__Gnpreinc(basic_streambuf_wchar *this)
2213 TRACE("(%p)\n", this);
2214 (*this->prsize)--;
2215 (*this->prpos)++;
2216 return *this->prpos;
2219 /* ?_Init@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXPAPA_W0PAH001@Z */
2220 /* ?_Init@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAPEA_W0PEAH001@Z */
2221 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXPAPAG0PAH001@Z */
2222 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXPEAPEAG0PEAH001@Z */
2223 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Init, 28)
2224 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)
2226 TRACE("(%p %p %p %p %p %p %p)\n", this, gf, gn, gc, pf, pn, pc);
2228 this->prbuf = gf;
2229 this->pwbuf = pf;
2230 this->prpos = gn;
2231 this->pwpos = pn;
2232 this->prsize = gc;
2233 this->pwsize = pc;
2236 /* ?_Lock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
2237 /* ?_Lock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
2238 /* ?_Lock@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEXXZ */
2239 /* ?_Lock@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAXXZ */
2240 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Lock, 4)
2241 void __thiscall basic_streambuf_wchar__Lock(basic_streambuf_wchar *this)
2243 TRACE("(%p)\n", this);
2244 #if _MSVCP_VER >= 70 && _MSVCP_VER <= 100
2245 mutex_lock(&this->lock);
2246 #endif
2249 /* ?_Pnavail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEHXZ */
2250 /* ?_Pnavail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBA_JXZ */
2251 /* ?_Pnavail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEHXZ */
2252 /* ?_Pnavail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBA_JXZ */
2253 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Pnavail, 4)
2254 streamsize __thiscall basic_streambuf_wchar__Pnavail(const basic_streambuf_wchar *this)
2256 TRACE("(%p)\n", this);
2257 return *this->pwpos ? *this->pwsize : 0;
2260 /* ?_Pninc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEPA_WXZ */
2261 /* ?_Pninc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAPEA_WXZ */
2262 /* ?_Pninc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ */
2263 /* ?_Pninc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAPEAGXZ */
2264 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Pninc, 4)
2265 wchar_t* __thiscall basic_streambuf_wchar__Pninc(basic_streambuf_wchar *this)
2267 TRACE("(%p)\n", this);
2268 (*this->pwsize)--;
2269 return (*this->pwpos)++;
2272 /* ?underflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEGXZ */
2273 /* ?underflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAGXZ */
2274 /* ?underflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEGXZ */
2275 /* ?underflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAGXZ */
2276 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_underflow, 4)
2277 #if _MSVCP_VER >= 100
2278 #define call_basic_streambuf_wchar_underflow(this) CALL_VTBL_FUNC(this, 24, unsigned short, (basic_streambuf_wchar*), (this))
2279 #else
2280 #define call_basic_streambuf_wchar_underflow(this) CALL_VTBL_FUNC(this, 16, unsigned short, (basic_streambuf_wchar*), (this))
2281 #endif
2282 unsigned short __thiscall basic_streambuf_wchar_underflow(basic_streambuf_wchar *this)
2284 TRACE("(%p)\n", this);
2285 return WEOF;
2288 /* ?uflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEGXZ */
2289 /* ?uflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAGXZ */
2290 /* ?uflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEGXZ */
2291 /* ?uflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAGXZ */
2292 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_uflow, 4)
2293 #if _MSVCP_VER >= 100
2294 #define call_basic_streambuf_wchar_uflow(this) CALL_VTBL_FUNC(this, 28, unsigned short, (basic_streambuf_wchar*), (this))
2295 #else
2296 #define call_basic_streambuf_wchar_uflow(this) CALL_VTBL_FUNC(this, 20, unsigned short, (basic_streambuf_wchar*), (this))
2297 #endif
2298 unsigned short __thiscall basic_streambuf_wchar_uflow(basic_streambuf_wchar *this)
2300 int ret;
2302 TRACE("(%p)\n", this);
2304 if(call_basic_streambuf_wchar_underflow(this)==WEOF)
2305 return WEOF;
2307 ret = **this->prpos;
2308 (*this->prsize)--;
2309 (*this->prpos)++;
2310 return ret;
2313 /* ?_Xsgetn_s@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHPA_WIH@Z */
2314 /* ?_Xsgetn_s@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA_JPEA_W_K_J@Z */
2315 /* ?_Xsgetn_s@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHPAGIH@Z */
2316 /* ?_Xsgetn_s@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA_JPEAG_K_J@Z */
2317 #if STREAMSIZE_BITS == 64
2318 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Xsgetn_s, 20)
2319 #else
2320 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Xsgetn_s, 16)
2321 #endif
2322 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
2323 #define call_basic_streambuf_wchar__Xsgetn_s(this, ptr, size, count) CALL_VTBL_FUNC(this, 28, \
2324 streamsize, (basic_streambuf_wchar*, wchar_t*, MSVCP_size_t, streamsize), (this, ptr, size, count))
2325 #else
2326 #define call_basic_streambuf_wchar__Xsgetn_s(this, ptr, size, count) basic_streambuf_wchar__Xsgetn_s(this, ptr, size, count)
2327 #endif
2328 streamsize __thiscall basic_streambuf_wchar__Xsgetn_s(basic_streambuf_wchar *this, wchar_t *ptr, MSVCP_size_t size, streamsize count)
2330 streamsize copied, chunk;
2331 unsigned short c;
2333 TRACE("(%p %p %lu %s)\n", this, ptr, size, wine_dbgstr_longlong(count));
2335 for(copied=0; copied<count && size;) {
2336 chunk = basic_streambuf_wchar__Gnavail(this);
2337 if(chunk > count-copied)
2338 chunk = count-copied;
2340 if(chunk > 0) {
2341 memcpy_s(ptr+copied, size, *this->prpos, chunk*sizeof(wchar_t));
2342 *this->prpos += chunk;
2343 *this->prsize -= chunk;
2344 copied += chunk;
2345 size -= chunk*sizeof(wchar_t);
2346 }else if((c = call_basic_streambuf_wchar_uflow(this)) != WEOF) {
2347 ptr[copied] = c;
2348 copied++;
2349 size--;
2350 }else {
2351 break;
2355 return copied;
2358 /* ?_Sgetn_s@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHPA_WIH@Z */
2359 /* ?_Sgetn_s@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA_JPEA_W_K_J@Z */
2360 /* ?_Sgetn_s@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHPAGIH@Z */
2361 /* ?_Sgetn_s@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA_JPEAG_K_J@Z */
2362 #if STREAMSIZE_BITS == 64
2363 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Sgetn_s, 20)
2364 #else
2365 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Sgetn_s, 16)
2366 #endif
2367 streamsize __thiscall basic_streambuf_wchar__Sgetn_s(basic_streambuf_wchar *this, wchar_t *ptr, MSVCP_size_t size, streamsize count)
2369 TRACE("(%p %p %lu %s)\n", this, ptr, size, wine_dbgstr_longlong(count));
2370 return call_basic_streambuf_wchar__Xsgetn_s(this, ptr, size, count);
2373 /* ?_Unlock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
2374 /* ?_Unlock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
2375 /* ?_Unlock@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEXXZ */
2376 /* ?_Unlock@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAXXZ */
2377 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Unlock, 4)
2378 void __thiscall basic_streambuf_wchar__Unlock(basic_streambuf_wchar *this)
2380 TRACE("(%p)\n", this);
2381 #if _MSVCP_VER >= 70 && _MSVCP_VER <= 100
2382 mutex_unlock(&this->lock);
2383 #endif
2386 /* ?eback@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
2387 /* ?eback@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
2388 /* ?eback@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
2389 /* ?eback@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
2390 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_eback, 4)
2391 wchar_t* __thiscall basic_streambuf_wchar_eback(const basic_streambuf_wchar *this)
2393 TRACE("(%p)\n", this);
2394 return *this->prbuf;
2397 /* ?gptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
2398 /* ?gptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
2399 /* ?gptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
2400 /* ?gptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
2401 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_gptr, 4)
2402 wchar_t* __thiscall basic_streambuf_wchar_gptr(const basic_streambuf_wchar *this)
2404 TRACE("(%p)\n", this);
2405 return *this->prpos;
2408 /* ?egptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
2409 /* ?egptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
2410 /* ?egptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
2411 /* ?egptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
2412 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_egptr, 4)
2413 wchar_t* __thiscall basic_streambuf_wchar_egptr(const basic_streambuf_wchar *this)
2415 TRACE("(%p)\n", this);
2416 return *this->prpos+*this->prsize;
2419 /* ?epptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
2420 /* ?epptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
2421 /* ?epptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
2422 /* ?epptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
2423 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_epptr, 4)
2424 wchar_t* __thiscall basic_streambuf_wchar_epptr(const basic_streambuf_wchar *this)
2426 TRACE("(%p)\n", this);
2427 return *this->pwpos+*this->pwsize;
2430 /* ?gbump@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXH@Z */
2431 /* ?gbump@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXH@Z */
2432 /* ?gbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXH@Z */
2433 /* ?gbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXH@Z */
2434 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_gbump, 8)
2435 void __thiscall basic_streambuf_wchar_gbump(basic_streambuf_wchar *this, int off)
2437 TRACE("(%p %d)\n", this, off);
2438 *this->prpos += off;
2439 *this->prsize -= off;
2442 /* ?getloc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QBE?AVlocale@2@XZ */
2443 /* ?getloc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEBA?AVlocale@2@XZ */
2444 /* ?getloc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QBE?AVlocale@2@XZ */
2445 /* ?getloc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEBA?AVlocale@2@XZ */
2446 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_getloc, 8)
2447 locale* __thiscall basic_streambuf_wchar_getloc(const basic_streambuf_wchar *this, locale *ret)
2449 TRACE("(%p)\n", this);
2450 return locale_copy_ctor(ret, IOS_LOCALE(this));
2453 /* ?imbue@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEXABVlocale@2@@Z */
2454 /* ?imbue@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAXAEBVlocale@2@@Z */
2455 /* ?imbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEXABVlocale@2@@Z */
2456 /* ?imbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAXAEBVlocale@2@@Z */
2457 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_imbue, 8)
2458 #if _MSVCP_VER >= 100
2459 #define call_basic_streambuf_wchar_imbue(this, loc) CALL_VTBL_FUNC(this, 56, void, (basic_streambuf_wchar*, const locale*), (this, loc))
2460 #elif _MSVCP_VER >= 80
2461 #define call_basic_streambuf_wchar_imbue(this, loc) CALL_VTBL_FUNC(this, 52, void, (basic_streambuf_wchar*, const locale*), (this, loc))
2462 #else
2463 #define call_basic_streambuf_wchar_imbue(this, loc) CALL_VTBL_FUNC(this, 48, void, (basic_streambuf_wchar*, const locale*), (this, loc))
2464 #endif
2465 void __thiscall basic_streambuf_wchar_imbue(basic_streambuf_wchar *this, const locale *loc)
2467 TRACE("(%p %p)\n", this, loc);
2470 /* ?overflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEGG@Z */
2471 /* ?overflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAGG@Z */
2472 /* ?overflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEGG@Z */
2473 /* ?overflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAGG@Z */
2474 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_overflow, 8)
2475 #if _MSVCP_VER >= 100
2476 #define call_basic_streambuf_wchar_overflow(this, ch) CALL_VTBL_FUNC(this, 12, unsigned short, (basic_streambuf_wchar*, unsigned short), (this, ch))
2477 #else
2478 #define call_basic_streambuf_wchar_overflow(this, ch) CALL_VTBL_FUNC(this, 4, unsigned short, (basic_streambuf_wchar*, unsigned short), (this, ch))
2479 #endif
2480 unsigned short __thiscall basic_streambuf_wchar_overflow(basic_streambuf_wchar *this, unsigned short ch)
2482 TRACE("(%p %d)\n", this, ch);
2483 return WEOF;
2486 /* ?pbackfail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEGG@Z */
2487 /* ?pbackfail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAGG@Z */
2488 /* ?pbackfail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEGG@Z */
2489 /* ?pbackfail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAGG@Z */
2490 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pbackfail, 8)
2491 #if _MSVCP_VER >= 100
2492 #define call_basic_streambuf_wchar_pbackfail(this, ch) CALL_VTBL_FUNC(this, 16, unsigned short, (basic_streambuf_wchar*, unsigned short), (this, ch))
2493 #else
2494 #define call_basic_streambuf_wchar_pbackfail(this, ch) CALL_VTBL_FUNC(this, 8, unsigned short, (basic_streambuf_wchar*, unsigned short), (this, ch))
2495 #endif
2496 unsigned short __thiscall basic_streambuf_wchar_pbackfail(basic_streambuf_wchar *this, unsigned short ch)
2498 TRACE("(%p %d)\n", this, ch);
2499 return WEOF;
2502 /* ?pbase@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
2503 /* ?pbase@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
2504 /* ?pbase@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
2505 /* ?pbase@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
2506 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pbase, 4)
2507 wchar_t* __thiscall basic_streambuf_wchar_pbase(const basic_streambuf_wchar *this)
2509 TRACE("(%p)\n", this);
2510 return *this->pwbuf;
2513 /* ?pbump@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXH@Z */
2514 /* ?pbump@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXH@Z */
2515 /* ?pbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXH@Z */
2516 /* ?pbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXH@Z */
2517 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pbump, 8)
2518 void __thiscall basic_streambuf_wchar_pbump(basic_streambuf_wchar *this, int off)
2520 TRACE("(%p %d)\n", this, off);
2521 *this->pwpos += off;
2522 *this->pwsize -= off;
2525 /* ?pptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
2526 /* ?pptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
2527 /* ?pptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
2528 /* ?pptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
2529 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pptr, 4)
2530 wchar_t* __thiscall basic_streambuf_wchar_pptr(const basic_streambuf_wchar *this)
2532 TRACE("(%p)\n", this);
2533 return *this->pwpos;
2536 /* ?pubimbue@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
2537 /* ?pubimbue@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
2538 /* ?pubimbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
2539 /* ?pubimbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
2540 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubimbue, 12)
2541 locale* __thiscall basic_streambuf_wchar_pubimbue(basic_streambuf_wchar *this, locale *ret, const locale *loc)
2543 TRACE("(%p %p)\n", this, loc);
2544 memcpy(ret, IOS_LOCALE(this), sizeof(locale));
2545 call_basic_streambuf_wchar_imbue(this, loc);
2546 locale_copy_ctor(IOS_LOCALE(this), loc);
2547 return ret;
2550 /* ?seekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
2551 /* ?seekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@_JW4seekdir@ios_base@2@H@Z */
2552 /* ?seekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
2553 /* ?seekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
2554 /* ?seekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
2555 /* ?seekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
2556 #if STREAMOFF_BITS == 64
2557 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_seekoff, 24)
2558 #else
2559 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_seekoff, 20)
2560 #endif
2561 #if _MSVCP_VER >= 100
2562 #define call_basic_streambuf_wchar_seekoff(this, ret, off, way, mode) \
2563 CALL_VTBL_FUNC(this, 40, fpos_mbstatet*, (basic_streambuf_wchar*, fpos_mbstatet*, streamoff, int, int), (this, ret, off, way, mode))
2564 #elif _MSVCP_VER >= 80
2565 #define call_basic_streambuf_wchar_seekoff(this, ret, off, way, mode) \
2566 CALL_VTBL_FUNC(this, 36, fpos_mbstatet*, (basic_streambuf_wchar*, fpos_mbstatet*, streamoff, int, int), (this, ret, off, way, mode))
2567 #else
2568 #define call_basic_streambuf_wchar_seekoff(this, ret, off, way, mode) \
2569 CALL_VTBL_FUNC(this, 32, fpos_mbstatet*, (basic_streambuf_wchar*, fpos_mbstatet*, streamoff, int, int), (this, ret, off, way, mode))
2570 #endif
2571 fpos_mbstatet* __thiscall basic_streambuf_wchar_seekoff(basic_streambuf_wchar *this,
2572 fpos_mbstatet *ret, streamoff off, int way, int mode)
2574 TRACE("(%p %s %d %d)\n", this, wine_dbgstr_longlong(off), way, mode);
2575 ret->off = -1;
2576 ret->pos = 0;
2577 memset(&ret->state, 0, sizeof(ret->state));
2578 return ret;
2581 /* ?pubseekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@JHH@Z */
2582 /* ?pubseekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@_JHH@Z */
2583 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@JHH@Z */
2584 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@_JHH@Z */
2585 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@JFF@Z */
2586 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@_JFF@Z */
2587 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
2588 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@_JW4seekdir@ioos_base@2@H@Z */
2589 #if STREAMOFF_BITS == 64
2590 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekoff, 24)
2591 #else
2592 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekoff, 20)
2593 #endif
2594 fpos_mbstatet* __thiscall basic_streambuf_wchar_pubseekoff(basic_streambuf_wchar *this,
2595 fpos_mbstatet *ret, streamoff off, int way, int mode)
2597 TRACE("(%p %s %d %d)\n", this, wine_dbgstr_longlong(off), way, mode);
2598 return call_basic_streambuf_wchar_seekoff(this, ret, off, way, mode);
2601 /* ?pubseekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@JII@Z */
2602 /* ?pubseekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@_JII@Z */
2603 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@JII@Z */
2604 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@_JII@Z */
2605 #if STREAMOFF_BITS == 64
2606 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekoff_old, 24)
2607 #else
2608 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekoff_old, 20)
2609 #endif
2610 fpos_mbstatet* __thiscall basic_streambuf_wchar_pubseekoff_old(basic_streambuf_wchar *this,
2611 fpos_mbstatet *ret, streamoff off, unsigned int way, unsigned int mode)
2613 TRACE("(%p %s %d %d)\n", this, wine_dbgstr_longlong(off), way, mode);
2614 return basic_streambuf_wchar_pubseekoff(this, ret, off, way, mode);
2617 /* ?seekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
2618 /* ?seekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
2619 /* ?seekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
2620 /* ?seekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
2621 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_seekpos, 36)
2622 #if _MSVCP_VER >= 100
2623 #define call_basic_streambuf_wchar_seekpos(this, ret, pos, mode) \
2624 CALL_VTBL_FUNC(this, 44, fpos_mbstatet*, (basic_streambuf_wchar*, fpos_mbstatet*, fpos_mbstatet, int), (this, ret, pos, mode))
2625 #elif _MSVCP_VER >= 80
2626 #define call_basic_streambuf_wchar_seekpos(this, ret, pos, mode) \
2627 CALL_VTBL_FUNC(this, 40, fpos_mbstatet*, (basic_streambuf_wchar*, fpos_mbstatet*, fpos_mbstatet, int), (this, ret, pos, mode))
2628 #else
2629 #define call_basic_streambuf_wchar_seekpos(this, ret, pos, mode) \
2630 CALL_VTBL_FUNC(this, 36, fpos_mbstatet*, (basic_streambuf_wchar*, fpos_mbstatet*, fpos_mbstatet, int), (this, ret, pos, mode))
2631 #endif
2632 fpos_mbstatet* __thiscall basic_streambuf_wchar_seekpos(basic_streambuf_wchar *this,
2633 fpos_mbstatet *ret, fpos_mbstatet pos, int mode)
2635 TRACE("(%p %s %d)\n", this, debugstr_fpos_mbstatet(&pos), mode);
2636 ret->off = -1;
2637 ret->pos = 0;
2638 memset(&ret->state, 0, sizeof(ret->state));
2639 return ret;
2642 /* ?pubseekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@V32@H@Z */
2643 /* ?pubseekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@V32@H@Z */
2644 /* ?pubseekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@V32@H@Z */
2645 /* ?pubseekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@V32@H@Z */
2646 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekpos, 36)
2647 fpos_mbstatet* __thiscall basic_streambuf_wchar_pubseekpos(basic_streambuf_wchar *this,
2648 fpos_mbstatet *ret, fpos_mbstatet pos, int mode)
2650 TRACE("(%p %s %d)\n", this, debugstr_fpos_mbstatet(&pos), mode);
2651 return call_basic_streambuf_wchar_seekpos(this, ret, pos, mode);
2654 /* ?pubseekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@V32@I@Z */
2655 /* ?pubseekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@V32@I@Z */
2656 /* ?pubseekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@V32@I@Z */
2657 /* ?pubseekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@V32@I@Z */
2658 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekpos_old, 36)
2659 fpos_mbstatet* __thiscall basic_streambuf_wchar_pubseekpos_old(basic_streambuf_wchar *this,
2660 fpos_mbstatet *ret, fpos_mbstatet pos, unsigned int mode)
2662 TRACE("(%p %s %d)\n", this, debugstr_fpos_mbstatet(&pos), mode);
2663 return basic_streambuf_wchar_pubseekpos(this, ret, pos, mode);
2666 /* ?setbuf@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEPAV12@PA_WH@Z */
2667 /* ?setbuf@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAPEAV12@PEA_W_J@Z */
2668 /* ?setbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEPAV12@PAGH@Z */
2669 /* ?setbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAPEAV12@PEAG_J@Z */
2670 #if STREAMSIZE_BITS == 64
2671 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setbuf, 16)
2672 #else
2673 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setbuf, 12)
2674 #endif
2675 #if _MSVCP_VER >= 100
2676 #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))
2677 #elif _MSVCP_VER >= 80
2678 #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))
2679 #else
2680 #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))
2681 #endif
2682 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_setbuf(basic_streambuf_wchar *this, wchar_t *buf, streamsize count)
2684 TRACE("(%p %p %s)\n", this, buf, wine_dbgstr_longlong(count));
2685 return this;
2688 /* ?pubsetbuf@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PA_WH@Z */
2689 /* ?pubsetbuf@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEA_W_J@Z */
2690 /* ?pubsetbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PAGH@Z */
2691 /* ?pubsetbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEAG_J@Z */
2692 #if STREAMSIZE_BITS == 64
2693 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubsetbuf, 16)
2694 #else
2695 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubsetbuf, 12)
2696 #endif
2697 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_pubsetbuf(basic_streambuf_wchar *this, wchar_t *buf, streamsize count)
2699 TRACE("(%p %p %s)\n", this, buf, wine_dbgstr_longlong(count));
2700 return call_basic_streambuf_wchar_setbuf(this, buf, count);
2703 /* ?sync@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHXZ */
2704 /* ?sync@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAHXZ */
2705 /* ?sync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHXZ */
2706 /* ?sync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAHXZ */
2707 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sync, 4)
2708 #if _MSVCP_VER >= 100
2709 #define call_basic_streambuf_wchar_sync(this) CALL_VTBL_FUNC(this, 52, int, (basic_streambuf_wchar*), (this))
2710 #elif _MSVCP_VER >= 80
2711 #define call_basic_streambuf_wchar_sync(this) CALL_VTBL_FUNC(this, 48, int, (basic_streambuf_wchar*), (this))
2712 #else
2713 #define call_basic_streambuf_wchar_sync(this) CALL_VTBL_FUNC(this, 44, int, (basic_streambuf_wchar*), (this))
2714 #endif
2715 int __thiscall basic_streambuf_wchar_sync(basic_streambuf_wchar *this)
2717 TRACE("(%p)\n", this);
2718 return 0;
2721 /* ?pubsync@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHXZ */
2722 /* ?pubsync@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAHXZ */
2723 /* ?pubsync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHXZ */
2724 /* ?pubsync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAHXZ */
2725 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubsync, 4)
2726 int __thiscall basic_streambuf_wchar_pubsync(basic_streambuf_wchar *this)
2728 TRACE("(%p)\n", this);
2729 return call_basic_streambuf_wchar_sync(this);
2732 /* ?xsgetn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHPA_WH@Z */
2733 /* ?xsgetn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA_JPEA_W_J@Z */
2734 /* ?xsgetn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHPAGH@Z */
2735 /* ?xsgetn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA_JPEAG_J@Z */
2736 #if STREAMSIZE_BITS == 64
2737 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_xsgetn, 16)
2738 #else
2739 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_xsgetn, 12)
2740 #endif
2741 #if _MSVCP_VER >= 100
2742 #define call_basic_streambuf_wchar_xsgetn(this, ptr, count) CALL_VTBL_FUNC(this, 32, streamsize, (basic_streambuf_wchar*, wchar_t*, streamsize), (this, ptr, count))
2743 #else
2744 #define call_basic_streambuf_wchar_xsgetn(this, ptr, count) CALL_VTBL_FUNC(this, 24, streamsize, (basic_streambuf_wchar*, wchar_t*, streamsize), (this, ptr, count))
2745 #endif
2746 streamsize __thiscall basic_streambuf_wchar_xsgetn(basic_streambuf_wchar *this, wchar_t *ptr, streamsize count)
2748 TRACE("(%p %p %s)\n", this, ptr, wine_dbgstr_longlong(count));
2749 return call_basic_streambuf_wchar__Xsgetn_s(this, ptr, -1, count);
2752 /* ?sgetn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHPA_WH@Z */
2753 /* ?sgetn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA_JPEA_W_J@Z */
2754 /* ?sgetn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHPAGH@Z */
2755 /* ?sgetn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA_JPEAG_J@Z */
2756 #if STREAMSIZE_BITS == 64
2757 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sgetn, 16)
2758 #else
2759 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sgetn, 12)
2760 #endif
2761 streamsize __thiscall basic_streambuf_wchar_sgetn(basic_streambuf_wchar *this, wchar_t *ptr, streamsize count)
2763 TRACE("(%p %p %s)\n", this, ptr, wine_dbgstr_longlong(count));
2764 return call_basic_streambuf_wchar_xsgetn(this, ptr, count);
2767 /* ?showmanyc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHXZ */
2768 /* ?showmanyc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA_JXZ */
2769 /* ?showmanyc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHXZ */
2770 /* ?showmanyc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA_JXZ */
2771 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_showmanyc, 4)
2772 #if _MSVCP_VER >= 100
2773 #define call_basic_streambuf_wchar_showmanyc(this) CALL_VTBL_FUNC(this, 20, streamsize, (basic_streambuf_wchar*), (this))
2774 #else
2775 #define call_basic_streambuf_wchar_showmanyc(this) CALL_VTBL_FUNC(this, 12, streamsize, (basic_streambuf_wchar*), (this))
2776 #endif
2777 streamsize __thiscall basic_streambuf_wchar_showmanyc(basic_streambuf_wchar *this)
2779 TRACE("(%p)\n", this);
2780 return 0;
2783 /* ?in_avail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHXZ */
2784 /* ?in_avail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA_JXZ */
2785 /* ?in_avail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHXZ */
2786 /* ?in_avail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA_JXZ */
2787 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_in_avail, 4)
2788 streamsize __thiscall basic_streambuf_wchar_in_avail(basic_streambuf_wchar *this)
2790 streamsize ret;
2792 TRACE("(%p)\n", this);
2794 ret = basic_streambuf_wchar__Gnavail(this);
2795 return ret ? ret : call_basic_streambuf_wchar_showmanyc(this);
2798 /* ?sputbackc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEG_W@Z */
2799 /* ?sputbackc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAG_W@Z */
2800 /* ?sputbackc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGG@Z */
2801 /* ?sputbackc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGG@Z */
2802 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sputbackc, 8)
2803 unsigned short __thiscall basic_streambuf_wchar_sputbackc(basic_streambuf_wchar *this, wchar_t ch)
2805 TRACE("(%p %d)\n", this, ch);
2806 if(*this->prpos && *this->prpos>*this->prbuf && (*this->prpos)[-1]==ch) {
2807 (*this->prsize)++;
2808 (*this->prpos)--;
2809 return ch;
2812 return call_basic_streambuf_wchar_pbackfail(this, ch);
2815 /* ?sputc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEG_W@Z */
2816 /* ?sputc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAG_W@Z */
2817 /* ?sputc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGG@Z */
2818 /* ?sputc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAHG@Z */
2819 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sputc, 8)
2820 unsigned short __thiscall basic_streambuf_wchar_sputc(basic_streambuf_wchar *this, wchar_t ch)
2822 TRACE("(%p %d)\n", this, ch);
2823 return basic_streambuf_wchar__Pnavail(this) ?
2824 (*basic_streambuf_wchar__Pninc(this) = ch) :
2825 call_basic_streambuf_wchar_overflow(this, ch);
2828 /* ?sungetc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
2829 /* ?sungetc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
2830 /* ?sungetc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGXZ */
2831 /* ?sungetc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGXZ */
2832 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sungetc, 4)
2833 unsigned short __thiscall basic_streambuf_wchar_sungetc(basic_streambuf_wchar *this)
2835 TRACE("(%p)\n", this);
2836 if(*this->prpos && *this->prpos>*this->prbuf) {
2837 (*this->prsize)++;
2838 (*this->prpos)--;
2839 return **this->prpos;
2842 return call_basic_streambuf_wchar_pbackfail(this, WEOF);
2845 /* ?stossc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
2846 /* ?stossc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
2847 /* ?stossc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEXXZ */
2848 /* ?stossc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAXXZ */
2849 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_stossc, 4)
2850 void __thiscall basic_streambuf_wchar_stossc(basic_streambuf_wchar *this)
2852 TRACE("(%p)\n", this);
2853 if(basic_streambuf_wchar__Gnavail(this))
2854 basic_streambuf_wchar__Gninc(this);
2855 else
2856 call_basic_streambuf_wchar_uflow(this);
2859 /* ?sbumpc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
2860 /* ?sbumpc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
2861 /* ?sbumpc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGXZ */
2862 /* ?sbumpc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGXZ */
2863 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sbumpc, 4)
2864 unsigned short __thiscall basic_streambuf_wchar_sbumpc(basic_streambuf_wchar *this)
2866 TRACE("(%p)\n", this);
2867 return basic_streambuf_wchar__Gnavail(this) ?
2868 *basic_streambuf_wchar__Gninc(this) : call_basic_streambuf_wchar_uflow(this);
2871 /* ?sgetc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
2872 /* ?sgetc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
2873 /* ?sgetc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGXZ */
2874 /* ?sgetc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGXZ */
2875 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sgetc, 4)
2876 unsigned short __thiscall basic_streambuf_wchar_sgetc(basic_streambuf_wchar *this)
2878 TRACE("(%p)\n", this);
2879 return basic_streambuf_wchar__Gnavail(this) ?
2880 *basic_streambuf_wchar_gptr(this) : call_basic_streambuf_wchar_underflow(this);
2883 /* ?snextc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
2884 /* ?snextc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
2885 /* ?snextc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGXZ */
2886 /* ?snextc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGXZ */
2887 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_snextc, 4)
2888 unsigned short __thiscall basic_streambuf_wchar_snextc(basic_streambuf_wchar *this)
2890 TRACE("(%p)\n", this);
2892 if(basic_streambuf_wchar__Gnavail(this) > 1)
2893 return *basic_streambuf_wchar__Gnpreinc(this);
2894 return basic_streambuf_wchar_sbumpc(this)==WEOF ?
2895 WEOF : basic_streambuf_wchar_sgetc(this);
2898 /* ?xsputn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHPB_WH@Z */
2899 /* ?xsputn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA_JPEB_W_J@Z */
2900 /* ?xsputn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHPBGH@Z */
2901 /* ?xsputn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA_JPEBG_J@Z */
2902 #if STREAMSIZE_BITS == 64
2903 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_xsputn, 16)
2904 #else
2905 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_xsputn, 12)
2906 #endif
2907 #if _MSVCP_VER >= 100
2908 #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))
2909 #elif _MSVCP_VER >= 80
2910 #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))
2911 #else
2912 #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))
2913 #endif
2914 streamsize __thiscall basic_streambuf_wchar_xsputn(basic_streambuf_wchar *this, const wchar_t *ptr, streamsize count)
2916 streamsize copied, chunk;
2918 TRACE("(%p %p %s)\n", this, ptr, wine_dbgstr_longlong(count));
2920 for(copied=0; copied<count;) {
2921 chunk = basic_streambuf_wchar__Pnavail(this);
2922 if(chunk > count-copied)
2923 chunk = count-copied;
2925 if(chunk > 0) {
2926 memcpy(*this->pwpos, ptr+copied, chunk*sizeof(wchar_t));
2927 *this->pwpos += chunk;
2928 *this->pwsize -= chunk;
2929 copied += chunk;
2930 }else if(call_basic_streambuf_wchar_overflow(this, ptr[copied]) != WEOF) {
2931 copied++;
2932 }else {
2933 break;
2937 return copied;
2940 /* ?sputn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHPB_WH@Z */
2941 /* ?sputn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA_JPEB_W_J@Z */
2942 /* ?sputn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHPBGH@Z */
2943 /* ?sputn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA_JPEBG_J@Z */
2944 #if STREAMSIZE_BITS == 64
2945 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sputn, 16)
2946 #else
2947 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sputn, 12)
2948 #endif
2949 streamsize __thiscall basic_streambuf_wchar_sputn(basic_streambuf_wchar *this, const wchar_t *ptr, streamsize count)
2951 TRACE("(%p %p %s)\n", this, ptr, wine_dbgstr_longlong(count));
2952 return call_basic_streambuf_wchar_xsputn(this, ptr, count);
2955 /* ?swap@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXAAV12@@Z */
2956 /* ?swap@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXAEAV12@@Z */
2957 /* ?swap@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXAAV12@@Z */
2958 /* ?swap@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXAAV12@@Z */
2959 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_swap, 8)
2960 void __thiscall basic_streambuf_wchar_swap(basic_streambuf_wchar *this, basic_streambuf_wchar *r)
2962 basic_streambuf_wchar tmp;
2964 TRACE("(%p %p)\n", this, r);
2966 if(this == r)
2967 return;
2969 tmp = *this;
2970 *this = *r;
2971 this->vtable = tmp.vtable;
2972 tmp.vtable = r->vtable;
2973 *r = tmp;
2976 /* ?_Stinit@?1??_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@23@@Z@4HA */
2977 /* ?_Stinit@?1??_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@23@@Z@4HA */
2978 #if _MSVCP_VER >= 140
2979 _Mbstatet basic_filebuf_char__Init__Stinit = {0};
2980 #else
2981 _Mbstatet basic_filebuf_char__Init__Stinit = 0;
2982 #endif
2984 /* ?_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@12@@Z */
2985 /* ?_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@12@@Z */
2986 DEFINE_THISCALL_WRAPPER(basic_filebuf_char__Init, 12)
2987 void __thiscall basic_filebuf_char__Init(basic_filebuf_char *this, FILE *file, basic_filebuf__Initfl which)
2989 TRACE("(%p %p %d)\n", this, file, which);
2991 this->cvt = NULL;
2992 this->wrotesome = FALSE;
2993 this->state = basic_filebuf_char__Init__Stinit;
2994 this->close = (which == INITFL_open);
2995 this->file = file;
2997 basic_streambuf_char__Init_empty(&this->base);
2998 if(file)
2999 basic_streambuf_char__Init(&this->base, &file->_base, &file->_ptr,
3000 &file->_cnt, &file->_base, &file->_ptr, &file->_cnt);
3003 /* ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXPAV?$codecvt@DDH@2@@Z */
3004 /* ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXPEAV?$codecvt@DDH@2@@Z */
3005 DEFINE_THISCALL_WRAPPER(basic_filebuf_char__Initcvt_cvt, 8)
3006 void __thiscall basic_filebuf_char__Initcvt_cvt(basic_filebuf_char *this, codecvt_char *cvt)
3008 TRACE("(%p %p)\n", this, cvt);
3010 if(codecvt_base_always_noconv(&cvt->base)) {
3011 this->cvt = NULL;
3012 }else {
3013 basic_streambuf_char__Init_empty(&this->base);
3014 this->cvt = cvt;
3018 /* ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXXZ */
3019 /* ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXXZ */
3020 DEFINE_THISCALL_WRAPPER(basic_filebuf_char__Initcvt, 4)
3021 void __thiscall basic_filebuf_char__Initcvt(basic_filebuf_char *this)
3023 codecvt_char *cvt = codecvt_char_use_facet(IOS_LOCALE(&this->base));
3024 basic_filebuf_char__Initcvt_cvt( this, cvt );
3027 /* ?_Endwrite@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAE_NXZ */
3028 /* ?_Endwrite@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAA_NXZ */
3029 DEFINE_THISCALL_WRAPPER(basic_filebuf_char__Endwrite, 4)
3030 MSVCP_bool __thiscall basic_filebuf_char__Endwrite(basic_filebuf_char *this)
3032 TRACE("(%p)\n", this);
3034 if(!this->wrotesome || !this->cvt)
3035 return TRUE;
3038 if(call_basic_streambuf_char_overflow(&this->base, EOF) == EOF)
3039 return FALSE;
3041 while(1) {
3042 /* TODO: check if we need a dynamic buffer here */
3043 char buf[128];
3044 char *next;
3045 int ret;
3047 ret = codecvt_char_unshift(this->cvt, &this->state, buf, buf+sizeof(buf), &next);
3048 switch(ret) {
3049 case CODECVT_ok:
3050 this->wrotesome = FALSE;
3051 /* fall through */
3052 case CODECVT_partial:
3053 if(!fwrite(buf, next-buf, 1, this->file))
3054 return FALSE;
3055 if(this->wrotesome)
3056 break;
3057 /* fall through */
3058 case CODECVT_noconv:
3059 if(call_basic_streambuf_char_overflow(&this->base, EOF) == EOF)
3060 return FALSE;
3061 return TRUE;
3062 default:
3063 return FALSE;
3068 /* ?close@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@XZ */
3069 /* ?close@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@XZ */
3070 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_close, 4)
3071 basic_filebuf_char* __thiscall basic_filebuf_char_close(basic_filebuf_char *this)
3073 basic_filebuf_char *ret = this;
3075 TRACE("(%p)\n", this);
3077 if(!this->file)
3078 return NULL;
3080 /* TODO: handle exceptions */
3081 if(!basic_filebuf_char__Endwrite(this))
3082 ret = NULL;
3083 if(fclose(this->file))
3084 ret = NULL;
3086 basic_filebuf_char__Init(this, NULL, INITFL_close);
3087 return ret;
3090 /* ??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAE@PAU_iobuf@@@Z */
3091 /* ??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAA@PEAU_iobuf@@@Z */
3092 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_ctor_file, 8)
3093 basic_filebuf_char* __thiscall basic_filebuf_char_ctor_file(basic_filebuf_char *this, FILE *file)
3095 TRACE("(%p %p)\n", this, file);
3097 basic_streambuf_char_ctor(&this->base);
3098 this->base.vtable = &MSVCP_basic_filebuf_char_vtable;
3100 basic_filebuf_char__Init(this, file, INITFL_new);
3101 return this;
3104 /* ??_F?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
3105 /* ??_F?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
3106 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_ctor, 4)
3107 basic_filebuf_char* __thiscall basic_filebuf_char_ctor(basic_filebuf_char *this)
3109 return basic_filebuf_char_ctor_file(this, NULL);
3112 /* ??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAE@W4_Uninitialized@1@@Z */
3113 /* ??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
3114 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_ctor_uninitialized, 8)
3115 basic_filebuf_char* __thiscall basic_filebuf_char_ctor_uninitialized(basic_filebuf_char *this, int uninitialized)
3117 TRACE("(%p %d)\n", this, uninitialized);
3119 basic_streambuf_char_ctor(&this->base);
3120 this->base.vtable = &MSVCP_basic_filebuf_char_vtable;
3121 return this;
3124 /* ??1?$basic_filebuf@DU?$char_traits@D@std@@@std@@UAE@XZ */
3125 /* ??1?$basic_filebuf@DU?$char_traits@D@std@@@std@@UEAA@XZ */
3126 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_dtor, 4)
3127 void __thiscall basic_filebuf_char_dtor(basic_filebuf_char *this)
3129 TRACE("(%p)\n", this);
3131 if(this->close)
3132 basic_filebuf_char_close(this);
3133 basic_streambuf_char_dtor(&this->base);
3136 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_vector_dtor, 8)
3137 basic_filebuf_char* __thiscall basic_filebuf_char_vector_dtor(basic_filebuf_char *this, unsigned int flags)
3139 TRACE("(%p %x)\n", this, flags);
3140 if(flags & 2) {
3141 /* we have an array, with the number of elements stored before the first object */
3142 INT_PTR i, *ptr = (INT_PTR *)this-1;
3144 for(i=*ptr-1; i>=0; i--)
3145 basic_filebuf_char_dtor(this+i);
3146 MSVCRT_operator_delete(ptr);
3147 } else {
3148 basic_filebuf_char_dtor(this);
3149 if(flags & 1)
3150 MSVCRT_operator_delete(this);
3153 return this;
3156 /* ?is_open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QBE_NXZ */
3157 /* ?is_open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEBA_NXZ */
3158 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_is_open, 4)
3159 MSVCP_bool __thiscall basic_filebuf_char_is_open(const basic_filebuf_char *this)
3161 TRACE("(%p)\n", this);
3162 return this->file != NULL;
3165 /* ?_Fiopen@std@@YAPAU_iobuf@@PB_WHH@Z */
3166 /* ?_Fiopen@std@@YAPEAU_iobuf@@PEB_WHH@Z */
3167 FILE* __cdecl _Fiopen_wchar(const wchar_t *name, int mode, int prot)
3169 static const wchar_t rW[] = {'r',0};
3170 static const struct {
3171 int mode;
3172 const wchar_t str[4];
3173 const wchar_t str_bin[4];
3174 } str_mode[] = {
3175 {OPENMODE_out, {'w',0}, {'w','b',0}},
3176 {OPENMODE_out|OPENMODE_app, {'a',0}, {'a','b',0}},
3177 {OPENMODE_app, {'a',0}, {'a','b',0}},
3178 {OPENMODE_out|OPENMODE_trunc, {'w',0}, {'w','b',0}},
3179 {OPENMODE_in, {'r',0}, {'r','b',0}},
3180 {OPENMODE_in|OPENMODE_out, {'r','+',0}, {'r','+','b',0}},
3181 {OPENMODE_in|OPENMODE_out|OPENMODE_trunc, {'w','+',0}, {'w','+','b',0}},
3182 {OPENMODE_in|OPENMODE_out|OPENMODE_app, {'a','+',0}, {'a','+','b',0}},
3183 {OPENMODE_in|OPENMODE_app, {'a','+',0}, {'a','+','b',0}}
3186 int real_mode = mode & ~(OPENMODE_ate|OPENMODE__Nocreate|OPENMODE__Noreplace|OPENMODE_binary);
3187 size_t mode_idx;
3188 FILE *f = NULL;
3190 TRACE("(%s %d %d)\n", debugstr_w(name), mode, prot);
3192 for(mode_idx=0; mode_idx<sizeof(str_mode)/sizeof(str_mode[0]); mode_idx++)
3193 if(str_mode[mode_idx].mode == real_mode)
3194 break;
3195 if(mode_idx == sizeof(str_mode)/sizeof(str_mode[0]))
3196 return NULL;
3198 if((mode & OPENMODE__Nocreate) && !(f = _wfopen(name, rW)))
3199 return NULL;
3200 else if(f)
3201 fclose(f);
3203 if((mode & OPENMODE__Noreplace) && (mode & (OPENMODE_out|OPENMODE_app))
3204 && (f = _wfopen(name, rW))) {
3205 fclose(f);
3206 return NULL;
3209 #if _MSVCP_VER < 80 /* msvcp60 - msvcp71 are ignoring prot argument */
3210 prot = SH_DENYNO;
3211 #endif
3213 f = _wfsopen(name, (mode & OPENMODE_binary) ? str_mode[mode_idx].str_bin
3214 : str_mode[mode_idx].str, prot);
3215 if(!f)
3216 return NULL;
3218 if((mode & OPENMODE_ate) && fseek(f, 0, SEEK_END)) {
3219 fclose(f);
3220 return NULL;
3223 return f;
3226 /* ?_Fiopen@std@@YAPAU_iobuf@@PBDHH@Z */
3227 /* ?_Fiopen@std@@YAPEAU_iobuf@@PEBDHH@Z */
3228 FILE* __cdecl _Fiopen(const char *name, int mode, int prot)
3230 wchar_t nameW[FILENAME_MAX];
3232 TRACE("(%s %d %d)\n", name, mode, prot);
3234 if(mbstowcs_s(NULL, nameW, FILENAME_MAX, name, FILENAME_MAX-1) != 0)
3235 return NULL;
3236 return _Fiopen_wchar(nameW, mode, prot);
3239 /* ?__Fiopen@std@@YAPAU_iobuf@@PBDH@Z */
3240 /* ?__Fiopen@std@@YAPEAU_iobuf@@PEBDH@Z */
3241 FILE* __cdecl ___Fiopen(const char *name, int mode)
3243 TRACE("(%p %d)\n", name, mode);
3244 return _Fiopen(name, mode, _SH_DENYNO);
3247 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PB_WHH@Z */
3248 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEB_WHH@Z */
3249 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBGHH@Z */
3250 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBGHH@Z */
3251 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open_wchar, 16)
3252 basic_filebuf_char* __thiscall basic_filebuf_char_open_wchar(basic_filebuf_char *this, const wchar_t *name, int mode, int prot)
3254 FILE *f = NULL;
3256 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
3258 if(basic_filebuf_char_is_open(this))
3259 return NULL;
3261 if(!(f = _Fiopen_wchar(name, mode, prot)))
3262 return NULL;
3264 basic_filebuf_char__Init(this, f, INITFL_open);
3265 basic_filebuf_char__Initcvt_cvt(this, codecvt_char_use_facet(IOS_LOCALE(&this->base)));
3266 return this;
3269 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PB_WI@Z */
3270 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEB_WI@Z */
3271 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBGI@Z */
3272 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBGI@Z */
3273 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open_wchar_mode, 12)
3274 basic_filebuf_char* __thiscall basic_filebuf_char_open_wchar_mode(basic_filebuf_char *this, const wchar_t *name, unsigned int mode)
3276 return basic_filebuf_char_open_wchar(this, name, mode, SH_DENYNO);
3279 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBDHH@Z */
3280 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBDHH@Z */
3281 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open, 16)
3282 basic_filebuf_char* __thiscall basic_filebuf_char_open(basic_filebuf_char *this, const char *name, int mode, int prot)
3284 wchar_t nameW[FILENAME_MAX];
3286 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
3288 if(mbstowcs_s(NULL, nameW, FILENAME_MAX, name, FILENAME_MAX-1) != 0)
3289 return NULL;
3290 return basic_filebuf_char_open_wchar(this, nameW, mode, prot);
3293 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBDF@Z */
3294 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBDF@Z */
3295 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open_mode_old, 12)
3296 basic_filebuf_char* __thiscall basic_filebuf_char_open_mode_old(basic_filebuf_char *this, const char *name, short mode)
3298 TRACE("(%p %p %d)\n", this, name, mode);
3299 return basic_filebuf_char_open(this, name, mode, SH_DENYNO);
3302 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBDH@Z */
3303 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBDH@Z */
3304 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBDI@Z */
3305 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBDI@Z */
3306 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open_mode, 12)
3307 basic_filebuf_char* __thiscall basic_filebuf_char_open_mode(basic_filebuf_char *this, const char *name, unsigned int mode)
3309 return basic_filebuf_char_open(this, name, mode, SH_DENYNO);
3312 /* ?overflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
3313 /* ?overflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
3314 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_overflow, 8)
3315 int __thiscall basic_filebuf_char_overflow(basic_filebuf_char *this, int c)
3317 char buf[8], *dyn_buf;
3318 char ch = c, *to_next;
3319 const char *from_next;
3320 int ret, max_size;
3323 TRACE("(%p %d)\n", this, c);
3325 if(!basic_filebuf_char_is_open(this))
3326 return EOF;
3327 if(c == EOF)
3328 return !c;
3330 if(!this->cvt)
3331 return fwrite(&ch, sizeof(char), 1, this->file) ? c : EOF;
3333 from_next = &ch;
3334 do {
3335 ret = codecvt_char_out(this->cvt, &this->state, from_next, &ch+1,
3336 &from_next, buf, buf+sizeof(buf), &to_next);
3338 switch(ret) {
3339 case CODECVT_partial:
3340 if(to_next == buf)
3341 break;
3342 /* fall through */
3343 case CODECVT_ok:
3344 if(!fwrite(buf, to_next-buf, 1, this->file))
3345 return EOF;
3346 if(ret == CODECVT_partial)
3347 continue;
3348 return c;
3349 case CODECVT_noconv:
3350 return fwrite(&ch, sizeof(char), 1, this->file) ? c : EOF;
3351 default:
3352 return EOF;
3355 break;
3356 } while(1);
3358 max_size = codecvt_base_max_length(&this->cvt->base);
3359 dyn_buf = malloc(max_size);
3360 if(!dyn_buf)
3361 return EOF;
3363 ret = codecvt_char_out(this->cvt, &this->state, from_next, &ch+1,
3364 &from_next, dyn_buf, dyn_buf+max_size, &to_next);
3366 switch(ret) {
3367 case CODECVT_ok:
3368 ret = fwrite(dyn_buf, to_next-dyn_buf, 1, this->file);
3369 free(dyn_buf);
3370 return ret ? c : EOF;
3371 case CODECVT_partial:
3372 ERR("buffer should be big enough to store all output\n");
3373 /* fall through */
3374 default:
3375 free(dyn_buf);
3376 return EOF;
3380 /* ?pbackfail@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
3381 /* ?pbackfail@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
3382 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_pbackfail, 8)
3383 int __thiscall basic_filebuf_char_pbackfail(basic_filebuf_char *this, int c)
3385 TRACE("(%p %d)\n", this, c);
3387 if(!basic_filebuf_char_is_open(this))
3388 return EOF;
3390 if(basic_streambuf_char_gptr(&this->base)>basic_streambuf_char_eback(&this->base)
3391 && (c==EOF || (int)(unsigned char)basic_streambuf_char_gptr(&this->base)[-1]==c)) {
3392 basic_streambuf_char__Gndec(&this->base);
3393 return c==EOF ? !c : c;
3394 }else if(c!=EOF && !this->cvt) {
3395 return ungetc(c, this->file);
3398 return EOF;
3401 /* ?uflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
3402 /* ?uflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
3403 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_uflow, 4)
3404 int __thiscall basic_filebuf_char_uflow(basic_filebuf_char *this)
3406 char ch, buf[128], *to_next;
3407 const char *buf_next;
3408 int c, j;
3409 size_t i;
3411 TRACE("(%p)\n", this);
3413 if(!basic_filebuf_char_is_open(this))
3414 return EOF;
3416 if(basic_streambuf_char_gptr(&this->base) < basic_streambuf_char_egptr(&this->base))
3417 return (unsigned char)*basic_streambuf_char__Gninc(&this->base);
3419 c = fgetc(this->file);
3420 if(!this->cvt || c==EOF)
3421 return c;
3423 buf_next = buf;
3424 for(i=0; i < sizeof(buf)/sizeof(buf[0]); i++) {
3425 buf[i] = c;
3427 switch(codecvt_char_in(this->cvt, &this->state, buf_next,
3428 buf+i+1, &buf_next, &ch, &ch+1, &to_next)) {
3429 case CODECVT_partial:
3430 case CODECVT_ok:
3431 if(to_next == &ch) {
3432 c = fgetc(this->file);
3433 if(c == EOF)
3434 return EOF;
3435 continue;
3438 for(j = --i; j >= buf_next-buf; j--)
3439 ungetc(buf[j], this->file);
3440 return ch;
3441 case CODECVT_noconv:
3442 return (unsigned char)buf[0];
3443 default:
3444 return EOF;
3448 FIXME("buffer is too small\n");
3449 return EOF;
3452 /* ?underflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
3453 /* ?underflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
3454 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_underflow, 4)
3455 int __thiscall basic_filebuf_char_underflow(basic_filebuf_char *this)
3457 int ret;
3459 TRACE("(%p)\n", this);
3461 if(basic_streambuf_char_gptr(&this->base) < basic_streambuf_char_egptr(&this->base))
3462 return (unsigned char)*basic_streambuf_char_gptr(&this->base);
3464 ret = call_basic_streambuf_char_uflow(&this->base);
3465 if(ret != EOF)
3466 ret = call_basic_streambuf_char_pbackfail(&this->base, ret);
3467 return ret;
3470 /* ?seekoff@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
3471 /* ?seekoff@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@_JW4seekdir@ios_base@2@H@Z */
3472 /* ?seekoff@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
3473 /* ?seekoff@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
3474 #if STREAMOFF_BITS == 64
3475 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_seekoff, 24)
3476 #else
3477 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_seekoff, 20)
3478 #endif
3479 fpos_mbstatet* __thiscall basic_filebuf_char_seekoff(basic_filebuf_char *this,
3480 fpos_mbstatet *ret, streamoff off, int way, int mode)
3482 fpos_t pos;
3484 TRACE("(%p %p %s %d %d)\n", this, ret, wine_dbgstr_longlong(off), way, mode);
3486 if(!basic_filebuf_char_is_open(this) || !basic_filebuf_char__Endwrite(this)
3487 || fseek(this->file, off, way)) {
3488 ret->off = -1;
3489 ret->pos = 0;
3490 memset(&ret->state, 0, sizeof(ret->state));
3491 return ret;
3494 fgetpos(this->file, &pos);
3495 ret->off = 0;
3496 ret->pos = pos;
3497 ret->state = this->state;
3498 return ret;
3501 /* ?seekpos@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
3502 /* ?seekpos@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
3503 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_seekpos, 36)
3504 fpos_mbstatet* __thiscall basic_filebuf_char_seekpos(basic_filebuf_char *this,
3505 fpos_mbstatet *ret, fpos_mbstatet pos, int mode)
3507 fpos_t fpos;
3509 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_mbstatet(&pos), mode);
3511 if(!basic_filebuf_char_is_open(this) || !basic_filebuf_char__Endwrite(this)
3512 || fseek(this->file, (LONG)pos.pos, SEEK_SET)
3513 || (pos.off && fseek(this->file, pos.off, SEEK_CUR))) {
3514 ret->off = -1;
3515 ret->pos = 0;
3516 memset(&ret->state, 0, sizeof(ret->state));
3517 return ret;
3520 fgetpos(this->file, &fpos);
3521 ret->off = 0;
3522 ret->pos = fpos;
3523 ret->state = this->state;
3524 return ret;
3527 /* ?setbuf@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PADH@Z */
3528 /* ?setbuf@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PEAD_J@Z */
3529 #if STREAMSIZE_BITS == 64
3530 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_setbuf, 16)
3531 #else
3532 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_setbuf, 12)
3533 #endif
3534 basic_streambuf_char* __thiscall basic_filebuf_char_setbuf(basic_filebuf_char *this, char *buf, streamsize count)
3536 TRACE("(%p %p %s)\n", this, buf, wine_dbgstr_longlong(count));
3538 if(!basic_filebuf_char_is_open(this))
3539 return NULL;
3541 if(setvbuf(this->file, buf, (buf==NULL && count==0) ? _IONBF : _IOFBF, count))
3542 return NULL;
3544 basic_filebuf_char__Init(this, this->file, INITFL_open);
3545 return &this->base;
3548 /* ?sync@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
3549 /* ?sync@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
3550 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_sync, 4)
3551 int __thiscall basic_filebuf_char_sync(basic_filebuf_char *this)
3553 TRACE("(%p)\n", this);
3555 if(!basic_filebuf_char_is_open(this))
3556 return 0;
3558 if(call_basic_streambuf_char_overflow(&this->base, EOF) == EOF)
3559 return 0;
3560 return fflush(this->file);
3563 /* ?imbue@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEXABVlocale@2@@Z */
3564 /* ?imbue@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAXAEBVlocale@2@@Z */
3565 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_imbue, 8)
3566 void __thiscall basic_filebuf_char_imbue(basic_filebuf_char *this, const locale *loc)
3568 TRACE("(%p %p)\n", this, loc);
3569 basic_filebuf_char__Initcvt_cvt(this, codecvt_char_use_facet(loc));
3572 /* ?_Stinit@?1??_Init@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@23@@Z@4HA */
3573 /* ?_Stinit@?1??_Init@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@23@@Z@4HA */
3574 #if _MSVCP_VER >= 140
3575 _Mbstatet basic_filebuf_wchar__Init__Stinit = {0};
3576 #else
3577 _Mbstatet basic_filebuf_wchar__Init__Stinit = 0;
3578 #endif
3580 /* ?_Stinit@?1??_Init@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@23@@Z@4HA */
3581 /* ?_Stinit@?1??_Init@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@23@@Z@4HA */
3582 #if _MSVCP_VER >= 140
3583 _Mbstatet basic_filebuf_short__Init__Stinit = {0};
3584 #else
3585 _Mbstatet basic_filebuf_short__Init__Stinit = 0;
3586 #endif
3588 /* ?_Init@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@12@@Z */
3589 /* ?_Init@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@12@@Z */
3590 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar__Init, 12)
3591 void __thiscall basic_filebuf_wchar__Init(basic_filebuf_wchar *this, FILE *file, basic_filebuf__Initfl which)
3593 TRACE("(%p %p %d)\n", this, file, which);
3595 this->cvt = NULL;
3596 this->wrotesome = FALSE;
3597 this->state = basic_filebuf_wchar__Init__Stinit;
3598 this->close = (which == INITFL_open);
3599 this->file = file;
3601 basic_streambuf_wchar__Init_empty(&this->base);
3604 /* ?_Init@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@12@@Z */
3605 /* ?_Init@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@12@@Z */
3606 DEFINE_THISCALL_WRAPPER(basic_filebuf_short__Init, 12)
3607 void __thiscall basic_filebuf_short__Init(basic_filebuf_wchar *this, FILE *file, basic_filebuf__Initfl which)
3609 TRACE("(%p %p %d)\n", this, file, which);
3611 this->cvt = NULL;
3612 this->wrotesome = FALSE;
3613 this->state = basic_filebuf_short__Init__Stinit;
3614 this->close = (which == INITFL_open);
3615 this->file = file;
3617 basic_streambuf_wchar__Init_empty(&this->base);
3620 /* ?_Initcvt@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAEXPAV?$codecvt@_WDH@2@@Z */
3621 /* ?_Initcvt@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAV?$codecvt@_WDH@2@@Z */
3622 /* ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXPAV?$codecvt@GDH@2@@Z */
3623 /* ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXPEAV?$codecvt@GDH@2@@Z */
3624 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar__Initcvt_cvt, 8)
3625 void __thiscall basic_filebuf_wchar__Initcvt_cvt(basic_filebuf_wchar *this, codecvt_wchar *cvt)
3627 TRACE("(%p %p)\n", this, cvt);
3629 if(codecvt_base_always_noconv(&cvt->base)) {
3630 this->cvt = NULL;
3631 }else {
3632 basic_streambuf_wchar__Init_empty(&this->base);
3633 this->cvt = cvt;
3637 /* ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXXZ */
3638 /* ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXXZ */
3639 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar__Initcvt, 4)
3640 void __thiscall basic_filebuf_wchar__Initcvt(basic_filebuf_wchar *this)
3642 codecvt_wchar *cvt = codecvt_wchar_use_facet(IOS_LOCALE(&this->base));
3643 basic_filebuf_wchar__Initcvt_cvt( this, cvt );
3646 /* ?_Endwrite@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAE_NXZ */
3647 /* ?_Endwrite@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAA_NXZ */
3648 /* ?_Endwrite@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAE_NXZ */
3649 /* ?_Endwrite@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAA_NXZ */
3650 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar__Endwrite, 4)
3651 MSVCP_bool __thiscall basic_filebuf_wchar__Endwrite(basic_filebuf_wchar *this)
3653 TRACE("(%p)\n", this);
3655 if(!this->wrotesome || !this->cvt)
3656 return TRUE;
3658 if(call_basic_streambuf_wchar_overflow(&this->base, WEOF) == WEOF)
3659 return FALSE;
3661 while(1) {
3662 /* TODO: check if we need a dynamic buffer here */
3663 char buf[128];
3664 char *next;
3665 int ret;
3667 ret = codecvt_wchar_unshift(this->cvt, &this->state, buf, buf+sizeof(buf), &next);
3668 switch(ret) {
3669 case CODECVT_ok:
3670 this->wrotesome = FALSE;
3671 /* fall through */
3672 case CODECVT_partial:
3673 if(!fwrite(buf, next-buf, 1, this->file))
3674 return FALSE;
3675 if(this->wrotesome)
3676 break;
3677 /* fall through */
3678 case CODECVT_noconv:
3679 if(call_basic_streambuf_wchar_overflow(&this->base, WEOF) == WEOF)
3680 return FALSE;
3681 return TRUE;
3682 default:
3683 return FALSE;
3688 /* ?close@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@XZ */
3689 /* ?close@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@XZ */
3690 /* ?close@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@XZ */
3691 /* ?close@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@XZ */
3692 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_close, 4)
3693 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_close(basic_filebuf_wchar *this)
3695 basic_filebuf_wchar *ret = this;
3697 TRACE("(%p)\n", this);
3699 if(!this->file)
3700 return NULL;
3702 /* TODO: handle exceptions */
3703 if(!basic_filebuf_wchar__Endwrite(this))
3704 ret = NULL;
3705 if(fclose(this->file))
3706 ret = NULL;
3708 basic_filebuf_wchar__Init(this, NULL, INITFL_close);
3709 return ret;
3712 /* ??0?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAE@PAU_iobuf@@@Z */
3713 /* ??0?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAA@PEAU_iobuf@@@Z */
3714 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_ctor_file, 8)
3715 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_ctor_file(basic_filebuf_wchar *this, FILE *file)
3717 TRACE("(%p %p)\n", this, file);
3719 basic_streambuf_wchar_ctor(&this->base);
3720 this->base.vtable = &MSVCP_basic_filebuf_wchar_vtable;
3722 basic_filebuf_wchar__Init(this, file, INITFL_new);
3723 return this;
3726 /* ??0?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAE@PAU_iobuf@@@Z */
3727 /* ??0?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAA@PEAU_iobuf@@@Z */
3728 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_ctor_file, 8)
3729 basic_filebuf_wchar* __thiscall basic_filebuf_short_ctor_file(basic_filebuf_wchar *this, FILE *file)
3731 TRACE("(%p %p)\n", this, file);
3733 basic_streambuf_short_ctor(&this->base);
3734 this->base.vtable = &MSVCP_basic_filebuf_short_vtable;
3736 basic_filebuf_short__Init(this, file, INITFL_new);
3737 return this;
3740 /* ??_F?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
3741 /* ??_F?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
3742 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_ctor, 4)
3743 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_ctor(basic_filebuf_wchar *this)
3745 return basic_filebuf_wchar_ctor_file(this, NULL);
3748 /* ??_F?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEXXZ */
3749 /* ??_F?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAXXZ */
3750 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_ctor, 4)
3751 basic_filebuf_wchar* __thiscall basic_filebuf_short_ctor(basic_filebuf_wchar *this)
3753 return basic_filebuf_short_ctor_file(this, NULL);
3756 /* ??0?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAE@W4_Uninitialized@1@@Z */
3757 /* ??0?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
3758 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_ctor_uninitialized, 8)
3759 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_ctor_uninitialized(basic_filebuf_wchar *this, int uninitialized)
3761 TRACE("(%p %d)\n", this, uninitialized);
3763 basic_streambuf_wchar_ctor(&this->base);
3764 this->base.vtable = &MSVCP_basic_filebuf_wchar_vtable;
3765 return this;
3768 /* ??0?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAE@W4_Uninitialized@1@@Z */
3769 /* ??0?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
3770 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_ctor_uninitialized, 8)
3771 basic_filebuf_wchar* __thiscall basic_filebuf_short_ctor_uninitialized(basic_filebuf_wchar *this, int uninitialized)
3773 TRACE("(%p %d)\n", this, uninitialized);
3775 basic_streambuf_short_ctor(&this->base);
3776 this->base.vtable = &MSVCP_basic_filebuf_short_vtable;
3777 return this;
3780 /* ??1?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
3781 /* ??1?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
3782 /* ??1?$basic_filebuf@GU?$char_traits@G@std@@@std@@UAE@XZ */
3783 /* ??1?$basic_filebuf@GU?$char_traits@G@std@@@std@@UEAA@XZ */
3784 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_dtor, 4)
3785 void __thiscall basic_filebuf_wchar_dtor(basic_filebuf_wchar *this)
3787 TRACE("(%p)\n", this);
3789 if(this->close)
3790 basic_filebuf_wchar_close(this);
3791 basic_streambuf_wchar_dtor(&this->base);
3794 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_vector_dtor, 8)
3795 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_vector_dtor(basic_filebuf_wchar *this, unsigned int flags)
3797 TRACE("(%p %x)\n", this, flags);
3798 if(flags & 2) {
3799 /* we have an array, with the number of elements stored before the first object */
3800 INT_PTR i, *ptr = (INT_PTR *)this-1;
3802 for(i=*ptr-1; i>=0; i--)
3803 basic_filebuf_wchar_dtor(this+i);
3804 MSVCRT_operator_delete(ptr);
3805 } else {
3806 basic_filebuf_wchar_dtor(this);
3807 if(flags & 1)
3808 MSVCRT_operator_delete(this);
3811 return this;
3814 /* ?is_open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QBE_NXZ */
3815 /* ?is_open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEBA_NXZ */
3816 /* ?is_open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QBE_NXZ */
3817 /* ?is_open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEBA_NXZ */
3818 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_is_open, 4)
3819 MSVCP_bool __thiscall basic_filebuf_wchar_is_open(const basic_filebuf_wchar *this)
3821 TRACE("(%p)\n", this);
3822 return this->file != NULL;
3825 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PB_WHH@Z */
3826 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEB_WHH@Z */
3827 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PBGHH@Z */
3828 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEBGHH@Z */
3829 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_open_wchar, 16)
3830 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_open_wchar(basic_filebuf_wchar *this, const wchar_t *name, int mode, int prot)
3832 FILE *f = NULL;
3834 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
3836 if(basic_filebuf_wchar_is_open(this))
3837 return NULL;
3839 if(!(f = _Fiopen_wchar(name, mode, prot)))
3840 return NULL;
3842 basic_filebuf_wchar__Init(this, f, INITFL_open);
3843 basic_filebuf_wchar__Initcvt_cvt(this, codecvt_wchar_use_facet(IOS_LOCALE(&this->base)));
3844 return this;
3847 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PB_WHH@Z */
3848 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEB_WHH@Z */
3849 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBGHH@Z */
3850 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBGHH@Z */
3851 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_open_wchar, 16)
3852 basic_filebuf_wchar* __thiscall basic_filebuf_short_open_wchar(basic_filebuf_wchar *this, const wchar_t *name, int mode, int prot)
3854 FILE *f = NULL;
3856 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
3858 if(basic_filebuf_wchar_is_open(this))
3859 return NULL;
3861 if(!(f = _Fiopen_wchar(name, mode, prot)))
3862 return NULL;
3864 basic_filebuf_short__Init(this, f, INITFL_open);
3865 basic_filebuf_wchar__Initcvt_cvt(this, codecvt_short_use_facet(IOS_LOCALE(&this->base)));
3866 return this;
3869 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PB_WI@Z */
3870 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEB_WI@Z */
3871 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PBGI@Z */
3872 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEBGI@Z */
3873 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_open_wchar_mode, 12)
3874 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_open_wchar_mode(basic_filebuf_wchar *this, const wchar_t *name, unsigned int mode)
3876 return basic_filebuf_wchar_open_wchar(this, name, mode, SH_DENYNO);
3879 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PB_WI@Z */
3880 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEB_WI@Z */
3881 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBGI@Z */
3882 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBGI@Z */
3883 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_open_wchar_mode, 12)
3884 basic_filebuf_wchar* __thiscall basic_filebuf_short_open_wchar_mode(basic_filebuf_wchar *this, const wchar_t *name, unsigned int mode)
3886 return basic_filebuf_short_open_wchar(this, name, mode, SH_DENYNO);
3889 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PBDHH@Z */
3890 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEBDHH@Z */
3891 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_open, 16)
3892 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_open(basic_filebuf_wchar *this, const char *name, int mode, int prot)
3894 wchar_t nameW[FILENAME_MAX];
3896 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
3898 if(mbstowcs_s(NULL, nameW, FILENAME_MAX, name, FILENAME_MAX-1) != 0)
3899 return NULL;
3900 return basic_filebuf_wchar_open_wchar(this, nameW, mode, prot);
3903 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBDHH@Z */
3904 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBDHH@Z */
3905 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_open, 16)
3906 basic_filebuf_wchar* __thiscall basic_filebuf_short_open(basic_filebuf_wchar *this, const char *name, int mode, int prot)
3908 wchar_t nameW[FILENAME_MAX];
3910 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
3912 if(mbstowcs_s(NULL, nameW, FILENAME_MAX, name, FILENAME_MAX-1) != 0)
3913 return NULL;
3914 return basic_filebuf_short_open_wchar(this, nameW, mode, prot);
3917 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBDF@Z */
3918 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBDF@Z */
3919 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_open_mode_old, 12)
3920 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_open_mode_old(basic_filebuf_wchar *this, const char *name, short mode)
3922 TRACE("(%p %p %d)\n", this, name, mode);
3923 return basic_filebuf_wchar_open(this, name, mode, SH_DENYNO);
3926 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBDH@Z */
3927 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBDH@Z */
3928 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PBDI@Z */
3929 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEBDI@Z */
3930 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_open_mode, 12)
3931 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_open_mode(basic_filebuf_wchar *this, const char *name, unsigned int mode)
3933 return basic_filebuf_wchar_open(this, name, mode, SH_DENYNO);
3936 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBDI@Z */
3937 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBDI@Z */
3938 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_open_mode, 12)
3939 basic_filebuf_wchar* __thiscall basic_filebuf_short_open_mode(basic_filebuf_wchar *this, const char *name, unsigned int mode)
3941 return basic_filebuf_short_open(this, name, mode, SH_DENYNO);
3944 /* ?overflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEGG@Z */
3945 /* ?overflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAGG@Z */
3946 /* ?overflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEGG@Z */
3947 /* ?overflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAGG@Z */
3948 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_overflow, 8)
3949 unsigned short __thiscall basic_filebuf_wchar_overflow(basic_filebuf_wchar *this, unsigned short c)
3951 char buf[8], *dyn_buf, *to_next;
3952 wchar_t ch = c;
3953 const wchar_t *from_next;
3954 int max_size;
3955 unsigned short ret;
3958 TRACE("(%p %d)\n", this, c);
3960 if(!basic_filebuf_wchar_is_open(this))
3961 return WEOF;
3962 if(c == WEOF)
3963 return !c;
3965 if(!this->cvt)
3966 return fwrite(&ch, sizeof(wchar_t), 1, this->file) ? c : WEOF;
3968 from_next = &ch;
3969 do {
3970 ret = codecvt_wchar_out(this->cvt, &this->state, from_next, &ch+1,
3971 &from_next, buf, buf+sizeof(buf), &to_next);
3973 switch(ret) {
3974 case CODECVT_partial:
3975 if(to_next == buf)
3976 break;
3977 /* fall through */
3978 case CODECVT_ok:
3979 if(!fwrite(buf, to_next-buf, 1, this->file))
3980 return WEOF;
3981 if(ret == CODECVT_partial)
3982 continue;
3983 return c;
3984 case CODECVT_noconv:
3985 return fwrite(&ch, sizeof(wchar_t), 1, this->file) ? c : WEOF;
3986 default:
3987 return WEOF;
3990 break;
3991 } while(1);
3993 max_size = codecvt_base_max_length(&this->cvt->base);
3994 dyn_buf = malloc(max_size);
3995 if(!dyn_buf)
3996 return WEOF;
3998 ret = codecvt_wchar_out(this->cvt, &this->state, from_next, &ch+1,
3999 &from_next, dyn_buf, dyn_buf+max_size, &to_next);
4001 switch(ret) {
4002 case CODECVT_ok:
4003 ret = fwrite(dyn_buf, to_next-dyn_buf, 1, this->file);
4004 free(dyn_buf);
4005 return ret ? c : WEOF;
4006 case CODECVT_partial:
4007 ERR("buffer should be big enough to store all output\n");
4008 /* fall through */
4009 default:
4010 free(dyn_buf);
4011 return WEOF;
4015 /* ?pbackfail@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEGG@Z */
4016 /* ?pbackfail@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAGG@Z */
4017 /* ?pbackfail@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEGG@Z */
4018 /* ?pbackfail@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAGG@Z */
4019 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_pbackfail, 8)
4020 unsigned short __thiscall basic_filebuf_wchar_pbackfail(basic_filebuf_wchar *this, unsigned short c)
4022 TRACE("(%p %d)\n", this, c);
4024 if(!basic_filebuf_wchar_is_open(this))
4025 return WEOF;
4027 if(basic_streambuf_wchar_gptr(&this->base)>basic_streambuf_wchar_eback(&this->base)
4028 && (c==WEOF || basic_streambuf_wchar_gptr(&this->base)[-1]==c)) {
4029 basic_streambuf_wchar__Gndec(&this->base);
4030 return c==WEOF ? !c : c;
4031 }else if(c!=WEOF && !this->cvt) {
4032 return ungetwc(c, this->file);
4033 }else if(c!=WEOF && basic_streambuf_wchar_gptr(&this->base)!=&this->putback) {
4034 this->putback = c;
4035 basic_streambuf_wchar_setg(&this->base, &this->putback, &this->putback, &this->putback+1);
4036 return c;
4039 return WEOF;
4042 /* ?uflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEGXZ */
4043 /* ?uflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAGXZ */
4044 /* ?uflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEGXZ */
4045 /* ?uflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAGXZ */
4046 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_uflow, 4)
4047 unsigned short __thiscall basic_filebuf_wchar_uflow(basic_filebuf_wchar *this)
4049 wchar_t ch, *to_next;
4050 char buf[128];
4051 const char *buf_next;
4052 int c, j;
4053 size_t i;
4055 TRACE("(%p)\n", this);
4057 if(!basic_filebuf_wchar_is_open(this))
4058 return WEOF;
4060 if(basic_streambuf_wchar_gptr(&this->base) < basic_streambuf_wchar_egptr(&this->base))
4061 return *basic_streambuf_wchar__Gninc(&this->base);
4063 if(!this->cvt)
4064 return fgetwc(this->file);
4066 buf_next = buf;
4067 for(i=0; i < sizeof(buf)/sizeof(buf[0]); i++) {
4068 if((c = fgetc(this->file)) == EOF)
4069 return WEOF;
4070 buf[i] = c;
4072 switch(codecvt_wchar_in(this->cvt, &this->state, buf_next,
4073 buf+i+1, &buf_next, &ch, &ch+1, &to_next)) {
4074 case CODECVT_partial:
4075 case CODECVT_ok:
4076 if(to_next == &ch)
4077 continue;
4079 for(j = --i; j >= buf_next-buf; j--)
4080 ungetc(buf[j], this->file);
4081 return ch;
4082 case CODECVT_noconv:
4083 if(i+1 < sizeof(wchar_t))
4084 continue;
4086 memcpy(&ch, buf, sizeof(wchar_t));
4087 return ch;
4088 default:
4089 return WEOF;
4093 FIXME("buffer is too small\n");
4094 return WEOF;
4097 /* ?underflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEGXZ */
4098 /* ?underflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAGXZ */
4099 /* ?underflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEGXZ */
4100 /* ?underflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAGXZ */
4101 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_underflow, 4)
4102 unsigned short __thiscall basic_filebuf_wchar_underflow(basic_filebuf_wchar *this)
4104 unsigned short ret;
4106 TRACE("(%p)\n", this);
4108 if(basic_streambuf_wchar_gptr(&this->base) < basic_streambuf_wchar_egptr(&this->base))
4109 return *basic_streambuf_wchar_gptr(&this->base);
4111 ret = call_basic_streambuf_wchar_uflow(&this->base);
4112 if(ret != WEOF)
4113 ret = call_basic_streambuf_wchar_pbackfail(&this->base, ret);
4114 return ret;
4117 /* ?seekoff@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
4118 /* ?seekoff@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@_JW4seekdir@ios_base@2@H@Z */
4119 /* ?seekoff@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
4120 /* ?seekoff@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
4121 /* ?seekoff@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
4122 /* ?seekoff@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
4123 #if STREAMOFF_BITS == 64
4124 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_seekoff, 24)
4125 #else
4126 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_seekoff, 20)
4127 #endif
4128 fpos_mbstatet* __thiscall basic_filebuf_wchar_seekoff(basic_filebuf_wchar *this,
4129 fpos_mbstatet *ret, streamoff off, int way, int mode)
4131 fpos_t pos;
4133 TRACE("(%p %p %s %d %d)\n", this, ret, wine_dbgstr_longlong(off), way, mode);
4135 if(basic_streambuf_wchar_gptr(&this->base) == &this->putback) {
4136 if(way == SEEKDIR_cur)
4137 off -= sizeof(wchar_t);
4139 basic_streambuf_wchar_setg(&this->base, &this->putback, &this->putback+1, &this->putback+1);
4142 if(!basic_filebuf_wchar_is_open(this) || !basic_filebuf_wchar__Endwrite(this)
4143 || fseek(this->file, off, way)) {
4144 ret->off = -1;
4145 ret->pos = 0;
4146 memset(&ret->state, 0, sizeof(ret->state));
4147 return ret;
4150 fgetpos(this->file, &pos);
4151 ret->off = 0;
4152 ret->pos = pos;
4153 ret->state = this->state;
4154 return ret;
4157 /* ?seekpos@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
4158 /* ?seekpos@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
4159 /* ?seekpos@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
4160 /* ?seekpos@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
4161 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_seekpos, 36)
4162 fpos_mbstatet* __thiscall basic_filebuf_wchar_seekpos(basic_filebuf_wchar *this,
4163 fpos_mbstatet *ret, fpos_mbstatet pos, int mode)
4165 fpos_t fpos;
4167 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_mbstatet(&pos), mode);
4169 if(!basic_filebuf_wchar_is_open(this) || !basic_filebuf_wchar__Endwrite(this)
4170 || fseek(this->file, (LONG)pos.pos, SEEK_SET)
4171 || (pos.off && fseek(this->file, pos.off, SEEK_CUR))) {
4172 ret->off = -1;
4173 ret->pos = 0;
4174 memset(&ret->state, 0, sizeof(ret->state));
4175 return ret;
4178 if(basic_streambuf_wchar_gptr(&this->base) == &this->putback)
4179 basic_streambuf_wchar_setg(&this->base, &this->putback, &this->putback+1, &this->putback+1);
4181 fgetpos(this->file, &fpos);
4182 ret->off = 0;
4183 ret->pos = fpos;
4184 ret->state = this->state;
4185 return ret;
4188 /* ?setbuf@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@PA_WH@Z */
4189 /* ?setbuf@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@PEA_W_J@Z */
4190 #if STREAMSIZE_BITS == 64
4191 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_setbuf, 16)
4192 #else
4193 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_setbuf, 12)
4194 #endif
4195 basic_streambuf_wchar* __thiscall basic_filebuf_wchar_setbuf(basic_filebuf_wchar *this, wchar_t *buf, streamsize count)
4197 TRACE("(%p %p %s)\n", this, buf, wine_dbgstr_longlong(count));
4199 if(!basic_filebuf_wchar_is_open(this))
4200 return NULL;
4202 if(setvbuf(this->file, (char*)buf, (buf==NULL && count==0) ? _IONBF : _IOFBF, count*sizeof(wchar_t)))
4203 return NULL;
4205 basic_filebuf_wchar__Init(this, this->file, INITFL_open);
4206 return &this->base;
4209 /* ?setbuf@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEPAV?$basic_streambuf@GU?$char_traits@G@std@@@2@PAGH@Z */
4210 /* ?setbuf@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAPEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@PEAG_J@Z */
4211 #if STREAMSIZE_BITS == 64
4212 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_setbuf, 16)
4213 #else
4214 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_setbuf, 12)
4215 #endif
4216 basic_streambuf_wchar* __thiscall basic_filebuf_short_setbuf(basic_filebuf_wchar *this, wchar_t *buf, streamsize count)
4218 TRACE("(%p %p %s)\n", this, buf, wine_dbgstr_longlong(count));
4220 if(!basic_filebuf_wchar_is_open(this))
4221 return NULL;
4223 if(setvbuf(this->file, (char*)buf, (buf==NULL && count==0) ? _IONBF : _IOFBF, count*sizeof(wchar_t)))
4224 return NULL;
4226 basic_filebuf_short__Init(this, this->file, INITFL_open);
4227 return &this->base;
4230 /* ?sync@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEHXZ */
4231 /* ?sync@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAHXZ */
4232 /* ?sync@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEHXZ */
4233 /* ?sync@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAHXZ */
4234 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_sync, 4)
4235 int __thiscall basic_filebuf_wchar_sync(basic_filebuf_wchar *this)
4237 TRACE("(%p)\n", this);
4239 if(!basic_filebuf_wchar_is_open(this))
4240 return 0;
4242 if(call_basic_streambuf_wchar_overflow(&this->base, WEOF) == WEOF)
4243 return 0;
4244 return fflush(this->file);
4247 /* ?imbue@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEXABVlocale@2@@Z */
4248 /* ?imbue@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAXAEBVlocale@2@@Z */
4249 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_imbue, 8)
4250 void __thiscall basic_filebuf_wchar_imbue(basic_filebuf_wchar *this, const locale *loc)
4252 TRACE("(%p %p)\n", this, loc);
4253 basic_filebuf_wchar__Initcvt_cvt(this, codecvt_wchar_use_facet(loc));
4256 /* ?imbue@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEXABVlocale@2@@Z */
4257 /* ?imbue@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAXAEBVlocale@2@@Z */
4258 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_imbue, 8)
4259 void __thiscall basic_filebuf_short_imbue(basic_filebuf_wchar *this, const locale *loc)
4261 TRACE("(%p %p)\n", this, loc);
4262 basic_filebuf_wchar__Initcvt_cvt(this, codecvt_short_use_facet(loc));
4265 /* ?_Getstate@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEHH@Z */
4266 /* ?_Getstate@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAHH@Z */
4267 /* ?_Mode@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEHH@Z */
4268 /* ?_Mode@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAHH@Z */
4269 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char__Getstate, 8)
4270 int __thiscall basic_stringbuf_char__Getstate(basic_stringbuf_char *this, IOSB_openmode mode)
4272 int state = 0;
4274 if(!(mode & OPENMODE_in))
4275 state |= STRINGBUF_no_read;
4277 if(!(mode & OPENMODE_out))
4278 state |= STRINGBUF_no_write;
4280 if(mode & OPENMODE_ate)
4281 state |= STRINGBUF_at_end;
4283 if(mode & OPENMODE_app)
4284 state |= STRINGBUF_append;
4286 return state;
4289 /* ?_Init@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXPBDIH@Z */
4290 /* ?_Init@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAXPEBD_KH@Z */
4291 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char__Init, 16)
4292 void __thiscall basic_stringbuf_char__Init(basic_stringbuf_char *this, const char *str, MSVCP_size_t count, int state)
4294 TRACE("(%p, %p, %ld, %d)\n", this, str, count, state);
4296 basic_streambuf_char__Init_empty(&this->base);
4298 this->state = state;
4299 this->seekhigh = NULL;
4301 if(count && str) {
4302 char *buf = MSVCRT_operator_new(count);
4303 if(!buf) {
4304 ERR("Out of memory\n");
4305 throw_exception(EXCEPTION_BAD_ALLOC, NULL);
4308 memcpy(buf, str, count);
4309 this->seekhigh = buf + count;
4311 this->state |= STRINGBUF_allocated;
4313 if(!(state & STRINGBUF_no_read))
4314 basic_streambuf_char_setg(&this->base, buf, buf, buf + count);
4316 if(!(state & STRINGBUF_no_write)) {
4317 basic_streambuf_char_setp_next(&this->base, buf, (state & STRINGBUF_at_end) ? buf + count : buf, buf + count);
4319 if(!basic_streambuf_char_gptr(&this->base))
4320 basic_streambuf_char_setg(&this->base, buf, 0, buf);
4325 /* ??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 */
4326 /* ??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 */
4327 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_ctor_str, 12)
4328 basic_stringbuf_char* __thiscall basic_stringbuf_char_ctor_str(basic_stringbuf_char *this,
4329 const basic_string_char *str, IOSB_openmode mode)
4331 TRACE("(%p %p %d)\n", this, str, mode);
4333 basic_streambuf_char_ctor(&this->base);
4334 this->base.vtable = &MSVCP_basic_stringbuf_char_vtable;
4336 basic_stringbuf_char__Init(this, MSVCP_basic_string_char_c_str(str),
4337 str->size, basic_stringbuf_char__Getstate(this, mode));
4338 return this;
4341 /* ??0?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z */
4342 /* ??0?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z */
4343 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_ctor_mode, 8)
4344 basic_stringbuf_char* __thiscall basic_stringbuf_char_ctor_mode(
4345 basic_stringbuf_char *this, IOSB_openmode mode)
4347 TRACE("(%p %d)\n", this, mode);
4349 basic_streambuf_char_ctor(&this->base);
4350 this->base.vtable = &MSVCP_basic_stringbuf_char_vtable;
4352 basic_stringbuf_char__Init(this, NULL, 0, basic_stringbuf_char__Getstate(this, mode));
4353 return this;
4356 /* ??_F?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
4357 /* ??_F?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
4358 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_ctor, 4)
4359 basic_stringbuf_char* __thiscall basic_stringbuf_char_ctor(basic_stringbuf_char *this)
4361 return basic_stringbuf_char_ctor_mode(this, OPENMODE_in|OPENMODE_out);
4364 /* ?_Tidy@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXXZ */
4365 /* ?_Tidy@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAXXZ */
4366 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char__Tidy, 4)
4367 void __thiscall basic_stringbuf_char__Tidy(basic_stringbuf_char *this)
4369 TRACE("(%p)\n", this);
4371 if(this->state & STRINGBUF_allocated) {
4372 MSVCRT_operator_delete(basic_streambuf_char_eback(&this->base));
4373 this->seekhigh = NULL;
4374 this->state &= ~STRINGBUF_allocated;
4377 basic_streambuf_char__Init_empty(&this->base);
4380 /* ??1?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ */
4381 /* ??1?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ */
4382 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_dtor, 4)
4383 void __thiscall basic_stringbuf_char_dtor(basic_stringbuf_char *this)
4385 TRACE("(%p)\n", this);
4387 basic_stringbuf_char__Tidy(this);
4388 basic_streambuf_char_dtor(&this->base);
4391 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_vector_dtor, 8)
4392 basic_stringbuf_char* __thiscall basic_stringbuf_char_vector_dtor(basic_stringbuf_char *this, unsigned int flags)
4394 TRACE("(%p %x)\n", this, flags);
4396 if(flags & 2) {
4397 /* we have an array, with the number of elements stored before the first object */
4398 INT_PTR i, *ptr = (INT_PTR *) this - 1;
4400 for (i = *ptr - 1; i >= 0; i--)
4401 basic_stringbuf_char_dtor(this+i);
4403 MSVCRT_operator_delete(ptr);
4404 }else {
4405 basic_stringbuf_char_dtor(this);
4407 if(flags & 1)
4408 MSVCRT_operator_delete(this);
4411 return this;
4414 /* ?overflow@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAEHH@Z */
4415 /* ?overflow@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAAHH@Z */
4416 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_overflow, 8)
4417 int __thiscall basic_stringbuf_char_overflow(basic_stringbuf_char *this, int meta)
4419 MSVCP_size_t oldsize, size;
4420 char *ptr, *buf;
4422 TRACE("(%p %x)\n", this, meta);
4424 if(meta == EOF)
4425 return !EOF;
4426 if(this->state & STRINGBUF_no_write)
4427 return EOF;
4429 ptr = basic_streambuf_char_pptr(&this->base);
4430 if((this->state&STRINGBUF_append) && ptr<this->seekhigh)
4431 basic_streambuf_char_setp_next(&this->base, basic_streambuf_char_pbase(&this->base),
4432 this->seekhigh, basic_streambuf_char_epptr(&this->base));
4434 if(ptr && ptr<basic_streambuf_char_epptr(&this->base))
4435 return (unsigned char)(*basic_streambuf_char__Pninc(&this->base) = meta);
4437 oldsize = (ptr ? basic_streambuf_char_epptr(&this->base)-basic_streambuf_char_eback(&this->base): 0);
4438 size = oldsize|0xf;
4439 size += size/2;
4440 buf = MSVCRT_operator_new(size);
4441 if(!buf) {
4442 ERR("Out of memory\n");
4443 throw_exception(EXCEPTION_BAD_ALLOC, NULL);
4446 if(!oldsize) {
4447 this->seekhigh = buf;
4448 basic_streambuf_char_setp(&this->base, buf, buf+size);
4449 if(this->state & STRINGBUF_no_read)
4450 basic_streambuf_char_setg(&this->base, buf, NULL, buf);
4451 else
4452 basic_streambuf_char_setg(&this->base, buf, buf, buf+1);
4454 this->state |= STRINGBUF_allocated;
4455 }else {
4456 ptr = basic_streambuf_char_eback(&this->base);
4457 memcpy(buf, ptr, oldsize);
4459 this->seekhigh = buf+(this->seekhigh-ptr);
4460 basic_streambuf_char_setp_next(&this->base, buf,
4461 buf+(basic_streambuf_char_pptr(&this->base)-ptr), buf+size);
4462 if(this->state & STRINGBUF_no_read)
4463 basic_streambuf_char_setg(&this->base, buf, NULL, buf);
4464 else
4465 basic_streambuf_char_setg(&this->base, buf,
4466 buf+(basic_streambuf_char_gptr(&this->base)-ptr),
4467 basic_streambuf_char_pptr(&this->base)+1);
4469 MSVCRT_operator_delete(ptr);
4472 return (unsigned char)(*basic_streambuf_char__Pninc(&this->base) = meta);
4475 /* ?pbackfail@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAEHH@Z */
4476 /* ?pbackfail@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAAHH@Z */
4477 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_pbackfail, 8)
4478 int __thiscall basic_stringbuf_char_pbackfail(basic_stringbuf_char *this, int c)
4480 char *cur;
4482 TRACE("(%p %x)\n", this, c);
4484 cur = basic_streambuf_char_gptr(&this->base);
4485 if(!cur || cur==basic_streambuf_char_eback(&this->base)
4486 || (c!=EOF && c!=cur[-1] && this->state&STRINGBUF_no_write))
4487 return EOF;
4489 if(c != EOF)
4490 cur[-1] = c;
4491 basic_streambuf_char_gbump(&this->base, -1);
4492 return c==EOF ? !EOF : c;
4495 /* ?underflow@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAEHXZ */
4496 /* ?underflow@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAAHXZ */
4497 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_underflow, 4)
4498 int __thiscall basic_stringbuf_char_underflow(basic_stringbuf_char *this)
4500 char *ptr, *cur;
4502 TRACE("(%p)\n", this);
4504 cur = basic_streambuf_char_gptr(&this->base);
4505 if(!cur || this->state&STRINGBUF_no_read)
4506 return EOF;
4508 ptr = basic_streambuf_char_pptr(&this->base);
4509 if(this->seekhigh < ptr)
4510 this->seekhigh = ptr;
4512 ptr = basic_streambuf_char_egptr(&this->base);
4513 if(this->seekhigh > ptr)
4514 basic_streambuf_char_setg(&this->base, basic_streambuf_char_eback(&this->base), cur, this->seekhigh);
4516 if(cur < this->seekhigh)
4517 return (unsigned char)*cur;
4518 return EOF;
4521 /* ?seekoff@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
4522 /* ?seekoff@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAA?AV?$fpos@H@2@_JW4seekdir@ios_base@2@H@Z */
4523 /* ?seekoff@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAE?AV?$fpos@H@2@JHH@Z */
4524 /* ?seekoff@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
4525 #if STREAMOFF_BITS == 64
4526 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_seekoff, 24)
4527 #else
4528 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_seekoff, 20)
4529 #endif
4530 fpos_mbstatet* __thiscall basic_stringbuf_char_seekoff(basic_stringbuf_char *this,
4531 fpos_mbstatet *ret, streamoff off, int way, int mode)
4533 char *beg, *cur_r, *cur_w;
4535 TRACE("(%p %p %s %d %d)\n", this, ret, wine_dbgstr_longlong(off), way, mode);
4537 cur_w = basic_streambuf_char_pptr(&this->base);
4538 if(cur_w > this->seekhigh)
4539 this->seekhigh = cur_w;
4541 ret->off = 0;
4542 ret->pos = 0;
4543 memset(&ret->state, 0, sizeof(ret->state));
4545 beg = basic_streambuf_char_eback(&this->base);
4546 cur_r = basic_streambuf_char_gptr(&this->base);
4547 if((mode & OPENMODE_in) && cur_r) {
4548 if(way==SEEKDIR_cur && !(mode & OPENMODE_out))
4549 off += cur_r-beg;
4550 else if(way == SEEKDIR_end)
4551 off += this->seekhigh-beg;
4552 else if(way != SEEKDIR_beg)
4553 off = -1;
4555 if(off<0 || off>this->seekhigh-beg) {
4556 off = -1;
4557 }else {
4558 basic_streambuf_char_gbump(&this->base, beg-cur_r+off);
4559 if((mode & OPENMODE_out) && cur_w) {
4560 basic_streambuf_char_setp_next(&this->base, beg,
4561 basic_streambuf_char_gptr(&this->base),
4562 basic_streambuf_char_epptr(&this->base));
4565 }else if((mode & OPENMODE_out) && cur_w) {
4566 if(way == SEEKDIR_cur)
4567 off += cur_w-beg;
4568 else if(way == SEEKDIR_end)
4569 off += this->seekhigh-beg;
4570 else if(way != SEEKDIR_beg)
4571 off = -1;
4573 if(off<0 || off>this->seekhigh-beg)
4574 off = -1;
4575 else
4576 basic_streambuf_char_pbump(&this->base, beg-cur_w+off);
4577 }else {
4578 off = -1;
4581 ret->off = off;
4582 return ret;
4585 /* ?seekpos@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
4586 /* ?seekpos@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
4587 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_seekpos, 36)
4588 fpos_mbstatet* __thiscall basic_stringbuf_char_seekpos(basic_stringbuf_char *this,
4589 fpos_mbstatet *ret, fpos_mbstatet pos, int mode)
4591 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_mbstatet(&pos), mode);
4593 if(pos.off==-1 && pos.pos==0 && MBSTATET_TO_INT(&pos.state)==0) {
4594 *ret = pos;
4595 return ret;
4598 return basic_stringbuf_char_seekoff(this, ret, pos.pos+pos.off, SEEKDIR_beg, mode);
4601 /* ?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 */
4602 /* ?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 */
4603 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_str_set, 8)
4604 void __thiscall basic_stringbuf_char_str_set(basic_stringbuf_char *this, const basic_string_char *str)
4606 TRACE("(%p %p)\n", this, str);
4608 basic_stringbuf_char__Tidy(this);
4609 basic_stringbuf_char__Init(this, MSVCP_basic_string_char_c_str(str), str->size, this->state);
4612 /* ?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 */
4613 /* ?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 */
4614 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_str_get, 8)
4615 basic_string_char* __thiscall basic_stringbuf_char_str_get(const basic_stringbuf_char *this, basic_string_char *ret)
4617 char *ptr;
4619 TRACE("(%p)\n", this);
4621 if(!(this->state & STRINGBUF_no_write) && basic_streambuf_char_pptr(&this->base)) {
4622 char *pptr;
4624 ptr = basic_streambuf_char_pbase(&this->base);
4625 pptr = basic_streambuf_char_pptr(&this->base);
4627 return MSVCP_basic_string_char_ctor_cstr_len(ret, ptr, (this->seekhigh < pptr ? pptr : this->seekhigh) - ptr);
4630 if(!(this->state & STRINGBUF_no_read) && basic_streambuf_char_gptr(&this->base)) {
4631 ptr = basic_streambuf_char_eback(&this->base);
4632 return MSVCP_basic_string_char_ctor_cstr_len(ret, ptr, basic_streambuf_char_egptr(&this->base) - ptr);
4635 return MSVCP_basic_string_char_ctor(ret);
4638 /* ?_Getstate@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@AAEHH@Z */
4639 /* ?_Getstate@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@AEAAHH@Z */
4640 /* ?_Getstate@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEHH@Z */
4641 /* ?_Getstate@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAHH@Z */
4642 /* ?_Mode@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEHH@Z */
4643 /* ?_Mode@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAHH@Z */
4644 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar__Getstate, 8)
4645 int __thiscall basic_stringbuf_wchar__Getstate(basic_stringbuf_wchar *this, IOSB_openmode mode)
4647 int state = 0;
4649 if(!(mode & OPENMODE_in))
4650 state |= STRINGBUF_no_read;
4652 if(!(mode & OPENMODE_out))
4653 state |= STRINGBUF_no_write;
4655 if(mode & OPENMODE_ate)
4656 state |= STRINGBUF_at_end;
4658 if(mode & OPENMODE_app)
4659 state |= STRINGBUF_append;
4661 return state;
4664 /* ?_Init@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEXPB_WIH@Z */
4665 /* ?_Init@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAXPEB_W_KH@Z */
4666 /* ?_Init@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEXPBGIH@Z */
4667 /* ?_Init@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAXPEBG_KH@Z */
4668 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar__Init, 16)
4669 void __thiscall basic_stringbuf_wchar__Init(basic_stringbuf_wchar *this, const wchar_t *str, MSVCP_size_t count, int state)
4671 TRACE("(%p, %p, %lu, %d)\n", this, str, count, state);
4673 basic_streambuf_wchar__Init_empty(&this->base);
4675 this->state = state;
4676 this->seekhigh = NULL;
4678 if(count && str) {
4679 wchar_t *buf = MSVCRT_operator_new(count*sizeof(wchar_t));
4680 if(!buf) {
4681 ERR("Out of memory\n");
4682 throw_exception(EXCEPTION_BAD_ALLOC, NULL);
4685 memcpy(buf, str, count*sizeof(wchar_t));
4686 this->seekhigh = buf + count;
4688 this->state |= STRINGBUF_allocated;
4690 if(!(state & STRINGBUF_no_read))
4691 basic_streambuf_wchar_setg(&this->base, buf, buf, buf + count);
4693 if(!(state & STRINGBUF_no_write)) {
4694 basic_streambuf_wchar_setp_next(&this->base, buf, (state & STRINGBUF_at_end) ? buf + count : buf, buf + count);
4696 if(!basic_streambuf_wchar_gptr(&this->base))
4697 basic_streambuf_wchar_setg(&this->base, buf, 0, buf);
4702 /* ??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 */
4703 /* ??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 */
4704 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_ctor_str, 12)
4705 basic_stringbuf_wchar* __thiscall basic_stringbuf_wchar_ctor_str(basic_stringbuf_wchar *this,
4706 const basic_string_wchar *str, IOSB_openmode mode)
4708 TRACE("(%p %p %d)\n", this, str, mode);
4710 basic_streambuf_wchar_ctor(&this->base);
4711 this->base.vtable = &MSVCP_basic_stringbuf_wchar_vtable;
4713 basic_stringbuf_wchar__Init(this, MSVCP_basic_string_wchar_c_str(str),
4714 str->size, basic_stringbuf_wchar__Getstate(this, mode));
4715 return this;
4718 /* ??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 */
4719 /* ??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 */
4720 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_ctor_str, 12)
4721 basic_stringbuf_wchar* __thiscall basic_stringbuf_short_ctor_str(basic_stringbuf_wchar *this,
4722 const basic_string_wchar *str, IOSB_openmode mode)
4724 basic_stringbuf_wchar_ctor_str(this, str, mode);
4725 this->base.vtable = &MSVCP_basic_stringbuf_short_vtable;
4726 return this;
4729 /* ??0?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@H@Z */
4730 /* ??0?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@H@Z */
4731 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_ctor_mode, 8)
4732 basic_stringbuf_wchar* __thiscall basic_stringbuf_wchar_ctor_mode(
4733 basic_stringbuf_wchar *this, IOSB_openmode mode)
4735 TRACE("(%p %d)\n", this, mode);
4737 basic_streambuf_wchar_ctor(&this->base);
4738 this->base.vtable = &MSVCP_basic_stringbuf_wchar_vtable;
4740 basic_stringbuf_wchar__Init(this, NULL, 0, basic_stringbuf_wchar__Getstate(this, mode));
4741 return this;
4744 /* ??0?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@H@Z */
4745 /* ??0?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@H@Z */
4746 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_ctor_mode, 8)
4747 basic_stringbuf_wchar* __thiscall basic_stringbuf_short_ctor_mode(
4748 basic_stringbuf_wchar *this, IOSB_openmode mode)
4750 basic_stringbuf_wchar_ctor_mode(this, mode);
4751 this->base.vtable = &MSVCP_basic_stringbuf_short_vtable;
4752 return this;
4755 /* ??_F?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
4756 /* ??_F?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
4757 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_ctor, 4)
4758 basic_stringbuf_wchar* __thiscall basic_stringbuf_wchar_ctor(basic_stringbuf_wchar *this)
4760 return basic_stringbuf_wchar_ctor_mode(this, OPENMODE_in|OPENMODE_out);
4763 /* ??_F?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
4764 /* ??_F?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
4765 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_ctor, 4)
4766 basic_stringbuf_wchar* __thiscall basic_stringbuf_short_ctor(basic_stringbuf_wchar *this)
4768 return basic_stringbuf_short_ctor_mode(this, OPENMODE_in|OPENMODE_out);
4771 /* ?_Tidy@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEXXZ */
4772 /* ?_Tidy@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAXXZ */
4773 /* ?_Tidy@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEXXZ */
4774 /* ?_Tidy@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAXXZ */
4775 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar__Tidy, 4)
4776 void __thiscall basic_stringbuf_wchar__Tidy(basic_stringbuf_wchar *this)
4778 TRACE("(%p)\n", this);
4780 if(this->state & STRINGBUF_allocated) {
4781 MSVCRT_operator_delete(basic_streambuf_wchar_eback(&this->base));
4782 this->seekhigh = NULL;
4783 this->state &= ~STRINGBUF_allocated;
4786 basic_streambuf_wchar__Init_empty(&this->base);
4789 /* ??1?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UAE@XZ */
4790 /* ??1?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UEAA@XZ */
4791 /* ??1?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UAE@XZ */
4792 /* ??1?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UEAA@XZ */
4793 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_dtor, 4)
4794 void __thiscall basic_stringbuf_wchar_dtor(basic_stringbuf_wchar *this)
4796 TRACE("(%p)\n", this);
4798 basic_stringbuf_wchar__Tidy(this);
4799 basic_streambuf_wchar_dtor(&this->base);
4802 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_vector_dtor, 8)
4803 basic_stringbuf_wchar* __thiscall basic_stringbuf_wchar_vector_dtor(basic_stringbuf_wchar *this, unsigned int flags)
4805 TRACE("(%p %x)\n", this, flags);
4807 if(flags & 2) {
4808 /* we have an array, with the number of elements stored before the first object */
4809 INT_PTR i, *ptr = (INT_PTR *) this - 1;
4811 for (i = *ptr - 1; i >= 0; i--)
4812 basic_stringbuf_wchar_dtor(this+i);
4814 MSVCRT_operator_delete(ptr);
4815 }else {
4816 basic_stringbuf_wchar_dtor(this);
4818 if(flags & 1)
4819 MSVCRT_operator_delete(this);
4822 return this;
4825 /* ?overflow@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAEGG@Z */
4826 /* ?overflow@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAAGG@Z */
4827 /* ?overflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAEGG@Z */
4828 /* ?overflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAAGG@Z */
4829 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_overflow, 8)
4830 unsigned short __thiscall basic_stringbuf_wchar_overflow(basic_stringbuf_wchar *this, unsigned short meta)
4832 MSVCP_size_t oldsize, size;
4833 wchar_t *ptr, *buf;
4835 TRACE("(%p %x)\n", this, meta);
4837 if(meta == WEOF)
4838 return !WEOF;
4839 if(this->state & STRINGBUF_no_write)
4840 return WEOF;
4842 ptr = basic_streambuf_wchar_pptr(&this->base);
4843 if((this->state&STRINGBUF_append) && ptr<this->seekhigh)
4844 basic_streambuf_wchar_setp_next(&this->base, basic_streambuf_wchar_pbase(&this->base),
4845 this->seekhigh, basic_streambuf_wchar_epptr(&this->base));
4847 if(ptr && ptr<basic_streambuf_wchar_epptr(&this->base))
4848 return (*basic_streambuf_wchar__Pninc(&this->base) = meta);
4850 oldsize = (ptr ? basic_streambuf_wchar_epptr(&this->base)-basic_streambuf_wchar_eback(&this->base): 0);
4851 size = oldsize|0xf;
4852 size += size/2;
4853 buf = MSVCRT_operator_new(size*sizeof(wchar_t));
4854 if(!buf) {
4855 ERR("Out of memory\n");
4856 throw_exception(EXCEPTION_BAD_ALLOC, NULL);
4859 if(!oldsize) {
4860 this->seekhigh = buf;
4861 basic_streambuf_wchar_setp(&this->base, buf, buf+size);
4862 if(this->state & STRINGBUF_no_read)
4863 basic_streambuf_wchar_setg(&this->base, buf, NULL, buf);
4864 else
4865 basic_streambuf_wchar_setg(&this->base, buf, buf, buf+1);
4867 this->state |= STRINGBUF_allocated;
4868 }else {
4869 ptr = basic_streambuf_wchar_eback(&this->base);
4870 memcpy(buf, ptr, oldsize*sizeof(wchar_t));
4872 this->seekhigh = buf+(this->seekhigh-ptr);
4873 basic_streambuf_wchar_setp_next(&this->base, buf,
4874 buf+(basic_streambuf_wchar_pptr(&this->base)-ptr), buf+size);
4875 if(this->state & STRINGBUF_no_read)
4876 basic_streambuf_wchar_setg(&this->base, buf, NULL, buf);
4877 else
4878 basic_streambuf_wchar_setg(&this->base, buf,
4879 buf+(basic_streambuf_wchar_gptr(&this->base)-ptr),
4880 basic_streambuf_wchar_pptr(&this->base)+1);
4882 MSVCRT_operator_delete(ptr);
4885 return (*basic_streambuf_wchar__Pninc(&this->base) = meta);
4888 /* ?pbackfail@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAEGG@Z */
4889 /* ?pbackfail@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAAGG@Z */
4890 /* ?pbackfail@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAEGG@Z */
4891 /* ?pbackfail@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAAGG@Z */
4892 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_pbackfail, 8)
4893 unsigned short __thiscall basic_stringbuf_wchar_pbackfail(basic_stringbuf_wchar *this, unsigned short c)
4895 wchar_t *cur;
4897 TRACE("(%p %x)\n", this, c);
4899 cur = basic_streambuf_wchar_gptr(&this->base);
4900 if(!cur || cur==basic_streambuf_wchar_eback(&this->base)
4901 || (c!=WEOF && c!=cur[-1] && this->state&STRINGBUF_no_write))
4902 return WEOF;
4904 if(c != WEOF)
4905 cur[-1] = c;
4906 basic_streambuf_wchar_gbump(&this->base, -1);
4907 return c==WEOF ? !WEOF : c;
4910 /* ?underflow@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAEGXZ */
4911 /* ?underflow@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAAGXZ */
4912 /* ?underflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAEGXZ */
4913 /* ?underflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAAGXZ */
4914 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_underflow, 4)
4915 unsigned short __thiscall basic_stringbuf_wchar_underflow(basic_stringbuf_wchar *this)
4917 wchar_t *ptr, *cur;
4919 TRACE("(%p)\n", this);
4921 cur = basic_streambuf_wchar_gptr(&this->base);
4922 if(!cur || this->state&STRINGBUF_no_read)
4923 return WEOF;
4925 ptr = basic_streambuf_wchar_pptr(&this->base);
4926 if(this->seekhigh < ptr)
4927 this->seekhigh = ptr;
4929 ptr = basic_streambuf_wchar_egptr(&this->base);
4930 if(this->seekhigh > ptr)
4931 basic_streambuf_wchar_setg(&this->base, basic_streambuf_wchar_eback(&this->base), cur, this->seekhigh);
4933 if(cur < this->seekhigh)
4934 return *cur;
4935 return WEOF;
4938 /* ?seekoff@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
4939 /* ?seekoff@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAA?AV?$fpos@H@2@_JW4seekdir@ios_base@2@H@Z */
4940 /* ?seekoff@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAE?AV?$fpos@H@2@JHH@Z */
4941 /* ?seekoff@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
4942 /* ?seekoff@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAE?AV?$fpos@H@2@JHH@Z */
4943 /* ?seekoff@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
4944 #if STREAMOFF_BITS == 64
4945 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_seekoff, 24)
4946 #else
4947 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_seekoff, 20)
4948 #endif
4949 fpos_mbstatet* __thiscall basic_stringbuf_wchar_seekoff(basic_stringbuf_wchar *this,
4950 fpos_mbstatet *ret, streamoff off, int way, int mode)
4952 wchar_t *beg, *cur_r, *cur_w;
4954 TRACE("(%p %p %s %d %d)\n", this, ret, wine_dbgstr_longlong(off), way, mode);
4956 cur_w = basic_streambuf_wchar_pptr(&this->base);
4957 if(cur_w > this->seekhigh)
4958 this->seekhigh = cur_w;
4960 ret->off = 0;
4961 ret->pos = 0;
4962 memset(&ret->state, 0, sizeof(ret->state));
4964 beg = basic_streambuf_wchar_eback(&this->base);
4965 cur_r = basic_streambuf_wchar_gptr(&this->base);
4966 if((mode & OPENMODE_in) && cur_r) {
4967 if(way==SEEKDIR_cur && !(mode & OPENMODE_out))
4968 off += cur_r-beg;
4969 else if(way == SEEKDIR_end)
4970 off += this->seekhigh-beg;
4971 else if(way != SEEKDIR_beg)
4972 off = -1;
4974 if(off<0 || off>this->seekhigh-beg) {
4975 off = -1;
4976 }else {
4977 basic_streambuf_wchar_gbump(&this->base, beg-cur_r+off);
4978 if((mode & OPENMODE_out) && cur_w) {
4979 basic_streambuf_wchar_setp_next(&this->base, beg,
4980 basic_streambuf_wchar_gptr(&this->base),
4981 basic_streambuf_wchar_epptr(&this->base));
4984 }else if((mode & OPENMODE_out) && cur_w) {
4985 if(way == SEEKDIR_cur)
4986 off += cur_w-beg;
4987 else if(way == SEEKDIR_end)
4988 off += this->seekhigh-beg;
4989 else if(way != SEEKDIR_beg)
4990 off = -1;
4992 if(off<0 || off>this->seekhigh-beg)
4993 off = -1;
4994 else
4995 basic_streambuf_wchar_pbump(&this->base, beg-cur_w+off);
4996 }else {
4997 off = -1;
5000 ret->off = off;
5001 return ret;
5004 /* ?seekpos@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
5005 /* ?seekpos@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
5006 /* ?seekpos@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
5007 /* ?seekpos@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
5008 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_seekpos, 36)
5009 fpos_mbstatet* __thiscall basic_stringbuf_wchar_seekpos(basic_stringbuf_wchar *this,
5010 fpos_mbstatet *ret, fpos_mbstatet pos, int mode)
5012 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_mbstatet(&pos), mode);
5014 if(pos.off==-1 && pos.pos==0 && MBSTATET_TO_INT(&pos.state)==0) {
5015 *ret = pos;
5016 return ret;
5019 return basic_stringbuf_wchar_seekoff(this, ret, pos.pos+pos.off, SEEKDIR_beg, mode);
5022 /* ?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 */
5023 /* ?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 */
5024 /* ?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 */
5025 /* ?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 */
5026 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_str_set, 8)
5027 void __thiscall basic_stringbuf_wchar_str_set(basic_stringbuf_wchar *this, const basic_string_wchar *str)
5029 TRACE("(%p %p)\n", this, str);
5031 basic_stringbuf_wchar__Tidy(this);
5032 basic_stringbuf_wchar__Init(this, MSVCP_basic_string_wchar_c_str(str), str->size, this->state);
5035 /* ?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 */
5036 /* ?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 */
5037 /* ?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 */
5038 /* ?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 */
5039 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_str_get, 8)
5040 basic_string_wchar* __thiscall basic_stringbuf_wchar_str_get(const basic_stringbuf_wchar *this, basic_string_wchar *ret)
5042 wchar_t *ptr;
5044 TRACE("(%p)\n", this);
5046 if(!(this->state & STRINGBUF_no_write) && basic_streambuf_wchar_pptr(&this->base)) {
5047 wchar_t *pptr;
5049 ptr = basic_streambuf_wchar_pbase(&this->base);
5050 pptr = basic_streambuf_wchar_pptr(&this->base);
5052 return MSVCP_basic_string_wchar_ctor_cstr_len(ret, ptr, (this->seekhigh < pptr ? pptr : this->seekhigh) - ptr);
5055 if(!(this->state & STRINGBUF_no_read) && basic_streambuf_wchar_gptr(&this->base)) {
5056 ptr = basic_streambuf_wchar_eback(&this->base);
5057 return MSVCP_basic_string_wchar_ctor_cstr_len(ret, ptr, basic_streambuf_wchar_egptr(&this->base) - ptr);
5060 return MSVCP_basic_string_wchar_ctor(ret);
5063 /* ??0ios_base@std@@IAE@XZ */
5064 /* ??0ios_base@std@@IEAA@XZ */
5065 DEFINE_THISCALL_WRAPPER(ios_base_ctor, 4)
5066 ios_base* __thiscall ios_base_ctor(ios_base *this)
5068 TRACE("(%p)\n", this);
5069 this->vtable = &MSVCP_ios_base_vtable;
5070 return this;
5073 /* ??0ios_base@std@@QAE@ABV01@@Z */
5074 /* ??0ios_base@std@@QEAA@AEBV01@@Z */
5075 DEFINE_THISCALL_WRAPPER(ios_base_copy_ctor, 8)
5076 ios_base* __thiscall ios_base_copy_ctor(ios_base *this, const ios_base *copy)
5078 TRACE("(%p %p)\n", this, copy);
5079 *this = *copy;
5080 this->vtable = &MSVCP_ios_base_vtable;
5081 return this;
5084 /* ?_Callfns@ios_base@std@@AAEXW4event@12@@Z */
5085 /* ?_Callfns@ios_base@std@@AEAAXW4event@12@@Z */
5086 DEFINE_THISCALL_WRAPPER(ios_base_Callfns, 8)
5087 void __thiscall ios_base_Callfns(ios_base *this, IOS_BASE_event event)
5089 IOS_BASE_fnarray *cur;
5091 TRACE("(%p %x)\n", this, event);
5093 for(cur=this->calls; cur; cur=cur->next)
5094 cur->event_handler(event, this, cur->index);
5097 /* ?_Tidy@ios_base@std@@AAAXXZ */
5098 /* ?_Tidy@ios_base@std@@AEAAXXZ */
5099 void __cdecl ios_base_Tidy(ios_base *this)
5101 IOS_BASE_iosarray *arr_cur, *arr_next;
5102 IOS_BASE_fnarray *event_cur, *event_next;
5104 TRACE("(%p)\n", this);
5106 ios_base_Callfns(this, EVENT_erase_event);
5108 for(arr_cur=this->arr; arr_cur; arr_cur=arr_next) {
5109 arr_next = arr_cur->next;
5110 MSVCRT_operator_delete(arr_cur);
5112 this->arr = NULL;
5114 for(event_cur=this->calls; event_cur; event_cur=event_next) {
5115 event_next = event_cur->next;
5116 MSVCRT_operator_delete(event_cur);
5118 this->calls = NULL;
5121 /* ?_Ios_base_dtor@ios_base@std@@CAXPAV12@@Z */
5122 /* ?_Ios_base_dtor@ios_base@std@@CAXPEAV12@@Z */
5123 void __cdecl ios_base_Ios_base_dtor(ios_base *obj)
5125 TRACE("(%p)\n", obj);
5126 locale_dtor(IOS_LOCALE(obj));
5127 #if _MSVCP_VER >= 70
5128 MSVCRT_operator_delete(obj->loc);
5129 #endif
5130 ios_base_Tidy(obj);
5133 /* ??1ios_base@std@@UAE@XZ */
5134 /* ??1ios_base@std@@UEAA@XZ */
5135 DEFINE_THISCALL_WRAPPER(ios_base_dtor, 4)
5136 void __thiscall ios_base_dtor(ios_base *this)
5138 ios_base_Ios_base_dtor(this);
5141 DEFINE_THISCALL_WRAPPER(ios_base_vector_dtor, 8)
5142 ios_base* __thiscall ios_base_vector_dtor(ios_base *this, unsigned int flags)
5144 TRACE("(%p %x)\n", this, flags);
5145 if(flags & 2) {
5146 /* we have an array, with the number of elements stored before the first object */
5147 INT_PTR i, *ptr = (INT_PTR *)this-1;
5149 for(i=*ptr-1; i>=0; i--)
5150 ios_base_dtor(this+i);
5151 MSVCRT_operator_delete(ptr);
5152 } else {
5153 ios_base_dtor(this);
5154 if(flags & 1)
5155 MSVCRT_operator_delete(this);
5158 return this;
5161 DEFINE_THISCALL_WRAPPER(iosb_vector_dtor, 8)
5162 void* __thiscall iosb_vector_dtor(void *this, unsigned int flags)
5164 TRACE("(%p %x)\n", this, flags);
5165 if(flags & 2) {
5166 INT_PTR *ptr = (INT_PTR *)this-1;
5167 MSVCRT_operator_delete(ptr);
5168 } else {
5169 if(flags & 1)
5170 MSVCRT_operator_delete(this);
5173 return this;
5176 /* ?_Findarr@ios_base@std@@AAEAAU_Iosarray@12@H@Z */
5177 /* ?_Findarr@ios_base@std@@AEAAAEAU_Iosarray@12@H@Z */
5178 DEFINE_THISCALL_WRAPPER(ios_base_Findarr, 8)
5179 IOS_BASE_iosarray* __thiscall ios_base_Findarr(ios_base *this, int index)
5181 IOS_BASE_iosarray *p;
5183 TRACE("(%p %d)\n", this, index);
5185 for(p=this->arr; p; p=p->next) {
5186 if(p->index == index)
5187 return p;
5190 for(p=this->arr; p; p=p->next) {
5191 if(!p->long_val && !p->ptr_val) {
5192 p->index = index;
5193 return p;
5197 p = MSVCRT_operator_new(sizeof(IOS_BASE_iosarray));
5198 p->next = this->arr;
5199 p->index = index;
5200 p->long_val = 0;
5201 p->ptr_val = NULL;
5202 this->arr = p;
5203 return p;
5206 /* ?iword@ios_base@std@@QAEAAJH@Z */
5207 /* ?iword@ios_base@std@@QEAAAEAJH@Z */
5208 DEFINE_THISCALL_WRAPPER(ios_base_iword, 8)
5209 LONG* __thiscall ios_base_iword(ios_base *this, int index)
5211 TRACE("(%p %d)\n", this, index);
5212 return &ios_base_Findarr(this, index)->long_val;
5215 /* ?pword@ios_base@std@@QAEAAPAXH@Z */
5216 /* ?pword@ios_base@std@@QEAAAEAPEAXH@Z */
5217 DEFINE_THISCALL_WRAPPER(ios_base_pword, 8)
5218 void** __thiscall ios_base_pword(ios_base *this, int index)
5220 TRACE("(%p %d)\n", this, index);
5221 return &ios_base_Findarr(this, index)->ptr_val;
5224 /* ?register_callback@ios_base@std@@QAEXP6AXW4event@12@AAV12@H@ZH@Z */
5225 /* ?register_callback@ios_base@std@@QEAAXP6AXW4event@12@AEAV12@H@ZH@Z */
5226 DEFINE_THISCALL_WRAPPER(ios_base_register_callback, 12)
5227 void __thiscall ios_base_register_callback(ios_base *this, IOS_BASE_event_callback callback, int index)
5229 IOS_BASE_fnarray *event;
5231 TRACE("(%p %p %d)\n", this, callback, index);
5233 event = MSVCRT_operator_new(sizeof(IOS_BASE_fnarray));
5234 event->next = this->calls;
5235 event->index = index;
5236 event->event_handler = callback;
5237 this->calls = event;
5240 /* ?clear@ios_base@std@@QAEXH_N@Z */
5241 /* ?clear@ios_base@std@@QEAAXH_N@Z */
5242 DEFINE_THISCALL_WRAPPER(ios_base_clear_reraise, 12)
5243 void __thiscall ios_base_clear_reraise(ios_base *this, IOSB_iostate state, MSVCP_bool reraise)
5245 TRACE("(%p %x %x)\n", this, state, reraise);
5247 this->state = state & IOSTATE_mask;
5248 if(!(this->state & this->except))
5249 return;
5251 if(reraise)
5252 throw_exception(EXCEPTION_RERAISE, NULL);
5253 else if(this->state & this->except & IOSTATE_eofbit)
5254 throw_exception(EXCEPTION_FAILURE, "eofbit is set");
5255 else if(this->state & this->except & IOSTATE_failbit)
5256 throw_exception(EXCEPTION_FAILURE, "failbit is set");
5257 else if(this->state & this->except & IOSTATE_badbit)
5258 throw_exception(EXCEPTION_FAILURE, "badbit is set");
5259 else if(this->state & this->except & IOSTATE__Hardfail)
5260 throw_exception(EXCEPTION_FAILURE, "_Hardfail is set");
5263 /* ?clear@ios_base@std@@QAEXH@Z */
5264 /* ?clear@ios_base@std@@QEAAXH@Z */
5265 DEFINE_THISCALL_WRAPPER(ios_base_clear, 8)
5266 void __thiscall ios_base_clear(ios_base *this, IOSB_iostate state)
5268 ios_base_clear_reraise(this, state, FALSE);
5271 /* ?clear@ios_base@std@@QAEXI@Z */
5272 /* ?clear@ios_base@std@@QEAAXI@Z */
5273 DEFINE_THISCALL_WRAPPER(ios_base_clear_unsigned, 8)
5274 void __thiscall ios_base_clear_unsigned(ios_base *this, unsigned int state)
5276 ios_base_clear_reraise(this, (IOSB_iostate)state, FALSE);
5279 /* ?exceptions@ios_base@std@@QAEXH@Z */
5280 /* ?exceptions@ios_base@std@@QEAAXH@Z */
5281 DEFINE_THISCALL_WRAPPER(ios_base_exceptions_set, 8)
5282 void __thiscall ios_base_exceptions_set(ios_base *this, IOSB_iostate state)
5284 TRACE("(%p %x)\n", this, state);
5285 this->except = state & IOSTATE_mask;
5286 ios_base_clear(this, this->state);
5289 /* ?exceptions@ios_base@std@@QAEXI@Z */
5290 /* ?exceptions@ios_base@std@@QEAAXI@Z */
5291 DEFINE_THISCALL_WRAPPER(ios_base_exceptions_set_unsigned, 8)
5292 void __thiscall ios_base_exceptions_set_unsigned(ios_base *this, unsigned int state)
5294 TRACE("(%p %x)\n", this, state);
5295 ios_base_exceptions_set(this, state);
5298 /* ?exceptions@ios_base@std@@QBEHXZ */
5299 /* ?exceptions@ios_base@std@@QEBAHXZ */
5300 DEFINE_THISCALL_WRAPPER(ios_base_exceptions_get, 4)
5301 IOSB_iostate __thiscall ios_base_exceptions_get(ios_base *this)
5303 TRACE("(%p)\n", this);
5304 return this->except;
5307 /* ?copyfmt@ios_base@std@@QAEAAV12@ABV12@@Z */
5308 /* ?copyfmt@ios_base@std@@QEAAAEAV12@AEBV12@@Z */
5309 DEFINE_THISCALL_WRAPPER(ios_base_copyfmt, 8)
5310 ios_base* __thiscall ios_base_copyfmt(ios_base *this, const ios_base *rhs)
5312 TRACE("(%p %p)\n", this, rhs);
5314 if(this != rhs) {
5315 IOS_BASE_iosarray *arr_cur;
5316 IOS_BASE_fnarray *event_cur;
5318 ios_base_Tidy(this);
5320 for(arr_cur=rhs->arr; arr_cur; arr_cur=arr_cur->next) {
5321 if(arr_cur->long_val)
5322 *ios_base_iword(this, arr_cur->index) = arr_cur->long_val;
5323 if(arr_cur->ptr_val)
5324 *ios_base_pword(this, arr_cur->index) = arr_cur->ptr_val;
5326 this->stdstr = rhs->stdstr;
5327 this->fmtfl = rhs->fmtfl;
5328 this->prec = rhs->prec;
5329 this->wide = rhs->wide;
5330 locale_operator_assign(IOS_LOCALE(this), IOS_LOCALE(rhs));
5332 for(event_cur=rhs->calls; event_cur; event_cur=event_cur->next)
5333 ios_base_register_callback(this, event_cur->event_handler, event_cur->index);
5335 ios_base_Callfns(this, EVENT_copyfmt_event);
5336 ios_base_exceptions_set(this, rhs->except);
5339 return this;
5342 /* ??4ios_base@std@@QAEAAV01@ABV01@@Z */
5343 /* ??4ios_base@std@@QEAAAEAV01@AEBV01@@Z */
5344 DEFINE_THISCALL_WRAPPER(ios_base_assign, 8)
5345 ios_base* __thiscall ios_base_assign(ios_base *this, const ios_base *right)
5347 TRACE("(%p %p)\n", this, right);
5349 if(this != right) {
5350 this->state = right->state;
5351 ios_base_copyfmt(this, right);
5354 return this;
5357 /* ?fail@ios_base@std@@QBE_NXZ */
5358 /* ?fail@ios_base@std@@QEBA_NXZ */
5359 DEFINE_THISCALL_WRAPPER(ios_base_fail, 4)
5360 MSVCP_bool __thiscall ios_base_fail(const ios_base *this)
5362 TRACE("(%p)\n", this);
5363 return (this->state & (IOSTATE_failbit|IOSTATE_badbit)) != 0;
5366 /* ??7ios_base@std@@QBE_NXZ */
5367 /* ??7ios_base@std@@QEBA_NXZ */
5368 DEFINE_THISCALL_WRAPPER(ios_base_op_succ, 4)
5369 MSVCP_bool __thiscall ios_base_op_succ(const ios_base *this)
5371 TRACE("(%p)\n", this);
5372 return ios_base_fail(this);
5375 /* ??Bios_base@std@@QBEPAXXZ */
5376 /* ??Bios_base@std@@QEBAPEAXXZ */
5377 DEFINE_THISCALL_WRAPPER(ios_base_op_fail, 4)
5378 void* __thiscall ios_base_op_fail(const ios_base *this)
5380 TRACE("(%p)\n", this);
5381 return ios_base_fail(this) ? NULL : (void*)this;
5384 /* ??Bios_base@std@@QBA_NXZ */
5385 /* ??Bios_base@std@@QBE_NXZ */
5386 /* ??Bios_base@std@@QEBA_NXZ */
5387 DEFINE_THISCALL_WRAPPER(ios_base_operator_bool, 4)
5388 MSVCP_bool __thiscall ios_base_operator_bool(const ios_base *this)
5390 TRACE("(%p)\n", this);
5391 return (this->state & (IOSTATE_failbit|IOSTATE_badbit)) == 0;
5394 /* ?_Addstd@ios_base@std@@SAXPAV12@@Z */
5395 /* ?_Addstd@ios_base@std@@SAXPEAV12@@Z */
5396 void __cdecl ios_base_Addstd(ios_base *add)
5398 FIXME("(%p) stub\n", add);
5401 /* ?_Index_func@ios_base@std@@CAAAHXZ */
5402 /* ?_Index_func@ios_base@std@@CAAEAHXZ */
5403 int* __cdecl ios_base_Index_func(void)
5405 TRACE("\n");
5406 return &ios_base_Index;
5409 /* ?_Init@ios_base@std@@IAEXXZ */
5410 /* ?_Init@ios_base@std@@IEAAXXZ */
5411 DEFINE_THISCALL_WRAPPER(ios_base__Init, 4)
5412 void __thiscall ios_base__Init(ios_base *this)
5414 TRACE("(%p)\n", this);
5416 this->stdstr = 0;
5417 this->state = this->except = IOSTATE_goodbit;
5418 this->fmtfl = FMTFLAG_skipws | FMTFLAG_dec;
5419 this->prec = 6;
5420 this->wide = 0;
5421 this->arr = NULL;
5422 this->calls = NULL;
5423 #if _MSVCP_VER >= 70
5424 this->loc = MSVCRT_operator_new(sizeof(locale));
5425 #endif
5426 locale_ctor(IOS_LOCALE(this));
5429 /* ?_Sync_func@ios_base@std@@CAAA_NXZ */
5430 /* ?_Sync_func@ios_base@std@@CAAEA_NXZ */
5431 MSVCP_bool* __cdecl ios_base_Sync_func(void)
5433 TRACE("\n");
5434 return &ios_base_Sync;
5437 /* ?bad@ios_base@std@@QBE_NXZ */
5438 /* ?bad@ios_base@std@@QEBA_NXZ */
5439 DEFINE_THISCALL_WRAPPER(ios_base_bad, 4)
5440 MSVCP_bool __thiscall ios_base_bad(const ios_base *this)
5442 TRACE("(%p)\n", this);
5443 return (this->state & IOSTATE_badbit) != 0;
5446 /* ?eof@ios_base@std@@QBE_NXZ */
5447 /* ?eof@ios_base@std@@QEBA_NXZ */
5448 DEFINE_THISCALL_WRAPPER(ios_base_eof, 4)
5449 MSVCP_bool __thiscall ios_base_eof(const ios_base *this)
5451 TRACE("(%p)\n", this);
5452 return (this->state & IOSTATE_eofbit) != 0;
5455 /* ?flags@ios_base@std@@QAEHH@Z */
5456 /* ?flags@ios_base@std@@QEAAHH@Z */
5457 DEFINE_THISCALL_WRAPPER(ios_base_flags_set, 8)
5458 IOSB_fmtflags __thiscall ios_base_flags_set(ios_base *this, IOSB_fmtflags flags)
5460 IOSB_fmtflags ret = this->fmtfl;
5462 TRACE("(%p %x)\n", this, flags);
5464 this->fmtfl = flags & FMTFLAG_mask;
5465 return ret;
5468 /* ?flags@ios_base@std@@QBEHXZ */
5469 /* ?flags@ios_base@std@@QEBAHXZ */
5470 DEFINE_THISCALL_WRAPPER(ios_base_flags_get, 4)
5471 IOSB_fmtflags __thiscall ios_base_flags_get(const ios_base *this)
5473 TRACE("(%p)\n", this);
5474 return this->fmtfl;
5477 /* ?getloc@ios_base@std@@QBE?AVlocale@2@XZ */
5478 /* ?getloc@ios_base@std@@QEBA?AVlocale@2@XZ */
5479 DEFINE_THISCALL_WRAPPER(ios_base_getloc, 8)
5480 locale* __thiscall ios_base_getloc(const ios_base *this, locale *ret)
5482 TRACE("(%p)\n", this);
5483 return locale_copy_ctor(ret, IOS_LOCALE(this));
5486 /* ?good@ios_base@std@@QBE_NXZ */
5487 /* ?good@ios_base@std@@QEBA_NXZ */
5488 DEFINE_THISCALL_WRAPPER(ios_base_good, 4)
5489 MSVCP_bool __thiscall ios_base_good(const ios_base *this)
5491 TRACE("(%p)\n", this);
5492 return this->state == IOSTATE_goodbit;
5495 /* ?imbue@ios_base@std@@QAE?AVlocale@2@ABV32@@Z */
5496 /* ?imbue@ios_base@std@@QEAA?AVlocale@2@AEBV32@@Z */
5497 DEFINE_THISCALL_WRAPPER(ios_base_imbue, 12)
5498 locale* __thiscall ios_base_imbue(ios_base *this, locale *ret, const locale *loc)
5500 TRACE("(%p %p)\n", this, loc);
5501 *ret = *IOS_LOCALE(this);
5502 locale_copy_ctor(IOS_LOCALE(this), loc);
5503 return ret;
5506 /* ?precision@ios_base@std@@QAEHH@Z */
5507 /* ?precision@ios_base@std@@QEAA_J_J@Z */
5508 #if STREAMSIZE_BITS == 64
5509 DEFINE_THISCALL_WRAPPER(ios_base_precision_set, 12)
5510 #else
5511 DEFINE_THISCALL_WRAPPER(ios_base_precision_set, 8)
5512 #endif
5513 streamsize __thiscall ios_base_precision_set(ios_base *this, streamsize precision)
5515 streamsize ret = this->prec;
5517 TRACE("(%p %s)\n", this, wine_dbgstr_longlong(precision));
5519 this->prec = precision;
5520 return ret;
5523 /* ?precision@ios_base@std@@QBEHXZ */
5524 /* ?precision@ios_base@std@@QEBA_JXZ */
5525 DEFINE_THISCALL_WRAPPER(ios_base_precision_get, 4)
5526 streamsize __thiscall ios_base_precision_get(const ios_base *this)
5528 TRACE("(%p)\n", this);
5529 return this->prec;
5532 /* ?rdstate@ios_base@std@@QBEHXZ */
5533 /* ?rdstate@ios_base@std@@QEBAHXZ */
5534 DEFINE_THISCALL_WRAPPER(ios_base_rdstate, 4)
5535 IOSB_iostate __thiscall ios_base_rdstate(const ios_base *this)
5537 TRACE("(%p)\n", this);
5538 return this->state;
5541 /* ?setf@ios_base@std@@QAEHHH@Z */
5542 /* ?setf@ios_base@std@@QEAAHHH@Z */
5543 DEFINE_THISCALL_WRAPPER(ios_base_setf_mask, 12)
5544 IOSB_fmtflags __thiscall ios_base_setf_mask(ios_base *this, IOSB_fmtflags flags, IOSB_fmtflags mask)
5546 IOSB_fmtflags ret = this->fmtfl;
5548 TRACE("(%p %x %x)\n", this, flags, mask);
5550 this->fmtfl = (this->fmtfl & (~mask)) | (flags & mask & FMTFLAG_mask);
5551 return ret;
5554 /* ?setf@ios_base@std@@QAEHH@Z */
5555 /* ?setf@ios_base@std@@QEAAHH@Z */
5556 DEFINE_THISCALL_WRAPPER(ios_base_setf, 8)
5557 IOSB_fmtflags __thiscall ios_base_setf(ios_base *this, IOSB_fmtflags flags)
5559 IOSB_fmtflags ret = this->fmtfl;
5561 TRACE("(%p %x)\n", this, flags);
5563 this->fmtfl |= flags & FMTFLAG_mask;
5564 return ret;
5567 /* ?setstate@ios_base@std@@QAEXH_N@Z */
5568 /* ?setstate@ios_base@std@@QEAAXH_N@Z */
5569 DEFINE_THISCALL_WRAPPER(ios_base_setstate_reraise, 12)
5570 void __thiscall ios_base_setstate_reraise(ios_base *this, IOSB_iostate state, MSVCP_bool reraise)
5572 TRACE("(%p %x %x)\n", this, state, reraise);
5574 if(state != IOSTATE_goodbit)
5575 ios_base_clear_reraise(this, this->state | state, reraise);
5578 /* ?setstate@ios_base@std@@QAEXH@Z */
5579 /* ?setstate@ios_base@std@@QEAAXH@Z */
5580 DEFINE_THISCALL_WRAPPER(ios_base_setstate, 8)
5581 void __thiscall ios_base_setstate(ios_base *this, IOSB_iostate state)
5583 ios_base_setstate_reraise(this, state, FALSE);
5586 /* ?setstate@ios_base@std@@QAEXI@Z */
5587 /* ?setstate@ios_base@std@@QEAAXI@Z */
5588 DEFINE_THISCALL_WRAPPER(ios_base_setstate_unsigned, 8)
5589 void __thiscall ios_base_setstate_unsigned(ios_base *this, unsigned int state)
5591 ios_base_setstate_reraise(this, (IOSB_iostate)state, FALSE);
5594 /* ?sync_with_stdio@ios_base@std@@SA_N_N@Z */
5595 MSVCP_bool __cdecl ios_base_sync_with_stdio(MSVCP_bool sync)
5597 _Lockit lock;
5598 MSVCP_bool ret;
5600 TRACE("(%x)\n", sync);
5602 _Lockit_ctor_locktype(&lock, _LOCK_STREAM);
5603 ret = ios_base_Sync;
5604 ios_base_Sync = sync;
5605 _Lockit_dtor(&lock);
5606 return ret;
5609 /* ?unsetf@ios_base@std@@QAEXH@Z */
5610 /* ?unsetf@ios_base@std@@QEAAXH@Z */
5611 DEFINE_THISCALL_WRAPPER(ios_base_unsetf, 8)
5612 void __thiscall ios_base_unsetf(ios_base *this, IOSB_fmtflags flags)
5614 TRACE("(%p %x)\n", this, flags);
5615 this->fmtfl &= ~flags;
5618 /* ?width@ios_base@std@@QAEHH@Z */
5619 /* ?width@ios_base@std@@QEAA_J_J@Z */
5620 #if STREAMSIZE_BITS == 64
5621 DEFINE_THISCALL_WRAPPER(ios_base_width_set, 12)
5622 #else
5623 DEFINE_THISCALL_WRAPPER(ios_base_width_set, 8)
5624 #endif
5625 streamsize __thiscall ios_base_width_set(ios_base *this, streamsize width)
5627 streamsize ret = this->wide;
5629 TRACE("(%p %s)\n", this, wine_dbgstr_longlong(width));
5631 this->wide = width;
5632 return ret;
5635 /* ?width@ios_base@std@@QBEHXZ */
5636 /* ?width@ios_base@std@@QEBA_JXZ */
5637 DEFINE_THISCALL_WRAPPER(ios_base_width_get, 4)
5638 streamsize __thiscall ios_base_width_get(ios_base *this)
5640 TRACE("(%p)\n", this);
5641 return this->wide;
5644 /* ?xalloc@ios_base@std@@SAHXZ */
5645 int __cdecl ios_base_xalloc(void)
5647 _Lockit lock;
5648 int ret;
5650 TRACE("\n");
5652 _Lockit_ctor_locktype(&lock, _LOCK_STREAM);
5653 ret = ios_base_Index++;
5654 _Lockit_dtor(&lock);
5655 return ret;
5658 /* ?swap@ios_base@std@@QAEXAAV12@@Z */
5659 /* ?swap@ios_base@std@@QEAAXAEAV12@@Z */
5660 DEFINE_THISCALL_WRAPPER(ios_base_swap, 8)
5661 void __thiscall ios_base_swap(ios_base *this, ios_base *r)
5663 ios_base tmp;
5665 TRACE("(%p %p)\n", this, r);
5667 if(this == r)
5668 return;
5670 tmp = *this;
5671 *this = *r;
5672 this->vtable = tmp.vtable;
5673 tmp.vtable = r->vtable;
5674 *r = tmp;
5677 DEFINE_THISCALL_WRAPPER(basic_ios__Add_vtordisp1, 4)
5678 void __thiscall basic_ios__Add_vtordisp1(void *this)
5680 WARN("should not be called (%p)\n", this);
5683 DEFINE_THISCALL_WRAPPER(basic_ios__Add_vtordisp2, 4)
5684 void __thiscall basic_ios__Add_vtordisp2(void *this)
5686 WARN("should not be called (%p)\n", this);
5689 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@IAE@XZ */
5690 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@IEAA@XZ */
5691 DEFINE_THISCALL_WRAPPER(basic_ios_char_ctor, 4)
5692 basic_ios_char* __thiscall basic_ios_char_ctor(basic_ios_char *this)
5694 TRACE("(%p)\n", this);
5696 ios_base_ctor(&this->base);
5697 this->base.vtable = &MSVCP_basic_ios_char_vtable;
5698 return this;
5701 /* ?init@?$basic_ios@DU?$char_traits@D@std@@@std@@IAEXPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@_N@Z */
5702 /* ?init@?$basic_ios@DU?$char_traits@D@std@@@std@@IEAAXPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@_N@Z */
5703 DEFINE_THISCALL_WRAPPER(basic_ios_char_init, 12)
5704 void __thiscall basic_ios_char_init(basic_ios_char *this, basic_streambuf_char *streambuf, MSVCP_bool isstd)
5706 TRACE("(%p %p %x)\n", this, streambuf, isstd);
5707 ios_base__Init(&this->base);
5708 this->strbuf = streambuf;
5709 this->stream = NULL;
5710 this->fillch = ' ';
5712 if(!streambuf)
5713 ios_base_setstate(&this->base, IOSTATE_badbit);
5715 if(isstd)
5716 FIXME("standard streams not handled yet\n");
5719 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
5720 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
5721 DEFINE_THISCALL_WRAPPER(basic_ios_char_ctor_streambuf, 8)
5722 basic_ios_char* __thiscall basic_ios_char_ctor_streambuf(basic_ios_char *this, basic_streambuf_char *strbuf)
5724 TRACE("(%p %p)\n", this, strbuf);
5726 basic_ios_char_ctor(this);
5727 basic_ios_char_init(this, strbuf, FALSE);
5728 return this;
5731 /* ??1?$basic_ios@DU?$char_traits@D@std@@@std@@UAE@XZ */
5732 /* ??1?$basic_ios@DU?$char_traits@D@std@@@std@@UEAA@XZ */
5733 DEFINE_THISCALL_WRAPPER(basic_ios_char_dtor, 4)
5734 void __thiscall basic_ios_char_dtor(basic_ios_char *this)
5736 TRACE("(%p)\n", this);
5737 ios_base_dtor(&this->base);
5740 DEFINE_THISCALL_WRAPPER(basic_ios_char_vector_dtor, 8)
5741 basic_ios_char* __thiscall basic_ios_char_vector_dtor(basic_ios_char *this, unsigned int flags)
5743 TRACE("(%p %x)\n", this, flags);
5744 if(flags & 2) {
5745 /* we have an array, with the number of elements stored before the first object */
5746 INT_PTR i, *ptr = (INT_PTR *)this-1;
5748 for(i=*ptr-1; i>=0; i--)
5749 basic_ios_char_dtor(this+i);
5750 MSVCRT_operator_delete(ptr);
5751 } else {
5752 basic_ios_char_dtor(this);
5753 if(flags & 1)
5754 MSVCRT_operator_delete(this);
5757 return this;
5760 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z */
5761 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z */
5762 DEFINE_THISCALL_WRAPPER(basic_ios_char_clear_reraise, 12)
5763 void __thiscall basic_ios_char_clear_reraise(basic_ios_char *this, IOSB_iostate state, MSVCP_bool reraise)
5765 TRACE("(%p %x %x)\n", this, state, reraise);
5766 ios_base_clear_reraise(&this->base, state | (this->strbuf ? IOSTATE_goodbit : IOSTATE_badbit), reraise);
5769 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXI@Z */
5770 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXI@Z */
5771 DEFINE_THISCALL_WRAPPER(basic_ios_char_clear, 8)
5772 void __thiscall basic_ios_char_clear(basic_ios_char *this, unsigned int state)
5774 basic_ios_char_clear_reraise(this, (IOSB_iostate)state, FALSE);
5777 /* ?copyfmt@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEAAV12@ABV12@@Z */
5778 /* ?copyfmt@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEBV12@@Z */
5779 DEFINE_THISCALL_WRAPPER(basic_ios_char_copyfmt, 8)
5780 basic_ios_char* __thiscall basic_ios_char_copyfmt(basic_ios_char *this, basic_ios_char *copy)
5782 TRACE("(%p %p)\n", this, copy);
5783 if(this == copy)
5784 return this;
5786 this->stream = copy->stream;
5787 this->fillch = copy->fillch;
5788 ios_base_copyfmt(&this->base, &copy->base);
5789 return this;
5792 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEDD@Z */
5793 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAADD@Z */
5794 DEFINE_THISCALL_WRAPPER(basic_ios_char_fill_set, 8)
5795 char __thiscall basic_ios_char_fill_set(basic_ios_char *this, char fill)
5797 char ret = this->fillch;
5799 TRACE("(%p %c)\n", this, fill);
5801 this->fillch = fill;
5802 return ret;
5805 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDXZ */
5806 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADXZ */
5807 DEFINE_THISCALL_WRAPPER(basic_ios_char_fill_get, 4)
5808 char __thiscall basic_ios_char_fill_get(basic_ios_char *this)
5810 TRACE("(%p)\n", this);
5811 return this->fillch;
5814 /* ?imbue@?$basic_ios@DU?$char_traits@D@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
5815 /* ?imbue@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
5816 DEFINE_THISCALL_WRAPPER(basic_ios_char_imbue, 12)
5817 locale *__thiscall basic_ios_char_imbue(basic_ios_char *this, locale *ret, const locale *loc)
5819 TRACE("(%p %p %p)\n", this, ret, loc);
5821 if(this->strbuf) {
5822 basic_streambuf_char_pubimbue(this->strbuf, ret, loc);
5823 locale_dtor(ret);
5826 return ios_base_imbue(&this->base, ret, loc);
5829 /* ?narrow@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDDD@Z */
5830 /* ?narrow@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADDD@Z */
5831 DEFINE_THISCALL_WRAPPER(basic_ios_char_narrow, 12)
5832 char __thiscall basic_ios_char_narrow(basic_ios_char *this, char ch, char def)
5834 TRACE("(%p %c %c)\n", this, ch, def);
5835 return ctype_char_narrow_ch(ctype_char_use_facet(IOS_LOCALE(this->strbuf)), ch, def);
5838 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PAV32@@Z */
5839 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PEAV32@@Z */
5840 DEFINE_THISCALL_WRAPPER(basic_ios_char_rdbuf_set, 8)
5841 basic_streambuf_char* __thiscall basic_ios_char_rdbuf_set(basic_ios_char *this, basic_streambuf_char *streambuf)
5843 basic_streambuf_char *ret = this->strbuf;
5845 TRACE("(%p %p)\n", this, streambuf);
5847 this->strbuf = streambuf;
5848 basic_ios_char_clear(this, IOSTATE_goodbit);
5849 return ret;
5852 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ */
5853 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ */
5854 DEFINE_THISCALL_WRAPPER(basic_ios_char_rdbuf_get, 4)
5855 basic_streambuf_char* __thiscall basic_ios_char_rdbuf_get(const basic_ios_char *this)
5857 TRACE("(%p)\n", this);
5858 return this->strbuf;
5861 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z */
5862 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z */
5863 DEFINE_THISCALL_WRAPPER(basic_ios_char_setstate_reraise, 12)
5864 void __thiscall basic_ios_char_setstate_reraise(basic_ios_char *this, IOSB_iostate state, MSVCP_bool reraise)
5866 TRACE("(%p %x %x)\n", this, state, reraise);
5868 if(state != IOSTATE_goodbit)
5869 basic_ios_char_clear_reraise(this, this->base.state | state, reraise);
5872 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXI@Z */
5873 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXI@Z */
5874 DEFINE_THISCALL_WRAPPER(basic_ios_char_setstate, 8)
5875 void __thiscall basic_ios_char_setstate(basic_ios_char *this, unsigned int state)
5877 basic_ios_char_setstate_reraise(this, (IOSB_iostate)state, FALSE);
5880 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEPAV?$basic_ostream@DU?$char_traits@D@std@@@2@PAV32@@Z */
5881 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAPEAV?$basic_ostream@DU?$char_traits@D@std@@@2@PEAV32@@Z */
5882 DEFINE_THISCALL_WRAPPER(basic_ios_char_tie_set, 8)
5883 basic_ostream_char* __thiscall basic_ios_char_tie_set(basic_ios_char *this, basic_ostream_char *ostream)
5885 basic_ostream_char *ret = this->stream;
5887 TRACE("(%p %p)\n", this, ostream);
5889 this->stream = ostream;
5890 return ret;
5893 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_ostream@DU?$char_traits@D@std@@@2@XZ */
5894 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_ostream@DU?$char_traits@D@std@@@2@XZ */
5895 DEFINE_THISCALL_WRAPPER(basic_ios_char_tie_get, 4)
5896 basic_ostream_char* __thiscall basic_ios_char_tie_get(const basic_ios_char *this)
5898 TRACE("(%p)\n", this);
5899 return this->stream;
5902 /* ?widen@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDD@Z */
5903 /* ?widen@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADD@Z */
5904 DEFINE_THISCALL_WRAPPER(basic_ios_char_widen, 8)
5905 char __thiscall basic_ios_char_widen(basic_ios_char *this, char ch)
5907 TRACE("(%p %c)\n", this, ch);
5908 return ctype_char_widen_ch(ctype_char_use_facet(IOS_LOCALE(this->strbuf)), ch);
5911 /* ?swap@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXAAV12@@Z */
5912 /* ?swap@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXAEAV12@@Z */
5913 DEFINE_THISCALL_WRAPPER(basic_ios_char_swap, 8)
5914 void __thiscall basic_ios_char_swap(basic_ios_char *this, basic_ios_char *r)
5916 void *swap_ptr;
5918 TRACE("(%p %p)\n", this, r);
5920 if(this == r)
5921 return;
5923 ios_base_swap(&this->base, &r->base);
5924 swap_ptr = this->stream;
5925 this->stream = r->stream;
5926 r->stream = swap_ptr;
5927 this->fillch ^= r->fillch;
5928 r->fillch ^= this->fillch;
5929 this->fillch ^= r->fillch;
5932 /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@IAE@XZ */
5933 /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@IEAA@XZ */
5934 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_ctor, 4)
5935 basic_ios_wchar* __thiscall basic_ios_wchar_ctor(basic_ios_wchar *this)
5937 TRACE("(%p)\n", this);
5939 ios_base_ctor(&this->base);
5940 this->base.vtable = &MSVCP_basic_ios_wchar_vtable;
5941 return this;
5944 /* ??0?$basic_ios@GU?$char_traits@G@std@@@std@@IAE@XZ */
5945 /* ??0?$basic_ios@GU?$char_traits@G@std@@@std@@IEAA@XZ */
5946 DEFINE_THISCALL_WRAPPER(basic_ios_short_ctor, 4)
5947 basic_ios_wchar* __thiscall basic_ios_short_ctor(basic_ios_wchar *this)
5949 basic_ios_wchar_ctor(this);
5950 this->base.vtable = &MSVCP_basic_ios_short_vtable;
5951 return this;
5954 /* ?init@?$basic_ios@_WU?$char_traits@_W@std@@@std@@IAEXPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_N@Z */
5955 /* ?init@?$basic_ios@_WU?$char_traits@_W@std@@@std@@IEAAXPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_N@Z */
5956 /* ?init@?$basic_ios@GU?$char_traits@G@std@@@std@@IAEXPAV?$basic_streambuf@GU?$char_traits@G@std@@@2@_N@Z */
5957 /* ?init@?$basic_ios@GU?$char_traits@G@std@@@std@@IEAAXPEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@_N@Z */
5958 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_init, 12)
5959 void __thiscall basic_ios_wchar_init(basic_ios_wchar *this, basic_streambuf_wchar *streambuf, MSVCP_bool isstd)
5961 TRACE("(%p %p %x)\n", this, streambuf, isstd);
5962 ios_base__Init(&this->base);
5963 this->strbuf = streambuf;
5964 this->stream = NULL;
5965 this->fillch = ' ';
5967 if(!streambuf)
5968 ios_base_setstate(&this->base, IOSTATE_badbit);
5970 if(isstd)
5971 FIXME("standard streams not handled yet\n");
5974 /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
5975 /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
5976 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_ctor_streambuf, 8)
5977 basic_ios_wchar* __thiscall basic_ios_wchar_ctor_streambuf(basic_ios_wchar *this, basic_streambuf_wchar *strbuf)
5979 TRACE("(%p %p)\n", this, strbuf);
5981 basic_ios_wchar_ctor(this);
5982 basic_ios_wchar_init(this, strbuf, FALSE);
5983 return this;
5986 /* ??0?$basic_ios@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
5987 /* ??0?$basic_ios@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
5988 DEFINE_THISCALL_WRAPPER(basic_ios_short_ctor_streambuf, 8)
5989 basic_ios_wchar* __thiscall basic_ios_short_ctor_streambuf(basic_ios_wchar *this, basic_streambuf_wchar *strbuf)
5991 basic_ios_wchar_ctor_streambuf(this, strbuf);
5992 this->base.vtable = &MSVCP_basic_ios_short_vtable;
5993 return this;
5996 /* ??1?$basic_ios@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
5997 /* ??1?$basic_ios@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
5998 /* ??1?$basic_ios@GU?$char_traits@G@std@@@std@@UAE@XZ */
5999 /* ??1?$basic_ios@GU?$char_traits@G@std@@@std@@UEAA@XZ */
6000 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_dtor, 4)
6001 void __thiscall basic_ios_wchar_dtor(basic_ios_wchar *this)
6003 TRACE("(%p)\n", this);
6004 ios_base_dtor(&this->base);
6007 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_vector_dtor, 8)
6008 basic_ios_wchar* __thiscall basic_ios_wchar_vector_dtor(basic_ios_wchar *this, unsigned int flags)
6010 TRACE("(%p %x)\n", this, flags);
6011 if(flags & 2) {
6012 /* we have an array, with the number of elements stored before the first object */
6013 INT_PTR i, *ptr = (INT_PTR *)this-1;
6015 for(i=*ptr-1; i>=0; i--)
6016 basic_ios_wchar_dtor(this+i);
6017 MSVCRT_operator_delete(ptr);
6018 } else {
6019 basic_ios_wchar_dtor(this);
6020 if(flags & 1)
6021 MSVCRT_operator_delete(this);
6024 return this;
6027 /* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXH_N@Z */
6028 /* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXH_N@Z */
6029 /* ?clear@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXH_N@Z */
6030 /* ?clear@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXH_N@Z */
6031 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_clear_reraise, 12)
6032 void __thiscall basic_ios_wchar_clear_reraise(basic_ios_wchar *this, IOSB_iostate state, MSVCP_bool reraise)
6034 TRACE("(%p %x %x)\n", this, state, reraise);
6035 ios_base_clear_reraise(&this->base, state | (this->strbuf ? IOSTATE_goodbit : IOSTATE_badbit), reraise);
6038 /* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXI@Z */
6039 /* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXI@Z */
6040 /* ?clear@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXI@Z */
6041 /* ?clear@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXI@Z */
6042 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_clear, 8)
6043 void __thiscall basic_ios_wchar_clear(basic_ios_wchar *this, unsigned int state)
6045 basic_ios_wchar_clear_reraise(this, (IOSB_iostate)state, FALSE);
6048 /* ?copyfmt@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEAAV12@ABV12@@Z */
6049 /* ?copyfmt@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEBV12@@Z */
6050 /* ?copyfmt@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEAAV12@ABV12@@Z */
6051 /* ?copyfmt@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAAEAV12@AEBV12@@Z */
6052 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_copyfmt, 8)
6053 basic_ios_wchar* __thiscall basic_ios_wchar_copyfmt(basic_ios_wchar *this, basic_ios_wchar *copy)
6055 TRACE("(%p %p)\n", this, copy);
6056 if(this == copy)
6057 return this;
6059 this->stream = copy->stream;
6060 this->fillch = copy->fillch;
6061 ios_base_copyfmt(&this->base, &copy->base);
6062 return this;
6065 /* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAE_W_W@Z */
6066 /* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAA_W_W@Z */
6067 /* ?fill@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEGG@Z */
6068 /* ?fill@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAGG@Z */
6069 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_fill_set, 8)
6070 wchar_t __thiscall basic_ios_wchar_fill_set(basic_ios_wchar *this, wchar_t fill)
6072 wchar_t ret = this->fillch;
6074 TRACE("(%p %c)\n", this, fill);
6076 this->fillch = fill;
6077 return ret;
6080 /* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBE_WXZ */
6081 /* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBA_WXZ */
6082 /* ?fill@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEGXZ */
6083 /* ?fill@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBAGXZ */
6084 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_fill_get, 4)
6085 wchar_t __thiscall basic_ios_wchar_fill_get(basic_ios_wchar *this)
6087 TRACE("(%p)\n", this);
6088 return this->fillch;
6091 /* ?imbue@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
6092 /* ?imbue@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
6093 /* ?imbue@?$basic_ios@GU?$char_traits@G@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
6094 /* ?imbue@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
6095 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_imbue, 12)
6096 locale *__thiscall basic_ios_wchar_imbue(basic_ios_wchar *this, locale *ret, const locale *loc)
6098 TRACE("(%p %p %p)\n", this, ret, loc);
6100 if(this->strbuf) {
6101 basic_streambuf_wchar_pubimbue(this->strbuf, ret, loc);
6102 locale_dtor(ret);
6105 return ios_base_imbue(&this->base, ret, loc);
6108 /* ?narrow@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBED_WD@Z */
6109 /* ?narrow@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBAD_WD@Z */
6110 /* ?narrow@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEDGD@Z */
6111 /* ?narrow@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBADGD@Z */
6112 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_narrow, 12)
6113 char __thiscall basic_ios_wchar_narrow(basic_ios_wchar *this, wchar_t ch, char def)
6115 TRACE("(%p %c %c)\n", this, ch, def);
6116 return ctype_wchar_narrow_ch(ctype_wchar_use_facet(IOS_LOCALE(this->strbuf)), ch, def);
6119 /* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@PAV32@@Z */
6120 /* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@PEAV32@@Z */
6121 /* ?rdbuf@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEPAV?$basic_streambuf@GU?$char_traits@G@std@@@2@PAV32@@Z */
6122 /* ?rdbuf@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAPEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@PEAV32@@Z */
6123 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_rdbuf_set, 8)
6124 basic_streambuf_wchar* __thiscall basic_ios_wchar_rdbuf_set(basic_ios_wchar *this, basic_streambuf_wchar *streambuf)
6126 basic_streambuf_wchar *ret = this->strbuf;
6128 TRACE("(%p %p)\n", this, streambuf);
6130 this->strbuf = streambuf;
6131 basic_ios_wchar_clear(this, IOSTATE_goodbit);
6132 return ret;
6135 /* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@XZ */
6136 /* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@XZ */
6137 /* ?rdbuf@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_streambuf@GU?$char_traits@G@std@@@2@XZ */
6138 /* ?rdbuf@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@XZ */
6139 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_rdbuf_get, 4)
6140 basic_streambuf_wchar* __thiscall basic_ios_wchar_rdbuf_get(const basic_ios_wchar *this)
6142 TRACE("(%p)\n", this);
6143 return this->strbuf;
6146 /* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXH_N@Z */
6147 /* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXH_N@Z */
6148 /* ?setstate@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXH_N@Z */
6149 /* ?setstate@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXH_N@Z */
6150 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_setstate_reraise, 12)
6151 void __thiscall basic_ios_wchar_setstate_reraise(basic_ios_wchar *this, IOSB_iostate state, MSVCP_bool reraise)
6153 TRACE("(%p %x %x)\n", this, state, reraise);
6155 if(state != IOSTATE_goodbit)
6156 basic_ios_wchar_clear_reraise(this, this->base.state | state, reraise);
6159 /* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXI@Z */
6160 /* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXI@Z */
6161 /* ?setstate@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXI@Z */
6162 /* ?setstate@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXI@Z */
6163 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_setstate, 8)
6164 void __thiscall basic_ios_wchar_setstate(basic_ios_wchar *this, IOSB_iostate state)
6166 basic_ios_wchar_setstate_reraise(this, state, FALSE);
6169 /* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEPAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@PAV32@@Z */
6170 /* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAPEAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@PEAV32@@Z */
6171 /* ?tie@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEPAV?$basic_ostream@GU?$char_traits@G@std@@@2@PAV32@@Z */
6172 /* ?tie@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAPEAV?$basic_ostream@GU?$char_traits@G@std@@@2@PEAV32@@Z */
6173 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_tie_set, 8)
6174 basic_ostream_wchar* __thiscall basic_ios_wchar_tie_set(basic_ios_wchar *this, basic_ostream_wchar *ostream)
6176 basic_ostream_wchar *ret = this->stream;
6178 TRACE("(%p %p)\n", this, ostream);
6180 this->stream = ostream;
6181 return ret;
6184 /* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@XZ */
6185 /* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@XZ */
6186 /* ?tie@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_ostream@GU?$char_traits@G@std@@@2@XZ */
6187 /* ?tie@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_ostream@GU?$char_traits@G@std@@@2@XZ */
6188 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_tie_get, 4)
6189 basic_ostream_wchar* __thiscall basic_ios_wchar_tie_get(const basic_ios_wchar *this)
6191 TRACE("(%p)\n", this);
6192 return this->stream;
6195 /* ?widen@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBE_WD@Z */
6196 /* ?widen@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBA_WD@Z */
6197 /* ?widen@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEGD@Z */
6198 /* ?widen@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBAGD@Z */
6199 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_widen, 8)
6200 wchar_t __thiscall basic_ios_wchar_widen(basic_ios_wchar *this, char ch)
6202 TRACE("(%p %c)\n", this, ch);
6203 return ctype_wchar_widen_ch(ctype_wchar_use_facet(IOS_LOCALE(this->strbuf)), ch);
6206 /* ?swap@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXAAV12@@Z */
6207 /* ?swap@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXAEAV12@@Z */
6208 /* ?swap@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXAAV12@@Z */
6209 /* ?swap@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXAEAV12@@Z */
6210 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_swap, 8)
6211 void __thiscall basic_ios_wchar_swap(basic_ios_wchar *this, basic_ios_wchar *r)
6213 void *swap_ptr;
6215 TRACE("(%p %p)\n", this, r);
6217 if(this == r)
6218 return;
6220 ios_base_swap(&this->base, &r->base);
6221 swap_ptr = this->stream;
6222 this->stream = r->stream;
6223 r->stream = swap_ptr;
6224 this->fillch ^= r->fillch;
6225 r->fillch ^= this->fillch;
6226 this->fillch ^= r->fillch;
6229 /* Caution: basic_ostream uses virtual inheritance.
6230 * All constructors have additional parameter that says if base class should be initialized.
6231 * Base class needs to be accessed using vbtable.
6233 static inline basic_ios_char* basic_ostream_char_get_basic_ios(basic_ostream_char *this)
6235 return (basic_ios_char*)((char*)this+this->vbtable[1]);
6238 static inline basic_ios_char* basic_ostream_char_to_basic_ios(basic_ostream_char *ptr)
6240 return (basic_ios_char*)((char*)ptr+basic_ostream_char_vbtable[1]);
6243 static inline basic_ostream_char* basic_ostream_char_from_basic_ios(basic_ios_char *ptr)
6245 return (basic_ostream_char*)((char*)ptr-basic_ostream_char_vbtable[1]);
6248 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z */
6249 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z */
6250 DEFINE_THISCALL_WRAPPER(basic_ostream_char_ctor, 16)
6251 basic_ostream_char* __thiscall basic_ostream_char_ctor(basic_ostream_char *this,
6252 basic_streambuf_char *strbuf, MSVCP_bool isstd, MSVCP_bool virt_init)
6254 basic_ios_char *base;
6256 TRACE("(%p %p %d %d)\n", this, strbuf, isstd, virt_init);
6258 if(virt_init) {
6259 this->vbtable = basic_ostream_char_vbtable;
6260 base = basic_ostream_char_get_basic_ios(this);
6261 INIT_BASIC_IOS_VTORDISP(base);
6262 basic_ios_char_ctor(base);
6263 }else {
6264 base = basic_ostream_char_get_basic_ios(this);
6267 base->base.vtable = &MSVCP_basic_ostream_char_vtable;
6268 basic_ios_char_init(base, strbuf, isstd);
6269 return this;
6272 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@W4_Uninitialized@1@_N@Z */
6273 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@W4_Uninitialized@1@_N@Z */
6274 DEFINE_THISCALL_WRAPPER(basic_ostream_char_ctor_uninitialized, 16)
6275 basic_ostream_char* __thiscall basic_ostream_char_ctor_uninitialized(basic_ostream_char *this,
6276 int uninitialized, MSVCP_bool addstd, MSVCP_bool virt_init)
6278 basic_ios_char *base;
6280 TRACE("(%p %d %x)\n", this, uninitialized, addstd);
6282 if(virt_init) {
6283 this->vbtable = basic_ostream_char_vbtable;
6284 base = basic_ostream_char_get_basic_ios(this);
6285 INIT_BASIC_IOS_VTORDISP(base);
6286 basic_ios_char_ctor(base);
6287 }else {
6288 base = basic_ostream_char_get_basic_ios(this);
6291 base->base.vtable = &MSVCP_basic_ostream_char_vtable;
6292 if(addstd)
6293 ios_base_Addstd(&base->base);
6294 return this;
6297 /* ??1?$basic_ostream@DU?$char_traits@D@std@@@std@@UAE@XZ */
6298 /* ??1?$basic_ostream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
6299 DEFINE_THISCALL_WRAPPER(basic_ostream_char_dtor, 4)
6300 void __thiscall basic_ostream_char_dtor(basic_ios_char *base)
6302 basic_ostream_char *this = basic_ostream_char_from_basic_ios(base);
6304 /* don't destroy virtual base here */
6305 TRACE("(%p)\n", this);
6308 /* ??_D?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
6309 /* ??_D?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
6310 DEFINE_THISCALL_WRAPPER(basic_ostream_char_vbase_dtor, 4)
6311 void __thiscall basic_ostream_char_vbase_dtor(basic_ostream_char *this)
6313 basic_ios_char *base = basic_ostream_char_to_basic_ios(this);
6315 TRACE("(%p)\n", this);
6317 basic_ostream_char_dtor(base);
6318 basic_ios_char_dtor(base);
6321 DEFINE_THISCALL_WRAPPER(basic_ostream_char_vector_dtor, 8)
6322 basic_ostream_char* __thiscall basic_ostream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
6324 basic_ostream_char *this = basic_ostream_char_from_basic_ios(base);
6326 TRACE("(%p %x)\n", this, flags);
6328 if(flags & 2) {
6329 /* we have an array, with the number of elements stored before the first object */
6330 INT_PTR i, *ptr = (INT_PTR *)this-1;
6332 for(i=*ptr-1; i>=0; i--)
6333 basic_ostream_char_vbase_dtor(this+i);
6334 MSVCRT_operator_delete(ptr);
6335 } else {
6336 basic_ostream_char_vbase_dtor(this);
6337 if(flags & 1)
6338 MSVCRT_operator_delete(this);
6341 return this;
6344 /* ?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@XZ */
6345 /* ?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@XZ */
6346 DEFINE_THISCALL_WRAPPER(basic_ostream_char_flush, 4)
6347 basic_ostream_char* __thiscall basic_ostream_char_flush(basic_ostream_char *this)
6349 /* this function is not matching C++ specification */
6350 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6352 TRACE("(%p)\n", this);
6354 if(basic_ios_char_rdbuf_get(base) && ios_base_good(&base->base)
6355 && basic_streambuf_char_pubsync(basic_ios_char_rdbuf_get(base))==-1)
6356 basic_ios_char_setstate(base, IOSTATE_badbit);
6357 return this;
6360 /* ?flush@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@@Z */
6361 /* ?flush@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@1@AEAV21@@Z */
6362 basic_ostream_char* __cdecl flush_ostream_char(basic_ostream_char *ostream)
6364 return basic_ostream_char_flush(ostream);
6367 /* ?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
6368 /* ?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
6369 DEFINE_THISCALL_WRAPPER(basic_ostream_char__Osfx, 4)
6370 void __thiscall basic_ostream_char__Osfx(basic_ostream_char *this)
6372 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6374 TRACE("(%p)\n", this);
6376 if(base->base.fmtfl & FMTFLAG_unitbuf)
6377 basic_ostream_char_flush(this);
6380 /* ?osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
6381 /* ?osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
6382 DEFINE_THISCALL_WRAPPER(basic_ostream_char_osfx, 4)
6383 void __thiscall basic_ostream_char_osfx(basic_ostream_char *this)
6385 TRACE("(%p)\n", this);
6386 basic_ostream_char__Osfx(this);
6389 static BOOL basic_ostream_char_sentry_create(basic_ostream_char *ostr)
6391 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
6393 if(basic_ios_char_rdbuf_get(base))
6394 call_basic_streambuf_char__Lock(base->strbuf);
6396 if(ios_base_good(&base->base) && base->stream)
6397 basic_ostream_char_flush(base->stream);
6399 return ios_base_good(&base->base);
6402 static void basic_ostream_char_sentry_destroy(basic_ostream_char *ostr)
6404 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
6406 if(ios_base_good(&base->base) && !__uncaught_exception())
6407 basic_ostream_char_osfx(ostr);
6409 if(basic_ios_char_rdbuf_get(base))
6410 call_basic_streambuf_char__Unlock(base->strbuf);
6413 /* ?opfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE_NXZ */
6414 /* ?opfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA_NXZ */
6415 DEFINE_THISCALL_WRAPPER(basic_ostream_char_opfx, 4)
6416 MSVCP_bool __thiscall basic_ostream_char_opfx(basic_ostream_char *this)
6418 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6420 TRACE("(%p)\n", this);
6422 if(ios_base_good(&base->base) && base->stream)
6423 basic_ostream_char_flush(base->stream);
6424 return ios_base_good(&base->base);
6427 /* ?put@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@D@Z */
6428 /* ?put@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@D@Z */
6429 DEFINE_THISCALL_WRAPPER(basic_ostream_char_put, 8)
6430 basic_ostream_char* __thiscall basic_ostream_char_put(basic_ostream_char *this, char ch)
6432 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6434 TRACE("(%p %c)\n", this, ch);
6436 if(!basic_ostream_char_sentry_create(this)
6437 || basic_streambuf_char_sputc(base->strbuf, ch)==EOF) {
6438 basic_ostream_char_sentry_destroy(this);
6439 basic_ios_char_setstate(base, IOSTATE_badbit);
6440 return this;
6443 basic_ostream_char_sentry_destroy(this);
6444 return this;
6447 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@JH@Z */
6448 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@_JH@Z */
6449 #if STREAMOFF_BITS == 64
6450 DEFINE_THISCALL_WRAPPER(basic_ostream_char_seekp, 16)
6451 #else
6452 DEFINE_THISCALL_WRAPPER(basic_ostream_char_seekp, 12)
6453 #endif
6454 basic_ostream_char* __thiscall basic_ostream_char_seekp(basic_ostream_char *this, streamoff off, int way)
6456 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6458 TRACE("(%p %s %d)\n", this, wine_dbgstr_longlong(off), way);
6460 if(!ios_base_fail(&base->base)) {
6461 fpos_mbstatet seek;
6463 basic_streambuf_char_pubseekoff(basic_ios_char_rdbuf_get(base),
6464 &seek, off, way, OPENMODE_out);
6465 if(seek.off==-1 && seek.pos==0 && MBSTATET_TO_INT(&seek.state)==0)
6466 basic_ios_char_setstate(base, IOSTATE_failbit);
6468 return this;
6471 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
6472 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
6473 DEFINE_THISCALL_WRAPPER(basic_ostream_char_seekp_fpos, 28)
6474 basic_ostream_char* __thiscall basic_ostream_char_seekp_fpos(basic_ostream_char *this, fpos_mbstatet pos)
6476 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6478 TRACE("(%p %s)\n", this, debugstr_fpos_mbstatet(&pos));
6480 if(!ios_base_fail(&base->base)) {
6481 fpos_mbstatet seek;
6483 basic_streambuf_char_pubseekpos(basic_ios_char_rdbuf_get(base),
6484 &seek, pos, 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 /* ?tellp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@XZ */
6492 /* ?tellp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
6493 DEFINE_THISCALL_WRAPPER(basic_ostream_char_tellp, 8)
6494 fpos_mbstatet* __thiscall basic_ostream_char_tellp(basic_ostream_char *this, fpos_mbstatet *ret)
6496 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6498 TRACE("(%p)\n", this);
6500 if(!ios_base_fail(&base->base)) {
6501 basic_streambuf_char_pubseekoff(basic_ios_char_rdbuf_get(base),
6502 ret, 0, SEEKDIR_cur, OPENMODE_out);
6503 }else {
6504 ret->off = -1;
6505 ret->pos = 0;
6506 memset(&ret->state, 0, sizeof(ret->state));
6508 return ret;
6511 /* ?write@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@PBDH@Z */
6512 /* ?write@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEBD_J@Z */
6513 #if STREAMSIZE_BITS == 64
6514 DEFINE_THISCALL_WRAPPER(basic_ostream_char_write, 16)
6515 #else
6516 DEFINE_THISCALL_WRAPPER(basic_ostream_char_write, 12)
6517 #endif
6518 basic_ostream_char* __thiscall basic_ostream_char_write(basic_ostream_char *this, const char *str, streamsize count)
6520 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6522 TRACE("(%p %s %s)\n", this, debugstr_a(str), wine_dbgstr_longlong(count));
6524 if(!basic_ostream_char_sentry_create(this)
6525 || basic_streambuf_char_sputn(base->strbuf, str, count)!=count) {
6526 basic_ostream_char_sentry_destroy(this);
6527 basic_ios_char_setstate(base, IOSTATE_badbit);
6528 return this;
6531 basic_ostream_char_sentry_destroy(this);
6532 return this;
6535 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@F@Z */
6536 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@F@Z */
6537 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_short, 8)
6538 basic_ostream_char* __thiscall basic_ostream_char_print_short(basic_ostream_char *this, short val)
6540 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6541 int state = IOSTATE_goodbit;
6543 TRACE("(%p %d)\n", this, val);
6545 if(basic_ostream_char_sentry_create(this)) {
6546 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6547 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
6548 ostreambuf_iterator_char dest;
6550 memset(&dest, 0, sizeof(dest));
6551 dest.strbuf = strbuf;
6552 num_put_char_put_long(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base),
6553 (ios_base_flags_get(&base->base) & FMTFLAG_basefield & (FMTFLAG_oct | FMTFLAG_hex))
6554 ? (LONG)((unsigned short)val) : (LONG)val);
6556 basic_ostream_char_sentry_destroy(this);
6558 basic_ios_char_setstate(base, state);
6559 return this;
6562 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@G@Z */
6563 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@G@Z */
6564 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_ushort, 8)
6565 basic_ostream_char* __thiscall basic_ostream_char_print_ushort(basic_ostream_char *this, unsigned short val)
6567 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6568 int state = IOSTATE_goodbit;
6570 TRACE("(%p %u)\n", this, val);
6572 if(basic_ostream_char_sentry_create(this)) {
6573 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6574 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
6575 ostreambuf_iterator_char dest;
6577 memset(&dest, 0, sizeof(dest));
6578 dest.strbuf = strbuf;
6579 num_put_char_put_ulong(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
6581 basic_ostream_char_sentry_destroy(this);
6583 basic_ios_char_setstate(base, state);
6584 return this;
6587 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@H@Z */
6588 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@H@Z */
6589 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@J@Z */
6590 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@J@Z */
6591 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_int, 8)
6592 basic_ostream_char* __thiscall basic_ostream_char_print_int(basic_ostream_char *this, int val)
6594 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6595 int state = IOSTATE_goodbit;
6597 TRACE("(%p %d)\n", this, val);
6599 if(basic_ostream_char_sentry_create(this)) {
6600 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6601 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
6602 ostreambuf_iterator_char dest;
6604 memset(&dest, 0, sizeof(dest));
6605 dest.strbuf = strbuf;
6606 num_put_char_put_long(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
6608 basic_ostream_char_sentry_destroy(this);
6610 basic_ios_char_setstate(base, state);
6611 return this;
6614 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@I@Z */
6615 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@I@Z */
6616 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@K@Z */
6617 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@K@Z */
6618 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_uint, 8)
6619 basic_ostream_char* __thiscall basic_ostream_char_print_uint(basic_ostream_char *this, unsigned int val)
6621 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6622 int state = IOSTATE_goodbit;
6624 TRACE("(%p %u)\n", this, val);
6626 if(basic_ostream_char_sentry_create(this)) {
6627 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6628 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
6629 ostreambuf_iterator_char dest;
6631 memset(&dest, 0, sizeof(dest));
6632 dest.strbuf = strbuf;
6633 num_put_char_put_ulong(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
6635 basic_ostream_char_sentry_destroy(this);
6637 basic_ios_char_setstate(base, state);
6638 return this;
6641 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@M@Z */
6642 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@M@Z */
6643 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_float, 8)
6644 basic_ostream_char* __thiscall basic_ostream_char_print_float(basic_ostream_char *this, float val)
6646 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6647 int state = IOSTATE_goodbit;
6649 TRACE("(%p %f)\n", this, val);
6651 if(basic_ostream_char_sentry_create(this)) {
6652 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6653 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
6654 ostreambuf_iterator_char dest;
6656 memset(&dest, 0, sizeof(dest));
6657 dest.strbuf = strbuf;
6658 num_put_char_put_double(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
6660 basic_ostream_char_sentry_destroy(this);
6662 basic_ios_char_setstate(base, state);
6663 return this;
6666 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@N@Z */
6667 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@N@Z */
6668 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_double, 12)
6669 basic_ostream_char* __thiscall basic_ostream_char_print_double(basic_ostream_char *this, double val)
6671 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6672 int state = IOSTATE_goodbit;
6674 TRACE("(%p %lf)\n", this, val);
6676 if(basic_ostream_char_sentry_create(this)) {
6677 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6678 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
6679 ostreambuf_iterator_char dest;
6681 memset(&dest, 0, sizeof(dest));
6682 dest.strbuf = strbuf;
6683 num_put_char_put_double(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
6685 basic_ostream_char_sentry_destroy(this);
6687 basic_ios_char_setstate(base, state);
6688 return this;
6691 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@O@Z */
6692 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@O@Z */
6693 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_ldouble, 12)
6694 basic_ostream_char* __thiscall basic_ostream_char_print_ldouble(basic_ostream_char *this, double val)
6696 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6697 int state = IOSTATE_goodbit;
6699 TRACE("(%p %lf)\n", this, val);
6701 if(basic_ostream_char_sentry_create(this)) {
6702 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6703 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
6704 ostreambuf_iterator_char dest;
6706 memset(&dest, 0, sizeof(dest));
6707 dest.strbuf = strbuf;
6708 num_put_char_put_ldouble(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
6710 basic_ostream_char_sentry_destroy(this);
6712 basic_ios_char_setstate(base, state);
6713 return this;
6716 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
6717 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
6718 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_streambuf, 8)
6719 basic_ostream_char* __thiscall basic_ostream_char_print_streambuf(basic_ostream_char *this, basic_streambuf_char *val)
6721 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6722 IOSB_iostate state = IOSTATE_badbit;
6723 int c = '\n';
6725 TRACE("(%p %p)\n", this, val);
6727 if(basic_ostream_char_sentry_create(this)) {
6728 for(c = basic_streambuf_char_sgetc(val); c!=EOF;
6729 c = basic_streambuf_char_snextc(val)) {
6730 state = IOSTATE_goodbit;
6732 if(basic_streambuf_char_sputc(base->strbuf, c) == EOF) {
6733 state = IOSTATE_badbit;
6734 break;
6737 }else {
6738 state = IOSTATE_badbit;
6740 basic_ostream_char_sentry_destroy(this);
6742 ios_base_width_set(&base->base, 0);
6743 basic_ios_char_setstate(base, state);
6744 return this;
6747 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@PBX@Z */
6748 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@PEBX@Z */
6749 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_ptr, 8)
6750 basic_ostream_char* __thiscall basic_ostream_char_print_ptr(basic_ostream_char *this, const void *val)
6752 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6753 int state = IOSTATE_goodbit;
6755 TRACE("(%p %p)\n", this, val);
6757 if(basic_ostream_char_sentry_create(this)) {
6758 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6759 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
6760 ostreambuf_iterator_char dest;
6762 memset(&dest, 0, sizeof(dest));
6763 dest.strbuf = strbuf;
6764 num_put_char_put_ptr(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
6766 basic_ostream_char_sentry_destroy(this);
6768 basic_ios_char_setstate(base, state);
6769 return this;
6772 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@_J@Z */
6773 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@_J@Z */
6774 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_int64, 12)
6775 basic_ostream_char* __thiscall basic_ostream_char_print_int64(basic_ostream_char *this, __int64 val)
6777 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6778 int state = IOSTATE_goodbit;
6780 TRACE("(%p)\n", this);
6782 if(basic_ostream_char_sentry_create(this)) {
6783 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6784 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
6785 ostreambuf_iterator_char dest;
6787 memset(&dest, 0, sizeof(dest));
6788 dest.strbuf = strbuf;
6789 num_put_char_put_int64(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
6791 basic_ostream_char_sentry_destroy(this);
6793 basic_ios_char_setstate(base, state);
6794 return this;
6797 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@_K@Z */
6798 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@_K@Z */
6799 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_uint64, 12)
6800 basic_ostream_char* __thiscall basic_ostream_char_print_uint64(basic_ostream_char *this, unsigned __int64 val)
6802 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6803 int state = IOSTATE_goodbit;
6805 TRACE("(%p)\n", this);
6807 if(basic_ostream_char_sentry_create(this)) {
6808 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6809 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
6810 ostreambuf_iterator_char dest;
6812 memset(&dest, 0, sizeof(dest));
6813 dest.strbuf = strbuf;
6814 num_put_char_put_uint64(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
6816 basic_ostream_char_sentry_destroy(this);
6818 basic_ios_char_setstate(base, state);
6819 return this;
6822 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@_N@Z */
6823 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@_N@Z */
6824 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_bool, 8)
6825 basic_ostream_char* __thiscall basic_ostream_char_print_bool(basic_ostream_char *this, MSVCP_bool val)
6827 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6828 int state = IOSTATE_goodbit;
6830 TRACE("(%p %x)\n", this, val);
6832 if(basic_ostream_char_sentry_create(this)) {
6833 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6834 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
6835 ostreambuf_iterator_char dest;
6837 memset(&dest, 0, sizeof(dest));
6838 dest.strbuf = strbuf;
6839 num_put_char_put_bool(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
6841 basic_ostream_char_sentry_destroy(this);
6843 basic_ios_char_setstate(base, state);
6844 return this;
6847 /* ?ends@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@@Z */
6848 /* ?ends@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@1@AEAV21@@Z */
6849 basic_ostream_char* __cdecl basic_ostream_char_ends(basic_ostream_char *ostr)
6851 TRACE("(%p)\n", ostr);
6853 basic_ostream_char_put(ostr, 0);
6854 return ostr;
6857 /* ?endl@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@@Z */
6858 /* ?endl@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@1@AEAV21@@Z */
6859 basic_ostream_char* __cdecl basic_ostream_char_endl(basic_ostream_char *ostr)
6861 TRACE("(%p)\n", ostr);
6863 basic_ostream_char_put(ostr, '\n');
6864 basic_ostream_char_flush(ostr);
6865 return ostr;
6868 /* ??$?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 */
6869 /* ??$?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 */
6870 basic_ostream_char* __cdecl basic_ostream_char_print_bstr(basic_ostream_char *ostr, const basic_string_char *str)
6872 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
6873 IOSB_iostate state = IOSTATE_goodbit;
6875 TRACE("(%p %p)\n", ostr, str);
6877 if(basic_ostream_char_sentry_create(ostr)) {
6878 MSVCP_size_t len = MSVCP_basic_string_char_length(str);
6879 streamsize pad = (base->base.wide>len ? base->base.wide-len : 0);
6881 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
6882 for(; pad!=0; pad--) {
6883 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
6884 state = IOSTATE_badbit;
6885 break;
6890 if(state == IOSTATE_goodbit) {
6891 if(basic_streambuf_char_sputn(base->strbuf, MSVCP_basic_string_char_c_str(str), len) != len)
6892 state = IOSTATE_badbit;
6895 if(state == IOSTATE_goodbit) {
6896 for(; pad!=0; pad--) {
6897 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
6898 state = IOSTATE_badbit;
6899 break;
6904 base->base.wide = 0;
6905 }else {
6906 state = IOSTATE_badbit;
6908 basic_ostream_char_sentry_destroy(ostr);
6910 basic_ios_char_setstate(base, state);
6911 return ostr;
6914 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@C@Z */
6915 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@C@Z */
6916 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@D@Z */
6917 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z */
6918 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@E@Z */
6919 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@E@Z */
6920 basic_ostream_char* __cdecl basic_ostream_char_print_ch(basic_ostream_char *ostr, char ch)
6922 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
6923 IOSB_iostate state = IOSTATE_goodbit;
6925 TRACE("(%p %d)\n", ostr, ch);
6927 if(basic_ostream_char_sentry_create(ostr)) {
6928 streamsize pad = (base->base.wide>1 ? base->base.wide-1 : 0);
6930 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
6931 for(; pad!=0; pad--) {
6932 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
6933 state = IOSTATE_badbit;
6934 break;
6939 if(state == IOSTATE_goodbit) {
6940 if(basic_streambuf_char_sputc(base->strbuf, ch) == EOF)
6941 state = IOSTATE_badbit;
6944 if(state == IOSTATE_goodbit) {
6945 for(; pad!=0; pad--) {
6946 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
6947 state = IOSTATE_badbit;
6948 break;
6953 base->base.wide = 0;
6954 }else {
6955 state = IOSTATE_badbit;
6957 basic_ostream_char_sentry_destroy(ostr);
6959 basic_ios_char_setstate(base, state);
6960 return ostr;
6963 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBC@Z */
6964 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBC@Z */
6965 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBD@Z */
6966 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBD@Z */
6967 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBE@Z */
6968 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBE@Z */
6969 basic_ostream_char* __cdecl basic_ostream_char_print_str(basic_ostream_char *ostr, const char *str)
6971 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
6972 IOSB_iostate state = IOSTATE_goodbit;
6974 TRACE("(%p %s)\n", ostr, str);
6976 if(basic_ostream_char_sentry_create(ostr)) {
6977 MSVCP_size_t len = strlen(str);
6978 streamsize pad = (base->base.wide>len ? base->base.wide-len : 0);
6980 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
6981 for(; pad!=0; pad--) {
6982 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
6983 state = IOSTATE_badbit;
6984 break;
6989 if(state == IOSTATE_goodbit) {
6990 if(basic_streambuf_char_sputn(base->strbuf, str, len) != len)
6991 state = IOSTATE_badbit;
6994 if(state == IOSTATE_goodbit) {
6995 for(; pad!=0; pad--) {
6996 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
6997 state = IOSTATE_badbit;
6998 break;
7003 base->base.wide = 0;
7004 }else {
7005 state = IOSTATE_badbit;
7007 basic_ostream_char_sentry_destroy(ostr);
7009 basic_ios_char_setstate(base, state);
7010 return ostr;
7013 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
7014 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
7015 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_func, 8)
7016 basic_ostream_char* __thiscall basic_ostream_char_print_func(basic_ostream_char *this,
7017 basic_ostream_char* (__cdecl *pfunc)(basic_ostream_char*))
7019 TRACE("(%p %p)\n", this, pfunc);
7020 pfunc(this);
7021 return this;
7024 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@DU?$char_traits@D@std@@@1@AAV21@@Z@Z */
7025 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@DU?$char_traits@D@std@@@1@AEAV21@@Z@Z */
7026 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_func_basic_ios, 8)
7027 basic_ostream_char* __thiscall basic_ostream_char_print_func_basic_ios(basic_ostream_char *this,
7028 basic_ios_char* (__cdecl *pfunc)(basic_ios_char*))
7030 TRACE("(%p %p)\n", this, pfunc);
7031 pfunc(basic_ostream_char_get_basic_ios(this));
7032 return this;
7035 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
7036 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
7037 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_func_ios_base, 8)
7038 basic_ostream_char* __thiscall basic_ostream_char_print_func_ios_base(
7039 basic_ostream_char *this, ios_base* (__cdecl *pfunc)(ios_base*))
7041 TRACE("(%p %p)\n", this, pfunc);
7042 pfunc(&basic_ostream_char_get_basic_ios(this)->base);
7043 return this;
7046 /* ?swap@?$basic_ostream@DU?$char_traits@D@std@@@std@@IAEXAAV12@@Z */
7047 /* ?swap@?$basic_ostream@DU?$char_traits@D@std@@@std@@IEAAXAEAV12@@Z */
7048 DEFINE_THISCALL_WRAPPER(basic_ostream_char_swap, 8)
7049 void __thiscall basic_ostream_char_swap(basic_ostream_char *this, basic_ostream_char *r)
7051 TRACE("(%p %p)\n", this, r);
7053 if(this == r)
7054 return;
7056 basic_ios_char_swap(basic_ostream_char_get_basic_ios(this),
7057 basic_ostream_char_get_basic_ios(r));
7060 /* Caution: basic_ostream uses virtual inheritance. */
7061 static inline basic_ios_wchar* basic_ostream_wchar_get_basic_ios(basic_ostream_wchar *this)
7063 return (basic_ios_wchar*)((char*)this+this->vbtable[1]);
7066 static inline basic_ios_wchar* basic_ostream_wchar_to_basic_ios(basic_ostream_wchar *ptr)
7068 return (basic_ios_wchar*)((char*)ptr+basic_ostream_wchar_vbtable[1]);
7071 static inline basic_ostream_wchar* basic_ostream_wchar_from_basic_ios(basic_ios_wchar *ptr)
7073 return (basic_ostream_wchar*)((char*)ptr-basic_ostream_wchar_vbtable[1]);
7076 /* ??0?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z */
7077 /* ??0?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z */
7078 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_ctor, 16)
7079 basic_ostream_wchar* __thiscall basic_ostream_wchar_ctor(basic_ostream_wchar *this,
7080 basic_streambuf_wchar *strbuf, MSVCP_bool isstd, MSVCP_bool virt_init)
7082 basic_ios_wchar *base;
7084 TRACE("(%p %p %d %d)\n", this, strbuf, isstd, virt_init);
7086 if(virt_init) {
7087 this->vbtable = basic_ostream_wchar_vbtable;
7088 base = basic_ostream_wchar_get_basic_ios(this);
7089 INIT_BASIC_IOS_VTORDISP(base);
7090 basic_ios_wchar_ctor(base);
7091 }else {
7092 base = basic_ostream_wchar_get_basic_ios(this);
7095 base->base.vtable = &MSVCP_basic_ostream_wchar_vtable;
7096 basic_ios_wchar_init(base, strbuf, isstd);
7097 return this;
7100 /* ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N@Z */
7101 /* ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N@Z */
7102 DEFINE_THISCALL_WRAPPER(basic_ostream_short_ctor, 16)
7103 basic_ostream_wchar* __thiscall basic_ostream_short_ctor(basic_ostream_wchar *this,
7104 basic_streambuf_wchar *strbuf, MSVCP_bool isstd, MSVCP_bool virt_init)
7106 basic_ostream_wchar_ctor(this, strbuf, isstd, virt_init);
7107 basic_ostream_wchar_get_basic_ios(this)->base.vtable = &MSVCP_basic_ostream_short_vtable;
7108 return this;
7111 /* ??0?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAE@W4_Uninitialized@1@_N@Z */
7112 /* ??0?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAA@W4_Uninitialized@1@_N@Z */
7113 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_ctor_uninitialized, 16)
7114 basic_ostream_wchar* __thiscall basic_ostream_wchar_ctor_uninitialized(basic_ostream_wchar *this,
7115 int uninitialized, MSVCP_bool addstd, MSVCP_bool virt_init)
7117 basic_ios_wchar *base;
7119 TRACE("(%p %d %x)\n", this, uninitialized, addstd);
7121 if(virt_init) {
7122 this->vbtable = basic_ostream_wchar_vbtable;
7123 base = basic_ostream_wchar_get_basic_ios(this);
7124 INIT_BASIC_IOS_VTORDISP(base);
7125 basic_ios_wchar_ctor(base);
7126 }else {
7127 base = basic_ostream_wchar_get_basic_ios(this);
7130 base->base.vtable = &MSVCP_basic_ostream_wchar_vtable;
7131 if(addstd)
7132 ios_base_Addstd(&base->base);
7133 return this;
7136 /* ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE@W4_Uninitialized@1@_N@Z */
7137 /* ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA@W4_Uninitialized@1@_N@Z */
7138 DEFINE_THISCALL_WRAPPER(basic_ostream_short_ctor_uninitialized, 16)
7139 basic_ostream_wchar* __thiscall basic_ostream_short_ctor_uninitialized(basic_ostream_wchar *this,
7140 int uninitialized, MSVCP_bool addstd, MSVCP_bool virt_init)
7142 basic_ostream_wchar_ctor_uninitialized(this, uninitialized, addstd, virt_init);
7143 basic_ostream_wchar_get_basic_ios(this)->base.vtable = &MSVCP_basic_ostream_short_vtable;
7144 return this;
7147 /* ??1?$basic_ostream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
7148 /* ??1?$basic_ostream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
7149 /* ??1?$basic_ostream@GU?$char_traits@G@std@@@std@@UAE@XZ */
7150 /* ??1?$basic_ostream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
7151 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_dtor, 4)
7152 void __thiscall basic_ostream_wchar_dtor(basic_ios_wchar *base)
7154 basic_ostream_wchar *this = basic_ostream_wchar_from_basic_ios(base);
7156 /* don't destroy virtual base here */
7157 TRACE("(%p)\n", this);
7160 /* ??_D?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
7161 /* ??_D?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
7162 /* ??_D?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEXXZ */
7163 /* ??_D?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
7164 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_vbase_dtor, 4)
7165 void __thiscall basic_ostream_wchar_vbase_dtor(basic_ostream_wchar *this)
7167 basic_ios_wchar *base = basic_ostream_wchar_to_basic_ios(this);
7169 TRACE("(%p)\n", this);
7171 basic_ostream_wchar_dtor(base);
7172 basic_ios_wchar_dtor(base);
7175 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_vector_dtor, 8)
7176 basic_ostream_wchar* __thiscall basic_ostream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
7178 basic_ostream_wchar *this = basic_ostream_wchar_from_basic_ios(base);
7180 TRACE("(%p %x)\n", this, flags);
7182 if(flags & 2) {
7183 /* we have an array, with the number of elements stored before the first object */
7184 INT_PTR i, *ptr = (INT_PTR *)this-1;
7186 for(i=*ptr-1; i>=0; i--)
7187 basic_ostream_wchar_vbase_dtor(this+i);
7188 MSVCRT_operator_delete(ptr);
7189 } else {
7190 basic_ostream_wchar_vbase_dtor(this);
7191 if(flags & 1)
7192 MSVCRT_operator_delete(this);
7195 return this;
7198 /* ?flush@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@XZ */
7199 /* ?flush@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@XZ */
7200 /* ?flush@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@XZ */
7201 /* ?flush@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@XZ */
7202 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_flush, 4)
7203 basic_ostream_wchar* __thiscall basic_ostream_wchar_flush(basic_ostream_wchar *this)
7205 /* this function is not matching C++ specification */
7206 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7208 TRACE("(%p)\n", this);
7210 if(basic_ios_wchar_rdbuf_get(base) && ios_base_good(&base->base)
7211 && basic_streambuf_wchar_pubsync(basic_ios_wchar_rdbuf_get(base))==-1)
7212 basic_ios_wchar_setstate(base, IOSTATE_badbit);
7213 return this;
7216 /* ?flush@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@AAV21@@Z */
7217 /* ?flush@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@AEAV21@@Z */
7218 /* ?flush@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@1@AAV21@@Z */
7219 /* ?flush@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@1@AEAV21@@Z */
7220 basic_ostream_wchar* __cdecl flush_ostream_wchar(basic_ostream_wchar *ostream)
7222 return basic_ostream_wchar_flush(ostream);
7225 /* ?_Osfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
7226 /* ?_Osfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
7227 /* ?_Osfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEXXZ */
7228 /* ?_Osfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
7229 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar__Osfx, 4)
7230 void __thiscall basic_ostream_wchar__Osfx(basic_ostream_wchar *this)
7232 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7234 TRACE("(%p)\n", this);
7236 if(base->base.fmtfl & FMTFLAG_unitbuf)
7237 basic_ostream_wchar_flush(this);
7240 /* ?osfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
7241 /* ?osfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
7242 /* ?osfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEXXZ */
7243 /* ?osfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
7244 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_osfx, 4)
7245 void __thiscall basic_ostream_wchar_osfx(basic_ostream_wchar *this)
7247 TRACE("(%p)\n", this);
7248 basic_ostream_wchar__Osfx(this);
7251 static BOOL basic_ostream_wchar_sentry_create(basic_ostream_wchar *ostr)
7253 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(ostr);
7255 if(basic_ios_wchar_rdbuf_get(base))
7256 basic_streambuf_wchar__Lock(base->strbuf);
7258 if(ios_base_good(&base->base) && base->stream)
7259 basic_ostream_wchar_flush(base->stream);
7261 return ios_base_good(&base->base);
7264 static void basic_ostream_wchar_sentry_destroy(basic_ostream_wchar *ostr)
7266 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(ostr);
7268 if(ios_base_good(&base->base) && !__uncaught_exception())
7269 basic_ostream_wchar_osfx(ostr);
7271 if(basic_ios_wchar_rdbuf_get(base))
7272 basic_streambuf_wchar__Unlock(base->strbuf);
7275 /* ?opfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAE_NXZ */
7276 /* ?opfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAA_NXZ */
7277 /* ?opfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE_NXZ */
7278 /* ?opfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA_NXZ */
7279 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_opfx, 4)
7280 MSVCP_bool __thiscall basic_ostream_wchar_opfx(basic_ostream_wchar *this)
7282 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7284 TRACE("(%p)\n", this);
7286 if(ios_base_good(&base->base) && base->stream)
7287 basic_ostream_wchar_flush(base->stream);
7288 return ios_base_good(&base->base);
7291 /* ?put@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@_W@Z */
7292 /* ?put@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_W@Z */
7293 /* ?put@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@G@Z */
7294 /* ?put@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@G@Z */
7295 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_put, 8)
7296 basic_ostream_wchar* __thiscall basic_ostream_wchar_put(basic_ostream_wchar *this, wchar_t ch)
7298 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7300 TRACE("(%p %c)\n", this, ch);
7302 if(!basic_ostream_wchar_sentry_create(this)
7303 || basic_streambuf_wchar_sputc(base->strbuf, ch)==WEOF) {
7304 basic_ostream_wchar_sentry_destroy(this);
7305 basic_ios_wchar_setstate(base, IOSTATE_badbit);
7306 return this;
7309 basic_ostream_wchar_sentry_destroy(this);
7310 return this;
7313 /* ?seekp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@JH@Z */
7314 /* ?seekp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_JH@Z */
7315 /* ?seekp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@JH@Z */
7316 /* ?seekp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@_JH@Z */
7317 #if STREAMOFF_BITS == 64
7318 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_seekp, 16)
7319 #else
7320 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_seekp, 12)
7321 #endif
7322 basic_ostream_wchar* __thiscall basic_ostream_wchar_seekp(basic_ostream_wchar *this, streamoff off, int way)
7324 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7326 TRACE("(%p %s %d)\n", this, wine_dbgstr_longlong(off), way);
7328 if(!ios_base_fail(&base->base)) {
7329 fpos_mbstatet seek;
7331 basic_streambuf_wchar_pubseekoff(basic_ios_wchar_rdbuf_get(base),
7332 &seek, off, way, OPENMODE_out);
7333 if(seek.off==-1 && seek.pos==0 && MBSTATET_TO_INT(&seek.state)==0)
7334 basic_ios_wchar_setstate(base, IOSTATE_failbit);
7336 return this;
7339 /* ?seekp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
7340 /* ?seekp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
7341 /* ?seekp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
7342 /* ?seekp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
7343 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_seekp_fpos, 28)
7344 basic_ostream_wchar* __thiscall basic_ostream_wchar_seekp_fpos(basic_ostream_wchar *this, fpos_mbstatet pos)
7346 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7348 TRACE("(%p %s)\n", this, debugstr_fpos_mbstatet(&pos));
7350 if(!ios_base_fail(&base->base)) {
7351 fpos_mbstatet seek;
7353 basic_streambuf_wchar_pubseekpos(basic_ios_wchar_rdbuf_get(base),
7354 &seek, pos, OPENMODE_out);
7355 if(seek.off==-1 && seek.pos==0 && MBSTATET_TO_INT(&seek.state)==0)
7356 basic_ios_wchar_setstate(base, IOSTATE_failbit);
7358 return this;
7361 /* ?tellp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@XZ */
7362 /* ?tellp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
7363 /* ?tellp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@XZ */
7364 /* ?tellp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
7365 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_tellp, 8)
7366 fpos_mbstatet* __thiscall basic_ostream_wchar_tellp(basic_ostream_wchar *this, fpos_mbstatet *ret)
7368 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7370 TRACE("(%p)\n", this);
7372 if(!ios_base_fail(&base->base)) {
7373 basic_streambuf_wchar_pubseekoff(basic_ios_wchar_rdbuf_get(base),
7374 ret, 0, SEEKDIR_cur, OPENMODE_out);
7375 }else {
7376 ret->off = -1;
7377 ret->pos = 0;
7378 memset(&ret->state, 0, sizeof(ret->state));
7380 return ret;
7383 /* ?write@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PB_WH@Z */
7384 /* ?write@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEB_W_J@Z */
7385 /* ?write@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@PBGH@Z */
7386 /* ?write@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEBG_J@Z */
7387 #if STREAMSIZE_BITS == 64
7388 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_write, 16)
7389 #else
7390 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_write, 12)
7391 #endif
7392 basic_ostream_wchar* __thiscall basic_ostream_wchar_write(basic_ostream_wchar *this, const wchar_t *str, streamsize count)
7394 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7396 TRACE("(%p %s %s)\n", this, debugstr_w(str), wine_dbgstr_longlong(count));
7398 if(!basic_ostream_wchar_sentry_create(this)
7399 || basic_streambuf_wchar_sputn(base->strbuf, str, count)!=count) {
7400 basic_ostream_wchar_sentry_destroy(this);
7401 basic_ios_wchar_setstate(base, IOSTATE_badbit);
7402 return this;
7405 basic_ostream_wchar_sentry_destroy(this);
7406 return this;
7409 static basic_ostream_wchar* basic_ostream_print_short(basic_ostream_wchar *this, short val, const num_put *numput)
7411 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7412 int state = IOSTATE_goodbit;
7414 TRACE("(%p %d)\n", this, val);
7416 if(basic_ostream_wchar_sentry_create(this)) {
7417 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7418 ostreambuf_iterator_wchar dest;
7420 memset(&dest, 0, sizeof(dest));
7421 dest.strbuf = strbuf;
7422 num_put_wchar_put_long(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base),
7423 (ios_base_flags_get(&base->base) & FMTFLAG_basefield & (FMTFLAG_oct | FMTFLAG_hex))
7424 ? (LONG)((unsigned short)val) : (LONG)val);
7426 basic_ostream_wchar_sentry_destroy(this);
7428 basic_ios_wchar_setstate(base, state);
7429 return this;
7432 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@F@Z */
7433 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@F@Z */
7434 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_short, 8)
7435 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_short(basic_ostream_wchar *this, short val)
7437 return basic_ostream_print_short(this, val, num_put_wchar_use_facet(
7438 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7441 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@F@Z */
7442 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@F@Z */
7443 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_short, 8)
7444 basic_ostream_wchar* __thiscall basic_ostream_short_print_short(basic_ostream_wchar *this, short val)
7446 return basic_ostream_print_short(this, val, num_put_short_use_facet(
7447 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7450 static basic_ostream_wchar* basic_ostream_print_ushort(basic_ostream_wchar *this, unsigned short val, const num_put *numput)
7452 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7453 int state = IOSTATE_goodbit;
7455 TRACE("(%p %d)\n", this, val);
7457 if(basic_ostream_wchar_sentry_create(this)) {
7458 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7459 ostreambuf_iterator_wchar dest;
7461 memset(&dest, 0, sizeof(dest));
7462 dest.strbuf = strbuf;
7463 num_put_wchar_put_ulong(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
7465 basic_ostream_wchar_sentry_destroy(this);
7467 basic_ios_wchar_setstate(base, state);
7468 return this;
7471 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@G@Z */
7472 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@G@Z */
7473 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_ushort, 8)
7474 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_ushort(basic_ostream_wchar *this, unsigned short val)
7476 return basic_ostream_print_ushort(this, val, num_put_wchar_use_facet(
7477 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7480 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@G@Z */
7481 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@G@Z */
7482 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_ushort, 8)
7483 basic_ostream_wchar* __thiscall basic_ostream_short_print_ushort(basic_ostream_wchar *this, unsigned short val)
7485 return basic_ostream_print_ushort(this, val, num_put_short_use_facet(
7486 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7489 /* ??6std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@0@AAV10@G@Z */
7490 /* ??6std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@0@AEAV10@G@Z */
7491 basic_ostream_wchar* __cdecl basic_ostream_short_print_ushort_global(basic_ostream_wchar *ostr, unsigned short val)
7493 return basic_ostream_print_ushort(ostr, val, num_put_short_use_facet(
7494 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(ostr)))));
7497 static basic_ostream_wchar* basic_ostream_print_int(basic_ostream_wchar *this, int val, const num_put *numput)
7499 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7500 int state = IOSTATE_goodbit;
7502 TRACE("(%p %d)\n", this, val);
7504 if(basic_ostream_wchar_sentry_create(this)) {
7505 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7506 ostreambuf_iterator_wchar dest;
7508 memset(&dest, 0, sizeof(dest));
7509 dest.strbuf = strbuf;
7510 num_put_wchar_put_long(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
7512 basic_ostream_wchar_sentry_destroy(this);
7514 basic_ios_wchar_setstate(base, state);
7515 return this;
7518 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@H@Z */
7519 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@H@Z */
7520 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@J@Z */
7521 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@J@Z */
7522 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_int, 8)
7523 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_int(basic_ostream_wchar *this, int val)
7525 return basic_ostream_print_int(this, val, num_put_wchar_use_facet(
7526 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7529 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@H@Z */
7530 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@H@Z */
7531 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@J@Z */
7532 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@J@Z */
7533 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_int, 8)
7534 basic_ostream_wchar* __thiscall basic_ostream_short_print_int(basic_ostream_wchar *this, int val)
7536 return basic_ostream_print_int(this, val, num_put_short_use_facet(
7537 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7540 static basic_ostream_wchar* basic_ostream_print_uint(basic_ostream_wchar *this, unsigned int val, const num_put *numput)
7542 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7543 int state = IOSTATE_goodbit;
7545 TRACE("(%p %u)\n", this, val);
7547 if(basic_ostream_wchar_sentry_create(this)) {
7548 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7549 ostreambuf_iterator_wchar dest;
7551 memset(&dest, 0, sizeof(dest));
7552 dest.strbuf = strbuf;
7553 num_put_wchar_put_ulong(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
7555 basic_ostream_wchar_sentry_destroy(this);
7557 basic_ios_wchar_setstate(base, state);
7558 return this;
7561 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@I@Z */
7562 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@I@Z */
7563 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@K@Z */
7564 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@K@Z */
7565 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_uint, 8)
7566 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_uint(basic_ostream_wchar *this, unsigned int val)
7568 return basic_ostream_print_uint(this, val, num_put_wchar_use_facet(
7569 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7572 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@I@Z */
7573 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@I@Z */
7574 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@K@Z */
7575 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@K@Z */
7576 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_uint, 8)
7577 basic_ostream_wchar* __thiscall basic_ostream_short_print_uint(basic_ostream_wchar *this, unsigned int val)
7579 return basic_ostream_print_uint(this, val, num_put_short_use_facet(
7580 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7583 static basic_ostream_wchar* basic_ostream_print_float(basic_ostream_wchar *this, float val, const num_put *numput)
7585 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7586 int state = IOSTATE_goodbit;
7588 TRACE("(%p %f)\n", this, val);
7590 if(basic_ostream_wchar_sentry_create(this)) {
7591 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7592 ostreambuf_iterator_wchar dest;
7594 memset(&dest, 0, sizeof(dest));
7595 dest.strbuf = strbuf;
7596 num_put_wchar_put_double(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
7598 basic_ostream_wchar_sentry_destroy(this);
7600 basic_ios_wchar_setstate(base, state);
7601 return this;
7604 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@M@Z */
7605 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@M@Z */
7606 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_float, 8)
7607 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_float(basic_ostream_wchar *this, float val)
7609 return basic_ostream_print_float(this, val, num_put_wchar_use_facet(
7610 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7613 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@M@Z */
7614 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@M@Z */
7615 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_float, 8)
7616 basic_ostream_wchar* __thiscall basic_ostream_short_print_float(basic_ostream_wchar *this, float val)
7618 return basic_ostream_print_float(this, val, num_put_short_use_facet(
7619 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7622 static basic_ostream_wchar* basic_ostream_print_double(basic_ostream_wchar *this, double val, const num_put *numput)
7624 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7625 int state = IOSTATE_goodbit;
7627 TRACE("(%p %lf)\n", this, val);
7629 if(basic_ostream_wchar_sentry_create(this)) {
7630 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7631 ostreambuf_iterator_wchar dest;
7633 memset(&dest, 0, sizeof(dest));
7634 dest.strbuf = strbuf;
7635 num_put_wchar_put_double(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
7637 basic_ostream_wchar_sentry_destroy(this);
7639 basic_ios_wchar_setstate(base, state);
7640 return this;
7643 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@N@Z */
7644 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@N@Z */
7645 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_double, 12)
7646 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_double(basic_ostream_wchar *this, double val)
7648 return basic_ostream_print_double(this, val, num_put_wchar_use_facet(
7649 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7652 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@N@Z */
7653 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@N@Z */
7654 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_double, 12)
7655 basic_ostream_wchar* __thiscall basic_ostream_short_print_double(basic_ostream_wchar *this, double val)
7657 return basic_ostream_print_double(this, val, num_put_short_use_facet(
7658 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7661 static basic_ostream_wchar* basic_ostream_print_ldouble(basic_ostream_wchar *this, double val, const num_put *numput)
7663 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7664 int state = IOSTATE_goodbit;
7666 TRACE("(%p %lf)\n", this, val);
7668 if(basic_ostream_wchar_sentry_create(this)) {
7669 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7670 ostreambuf_iterator_wchar dest;
7672 memset(&dest, 0, sizeof(dest));
7673 dest.strbuf = strbuf;
7674 num_put_wchar_put_ldouble(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
7676 basic_ostream_wchar_sentry_destroy(this);
7678 basic_ios_wchar_setstate(base, state);
7679 return this;
7682 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@O@Z */
7683 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@O@Z */
7684 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_ldouble, 12)
7685 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_ldouble(basic_ostream_wchar *this, double val)
7687 return basic_ostream_print_ldouble(this, val, num_put_wchar_use_facet(
7688 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7691 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@O@Z */
7692 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@O@Z */
7693 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_ldouble, 12)
7694 basic_ostream_wchar* __thiscall basic_ostream_short_print_ldouble(basic_ostream_wchar *this, double val)
7696 return basic_ostream_print_ldouble(this, val, num_put_short_use_facet(
7697 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7700 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
7701 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
7702 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
7703 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
7704 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_streambuf, 8)
7705 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_streambuf(basic_ostream_wchar *this, basic_streambuf_wchar *val)
7707 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7708 IOSB_iostate state = IOSTATE_badbit;
7709 unsigned short c = '\n';
7711 TRACE("(%p %p)\n", this, val);
7713 if(basic_ostream_wchar_sentry_create(this)) {
7714 for(c = basic_streambuf_wchar_sgetc(val); c!=WEOF;
7715 c = basic_streambuf_wchar_snextc(val)) {
7716 state = IOSTATE_goodbit;
7718 if(basic_streambuf_wchar_sputc(base->strbuf, c) == WEOF) {
7719 state = IOSTATE_badbit;
7720 break;
7723 }else {
7724 state = IOSTATE_badbit;
7726 basic_ostream_wchar_sentry_destroy(this);
7728 ios_base_width_set(&base->base, 0);
7729 basic_ios_wchar_setstate(base, state);
7730 return this;
7733 static basic_ostream_wchar* basic_ostream_print_ptr(basic_ostream_wchar *this, const void *val, const num_put *numput)
7735 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7736 int state = IOSTATE_goodbit;
7738 TRACE("(%p %p)\n", this, val);
7740 if(basic_ostream_wchar_sentry_create(this)) {
7741 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7742 ostreambuf_iterator_wchar dest;
7744 memset(&dest, 0, sizeof(dest));
7745 dest.strbuf = strbuf;
7746 num_put_wchar_put_ptr(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
7748 basic_ostream_wchar_sentry_destroy(this);
7750 basic_ios_wchar_setstate(base, state);
7751 return this;
7754 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@PBX@Z */
7755 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@PEBX@Z */
7756 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_ptr, 8)
7757 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_ptr(basic_ostream_wchar *this, const void *val)
7759 return basic_ostream_print_ptr(this, val, num_put_wchar_use_facet(
7760 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7763 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@PBX@Z */
7764 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@PEBX@Z */
7765 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_ptr, 8)
7766 basic_ostream_wchar* __thiscall basic_ostream_short_print_ptr(basic_ostream_wchar *this, const void *val)
7768 return basic_ostream_print_ptr(this, val, num_put_short_use_facet(
7769 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7772 static basic_ostream_wchar* basic_ostream_print_int64(basic_ostream_wchar *this, __int64 val, const num_put *numput)
7774 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7775 int state = IOSTATE_goodbit;
7777 TRACE("(%p)\n", this);
7779 if(basic_ostream_wchar_sentry_create(this)) {
7780 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7781 ostreambuf_iterator_wchar dest;
7783 memset(&dest, 0, sizeof(dest));
7784 dest.strbuf = strbuf;
7785 num_put_wchar_put_int64(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
7787 basic_ostream_wchar_sentry_destroy(this);
7789 basic_ios_wchar_setstate(base, state);
7790 return this;
7793 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@_J@Z */
7794 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@_J@Z */
7795 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_int64, 12)
7796 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_int64(basic_ostream_wchar *this, __int64 val)
7798 return basic_ostream_print_int64(this, val, num_put_wchar_use_facet(
7799 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7802 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@_J@Z */
7803 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@_J@Z */
7804 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_int64, 12)
7805 basic_ostream_wchar* __thiscall basic_ostream_short_print_int64(basic_ostream_wchar *this, __int64 val)
7807 return basic_ostream_print_int64(this, val, num_put_short_use_facet(
7808 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7811 static basic_ostream_wchar* basic_ostream_print_uint64(basic_ostream_wchar *this, unsigned __int64 val, const num_put *numput)
7813 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7814 int state = IOSTATE_goodbit;
7816 TRACE("(%p)\n", this);
7818 if(basic_ostream_wchar_sentry_create(this)) {
7819 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7820 ostreambuf_iterator_wchar dest;
7822 memset(&dest, 0, sizeof(dest));
7823 dest.strbuf = strbuf;
7824 num_put_wchar_put_uint64(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
7826 basic_ostream_wchar_sentry_destroy(this);
7828 basic_ios_wchar_setstate(base, state);
7829 return this;
7832 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@_K@Z */
7833 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@_K@Z */
7834 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_uint64, 12)
7835 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_uint64(basic_ostream_wchar *this, unsigned __int64 val)
7837 return basic_ostream_print_uint64(this, val, num_put_wchar_use_facet(
7838 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7841 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@_K@Z */
7842 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@_K@Z */
7843 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_uint64, 12)
7844 basic_ostream_wchar* __thiscall basic_ostream_short_print_uint64(basic_ostream_wchar *this, unsigned __int64 val)
7846 return basic_ostream_print_uint64(this, val, num_put_short_use_facet(
7847 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7850 static basic_ostream_wchar* basic_ostream_print_bool(basic_ostream_wchar *this, MSVCP_bool val, const num_put *numput)
7852 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7853 int state = IOSTATE_goodbit;
7855 TRACE("(%p %x)\n", this, val);
7857 if(basic_ostream_wchar_sentry_create(this)) {
7858 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7859 ostreambuf_iterator_wchar dest;
7861 memset(&dest, 0, sizeof(dest));
7862 dest.strbuf = strbuf;
7863 num_put_wchar_put_bool(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
7865 basic_ostream_wchar_sentry_destroy(this);
7867 basic_ios_wchar_setstate(base, state);
7868 return this;
7871 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@_N@Z */
7872 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@_N@Z */
7873 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_bool, 8)
7874 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_bool(basic_ostream_wchar *this, MSVCP_bool val)
7876 return basic_ostream_print_bool(this, val, num_put_wchar_use_facet(
7877 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7880 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@_N@Z */
7881 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@_N@Z */
7882 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_bool, 8)
7883 basic_ostream_wchar* __thiscall basic_ostream_short_print_bool(basic_ostream_wchar *this, MSVCP_bool val)
7885 return basic_ostream_print_bool(this, val, num_put_short_use_facet(
7886 IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this)))));
7889 /* ?ends@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@AAV21@@Z */
7890 /* ?ends@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@AEAV21@@Z */
7891 /* ?ends@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@1@AAV21@@Z */
7892 /* ?ends@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@1@AEAV21@@Z */
7893 basic_ostream_wchar* __cdecl basic_ostream_wchar_ends(basic_ostream_wchar *ostr)
7895 TRACE("(%p)\n", ostr);
7897 basic_ostream_wchar_put(ostr, 0);
7898 return ostr;
7901 /* ?endl@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@AAV21@@Z */
7902 /* ?endl@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@AEAV21@@Z */
7903 /* ?endl@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@1@AAV21@@Z */
7904 /* ?endl@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@1@AEAV21@@Z */
7905 basic_ostream_wchar* __cdecl basic_ostream_wchar_endl(basic_ostream_wchar *ostr)
7907 TRACE("(%p)\n", ostr);
7909 basic_ostream_wchar_put(ostr, '\n');
7910 basic_ostream_wchar_flush(ostr);
7911 return ostr;
7914 /* ??$?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 */
7915 /* ??$?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 */
7916 /* ??$?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 */
7917 /* ??$?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 */
7918 basic_ostream_wchar* __cdecl basic_ostream_wchar_print_bstr(basic_ostream_wchar *ostr, const basic_string_wchar *str)
7920 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(ostr);
7921 IOSB_iostate state = IOSTATE_goodbit;
7923 TRACE("(%p %p)\n", ostr, str);
7925 if(basic_ostream_wchar_sentry_create(ostr)) {
7926 MSVCP_size_t len = MSVCP_basic_string_wchar_length(str);
7927 streamsize pad = (base->base.wide>len ? base->base.wide-len : 0);
7929 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
7930 for(; pad!=0; pad--) {
7931 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
7932 state = IOSTATE_badbit;
7933 break;
7938 if(state == IOSTATE_goodbit) {
7939 if(basic_streambuf_wchar_sputn(base->strbuf, MSVCP_basic_string_wchar_c_str(str), len) != len)
7940 state = IOSTATE_badbit;
7943 if(state == IOSTATE_goodbit) {
7944 for(; pad!=0; pad--) {
7945 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
7946 state = IOSTATE_badbit;
7947 break;
7952 base->base.wide = 0;
7953 }else {
7954 state = IOSTATE_badbit;
7956 basic_ostream_wchar_sentry_destroy(ostr);
7958 basic_ios_wchar_setstate(base, state);
7959 return ostr;
7962 /* ??$?6_WU?$char_traits@_W@std@@@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AAV10@_W@Z */
7963 /* ??$?6_WU?$char_traits@_W@std@@@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AEAV10@_W@Z */
7964 /* ??$?6GU?$char_traits@G@std@@@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@0@AAV10@G@Z */
7965 /* ??$?6GU?$char_traits@G@std@@@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@0@AEAV10@G@Z */
7966 basic_ostream_wchar* __cdecl basic_ostream_wchar_print_ch(basic_ostream_wchar *ostr, wchar_t ch)
7968 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(ostr);
7969 IOSB_iostate state = IOSTATE_goodbit;
7971 TRACE("(%p %d)\n", ostr, ch);
7973 if(basic_ostream_wchar_sentry_create(ostr)) {
7974 streamsize pad = (base->base.wide>1 ? base->base.wide-1 : 0);
7976 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
7977 for(; pad!=0; pad--) {
7978 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
7979 state = IOSTATE_badbit;
7980 break;
7985 if(state == IOSTATE_goodbit) {
7986 if(basic_streambuf_wchar_sputc(base->strbuf, ch) == WEOF)
7987 state = IOSTATE_badbit;
7990 if(state == IOSTATE_goodbit) {
7991 for(; pad!=0; pad--) {
7992 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
7993 state = IOSTATE_badbit;
7994 break;
7999 base->base.wide = 0;
8000 }else {
8001 state = IOSTATE_badbit;
8003 basic_ostream_wchar_sentry_destroy(ostr);
8005 basic_ios_wchar_setstate(base, state);
8006 return ostr;
8009 /* ??$?6_WU?$char_traits@_W@std@@@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AAV10@PB_W@Z */
8010 /* ??$?6_WU?$char_traits@_W@std@@@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AEAV10@PEB_W@Z */
8011 /* ??$?6GU?$char_traits@G@std@@@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@0@AAV10@PBG@Z */
8012 /* ??$?6GU?$char_traits@G@std@@@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@0@AEAV10@PEBG@Z */
8013 basic_ostream_wchar* __cdecl basic_ostream_wchar_print_str(basic_ostream_wchar *ostr, const wchar_t *str)
8015 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(ostr);
8016 IOSB_iostate state = IOSTATE_goodbit;
8018 TRACE("(%p %s)\n", ostr, debugstr_w(str));
8020 if(basic_ostream_wchar_sentry_create(ostr)) {
8021 MSVCP_size_t len = wcslen(str);
8022 streamsize pad = (base->base.wide>len ? base->base.wide-len : 0);
8024 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
8025 for(; pad!=0; pad--) {
8026 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
8027 state = IOSTATE_badbit;
8028 break;
8033 if(state == IOSTATE_goodbit) {
8034 if(basic_streambuf_wchar_sputn(base->strbuf, str, len) != len)
8035 state = IOSTATE_badbit;
8038 if(state == IOSTATE_goodbit) {
8039 for(; pad!=0; pad--) {
8040 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
8041 state = IOSTATE_badbit;
8042 break;
8047 base->base.wide = 0;
8048 }else {
8049 state = IOSTATE_badbit;
8051 basic_ostream_wchar_sentry_destroy(ostr);
8053 basic_ios_wchar_setstate(base, state);
8054 return ostr;
8057 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
8058 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
8059 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
8060 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
8061 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_func, 8)
8062 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_func(basic_ostream_wchar *this,
8063 basic_ostream_wchar* (__cdecl *pfunc)(basic_ostream_wchar*))
8065 TRACE("(%p %p)\n", this, pfunc);
8066 pfunc(this);
8067 return this;
8070 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@_WU?$char_traits@_W@std@@@1@AAV21@@Z@Z */
8071 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@_WU?$char_traits@_W@std@@@1@AEAV21@@Z@Z */
8072 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@GU?$char_traits@G@std@@@1@AAV21@@Z@Z */
8073 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@GU?$char_traits@G@std@@@1@AEAV21@@Z@Z */
8074 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_func_basic_ios, 8)
8075 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_func_basic_ios(basic_ostream_wchar *this,
8076 basic_ios_wchar* (__cdecl *pfunc)(basic_ios_wchar*))
8078 TRACE("(%p %p)\n", this, pfunc);
8079 pfunc(basic_ostream_wchar_get_basic_ios(this));
8080 return this;
8083 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
8084 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
8085 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
8086 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
8087 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_func_ios_base, 8)
8088 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_func_ios_base(
8089 basic_ostream_wchar *this, ios_base* (__cdecl *pfunc)(ios_base*))
8091 TRACE("(%p %p)\n", this, pfunc);
8092 pfunc(&basic_ostream_wchar_get_basic_ios(this)->base);
8093 return this;
8096 /* ?swap@?$basic_ostream@GU?$char_traits@G@std@@@std@@IAEXAAV12@@Z */
8097 /* ?swap@?$basic_ostream@GU?$char_traits@G@std@@@std@@IEAAXAEAV12@@Z */
8098 /* ?swap@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@IAEXAAV12@@Z */
8099 /* ?swap@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@IEAAXAEAV12@@Z */
8100 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_swap, 8)
8101 void __thiscall basic_ostream_wchar_swap(basic_ostream_wchar *this, basic_ostream_wchar *r)
8103 TRACE("(%p %p)\n", this, r);
8105 if(this == r)
8106 return;
8108 basic_ios_wchar_swap(basic_ostream_wchar_get_basic_ios(this),
8109 basic_ostream_wchar_get_basic_ios(r));
8112 /* Caution: basic_istream uses virtual inheritance. */
8113 static inline basic_ios_char* basic_istream_char_get_basic_ios(basic_istream_char *this)
8115 return (basic_ios_char*)((char*)this+this->vbtable[1]);
8118 static inline basic_ios_char* basic_istream_char_to_basic_ios(basic_istream_char *ptr)
8120 return (basic_ios_char*)((char*)ptr+basic_istream_char_vbtable[1]);
8123 static inline basic_istream_char* basic_istream_char_from_basic_ios(basic_ios_char *ptr)
8125 return (basic_istream_char*)((char*)ptr-basic_istream_char_vbtable[1]);
8128 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N1@Z */
8129 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N1@Z */
8130 DEFINE_THISCALL_WRAPPER(basic_istream_char_ctor_init, 20)
8131 basic_istream_char* __thiscall basic_istream_char_ctor_init(basic_istream_char *this, basic_streambuf_char *strbuf, MSVCP_bool isstd, MSVCP_bool noinit, MSVCP_bool virt_init)
8133 basic_ios_char *base;
8135 TRACE("(%p %p %d %d %d)\n", this, strbuf, isstd, noinit, virt_init);
8137 if(virt_init) {
8138 this->vbtable = basic_istream_char_vbtable;
8139 base = basic_istream_char_get_basic_ios(this);
8140 INIT_BASIC_IOS_VTORDISP(base);
8141 basic_ios_char_ctor(base);
8142 }else {
8143 base = basic_istream_char_get_basic_ios(this);
8146 base->base.vtable = &MSVCP_basic_istream_char_vtable;
8147 this->count = 0;
8148 if(!noinit)
8149 basic_ios_char_init(base, strbuf, isstd);
8150 return this;
8153 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z */
8154 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z */
8155 DEFINE_THISCALL_WRAPPER(basic_istream_char_ctor, 16)
8156 basic_istream_char* __thiscall basic_istream_char_ctor(basic_istream_char *this, basic_streambuf_char *strbuf, MSVCP_bool isstd, MSVCP_bool virt_init)
8158 return basic_istream_char_ctor_init(this, strbuf, isstd, FALSE, virt_init);
8161 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@W4_Uninitialized@1@@Z */
8162 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
8163 DEFINE_THISCALL_WRAPPER(basic_istream_char_ctor_uninitialized, 12)
8164 basic_istream_char* __thiscall basic_istream_char_ctor_uninitialized(basic_istream_char *this, int uninitialized, MSVCP_bool virt_init)
8166 basic_ios_char *base;
8168 TRACE("(%p %d %d)\n", this, uninitialized, virt_init);
8170 if(virt_init) {
8171 this->vbtable = basic_istream_char_vbtable;
8172 base = basic_istream_char_get_basic_ios(this);
8173 INIT_BASIC_IOS_VTORDISP(base);
8174 basic_ios_char_ctor(base);
8175 }else {
8176 base = basic_istream_char_get_basic_ios(this);
8179 base->base.vtable = &MSVCP_basic_istream_char_vtable;
8180 ios_base_Addstd(&base->base);
8181 return this;
8184 /* ??1?$basic_istream@DU?$char_traits@D@std@@@std@@UAE@XZ */
8185 /* ??1?$basic_istream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
8186 DEFINE_THISCALL_WRAPPER(basic_istream_char_dtor, 4)
8187 void __thiscall basic_istream_char_dtor(basic_ios_char *base)
8189 basic_istream_char *this = basic_istream_char_from_basic_ios(base);
8191 /* don't destroy virtual base here */
8192 TRACE("(%p)\n", this);
8195 /* ??_D?$basic_istream@DU?$char_traits@D@std@@@std@@QAEXXZ */
8196 /* ??_D?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
8197 DEFINE_THISCALL_WRAPPER(basic_istream_char_vbase_dtor, 4)
8198 void __thiscall basic_istream_char_vbase_dtor(basic_istream_char *this)
8200 basic_ios_char *base = basic_istream_char_to_basic_ios(this);
8202 TRACE("(%p)\n", this);
8204 basic_istream_char_dtor(base);
8205 basic_ios_char_dtor(base);
8208 DEFINE_THISCALL_WRAPPER(basic_istream_char_vector_dtor, 8)
8209 basic_istream_char* __thiscall basic_istream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
8211 basic_istream_char *this = basic_istream_char_from_basic_ios(base);
8213 TRACE("(%p %x)\n", this, flags);
8215 if(flags & 2) {
8216 /* we have an array, with the number of elements stored before the first object */
8217 INT_PTR i, *ptr = (INT_PTR *)this-1;
8219 for(i=*ptr-1; i>=0; i--)
8220 basic_istream_char_vbase_dtor(this+i);
8221 MSVCRT_operator_delete(ptr);
8222 } else {
8223 basic_istream_char_vbase_dtor(this);
8224 if(flags & 1)
8225 MSVCRT_operator_delete(this);
8228 return this;
8231 /* ?_Ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE_N_N@Z */
8232 /* ?_Ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_N_N@Z */
8233 DEFINE_THISCALL_WRAPPER(basic_istream_char__Ipfx, 8)
8234 MSVCP_bool __thiscall basic_istream_char__Ipfx(basic_istream_char *this, MSVCP_bool noskip)
8236 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8238 TRACE("(%p %d)\n", this, noskip);
8240 if(ios_base_good(&base->base)) {
8241 if(basic_ios_char_tie_get(base))
8242 basic_ostream_char_flush(basic_ios_char_tie_get(base));
8244 if(!noskip && (ios_base_flags_get(&base->base) & FMTFLAG_skipws)) {
8245 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8246 const ctype_char *ctype = ctype_char_use_facet(IOS_LOCALE(base->strbuf));
8247 int ch;
8249 for(ch = basic_streambuf_char_sgetc(strbuf); ;
8250 ch = basic_streambuf_char_snextc(strbuf)) {
8251 if(ch == EOF) {
8252 basic_ios_char_setstate(base, IOSTATE_eofbit);
8253 break;
8256 if(!ctype_char_is_ch(ctype, _SPACE|_BLANK, ch))
8257 break;
8262 if(!ios_base_good(&base->base)) {
8263 basic_ios_char_setstate(base, IOSTATE_failbit);
8264 return FALSE;
8267 return TRUE;
8270 /* ?ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE_N_N@Z */
8271 /* ?ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_N_N@Z */
8272 DEFINE_THISCALL_WRAPPER(basic_istream_char_ipfx, 8)
8273 MSVCP_bool __thiscall basic_istream_char_ipfx(basic_istream_char *this, MSVCP_bool noskip)
8275 return basic_istream_char__Ipfx(this, noskip);
8278 /* ?isfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEXXZ */
8279 /* ?isfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
8280 DEFINE_THISCALL_WRAPPER(basic_istream_char_isfx, 4)
8281 void __thiscall basic_istream_char_isfx(basic_istream_char *this)
8283 TRACE("(%p)\n", this);
8286 static BOOL basic_istream_char_sentry_create(basic_istream_char *istr, MSVCP_bool noskip)
8288 basic_ios_char *base = basic_istream_char_get_basic_ios(istr);
8290 if(basic_ios_char_rdbuf_get(base))
8291 call_basic_streambuf_char__Lock(base->strbuf);
8293 return basic_istream_char_ipfx(istr, noskip);
8296 static void basic_istream_char_sentry_destroy(basic_istream_char *istr)
8298 basic_ios_char *base = basic_istream_char_get_basic_ios(istr);
8300 if(basic_ios_char_rdbuf_get(base))
8301 call_basic_streambuf_char__Unlock(base->strbuf);
8304 /* ?gcount@?$basic_istream@DU?$char_traits@D@std@@@std@@QBEHXZ */
8305 /* ?gcount@?$basic_istream@DU?$char_traits@D@std@@@std@@QEBA_JXZ */
8306 /* ?gcount@?$basic_istream@DU?$char_traits@D@std@@@std@@QBA_JXZ */
8307 /* ?gcount@?$basic_istream@DU?$char_traits@D@std@@@std@@QBE_JXZ */
8308 DEFINE_THISCALL_WRAPPER(basic_istream_char_gcount, 4)
8309 streamsize __thiscall basic_istream_char_gcount(const basic_istream_char *this)
8311 TRACE("(%p)\n", this);
8312 return this->count;
8315 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHXZ */
8316 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAHXZ */
8317 DEFINE_THISCALL_WRAPPER(basic_istream_char_get, 4)
8318 int __thiscall basic_istream_char_get(basic_istream_char *this)
8320 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8321 int ret;
8323 TRACE("(%p)\n", this);
8325 this->count = 0;
8327 if(!basic_istream_char_sentry_create(this, TRUE)) {
8328 basic_istream_char_sentry_destroy(this);
8329 return EOF;
8332 ret = basic_streambuf_char_sbumpc(basic_ios_char_rdbuf_get(base));
8333 basic_istream_char_sentry_destroy(this);
8334 if(ret == EOF)
8335 basic_ios_char_setstate(base, IOSTATE_eofbit|IOSTATE_failbit);
8336 else
8337 this->count++;
8339 return ret;
8342 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@AAD@Z */
8343 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEAD@Z */
8344 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_ch, 8)
8345 basic_istream_char* __thiscall basic_istream_char_get_ch(basic_istream_char *this, char *ch)
8347 int ret;
8349 TRACE("(%p %p)\n", this, ch);
8351 ret = basic_istream_char_get(this);
8352 if(ret != EOF)
8353 *ch = (char)ret;
8354 return this;
8357 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADHD@Z */
8358 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_JD@Z */
8359 #if STREAMSIZE_BITS == 64
8360 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_str_delim, 20)
8361 #else
8362 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_str_delim, 16)
8363 #endif
8364 basic_istream_char* __thiscall basic_istream_char_get_str_delim(basic_istream_char *this, char *str, streamsize count, char delim)
8366 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8367 int ch = delim;
8369 TRACE("(%p %p %s %c)\n", this, str, wine_dbgstr_longlong(count), delim);
8371 this->count = 0;
8373 if(basic_istream_char_sentry_create(this, TRUE)) {
8374 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8376 for(ch = basic_streambuf_char_sgetc(strbuf); count>1;
8377 ch = basic_streambuf_char_snextc(strbuf)) {
8378 if(ch==EOF || ch==delim)
8379 break;
8381 *str++ = ch;
8382 this->count++;
8383 count--;
8386 basic_istream_char_sentry_destroy(this);
8388 basic_ios_char_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) |
8389 (ch==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
8390 if(count > 0)
8391 *str = 0;
8392 return this;
8395 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADH@Z */
8396 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_J@Z */
8397 #if STREAMSIZE_BITS == 64
8398 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_str, 16)
8399 #else
8400 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_str, 12)
8401 #endif
8402 basic_istream_char* __thiscall basic_istream_char_get_str(basic_istream_char *this, char *str, streamsize count)
8404 return basic_istream_char_get_str_delim(this, str, count, '\n');
8407 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@AAV?$basic_streambuf@DU?$char_traits@D@std@@@2@D@Z */
8408 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@D@Z */
8409 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_streambuf_delim, 12)
8410 basic_istream_char* __thiscall basic_istream_char_get_streambuf_delim(basic_istream_char *this, basic_streambuf_char *strbuf, char delim)
8412 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8413 int ch = delim;
8415 TRACE("(%p %p %c)\n", this, strbuf, delim);
8417 this->count = 0;
8419 if(basic_istream_char_sentry_create(this, TRUE)) {
8420 basic_streambuf_char *strbuf_read = basic_ios_char_rdbuf_get(base);
8422 for(ch = basic_streambuf_char_sgetc(strbuf_read); ;
8423 ch = basic_streambuf_char_snextc(strbuf_read)) {
8424 if(ch==EOF || ch==delim)
8425 break;
8427 if(basic_streambuf_char_sputc(strbuf, ch) == EOF)
8428 break;
8429 this->count++;
8432 basic_istream_char_sentry_destroy(this);
8434 basic_ios_char_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) |
8435 (ch==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
8436 return this;
8439 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@AAV?$basic_streambuf@DU?$char_traits@D@std@@@2@@Z */
8440 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@@Z */
8441 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_streambuf, 8)
8442 basic_istream_char* __thiscall basic_istream_char_get_streambuf(basic_istream_char *this, basic_streambuf_char *strbuf)
8444 return basic_istream_char_get_streambuf_delim(this, strbuf, '\n');
8447 /* ?getline@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADHD@Z */
8448 /* ?getline@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_JD@Z */
8449 #if STREAMSIZE_BITS == 64
8450 DEFINE_THISCALL_WRAPPER(basic_istream_char_getline_delim, 20)
8451 #else
8452 DEFINE_THISCALL_WRAPPER(basic_istream_char_getline_delim, 16)
8453 #endif
8454 basic_istream_char* __thiscall basic_istream_char_getline_delim(basic_istream_char *this, char *str, streamsize count, char delim)
8456 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8457 int ch = (unsigned char)delim;
8459 TRACE("(%p %p %s %c)\n", this, str, wine_dbgstr_longlong(count), delim);
8461 this->count = 0;
8463 if(basic_istream_char_sentry_create(this, TRUE) && count>0) {
8464 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8466 while(count > 1) {
8467 ch = basic_streambuf_char_sbumpc(strbuf);
8469 if(ch==EOF || ch==(unsigned char)delim)
8470 break;
8472 *str++ = ch;
8473 this->count++;
8474 count--;
8477 if(ch == (unsigned char)delim)
8478 this->count++;
8479 else if(ch != EOF) {
8480 ch = basic_streambuf_char_sgetc(strbuf);
8482 if(ch == (unsigned char)delim) {
8483 basic_streambuf_char__Gninc(strbuf);
8484 this->count++;
8488 basic_istream_char_sentry_destroy(this);
8490 basic_ios_char_setstate(base, (ch==EOF ? IOSTATE_eofbit : IOSTATE_goodbit) |
8491 (!this->count || (ch!=(unsigned char)delim && ch!=EOF) ? IOSTATE_failbit : IOSTATE_goodbit));
8492 if(count > 0)
8493 *str = 0;
8494 return this;
8497 /* ?getline@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADH@Z */
8498 /* ?getline@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_J@Z */
8499 #if STREAMSIZE_BITS == 64
8500 DEFINE_THISCALL_WRAPPER(basic_istream_char_getline, 16)
8501 #else
8502 DEFINE_THISCALL_WRAPPER(basic_istream_char_getline, 12)
8503 #endif
8504 basic_istream_char* __thiscall basic_istream_char_getline(basic_istream_char *this, char *str, streamsize count)
8506 return basic_istream_char_getline_delim(this, str, count, '\n');
8509 /* ?ignore@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@HH@Z */
8510 /* ?ignore@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@_JH@Z */
8511 #if STREAMSIZE_BITS == 64
8512 DEFINE_THISCALL_WRAPPER(basic_istream_char_ignore, 16)
8513 #else
8514 DEFINE_THISCALL_WRAPPER(basic_istream_char_ignore, 12)
8515 #endif
8516 basic_istream_char* __thiscall basic_istream_char_ignore(basic_istream_char *this, streamsize count, int delim)
8518 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8519 int ch = (unsigned char)delim;
8520 unsigned int state;
8522 TRACE("(%p %s %d)\n", this, wine_dbgstr_longlong(count), delim);
8524 this->count = 0;
8526 if(basic_istream_char_sentry_create(this, TRUE)) {
8527 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8528 state = IOSTATE_goodbit;
8530 while(count > 0) {
8531 ch = basic_streambuf_char_sbumpc(strbuf);
8533 if(ch==EOF) {
8534 state = IOSTATE_eofbit;
8535 break;
8538 if(ch==(unsigned char)delim)
8539 break;
8541 this->count++;
8542 if(count != INT_MAX)
8543 count--;
8545 }else
8546 state = IOSTATE_failbit;
8547 basic_istream_char_sentry_destroy(this);
8549 basic_ios_char_setstate(base, state);
8550 return this;
8553 /* ?ws@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@1@AAV21@@Z */
8554 /* ?ws@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@1@AEAV21@@Z */
8555 basic_istream_char* __cdecl ws_basic_istream_char(basic_istream_char *istream)
8557 basic_ios_char *base = basic_istream_char_get_basic_ios(istream);
8558 int ch = '\n';
8560 TRACE("(%p)\n", istream);
8562 if(basic_istream_char_sentry_create(istream, TRUE)) {
8563 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8564 const ctype_char *ctype = ctype_char_use_facet(IOS_LOCALE(strbuf));
8566 for(ch = basic_streambuf_char_sgetc(strbuf); ctype_char_is_ch(ctype, _SPACE, ch);
8567 ch = basic_streambuf_char_snextc(strbuf)) {
8568 if(ch == EOF)
8569 break;
8572 basic_istream_char_sentry_destroy(istream);
8574 if(ch == EOF)
8575 basic_ios_char_setstate(base, IOSTATE_eofbit);
8576 return istream;
8579 /* ?peek@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHXZ */
8580 /* ?peek@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAHXZ */
8581 DEFINE_THISCALL_WRAPPER(basic_istream_char_peek, 4)
8582 int __thiscall basic_istream_char_peek(basic_istream_char *this)
8584 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8585 int ret = EOF;
8587 TRACE("(%p)\n", this);
8589 this->count = 0;
8591 if(basic_istream_char_sentry_create(this, TRUE))
8592 ret = basic_streambuf_char_sgetc(basic_ios_char_rdbuf_get(base));
8593 basic_istream_char_sentry_destroy(this);
8595 if (ret == EOF)
8596 basic_ios_char_setstate(base, IOSTATE_eofbit);
8598 return ret;
8601 /* ?_Read_s@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADIH@Z */
8602 /* ?_Read_s@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_K_J@Z */
8603 #if STREAMSIZE_BITS == 64
8604 DEFINE_THISCALL_WRAPPER(basic_istream_char__Read_s, 20)
8605 #else
8606 DEFINE_THISCALL_WRAPPER(basic_istream_char__Read_s, 16)
8607 #endif
8608 basic_istream_char* __thiscall basic_istream_char__Read_s(basic_istream_char *this, char *str, MSVCP_size_t size, streamsize count)
8610 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8611 IOSB_iostate state = IOSTATE_goodbit;
8613 TRACE("(%p %p %lu %s)\n", this, str, size, wine_dbgstr_longlong(count));
8615 if(basic_istream_char_sentry_create(this, TRUE)) {
8616 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8618 this->count = basic_streambuf_char__Sgetn_s(strbuf, str, size, count);
8619 if(this->count != count)
8620 state |= IOSTATE_failbit | IOSTATE_eofbit;
8621 }else {
8622 this->count = 0;
8624 basic_istream_char_sentry_destroy(this);
8626 basic_ios_char_setstate(base, state);
8627 return this;
8630 /* ?read@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADH@Z */
8631 /* ?read@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_J@Z */
8632 #if STREAMSIZE_BITS == 64
8633 DEFINE_THISCALL_WRAPPER(basic_istream_char_read, 16)
8634 #else
8635 DEFINE_THISCALL_WRAPPER(basic_istream_char_read, 12)
8636 #endif
8637 basic_istream_char* __thiscall basic_istream_char_read(basic_istream_char *this, char *str, streamsize count)
8639 return basic_istream_char__Read_s(this, str, -1, count);
8642 /* ?_Readsome_s@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHPADIH@Z */
8643 /* ?_Readsome_s@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_K_J@Z */
8644 #if STREAMSIZE_BITS == 64
8645 DEFINE_THISCALL_WRAPPER(basic_istream_char__Readsome_s, 20)
8646 #else
8647 DEFINE_THISCALL_WRAPPER(basic_istream_char__Readsome_s, 16)
8648 #endif
8649 streamsize __thiscall basic_istream_char__Readsome_s(basic_istream_char *this, char *str, MSVCP_size_t size, streamsize count)
8651 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8652 IOSB_iostate state = IOSTATE_goodbit;
8654 TRACE("(%p %p %lu %s)\n", this, str, size, wine_dbgstr_longlong(count));
8656 this->count = 0;
8658 if(basic_istream_char_sentry_create(this, TRUE)) {
8659 streamsize avail = basic_streambuf_char_in_avail(basic_ios_char_rdbuf_get(base));
8660 if(avail > count)
8661 avail = count;
8663 if(avail == -1)
8664 state |= IOSTATE_eofbit;
8665 else if(avail > 0)
8666 basic_istream_char__Read_s(this, str, size, avail);
8667 }else {
8668 state |= IOSTATE_failbit;
8670 basic_istream_char_sentry_destroy(this);
8672 basic_ios_char_setstate(base, state);
8673 return this->count;
8676 /* ?readsome@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHPADH@Z */
8677 /* ?readsome@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_J@Z */
8678 #if STREAMSIZE_BITS == 64
8679 DEFINE_THISCALL_WRAPPER(basic_istream_char_readsome, 16)
8680 #else
8681 DEFINE_THISCALL_WRAPPER(basic_istream_char_readsome, 12)
8682 #endif
8683 streamsize __thiscall basic_istream_char_readsome(basic_istream_char *this, char *str, streamsize count)
8685 return basic_istream_char__Readsome_s(this, str, count, count);
8688 /* ?putback@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@D@Z */
8689 /* ?putback@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@D@Z */
8690 DEFINE_THISCALL_WRAPPER(basic_istream_char_putback, 8)
8691 basic_istream_char* __thiscall basic_istream_char_putback(basic_istream_char *this, char ch)
8693 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8694 IOSB_iostate state = IOSTATE_goodbit;
8696 TRACE("(%p %c)\n", this, ch);
8698 this->count = 0;
8700 if(basic_istream_char_sentry_create(this, TRUE)) {
8701 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8703 if(!ios_base_good(&base->base))
8704 state |= IOSTATE_failbit;
8705 else if(!strbuf || basic_streambuf_char_sputbackc(strbuf, ch)==EOF)
8706 state |= IOSTATE_badbit;
8708 basic_istream_char_sentry_destroy(this);
8710 basic_ios_char_setstate(base, state);
8711 return this;
8714 /* ?unget@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@XZ */
8715 /* ?unget@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@XZ */
8716 DEFINE_THISCALL_WRAPPER(basic_istream_char_unget, 4)
8717 basic_istream_char* __thiscall basic_istream_char_unget(basic_istream_char *this)
8719 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8720 IOSB_iostate state = IOSTATE_goodbit;
8722 TRACE("(%p)\n", this);
8724 this->count = 0;
8726 if(basic_istream_char_sentry_create(this, TRUE)) {
8727 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8729 if(!ios_base_good(&base->base))
8730 state |= IOSTATE_failbit;
8731 else if(!strbuf || basic_streambuf_char_sungetc(strbuf)==EOF)
8732 state |= IOSTATE_badbit;
8734 basic_istream_char_sentry_destroy(this);
8736 basic_ios_char_setstate(base, state);
8737 return this;
8740 /* ?sync@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHXZ */
8741 /* ?sync@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAHXZ */
8742 DEFINE_THISCALL_WRAPPER(basic_istream_char_sync, 4)
8743 int __thiscall basic_istream_char_sync(basic_istream_char *this)
8745 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8746 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8748 TRACE("(%p)\n", this);
8750 if(!strbuf)
8751 return -1;
8753 if(basic_istream_char_sentry_create(this, TRUE)) {
8754 if(basic_streambuf_char_pubsync(strbuf) != -1) {
8755 basic_istream_char_sentry_destroy(this);
8756 return 0;
8759 basic_istream_char_sentry_destroy(this);
8761 basic_ios_char_setstate(base, IOSTATE_badbit);
8762 return -1;
8765 /* ?tellg@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@XZ */
8766 /* ?tellg@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
8767 DEFINE_THISCALL_WRAPPER(basic_istream_char_tellg, 8)
8768 fpos_mbstatet* __thiscall basic_istream_char_tellg(basic_istream_char *this, fpos_mbstatet *ret)
8770 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8772 TRACE("(%p %p)\n", this, ret);
8774 #if _MSVCP_VER >= 110
8775 if(basic_istream_char_sentry_create(this, TRUE)) {
8776 basic_streambuf_char_pubseekoff(basic_ios_char_rdbuf_get(base),
8777 ret, 0, SEEKDIR_cur, OPENMODE_in);
8779 if(ret->off==-1 && ret->pos==0 && MBSTATET_TO_INT(&ret->state)==0)
8780 basic_ios_char_setstate(base, IOSTATE_failbit);
8781 }else {
8782 ret->off = -1;
8783 ret->pos = 0;
8784 memset(&ret->state, 0, sizeof(ret->state));
8786 basic_istream_char_sentry_destroy(this);
8787 #else
8788 if(ios_base_fail(&base->base)) {
8789 ret->off = -1;
8790 ret->pos = 0;
8791 memset(&ret->state, 0, sizeof(ret->state));
8792 return ret;
8795 basic_streambuf_char_pubseekoff(basic_ios_char_rdbuf_get(base),
8796 ret, 0, SEEKDIR_cur, OPENMODE_in);
8798 if(ret->off==-1 && ret->pos==0 && MBSTATET_TO_INT(&ret->state)==0)
8799 basic_ios_char_setstate(base, IOSTATE_failbit);
8800 #endif
8802 return ret;
8805 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@JW4seekdir@ios_base@2@@Z */
8806 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@_JW4seekdir@ios_base@2@@Z */
8807 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@JH@Z */
8808 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@_JH@Z */
8809 #if STREAMOFF_BITS == 64
8810 DEFINE_THISCALL_WRAPPER(basic_istream_char_seekg, 16)
8811 #else
8812 DEFINE_THISCALL_WRAPPER(basic_istream_char_seekg, 12)
8813 #endif
8814 basic_istream_char* __thiscall basic_istream_char_seekg(basic_istream_char *this, streamoff off, int dir)
8816 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8817 #if _MSVCP_VER >= 110
8818 IOSB_iostate state;
8820 TRACE("(%p %s %d)\n", this, wine_dbgstr_longlong(off), dir);
8822 state = ios_base_rdstate(&base->base);
8823 ios_base_clear(&base->base, state & ~IOSTATE_eofbit);
8825 if(basic_istream_char_sentry_create(this, TRUE)) {
8826 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8827 fpos_mbstatet ret;
8829 basic_streambuf_char_pubseekoff(strbuf, &ret, off, dir, OPENMODE_in);
8831 if(ret.off==-1 && ret.pos==0 && MBSTATET_TO_INT(&ret.state)==0)
8832 basic_ios_char_setstate(base, IOSTATE_failbit);
8834 basic_istream_char_sentry_destroy(this);
8835 #else
8836 TRACE("(%p %s %d)\n", this, wine_dbgstr_longlong(off), dir);
8838 if(!ios_base_fail(&base->base)) {
8839 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8840 fpos_mbstatet ret;
8842 basic_streambuf_char_pubseekoff(strbuf, &ret, off, dir, OPENMODE_in);
8844 if(ret.off==-1 && ret.pos==0 && MBSTATET_TO_INT(&ret.state)==0)
8845 basic_ios_char_setstate(base, IOSTATE_failbit);
8846 else
8847 basic_ios_char_clear(base, IOSTATE_goodbit);
8848 return this;
8849 }else
8850 basic_ios_char_clear(base, IOSTATE_goodbit);
8851 #endif
8852 return this;
8855 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
8856 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
8857 DEFINE_THISCALL_WRAPPER(basic_istream_char_seekg_fpos, 28)
8858 basic_istream_char* __thiscall basic_istream_char_seekg_fpos(basic_istream_char *this, fpos_mbstatet pos)
8860 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8861 #if _MSVCP_VER >= 110
8862 IOSB_iostate state;
8864 TRACE("(%p %s)\n", this, debugstr_fpos_mbstatet(&pos));
8866 state = ios_base_rdstate(&base->base);
8867 ios_base_clear(&base->base, state & ~IOSTATE_eofbit);
8869 if(basic_istream_char_sentry_create(this, TRUE)) {
8870 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8871 fpos_mbstatet ret;
8873 basic_streambuf_char_pubseekpos(strbuf, &ret, pos, OPENMODE_in);
8875 if(ret.off==-1 && ret.pos==0 && MBSTATET_TO_INT(&ret.state)==0)
8876 basic_ios_char_setstate(base, IOSTATE_failbit);
8878 basic_istream_char_sentry_destroy(this);
8879 #else
8880 TRACE("(%p %s)\n", this, debugstr_fpos_mbstatet(&pos));
8882 if(!ios_base_fail(&base->base)) {
8883 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8884 fpos_mbstatet ret;
8886 basic_streambuf_char_pubseekpos(strbuf, &ret, pos, OPENMODE_in);
8888 if(ret.off==-1 && ret.pos==0 && MBSTATET_TO_INT(&ret.state)==0)
8889 basic_ios_char_setstate(base, IOSTATE_failbit);
8890 else
8891 basic_ios_char_clear(base, IOSTATE_goodbit);
8892 return this;
8893 }else
8894 basic_ios_char_clear(base, IOSTATE_goodbit);
8895 #endif
8896 return this;
8899 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAF@Z */
8900 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAF@Z */
8901 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_short, 8)
8902 basic_istream_char* __thiscall basic_istream_char_read_short(basic_istream_char *this, short *v)
8904 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8905 int state = IOSTATE_goodbit;
8907 TRACE("(%p %p)\n", this, v);
8909 if(basic_istream_char_sentry_create(this, FALSE)) {
8910 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8911 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
8912 istreambuf_iterator_char first={0}, last={0};
8913 LONG tmp;
8915 first.strbuf = strbuf;
8916 num_get_char_get_long(numget, &last, first, last, &base->base, &state, &tmp);
8918 if(!(state&IOSTATE_failbit) && tmp==(LONG)((short)tmp))
8919 *v = tmp;
8920 else
8921 state |= IOSTATE_failbit;
8923 basic_istream_char_sentry_destroy(this);
8925 basic_ios_char_setstate(base, state);
8926 return this;
8929 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAG@Z */
8930 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAG@Z */
8931 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_ushort, 8)
8932 basic_istream_char* __thiscall basic_istream_char_read_ushort(basic_istream_char *this, unsigned short *v)
8934 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8935 int state = IOSTATE_goodbit;
8937 TRACE("(%p %p)\n", this, v);
8939 if(basic_istream_char_sentry_create(this, FALSE)) {
8940 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8941 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
8942 istreambuf_iterator_char first={0}, last={0};
8944 first.strbuf = strbuf;
8945 num_get_char_get_ushort(numget, &last, first, last, &base->base, &state, v);
8947 basic_istream_char_sentry_destroy(this);
8949 basic_ios_char_setstate(base, state);
8950 return this;
8953 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAH@Z */
8954 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAH@Z */
8955 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_int, 8)
8956 basic_istream_char* __thiscall basic_istream_char_read_int(basic_istream_char *this, int *v)
8958 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8959 int state = IOSTATE_goodbit;
8961 TRACE("(%p %p)\n", this, v);
8963 if(basic_istream_char_sentry_create(this, FALSE)) {
8964 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8965 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
8966 istreambuf_iterator_char first={0}, last={0};
8968 first.strbuf = strbuf;
8969 num_get_char_get_long(numget, &last, first, last, &base->base, &state, v);
8971 basic_istream_char_sentry_destroy(this);
8973 basic_ios_char_setstate(base, state);
8974 return this;
8977 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAI@Z */
8978 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAI@Z */
8979 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_uint, 8)
8980 basic_istream_char* __thiscall basic_istream_char_read_uint(basic_istream_char *this, unsigned int *v)
8982 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8983 int state = IOSTATE_goodbit;
8985 TRACE("(%p %p)\n", this, v);
8987 if(basic_istream_char_sentry_create(this, FALSE)) {
8988 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8989 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
8990 istreambuf_iterator_char first={0}, last={0};
8992 first.strbuf = strbuf;
8993 num_get_char_get_uint(numget, &last, first, last, &base->base, &state, v);
8995 basic_istream_char_sentry_destroy(this);
8997 basic_ios_char_setstate(base, state);
8998 return this;
9001 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAJ@Z */
9002 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAJ@Z */
9003 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_long, 8)
9004 basic_istream_char* __thiscall basic_istream_char_read_long(basic_istream_char *this, LONG *v)
9006 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9007 int state = IOSTATE_goodbit;
9009 TRACE("(%p %p)\n", this, v);
9011 if(basic_istream_char_sentry_create(this, FALSE)) {
9012 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
9013 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
9014 istreambuf_iterator_char first={0}, last={0};
9016 first.strbuf = strbuf;
9017 num_get_char_get_long(numget, &last, first, last, &base->base, &state, v);
9019 basic_istream_char_sentry_destroy(this);
9021 basic_ios_char_setstate(base, state);
9022 return this;
9025 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAK@Z */
9026 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAK@Z */
9027 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_ulong, 8)
9028 basic_istream_char* __thiscall basic_istream_char_read_ulong(basic_istream_char *this, ULONG *v)
9030 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9031 int state = IOSTATE_goodbit;
9033 TRACE("(%p %p)\n", this, v);
9035 if(basic_istream_char_sentry_create(this, FALSE)) {
9036 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
9037 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
9038 istreambuf_iterator_char first={0}, last={0};
9040 first.strbuf = strbuf;
9041 num_get_char_get_ulong(numget, &last, first, last, &base->base, &state, v);
9043 basic_istream_char_sentry_destroy(this);
9045 basic_ios_char_setstate(base, state);
9046 return this;
9049 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAM@Z */
9050 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAM@Z */
9051 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_float, 8)
9052 basic_istream_char* __thiscall basic_istream_char_read_float(basic_istream_char *this, float *v)
9054 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9055 int state = IOSTATE_goodbit;
9057 TRACE("(%p %p)\n", this, v);
9059 if(basic_istream_char_sentry_create(this, FALSE)) {
9060 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
9061 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
9062 istreambuf_iterator_char first={0}, last={0};
9064 first.strbuf = strbuf;
9065 num_get_char_get_float(numget, &last, first, last, &base->base, &state, v);
9067 basic_istream_char_sentry_destroy(this);
9069 basic_ios_char_setstate(base, state);
9070 return this;
9073 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAN@Z */
9074 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAN@Z */
9075 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_double, 8)
9076 basic_istream_char* __thiscall basic_istream_char_read_double(basic_istream_char *this, double *v)
9078 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9079 int state = IOSTATE_goodbit;
9081 TRACE("(%p %p)\n", this, v);
9083 if(basic_istream_char_sentry_create(this, FALSE)) {
9084 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
9085 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
9086 istreambuf_iterator_char first={0}, last={0};
9088 first.strbuf = strbuf;
9089 num_get_char_get_double(numget, &last, first, last, &base->base, &state, v);
9091 basic_istream_char_sentry_destroy(this);
9093 basic_ios_char_setstate(base, state);
9094 return this;
9097 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAO@Z */
9098 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAO@Z */
9099 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_ldouble, 8)
9100 basic_istream_char* __thiscall basic_istream_char_read_ldouble(basic_istream_char *this, double *v)
9102 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9103 int state = IOSTATE_goodbit;
9105 TRACE("(%p %p)\n", this, v);
9107 if(basic_istream_char_sentry_create(this, FALSE)) {
9108 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
9109 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
9110 istreambuf_iterator_char first={0}, last={0};
9112 first.strbuf = strbuf;
9113 num_get_char_get_ldouble(numget, &last, first, last, &base->base, &state, v);
9115 basic_istream_char_sentry_destroy(this);
9117 basic_ios_char_setstate(base, state);
9118 return this;
9121 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAPAX@Z */
9122 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAPEAX@Z */
9123 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_ptr, 8)
9124 basic_istream_char* __thiscall basic_istream_char_read_ptr(basic_istream_char *this, void **v)
9126 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9127 int state = IOSTATE_goodbit;
9129 TRACE("(%p %p)\n", this, v);
9131 if(basic_istream_char_sentry_create(this, FALSE)) {
9132 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
9133 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
9134 istreambuf_iterator_char first={0}, last={0};
9136 first.strbuf = strbuf;
9137 num_get_char_get_void(numget, &last, first, last, &base->base, &state, v);
9139 basic_istream_char_sentry_destroy(this);
9141 basic_ios_char_setstate(base, state);
9142 return this;
9145 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AA_J@Z */
9146 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEA_J@Z */
9147 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_int64, 8)
9148 basic_istream_char* __thiscall basic_istream_char_read_int64(basic_istream_char *this, __int64 *v)
9150 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9151 int state = IOSTATE_goodbit;
9153 TRACE("(%p %p)\n", this, v);
9155 if(basic_istream_char_sentry_create(this, FALSE)) {
9156 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
9157 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
9158 istreambuf_iterator_char first={0}, last={0};
9160 first.strbuf = strbuf;
9161 num_get_char_get_int64(numget, &last, first, last, &base->base, &state, v);
9163 basic_istream_char_sentry_destroy(this);
9165 basic_ios_char_setstate(base, state);
9166 return this;
9169 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AA_K@Z */
9170 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEA_K@Z */
9171 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_uint64, 8)
9172 basic_istream_char* __thiscall basic_istream_char_read_uint64(basic_istream_char *this, unsigned __int64 *v)
9174 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9175 int state = IOSTATE_goodbit;
9177 TRACE("(%p %p)\n", this, v);
9179 if(basic_istream_char_sentry_create(this, FALSE)) {
9180 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
9181 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
9182 istreambuf_iterator_char first={0}, last={0};
9184 first.strbuf = strbuf;
9185 num_get_char_get_uint64(numget, &last, first, last, &base->base, &state, v);
9187 basic_istream_char_sentry_destroy(this);
9189 basic_ios_char_setstate(base, state);
9190 return this;
9193 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AA_N@Z */
9194 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEA_N@Z */
9195 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_bool, 8)
9196 basic_istream_char* __thiscall basic_istream_char_read_bool(basic_istream_char *this, MSVCP_bool *v)
9198 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9199 int state = IOSTATE_goodbit;
9201 TRACE("(%p %p)\n", this, v);
9203 if(basic_istream_char_sentry_create(this, FALSE)) {
9204 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
9205 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
9206 istreambuf_iterator_char first={0}, last={0};
9208 first.strbuf = strbuf;
9209 num_get_char_get_bool(numget, &last, first, last, &base->base, &state, v);
9211 basic_istream_char_sentry_destroy(this);
9213 basic_ios_char_setstate(base, state);
9214 return this;
9217 /* ??$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 */
9218 /* ??$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 */
9219 basic_istream_char* __cdecl basic_istream_char_getline_bstr_delim(
9220 basic_istream_char *istream, basic_string_char *str, char delim)
9222 basic_ios_char *base = basic_istream_char_get_basic_ios(istream);
9223 IOSB_iostate state = IOSTATE_goodbit;
9224 int c = (unsigned char)delim;
9226 TRACE("(%p %p %c)\n", istream, str, delim);
9228 if(basic_istream_char_sentry_create(istream, TRUE)) {
9229 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
9230 MSVCP_basic_string_char_clear(str);
9232 c = basic_streambuf_char_sgetc(strbuf);
9233 for(; c!=(unsigned char)delim && c!=EOF; c = basic_streambuf_char_snextc(strbuf))
9234 MSVCP_basic_string_char_append_ch(str, c);
9235 if(c==EOF) state |= IOSTATE_eofbit;
9236 else if(c==(unsigned char)delim) basic_streambuf_char_sbumpc(strbuf);
9238 if(!MSVCP_basic_string_char_length(str) && c!=(unsigned char)delim) state |= IOSTATE_failbit;
9240 basic_istream_char_sentry_destroy(istream);
9242 basic_ios_char_setstate(basic_istream_char_get_basic_ios(istream), state);
9243 return istream;
9246 /* ??$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 */
9247 /* ??$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 */
9248 basic_istream_char* __cdecl basic_istream_char_getline_bstr(
9249 basic_istream_char *istream, basic_string_char *str)
9251 return basic_istream_char_getline_bstr_delim(istream, str, '\n');
9254 /* ??$?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 */
9255 /* ??$?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 */
9256 basic_istream_char* __cdecl basic_istream_char_read_bstr(
9257 basic_istream_char *istream, basic_string_char *str)
9259 basic_ios_char *base = basic_istream_char_get_basic_ios(istream);
9260 IOSB_iostate state = IOSTATE_failbit;
9261 int c = '\n';
9263 TRACE("(%p %p)\n", istream, str);
9265 if(basic_istream_char_sentry_create(istream, FALSE)) {
9266 const ctype_char *ctype = ctype_char_use_facet(IOS_LOCALE(base->strbuf));
9267 MSVCP_size_t count = ios_base_width_get(&base->base);
9269 if(!count)
9270 count = -1;
9272 MSVCP_basic_string_char_clear(str);
9274 for(c = basic_streambuf_char_sgetc(basic_ios_char_rdbuf_get(base));
9275 c!=EOF && !ctype_char_is_ch(ctype, _SPACE|_BLANK, c) && count>0;
9276 c = basic_streambuf_char_snextc(basic_ios_char_rdbuf_get(base)), count--) {
9277 state = IOSTATE_goodbit;
9278 MSVCP_basic_string_char_append_ch(str, c);
9281 basic_istream_char_sentry_destroy(istream);
9283 ios_base_width_set(&base->base, 0);
9284 basic_ios_char_setstate(base, state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
9285 return istream;
9288 /* ??$?5DU?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@PAD@Z */
9289 /* ??$?5DU?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@PEAD@Z */
9290 /* ??$?5U?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@PAC@Z */
9291 /* ??$?5U?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@PEAC@Z */
9292 /* ??$?5U?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@PAE@Z */
9293 /* ??$?5U?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@PEAE@Z */
9294 basic_istream_char* __cdecl basic_istream_char_read_str(basic_istream_char *istream, char *str)
9296 basic_ios_char *base = basic_istream_char_get_basic_ios(istream);
9297 IOSB_iostate state = IOSTATE_failbit;
9298 int c = '\n';
9300 TRACE("(%p %p)\n", istream, str);
9302 if(basic_istream_char_sentry_create(istream, FALSE)) {
9303 const ctype_char *ctype = ctype_char_use_facet(IOS_LOCALE(base->strbuf));
9304 MSVCP_size_t count = ios_base_width_get(&base->base)-1;
9306 for(c = basic_streambuf_char_sgetc(basic_ios_char_rdbuf_get(base));
9307 c!=EOF && !ctype_char_is_ch(ctype, _SPACE|_BLANK, c) && count>0;
9308 c = basic_streambuf_char_snextc(basic_ios_char_rdbuf_get(base)), count--) {
9309 state = IOSTATE_goodbit;
9310 *str++ = c;
9313 basic_istream_char_sentry_destroy(istream);
9315 *str = 0;
9316 ios_base_width_set(&base->base, 0);
9317 basic_ios_char_setstate(base, state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
9318 return istream;
9321 /* ??$?5DU?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAD@Z */
9322 /* ??$?5DU?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAD@Z */
9323 /* ??$?5U?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAC@Z */
9324 /* ??$?5U?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAC@Z */
9325 /* ??$?5U?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAE@Z */
9326 /* ??$?5U?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAE@Z */
9327 basic_istream_char* __cdecl basic_istream_char_read_ch(basic_istream_char *istream, char *ch)
9329 IOSB_iostate state = IOSTATE_failbit;
9330 int c = 0;
9332 TRACE("(%p %p)\n", istream, ch);
9334 if(basic_istream_char_sentry_create(istream, FALSE)) {
9335 c = basic_streambuf_char_sbumpc(basic_ios_char_rdbuf_get(
9336 basic_istream_char_get_basic_ios(istream)));
9337 if(c != EOF) {
9338 state = IOSTATE_goodbit;
9339 *ch = c;
9342 basic_istream_char_sentry_destroy(istream);
9344 basic_ios_char_setstate(basic_istream_char_get_basic_ios(istream),
9345 state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
9346 return istream;
9349 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
9350 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
9351 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_streambuf, 8)
9352 basic_istream_char* __thiscall basic_istream_char_read_streambuf(
9353 basic_istream_char *this, basic_streambuf_char *streambuf)
9355 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9356 IOSB_iostate state = IOSTATE_failbit;
9357 int c = '\n';
9359 TRACE("(%p %p)\n", this, streambuf);
9361 if(basic_istream_char_sentry_create(this, FALSE)) {
9362 for(c = basic_streambuf_char_sgetc(basic_ios_char_rdbuf_get(base)); c!=EOF;
9363 c = basic_streambuf_char_snextc(basic_ios_char_rdbuf_get(base))) {
9364 state = IOSTATE_goodbit;
9365 if(basic_streambuf_char_sputc(streambuf, c) == EOF)
9366 break;
9369 basic_istream_char_sentry_destroy(this);
9371 basic_ios_char_setstate(base, state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
9372 return this;
9375 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
9376 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
9377 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_func, 8)
9378 basic_istream_char* __thiscall basic_istream_char_read_func(basic_istream_char *this,
9379 basic_istream_char* (__cdecl *pfunc)(basic_istream_char*))
9381 TRACE("(%p %p)\n", this, pfunc);
9382 pfunc(this);
9383 return this;
9386 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@DU?$char_traits@D@std@@@1@AAV21@@Z@Z */
9387 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@DU?$char_traits@D@std@@@1@AEAV21@@Z@Z */
9388 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_func_basic_ios, 8)
9389 basic_istream_char* __thiscall basic_istream_char_read_func_basic_ios(basic_istream_char *this,
9390 basic_ios_char* (__cdecl *pfunc)(basic_ios_char*))
9392 TRACE("(%p %p)\n", this, pfunc);
9393 pfunc(basic_istream_char_get_basic_ios(this));
9394 return this;
9397 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
9398 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
9399 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_func_ios_base, 8)
9400 basic_istream_char* __thiscall basic_istream_char_read_func_ios_base(basic_istream_char *this,
9401 ios_base* (__cdecl *pfunc)(ios_base*))
9403 TRACE("(%p %p)\n", this, pfunc);
9404 pfunc(&basic_istream_char_get_basic_ios(this)->base);
9405 return this;
9408 /* ??$?5MDU?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAV?$complex@M@0@@Z */
9409 /* ??$?5MDU?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAV?$complex@M@0@@Z */
9410 basic_istream_char* __cdecl basic_istream_char_read_complex_float(basic_istream_char *this, complex_float *v)
9412 float r;
9413 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9415 TRACE("(%p %p)\n", this, v);
9417 ws_basic_istream_char(this);
9418 if(basic_istream_char_peek(this) == '(') {
9419 char c;
9420 basic_istream_char_get(this);
9421 basic_istream_char_read_float(this, &r);
9423 if(ios_base_fail(&base->base))
9424 return this;
9426 ws_basic_istream_char(this);
9427 c = basic_istream_char_peek(this);
9428 if(c == ',') {
9429 float i;
9430 basic_istream_char_get(this);
9431 basic_istream_char_read_float(this, &i);
9433 if(ios_base_fail(&base->base))
9434 return this;
9436 ws_basic_istream_char(this);
9437 c = basic_istream_char_peek(this);
9438 if(c == ')') { /* supported format: (real, imag) */
9439 basic_istream_char_get(this);
9440 v->real = r;
9441 v->imag = i;
9442 }else {
9443 basic_ios_char_setstate(base, IOSTATE_failbit);
9444 return this;
9446 }else if(c == ')') { /* supported format: (real) */
9447 basic_istream_char_get(this);
9448 v->real = r;
9449 v->imag = 0;
9450 }else {
9451 basic_ios_char_setstate(base, IOSTATE_failbit);
9452 return this;
9454 }else { /* supported format: real */
9455 basic_istream_char_read_float(this, &r);
9457 if(ios_base_fail(&base->base))
9458 return this;
9460 v->real = r;
9461 v->imag = 0;
9464 return this;
9467 /* ??$?5NDU?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAV?$complex@N@0@@Z */
9468 /* ??$?5DU?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAV?$complex@N@0@@Z */
9469 basic_istream_char* __cdecl basic_istream_char_read_complex_double(basic_istream_char *this, complex_double *v)
9471 double r;
9472 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9474 TRACE("(%p %p)\n", this, v);
9476 ws_basic_istream_char(this);
9477 if(basic_istream_char_peek(this) == '(') {
9478 char c;
9479 basic_istream_char_get(this);
9480 basic_istream_char_read_double(this, &r);
9482 if(ios_base_fail(&base->base))
9483 return this;
9485 ws_basic_istream_char(this);
9486 c = basic_istream_char_peek(this);
9487 if(c == ',') {
9488 double i;
9489 basic_istream_char_get(this);
9490 basic_istream_char_read_double(this, &i);
9492 if(ios_base_fail(&base->base))
9493 return this;
9495 ws_basic_istream_char(this);
9496 c = basic_istream_char_peek(this);
9497 if(c == ')') { /* supported format: (real, imag) */
9498 basic_istream_char_get(this);
9499 v->real = r;
9500 v->imag = i;
9501 }else {
9502 basic_ios_char_setstate(base, IOSTATE_failbit);
9503 return this;
9505 }else if(c == ')') { /* supported format: (real) */
9506 basic_istream_char_get(this);
9507 v->real = r;
9508 v->imag = 0;
9509 }else {
9510 basic_ios_char_setstate(base, IOSTATE_failbit);
9511 return this;
9513 }else { /* supported format: real */
9514 basic_istream_char_read_double(this, &r);
9516 if(ios_base_fail(&base->base))
9517 return this;
9519 v->real = r;
9520 v->imag = 0;
9523 return this;
9526 /* ??$?5ODU?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAV?$complex@O@0@@Z */
9527 /* ??$?5ODU?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAV?$complex@O@0@@Z */
9528 basic_istream_char* __cdecl basic_istream_char_read_complex_ldouble(basic_istream_char *this, complex_double *v)
9530 double r;
9531 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
9533 TRACE("(%p %p)\n", this, v);
9535 ws_basic_istream_char(this);
9536 if(basic_istream_char_peek(this) == '(') {
9537 char c;
9538 basic_istream_char_get(this);
9539 basic_istream_char_read_ldouble(this, &r);
9541 if(ios_base_fail(&base->base))
9542 return this;
9544 ws_basic_istream_char(this);
9545 c = basic_istream_char_peek(this);
9546 if(c == ',') {
9547 double i;
9548 basic_istream_char_get(this);
9549 basic_istream_char_read_ldouble(this, &i);
9551 if(ios_base_fail(&base->base))
9552 return this;
9554 ws_basic_istream_char(this);
9555 c = basic_istream_char_peek(this);
9556 if(c == ')') { /* supported format: (real, imag) */
9557 basic_istream_char_get(this);
9558 v->real = r;
9559 v->imag = i;
9560 }else {
9561 basic_ios_char_setstate(base, IOSTATE_failbit);
9562 return this;
9564 }else if(c == ')') { /* supported format: (real) */
9565 basic_istream_char_get(this);
9566 v->real = r;
9567 v->imag = 0;
9568 }else {
9569 basic_ios_char_setstate(base, IOSTATE_failbit);
9570 return this;
9572 }else { /* supported format: real */
9573 basic_istream_char_read_ldouble(this, &r);
9575 if(ios_base_fail(&base->base))
9576 return this;
9578 v->real = r;
9579 v->imag = 0;
9582 return this;
9585 /* ?swap@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEXAAV12@@Z */
9586 /* ?swap@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAXAEAV12@@Z */
9587 DEFINE_THISCALL_WRAPPER(basic_istream_char_swap, 8)
9588 void __thiscall basic_istream_char_swap(basic_istream_char *this, basic_istream_char *r)
9590 TRACE("(%p %p)\n", this, r);
9592 if(this == r)
9593 return;
9595 basic_ios_char_swap(basic_istream_char_get_basic_ios(this),
9596 basic_istream_char_get_basic_ios(r));
9597 this->count ^= r->count;
9598 r->count ^= this->count;
9599 this->count ^= r->count;
9602 /* Caution: basic_istream uses virtual inheritance. */
9603 static inline basic_ios_wchar* basic_istream_wchar_get_basic_ios(basic_istream_wchar *this)
9605 return (basic_ios_wchar*)((char*)this+this->vbtable[1]);
9608 static inline basic_ios_wchar* basic_istream_wchar_to_basic_ios(basic_istream_wchar *ptr)
9610 return (basic_ios_wchar*)((char*)ptr+basic_istream_wchar_vbtable[1]);
9613 static inline basic_istream_wchar* basic_istream_wchar_from_basic_ios(basic_ios_wchar *ptr)
9615 return (basic_istream_wchar*)((char*)ptr-basic_istream_wchar_vbtable[1]);
9618 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N1@Z */
9619 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N1@Z */
9620 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ctor_init, 20)
9621 basic_istream_wchar* __thiscall basic_istream_wchar_ctor_init(basic_istream_wchar *this,
9622 basic_streambuf_wchar *strbuf, MSVCP_bool isstd, MSVCP_bool noinit, MSVCP_bool virt_init)
9624 basic_ios_wchar *base;
9626 TRACE("(%p %p %d %d %d)\n", this, strbuf, isstd, noinit, virt_init);
9628 if(virt_init) {
9629 this->vbtable = basic_istream_wchar_vbtable;
9630 base = basic_istream_wchar_get_basic_ios(this);
9631 INIT_BASIC_IOS_VTORDISP(base);
9632 basic_ios_wchar_ctor(base);
9633 }else {
9634 base = basic_istream_wchar_get_basic_ios(this);
9637 base->base.vtable = &MSVCP_basic_istream_wchar_vtable;
9638 this->count = 0;
9639 if(!noinit)
9640 basic_ios_wchar_init(base, strbuf, isstd);
9641 return this;
9644 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N1@Z */
9645 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N1@Z */
9646 DEFINE_THISCALL_WRAPPER(basic_istream_short_ctor_init, 20)
9647 basic_istream_wchar* __thiscall basic_istream_short_ctor_init(basic_istream_wchar *this,
9648 basic_streambuf_wchar *strbuf, MSVCP_bool isstd, MSVCP_bool noinit, MSVCP_bool virt_init)
9650 basic_istream_wchar_ctor_init(this, strbuf, isstd, noinit, virt_init);
9651 basic_istream_wchar_get_basic_ios(this)->base.vtable = &MSVCP_basic_istream_short_vtable;
9652 return this;
9655 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z */
9656 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z */
9657 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ctor, 16)
9658 basic_istream_wchar* __thiscall basic_istream_wchar_ctor(basic_istream_wchar *this,
9659 basic_streambuf_wchar *strbuf, MSVCP_bool isstd, MSVCP_bool virt_init)
9661 return basic_istream_wchar_ctor_init(this, strbuf, isstd, FALSE, virt_init);
9664 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N@Z */
9665 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N@Z */
9666 DEFINE_THISCALL_WRAPPER(basic_istream_short_ctor, 16)
9667 basic_istream_wchar* __thiscall basic_istream_short_ctor(basic_istream_wchar *this,
9668 basic_streambuf_wchar *strbuf, MSVCP_bool isstd, MSVCP_bool virt_init)
9670 return basic_istream_short_ctor_init(this, strbuf, isstd, FALSE, virt_init);
9673 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE@W4_Uninitialized@1@@Z */
9674 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
9675 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ctor_uninitialized, 12)
9676 basic_istream_wchar* __thiscall basic_istream_wchar_ctor_uninitialized(
9677 basic_istream_wchar *this, int uninitialized, MSVCP_bool virt_init)
9679 basic_ios_wchar *base;
9681 TRACE("(%p %d %d)\n", this, uninitialized, virt_init);
9683 if(virt_init) {
9684 this->vbtable = basic_istream_wchar_vbtable;
9685 base = basic_istream_wchar_get_basic_ios(this);
9686 INIT_BASIC_IOS_VTORDISP(base);
9687 basic_ios_wchar_ctor(base);
9688 }else {
9689 base = basic_istream_wchar_get_basic_ios(this);
9692 base->base.vtable = &MSVCP_basic_istream_wchar_vtable;
9693 ios_base_Addstd(&base->base);
9694 return this;
9697 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QAE@W4_Uninitialized@1@@Z */
9698 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
9699 DEFINE_THISCALL_WRAPPER(basic_istream_short_ctor_uninitialized, 12)
9700 basic_istream_wchar* __thiscall basic_istream_short_ctor_uninitialized(
9701 basic_istream_wchar *this, int uninitialized, MSVCP_bool virt_init)
9703 basic_istream_wchar_ctor_uninitialized(this, uninitialized, virt_init);
9704 basic_istream_wchar_get_basic_ios(this)->base.vtable = &MSVCP_basic_istream_short_vtable;
9705 return this;
9708 /* ??1?$basic_istream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
9709 /* ??1?$basic_istream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
9710 /* ??1?$basic_istream@GU?$char_traits@G@std@@@std@@UAE@XZ */
9711 /* ??1?$basic_istream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
9712 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_dtor, 4)
9713 void __thiscall basic_istream_wchar_dtor(basic_ios_wchar *base)
9715 basic_istream_wchar *this = basic_istream_wchar_from_basic_ios(base);
9717 /* don't destroy virtual base here */
9718 TRACE("(%p)\n", this);
9721 /* ??_D?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
9722 /* ??_D?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
9723 /* ??_D?$basic_istream@GU?$char_traits@G@std@@@std@@QAEXXZ */
9724 /* ??_D?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
9725 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_vbase_dtor, 4)
9726 void __thiscall basic_istream_wchar_vbase_dtor(basic_istream_wchar *this)
9728 basic_ios_wchar *base = basic_istream_wchar_to_basic_ios(this);
9730 TRACE("(%p)\n", this);
9732 basic_istream_wchar_dtor(base);
9733 basic_ios_wchar_dtor(base);
9736 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_vector_dtor, 8)
9737 basic_istream_wchar* __thiscall basic_istream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
9739 basic_istream_wchar *this = basic_istream_wchar_from_basic_ios(base);
9741 TRACE("(%p %x)\n", this, flags);
9743 if(flags & 2) {
9744 /* we have an array, with the number of elements stored before the first object */
9745 INT_PTR i, *ptr = (INT_PTR *)this-1;
9747 for(i=*ptr-1; i>=0; i--)
9748 basic_istream_wchar_vbase_dtor(this+i);
9749 MSVCRT_operator_delete(ptr);
9750 } else {
9751 basic_istream_wchar_vbase_dtor(this);
9752 if(flags & 1)
9753 MSVCRT_operator_delete(this);
9756 return this;
9759 /* ?_Ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE_N_N@Z */
9760 /* ?_Ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_N_N@Z */
9761 /* ?_Ipfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QAE_N_N@Z */
9762 /* ?_Ipfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA_N_N@Z */
9763 DEFINE_THISCALL_WRAPPER(basic_istream_wchar__Ipfx, 8)
9764 MSVCP_bool __thiscall basic_istream_wchar__Ipfx(basic_istream_wchar *this, MSVCP_bool noskip)
9766 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9768 TRACE("(%p %d)\n", this, noskip);
9770 if(ios_base_good(&base->base)) {
9771 if(basic_ios_wchar_tie_get(base))
9772 basic_ostream_wchar_flush(basic_ios_wchar_tie_get(base));
9774 if(!noskip && (ios_base_flags_get(&base->base) & FMTFLAG_skipws)) {
9775 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9776 const ctype_wchar *ctype = ctype_wchar_use_facet(IOS_LOCALE(base->strbuf));
9777 int ch;
9779 for(ch = basic_streambuf_wchar_sgetc(strbuf); ;
9780 ch = basic_streambuf_wchar_snextc(strbuf)) {
9781 if(ch == WEOF) {
9782 basic_ios_wchar_setstate(base, IOSTATE_eofbit);
9783 break;
9786 if(!ctype_wchar_is_ch(ctype, _SPACE|_BLANK, ch))
9787 break;
9792 if(!ios_base_good(&base->base)) {
9793 basic_ios_wchar_setstate(base, IOSTATE_failbit);
9794 return FALSE;
9796 return TRUE;
9799 /* ?ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE_N_N@Z */
9800 /* ?ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_N_N@Z */
9801 /* ?ipfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QAE_N_N@Z */
9802 /* ?ipfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA_N_N@Z */
9803 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ipfx, 8)
9804 MSVCP_bool __thiscall basic_istream_wchar_ipfx(basic_istream_wchar *this, MSVCP_bool noskip)
9806 return basic_istream_wchar__Ipfx(this, noskip);
9809 /* ?isfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
9810 /* ?isfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
9811 /* ?isfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEXXZ */
9812 /* ?isfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
9813 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_isfx, 4)
9814 void __thiscall basic_istream_wchar_isfx(basic_istream_wchar *this)
9816 TRACE("(%p)\n", this);
9819 static BOOL basic_istream_wchar_sentry_create(basic_istream_wchar *istr, MSVCP_bool noskip)
9821 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istr);
9823 if(basic_ios_wchar_rdbuf_get(base))
9824 basic_streambuf_wchar__Lock(base->strbuf);
9826 return basic_istream_wchar_ipfx(istr, noskip);
9829 static void basic_istream_wchar_sentry_destroy(basic_istream_wchar *istr)
9831 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istr);
9833 if(basic_ios_wchar_rdbuf_get(base))
9834 basic_streambuf_wchar__Unlock(base->strbuf);
9837 /* ?gcount@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QBEHXZ */
9838 /* ?gcount@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEBA_JXZ */
9839 /* ?gcount@?$basic_istream@GU?$char_traits@G@std@@@std@@QBEHXZ */
9840 /* ?gcount@?$basic_istream@GU?$char_traits@G@std@@@std@@QEBA_JXZ */
9841 /* ?gcount@?$basic_istream@GU?$char_traits@G@std@@@std@@QBA_JXZ */
9842 /* ?gcount@?$basic_istream@GU?$char_traits@G@std@@@std@@QBE_JXZ */
9843 /* ?gcount@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QBA_JXZ */
9844 /* ?gcount@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QBE_JXZ */
9845 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_gcount, 4)
9846 streamsize __thiscall basic_istream_wchar_gcount(const basic_istream_wchar *this)
9848 TRACE("(%p)\n", this);
9849 return this->count;
9852 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
9853 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
9854 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEGXZ */
9855 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAGXZ */
9856 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get, 4)
9857 unsigned short __thiscall basic_istream_wchar_get(basic_istream_wchar *this)
9859 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9860 int ret;
9862 TRACE("(%p)\n", this);
9864 this->count = 0;
9866 if(!basic_istream_wchar_sentry_create(this, TRUE)) {
9867 basic_istream_wchar_sentry_destroy(this);
9868 return WEOF;
9871 ret = basic_streambuf_wchar_sbumpc(basic_ios_wchar_rdbuf_get(base));
9872 basic_istream_wchar_sentry_destroy(this);
9873 if(ret == WEOF)
9874 basic_ios_wchar_setstate(base, IOSTATE_eofbit|IOSTATE_failbit);
9875 else
9876 this->count++;
9878 return ret;
9881 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@AA_W@Z */
9882 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEA_W@Z */
9883 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@AAG@Z */
9884 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@AEAG@Z */
9885 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_ch, 8)
9886 basic_istream_wchar* __thiscall basic_istream_wchar_get_ch(basic_istream_wchar *this, wchar_t *ch)
9888 unsigned short ret;
9890 TRACE("(%p %p)\n", this, ch);
9892 ret = basic_istream_wchar_get(this);
9893 if(ret != WEOF)
9894 *ch = (wchar_t)ret;
9895 return this;
9898 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH_W@Z */
9899 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J_W@Z */
9900 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGHG@Z */
9901 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_JG@Z */
9902 #if STREAMSIZE_BITS == 64
9903 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_str_delim, 20)
9904 #else
9905 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_str_delim, 16)
9906 #endif
9907 basic_istream_wchar* __thiscall basic_istream_wchar_get_str_delim(basic_istream_wchar *this, wchar_t *str, streamsize count, wchar_t delim)
9909 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9910 unsigned short ch = delim;
9912 TRACE("(%p %p %s %c)\n", this, str, wine_dbgstr_longlong(count), delim);
9914 this->count = 0;
9916 if(basic_istream_wchar_sentry_create(this, TRUE)) {
9917 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9919 for(ch = basic_streambuf_wchar_sgetc(strbuf); count>1;
9920 ch = basic_streambuf_wchar_snextc(strbuf)) {
9921 if(ch==WEOF || ch==delim)
9922 break;
9924 *str++ = ch;
9925 this->count++;
9926 count--;
9929 basic_istream_wchar_sentry_destroy(this);
9931 basic_ios_wchar_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) |
9932 (ch==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
9933 if(count > 0)
9934 *str = 0;
9935 return this;
9938 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH@Z */
9939 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J@Z */
9940 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGH@Z */
9941 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_J@Z */
9942 #if STREAMSIZE_BITS == 64
9943 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_str, 16)
9944 #else
9945 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_str, 12)
9946 #endif
9947 basic_istream_wchar* __thiscall basic_istream_wchar_get_str(basic_istream_wchar *this, wchar_t *str, streamsize count)
9949 return basic_istream_wchar_get_str_delim(this, str, count, '\n');
9952 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@AAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_W@Z */
9953 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_W@Z */
9954 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@AAV?$basic_streambuf@GU?$char_traits@G@std@@@2@G@Z */
9955 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@G@Z */
9956 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_streambuf_delim, 12)
9957 basic_istream_wchar* __thiscall basic_istream_wchar_get_streambuf_delim(basic_istream_wchar *this, basic_streambuf_wchar *strbuf, wchar_t delim)
9959 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9960 unsigned short ch = delim;
9962 TRACE("(%p %p %c)\n", this, strbuf, delim);
9964 this->count = 0;
9966 if(basic_istream_wchar_sentry_create(this, TRUE)) {
9967 basic_streambuf_wchar *strbuf_read = basic_ios_wchar_rdbuf_get(base);
9969 for(ch = basic_streambuf_wchar_sgetc(strbuf_read); ;
9970 ch = basic_streambuf_wchar_snextc(strbuf_read)) {
9971 if(ch==WEOF || ch==delim)
9972 break;
9974 if(basic_streambuf_wchar_sputc(strbuf, ch) == WEOF)
9975 break;
9976 this->count++;
9979 basic_istream_wchar_sentry_destroy(this);
9981 basic_ios_wchar_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) |
9982 (ch==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
9983 return this;
9986 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@AAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@@Z */
9987 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@@Z */
9988 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@AAV?$basic_streambuf@GU?$char_traits@G@std@@@2@@Z */
9989 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@@Z */
9990 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_streambuf, 8)
9991 basic_istream_wchar* __thiscall basic_istream_wchar_get_streambuf(basic_istream_wchar *this, basic_streambuf_wchar *strbuf)
9993 return basic_istream_wchar_get_streambuf_delim(this, strbuf, '\n');
9996 /* ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH_W@Z */
9997 /* ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J_W@Z */
9998 /* ?getline@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGHG@Z */
9999 /* ?getline@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_JG@Z */
10000 #if STREAMSIZE_BITS == 64
10001 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_getline_delim, 20)
10002 #else
10003 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_getline_delim, 16)
10004 #endif
10005 basic_istream_wchar* __thiscall basic_istream_wchar_getline_delim(basic_istream_wchar *this, wchar_t *str, streamsize count, wchar_t delim)
10007 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10008 unsigned short ch = delim;
10010 TRACE("(%p %p %s %c)\n", this, str, wine_dbgstr_longlong(count), delim);
10012 this->count = 0;
10014 if(basic_istream_wchar_sentry_create(this, TRUE) && count>0) {
10015 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10017 while(count > 1) {
10018 ch = basic_streambuf_wchar_sbumpc(strbuf);
10020 if(ch==WEOF || ch==delim)
10021 break;
10023 *str++ = ch;
10024 this->count++;
10025 count--;
10028 if(ch == delim)
10029 this->count++;
10030 else if(ch != WEOF) {
10031 ch = basic_streambuf_wchar_sgetc(strbuf);
10033 if(ch == delim) {
10034 basic_streambuf_wchar__Gninc(strbuf);
10035 this->count++;
10039 basic_istream_wchar_sentry_destroy(this);
10041 basic_ios_wchar_setstate(base, (ch==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit) |
10042 (!this->count || (ch!=delim && ch!=WEOF) ? IOSTATE_failbit : IOSTATE_goodbit));
10043 if(count > 0)
10044 *str = 0;
10045 return this;
10048 /* ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH@Z */
10049 /* ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J@Z */
10050 /* ?getline@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGH@Z */
10051 /* ?getline@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_J@Z */
10052 #if STREAMSIZE_BITS == 64
10053 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_getline, 16)
10054 #else
10055 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_getline, 12)
10056 #endif
10057 basic_istream_wchar* __thiscall basic_istream_wchar_getline(basic_istream_wchar *this, wchar_t *str, streamsize count)
10059 return basic_istream_wchar_getline_delim(this, str, count, '\n');
10062 /* ?ignore@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@HG@Z */
10063 /* ?ignore@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_JG@Z */
10064 /* ?ignore@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@HG@Z */
10065 /* ?ignore@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@_JG@Z */
10066 #if STREAMSIZE_BITS == 64
10067 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ignore, 16)
10068 #else
10069 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ignore, 12)
10070 #endif
10071 basic_istream_wchar* __thiscall basic_istream_wchar_ignore(basic_istream_wchar *this, streamsize count, unsigned short delim)
10073 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10074 unsigned short ch = delim;
10075 unsigned int state;
10077 TRACE("(%p %s %d)\n", this, wine_dbgstr_longlong(count), delim);
10079 this->count = 0;
10081 if(basic_istream_wchar_sentry_create(this, TRUE)) {
10082 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10083 state = IOSTATE_goodbit;
10085 while(count > 0) {
10086 ch = basic_streambuf_wchar_sbumpc(strbuf);
10088 if(ch==WEOF) {
10089 state = IOSTATE_eofbit;
10090 break;
10093 if(ch==delim)
10094 break;
10096 this->count++;
10097 if(count != INT_MAX)
10098 count--;
10100 }else
10101 state = IOSTATE_failbit;
10102 basic_istream_wchar_sentry_destroy(this);
10104 basic_ios_wchar_setstate(base, state);
10105 return this;
10108 /* ?ws@std@@YAAAV?$basic_istream@_WU?$char_traits@_W@std@@@1@AAV21@@Z */
10109 /* ?ws@std@@YAAEAV?$basic_istream@_WU?$char_traits@_W@std@@@1@AEAV21@@Z */
10110 /* ?ws@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@1@AAV21@@Z */
10111 /* ?ws@std@@YAAEAV?$basic_istream@GU?$char_traits@G@std@@@1@AEAV21@@Z */
10112 basic_istream_wchar* __cdecl ws_basic_istream_wchar(basic_istream_wchar *istream)
10114 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istream);
10115 unsigned short ch = '\n';
10117 TRACE("(%p)\n", istream);
10119 if(basic_istream_wchar_sentry_create(istream, TRUE)) {
10120 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10121 const ctype_wchar *ctype = ctype_wchar_use_facet(IOS_LOCALE(strbuf));
10123 for(ch = basic_streambuf_wchar_sgetc(strbuf); ctype_wchar_is_ch(ctype, _SPACE, ch);
10124 ch = basic_streambuf_wchar_snextc(strbuf)) {
10125 if(ch == WEOF)
10126 break;
10129 basic_istream_wchar_sentry_destroy(istream);
10131 if(ch == WEOF)
10132 basic_ios_wchar_setstate(base, IOSTATE_eofbit);
10133 return istream;
10136 /* ?peek@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
10137 /* ?peek@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
10138 /* ?peek@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEGXZ */
10139 /* ?peek@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAGXZ */
10140 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_peek, 4)
10141 unsigned short __thiscall basic_istream_wchar_peek(basic_istream_wchar *this)
10143 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10144 unsigned short ret = WEOF;
10146 TRACE("(%p)\n", this);
10148 this->count = 0;
10150 if(basic_istream_wchar_sentry_create(this, TRUE))
10151 ret = basic_streambuf_wchar_sgetc(basic_ios_wchar_rdbuf_get(base));
10152 basic_istream_wchar_sentry_destroy(this);
10154 if (ret == WEOF)
10155 basic_ios_wchar_setstate(base, IOSTATE_eofbit);
10157 return ret;
10160 /* ?_Read_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WIH@Z */
10161 /* ?_Read_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_K_J@Z */
10162 /* ?_Read_s@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGIH@Z */
10163 /* ?_Read_s@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_K_J@Z */
10164 #if STREAMSIZE_BITS == 64
10165 DEFINE_THISCALL_WRAPPER(basic_istream_wchar__Read_s, 20)
10166 #else
10167 DEFINE_THISCALL_WRAPPER(basic_istream_wchar__Read_s, 16)
10168 #endif
10169 basic_istream_wchar* __thiscall basic_istream_wchar__Read_s(basic_istream_wchar *this, wchar_t *str, MSVCP_size_t size, streamsize count)
10171 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10172 IOSB_iostate state = IOSTATE_goodbit;
10174 TRACE("(%p %p %lu %s)\n", this, str, size, wine_dbgstr_longlong(count));
10176 if(basic_istream_wchar_sentry_create(this, TRUE)) {
10177 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10179 this->count = basic_streambuf_wchar__Sgetn_s(strbuf, str, size, count);
10180 if(this->count != count)
10181 state |= IOSTATE_failbit | IOSTATE_eofbit;
10182 }else {
10183 this->count = 0;
10185 basic_istream_wchar_sentry_destroy(this);
10187 basic_ios_wchar_setstate(base, state);
10188 return this;
10191 /* ?read@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH@Z */
10192 /* ?read@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J@Z */
10193 /* ?read@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGH@Z */
10194 /* ?read@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_J@Z */
10195 #if STREAMSIZE_BITS == 64
10196 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read, 16)
10197 #else
10198 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read, 12)
10199 #endif
10200 basic_istream_wchar* __thiscall basic_istream_wchar_read(basic_istream_wchar *this, wchar_t *str, streamsize count)
10202 return basic_istream_wchar__Read_s(this, str, -1, count);
10205 /* ?_Readsome_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEHPA_WIH@Z */
10206 /* ?_Readsome_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_JPEA_W_K_J@Z */
10207 /* ?_Readsome_s@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEHPAGIH@Z */
10208 /* ?_Readsome_s@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA_JPEAG_K_J@Z */
10209 #if STREAMSIZE_BITS == 64
10210 DEFINE_THISCALL_WRAPPER(basic_istream_wchar__Readsome_s, 20)
10211 #else
10212 DEFINE_THISCALL_WRAPPER(basic_istream_wchar__Readsome_s, 16)
10213 #endif
10214 streamsize __thiscall basic_istream_wchar__Readsome_s(basic_istream_wchar *this, wchar_t *str, MSVCP_size_t size, streamsize count)
10216 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10217 IOSB_iostate state = IOSTATE_goodbit;
10219 TRACE("(%p %p %lu %s)\n", this, str, size, wine_dbgstr_longlong(count));
10221 this->count = 0;
10223 if(basic_istream_wchar_sentry_create(this, TRUE)) {
10224 streamsize avail = basic_streambuf_wchar_in_avail(basic_ios_wchar_rdbuf_get(base));
10225 if(avail > count)
10226 avail = count;
10228 if(avail == -1)
10229 state |= IOSTATE_eofbit;
10230 else if(avail > 0)
10231 basic_istream_wchar__Read_s(this, str, size, avail);
10232 }else {
10233 state |= IOSTATE_failbit;
10235 basic_istream_wchar_sentry_destroy(this);
10237 basic_ios_wchar_setstate(base, state);
10238 return this->count;
10241 /* ?readsome@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEHPA_WH@Z */
10242 /* ?readsome@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_JPEA_W_J@Z */
10243 /* ?readsome@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEHPAGH@Z */
10244 /* ?readsome@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA_JPEAG_J@Z */
10245 #if STREAMSIZE_BITS == 64
10246 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_readsome, 16)
10247 #else
10248 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_readsome, 12)
10249 #endif
10250 streamsize __thiscall basic_istream_wchar_readsome(basic_istream_wchar *this, wchar_t *str, streamsize count)
10252 return basic_istream_wchar__Readsome_s(this, str, count, count);
10255 /* ?putback@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@_W@Z */
10256 /* ?putback@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_W@Z */
10257 /* ?putback@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@G@Z */
10258 /* ?putback@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@G@Z */
10259 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_putback, 8)
10260 basic_istream_wchar* __thiscall basic_istream_wchar_putback(basic_istream_wchar *this, wchar_t ch)
10262 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10263 IOSB_iostate state = IOSTATE_goodbit;
10265 TRACE("(%p %c)\n", this, ch);
10267 this->count = 0;
10269 if(basic_istream_wchar_sentry_create(this, TRUE)) {
10270 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10272 if(!ios_base_good(&base->base))
10273 state |= IOSTATE_failbit;
10274 else if(!strbuf || basic_streambuf_wchar_sputbackc(strbuf, ch)==WEOF)
10275 state |= IOSTATE_badbit;
10277 basic_istream_wchar_sentry_destroy(this);
10279 basic_ios_wchar_setstate(base, state);
10280 return this;
10283 /* ?unget@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@XZ */
10284 /* ?unget@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@XZ */
10285 /* ?unget@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@XZ */
10286 /* ?unget@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@XZ */
10287 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_unget, 4)
10288 basic_istream_wchar* __thiscall basic_istream_wchar_unget(basic_istream_wchar *this)
10290 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10291 IOSB_iostate state = IOSTATE_goodbit;
10293 TRACE("(%p)\n", this);
10295 this->count = 0;
10297 if(basic_istream_wchar_sentry_create(this, TRUE)) {
10298 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10300 if(!ios_base_good(&base->base))
10301 state |= IOSTATE_failbit;
10302 else if(!strbuf || basic_streambuf_wchar_sungetc(strbuf)==WEOF)
10303 state |= IOSTATE_badbit;
10305 basic_istream_wchar_sentry_destroy(this);
10307 basic_ios_wchar_setstate(base, state);
10308 return this;
10311 /* ?sync@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEHXZ */
10312 /* ?sync@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAHXZ */
10313 /* ?sync@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEHXZ */
10314 /* ?sync@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAHXZ */
10315 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_sync, 4)
10316 int __thiscall basic_istream_wchar_sync(basic_istream_wchar *this)
10318 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10319 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10321 TRACE("(%p)\n", this);
10323 if(!strbuf)
10324 return -1;
10326 if(basic_istream_wchar_sentry_create(this, TRUE)) {
10327 if(basic_streambuf_wchar_pubsync(strbuf) != -1) {
10328 basic_istream_wchar_sentry_destroy(this);
10329 return 0;
10332 basic_istream_wchar_sentry_destroy(this);
10334 basic_ios_wchar_setstate(base, IOSTATE_badbit);
10335 return -1;
10338 /* ?tellg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@XZ */
10339 /* ?tellg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
10340 /* ?tellg@?$basic_istream@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@XZ */
10341 /* ?tellg@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
10342 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_tellg, 8)
10343 fpos_mbstatet* __thiscall basic_istream_wchar_tellg(basic_istream_wchar *this, fpos_mbstatet *ret)
10345 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10347 TRACE("(%p %p)\n", this, ret);
10349 #if _MSVCP_VER >= 110
10350 if(basic_istream_wchar_sentry_create(this, TRUE)) {
10351 basic_streambuf_wchar_pubseekoff(basic_ios_wchar_rdbuf_get(base),
10352 ret, 0, SEEKDIR_cur, OPENMODE_in);
10354 if(ret->off==-1 && ret->pos==0 && MBSTATET_TO_INT(&ret->state)==0)
10355 basic_ios_wchar_setstate(base, IOSTATE_failbit);
10356 }else {
10357 ret->off = -1;
10358 ret->pos = 0;
10359 memset(&ret->state, 0, sizeof(ret->state));
10361 basic_istream_wchar_sentry_destroy(this);
10362 #else
10363 if(ios_base_fail(&base->base)) {
10364 ret->off = -1;
10365 ret->pos = 0;
10366 memset(&ret->state, 0, sizeof(ret->state));
10367 return ret;
10370 basic_streambuf_wchar_pubseekoff(basic_ios_wchar_rdbuf_get(base),
10371 ret, 0, SEEKDIR_cur, OPENMODE_in);
10372 if(ret->off==-1 && ret->pos==0 && MBSTATET_TO_INT(&ret->state)==0)
10373 basic_ios_wchar_setstate(base, IOSTATE_failbit);
10374 #endif
10375 return ret;
10378 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@JW4seekdir@ios_base@2@@Z */
10379 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@_JW4seekdir@ios_base@2@@Z */
10380 /* ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@JH@Z */
10381 /* ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_JH@Z */
10382 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@JH@Z */
10383 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@_JH@Z */
10384 #if STREAMOFF_BITS == 64
10385 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_seekg, 16)
10386 #else
10387 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_seekg, 12)
10388 #endif
10389 basic_istream_wchar* __thiscall basic_istream_wchar_seekg(basic_istream_wchar *this, streamoff off, int dir)
10391 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10392 #if _MSVCP_VER >= 110
10393 IOSB_iostate state;
10395 TRACE("(%p %s %d)\n", this, wine_dbgstr_longlong(off), dir);
10397 state = ios_base_rdstate(&base->base);
10398 ios_base_clear(&base->base, state & ~IOSTATE_eofbit);
10400 if(basic_istream_wchar_sentry_create(this, TRUE)) {
10401 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10402 fpos_mbstatet ret;
10404 basic_streambuf_wchar_pubseekoff(strbuf, &ret, off, dir, OPENMODE_in);
10406 if(ret.off==-1 && ret.pos==0 && MBSTATET_TO_INT(&ret.state)==0)
10407 basic_ios_wchar_setstate(base, IOSTATE_failbit);
10409 basic_istream_wchar_sentry_destroy(this);
10410 #else
10411 TRACE("(%p %s %d)\n", this, wine_dbgstr_longlong(off), dir);
10413 if(!ios_base_fail(&base->base)) {
10414 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10415 fpos_mbstatet ret;
10417 basic_streambuf_wchar_pubseekoff(strbuf, &ret, off, dir, OPENMODE_in);
10419 if(ret.off==-1 && ret.pos==0 && MBSTATET_TO_INT(&ret.state)==0)
10420 basic_ios_wchar_setstate(base, IOSTATE_failbit);
10421 else
10422 basic_ios_wchar_clear(base, IOSTATE_goodbit);
10423 return this;
10424 }else
10425 basic_ios_wchar_clear(base, IOSTATE_goodbit);
10426 #endif
10427 return this;
10430 /* ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
10431 /* ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
10432 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
10433 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
10434 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_seekg_fpos, 28)
10435 basic_istream_wchar* __thiscall basic_istream_wchar_seekg_fpos(basic_istream_wchar *this, fpos_mbstatet pos)
10437 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10438 #if _MSVCP_VER >= 110
10439 IOSB_iostate state;
10441 TRACE("(%p %s)\n", this, debugstr_fpos_mbstatet(&pos));
10443 state = ios_base_rdstate(&base->base);
10444 ios_base_clear(&base->base, state & ~IOSTATE_eofbit);
10446 if(basic_istream_wchar_sentry_create(this, TRUE)) {
10447 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10448 fpos_mbstatet ret;
10450 basic_streambuf_wchar_pubseekpos(strbuf, &ret, pos, OPENMODE_in);
10452 if(ret.off==-1 && ret.pos==0 && MBSTATET_TO_INT(&ret.state)==0)
10453 basic_ios_wchar_setstate(base, IOSTATE_failbit);
10455 basic_istream_wchar_sentry_destroy(this);
10456 #else
10457 TRACE("(%p %s)\n", this, debugstr_fpos_mbstatet(&pos));
10459 if(!ios_base_fail(&base->base)) {
10460 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10461 fpos_mbstatet ret;
10463 basic_streambuf_wchar_pubseekpos(strbuf, &ret, pos, OPENMODE_in);
10465 if(ret.off==-1 && ret.pos==0 && MBSTATET_TO_INT(&ret.state)==0)
10466 basic_ios_wchar_setstate(base, IOSTATE_failbit);
10467 else
10468 basic_ios_wchar_clear(base, IOSTATE_goodbit);
10469 return this;
10470 }else
10471 basic_ios_wchar_clear(base, IOSTATE_goodbit);
10472 #endif
10473 return this;
10476 static basic_istream_wchar* basic_istream_read_short(basic_istream_wchar *this, short *v, const num_get *numget)
10478 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10479 int state = IOSTATE_goodbit;
10481 TRACE("(%p %p)\n", this, v);
10483 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10484 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10485 istreambuf_iterator_wchar first={0}, last={0};
10486 LONG tmp;
10488 first.strbuf = strbuf;
10489 num_get_wchar_get_long(numget, &last, first, last, &base->base, &state, &tmp);
10491 if(!(state&IOSTATE_failbit) && tmp==(LONG)((short)tmp))
10492 *v = tmp;
10493 else
10494 state |= IOSTATE_failbit;
10496 basic_istream_wchar_sentry_destroy(this);
10498 basic_ios_wchar_setstate(base, state);
10499 return this;
10502 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAF@Z */
10503 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAF@Z */
10504 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_short, 8)
10505 basic_istream_wchar* __thiscall basic_istream_wchar_read_short(basic_istream_wchar *this, short *v)
10507 return basic_istream_read_short(this, v, num_get_wchar_use_facet(
10508 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10511 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAF@Z */
10512 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAF@Z */
10513 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_short, 8)
10514 basic_istream_wchar* __thiscall basic_istream_short_read_short(basic_istream_wchar *this, short *v)
10516 return basic_istream_read_short(this, v, num_get_short_use_facet(
10517 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10520 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAG@Z */
10521 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAG@Z */
10522 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_ushort, 8)
10523 basic_istream_wchar* __thiscall basic_istream_wchar_read_ushort(basic_istream_wchar *this, unsigned short *v)
10525 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10526 int state = IOSTATE_goodbit;
10528 TRACE("(%p %p)\n", this, v);
10530 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10531 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10532 const num_get *numget = num_get_wchar_use_facet(IOS_LOCALE(strbuf));
10533 istreambuf_iterator_wchar first={0}, last={0};
10535 first.strbuf = strbuf;
10536 num_get_wchar_get_ushort(numget, &last, first, last, &base->base, &state, v);
10538 basic_istream_wchar_sentry_destroy(this);
10540 basic_ios_wchar_setstate(base, state);
10541 return this;
10544 static basic_istream_wchar* basic_istream_read_int(basic_istream_wchar *this, int *v, const num_get *numget)
10546 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10547 int state = IOSTATE_goodbit;
10549 TRACE("(%p %p)\n", this, v);
10551 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10552 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10553 istreambuf_iterator_wchar first={0}, last={0};
10555 first.strbuf = strbuf;
10556 num_get_wchar_get_long(numget, &last, first, last, &base->base, &state, v);
10558 basic_istream_wchar_sentry_destroy(this);
10560 basic_ios_wchar_setstate(base, state);
10561 return this;
10564 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAH@Z */
10565 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAH@Z */
10566 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_int, 8)
10567 basic_istream_wchar* __thiscall basic_istream_wchar_read_int(basic_istream_wchar *this, int *v)
10569 return basic_istream_read_int(this, v, num_get_wchar_use_facet(
10570 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10573 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAH@Z */
10574 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAH@Z */
10575 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_int, 8)
10576 basic_istream_wchar* __thiscall basic_istream_short_read_int(basic_istream_wchar *this, int *v)
10578 return basic_istream_read_int(this, v, num_get_short_use_facet(
10579 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10582 static basic_istream_wchar* basic_istream_read_uint(basic_istream_wchar *this, unsigned int *v, const num_get *numget)
10584 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10585 int state = IOSTATE_goodbit;
10587 TRACE("(%p %p)\n", this, v);
10589 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10590 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10591 istreambuf_iterator_wchar first={0}, last={0};
10593 first.strbuf = strbuf;
10594 num_get_wchar_get_uint(numget, &last, first, last, &base->base, &state, v);
10596 basic_istream_wchar_sentry_destroy(this);
10598 basic_ios_wchar_setstate(base, state);
10599 return this;
10602 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAI@Z */
10603 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAI@Z */
10604 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_uint, 8)
10605 basic_istream_wchar* __thiscall basic_istream_wchar_read_uint(basic_istream_wchar *this, unsigned int *v)
10607 return basic_istream_read_uint(this, v, num_get_wchar_use_facet(
10608 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10611 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAI@Z */
10612 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAI@Z */
10613 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_uint, 8)
10614 basic_istream_wchar* __thiscall basic_istream_short_read_uint(basic_istream_wchar *this, unsigned int *v)
10616 return basic_istream_read_uint(this, v, num_get_short_use_facet(
10617 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10620 static basic_istream_wchar* basic_istream_read_long(basic_istream_wchar *this, LONG *v, const num_get *numget)
10622 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10623 int state = IOSTATE_goodbit;
10625 TRACE("(%p %p)\n", this, v);
10627 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10628 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10629 istreambuf_iterator_wchar first={0}, last={0};
10631 first.strbuf = strbuf;
10632 num_get_wchar_get_long(numget, &last, first, last, &base->base, &state, v);
10634 basic_istream_wchar_sentry_destroy(this);
10636 basic_ios_wchar_setstate(base, state);
10637 return this;
10640 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAJ@Z */
10641 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAJ@Z */
10642 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_long, 8)
10643 basic_istream_wchar* __thiscall basic_istream_wchar_read_long(basic_istream_wchar *this, LONG *v)
10645 return basic_istream_read_long(this, v, num_get_wchar_use_facet(
10646 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10649 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAJ@Z */
10650 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAJ@Z */
10651 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_long, 8)
10652 basic_istream_wchar* __thiscall basic_istream_short_read_long(basic_istream_wchar *this, LONG *v)
10654 return basic_istream_read_long(this, v, num_get_short_use_facet(
10655 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10658 static basic_istream_wchar* basic_istream_read_ulong(basic_istream_wchar *this, ULONG *v, const num_get *numget)
10660 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10661 int state = IOSTATE_goodbit;
10663 TRACE("(%p %p)\n", this, v);
10665 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10666 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10667 istreambuf_iterator_wchar first={0}, last={0};
10669 first.strbuf = strbuf;
10670 num_get_wchar_get_ulong(numget, &last, first, last, &base->base, &state, v);
10672 basic_istream_wchar_sentry_destroy(this);
10674 basic_ios_wchar_setstate(base, state);
10675 return this;
10678 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAK@Z */
10679 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAK@Z */
10680 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_ulong, 8)
10681 basic_istream_wchar* __thiscall basic_istream_wchar_read_ulong(basic_istream_wchar *this, ULONG *v)
10683 return basic_istream_read_ulong(this, v, num_get_wchar_use_facet(
10684 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10687 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAK@Z */
10688 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAK@Z */
10689 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_ulong, 8)
10690 basic_istream_wchar* __thiscall basic_istream_short_read_ulong(basic_istream_wchar *this, ULONG *v)
10692 return basic_istream_read_ulong(this, v, num_get_short_use_facet(
10693 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10696 static basic_istream_wchar* basic_istream_read_float(basic_istream_wchar *this, float *v, const num_get *numget)
10698 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10699 int state = IOSTATE_goodbit;
10701 TRACE("(%p %p)\n", this, v);
10703 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10704 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10705 istreambuf_iterator_wchar first={0}, last={0};
10707 first.strbuf = strbuf;
10708 num_get_wchar_get_float(numget, &last, first, last, &base->base, &state, v);
10710 basic_istream_wchar_sentry_destroy(this);
10712 basic_ios_wchar_setstate(base, state);
10713 return this;
10716 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAM@Z */
10717 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAM@Z */
10718 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_float, 8)
10719 basic_istream_wchar* __thiscall basic_istream_wchar_read_float(basic_istream_wchar *this, float *v)
10721 return basic_istream_read_float(this, v, num_get_wchar_use_facet(
10722 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10725 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAM@Z */
10726 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAM@Z */
10727 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_float, 8)
10728 basic_istream_wchar* __thiscall basic_istream_short_read_float(basic_istream_wchar *this, float *v)
10730 return basic_istream_read_float(this, v, num_get_short_use_facet(
10731 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10734 static basic_istream_wchar* basic_istream_read_double(basic_istream_wchar *this, double *v, const num_get *numget)
10736 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10737 int state = IOSTATE_goodbit;
10739 TRACE("(%p %p)\n", this, v);
10741 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10742 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10743 istreambuf_iterator_wchar first={0}, last={0};
10745 first.strbuf = strbuf;
10746 num_get_wchar_get_double(numget, &last, first, last, &base->base, &state, v);
10748 basic_istream_wchar_sentry_destroy(this);
10750 basic_ios_wchar_setstate(base, state);
10751 return this;
10754 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAN@Z */
10755 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAN@Z */
10756 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_double, 8)
10757 basic_istream_wchar* __thiscall basic_istream_wchar_read_double(basic_istream_wchar *this, double *v)
10759 return basic_istream_read_double(this, v, num_get_wchar_use_facet(
10760 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10763 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAN@Z */
10764 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAN@Z */
10765 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_double, 8)
10766 basic_istream_wchar* __thiscall basic_istream_short_read_double(basic_istream_wchar *this, double *v)
10768 return basic_istream_read_double(this, v, num_get_short_use_facet(
10769 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10772 static basic_istream_wchar* basic_istream_read_ldouble(basic_istream_wchar *this, double *v, const num_get *numget)
10774 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10775 int state = IOSTATE_goodbit;
10777 TRACE("(%p %p)\n", this, v);
10779 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10780 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10781 istreambuf_iterator_wchar first={0}, last={0};
10783 first.strbuf = strbuf;
10784 num_get_wchar_get_ldouble(numget, &last, first, last, &base->base, &state, v);
10786 basic_istream_wchar_sentry_destroy(this);
10788 basic_ios_wchar_setstate(base, state);
10789 return this;
10792 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAO@Z */
10793 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAO@Z */
10794 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_ldouble, 8)
10795 basic_istream_wchar* __thiscall basic_istream_wchar_read_ldouble(basic_istream_wchar *this, double *v)
10797 return basic_istream_read_ldouble(this, v, num_get_wchar_use_facet(
10798 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10801 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAO@Z */
10802 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAO@Z */
10803 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_ldouble, 8)
10804 basic_istream_wchar* __thiscall basic_istream_short_read_ldouble(basic_istream_wchar *this, double *v)
10806 return basic_istream_read_ldouble(this, v, num_get_short_use_facet(
10807 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10810 static basic_istream_wchar* basic_istream_read_ptr(basic_istream_wchar *this, void **v, const num_get *numget)
10812 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10813 int state = IOSTATE_goodbit;
10815 TRACE("(%p %p)\n", this, v);
10817 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10818 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10819 istreambuf_iterator_wchar first={0}, last={0};
10821 first.strbuf = strbuf;
10822 num_get_wchar_get_void(numget, &last, first, last, &base->base, &state, v);
10824 basic_istream_wchar_sentry_destroy(this);
10826 basic_ios_wchar_setstate(base, state);
10827 return this;
10830 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAPAX@Z */
10831 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAPEAX@Z */
10832 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_ptr, 8)
10833 basic_istream_wchar* __thiscall basic_istream_wchar_read_ptr(basic_istream_wchar *this, void **v)
10835 return basic_istream_read_ptr(this, v, num_get_wchar_use_facet(
10836 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10839 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAPAX@Z */
10840 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAPEAX@Z */
10841 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_ptr, 8)
10842 basic_istream_wchar* __thiscall basic_istream_short_read_ptr(basic_istream_wchar *this, void **v)
10844 return basic_istream_read_ptr(this, v, num_get_short_use_facet(
10845 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10848 static basic_istream_wchar* basic_istream_read_int64(basic_istream_wchar *this, __int64 *v, const num_get *numget)
10850 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10851 int state = IOSTATE_goodbit;
10853 TRACE("(%p %p)\n", this, v);
10855 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10856 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10857 istreambuf_iterator_wchar first={0}, last={0};
10859 first.strbuf = strbuf;
10860 num_get_wchar_get_int64(numget, &last, first, last, &base->base, &state, v);
10862 basic_istream_wchar_sentry_destroy(this);
10864 basic_ios_wchar_setstate(base, state);
10865 return this;
10868 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AA_J@Z */
10869 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEA_J@Z */
10870 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_int64, 8)
10871 basic_istream_wchar* __thiscall basic_istream_wchar_read_int64(basic_istream_wchar *this, __int64 *v)
10873 return basic_istream_read_int64(this, v, num_get_wchar_use_facet(
10874 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10877 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AA_J@Z */
10878 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEA_J@Z */
10879 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_int64, 8)
10880 basic_istream_wchar* __thiscall basic_istream_short_read_int64(basic_istream_wchar *this, __int64 *v)
10882 return basic_istream_read_int64(this, v, num_get_short_use_facet(
10883 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10886 static basic_istream_wchar* basic_istream_read_uint64(basic_istream_wchar *this, unsigned __int64 *v, const num_get *numget)
10888 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10889 int state = IOSTATE_goodbit;
10891 TRACE("(%p %p)\n", this, v);
10893 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10894 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10895 istreambuf_iterator_wchar first={0}, last={0};
10897 first.strbuf = strbuf;
10898 num_get_wchar_get_uint64(numget, &last, first, last, &base->base, &state, v);
10900 basic_istream_wchar_sentry_destroy(this);
10902 basic_ios_wchar_setstate(base, state);
10903 return this;
10906 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AA_K@Z */
10907 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEA_K@Z */
10908 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_uint64, 8)
10909 basic_istream_wchar* __thiscall basic_istream_wchar_read_uint64(basic_istream_wchar *this, unsigned __int64 *v)
10911 return basic_istream_read_uint64(this, v, num_get_wchar_use_facet(
10912 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10915 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AA_K@Z */
10916 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEA_K@Z */
10917 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_uint64, 8)
10918 basic_istream_wchar* __thiscall basic_istream_short_read_uint64(basic_istream_wchar *this, unsigned __int64 *v)
10920 return basic_istream_read_uint64(this, v, num_get_short_use_facet(
10921 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10924 static basic_istream_wchar* basic_istream_read_bool(basic_istream_wchar *this, MSVCP_bool *v, const num_get *numget)
10926 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10927 int state = IOSTATE_goodbit;
10929 TRACE("(%p %p)\n", this, v);
10931 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10932 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10933 istreambuf_iterator_wchar first={0}, last={0};
10935 first.strbuf = strbuf;
10936 num_get_wchar_get_bool(numget, &last, first, last, &base->base, &state, v);
10938 basic_istream_wchar_sentry_destroy(this);
10940 basic_ios_wchar_setstate(base, state);
10941 return this;
10944 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AA_N@Z */
10945 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEA_N@Z */
10946 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_bool, 8)
10947 basic_istream_wchar* __thiscall basic_istream_wchar_read_bool(basic_istream_wchar *this, MSVCP_bool *v)
10949 return basic_istream_read_bool(this, v, num_get_wchar_use_facet(
10950 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10953 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AA_N@Z */
10954 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEA_N@Z */
10955 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_bool, 8)
10956 basic_istream_wchar* __thiscall basic_istream_short_read_bool(basic_istream_wchar *this, MSVCP_bool *v)
10958 return basic_istream_read_bool(this, v, num_get_short_use_facet(
10959 IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf)));
10962 /* ??$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 */
10963 /* ??$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 */
10964 /* ??$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 */
10965 /* ??$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 */
10966 basic_istream_wchar* __cdecl basic_istream_wchar_getline_bstr_delim(
10967 basic_istream_wchar *istream, basic_string_wchar *str, wchar_t delim)
10969 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istream);
10970 IOSB_iostate state = IOSTATE_goodbit;
10971 int c = delim;
10973 TRACE("(%p %p %c)\n", istream, str, delim);
10975 if(basic_istream_wchar_sentry_create(istream, TRUE)) {
10976 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10977 MSVCP_basic_string_wchar_clear(str);
10979 c = basic_streambuf_wchar_sgetc(strbuf);
10980 for(; c!=delim && c!=WEOF; c = basic_streambuf_wchar_snextc(strbuf))
10981 MSVCP_basic_string_wchar_append_ch(str, c);
10982 if(c==delim) basic_streambuf_wchar_sbumpc(strbuf);
10983 else if(c==WEOF) state |= IOSTATE_eofbit;
10985 if(!MSVCP_basic_string_wchar_length(str) && c!=delim) state |= IOSTATE_failbit;
10987 basic_istream_wchar_sentry_destroy(istream);
10989 basic_ios_wchar_setstate(basic_istream_wchar_get_basic_ios(istream), state);
10990 return istream;
10993 /* ??$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 */
10994 /* ??$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 */
10995 /* ??$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 */
10996 /* ??$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 */
10997 basic_istream_wchar* __cdecl basic_istream_wchar_getline_bstr(
10998 basic_istream_wchar *istream, basic_string_wchar *str)
11000 return basic_istream_wchar_getline_bstr_delim(istream, str, '\n');
11003 static basic_istream_wchar* basic_istream_read_bstr(basic_istream_wchar *istream,
11004 basic_string_wchar *str, const ctype_wchar *ctype)
11006 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istream);
11007 IOSB_iostate state = IOSTATE_failbit;
11008 int c = '\n';
11010 TRACE("(%p %p)\n", istream, str);
11012 if(basic_istream_wchar_sentry_create(istream, FALSE)) {
11013 MSVCP_size_t count = ios_base_width_get(&base->base);
11015 if(!count)
11016 count = -1;
11018 MSVCP_basic_string_wchar_clear(str);
11020 for(c = basic_streambuf_wchar_sgetc(basic_ios_wchar_rdbuf_get(base));
11021 c!=WEOF && !ctype_wchar_is_ch(ctype, _SPACE|_BLANK, c) && count>0;
11022 c = basic_streambuf_wchar_snextc(basic_ios_wchar_rdbuf_get(base)), count--) {
11023 state = IOSTATE_goodbit;
11024 MSVCP_basic_string_wchar_append_ch(str, c);
11027 basic_istream_wchar_sentry_destroy(istream);
11029 ios_base_width_set(&base->base, 0);
11030 basic_ios_wchar_setstate(base, state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
11031 return istream;
11034 /* ??$?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 */
11035 /* ??$?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 */
11036 basic_istream_wchar* __cdecl basic_istream_wchar_read_bstr(
11037 basic_istream_wchar *istream, basic_string_wchar *str)
11039 return basic_istream_read_bstr(istream, str, ctype_wchar_use_facet(
11040 IOS_LOCALE(basic_istream_wchar_get_basic_ios(istream)->strbuf)));
11043 /* ??$?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 */
11044 /* ??$?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 */
11045 basic_istream_wchar* __cdecl basic_istream_short_read_bstr(
11046 basic_istream_wchar *istream, basic_string_wchar *str)
11048 return basic_istream_read_bstr(istream, str, ctype_short_use_facet(
11049 IOS_LOCALE(basic_istream_wchar_get_basic_ios(istream)->strbuf)));
11052 static basic_istream_wchar* basic_istream_read_str(basic_istream_wchar *istream, wchar_t *str, const ctype_wchar *ctype)
11054 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istream);
11055 IOSB_iostate state = IOSTATE_failbit;
11056 unsigned short c = '\n';
11058 TRACE("(%p %p)\n", istream, str);
11060 if(basic_istream_wchar_sentry_create(istream, FALSE)) {
11061 MSVCP_size_t count = ios_base_width_get(&base->base)-1;
11063 for(c = basic_streambuf_wchar_sgetc(basic_ios_wchar_rdbuf_get(base));
11064 c!=WEOF && !ctype_wchar_is_ch(ctype, _SPACE|_BLANK, c) && count>0;
11065 c = basic_streambuf_wchar_snextc(basic_ios_wchar_rdbuf_get(base)), count--) {
11066 state = IOSTATE_goodbit;
11067 *str++ = c;
11070 basic_istream_wchar_sentry_destroy(istream);
11072 *str = 0;
11073 ios_base_width_set(&base->base, 0);
11074 basic_ios_wchar_setstate(base, state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
11075 return istream;
11078 /* ??$?5_WU?$char_traits@_W@std@@@std@@YAAAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AAV10@PA_W@Z */
11079 /* ??$?5_WU?$char_traits@_W@std@@@std@@YAAEAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AEAV10@PEA_W@Z */
11080 basic_istream_wchar* __cdecl basic_istream_wchar_read_str(basic_istream_wchar *istream, wchar_t *str)
11082 return basic_istream_read_str(istream, str, ctype_wchar_use_facet(
11083 IOS_LOCALE(basic_istream_wchar_get_basic_ios(istream)->strbuf)));
11086 /* ??$?5GU?$char_traits@G@std@@@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@0@AAV10@PAG@Z */
11087 /* ??$?5GU?$char_traits@G@std@@@std@@YAAEAV?$basic_istream@GU?$char_traits@G@std@@@0@AEAV10@PEAG@Z */
11088 basic_istream_wchar* __cdecl basic_istream_short_read_str(basic_istream_wchar *istream, wchar_t *str)
11090 return basic_istream_read_str(istream, str, ctype_short_use_facet(
11091 IOS_LOCALE(basic_istream_wchar_get_basic_ios(istream)->strbuf)));
11094 /* ??$?5_WU?$char_traits@_W@std@@@std@@YAAAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AAV10@AA_W@Z */
11095 /* ??$?5_WU?$char_traits@_W@std@@@std@@YAAEAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AEAV10@AEA_W@Z */
11096 /* ??$?5GU?$char_traits@G@std@@@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@0@AAV10@AAG@Z */
11097 /* ??$?5GU?$char_traits@G@std@@@std@@YAAEAV?$basic_istream@GU?$char_traits@G@std@@@0@AEAV10@AEAG@Z */
11098 basic_istream_wchar* __cdecl basic_istream_wchar_read_ch(basic_istream_wchar *istream, wchar_t *ch)
11100 IOSB_iostate state = IOSTATE_failbit;
11101 unsigned short c = 0;
11103 TRACE("(%p %p)\n", istream, ch);
11105 if(basic_istream_wchar_sentry_create(istream, FALSE)) {
11106 c = basic_streambuf_wchar_sbumpc(basic_ios_wchar_rdbuf_get(
11107 basic_istream_wchar_get_basic_ios(istream)));
11108 if(c != WEOF) {
11109 state = IOSTATE_goodbit;
11110 *ch = c;
11113 basic_istream_wchar_sentry_destroy(istream);
11115 basic_ios_wchar_setstate(basic_istream_wchar_get_basic_ios(istream),
11116 state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
11117 return istream;
11120 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
11121 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
11122 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
11123 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
11124 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_streambuf, 8)
11125 basic_istream_wchar* __thiscall basic_istream_wchar_read_streambuf(
11126 basic_istream_wchar *this, basic_streambuf_wchar *streambuf)
11128 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
11129 IOSB_iostate state = IOSTATE_failbit;
11130 unsigned short c = '\n';
11132 TRACE("(%p %p)\n", this, streambuf);
11134 if(basic_istream_wchar_sentry_create(this, FALSE)) {
11135 for(c = basic_streambuf_wchar_sgetc(basic_ios_wchar_rdbuf_get(base)); c!=WEOF;
11136 c = basic_streambuf_wchar_snextc(basic_ios_wchar_rdbuf_get(base))) {
11137 state = IOSTATE_goodbit;
11138 if(basic_streambuf_wchar_sputc(streambuf, c) == WEOF)
11139 break;
11142 basic_istream_wchar_sentry_destroy(this);
11144 basic_ios_wchar_setstate(base, state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
11145 return this;
11148 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
11149 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
11150 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
11151 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
11152 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_func, 8)
11153 basic_istream_wchar* __thiscall basic_istream_wchar_read_func(basic_istream_wchar *this,
11154 basic_istream_wchar* (__cdecl *pfunc)(basic_istream_wchar*))
11156 TRACE("(%p %p)\n", this, pfunc);
11157 pfunc(this);
11158 return this;
11161 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@_WU?$char_traits@_W@std@@@1@AAV21@@Z@Z */
11162 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@_WU?$char_traits@_W@std@@@1@AEAV21@@Z@Z */
11163 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@GU?$char_traits@G@std@@@1@AAV21@@Z@Z */
11164 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@GU?$char_traits@G@std@@@1@AEAV21@@Z@Z */
11165 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_func_basic_ios, 8)
11166 basic_istream_wchar* __thiscall basic_istream_wchar_read_func_basic_ios(basic_istream_wchar *this,
11167 basic_ios_wchar* (__cdecl *pfunc)(basic_ios_wchar*))
11169 TRACE("(%p %p)\n", this, pfunc);
11170 pfunc(basic_istream_wchar_get_basic_ios(this));
11171 return this;
11174 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
11175 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
11176 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
11177 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
11178 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_func_ios_base, 8)
11179 basic_istream_wchar* __thiscall basic_istream_wchar_read_func_ios_base(
11180 basic_istream_wchar *this, ios_base* (__cdecl *pfunc)(ios_base*))
11182 TRACE("(%p %p)\n", this, pfunc);
11183 pfunc(&basic_istream_wchar_get_basic_ios(this)->base);
11184 return this;
11187 /* ?swap@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEXAAV12@@Z */
11188 /* ?swap@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAXAEAV12@@Z */
11189 /* ?swap@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEXAAV12@@Z */
11190 /* ?swap@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAXAEAV12@@Z */
11191 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_swap, 8)
11192 void __thiscall basic_istream_wchar_swap(basic_istream_wchar *this, basic_istream_wchar *r)
11194 TRACE("(%p %p)\n", this, r);
11196 if(this == r)
11197 return;
11199 basic_ios_wchar_swap(basic_istream_wchar_get_basic_ios(this),
11200 basic_istream_wchar_get_basic_ios(r));
11201 this->count ^= r->count;
11202 r->count ^= this->count;
11203 this->count ^= r->count;
11206 static inline basic_ios_char* basic_iostream_char_to_basic_ios(basic_iostream_char *ptr)
11208 return (basic_ios_char*)((char*)ptr+basic_iostream_char_vbtable1[1]);
11211 static inline basic_iostream_char* basic_iostream_char_from_basic_ios(basic_ios_char *ptr)
11213 return (basic_iostream_char*)((char*)ptr-basic_iostream_char_vbtable1[1]);
11216 /* ??0?$basic_iostream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
11217 /* ??0?$basic_iostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
11218 DEFINE_THISCALL_WRAPPER(basic_iostream_char_ctor, 12)
11219 basic_iostream_char* __thiscall basic_iostream_char_ctor(basic_iostream_char *this, basic_streambuf_char *strbuf, MSVCP_bool virt_init)
11221 basic_ios_char *basic_ios;
11223 TRACE("(%p %p %d)\n", this, strbuf, virt_init);
11225 if(virt_init) {
11226 this->base1.vbtable = basic_iostream_char_vbtable1;
11227 this->base2.vbtable = basic_iostream_char_vbtable2;
11228 basic_ios = basic_istream_char_get_basic_ios(&this->base1);
11229 INIT_BASIC_IOS_VTORDISP(basic_ios);
11230 basic_ios_char_ctor(basic_ios);
11231 }else {
11232 basic_ios = basic_istream_char_get_basic_ios(&this->base1);
11235 basic_istream_char_ctor(&this->base1, strbuf, FALSE, FALSE);
11236 basic_ostream_char_ctor_uninitialized(&this->base2, 0, FALSE, FALSE);
11237 basic_ios->base.vtable = &MSVCP_basic_iostream_char_vtable;
11238 return this;
11241 /* ??1?$basic_iostream@DU?$char_traits@D@std@@@std@@UAE@XZ */
11242 /* ??1?$basic_iostream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
11243 DEFINE_THISCALL_WRAPPER(basic_iostream_char_dtor, 4)
11244 void __thiscall basic_iostream_char_dtor(basic_ios_char *base)
11246 basic_iostream_char *this = basic_iostream_char_from_basic_ios(base);
11248 TRACE("(%p)\n", this);
11249 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(&this->base2));
11250 basic_istream_char_dtor(basic_istream_char_to_basic_ios(&this->base1));
11253 /* ??_D?$basic_iostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
11254 /* ??_D?$basic_iostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
11255 DEFINE_THISCALL_WRAPPER(basic_iostream_char_vbase_dtor, 4)
11256 void __thiscall basic_iostream_char_vbase_dtor(basic_iostream_char *this)
11258 basic_ios_char *base = basic_iostream_char_to_basic_ios(this);
11260 TRACE("(%p)\n", this);
11262 basic_iostream_char_dtor(base);
11263 basic_ios_char_dtor(base);
11266 DEFINE_THISCALL_WRAPPER(basic_iostream_char_vector_dtor, 8)
11267 basic_iostream_char* __thiscall basic_iostream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
11269 basic_iostream_char *this = basic_iostream_char_from_basic_ios(base);
11271 TRACE("(%p %x)\n", this, flags);
11273 if(flags & 2) {
11274 /* we have an array, with the number of elements stored before the first object */
11275 INT_PTR i, *ptr = (INT_PTR *)this-1;
11277 for(i=*ptr-1; i>=0; i--)
11278 basic_iostream_char_vbase_dtor(this+i);
11279 MSVCRT_operator_delete(ptr);
11280 } else {
11281 basic_iostream_char_vbase_dtor(this);
11282 if(flags & 1)
11283 MSVCRT_operator_delete(this);
11286 return this;
11289 /* ?swap@?$basic_iostream@DU?$char_traits@D@std@@@std@@QAEXAAV12@@Z */
11290 /* ?swap@?$basic_iostream@DU?$char_traits@D@std@@@std@@QEAAXAEAV12@@Z */
11291 DEFINE_THISCALL_WRAPPER(basic_iostream_char_swap, 8)
11292 void __thiscall basic_iostream_char_swap(basic_iostream_char *this, basic_iostream_char *r)
11294 TRACE("(%p %p)\n", this, r);
11296 if(this == r)
11297 return;
11299 basic_ios_char_swap(basic_istream_char_get_basic_ios(&this->base1),
11300 basic_istream_char_get_basic_ios(&r->base1));
11303 static inline basic_ios_wchar* basic_iostream_wchar_to_basic_ios(basic_iostream_wchar *ptr)
11305 return (basic_ios_wchar*)((char*)ptr+basic_iostream_wchar_vbtable1[1]);
11308 static inline basic_iostream_wchar* basic_iostream_wchar_from_basic_ios(basic_ios_wchar *ptr)
11310 return (basic_iostream_wchar*)((char*)ptr-basic_iostream_wchar_vbtable1[1]);
11313 /* ??0?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
11314 /* ??0?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
11315 DEFINE_THISCALL_WRAPPER(basic_iostream_wchar_ctor, 12)
11316 basic_iostream_wchar* __thiscall basic_iostream_wchar_ctor(basic_iostream_wchar *this,
11317 basic_streambuf_wchar *strbuf, MSVCP_bool virt_init)
11319 basic_ios_wchar *basic_ios;
11321 TRACE("(%p %p %d)\n", this, strbuf, virt_init);
11323 if(virt_init) {
11324 this->base1.vbtable = basic_iostream_wchar_vbtable1;
11325 this->base2.vbtable = basic_iostream_wchar_vbtable2;
11326 basic_ios = basic_istream_wchar_get_basic_ios(&this->base1);
11327 INIT_BASIC_IOS_VTORDISP(basic_ios);
11328 basic_ios_wchar_ctor(basic_ios);
11329 }else {
11330 basic_ios = basic_istream_wchar_get_basic_ios(&this->base1);
11333 basic_istream_wchar_ctor(&this->base1, strbuf, FALSE, FALSE);
11334 basic_ostream_wchar_ctor_uninitialized(&this->base2, 0, FALSE, FALSE);
11336 basic_ios->base.vtable = &MSVCP_basic_iostream_wchar_vtable;
11337 return this;
11340 /* ??0?$basic_iostream@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
11341 /* ??0?$basic_iostream@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
11342 DEFINE_THISCALL_WRAPPER(basic_iostream_short_ctor, 12)
11343 basic_iostream_wchar* __thiscall basic_iostream_short_ctor(basic_iostream_wchar *this,
11344 basic_streambuf_wchar *strbuf, MSVCP_bool virt_init)
11346 basic_iostream_wchar_ctor(this, strbuf, virt_init);
11347 basic_istream_wchar_get_basic_ios(&this->base1)->base.vtable = &MSVCP_basic_iostream_short_vtable;
11348 return this;
11351 /* ??1?$basic_iostream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
11352 /* ??1?$basic_iostream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
11353 /* ??1?$basic_iostream@GU?$char_traits@G@std@@@std@@UAE@XZ */
11354 /* ??1?$basic_iostream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
11355 DEFINE_THISCALL_WRAPPER(basic_iostream_wchar_dtor, 4)
11356 void __thiscall basic_iostream_wchar_dtor(basic_ios_wchar *base)
11358 basic_iostream_wchar *this = basic_iostream_wchar_from_basic_ios(base);
11360 TRACE("(%p)\n", this);
11361 basic_ostream_wchar_dtor(basic_ostream_wchar_to_basic_ios(&this->base2));
11362 basic_istream_wchar_dtor(basic_istream_wchar_to_basic_ios(&this->base1));
11365 /* ??_D?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
11366 /* ??_D?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
11367 /* ??_D?$basic_iostream@GU?$char_traits@G@std@@@std@@QAEXXZ */
11368 /* ??_D?$basic_iostream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
11369 DEFINE_THISCALL_WRAPPER(basic_iostream_wchar_vbase_dtor, 4)
11370 void __thiscall basic_iostream_wchar_vbase_dtor(basic_iostream_wchar *this)
11372 basic_ios_wchar *base = basic_iostream_wchar_to_basic_ios(this);
11374 TRACE("(%p)\n", this);
11376 basic_iostream_wchar_dtor(base);
11377 basic_ios_wchar_dtor(base);
11380 DEFINE_THISCALL_WRAPPER(basic_iostream_wchar_vector_dtor, 8)
11381 basic_iostream_wchar* __thiscall basic_iostream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
11383 basic_iostream_wchar *this = basic_iostream_wchar_from_basic_ios(base);
11385 TRACE("(%p %x)\n", this, flags);
11387 if(flags & 2) {
11388 /* we have an array, with the number of elements stored before the first object */
11389 INT_PTR i, *ptr = (INT_PTR *)this-1;
11391 for(i=*ptr-1; i>=0; i--)
11392 basic_iostream_wchar_vbase_dtor(this+i);
11393 MSVCRT_operator_delete(ptr);
11394 } else {
11395 basic_iostream_wchar_vbase_dtor(this);
11396 if(flags & 1)
11397 MSVCRT_operator_delete(this);
11400 return this;
11403 /* ?swap@?$basic_iostream@GU?$char_traits@G@std@@@std@@QAEXAAV12@@Z */
11404 /* ?swap@?$basic_iostream@GU?$char_traits@G@std@@@std@@QEAAXAEAV12@@Z */
11405 /* ?swap@?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QAEXAAV12@@Z */
11406 /* ?swap@?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QEAAXAEAV12@@Z */
11407 DEFINE_THISCALL_WRAPPER(basic_iostream_wchar_swap, 8)
11408 void __thiscall basic_iostream_wchar_swap(basic_iostream_wchar *this, basic_iostream_wchar *r)
11410 TRACE("(%p %p)\n", this, r);
11412 if(this == r)
11413 return;
11415 basic_ios_wchar_swap(basic_istream_wchar_get_basic_ios(&this->base1),
11416 basic_istream_wchar_get_basic_ios(&r->base1));
11419 static inline basic_ios_char* basic_ofstream_char_to_basic_ios(basic_ofstream_char *ptr)
11421 return (basic_ios_char*)((char*)ptr+basic_ofstream_char_vbtable[1]);
11424 static inline basic_ofstream_char* basic_ofstream_char_from_basic_ios(basic_ios_char *ptr)
11426 return (basic_ofstream_char*)((char*)ptr-basic_ofstream_char_vbtable[1]);
11429 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@XZ */
11430 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@XZ */
11431 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_ctor, 8)
11432 basic_ofstream_char* __thiscall basic_ofstream_char_ctor(basic_ofstream_char *this, MSVCP_bool virt_init)
11434 basic_ios_char *basic_ios;
11436 TRACE("(%p %d)\n", this, virt_init);
11438 if(virt_init) {
11439 this->base.vbtable = basic_ofstream_char_vbtable;
11440 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11441 INIT_BASIC_IOS_VTORDISP(basic_ios);
11442 basic_ios_char_ctor(basic_ios);
11443 }else {
11444 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11447 basic_filebuf_char_ctor(&this->filebuf);
11448 basic_ostream_char_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
11449 basic_ios->base.vtable = &MSVCP_basic_ofstream_char_vtable;
11450 return this;
11453 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PAU_iobuf@@@Z */
11454 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@PEAU_iobuf@@@Z */
11455 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_ctor_file, 12)
11456 basic_ofstream_char* __thiscall basic_ofstream_char_ctor_file(
11457 basic_ofstream_char *this, FILE *file, MSVCP_bool virt_init)
11459 basic_ios_char *basic_ios;
11461 TRACE("(%p %p %d)\n", this, file, virt_init);
11463 if(virt_init) {
11464 this->base.vbtable = basic_ofstream_char_vbtable;
11465 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11466 INIT_BASIC_IOS_VTORDISP(basic_ios);
11467 basic_ios_char_ctor(basic_ios);
11468 }else {
11469 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11472 basic_filebuf_char_ctor_file(&this->filebuf, file);
11473 basic_ostream_char_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
11474 basic_ios->base.vtable = &MSVCP_basic_ofstream_char_vtable;
11475 return this;
11478 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PBDHH@Z */
11479 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDHH@Z */
11480 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_ctor_name, 20)
11481 basic_ofstream_char* __thiscall basic_ofstream_char_ctor_name(basic_ofstream_char *this,
11482 const char *name, int mode, int prot, MSVCP_bool virt_init)
11484 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
11486 basic_ofstream_char_ctor(this, virt_init);
11488 if(!basic_filebuf_char_open(&this->filebuf, name, mode|OPENMODE_out, prot)) {
11489 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11490 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
11492 return this;
11495 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PBGHH@Z */
11496 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@PEBGHH@Z */
11497 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PB_WHH@Z */
11498 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@PEB_WHH@Z */
11499 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_ctor_name_wchar, 20)
11500 basic_ofstream_char* __thiscall basic_ofstream_char_ctor_name_wchar(basic_ofstream_char *this,
11501 const wchar_t *name, int mode, int prot, MSVCP_bool virt_init)
11503 TRACE("(%p %s %d %d %d)\n", this, debugstr_w(name), mode, prot, virt_init);
11505 basic_ofstream_char_ctor(this, virt_init);
11507 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode|OPENMODE_out, prot)) {
11508 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11509 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
11511 return this;
11514 /* ??1?$basic_ofstream@DU?$char_traits@D@std@@@std@@UAE@XZ */
11515 /* ??1?$basic_ofstream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
11516 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_dtor, 4)
11517 void __thiscall basic_ofstream_char_dtor(basic_ios_char *base)
11519 basic_ofstream_char *this = basic_ofstream_char_from_basic_ios(base);
11521 TRACE("(%p)\n", this);
11523 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(&this->base));
11524 basic_filebuf_char_dtor(&this->filebuf);
11527 /* ??_D?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
11528 /* ??_D?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
11529 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_vbase_dtor, 4)
11530 void __thiscall basic_ofstream_char_vbase_dtor(basic_ofstream_char *this)
11532 basic_ios_char *base = basic_ofstream_char_to_basic_ios(this);
11534 TRACE("(%p)\n", this);
11536 basic_ofstream_char_dtor(base);
11537 basic_ios_char_dtor(base);
11540 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_vector_dtor, 8)
11541 basic_ofstream_char* __thiscall basic_ofstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
11543 basic_ofstream_char *this = basic_ofstream_char_from_basic_ios(base);
11545 TRACE("(%p %x)\n", this, flags);
11547 if(flags & 2) {
11548 /* we have an array, with the number of elements stored before the first object */
11549 INT_PTR i, *ptr = (INT_PTR *)this-1;
11551 for(i=*ptr-1; i>=0; i--)
11552 basic_ofstream_char_vbase_dtor(this+i);
11553 MSVCRT_operator_delete(ptr);
11554 } else {
11555 basic_ofstream_char_vbase_dtor(this);
11556 if(flags & 1)
11557 MSVCRT_operator_delete(this);
11560 return this;
11563 /* ?close@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
11564 /* ?close@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
11565 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_close, 4)
11566 void __thiscall basic_ofstream_char_close(basic_ofstream_char *this)
11568 TRACE("(%p)\n", this);
11570 if(!basic_filebuf_char_close(&this->filebuf)) {
11571 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11572 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
11576 /* ?is_open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QBE_NXZ */
11577 /* ?is_open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEBA_NXZ */
11578 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_is_open, 4)
11579 MSVCP_bool __thiscall basic_ofstream_char_is_open(const basic_ofstream_char *this)
11581 TRACE("(%p)\n", this);
11582 return basic_filebuf_char_is_open(&this->filebuf);
11585 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPBDHH@Z */
11586 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDHH@Z */
11587 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_open, 16)
11588 void __thiscall basic_ofstream_char_open(basic_ofstream_char *this,
11589 const char *name, int mode, int prot)
11591 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
11593 if(!basic_filebuf_char_open(&this->filebuf, name, mode|OPENMODE_out, prot)) {
11594 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11595 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
11599 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPBDI@Z */
11600 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDI@Z */
11601 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_open_old, 12)
11602 void __thiscall basic_ofstream_char_open_old(basic_ofstream_char *this,
11603 const char *name, unsigned int mode)
11605 basic_ofstream_char_open(this, name, mode, _SH_DENYNO);
11608 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPBGHH@Z */
11609 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGHH@Z */
11610 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPB_WHH@Z */
11611 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WHH@Z */
11612 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_open_wchar, 16)
11613 void __thiscall basic_ofstream_char_open_wchar(basic_ofstream_char *this,
11614 const wchar_t *name, int mode, int prot)
11616 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
11618 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode|OPENMODE_out, prot)) {
11619 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11620 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
11624 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPBGI@Z */
11625 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGI@Z */
11626 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPB_WI@Z */
11627 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WI@Z */
11628 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_open_wchar_old, 12)
11629 void __thiscall basic_ofstream_char_open_wchar_old(basic_ofstream_char *this,
11630 const wchar_t *name, unsigned int mode)
11632 basic_ofstream_char_open_wchar(this, name, mode, _SH_DENYNO);
11635 /* ?rdbuf@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
11636 /* ?rdbuf@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
11637 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_rdbuf, 4)
11638 basic_filebuf_char* __thiscall basic_ofstream_char_rdbuf(const basic_ofstream_char *this)
11640 TRACE("(%p)\n", this);
11641 return (basic_filebuf_char*)&this->filebuf;
11644 static inline basic_ios_wchar* basic_ofstream_wchar_to_basic_ios(basic_ofstream_wchar *ptr)
11646 return (basic_ios_wchar*)((char*)ptr+basic_ofstream_wchar_vbtable[1]);
11649 static inline basic_ofstream_wchar* basic_ofstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
11651 return (basic_ofstream_wchar*)((char*)ptr-basic_ofstream_wchar_vbtable[1]);
11654 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAE@XZ */
11655 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAA@XZ */
11656 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_ctor, 8)
11657 basic_ofstream_wchar* __thiscall basic_ofstream_wchar_ctor(basic_ofstream_wchar *this, MSVCP_bool virt_init)
11659 basic_ios_wchar *basic_ios;
11661 TRACE("(%p %d)\n", this, virt_init);
11663 if(virt_init) {
11664 this->base.vbtable = basic_ofstream_wchar_vbtable;
11665 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11666 INIT_BASIC_IOS_VTORDISP(basic_ios);
11667 basic_ios_wchar_ctor(basic_ios);
11668 }else {
11669 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11672 basic_filebuf_wchar_ctor(&this->filebuf);
11673 basic_ostream_wchar_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
11674 basic_ios->base.vtable = &MSVCP_basic_ofstream_wchar_vtable;
11675 return this;
11678 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@XZ */
11679 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@XZ */
11680 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_ctor, 8)
11681 basic_ofstream_wchar* __thiscall basic_ofstream_short_ctor(basic_ofstream_wchar *this, MSVCP_bool virt_init)
11683 basic_ofstream_wchar_ctor(this, virt_init);
11684 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ofstream_short_vtable;
11685 return this;
11688 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAE@PAU_iobuf@@@Z */
11689 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAU_iobuf@@@Z */
11690 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_ctor_file, 12)
11691 basic_ofstream_wchar* __thiscall basic_ofstream_wchar_ctor_file(
11692 basic_ofstream_wchar *this, FILE *file, MSVCP_bool virt_init)
11694 basic_ios_wchar *basic_ios;
11696 TRACE("(%p %p %d)\n", this, file, virt_init);
11698 if(virt_init) {
11699 this->base.vbtable = basic_ofstream_wchar_vbtable;
11700 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11701 INIT_BASIC_IOS_VTORDISP(basic_ios);
11702 basic_ios_wchar_ctor(basic_ios);
11703 }else {
11704 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11707 basic_filebuf_wchar_ctor_file(&this->filebuf, file);
11708 basic_ostream_wchar_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
11709 basic_ios->base.vtable = &MSVCP_basic_ofstream_wchar_vtable;
11710 return this;
11713 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@PAU_iobuf@@@Z */
11714 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@PEAU_iobuf@@@Z */
11715 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_ctor_file, 12)
11716 basic_ofstream_wchar* __thiscall basic_ofstream_short_ctor_file(
11717 basic_ofstream_wchar *this, FILE *file, MSVCP_bool virt_init)
11719 basic_ofstream_wchar_ctor_file(this, file, virt_init);
11720 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ofstream_short_vtable;
11721 return this;
11724 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAE@PBDHH@Z */
11725 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEBDHH@Z */
11726 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_ctor_name, 20)
11727 basic_ofstream_wchar* __thiscall basic_ofstream_wchar_ctor_name(basic_ofstream_wchar *this,
11728 const char *name, int mode, int prot, MSVCP_bool virt_init)
11730 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
11732 basic_ofstream_wchar_ctor(this, virt_init);
11734 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode|OPENMODE_out, prot)) {
11735 basic_ios_wchar *basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11736 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
11738 return this;
11741 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@PBDHH@Z */
11742 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@PEBDHH@Z */
11743 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_ctor_name, 20)
11744 basic_ofstream_wchar* __thiscall basic_ofstream_short_ctor_name(basic_ofstream_wchar *this,
11745 const char *name, int mode, int prot, MSVCP_bool virt_init)
11747 basic_ofstream_wchar_ctor_name(this, name, mode, prot, virt_init);
11748 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ofstream_short_vtable;
11749 return this;
11752 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAE@PBGHH@Z */
11753 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEBGHH@Z */
11754 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAE@PB_WHH@Z */
11755 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEB_WHH@Z */
11756 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_ctor_name_wchar, 20)
11757 basic_ofstream_wchar* __thiscall basic_ofstream_wchar_ctor_name_wchar(basic_ofstream_wchar *this,
11758 const wchar_t *name, int mode, int prot, MSVCP_bool virt_init)
11760 TRACE("(%p %s %d %d %d)\n", this, debugstr_w(name), mode, prot, virt_init);
11762 basic_ofstream_wchar_ctor(this, virt_init);
11764 if(!basic_filebuf_wchar_open_wchar(&this->filebuf, name, mode|OPENMODE_out, prot)) {
11765 basic_ios_wchar *basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11766 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
11768 return this;
11771 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@PBGHH@Z */
11772 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@PEBGHH@Z */
11773 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@PB_WHH@Z */
11774 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@PEB_WHH@Z */
11775 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_ctor_name_wchar, 20)
11776 basic_ofstream_wchar* __thiscall basic_ofstream_short_ctor_name_wchar(basic_ofstream_wchar *this,
11777 const wchar_t *name, int mode, int prot, MSVCP_bool virt_init)
11779 basic_ofstream_wchar_ctor_name_wchar(this, name, mode, prot, virt_init);
11780 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ofstream_short_vtable;
11781 return this;
11784 /* ??1?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
11785 /* ??1?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
11786 /* ??1?$basic_ofstream@GU?$char_traits@G@std@@@std@@UAE@XZ */
11787 /* ??1?$basic_ofstream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
11788 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_dtor, 4)
11789 void __thiscall basic_ofstream_wchar_dtor(basic_ios_wchar *base)
11791 basic_ofstream_wchar *this = basic_ofstream_wchar_from_basic_ios(base);
11793 TRACE("(%p)\n", this);
11795 basic_ostream_wchar_dtor(basic_ostream_wchar_to_basic_ios(&this->base));
11796 basic_filebuf_wchar_dtor(&this->filebuf);
11799 /* ??_D?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
11800 /* ??_D?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
11801 /* ??_D?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
11802 /* ??_D?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
11803 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_vbase_dtor, 4)
11804 void __thiscall basic_ofstream_wchar_vbase_dtor(basic_ofstream_wchar *this)
11806 basic_ios_wchar *base = basic_ofstream_wchar_to_basic_ios(this);
11808 TRACE("(%p)\n", this);
11810 basic_ofstream_wchar_dtor(base);
11811 basic_ios_wchar_dtor(base);
11814 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_vector_dtor, 8)
11815 basic_ofstream_wchar* __thiscall basic_ofstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
11817 basic_ofstream_wchar *this = basic_ofstream_wchar_from_basic_ios(base);
11819 TRACE("(%p %x)\n", this, flags);
11821 if(flags & 2) {
11822 /* we have an array, with the number of elements stored before the first object */
11823 INT_PTR i, *ptr = (INT_PTR *)this-1;
11825 for(i=*ptr-1; i>=0; i--)
11826 basic_ofstream_wchar_vbase_dtor(this+i);
11827 MSVCRT_operator_delete(ptr);
11828 } else {
11829 basic_ofstream_wchar_vbase_dtor(this);
11830 if(flags & 1)
11831 MSVCRT_operator_delete(this);
11834 return this;
11837 /* ?close@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
11838 /* ?close@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
11839 /* ?close@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
11840 /* ?close@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
11841 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_close, 4)
11842 void __thiscall basic_ofstream_wchar_close(basic_ofstream_wchar *this)
11844 TRACE("(%p)\n", this);
11846 if(!basic_filebuf_wchar_close(&this->filebuf)) {
11847 basic_ios_wchar *basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11848 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
11852 /* ?is_open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QBE_NXZ */
11853 /* ?is_open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEBA_NXZ */
11854 /* ?is_open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QBE_NXZ */
11855 /* ?is_open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEBA_NXZ */
11856 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_is_open, 4)
11857 MSVCP_bool __thiscall basic_ofstream_wchar_is_open(const basic_ofstream_wchar *this)
11859 TRACE("(%p)\n", this);
11860 return basic_filebuf_wchar_is_open(&this->filebuf);
11863 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDHH@Z */
11864 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDHH@Z */
11865 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPBDHH@Z */
11866 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDHH@Z */
11867 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_open, 16)
11868 void __thiscall basic_ofstream_wchar_open(basic_ofstream_wchar *this,
11869 const char *name, int mode, int prot)
11871 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
11873 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode|OPENMODE_out, prot)) {
11874 basic_ios_wchar *basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11875 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
11879 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDI@Z */
11880 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDI@Z */
11881 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPBDI@Z */
11882 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDI@Z */
11883 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_open_old, 12)
11884 void __thiscall basic_ofstream_wchar_open_old(basic_ofstream_wchar *this,
11885 const char *name, unsigned int mode)
11887 basic_ofstream_wchar_open(this, name, mode, _SH_DENYNO);
11890 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXPBGHH@Z */
11891 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBGHH@Z */
11892 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXPB_WHH@Z */
11893 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEB_WHH@Z */
11894 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPBGHH@Z */
11895 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEBGHH@Z */
11896 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPB_WHH@Z */
11897 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEB_WHH@Z */
11898 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_open_wchar, 16)
11899 void __thiscall basic_ofstream_wchar_open_wchar(basic_ofstream_wchar *this,
11900 const wchar_t *name, int mode, int prot)
11902 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
11904 if(!basic_filebuf_wchar_open_wchar(&this->filebuf, name, mode|OPENMODE_out, prot)) {
11905 basic_ios_wchar *basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11906 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
11910 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXPBGI@Z */
11911 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBGI@Z */
11912 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXPB_WI@Z */
11913 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEB_WI@Z */
11914 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPBGI@Z */
11915 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEBGI@Z */
11916 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPB_WI@Z */
11917 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEB_WI@Z */
11918 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_open_wchar_old, 12)
11919 void __thiscall basic_ofstream_wchar_open_wchar_old(basic_ofstream_wchar *this,
11920 const wchar_t *name, unsigned int mode)
11922 basic_ofstream_wchar_open_wchar(this, name, mode, _SH_DENYNO);
11925 /* ?rdbuf@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
11926 /* ?rdbuf@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
11927 /* ?rdbuf@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
11928 /* ?rdbuf@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
11929 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_rdbuf, 4)
11930 basic_filebuf_wchar* __thiscall basic_ofstream_wchar_rdbuf(const basic_ofstream_wchar *this)
11932 TRACE("(%p)\n", this);
11933 return (basic_filebuf_wchar*)&this->filebuf;
11936 static inline basic_ios_char* basic_ifstream_char_to_basic_ios(basic_ifstream_char *ptr)
11938 return (basic_ios_char*)((char*)ptr+basic_ifstream_char_vbtable[1]);
11941 static inline basic_ifstream_char* basic_ifstream_char_from_basic_ios(basic_ios_char *ptr)
11943 return (basic_ifstream_char*)((char*)ptr-basic_ifstream_char_vbtable[1]);
11946 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@XZ */
11947 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@XZ */
11948 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor, 8)
11949 basic_ifstream_char* __thiscall basic_ifstream_char_ctor(basic_ifstream_char *this, MSVCP_bool virt_init)
11951 basic_ios_char *basic_ios;
11953 TRACE("(%p %d)\n", this, virt_init);
11955 if(virt_init) {
11956 this->base.vbtable = basic_ifstream_char_vbtable;
11957 basic_ios = basic_istream_char_get_basic_ios(&this->base);
11958 INIT_BASIC_IOS_VTORDISP(basic_ios);
11959 basic_ios_char_ctor(basic_ios);
11960 }else {
11961 basic_ios = basic_istream_char_get_basic_ios(&this->base);
11964 basic_filebuf_char_ctor(&this->filebuf);
11965 basic_istream_char_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
11966 basic_ios->base.vtable = &MSVCP_basic_ifstream_char_vtable;
11967 return this;
11970 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@PAU_iobuf@@@Z */
11971 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@PEAU_iobuf@@@Z */
11972 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor_file, 12)
11973 basic_ifstream_char* __thiscall basic_ifstream_char_ctor_file(
11974 basic_ifstream_char *this, FILE *file, MSVCP_bool virt_init)
11976 basic_ios_char *basic_ios;
11978 TRACE("(%p %p %d)\n", this, file, virt_init);
11980 if(virt_init) {
11981 this->base.vbtable = basic_ifstream_char_vbtable;
11982 basic_ios = basic_istream_char_get_basic_ios(&this->base);
11983 INIT_BASIC_IOS_VTORDISP(basic_ios);
11984 basic_ios_char_ctor(basic_ios);
11985 }else {
11986 basic_ios = basic_istream_char_get_basic_ios(&this->base);
11989 basic_filebuf_char_ctor_file(&this->filebuf, file);
11990 basic_istream_char_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
11991 basic_ios->base.vtable = &MSVCP_basic_ifstream_char_vtable;
11992 return this;
11995 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@PBDHH@Z */
11996 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDHH@Z */
11997 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor_name, 20)
11998 basic_ifstream_char* __thiscall basic_ifstream_char_ctor_name(basic_ifstream_char *this,
11999 const char *name, int mode, int prot, MSVCP_bool virt_init)
12001 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
12003 basic_ifstream_char_ctor(this, virt_init);
12005 if(!basic_filebuf_char_open(&this->filebuf, name, mode|OPENMODE_in, prot)) {
12006 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
12007 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
12009 return this;
12012 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@PBDH@Z */
12013 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDH@Z */
12014 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor_name_old, 16)
12015 basic_ifstream_char* __thiscall basic_ifstream_char_ctor_name_old(basic_ifstream_char *this,
12016 const char *name, int mode, MSVCP_bool virt_init)
12018 return basic_ifstream_char_ctor_name(this, name, mode, _SH_DENYNO, virt_init);
12021 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@PBGHH@Z */
12022 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@PEBGHH@Z */
12023 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@PB_WHH@Z */
12024 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@PEB_WHH@Z */
12025 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor_name_wchar, 20)
12026 basic_ifstream_char* __thiscall basic_ifstream_char_ctor_name_wchar(basic_ifstream_char *this,
12027 const wchar_t *name, int mode, int prot, MSVCP_bool virt_init)
12029 TRACE("(%p %s %d %d %d)\n", this, debugstr_w(name), mode, prot, virt_init);
12031 basic_ifstream_char_ctor(this, virt_init);
12033 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode|OPENMODE_in, prot)) {
12034 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
12035 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
12037 return this;
12040 /* ??1?$basic_ifstream@DU?$char_traits@D@std@@@std@@UAE@XZ */
12041 /* ??1?$basic_ifstream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
12042 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_dtor, 4)
12043 void __thiscall basic_ifstream_char_dtor(basic_ios_char *base)
12045 basic_ifstream_char *this = basic_ifstream_char_from_basic_ios(base);
12047 TRACE("(%p)\n", this);
12049 basic_istream_char_dtor(basic_istream_char_to_basic_ios(&this->base));
12050 basic_filebuf_char_dtor(&this->filebuf);
12053 /* ??_D?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
12054 /* ??_D?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
12055 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_vbase_dtor, 4)
12056 void __thiscall basic_ifstream_char_vbase_dtor(basic_ifstream_char *this)
12058 basic_ios_char *base = basic_ifstream_char_to_basic_ios(this);
12060 TRACE("(%p)\n", this);
12062 basic_ifstream_char_dtor(base);
12063 basic_ios_char_dtor(base);
12066 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_vector_dtor, 8)
12067 basic_ifstream_char* __thiscall basic_ifstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
12069 basic_ifstream_char *this = basic_ifstream_char_from_basic_ios(base);
12071 TRACE("(%p %x)\n", this, flags);
12073 if(flags & 2) {
12074 /* we have an array, with the number of elements stored before the first object */
12075 INT_PTR i, *ptr = (INT_PTR *)this-1;
12077 for(i=*ptr-1; i>=0; i--)
12078 basic_ifstream_char_vbase_dtor(this+i);
12079 MSVCRT_operator_delete(ptr);
12080 } else {
12081 basic_ifstream_char_vbase_dtor(this);
12082 if(flags & 1)
12083 MSVCRT_operator_delete(this);
12086 return this;
12089 /* ?close@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
12090 /* ?close@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
12091 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_close, 4)
12092 void __thiscall basic_ifstream_char_close(basic_ifstream_char *this)
12094 TRACE("(%p)\n", this);
12096 if(!basic_filebuf_char_close(&this->filebuf)) {
12097 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
12098 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
12102 /* ?is_open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QBE_NXZ */
12103 /* ?is_open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEBA_NXZ */
12104 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_is_open, 4)
12105 MSVCP_bool __thiscall basic_ifstream_char_is_open(const basic_ifstream_char *this)
12107 TRACE("(%p)\n", this);
12108 return basic_filebuf_char_is_open(&this->filebuf);
12111 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPBDHH@Z */
12112 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDHH@Z */
12113 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_open, 16)
12114 void __thiscall basic_ifstream_char_open(basic_ifstream_char *this,
12115 const char *name, int mode, int prot)
12117 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
12119 if(!basic_filebuf_char_open(&this->filebuf, name, mode|OPENMODE_in, prot)) {
12120 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
12121 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
12125 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPBDI@Z */
12126 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDI@Z */
12127 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_open_old, 12)
12128 void __thiscall basic_ifstream_char_open_old(basic_ifstream_char *this,
12129 const char *name, unsigned int mode)
12131 basic_ifstream_char_open(this, name, mode, _SH_DENYNO);
12134 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPBGHH@Z */
12135 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGHH@Z */
12136 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPB_WHH@Z */
12137 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WHH@Z */
12138 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_open_wchar, 16)
12139 void __thiscall basic_ifstream_char_open_wchar(basic_ifstream_char *this,
12140 const wchar_t *name, int mode, int prot)
12142 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
12144 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode|OPENMODE_in, prot)) {
12145 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
12146 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
12150 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPBGI@Z */
12151 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGI@Z */
12152 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPB_WI@Z */
12153 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WI@Z */
12154 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_open_wchar_old, 12)
12155 void __thiscall basic_ifstream_char_open_wchar_old(basic_ifstream_char *this,
12156 const wchar_t *name, unsigned int mode)
12158 basic_ifstream_char_open_wchar(this, name, mode, _SH_DENYNO);
12161 /* ?rdbuf@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
12162 /* ?rdbuf@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
12163 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_rdbuf, 4)
12164 basic_filebuf_char* __thiscall basic_ifstream_char_rdbuf(const basic_ifstream_char *this)
12166 TRACE("(%p)\n", this);
12167 return (basic_filebuf_char*)&this->filebuf;
12170 static inline basic_ios_wchar* basic_ifstream_wchar_to_basic_ios(basic_ifstream_wchar *ptr)
12172 return (basic_ios_wchar*)((char*)ptr+basic_ifstream_wchar_vbtable[1]);
12175 static inline basic_ifstream_wchar* basic_ifstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
12177 return (basic_ifstream_wchar*)((char*)ptr-basic_ifstream_wchar_vbtable[1]);
12180 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAE@XZ */
12181 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAA@XZ */
12182 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_ctor, 8)
12183 basic_ifstream_wchar* __thiscall basic_ifstream_wchar_ctor(basic_ifstream_wchar *this, MSVCP_bool virt_init)
12185 basic_ios_wchar *basic_ios;
12187 TRACE("(%p %d)\n", this, virt_init);
12189 if(virt_init) {
12190 this->base.vbtable = basic_ifstream_wchar_vbtable;
12191 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
12192 INIT_BASIC_IOS_VTORDISP(basic_ios);
12193 basic_ios_wchar_ctor(basic_ios);
12194 }else {
12195 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
12198 basic_filebuf_wchar_ctor(&this->filebuf);
12199 basic_istream_wchar_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
12200 basic_ios->base.vtable = &MSVCP_basic_ifstream_wchar_vtable;
12201 return this;
12204 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@XZ */
12205 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@XZ */
12206 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_ctor, 8)
12207 basic_ifstream_wchar* __thiscall basic_ifstream_short_ctor(basic_ifstream_wchar *this, MSVCP_bool virt_init)
12209 basic_ifstream_wchar_ctor(this, virt_init);
12210 basic_istream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ifstream_short_vtable;
12211 return this;
12214 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAE@PAU_iobuf@@@Z */
12215 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAU_iobuf@@@Z */
12216 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_ctor_file, 12)
12217 basic_ifstream_wchar* __thiscall basic_ifstream_wchar_ctor_file(
12218 basic_ifstream_wchar *this, FILE *file, MSVCP_bool virt_init)
12220 basic_ios_wchar *basic_ios;
12222 TRACE("(%p %p %d)\n", this, file, virt_init);
12224 if(virt_init) {
12225 this->base.vbtable = basic_ifstream_wchar_vbtable;
12226 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
12227 INIT_BASIC_IOS_VTORDISP(basic_ios);
12228 basic_ios_wchar_ctor(basic_ios);
12229 }else {
12230 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
12233 basic_filebuf_wchar_ctor_file(&this->filebuf, file);
12234 basic_istream_wchar_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
12235 basic_ios->base.vtable = &MSVCP_basic_ifstream_wchar_vtable;
12236 return this;
12239 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@PAU_iobuf@@@Z */
12240 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@PEAU_iobuf@@@Z */
12241 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_ctor_file, 12)
12242 basic_ifstream_wchar* __thiscall basic_ifstream_short_ctor_file(
12243 basic_ifstream_wchar *this, FILE *file, MSVCP_bool virt_init)
12245 basic_ifstream_wchar_ctor_file(this, file, virt_init);
12246 basic_istream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ifstream_short_vtable;
12247 return this;
12250 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAE@PBDHH@Z */
12251 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEBDHH@Z */
12252 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_ctor_name, 20)
12253 basic_ifstream_wchar* __thiscall basic_ifstream_wchar_ctor_name(basic_ifstream_wchar *this,
12254 const char *name, int mode, int prot, MSVCP_bool virt_init)
12256 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
12258 basic_ifstream_wchar_ctor(this, virt_init);
12260 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode|OPENMODE_in, prot)) {
12261 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
12262 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
12264 return this;
12267 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@PBDHH@Z */
12268 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@PEBDHH@Z */
12269 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_ctor_name, 20)
12270 basic_ifstream_wchar* __thiscall basic_ifstream_short_ctor_name(basic_ifstream_wchar *this,
12271 const char *name, int mode, int prot, MSVCP_bool virt_init)
12273 basic_ifstream_wchar_ctor_name(this, name, mode, prot, virt_init);
12274 basic_istream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ifstream_short_vtable;
12275 return this;
12278 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAE@PBDH@Z */
12279 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEBDH@Z */
12280 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_ctor_name_old, 16)
12281 basic_ifstream_wchar* __thiscall basic_ifstream_wchar_ctor_name_old(basic_ifstream_wchar *this,
12282 const char *name, int mode, MSVCP_bool virt_init)
12284 return basic_ifstream_wchar_ctor_name(this, name, mode, _SH_DENYNO, virt_init);
12287 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@PBDH@Z */
12288 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@PEBDH@Z */
12289 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_ctor_name_old, 16)
12290 basic_ifstream_wchar* __thiscall basic_ifstream_short_ctor_name_old(basic_ifstream_wchar *this,
12291 const char *name, int mode, MSVCP_bool virt_init)
12293 return basic_ifstream_short_ctor_name(this, name, mode, _SH_DENYNO, virt_init);
12296 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAE@PBGHH@Z */
12297 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEBGHH@Z */
12298 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAE@PB_WHH@Z */
12299 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEB_WHH@Z */
12300 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_ctor_name_wchar, 20)
12301 basic_ifstream_wchar* __thiscall basic_ifstream_wchar_ctor_name_wchar(basic_ifstream_wchar *this,
12302 const wchar_t *name, int mode, int prot, MSVCP_bool virt_init)
12304 TRACE("(%p %s %d %d %d)\n", this, debugstr_w(name), mode, prot, virt_init);
12306 basic_ifstream_wchar_ctor(this, virt_init);
12308 if(!basic_filebuf_wchar_open_wchar(&this->filebuf, name, mode|OPENMODE_in, prot)) {
12309 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
12310 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
12312 return this;
12315 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@PBGHH@Z */
12316 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@PEBGHH@Z */
12317 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@PB_WHH@Z */
12318 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@PEB_WHH@Z */
12319 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_ctor_name_wchar, 20)
12320 basic_ifstream_wchar* __thiscall basic_ifstream_short_ctor_name_wchar(basic_ifstream_wchar *this,
12321 const wchar_t *name, int mode, int prot, MSVCP_bool virt_init)
12323 basic_ifstream_wchar_ctor_name_wchar(this, name, mode, prot, virt_init);
12324 basic_istream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ifstream_short_vtable;
12325 return this;
12328 /* ??1?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
12329 /* ??1?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
12330 /* ??1?$basic_ifstream@GU?$char_traits@G@std@@@std@@UAE@XZ */
12331 /* ??1?$basic_ifstream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
12332 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_dtor, 4)
12333 void __thiscall basic_ifstream_wchar_dtor(basic_ios_wchar *base)
12335 basic_ifstream_wchar *this = basic_ifstream_wchar_from_basic_ios(base);
12337 TRACE("(%p)\n", this);
12339 basic_istream_wchar_dtor(basic_istream_wchar_to_basic_ios(&this->base));
12340 basic_filebuf_wchar_dtor(&this->filebuf);
12343 /* ??_D?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
12344 /* ??_D?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
12345 /* ??_D?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
12346 /* ??_D?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
12347 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_vbase_dtor, 4)
12348 void __thiscall basic_ifstream_wchar_vbase_dtor(basic_ifstream_wchar *this)
12350 basic_ios_wchar *base = basic_ifstream_wchar_to_basic_ios(this);
12352 TRACE("(%p)\n", this);
12354 basic_ifstream_wchar_dtor(base);
12355 basic_ios_wchar_dtor(base);
12358 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_vector_dtor, 8)
12359 basic_ifstream_wchar* __thiscall basic_ifstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
12361 basic_ifstream_wchar *this = basic_ifstream_wchar_from_basic_ios(base);
12363 TRACE("(%p %x)\n", this, flags);
12365 if(flags & 2) {
12366 /* we have an array, with the number of elements stored before the first object */
12367 INT_PTR i, *ptr = (INT_PTR *)this-1;
12369 for(i=*ptr-1; i>=0; i--)
12370 basic_ifstream_wchar_vbase_dtor(this+i);
12371 MSVCRT_operator_delete(ptr);
12372 } else {
12373 basic_ifstream_wchar_vbase_dtor(this);
12374 if(flags & 1)
12375 MSVCRT_operator_delete(this);
12378 return this;
12381 /* ?close@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
12382 /* ?close@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
12383 /* ?close@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
12384 /* ?close@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
12385 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_close, 4)
12386 void __thiscall basic_ifstream_wchar_close(basic_ifstream_wchar *this)
12388 TRACE("(%p)\n", this);
12390 if(!basic_filebuf_wchar_close(&this->filebuf)) {
12391 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
12392 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
12396 /* ?is_open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QBE_NXZ */
12397 /* ?is_open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEBA_NXZ */
12398 /* ?is_open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QBE_NXZ */
12399 /* ?is_open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEBA_NXZ */
12400 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_is_open, 4)
12401 MSVCP_bool __thiscall basic_ifstream_wchar_is_open(const basic_ifstream_wchar *this)
12403 TRACE("(%p)\n", this);
12404 return basic_filebuf_wchar_is_open(&this->filebuf);
12407 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDHH@Z */
12408 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDHH@Z */
12409 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPBDHH@Z */
12410 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDHH@Z */
12411 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_open, 16)
12412 void __thiscall basic_ifstream_wchar_open(basic_ifstream_wchar *this,
12413 const char *name, int mode, int prot)
12415 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
12417 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode|OPENMODE_in, prot)) {
12418 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
12419 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
12423 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDI@Z */
12424 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDI@Z */
12425 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPBDI@Z */
12426 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDI@Z */
12427 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_open_old, 12)
12428 void __thiscall basic_ifstream_wchar_open_old(basic_ifstream_wchar *this,
12429 const char *name, unsigned int mode)
12431 basic_ifstream_wchar_open(this, name, mode, _SH_DENYNO);
12434 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXPBGHH@Z */
12435 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBGHH@Z */
12436 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXPB_WHH@Z */
12437 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEB_WHH@Z */
12438 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPBGHH@Z */
12439 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEBGHH@Z */
12440 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPB_WHH@Z */
12441 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEB_WHH@Z */
12442 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_open_wchar, 16)
12443 void __thiscall basic_ifstream_wchar_open_wchar(basic_ifstream_wchar *this,
12444 const wchar_t *name, int mode, int prot)
12446 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
12448 if(!basic_filebuf_wchar_open_wchar(&this->filebuf, name, mode|OPENMODE_in, prot)) {
12449 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
12450 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
12454 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXPBGI@Z */
12455 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBGI@Z */
12456 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXPB_WI@Z */
12457 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEB_WI@Z */
12458 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPBGI@Z */
12459 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEBGI@Z */
12460 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPB_WI@Z */
12461 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEB_WI@Z */
12462 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_open_wchar_old, 12)
12463 void __thiscall basic_ifstream_wchar_open_wchar_old(basic_ifstream_wchar *this,
12464 const wchar_t *name, unsigned int mode)
12466 basic_ifstream_wchar_open_wchar(this, name, mode, _SH_DENYNO);
12469 /* ?rdbuf@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
12470 /* ?rdbuf@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
12471 /* ?rdbuf@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
12472 /* ?rdbuf@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
12473 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_rdbuf, 4)
12474 basic_filebuf_wchar* __thiscall basic_ifstream_wchar_rdbuf(const basic_ifstream_wchar *this)
12476 TRACE("(%p)\n", this);
12477 return (basic_filebuf_wchar*)&this->filebuf;
12480 static inline basic_ios_char* basic_fstream_char_to_basic_ios(basic_fstream_char *ptr)
12482 return (basic_ios_char*)((char*)ptr+basic_fstream_char_vbtable1[1]);
12485 static inline basic_fstream_char* basic_fstream_char_from_basic_ios(basic_ios_char *ptr)
12487 return (basic_fstream_char*)((char*)ptr-basic_fstream_char_vbtable1[1]);
12490 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@XZ */
12491 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@XZ */
12492 DEFINE_THISCALL_WRAPPER(basic_fstream_char_ctor, 8)
12493 basic_fstream_char* __thiscall basic_fstream_char_ctor(basic_fstream_char *this, MSVCP_bool virt_init)
12495 basic_ios_char *basic_ios;
12497 TRACE("(%p %d)\n", this, virt_init);
12499 if(virt_init) {
12500 this->base.base1.vbtable = basic_fstream_char_vbtable1;
12501 this->base.base2.vbtable = basic_fstream_char_vbtable2;
12502 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
12503 INIT_BASIC_IOS_VTORDISP(basic_ios);
12504 basic_ios_char_ctor(basic_ios);
12505 }else {
12506 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
12509 basic_filebuf_char_ctor(&this->filebuf);
12510 basic_iostream_char_ctor(&this->base, &this->filebuf.base, FALSE);
12511 basic_ios->base.vtable = &MSVCP_basic_fstream_char_vtable;
12512 return this;
12515 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@PAU_iobuf@@@Z */
12516 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@PEAU_iobuf@@@Z */
12517 DEFINE_THISCALL_WRAPPER(basic_fstream_char_ctor_file, 12)
12518 basic_fstream_char* __thiscall basic_fstream_char_ctor_file(basic_fstream_char *this,
12519 FILE *file, MSVCP_bool virt_init)
12521 basic_ios_char *basic_ios;
12523 TRACE("(%p %p %d)\n", this, file, virt_init);
12525 if(virt_init) {
12526 this->base.base1.vbtable = basic_fstream_char_vbtable1;
12527 this->base.base2.vbtable = basic_fstream_char_vbtable2;
12528 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
12529 INIT_BASIC_IOS_VTORDISP(basic_ios);
12530 basic_ios_char_ctor(basic_ios);
12531 }else {
12532 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
12535 basic_filebuf_char_ctor_file(&this->filebuf, file);
12536 basic_iostream_char_ctor(&this->base, &this->filebuf.base, FALSE);
12537 basic_ios->base.vtable = &MSVCP_basic_fstream_char_vtable;
12538 return this;
12541 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@PBDHH@Z */
12542 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDHH@Z */
12543 DEFINE_THISCALL_WRAPPER(basic_fstream_char_ctor_name, 20)
12544 basic_fstream_char* __thiscall basic_fstream_char_ctor_name(basic_fstream_char *this,
12545 const char *name, int mode, int prot, MSVCP_bool virt_init)
12547 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
12549 basic_fstream_char_ctor(this, virt_init);
12551 if(!basic_filebuf_char_open(&this->filebuf, name, mode, prot)) {
12552 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
12553 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
12555 return this;
12558 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@PBDH@Z */
12559 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDH@Z */
12560 DEFINE_THISCALL_WRAPPER(basic_fstream_char_ctor_name_noprot, 16)
12561 basic_fstream_char* __thiscall basic_fstream_char_ctor_name_noprot(basic_fstream_char *this,
12562 const char *name, int mode, MSVCP_bool virt_init)
12564 return basic_fstream_char_ctor_name(this, name, mode, _SH_DENYNO, virt_init);
12567 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@PBGHH@Z */
12568 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@PEBGHH@Z */
12569 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@PB_WHH@Z */
12570 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@PEB_WHH@Z */
12571 DEFINE_THISCALL_WRAPPER(basic_fstream_char_ctor_name_wchar, 20)
12572 basic_fstream_char* __thiscall basic_fstream_char_ctor_name_wchar(basic_fstream_char *this,
12573 const wchar_t *name, int mode, int prot, MSVCP_bool virt_init)
12575 TRACE("(%p %s %d %d %d)\n", this, debugstr_w(name), mode, prot, virt_init);
12577 basic_fstream_char_ctor(this, virt_init);
12579 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode, prot)) {
12580 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
12581 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
12583 return this;
12586 /* ??1?$basic_fstream@DU?$char_traits@D@std@@@std@@UAE@XZ */
12587 /* ??1?$basic_fstream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
12588 DEFINE_THISCALL_WRAPPER(basic_fstream_char_dtor, 4)
12589 void __thiscall basic_fstream_char_dtor(basic_ios_char *base)
12591 basic_fstream_char *this = basic_fstream_char_from_basic_ios(base);
12593 TRACE("(%p)\n", this);
12595 basic_iostream_char_dtor(basic_iostream_char_to_basic_ios(&this->base));
12596 basic_filebuf_char_dtor(&this->filebuf);
12599 /* ??_D?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
12600 /* ??_D?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
12601 DEFINE_THISCALL_WRAPPER(basic_fstream_char_vbase_dtor, 4)
12602 void __thiscall basic_fstream_char_vbase_dtor(basic_fstream_char *this)
12604 basic_ios_char *base = basic_fstream_char_to_basic_ios(this);
12606 TRACE("(%p)\n", this);
12608 basic_fstream_char_dtor(base);
12609 basic_ios_char_dtor(base);
12612 DEFINE_THISCALL_WRAPPER(basic_fstream_char_vector_dtor, 8)
12613 basic_fstream_char* __thiscall basic_fstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
12615 basic_fstream_char *this = basic_fstream_char_from_basic_ios(base);
12617 TRACE("(%p %x)\n", this, flags);
12619 if(flags & 2) {
12620 /* we have an array, with the number of elements stored before the first object */
12621 INT_PTR i, *ptr = (INT_PTR *)this-1;
12623 for(i=*ptr-1; i>=0; i--)
12624 basic_fstream_char_vbase_dtor(this+i);
12625 MSVCRT_operator_delete(ptr);
12626 } else {
12627 basic_fstream_char_vbase_dtor(this);
12628 if(flags & 1)
12629 MSVCRT_operator_delete(this);
12632 return this;
12635 /* ?close@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
12636 /* ?close@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
12637 DEFINE_THISCALL_WRAPPER(basic_fstream_char_close, 4)
12638 void __thiscall basic_fstream_char_close(basic_fstream_char *this)
12640 TRACE("(%p)\n", this);
12642 if(!basic_filebuf_char_close(&this->filebuf)) {
12643 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
12644 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
12648 /* ?is_open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QBE_NXZ */
12649 /* ?is_open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEBA_NXZ */
12650 DEFINE_THISCALL_WRAPPER(basic_fstream_char_is_open, 4)
12651 MSVCP_bool __thiscall basic_fstream_char_is_open(const basic_fstream_char *this)
12653 TRACE("(%p)\n", this);
12654 return basic_filebuf_char_is_open(&this->filebuf);
12657 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPBDHH@Z */
12658 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDHH@Z */
12659 DEFINE_THISCALL_WRAPPER(basic_fstream_char_open, 16)
12660 void __thiscall basic_fstream_char_open(basic_fstream_char *this,
12661 const char *name, int mode, int prot)
12663 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
12665 if(!basic_filebuf_char_open(&this->filebuf, name, mode, prot)) {
12666 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
12667 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
12671 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPBDI@Z */
12672 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDI@Z */
12673 DEFINE_THISCALL_WRAPPER(basic_fstream_char_open_old, 12)
12674 void __thiscall basic_fstream_char_open_old(basic_fstream_char *this,
12675 const char *name, unsigned int mode)
12677 basic_fstream_char_open(this, name, mode, _SH_DENYNO);
12680 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPBGHH@Z */
12681 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGHH@Z */
12682 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPB_WHH@Z */
12683 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WHH@Z */
12684 DEFINE_THISCALL_WRAPPER(basic_fstream_char_open_wchar, 16)
12685 void __thiscall basic_fstream_char_open_wchar(basic_fstream_char *this,
12686 const wchar_t *name, int mode, int prot)
12688 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
12690 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode, prot)) {
12691 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
12692 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
12696 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPBGI@Z */
12697 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGI@Z */
12698 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPB_WI@Z */
12699 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WI@Z */
12700 DEFINE_THISCALL_WRAPPER(basic_fstream_char_open_wchar_old, 12)
12701 void __thiscall basic_fstream_char_open_wchar_old(basic_fstream_char *this,
12702 const wchar_t *name, unsigned int mode)
12704 basic_fstream_char_open_wchar(this, name, mode, _SH_DENYNO);
12707 /* ?rdbuf@?$basic_fstream@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
12708 /* ?rdbuf@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
12709 DEFINE_THISCALL_WRAPPER(basic_fstream_char_rdbuf, 4)
12710 basic_filebuf_char* __thiscall basic_fstream_char_rdbuf(const basic_fstream_char *this)
12712 TRACE("(%p)\n", this);
12713 return (basic_filebuf_char*)&this->filebuf;
12716 static inline basic_ios_wchar* basic_fstream_wchar_to_basic_ios(basic_fstream_wchar *ptr)
12718 return (basic_ios_wchar*)((char*)ptr+basic_fstream_wchar_vbtable1[1]);
12721 static inline basic_fstream_wchar* basic_fstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
12723 return (basic_fstream_wchar*)((char*)ptr-basic_fstream_wchar_vbtable1[1]);
12726 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAE@XZ */
12727 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAA@XZ */
12728 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_ctor, 8)
12729 basic_fstream_wchar* __thiscall basic_fstream_wchar_ctor(basic_fstream_wchar *this, MSVCP_bool virt_init)
12731 basic_ios_wchar *basic_ios;
12733 TRACE("(%p %d)\n", this, virt_init);
12735 if(virt_init) {
12736 this->base.base1.vbtable = basic_fstream_wchar_vbtable1;
12737 this->base.base2.vbtable = basic_fstream_wchar_vbtable2;
12738 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12739 INIT_BASIC_IOS_VTORDISP(basic_ios);
12740 basic_ios_wchar_ctor(basic_ios);
12741 }else {
12742 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12745 basic_filebuf_wchar_ctor(&this->filebuf);
12746 basic_iostream_wchar_ctor(&this->base, &this->filebuf.base, FALSE);
12747 basic_ios->base.vtable = &MSVCP_basic_fstream_wchar_vtable;
12748 return this;
12751 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@XZ */
12752 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@XZ */
12753 DEFINE_THISCALL_WRAPPER(basic_fstream_short_ctor, 8)
12754 basic_fstream_wchar* __thiscall basic_fstream_short_ctor(basic_fstream_wchar *this, MSVCP_bool virt_init)
12756 basic_fstream_wchar_ctor(this, virt_init);
12757 basic_istream_wchar_get_basic_ios(&this->base.base1)->base.vtable = &MSVCP_basic_fstream_short_vtable;
12758 return this;
12761 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAE@PAU_iobuf@@@Z */
12762 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAU_iobuf@@@Z */
12763 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_ctor_file, 12)
12764 basic_fstream_wchar* __thiscall basic_fstream_wchar_ctor_file(basic_fstream_wchar *this,
12765 FILE *file, MSVCP_bool virt_init)
12767 basic_ios_wchar *basic_ios;
12769 TRACE("(%p %p %d)\n", this, file, virt_init);
12771 if(virt_init) {
12772 this->base.base1.vbtable = basic_fstream_wchar_vbtable1;
12773 this->base.base2.vbtable = basic_fstream_wchar_vbtable2;
12774 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12775 INIT_BASIC_IOS_VTORDISP(basic_ios);
12776 basic_ios_wchar_ctor(basic_ios);
12777 }else {
12778 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12781 basic_filebuf_wchar_ctor_file(&this->filebuf, file);
12782 basic_iostream_wchar_ctor(&this->base, &this->filebuf.base, FALSE);
12783 basic_ios->base.vtable = &MSVCP_basic_fstream_wchar_vtable;
12784 return this;
12787 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@PAU_iobuf@@@Z */
12788 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@PEAU_iobuf@@@Z */
12789 DEFINE_THISCALL_WRAPPER(basic_fstream_short_ctor_file, 12)
12790 basic_fstream_wchar* __thiscall basic_fstream_short_ctor_file(basic_fstream_wchar *this,
12791 FILE *file, MSVCP_bool virt_init)
12793 basic_fstream_wchar_ctor_file(this, file, virt_init);
12794 basic_istream_wchar_get_basic_ios(&this->base.base1)->base.vtable = &MSVCP_basic_fstream_short_vtable;
12795 return this;
12798 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAE@PB_WHH@Z */
12799 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEB_WHH@Z */
12800 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_ctor_name, 20)
12801 basic_fstream_wchar* __thiscall basic_fstream_wchar_ctor_name(basic_fstream_wchar *this,
12802 const char *name, int mode, int prot, MSVCP_bool virt_init)
12804 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
12806 basic_fstream_wchar_ctor(this, virt_init);
12808 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode, prot)) {
12809 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12810 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
12812 return this;
12815 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@PBGHH@Z */
12816 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@PEBGHH@Z */
12817 DEFINE_THISCALL_WRAPPER(basic_fstream_short_ctor_name, 20)
12818 basic_fstream_wchar* __thiscall basic_fstream_short_ctor_name(basic_fstream_wchar *this,
12819 const char *name, int mode, int prot, MSVCP_bool virt_init)
12821 basic_fstream_wchar_ctor_name(this, name, mode, prot, virt_init);
12822 basic_istream_wchar_get_basic_ios(&this->base.base1)->base.vtable = &MSVCP_basic_fstream_short_vtable;
12823 return this;
12826 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAE@PBDH@Z */
12827 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_ctor_name_noprot, 16)
12828 basic_fstream_wchar* __thiscall basic_fstream_wchar_ctor_name_noprot(basic_fstream_wchar *this,
12829 const char *name, int mode, MSVCP_bool virt_init)
12831 return basic_fstream_wchar_ctor_name(this, name, mode, _SH_DENYNO, virt_init);
12834 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@PBDH@Z */
12835 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@PEBDH@Z */
12836 DEFINE_THISCALL_WRAPPER(basic_fstream_short_ctor_name_noprot, 16)
12837 basic_fstream_wchar* __thiscall basic_fstream_short_ctor_name_noprot(basic_fstream_wchar *this,
12838 const char *name, int mode, MSVCP_bool virt_init)
12840 return basic_fstream_short_ctor_name(this, name, mode, _SH_DENYNO, virt_init);
12843 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAE@PBGHH@Z */
12844 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEBGHH@Z */
12845 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAE@PB_WHH@Z */
12846 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEB_WHH@Z */
12847 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_ctor_name_wchar, 20)
12848 basic_fstream_wchar* __thiscall basic_fstream_wchar_ctor_name_wchar(basic_fstream_wchar *this,
12849 const wchar_t *name, int mode, int prot, MSVCP_bool virt_init)
12851 TRACE("(%p %s %d %d %d)\n", this, debugstr_w(name), mode, prot, virt_init);
12853 basic_fstream_wchar_ctor(this, virt_init);
12855 if(!basic_filebuf_wchar_open_wchar(&this->filebuf, name, mode, prot)) {
12856 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12857 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
12859 return this;
12862 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@PBGHH@Z */
12863 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@PEBGHH@Z */
12864 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@PB_WHH@Z */
12865 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@PEB_WHH@Z */
12866 DEFINE_THISCALL_WRAPPER(basic_fstream_short_ctor_name_wchar, 20)
12867 basic_fstream_wchar* __thiscall basic_fstream_short_ctor_name_wchar(basic_fstream_wchar *this,
12868 const wchar_t *name, int mode, int prot, MSVCP_bool virt_init)
12870 basic_fstream_wchar_ctor_name_wchar(this, name, mode, prot, virt_init);
12871 basic_istream_wchar_get_basic_ios(&this->base.base1)->base.vtable = &MSVCP_basic_fstream_short_vtable;
12872 return this;
12875 /* ??1?$basic_fstream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
12876 /* ??1?$basic_fstream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
12877 /* ??1?$basic_fstream@GU?$char_traits@G@std@@@std@@UAE@XZ */
12878 /* ??1?$basic_fstream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
12879 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_dtor, 4)
12880 void __thiscall basic_fstream_wchar_dtor(basic_ios_wchar *base)
12882 basic_fstream_wchar *this = basic_fstream_wchar_from_basic_ios(base);
12884 TRACE("(%p)\n", this);
12886 basic_iostream_wchar_dtor(basic_iostream_wchar_to_basic_ios(&this->base));
12887 basic_filebuf_wchar_dtor(&this->filebuf);
12890 /* ??_D?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
12891 /* ??_D?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
12892 /* ??_D?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
12893 /* ??_D?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
12894 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_vbase_dtor, 4)
12895 void __thiscall basic_fstream_wchar_vbase_dtor(basic_fstream_wchar *this)
12897 basic_ios_wchar *base = basic_fstream_wchar_to_basic_ios(this);
12899 TRACE("(%p)\n", this);
12901 basic_fstream_wchar_dtor(base);
12902 basic_ios_wchar_dtor(base);
12905 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_vector_dtor, 8)
12906 basic_fstream_wchar* __thiscall basic_fstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
12908 basic_fstream_wchar *this = basic_fstream_wchar_from_basic_ios(base);
12910 TRACE("(%p %x)\n", this, flags);
12912 if(flags & 2) {
12913 /* we have an array, with the number of elements stored before the first object */
12914 INT_PTR i, *ptr = (INT_PTR *)this-1;
12916 for(i=*ptr-1; i>=0; i--)
12917 basic_fstream_wchar_vbase_dtor(this+i);
12918 MSVCRT_operator_delete(ptr);
12919 } else {
12920 basic_fstream_wchar_vbase_dtor(this);
12921 if(flags & 1)
12922 MSVCRT_operator_delete(this);
12925 return this;
12928 /* ?close@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
12929 /* ?close@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
12930 /* ?close@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
12931 /* ?close@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
12932 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_close, 4)
12933 void __thiscall basic_fstream_wchar_close(basic_fstream_wchar *this)
12935 TRACE("(%p)\n", this);
12937 if(!basic_filebuf_wchar_close(&this->filebuf)) {
12938 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12939 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
12943 /* ?is_open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QBE_NXZ */
12944 /* ?is_open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEBA_NXZ */
12945 /* ?is_open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QBE_NXZ */
12946 /* ?is_open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEBA_NXZ */
12947 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_is_open, 4)
12948 MSVCP_bool __thiscall basic_fstream_wchar_is_open(const basic_fstream_wchar *this)
12950 TRACE("(%p)\n", this);
12951 return basic_filebuf_wchar_is_open(&this->filebuf);
12954 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDHH@Z */
12955 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDHH@Z */
12956 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXPBDHH@Z */
12957 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDHH@Z */
12958 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_open, 16)
12959 void __thiscall basic_fstream_wchar_open(basic_fstream_wchar *this,
12960 const char *name, int mode, int prot)
12962 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
12964 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode, prot)) {
12965 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12966 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
12970 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDI@Z */
12971 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDI@Z */
12972 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXPBDI@Z */
12973 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDI@Z */
12974 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_open_old, 12)
12975 void __thiscall basic_fstream_wchar_open_old(basic_fstream_wchar *this,
12976 const char *name, unsigned int mode)
12978 basic_fstream_wchar_open(this, name, mode, _SH_DENYNO);
12981 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXPBGHH@Z */
12982 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBGHH@Z */
12983 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXPB_WHH@Z */
12984 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEB_WHH@Z */
12985 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXPBGHH@Z */
12986 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXPEBGHH@Z */
12987 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXPB_WHH@Z */
12988 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXPEB_WHH@Z */
12989 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_open_wchar, 16)
12990 void __thiscall basic_fstream_wchar_open_wchar(basic_fstream_wchar *this,
12991 const wchar_t *name, int mode, int prot)
12993 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
12995 if(!basic_filebuf_wchar_open_wchar(&this->filebuf, name, mode, prot)) {
12996 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12997 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
13001 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXPBGI@Z */
13002 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBGI@Z */
13003 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXPB_WI@Z */
13004 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEB_WI@Z */
13005 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXPBGI@Z */
13006 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXPEBGI@Z */
13007 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXPB_WI@Z */
13008 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXPEB_WI@Z */
13009 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_open_wchar_old, 12)
13010 void __thiscall basic_fstream_wchar_open_wchar_old(basic_fstream_wchar *this,
13011 const wchar_t *name, unsigned int mode)
13013 basic_fstream_wchar_open_wchar(this, name, mode, _SH_DENYNO);
13016 /* ?rdbuf@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
13017 /* ?rdbuf@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
13018 /* ?rdbuf@?$basic_fstream@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
13019 /* ?rdbuf@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
13020 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_rdbuf, 4)
13021 basic_filebuf_wchar* __thiscall basic_fstream_wchar_rdbuf(const basic_fstream_wchar *this)
13023 TRACE("(%p)\n", this);
13024 return (basic_filebuf_wchar*)&this->filebuf;
13027 static inline basic_ios_char* basic_ostringstream_char_to_basic_ios(basic_ostringstream_char *ptr)
13029 return (basic_ios_char*)((char*)ptr+basic_ostringstream_char_vbtable[1]);
13032 static inline basic_ostringstream_char* basic_ostringstream_char_from_basic_ios(basic_ios_char *ptr)
13034 return (basic_ostringstream_char*)((char*)ptr-basic_ostringstream_char_vbtable[1]);
13037 /* ??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 */
13038 /* ??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 */
13039 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_ctor_str, 16)
13040 basic_ostringstream_char* __thiscall basic_ostringstream_char_ctor_str(basic_ostringstream_char *this,
13041 const basic_string_char *str, int mode, MSVCP_bool virt_init)
13043 basic_ios_char *basic_ios;
13045 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
13047 if(virt_init) {
13048 this->base.vbtable = basic_ostringstream_char_vbtable;
13049 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
13050 INIT_BASIC_IOS_VTORDISP(basic_ios);
13051 basic_ios_char_ctor(basic_ios);
13052 }else {
13053 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
13056 basic_stringbuf_char_ctor_str(&this->strbuf, str, mode|OPENMODE_out);
13057 basic_ostream_char_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
13058 basic_ios->base.vtable = &MSVCP_basic_ostringstream_char_vtable;
13059 return this;
13062 /* ??0?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z */
13063 /* ??0?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z */
13064 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_ctor_mode, 12)
13065 basic_ostringstream_char* __thiscall basic_ostringstream_char_ctor_mode(
13066 basic_ostringstream_char *this, int mode, MSVCP_bool virt_init)
13068 basic_ios_char *basic_ios;
13070 TRACE("(%p %d %d)\n", this, mode, virt_init);
13072 if(virt_init) {
13073 this->base.vbtable = basic_ostringstream_char_vbtable;
13074 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
13075 INIT_BASIC_IOS_VTORDISP(basic_ios);
13076 basic_ios_char_ctor(basic_ios);
13077 }else {
13078 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
13081 basic_stringbuf_char_ctor_mode(&this->strbuf, mode|OPENMODE_out);
13082 basic_ostream_char_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
13083 basic_ios->base.vtable = &MSVCP_basic_ostringstream_char_vtable;
13084 return this;
13087 /* ??_F?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
13088 /* ??_F?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
13089 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_ctor, 4)
13090 basic_ostringstream_char* __thiscall basic_ostringstream_char_ctor(
13091 basic_ostringstream_char *this)
13093 return basic_ostringstream_char_ctor_mode(this, 0, TRUE);
13096 /* ??1?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ */
13097 /* ??1?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ */
13098 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_dtor, 4)
13099 void __thiscall basic_ostringstream_char_dtor(basic_ios_char *base)
13101 basic_ostringstream_char *this = basic_ostringstream_char_from_basic_ios(base);
13103 TRACE("(%p)\n", this);
13105 basic_stringbuf_char_dtor(&this->strbuf);
13106 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(&this->base));
13109 /* ??_D?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
13110 /* ??_D?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
13111 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_vbase_dtor, 4)
13112 void __thiscall basic_ostringstream_char_vbase_dtor(basic_ostringstream_char *this)
13114 basic_ios_char *base = basic_ostringstream_char_to_basic_ios(this);
13116 TRACE("(%p)\n", this);
13118 basic_ostringstream_char_dtor(base);
13119 basic_ios_char_dtor(base);
13122 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_vector_dtor, 8)
13123 basic_ostringstream_char* __thiscall basic_ostringstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
13125 basic_ostringstream_char *this = basic_ostringstream_char_from_basic_ios(base);
13127 TRACE("(%p %x)\n", this, flags);
13129 if(flags & 2) {
13130 /* we have an array, with the number of elements stored before the first object */
13131 INT_PTR i, *ptr = (INT_PTR *)this-1;
13133 for(i=*ptr-1; i>=0; i--)
13134 basic_ostringstream_char_vbase_dtor(this+i);
13135 MSVCRT_operator_delete(ptr);
13136 } else {
13137 basic_ostringstream_char_vbase_dtor(this);
13138 if(flags & 1)
13139 MSVCRT_operator_delete(this);
13142 return this;
13145 /* ?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 */
13146 /* ?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 */
13147 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_rdbuf, 4)
13148 basic_stringbuf_char* __thiscall basic_ostringstream_char_rdbuf(const basic_ostringstream_char *this)
13150 TRACE("(%p)\n", this);
13151 return (basic_stringbuf_char*)&this->strbuf;
13154 /* ?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 */
13155 /* ?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 */
13156 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_str_set, 8)
13157 void __thiscall basic_ostringstream_char_str_set(basic_ostringstream_char *this, const basic_string_char *str)
13159 TRACE("(%p %p)\n", this, str);
13160 basic_stringbuf_char_str_set(&this->strbuf, str);
13163 /* ?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 */
13164 /* ?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 */
13165 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_str_get, 8)
13166 basic_string_char* __thiscall basic_ostringstream_char_str_get(const basic_ostringstream_char *this, basic_string_char *ret)
13168 TRACE("(%p %p)\n", this, ret);
13169 return basic_stringbuf_char_str_get(&this->strbuf, ret);
13172 static inline basic_ios_wchar* basic_ostringstream_wchar_to_basic_ios(basic_ostringstream_wchar *ptr)
13174 return (basic_ios_wchar*)((char*)ptr+basic_ostringstream_wchar_vbtable[1]);
13177 static inline basic_ostringstream_wchar* basic_ostringstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
13179 return (basic_ostringstream_wchar*)((char*)ptr-basic_ostringstream_wchar_vbtable[1]);
13182 /* ??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 */
13183 /* ??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 */
13184 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_ctor_str, 16)
13185 basic_ostringstream_wchar* __thiscall basic_ostringstream_wchar_ctor_str(basic_ostringstream_wchar *this,
13186 const basic_string_wchar *str, int mode, MSVCP_bool virt_init)
13188 basic_ios_wchar *basic_ios;
13190 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
13192 if(virt_init) {
13193 this->base.vbtable = basic_ostringstream_wchar_vbtable;
13194 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
13195 INIT_BASIC_IOS_VTORDISP(basic_ios);
13196 basic_ios_wchar_ctor(basic_ios);
13197 }else {
13198 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
13201 basic_stringbuf_wchar_ctor_str(&this->strbuf, str, mode|OPENMODE_out);
13202 basic_ostream_wchar_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
13203 basic_ios->base.vtable = &MSVCP_basic_ostringstream_wchar_vtable;
13204 return this;
13207 /* ??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 */
13208 /* ??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 */
13209 DEFINE_THISCALL_WRAPPER(basic_ostringstream_short_ctor_str, 16)
13210 basic_ostringstream_wchar* __thiscall basic_ostringstream_short_ctor_str(basic_ostringstream_wchar *this,
13211 const basic_string_wchar *str, int mode, MSVCP_bool virt_init)
13213 basic_ostringstream_wchar_ctor_str(this, str, mode, virt_init);
13214 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ostringstream_short_vtable;
13215 return this;
13218 /* ??0?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@H@Z */
13219 /* ??0?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@H@Z */
13220 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_ctor_mode, 12)
13221 basic_ostringstream_wchar* __thiscall basic_ostringstream_wchar_ctor_mode(
13222 basic_ostringstream_wchar *this, int mode, MSVCP_bool virt_init)
13224 basic_ios_wchar *basic_ios;
13226 TRACE("(%p %d %d)\n", this, mode, virt_init);
13228 if(virt_init) {
13229 this->base.vbtable = basic_ostringstream_wchar_vbtable;
13230 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
13231 INIT_BASIC_IOS_VTORDISP(basic_ios);
13232 basic_ios_wchar_ctor(basic_ios);
13233 }else {
13234 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
13237 basic_stringbuf_wchar_ctor_mode(&this->strbuf, mode|OPENMODE_out);
13238 basic_ostream_wchar_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
13239 basic_ios->base.vtable = &MSVCP_basic_ostringstream_wchar_vtable;
13240 return this;
13243 /* ??0?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@H@Z */
13244 /* ??0?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@H@Z */
13245 DEFINE_THISCALL_WRAPPER(basic_ostringstream_short_ctor_mode, 12)
13246 basic_ostringstream_wchar* __thiscall basic_ostringstream_short_ctor_mode(
13247 basic_ostringstream_wchar *this, int mode, MSVCP_bool virt_init)
13249 basic_ostringstream_wchar_ctor_mode(this, mode, virt_init);
13250 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ostringstream_short_vtable;
13251 return this;
13254 /* ??_F?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
13255 /* ??_F?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
13256 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_ctor, 4)
13257 basic_ostringstream_wchar* __thiscall basic_ostringstream_wchar_ctor(
13258 basic_ostringstream_wchar *this)
13260 return basic_ostringstream_wchar_ctor_mode(this, 0, TRUE);
13263 /* ??_F?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
13264 /* ??_F?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
13265 DEFINE_THISCALL_WRAPPER(basic_ostringstream_short_ctor, 4)
13266 basic_ostringstream_wchar* __thiscall basic_ostringstream_short_ctor(
13267 basic_ostringstream_wchar *this)
13269 return basic_ostringstream_short_ctor_mode(this, 0, TRUE);
13272 /* ??1?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UAE@XZ */
13273 /* ??1?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UEAA@XZ */
13274 /* ??1?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UAE@XZ */
13275 /* ??1?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UEAA@XZ */
13276 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_dtor, 4)
13277 void __thiscall basic_ostringstream_wchar_dtor(basic_ios_wchar *base)
13279 basic_ostringstream_wchar *this = basic_ostringstream_wchar_from_basic_ios(base);
13281 TRACE("(%p)\n", this);
13283 basic_stringbuf_wchar_dtor(&this->strbuf);
13284 basic_ostream_wchar_dtor(basic_ostream_wchar_to_basic_ios(&this->base));
13287 /* ??_D?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
13288 /* ??_D?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
13289 /* ??_D?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
13290 /* ??_D?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
13291 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_vbase_dtor, 4)
13292 void __thiscall basic_ostringstream_wchar_vbase_dtor(basic_ostringstream_wchar *this)
13294 basic_ios_wchar *base = basic_ostringstream_wchar_to_basic_ios(this);
13296 TRACE("(%p)\n", this);
13298 basic_ostringstream_wchar_dtor(base);
13299 basic_ios_wchar_dtor(base);
13302 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_vector_dtor, 8)
13303 basic_ostringstream_wchar* __thiscall basic_ostringstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
13305 basic_ostringstream_wchar *this = basic_ostringstream_wchar_from_basic_ios(base);
13307 TRACE("(%p %x)\n", this, flags);
13309 if(flags & 2) {
13310 /* we have an array, with the number of elements stored before the first object */
13311 INT_PTR i, *ptr = (INT_PTR *)this-1;
13313 for(i=*ptr-1; i>=0; i--)
13314 basic_ostringstream_wchar_vbase_dtor(this+i);
13315 MSVCRT_operator_delete(ptr);
13316 } else {
13317 basic_ostringstream_wchar_vbase_dtor(this);
13318 if(flags & 1)
13319 MSVCRT_operator_delete(this);
13322 return this;
13325 /* ?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 */
13326 /* ?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 */
13327 /* ?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 */
13328 /* ?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 */
13329 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_rdbuf, 4)
13330 basic_stringbuf_wchar* __thiscall basic_ostringstream_wchar_rdbuf(const basic_ostringstream_wchar *this)
13332 TRACE("(%p)\n", this);
13333 return (basic_stringbuf_wchar*)&this->strbuf;
13336 /* ?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 */
13337 /* ?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 */
13338 /* ?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 */
13339 /* ?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 */
13340 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_str_set, 8)
13341 void __thiscall basic_ostringstream_wchar_str_set(basic_ostringstream_wchar *this, const basic_string_wchar *str)
13343 TRACE("(%p %p)\n", this, str);
13344 basic_stringbuf_wchar_str_set(&this->strbuf, str);
13347 /* ?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 */
13348 /* ?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 */
13349 /* ?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 */
13350 /* ?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 */
13351 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_str_get, 8)
13352 basic_string_wchar* __thiscall basic_ostringstream_wchar_str_get(const basic_ostringstream_wchar *this, basic_string_wchar *ret)
13354 TRACE("(%p %p)\n", this, ret);
13355 return basic_stringbuf_wchar_str_get(&this->strbuf, ret);
13358 static inline basic_ios_char* basic_istringstream_char_to_basic_ios(basic_istringstream_char *ptr)
13360 return (basic_ios_char*)((char*)ptr+basic_istringstream_char_vbtable[1]);
13363 static inline basic_istringstream_char* basic_istringstream_char_from_basic_ios(basic_ios_char *ptr)
13365 return (basic_istringstream_char*)((char*)ptr-basic_istringstream_char_vbtable[1]);
13368 /* ??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 */
13369 /* ??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 */
13370 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_ctor_str, 16)
13371 basic_istringstream_char* __thiscall basic_istringstream_char_ctor_str(basic_istringstream_char *this,
13372 const basic_string_char *str, int mode, MSVCP_bool virt_init)
13374 basic_ios_char *basic_ios;
13376 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
13378 if(virt_init) {
13379 this->base.vbtable = basic_istringstream_char_vbtable;
13380 basic_ios = basic_istream_char_get_basic_ios(&this->base);
13381 INIT_BASIC_IOS_VTORDISP(basic_ios);
13382 basic_ios_char_ctor(basic_ios);
13383 }else {
13384 basic_ios = basic_istream_char_get_basic_ios(&this->base);
13387 basic_stringbuf_char_ctor_str(&this->strbuf, str, mode|OPENMODE_in);
13388 basic_istream_char_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
13389 basic_ios->base.vtable = &MSVCP_basic_istringstream_char_vtable;
13390 return this;
13393 /* ??0?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z */
13394 /* ??0?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z */
13395 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_ctor_mode, 12)
13396 basic_istringstream_char* __thiscall basic_istringstream_char_ctor_mode(
13397 basic_istringstream_char *this, int mode, MSVCP_bool virt_init)
13399 basic_ios_char *basic_ios;
13401 TRACE("(%p %d %d)\n", this, mode, virt_init);
13403 if(virt_init) {
13404 this->base.vbtable = basic_istringstream_char_vbtable;
13405 basic_ios = basic_istream_char_get_basic_ios(&this->base);
13406 INIT_BASIC_IOS_VTORDISP(basic_ios);
13407 basic_ios_char_ctor(basic_ios);
13408 }else {
13409 basic_ios = basic_istream_char_get_basic_ios(&this->base);
13412 basic_stringbuf_char_ctor_mode(&this->strbuf, mode|OPENMODE_in);
13413 basic_istream_char_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
13414 basic_ios->base.vtable = &MSVCP_basic_istringstream_char_vtable;
13415 return this;
13418 /* ??_F?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
13419 /* ??_F?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
13420 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_ctor, 4)
13421 basic_istringstream_char* __thiscall basic_istringstream_char_ctor(
13422 basic_istringstream_char *this)
13424 return basic_istringstream_char_ctor_mode(this, 0, TRUE);
13427 /* ??1?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ */
13428 /* ??1?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ */
13429 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_dtor, 4)
13430 void __thiscall basic_istringstream_char_dtor(basic_ios_char *base)
13432 basic_istringstream_char *this = basic_istringstream_char_from_basic_ios(base);
13434 TRACE("(%p)\n", this);
13436 basic_stringbuf_char_dtor(&this->strbuf);
13437 basic_istream_char_dtor(basic_istream_char_to_basic_ios(&this->base));
13440 /* ??_D?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
13441 /* ??_D?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
13442 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_vbase_dtor, 4)
13443 void __thiscall basic_istringstream_char_vbase_dtor(basic_istringstream_char *this)
13445 basic_ios_char *base = basic_istringstream_char_to_basic_ios(this);
13447 TRACE("(%p)\n", this);
13449 basic_istringstream_char_dtor(base);
13450 basic_ios_char_dtor(base);
13453 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_vector_dtor, 8)
13454 basic_istringstream_char* __thiscall basic_istringstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
13456 basic_istringstream_char *this = basic_istringstream_char_from_basic_ios(base);
13458 TRACE("(%p %x)\n", this, flags);
13460 if(flags & 2) {
13461 /* we have an array, with the number of elements stored before the first object */
13462 INT_PTR i, *ptr = (INT_PTR *)this-1;
13464 for(i=*ptr-1; i>=0; i--)
13465 basic_istringstream_char_vbase_dtor(this+i);
13466 MSVCRT_operator_delete(ptr);
13467 } else {
13468 basic_istringstream_char_vbase_dtor(this);
13469 if(flags & 1)
13470 MSVCRT_operator_delete(this);
13473 return this;
13476 /* ?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 */
13477 /* ?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 */
13478 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_rdbuf, 4)
13479 basic_stringbuf_char* __thiscall basic_istringstream_char_rdbuf(const basic_istringstream_char *this)
13481 TRACE("(%p)\n", this);
13482 return (basic_stringbuf_char*)&this->strbuf;
13485 /* ?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 */
13486 /* ?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 */
13487 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_str_set, 8)
13488 void __thiscall basic_istringstream_char_str_set(basic_istringstream_char *this, const basic_string_char *str)
13490 TRACE("(%p %p)\n", this, str);
13491 basic_stringbuf_char_str_set(&this->strbuf, str);
13494 /* ?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 */
13495 /* ?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 */
13496 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_str_get, 8)
13497 basic_string_char* __thiscall basic_istringstream_char_str_get(const basic_istringstream_char *this, basic_string_char *ret)
13499 TRACE("(%p %p)\n", this, ret);
13500 return basic_stringbuf_char_str_get(&this->strbuf, ret);
13503 static inline basic_ios_wchar* basic_istringstream_wchar_to_basic_ios(basic_istringstream_wchar *ptr)
13505 return (basic_ios_wchar*)((char*)ptr+basic_istringstream_wchar_vbtable[1]);
13508 static inline basic_istringstream_wchar* basic_istringstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
13510 return (basic_istringstream_wchar*)((char*)ptr-basic_istringstream_wchar_vbtable[1]);
13513 /* ??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 */
13514 /* ??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 */
13515 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_ctor_str, 16)
13516 basic_istringstream_wchar* __thiscall basic_istringstream_wchar_ctor_str(basic_istringstream_wchar *this,
13517 const basic_string_wchar *str, int mode, MSVCP_bool virt_init)
13519 basic_ios_wchar *basic_ios;
13521 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
13523 if(virt_init) {
13524 this->base.vbtable = basic_istringstream_wchar_vbtable;
13525 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
13526 INIT_BASIC_IOS_VTORDISP(basic_ios);
13527 basic_ios_wchar_ctor(basic_ios);
13528 }else {
13529 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
13532 basic_stringbuf_wchar_ctor_str(&this->strbuf, str, mode|OPENMODE_in);
13533 basic_istream_wchar_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
13534 basic_ios->base.vtable = &MSVCP_basic_istringstream_wchar_vtable;
13535 return this;
13538 /* ??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 */
13539 /* ??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 */
13540 DEFINE_THISCALL_WRAPPER(basic_istringstream_short_ctor_str, 16)
13541 basic_istringstream_wchar* __thiscall basic_istringstream_short_ctor_str(basic_istringstream_wchar *this,
13542 const basic_string_wchar *str, int mode, MSVCP_bool virt_init)
13544 basic_istringstream_wchar_ctor_str(this, str, mode, virt_init);
13545 basic_istream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_istringstream_short_vtable;
13546 return this;
13549 /* ??0?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@H@Z */
13550 /* ??0?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@H@Z */
13551 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_ctor_mode, 12)
13552 basic_istringstream_wchar* __thiscall basic_istringstream_wchar_ctor_mode(
13553 basic_istringstream_wchar *this, int mode, MSVCP_bool virt_init)
13555 basic_ios_wchar *basic_ios;
13557 TRACE("(%p %d %d)\n", this, mode, virt_init);
13559 if(virt_init) {
13560 this->base.vbtable = basic_istringstream_wchar_vbtable;
13561 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
13562 INIT_BASIC_IOS_VTORDISP(basic_ios);
13563 basic_ios_wchar_ctor(basic_ios);
13564 }else {
13565 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
13568 basic_stringbuf_wchar_ctor_mode(&this->strbuf, mode|OPENMODE_in);
13569 basic_istream_wchar_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
13570 basic_ios->base.vtable = &MSVCP_basic_istringstream_wchar_vtable;
13571 return this;
13574 /* ??0?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@H@Z */
13575 /* ??0?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@H@Z */
13576 DEFINE_THISCALL_WRAPPER(basic_istringstream_short_ctor_mode, 12)
13577 basic_istringstream_wchar* __thiscall basic_istringstream_short_ctor_mode(
13578 basic_istringstream_wchar *this, int mode, MSVCP_bool virt_init)
13580 basic_istringstream_wchar_ctor_mode(this, mode, virt_init);
13581 basic_istream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_istringstream_short_vtable;
13582 return this;
13585 /* ??_F?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
13586 /* ??_F?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
13587 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_ctor, 4)
13588 basic_istringstream_wchar* __thiscall basic_istringstream_wchar_ctor(
13589 basic_istringstream_wchar *this)
13591 return basic_istringstream_wchar_ctor_mode(this, 0, TRUE);
13594 /* ??_F?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
13595 /* ??_F?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
13596 DEFINE_THISCALL_WRAPPER(basic_istringstream_short_ctor, 4)
13597 basic_istringstream_wchar* __thiscall basic_istringstream_short_ctor(
13598 basic_istringstream_wchar *this)
13600 return basic_istringstream_short_ctor_mode(this, 0, TRUE);
13603 /* ??1?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UAE@XZ */
13604 /* ??1?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UEAA@XZ */
13605 /* ??1?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UAE@XZ */
13606 /* ??1?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UEAA@XZ */
13607 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_dtor, 4)
13608 void __thiscall basic_istringstream_wchar_dtor(basic_ios_wchar *base)
13610 basic_istringstream_wchar *this = basic_istringstream_wchar_from_basic_ios(base);
13612 TRACE("(%p)\n", this);
13614 basic_stringbuf_wchar_dtor(&this->strbuf);
13615 basic_istream_wchar_dtor(basic_istream_wchar_to_basic_ios(&this->base));
13618 /* ??_D?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
13619 /* ??_D?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
13620 /* ??_D?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
13621 /* ??_D?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
13622 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_vbase_dtor, 4)
13623 void __thiscall basic_istringstream_wchar_vbase_dtor(basic_istringstream_wchar *this)
13625 basic_ios_wchar *base = basic_istringstream_wchar_to_basic_ios(this);
13627 TRACE("(%p)\n", this);
13629 basic_istringstream_wchar_dtor(base);
13630 basic_ios_wchar_dtor(base);
13633 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_vector_dtor, 8)
13634 basic_istringstream_wchar* __thiscall basic_istringstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
13636 basic_istringstream_wchar *this = basic_istringstream_wchar_from_basic_ios(base);
13638 TRACE("(%p %x)\n", this, flags);
13640 if(flags & 2) {
13641 /* we have an array, with the number of elements stored before the first object */
13642 INT_PTR i, *ptr = (INT_PTR *)this-1;
13644 for(i=*ptr-1; i>=0; i--)
13645 basic_istringstream_wchar_vbase_dtor(this+i);
13646 MSVCRT_operator_delete(ptr);
13647 } else {
13648 basic_istringstream_wchar_vbase_dtor(this);
13649 if(flags & 1)
13650 MSVCRT_operator_delete(this);
13653 return this;
13656 /* ?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 */
13657 /* ?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 */
13658 /* ?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 */
13659 /* ?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 */
13660 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_rdbuf, 4)
13661 basic_stringbuf_wchar* __thiscall basic_istringstream_wchar_rdbuf(const basic_istringstream_wchar *this)
13663 TRACE("(%p)\n", this);
13664 return (basic_stringbuf_wchar*)&this->strbuf;
13667 /* ?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 */
13668 /* ?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 */
13669 /* ?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 */
13670 /* ?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 */
13671 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_str_set, 8)
13672 void __thiscall basic_istringstream_wchar_str_set(basic_istringstream_wchar *this, const basic_string_wchar *str)
13674 TRACE("(%p %p)\n", this, str);
13675 basic_stringbuf_wchar_str_set(&this->strbuf, str);
13678 /* ?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 */
13679 /* ?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 */
13680 /* ?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 */
13681 /* ?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 */
13682 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_str_get, 8)
13683 basic_string_wchar* __thiscall basic_istringstream_wchar_str_get(const basic_istringstream_wchar *this, basic_string_wchar *ret)
13685 TRACE("(%p %p)\n", this, ret);
13686 return basic_stringbuf_wchar_str_get(&this->strbuf, ret);
13689 static inline basic_ios_char* basic_stringstream_char_to_basic_ios(basic_stringstream_char *ptr)
13691 return (basic_ios_char*)((char*)ptr+basic_stringstream_char_vbtable1[1]);
13694 static inline basic_stringstream_char* basic_stringstream_char_from_basic_ios(basic_ios_char *ptr)
13696 return (basic_stringstream_char*)((char*)ptr-basic_stringstream_char_vbtable1[1]);
13699 /* ??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 */
13700 /* ??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 */
13701 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_ctor_str, 16)
13702 basic_stringstream_char* __thiscall basic_stringstream_char_ctor_str(basic_stringstream_char *this,
13703 const basic_string_char *str, int mode, MSVCP_bool virt_init)
13705 basic_ios_char *basic_ios;
13707 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
13709 if(virt_init) {
13710 this->base.base1.vbtable = basic_stringstream_char_vbtable1;
13711 this->base.base2.vbtable = basic_stringstream_char_vbtable2;
13712 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
13713 INIT_BASIC_IOS_VTORDISP(basic_ios);
13714 basic_ios_char_ctor(basic_ios);
13715 }else {
13716 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
13719 basic_stringbuf_char_ctor_str(&this->strbuf, str, mode);
13720 basic_iostream_char_ctor(&this->base, &this->strbuf.base, FALSE);
13721 basic_ios->base.vtable = &MSVCP_basic_stringstream_char_vtable;
13722 return this;
13725 /* ??0?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z */
13726 /* ??0?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z */
13727 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_ctor_mode, 12)
13728 basic_stringstream_char* __thiscall basic_stringstream_char_ctor_mode(
13729 basic_stringstream_char *this, int mode, MSVCP_bool virt_init)
13731 basic_ios_char *basic_ios;
13733 TRACE("(%p %d %d)\n", this, mode, virt_init);
13735 if(virt_init) {
13736 this->base.base1.vbtable = basic_stringstream_char_vbtable1;
13737 this->base.base2.vbtable = basic_stringstream_char_vbtable2;
13738 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
13739 INIT_BASIC_IOS_VTORDISP(basic_ios);
13740 basic_ios_char_ctor(basic_ios);
13741 }else {
13742 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
13745 basic_stringbuf_char_ctor_mode(&this->strbuf, mode);
13746 basic_iostream_char_ctor(&this->base, &this->strbuf.base, FALSE);
13747 basic_ios->base.vtable = &MSVCP_basic_stringstream_char_vtable;
13748 return this;
13751 /* ??_F?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
13752 /* ??_F?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
13753 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_ctor, 4)
13754 basic_stringstream_char* __thiscall basic_stringstream_char_ctor(
13755 basic_stringstream_char *this)
13757 return basic_stringstream_char_ctor_mode(
13758 this, OPENMODE_out|OPENMODE_in, TRUE);
13761 /* ??1?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ */
13762 /* ??1?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ */
13763 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_dtor, 4)
13764 void __thiscall basic_stringstream_char_dtor(basic_ios_char *base)
13766 basic_stringstream_char *this = basic_stringstream_char_from_basic_ios(base);
13768 TRACE("(%p)\n", this);
13770 basic_iostream_char_dtor(basic_iostream_char_to_basic_ios(&this->base));
13771 basic_stringbuf_char_dtor(&this->strbuf);
13774 /* ??_D?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
13775 /* ??_D?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
13776 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_vbase_dtor, 4)
13777 void __thiscall basic_stringstream_char_vbase_dtor(basic_stringstream_char *this)
13779 basic_ios_char *base = basic_stringstream_char_to_basic_ios(this);
13781 TRACE("(%p)\n", this);
13783 basic_stringstream_char_dtor(base);
13784 basic_ios_char_dtor(base);
13787 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_vector_dtor, 8)
13788 basic_stringstream_char* __thiscall basic_stringstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
13790 basic_stringstream_char *this = basic_stringstream_char_from_basic_ios(base);
13792 TRACE("(%p %x)\n", this, flags);
13794 if(flags & 2) {
13795 /* we have an array, with the number of elements stored before the first object */
13796 INT_PTR i, *ptr = (INT_PTR *)this-1;
13798 for(i=*ptr-1; i>=0; i--)
13799 basic_stringstream_char_vbase_dtor(this+i);
13800 MSVCRT_operator_delete(ptr);
13801 } else {
13802 basic_stringstream_char_vbase_dtor(this);
13803 if(flags & 1)
13804 MSVCRT_operator_delete(this);
13807 return this;
13810 /* ?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 */
13811 /* ?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 */
13812 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_rdbuf, 4)
13813 basic_stringbuf_char* __thiscall basic_stringstream_char_rdbuf(const basic_stringstream_char *this)
13815 TRACE("(%p)\n", this);
13816 return (basic_stringbuf_char*)&this->strbuf;
13819 /* ?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 */
13820 /* ?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 */
13821 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_str_set, 8)
13822 void __thiscall basic_stringstream_char_str_set(basic_stringstream_char *this, const basic_string_char *str)
13824 TRACE("(%p %p)\n", this, str);
13825 basic_stringbuf_char_str_set(&this->strbuf, str);
13828 /* ?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 */
13829 /* ?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 */
13830 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_str_get, 8)
13831 basic_string_char* __thiscall basic_stringstream_char_str_get(const basic_stringstream_char *this, basic_string_char *ret)
13833 TRACE("(%p %p)\n", this, ret);
13834 return basic_stringbuf_char_str_get(&this->strbuf, ret);
13837 static inline basic_ios_wchar* basic_stringstream_wchar_to_basic_ios(basic_stringstream_wchar *ptr)
13839 return (basic_ios_wchar*)((char*)ptr+basic_stringstream_wchar_vbtable1[1]);
13842 static inline basic_stringstream_wchar* basic_stringstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
13844 return (basic_stringstream_wchar*)((char*)ptr-basic_stringstream_wchar_vbtable1[1]);
13847 /* ??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 */
13848 /* ??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 */
13849 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_ctor_str, 16)
13850 basic_stringstream_wchar* __thiscall basic_stringstream_wchar_ctor_str(basic_stringstream_wchar *this,
13851 const basic_string_wchar *str, int mode, MSVCP_bool virt_init)
13853 basic_ios_wchar *basic_ios;
13855 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
13857 if(virt_init) {
13858 this->base.base1.vbtable = basic_stringstream_wchar_vbtable1;
13859 this->base.base2.vbtable = basic_stringstream_wchar_vbtable2;
13860 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
13861 INIT_BASIC_IOS_VTORDISP(basic_ios);
13862 basic_ios_wchar_ctor(basic_ios);
13863 }else {
13864 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
13867 basic_stringbuf_wchar_ctor_str(&this->strbuf, str, mode);
13868 basic_iostream_wchar_ctor(&this->base, &this->strbuf.base, FALSE);
13869 basic_ios->base.vtable = &MSVCP_basic_stringstream_wchar_vtable;
13870 return this;
13873 /* ??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 */
13874 /* ??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 */
13875 DEFINE_THISCALL_WRAPPER(basic_stringstream_short_ctor_str, 16)
13876 basic_stringstream_wchar* __thiscall basic_stringstream_short_ctor_str(basic_stringstream_wchar *this,
13877 const basic_string_wchar *str, int mode, MSVCP_bool virt_init)
13879 basic_stringstream_wchar_ctor_str(this, str, mode, virt_init);
13880 basic_istream_wchar_get_basic_ios(&this->base.base1)->base.vtable = &MSVCP_basic_stringstream_short_vtable;
13881 return this;
13884 /* ??0?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@H@Z */
13885 /* ??0?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@H@Z */
13886 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_ctor_mode, 12)
13887 basic_stringstream_wchar* __thiscall basic_stringstream_wchar_ctor_mode(
13888 basic_stringstream_wchar *this, int mode, MSVCP_bool virt_init)
13890 basic_ios_wchar *basic_ios;
13892 TRACE("(%p %d %d)\n", this, mode, virt_init);
13894 if(virt_init) {
13895 this->base.base1.vbtable = basic_stringstream_wchar_vbtable1;
13896 this->base.base2.vbtable = basic_stringstream_wchar_vbtable2;
13897 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
13898 INIT_BASIC_IOS_VTORDISP(basic_ios);
13899 basic_ios_wchar_ctor(basic_ios);
13900 }else {
13901 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
13904 basic_stringbuf_wchar_ctor_mode(&this->strbuf, mode);
13905 basic_iostream_wchar_ctor(&this->base, &this->strbuf.base, FALSE);
13906 basic_ios->base.vtable = &MSVCP_basic_stringstream_wchar_vtable;
13907 return this;
13910 /* ??0?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@H@Z */
13911 /* ??0?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@H@Z */
13912 DEFINE_THISCALL_WRAPPER(basic_stringstream_short_ctor_mode, 12)
13913 basic_stringstream_wchar* __thiscall basic_stringstream_short_ctor_mode(
13914 basic_stringstream_wchar *this, int mode, MSVCP_bool virt_init)
13916 basic_stringstream_wchar_ctor_mode(this, mode, virt_init);
13917 basic_istream_wchar_get_basic_ios(&this->base.base1)->base.vtable = &MSVCP_basic_stringstream_short_vtable;
13918 return this;
13921 /* ??_F?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
13922 /* ??_F?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
13923 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_ctor, 4)
13924 basic_stringstream_wchar* __thiscall basic_stringstream_wchar_ctor(
13925 basic_stringstream_wchar *this)
13927 return basic_stringstream_wchar_ctor_mode(
13928 this, OPENMODE_out|OPENMODE_in, TRUE);
13931 /* ??_F?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
13932 /* ??_F?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
13933 DEFINE_THISCALL_WRAPPER(basic_stringstream_short_ctor, 4)
13934 basic_stringstream_wchar* __thiscall basic_stringstream_short_ctor(
13935 basic_stringstream_wchar *this)
13937 return basic_stringstream_short_ctor_mode(
13938 this, OPENMODE_out|OPENMODE_in, TRUE);
13941 /* ??1?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UAE@XZ */
13942 /* ??1?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UEAA@XZ */
13943 /* ??1?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UAE@XZ */
13944 /* ??1?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UEAA@XZ */
13945 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_dtor, 4)
13946 void __thiscall basic_stringstream_wchar_dtor(basic_ios_wchar *base)
13948 basic_stringstream_wchar *this = basic_stringstream_wchar_from_basic_ios(base);
13950 TRACE("(%p)\n", this);
13952 basic_iostream_wchar_dtor(basic_iostream_wchar_to_basic_ios(&this->base));
13953 basic_stringbuf_wchar_dtor(&this->strbuf);
13956 /* ??_D?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
13957 /* ??_D?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
13958 /* ??_D?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
13959 /* ??_D?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
13960 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_vbase_dtor, 4)
13961 void __thiscall basic_stringstream_wchar_vbase_dtor(basic_stringstream_wchar *this)
13963 basic_ios_wchar *base = basic_stringstream_wchar_to_basic_ios(this);
13965 TRACE("(%p)\n", this);
13967 basic_stringstream_wchar_dtor(base);
13968 basic_ios_wchar_dtor(base);
13971 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_vector_dtor, 8)
13972 basic_stringstream_wchar* __thiscall basic_stringstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
13974 basic_stringstream_wchar *this = basic_stringstream_wchar_from_basic_ios(base);
13976 TRACE("(%p %x)\n", this, flags);
13978 if(flags & 2) {
13979 /* we have an array, with the number of elements stored before the first object */
13980 INT_PTR i, *ptr = (INT_PTR *)this-1;
13982 for(i=*ptr-1; i>=0; i--)
13983 basic_stringstream_wchar_vbase_dtor(this+i);
13984 MSVCRT_operator_delete(ptr);
13985 } else {
13986 basic_stringstream_wchar_vbase_dtor(this);
13987 if(flags & 1)
13988 MSVCRT_operator_delete(this);
13991 return this;
13994 /* ?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 */
13995 /* ?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 */
13996 /* ?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 */
13997 /* ?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 */
13998 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_rdbuf, 4)
13999 basic_stringbuf_wchar* __thiscall basic_stringstream_wchar_rdbuf(const basic_stringstream_wchar *this)
14001 TRACE("(%p)\n", this);
14002 return (basic_stringbuf_wchar*)&this->strbuf;
14005 /* ?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 */
14006 /* ?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 */
14007 /* ?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 */
14008 /* ?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 */
14009 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_str_set, 8)
14010 void __thiscall basic_stringstream_wchar_str_set(basic_stringstream_wchar *this, const basic_string_wchar *str)
14012 TRACE("(%p %p)\n", this, str);
14013 basic_stringbuf_wchar_str_set(&this->strbuf, str);
14016 /* ?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 */
14017 /* ?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 */
14018 /* ?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 */
14019 /* ?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 */
14020 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_str_get, 8)
14021 basic_string_wchar* __thiscall basic_stringstream_wchar_str_get(const basic_stringstream_wchar *this, basic_string_wchar *ret)
14023 TRACE("(%p %p)\n", this, ret);
14024 return basic_stringbuf_wchar_str_get(&this->strbuf, ret);
14027 /* ?_Init@strstreambuf@std@@IAEXHPAD0H@Z */
14028 /* ?_Init@strstreambuf@std@@IEAAX_JPEAD1H@Z */
14029 #if STREAMSIZE_BITS == 64
14030 DEFINE_THISCALL_WRAPPER(strstreambuf__Init, 24)
14031 #else
14032 DEFINE_THISCALL_WRAPPER(strstreambuf__Init, 20)
14033 #endif
14034 void __thiscall strstreambuf__Init(strstreambuf *this, streamsize len, char *g, char *p, int mode)
14036 TRACE("(%p %s %p %p %d)\n", this, wine_dbgstr_longlong(len), g, p, mode);
14038 this->minsize = 32;
14039 this->endsave = NULL;
14040 this->strmode = mode;
14041 this->palloc = NULL;
14042 this->pfree = NULL;
14044 if(!g) {
14045 this->strmode |= STRSTATE_Dynamic;
14046 if(len > this->minsize)
14047 this->minsize = len;
14048 this->seekhigh = NULL;
14049 return;
14052 if(len < 0)
14053 len = INT_MAX;
14054 else if(!len)
14055 len = strlen(g);
14057 this->seekhigh = g+len;
14058 basic_streambuf_char_setg(&this->base, g, g, p ? p : this->seekhigh);
14059 if(p)
14060 basic_streambuf_char_setp(&this->base, p, this->seekhigh);
14063 /* ??0strstreambuf@std@@QAE@PACH0@Z */
14064 /* ??0strstreambuf@std@@QEAA@PEAC_J0@Z */
14065 /* ??0strstreambuf@std@@QAE@PADH0@Z */
14066 /* ??0strstreambuf@std@@QEAA@PEAD_J0@Z */
14067 /* ??0strstreambuf@std@@QAE@PAEH0@Z */
14068 /* ??0strstreambuf@std@@QEAA@PEAE_J0@Z */
14069 #if STREAMSIZE_BITS == 64
14070 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_get_put, 20)
14071 #else
14072 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_get_put, 16)
14073 #endif
14074 strstreambuf* __thiscall strstreambuf_ctor_get_put(strstreambuf *this, char *g, streamsize len, char *p)
14076 TRACE("(%p %p %s %p)\n", this, g, wine_dbgstr_longlong(len), p);
14078 basic_streambuf_char_ctor(&this->base);
14079 this->base.vtable = &MSVCP_strstreambuf_vtable;
14081 strstreambuf__Init(this, len, g, p, 0);
14082 return this;
14085 /* ??0strstreambuf@std@@QAE@H@Z */
14086 /* ??0strstreambuf@std@@QEAA@_J@Z */
14087 #if STREAMSIZE_BITS == 64
14088 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_len, 12)
14089 #else
14090 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_len, 8)
14091 #endif
14092 strstreambuf* __thiscall strstreambuf_ctor_len(strstreambuf *this, streamsize len)
14094 return strstreambuf_ctor_get_put(this, NULL, len, NULL);
14097 /* ??0strstreambuf@std@@QAE@P6APAXI@ZP6AXPAX@Z@Z */
14098 /* ??0strstreambuf@std@@QEAA@P6APEAX_K@ZP6AXPEAX@Z@Z */
14099 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_alloc, 12)
14100 strstreambuf* __thiscall strstreambuf_ctor_alloc(strstreambuf *this, void* (__cdecl *palloc)(MSVCP_size_t), void (__cdecl *pfree)(void*))
14102 TRACE("(%p %p %p)\n", this, palloc, pfree);
14104 strstreambuf_ctor_get_put(this, NULL, 0, NULL);
14105 this->palloc = palloc;
14106 this->pfree = pfree;
14107 return this;
14110 /* ??0strstreambuf@std@@QAE@PBCH@Z */
14111 /* ??0strstreambuf@std@@QEAA@PEBC_J@Z */
14112 /* ??0strstreambuf@std@@QAE@PBDH@Z */
14113 /* ??0strstreambuf@std@@QEAA@PEBD_J@Z */
14114 /* ??0strstreambuf@std@@QAE@PBEH@Z */
14115 /* ??0strstreambuf@std@@QEAA@PEBE_J@Z */
14116 #if STREAMSIZE_BITS == 64
14117 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_get, 16)
14118 #else
14119 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_get, 12)
14120 #endif
14121 strstreambuf* __thiscall strstreambuf_ctor_get(strstreambuf *this, const char *g, streamsize len)
14123 TRACE("(%p %p %s)\n", this, g, wine_dbgstr_longlong(len));
14125 strstreambuf_ctor_get_put(this, (char*)g, len, NULL);
14126 this->strmode |= STRSTATE_Constant;
14127 return this;
14130 /* ??_Fstrstreambuf@std@@QAEXXZ */
14131 /* ??_Fstrstreambuf@std@@QEAAXXZ */
14132 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor, 4)
14133 strstreambuf* __thiscall strstreambuf_ctor(strstreambuf *this)
14135 return strstreambuf_ctor_get_put(this, NULL, 0, NULL);
14138 /* ?_Tidy@strstreambuf@std@@IAEXXZ */
14139 /* ?_Tidy@strstreambuf@std@@IEAAXXZ */
14140 DEFINE_THISCALL_WRAPPER(strstreambuf__Tidy, 4)
14141 void __thiscall strstreambuf__Tidy(strstreambuf *this)
14143 TRACE("(%p)\n", this);
14145 if((this->strmode & STRSTATE_Allocated) && !(this->strmode & STRSTATE_Frozen)) {
14146 if(this->pfree)
14147 this->pfree(basic_streambuf_char_eback(&this->base));
14148 else
14149 MSVCRT_operator_delete(basic_streambuf_char_eback(&this->base));
14152 this->endsave = NULL;
14153 this->seekhigh = NULL;
14154 this->strmode &= ~(STRSTATE_Allocated | STRSTATE_Frozen);
14155 basic_streambuf_char_setg(&this->base, NULL, NULL, NULL);
14156 basic_streambuf_char_setp(&this->base, NULL, NULL);
14159 /* ??1strstreambuf@std@@UAE@XZ */
14160 /* ??1strstreambuf@std@@UEAA@XZ */
14161 DEFINE_THISCALL_WRAPPER(strstreambuf_dtor, 4)
14162 void __thiscall strstreambuf_dtor(strstreambuf *this)
14164 TRACE("(%p)\n", this);
14166 strstreambuf__Tidy(this);
14167 basic_streambuf_char_dtor(&this->base);
14170 DEFINE_THISCALL_WRAPPER(strstreambuf_vector_dtor, 8)
14171 strstreambuf* __thiscall strstreambuf_vector_dtor(strstreambuf *this, unsigned int flags)
14173 TRACE("(%p %x)\n", this, flags);
14174 if(flags & 2) {
14175 /* we have an array, with the number of elements stored before the first object */
14176 INT_PTR i, *ptr = (INT_PTR *)this-1;
14178 for(i=*ptr-1; i>=0; i--)
14179 strstreambuf_dtor(this+i);
14180 MSVCRT_operator_delete(ptr);
14181 } else {
14182 strstreambuf_dtor(this);
14183 if(flags & 1)
14184 MSVCRT_operator_delete(this);
14187 return this;
14190 /* ?freeze@strstreambuf@std@@QAEX_N@Z */
14191 /* ?freeze@strstreambuf@std@@QEAAX_N@Z */
14192 DEFINE_THISCALL_WRAPPER(strstreambuf_freeze, 8)
14193 void __thiscall strstreambuf_freeze(strstreambuf *this, MSVCP_bool freeze)
14195 TRACE("(%p %d)\n", this, freeze);
14197 if(!freeze == !(this->strmode & STRSTATE_Frozen))
14198 return;
14200 if(freeze) {
14201 this->strmode |= STRSTATE_Frozen;
14202 this->endsave = basic_streambuf_char_epptr(&this->base);
14203 basic_streambuf_char_setp_next(&this->base, basic_streambuf_char_pbase(&this->base),
14204 basic_streambuf_char_pptr(&this->base), basic_streambuf_char_eback(&this->base));
14205 }else {
14206 this->strmode &= ~STRSTATE_Frozen;
14207 basic_streambuf_char_setp_next(&this->base, basic_streambuf_char_pbase(&this->base),
14208 basic_streambuf_char_pptr(&this->base), this->endsave);
14212 /* ?str@strstreambuf@std@@QAEPADXZ */
14213 /* ?str@strstreambuf@std@@QEAAPEADXZ */
14214 DEFINE_THISCALL_WRAPPER(strstreambuf_str, 4)
14215 char* __thiscall strstreambuf_str(strstreambuf *this)
14217 TRACE("(%p)\n", this);
14219 strstreambuf_freeze(this, TRUE);
14220 return basic_streambuf_char_gptr(&this->base);
14223 /* ?pcount@strstreambuf@std@@QBEHXZ */
14224 /* ?pcount@strstreambuf@std@@QEBA_JXZ */
14225 DEFINE_THISCALL_WRAPPER(strstreambuf_pcount, 4)
14226 streamsize __thiscall strstreambuf_pcount(const strstreambuf *this)
14228 char *ppos = basic_streambuf_char_pptr(&this->base);
14230 TRACE("(%p)\n", this);
14232 return ppos ? ppos-basic_streambuf_char_pbase(&this->base) : 0;
14235 /* ?overflow@strstreambuf@std@@MAEHH@Z */
14236 /* ?overflow@strstreambuf@std@@MEAAHH@Z */
14237 DEFINE_THISCALL_WRAPPER(strstreambuf_overflow, 8)
14238 int __thiscall strstreambuf_overflow(strstreambuf *this, int c)
14240 MSVCP_size_t old_size, size;
14241 char *ptr, *buf;
14243 TRACE("(%p %d)\n", this, c);
14245 if(c == EOF)
14246 return !EOF;
14248 if(this->strmode & STRSTATE_Frozen)
14249 return EOF;
14251 ptr = basic_streambuf_char_pptr(&this->base);
14252 if(ptr && ptr<basic_streambuf_char_epptr(&this->base))
14253 return (unsigned char)(*basic_streambuf_char__Pninc(&this->base) = c);
14255 if(!(this->strmode & STRSTATE_Dynamic) || (this->strmode & STRSTATE_Constant))
14256 return EOF;
14258 ptr = basic_streambuf_char_eback(&this->base);
14259 old_size = ptr ? basic_streambuf_char_epptr(&this->base) - ptr : 0;
14261 size = old_size + old_size/2;
14262 if(size < this->minsize)
14263 size = this->minsize;
14265 if(this->palloc)
14266 buf = this->palloc(size);
14267 else
14268 buf = MSVCRT_operator_new(size);
14269 if(!buf)
14270 return EOF;
14272 memcpy(buf, ptr, old_size);
14273 if(this->strmode & STRSTATE_Allocated) {
14274 if(this->pfree)
14275 this->pfree(ptr);
14276 else
14277 MSVCRT_operator_delete(ptr);
14280 this->strmode |= STRSTATE_Allocated;
14281 if(!old_size) {
14282 this->seekhigh = buf;
14283 basic_streambuf_char_setp(&this->base, buf, buf+size);
14284 basic_streambuf_char_setg(&this->base, buf, buf, buf);
14285 }else {
14286 this->seekhigh = this->seekhigh-ptr+buf;
14287 basic_streambuf_char_setp_next(&this->base, basic_streambuf_char_pbase(&this->base)-ptr+buf,
14288 basic_streambuf_char_pptr(&this->base)-ptr+buf, buf+size);
14289 basic_streambuf_char_setg(&this->base, buf, basic_streambuf_char_gptr(&this->base)-ptr+buf,
14290 basic_streambuf_char_pptr(&this->base));
14293 return (unsigned char)(*basic_streambuf_char__Pninc(&this->base) = c);
14296 /* ?pbackfail@strstreambuf@std@@MAEHH@Z */
14297 /* ?pbackfail@strstreambuf@std@@MEAAHH@Z */
14298 DEFINE_THISCALL_WRAPPER(strstreambuf_pbackfail, 8)
14299 int __thiscall strstreambuf_pbackfail(strstreambuf *this, int c)
14301 char *ptr = basic_streambuf_char_gptr(&this->base);
14303 TRACE("(%p %d)\n", this, c);
14305 if(ptr<=basic_streambuf_char_eback(&this->base)
14306 || ((this->strmode & STRSTATE_Constant) && c!=ptr[-1]))
14307 return EOF;
14309 basic_streambuf_char_gbump(&this->base, -1);
14310 if(c == EOF)
14311 return !EOF;
14312 if(this->strmode & STRSTATE_Constant)
14313 return (unsigned char)c;
14315 return (unsigned char)(ptr[0] = c);
14318 /* ?seekoff@strstreambuf@std@@MAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
14319 /* ?seekoff@strstreambuf@std@@MEAA?AV?$fpos@H@2@_JW4seekdir@ios_base@2@H@Z */
14320 /* ?seekoff@strstreambuf@std@@MAE?AV?$fpos@H@2@JHH@Z */
14321 /* ?seekoff@strstreambuf@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
14322 #if STREAMOFF_BITS == 64
14323 DEFINE_THISCALL_WRAPPER(strstreambuf_seekoff, 24)
14324 #else
14325 DEFINE_THISCALL_WRAPPER(strstreambuf_seekoff, 20)
14326 #endif
14327 fpos_mbstatet* __thiscall strstreambuf_seekoff(strstreambuf *this, fpos_mbstatet *ret, streamoff off, int way, int mode)
14329 char *eback = basic_streambuf_char_eback(&this->base);
14330 char *pptr = basic_streambuf_char_pptr(&this->base);
14331 char *gptr = basic_streambuf_char_gptr(&this->base);
14333 TRACE("(%p %p %s %d %d)\n", this, ret, wine_dbgstr_longlong(off), way, mode);
14335 ret->off = 0;
14336 memset(&ret->state, 0, sizeof(ret->state));
14338 if(pptr > this->seekhigh)
14339 this->seekhigh = pptr;
14341 if((mode & OPENMODE_in) && gptr) {
14342 if(way==SEEKDIR_cur && !(mode & OPENMODE_out))
14343 off += gptr-eback;
14344 else if(way == SEEKDIR_end)
14345 off += this->seekhigh-eback;
14346 else if(way != SEEKDIR_beg)
14347 off = -1;
14349 if(off<0 || off>this->seekhigh-eback) {
14350 off = -1;
14351 }else {
14352 basic_streambuf_char_gbump(&this->base, eback-gptr+off);
14353 if((mode & OPENMODE_out) && pptr) {
14354 basic_streambuf_char_setp_next(&this->base, eback,
14355 gptr, basic_streambuf_char_epptr(&this->base));
14358 }else if((mode & OPENMODE_out) && pptr) {
14359 if(way == SEEKDIR_cur)
14360 off += pptr-eback;
14361 else if(way == SEEKDIR_end)
14362 off += this->seekhigh-eback;
14363 else if(way != SEEKDIR_beg)
14364 off = -1;
14366 if(off<0 || off>this->seekhigh-eback)
14367 off = -1;
14368 else
14369 basic_streambuf_char_pbump(&this->base, eback-pptr+off);
14370 }else {
14371 off = -1;
14374 ret->pos = off;
14375 return ret;
14378 /* ?seekpos@strstreambuf@std@@MAE?AV?$fpos@H@2@V32@H@Z */
14379 /* ?seekpos@strstreambuf@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
14380 DEFINE_THISCALL_WRAPPER(strstreambuf_seekpos, 36)
14381 fpos_mbstatet* __thiscall strstreambuf_seekpos(strstreambuf *this, fpos_mbstatet *ret, fpos_mbstatet pos, int mode)
14383 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_mbstatet(&pos), mode);
14385 if(pos.off==-1 && pos.pos==0 && MBSTATET_TO_INT(&pos.state)==0) {
14386 *ret = pos;
14387 return ret;
14390 return strstreambuf_seekoff(this, ret, pos.pos+pos.off, SEEKDIR_beg, mode);
14393 /* ?underflow@strstreambuf@std@@MAEHXZ */
14394 /* ?underflow@strstreambuf@std@@MEAAHXZ */
14395 DEFINE_THISCALL_WRAPPER(strstreambuf_underflow, 4)
14396 int __thiscall strstreambuf_underflow(strstreambuf *this)
14398 char *gptr = basic_streambuf_char_gptr(&this->base);
14399 char *pptr;
14401 TRACE("(%p)\n", this);
14403 if(!gptr)
14404 return EOF;
14406 if(gptr < basic_streambuf_char_egptr(&this->base))
14407 return (unsigned char)(*gptr);
14409 pptr = basic_streambuf_char_gptr(&this->base);
14410 if(pptr > this->seekhigh)
14411 this->seekhigh = pptr;
14413 if(this->seekhigh <= gptr)
14414 return EOF;
14416 basic_streambuf_char_setg(&this->base, basic_streambuf_char_eback(&this->base),
14417 gptr, this->seekhigh);
14418 return (unsigned char)(*gptr);
14421 static inline basic_ios_char* ostrstream_to_basic_ios(ostrstream *ptr)
14423 return (basic_ios_char*)((char*)ptr+ostrstream_vbtable[1]);
14426 static inline ostrstream* ostrstream_from_basic_ios(basic_ios_char *ptr)
14428 return (ostrstream*)((char*)ptr-ostrstream_vbtable[1]);
14431 /* ??0ostrstream@std@@QAE@PADHH@Z */
14432 #if STREAMSIZE_BITS == 64
14433 DEFINE_THISCALL_WRAPPER(ostrstream_ctor, 24)
14434 #else
14435 DEFINE_THISCALL_WRAPPER(ostrstream_ctor, 20)
14436 #endif
14437 ostrstream* __thiscall ostrstream_ctor(ostrstream *this, char *buf, streamsize size, int mode, MSVCP_bool virt_init)
14439 basic_ios_char *basic_ios;
14441 TRACE("(%p %p %s %d %d)\n", this, buf, wine_dbgstr_longlong(size), mode, virt_init);
14443 if(virt_init) {
14444 this->base.vbtable = ostrstream_vbtable;
14445 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
14446 INIT_BASIC_IOS_VTORDISP(basic_ios);
14447 basic_ios_char_ctor(basic_ios);
14448 }else {
14449 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
14452 strstreambuf_ctor_get_put(&this->buf, buf, size,
14453 buf && (mode & OPENMODE_app) ? buf+strlen(buf) : buf);
14454 basic_ostream_char_ctor(&this->base, &this->buf.base, FALSE, FALSE);
14455 basic_ios->base.vtable = &MSVCP_ostrstream_vtable;
14456 return this;
14459 /* ??1ostrstream@std@@UAE@XZ */
14460 /* ??1ostrstream@std@@UEAA@XZ */
14461 DEFINE_THISCALL_WRAPPER(ostrstream_dtor, 4)
14462 void __thiscall ostrstream_dtor(basic_ios_char *base)
14464 ostrstream *this = ostrstream_from_basic_ios(base);
14466 TRACE("(%p)\n", this);
14468 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(&this->base));
14469 strstreambuf_dtor(&this->buf);
14472 static void ostrstream_vbase_dtor(ostrstream *this)
14474 basic_ios_char *base = ostrstream_to_basic_ios(this);
14476 TRACE("(%p)\n", this);
14478 ostrstream_dtor(base);
14479 basic_ios_char_dtor(base);
14482 DEFINE_THISCALL_WRAPPER(ostrstream_vector_dtor, 8)
14483 ostrstream* __thiscall ostrstream_vector_dtor(basic_ios_char *base, unsigned int flags)
14485 ostrstream *this = ostrstream_from_basic_ios(base);
14487 TRACE("(%p %x)\n", this, flags);
14489 if(flags & 2) {
14490 /* we have an array, with the number of elements stored before the first object */
14491 INT_PTR i, *ptr = (INT_PTR *)this-1;
14493 for(i=*ptr-1; i>=0; i--)
14494 ostrstream_vbase_dtor(this+i);
14495 MSVCRT_operator_delete(ptr);
14496 } else {
14497 ostrstream_vbase_dtor(this);
14498 if(flags & 1)
14499 MSVCRT_operator_delete(this);
14502 return this;
14505 static inline istrstream* istrstream_from_basic_ios(basic_ios_char *ptr)
14507 return (istrstream*)((char*)ptr-istrstream_vbtable[1]);
14510 /* ??1istrstream@std@@UAE@XZ */
14511 /* ??1istrstream@std@@UEAA@XZ */
14512 DEFINE_THISCALL_WRAPPER(istrstream_dtor, 4)
14513 void __thiscall istrstream_dtor(basic_ios_char *base)
14515 istrstream *this = istrstream_from_basic_ios(base);
14517 TRACE("(%p)\n", this);
14519 basic_istream_char_dtor(basic_istream_char_to_basic_ios(&this->base));
14520 strstreambuf_dtor(&this->buf);
14523 static inline basic_ios_char* strstream_to_basic_ios(strstream *ptr)
14525 return (basic_ios_char*)((char*)ptr+strstream_vbtable1[1]);
14528 static inline strstream* strstream_from_basic_ios(basic_ios_char *ptr)
14530 return (strstream*)((char*)ptr-strstream_vbtable1[1]);
14533 /* ??$?6MDU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$complex@M@0@@Z */
14534 /* ??$?6MDU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@M@0@@Z */
14535 basic_ostream_char* __cdecl basic_ostream_char_print_complex_float(basic_ostream_char *ostr, const complex_float *val)
14537 struct {
14538 basic_ostringstream_char obj;
14539 basic_ios_char vbase;
14540 } oss;
14541 ios_base *ostringstream_ios_base, *ostream_ios_base;
14542 locale loc;
14543 basic_string_char str;
14544 basic_ostringstream_char_ctor(&oss.obj);
14545 ostringstream_ios_base = &oss.vbase.base;
14546 ostream_ios_base = &basic_ostream_char_get_basic_ios(ostr)->base;
14547 TRACE("(%p %p)\n", ostr, val);
14549 ios_base_imbue(ostringstream_ios_base, &loc, IOS_LOCALE(ostream_ios_base));
14550 locale_dtor(&loc);
14551 ios_base_precision_set(ostringstream_ios_base, ios_base_precision_get(ostream_ios_base));
14552 ios_base_flags_set(ostringstream_ios_base, ios_base_flags_get(ostream_ios_base));
14554 basic_ostream_char_print_ch(&oss.obj.base, '(');
14555 basic_ostream_char_print_float(&oss.obj.base, val->real);
14556 basic_ostream_char_print_ch(&oss.obj.base, ',');
14557 basic_ostream_char_print_float(&oss.obj.base, val->imag);
14558 basic_ostream_char_print_ch(&oss.obj.base, ')');
14560 basic_ostringstream_char_str_get(&oss.obj, &str);
14561 basic_ostringstream_char_dtor(&oss.vbase);
14562 basic_ostream_char_print_bstr(ostr, &str);
14563 MSVCP_basic_string_char_dtor(&str);
14564 return ostr;
14567 /* ??$?6NDU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$complex@N@0@@Z */
14568 /* ??$?6NDU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@N@0@@Z */
14569 basic_ostream_char* __cdecl basic_ostream_char_print_complex_double(basic_ostream_char *ostr, const complex_double *val)
14571 struct {
14572 basic_ostringstream_char obj;
14573 basic_ios_char vbase;
14574 } oss;
14575 ios_base *ostringstream_ios_base, *ostream_ios_base;
14576 locale loc;
14577 basic_string_char str;
14578 basic_ostringstream_char_ctor(&oss.obj);
14579 ostringstream_ios_base = &oss.vbase.base;
14580 ostream_ios_base = &basic_ostream_char_get_basic_ios(ostr)->base;
14581 TRACE("(%p %p)\n", ostr, val);
14583 ios_base_imbue(ostringstream_ios_base, &loc, IOS_LOCALE(ostream_ios_base));
14584 locale_dtor(&loc);
14585 ios_base_precision_set(ostringstream_ios_base, ios_base_precision_get(ostream_ios_base));
14586 ios_base_flags_set(ostringstream_ios_base, ios_base_flags_get(ostream_ios_base));
14588 basic_ostream_char_print_ch(&oss.obj.base, '(');
14589 basic_ostream_char_print_double(&oss.obj.base, val->real);
14590 basic_ostream_char_print_ch(&oss.obj.base, ',');
14591 basic_ostream_char_print_double(&oss.obj.base, val->imag);
14592 basic_ostream_char_print_ch(&oss.obj.base, ')');
14594 basic_ostringstream_char_str_get(&oss.obj, &str);
14595 basic_ostringstream_char_dtor(&oss.vbase);
14596 basic_ostream_char_print_bstr(ostr, &str);
14597 MSVCP_basic_string_char_dtor(&str);
14598 return ostr;
14601 /* ??$?6odu?$char_traits@d@std@@@std@@yaaav?$basic_ostream@du?$char_traits@d@std@@@0@aav10@abv?$complex@o@0@@Z */
14602 /* ??$?6ODU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@O@0@@Z */
14603 basic_ostream_char* __cdecl basic_ostream_char_print_complex_ldouble(basic_ostream_char *ostr, const complex_double *val)
14605 struct {
14606 basic_ostringstream_char obj;
14607 basic_ios_char vbase;
14608 } oss;
14609 ios_base *ostringstream_ios_base, *ostream_ios_base;
14610 locale loc;
14611 basic_string_char str;
14612 basic_ostringstream_char_ctor(&oss.obj);
14613 ostringstream_ios_base = &oss.vbase.base;
14614 ostream_ios_base = &basic_ostream_char_get_basic_ios(ostr)->base;
14615 TRACE("(%p %p)\n", ostr, val);
14617 ios_base_imbue(ostringstream_ios_base, &loc, IOS_LOCALE(ostream_ios_base));
14618 locale_dtor(&loc);
14619 ios_base_precision_set(ostringstream_ios_base, ios_base_precision_get(ostream_ios_base));
14620 ios_base_flags_set(ostringstream_ios_base, ios_base_flags_get(ostream_ios_base));
14622 basic_ostream_char_print_ch(&oss.obj.base, '(');
14623 basic_ostream_char_print_ldouble(&oss.obj.base, val->real);
14624 basic_ostream_char_print_ch(&oss.obj.base, ',');
14625 basic_ostream_char_print_ldouble(&oss.obj.base, val->imag);
14626 basic_ostream_char_print_ch(&oss.obj.base, ')');
14628 basic_ostringstream_char_str_get(&oss.obj, &str);
14629 basic_ostringstream_char_dtor(&oss.vbase);
14630 basic_ostream_char_print_bstr(ostr, &str);
14631 MSVCP_basic_string_char_dtor(&str);
14632 return ostr;
14635 /* ?_File_size@sys@tr2@std@@YA_KPBD@Z */
14636 /* ?_File_size@sys@tr2@std@@YA_KPEBD@Z */
14637 ULONGLONG __cdecl tr2_sys__File_size(char const* path)
14639 WIN32_FILE_ATTRIBUTE_DATA fad;
14641 TRACE("(%s)\n", debugstr_a(path));
14642 if(!GetFileAttributesExA(path, GetFileExInfoStandard, &fad))
14643 return 0;
14644 if(fad.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
14645 return 0;
14647 return ((ULONGLONG)(fad.nFileSizeHigh) << 32) + fad.nFileSizeLow;
14650 /* ?_Equivalent@sys@tr2@std@@YAHPBD0@Z */
14651 /* ?_Equivalent@sys@tr2@std@@YAHPEBD0@Z */
14652 int __cdecl tr2_sys__Equivalent(char const* path1, char const* path2)
14654 HANDLE h1, h2;
14655 int ret;
14656 BY_HANDLE_FILE_INFORMATION info1, info2;
14657 TRACE("(%s %s)\n", debugstr_a(path1), debugstr_a(path2));
14659 h1 = CreateFileA(path1, 0, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
14660 NULL, OPEN_EXISTING, 0, 0);
14661 h2 = CreateFileA(path2, 0, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
14662 NULL, OPEN_EXISTING, 0, 0);
14663 if(h1 == INVALID_HANDLE_VALUE) {
14664 if(h2 == INVALID_HANDLE_VALUE) {
14665 return -1;
14666 }else {
14667 CloseHandle(h2);
14668 return 0;
14670 }else if(h2 == INVALID_HANDLE_VALUE) {
14671 CloseHandle(h1);
14672 return 0;
14675 ret = GetFileInformationByHandle(h1, &info1) && GetFileInformationByHandle(h2, &info2);
14676 CloseHandle(h1);
14677 CloseHandle(h2);
14678 if(!ret)
14679 return -1;
14680 return (info1.dwVolumeSerialNumber == info2.dwVolumeSerialNumber
14681 && info1.nFileIndexHigh == info2.nFileIndexHigh
14682 && info1.nFileIndexLow == info2.nFileIndexLow
14686 /* ?_Current_get@sys@tr2@std@@YAPADAAY0BAE@D@Z */
14687 /* ?_Current_get@sys@tr2@std@@YAPEADAEAY0BAE@D@Z */
14688 char* __cdecl tr2_sys__Current_get(char *current_path)
14690 TRACE("(%s)\n", debugstr_a(current_path));
14692 if(!GetCurrentDirectoryA(MAX_PATH, current_path))
14693 return NULL;
14694 return current_path;
14697 /* ?_Current_set@sys@tr2@std@@YA_NPBD@Z */
14698 /* ?_Current_set@sys@tr2@std@@YA_NPEBD@Z */
14699 MSVCP_bool __cdecl tr2_sys__Current_set(char const* path)
14701 TRACE("(%s)\n", debugstr_a(path));
14702 return SetCurrentDirectoryA(path) != 0;
14705 /* ?_Make_dir@sys@tr2@std@@YAHPBD@Z */
14706 /* ?_Make_dir@sys@tr2@std@@YAHPEBD@Z */
14707 int __cdecl tr2_sys__Make_dir(char const* path)
14709 TRACE("(%s)\n", debugstr_a(path));
14711 if(!CreateDirectoryA(path, NULL)) {
14712 if(GetLastError() == ERROR_ALREADY_EXISTS)
14713 return 0;
14714 else
14715 return -1;
14718 return 1;
14721 /* ?_Remove_dir@sys@tr2@std@@YA_NPBD@Z */
14722 /* ?_Remove_dir@sys@tr2@std@@YA_NPEBD@Z */
14723 MSVCP_bool __cdecl tr2_sys__Remove_dir(char const* path)
14725 TRACE("(%s)\n", debugstr_a(path));
14726 return RemoveDirectoryA(path) != 0;
14729 /* ?_Copy_file@sys@tr2@std@@YAHPBD0_N@Z */
14730 /* ?_Copy_file@sys@tr2@std@@YAHPEBD0_N@Z */
14731 int __cdecl tr2_sys__Copy_file(char const* source, char const* dest, MSVCP_bool fail_if_exists)
14733 TRACE("(%s %s %x)\n", debugstr_a(source), debugstr_a(dest), fail_if_exists);
14735 if(CopyFileA(source, dest, fail_if_exists))
14736 return ERROR_SUCCESS;
14737 return GetLastError();
14740 /* ?_Rename@sys@tr2@std@@YAHPBD0@Z */
14741 /* ?_Rename@sys@tr2@std@@YAHPEBD0@Z */
14742 int __cdecl tr2_sys__Rename(char const* old_path, char const* new_path)
14744 TRACE("(%s %s)\n", debugstr_a(old_path), debugstr_a(new_path));
14746 if(!old_path || !new_path)
14747 return ERROR_INVALID_PARAMETER;
14749 if(MoveFileExA(old_path, new_path, MOVEFILE_COPY_ALLOWED))
14750 return ERROR_SUCCESS;
14751 return GetLastError();
14754 /* ?_Statvfs@sys@tr2@std@@YA?AUspace_info@123@PBD@Z */
14755 /* ?_Statvfs@sys@tr2@std@@YA?AUspace_info@123@PEBD@Z */
14756 struct space_info* __cdecl tr2_sys__Statvfs(struct space_info *ret, const char* path)
14758 ULARGE_INTEGER available, total, free;
14760 TRACE("(%s)\n", debugstr_a(path));
14762 if(!path || !GetDiskFreeSpaceExA(path, &available, &total, &free)) {
14763 ret->capacity = ret->free = ret->available = 0;
14764 }else {
14765 ret->capacity = total.QuadPart;
14766 ret->free = free.QuadPart;
14767 ret->available = available.QuadPart;
14769 return ret;
14772 /* ?_Stat@sys@tr2@std@@YA?AW4file_type@123@PBDAAH@Z */
14773 /* ?_Stat@sys@tr2@std@@YA?AW4file_type@123@PEBDAEAH@Z */
14774 enum file_type __cdecl tr2_sys__Stat(char const* path, int* err_code)
14776 DWORD attr;
14777 TRACE("(%s %p)\n", debugstr_a(path), err_code);
14778 if(!path) {
14779 *err_code = ERROR_INVALID_PARAMETER;
14780 return status_unknown;
14783 attr=GetFileAttributesA(path);
14784 if(attr == INVALID_FILE_ATTRIBUTES) {
14785 enum file_type ret;
14786 switch(GetLastError()) {
14787 case ERROR_FILE_NOT_FOUND:
14788 case ERROR_BAD_NETPATH:
14789 case ERROR_INVALID_NAME:
14790 case ERROR_BAD_PATHNAME:
14791 case ERROR_PATH_NOT_FOUND:
14792 ret = file_not_found;
14793 *err_code = ERROR_SUCCESS;
14794 break;
14795 default:
14796 ret = status_unknown;
14797 *err_code = GetLastError();
14799 return ret;
14802 *err_code = ERROR_SUCCESS;
14803 return (attr & FILE_ATTRIBUTE_DIRECTORY)?directory_file:regular_file;
14806 /* ?_Lstat@sys@tr2@std@@YA?AW4file_type@123@PBDAAH@Z */
14807 /* ?_Lstat@sys@tr2@std@@YA?AW4file_type@123@PEBDAEAH@Z */
14808 enum file_type __cdecl tr2_sys__Lstat(char const* path, int* err_code)
14810 return tr2_sys__Stat(path, err_code);
14813 /* ?_Last_write_time@sys@tr2@std@@YA_JPBD@Z */
14814 /* ?_Last_write_time@sys@tr2@std@@YA_JPEBD@Z */
14815 __int64 __cdecl tr2_sys__Last_write_time(char const* path)
14817 HANDLE handle;
14818 FILETIME lwt;
14819 int ret;
14820 __int64 last_write_time;
14821 TRACE("(%s)\n", debugstr_a(path));
14823 handle = CreateFileA(path, 0, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
14824 NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
14825 if(handle == INVALID_HANDLE_VALUE)
14826 return 0;
14828 ret = GetFileTime(handle, 0, 0, &lwt);
14829 CloseHandle(handle);
14830 if(!ret)
14831 return 0;
14833 last_write_time = (((__int64)lwt.dwHighDateTime)<< 32) + lwt.dwLowDateTime;
14834 last_write_time -= TICKS_1601_TO_1970;
14835 last_write_time /= TICKSPERSEC;
14836 return last_write_time;
14839 /* ?_Last_write_time@sys@tr2@std@@YAXPBD_J@Z */
14840 /* ?_Last_write_time@sys@tr2@std@@YAXPEBD_J@Z */
14841 void __cdecl tr2_sys__Last_write_time_set(char const* path, __int64 newtime)
14843 HANDLE handle;
14844 FILETIME lwt;
14845 TRACE("(%s)\n", debugstr_a(path));
14847 handle = CreateFileA(path, FILE_WRITE_ATTRIBUTES,
14848 FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
14849 NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
14850 if(handle == INVALID_HANDLE_VALUE)
14851 return;
14853 /* This is the implementation based on the test of msvcp110.
14854 * According to the test of msvcp120,
14855 * msvcp120's implementation does nothing. Obviously, this is a bug of windows.
14858 newtime *= TICKSPERSEC;
14859 newtime += TICKS_1601_TO_1970;
14860 lwt.dwLowDateTime = (DWORD)(newtime);
14861 lwt.dwHighDateTime = (DWORD)(newtime >> 32);
14862 SetFileTime(handle, 0, 0, &lwt);
14863 CloseHandle(handle);
14866 /* ?_Open_dir@sys@tr2@std@@YAPAXAAY0BAE@DPBDAAHAAW4file_type@123@@Z */
14867 /* ?_Open_dir@sys@tr2@std@@YAPEAXAEAY0BAE@DPEBDAEAHAEAW4file_type@123@@Z */
14868 void* __cdecl tr2_sys__Open_dir(char* target, char const* dest, int* err_code, enum file_type* type)
14870 HANDLE handle;
14871 WIN32_FIND_DATAA data;
14872 char temppath[MAX_PATH];
14874 TRACE("(%p %s %p %p)\n", target, debugstr_a(dest), err_code, type);
14875 if(strlen(dest) > MAX_PATH - 3) {
14876 *err_code = ERROR_BAD_PATHNAME;
14877 return NULL;
14879 strcpy(temppath, dest);
14880 strcat(temppath, "\\*");
14882 handle = FindFirstFileA(temppath, &data);
14883 if(handle == INVALID_HANDLE_VALUE) {
14884 *err_code = GetLastError();
14885 return NULL;
14887 while(!strcmp(data.cFileName, ".") || !strcmp(data.cFileName, "..")) {
14888 if(!FindNextFileA(handle, &data)) {
14889 *err_code = ERROR_SUCCESS;
14890 *type = status_unknown;
14891 FindClose(handle);
14892 return NULL;
14896 strcpy(target, data.cFileName);
14897 *err_code = ERROR_SUCCESS;
14898 if(data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
14899 *type = directory_file;
14900 else
14901 *type = regular_file;
14902 return handle;
14905 /* ?_Read_dir@sys@tr2@std@@YAPADAAY0BAE@DPAXAAW4file_type@123@@Z */
14906 /* ?_Read_dir@sys@tr2@std@@YAPEADAEAY0BAE@DPEAXAEAW4file_type@123@@Z */
14907 char* __cdecl tr2_sys__Read_dir(char* target, void* handle, enum file_type* type)
14909 WIN32_FIND_DATAA data;
14911 TRACE("(%p %p %p)\n", target, handle, type);
14913 do {
14914 if(!FindNextFileA(handle, &data)) {
14915 *type = status_unknown;
14916 *target = '\0';
14917 return target;
14919 } while(!strcmp(data.cFileName, ".") || !strcmp(data.cFileName, ".."));
14921 strcpy(target, data.cFileName);
14922 if(data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
14923 *type = directory_file;
14924 else
14925 *type = regular_file;
14926 return target;
14929 /* ?_Close_dir@sys@tr2@std@@YAXPAX@Z */
14930 /* ?_Close_dir@sys@tr2@std@@YAXPEAX@Z */
14931 void __cdecl tr2_sys__Close_dir(void* handle)
14933 TRACE("(%p)\n", handle);
14935 FindClose(handle);
14938 /* ?_Link@sys@tr2@std@@YAHPBD0@Z */
14939 /* ?_Link@sys@tr2@std@@YAHPEBD0@Z */
14940 int __cdecl tr2_sys__Link(char const* existing_path, char const* new_path)
14942 TRACE("(%s %s)\n", debugstr_a(existing_path), debugstr_a(new_path));
14943 if(!existing_path || !new_path)
14944 return ERROR_INVALID_PARAMETER;
14946 if(CreateHardLinkA(new_path, existing_path, NULL))
14947 return ERROR_SUCCESS;
14948 return GetLastError();
14951 /* ?_Symlink@sys@tr2@std@@YAHPBD0@Z */
14952 /* ?_Symlink@sys@tr2@std@@YAHPEBD0@Z */
14953 int __cdecl tr2_sys__Symlink(char const* existing_file_name, char const* file_name)
14955 TRACE("(%s %s)\n", debugstr_a(existing_file_name), debugstr_a(file_name));
14956 if(!existing_file_name || !file_name)
14957 return ERROR_INVALID_PARAMETER;
14959 if(CreateSymbolicLinkA(file_name, existing_file_name, 0))
14960 return ERROR_SUCCESS;
14961 return GetLastError();
14964 /* ?_Unlink@sys@tr2@std@@YAHPBD@Z */
14965 /* ?_Unlink@sys@tr2@std@@YAHPEBD@Z */
14966 int __cdecl tr2_sys__Unlink(char const* path)
14968 TRACE("(%s)\n", debugstr_a(path));
14970 if(DeleteFileA(path))
14971 return ERROR_SUCCESS;
14972 return GetLastError();
14975 /* ??0strstream@std@@QAE@PADHH@Z */
14976 /* ??0strstream@std@@QEAA@PEAD_JH@Z */
14977 #if STREAMSIZE_BITS == 64
14978 DEFINE_THISCALL_WRAPPER(strstream_ctor, 24)
14979 #else
14980 DEFINE_THISCALL_WRAPPER(strstream_ctor, 20)
14981 #endif
14982 strstream* __thiscall strstream_ctor(strstream *this, char *buf, streamsize size, int mode, MSVCP_bool virt_init)
14984 basic_ios_char *basic_ios;
14986 TRACE("(%p %p %s %d %d)\n", this, buf, wine_dbgstr_longlong(size), mode, virt_init);
14988 if(virt_init) {
14989 this->base.base1.vbtable = strstream_vbtable1;
14990 this->base.base2.vbtable = strstream_vbtable2;
14991 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
14992 INIT_BASIC_IOS_VTORDISP(basic_ios);
14993 basic_ios_char_ctor(basic_ios);
14994 }else {
14995 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
14998 strstreambuf_ctor_get_put(&this->buf, buf, size,
14999 buf && (mode & OPENMODE_app) ? buf+strlen(buf) : buf);
15000 basic_iostream_char_ctor(&this->base, &this->buf.base, FALSE);
15001 basic_ios->base.vtable = &MSVCP_strstream_vtable;
15002 return this;
15005 /* ??1strstream@std@@UAE@XZ */
15006 /* ??1strstream@std@@UEAA@XZ */
15007 DEFINE_THISCALL_WRAPPER(strstream_dtor, 4)
15008 void __thiscall strstream_dtor(basic_ios_char *base)
15010 strstream *this = strstream_from_basic_ios(base);
15012 TRACE("(%p)\n", this);
15014 basic_iostream_char_dtor(basic_iostream_char_to_basic_ios(&this->base));
15015 strstreambuf_dtor(&this->buf);
15018 static void strstream_vbase_dtor(strstream *this)
15020 basic_ios_char *base = strstream_to_basic_ios(this);
15022 TRACE("(%p)\n", this);
15024 strstream_dtor(base);
15025 basic_ios_char_dtor(base);
15028 DEFINE_THISCALL_WRAPPER(strstream_vector_dtor, 8)
15029 strstream* __thiscall strstream_vector_dtor(basic_ios_char *base, unsigned int flags)
15031 strstream *this = strstream_from_basic_ios(base);
15033 TRACE("(%p %x)\n", this, flags);
15035 if(flags & 2) {
15036 /* we have an array, with the number of elements stored before the first object */
15037 INT_PTR i, *ptr = (INT_PTR *)this-1;
15039 for(i=*ptr-1; i>=0; i--)
15040 strstream_vbase_dtor(this+i);
15041 MSVCRT_operator_delete(ptr);
15042 } else {
15043 strstream_vbase_dtor(this);
15044 if(flags & 1)
15045 MSVCRT_operator_delete(this);
15048 return this;
15051 static void __cdecl setprecision_func(ios_base *base, streamsize prec)
15053 ios_base_precision_set(base, prec);
15056 /* ?setprecision@std@@YA?AU?$_Smanip@H@1@H@Z */
15057 /* ?setprecision@std@@YA?AU?$_Smanip@_J@1@_J@Z */
15058 manip_streamsize* __cdecl setprecision(manip_streamsize *ret, streamsize prec)
15060 TRACE("(%p %s)\n", ret, wine_dbgstr_longlong(prec));
15062 ret->pfunc = setprecision_func;
15063 ret->arg = prec;
15064 return ret;
15067 static void __cdecl setw_func(ios_base *base, streamsize width)
15069 ios_base_width_set(base, width);
15072 /* ?setw@std@@YA?AU?$_Smanip@H@1@H@Z */
15073 /* ?setw@std@@YA?AU?$_Smanip@_J@1@_J@Z */
15074 manip_streamsize* __cdecl setw(manip_streamsize *ret, streamsize width)
15076 TRACE("(%p %s)\n", ret, wine_dbgstr_longlong(width));
15078 ret->pfunc = setw_func;
15079 ret->arg = width;
15080 return ret;
15083 static void __cdecl resetioflags_func(ios_base *base, int mask)
15085 ios_base_setf_mask(base, 0, mask);
15088 /* ?resetiosflags@std@@YA?AU?$_Smanip@H@1@H@Z */
15089 manip_int* __cdecl resetiosflags(manip_int *ret, int mask)
15091 TRACE("(%p %d)\n", ret, mask);
15093 ret->pfunc = resetioflags_func;
15094 ret->arg = mask;
15095 return ret;
15098 static void __cdecl setiosflags_func(ios_base *base, int mask)
15100 ios_base_setf_mask(base, FMTFLAG_mask, mask);
15103 /* ?setiosflags@std@@YA?AU?$_Smanip@H@1@H@Z */
15104 manip_int* __cdecl setiosflags(manip_int *ret, int mask)
15106 TRACE("(%p %d)\n", ret, mask);
15108 ret->pfunc = setiosflags_func;
15109 ret->arg = mask;
15110 return ret;
15113 static void __cdecl setbase_func(ios_base *base, int set_base)
15115 if(set_base == 10)
15116 set_base = FMTFLAG_dec;
15117 else if(set_base == 8)
15118 set_base = FMTFLAG_oct;
15119 else if(set_base == 16)
15120 set_base = FMTFLAG_hex;
15121 else
15122 set_base = 0;
15124 ios_base_setf_mask(base, set_base, FMTFLAG_basefield);
15127 /* ?setbase@std@@YA?AU?$_Smanip@H@1@H@Z */
15128 manip_int* __cdecl setbase(manip_int *ret, int base)
15130 TRACE("(%p %d)\n", ret, base);
15132 ret->pfunc = setbase_func;
15133 ret->arg = base;
15134 return ret;
15137 static basic_filebuf_char filebuf_char_stdin;
15138 /* ?cin@std@@3V?$basic_istream@DU?$char_traits@D@std@@@1@A */
15139 struct {
15140 basic_istream_char obj;
15141 #if _MSVCP_VER >= 110
15142 int vtordisp;
15143 #endif
15144 basic_ios_char vbase;
15145 } cin = { { 0 } };
15146 C_ASSERT(sizeof(cin) == VBTABLE_BASIC_IOS_ENTRY(basic_istream_char, 0)+sizeof(basic_ios_char));
15147 /* ?_Ptr_cin@std@@3PAV?$basic_istream@DU?$char_traits@D@std@@@1@A */
15148 /* ?_Ptr_cin@std@@3PEAV?$basic_istream@DU?$char_traits@D@std@@@1@EA */
15149 basic_istream_char *_Ptr_cin = &cin.obj;
15151 static basic_filebuf_wchar filebuf_short_stdin;
15152 /* ?wcin@std@@3V?$basic_istream@GU?$char_traits@G@std@@@1@A */
15153 struct {
15154 basic_istream_wchar obj;
15155 #if _MSVCP_VER >= 110
15156 int vtordisp;
15157 #endif
15158 basic_ios_wchar vbase;
15159 } ucin = { { 0 } };
15160 C_ASSERT(sizeof(ucin) == VBTABLE_BASIC_IOS_ENTRY(basic_istream_wchar, 0)+sizeof(basic_ios_wchar));
15161 /* ?_Ptr_wcin@std@@3PAV?$basic_istream@GU?$char_traits@G@std@@@1@A */
15162 /* ?_Ptr_wcin@std@@3PEAV?$basic_istream@GU?$char_traits@G@std@@@1@EA */
15163 basic_istream_wchar *_Ptr_ucin = &ucin.obj;
15165 static basic_filebuf_wchar filebuf_wchar_stdin;
15166 /* ?wcin@std@@3V?$basic_istream@_WU?$char_traits@_W@std@@@1@A */
15167 struct {
15168 basic_istream_wchar obj;
15169 #if _MSVCP_VER >= 110
15170 int vtordisp;
15171 #endif
15172 basic_ios_wchar vbase;
15173 } wcin = { { 0 } };
15174 C_ASSERT(sizeof(wcin) == VBTABLE_BASIC_IOS_ENTRY(basic_istream_wchar, 0)+sizeof(basic_ios_wchar));
15175 /* ?_Ptr_wcin@std@@3PAV?$basic_istream@_WU?$char_traits@_W@std@@@1@A */
15176 /* ?_Ptr_wcin@std@@3PEAV?$basic_istream@_WU?$char_traits@_W@std@@@1@EA */
15177 basic_istream_wchar *_Ptr_wcin = &wcin.obj;
15179 static basic_filebuf_char filebuf_char_stdout;
15180 /* ?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A */
15181 struct {
15182 basic_ostream_char obj;
15183 #if _MSVCP_VER >= 110
15184 int vtordisp;
15185 #endif
15186 basic_ios_char vbase;
15187 } cout = { { 0 } };
15188 C_ASSERT(sizeof(cout) == VBTABLE_BASIC_IOS_ENTRY(basic_ostream_char, 0)+sizeof(basic_ios_char));
15189 /* ?_Ptr_cout@std@@3PAV?$basic_ostream@DU?$char_traits@D@std@@@1@A */
15190 /* ?_Ptr_cout@std@@3PEAV?$basic_ostream@DU?$char_traits@D@std@@@1@EA */
15191 basic_ostream_char *_Ptr_cout = &cout.obj;
15193 static basic_filebuf_wchar filebuf_short_stdout;
15194 /* ?wcout@std@@3V?$basic_ostream@GU?$char_traits@G@std@@@1@A */
15195 struct {
15196 basic_ostream_wchar obj;
15197 #if _MSVCP_VER >= 110
15198 int vtordisp;
15199 #endif
15200 basic_ios_wchar vbase;
15201 } ucout = { { 0 } };
15202 C_ASSERT(sizeof(ucout) == VBTABLE_BASIC_IOS_ENTRY(basic_ostream_wchar, 0)+sizeof(basic_ios_wchar));
15203 /* ?_Ptr_wcout@std@@3PAV?$basic_ostream@GU?$char_traits@G@std@@@1@A */
15204 /* ?_Ptr_wcout@std@@3PEAV?$basic_ostream@GU?$char_traits@G@std@@@1@EA */
15205 basic_ostream_wchar *_Ptr_ucout = &ucout.obj;
15207 static basic_filebuf_wchar filebuf_wchar_stdout;
15208 /* ?wcout@std@@3V?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
15209 struct {
15210 basic_ostream_wchar obj;
15211 #if _MSVCP_VER >= 110
15212 int vtordisp;
15213 #endif
15214 basic_ios_wchar vbase;
15215 } wcout = { { 0 } };
15216 C_ASSERT(sizeof(wcout) == VBTABLE_BASIC_IOS_ENTRY(basic_ostream_wchar, 0)+sizeof(basic_ios_wchar));
15217 /* ?_Ptr_wcout@std@@3PAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
15218 /* ?_Ptr_wcout@std@@3PEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@EA */
15219 basic_ostream_wchar *_Ptr_wcout = &wcout.obj;
15221 static basic_filebuf_char filebuf_char_stderr;
15222 /* ?cerr@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A */
15223 struct {
15224 basic_ostream_char obj;
15225 #if _MSVCP_VER >= 110
15226 int vtordisp;
15227 #endif
15228 basic_ios_char vbase;
15229 } cerr = { { 0 } };
15230 C_ASSERT(sizeof(cerr) == VBTABLE_BASIC_IOS_ENTRY(basic_ostream_char, 0)+sizeof(basic_ios_char));
15231 /* ?_Ptr_cerr@std@@3PAV?$basic_ostream@DU?$char_traits@D@std@@@1@A */
15232 /* ?_Ptr_cerr@std@@3PEAV?$basic_ostream@DU?$char_traits@D@std@@@1@EA */
15233 basic_ostream_char *_Ptr_cerr = &cerr.obj;
15235 static basic_filebuf_wchar filebuf_short_stderr;
15236 /* ?wcerr@std@@3V?$basic_ostream@GU?$char_traits@G@std@@@1@A */
15237 struct {
15238 basic_ostream_wchar obj;
15239 #if _MSVCP_VER >= 110
15240 int vtordisp;
15241 #endif
15242 basic_ios_wchar vbase;
15243 } ucerr = { { 0 } };
15244 C_ASSERT(sizeof(ucerr) == VBTABLE_BASIC_IOS_ENTRY(basic_ostream_wchar, 0)+sizeof(basic_ios_wchar));
15245 /* ?_Ptr_wcerr@std@@3PAV?$basic_ostream@GU?$char_traits@G@std@@@1@A */
15246 /* ?_Ptr_wcerr@std@@3PEAV?$basic_ostream@GU?$char_traits@G@std@@@1@EA */
15247 basic_ostream_wchar *_Ptr_ucerr = &ucerr.obj;
15249 static basic_filebuf_wchar filebuf_wchar_stderr;
15250 /* ?wcerr@std@@3V?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
15251 struct {
15252 basic_ostream_wchar obj;
15253 #if _MSVCP_VER >= 110
15254 int vtordisp;
15255 #endif
15256 basic_ios_wchar vbase;
15257 } wcerr = { { 0 } };
15258 C_ASSERT(sizeof(wcerr) == VBTABLE_BASIC_IOS_ENTRY(basic_ostream_wchar, 0)+sizeof(basic_ios_wchar));
15259 /* ?_Ptr_wcerr@std@@3PAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
15260 /* ?_Ptr_wcerr@std@@3PEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@EA */
15261 basic_ostream_wchar *_Ptr_wcerr = &wcerr.obj;
15263 static basic_filebuf_char filebuf_char_log;
15264 /* ?clog@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A */
15265 struct {
15266 basic_ostream_char obj;
15267 #if _MSVCP_VER >= 110
15268 int vtordisp;
15269 #endif
15270 basic_ios_char vbase;
15271 } clog = { { 0 } };
15272 C_ASSERT(sizeof(clog) == VBTABLE_BASIC_IOS_ENTRY(basic_ostream_char, 0)+sizeof(basic_ios_char));
15273 /* ?_Ptr_clog@std@@3PAV?$basic_ostream@DU?$char_traits@D@std@@@1@A */
15274 /* ?_Ptr_clog@std@@3PEAV?$basic_ostream@DU?$char_traits@D@std@@@1@EA */
15275 basic_ostream_char *_Ptr_clog = &clog.obj;
15277 static basic_filebuf_wchar filebuf_short_log;
15278 /* ?wclog@std@@3V?$basic_ostream@GU?$char_traits@G@std@@@1@A */
15279 struct {
15280 basic_ostream_wchar obj;
15281 #if _MSVCP_VER >= 110
15282 int vtordisp;
15283 #endif
15284 basic_ios_wchar vbase;
15285 } uclog = { { 0 } };
15286 C_ASSERT(sizeof(uclog) == VBTABLE_BASIC_IOS_ENTRY(basic_ostream_wchar, 0)+sizeof(basic_ios_wchar));
15287 /* ?_Ptr_wclog@std@@3PAV?$basic_ostream@GU?$char_traits@G@std@@@1@A */
15288 /* ?_Ptr_wclog@std@@3PEAV?$basic_ostream@GU?$char_traits@G@std@@@1@EA */
15289 basic_ostream_wchar *_Ptr_uclog = &uclog.obj;
15291 static basic_filebuf_wchar filebuf_wchar_log;
15292 /* ?wclog@std@@3V?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
15293 struct {
15294 basic_ostream_wchar obj;
15295 #if _MSVCP_VER >= 110
15296 int vtordisp;
15297 #endif
15298 basic_ios_wchar vbase;
15299 } wclog = { { 0 } };
15300 C_ASSERT(sizeof(wclog) == VBTABLE_BASIC_IOS_ENTRY(basic_ostream_wchar, 0)+sizeof(basic_ios_wchar));
15301 /* ?_Ptr_wclog@std@@3PAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
15302 /* ?_Ptr_wclog@std@@3PEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@EA */
15303 basic_ostream_wchar *_Ptr_wclog = &wclog.obj;
15305 /* ?_Init_cnt@Init@ios_base@std@@0HA */
15306 int ios_base_Init__Init_cnt = -1;
15308 /* ?_Init_cnt_func@Init@ios_base@std@@CAAAHXZ */
15309 /* ?_Init_cnt_func@Init@ios_base@std@@CAAEAHXZ */
15310 int* __cdecl ios_base_Init__Init_cnt_func(void)
15312 return &ios_base_Init__Init_cnt;
15315 /* ?_Init_ctor@Init@ios_base@std@@CAXPAV123@@Z */
15316 /* ?_Init_ctor@Init@ios_base@std@@CAXPEAV123@@Z */
15317 void __cdecl ios_base_Init__Init_ctor(void *this)
15319 TRACE("(%p)\n", this);
15321 if(ios_base_Init__Init_cnt < 0)
15322 ios_base_Init__Init_cnt = 1;
15323 else
15324 ios_base_Init__Init_cnt++;
15327 /* ??0Init@ios_base@std@@QAE@XZ */
15328 /* ??0Init@ios_base@std@@QEAA@XZ */
15329 DEFINE_THISCALL_WRAPPER(ios_base_Init_ctor, 4)
15330 void* __thiscall ios_base_Init_ctor(void *this)
15332 ios_base_Init__Init_ctor(this);
15333 return this;
15336 /* ?_Init_dtor@Init@ios_base@std@@CAXPAV123@@Z */
15337 /* ?_Init_dtor@Init@ios_base@std@@CAXPEAV123@@Z */
15338 void __cdecl ios_base_Init__Init_dtor(void *this)
15340 TRACE("(%p)\n", this);
15342 ios_base_Init__Init_cnt--;
15343 if(!ios_base_Init__Init_cnt) {
15344 basic_ostream_char_flush(&cout.obj);
15345 basic_ostream_char_flush(&cerr.obj);
15346 basic_ostream_char_flush(&clog.obj);
15350 /* ??1Init@ios_base@std@@QAE@XZ */
15351 /* ??1Init@ios_base@std@@QEAA@XZ */
15352 DEFINE_THISCALL_WRAPPER(ios_base_Init_dtor, 4)
15353 void __thiscall ios_base_Init_dtor(void *this)
15355 ios_base_Init__Init_dtor(this);
15358 /* ??4Init@ios_base@std@@QAEAAV012@ABV012@@Z */
15359 /* ??4Init@ios_base@std@@QEAAAEAV012@AEBV012@@Z */
15360 DEFINE_THISCALL_WRAPPER(ios_base_Init_op_assign, 8)
15361 void* __thiscall ios_base_Init_op_assign(void *this, void *rhs)
15363 TRACE("(%p %p)\n", this, rhs);
15364 return this;
15367 /* ?_Init_cnt@_Winit@std@@0HA */
15368 int _Winit__Init_cnt = -1;
15370 /* ??0_Winit@std@@QAE@XZ */
15371 /* ??0_Winit@std@@QEAA@XZ */
15372 DEFINE_THISCALL_WRAPPER(_Winit_ctor, 4)
15373 void* __thiscall _Winit_ctor(void *this)
15375 TRACE("(%p)\n", this);
15377 if(_Winit__Init_cnt < 0)
15378 _Winit__Init_cnt = 1;
15379 else
15380 _Winit__Init_cnt++;
15382 return this;
15385 /* ?_File_size@sys@tr2@std@@YA_KPB_W@Z */
15386 /* ?_File_size@sys@tr2@std@@YA_KPEB_W@Z */
15387 ULONGLONG __cdecl tr2_sys__File_size_wchar(WCHAR const* path)
15389 WIN32_FILE_ATTRIBUTE_DATA fad;
15391 TRACE("(%s)\n", debugstr_w(path));
15392 if(!GetFileAttributesExW(path, GetFileExInfoStandard, &fad))
15393 return 0;
15394 if(fad.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
15395 return 0;
15397 return ((ULONGLONG)(fad.nFileSizeHigh) << 32) + fad.nFileSizeLow;
15400 /* ?_Equivalent@sys@tr2@std@@YAHPB_W0@Z */
15401 /* ?_Equivalent@sys@tr2@std@@YAHPEB_W0@Z */
15402 int __cdecl tr2_sys__Equivalent_wchar(WCHAR const* path1, WCHAR const* path2)
15404 HANDLE h1, h2;
15405 int ret;
15406 BY_HANDLE_FILE_INFORMATION info1, info2;
15407 TRACE("(%s %s)\n", debugstr_w(path1), debugstr_w(path2));
15409 h1 = CreateFileW(path1, 0, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
15410 NULL, OPEN_EXISTING, 0, 0);
15411 h2 = CreateFileW(path2, 0, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
15412 NULL, OPEN_EXISTING, 0, 0);
15413 if(h1 == INVALID_HANDLE_VALUE) {
15414 if(h2 == INVALID_HANDLE_VALUE) {
15415 return -1;
15416 }else {
15417 CloseHandle(h2);
15418 return 0;
15420 }else if(h2 == INVALID_HANDLE_VALUE) {
15421 CloseHandle(h1);
15422 return 0;
15425 ret = GetFileInformationByHandle(h1, &info1) && GetFileInformationByHandle(h2, &info2);
15426 CloseHandle(h1);
15427 CloseHandle(h2);
15428 if(!ret)
15429 return -1;
15430 return (info1.dwVolumeSerialNumber == info2.dwVolumeSerialNumber
15431 && info1.nFileIndexHigh == info2.nFileIndexHigh
15432 && info1.nFileIndexLow == info2.nFileIndexLow
15436 /* ?_Current_get@sys@tr2@std@@YAPA_WAAY0BAE@_W@Z */
15437 /* ?_Current_get@sys@tr2@std@@YAPEA_WAEAY0BAE@_W@Z */
15438 WCHAR* __cdecl tr2_sys__Current_get_wchar(WCHAR *current_path)
15440 TRACE("(%s)\n", debugstr_w(current_path));
15442 if(!GetCurrentDirectoryW(MAX_PATH, current_path))
15443 return NULL;
15444 return current_path;
15447 /* ?_Current_set@sys@tr2@std@@YA_NPB_W@Z */
15448 /* ?_Current_set@sys@tr2@std@@YA_NPEB_W@Z */
15449 MSVCP_bool __cdecl tr2_sys__Current_set_wchar(WCHAR const* path)
15451 TRACE("(%s)\n", debugstr_w(path));
15452 return SetCurrentDirectoryW(path) != 0;
15455 /* ?_Make_dir@sys@tr2@std@@YAHPB_W@Z */
15456 /* ?_Make_dir@sys@tr2@std@@YAHPEB_W@Z */
15457 int __cdecl tr2_sys__Make_dir_wchar(WCHAR const* path)
15459 TRACE("(%s)\n", debugstr_w(path));
15461 if(!CreateDirectoryW(path, NULL)) {
15462 if(GetLastError() == ERROR_ALREADY_EXISTS)
15463 return 0;
15464 else
15465 return -1;
15468 return 1;
15471 /* ?_Remove_dir@sys@tr2@std@@YA_NPB_W@Z */
15472 /* ?_Remove_dir@sys@tr2@std@@YA_NPEB_W@Z */
15473 MSVCP_bool __cdecl tr2_sys__Remove_dir_wchar(WCHAR const* path)
15475 TRACE("(%s)\n", debugstr_w(path));
15476 return RemoveDirectoryW(path) != 0;
15479 /* ?_Copy_file@sys@tr2@std@@YAHPB_W0_N@Z */
15480 /* ?_Copy_file@sys@tr2@std@@YAHPEB_W0_N@Z */
15481 int __cdecl tr2_sys__Copy_file_wchar(WCHAR const* source, WCHAR const* dest, MSVCP_bool fail_if_exists)
15483 TRACE("(%s %s %x)\n", debugstr_w(source), debugstr_w(dest), fail_if_exists);
15485 if(CopyFileW(source, dest, fail_if_exists))
15486 return ERROR_SUCCESS;
15487 return GetLastError();
15490 /* ?_Rename@sys@tr2@std@@YAHPB_W0@Z */
15491 /* ?_Rename@sys@tr2@std@@YAHPEB_W0@Z */
15492 int __cdecl tr2_sys__Rename_wchar(WCHAR const* old_path, WCHAR const* new_path)
15494 TRACE("(%s %s)\n", debugstr_w(old_path), debugstr_w(new_path));
15496 if(!old_path || !new_path)
15497 return ERROR_INVALID_PARAMETER;
15499 if(MoveFileExW(old_path, new_path, MOVEFILE_COPY_ALLOWED))
15500 return ERROR_SUCCESS;
15501 return GetLastError();
15504 /* ?_Statvfs@sys@tr2@std@@YA?AUspace_info@123@PB_W@Z */
15505 /* ?_Statvfs@sys@tr2@std@@YA?AUspace_info@123@PEB_W@Z */
15506 struct space_info* __cdecl tr2_sys__Statvfs_wchar(struct space_info *ret, const WCHAR* path)
15508 ULARGE_INTEGER available, total, free;
15510 TRACE("(%s)\n", debugstr_w(path));
15512 if(!path || !GetDiskFreeSpaceExW(path, &available, &total, &free)) {
15513 ret->capacity = ret->free = ret->available = 0;
15514 }else {
15515 ret->capacity = total.QuadPart;
15516 ret->free = free.QuadPart;
15517 ret->available = available.QuadPart;
15519 return ret;
15522 /* ?_Stat@sys@tr2@std@@YA?AW4file_type@123@PB_WAAH@Z */
15523 /* ?_Stat@sys@tr2@std@@YA?AW4file_type@123@PEB_WAEAH@Z */
15524 enum file_type __cdecl tr2_sys__Stat_wchar(WCHAR const* path, int* err_code)
15526 DWORD attr;
15527 TRACE("(%s %p)\n", debugstr_w(path), err_code);
15528 if(!path) {
15529 *err_code = ERROR_INVALID_PARAMETER;
15530 return status_unknown;
15533 attr=GetFileAttributesW(path);
15534 if(attr == INVALID_FILE_ATTRIBUTES) {
15535 enum file_type ret;
15536 switch(GetLastError()) {
15537 case ERROR_FILE_NOT_FOUND:
15538 case ERROR_BAD_NETPATH:
15539 case ERROR_INVALID_NAME:
15540 case ERROR_BAD_PATHNAME:
15541 case ERROR_PATH_NOT_FOUND:
15542 ret = file_not_found;
15543 *err_code = ERROR_SUCCESS;
15544 break;
15545 default:
15546 ret = status_unknown;
15547 *err_code = GetLastError();
15549 return ret;
15552 *err_code = ERROR_SUCCESS;
15553 return (attr & FILE_ATTRIBUTE_DIRECTORY)?directory_file:regular_file;
15556 /* ?_Lstat@sys@tr2@std@@YA?AW4file_type@123@PB_WAAH@Z */
15557 /* ?_Lstat@sys@tr2@std@@YA?AW4file_type@123@PEB_WAEAH@Z */
15558 enum file_type __cdecl tr2_sys__Lstat_wchar(WCHAR const* path, int* err_code)
15560 return tr2_sys__Stat_wchar(path, err_code);
15563 /* ??1_Winit@std@@QAE@XZ */
15564 /* ??1_Winit@std@@QAE@XZ */
15565 DEFINE_THISCALL_WRAPPER(_Winit_dtor, 4)
15566 void __thiscall _Winit_dtor(void *this)
15568 TRACE("(%p)\n", this);
15570 _Winit__Init_cnt--;
15571 if(!_Winit__Init_cnt) {
15572 basic_ostream_wchar_flush(&wcout.obj);
15573 basic_ostream_wchar_flush(&wcerr.obj);
15574 basic_ostream_wchar_flush(&wclog.obj);
15578 /* ??4_Winit@std@@QAEAAV01@ABV01@@Z */
15579 /* ??4_Winit@std@@QEAAAEAV01@AEBV01@@Z */
15580 DEFINE_THISCALL_WRAPPER(_Winit_op_assign, 8)
15581 void* __thiscall _Winit_op_assign(void *this, void *rhs)
15583 TRACE("(%p %p)\n", this, rhs);
15584 return this;
15587 void init_io(void *base)
15589 #ifdef __x86_64__
15590 init_iosb_rtti(base);
15591 init_ios_base_rtti(base);
15592 init_basic_ios_char_rtti(base);
15593 init_basic_ios_wchar_rtti(base);
15594 init_basic_ios_short_rtti(base);
15595 init_basic_streambuf_char_rtti(base);
15596 init_basic_streambuf_wchar_rtti(base);
15597 init_basic_streambuf_short_rtti(base);
15598 init_basic_filebuf_char_rtti(base);
15599 init_basic_filebuf_wchar_rtti(base);
15600 init_basic_filebuf_short_rtti(base);
15601 init_basic_stringbuf_char_rtti(base);
15602 init_basic_stringbuf_wchar_rtti(base);
15603 init_basic_stringbuf_short_rtti(base);
15604 init_basic_ostream_char_rtti(base);
15605 init_basic_ostream_wchar_rtti(base);
15606 init_basic_ostream_short_rtti(base);
15607 init_basic_istream_char_rtti(base);
15608 init_basic_istream_wchar_rtti(base);
15609 init_basic_istream_short_rtti(base);
15610 init_basic_iostream_char_rtti(base);
15611 init_basic_iostream_wchar_rtti(base);
15612 init_basic_iostream_short_rtti(base);
15613 init_basic_ofstream_char_rtti(base);
15614 init_basic_ofstream_wchar_rtti(base);
15615 init_basic_ofstream_short_rtti(base);
15616 init_basic_ifstream_char_rtti(base);
15617 init_basic_ifstream_wchar_rtti(base);
15618 init_basic_ifstream_short_rtti(base);
15619 init_basic_fstream_char_rtti(base);
15620 init_basic_fstream_wchar_rtti(base);
15621 init_basic_fstream_short_rtti(base);
15622 init_basic_ostringstream_char_rtti(base);
15623 init_basic_ostringstream_wchar_rtti(base);
15624 init_basic_ostringstream_short_rtti(base);
15625 init_basic_istringstream_char_rtti(base);
15626 init_basic_istringstream_wchar_rtti(base);
15627 init_basic_istringstream_short_rtti(base);
15628 init_basic_stringstream_char_rtti(base);
15629 init_basic_stringstream_wchar_rtti(base);
15630 init_basic_stringstream_short_rtti(base);
15631 init_strstreambuf_rtti(base);
15632 init_strstream_rtti(base);
15633 init_ostrstream_rtti(base);
15634 #endif
15636 basic_filebuf_char_ctor_file(&filebuf_char_stdin, stdin);
15637 basic_istream_char_ctor(&cin.obj, &filebuf_char_stdin.base, FALSE/*FIXME*/, TRUE);
15639 basic_filebuf_short_ctor_file(&filebuf_short_stdin, stdin);
15640 basic_istream_short_ctor(&ucin.obj, &filebuf_short_stdin.base, FALSE/*FIXME*/, TRUE);
15642 basic_filebuf_wchar_ctor_file(&filebuf_wchar_stdin, stdin);
15643 basic_istream_wchar_ctor(&wcin.obj, &filebuf_wchar_stdin.base, FALSE/*FIXME*/, TRUE);
15645 basic_filebuf_char_ctor_file(&filebuf_char_stdout, stdout);
15646 basic_ostream_char_ctor(&cout.obj, &filebuf_char_stdout.base, FALSE/*FIXME*/, TRUE);
15648 basic_filebuf_short_ctor_file(&filebuf_short_stdout, stdout);
15649 basic_ostream_short_ctor(&ucout.obj, &filebuf_short_stdout.base, FALSE/*FIXME*/, TRUE);
15651 basic_filebuf_wchar_ctor_file(&filebuf_wchar_stdout, stdout);
15652 basic_ostream_wchar_ctor(&wcout.obj, &filebuf_wchar_stdout.base, FALSE/*FIXME*/, TRUE);
15654 basic_filebuf_char_ctor_file(&filebuf_char_stderr, stderr);
15655 basic_ostream_char_ctor(&cerr.obj, &filebuf_char_stderr.base, FALSE/*FIXME*/, TRUE);
15657 basic_filebuf_short_ctor_file(&filebuf_short_stderr, stderr);
15658 basic_ostream_short_ctor(&ucerr.obj, &filebuf_short_stderr.base, FALSE/*FIXME*/, TRUE);
15660 basic_filebuf_wchar_ctor_file(&filebuf_wchar_stderr, stderr);
15661 basic_ostream_wchar_ctor(&wcerr.obj, &filebuf_wchar_stderr.base, FALSE/*FIXME*/, TRUE);
15663 basic_filebuf_char_ctor_file(&filebuf_char_log, stderr);
15664 basic_ostream_char_ctor(&clog.obj, &filebuf_char_log.base, FALSE/*FIXME*/, TRUE);
15666 basic_filebuf_short_ctor_file(&filebuf_short_log, stderr);
15667 basic_ostream_short_ctor(&uclog.obj, &filebuf_short_log.base, FALSE/*FIXME*/, TRUE);
15669 basic_filebuf_wchar_ctor_file(&filebuf_wchar_log, stderr);
15670 basic_ostream_wchar_ctor(&wclog.obj, &filebuf_wchar_log.base, FALSE/*FIXME*/, TRUE);
15673 void free_io(void)
15675 basic_istream_char_vbase_dtor(&cin.obj);
15676 basic_filebuf_char_dtor(&filebuf_char_stdin);
15678 basic_istream_wchar_vbase_dtor(&ucin.obj);
15679 basic_filebuf_wchar_dtor(&filebuf_short_stdin);
15681 basic_istream_wchar_vbase_dtor(&wcin.obj);
15682 basic_filebuf_wchar_dtor(&filebuf_wchar_stdin);
15684 basic_ostream_char_vbase_dtor(&cout.obj);
15685 basic_filebuf_char_dtor(&filebuf_char_stdout);
15687 basic_ostream_wchar_vbase_dtor(&ucout.obj);
15688 basic_filebuf_wchar_dtor(&filebuf_short_stdout);
15690 basic_ostream_wchar_vbase_dtor(&wcout.obj);
15691 basic_filebuf_wchar_dtor(&filebuf_wchar_stdout);
15693 basic_ostream_char_vbase_dtor(&cerr.obj);
15694 basic_filebuf_char_dtor(&filebuf_char_stderr);
15696 basic_ostream_wchar_vbase_dtor(&ucerr.obj);
15697 basic_filebuf_wchar_dtor(&filebuf_short_stderr);
15699 basic_ostream_wchar_vbase_dtor(&wcerr.obj);
15700 basic_filebuf_wchar_dtor(&filebuf_wchar_stderr);
15702 basic_ostream_char_vbase_dtor(&clog.obj);
15703 basic_filebuf_char_dtor(&filebuf_char_log);
15705 basic_ostream_wchar_vbase_dtor(&uclog.obj);
15706 basic_filebuf_wchar_dtor(&filebuf_short_log);
15708 basic_ostream_wchar_vbase_dtor(&wclog.obj);
15709 basic_filebuf_wchar_dtor(&filebuf_wchar_log);