user32/tests: Don't test function directly when reporting GetLastError().
[wine/multimedia.git] / dlls / msvcp90 / ios.c
blob39c59b68882695757213a1f424c3c4214fd7fb99
1 /*
2 * Copyright 2011 Piotr Caban for CodeWeavers
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 #include "config.h"
21 #include <stdarg.h>
22 #include <stdio.h>
23 #include <limits.h>
24 #include <share.h>
26 #include "msvcp90.h"
27 #include "windef.h"
28 #include "winbase.h"
29 #include "wine/debug.h"
30 WINE_DEFAULT_DEBUG_CHANNEL(msvcp);
32 /* ?_Index@ios_base@std@@0HA */
33 int ios_base_Index = 0;
34 /* ?_Sync@ios_base@std@@0_NA */
35 MSVCP_bool ios_base_Sync = FALSE;
37 typedef struct {
38 streamoff off;
39 __int64 DECLSPEC_ALIGN(8) pos;
40 int state;
41 } fpos_int;
43 static inline const char* debugstr_fpos_int(fpos_int *fpos)
45 return wine_dbg_sprintf("fpos(%s %s %d)", wine_dbgstr_longlong(fpos->off), wine_dbgstr_longlong(fpos->pos), fpos->state);
48 typedef struct {
49 void (__cdecl *pfunc)(ios_base*, streamsize);
50 streamsize arg;
51 } manip_streamsize;
53 typedef struct {
54 void (__cdecl *pfunc)(ios_base*, int);
55 int arg;
56 } manip_int;
58 typedef enum {
59 INITFL_new = 0,
60 INITFL_open = 1,
61 INITFL_close = 2
62 } basic_filebuf__Initfl;
64 typedef struct {
65 basic_streambuf_char base;
66 codecvt_char *cvt;
67 #if _MSVCP_VER < 80
68 int state0;
69 char putback;
70 basic_string_char *conv;
71 #else
72 char putback;
73 #endif
74 MSVCP_bool wrotesome;
75 int state;
76 MSVCP_bool close;
77 #if _MSVCP_VER == 70
78 locale loc;
79 #endif
80 FILE *file;
81 } basic_filebuf_char;
83 typedef struct {
84 basic_streambuf_wchar base;
85 codecvt_wchar *cvt;
86 #if _MSVCP_VER < 80
87 int state0;
88 wchar_t putback;
89 basic_string_char *conv;
90 #else
91 wchar_t putback;
92 #endif
93 MSVCP_bool wrotesome;
94 int state;
95 MSVCP_bool close;
96 #if _MSVCP_VER == 70
97 locale loc;
98 #endif
99 FILE *file;
100 } basic_filebuf_wchar;
102 typedef enum {
103 STRINGBUF_allocated = 1,
104 STRINGBUF_no_write = 2,
105 STRINGBUF_no_read = 4,
106 STRINGBUF_append = 8,
107 STRINGBUF_at_end = 16
108 } basic_stringbuf_state;
110 typedef struct {
111 basic_streambuf_char base;
112 char *seekhigh;
113 int state;
114 char allocator; /* empty struct */
115 } basic_stringbuf_char;
117 typedef struct {
118 basic_streambuf_wchar base;
119 wchar_t *seekhigh;
120 int state;
121 char allocator; /* empty struct */
122 } basic_stringbuf_wchar;
124 typedef struct {
125 ios_base base;
126 basic_streambuf_char *strbuf;
127 struct _basic_ostream_char *stream;
128 char fillch;
129 } basic_ios_char;
131 typedef struct {
132 ios_base base;
133 basic_streambuf_wchar *strbuf;
134 struct _basic_ostream_wchar *stream;
135 wchar_t fillch;
136 } basic_ios_wchar;
138 typedef struct _basic_ostream_char {
139 const int *vbtable;
140 /* virtual inheritance
141 * basic_ios_char basic_ios;
143 } basic_ostream_char;
145 typedef struct _basic_ostream_wchar {
146 const int *vbtable;
147 /* virtual inheritance
148 * basic_ios_wchar basic_ios;
150 } basic_ostream_wchar;
152 typedef struct {
153 const int *vbtable;
154 streamsize count;
155 /* virtual inheritance
156 * basic_ios_char basic_ios;
158 } basic_istream_char;
160 typedef struct {
161 const int *vbtable;
162 streamsize count;
163 /* virtual inheritance
164 * basic_ios_wchar basic_ios;
166 } basic_istream_wchar;
168 typedef struct {
169 basic_istream_char base1;
170 basic_ostream_char base2;
171 /* virtual inheritance
172 * basic_ios_char basic_ios;
174 } basic_iostream_char;
176 typedef struct {
177 basic_istream_wchar base1;
178 basic_ostream_wchar base2;
179 /* virtual inheritance
180 * basic_ios_wchar basic_ios;
182 } basic_iostream_wchar;
184 typedef struct {
185 basic_ostream_char base;
186 basic_filebuf_char filebuf;
187 /* virtual inheritance
188 * basic_ios_char basic_ios;
190 } basic_ofstream_char;
192 typedef struct {
193 basic_ostream_wchar base;
194 basic_filebuf_wchar filebuf;
195 /* virtual inheritance
196 * basic_ios_wchar basic_ios;
198 } basic_ofstream_wchar;
200 typedef struct {
201 basic_istream_char base;
202 basic_filebuf_char filebuf;
203 /* virtual inheritance
204 * basic_ios_char basic_ios;
206 } basic_ifstream_char;
208 typedef struct {
209 basic_istream_wchar base;
210 basic_filebuf_wchar filebuf;
211 /* virtual inheritance
212 * basic_ios_wchar basic_ios;
214 } basic_ifstream_wchar;
216 typedef struct {
217 basic_iostream_char base;
218 basic_filebuf_char filebuf;
219 /* virtual inheritance
220 * basic_ios_char basic_ios;
222 } basic_fstream_char;
224 typedef struct {
225 basic_iostream_wchar base;
226 basic_filebuf_wchar filebuf;
227 /* virtual inheritance
228 * basic_ios_char basic_ios;
230 } basic_fstream_wchar;
232 typedef struct {
233 basic_ostream_char base;
234 basic_stringbuf_char strbuf;
235 /* virtual inheritance
236 * basic_ios_char basic_ios;
238 } basic_ostringstream_char;
240 typedef struct {
241 basic_ostream_wchar base;
242 basic_stringbuf_wchar strbuf;
243 /* virtual inheritance
244 * basic_ios_wchar basic_ios;
246 } basic_ostringstream_wchar;
248 typedef struct {
249 basic_istream_char base;
250 basic_stringbuf_char strbuf;
251 /* virtual inheritance
252 * basic_ios_char basic_ios;
254 } basic_istringstream_char;
256 typedef struct {
257 basic_istream_wchar base;
258 basic_stringbuf_wchar strbuf;
259 /* virtual inheritance
260 * basic_ios_wchar basic_ios;
262 } basic_istringstream_wchar;
264 typedef struct {
265 basic_iostream_char base;
266 basic_stringbuf_char strbuf;
267 /* virtual inheritance
268 * basic_ios_char basic_ios;
270 } basic_stringstream_char;
272 typedef struct {
273 basic_iostream_wchar base;
274 basic_stringbuf_wchar strbuf;
275 /* virtual inheritance
276 * basic_ios_wchar basic_ios;
278 } basic_stringstream_wchar;
280 typedef enum {
281 STRSTATE_Allocated = 1,
282 STRSTATE_Constant = 2,
283 STRSTATE_Dynamic = 4,
284 STRSTATE_Frozen = 8
285 } strstreambuf__Strstate;
287 typedef struct {
288 basic_streambuf_char base;
289 streamsize minsize;
290 char *endsave;
291 char *seekhigh;
292 int strmode;
293 void* (__cdecl *palloc)(MSVCP_size_t);
294 void (__cdecl *pfree)(void*);
295 } strstreambuf;
297 typedef struct {
298 basic_ostream_char base;
299 strstreambuf buf;
300 /* virtual inheritance
301 * basic_ios_char basic_ios;
303 } ostrstream;
305 typedef struct {
306 basic_istream_char base;
307 strstreambuf buf;
308 /* virtual inheritance
309 * basic_ios_char basic_ios;
311 } istrstream;
313 typedef struct {
314 basic_iostream_char base;
315 strstreambuf buf;
316 /* virtual inheritance
317 * basic_ios_char basic_ios;
319 } strstream;
321 #if _MSVCP_VER >= 100
322 #define VBTABLE_ALIGN 8
323 #else
324 #define VBTABLE_ALIGN 4
325 #endif
327 extern const vtable_ptr MSVCP_iosb_vtable;
329 /* ??_7ios_base@std@@6B@ */
330 extern const vtable_ptr MSVCP_ios_base_vtable;
332 /* ??_7?$basic_ios@DU?$char_traits@D@std@@@std@@6B@ */
333 extern const vtable_ptr MSVCP_basic_ios_char_vtable;
335 /* ??_7?$basic_ios@_WU?$char_traits@_W@std@@@std@@6B@ */
336 extern const vtable_ptr MSVCP_basic_ios_wchar_vtable;
338 /* ??_7?$basic_ios@GU?$char_traits@G@std@@@std@@6B@ */
339 extern const vtable_ptr MSVCP_basic_ios_short_vtable;
341 /* ??_7?$basic_streambuf@DU?$char_traits@D@std@@@std@@6B@ */
342 extern const vtable_ptr MSVCP_basic_streambuf_char_vtable;
344 /* ??_7?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@6B@ */
345 extern const vtable_ptr MSVCP_basic_streambuf_wchar_vtable;
347 /* ??_7?$basic_streambuf@GU?$char_traits@G@std@@@std@@6B@ */
348 extern const vtable_ptr MSVCP_basic_streambuf_short_vtable;
350 /* ??_7?$basic_filebuf@DU?$char_traits@D@std@@@std@@6B@ */
351 extern const vtable_ptr MSVCP_basic_filebuf_char_vtable;
353 /* ??_7?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@6B@ */
354 extern const vtable_ptr MSVCP_basic_filebuf_wchar_vtable;
356 /* ??_7?$basic_filebuf@GU?$char_traits@G@std@@@std@@6B@ */
357 extern const vtable_ptr MSVCP_basic_filebuf_short_vtable;
359 /* ??_7?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */
360 extern const vtable_ptr MSVCP_basic_stringbuf_char_vtable;
362 /* ??_7?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@6B@ */
363 extern const vtable_ptr MSVCP_basic_stringbuf_wchar_vtable;
365 /* ??_7?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@6B@ */
366 extern const vtable_ptr MSVCP_basic_stringbuf_short_vtable;
368 /* ??_8?$basic_ostream@DU?$char_traits@D@std@@@std@@7B@ */
369 const int basic_ostream_char_vbtable[] = {0, ALIGNED_SIZE(sizeof(basic_ostream_char), VBTABLE_ALIGN)};
370 /* ??_7?$basic_ostream@DU?$char_traits@D@std@@@std@@6B@ */
371 extern const vtable_ptr MSVCP_basic_ostream_char_vtable;
373 /* ??_8?$basic_ostream@_WU?$char_traits@_W@std@@@std@@7B@ */
374 const int basic_ostream_wchar_vbtable[] = {0, ALIGNED_SIZE(sizeof(basic_ostream_wchar), VBTABLE_ALIGN)};
375 /* ??_7?$basic_ostream@_WU?$char_traits@_W@std@@@std@@6B@ */
376 extern const vtable_ptr MSVCP_basic_ostream_wchar_vtable;
378 /* ??_8?$basic_ostream@GU?$char_traits@G@std@@@std@@7B@ */
379 const int basic_ostream_short_vbtable[] = {0, ALIGNED_SIZE(sizeof(basic_ostream_wchar), VBTABLE_ALIGN)};
380 /* ??_7?$basic_ostream@GU?$char_traits@G@std@@@std@@6B@ */
381 extern const vtable_ptr MSVCP_basic_ostream_short_vtable;
383 /* ??_8?$basic_istream@DU?$char_traits@D@std@@@std@@7B@ */
384 const int basic_istream_char_vbtable[] = {0, ALIGNED_SIZE(sizeof(basic_istream_char), VBTABLE_ALIGN)};
385 /* ??_7?$basic_istream@DU?$char_traits@D@std@@@std@@6B@ */
386 extern const vtable_ptr MSVCP_basic_istream_char_vtable;
388 /* ??_8?$basic_istream@_WU?$char_traits@_W@std@@@std@@7B@ */
389 const int basic_istream_wchar_vbtable[] = {0, ALIGNED_SIZE(sizeof(basic_istream_wchar), VBTABLE_ALIGN)};
390 /* ??_7?$basic_istream@_WU?$char_traits@_W@std@@@std@@6B@ */
391 extern const vtable_ptr MSVCP_basic_istream_wchar_vtable;
393 /* ??_8?$basic_istream@GU?$char_traits@G@std@@@std@@7B@ */
394 const int basic_istream_short_vbtable[] = {0, ALIGNED_SIZE(sizeof(basic_istream_wchar), VBTABLE_ALIGN)};
395 /* ??_7?$basic_istream@GU?$char_traits@G@std@@@std@@6B@ */
396 extern const vtable_ptr MSVCP_basic_istream_short_vtable;
398 /* ??_8?$basic_iostream@DU?$char_traits@D@std@@@std@@7B?$basic_istream@DU?$char_traits@D@std@@@1@@ */
399 const int basic_iostream_char_vbtable1[] = {0, ALIGNED_SIZE(sizeof(basic_iostream_char), VBTABLE_ALIGN)};
400 /* ??_8?$basic_iostream@DU?$char_traits@D@std@@@std@@7B?$basic_ostream@DU?$char_traits@D@std@@@1@@ */
401 const int basic_iostream_char_vbtable2[] = {0, ALIGNED_SIZE(sizeof(basic_iostream_char), VBTABLE_ALIGN)-FIELD_OFFSET(basic_iostream_char, base2)};
402 /* ??_7?$basic_iostream@DU?$char_traits@D@std@@@std@@6B@ */
403 extern const vtable_ptr MSVCP_basic_iostream_char_vtable;
405 /* ??_8?$basic_iostream@_WU?$char_traits@_W@std@@@std@@7B?$basic_istream@_WU?$char_traits@_W@std@@@1@@ */
406 /* ??_8?$basic_iostream@GU?$char_traits@G@std@@@std@@7B?$basic_istream@GU?$char_traits@G@std@@@1@@ */
407 const int basic_iostream_wchar_vbtable1[] = {0, ALIGNED_SIZE(sizeof(basic_iostream_wchar), VBTABLE_ALIGN)};
408 /* ??_8?$basic_iostream@_WU?$char_traits@_W@std@@@std@@7B?$basic_ostream@_WU?$char_traits@_W@std@@@1@@ */
409 /* ??_8?$basic_iostream@GU?$char_traits@G@std@@@std@@7B?$basic_ostream@GU?$char_traits@G@std@@@1@@ */
410 const int basic_iostream_wchar_vbtable2[] = {0, ALIGNED_SIZE(sizeof(basic_iostream_wchar), VBTABLE_ALIGN)-FIELD_OFFSET(basic_iostream_wchar, base2)};
411 /* ??_7?$basic_iostream@_WU?$char_traits@_W@std@@@std@@6B@ */
412 extern const vtable_ptr MSVCP_basic_iostream_wchar_vtable;
413 /* ??_7?$basic_iostream@GU?$char_traits@G@std@@@std@@6B@ */
414 extern const vtable_ptr MSVCP_basic_iostream_short_vtable;
416 /* ??_8?$basic_ofstream@DU?$char_traits@D@std@@@std@@7B@ */
417 const int basic_ofstream_char_vbtable[] = {0, sizeof(basic_ofstream_char)};
418 /* ??_7?$basic_ofstream@DU?$char_traits@D@std@@@std@@6B@ */
419 extern const vtable_ptr MSVCP_basic_ofstream_char_vtable;
421 /* ??_8?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@7B@ */
422 const int basic_ofstream_wchar_vbtable[] = {0, sizeof(basic_ofstream_wchar)};
423 /* ??_7?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@6B@ */
424 extern const vtable_ptr MSVCP_basic_ofstream_wchar_vtable;
426 /* ??_8?$basic_ofstream@GU?$char_traits@G@std@@@std@@7B@ */
427 const int basic_ofstream_short_vbtable[] = {0, sizeof(basic_ofstream_wchar)};
428 /* ??_7?$basic_ofstream@GU?$char_traits@G@std@@@std@@6B@ */
429 extern const vtable_ptr MSVCP_basic_ofstream_short_vtable;
431 /* ??_8?$basic_ifstream@DU?$char_traits@D@std@@@std@@7B@ */
432 const int basic_ifstream_char_vbtable[] = {0, sizeof(basic_ifstream_char)};
433 /* ??_7?$basic_ifstream@DU?$char_traits@D@std@@@std@@6B@ */
434 extern const vtable_ptr MSVCP_basic_ifstream_char_vtable;
436 /* ??_8?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@7B@ */
437 const int basic_ifstream_wchar_vbtable[] = {0, sizeof(basic_ifstream_wchar)};
438 /* ??_7?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@6B@ */
439 extern const vtable_ptr MSVCP_basic_ifstream_wchar_vtable;
441 /* ??_8?$basic_ifstream@GU?$char_traits@G@std@@@std@@7B@ */
442 const int basic_ifstream_short_vbtable[] = {0, sizeof(basic_ifstream_wchar)};
443 /* ??_7?$basic_ifstream@GU?$char_traits@G@std@@@std@@6B@ */
444 extern const vtable_ptr MSVCP_basic_ifstream_short_vtable;
446 /* ??_8?$basic_fstream@DU?$char_traits@D@std@@@std@@7B?$basic_istream@DU?$char_traits@D@std@@@1@@ */
447 const int basic_fstream_char_vbtable1[] = {0, sizeof(basic_fstream_char)};
448 /* ??_8?$basic_fstream@DU?$char_traits@D@std@@@std@@7B?$basic_ostream@DU?$char_traits@D@std@@@1@@ */
449 const int basic_fstream_char_vbtable2[] = {0, sizeof(basic_fstream_char)-FIELD_OFFSET(basic_fstream_char, base.base2)};
450 /* ??_7?$basic_fstream@DU?$char_traits@D@std@@@std@@6B@ */
451 extern const vtable_ptr MSVCP_basic_fstream_char_vtable;
453 /* ??_8?$basic_fstream@_WU?$char_traits@_W@std@@@std@@7B?$basic_istream@_WU?$char_traits@_W@std@@@1@@ */
454 /* ??_8?$basic_fstream@GU?$char_traits@G@std@@@std@@7B?$basic_istream@GU?$char_traits@G@std@@@1@@ */
455 const int basic_fstream_wchar_vbtable1[] = {0, sizeof(basic_fstream_wchar)};
456 /* ??_8?$basic_fstream@_WU?$char_traits@_W@std@@@std@@7B?$basic_ostream@_WU?$char_traits@_W@std@@@1@@ */
457 /* ??_8?$basic_fstream@GU?$char_traits@G@std@@@std@@7B?$basic_ostream@GU?$char_traits@G@std@@@1@@ */
458 const int basic_fstream_wchar_vbtable2[] = {0, sizeof(basic_fstream_wchar)-FIELD_OFFSET(basic_fstream_wchar, base.base2)};
459 /* ??_7?$basic_fstream@_WU?$char_traits@_W@std@@@std@@6B@ */
460 extern const vtable_ptr MSVCP_basic_fstream_wchar_vtable;
461 /* ??_7?$basic_fstream@GU?$char_traits@G@std@@@std@@6B@ */
462 extern const vtable_ptr MSVCP_basic_fstream_short_vtable;
464 /* ??_8?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B@ */
465 const int basic_ostringstream_char_vbtable[] = {0, sizeof(basic_ostringstream_char)};
466 /* ??_7?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */
467 extern const vtable_ptr MSVCP_basic_ostringstream_char_vtable;
469 /* ??_8?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@7B@ */
470 const int basic_ostringstream_wchar_vbtable[] = {0, sizeof(basic_ostringstream_wchar)};
471 /* ??_7?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@6B@ */
472 extern const vtable_ptr MSVCP_basic_ostringstream_wchar_vtable;
474 /* ??_8?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@7B@ */
475 const int basic_ostringstream_short_vbtable[] = {0, sizeof(basic_ostringstream_wchar)};
476 /* ??_7?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@6B@ */
477 extern const vtable_ptr MSVCP_basic_ostringstream_short_vtable;
479 /* ??_8?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B@ */
480 const int basic_istringstream_char_vbtable[] = {0, sizeof(basic_istringstream_char)};
481 /* ??_7?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */
482 extern const vtable_ptr MSVCP_basic_istringstream_char_vtable;
484 /* ??_8?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@7B@ */
485 const int basic_istringstream_wchar_vbtable[] = {0, sizeof(basic_istringstream_wchar)};
486 /* ??_7?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@6B@ */
487 extern const vtable_ptr MSVCP_basic_istringstream_wchar_vtable;
489 /* ??_8?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@7B@ */
490 const int basic_istringstream_short_vbtable[] = {0, sizeof(basic_istringstream_wchar)};
491 /* ??_7?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@6B@ */
492 extern const vtable_ptr MSVCP_basic_istringstream_short_vtable;
494 /* ??_8?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B?$basic_istream@DU?$char_traits@D@std@@@1@@ */
495 const int basic_stringstream_char_vbtable1[] = {0, sizeof(basic_stringstream_char)};
496 /* ??_8?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B?$basic_ostream@DU?$char_traits@D@std@@@1@@ */
497 const int basic_stringstream_char_vbtable2[] = {0, sizeof(basic_stringstream_char)-FIELD_OFFSET(basic_stringstream_char, base.base2)};
498 /* ??_7?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */
499 extern const vtable_ptr MSVCP_basic_stringstream_char_vtable;
501 /* ??_8?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@7B?$basic_istream@_WU?$char_traits@_W@std@@@1@@ */
502 const int basic_stringstream_wchar_vbtable1[] = {0, sizeof(basic_stringstream_wchar)};
503 /* ??_8?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@7B?$basic_ostream@_WU?$char_traits@_W@std@@@1@@ */
504 const int basic_stringstream_wchar_vbtable2[] = {0, sizeof(basic_stringstream_wchar)-FIELD_OFFSET(basic_stringstream_wchar, base.base2)};
505 /* ??_7?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@6B@ */
506 extern const vtable_ptr MSVCP_basic_stringstream_wchar_vtable;
508 /* ??_8?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@7B?$basic_istream@GU?$char_traits@G@std@@@1@@ */
509 const int basic_stringstream_short_vbtable1[] = {0, sizeof(basic_stringstream_wchar)};
510 /* ??_8?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@7B?$basic_ostream@GU?$char_traits@G@std@@@1@@ */
511 const int basic_stringstream_short_vbtable2[] = {0, sizeof(basic_stringstream_wchar)-FIELD_OFFSET(basic_stringstream_wchar, base.base2)};
512 /* ??_7?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@6B@ */
513 extern const vtable_ptr MSVCP_basic_stringstream_short_vtable;
515 /* ??_7strstreambuf@std@@6B */
516 extern const vtable_ptr MSVCP_strstreambuf_vtable;
518 static const int ostrstream_vbtable[] = {0, sizeof(ostrstream)};
519 extern const vtable_ptr MSVCP_ostrstream_vtable;
521 static const int istrstream_vbtable[] = {0, sizeof(istrstream)};
523 static const int strstream_vbtable1[] = {0, sizeof(strstream)};
524 static const int strstream_vbtable2[] = {0, sizeof(strstream)-FIELD_OFFSET(strstream, base.base2)};
525 extern const vtable_ptr MSVCP_strstream_vtable;
527 DEFINE_RTTI_DATA0(iosb, 0, ".?AV?$_Iosb@H@std@@")
528 DEFINE_RTTI_DATA1(ios_base, 0, &iosb_rtti_base_descriptor, ".?AV?$_Iosb@H@std@@")
529 DEFINE_RTTI_DATA2(basic_ios_char, 0, &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
530 ".?AV?$basic_ios@DU?$char_traits@D@std@@@std@@")
531 DEFINE_RTTI_DATA2(basic_ios_wchar, 0, &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
532 ".?AV?$basic_ios@_WU?$char_traits@_W@std@@@std@@")
533 DEFINE_RTTI_DATA2(basic_ios_short, 0, &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
534 ".?AV?$basic_ios@GU?$char_traits@G@std@@@std@@")
535 DEFINE_RTTI_DATA0(basic_streambuf_char, 0,
536 ".?AV?$basic_streambuf@DU?$char_traits@D@std@@@std@@")
537 DEFINE_RTTI_DATA0(basic_streambuf_wchar, 0,
538 ".?AV?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@")
539 DEFINE_RTTI_DATA0(basic_streambuf_short, 0,
540 ".?AV?$basic_streambuf@GU?$char_traits@G@std@@@std@@")
541 DEFINE_RTTI_DATA1(basic_filebuf_char, 0, &basic_streambuf_char_rtti_base_descriptor,
542 ".?AV?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@")
543 DEFINE_RTTI_DATA1(basic_filebuf_wchar, 0, &basic_streambuf_wchar_rtti_base_descriptor,
544 ".?AV?$basic_filebuf@GU?$char_traits@G@std@@@std@@")
545 DEFINE_RTTI_DATA1(basic_filebuf_short, 0, &basic_streambuf_short_rtti_base_descriptor,
546 ".?AV?$basic_filebuf@DU?$char_traits@D@std@@@std@@")
547 DEFINE_RTTI_DATA1(basic_stringbuf_char, 0, &basic_streambuf_char_rtti_base_descriptor,
548 ".?AV?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@")
549 DEFINE_RTTI_DATA1(basic_stringbuf_wchar, 0, &basic_streambuf_wchar_rtti_base_descriptor,
550 ".?AV?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@")
551 DEFINE_RTTI_DATA1(basic_stringbuf_short, 0, &basic_streambuf_short_rtti_base_descriptor,
552 ".?AV?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@")
553 DEFINE_RTTI_DATA3(basic_ostream_char, sizeof(basic_ostream_char), &basic_ios_char_rtti_base_descriptor,
554 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
555 ".?AV?$basic_ostream@DU?$char_traits@D@std@@@std@@")
556 DEFINE_RTTI_DATA3(basic_ostream_wchar, sizeof(basic_ostream_wchar), &basic_ios_wchar_rtti_base_descriptor,
557 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
558 ".?AV?$basic_ostream@_WU?$char_traits@_W@std@@@std@@")
559 DEFINE_RTTI_DATA3(basic_ostream_short, sizeof(basic_ostream_wchar), &basic_ios_short_rtti_base_descriptor,
560 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
561 ".?AV?$basic_ostream@GU?$char_traits@G@std@@@std@@")
562 DEFINE_RTTI_DATA3(basic_istream_char, sizeof(basic_istream_char), &basic_ios_char_rtti_base_descriptor,
563 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
564 ".?AV?$basic_istream@DU?$char_traits@D@std@@@std@@")
565 DEFINE_RTTI_DATA3(basic_istream_wchar, sizeof(basic_istream_wchar), &basic_ios_wchar_rtti_base_descriptor,
566 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
567 ".?AV?$basic_istream@_WU?$char_traits@_W@std@@@std@@")
568 DEFINE_RTTI_DATA3(basic_istream_short, sizeof(basic_istream_wchar), &basic_ios_short_rtti_base_descriptor,
569 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
570 ".?AV?$basic_istream@GU?$char_traits@G@std@@@std@@")
571 DEFINE_RTTI_DATA8(basic_iostream_char, sizeof(basic_iostream_char),
572 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
573 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
574 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
575 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
576 ".?AV?$basic_iostream@DU?$char_traits@D@std@@@std@@")
577 DEFINE_RTTI_DATA8(basic_iostream_wchar, sizeof(basic_iostream_wchar),
578 &basic_istream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
579 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
580 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
581 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
582 ".?AV?$basic_iostream@_WU?$char_traits@_W@std@@@std@@")
583 DEFINE_RTTI_DATA8(basic_iostream_short, sizeof(basic_iostream_wchar),
584 &basic_istream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
585 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
586 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
587 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
588 ".?AV?$basic_iostream@GU?$char_traits@G@std@@@std@@")
589 DEFINE_RTTI_DATA4(basic_ofstream_char, sizeof(basic_ofstream_char),
590 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
591 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
592 ".?AV?$basic_ofstream@DU?$char_traits@D@std@@@std@@")
593 DEFINE_RTTI_DATA4(basic_ofstream_wchar, sizeof(basic_ofstream_wchar),
594 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
595 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
596 ".?AV?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@")
597 DEFINE_RTTI_DATA4(basic_ofstream_short, sizeof(basic_ofstream_wchar),
598 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
599 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
600 ".?AV?$basic_ofstream@GU?$char_traits@G@std@@@std@@")
601 DEFINE_RTTI_DATA4(basic_ifstream_char, sizeof(basic_ifstream_char),
602 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
603 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
604 ".?AV?$basic_ifstream@DU?$char_traits@D@std@@@std@@")
605 DEFINE_RTTI_DATA4(basic_ifstream_wchar, sizeof(basic_ifstream_wchar),
606 &basic_istream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
607 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
608 ".?AV?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@")
609 DEFINE_RTTI_DATA4(basic_ifstream_short, sizeof(basic_ifstream_wchar),
610 &basic_istream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
611 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
612 ".?AV?$basic_ifstream@GU?$char_traits@G@std@@@std@@")
613 DEFINE_RTTI_DATA8(basic_fstream_char, sizeof(basic_fstream_char),
614 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
615 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
616 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
617 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
618 ".?AV?$basic_fstream@DU?$char_traits@D@std@@@std@@")
619 DEFINE_RTTI_DATA8(basic_fstream_wchar, sizeof(basic_fstream_wchar),
620 &basic_istream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
621 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
622 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
623 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
624 ".?AV?$basic_fstream@_WU?$char_traits@_W@std@@@std@@")
625 DEFINE_RTTI_DATA8(basic_fstream_short, sizeof(basic_fstream_wchar),
626 &basic_istream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
627 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
628 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
629 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
630 ".?AV?$basic_fstream@GU?$char_traits@G@std@@@std@@")
631 DEFINE_RTTI_DATA4(basic_ostringstream_char, sizeof(basic_ostringstream_char),
632 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
633 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
634 ".?AV?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@")
635 DEFINE_RTTI_DATA4(basic_ostringstream_wchar, sizeof(basic_ostringstream_wchar),
636 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
637 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
638 ".?AV?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@")
639 DEFINE_RTTI_DATA4(basic_ostringstream_short, sizeof(basic_ostringstream_wchar),
640 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
641 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
642 ".?AV?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@")
643 DEFINE_RTTI_DATA4(basic_istringstream_char, sizeof(basic_istringstream_char),
644 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
645 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
646 ".?AV?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@")
647 DEFINE_RTTI_DATA4(basic_istringstream_wchar, sizeof(basic_istringstream_wchar),
648 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
649 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
650 ".?AV?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@")
651 DEFINE_RTTI_DATA4(basic_istringstream_short, sizeof(basic_istringstream_wchar),
652 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
653 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
654 ".?AV?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@")
655 DEFINE_RTTI_DATA8(basic_stringstream_char, sizeof(basic_stringstream_char),
656 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
657 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
658 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
659 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
660 ".?AV?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@")
661 DEFINE_RTTI_DATA8(basic_stringstream_wchar, sizeof(basic_stringstream_wchar),
662 &basic_istream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
663 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
664 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
665 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
666 ".?AV?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@")
667 DEFINE_RTTI_DATA8(basic_stringstream_short, sizeof(basic_stringstream_wchar),
668 &basic_istream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
669 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
670 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
671 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
672 ".?AV?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@")
673 DEFINE_RTTI_DATA1(strstreambuf, sizeof(strstreambuf),
674 &basic_streambuf_char_rtti_base_descriptor, ".?AVstrstreambuf@std@@")
675 DEFINE_RTTI_DATA4(ostrstream, sizeof(ostrstream),
676 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
677 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
678 "?AVostrstream@std@@")
679 DEFINE_RTTI_DATA8(strstream, sizeof(strstream),
680 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
681 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
682 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
683 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
684 "?AVstrstream@std@@")
686 #ifndef __GNUC__
687 void __asm_dummy_vtables(void) {
688 #endif
689 __ASM_VTABLE(iosb,
690 VTABLE_ADD_FUNC(iosb_vector_dtor));
691 __ASM_VTABLE(ios_base,
692 VTABLE_ADD_FUNC(ios_base_vector_dtor));
693 __ASM_VTABLE(basic_ios_char,
694 VTABLE_ADD_FUNC(basic_ios_char_vector_dtor));
695 __ASM_VTABLE(basic_ios_wchar,
696 VTABLE_ADD_FUNC(basic_ios_wchar_vector_dtor));
697 __ASM_VTABLE(basic_ios_short,
698 VTABLE_ADD_FUNC(basic_ios_wchar_vector_dtor));
699 __ASM_VTABLE(basic_streambuf_char,
700 VTABLE_ADD_FUNC(basic_streambuf_char_vector_dtor)
701 #if _MSVCP_VER >= 100
702 VTABLE_ADD_FUNC(basic_streambuf_char__Lock)
703 VTABLE_ADD_FUNC(basic_streambuf_char__Unlock)
704 #endif
705 VTABLE_ADD_FUNC(basic_streambuf_char_overflow)
706 VTABLE_ADD_FUNC(basic_streambuf_char_pbackfail)
707 VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc)
708 VTABLE_ADD_FUNC(basic_streambuf_char_underflow)
709 VTABLE_ADD_FUNC(basic_streambuf_char_uflow)
710 VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn)
711 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
712 VTABLE_ADD_FUNC(basic_streambuf_char__Xsgetn_s)
713 #endif
714 VTABLE_ADD_FUNC(basic_streambuf_char_xsputn)
715 VTABLE_ADD_FUNC(basic_streambuf_char_seekoff)
716 VTABLE_ADD_FUNC(basic_streambuf_char_seekpos)
717 VTABLE_ADD_FUNC(basic_streambuf_char_setbuf)
718 VTABLE_ADD_FUNC(basic_streambuf_char_sync)
719 VTABLE_ADD_FUNC(basic_streambuf_char_imbue));
720 __ASM_VTABLE(basic_streambuf_wchar,
721 VTABLE_ADD_FUNC(basic_streambuf_wchar_vector_dtor)
722 #if _MSVCP_VER >= 100
723 VTABLE_ADD_FUNC(basic_streambuf_wchar__Lock)
724 VTABLE_ADD_FUNC(basic_streambuf_wchar__Unlock)
725 #endif
726 VTABLE_ADD_FUNC(basic_streambuf_wchar_overflow)
727 VTABLE_ADD_FUNC(basic_streambuf_wchar_pbackfail)
728 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
729 VTABLE_ADD_FUNC(basic_streambuf_wchar_underflow)
730 VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow)
731 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
732 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
733 VTABLE_ADD_FUNC(basic_streambuf_wchar__Xsgetn_s)
734 #endif
735 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
736 VTABLE_ADD_FUNC(basic_streambuf_wchar_seekoff)
737 VTABLE_ADD_FUNC(basic_streambuf_wchar_seekpos)
738 VTABLE_ADD_FUNC(basic_streambuf_wchar_setbuf)
739 VTABLE_ADD_FUNC(basic_streambuf_wchar_sync)
740 VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue));
741 __ASM_VTABLE(basic_streambuf_short,
742 VTABLE_ADD_FUNC(basic_streambuf_wchar_vector_dtor)
743 #if _MSVCP_VER >= 100
744 VTABLE_ADD_FUNC(basic_streambuf_wchar__Lock)
745 VTABLE_ADD_FUNC(basic_streambuf_wchar__Unlock)
746 #endif
747 VTABLE_ADD_FUNC(basic_streambuf_wchar_overflow)
748 VTABLE_ADD_FUNC(basic_streambuf_wchar_pbackfail)
749 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
750 VTABLE_ADD_FUNC(basic_streambuf_wchar_underflow)
751 VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow)
752 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
753 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
754 VTABLE_ADD_FUNC(basic_streambuf_wchar__Xsgetn_s)
755 #endif
756 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
757 VTABLE_ADD_FUNC(basic_streambuf_wchar_seekoff)
758 VTABLE_ADD_FUNC(basic_streambuf_wchar_seekpos)
759 VTABLE_ADD_FUNC(basic_streambuf_wchar_setbuf)
760 VTABLE_ADD_FUNC(basic_streambuf_wchar_sync)
761 VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue));
762 __ASM_VTABLE(basic_filebuf_char,
763 VTABLE_ADD_FUNC(basic_filebuf_char_vector_dtor)
764 #if _MSVCP_VER >= 100
765 VTABLE_ADD_FUNC(basic_streambuf_char__Lock)
766 VTABLE_ADD_FUNC(basic_streambuf_char__Unlock)
767 #endif
768 VTABLE_ADD_FUNC(basic_filebuf_char_overflow)
769 VTABLE_ADD_FUNC(basic_filebuf_char_pbackfail)
770 VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc)
771 VTABLE_ADD_FUNC(basic_filebuf_char_underflow)
772 VTABLE_ADD_FUNC(basic_filebuf_char_uflow)
773 VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn)
774 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
775 VTABLE_ADD_FUNC(basic_streambuf_char__Xsgetn_s)
776 #endif
777 VTABLE_ADD_FUNC(basic_streambuf_char_xsputn)
778 VTABLE_ADD_FUNC(basic_filebuf_char_seekoff)
779 VTABLE_ADD_FUNC(basic_filebuf_char_seekpos)
780 VTABLE_ADD_FUNC(basic_filebuf_char_setbuf)
781 VTABLE_ADD_FUNC(basic_filebuf_char_sync)
782 VTABLE_ADD_FUNC(basic_filebuf_char_imbue));
783 __ASM_VTABLE(basic_filebuf_wchar,
784 VTABLE_ADD_FUNC(basic_filebuf_wchar_vector_dtor)
785 #if _MSVCP_VER >= 100
786 VTABLE_ADD_FUNC(basic_streambuf_wchar__Lock)
787 VTABLE_ADD_FUNC(basic_streambuf_wchar__Unlock)
788 #endif
789 VTABLE_ADD_FUNC(basic_filebuf_wchar_overflow)
790 VTABLE_ADD_FUNC(basic_filebuf_wchar_pbackfail)
791 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
792 VTABLE_ADD_FUNC(basic_filebuf_wchar_underflow)
793 VTABLE_ADD_FUNC(basic_filebuf_wchar_uflow)
794 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
795 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
796 VTABLE_ADD_FUNC(basic_streambuf_wchar__Xsgetn_s)
797 #endif
798 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
799 VTABLE_ADD_FUNC(basic_filebuf_wchar_seekoff)
800 VTABLE_ADD_FUNC(basic_filebuf_wchar_seekpos)
801 VTABLE_ADD_FUNC(basic_filebuf_wchar_setbuf)
802 VTABLE_ADD_FUNC(basic_filebuf_wchar_sync)
803 VTABLE_ADD_FUNC(basic_filebuf_wchar_imbue));
804 __ASM_VTABLE(basic_filebuf_short,
805 VTABLE_ADD_FUNC(basic_filebuf_wchar_vector_dtor)
806 #if _MSVCP_VER >= 100
807 VTABLE_ADD_FUNC(basic_streambuf_wchar__Lock)
808 VTABLE_ADD_FUNC(basic_streambuf_wchar__Unlock)
809 #endif
810 VTABLE_ADD_FUNC(basic_filebuf_wchar_overflow)
811 VTABLE_ADD_FUNC(basic_filebuf_wchar_pbackfail)
812 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
813 VTABLE_ADD_FUNC(basic_filebuf_wchar_underflow)
814 VTABLE_ADD_FUNC(basic_filebuf_wchar_uflow)
815 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
816 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
817 VTABLE_ADD_FUNC(basic_streambuf_wchar__Xsgetn_s)
818 #endif
819 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
820 VTABLE_ADD_FUNC(basic_filebuf_wchar_seekoff)
821 VTABLE_ADD_FUNC(basic_filebuf_wchar_seekpos)
822 VTABLE_ADD_FUNC(basic_filebuf_short_setbuf)
823 VTABLE_ADD_FUNC(basic_filebuf_wchar_sync)
824 VTABLE_ADD_FUNC(basic_filebuf_short_imbue));
825 __ASM_VTABLE(basic_stringbuf_char,
826 VTABLE_ADD_FUNC(basic_stringbuf_char_vector_dtor)
827 VTABLE_ADD_FUNC(basic_stringbuf_char_overflow)
828 VTABLE_ADD_FUNC(basic_stringbuf_char_pbackfail)
829 VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc)
830 VTABLE_ADD_FUNC(basic_stringbuf_char_underflow)
831 VTABLE_ADD_FUNC(basic_streambuf_char_uflow)
832 VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn)
833 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
834 VTABLE_ADD_FUNC(basic_streambuf_char__Xsgetn_s)
835 #endif
836 VTABLE_ADD_FUNC(basic_streambuf_char_xsputn)
837 VTABLE_ADD_FUNC(basic_stringbuf_char_seekoff)
838 VTABLE_ADD_FUNC(basic_stringbuf_char_seekpos)
839 VTABLE_ADD_FUNC(basic_streambuf_char_setbuf)
840 VTABLE_ADD_FUNC(basic_streambuf_char_sync)
841 VTABLE_ADD_FUNC(basic_streambuf_char_imbue));
842 __ASM_VTABLE(basic_stringbuf_wchar,
843 VTABLE_ADD_FUNC(basic_stringbuf_wchar_vector_dtor)
844 VTABLE_ADD_FUNC(basic_stringbuf_wchar_overflow)
845 VTABLE_ADD_FUNC(basic_stringbuf_wchar_pbackfail)
846 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
847 VTABLE_ADD_FUNC(basic_stringbuf_wchar_underflow)
848 VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow)
849 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
850 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
851 VTABLE_ADD_FUNC(basic_streambuf_wchar__Xsgetn_s)
852 #endif
853 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
854 VTABLE_ADD_FUNC(basic_stringbuf_wchar_seekoff)
855 VTABLE_ADD_FUNC(basic_stringbuf_wchar_seekpos)
856 VTABLE_ADD_FUNC(basic_streambuf_wchar_setbuf)
857 VTABLE_ADD_FUNC(basic_streambuf_wchar_sync)
858 VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue));
859 __ASM_VTABLE(basic_stringbuf_short,
860 VTABLE_ADD_FUNC(basic_stringbuf_wchar_vector_dtor)
861 VTABLE_ADD_FUNC(basic_stringbuf_wchar_overflow)
862 VTABLE_ADD_FUNC(basic_stringbuf_wchar_pbackfail)
863 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
864 VTABLE_ADD_FUNC(basic_stringbuf_wchar_underflow)
865 VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow)
866 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
867 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
868 VTABLE_ADD_FUNC(basic_streambuf_wchar__Xsgetn_s)
869 #endif
870 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
871 VTABLE_ADD_FUNC(basic_stringbuf_wchar_seekoff)
872 VTABLE_ADD_FUNC(basic_stringbuf_wchar_seekpos)
873 VTABLE_ADD_FUNC(basic_streambuf_wchar_setbuf)
874 VTABLE_ADD_FUNC(basic_streambuf_wchar_sync)
875 VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue));
876 __ASM_VTABLE(basic_ostream_char,
877 VTABLE_ADD_FUNC(basic_ostream_char_vector_dtor));
878 __ASM_VTABLE(basic_ostream_wchar,
879 VTABLE_ADD_FUNC(basic_ostream_wchar_vector_dtor));
880 __ASM_VTABLE(basic_ostream_short,
881 VTABLE_ADD_FUNC(basic_ostream_wchar_vector_dtor));
882 __ASM_VTABLE(basic_istream_char,
883 VTABLE_ADD_FUNC(basic_istream_char_vector_dtor));
884 __ASM_VTABLE(basic_istream_wchar,
885 VTABLE_ADD_FUNC(basic_istream_wchar_vector_dtor));
886 __ASM_VTABLE(basic_istream_short,
887 VTABLE_ADD_FUNC(basic_istream_wchar_vector_dtor));
888 __ASM_VTABLE(basic_iostream_char,
889 VTABLE_ADD_FUNC(basic_iostream_char_vector_dtor));
890 __ASM_VTABLE(basic_iostream_wchar,
891 VTABLE_ADD_FUNC(basic_iostream_wchar_vector_dtor));
892 __ASM_VTABLE(basic_iostream_short,
893 VTABLE_ADD_FUNC(basic_iostream_wchar_vector_dtor));
894 __ASM_VTABLE(basic_ofstream_char,
895 VTABLE_ADD_FUNC(basic_ofstream_char_vector_dtor));
896 __ASM_VTABLE(basic_ofstream_wchar,
897 VTABLE_ADD_FUNC(basic_ofstream_wchar_vector_dtor));
898 __ASM_VTABLE(basic_ofstream_short,
899 VTABLE_ADD_FUNC(basic_ofstream_wchar_vector_dtor));
900 __ASM_VTABLE(basic_ifstream_char,
901 VTABLE_ADD_FUNC(basic_ifstream_char_vector_dtor));
902 __ASM_VTABLE(basic_ifstream_wchar,
903 VTABLE_ADD_FUNC(basic_ifstream_wchar_vector_dtor));
904 __ASM_VTABLE(basic_ifstream_short,
905 VTABLE_ADD_FUNC(basic_ifstream_wchar_vector_dtor));
906 __ASM_VTABLE(basic_fstream_char,
907 VTABLE_ADD_FUNC(basic_fstream_char_vector_dtor));
908 __ASM_VTABLE(basic_fstream_wchar,
909 VTABLE_ADD_FUNC(basic_fstream_wchar_vector_dtor));
910 __ASM_VTABLE(basic_fstream_short,
911 VTABLE_ADD_FUNC(basic_fstream_wchar_vector_dtor));
912 __ASM_VTABLE(basic_ostringstream_char,
913 VTABLE_ADD_FUNC(basic_ostringstream_char_vector_dtor));
914 __ASM_VTABLE(basic_ostringstream_wchar,
915 VTABLE_ADD_FUNC(basic_ostringstream_wchar_vector_dtor));
916 __ASM_VTABLE(basic_ostringstream_short,
917 VTABLE_ADD_FUNC(basic_ostringstream_wchar_vector_dtor));
918 __ASM_VTABLE(basic_istringstream_char,
919 VTABLE_ADD_FUNC(basic_istringstream_char_vector_dtor));
920 __ASM_VTABLE(basic_istringstream_wchar,
921 VTABLE_ADD_FUNC(basic_istringstream_wchar_vector_dtor));
922 __ASM_VTABLE(basic_istringstream_short,
923 VTABLE_ADD_FUNC(basic_istringstream_wchar_vector_dtor));
924 __ASM_VTABLE(basic_stringstream_char,
925 VTABLE_ADD_FUNC(basic_stringstream_char_vector_dtor));
926 __ASM_VTABLE(basic_stringstream_wchar,
927 VTABLE_ADD_FUNC(basic_stringstream_wchar_vector_dtor));
928 __ASM_VTABLE(basic_stringstream_short,
929 VTABLE_ADD_FUNC(basic_stringstream_wchar_vector_dtor));
930 __ASM_VTABLE(strstreambuf,
931 VTABLE_ADD_FUNC(strstreambuf_vector_dtor)
932 VTABLE_ADD_FUNC(strstreambuf_overflow)
933 VTABLE_ADD_FUNC(strstreambuf_pbackfail)
934 VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc)
935 VTABLE_ADD_FUNC(strstreambuf_underflow)
936 VTABLE_ADD_FUNC(basic_streambuf_char_uflow)
937 VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn)
938 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
939 VTABLE_ADD_FUNC(basic_streambuf_char__Xsgetn_s)
940 #endif
941 VTABLE_ADD_FUNC(basic_streambuf_char_xsputn)
942 VTABLE_ADD_FUNC(strstreambuf_seekoff)
943 VTABLE_ADD_FUNC(strstreambuf_seekpos)
944 VTABLE_ADD_FUNC(basic_streambuf_char_setbuf)
945 VTABLE_ADD_FUNC(basic_streambuf_char_sync)
946 VTABLE_ADD_FUNC(basic_streambuf_char_imbue));
947 __ASM_VTABLE(ostrstream,
948 VTABLE_ADD_FUNC(ostrstream_vector_dtor));
949 __ASM_VTABLE(strstream,
950 VTABLE_ADD_FUNC(strstream_vector_dtor));
951 #ifndef __GNUC__
953 #endif
955 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD00@Z */
956 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD00@Z */
957 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setp_next, 16)
958 void __thiscall basic_streambuf_char_setp_next(basic_streambuf_char *this, char *first, char *next, char *last)
960 TRACE("(%p %p %p %p)\n", this, first, next, last);
962 this->wbuf = first;
963 this->wpos = next;
964 this->wsize = last-next;
967 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD0@Z */
968 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD0@Z */
969 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setp, 12)
970 void __thiscall basic_streambuf_char_setp(basic_streambuf_char *this, char *first, char *last)
972 basic_streambuf_char_setp_next(this, first, first, last);
975 /* ?setg@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD00@Z */
976 /* ?setg@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD00@Z */
977 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setg, 16)
978 void __thiscall basic_streambuf_char_setg(basic_streambuf_char *this, char *first, char *next, char *last)
980 TRACE("(%p %p %p %p)\n", this, first, next, last);
982 this->rbuf = first;
983 this->rpos = next;
984 this->rsize = last-next;
987 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXXZ */
988 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXXZ */
989 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Init_empty, 4)
990 void __thiscall basic_streambuf_char__Init_empty(basic_streambuf_char *this)
992 TRACE("(%p)\n", this);
994 this->prbuf = &this->rbuf;
995 this->pwbuf = &this->wbuf;
996 this->prpos = &this->rpos;
997 this->pwpos = &this->wpos;
998 this->prsize = &this->rsize;
999 this->pwsize = &this->wsize;
1001 basic_streambuf_char_setp(this, NULL, NULL);
1002 basic_streambuf_char_setg(this, NULL, NULL, NULL);
1005 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAE@W4_Uninitialized@1@@Z */
1006 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@W4_Uninitialized@1@@Z */
1007 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_ctor_uninitialized, 8)
1008 basic_streambuf_char* __thiscall basic_streambuf_char_ctor_uninitialized(basic_streambuf_char *this, int uninitialized)
1010 TRACE("(%p %d)\n", this, uninitialized);
1011 this->vtable = &MSVCP_basic_streambuf_char_vtable;
1012 #if _MSVCP_VER <= 100
1013 mutex_ctor(&this->lock);
1014 #endif
1015 return this;
1018 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAE@XZ */
1019 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@XZ */
1020 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_ctor, 4)
1021 basic_streambuf_char* __thiscall basic_streambuf_char_ctor(basic_streambuf_char *this)
1023 TRACE("(%p)\n", this);
1025 this->vtable = &MSVCP_basic_streambuf_char_vtable;
1026 #if _MSVCP_VER <= 100
1027 mutex_ctor(&this->lock);
1028 #endif
1029 this->loc = MSVCRT_operator_new(sizeof(locale));
1030 locale_ctor(this->loc);
1031 basic_streambuf_char__Init_empty(this);
1033 return this;
1036 /* ??1?$basic_streambuf@DU?$char_traits@D@std@@@std@@UAE@XZ */
1037 /* ??1?$basic_streambuf@DU?$char_traits@D@std@@@std@@UEAA@XZ */
1038 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_dtor, 4)
1039 void __thiscall basic_streambuf_char_dtor(basic_streambuf_char *this)
1041 TRACE("(%p)\n", this);
1043 #if _MSVCP_VER <= 100
1044 mutex_dtor(&this->lock);
1045 #endif
1046 locale_dtor(this->loc);
1047 MSVCRT_operator_delete(this->loc);
1050 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_vector_dtor, 8)
1051 basic_streambuf_char* __thiscall basic_streambuf_char_vector_dtor(basic_streambuf_char *this, unsigned int flags)
1053 TRACE("(%p %x)\n", this, flags);
1054 if(flags & 2) {
1055 /* we have an array, with the number of elements stored before the first object */
1056 INT_PTR i, *ptr = (INT_PTR *)this-1;
1058 for(i=*ptr-1; i>=0; i--)
1059 basic_streambuf_char_dtor(this+i);
1060 MSVCRT_operator_delete(ptr);
1061 } else {
1062 basic_streambuf_char_dtor(this);
1063 if(flags & 1)
1064 MSVCRT_operator_delete(this);
1067 return this;
1070 /* ?_Gnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEHXZ */
1071 /* ?_Gnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBA_JXZ */
1072 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gnavail, 4)
1073 streamsize __thiscall basic_streambuf_char__Gnavail(const basic_streambuf_char *this)
1075 TRACE("(%p)\n", this);
1076 return *this->prpos ? *this->prsize : 0;
1079 /* ?_Gndec@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
1080 /* ?_Gndec@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
1081 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gndec, 4)
1082 char* __thiscall basic_streambuf_char__Gndec(basic_streambuf_char *this)
1084 TRACE("(%p)\n", this);
1085 (*this->prsize)++;
1086 (*this->prpos)--;
1087 return *this->prpos;
1090 /* ?_Gninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
1091 /* ?_Gninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
1092 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gninc, 4)
1093 char* __thiscall basic_streambuf_char__Gninc(basic_streambuf_char *this)
1095 TRACE("(%p)\n", this);
1096 (*this->prsize)--;
1097 return (*this->prpos)++;
1100 /* ?_Gnpreinc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
1101 /* ?_Gnpreinc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
1102 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gnpreinc, 4)
1103 char* __thiscall basic_streambuf_char__Gnpreinc(basic_streambuf_char *this)
1105 TRACE("(%p)\n", this);
1106 (*this->prsize)--;
1107 (*this->prpos)++;
1108 return *this->prpos;
1111 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAPAD0PAH001@Z */
1112 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAPEAD0PEAH001@Z */
1113 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Init, 28)
1114 void __thiscall basic_streambuf_char__Init(basic_streambuf_char *this, char **gf, char **gn, int *gc, char **pf, char **pn, int *pc)
1116 TRACE("(%p %p %p %p %p %p %p)\n", this, gf, gn, gc, pf, pn, pc);
1118 this->prbuf = gf;
1119 this->pwbuf = pf;
1120 this->prpos = gn;
1121 this->pwpos = pn;
1122 this->prsize = gc;
1123 this->pwsize = pc;
1126 /* ?_Lock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
1127 /* ?_Lock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
1128 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Lock, 4)
1129 #if _MSVCP_VER >= 100
1130 #define call_basic_streambuf_char__Lock(this) CALL_VTBL_FUNC(this, 4, void, (basic_streambuf_char*), (this))
1131 #else
1132 #define call_basic_streambuf_char__Lock(this) basic_streambuf_char__Lock(this)
1133 #endif
1134 void __thiscall basic_streambuf_char__Lock(basic_streambuf_char *this)
1136 TRACE("(%p)\n", this);
1137 #if _MSVCP_VER <= 100
1138 mutex_lock(&this->lock);
1139 #endif
1142 /* ?_Pnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEHXZ */
1143 /* ?_Pnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBA_JXZ */
1144 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Pnavail, 4)
1145 streamsize __thiscall basic_streambuf_char__Pnavail(const basic_streambuf_char *this)
1147 TRACE("(%p)\n", this);
1148 return *this->pwpos ? *this->pwsize : 0;
1151 /* ?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
1152 /* ?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
1153 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Pninc, 4)
1154 char* __thiscall basic_streambuf_char__Pninc(basic_streambuf_char *this)
1156 TRACE("(%p)\n", this);
1157 (*this->pwsize)--;
1158 return (*this->pwpos)++;
1161 /* ?underflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
1162 /* ?underflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
1163 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_underflow, 4)
1164 #if _MSVCP_VER >= 100
1165 #define call_basic_streambuf_char_underflow(this) CALL_VTBL_FUNC(this, 24, int, (basic_streambuf_char*), (this))
1166 #else
1167 #define call_basic_streambuf_char_underflow(this) CALL_VTBL_FUNC(this, 16, int, (basic_streambuf_char*), (this))
1168 #endif
1169 int __thiscall basic_streambuf_char_underflow(basic_streambuf_char *this)
1171 TRACE("(%p)\n", this);
1172 return EOF;
1175 /* ?uflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
1176 /* ?uflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
1177 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_uflow, 4)
1178 #if _MSVCP_VER >= 100
1179 #define call_basic_streambuf_char_uflow(this) CALL_VTBL_FUNC(this, 28, int, (basic_streambuf_char*), (this))
1180 #else
1181 #define call_basic_streambuf_char_uflow(this) CALL_VTBL_FUNC(this, 20, int, (basic_streambuf_char*), (this))
1182 #endif
1183 int __thiscall basic_streambuf_char_uflow(basic_streambuf_char *this)
1185 int ret;
1187 TRACE("(%p)\n", this);
1189 if(call_basic_streambuf_char_underflow(this)==EOF)
1190 return EOF;
1192 ret = (unsigned char)**this->prpos;
1193 (*this->prsize)--;
1194 (*this->prpos)++;
1195 return ret;
1198 /* ?_Xsgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHPADIH@Z */
1199 /* ?_Xsgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEAD_K_J@Z */
1200 #if STREAMSIZE_BITS == 64
1201 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Xsgetn_s, 20)
1202 #else
1203 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Xsgetn_s, 16)
1204 #endif
1205 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
1206 #define call_basic_streambuf_char__Xsgetn_s(this, ptr, size, count) CALL_VTBL_FUNC(this, 28, \
1207 streamsize, (basic_streambuf_char*, char*, MSVCP_size_t, streamsize), (this, ptr, size, count))
1208 #else
1209 #define call_basic_streambuf_char__Xsgetn_s(this, ptr, size, count) basic_streambuf_char__Xsgetn_s(this, ptr, size, count)
1210 #endif
1211 streamsize __thiscall basic_streambuf_char__Xsgetn_s(basic_streambuf_char *this, char *ptr, MSVCP_size_t size, streamsize count)
1213 streamsize copied, chunk;
1214 int c;
1216 TRACE("(%p %p %lu %s)\n", this, ptr, size, wine_dbgstr_longlong(count));
1218 for(copied=0; copied<count && size;) {
1219 chunk = basic_streambuf_char__Gnavail(this);
1220 if(chunk > count-copied)
1221 chunk = count-copied;
1223 if(chunk > 0) {
1224 memcpy_s(ptr+copied, size, *this->prpos, chunk);
1225 *this->prpos += chunk;
1226 *this->prsize -= chunk;
1227 copied += chunk;
1228 size -= chunk;
1229 }else if((c = call_basic_streambuf_char_uflow(this)) != EOF) {
1230 ptr[copied] = c;
1231 copied++;
1232 size--;
1233 }else {
1234 break;
1238 return copied;
1241 /* ?_Sgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPADIH@Z */
1242 /* ?_Sgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_K_J@Z */
1243 #if STREAMSIZE_BITS == 64
1244 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Sgetn_s, 20)
1245 #else
1246 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Sgetn_s, 16)
1247 #endif
1248 streamsize __thiscall basic_streambuf_char__Sgetn_s(basic_streambuf_char *this, char *ptr, MSVCP_size_t size, streamsize count)
1250 TRACE("(%p %p %lu %s)\n", this, ptr, size, wine_dbgstr_longlong(count));
1251 return call_basic_streambuf_char__Xsgetn_s(this, ptr, size, count);
1254 /* ?_Unlock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
1255 /* ?_Unlock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
1256 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Unlock, 4)
1257 #if _MSVCP_VER >= 100
1258 #define call_basic_streambuf_char__Unlock(this) CALL_VTBL_FUNC(this, 8, void, (basic_streambuf_char*), (this))
1259 #else
1260 #define call_basic_streambuf_char__Unlock(this) basic_streambuf_char__Unlock(this)
1261 #endif
1262 void __thiscall basic_streambuf_char__Unlock(basic_streambuf_char *this)
1264 TRACE("(%p)\n", this);
1265 #if _MSVCP_VER <= 100
1266 mutex_unlock(&this->lock);
1267 #endif
1270 /* ?eback@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1271 /* ?eback@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1272 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_eback, 4)
1273 char* __thiscall basic_streambuf_char_eback(const basic_streambuf_char *this)
1275 TRACE("(%p)\n", this);
1276 return *this->prbuf;
1279 /* ?gptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1280 /* ?gptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1281 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_gptr, 4)
1282 char* __thiscall basic_streambuf_char_gptr(const basic_streambuf_char *this)
1284 TRACE("(%p)\n", this);
1285 return *this->prpos;
1288 /* ?egptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1289 /* ?egptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1290 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_egptr, 4)
1291 char* __thiscall basic_streambuf_char_egptr(const basic_streambuf_char *this)
1293 TRACE("(%p)\n", this);
1294 return *this->prpos+*this->prsize;
1297 /* ?epptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1298 /* ?epptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1299 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_epptr, 4)
1300 char* __thiscall basic_streambuf_char_epptr(const basic_streambuf_char *this)
1302 TRACE("(%p)\n", this);
1303 return *this->pwpos+*this->pwsize;
1306 /* ?gbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXH@Z */
1307 /* ?gbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXH@Z */
1308 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_gbump, 8)
1309 void __thiscall basic_streambuf_char_gbump(basic_streambuf_char *this, int off)
1311 TRACE("(%p %d)\n", this, off);
1312 *this->prpos += off;
1313 *this->prsize -= off;
1316 /* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QBE?AVlocale@2@XZ */
1317 /* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEBA?AVlocale@2@XZ */
1318 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_getloc, 8)
1319 locale* __thiscall basic_streambuf_char_getloc(const basic_streambuf_char *this, locale *ret)
1321 TRACE("(%p)\n", this);
1322 return locale_copy_ctor(ret, this->loc);
1325 /* ?imbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEXABVlocale@2@@Z */
1326 /* ?imbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAXAEBVlocale@2@@Z */
1327 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_imbue, 8)
1328 #if _MSVCP_VER >= 100
1329 #define call_basic_streambuf_char_imbue(this, loc) CALL_VTBL_FUNC(this, 56, void, (basic_streambuf_char*, const locale*), (this, loc))
1330 #elif _MSVCP_VER >= 80
1331 #define call_basic_streambuf_char_imbue(this, loc) CALL_VTBL_FUNC(this, 52, void, (basic_streambuf_char*, const locale*), (this, loc))
1332 #else
1333 #define call_basic_streambuf_char_imbue(this, loc) CALL_VTBL_FUNC(this, 48, void, (basic_streambuf_char*, const locale*), (this, loc))
1334 #endif
1335 void __thiscall basic_streambuf_char_imbue(basic_streambuf_char *this, const locale *loc)
1337 TRACE("(%p %p)\n", this, loc);
1340 /* ?overflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
1341 /* ?overflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
1342 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_overflow, 8)
1343 #if _MSVCP_VER >= 100
1344 #define call_basic_streambuf_char_overflow(this, ch) CALL_VTBL_FUNC(this, 12, int, (basic_streambuf_char*, int), (this, ch))
1345 #else
1346 #define call_basic_streambuf_char_overflow(this, ch) CALL_VTBL_FUNC(this, 4, int, (basic_streambuf_char*, int), (this, ch))
1347 #endif
1348 int __thiscall basic_streambuf_char_overflow(basic_streambuf_char *this, int ch)
1350 TRACE("(%p %d)\n", this, ch);
1351 return EOF;
1354 /* ?pbackfail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
1355 /* ?pbackfail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
1356 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pbackfail, 8)
1357 #if _MSVCP_VER >= 100
1358 #define call_basic_streambuf_char_pbackfail(this, ch) CALL_VTBL_FUNC(this, 16, int, (basic_streambuf_char*, int), (this, ch))
1359 #else
1360 #define call_basic_streambuf_char_pbackfail(this, ch) CALL_VTBL_FUNC(this, 8, int, (basic_streambuf_char*, int), (this, ch))
1361 #endif
1362 int __thiscall basic_streambuf_char_pbackfail(basic_streambuf_char *this, int ch)
1364 TRACE("(%p %d)\n", this, ch);
1365 return EOF;
1368 /* ?pbase@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1369 /* ?pbase@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1370 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pbase, 4)
1371 char* __thiscall basic_streambuf_char_pbase(const basic_streambuf_char *this)
1373 TRACE("(%p)\n", this);
1374 return *this->pwbuf;
1377 /* ?pbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXH@Z */
1378 /* ?pbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXH@Z */
1379 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pbump, 8)
1380 void __thiscall basic_streambuf_char_pbump(basic_streambuf_char *this, int off)
1382 TRACE("(%p %d)\n", this, off);
1383 *this->pwpos += off;
1384 *this->pwsize -= off;
1387 /* ?pptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1388 /* ?pptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1389 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pptr, 4)
1390 char* __thiscall basic_streambuf_char_pptr(const basic_streambuf_char *this)
1392 TRACE("(%p)\n", this);
1393 return *this->pwpos;
1396 /* ?pubimbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
1397 /* ?pubimbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
1398 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubimbue, 12)
1399 locale* __thiscall basic_streambuf_char_pubimbue(basic_streambuf_char *this, locale *ret, const locale *loc)
1401 TRACE("(%p %p)\n", this, loc);
1402 memcpy(ret, this->loc, sizeof(locale));
1403 call_basic_streambuf_char_imbue(this, loc);
1404 locale_copy_ctor(this->loc, loc);
1405 return ret;
1408 /* ?seekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
1409 /* ?seekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
1410 #if STREAMOFF_BITS == 64
1411 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_seekoff, 24)
1412 #else
1413 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_seekoff, 20)
1414 #endif
1415 #if _MSVCP_VER >= 100
1416 #define call_basic_streambuf_char_seekoff(this, ret, off, way, mode) CALL_VTBL_FUNC(this, 40, fpos_int*, (basic_streambuf_char*, fpos_int*, streamoff, int, int), (this, ret, off, way, mode))
1417 #elif _MSVCP_VER >= 80
1418 #define call_basic_streambuf_char_seekoff(this, ret, off, way, mode) CALL_VTBL_FUNC(this, 36, fpos_int*, (basic_streambuf_char*, fpos_int*, streamoff, int, int), (this, ret, off, way, mode))
1419 #else
1420 #define call_basic_streambuf_char_seekoff(this, ret, off, way, mode) CALL_VTBL_FUNC(this, 32, fpos_int*, (basic_streambuf_char*, fpos_int*, streamoff, int, int), (this, ret, off, way, mode))
1421 #endif
1422 fpos_int* __thiscall basic_streambuf_char_seekoff(basic_streambuf_char *this,
1423 fpos_int *ret, streamoff off, int way, int mode)
1425 TRACE("(%p %s %d %d)\n", this, wine_dbgstr_longlong(off), way, mode);
1426 ret->off = -1;
1427 ret->pos = 0;
1428 ret->state = 0;
1429 return ret;
1432 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@JHH@Z */
1433 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@_JHH@Z */
1434 #if STREAMOFF_BITS == 64
1435 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekoff, 24)
1436 #else
1437 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekoff, 20)
1438 #endif
1439 fpos_int* __thiscall basic_streambuf_char_pubseekoff(basic_streambuf_char *this,
1440 fpos_int *ret, streamoff off, int way, int mode)
1442 TRACE("(%p %s %d %d)\n", this, wine_dbgstr_longlong(off), way, mode);
1443 return call_basic_streambuf_char_seekoff(this, ret, off, way, mode);
1446 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@JII@Z */
1447 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@_JII@Z */
1448 #if STREAMOFF_BITS == 64
1449 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekoff_old, 24)
1450 #else
1451 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekoff_old, 20)
1452 #endif
1453 fpos_int* __thiscall basic_streambuf_char_pubseekoff_old(basic_streambuf_char *this,
1454 fpos_int *ret, streamoff off, unsigned int way, unsigned int mode)
1456 TRACE("(%p %s %d %d)\n", this, wine_dbgstr_longlong(off), way, mode);
1457 return basic_streambuf_char_pubseekoff(this, ret, off, way, mode);
1460 /* ?seekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
1461 /* ?seekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
1462 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_seekpos, 36)
1463 #if _MSVCP_VER >= 100
1464 #define call_basic_streambuf_char_seekpos(this, ret, pos, mode) CALL_VTBL_FUNC(this, 44, fpos_int*, (basic_streambuf_char*, fpos_int*, fpos_int, int), (this, ret, pos, mode))
1465 #elif _MSVCP_VER >= 80
1466 #define call_basic_streambuf_char_seekpos(this, ret, pos, mode) CALL_VTBL_FUNC(this, 40, fpos_int*, (basic_streambuf_char*, fpos_int*, fpos_int, int), (this, ret, pos, mode))
1467 #else
1468 #define call_basic_streambuf_char_seekpos(this, ret, pos, mode) CALL_VTBL_FUNC(this, 36, fpos_int*, (basic_streambuf_char*, fpos_int*, fpos_int, int), (this, ret, pos, mode))
1469 #endif
1470 fpos_int* __thiscall basic_streambuf_char_seekpos(basic_streambuf_char *this,
1471 fpos_int *ret, fpos_int pos, int mode)
1473 TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode);
1474 ret->off = -1;
1475 ret->pos = 0;
1476 ret->state = 0;
1477 return ret;
1480 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@V32@H@Z */
1481 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@V32@H@Z */
1482 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekpos, 36)
1483 fpos_int* __thiscall basic_streambuf_char_pubseekpos(basic_streambuf_char *this,
1484 fpos_int *ret, fpos_int pos, int mode)
1486 TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode);
1487 return call_basic_streambuf_char_seekpos(this, ret, pos, mode);
1490 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@V32@I@Z */
1491 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@V32@I@Z */
1492 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekpos_old, 36)
1493 fpos_int* __thiscall basic_streambuf_char_pubseekpos_old(basic_streambuf_char *this,
1494 fpos_int *ret, fpos_int pos, unsigned int mode)
1496 TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode);
1497 return basic_streambuf_char_pubseekpos(this, ret, pos, mode);
1500 /* ?setbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEPAV12@PADH@Z */
1501 /* ?setbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAPEAV12@PEAD_J@Z */
1502 #if STREAMSIZE_BITS == 64
1503 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setbuf, 16)
1504 #else
1505 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setbuf, 12)
1506 #endif
1507 #if _MSVCP_VER >= 100
1508 #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))
1509 #elif _MSVCP_VER >= 80
1510 #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))
1511 #else
1512 #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))
1513 #endif
1514 basic_streambuf_char* __thiscall basic_streambuf_char_setbuf(basic_streambuf_char *this, char *buf, streamsize count)
1516 TRACE("(%p %p %s)\n", this, buf, wine_dbgstr_longlong(count));
1517 return this;
1520 /* ?pubsetbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PADH@Z */
1521 /* ?pubsetbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEAD_J@Z */
1522 #if STREAMSIZE_BITS == 64
1523 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubsetbuf, 16)
1524 #else
1525 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubsetbuf, 12)
1526 #endif
1527 basic_streambuf_char* __thiscall basic_streambuf_char_pubsetbuf(basic_streambuf_char *this, char *buf, streamsize count)
1529 TRACE("(%p %p %s)\n", this, buf, wine_dbgstr_longlong(count));
1530 return call_basic_streambuf_char_setbuf(this, buf, count);
1533 /* ?sync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
1534 /* ?sync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
1535 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sync, 4)
1536 #if _MSVCP_VER >= 100
1537 #define call_basic_streambuf_char_sync(this) CALL_VTBL_FUNC(this, 52, int, (basic_streambuf_char*), (this))
1538 #elif _MSVCP_VER >= 80
1539 #define call_basic_streambuf_char_sync(this) CALL_VTBL_FUNC(this, 48, int, (basic_streambuf_char*), (this))
1540 #else
1541 #define call_basic_streambuf_char_sync(this) CALL_VTBL_FUNC(this, 44, int, (basic_streambuf_char*), (this))
1542 #endif
1543 int __thiscall basic_streambuf_char_sync(basic_streambuf_char *this)
1545 TRACE("(%p)\n", this);
1546 return 0;
1549 /* ?pubsync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1550 /* ?pubsync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1551 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubsync, 4)
1552 int __thiscall basic_streambuf_char_pubsync(basic_streambuf_char *this)
1554 TRACE("(%p)\n", this);
1555 return call_basic_streambuf_char_sync(this);
1558 /* ?sgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPADH@Z */
1559 /* ?sgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_J@Z */
1560 #if STREAMSIZE_BITS == 64
1561 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sgetn, 16)
1562 #else
1563 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sgetn, 12)
1564 #endif
1565 streamsize __thiscall basic_streambuf_char_sgetn(basic_streambuf_char *this, char *ptr, streamsize count)
1567 TRACE("(%p %p %s)\n", this, ptr, wine_dbgstr_longlong(count));
1568 return call_basic_streambuf_char__Xsgetn_s(this, ptr, -1, count);
1571 /* ?showmanyc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
1572 /* ?showmanyc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JXZ */
1573 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_showmanyc, 4)
1574 #if _MSVCP_VER >= 100
1575 #define call_basic_streambuf_char_showmanyc(this) CALL_VTBL_FUNC(this, 20, streamsize, (basic_streambuf_char*), (this))
1576 #else
1577 #define call_basic_streambuf_char_showmanyc(this) CALL_VTBL_FUNC(this, 12, streamsize, (basic_streambuf_char*), (this))
1578 #endif
1579 streamsize __thiscall basic_streambuf_char_showmanyc(basic_streambuf_char *this)
1581 TRACE("(%p)\n", this);
1582 return 0;
1585 /* ?in_avail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1586 /* ?in_avail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JXZ */
1587 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_in_avail, 4)
1588 streamsize __thiscall basic_streambuf_char_in_avail(basic_streambuf_char *this)
1590 streamsize ret;
1592 TRACE("(%p)\n", this);
1594 ret = basic_streambuf_char__Gnavail(this);
1595 return ret ? ret : call_basic_streambuf_char_showmanyc(this);
1598 /* ?sputbackc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHD@Z */
1599 /* ?sputbackc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z */
1600 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputbackc, 8)
1601 int __thiscall basic_streambuf_char_sputbackc(basic_streambuf_char *this, char ch)
1603 TRACE("(%p %d)\n", this, ch);
1604 if(*this->prpos && *this->prpos>*this->prbuf && (*this->prpos)[-1]==ch) {
1605 (*this->prsize)++;
1606 (*this->prpos)--;
1607 return (unsigned char)ch;
1610 return call_basic_streambuf_char_pbackfail(this, (unsigned char)ch);
1613 /* ?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHD@Z */
1614 /* ?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z */
1615 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputc, 8)
1616 int __thiscall basic_streambuf_char_sputc(basic_streambuf_char *this, char ch)
1618 TRACE("(%p %d)\n", this, ch);
1619 return basic_streambuf_char__Pnavail(this) ?
1620 (unsigned char)(*basic_streambuf_char__Pninc(this) = ch) :
1621 call_basic_streambuf_char_overflow(this, (unsigned char)ch);
1624 /* ?sungetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1625 /* ?sungetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1626 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sungetc, 4)
1627 int __thiscall basic_streambuf_char_sungetc(basic_streambuf_char *this)
1629 TRACE("(%p)\n", this);
1630 if(*this->prpos && *this->prpos>*this->prbuf) {
1631 (*this->prsize)++;
1632 (*this->prpos)--;
1633 return (unsigned char)**this->prpos;
1636 return call_basic_streambuf_char_pbackfail(this, EOF);
1639 /* ?stossc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
1640 /* ?stossc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
1641 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_stossc, 4)
1642 void __thiscall basic_streambuf_char_stossc(basic_streambuf_char *this)
1644 TRACE("(%p)\n", this);
1645 if(basic_streambuf_char__Gnavail(this))
1646 basic_streambuf_char__Gninc(this);
1647 else
1648 call_basic_streambuf_char_uflow(this);
1651 /* ?sbumpc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1652 /* ?sbumpc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1653 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sbumpc, 4)
1654 int __thiscall basic_streambuf_char_sbumpc(basic_streambuf_char *this)
1656 TRACE("(%p)\n", this);
1657 return basic_streambuf_char__Gnavail(this) ?
1658 (int)(unsigned char)*basic_streambuf_char__Gninc(this) : call_basic_streambuf_char_uflow(this);
1661 /* ?sgetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1662 /* ?sgetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1663 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sgetc, 4)
1664 int __thiscall basic_streambuf_char_sgetc(basic_streambuf_char *this)
1666 TRACE("(%p)\n", this);
1667 return basic_streambuf_char__Gnavail(this) ?
1668 (int)(unsigned char)*basic_streambuf_char_gptr(this) : call_basic_streambuf_char_underflow(this);
1671 /* ?snextc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1672 /* ?snextc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1673 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_snextc, 4)
1674 int __thiscall basic_streambuf_char_snextc(basic_streambuf_char *this)
1676 TRACE("(%p)\n", this);
1678 if(basic_streambuf_char__Gnavail(this) > 1)
1679 return (unsigned char)*basic_streambuf_char__Gnpreinc(this);
1680 return basic_streambuf_char_sbumpc(this)==EOF ?
1681 EOF : basic_streambuf_char_sgetc(this);
1684 /* ?xsgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHPADH@Z */
1685 /* ?xsgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEAD_J@Z */
1686 #if STREAMSIZE_BITS == 64
1687 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_xsgetn, 16)
1688 #else
1689 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_xsgetn, 12)
1690 #endif
1691 #if _MSVCP_VER >= 100
1692 #define call_basic_streambuf_char_xsgetn(this, ptr, count) CALL_VTBL_FUNC(this, 32, streamsize, (basic_streambuf_char*, char*, streamsize), (this, ptr, count))
1693 #else
1694 #define call_basic_streambuf_char_xsgetn(this, ptr, count) CALL_VTBL_FUNC(this, 24, streamsize, (basic_streambuf_char*, char*, streamsize), (this, ptr, count))
1695 #endif
1696 streamsize __thiscall basic_streambuf_char_xsgetn(basic_streambuf_char *this, char *ptr, streamsize count)
1698 TRACE("(%p %p %s)\n", this, ptr, wine_dbgstr_longlong(count));
1699 return call_basic_streambuf_char__Xsgetn_s(this, ptr, -1, count);
1702 /* ?xsputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHPBDH@Z */
1703 /* ?xsputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEBD_J@Z */
1704 #if STREAMSIZE_BITS == 64
1705 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_xsputn, 16)
1706 #else
1707 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_xsputn, 12)
1708 #endif
1709 #if _MSVCP_VER >= 100
1710 #define call_basic_streambuf_char_xsputn(this, ptr, count) CALL_VTBL_FUNC(this, 36, streamsize, (basic_streambuf_char*, const char*, streamsize), (this, ptr, count))
1711 #elif _MSVCP_VER >= 80
1712 #define call_basic_streambuf_char_xsputn(this, ptr, count) CALL_VTBL_FUNC(this, 32, streamsize, (basic_streambuf_char*, const char*, streamsize), (this, ptr, count))
1713 #else
1714 #define call_basic_streambuf_char_xsputn(this, ptr, count) CALL_VTBL_FUNC(this, 28, streamsize, (basic_streambuf_char*, const char*, streamsize), (this, ptr, count))
1715 #endif
1716 streamsize __thiscall basic_streambuf_char_xsputn(basic_streambuf_char *this, const char *ptr, streamsize count)
1718 streamsize copied, chunk;
1720 TRACE("(%p %p %s)\n", this, ptr, wine_dbgstr_longlong(count));
1722 for(copied=0; copied<count;) {
1723 chunk = basic_streambuf_char__Pnavail(this);
1724 if(chunk > count-copied)
1725 chunk = count-copied;
1727 if(chunk > 0) {
1728 memcpy(*this->pwpos, ptr+copied, chunk);
1729 *this->pwpos += chunk;
1730 *this->pwsize -= chunk;
1731 copied += chunk;
1732 }else if(call_basic_streambuf_char_overflow(this, (unsigned char)ptr[copied]) != EOF) {
1733 copied++;
1734 }else {
1735 break;
1739 return copied;
1742 /* ?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPBDH@Z */
1743 /* ?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEBD_J@Z */
1744 #if STREAMSIZE_BITS == 64
1745 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputn, 16)
1746 #else
1747 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputn, 12)
1748 #endif
1749 streamsize __thiscall basic_streambuf_char_sputn(basic_streambuf_char *this, const char *ptr, streamsize count)
1751 TRACE("(%p %p %s)\n", this, ptr, wine_dbgstr_longlong(count));
1752 return call_basic_streambuf_char_xsputn(this, ptr, count);
1755 /* ?swap@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXAAV12@@Z */
1756 /* ?swap@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXAEAV12@@Z */
1757 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_swap, 8)
1758 void __thiscall basic_streambuf_char_swap(basic_streambuf_char *this, basic_streambuf_char *r)
1760 basic_streambuf_char tmp;
1762 TRACE("(%p %p)\n", this, r);
1764 if(this == r)
1765 return;
1767 tmp = *this;
1768 *this = *r;
1769 this->vtable = tmp.vtable;
1770 tmp.vtable = r->vtable;
1771 *r = tmp;
1774 /* ?setp@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXPA_W00@Z */
1775 /* ?setp@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEA_W00@Z */
1776 /* ?setp@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXPAG00@Z */
1777 /* ?setp@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXPEAG00@Z */
1778 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setp_next, 16)
1779 void __thiscall basic_streambuf_wchar_setp_next(basic_streambuf_wchar *this, wchar_t *first, wchar_t *next, wchar_t *last)
1781 TRACE("(%p %p %p %p)\n", this, first, next, last);
1783 this->wbuf = first;
1784 this->wpos = next;
1785 this->wsize = last-next;
1788 /* ?setp@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXPA_W0@Z */
1789 /* ?setp@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEA_W0@Z */
1790 /* ?setp@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXPAG0@Z */
1791 /* ?setp@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXPEAG0@Z */
1792 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setp, 12)
1793 void __thiscall basic_streambuf_wchar_setp(basic_streambuf_wchar *this, wchar_t *first, wchar_t *last)
1795 basic_streambuf_wchar_setp_next(this, first, first, last);
1798 /* ?setg@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXPA_W00@Z */
1799 /* ?setg@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEA_W00@Z */
1800 /* ?setg@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXPAG00@Z */
1801 /* ?setg@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXPEAG00@Z */
1802 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setg, 16)
1803 void __thiscall basic_streambuf_wchar_setg(basic_streambuf_wchar *this, wchar_t *first, wchar_t *next, wchar_t *last)
1805 TRACE("(%p %p %p %p)\n", this, first, next, last);
1807 this->rbuf = first;
1808 this->rpos = next;
1809 this->rsize = last-next;
1812 /* ?_Init@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXXZ */
1813 /* ?_Init@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXXZ */
1814 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXXZ */
1815 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXXZ */
1816 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Init_empty, 4)
1817 void __thiscall basic_streambuf_wchar__Init_empty(basic_streambuf_wchar *this)
1819 TRACE("(%p)\n", this);
1821 this->prbuf = &this->rbuf;
1822 this->pwbuf = &this->wbuf;
1823 this->prpos = &this->rpos;
1824 this->pwpos = &this->wpos;
1825 this->prsize = &this->rsize;
1826 this->pwsize = &this->wsize;
1828 basic_streambuf_wchar_setp(this, NULL, NULL);
1829 basic_streambuf_wchar_setg(this, NULL, NULL, NULL);
1832 /* ??0?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAE@W4_Uninitialized@1@@Z */
1833 /* ??0?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAA@W4_Uninitialized@1@@Z */
1834 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_ctor_uninitialized, 8)
1835 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_ctor_uninitialized(basic_streambuf_wchar *this, int uninitialized)
1837 TRACE("(%p %d)\n", this, uninitialized);
1838 this->vtable = &MSVCP_basic_streambuf_wchar_vtable;
1839 #if _MSVCP_VER <= 100
1840 mutex_ctor(&this->lock);
1841 #endif
1842 return this;
1845 /* ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAE@W4_Uninitialized@1@@Z */
1846 /* ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAA@W4_Uninitialized@1@@Z */
1847 DEFINE_THISCALL_WRAPPER(basic_streambuf_short_ctor_uninitialized, 8)
1848 basic_streambuf_wchar* __thiscall basic_streambuf_short_ctor_uninitialized(basic_streambuf_wchar *this, int uninitialized)
1850 TRACE("(%p %d)\n", this, uninitialized);
1851 basic_streambuf_wchar_ctor_uninitialized(this, uninitialized);
1852 this->vtable = &MSVCP_basic_streambuf_short_vtable;
1853 return this;
1856 /* ??0?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAE@XZ */
1857 /* ??0?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAA@XZ */
1858 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_ctor, 4)
1859 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_ctor(basic_streambuf_wchar *this)
1861 TRACE("(%p)\n", this);
1863 this->vtable = &MSVCP_basic_streambuf_wchar_vtable;
1864 #if _MSVCP_VER <= 100
1865 mutex_ctor(&this->lock);
1866 #endif
1867 this->loc = MSVCRT_operator_new(sizeof(locale));
1868 locale_ctor(this->loc);
1869 basic_streambuf_wchar__Init_empty(this);
1871 return this;
1874 /* ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAE@XZ */
1875 /* ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAA@XZ */
1876 DEFINE_THISCALL_WRAPPER(basic_streambuf_short_ctor, 4)
1877 basic_streambuf_wchar* __thiscall basic_streambuf_short_ctor(basic_streambuf_wchar *this)
1879 TRACE("(%p)\n", this);
1880 basic_streambuf_wchar_ctor(this);
1881 this->vtable = &MSVCP_basic_streambuf_short_vtable;
1882 return this;
1885 /* ??1?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
1886 /* ??1?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
1887 /* ??1?$basic_streambuf@GU?$char_traits@G@std@@@std@@UAE@XZ */
1888 /* ??1?$basic_streambuf@GU?$char_traits@G@std@@@std@@UEAA@XZ */
1889 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_dtor, 4)
1890 void __thiscall basic_streambuf_wchar_dtor(basic_streambuf_wchar *this)
1892 TRACE("(%p)\n", this);
1894 #if _MSVCP_VER <= 100
1895 mutex_dtor(&this->lock);
1896 #endif
1897 locale_dtor(this->loc);
1898 MSVCRT_operator_delete(this->loc);
1901 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_vector_dtor, 8)
1902 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_vector_dtor(basic_streambuf_wchar *this, unsigned int flags)
1904 TRACE("(%p %x)\n", this, flags);
1905 if(flags & 2) {
1906 /* we have an array, with the number of elements stored before the first object */
1907 INT_PTR i, *ptr = (INT_PTR *)this-1;
1909 for(i=*ptr-1; i>=0; i--)
1910 basic_streambuf_wchar_dtor(this+i);
1911 MSVCRT_operator_delete(ptr);
1912 } else {
1913 basic_streambuf_wchar_dtor(this);
1914 if(flags & 1)
1915 MSVCRT_operator_delete(this);
1918 return this;
1921 /* ?_Gnavail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEHXZ */
1922 /* ?_Gnavail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBA_JXZ */
1923 /* ?_Gnavail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEHXZ */
1924 /* ?_Gnavail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBA_JXZ */
1925 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Gnavail, 4)
1926 streamsize __thiscall basic_streambuf_wchar__Gnavail(const basic_streambuf_wchar *this)
1928 TRACE("(%p)\n", this);
1929 return *this->prpos ? *this->prsize : 0;
1932 /* ?_Gndec@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEPA_WXZ */
1933 /* ?_Gndec@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAPEA_WXZ */
1934 /* ?_Gndec@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ */
1935 /* ?_Gndec@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAPEAGXZ */
1936 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Gndec, 4)
1937 wchar_t* __thiscall basic_streambuf_wchar__Gndec(basic_streambuf_wchar *this)
1939 TRACE("(%p)\n", this);
1940 (*this->prsize)++;
1941 (*this->prpos)--;
1942 return *this->prpos;
1945 /* ?_Gninc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEPA_WXZ */
1946 /* ?_Gninc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAPEA_WXZ */
1947 /* ?_Gninc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ */
1948 /* ?_Gninc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAPEAGXZ */
1949 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Gninc, 4)
1950 wchar_t* __thiscall basic_streambuf_wchar__Gninc(basic_streambuf_wchar *this)
1952 TRACE("(%p)\n", this);
1953 (*this->prsize)--;
1954 return (*this->prpos)++;
1957 /* ?_Gnpreinc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEPA_WXZ */
1958 /* ?_Gnpreinc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAPEA_WXZ */
1959 /* ?_Gnpreinc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ */
1960 /* ?_Gnpreinc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAPEAGXZ */
1961 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Gnpreinc, 4)
1962 wchar_t* __thiscall basic_streambuf_wchar__Gnpreinc(basic_streambuf_wchar *this)
1964 TRACE("(%p)\n", this);
1965 (*this->prsize)--;
1966 (*this->prpos)++;
1967 return *this->prpos;
1970 /* ?_Init@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXPAPA_W0PAH001@Z */
1971 /* ?_Init@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAPEA_W0PEAH001@Z */
1972 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXPAPAG0PAH001@Z */
1973 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXPEAPEAG0PEAH001@Z */
1974 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Init, 28)
1975 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)
1977 TRACE("(%p %p %p %p %p %p %p)\n", this, gf, gn, gc, pf, pn, pc);
1979 this->prbuf = gf;
1980 this->pwbuf = pf;
1981 this->prpos = gn;
1982 this->pwpos = pn;
1983 this->prsize = gc;
1984 this->pwsize = pc;
1987 /* ?_Lock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
1988 /* ?_Lock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
1989 /* ?_Lock@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEXXZ */
1990 /* ?_Lock@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAXXZ */
1991 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Lock, 4)
1992 void __thiscall basic_streambuf_wchar__Lock(basic_streambuf_wchar *this)
1994 TRACE("(%p)\n", this);
1995 #if _MSVCP_VER <= 100
1996 mutex_lock(&this->lock);
1997 #endif
2000 /* ?_Pnavail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEHXZ */
2001 /* ?_Pnavail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBA_JXZ */
2002 /* ?_Pnavail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEHXZ */
2003 /* ?_Pnavail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBA_JXZ */
2004 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Pnavail, 4)
2005 streamsize __thiscall basic_streambuf_wchar__Pnavail(const basic_streambuf_wchar *this)
2007 TRACE("(%p)\n", this);
2008 return *this->pwpos ? *this->pwsize : 0;
2011 /* ?_Pninc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEPA_WXZ */
2012 /* ?_Pninc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAPEA_WXZ */
2013 /* ?_Pninc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ */
2014 /* ?_Pninc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAPEAGXZ */
2015 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Pninc, 4)
2016 wchar_t* __thiscall basic_streambuf_wchar__Pninc(basic_streambuf_wchar *this)
2018 TRACE("(%p)\n", this);
2019 (*this->pwsize)--;
2020 return (*this->pwpos)++;
2023 /* ?underflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEGXZ */
2024 /* ?underflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAGXZ */
2025 /* ?underflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEGXZ */
2026 /* ?underflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAGXZ */
2027 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_underflow, 4)
2028 #if _MSVCP_VER >= 100
2029 #define call_basic_streambuf_wchar_underflow(this) CALL_VTBL_FUNC(this, 24, unsigned short, (basic_streambuf_wchar*), (this))
2030 #else
2031 #define call_basic_streambuf_wchar_underflow(this) CALL_VTBL_FUNC(this, 16, unsigned short, (basic_streambuf_wchar*), (this))
2032 #endif
2033 unsigned short __thiscall basic_streambuf_wchar_underflow(basic_streambuf_wchar *this)
2035 TRACE("(%p)\n", this);
2036 return WEOF;
2039 /* ?uflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEGXZ */
2040 /* ?uflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAGXZ */
2041 /* ?uflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEGXZ */
2042 /* ?uflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAGXZ */
2043 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_uflow, 4)
2044 #if _MSVCP_VER >= 100
2045 #define call_basic_streambuf_wchar_uflow(this) CALL_VTBL_FUNC(this, 28, unsigned short, (basic_streambuf_wchar*), (this))
2046 #else
2047 #define call_basic_streambuf_wchar_uflow(this) CALL_VTBL_FUNC(this, 20, unsigned short, (basic_streambuf_wchar*), (this))
2048 #endif
2049 unsigned short __thiscall basic_streambuf_wchar_uflow(basic_streambuf_wchar *this)
2051 int ret;
2053 TRACE("(%p)\n", this);
2055 if(call_basic_streambuf_wchar_underflow(this)==WEOF)
2056 return WEOF;
2058 ret = **this->prpos;
2059 (*this->prsize)--;
2060 (*this->prpos)++;
2061 return ret;
2064 /* ?_Xsgetn_s@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHPA_WIH@Z */
2065 /* ?_Xsgetn_s@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA_JPEA_W_K_J@Z */
2066 /* ?_Xsgetn_s@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHPAGIH@Z */
2067 /* ?_Xsgetn_s@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA_JPEAG_K_J@Z */
2068 #if STREAMSIZE_BITS == 64
2069 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Xsgetn_s, 20)
2070 #else
2071 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Xsgetn_s, 16)
2072 #endif
2073 #if _MSVCP_VER >= 80 && _MSVCP_VER <= 90
2074 #define call_basic_streambuf_wchar__Xsgetn_s(this, ptr, size, count) CALL_VTBL_FUNC(this, 28, \
2075 streamsize, (basic_streambuf_wchar*, wchar_t*, MSVCP_size_t, streamsize), (this, ptr, size, count))
2076 #else
2077 #define call_basic_streambuf_wchar__Xsgetn_s(this, ptr, size, count) basic_streambuf_wchar__Xsgetn_s(this, ptr, size, count)
2078 #endif
2079 streamsize __thiscall basic_streambuf_wchar__Xsgetn_s(basic_streambuf_wchar *this, wchar_t *ptr, MSVCP_size_t size, streamsize count)
2081 streamsize copied, chunk;
2082 unsigned short c;
2084 TRACE("(%p %p %lu %s)\n", this, ptr, size, wine_dbgstr_longlong(count));
2086 for(copied=0; copied<count && size;) {
2087 chunk = basic_streambuf_wchar__Gnavail(this);
2088 if(chunk > count-copied)
2089 chunk = count-copied;
2091 if(chunk > 0) {
2092 memcpy_s(ptr+copied, size, *this->prpos, chunk*sizeof(wchar_t));
2093 *this->prpos += chunk;
2094 *this->prsize -= chunk;
2095 copied += chunk;
2096 size -= chunk*sizeof(wchar_t);
2097 }else if((c = call_basic_streambuf_wchar_uflow(this)) != WEOF) {
2098 ptr[copied] = c;
2099 copied++;
2100 size--;
2101 }else {
2102 break;
2106 return copied;
2109 /* ?_Sgetn_s@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHPA_WIH@Z */
2110 /* ?_Sgetn_s@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA_JPEA_W_K_J@Z */
2111 /* ?_Sgetn_s@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHPAGIH@Z */
2112 /* ?_Sgetn_s@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA_JPEAG_K_J@Z */
2113 #if STREAMSIZE_BITS == 64
2114 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Sgetn_s, 20)
2115 #else
2116 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Sgetn_s, 16)
2117 #endif
2118 streamsize __thiscall basic_streambuf_wchar__Sgetn_s(basic_streambuf_wchar *this, wchar_t *ptr, MSVCP_size_t size, streamsize count)
2120 TRACE("(%p %p %lu %s)\n", this, ptr, size, wine_dbgstr_longlong(count));
2121 return call_basic_streambuf_wchar__Xsgetn_s(this, ptr, size, count);
2124 /* ?_Unlock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
2125 /* ?_Unlock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
2126 /* ?_Unlock@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEXXZ */
2127 /* ?_Unlock@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAXXZ */
2128 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Unlock, 4)
2129 void __thiscall basic_streambuf_wchar__Unlock(basic_streambuf_wchar *this)
2131 TRACE("(%p)\n", this);
2132 #if _MSVCP_VER <= 100
2133 mutex_unlock(&this->lock);
2134 #endif
2137 /* ?eback@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
2138 /* ?eback@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
2139 /* ?eback@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
2140 /* ?eback@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
2141 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_eback, 4)
2142 wchar_t* __thiscall basic_streambuf_wchar_eback(const basic_streambuf_wchar *this)
2144 TRACE("(%p)\n", this);
2145 return *this->prbuf;
2148 /* ?gptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
2149 /* ?gptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
2150 /* ?gptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
2151 /* ?gptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
2152 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_gptr, 4)
2153 wchar_t* __thiscall basic_streambuf_wchar_gptr(const basic_streambuf_wchar *this)
2155 TRACE("(%p)\n", this);
2156 return *this->prpos;
2159 /* ?egptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
2160 /* ?egptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
2161 /* ?egptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
2162 /* ?egptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
2163 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_egptr, 4)
2164 wchar_t* __thiscall basic_streambuf_wchar_egptr(const basic_streambuf_wchar *this)
2166 TRACE("(%p)\n", this);
2167 return *this->prpos+*this->prsize;
2170 /* ?epptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
2171 /* ?epptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
2172 /* ?epptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
2173 /* ?epptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
2174 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_epptr, 4)
2175 wchar_t* __thiscall basic_streambuf_wchar_epptr(const basic_streambuf_wchar *this)
2177 TRACE("(%p)\n", this);
2178 return *this->pwpos+*this->pwsize;
2181 /* ?gbump@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXH@Z */
2182 /* ?gbump@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXH@Z */
2183 /* ?gbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXH@Z */
2184 /* ?gbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXH@Z */
2185 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_gbump, 8)
2186 void __thiscall basic_streambuf_wchar_gbump(basic_streambuf_wchar *this, int off)
2188 TRACE("(%p %d)\n", this, off);
2189 *this->prpos += off;
2190 *this->prsize -= off;
2193 /* ?getloc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QBE?AVlocale@2@XZ */
2194 /* ?getloc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEBA?AVlocale@2@XZ */
2195 /* ?getloc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QBE?AVlocale@2@XZ */
2196 /* ?getloc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEBA?AVlocale@2@XZ */
2197 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_getloc, 8)
2198 locale* __thiscall basic_streambuf_wchar_getloc(const basic_streambuf_wchar *this, locale *ret)
2200 TRACE("(%p)\n", this);
2201 return locale_copy_ctor(ret, this->loc);
2204 /* ?imbue@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEXABVlocale@2@@Z */
2205 /* ?imbue@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAXAEBVlocale@2@@Z */
2206 /* ?imbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEXABVlocale@2@@Z */
2207 /* ?imbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAXAEBVlocale@2@@Z */
2208 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_imbue, 8)
2209 #if _MSVCP_VER >= 100
2210 #define call_basic_streambuf_wchar_imbue(this, loc) CALL_VTBL_FUNC(this, 56, void, (basic_streambuf_wchar*, const locale*), (this, loc))
2211 #elif _MSVCP_VER >= 80
2212 #define call_basic_streambuf_wchar_imbue(this, loc) CALL_VTBL_FUNC(this, 52, void, (basic_streambuf_wchar*, const locale*), (this, loc))
2213 #else
2214 #define call_basic_streambuf_wchar_imbue(this, loc) CALL_VTBL_FUNC(this, 48, void, (basic_streambuf_wchar*, const locale*), (this, loc))
2215 #endif
2216 void __thiscall basic_streambuf_wchar_imbue(basic_streambuf_wchar *this, const locale *loc)
2218 TRACE("(%p %p)\n", this, loc);
2221 /* ?overflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEGG@Z */
2222 /* ?overflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAGG@Z */
2223 /* ?overflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEGG@Z */
2224 /* ?overflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAGG@Z */
2225 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_overflow, 8)
2226 #if _MSVCP_VER >= 100
2227 #define call_basic_streambuf_wchar_overflow(this, ch) CALL_VTBL_FUNC(this, 12, unsigned short, (basic_streambuf_wchar*, unsigned short), (this, ch))
2228 #else
2229 #define call_basic_streambuf_wchar_overflow(this, ch) CALL_VTBL_FUNC(this, 4, unsigned short, (basic_streambuf_wchar*, unsigned short), (this, ch))
2230 #endif
2231 unsigned short __thiscall basic_streambuf_wchar_overflow(basic_streambuf_wchar *this, unsigned short ch)
2233 TRACE("(%p %d)\n", this, ch);
2234 return WEOF;
2237 /* ?pbackfail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEGG@Z */
2238 /* ?pbackfail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAGG@Z */
2239 /* ?pbackfail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEGG@Z */
2240 /* ?pbackfail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAGG@Z */
2241 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pbackfail, 8)
2242 #if _MSVCP_VER >= 100
2243 #define call_basic_streambuf_wchar_pbackfail(this, ch) CALL_VTBL_FUNC(this, 16, unsigned short, (basic_streambuf_wchar*, unsigned short), (this, ch))
2244 #else
2245 #define call_basic_streambuf_wchar_pbackfail(this, ch) CALL_VTBL_FUNC(this, 8, unsigned short, (basic_streambuf_wchar*, unsigned short), (this, ch))
2246 #endif
2247 unsigned short __thiscall basic_streambuf_wchar_pbackfail(basic_streambuf_wchar *this, unsigned short ch)
2249 TRACE("(%p %d)\n", this, ch);
2250 return WEOF;
2253 /* ?pbase@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
2254 /* ?pbase@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
2255 /* ?pbase@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
2256 /* ?pbase@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
2257 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pbase, 4)
2258 wchar_t* __thiscall basic_streambuf_wchar_pbase(const basic_streambuf_wchar *this)
2260 TRACE("(%p)\n", this);
2261 return *this->pwbuf;
2264 /* ?pbump@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXH@Z */
2265 /* ?pbump@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXH@Z */
2266 /* ?pbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXH@Z */
2267 /* ?pbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXH@Z */
2268 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pbump, 8)
2269 void __thiscall basic_streambuf_wchar_pbump(basic_streambuf_wchar *this, int off)
2271 TRACE("(%p %d)\n", this, off);
2272 *this->pwpos += off;
2273 *this->pwsize -= off;
2276 /* ?pptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
2277 /* ?pptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
2278 /* ?pptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
2279 /* ?pptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
2280 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pptr, 4)
2281 wchar_t* __thiscall basic_streambuf_wchar_pptr(const basic_streambuf_wchar *this)
2283 TRACE("(%p)\n", this);
2284 return *this->pwpos;
2287 /* ?pubimbue@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
2288 /* ?pubimbue@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
2289 /* ?pubimbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
2290 /* ?pubimbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
2291 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubimbue, 12)
2292 locale* __thiscall basic_streambuf_wchar_pubimbue(basic_streambuf_wchar *this, locale *ret, const locale *loc)
2294 TRACE("(%p %p)\n", this, loc);
2295 memcpy(ret, this->loc, sizeof(locale));
2296 call_basic_streambuf_wchar_imbue(this, loc);
2297 locale_copy_ctor(this->loc, loc);
2298 return ret;
2301 /* ?seekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
2302 /* ?seekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
2303 /* ?seekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
2304 /* ?seekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
2305 #if STREAMOFF_BITS == 64
2306 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_seekoff, 24)
2307 #else
2308 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_seekoff, 20)
2309 #endif
2310 #if _MSVCP_VER >= 100
2311 #define call_basic_streambuf_wchar_seekoff(this, ret, off, way, mode) CALL_VTBL_FUNC(this, 40, fpos_int*, (basic_streambuf_wchar*, fpos_int*, streamoff, int, int), (this, ret, off, way, mode))
2312 #elif _MSVCP_VER >= 80
2313 #define call_basic_streambuf_wchar_seekoff(this, ret, off, way, mode) CALL_VTBL_FUNC(this, 36, fpos_int*, (basic_streambuf_wchar*, fpos_int*, streamoff, int, int), (this, ret, off, way, mode))
2314 #else
2315 #define call_basic_streambuf_wchar_seekoff(this, ret, off, way, mode) CALL_VTBL_FUNC(this, 32, fpos_int*, (basic_streambuf_wchar*, fpos_int*, streamoff, int, int), (this, ret, off, way, mode))
2316 #endif
2317 fpos_int* __thiscall basic_streambuf_wchar_seekoff(basic_streambuf_wchar *this,
2318 fpos_int *ret, streamoff off, int way, int mode)
2320 TRACE("(%p %s %d %d)\n", this, wine_dbgstr_longlong(off), way, mode);
2321 ret->off = -1;
2322 ret->pos = 0;
2323 ret->state = 0;
2324 return ret;
2327 /* ?pubseekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@JHH@Z */
2328 /* ?pubseekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@_JHH@Z */
2329 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@JHH@Z */
2330 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@_JHH@Z */
2331 #if STREAMOFF_BITS == 64
2332 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekoff, 24)
2333 #else
2334 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekoff, 20)
2335 #endif
2336 fpos_int* __thiscall basic_streambuf_wchar_pubseekoff(basic_streambuf_wchar *this,
2337 fpos_int *ret, streamoff off, int way, int mode)
2339 TRACE("(%p %s %d %d)\n", this, wine_dbgstr_longlong(off), way, mode);
2340 return call_basic_streambuf_wchar_seekoff(this, ret, off, way, mode);
2343 /* ?pubseekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@JII@Z */
2344 /* ?pubseekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@_JII@Z */
2345 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@JII@Z */
2346 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@_JII@Z */
2347 #if STREAMOFF_BITS == 64
2348 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekoff_old, 24)
2349 #else
2350 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekoff_old, 20)
2351 #endif
2352 fpos_int* __thiscall basic_streambuf_wchar_pubseekoff_old(basic_streambuf_wchar *this,
2353 fpos_int *ret, streamoff off, unsigned int way, unsigned int mode)
2355 TRACE("(%p %s %d %d)\n", this, wine_dbgstr_longlong(off), way, mode);
2356 return basic_streambuf_wchar_pubseekoff(this, ret, off, way, mode);
2359 /* ?seekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
2360 /* ?seekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
2361 /* ?seekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
2362 /* ?seekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
2363 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_seekpos, 36)
2364 #if _MSVCP_VER >= 100
2365 #define call_basic_streambuf_wchar_seekpos(this, ret, pos, mode) CALL_VTBL_FUNC(this, 44, fpos_int*, (basic_streambuf_wchar*, fpos_int*, fpos_int, int), (this, ret, pos, mode))
2366 #elif _MSVCP_VER >= 80
2367 #define call_basic_streambuf_wchar_seekpos(this, ret, pos, mode) CALL_VTBL_FUNC(this, 40, fpos_int*, (basic_streambuf_wchar*, fpos_int*, fpos_int, int), (this, ret, pos, mode))
2368 #else
2369 #define call_basic_streambuf_wchar_seekpos(this, ret, pos, mode) CALL_VTBL_FUNC(this, 36, fpos_int*, (basic_streambuf_wchar*, fpos_int*, fpos_int, int), (this, ret, pos, mode))
2370 #endif
2371 fpos_int* __thiscall basic_streambuf_wchar_seekpos(basic_streambuf_wchar *this,
2372 fpos_int *ret, fpos_int pos, int mode)
2374 TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode);
2375 ret->off = -1;
2376 ret->pos = 0;
2377 ret->state = 0;
2378 return ret;
2381 /* ?pubseekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@V32@H@Z */
2382 /* ?pubseekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@V32@H@Z */
2383 /* ?pubseekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@V32@H@Z */
2384 /* ?pubseekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@V32@H@Z */
2385 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekpos, 36)
2386 fpos_int* __thiscall basic_streambuf_wchar_pubseekpos(basic_streambuf_wchar *this,
2387 fpos_int *ret, fpos_int pos, int mode)
2389 TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode);
2390 return call_basic_streambuf_wchar_seekpos(this, ret, pos, mode);
2393 /* ?pubseekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@V32@I@Z */
2394 /* ?pubseekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@V32@I@Z */
2395 /* ?pubseekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@V32@I@Z */
2396 /* ?pubseekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@V32@I@Z */
2397 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekpos_old, 36)
2398 fpos_int* __thiscall basic_streambuf_wchar_pubseekpos_old(basic_streambuf_wchar *this,
2399 fpos_int *ret, fpos_int pos, unsigned int mode)
2401 TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode);
2402 return basic_streambuf_wchar_pubseekpos(this, ret, pos, mode);
2405 /* ?setbuf@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEPAV12@PA_WH@Z */
2406 /* ?setbuf@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAPEAV12@PEA_W_J@Z */
2407 /* ?setbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEPAV12@PAGH@Z */
2408 /* ?setbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAPEAV12@PEAG_J@Z */
2409 #if STREAMSIZE_BITS == 64
2410 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setbuf, 16)
2411 #else
2412 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setbuf, 12)
2413 #endif
2414 #if _MSVCP_VER >= 100
2415 #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))
2416 #elif _MSVCP_VER >= 80
2417 #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))
2418 #else
2419 #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))
2420 #endif
2421 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_setbuf(basic_streambuf_wchar *this, wchar_t *buf, streamsize count)
2423 TRACE("(%p %p %s)\n", this, buf, wine_dbgstr_longlong(count));
2424 return this;
2427 /* ?pubsetbuf@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PA_WH@Z */
2428 /* ?pubsetbuf@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEA_W_J@Z */
2429 /* ?pubsetbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PAGH@Z */
2430 /* ?pubsetbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEAG_J@Z */
2431 #if STREAMSIZE_BITS == 64
2432 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubsetbuf, 16)
2433 #else
2434 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubsetbuf, 12)
2435 #endif
2436 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_pubsetbuf(basic_streambuf_wchar *this, wchar_t *buf, streamsize count)
2438 TRACE("(%p %p %s)\n", this, buf, wine_dbgstr_longlong(count));
2439 return call_basic_streambuf_wchar_setbuf(this, buf, count);
2442 /* ?sync@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHXZ */
2443 /* ?sync@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAHXZ */
2444 /* ?sync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHXZ */
2445 /* ?sync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAHXZ */
2446 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sync, 4)
2447 #if _MSVCP_VER >= 100
2448 #define call_basic_streambuf_wchar_sync(this) CALL_VTBL_FUNC(this, 52, int, (basic_streambuf_wchar*), (this))
2449 #elif _MSVCP_VER >= 80
2450 #define call_basic_streambuf_wchar_sync(this) CALL_VTBL_FUNC(this, 48, int, (basic_streambuf_wchar*), (this))
2451 #else
2452 #define call_basic_streambuf_wchar_sync(this) CALL_VTBL_FUNC(this, 44, int, (basic_streambuf_wchar*), (this))
2453 #endif
2454 int __thiscall basic_streambuf_wchar_sync(basic_streambuf_wchar *this)
2456 TRACE("(%p)\n", this);
2457 return 0;
2460 /* ?pubsync@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHXZ */
2461 /* ?pubsync@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAHXZ */
2462 /* ?pubsync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHXZ */
2463 /* ?pubsync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAHXZ */
2464 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubsync, 4)
2465 int __thiscall basic_streambuf_wchar_pubsync(basic_streambuf_wchar *this)
2467 TRACE("(%p)\n", this);
2468 return call_basic_streambuf_wchar_sync(this);
2471 /* ?xsgetn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHPA_WH@Z */
2472 /* ?xsgetn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA_JPEA_W_J@Z */
2473 /* ?xsgetn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHPAGH@Z */
2474 /* ?xsgetn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA_JPEAG_J@Z */
2475 #if STREAMSIZE_BITS == 64
2476 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_xsgetn, 16)
2477 #else
2478 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_xsgetn, 12)
2479 #endif
2480 #if _MSVCP_VER >= 100
2481 #define call_basic_streambuf_wchar_xsgetn(this, ptr, count) CALL_VTBL_FUNC(this, 32, streamsize, (basic_streambuf_wchar*, wchar_t*, streamsize), (this, ptr, count))
2482 #else
2483 #define call_basic_streambuf_wchar_xsgetn(this, ptr, count) CALL_VTBL_FUNC(this, 24, streamsize, (basic_streambuf_wchar*, wchar_t*, streamsize), (this, ptr, count))
2484 #endif
2485 streamsize __thiscall basic_streambuf_wchar_xsgetn(basic_streambuf_wchar *this, wchar_t *ptr, streamsize count)
2487 TRACE("(%p %p %s)\n", this, ptr, wine_dbgstr_longlong(count));
2488 return call_basic_streambuf_wchar__Xsgetn_s(this, ptr, -1, count);
2491 /* ?sgetn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHPA_WH@Z */
2492 /* ?sgetn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA_JPEA_W_J@Z */
2493 /* ?sgetn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHPAGH@Z */
2494 /* ?sgetn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA_JPEAG_J@Z */
2495 #if STREAMSIZE_BITS == 64
2496 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sgetn, 16)
2497 #else
2498 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sgetn, 12)
2499 #endif
2500 streamsize __thiscall basic_streambuf_wchar_sgetn(basic_streambuf_wchar *this, wchar_t *ptr, streamsize count)
2502 TRACE("(%p %p %s)\n", this, ptr, wine_dbgstr_longlong(count));
2503 return call_basic_streambuf_wchar_xsgetn(this, ptr, count);
2506 /* ?showmanyc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHXZ */
2507 /* ?showmanyc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA_JXZ */
2508 /* ?showmanyc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHXZ */
2509 /* ?showmanyc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA_JXZ */
2510 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_showmanyc, 4)
2511 #if _MSVCP_VER >= 100
2512 #define call_basic_streambuf_wchar_showmanyc(this) CALL_VTBL_FUNC(this, 20, streamsize, (basic_streambuf_wchar*), (this))
2513 #else
2514 #define call_basic_streambuf_wchar_showmanyc(this) CALL_VTBL_FUNC(this, 12, streamsize, (basic_streambuf_wchar*), (this))
2515 #endif
2516 streamsize __thiscall basic_streambuf_wchar_showmanyc(basic_streambuf_wchar *this)
2518 TRACE("(%p)\n", this);
2519 return 0;
2522 /* ?in_avail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHXZ */
2523 /* ?in_avail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA_JXZ */
2524 /* ?in_avail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHXZ */
2525 /* ?in_avail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA_JXZ */
2526 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_in_avail, 4)
2527 streamsize __thiscall basic_streambuf_wchar_in_avail(basic_streambuf_wchar *this)
2529 streamsize ret;
2531 TRACE("(%p)\n", this);
2533 ret = basic_streambuf_wchar__Gnavail(this);
2534 return ret ? ret : call_basic_streambuf_wchar_showmanyc(this);
2537 /* ?sputbackc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEG_W@Z */
2538 /* ?sputbackc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAG_W@Z */
2539 /* ?sputbackc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGG@Z */
2540 /* ?sputbackc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGG@Z */
2541 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sputbackc, 8)
2542 unsigned short __thiscall basic_streambuf_wchar_sputbackc(basic_streambuf_wchar *this, wchar_t ch)
2544 TRACE("(%p %d)\n", this, ch);
2545 if(*this->prpos && *this->prpos>*this->prbuf && (*this->prpos)[-1]==ch) {
2546 (*this->prsize)++;
2547 (*this->prpos)--;
2548 return ch;
2551 return call_basic_streambuf_wchar_pbackfail(this, ch);
2554 /* ?sputc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEG_W@Z */
2555 /* ?sputc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAG_W@Z */
2556 /* ?sputc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGG@Z */
2557 /* ?sputc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAHG@Z */
2558 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sputc, 8)
2559 unsigned short __thiscall basic_streambuf_wchar_sputc(basic_streambuf_wchar *this, wchar_t ch)
2561 TRACE("(%p %d)\n", this, ch);
2562 return basic_streambuf_wchar__Pnavail(this) ?
2563 (*basic_streambuf_wchar__Pninc(this) = ch) :
2564 call_basic_streambuf_wchar_overflow(this, ch);
2567 /* ?sungetc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
2568 /* ?sungetc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
2569 /* ?sungetc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGXZ */
2570 /* ?sungetc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGXZ */
2571 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sungetc, 4)
2572 unsigned short __thiscall basic_streambuf_wchar_sungetc(basic_streambuf_wchar *this)
2574 TRACE("(%p)\n", this);
2575 if(*this->prpos && *this->prpos>*this->prbuf) {
2576 (*this->prsize)++;
2577 (*this->prpos)--;
2578 return **this->prpos;
2581 return call_basic_streambuf_wchar_pbackfail(this, WEOF);
2584 /* ?stossc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
2585 /* ?stossc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
2586 /* ?stossc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEXXZ */
2587 /* ?stossc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAXXZ */
2588 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_stossc, 4)
2589 void __thiscall basic_streambuf_wchar_stossc(basic_streambuf_wchar *this)
2591 TRACE("(%p)\n", this);
2592 if(basic_streambuf_wchar__Gnavail(this))
2593 basic_streambuf_wchar__Gninc(this);
2594 else
2595 call_basic_streambuf_wchar_uflow(this);
2598 /* ?sbumpc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
2599 /* ?sbumpc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
2600 /* ?sbumpc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGXZ */
2601 /* ?sbumpc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGXZ */
2602 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sbumpc, 4)
2603 unsigned short __thiscall basic_streambuf_wchar_sbumpc(basic_streambuf_wchar *this)
2605 TRACE("(%p)\n", this);
2606 return basic_streambuf_wchar__Gnavail(this) ?
2607 *basic_streambuf_wchar__Gninc(this) : call_basic_streambuf_wchar_uflow(this);
2610 /* ?sgetc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
2611 /* ?sgetc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
2612 /* ?sgetc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGXZ */
2613 /* ?sgetc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGXZ */
2614 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sgetc, 4)
2615 unsigned short __thiscall basic_streambuf_wchar_sgetc(basic_streambuf_wchar *this)
2617 TRACE("(%p)\n", this);
2618 return basic_streambuf_wchar__Gnavail(this) ?
2619 *basic_streambuf_wchar_gptr(this) : call_basic_streambuf_wchar_underflow(this);
2622 /* ?snextc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
2623 /* ?snextc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
2624 /* ?snextc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGXZ */
2625 /* ?snextc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGXZ */
2626 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_snextc, 4)
2627 unsigned short __thiscall basic_streambuf_wchar_snextc(basic_streambuf_wchar *this)
2629 TRACE("(%p)\n", this);
2631 if(basic_streambuf_wchar__Gnavail(this) > 1)
2632 return *basic_streambuf_wchar__Gnpreinc(this);
2633 return basic_streambuf_wchar_sbumpc(this)==WEOF ?
2634 WEOF : basic_streambuf_wchar_sgetc(this);
2637 /* ?xsputn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHPB_WH@Z */
2638 /* ?xsputn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA_JPEB_W_J@Z */
2639 /* ?xsputn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHPBGH@Z */
2640 /* ?xsputn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA_JPEBG_J@Z */
2641 #if STREAMSIZE_BITS == 64
2642 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_xsputn, 16)
2643 #else
2644 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_xsputn, 12)
2645 #endif
2646 #if _MSVCP_VER >= 100
2647 #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))
2648 #elif _MSVCP_VER >= 80
2649 #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))
2650 #else
2651 #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))
2652 #endif
2653 streamsize __thiscall basic_streambuf_wchar_xsputn(basic_streambuf_wchar *this, const wchar_t *ptr, streamsize count)
2655 streamsize copied, chunk;
2657 TRACE("(%p %p %s)\n", this, ptr, wine_dbgstr_longlong(count));
2659 for(copied=0; copied<count;) {
2660 chunk = basic_streambuf_wchar__Pnavail(this);
2661 if(chunk > count-copied)
2662 chunk = count-copied;
2664 if(chunk > 0) {
2665 memcpy(*this->pwpos, ptr+copied, chunk*sizeof(wchar_t));
2666 *this->pwpos += chunk;
2667 *this->pwsize -= chunk;
2668 copied += chunk;
2669 }else if(call_basic_streambuf_wchar_overflow(this, ptr[copied]) != WEOF) {
2670 copied++;
2671 }else {
2672 break;
2676 return copied;
2679 /* ?sputn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHPB_WH@Z */
2680 /* ?sputn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA_JPEB_W_J@Z */
2681 /* ?sputn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHPBGH@Z */
2682 /* ?sputn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA_JPEBG_J@Z */
2683 #if STREAMSIZE_BITS == 64
2684 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sputn, 16)
2685 #else
2686 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sputn, 12)
2687 #endif
2688 streamsize __thiscall basic_streambuf_wchar_sputn(basic_streambuf_wchar *this, const wchar_t *ptr, streamsize count)
2690 TRACE("(%p %p %s)\n", this, ptr, wine_dbgstr_longlong(count));
2691 return call_basic_streambuf_wchar_xsputn(this, ptr, count);
2694 /* ?swap@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXAAV12@@Z */
2695 /* ?swap@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXAEAV12@@Z */
2696 /* ?swap@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXAAV12@@Z */
2697 /* ?swap@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXAAV12@@Z */
2698 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_swap, 8)
2699 void __thiscall basic_streambuf_wchar_swap(basic_streambuf_wchar *this, basic_streambuf_wchar *r)
2701 basic_streambuf_wchar tmp;
2703 TRACE("(%p %p)\n", this, r);
2705 if(this == r)
2706 return;
2708 tmp = *this;
2709 *this = *r;
2710 this->vtable = tmp.vtable;
2711 tmp.vtable = r->vtable;
2712 *r = tmp;
2715 /* ?_Stinit@?1??_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@23@@Z@4HA */
2716 /* ?_Stinit@?1??_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@23@@Z@4HA */
2717 int basic_filebuf_char__Init__Stinit = 0;
2719 /* ?_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@12@@Z */
2720 /* ?_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@12@@Z */
2721 DEFINE_THISCALL_WRAPPER(basic_filebuf_char__Init, 12)
2722 void __thiscall basic_filebuf_char__Init(basic_filebuf_char *this, FILE *file, basic_filebuf__Initfl which)
2724 TRACE("(%p %p %d)\n", this, file, which);
2726 this->cvt = NULL;
2727 this->wrotesome = FALSE;
2728 this->state = basic_filebuf_char__Init__Stinit;
2729 this->close = (which == INITFL_open);
2730 this->file = file;
2732 basic_streambuf_char__Init_empty(&this->base);
2733 if(file)
2734 basic_streambuf_char__Init(&this->base, &file->_base, &file->_ptr,
2735 &file->_cnt, &file->_base, &file->_ptr, &file->_cnt);
2738 /* ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXPAV?$codecvt@DDH@2@@Z */
2739 /* ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXPEAV?$codecvt@DDH@2@@Z */
2740 DEFINE_THISCALL_WRAPPER(basic_filebuf_char__Initcvt, 8)
2741 void __thiscall basic_filebuf_char__Initcvt(basic_filebuf_char *this, codecvt_char *cvt)
2743 TRACE("(%p %p)\n", this, cvt);
2745 if(codecvt_base_always_noconv(&cvt->base)) {
2746 this->cvt = NULL;
2747 }else {
2748 basic_streambuf_char__Init_empty(&this->base);
2749 this->cvt = cvt;
2753 /* ?_Endwrite@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAE_NXZ */
2754 /* ?_Endwrite@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAA_NXZ */
2755 DEFINE_THISCALL_WRAPPER(basic_filebuf_char__Endwrite, 4)
2756 MSVCP_bool __thiscall basic_filebuf_char__Endwrite(basic_filebuf_char *this)
2758 TRACE("(%p)\n", this);
2760 if(!this->wrotesome || !this->cvt)
2761 return TRUE;
2764 if(call_basic_streambuf_char_overflow(&this->base, EOF) == EOF)
2765 return FALSE;
2767 while(1) {
2768 /* TODO: check if we need a dynamic buffer here */
2769 char buf[128];
2770 char *next;
2771 int ret;
2773 ret = codecvt_char_unshift(this->cvt, &this->state, buf, buf+sizeof(buf), &next);
2774 switch(ret) {
2775 case CODECVT_ok:
2776 this->wrotesome = FALSE;
2777 /* fall through */
2778 case CODECVT_partial:
2779 if(!fwrite(buf, next-buf, 1, this->file))
2780 return FALSE;
2781 if(this->wrotesome)
2782 break;
2783 /* fall through */
2784 case CODECVT_noconv:
2785 if(call_basic_streambuf_char_overflow(&this->base, EOF) == EOF)
2786 return FALSE;
2787 return TRUE;
2788 default:
2789 return FALSE;
2794 /* ?close@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@XZ */
2795 /* ?close@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@XZ */
2796 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_close, 4)
2797 basic_filebuf_char* __thiscall basic_filebuf_char_close(basic_filebuf_char *this)
2799 basic_filebuf_char *ret = this;
2801 TRACE("(%p)\n", this);
2803 if(!this->file)
2804 return NULL;
2806 /* TODO: handle exceptions */
2807 if(!basic_filebuf_char__Endwrite(this))
2808 ret = NULL;
2809 if(fclose(this->file))
2810 ret = NULL;
2812 basic_filebuf_char__Init(this, NULL, INITFL_close);
2813 return ret;
2816 /* ??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAE@PAU_iobuf@@@Z */
2817 /* ??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAA@PEAU_iobuf@@@Z */
2818 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_ctor_file, 8)
2819 basic_filebuf_char* __thiscall basic_filebuf_char_ctor_file(basic_filebuf_char *this, FILE *file)
2821 TRACE("(%p %p)\n", this, file);
2823 basic_streambuf_char_ctor(&this->base);
2824 this->base.vtable = &MSVCP_basic_filebuf_char_vtable;
2826 basic_filebuf_char__Init(this, file, INITFL_new);
2827 return this;
2830 /* ??_F?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
2831 /* ??_F?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
2832 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_ctor, 4)
2833 basic_filebuf_char* __thiscall basic_filebuf_char_ctor(basic_filebuf_char *this)
2835 return basic_filebuf_char_ctor_file(this, NULL);
2838 /* ??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAE@W4_Uninitialized@1@@Z */
2839 /* ??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
2840 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_ctor_uninitialized, 8)
2841 basic_filebuf_char* __thiscall basic_filebuf_char_ctor_uninitialized(basic_filebuf_char *this, int uninitialized)
2843 TRACE("(%p %d)\n", this, uninitialized);
2845 basic_streambuf_char_ctor(&this->base);
2846 this->base.vtable = &MSVCP_basic_filebuf_char_vtable;
2847 return this;
2850 /* ??1?$basic_filebuf@DU?$char_traits@D@std@@@std@@UAE@XZ */
2851 /* ??1?$basic_filebuf@DU?$char_traits@D@std@@@std@@UEAA@XZ */
2852 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_dtor, 4)
2853 void __thiscall basic_filebuf_char_dtor(basic_filebuf_char *this)
2855 TRACE("(%p)\n", this);
2857 if(this->close)
2858 basic_filebuf_char_close(this);
2859 basic_streambuf_char_dtor(&this->base);
2862 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_vector_dtor, 8)
2863 basic_filebuf_char* __thiscall basic_filebuf_char_vector_dtor(basic_filebuf_char *this, unsigned int flags)
2865 TRACE("(%p %x)\n", this, flags);
2866 if(flags & 2) {
2867 /* we have an array, with the number of elements stored before the first object */
2868 INT_PTR i, *ptr = (INT_PTR *)this-1;
2870 for(i=*ptr-1; i>=0; i--)
2871 basic_filebuf_char_dtor(this+i);
2872 MSVCRT_operator_delete(ptr);
2873 } else {
2874 basic_filebuf_char_dtor(this);
2875 if(flags & 1)
2876 MSVCRT_operator_delete(this);
2879 return this;
2882 /* ?is_open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QBE_NXZ */
2883 /* ?is_open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEBA_NXZ */
2884 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_is_open, 4)
2885 MSVCP_bool __thiscall basic_filebuf_char_is_open(const basic_filebuf_char *this)
2887 TRACE("(%p)\n", this);
2888 return this->file != NULL;
2891 /* ?_Fiopen@std@@YAPAU_iobuf@@PB_WHH@Z */
2892 /* ?_Fiopen@std@@YAPEAU_iobuf@@PEB_WHH@Z */
2893 FILE* __cdecl _Fiopen_wchar(const wchar_t *name, int mode, int prot)
2895 static const wchar_t rW[] = {'r',0};
2896 static const struct {
2897 int mode;
2898 const wchar_t str[4];
2899 const wchar_t str_bin[4];
2900 } str_mode[] = {
2901 {OPENMODE_out, {'w',0}, {'w','b',0}},
2902 {OPENMODE_out|OPENMODE_app, {'a',0}, {'a','b',0}},
2903 {OPENMODE_app, {'a',0}, {'a','b',0}},
2904 {OPENMODE_out|OPENMODE_trunc, {'w',0}, {'w','b',0}},
2905 {OPENMODE_in, {'r',0}, {'r','b',0}},
2906 {OPENMODE_in|OPENMODE_out, {'r','+',0}, {'r','+','b',0}},
2907 {OPENMODE_in|OPENMODE_out|OPENMODE_trunc, {'w','+',0}, {'w','+','b',0}},
2908 {OPENMODE_in|OPENMODE_out|OPENMODE_app, {'a','+',0}, {'a','+','b',0}},
2909 {OPENMODE_in|OPENMODE_app, {'a','+',0}, {'a','+','b',0}}
2912 int real_mode = mode & ~(OPENMODE_ate|OPENMODE__Nocreate|OPENMODE__Noreplace|OPENMODE_binary);
2913 size_t mode_idx;
2914 FILE *f = NULL;
2916 TRACE("(%s %d %d)\n", debugstr_w(name), mode, prot);
2918 for(mode_idx=0; mode_idx<sizeof(str_mode)/sizeof(str_mode[0]); mode_idx++)
2919 if(str_mode[mode_idx].mode == real_mode)
2920 break;
2921 if(mode_idx == sizeof(str_mode)/sizeof(str_mode[0]))
2922 return NULL;
2924 if((mode & OPENMODE__Nocreate) && !(f = _wfopen(name, rW)))
2925 return NULL;
2926 else if(f)
2927 fclose(f);
2929 if((mode & OPENMODE__Noreplace) && (mode & (OPENMODE_out|OPENMODE_app))
2930 && (f = _wfopen(name, rW))) {
2931 fclose(f);
2932 return NULL;
2935 #if _MSVCP_VER < 80 /* msvcp60 - msvcp71 are ignoring prot argument */
2936 prot = SH_DENYNO;
2937 #endif
2939 f = _wfsopen(name, (mode & OPENMODE_binary) ? str_mode[mode_idx].str_bin
2940 : str_mode[mode_idx].str, prot);
2941 if(!f)
2942 return NULL;
2944 if((mode & OPENMODE_ate) && fseek(f, 0, SEEK_END)) {
2945 fclose(f);
2946 return NULL;
2949 return f;
2952 /* ?_Fiopen@std@@YAPAU_iobuf@@PBDHH@Z */
2953 /* ?_Fiopen@std@@YAPEAU_iobuf@@PEBDHH@Z */
2954 FILE* __cdecl _Fiopen(const char *name, int mode, int prot)
2956 wchar_t nameW[FILENAME_MAX];
2958 TRACE("(%s %d %d)\n", name, mode, prot);
2960 if(mbstowcs_s(NULL, nameW, FILENAME_MAX, name, FILENAME_MAX-1) != 0)
2961 return NULL;
2962 return _Fiopen_wchar(nameW, mode, prot);
2965 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PB_WHH@Z */
2966 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEB_WHH@Z */
2967 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBGHH@Z */
2968 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBGHH@Z */
2969 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open_wchar, 16)
2970 basic_filebuf_char* __thiscall basic_filebuf_char_open_wchar(basic_filebuf_char *this, const wchar_t *name, int mode, int prot)
2972 FILE *f = NULL;
2974 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
2976 if(basic_filebuf_char_is_open(this))
2977 return NULL;
2979 if(!(f = _Fiopen_wchar(name, mode, prot)))
2980 return NULL;
2982 basic_filebuf_char__Init(this, f, INITFL_open);
2983 basic_filebuf_char__Initcvt(this, codecvt_char_use_facet(this->base.loc));
2984 return this;
2987 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PB_WI@Z */
2988 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEB_WI@Z */
2989 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBGI@Z */
2990 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBGI@Z */
2991 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open_wchar_mode, 12)
2992 basic_filebuf_char* __thiscall basic_filebuf_char_open_wchar_mode(basic_filebuf_char *this, const wchar_t *name, unsigned int mode)
2994 return basic_filebuf_char_open_wchar(this, name, mode, SH_DENYNO);
2997 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBDHH@Z */
2998 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBDHH@Z */
2999 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open, 16)
3000 basic_filebuf_char* __thiscall basic_filebuf_char_open(basic_filebuf_char *this, const char *name, int mode, int prot)
3002 wchar_t nameW[FILENAME_MAX];
3004 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
3006 if(mbstowcs_s(NULL, nameW, FILENAME_MAX, name, FILENAME_MAX-1) != 0)
3007 return NULL;
3008 return basic_filebuf_char_open_wchar(this, nameW, mode, prot);
3011 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBDI@Z */
3012 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBDI@Z */
3013 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open_mode, 12)
3014 basic_filebuf_char* __thiscall basic_filebuf_char_open_mode(basic_filebuf_char *this, const char *name, unsigned int mode)
3016 return basic_filebuf_char_open(this, name, mode, SH_DENYNO);
3019 /* ?overflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
3020 /* ?overflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
3021 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_overflow, 8)
3022 int __thiscall basic_filebuf_char_overflow(basic_filebuf_char *this, int c)
3024 char buf[8], *dyn_buf;
3025 char ch = c, *to_next;
3026 const char *from_next;
3027 int ret, max_size;
3030 TRACE("(%p %d)\n", this, c);
3032 if(!basic_filebuf_char_is_open(this))
3033 return EOF;
3034 if(c == EOF)
3035 return !c;
3037 if(!this->cvt)
3038 return fwrite(&ch, sizeof(char), 1, this->file) ? c : EOF;
3040 from_next = &ch;
3041 do {
3042 ret = codecvt_char_out(this->cvt, &this->state, from_next, &ch+1,
3043 &from_next, buf, buf+sizeof(buf), &to_next);
3045 switch(ret) {
3046 case CODECVT_partial:
3047 if(to_next == buf)
3048 break;
3049 /* fall through */
3050 case CODECVT_ok:
3051 if(!fwrite(buf, to_next-buf, 1, this->file))
3052 return EOF;
3053 if(ret == CODECVT_partial)
3054 continue;
3055 return c;
3056 case CODECVT_noconv:
3057 return fwrite(&ch, sizeof(char), 1, this->file) ? c : EOF;
3058 default:
3059 return EOF;
3062 break;
3063 } while(1);
3065 max_size = codecvt_base_max_length(&this->cvt->base);
3066 dyn_buf = malloc(max_size);
3067 if(!dyn_buf)
3068 return EOF;
3070 ret = codecvt_char_out(this->cvt, &this->state, from_next, &ch+1,
3071 &from_next, dyn_buf, dyn_buf+max_size, &to_next);
3073 switch(ret) {
3074 case CODECVT_ok:
3075 ret = fwrite(dyn_buf, to_next-dyn_buf, 1, this->file);
3076 free(dyn_buf);
3077 return ret ? c : EOF;
3078 case CODECVT_partial:
3079 ERR("buffer should be big enough to store all output\n");
3080 /* fall through */
3081 default:
3082 free(dyn_buf);
3083 return EOF;
3087 /* ?pbackfail@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
3088 /* ?pbackfail@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
3089 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_pbackfail, 8)
3090 int __thiscall basic_filebuf_char_pbackfail(basic_filebuf_char *this, int c)
3092 TRACE("(%p %d)\n", this, c);
3094 if(!basic_filebuf_char_is_open(this))
3095 return EOF;
3097 if(basic_streambuf_char_gptr(&this->base)>basic_streambuf_char_eback(&this->base)
3098 && (c==EOF || (int)(unsigned char)basic_streambuf_char_gptr(&this->base)[-1]==c)) {
3099 basic_streambuf_char__Gndec(&this->base);
3100 return c==EOF ? !c : c;
3101 }else if(c!=EOF && !this->cvt) {
3102 return ungetc(c, this->file);
3105 return EOF;
3108 /* ?uflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
3109 /* ?uflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
3110 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_uflow, 4)
3111 int __thiscall basic_filebuf_char_uflow(basic_filebuf_char *this)
3113 char ch, buf[128], *to_next;
3114 const char *buf_next;
3115 int c, j;
3116 size_t i;
3118 TRACE("(%p)\n", this);
3120 if(!basic_filebuf_char_is_open(this))
3121 return EOF;
3123 if(basic_streambuf_char_gptr(&this->base) < basic_streambuf_char_egptr(&this->base))
3124 return (unsigned char)*basic_streambuf_char__Gninc(&this->base);
3126 c = fgetc(this->file);
3127 if(!this->cvt || c==EOF)
3128 return c;
3130 buf_next = buf;
3131 for(i=0; i < sizeof(buf)/sizeof(buf[0]); i++) {
3132 buf[i] = c;
3134 switch(codecvt_char_in(this->cvt, &this->state, buf_next,
3135 buf+i+1, &buf_next, &ch, &ch+1, &to_next)) {
3136 case CODECVT_partial:
3137 case CODECVT_ok:
3138 if(to_next == &ch) {
3139 c = fgetc(this->file);
3140 if(c == EOF)
3141 return EOF;
3142 continue;
3145 for(j = --i; j >= buf_next-buf; j--)
3146 ungetc(buf[j], this->file);
3147 return ch;
3148 case CODECVT_noconv:
3149 return (unsigned char)buf[0];
3150 default:
3151 return EOF;
3155 FIXME("buffer is too small\n");
3156 return EOF;
3159 /* ?underflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
3160 /* ?underflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
3161 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_underflow, 4)
3162 int __thiscall basic_filebuf_char_underflow(basic_filebuf_char *this)
3164 int ret;
3166 TRACE("(%p)\n", this);
3168 if(basic_streambuf_char_gptr(&this->base) < basic_streambuf_char_egptr(&this->base))
3169 return (unsigned char)*basic_streambuf_char_gptr(&this->base);
3171 ret = call_basic_streambuf_char_uflow(&this->base);
3172 if(ret != EOF)
3173 ret = call_basic_streambuf_char_pbackfail(&this->base, ret);
3174 return ret;
3177 /* ?seekoff@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
3178 /* ?seekoff@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
3179 #if STREAMOFF_BITS == 64
3180 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_seekoff, 24)
3181 #else
3182 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_seekoff, 20)
3183 #endif
3184 fpos_int* __thiscall basic_filebuf_char_seekoff(basic_filebuf_char *this,
3185 fpos_int *ret, streamoff off, int way, int mode)
3187 fpos_t pos;
3189 TRACE("(%p %p %s %d %d)\n", this, ret, wine_dbgstr_longlong(off), way, mode);
3191 if(!basic_filebuf_char_is_open(this) || !basic_filebuf_char__Endwrite(this)
3192 || fseek(this->file, off, way)) {
3193 ret->off = -1;
3194 ret->pos = 0;
3195 ret->state = 0;
3196 return ret;
3199 fgetpos(this->file, &pos);
3200 ret->off = 0;
3201 ret->pos = pos;
3202 ret->state = this->state;
3203 return ret;
3206 /* ?seekpos@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
3207 /* ?seekpos@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
3208 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_seekpos, 36)
3209 fpos_int* __thiscall basic_filebuf_char_seekpos(basic_filebuf_char *this,
3210 fpos_int *ret, fpos_int pos, int mode)
3212 fpos_t fpos;
3214 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_int(&pos), mode);
3216 if(!basic_filebuf_char_is_open(this) || !basic_filebuf_char__Endwrite(this)
3217 || fseek(this->file, (LONG)pos.pos, SEEK_SET)
3218 || (pos.off && fseek(this->file, pos.off, SEEK_CUR))) {
3219 ret->off = -1;
3220 ret->pos = 0;
3221 ret->state = 0;
3222 return ret;
3225 fgetpos(this->file, &fpos);
3226 ret->off = 0;
3227 ret->pos = fpos;
3228 ret->state = this->state;
3229 return ret;
3232 /* ?setbuf@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PADH@Z */
3233 /* ?setbuf@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PEAD_J@Z */
3234 #if STREAMSIZE_BITS == 64
3235 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_setbuf, 16)
3236 #else
3237 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_setbuf, 12)
3238 #endif
3239 basic_streambuf_char* __thiscall basic_filebuf_char_setbuf(basic_filebuf_char *this, char *buf, streamsize count)
3241 TRACE("(%p %p %s)\n", this, buf, wine_dbgstr_longlong(count));
3243 if(!basic_filebuf_char_is_open(this))
3244 return NULL;
3246 if(setvbuf(this->file, buf, (buf==NULL && count==0) ? _IONBF : _IOFBF, count))
3247 return NULL;
3249 basic_filebuf_char__Init(this, this->file, INITFL_open);
3250 return &this->base;
3253 /* ?sync@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
3254 /* ?sync@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
3255 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_sync, 4)
3256 int __thiscall basic_filebuf_char_sync(basic_filebuf_char *this)
3258 TRACE("(%p)\n", this);
3260 if(!basic_filebuf_char_is_open(this))
3261 return 0;
3263 if(call_basic_streambuf_char_overflow(&this->base, EOF) == EOF)
3264 return 0;
3265 return fflush(this->file);
3268 /* ?imbue@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEXABVlocale@2@@Z */
3269 /* ?imbue@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAXAEBVlocale@2@@Z */
3270 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_imbue, 8)
3271 void __thiscall basic_filebuf_char_imbue(basic_filebuf_char *this, const locale *loc)
3273 TRACE("(%p %p)\n", this, loc);
3274 basic_filebuf_char__Initcvt(this, codecvt_char_use_facet(loc));
3277 /* ?_Stinit@?1??_Init@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@23@@Z@4HA */
3278 /* ?_Stinit@?1??_Init@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@23@@Z@4HA */
3279 int basic_filebuf_wchar__Init__Stinit = 0;
3281 /* ?_Stinit@?1??_Init@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@23@@Z@4HA */
3282 /* ?_Stinit@?1??_Init@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@23@@Z@4HA */
3283 int basic_filebuf_short__Init__Stinit = 0;
3285 /* ?_Init@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@12@@Z */
3286 /* ?_Init@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@12@@Z */
3287 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar__Init, 12)
3288 void __thiscall basic_filebuf_wchar__Init(basic_filebuf_wchar *this, FILE *file, basic_filebuf__Initfl which)
3290 TRACE("(%p %p %d)\n", this, file, which);
3292 this->cvt = NULL;
3293 this->wrotesome = FALSE;
3294 this->state = basic_filebuf_wchar__Init__Stinit;
3295 this->close = (which == INITFL_open);
3296 this->file = file;
3298 basic_streambuf_wchar__Init_empty(&this->base);
3301 /* ?_Init@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@12@@Z */
3302 /* ?_Init@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@12@@Z */
3303 DEFINE_THISCALL_WRAPPER(basic_filebuf_short__Init, 12)
3304 void __thiscall basic_filebuf_short__Init(basic_filebuf_wchar *this, FILE *file, basic_filebuf__Initfl which)
3306 TRACE("(%p %p %d)\n", this, file, which);
3308 this->cvt = NULL;
3309 this->wrotesome = FALSE;
3310 this->state = basic_filebuf_short__Init__Stinit;
3311 this->close = (which == INITFL_open);
3312 this->file = file;
3314 basic_streambuf_wchar__Init_empty(&this->base);
3317 /* ?_Initcvt@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAEXPAV?$codecvt@_WDH@2@@Z */
3318 /* ?_Initcvt@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAV?$codecvt@_WDH@2@@Z */
3319 /* ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXPAV?$codecvt@GDH@2@@Z */
3320 /* ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXPEAV?$codecvt@GDH@2@@Z */
3321 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar__Initcvt, 8)
3322 void __thiscall basic_filebuf_wchar__Initcvt(basic_filebuf_wchar *this, codecvt_wchar *cvt)
3324 TRACE("(%p %p)\n", this, cvt);
3326 if(codecvt_base_always_noconv(&cvt->base)) {
3327 this->cvt = NULL;
3328 }else {
3329 basic_streambuf_wchar__Init_empty(&this->base);
3330 this->cvt = cvt;
3334 /* ?_Endwrite@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAE_NXZ */
3335 /* ?_Endwrite@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAA_NXZ */
3336 /* ?_Endwrite@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAE_NXZ */
3337 /* ?_Endwrite@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAA_NXZ */
3338 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar__Endwrite, 4)
3339 MSVCP_bool __thiscall basic_filebuf_wchar__Endwrite(basic_filebuf_wchar *this)
3341 TRACE("(%p)\n", this);
3343 if(!this->wrotesome || !this->cvt)
3344 return TRUE;
3346 if(call_basic_streambuf_wchar_overflow(&this->base, WEOF) == WEOF)
3347 return FALSE;
3349 while(1) {
3350 /* TODO: check if we need a dynamic buffer here */
3351 char buf[128];
3352 char *next;
3353 int ret;
3355 ret = codecvt_wchar_unshift(this->cvt, &this->state, buf, buf+sizeof(buf), &next);
3356 switch(ret) {
3357 case CODECVT_ok:
3358 this->wrotesome = FALSE;
3359 /* fall through */
3360 case CODECVT_partial:
3361 if(!fwrite(buf, next-buf, 1, this->file))
3362 return FALSE;
3363 if(this->wrotesome)
3364 break;
3365 /* fall through */
3366 case CODECVT_noconv:
3367 if(call_basic_streambuf_wchar_overflow(&this->base, WEOF) == WEOF)
3368 return FALSE;
3369 return TRUE;
3370 default:
3371 return FALSE;
3376 /* ?close@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@XZ */
3377 /* ?close@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@XZ */
3378 /* ?close@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@XZ */
3379 /* ?close@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@XZ */
3380 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_close, 4)
3381 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_close(basic_filebuf_wchar *this)
3383 basic_filebuf_wchar *ret = this;
3385 TRACE("(%p)\n", this);
3387 if(!this->file)
3388 return NULL;
3390 /* TODO: handle exceptions */
3391 if(!basic_filebuf_wchar__Endwrite(this))
3392 ret = NULL;
3393 if(fclose(this->file))
3394 ret = NULL;
3396 basic_filebuf_wchar__Init(this, NULL, INITFL_close);
3397 return ret;
3400 /* ??0?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAE@PAU_iobuf@@@Z */
3401 /* ??0?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAA@PEAU_iobuf@@@Z */
3402 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_ctor_file, 8)
3403 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_ctor_file(basic_filebuf_wchar *this, FILE *file)
3405 TRACE("(%p %p)\n", this, file);
3407 basic_streambuf_wchar_ctor(&this->base);
3408 this->base.vtable = &MSVCP_basic_filebuf_wchar_vtable;
3410 basic_filebuf_wchar__Init(this, file, INITFL_new);
3411 return this;
3414 /* ??0?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAE@PAU_iobuf@@@Z */
3415 /* ??0?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAA@PEAU_iobuf@@@Z */
3416 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_ctor_file, 8)
3417 basic_filebuf_wchar* __thiscall basic_filebuf_short_ctor_file(basic_filebuf_wchar *this, FILE *file)
3419 TRACE("(%p %p)\n", this, file);
3421 basic_streambuf_short_ctor(&this->base);
3422 this->base.vtable = &MSVCP_basic_filebuf_short_vtable;
3424 basic_filebuf_short__Init(this, file, INITFL_new);
3425 return this;
3428 /* ??_F?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
3429 /* ??_F?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
3430 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_ctor, 4)
3431 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_ctor(basic_filebuf_wchar *this)
3433 return basic_filebuf_wchar_ctor_file(this, NULL);
3436 /* ??_F?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEXXZ */
3437 /* ??_F?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAXXZ */
3438 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_ctor, 4)
3439 basic_filebuf_wchar* __thiscall basic_filebuf_short_ctor(basic_filebuf_wchar *this)
3441 return basic_filebuf_short_ctor_file(this, NULL);
3444 /* ??0?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAE@W4_Uninitialized@1@@Z */
3445 /* ??0?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
3446 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_ctor_uninitialized, 8)
3447 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_ctor_uninitialized(basic_filebuf_wchar *this, int uninitialized)
3449 TRACE("(%p %d)\n", this, uninitialized);
3451 basic_streambuf_wchar_ctor(&this->base);
3452 this->base.vtable = &MSVCP_basic_filebuf_wchar_vtable;
3453 return this;
3456 /* ??0?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAE@W4_Uninitialized@1@@Z */
3457 /* ??0?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
3458 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_ctor_uninitialized, 8)
3459 basic_filebuf_wchar* __thiscall basic_filebuf_short_ctor_uninitialized(basic_filebuf_wchar *this, int uninitialized)
3461 TRACE("(%p %d)\n", this, uninitialized);
3463 basic_streambuf_short_ctor(&this->base);
3464 this->base.vtable = &MSVCP_basic_filebuf_short_vtable;
3465 return this;
3468 /* ??1?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
3469 /* ??1?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
3470 /* ??1?$basic_filebuf@GU?$char_traits@G@std@@@std@@UAE@XZ */
3471 /* ??1?$basic_filebuf@GU?$char_traits@G@std@@@std@@UEAA@XZ */
3472 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_dtor, 4)
3473 void __thiscall basic_filebuf_wchar_dtor(basic_filebuf_wchar *this)
3475 TRACE("(%p)\n", this);
3477 if(this->close)
3478 basic_filebuf_wchar_close(this);
3479 basic_streambuf_wchar_dtor(&this->base);
3482 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_vector_dtor, 8)
3483 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_vector_dtor(basic_filebuf_wchar *this, unsigned int flags)
3485 TRACE("(%p %x)\n", this, flags);
3486 if(flags & 2) {
3487 /* we have an array, with the number of elements stored before the first object */
3488 INT_PTR i, *ptr = (INT_PTR *)this-1;
3490 for(i=*ptr-1; i>=0; i--)
3491 basic_filebuf_wchar_dtor(this+i);
3492 MSVCRT_operator_delete(ptr);
3493 } else {
3494 basic_filebuf_wchar_dtor(this);
3495 if(flags & 1)
3496 MSVCRT_operator_delete(this);
3499 return this;
3502 /* ?is_open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QBE_NXZ */
3503 /* ?is_open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEBA_NXZ */
3504 /* ?is_open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QBE_NXZ */
3505 /* ?is_open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEBA_NXZ */
3506 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_is_open, 4)
3507 MSVCP_bool __thiscall basic_filebuf_wchar_is_open(const basic_filebuf_wchar *this)
3509 TRACE("(%p)\n", this);
3510 return this->file != NULL;
3513 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PB_WHH@Z */
3514 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEB_WHH@Z */
3515 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PBGHH@Z */
3516 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEBGHH@Z */
3517 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_open_wchar, 16)
3518 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_open_wchar(basic_filebuf_wchar *this, const wchar_t *name, int mode, int prot)
3520 FILE *f = NULL;
3522 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
3524 if(basic_filebuf_wchar_is_open(this))
3525 return NULL;
3527 if(!(f = _Fiopen_wchar(name, mode, prot)))
3528 return NULL;
3530 basic_filebuf_wchar__Init(this, f, INITFL_open);
3531 basic_filebuf_wchar__Initcvt(this, codecvt_wchar_use_facet(this->base.loc));
3532 return this;
3535 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PB_WHH@Z */
3536 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEB_WHH@Z */
3537 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBGHH@Z */
3538 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBGHH@Z */
3539 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_open_wchar, 16)
3540 basic_filebuf_wchar* __thiscall basic_filebuf_short_open_wchar(basic_filebuf_wchar *this, const wchar_t *name, int mode, int prot)
3542 FILE *f = NULL;
3544 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
3546 if(basic_filebuf_wchar_is_open(this))
3547 return NULL;
3549 if(!(f = _Fiopen_wchar(name, mode, prot)))
3550 return NULL;
3552 basic_filebuf_short__Init(this, f, INITFL_open);
3553 basic_filebuf_wchar__Initcvt(this, codecvt_short_use_facet(this->base.loc));
3554 return this;
3557 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PB_WI@Z */
3558 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEB_WI@Z */
3559 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PBGI@Z */
3560 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEBGI@Z */
3561 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_open_wchar_mode, 12)
3562 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_open_wchar_mode(basic_filebuf_wchar *this, const wchar_t *name, unsigned int mode)
3564 return basic_filebuf_wchar_open_wchar(this, name, mode, SH_DENYNO);
3567 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PB_WI@Z */
3568 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEB_WI@Z */
3569 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBGI@Z */
3570 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBGI@Z */
3571 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_open_wchar_mode, 12)
3572 basic_filebuf_wchar* __thiscall basic_filebuf_short_open_wchar_mode(basic_filebuf_wchar *this, const wchar_t *name, unsigned int mode)
3574 return basic_filebuf_short_open_wchar(this, name, mode, SH_DENYNO);
3577 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PBDHH@Z */
3578 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEBDHH@Z */
3579 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_open, 16)
3580 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_open(basic_filebuf_wchar *this, const char *name, int mode, int prot)
3582 wchar_t nameW[FILENAME_MAX];
3584 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
3586 if(mbstowcs_s(NULL, nameW, FILENAME_MAX, name, FILENAME_MAX-1) != 0)
3587 return NULL;
3588 return basic_filebuf_wchar_open_wchar(this, nameW, mode, prot);
3591 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBDHH@Z */
3592 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBDHH@Z */
3593 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_open, 16)
3594 basic_filebuf_wchar* __thiscall basic_filebuf_short_open(basic_filebuf_wchar *this, const char *name, int mode, int prot)
3596 wchar_t nameW[FILENAME_MAX];
3598 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
3600 if(mbstowcs_s(NULL, nameW, FILENAME_MAX, name, FILENAME_MAX-1) != 0)
3601 return NULL;
3602 return basic_filebuf_short_open_wchar(this, nameW, mode, prot);
3605 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PBDI@Z */
3606 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEBDI@Z */
3607 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_open_mode, 12)
3608 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_open_mode(basic_filebuf_wchar *this, const char *name, unsigned int mode)
3610 return basic_filebuf_wchar_open(this, name, mode, SH_DENYNO);
3613 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBDI@Z */
3614 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBDI@Z */
3615 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_open_mode, 12)
3616 basic_filebuf_wchar* __thiscall basic_filebuf_short_open_mode(basic_filebuf_wchar *this, const char *name, unsigned int mode)
3618 return basic_filebuf_short_open(this, name, mode, SH_DENYNO);
3621 /* ?overflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEGG@Z */
3622 /* ?overflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAGG@Z */
3623 /* ?overflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEGG@Z */
3624 /* ?overflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAGG@Z */
3625 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_overflow, 8)
3626 unsigned short __thiscall basic_filebuf_wchar_overflow(basic_filebuf_wchar *this, unsigned short c)
3628 char buf[8], *dyn_buf, *to_next;
3629 wchar_t ch = c;
3630 const wchar_t *from_next;
3631 int max_size;
3632 unsigned short ret;
3635 TRACE("(%p %d)\n", this, c);
3637 if(!basic_filebuf_wchar_is_open(this))
3638 return WEOF;
3639 if(c == WEOF)
3640 return !c;
3642 if(!this->cvt)
3643 return fwrite(&ch, sizeof(wchar_t), 1, this->file) ? c : WEOF;
3645 from_next = &ch;
3646 do {
3647 ret = codecvt_wchar_out(this->cvt, &this->state, from_next, &ch+1,
3648 &from_next, buf, buf+sizeof(buf), &to_next);
3650 switch(ret) {
3651 case CODECVT_partial:
3652 if(to_next == buf)
3653 break;
3654 /* fall through */
3655 case CODECVT_ok:
3656 if(!fwrite(buf, to_next-buf, 1, this->file))
3657 return WEOF;
3658 if(ret == CODECVT_partial)
3659 continue;
3660 return c;
3661 case CODECVT_noconv:
3662 return fwrite(&ch, sizeof(wchar_t), 1, this->file) ? c : WEOF;
3663 default:
3664 return WEOF;
3667 break;
3668 } while(1);
3670 max_size = codecvt_base_max_length(&this->cvt->base);
3671 dyn_buf = malloc(max_size);
3672 if(!dyn_buf)
3673 return WEOF;
3675 ret = codecvt_wchar_out(this->cvt, &this->state, from_next, &ch+1,
3676 &from_next, dyn_buf, dyn_buf+max_size, &to_next);
3678 switch(ret) {
3679 case CODECVT_ok:
3680 ret = fwrite(dyn_buf, to_next-dyn_buf, 1, this->file);
3681 free(dyn_buf);
3682 return ret ? c : WEOF;
3683 case CODECVT_partial:
3684 ERR("buffer should be big enough to store all output\n");
3685 /* fall through */
3686 default:
3687 free(dyn_buf);
3688 return WEOF;
3692 /* ?pbackfail@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEGG@Z */
3693 /* ?pbackfail@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAGG@Z */
3694 /* ?pbackfail@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEGG@Z */
3695 /* ?pbackfail@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAGG@Z */
3696 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_pbackfail, 8)
3697 unsigned short __thiscall basic_filebuf_wchar_pbackfail(basic_filebuf_wchar *this, unsigned short c)
3699 TRACE("(%p %d)\n", this, c);
3701 if(!basic_filebuf_wchar_is_open(this))
3702 return WEOF;
3704 if(basic_streambuf_wchar_gptr(&this->base)>basic_streambuf_wchar_eback(&this->base)
3705 && (c==WEOF || basic_streambuf_wchar_gptr(&this->base)[-1]==c)) {
3706 basic_streambuf_wchar__Gndec(&this->base);
3707 return c==WEOF ? !c : c;
3708 }else if(c!=WEOF && !this->cvt) {
3709 return ungetwc(c, this->file);
3710 }else if(c!=WEOF && basic_streambuf_wchar_gptr(&this->base)!=&this->putback) {
3711 this->putback = c;
3712 basic_streambuf_wchar_setg(&this->base, &this->putback, &this->putback, &this->putback+1);
3713 return c;
3716 return WEOF;
3719 /* ?uflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEGXZ */
3720 /* ?uflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAGXZ */
3721 /* ?uflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEGXZ */
3722 /* ?uflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAGXZ */
3723 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_uflow, 4)
3724 unsigned short __thiscall basic_filebuf_wchar_uflow(basic_filebuf_wchar *this)
3726 wchar_t ch, *to_next;
3727 char buf[128];
3728 const char *buf_next;
3729 int c, j;
3730 size_t i;
3732 TRACE("(%p)\n", this);
3734 if(!basic_filebuf_wchar_is_open(this))
3735 return WEOF;
3737 if(basic_streambuf_wchar_gptr(&this->base) < basic_streambuf_wchar_egptr(&this->base))
3738 return *basic_streambuf_wchar__Gninc(&this->base);
3740 if(!this->cvt)
3741 return fgetwc(this->file);
3743 buf_next = buf;
3744 for(i=0; i < sizeof(buf)/sizeof(buf[0]); i++) {
3745 if((c = fgetc(this->file)) == EOF)
3746 return WEOF;
3747 buf[i] = c;
3749 switch(codecvt_wchar_in(this->cvt, &this->state, buf_next,
3750 buf+i+1, &buf_next, &ch, &ch+1, &to_next)) {
3751 case CODECVT_partial:
3752 case CODECVT_ok:
3753 if(to_next == &ch)
3754 continue;
3756 for(j = --i; j >= buf_next-buf; j--)
3757 ungetc(buf[j], this->file);
3758 return ch;
3759 case CODECVT_noconv:
3760 if(i+1 < sizeof(wchar_t))
3761 continue;
3763 memcpy(&ch, buf, sizeof(wchar_t));
3764 return ch;
3765 default:
3766 return WEOF;
3770 FIXME("buffer is too small\n");
3771 return WEOF;
3774 /* ?underflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEGXZ */
3775 /* ?underflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAGXZ */
3776 /* ?underflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEGXZ */
3777 /* ?underflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAGXZ */
3778 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_underflow, 4)
3779 unsigned short __thiscall basic_filebuf_wchar_underflow(basic_filebuf_wchar *this)
3781 unsigned short ret;
3783 TRACE("(%p)\n", this);
3785 if(basic_streambuf_wchar_gptr(&this->base) < basic_streambuf_wchar_egptr(&this->base))
3786 return *basic_streambuf_wchar_gptr(&this->base);
3788 ret = call_basic_streambuf_wchar_uflow(&this->base);
3789 if(ret != WEOF)
3790 ret = call_basic_streambuf_wchar_pbackfail(&this->base, ret);
3791 return ret;
3794 /* ?seekoff@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
3795 /* ?seekoff@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
3796 /* ?seekoff@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
3797 /* ?seekoff@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
3798 #if STREAMOFF_BITS == 64
3799 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_seekoff, 24)
3800 #else
3801 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_seekoff, 20)
3802 #endif
3803 fpos_int* __thiscall basic_filebuf_wchar_seekoff(basic_filebuf_wchar *this,
3804 fpos_int *ret, streamoff off, int way, int mode)
3806 fpos_t pos;
3808 TRACE("(%p %p %s %d %d)\n", this, ret, wine_dbgstr_longlong(off), way, mode);
3810 if(basic_streambuf_wchar_gptr(&this->base) == &this->putback) {
3811 if(way == SEEKDIR_cur)
3812 off -= sizeof(wchar_t);
3814 basic_streambuf_wchar_setg(&this->base, &this->putback, &this->putback+1, &this->putback+1);
3817 if(!basic_filebuf_wchar_is_open(this) || !basic_filebuf_wchar__Endwrite(this)
3818 || fseek(this->file, off, way)) {
3819 ret->off = -1;
3820 ret->pos = 0;
3821 ret->state = 0;
3822 return ret;
3825 fgetpos(this->file, &pos);
3826 ret->off = 0;
3827 ret->pos = pos;
3828 ret->state = this->state;
3829 return ret;
3832 /* ?seekpos@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
3833 /* ?seekpos@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
3834 /* ?seekpos@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
3835 /* ?seekpos@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
3836 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_seekpos, 36)
3837 fpos_int* __thiscall basic_filebuf_wchar_seekpos(basic_filebuf_wchar *this,
3838 fpos_int *ret, fpos_int pos, int mode)
3840 fpos_t fpos;
3842 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_int(&pos), mode);
3844 if(!basic_filebuf_wchar_is_open(this) || !basic_filebuf_wchar__Endwrite(this)
3845 || fseek(this->file, (LONG)pos.pos, SEEK_SET)
3846 || (pos.off && fseek(this->file, pos.off, SEEK_CUR))) {
3847 ret->off = -1;
3848 ret->pos = 0;
3849 ret->state = 0;
3850 return ret;
3853 if(basic_streambuf_wchar_gptr(&this->base) == &this->putback)
3854 basic_streambuf_wchar_setg(&this->base, &this->putback, &this->putback+1, &this->putback+1);
3856 fgetpos(this->file, &fpos);
3857 ret->off = 0;
3858 ret->pos = fpos;
3859 ret->state = this->state;
3860 return ret;
3863 /* ?setbuf@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@PA_WH@Z */
3864 /* ?setbuf@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@PEA_W_J@Z */
3865 #if STREAMSIZE_BITS == 64
3866 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_setbuf, 16)
3867 #else
3868 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_setbuf, 12)
3869 #endif
3870 basic_streambuf_wchar* __thiscall basic_filebuf_wchar_setbuf(basic_filebuf_wchar *this, wchar_t *buf, streamsize count)
3872 TRACE("(%p %p %s)\n", this, buf, wine_dbgstr_longlong(count));
3874 if(!basic_filebuf_wchar_is_open(this))
3875 return NULL;
3877 if(setvbuf(this->file, (char*)buf, (buf==NULL && count==0) ? _IONBF : _IOFBF, count*sizeof(wchar_t)))
3878 return NULL;
3880 basic_filebuf_wchar__Init(this, this->file, INITFL_open);
3881 return &this->base;
3884 /* ?setbuf@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEPAV?$basic_streambuf@GU?$char_traits@G@std@@@2@PAGH@Z */
3885 /* ?setbuf@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAPEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@PEAG_J@Z */
3886 #if STREAMSIZE_BITS == 64
3887 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_setbuf, 16)
3888 #else
3889 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_setbuf, 12)
3890 #endif
3891 basic_streambuf_wchar* __thiscall basic_filebuf_short_setbuf(basic_filebuf_wchar *this, wchar_t *buf, streamsize count)
3893 TRACE("(%p %p %s)\n", this, buf, wine_dbgstr_longlong(count));
3895 if(!basic_filebuf_wchar_is_open(this))
3896 return NULL;
3898 if(setvbuf(this->file, (char*)buf, (buf==NULL && count==0) ? _IONBF : _IOFBF, count*sizeof(wchar_t)))
3899 return NULL;
3901 basic_filebuf_short__Init(this, this->file, INITFL_open);
3902 return &this->base;
3905 /* ?sync@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEHXZ */
3906 /* ?sync@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAHXZ */
3907 /* ?sync@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEHXZ */
3908 /* ?sync@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAHXZ */
3909 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_sync, 4)
3910 int __thiscall basic_filebuf_wchar_sync(basic_filebuf_wchar *this)
3912 TRACE("(%p)\n", this);
3914 if(!basic_filebuf_wchar_is_open(this))
3915 return 0;
3917 if(call_basic_streambuf_wchar_overflow(&this->base, WEOF) == WEOF)
3918 return 0;
3919 return fflush(this->file);
3922 /* ?imbue@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEXABVlocale@2@@Z */
3923 /* ?imbue@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAXAEBVlocale@2@@Z */
3924 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_imbue, 8)
3925 void __thiscall basic_filebuf_wchar_imbue(basic_filebuf_wchar *this, const locale *loc)
3927 TRACE("(%p %p)\n", this, loc);
3928 basic_filebuf_wchar__Initcvt(this, codecvt_wchar_use_facet(loc));
3931 /* ?imbue@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEXABVlocale@2@@Z */
3932 /* ?imbue@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAXAEBVlocale@2@@Z */
3933 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_imbue, 8)
3934 void __thiscall basic_filebuf_short_imbue(basic_filebuf_wchar *this, const locale *loc)
3936 TRACE("(%p %p)\n", this, loc);
3937 basic_filebuf_wchar__Initcvt(this, codecvt_short_use_facet(loc));
3940 /* ?_Getstate@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEHH@Z */
3941 /* ?_Getstate@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAHH@Z */
3942 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char__Getstate, 8)
3943 int __thiscall basic_stringbuf_char__Getstate(basic_stringbuf_char *this, IOSB_openmode mode)
3945 int state = 0;
3947 if(!(mode & OPENMODE_in))
3948 state |= STRINGBUF_no_read;
3950 if(!(mode & OPENMODE_out))
3951 state |= STRINGBUF_no_write;
3953 if(mode & OPENMODE_ate)
3954 state |= STRINGBUF_at_end;
3956 if(mode & OPENMODE_app)
3957 state |= STRINGBUF_append;
3959 return state;
3962 /* ?_Init@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXPBDIH@Z */
3963 /* ?_Init@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAXPEBD_KH@Z */
3964 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char__Init, 16)
3965 void __thiscall basic_stringbuf_char__Init(basic_stringbuf_char *this, const char *str, MSVCP_size_t count, int state)
3967 TRACE("(%p, %p, %ld, %d)\n", this, str, count, state);
3969 basic_streambuf_char__Init_empty(&this->base);
3971 this->state = state;
3972 this->seekhigh = NULL;
3974 if(count && str) {
3975 char *buf = MSVCRT_operator_new(count);
3976 if(!buf) {
3977 ERR("Out of memory\n");
3978 throw_exception(EXCEPTION_BAD_ALLOC, NULL);
3981 memcpy(buf, str, count);
3982 this->seekhigh = buf + count;
3984 this->state |= STRINGBUF_allocated;
3986 if(!(state & STRINGBUF_no_read))
3987 basic_streambuf_char_setg(&this->base, buf, buf, buf + count);
3989 if(!(state & STRINGBUF_no_write)) {
3990 basic_streambuf_char_setp_next(&this->base, buf, (state & STRINGBUF_at_end) ? buf + count : buf, buf + count);
3992 if(!basic_streambuf_char_gptr(&this->base))
3993 basic_streambuf_char_setg(&this->base, buf, 0, buf);
3998 /* ??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 */
3999 /* ??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 */
4000 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_ctor_str, 12)
4001 basic_stringbuf_char* __thiscall basic_stringbuf_char_ctor_str(basic_stringbuf_char *this,
4002 const basic_string_char *str, IOSB_openmode mode)
4004 TRACE("(%p %p %d)\n", this, str, mode);
4006 basic_streambuf_char_ctor(&this->base);
4007 this->base.vtable = &MSVCP_basic_stringbuf_char_vtable;
4009 basic_stringbuf_char__Init(this, MSVCP_basic_string_char_c_str(str),
4010 str->size, basic_stringbuf_char__Getstate(this, mode));
4011 return this;
4014 /* ??0?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z */
4015 /* ??0?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z */
4016 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_ctor_mode, 8)
4017 basic_stringbuf_char* __thiscall basic_stringbuf_char_ctor_mode(
4018 basic_stringbuf_char *this, IOSB_openmode mode)
4020 TRACE("(%p %d)\n", this, mode);
4022 basic_streambuf_char_ctor(&this->base);
4023 this->base.vtable = &MSVCP_basic_stringbuf_char_vtable;
4025 basic_stringbuf_char__Init(this, NULL, 0, basic_stringbuf_char__Getstate(this, mode));
4026 return this;
4029 /* ??_F?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
4030 /* ??_F?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
4031 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_ctor, 4)
4032 basic_stringbuf_char* __thiscall basic_stringbuf_char_ctor(basic_stringbuf_char *this)
4034 return basic_stringbuf_char_ctor_mode(this, OPENMODE_in|OPENMODE_out);
4037 /* ?_Tidy@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXXZ */
4038 /* ?_Tidy@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAXXZ */
4039 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char__Tidy, 4)
4040 void __thiscall basic_stringbuf_char__Tidy(basic_stringbuf_char *this)
4042 TRACE("(%p)\n", this);
4044 if(this->state & STRINGBUF_allocated) {
4045 MSVCRT_operator_delete(basic_streambuf_char_eback(&this->base));
4046 this->seekhigh = NULL;
4047 this->state &= ~STRINGBUF_allocated;
4050 basic_streambuf_char__Init_empty(&this->base);
4053 /* ??1?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ */
4054 /* ??1?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ */
4055 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_dtor, 4)
4056 void __thiscall basic_stringbuf_char_dtor(basic_stringbuf_char *this)
4058 TRACE("(%p)\n", this);
4060 basic_stringbuf_char__Tidy(this);
4061 basic_streambuf_char_dtor(&this->base);
4064 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_vector_dtor, 8)
4065 basic_stringbuf_char* __thiscall basic_stringbuf_char_vector_dtor(basic_stringbuf_char *this, unsigned int flags)
4067 TRACE("(%p %x)\n", this, flags);
4069 if(flags & 2) {
4070 /* we have an array, with the number of elements stored before the first object */
4071 INT_PTR i, *ptr = (INT_PTR *) this - 1;
4073 for (i = *ptr - 1; i >= 0; i--)
4074 basic_stringbuf_char_dtor(this+i);
4076 MSVCRT_operator_delete(ptr);
4077 }else {
4078 basic_stringbuf_char_dtor(this);
4080 if(flags & 1)
4081 MSVCRT_operator_delete(this);
4084 return this;
4087 /* ?overflow@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAEHH@Z */
4088 /* ?overflow@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAAHH@Z */
4089 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_overflow, 8)
4090 int __thiscall basic_stringbuf_char_overflow(basic_stringbuf_char *this, int meta)
4092 MSVCP_size_t oldsize, size;
4093 char *ptr, *buf;
4095 TRACE("(%p %x)\n", this, meta);
4097 if(meta == EOF)
4098 return !EOF;
4099 if(this->state & STRINGBUF_no_write)
4100 return EOF;
4102 ptr = basic_streambuf_char_pptr(&this->base);
4103 if((this->state&STRINGBUF_append) && ptr<this->seekhigh)
4104 basic_streambuf_char_setp_next(&this->base, basic_streambuf_char_pbase(&this->base),
4105 this->seekhigh, basic_streambuf_char_epptr(&this->base));
4107 if(ptr && ptr<basic_streambuf_char_epptr(&this->base))
4108 return (unsigned char)(*basic_streambuf_char__Pninc(&this->base) = meta);
4110 oldsize = (ptr ? basic_streambuf_char_epptr(&this->base)-basic_streambuf_char_eback(&this->base): 0);
4111 size = oldsize|0xf;
4112 size += size/2;
4113 buf = MSVCRT_operator_new(size);
4114 if(!buf) {
4115 ERR("Out of memory\n");
4116 throw_exception(EXCEPTION_BAD_ALLOC, NULL);
4119 if(!oldsize) {
4120 this->seekhigh = buf;
4121 basic_streambuf_char_setp(&this->base, buf, buf+size);
4122 if(this->state & STRINGBUF_no_read)
4123 basic_streambuf_char_setg(&this->base, buf, NULL, buf);
4124 else
4125 basic_streambuf_char_setg(&this->base, buf, buf, buf+1);
4127 this->state |= STRINGBUF_allocated;
4128 }else {
4129 ptr = basic_streambuf_char_eback(&this->base);
4130 memcpy(buf, ptr, oldsize);
4132 this->seekhigh = buf+(this->seekhigh-ptr);
4133 basic_streambuf_char_setp_next(&this->base, buf,
4134 buf+(basic_streambuf_char_pptr(&this->base)-ptr), buf+size);
4135 if(this->state & STRINGBUF_no_read)
4136 basic_streambuf_char_setg(&this->base, buf, NULL, buf);
4137 else
4138 basic_streambuf_char_setg(&this->base, buf,
4139 buf+(basic_streambuf_char_gptr(&this->base)-ptr),
4140 basic_streambuf_char_pptr(&this->base)+1);
4142 MSVCRT_operator_delete(ptr);
4145 return (unsigned char)(*basic_streambuf_char__Pninc(&this->base) = meta);
4148 /* ?pbackfail@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAEHH@Z */
4149 /* ?pbackfail@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAAHH@Z */
4150 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_pbackfail, 8)
4151 int __thiscall basic_stringbuf_char_pbackfail(basic_stringbuf_char *this, int c)
4153 char *cur;
4155 TRACE("(%p %x)\n", this, c);
4157 cur = basic_streambuf_char_gptr(&this->base);
4158 if(!cur || cur==basic_streambuf_char_eback(&this->base)
4159 || (c!=EOF && c!=cur[-1] && this->state&STRINGBUF_no_write))
4160 return EOF;
4162 if(c != EOF)
4163 cur[-1] = c;
4164 basic_streambuf_char_gbump(&this->base, -1);
4165 return c==EOF ? !EOF : c;
4168 /* ?underflow@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAEHXZ */
4169 /* ?underflow@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAAHXZ */
4170 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_underflow, 4)
4171 int __thiscall basic_stringbuf_char_underflow(basic_stringbuf_char *this)
4173 char *ptr, *cur;
4175 TRACE("(%p)\n", this);
4177 cur = basic_streambuf_char_gptr(&this->base);
4178 if(!cur || this->state&STRINGBUF_no_read)
4179 return EOF;
4181 ptr = basic_streambuf_char_pptr(&this->base);
4182 if(this->seekhigh < ptr)
4183 this->seekhigh = ptr;
4185 ptr = basic_streambuf_char_egptr(&this->base);
4186 if(this->seekhigh > ptr)
4187 basic_streambuf_char_setg(&this->base, basic_streambuf_char_eback(&this->base), cur, this->seekhigh);
4189 if(cur < this->seekhigh)
4190 return (unsigned char)*cur;
4191 return EOF;
4194 /* ?seekoff@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAE?AV?$fpos@H@2@JHH@Z */
4195 /* ?seekoff@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
4196 #if STREAMOFF_BITS == 64
4197 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_seekoff, 24)
4198 #else
4199 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_seekoff, 20)
4200 #endif
4201 fpos_int* __thiscall basic_stringbuf_char_seekoff(basic_stringbuf_char *this,
4202 fpos_int *ret, streamoff off, int way, int mode)
4204 char *beg, *cur_r, *cur_w;
4206 TRACE("(%p %p %s %d %d)\n", this, ret, wine_dbgstr_longlong(off), way, mode);
4208 cur_w = basic_streambuf_char_pptr(&this->base);
4209 if(cur_w > this->seekhigh)
4210 this->seekhigh = cur_w;
4212 ret->off = 0;
4213 ret->pos = 0;
4214 ret->state = 0;
4216 beg = basic_streambuf_char_eback(&this->base);
4217 cur_r = basic_streambuf_char_gptr(&this->base);
4218 if((mode & OPENMODE_in) && cur_r) {
4219 if(way==SEEKDIR_cur && !(mode & OPENMODE_out))
4220 off += cur_r-beg;
4221 else if(way == SEEKDIR_end)
4222 off += this->seekhigh-beg;
4223 else if(way != SEEKDIR_beg)
4224 off = -1;
4226 if(off<0 || off>this->seekhigh-beg) {
4227 off = -1;
4228 }else {
4229 basic_streambuf_char_gbump(&this->base, beg-cur_r+off);
4230 if((mode & OPENMODE_out) && cur_w) {
4231 basic_streambuf_char_setp_next(&this->base, beg,
4232 basic_streambuf_char_gptr(&this->base),
4233 basic_streambuf_char_epptr(&this->base));
4236 }else if((mode & OPENMODE_out) && cur_w) {
4237 if(way == SEEKDIR_cur)
4238 off += cur_w-beg;
4239 else if(way == SEEKDIR_end)
4240 off += this->seekhigh-beg;
4241 else if(way != SEEKDIR_beg)
4242 off = -1;
4244 if(off<0 || off>this->seekhigh-beg)
4245 off = -1;
4246 else
4247 basic_streambuf_char_pbump(&this->base, beg-cur_w+off);
4248 }else {
4249 off = -1;
4252 ret->off = off;
4253 return ret;
4256 /* ?seekpos@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
4257 /* ?seekpos@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
4258 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_seekpos, 36)
4259 fpos_int* __thiscall basic_stringbuf_char_seekpos(basic_stringbuf_char *this,
4260 fpos_int *ret, fpos_int pos, int mode)
4262 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_int(&pos), mode);
4264 if(pos.off==-1 && pos.pos==0 && pos.state==0) {
4265 *ret = pos;
4266 return ret;
4269 return basic_stringbuf_char_seekoff(this, ret, pos.off, SEEKDIR_beg, mode);
4272 /* ?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 */
4273 /* ?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 */
4274 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_str_set, 8)
4275 void __thiscall basic_stringbuf_char_str_set(basic_stringbuf_char *this, const basic_string_char *str)
4277 TRACE("(%p %p)\n", this, str);
4279 basic_stringbuf_char__Tidy(this);
4280 basic_stringbuf_char__Init(this, MSVCP_basic_string_char_c_str(str), str->size, this->state);
4283 /* ?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 */
4284 /* ?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 */
4285 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_str_get, 8)
4286 basic_string_char* __thiscall basic_stringbuf_char_str_get(const basic_stringbuf_char *this, basic_string_char *ret)
4288 char *ptr;
4290 TRACE("(%p)\n", this);
4292 if(!(this->state & STRINGBUF_no_write) && basic_streambuf_char_pptr(&this->base)) {
4293 char *pptr;
4295 ptr = basic_streambuf_char_pbase(&this->base);
4296 pptr = basic_streambuf_char_pptr(&this->base);
4298 return MSVCP_basic_string_char_ctor_cstr_len(ret, ptr, (this->seekhigh < pptr ? pptr : this->seekhigh) - ptr);
4301 if(!(this->state & STRINGBUF_no_read) && basic_streambuf_char_gptr(&this->base)) {
4302 ptr = basic_streambuf_char_eback(&this->base);
4303 return MSVCP_basic_string_char_ctor_cstr_len(ret, ptr, basic_streambuf_char_egptr(&this->base) - ptr);
4306 return MSVCP_basic_string_char_ctor(ret);
4309 /* ?_Getstate@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@AAEHH@Z */
4310 /* ?_Getstate@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@AEAAHH@Z */
4311 /* ?_Getstate@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEHH@Z */
4312 /* ?_Getstate@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAHH@Z */
4313 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar__Getstate, 8)
4314 int __thiscall basic_stringbuf_wchar__Getstate(basic_stringbuf_wchar *this, IOSB_openmode mode)
4316 int state = 0;
4318 if(!(mode & OPENMODE_in))
4319 state |= STRINGBUF_no_read;
4321 if(!(mode & OPENMODE_out))
4322 state |= STRINGBUF_no_write;
4324 if(mode & OPENMODE_ate)
4325 state |= STRINGBUF_at_end;
4327 if(mode & OPENMODE_app)
4328 state |= STRINGBUF_append;
4330 return state;
4333 /* ?_Init@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEXPB_WIH@Z */
4334 /* ?_Init@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAXPEB_W_KH@Z */
4335 /* ?_Init@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEXPBGIH@Z */
4336 /* ?_Init@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAXPEBG_KH@Z */
4337 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar__Init, 16)
4338 void __thiscall basic_stringbuf_wchar__Init(basic_stringbuf_wchar *this, const wchar_t *str, MSVCP_size_t count, int state)
4340 TRACE("(%p, %p, %lu, %d)\n", this, str, count, state);
4342 basic_streambuf_wchar__Init_empty(&this->base);
4344 this->state = state;
4345 this->seekhigh = NULL;
4347 if(count && str) {
4348 wchar_t *buf = MSVCRT_operator_new(count*sizeof(wchar_t));
4349 if(!buf) {
4350 ERR("Out of memory\n");
4351 throw_exception(EXCEPTION_BAD_ALLOC, NULL);
4354 memcpy(buf, str, count*sizeof(wchar_t));
4355 this->seekhigh = buf + count;
4357 this->state |= STRINGBUF_allocated;
4359 if(!(state & STRINGBUF_no_read))
4360 basic_streambuf_wchar_setg(&this->base, buf, buf, buf + count);
4362 if(!(state & STRINGBUF_no_write)) {
4363 basic_streambuf_wchar_setp_next(&this->base, buf, (state & STRINGBUF_at_end) ? buf + count : buf, buf + count);
4365 if(!basic_streambuf_wchar_gptr(&this->base))
4366 basic_streambuf_wchar_setg(&this->base, buf, 0, buf);
4371 /* ??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 */
4372 /* ??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 */
4373 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_ctor_str, 12)
4374 basic_stringbuf_wchar* __thiscall basic_stringbuf_wchar_ctor_str(basic_stringbuf_wchar *this,
4375 const basic_string_wchar *str, IOSB_openmode mode)
4377 TRACE("(%p %p %d)\n", this, str, mode);
4379 basic_streambuf_wchar_ctor(&this->base);
4380 this->base.vtable = &MSVCP_basic_stringbuf_wchar_vtable;
4382 basic_stringbuf_wchar__Init(this, MSVCP_basic_string_wchar_c_str(str),
4383 str->size, basic_stringbuf_wchar__Getstate(this, mode));
4384 return this;
4387 /* ??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 */
4388 /* ??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 */
4389 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_ctor_str, 12)
4390 basic_stringbuf_wchar* __thiscall basic_stringbuf_short_ctor_str(basic_stringbuf_wchar *this,
4391 const basic_string_wchar *str, IOSB_openmode mode)
4393 basic_stringbuf_wchar_ctor_str(this, str, mode);
4394 this->base.vtable = &MSVCP_basic_stringbuf_short_vtable;
4395 return this;
4398 /* ??0?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@H@Z */
4399 /* ??0?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@H@Z */
4400 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_ctor_mode, 8)
4401 basic_stringbuf_wchar* __thiscall basic_stringbuf_wchar_ctor_mode(
4402 basic_stringbuf_wchar *this, IOSB_openmode mode)
4404 TRACE("(%p %d)\n", this, mode);
4406 basic_streambuf_wchar_ctor(&this->base);
4407 this->base.vtable = &MSVCP_basic_stringbuf_wchar_vtable;
4409 basic_stringbuf_wchar__Init(this, NULL, 0, basic_stringbuf_wchar__Getstate(this, mode));
4410 return this;
4413 /* ??0?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@H@Z */
4414 /* ??0?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@H@Z */
4415 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_ctor_mode, 8)
4416 basic_stringbuf_wchar* __thiscall basic_stringbuf_short_ctor_mode(
4417 basic_stringbuf_wchar *this, IOSB_openmode mode)
4419 basic_stringbuf_wchar_ctor_mode(this, mode);
4420 this->base.vtable = &MSVCP_basic_stringbuf_short_vtable;
4421 return this;
4424 /* ??_F?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
4425 /* ??_F?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
4426 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_ctor, 4)
4427 basic_stringbuf_wchar* __thiscall basic_stringbuf_wchar_ctor(basic_stringbuf_wchar *this)
4429 return basic_stringbuf_wchar_ctor_mode(this, OPENMODE_in|OPENMODE_out);
4432 /* ??_F?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
4433 /* ??_F?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
4434 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_ctor, 4)
4435 basic_stringbuf_wchar* __thiscall basic_stringbuf_short_ctor(basic_stringbuf_wchar *this)
4437 return basic_stringbuf_short_ctor_mode(this, OPENMODE_in|OPENMODE_out);
4440 /* ?_Tidy@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEXXZ */
4441 /* ?_Tidy@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAXXZ */
4442 /* ?_Tidy@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEXXZ */
4443 /* ?_Tidy@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAXXZ */
4444 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar__Tidy, 4)
4445 void __thiscall basic_stringbuf_wchar__Tidy(basic_stringbuf_wchar *this)
4447 TRACE("(%p)\n", this);
4449 if(this->state & STRINGBUF_allocated) {
4450 MSVCRT_operator_delete(basic_streambuf_wchar_eback(&this->base));
4451 this->seekhigh = NULL;
4452 this->state &= ~STRINGBUF_allocated;
4455 basic_streambuf_wchar__Init_empty(&this->base);
4458 /* ??1?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UAE@XZ */
4459 /* ??1?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UEAA@XZ */
4460 /* ??1?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UAE@XZ */
4461 /* ??1?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UEAA@XZ */
4462 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_dtor, 4)
4463 void __thiscall basic_stringbuf_wchar_dtor(basic_stringbuf_wchar *this)
4465 TRACE("(%p)\n", this);
4467 basic_stringbuf_wchar__Tidy(this);
4468 basic_streambuf_wchar_dtor(&this->base);
4471 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_vector_dtor, 8)
4472 basic_stringbuf_wchar* __thiscall basic_stringbuf_wchar_vector_dtor(basic_stringbuf_wchar *this, unsigned int flags)
4474 TRACE("(%p %x)\n", this, flags);
4476 if(flags & 2) {
4477 /* we have an array, with the number of elements stored before the first object */
4478 INT_PTR i, *ptr = (INT_PTR *) this - 1;
4480 for (i = *ptr - 1; i >= 0; i--)
4481 basic_stringbuf_wchar_dtor(this+i);
4483 MSVCRT_operator_delete(ptr);
4484 }else {
4485 basic_stringbuf_wchar_dtor(this);
4487 if(flags & 1)
4488 MSVCRT_operator_delete(this);
4491 return this;
4494 /* ?overflow@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAEGG@Z */
4495 /* ?overflow@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAAGG@Z */
4496 /* ?overflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAEGG@Z */
4497 /* ?overflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAAGG@Z */
4498 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_overflow, 8)
4499 unsigned short __thiscall basic_stringbuf_wchar_overflow(basic_stringbuf_wchar *this, unsigned short meta)
4501 MSVCP_size_t oldsize, size;
4502 wchar_t *ptr, *buf;
4504 TRACE("(%p %x)\n", this, meta);
4506 if(meta == WEOF)
4507 return !WEOF;
4508 if(this->state & STRINGBUF_no_write)
4509 return WEOF;
4511 ptr = basic_streambuf_wchar_pptr(&this->base);
4512 if((this->state&STRINGBUF_append) && ptr<this->seekhigh)
4513 basic_streambuf_wchar_setp_next(&this->base, basic_streambuf_wchar_pbase(&this->base),
4514 this->seekhigh, basic_streambuf_wchar_epptr(&this->base));
4516 if(ptr && ptr<basic_streambuf_wchar_epptr(&this->base))
4517 return (*basic_streambuf_wchar__Pninc(&this->base) = meta);
4519 oldsize = (ptr ? basic_streambuf_wchar_epptr(&this->base)-basic_streambuf_wchar_eback(&this->base): 0);
4520 size = oldsize|0xf;
4521 size += size/2;
4522 buf = MSVCRT_operator_new(size*sizeof(wchar_t));
4523 if(!buf) {
4524 ERR("Out of memory\n");
4525 throw_exception(EXCEPTION_BAD_ALLOC, NULL);
4528 if(!oldsize) {
4529 this->seekhigh = buf;
4530 basic_streambuf_wchar_setp(&this->base, buf, buf+size);
4531 if(this->state & STRINGBUF_no_read)
4532 basic_streambuf_wchar_setg(&this->base, buf, NULL, buf);
4533 else
4534 basic_streambuf_wchar_setg(&this->base, buf, buf, buf+1);
4536 this->state |= STRINGBUF_allocated;
4537 }else {
4538 ptr = basic_streambuf_wchar_eback(&this->base);
4539 memcpy(buf, ptr, oldsize*sizeof(wchar_t));
4541 this->seekhigh = buf+(this->seekhigh-ptr);
4542 basic_streambuf_wchar_setp_next(&this->base, buf,
4543 buf+(basic_streambuf_wchar_pptr(&this->base)-ptr), buf+size);
4544 if(this->state & STRINGBUF_no_read)
4545 basic_streambuf_wchar_setg(&this->base, buf, NULL, buf);
4546 else
4547 basic_streambuf_wchar_setg(&this->base, buf,
4548 buf+(basic_streambuf_wchar_gptr(&this->base)-ptr),
4549 basic_streambuf_wchar_pptr(&this->base)+1);
4551 MSVCRT_operator_delete(ptr);
4554 return (*basic_streambuf_wchar__Pninc(&this->base) = meta);
4557 /* ?pbackfail@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAEGG@Z */
4558 /* ?pbackfail@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAAGG@Z */
4559 /* ?pbackfail@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAEGG@Z */
4560 /* ?pbackfail@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAAGG@Z */
4561 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_pbackfail, 8)
4562 unsigned short __thiscall basic_stringbuf_wchar_pbackfail(basic_stringbuf_wchar *this, unsigned short c)
4564 wchar_t *cur;
4566 TRACE("(%p %x)\n", this, c);
4568 cur = basic_streambuf_wchar_gptr(&this->base);
4569 if(!cur || cur==basic_streambuf_wchar_eback(&this->base)
4570 || (c!=WEOF && c!=cur[-1] && this->state&STRINGBUF_no_write))
4571 return WEOF;
4573 if(c != WEOF)
4574 cur[-1] = c;
4575 basic_streambuf_wchar_gbump(&this->base, -1);
4576 return c==WEOF ? !WEOF : c;
4579 /* ?underflow@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAEGXZ */
4580 /* ?underflow@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAAGXZ */
4581 /* ?underflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAEGXZ */
4582 /* ?underflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAAGXZ */
4583 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_underflow, 4)
4584 unsigned short __thiscall basic_stringbuf_wchar_underflow(basic_stringbuf_wchar *this)
4586 wchar_t *ptr, *cur;
4588 TRACE("(%p)\n", this);
4590 cur = basic_streambuf_wchar_gptr(&this->base);
4591 if(!cur || this->state&STRINGBUF_no_read)
4592 return WEOF;
4594 ptr = basic_streambuf_wchar_pptr(&this->base);
4595 if(this->seekhigh < ptr)
4596 this->seekhigh = ptr;
4598 ptr = basic_streambuf_wchar_egptr(&this->base);
4599 if(this->seekhigh > ptr)
4600 basic_streambuf_wchar_setg(&this->base, basic_streambuf_wchar_eback(&this->base), cur, this->seekhigh);
4602 if(cur < this->seekhigh)
4603 return *cur;
4604 return WEOF;
4607 /* ?seekoff@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAE?AV?$fpos@H@2@JHH@Z */
4608 /* ?seekoff@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
4609 /* ?seekoff@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAE?AV?$fpos@H@2@JHH@Z */
4610 /* ?seekoff@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
4611 #if STREAMOFF_BITS == 64
4612 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_seekoff, 24)
4613 #else
4614 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_seekoff, 20)
4615 #endif
4616 fpos_int* __thiscall basic_stringbuf_wchar_seekoff(basic_stringbuf_wchar *this,
4617 fpos_int *ret, streamoff off, int way, int mode)
4619 wchar_t *beg, *cur_r, *cur_w;
4621 TRACE("(%p %p %s %d %d)\n", this, ret, wine_dbgstr_longlong(off), way, mode);
4623 cur_w = basic_streambuf_wchar_pptr(&this->base);
4624 if(cur_w > this->seekhigh)
4625 this->seekhigh = cur_w;
4627 ret->off = 0;
4628 ret->pos = 0;
4629 ret->state = 0;
4631 beg = basic_streambuf_wchar_eback(&this->base);
4632 cur_r = basic_streambuf_wchar_gptr(&this->base);
4633 if((mode & OPENMODE_in) && cur_r) {
4634 if(way==SEEKDIR_cur && !(mode & OPENMODE_out))
4635 off += cur_r-beg;
4636 else if(way == SEEKDIR_end)
4637 off += this->seekhigh-beg;
4638 else if(way != SEEKDIR_beg)
4639 off = -1;
4641 if(off<0 || off>this->seekhigh-beg) {
4642 off = -1;
4643 }else {
4644 basic_streambuf_wchar_gbump(&this->base, beg-cur_r+off);
4645 if((mode & OPENMODE_out) && cur_w) {
4646 basic_streambuf_wchar_setp_next(&this->base, beg,
4647 basic_streambuf_wchar_gptr(&this->base),
4648 basic_streambuf_wchar_epptr(&this->base));
4651 }else if((mode & OPENMODE_out) && cur_w) {
4652 if(way == SEEKDIR_cur)
4653 off += cur_w-beg;
4654 else if(way == SEEKDIR_end)
4655 off += this->seekhigh-beg;
4656 else if(way != SEEKDIR_beg)
4657 off = -1;
4659 if(off<0 || off>this->seekhigh-beg)
4660 off = -1;
4661 else
4662 basic_streambuf_wchar_pbump(&this->base, beg-cur_w+off);
4663 }else {
4664 off = -1;
4667 ret->off = off;
4668 return ret;
4671 /* ?seekpos@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
4672 /* ?seekpos@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
4673 /* ?seekpos@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
4674 /* ?seekpos@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
4675 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_seekpos, 36)
4676 fpos_int* __thiscall basic_stringbuf_wchar_seekpos(basic_stringbuf_wchar *this,
4677 fpos_int *ret, fpos_int pos, int mode)
4679 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_int(&pos), mode);
4681 if(pos.off==-1 && pos.pos==0 && pos.state==0) {
4682 *ret = pos;
4683 return ret;
4686 return basic_stringbuf_wchar_seekoff(this, ret, pos.off, SEEKDIR_beg, mode);
4689 /* ?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 */
4690 /* ?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 */
4691 /* ?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 */
4692 /* ?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 */
4693 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_str_set, 8)
4694 void __thiscall basic_stringbuf_wchar_str_set(basic_stringbuf_wchar *this, const basic_string_wchar *str)
4696 TRACE("(%p %p)\n", this, str);
4698 basic_stringbuf_wchar__Tidy(this);
4699 basic_stringbuf_wchar__Init(this, MSVCP_basic_string_wchar_c_str(str), str->size, this->state);
4702 /* ?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 */
4703 /* ?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 */
4704 /* ?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 */
4705 /* ?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 */
4706 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_str_get, 8)
4707 basic_string_wchar* __thiscall basic_stringbuf_wchar_str_get(const basic_stringbuf_wchar *this, basic_string_wchar *ret)
4709 wchar_t *ptr;
4711 TRACE("(%p)\n", this);
4713 if(!(this->state & STRINGBUF_no_write) && basic_streambuf_wchar_pptr(&this->base)) {
4714 wchar_t *pptr;
4716 ptr = basic_streambuf_wchar_pbase(&this->base);
4717 pptr = basic_streambuf_wchar_pptr(&this->base);
4719 return MSVCP_basic_string_wchar_ctor_cstr_len(ret, ptr, (this->seekhigh < pptr ? pptr : this->seekhigh) - ptr);
4722 if(!(this->state & STRINGBUF_no_read) && basic_streambuf_wchar_gptr(&this->base)) {
4723 ptr = basic_streambuf_wchar_eback(&this->base);
4724 return MSVCP_basic_string_wchar_ctor_cstr_len(ret, ptr, basic_streambuf_wchar_egptr(&this->base) - ptr);
4727 return MSVCP_basic_string_wchar_ctor(ret);
4730 /* ??0ios_base@std@@IAE@XZ */
4731 /* ??0ios_base@std@@IEAA@XZ */
4732 DEFINE_THISCALL_WRAPPER(ios_base_ctor, 4)
4733 ios_base* __thiscall ios_base_ctor(ios_base *this)
4735 TRACE("(%p)\n", this);
4736 this->vtable = &MSVCP_ios_base_vtable;
4737 return this;
4740 /* ??0ios_base@std@@QAE@ABV01@@Z */
4741 /* ??0ios_base@std@@QEAA@AEBV01@@Z */
4742 DEFINE_THISCALL_WRAPPER(ios_base_copy_ctor, 8)
4743 ios_base* __thiscall ios_base_copy_ctor(ios_base *this, const ios_base *copy)
4745 TRACE("(%p %p)\n", this, copy);
4746 *this = *copy;
4747 this->vtable = &MSVCP_ios_base_vtable;
4748 return this;
4751 /* ?_Callfns@ios_base@std@@AAEXW4event@12@@Z */
4752 /* ?_Callfns@ios_base@std@@AEAAXW4event@12@@Z */
4753 DEFINE_THISCALL_WRAPPER(ios_base_Callfns, 8)
4754 void __thiscall ios_base_Callfns(ios_base *this, IOS_BASE_event event)
4756 IOS_BASE_fnarray *cur;
4758 TRACE("(%p %x)\n", this, event);
4760 for(cur=this->calls; cur; cur=cur->next)
4761 cur->event_handler(event, this, cur->index);
4764 /* ?_Tidy@ios_base@std@@AAAXXZ */
4765 /* ?_Tidy@ios_base@std@@AEAAXXZ */
4766 void CDECL ios_base_Tidy(ios_base *this)
4768 IOS_BASE_iosarray *arr_cur, *arr_next;
4769 IOS_BASE_fnarray *event_cur, *event_next;
4771 TRACE("(%p)\n", this);
4773 ios_base_Callfns(this, EVENT_erase_event);
4775 for(arr_cur=this->arr; arr_cur; arr_cur=arr_next) {
4776 arr_next = arr_cur->next;
4777 MSVCRT_operator_delete(arr_cur);
4779 this->arr = NULL;
4781 for(event_cur=this->calls; event_cur; event_cur=event_next) {
4782 event_next = event_cur->next;
4783 MSVCRT_operator_delete(event_cur);
4785 this->calls = NULL;
4788 /* ?_Ios_base_dtor@ios_base@std@@CAXPAV12@@Z */
4789 /* ?_Ios_base_dtor@ios_base@std@@CAXPEAV12@@Z */
4790 void CDECL ios_base_Ios_base_dtor(ios_base *obj)
4792 TRACE("(%p)\n", obj);
4793 if(obj->loc) {
4794 locale_dtor(obj->loc);
4795 MSVCRT_operator_delete(obj->loc);
4797 ios_base_Tidy(obj);
4800 /* ??1ios_base@std@@UAE@XZ */
4801 /* ??1ios_base@std@@UEAA@XZ */
4802 DEFINE_THISCALL_WRAPPER(ios_base_dtor, 4)
4803 void __thiscall ios_base_dtor(ios_base *this)
4805 ios_base_Ios_base_dtor(this);
4808 DEFINE_THISCALL_WRAPPER(ios_base_vector_dtor, 8)
4809 ios_base* __thiscall ios_base_vector_dtor(ios_base *this, unsigned int flags)
4811 TRACE("(%p %x)\n", this, flags);
4812 if(flags & 2) {
4813 /* we have an array, with the number of elements stored before the first object */
4814 INT_PTR i, *ptr = (INT_PTR *)this-1;
4816 for(i=*ptr-1; i>=0; i--)
4817 ios_base_dtor(this+i);
4818 MSVCRT_operator_delete(ptr);
4819 } else {
4820 ios_base_dtor(this);
4821 if(flags & 1)
4822 MSVCRT_operator_delete(this);
4825 return this;
4828 DEFINE_THISCALL_WRAPPER(iosb_vector_dtor, 8)
4829 void* __thiscall iosb_vector_dtor(void *this, unsigned int flags)
4831 TRACE("(%p %x)\n", this, flags);
4832 if(flags & 2) {
4833 INT_PTR *ptr = (INT_PTR *)this-1;
4834 MSVCRT_operator_delete(ptr);
4835 } else {
4836 if(flags & 1)
4837 MSVCRT_operator_delete(this);
4840 return this;
4843 /* ?_Findarr@ios_base@std@@AAEAAU_Iosarray@12@H@Z */
4844 /* ?_Findarr@ios_base@std@@AEAAAEAU_Iosarray@12@H@Z */
4845 DEFINE_THISCALL_WRAPPER(ios_base_Findarr, 8)
4846 IOS_BASE_iosarray* __thiscall ios_base_Findarr(ios_base *this, int index)
4848 IOS_BASE_iosarray *p;
4850 TRACE("(%p %d)\n", this, index);
4852 for(p=this->arr; p; p=p->next) {
4853 if(p->index == index)
4854 return p;
4857 for(p=this->arr; p; p=p->next) {
4858 if(!p->long_val && !p->ptr_val) {
4859 p->index = index;
4860 return p;
4864 p = MSVCRT_operator_new(sizeof(IOS_BASE_iosarray));
4865 p->next = this->arr;
4866 p->index = index;
4867 p->long_val = 0;
4868 p->ptr_val = NULL;
4869 this->arr = p;
4870 return p;
4873 /* ?iword@ios_base@std@@QAEAAJH@Z */
4874 /* ?iword@ios_base@std@@QEAAAEAJH@Z */
4875 DEFINE_THISCALL_WRAPPER(ios_base_iword, 8)
4876 LONG* __thiscall ios_base_iword(ios_base *this, int index)
4878 TRACE("(%p %d)\n", this, index);
4879 return &ios_base_Findarr(this, index)->long_val;
4882 /* ?pword@ios_base@std@@QAEAAPAXH@Z */
4883 /* ?pword@ios_base@std@@QEAAAEAPEAXH@Z */
4884 DEFINE_THISCALL_WRAPPER(ios_base_pword, 8)
4885 void** __thiscall ios_base_pword(ios_base *this, int index)
4887 TRACE("(%p %d)\n", this, index);
4888 return &ios_base_Findarr(this, index)->ptr_val;
4891 /* ?register_callback@ios_base@std@@QAEXP6AXW4event@12@AAV12@H@ZH@Z */
4892 /* ?register_callback@ios_base@std@@QEAAXP6AXW4event@12@AEAV12@H@ZH@Z */
4893 DEFINE_THISCALL_WRAPPER(ios_base_register_callback, 12)
4894 void __thiscall ios_base_register_callback(ios_base *this, IOS_BASE_event_callback callback, int index)
4896 IOS_BASE_fnarray *event;
4898 TRACE("(%p %p %d)\n", this, callback, index);
4900 event = MSVCRT_operator_new(sizeof(IOS_BASE_fnarray));
4901 event->next = this->calls;
4902 event->index = index;
4903 event->event_handler = callback;
4904 this->calls = event;
4907 /* ?clear@ios_base@std@@QAEXH_N@Z */
4908 /* ?clear@ios_base@std@@QEAAXH_N@Z */
4909 DEFINE_THISCALL_WRAPPER(ios_base_clear_reraise, 12)
4910 void __thiscall ios_base_clear_reraise(ios_base *this, IOSB_iostate state, MSVCP_bool reraise)
4912 TRACE("(%p %x %x)\n", this, state, reraise);
4914 this->state = state & IOSTATE_mask;
4915 if(!(this->state & this->except))
4916 return;
4918 if(reraise)
4919 throw_exception(EXCEPTION_RERAISE, NULL);
4920 else if(this->state & this->except & IOSTATE_eofbit)
4921 throw_exception(EXCEPTION_FAILURE, "eofbit is set");
4922 else if(this->state & this->except & IOSTATE_failbit)
4923 throw_exception(EXCEPTION_FAILURE, "failbit is set");
4924 else if(this->state & this->except & IOSTATE_badbit)
4925 throw_exception(EXCEPTION_FAILURE, "badbit is set");
4926 else if(this->state & this->except & IOSTATE__Hardfail)
4927 throw_exception(EXCEPTION_FAILURE, "_Hardfail is set");
4930 /* ?clear@ios_base@std@@QAEXH@Z */
4931 /* ?clear@ios_base@std@@QEAAXH@Z */
4932 DEFINE_THISCALL_WRAPPER(ios_base_clear, 8)
4933 void __thiscall ios_base_clear(ios_base *this, IOSB_iostate state)
4935 ios_base_clear_reraise(this, state, FALSE);
4938 /* ?clear@ios_base@std@@QAEXI@Z */
4939 /* ?clear@ios_base@std@@QEAAXI@Z */
4940 DEFINE_THISCALL_WRAPPER(ios_base_clear_unsigned, 8)
4941 void __thiscall ios_base_clear_unsigned(ios_base *this, unsigned int state)
4943 ios_base_clear_reraise(this, (IOSB_iostate)state, FALSE);
4946 /* ?exceptions@ios_base@std@@QAEXH@Z */
4947 /* ?exceptions@ios_base@std@@QEAAXH@Z */
4948 DEFINE_THISCALL_WRAPPER(ios_base_exceptions_set, 8)
4949 void __thiscall ios_base_exceptions_set(ios_base *this, IOSB_iostate state)
4951 TRACE("(%p %x)\n", this, state);
4952 this->except = state & IOSTATE_mask;
4953 ios_base_clear(this, this->state);
4956 /* ?exceptions@ios_base@std@@QAEXI@Z */
4957 /* ?exceptions@ios_base@std@@QEAAXI@Z */
4958 DEFINE_THISCALL_WRAPPER(ios_base_exceptions_set_unsigned, 8)
4959 void __thiscall ios_base_exceptions_set_unsigned(ios_base *this, unsigned int state)
4961 TRACE("(%p %x)\n", this, state);
4962 ios_base_exceptions_set(this, state);
4965 /* ?exceptions@ios_base@std@@QBEHXZ */
4966 /* ?exceptions@ios_base@std@@QEBAHXZ */
4967 DEFINE_THISCALL_WRAPPER(ios_base_exceptions_get, 4)
4968 IOSB_iostate __thiscall ios_base_exceptions_get(ios_base *this)
4970 TRACE("(%p)\n", this);
4971 return this->except;
4974 /* ?copyfmt@ios_base@std@@QAEAAV12@ABV12@@Z */
4975 /* ?copyfmt@ios_base@std@@QEAAAEAV12@AEBV12@@Z */
4976 DEFINE_THISCALL_WRAPPER(ios_base_copyfmt, 8)
4977 ios_base* __thiscall ios_base_copyfmt(ios_base *this, const ios_base *rhs)
4979 TRACE("(%p %p)\n", this, rhs);
4981 if(this != rhs) {
4982 IOS_BASE_iosarray *arr_cur;
4983 IOS_BASE_fnarray *event_cur;
4985 ios_base_Tidy(this);
4987 for(arr_cur=rhs->arr; arr_cur; arr_cur=arr_cur->next) {
4988 if(arr_cur->long_val)
4989 *ios_base_iword(this, arr_cur->index) = arr_cur->long_val;
4990 if(arr_cur->ptr_val)
4991 *ios_base_pword(this, arr_cur->index) = arr_cur->ptr_val;
4993 this->stdstr = rhs->stdstr;
4994 this->fmtfl = rhs->fmtfl;
4995 this->prec = rhs->prec;
4996 this->wide = rhs->wide;
4997 locale_operator_assign(this->loc, rhs->loc);
4999 for(event_cur=rhs->calls; event_cur; event_cur=event_cur->next)
5000 ios_base_register_callback(this, event_cur->event_handler, event_cur->index);
5002 ios_base_Callfns(this, EVENT_copyfmt_event);
5003 ios_base_exceptions_set(this, rhs->except);
5006 return this;
5009 /* ??4ios_base@std@@QAEAAV01@ABV01@@Z */
5010 /* ??4ios_base@std@@QEAAAEAV01@AEBV01@@Z */
5011 DEFINE_THISCALL_WRAPPER(ios_base_assign, 8)
5012 ios_base* __thiscall ios_base_assign(ios_base *this, const ios_base *right)
5014 TRACE("(%p %p)\n", this, right);
5016 if(this != right) {
5017 this->state = right->state;
5018 ios_base_copyfmt(this, right);
5021 return this;
5024 /* ?fail@ios_base@std@@QBE_NXZ */
5025 /* ?fail@ios_base@std@@QEBA_NXZ */
5026 DEFINE_THISCALL_WRAPPER(ios_base_fail, 4)
5027 MSVCP_bool __thiscall ios_base_fail(const ios_base *this)
5029 TRACE("(%p)\n", this);
5030 return (this->state & (IOSTATE_failbit|IOSTATE_badbit)) != 0;
5033 /* ??7ios_base@std@@QBE_NXZ */
5034 /* ??7ios_base@std@@QEBA_NXZ */
5035 DEFINE_THISCALL_WRAPPER(ios_base_op_succ, 4)
5036 MSVCP_bool __thiscall ios_base_op_succ(const ios_base *this)
5038 TRACE("(%p)\n", this);
5039 return ios_base_fail(this);
5042 /* ??Bios_base@std@@QBEPAXXZ */
5043 /* ??Bios_base@std@@QEBAPEAXXZ */
5044 DEFINE_THISCALL_WRAPPER(ios_base_op_fail, 4)
5045 void* __thiscall ios_base_op_fail(const ios_base *this)
5047 TRACE("(%p)\n", this);
5048 return ios_base_fail(this) ? NULL : (void*)this;
5051 /* ??Bios_base@std@@QBA_NXZ */
5052 /* ??Bios_base@std@@QBE_NXZ */
5053 /* ??Bios_base@std@@QEBA_NXZ */
5054 DEFINE_THISCALL_WRAPPER(ios_base_operator_bool, 4)
5055 MSVCP_bool __thiscall ios_base_operator_bool(const ios_base *this)
5057 TRACE("(%p)\n", this);
5058 return (this->state & (IOSTATE_failbit|IOSTATE_badbit)) == 0;
5061 /* ?_Addstd@ios_base@std@@SAXPAV12@@Z */
5062 /* ?_Addstd@ios_base@std@@SAXPEAV12@@Z */
5063 void CDECL ios_base_Addstd(ios_base *add)
5065 FIXME("(%p) stub\n", add);
5068 /* ?_Index_func@ios_base@std@@CAAAHXZ */
5069 /* ?_Index_func@ios_base@std@@CAAEAHXZ */
5070 int* CDECL ios_base_Index_func(void)
5072 TRACE("\n");
5073 return &ios_base_Index;
5076 /* ?_Init@ios_base@std@@IAEXXZ */
5077 /* ?_Init@ios_base@std@@IEAAXXZ */
5078 DEFINE_THISCALL_WRAPPER(ios_base__Init, 4)
5079 void __thiscall ios_base__Init(ios_base *this)
5081 TRACE("(%p)\n", this);
5083 this->stdstr = 0;
5084 this->state = this->except = IOSTATE_goodbit;
5085 this->fmtfl = FMTFLAG_skipws | FMTFLAG_dec;
5086 this->prec = 6;
5087 this->wide = 0;
5088 this->arr = NULL;
5089 this->calls = NULL;
5090 this->loc = MSVCRT_operator_new(sizeof(locale));
5091 locale_ctor(this->loc);
5094 /* ?_Sync_func@ios_base@std@@CAAA_NXZ */
5095 /* ?_Sync_func@ios_base@std@@CAAEA_NXZ */
5096 MSVCP_bool* CDECL ios_base_Sync_func(void)
5098 TRACE("\n");
5099 return &ios_base_Sync;
5102 /* ?bad@ios_base@std@@QBE_NXZ */
5103 /* ?bad@ios_base@std@@QEBA_NXZ */
5104 DEFINE_THISCALL_WRAPPER(ios_base_bad, 4)
5105 MSVCP_bool __thiscall ios_base_bad(const ios_base *this)
5107 TRACE("(%p)\n", this);
5108 return (this->state & IOSTATE_badbit) != 0;
5111 /* ?eof@ios_base@std@@QBE_NXZ */
5112 /* ?eof@ios_base@std@@QEBA_NXZ */
5113 DEFINE_THISCALL_WRAPPER(ios_base_eof, 4)
5114 MSVCP_bool __thiscall ios_base_eof(const ios_base *this)
5116 TRACE("(%p)\n", this);
5117 return (this->state & IOSTATE_eofbit) != 0;
5120 /* ?flags@ios_base@std@@QAEHH@Z */
5121 /* ?flags@ios_base@std@@QEAAHH@Z */
5122 DEFINE_THISCALL_WRAPPER(ios_base_flags_set, 8)
5123 IOSB_fmtflags __thiscall ios_base_flags_set(ios_base *this, IOSB_fmtflags flags)
5125 IOSB_fmtflags ret = this->fmtfl;
5127 TRACE("(%p %x)\n", this, flags);
5129 this->fmtfl = flags & FMTFLAG_mask;
5130 return ret;
5133 /* ?flags@ios_base@std@@QBEHXZ */
5134 /* ?flags@ios_base@std@@QEBAHXZ */
5135 DEFINE_THISCALL_WRAPPER(ios_base_flags_get, 4)
5136 IOSB_fmtflags __thiscall ios_base_flags_get(const ios_base *this)
5138 TRACE("(%p)\n", this);
5139 return this->fmtfl;
5142 /* ?getloc@ios_base@std@@QBE?AVlocale@2@XZ */
5143 /* ?getloc@ios_base@std@@QEBA?AVlocale@2@XZ */
5144 DEFINE_THISCALL_WRAPPER(ios_base_getloc, 8)
5145 locale* __thiscall ios_base_getloc(const ios_base *this, locale *ret)
5147 TRACE("(%p)\n", this);
5148 return locale_copy_ctor(ret, this->loc);
5151 /* ?good@ios_base@std@@QBE_NXZ */
5152 /* ?good@ios_base@std@@QEBA_NXZ */
5153 DEFINE_THISCALL_WRAPPER(ios_base_good, 4)
5154 MSVCP_bool __thiscall ios_base_good(const ios_base *this)
5156 TRACE("(%p)\n", this);
5157 return this->state == IOSTATE_goodbit;
5160 /* ?imbue@ios_base@std@@QAE?AVlocale@2@ABV32@@Z */
5161 /* ?imbue@ios_base@std@@QEAA?AVlocale@2@AEBV32@@Z */
5162 DEFINE_THISCALL_WRAPPER(ios_base_imbue, 12)
5163 locale* __thiscall ios_base_imbue(ios_base *this, locale *ret, const locale *loc)
5165 TRACE("(%p %p)\n", this, loc);
5166 *ret = *this->loc;
5167 locale_copy_ctor(this->loc, loc);
5168 return ret;
5171 /* ?precision@ios_base@std@@QAEHH@Z */
5172 /* ?precision@ios_base@std@@QEAA_J_J@Z */
5173 #if STREAMSIZE_BITS == 64
5174 DEFINE_THISCALL_WRAPPER(ios_base_precision_set, 12)
5175 #else
5176 DEFINE_THISCALL_WRAPPER(ios_base_precision_set, 8)
5177 #endif
5178 streamsize __thiscall ios_base_precision_set(ios_base *this, streamsize precision)
5180 streamsize ret = this->prec;
5182 TRACE("(%p %s)\n", this, wine_dbgstr_longlong(precision));
5184 this->prec = precision;
5185 return ret;
5188 /* ?precision@ios_base@std@@QBEHXZ */
5189 /* ?precision@ios_base@std@@QEBA_JXZ */
5190 DEFINE_THISCALL_WRAPPER(ios_base_precision_get, 4)
5191 streamsize __thiscall ios_base_precision_get(const ios_base *this)
5193 TRACE("(%p)\n", this);
5194 return this->prec;
5197 /* ?rdstate@ios_base@std@@QBEHXZ */
5198 /* ?rdstate@ios_base@std@@QEBAHXZ */
5199 DEFINE_THISCALL_WRAPPER(ios_base_rdstate, 4)
5200 IOSB_iostate __thiscall ios_base_rdstate(const ios_base *this)
5202 TRACE("(%p)\n", this);
5203 return this->state;
5206 /* ?setf@ios_base@std@@QAEHHH@Z */
5207 /* ?setf@ios_base@std@@QEAAHHH@Z */
5208 DEFINE_THISCALL_WRAPPER(ios_base_setf_mask, 12)
5209 IOSB_fmtflags __thiscall ios_base_setf_mask(ios_base *this, IOSB_fmtflags flags, IOSB_fmtflags mask)
5211 IOSB_fmtflags ret = this->fmtfl;
5213 TRACE("(%p %x %x)\n", this, flags, mask);
5215 this->fmtfl = (this->fmtfl & (~mask)) | (flags & mask & FMTFLAG_mask);
5216 return ret;
5219 /* ?setf@ios_base@std@@QAEHH@Z */
5220 /* ?setf@ios_base@std@@QEAAHH@Z */
5221 DEFINE_THISCALL_WRAPPER(ios_base_setf, 8)
5222 IOSB_fmtflags __thiscall ios_base_setf(ios_base *this, IOSB_fmtflags flags)
5224 IOSB_fmtflags ret = this->fmtfl;
5226 TRACE("(%p %x)\n", this, flags);
5228 this->fmtfl |= flags & FMTFLAG_mask;
5229 return ret;
5232 /* ?setstate@ios_base@std@@QAEXH_N@Z */
5233 /* ?setstate@ios_base@std@@QEAAXH_N@Z */
5234 DEFINE_THISCALL_WRAPPER(ios_base_setstate_reraise, 12)
5235 void __thiscall ios_base_setstate_reraise(ios_base *this, IOSB_iostate state, MSVCP_bool reraise)
5237 TRACE("(%p %x %x)\n", this, state, reraise);
5239 if(state != IOSTATE_goodbit)
5240 ios_base_clear_reraise(this, this->state | state, reraise);
5243 /* ?setstate@ios_base@std@@QAEXH@Z */
5244 /* ?setstate@ios_base@std@@QEAAXH@Z */
5245 DEFINE_THISCALL_WRAPPER(ios_base_setstate, 8)
5246 void __thiscall ios_base_setstate(ios_base *this, IOSB_iostate state)
5248 ios_base_setstate_reraise(this, state, FALSE);
5251 /* ?setstate@ios_base@std@@QAEXI@Z */
5252 /* ?setstate@ios_base@std@@QEAAXI@Z */
5253 DEFINE_THISCALL_WRAPPER(ios_base_setstate_unsigned, 8)
5254 void __thiscall ios_base_setstate_unsigned(ios_base *this, unsigned int state)
5256 ios_base_setstate_reraise(this, (IOSB_iostate)state, FALSE);
5259 /* ?sync_with_stdio@ios_base@std@@SA_N_N@Z */
5260 MSVCP_bool CDECL ios_base_sync_with_stdio(MSVCP_bool sync)
5262 _Lockit lock;
5263 MSVCP_bool ret;
5265 TRACE("(%x)\n", sync);
5267 _Lockit_ctor_locktype(&lock, _LOCK_STREAM);
5268 ret = ios_base_Sync;
5269 ios_base_Sync = sync;
5270 _Lockit_dtor(&lock);
5271 return ret;
5274 /* ?unsetf@ios_base@std@@QAEXH@Z */
5275 /* ?unsetf@ios_base@std@@QEAAXH@Z */
5276 DEFINE_THISCALL_WRAPPER(ios_base_unsetf, 8)
5277 void __thiscall ios_base_unsetf(ios_base *this, IOSB_fmtflags flags)
5279 TRACE("(%p %x)\n", this, flags);
5280 this->fmtfl &= ~flags;
5283 /* ?width@ios_base@std@@QAEHH@Z */
5284 /* ?width@ios_base@std@@QEAA_J_J@Z */
5285 #if STREAMSIZE_BITS == 64
5286 DEFINE_THISCALL_WRAPPER(ios_base_width_set, 12)
5287 #else
5288 DEFINE_THISCALL_WRAPPER(ios_base_width_set, 8)
5289 #endif
5290 streamsize __thiscall ios_base_width_set(ios_base *this, streamsize width)
5292 streamsize ret = this->wide;
5294 TRACE("(%p %s)\n", this, wine_dbgstr_longlong(width));
5296 this->wide = width;
5297 return ret;
5300 /* ?width@ios_base@std@@QBEHXZ */
5301 /* ?width@ios_base@std@@QEBA_JXZ */
5302 DEFINE_THISCALL_WRAPPER(ios_base_width_get, 4)
5303 streamsize __thiscall ios_base_width_get(ios_base *this)
5305 TRACE("(%p)\n", this);
5306 return this->wide;
5309 /* ?xalloc@ios_base@std@@SAHXZ */
5310 int CDECL ios_base_xalloc(void)
5312 _Lockit lock;
5313 int ret;
5315 TRACE("\n");
5317 _Lockit_ctor_locktype(&lock, _LOCK_STREAM);
5318 ret = ios_base_Index++;
5319 _Lockit_dtor(&lock);
5320 return ret;
5323 /* ?swap@ios_base@std@@QAEXAAV12@@Z */
5324 /* ?swap@ios_base@std@@QEAAXAEAV12@@Z */
5325 DEFINE_THISCALL_WRAPPER(ios_base_swap, 8)
5326 void __thiscall ios_base_swap(ios_base *this, ios_base *r)
5328 ios_base tmp;
5330 TRACE("(%p %p)\n", this, r);
5332 if(this == r)
5333 return;
5335 tmp = *this;
5336 *this = *r;
5337 this->vtable = tmp.vtable;
5338 tmp.vtable = r->vtable;
5339 *r = tmp;
5342 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@IAE@XZ */
5343 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@IEAA@XZ */
5344 DEFINE_THISCALL_WRAPPER(basic_ios_char_ctor, 4)
5345 basic_ios_char* __thiscall basic_ios_char_ctor(basic_ios_char *this)
5347 TRACE("(%p)\n", this);
5349 ios_base_ctor(&this->base);
5350 this->base.vtable = &MSVCP_basic_ios_char_vtable;
5351 return this;
5354 /* ?init@?$basic_ios@DU?$char_traits@D@std@@@std@@IAEXPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@_N@Z */
5355 /* ?init@?$basic_ios@DU?$char_traits@D@std@@@std@@IEAAXPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@_N@Z */
5356 DEFINE_THISCALL_WRAPPER(basic_ios_char_init, 12)
5357 void __thiscall basic_ios_char_init(basic_ios_char *this, basic_streambuf_char *streambuf, MSVCP_bool isstd)
5359 TRACE("(%p %p %x)\n", this, streambuf, isstd);
5360 ios_base__Init(&this->base);
5361 this->strbuf = streambuf;
5362 this->stream = NULL;
5363 this->fillch = ' ';
5365 if(!streambuf)
5366 ios_base_setstate(&this->base, IOSTATE_badbit);
5368 if(isstd)
5369 FIXME("standard streams not handled yet\n");
5372 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
5373 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
5374 DEFINE_THISCALL_WRAPPER(basic_ios_char_ctor_streambuf, 8)
5375 basic_ios_char* __thiscall basic_ios_char_ctor_streambuf(basic_ios_char *this, basic_streambuf_char *strbuf)
5377 TRACE("(%p %p)\n", this, strbuf);
5379 basic_ios_char_ctor(this);
5380 basic_ios_char_init(this, strbuf, FALSE);
5381 return this;
5384 /* ??1?$basic_ios@DU?$char_traits@D@std@@@std@@UAE@XZ */
5385 /* ??1?$basic_ios@DU?$char_traits@D@std@@@std@@UEAA@XZ */
5386 DEFINE_THISCALL_WRAPPER(basic_ios_char_dtor, 4)
5387 void __thiscall basic_ios_char_dtor(basic_ios_char *this)
5389 TRACE("(%p)\n", this);
5390 ios_base_dtor(&this->base);
5393 DEFINE_THISCALL_WRAPPER(basic_ios_char_vector_dtor, 8)
5394 basic_ios_char* __thiscall basic_ios_char_vector_dtor(basic_ios_char *this, unsigned int flags)
5396 TRACE("(%p %x)\n", this, flags);
5397 if(flags & 2) {
5398 /* we have an array, with the number of elements stored before the first object */
5399 INT_PTR i, *ptr = (INT_PTR *)this-1;
5401 for(i=*ptr-1; i>=0; i--)
5402 basic_ios_char_dtor(this+i);
5403 MSVCRT_operator_delete(ptr);
5404 } else {
5405 basic_ios_char_dtor(this);
5406 if(flags & 1)
5407 MSVCRT_operator_delete(this);
5410 return this;
5413 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z */
5414 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z */
5415 DEFINE_THISCALL_WRAPPER(basic_ios_char_clear_reraise, 12)
5416 void __thiscall basic_ios_char_clear_reraise(basic_ios_char *this, IOSB_iostate state, MSVCP_bool reraise)
5418 TRACE("(%p %x %x)\n", this, state, reraise);
5419 ios_base_clear_reraise(&this->base, state | (this->strbuf ? IOSTATE_goodbit : IOSTATE_badbit), reraise);
5422 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXI@Z */
5423 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXI@Z */
5424 DEFINE_THISCALL_WRAPPER(basic_ios_char_clear, 8)
5425 void __thiscall basic_ios_char_clear(basic_ios_char *this, unsigned int state)
5427 basic_ios_char_clear_reraise(this, (IOSB_iostate)state, FALSE);
5430 /* ?copyfmt@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEAAV12@ABV12@@Z */
5431 /* ?copyfmt@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEBV12@@Z */
5432 DEFINE_THISCALL_WRAPPER(basic_ios_char_copyfmt, 8)
5433 basic_ios_char* __thiscall basic_ios_char_copyfmt(basic_ios_char *this, basic_ios_char *copy)
5435 TRACE("(%p %p)\n", this, copy);
5436 if(this == copy)
5437 return this;
5439 this->stream = copy->stream;
5440 this->fillch = copy->fillch;
5441 ios_base_copyfmt(&this->base, &copy->base);
5442 return this;
5445 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEDD@Z */
5446 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAADD@Z */
5447 DEFINE_THISCALL_WRAPPER(basic_ios_char_fill_set, 8)
5448 char __thiscall basic_ios_char_fill_set(basic_ios_char *this, char fill)
5450 char ret = this->fillch;
5452 TRACE("(%p %c)\n", this, fill);
5454 this->fillch = fill;
5455 return ret;
5458 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDXZ */
5459 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADXZ */
5460 DEFINE_THISCALL_WRAPPER(basic_ios_char_fill_get, 4)
5461 char __thiscall basic_ios_char_fill_get(basic_ios_char *this)
5463 TRACE("(%p)\n", this);
5464 return this->fillch;
5467 /* ?imbue@?$basic_ios@DU?$char_traits@D@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
5468 /* ?imbue@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
5469 DEFINE_THISCALL_WRAPPER(basic_ios_char_imbue, 12)
5470 locale *__thiscall basic_ios_char_imbue(basic_ios_char *this, locale *ret, const locale *loc)
5472 TRACE("(%p %p %p)\n", this, ret, loc);
5474 if(this->strbuf) {
5475 basic_streambuf_char_pubimbue(this->strbuf, ret, loc);
5476 locale_dtor(ret);
5479 return ios_base_imbue(&this->base, ret, loc);
5482 /* ?narrow@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDDD@Z */
5483 /* ?narrow@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADDD@Z */
5484 DEFINE_THISCALL_WRAPPER(basic_ios_char_narrow, 12)
5485 char __thiscall basic_ios_char_narrow(basic_ios_char *this, char ch, char def)
5487 TRACE("(%p %c %c)\n", this, ch, def);
5488 return ctype_char_narrow_ch(ctype_char_use_facet(this->strbuf->loc), ch, def);
5491 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PAV32@@Z */
5492 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PEAV32@@Z */
5493 DEFINE_THISCALL_WRAPPER(basic_ios_char_rdbuf_set, 8)
5494 basic_streambuf_char* __thiscall basic_ios_char_rdbuf_set(basic_ios_char *this, basic_streambuf_char *streambuf)
5496 basic_streambuf_char *ret = this->strbuf;
5498 TRACE("(%p %p)\n", this, streambuf);
5500 this->strbuf = streambuf;
5501 basic_ios_char_clear(this, IOSTATE_goodbit);
5502 return ret;
5505 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ */
5506 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ */
5507 DEFINE_THISCALL_WRAPPER(basic_ios_char_rdbuf_get, 4)
5508 basic_streambuf_char* __thiscall basic_ios_char_rdbuf_get(const basic_ios_char *this)
5510 TRACE("(%p)\n", this);
5511 return this->strbuf;
5514 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z */
5515 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z */
5516 DEFINE_THISCALL_WRAPPER(basic_ios_char_setstate_reraise, 12)
5517 void __thiscall basic_ios_char_setstate_reraise(basic_ios_char *this, IOSB_iostate state, MSVCP_bool reraise)
5519 TRACE("(%p %x %x)\n", this, state, reraise);
5521 if(state != IOSTATE_goodbit)
5522 basic_ios_char_clear_reraise(this, this->base.state | state, reraise);
5525 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXI@Z */
5526 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXI@Z */
5527 DEFINE_THISCALL_WRAPPER(basic_ios_char_setstate, 8)
5528 void __thiscall basic_ios_char_setstate(basic_ios_char *this, unsigned int state)
5530 basic_ios_char_setstate_reraise(this, (IOSB_iostate)state, FALSE);
5533 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEPAV?$basic_ostream@DU?$char_traits@D@std@@@2@PAV32@@Z */
5534 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAPEAV?$basic_ostream@DU?$char_traits@D@std@@@2@PEAV32@@Z */
5535 DEFINE_THISCALL_WRAPPER(basic_ios_char_tie_set, 8)
5536 basic_ostream_char* __thiscall basic_ios_char_tie_set(basic_ios_char *this, basic_ostream_char *ostream)
5538 basic_ostream_char *ret = this->stream;
5540 TRACE("(%p %p)\n", this, ostream);
5542 this->stream = ostream;
5543 return ret;
5546 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_ostream@DU?$char_traits@D@std@@@2@XZ */
5547 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_ostream@DU?$char_traits@D@std@@@2@XZ */
5548 DEFINE_THISCALL_WRAPPER(basic_ios_char_tie_get, 4)
5549 basic_ostream_char* __thiscall basic_ios_char_tie_get(const basic_ios_char *this)
5551 TRACE("(%p)\n", this);
5552 return this->stream;
5555 /* ?widen@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDD@Z */
5556 /* ?widen@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADD@Z */
5557 DEFINE_THISCALL_WRAPPER(basic_ios_char_widen, 8)
5558 char __thiscall basic_ios_char_widen(basic_ios_char *this, char ch)
5560 TRACE("(%p %c)\n", this, ch);
5561 return ctype_char_widen_ch(ctype_char_use_facet(this->strbuf->loc), ch);
5564 /* ?swap@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXAAV12@@Z */
5565 /* ?swap@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXAEAV12@@Z */
5566 DEFINE_THISCALL_WRAPPER(basic_ios_char_swap, 8)
5567 void __thiscall basic_ios_char_swap(basic_ios_char *this, basic_ios_char *r)
5569 void *swap_ptr;
5571 TRACE("(%p %p)\n", this, r);
5573 if(this == r)
5574 return;
5576 ios_base_swap(&this->base, &r->base);
5577 swap_ptr = this->stream;
5578 this->stream = r->stream;
5579 r->stream = swap_ptr;
5580 this->fillch ^= r->fillch;
5581 r->fillch ^= this->fillch;
5582 this->fillch ^= r->fillch;
5585 /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@IAE@XZ */
5586 /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@IEAA@XZ */
5587 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_ctor, 4)
5588 basic_ios_wchar* __thiscall basic_ios_wchar_ctor(basic_ios_wchar *this)
5590 TRACE("(%p)\n", this);
5592 ios_base_ctor(&this->base);
5593 this->base.vtable = &MSVCP_basic_ios_wchar_vtable;
5594 return this;
5597 /* ??0?$basic_ios@GU?$char_traits@G@std@@@std@@IAE@XZ */
5598 /* ??0?$basic_ios@GU?$char_traits@G@std@@@std@@IEAA@XZ */
5599 DEFINE_THISCALL_WRAPPER(basic_ios_short_ctor, 4)
5600 basic_ios_wchar* __thiscall basic_ios_short_ctor(basic_ios_wchar *this)
5602 basic_ios_wchar_ctor(this);
5603 this->base.vtable = &MSVCP_basic_ios_short_vtable;
5604 return this;
5607 /* ?init@?$basic_ios@_WU?$char_traits@_W@std@@@std@@IAEXPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_N@Z */
5608 /* ?init@?$basic_ios@_WU?$char_traits@_W@std@@@std@@IEAAXPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_N@Z */
5609 /* ?init@?$basic_ios@GU?$char_traits@G@std@@@std@@IAEXPAV?$basic_streambuf@GU?$char_traits@G@std@@@2@_N@Z */
5610 /* ?init@?$basic_ios@GU?$char_traits@G@std@@@std@@IEAAXPEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@_N@Z */
5611 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_init, 12)
5612 void __thiscall basic_ios_wchar_init(basic_ios_wchar *this, basic_streambuf_wchar *streambuf, MSVCP_bool isstd)
5614 TRACE("(%p %p %x)\n", this, streambuf, isstd);
5615 ios_base__Init(&this->base);
5616 this->strbuf = streambuf;
5617 this->stream = NULL;
5618 this->fillch = ' ';
5620 if(!streambuf)
5621 ios_base_setstate(&this->base, IOSTATE_badbit);
5623 if(isstd)
5624 FIXME("standard streams not handled yet\n");
5627 /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
5628 /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
5629 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_ctor_streambuf, 8)
5630 basic_ios_wchar* __thiscall basic_ios_wchar_ctor_streambuf(basic_ios_wchar *this, basic_streambuf_wchar *strbuf)
5632 TRACE("(%p %p)\n", this, strbuf);
5634 basic_ios_wchar_ctor(this);
5635 basic_ios_wchar_init(this, strbuf, FALSE);
5636 return this;
5639 /* ??0?$basic_ios@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
5640 /* ??0?$basic_ios@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
5641 DEFINE_THISCALL_WRAPPER(basic_ios_short_ctor_streambuf, 8)
5642 basic_ios_wchar* __thiscall basic_ios_short_ctor_streambuf(basic_ios_wchar *this, basic_streambuf_wchar *strbuf)
5644 basic_ios_wchar_ctor_streambuf(this, strbuf);
5645 this->base.vtable = &MSVCP_basic_ios_short_vtable;
5646 return this;
5649 /* ??1?$basic_ios@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
5650 /* ??1?$basic_ios@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
5651 /* ??1?$basic_ios@GU?$char_traits@G@std@@@std@@UAE@XZ */
5652 /* ??1?$basic_ios@GU?$char_traits@G@std@@@std@@UEAA@XZ */
5653 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_dtor, 4)
5654 void __thiscall basic_ios_wchar_dtor(basic_ios_wchar *this)
5656 TRACE("(%p)\n", this);
5657 ios_base_dtor(&this->base);
5660 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_vector_dtor, 8)
5661 basic_ios_wchar* __thiscall basic_ios_wchar_vector_dtor(basic_ios_wchar *this, unsigned int flags)
5663 TRACE("(%p %x)\n", this, flags);
5664 if(flags & 2) {
5665 /* we have an array, with the number of elements stored before the first object */
5666 INT_PTR i, *ptr = (INT_PTR *)this-1;
5668 for(i=*ptr-1; i>=0; i--)
5669 basic_ios_wchar_dtor(this+i);
5670 MSVCRT_operator_delete(ptr);
5671 } else {
5672 basic_ios_wchar_dtor(this);
5673 if(flags & 1)
5674 MSVCRT_operator_delete(this);
5677 return this;
5680 /* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXH_N@Z */
5681 /* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXH_N@Z */
5682 /* ?clear@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXH_N@Z */
5683 /* ?clear@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXH_N@Z */
5684 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_clear_reraise, 12)
5685 void __thiscall basic_ios_wchar_clear_reraise(basic_ios_wchar *this, IOSB_iostate state, MSVCP_bool reraise)
5687 TRACE("(%p %x %x)\n", this, state, reraise);
5688 ios_base_clear_reraise(&this->base, state | (this->strbuf ? IOSTATE_goodbit : IOSTATE_badbit), reraise);
5691 /* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXI@Z */
5692 /* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXI@Z */
5693 /* ?clear@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXI@Z */
5694 /* ?clear@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXI@Z */
5695 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_clear, 8)
5696 void __thiscall basic_ios_wchar_clear(basic_ios_wchar *this, unsigned int state)
5698 basic_ios_wchar_clear_reraise(this, (IOSB_iostate)state, FALSE);
5701 /* ?copyfmt@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEAAV12@ABV12@@Z */
5702 /* ?copyfmt@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEBV12@@Z */
5703 /* ?copyfmt@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEAAV12@ABV12@@Z */
5704 /* ?copyfmt@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAAEAV12@AEBV12@@Z */
5705 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_copyfmt, 8)
5706 basic_ios_wchar* __thiscall basic_ios_wchar_copyfmt(basic_ios_wchar *this, basic_ios_wchar *copy)
5708 TRACE("(%p %p)\n", this, copy);
5709 if(this == copy)
5710 return this;
5712 this->stream = copy->stream;
5713 this->fillch = copy->fillch;
5714 ios_base_copyfmt(&this->base, &copy->base);
5715 return this;
5718 /* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAE_W_W@Z */
5719 /* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAA_W_W@Z */
5720 /* ?fill@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEGG@Z */
5721 /* ?fill@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAGG@Z */
5722 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_fill_set, 8)
5723 wchar_t __thiscall basic_ios_wchar_fill_set(basic_ios_wchar *this, wchar_t fill)
5725 wchar_t ret = this->fillch;
5727 TRACE("(%p %c)\n", this, fill);
5729 this->fillch = fill;
5730 return ret;
5733 /* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBE_WXZ */
5734 /* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBA_WXZ */
5735 /* ?fill@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEGXZ */
5736 /* ?fill@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBAGXZ */
5737 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_fill_get, 4)
5738 wchar_t __thiscall basic_ios_wchar_fill_get(basic_ios_wchar *this)
5740 TRACE("(%p)\n", this);
5741 return this->fillch;
5744 /* ?imbue@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
5745 /* ?imbue@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
5746 /* ?imbue@?$basic_ios@GU?$char_traits@G@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
5747 /* ?imbue@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
5748 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_imbue, 12)
5749 locale *__thiscall basic_ios_wchar_imbue(basic_ios_wchar *this, locale *ret, const locale *loc)
5751 TRACE("(%p %p %p)\n", this, ret, loc);
5753 if(this->strbuf) {
5754 basic_streambuf_wchar_pubimbue(this->strbuf, ret, loc);
5755 locale_dtor(ret);
5758 return ios_base_imbue(&this->base, ret, loc);
5761 /* ?narrow@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBED_WD@Z */
5762 /* ?narrow@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBAD_WD@Z */
5763 /* ?narrow@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEDGD@Z */
5764 /* ?narrow@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBADGD@Z */
5765 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_narrow, 12)
5766 char __thiscall basic_ios_wchar_narrow(basic_ios_wchar *this, wchar_t ch, char def)
5768 TRACE("(%p %c %c)\n", this, ch, def);
5769 return ctype_wchar_narrow_ch(ctype_wchar_use_facet(this->strbuf->loc), ch, def);
5772 /* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@PAV32@@Z */
5773 /* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@PEAV32@@Z */
5774 /* ?rdbuf@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEPAV?$basic_streambuf@GU?$char_traits@G@std@@@2@PAV32@@Z */
5775 /* ?rdbuf@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAPEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@PEAV32@@Z */
5776 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_rdbuf_set, 8)
5777 basic_streambuf_wchar* __thiscall basic_ios_wchar_rdbuf_set(basic_ios_wchar *this, basic_streambuf_wchar *streambuf)
5779 basic_streambuf_wchar *ret = this->strbuf;
5781 TRACE("(%p %p)\n", this, streambuf);
5783 this->strbuf = streambuf;
5784 basic_ios_wchar_clear(this, IOSTATE_goodbit);
5785 return ret;
5788 /* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@XZ */
5789 /* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@XZ */
5790 /* ?rdbuf@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_streambuf@GU?$char_traits@G@std@@@2@XZ */
5791 /* ?rdbuf@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@XZ */
5792 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_rdbuf_get, 4)
5793 basic_streambuf_wchar* __thiscall basic_ios_wchar_rdbuf_get(const basic_ios_wchar *this)
5795 TRACE("(%p)\n", this);
5796 return this->strbuf;
5799 /* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXH_N@Z */
5800 /* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXH_N@Z */
5801 /* ?setstate@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXH_N@Z */
5802 /* ?setstate@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXH_N@Z */
5803 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_setstate_reraise, 12)
5804 void __thiscall basic_ios_wchar_setstate_reraise(basic_ios_wchar *this, IOSB_iostate state, MSVCP_bool reraise)
5806 TRACE("(%p %x %x)\n", this, state, reraise);
5808 if(state != IOSTATE_goodbit)
5809 basic_ios_wchar_clear_reraise(this, this->base.state | state, reraise);
5812 /* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXI@Z */
5813 /* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXI@Z */
5814 /* ?setstate@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXI@Z */
5815 /* ?setstate@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXI@Z */
5816 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_setstate, 8)
5817 void __thiscall basic_ios_wchar_setstate(basic_ios_wchar *this, IOSB_iostate state)
5819 basic_ios_wchar_setstate_reraise(this, state, FALSE);
5822 /* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEPAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@PAV32@@Z */
5823 /* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAPEAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@PEAV32@@Z */
5824 /* ?tie@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEPAV?$basic_ostream@GU?$char_traits@G@std@@@2@PAV32@@Z */
5825 /* ?tie@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAPEAV?$basic_ostream@GU?$char_traits@G@std@@@2@PEAV32@@Z */
5826 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_tie_set, 8)
5827 basic_ostream_wchar* __thiscall basic_ios_wchar_tie_set(basic_ios_wchar *this, basic_ostream_wchar *ostream)
5829 basic_ostream_wchar *ret = this->stream;
5831 TRACE("(%p %p)\n", this, ostream);
5833 this->stream = ostream;
5834 return ret;
5837 /* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@XZ */
5838 /* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@XZ */
5839 /* ?tie@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_ostream@GU?$char_traits@G@std@@@2@XZ */
5840 /* ?tie@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_ostream@GU?$char_traits@G@std@@@2@XZ */
5841 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_tie_get, 4)
5842 basic_ostream_wchar* __thiscall basic_ios_wchar_tie_get(const basic_ios_wchar *this)
5844 TRACE("(%p)\n", this);
5845 return this->stream;
5848 /* ?widen@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBE_WD@Z */
5849 /* ?widen@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBA_WD@Z */
5850 /* ?widen@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEGD@Z */
5851 /* ?widen@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBAGD@Z */
5852 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_widen, 8)
5853 wchar_t __thiscall basic_ios_wchar_widen(basic_ios_wchar *this, char ch)
5855 TRACE("(%p %c)\n", this, ch);
5856 return ctype_wchar_widen_ch(ctype_wchar_use_facet(this->strbuf->loc), ch);
5859 /* ?swap@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXAAV12@@Z */
5860 /* ?swap@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXAEAV12@@Z */
5861 /* ?swap@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXAAV12@@Z */
5862 /* ?swap@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXAEAV12@@Z */
5863 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_swap, 8)
5864 void __thiscall basic_ios_wchar_swap(basic_ios_wchar *this, basic_ios_wchar *r)
5866 void *swap_ptr;
5868 TRACE("(%p %p)\n", this, r);
5870 if(this == r)
5871 return;
5873 ios_base_swap(&this->base, &r->base);
5874 swap_ptr = this->stream;
5875 this->stream = r->stream;
5876 r->stream = swap_ptr;
5877 this->fillch ^= r->fillch;
5878 r->fillch ^= this->fillch;
5879 this->fillch ^= r->fillch;
5882 /* Caution: basic_ostream uses virtual inheritance.
5883 * All constructors have additional parameter that says if base class should be initialized.
5884 * Base class needs to be accessed using vbtable.
5886 static inline basic_ios_char* basic_ostream_char_get_basic_ios(basic_ostream_char *this)
5888 return (basic_ios_char*)((char*)this+this->vbtable[1]);
5891 static inline basic_ios_char* basic_ostream_char_to_basic_ios(basic_ostream_char *ptr)
5893 return (basic_ios_char*)((char*)ptr+basic_ostream_char_vbtable[1]);
5896 static inline basic_ostream_char* basic_ostream_char_from_basic_ios(basic_ios_char *ptr)
5898 return (basic_ostream_char*)((char*)ptr-basic_ostream_char_vbtable[1]);
5901 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z */
5902 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z */
5903 DEFINE_THISCALL_WRAPPER(basic_ostream_char_ctor, 16)
5904 basic_ostream_char* __thiscall basic_ostream_char_ctor(basic_ostream_char *this,
5905 basic_streambuf_char *strbuf, MSVCP_bool isstd, MSVCP_bool virt_init)
5907 basic_ios_char *base;
5909 TRACE("(%p %p %d %d)\n", this, strbuf, isstd, virt_init);
5911 if(virt_init) {
5912 this->vbtable = basic_ostream_char_vbtable;
5913 base = basic_ostream_char_get_basic_ios(this);
5914 basic_ios_char_ctor(base);
5915 }else {
5916 base = basic_ostream_char_get_basic_ios(this);
5919 base->base.vtable = &MSVCP_basic_ostream_char_vtable;
5920 basic_ios_char_init(base, strbuf, isstd);
5921 return this;
5924 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@W4_Uninitialized@1@_N@Z */
5925 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@W4_Uninitialized@1@_N@Z */
5926 DEFINE_THISCALL_WRAPPER(basic_ostream_char_ctor_uninitialized, 16)
5927 basic_ostream_char* __thiscall basic_ostream_char_ctor_uninitialized(basic_ostream_char *this,
5928 int uninitialized, MSVCP_bool addstd, MSVCP_bool virt_init)
5930 basic_ios_char *base;
5932 TRACE("(%p %d %x)\n", this, uninitialized, addstd);
5934 if(virt_init) {
5935 this->vbtable = basic_ostream_char_vbtable;
5936 base = basic_ostream_char_get_basic_ios(this);
5937 basic_ios_char_ctor(base);
5938 }else {
5939 base = basic_ostream_char_get_basic_ios(this);
5942 base->base.vtable = &MSVCP_basic_ostream_char_vtable;
5943 if(addstd)
5944 ios_base_Addstd(&base->base);
5945 return this;
5948 /* ??1?$basic_ostream@DU?$char_traits@D@std@@@std@@UAE@XZ */
5949 /* ??1?$basic_ostream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
5950 DEFINE_THISCALL_WRAPPER(basic_ostream_char_dtor, 4)
5951 void __thiscall basic_ostream_char_dtor(basic_ios_char *base)
5953 basic_ostream_char *this = basic_ostream_char_from_basic_ios(base);
5955 /* don't destroy virtual base here */
5956 TRACE("(%p)\n", this);
5959 /* ??_D?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
5960 /* ??_D?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
5961 DEFINE_THISCALL_WRAPPER(basic_ostream_char_vbase_dtor, 4)
5962 void __thiscall basic_ostream_char_vbase_dtor(basic_ostream_char *this)
5964 TRACE("(%p)\n", this);
5965 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(this));
5966 basic_ios_char_dtor(basic_ostream_char_get_basic_ios(this));
5969 DEFINE_THISCALL_WRAPPER(basic_ostream_char_vector_dtor, 8)
5970 basic_ostream_char* __thiscall basic_ostream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
5972 basic_ostream_char *this = basic_ostream_char_from_basic_ios(base);
5974 TRACE("(%p %x)\n", this, flags);
5976 if(flags & 2) {
5977 /* we have an array, with the number of elements stored before the first object */
5978 INT_PTR i, *ptr = (INT_PTR *)this-1;
5980 for(i=*ptr-1; i>=0; i--)
5981 basic_ostream_char_vbase_dtor(this+i);
5982 MSVCRT_operator_delete(ptr);
5983 } else {
5984 basic_ostream_char_vbase_dtor(this);
5985 if(flags & 1)
5986 MSVCRT_operator_delete(this);
5989 return this;
5992 /* ?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@XZ */
5993 /* ?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@XZ */
5994 DEFINE_THISCALL_WRAPPER(basic_ostream_char_flush, 4)
5995 basic_ostream_char* __thiscall basic_ostream_char_flush(basic_ostream_char *this)
5997 /* this function is not matching C++ specification */
5998 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6000 TRACE("(%p)\n", this);
6002 if(basic_ios_char_rdbuf_get(base) && ios_base_good(&base->base)
6003 && basic_streambuf_char_pubsync(basic_ios_char_rdbuf_get(base))==-1)
6004 basic_ios_char_setstate(base, IOSTATE_badbit);
6005 return this;
6008 /* ?flush@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@@Z */
6009 /* ?flush@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@1@AEAV21@@Z */
6010 basic_ostream_char* __cdecl flush_ostream_char(basic_ostream_char *ostream)
6012 return basic_ostream_char_flush(ostream);
6015 /* ?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
6016 /* ?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
6017 DEFINE_THISCALL_WRAPPER(basic_ostream_char__Osfx, 4)
6018 void __thiscall basic_ostream_char__Osfx(basic_ostream_char *this)
6020 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6022 TRACE("(%p)\n", this);
6024 if(base->base.fmtfl & FMTFLAG_unitbuf)
6025 basic_ostream_char_flush(this);
6028 /* ?osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
6029 /* ?osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
6030 DEFINE_THISCALL_WRAPPER(basic_ostream_char_osfx, 4)
6031 void __thiscall basic_ostream_char_osfx(basic_ostream_char *this)
6033 TRACE("(%p)\n", this);
6034 basic_ostream_char__Osfx(this);
6037 static BOOL basic_ostream_char_sentry_create(basic_ostream_char *ostr)
6039 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
6041 if(basic_ios_char_rdbuf_get(base))
6042 call_basic_streambuf_char__Lock(base->strbuf);
6044 if(ios_base_good(&base->base) && base->stream)
6045 basic_ostream_char_flush(base->stream);
6047 return ios_base_good(&base->base);
6050 static void basic_ostream_char_sentry_destroy(basic_ostream_char *ostr)
6052 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
6054 if(ios_base_good(&base->base) && !__uncaught_exception())
6055 basic_ostream_char_osfx(ostr);
6057 if(basic_ios_char_rdbuf_get(base))
6058 call_basic_streambuf_char__Unlock(base->strbuf);
6061 /* ?opfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE_NXZ */
6062 /* ?opfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA_NXZ */
6063 DEFINE_THISCALL_WRAPPER(basic_ostream_char_opfx, 4)
6064 MSVCP_bool __thiscall basic_ostream_char_opfx(basic_ostream_char *this)
6066 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6068 TRACE("(%p)\n", this);
6070 if(ios_base_good(&base->base) && base->stream)
6071 basic_ostream_char_flush(base->stream);
6072 return ios_base_good(&base->base);
6075 /* ?put@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@D@Z */
6076 /* ?put@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@D@Z */
6077 DEFINE_THISCALL_WRAPPER(basic_ostream_char_put, 8)
6078 basic_ostream_char* __thiscall basic_ostream_char_put(basic_ostream_char *this, char ch)
6080 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6082 TRACE("(%p %c)\n", this, ch);
6084 if(!basic_ostream_char_sentry_create(this)
6085 || basic_streambuf_char_sputc(base->strbuf, ch)==EOF) {
6086 basic_ostream_char_sentry_destroy(this);
6087 basic_ios_char_setstate(base, IOSTATE_badbit);
6088 return this;
6091 basic_ostream_char_sentry_destroy(this);
6092 return this;
6095 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@JH@Z */
6096 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@_JH@Z */
6097 #if STREAMOFF_BITS == 64
6098 DEFINE_THISCALL_WRAPPER(basic_ostream_char_seekp, 16)
6099 #else
6100 DEFINE_THISCALL_WRAPPER(basic_ostream_char_seekp, 12)
6101 #endif
6102 basic_ostream_char* __thiscall basic_ostream_char_seekp(basic_ostream_char *this, streamoff off, int way)
6104 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6106 TRACE("(%p %s %d)\n", this, wine_dbgstr_longlong(off), way);
6108 if(!ios_base_fail(&base->base)) {
6109 fpos_int seek;
6111 basic_streambuf_char_pubseekoff(basic_ios_char_rdbuf_get(base),
6112 &seek, off, way, OPENMODE_out);
6113 if(seek.off==-1 && seek.pos==0 && seek.state==0)
6114 basic_ios_char_setstate(base, IOSTATE_failbit);
6116 return this;
6119 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
6120 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
6121 DEFINE_THISCALL_WRAPPER(basic_ostream_char_seekp_fpos, 28)
6122 basic_ostream_char* __thiscall basic_ostream_char_seekp_fpos(basic_ostream_char *this, fpos_int pos)
6124 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6126 TRACE("(%p %s)\n", this, debugstr_fpos_int(&pos));
6128 if(!ios_base_fail(&base->base)) {
6129 fpos_int seek;
6131 basic_streambuf_char_pubseekpos(basic_ios_char_rdbuf_get(base),
6132 &seek, pos, OPENMODE_out);
6133 if(seek.off==-1 && seek.pos==0 && seek.state==0)
6134 basic_ios_char_setstate(base, IOSTATE_failbit);
6136 return this;
6139 /* ?tellp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@XZ */
6140 /* ?tellp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
6141 DEFINE_THISCALL_WRAPPER(basic_ostream_char_tellp, 8)
6142 fpos_int* __thiscall basic_ostream_char_tellp(basic_ostream_char *this, fpos_int *ret)
6144 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6146 TRACE("(%p)\n", this);
6148 if(!ios_base_fail(&base->base)) {
6149 basic_streambuf_char_pubseekoff(basic_ios_char_rdbuf_get(base),
6150 ret, 0, SEEKDIR_cur, OPENMODE_out);
6151 }else {
6152 ret->off = -1;
6153 ret->pos = 0;
6154 ret->state = 0;
6156 return ret;
6159 /* ?write@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@PBDH@Z */
6160 /* ?write@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEBD_J@Z */
6161 #if STREAMSIZE_BITS == 64
6162 DEFINE_THISCALL_WRAPPER(basic_ostream_char_write, 16)
6163 #else
6164 DEFINE_THISCALL_WRAPPER(basic_ostream_char_write, 12)
6165 #endif
6166 basic_ostream_char* __thiscall basic_ostream_char_write(basic_ostream_char *this, const char *str, streamsize count)
6168 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6170 TRACE("(%p %s %s)\n", this, debugstr_a(str), wine_dbgstr_longlong(count));
6172 if(!basic_ostream_char_sentry_create(this)
6173 || basic_streambuf_char_sputn(base->strbuf, str, count)!=count) {
6174 basic_ostream_char_sentry_destroy(this);
6175 basic_ios_char_setstate(base, IOSTATE_badbit);
6176 return this;
6179 basic_ostream_char_sentry_destroy(this);
6180 return this;
6183 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@F@Z */
6184 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@F@Z */
6185 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_short, 8)
6186 basic_ostream_char* __thiscall basic_ostream_char_print_short(basic_ostream_char *this, short val)
6188 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6189 int state = IOSTATE_goodbit;
6191 TRACE("(%p %d)\n", this, val);
6193 if(basic_ostream_char_sentry_create(this)) {
6194 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6195 const num_put *numput = num_put_char_use_facet(strbuf->loc);
6196 ostreambuf_iterator_char dest;
6198 memset(&dest, 0, sizeof(dest));
6199 dest.strbuf = strbuf;
6200 num_put_char_put_long(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base),
6201 (ios_base_flags_get(&base->base) & FMTFLAG_basefield & (FMTFLAG_oct | FMTFLAG_hex))
6202 ? (LONG)((unsigned short)val) : (LONG)val);
6204 basic_ostream_char_sentry_destroy(this);
6206 basic_ios_char_setstate(base, state);
6207 return this;
6210 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@G@Z */
6211 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@G@Z */
6212 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_ushort, 8)
6213 basic_ostream_char* __thiscall basic_ostream_char_print_ushort(basic_ostream_char *this, unsigned short val)
6215 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6216 int state = IOSTATE_goodbit;
6218 TRACE("(%p %u)\n", this, val);
6220 if(basic_ostream_char_sentry_create(this)) {
6221 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6222 const num_put *numput = num_put_char_use_facet(strbuf->loc);
6223 ostreambuf_iterator_char dest;
6225 memset(&dest, 0, sizeof(dest));
6226 dest.strbuf = strbuf;
6227 num_put_char_put_ulong(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
6229 basic_ostream_char_sentry_destroy(this);
6231 basic_ios_char_setstate(base, state);
6232 return this;
6235 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@H@Z */
6236 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@H@Z */
6237 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@J@Z */
6238 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@J@Z */
6239 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_int, 8)
6240 basic_ostream_char* __thiscall basic_ostream_char_print_int(basic_ostream_char *this, int val)
6242 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6243 int state = IOSTATE_goodbit;
6245 TRACE("(%p %d)\n", this, val);
6247 if(basic_ostream_char_sentry_create(this)) {
6248 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6249 const num_put *numput = num_put_char_use_facet(strbuf->loc);
6250 ostreambuf_iterator_char dest;
6252 memset(&dest, 0, sizeof(dest));
6253 dest.strbuf = strbuf;
6254 num_put_char_put_long(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
6256 basic_ostream_char_sentry_destroy(this);
6258 basic_ios_char_setstate(base, state);
6259 return this;
6262 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@I@Z */
6263 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@I@Z */
6264 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@K@Z */
6265 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@K@Z */
6266 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_uint, 8)
6267 basic_ostream_char* __thiscall basic_ostream_char_print_uint(basic_ostream_char *this, unsigned int val)
6269 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6270 int state = IOSTATE_goodbit;
6272 TRACE("(%p %u)\n", this, val);
6274 if(basic_ostream_char_sentry_create(this)) {
6275 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6276 const num_put *numput = num_put_char_use_facet(strbuf->loc);
6277 ostreambuf_iterator_char dest;
6279 memset(&dest, 0, sizeof(dest));
6280 dest.strbuf = strbuf;
6281 num_put_char_put_ulong(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
6283 basic_ostream_char_sentry_destroy(this);
6285 basic_ios_char_setstate(base, state);
6286 return this;
6289 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@M@Z */
6290 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@M@Z */
6291 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_float, 8)
6292 basic_ostream_char* __thiscall basic_ostream_char_print_float(basic_ostream_char *this, float val)
6294 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6295 int state = IOSTATE_goodbit;
6297 TRACE("(%p %f)\n", this, val);
6299 if(basic_ostream_char_sentry_create(this)) {
6300 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6301 const num_put *numput = num_put_char_use_facet(strbuf->loc);
6302 ostreambuf_iterator_char dest;
6304 memset(&dest, 0, sizeof(dest));
6305 dest.strbuf = strbuf;
6306 num_put_char_put_double(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
6308 basic_ostream_char_sentry_destroy(this);
6310 basic_ios_char_setstate(base, state);
6311 return this;
6314 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@N@Z */
6315 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@N@Z */
6316 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_double, 12)
6317 basic_ostream_char* __thiscall basic_ostream_char_print_double(basic_ostream_char *this, double val)
6319 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6320 int state = IOSTATE_goodbit;
6322 TRACE("(%p %lf)\n", this, val);
6324 if(basic_ostream_char_sentry_create(this)) {
6325 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6326 const num_put *numput = num_put_char_use_facet(strbuf->loc);
6327 ostreambuf_iterator_char dest;
6329 memset(&dest, 0, sizeof(dest));
6330 dest.strbuf = strbuf;
6331 num_put_char_put_double(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
6333 basic_ostream_char_sentry_destroy(this);
6335 basic_ios_char_setstate(base, state);
6336 return this;
6339 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@O@Z */
6340 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@O@Z */
6341 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_ldouble, 12)
6342 basic_ostream_char* __thiscall basic_ostream_char_print_ldouble(basic_ostream_char *this, double val)
6344 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6345 int state = IOSTATE_goodbit;
6347 TRACE("(%p %lf)\n", this, val);
6349 if(basic_ostream_char_sentry_create(this)) {
6350 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6351 const num_put *numput = num_put_char_use_facet(strbuf->loc);
6352 ostreambuf_iterator_char dest;
6354 memset(&dest, 0, sizeof(dest));
6355 dest.strbuf = strbuf;
6356 num_put_char_put_ldouble(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
6358 basic_ostream_char_sentry_destroy(this);
6360 basic_ios_char_setstate(base, state);
6361 return this;
6364 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
6365 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
6366 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_streambuf, 8)
6367 basic_ostream_char* __thiscall basic_ostream_char_print_streambuf(basic_ostream_char *this, basic_streambuf_char *val)
6369 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6370 IOSB_iostate state = IOSTATE_badbit;
6371 int c = '\n';
6373 TRACE("(%p %p)\n", this, val);
6375 if(basic_ostream_char_sentry_create(this)) {
6376 for(c = basic_streambuf_char_sgetc(val); c!=EOF;
6377 c = basic_streambuf_char_snextc(val)) {
6378 state = IOSTATE_goodbit;
6380 if(basic_streambuf_char_sputc(base->strbuf, c) == EOF) {
6381 state = IOSTATE_badbit;
6382 break;
6385 }else {
6386 state = IOSTATE_badbit;
6388 basic_ostream_char_sentry_destroy(this);
6390 ios_base_width_set(&base->base, 0);
6391 basic_ios_char_setstate(base, state);
6392 return this;
6395 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@PBX@Z */
6396 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@PEBX@Z */
6397 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_ptr, 8)
6398 basic_ostream_char* __thiscall basic_ostream_char_print_ptr(basic_ostream_char *this, const void *val)
6400 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6401 int state = IOSTATE_goodbit;
6403 TRACE("(%p %p)\n", this, val);
6405 if(basic_ostream_char_sentry_create(this)) {
6406 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6407 const num_put *numput = num_put_char_use_facet(strbuf->loc);
6408 ostreambuf_iterator_char dest;
6410 memset(&dest, 0, sizeof(dest));
6411 dest.strbuf = strbuf;
6412 num_put_char_put_ptr(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
6414 basic_ostream_char_sentry_destroy(this);
6416 basic_ios_char_setstate(base, state);
6417 return this;
6420 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@_J@Z */
6421 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@_J@Z */
6422 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_int64, 12)
6423 basic_ostream_char* __thiscall basic_ostream_char_print_int64(basic_ostream_char *this, __int64 val)
6425 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6426 int state = IOSTATE_goodbit;
6428 TRACE("(%p)\n", this);
6430 if(basic_ostream_char_sentry_create(this)) {
6431 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6432 const num_put *numput = num_put_char_use_facet(strbuf->loc);
6433 ostreambuf_iterator_char dest;
6435 memset(&dest, 0, sizeof(dest));
6436 dest.strbuf = strbuf;
6437 num_put_char_put_int64(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
6439 basic_ostream_char_sentry_destroy(this);
6441 basic_ios_char_setstate(base, state);
6442 return this;
6445 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@_K@Z */
6446 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@_K@Z */
6447 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_uint64, 12)
6448 basic_ostream_char* __thiscall basic_ostream_char_print_uint64(basic_ostream_char *this, unsigned __int64 val)
6450 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6451 int state = IOSTATE_goodbit;
6453 TRACE("(%p)\n", this);
6455 if(basic_ostream_char_sentry_create(this)) {
6456 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6457 const num_put *numput = num_put_char_use_facet(strbuf->loc);
6458 ostreambuf_iterator_char dest;
6460 memset(&dest, 0, sizeof(dest));
6461 dest.strbuf = strbuf;
6462 num_put_char_put_uint64(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
6464 basic_ostream_char_sentry_destroy(this);
6466 basic_ios_char_setstate(base, state);
6467 return this;
6470 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@_N@Z */
6471 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@_N@Z */
6472 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_bool, 8)
6473 basic_ostream_char* __thiscall basic_ostream_char_print_bool(basic_ostream_char *this, MSVCP_bool val)
6475 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
6476 int state = IOSTATE_goodbit;
6478 TRACE("(%p %x)\n", this, val);
6480 if(basic_ostream_char_sentry_create(this)) {
6481 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6482 const num_put *numput = num_put_char_use_facet(strbuf->loc);
6483 ostreambuf_iterator_char dest;
6485 memset(&dest, 0, sizeof(dest));
6486 dest.strbuf = strbuf;
6487 num_put_char_put_bool(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
6489 basic_ostream_char_sentry_destroy(this);
6491 basic_ios_char_setstate(base, state);
6492 return this;
6495 /* ?ends@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@@Z */
6496 /* ?ends@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@1@AEAV21@@Z */
6497 basic_ostream_char* __cdecl basic_ostream_char_ends(basic_ostream_char *ostr)
6499 TRACE("(%p)\n", ostr);
6501 basic_ostream_char_put(ostr, 0);
6502 return ostr;
6505 /* ?endl@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@@Z */
6506 /* ?endl@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@1@AEAV21@@Z */
6507 basic_ostream_char* __cdecl basic_ostream_char_endl(basic_ostream_char *ostr)
6509 TRACE("(%p)\n", ostr);
6511 basic_ostream_char_put(ostr, '\n');
6512 basic_ostream_char_flush(ostr);
6513 return ostr;
6516 /* ??$?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 */
6517 /* ??$?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 */
6518 basic_ostream_char* __cdecl basic_ostream_char_print_bstr(basic_ostream_char *ostr, const basic_string_char *str)
6520 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
6521 IOSB_iostate state = IOSTATE_goodbit;
6523 TRACE("(%p %p)\n", ostr, str);
6525 if(basic_ostream_char_sentry_create(ostr)) {
6526 MSVCP_size_t len = MSVCP_basic_string_char_length(str);
6527 streamsize pad = (base->base.wide>len ? base->base.wide-len : 0);
6529 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
6530 for(; pad!=0; pad--) {
6531 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
6532 state = IOSTATE_badbit;
6533 break;
6538 if(state == IOSTATE_goodbit) {
6539 if(basic_streambuf_char_sputn(base->strbuf, MSVCP_basic_string_char_c_str(str), len) != len)
6540 state = IOSTATE_badbit;
6543 if(state == IOSTATE_goodbit) {
6544 for(; pad!=0; pad--) {
6545 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
6546 state = IOSTATE_badbit;
6547 break;
6552 base->base.wide = 0;
6553 }else {
6554 state = IOSTATE_badbit;
6556 basic_ostream_char_sentry_destroy(ostr);
6558 basic_ios_char_setstate(base, state);
6559 return ostr;
6562 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@C@Z */
6563 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@C@Z */
6564 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@D@Z */
6565 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z */
6566 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@E@Z */
6567 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@E@Z */
6568 basic_ostream_char* __cdecl basic_ostream_char_print_ch(basic_ostream_char *ostr, char ch)
6570 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
6571 IOSB_iostate state = IOSTATE_goodbit;
6573 TRACE("(%p %d)\n", ostr, ch);
6575 if(basic_ostream_char_sentry_create(ostr)) {
6576 streamsize pad = (base->base.wide>1 ? base->base.wide-1 : 0);
6578 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
6579 for(; pad!=0; pad--) {
6580 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
6581 state = IOSTATE_badbit;
6582 break;
6587 if(state == IOSTATE_goodbit) {
6588 if(basic_streambuf_char_sputc(base->strbuf, ch) == EOF)
6589 state = IOSTATE_badbit;
6592 if(state == IOSTATE_goodbit) {
6593 for(; pad!=0; pad--) {
6594 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
6595 state = IOSTATE_badbit;
6596 break;
6601 base->base.wide = 0;
6602 }else {
6603 state = IOSTATE_badbit;
6605 basic_ostream_char_sentry_destroy(ostr);
6607 basic_ios_char_setstate(base, state);
6608 return ostr;
6611 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBC@Z */
6612 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBC@Z */
6613 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBD@Z */
6614 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBD@Z */
6615 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBE@Z */
6616 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBE@Z */
6617 basic_ostream_char* __cdecl basic_ostream_char_print_str(basic_ostream_char *ostr, const char *str)
6619 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
6620 IOSB_iostate state = IOSTATE_goodbit;
6622 TRACE("(%p %s)\n", ostr, str);
6624 if(basic_ostream_char_sentry_create(ostr)) {
6625 MSVCP_size_t len = strlen(str);
6626 streamsize pad = (base->base.wide>len ? base->base.wide-len : 0);
6628 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
6629 for(; pad!=0; pad--) {
6630 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
6631 state = IOSTATE_badbit;
6632 break;
6637 if(state == IOSTATE_goodbit) {
6638 if(basic_streambuf_char_sputn(base->strbuf, str, len) != len)
6639 state = IOSTATE_badbit;
6642 if(state == IOSTATE_goodbit) {
6643 for(; pad!=0; pad--) {
6644 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
6645 state = IOSTATE_badbit;
6646 break;
6651 base->base.wide = 0;
6652 }else {
6653 state = IOSTATE_badbit;
6655 basic_ostream_char_sentry_destroy(ostr);
6657 basic_ios_char_setstate(base, state);
6658 return ostr;
6661 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
6662 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
6663 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_func, 8)
6664 basic_ostream_char* __thiscall basic_ostream_char_print_func(basic_ostream_char *this,
6665 basic_ostream_char* (__cdecl *pfunc)(basic_ostream_char*))
6667 TRACE("(%p %p)\n", this, pfunc);
6668 pfunc(this);
6669 return this;
6672 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@DU?$char_traits@D@std@@@1@AAV21@@Z@Z */
6673 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@DU?$char_traits@D@std@@@1@AEAV21@@Z@Z */
6674 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_func_basic_ios, 8)
6675 basic_ostream_char* __thiscall basic_ostream_char_print_func_basic_ios(basic_ostream_char *this,
6676 basic_ios_char* (__cdecl *pfunc)(basic_ios_char*))
6678 TRACE("(%p %p)\n", this, pfunc);
6679 pfunc(basic_ostream_char_get_basic_ios(this));
6680 return this;
6683 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
6684 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
6685 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_func_ios_base, 8)
6686 basic_ostream_char* __thiscall basic_ostream_char_print_func_ios_base(
6687 basic_ostream_char *this, ios_base* (__cdecl *pfunc)(ios_base*))
6689 TRACE("(%p %p)\n", this, pfunc);
6690 pfunc(&basic_ostream_char_get_basic_ios(this)->base);
6691 return this;
6694 /* ?swap@?$basic_ostream@DU?$char_traits@D@std@@@std@@IAEXAAV12@@Z */
6695 /* ?swap@?$basic_ostream@DU?$char_traits@D@std@@@std@@IEAAXAEAV12@@Z */
6696 DEFINE_THISCALL_WRAPPER(basic_ostream_char_swap, 8)
6697 void __thiscall basic_ostream_char_swap(basic_ostream_char *this, basic_ostream_char *r)
6699 TRACE("(%p %p)\n", this, r);
6701 if(this == r)
6702 return;
6704 basic_ios_char_swap(basic_ostream_char_get_basic_ios(this),
6705 basic_ostream_char_get_basic_ios(r));
6708 /* Caution: basic_ostream uses virtual inheritance. */
6709 static inline basic_ios_wchar* basic_ostream_wchar_get_basic_ios(basic_ostream_wchar *this)
6711 return (basic_ios_wchar*)((char*)this+this->vbtable[1]);
6714 static inline basic_ios_wchar* basic_ostream_wchar_to_basic_ios(basic_ostream_wchar *ptr)
6716 return (basic_ios_wchar*)((char*)ptr+basic_ostream_wchar_vbtable[1]);
6719 static inline basic_ostream_wchar* basic_ostream_wchar_from_basic_ios(basic_ios_wchar *ptr)
6721 return (basic_ostream_wchar*)((char*)ptr-basic_ostream_wchar_vbtable[1]);
6724 /* ??0?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z */
6725 /* ??0?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z */
6726 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_ctor, 16)
6727 basic_ostream_wchar* __thiscall basic_ostream_wchar_ctor(basic_ostream_wchar *this,
6728 basic_streambuf_wchar *strbuf, MSVCP_bool isstd, MSVCP_bool virt_init)
6730 basic_ios_wchar *base;
6732 TRACE("(%p %p %d %d)\n", this, strbuf, isstd, virt_init);
6734 if(virt_init) {
6735 this->vbtable = basic_ostream_wchar_vbtable;
6736 base = basic_ostream_wchar_get_basic_ios(this);
6737 basic_ios_wchar_ctor(base);
6738 }else {
6739 base = basic_ostream_wchar_get_basic_ios(this);
6742 base->base.vtable = &MSVCP_basic_ostream_wchar_vtable;
6743 basic_ios_wchar_init(base, strbuf, isstd);
6744 return this;
6747 /* ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N@Z */
6748 /* ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N@Z */
6749 DEFINE_THISCALL_WRAPPER(basic_ostream_short_ctor, 16)
6750 basic_ostream_wchar* __thiscall basic_ostream_short_ctor(basic_ostream_wchar *this,
6751 basic_streambuf_wchar *strbuf, MSVCP_bool isstd, MSVCP_bool virt_init)
6753 basic_ostream_wchar_ctor(this, strbuf, isstd, virt_init);
6754 basic_ostream_wchar_get_basic_ios(this)->base.vtable = &MSVCP_basic_ostream_short_vtable;
6755 return this;
6758 /* ??0?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAE@W4_Uninitialized@1@_N@Z */
6759 /* ??0?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAA@W4_Uninitialized@1@_N@Z */
6760 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_ctor_uninitialized, 16)
6761 basic_ostream_wchar* __thiscall basic_ostream_wchar_ctor_uninitialized(basic_ostream_wchar *this,
6762 int uninitialized, MSVCP_bool addstd, MSVCP_bool virt_init)
6764 basic_ios_wchar *base;
6766 TRACE("(%p %d %x)\n", this, uninitialized, addstd);
6768 if(virt_init) {
6769 this->vbtable = basic_ostream_wchar_vbtable;
6770 base = basic_ostream_wchar_get_basic_ios(this);
6771 basic_ios_wchar_ctor(base);
6772 }else {
6773 base = basic_ostream_wchar_get_basic_ios(this);
6776 base->base.vtable = &MSVCP_basic_ostream_wchar_vtable;
6777 if(addstd)
6778 ios_base_Addstd(&base->base);
6779 return this;
6782 /* ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE@W4_Uninitialized@1@_N@Z */
6783 /* ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA@W4_Uninitialized@1@_N@Z */
6784 DEFINE_THISCALL_WRAPPER(basic_ostream_short_ctor_uninitialized, 16)
6785 basic_ostream_wchar* __thiscall basic_ostream_short_ctor_uninitialized(basic_ostream_wchar *this,
6786 int uninitialized, MSVCP_bool addstd, MSVCP_bool virt_init)
6788 basic_ostream_wchar_ctor_uninitialized(this, uninitialized, addstd, virt_init);
6789 basic_ostream_wchar_get_basic_ios(this)->base.vtable = &MSVCP_basic_ostream_short_vtable;
6790 return this;
6793 /* ??1?$basic_ostream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
6794 /* ??1?$basic_ostream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
6795 /* ??1?$basic_ostream@GU?$char_traits@G@std@@@std@@UAE@XZ */
6796 /* ??1?$basic_ostream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
6797 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_dtor, 4)
6798 void __thiscall basic_ostream_wchar_dtor(basic_ios_wchar *base)
6800 basic_ostream_wchar *this = basic_ostream_wchar_from_basic_ios(base);
6802 /* don't destroy virtual base here */
6803 TRACE("(%p)\n", this);
6806 /* ??_D?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
6807 /* ??_D?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
6808 /* ??_D?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEXXZ */
6809 /* ??_D?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
6810 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_vbase_dtor, 4)
6811 void __thiscall basic_ostream_wchar_vbase_dtor(basic_ostream_wchar *this)
6813 TRACE("(%p)\n", this);
6814 basic_ostream_wchar_dtor(basic_ostream_wchar_to_basic_ios(this));
6815 basic_ios_wchar_dtor(basic_ostream_wchar_get_basic_ios(this));
6818 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_vector_dtor, 8)
6819 basic_ostream_wchar* __thiscall basic_ostream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
6821 basic_ostream_wchar *this = basic_ostream_wchar_from_basic_ios(base);
6823 TRACE("(%p %x)\n", this, flags);
6825 if(flags & 2) {
6826 /* we have an array, with the number of elements stored before the first object */
6827 INT_PTR i, *ptr = (INT_PTR *)this-1;
6829 for(i=*ptr-1; i>=0; i--)
6830 basic_ostream_wchar_vbase_dtor(this+i);
6831 MSVCRT_operator_delete(ptr);
6832 } else {
6833 basic_ostream_wchar_vbase_dtor(this);
6834 if(flags & 1)
6835 MSVCRT_operator_delete(this);
6838 return this;
6841 /* ?flush@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@XZ */
6842 /* ?flush@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@XZ */
6843 /* ?flush@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@XZ */
6844 /* ?flush@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@XZ */
6845 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_flush, 4)
6846 basic_ostream_wchar* __thiscall basic_ostream_wchar_flush(basic_ostream_wchar *this)
6848 /* this function is not matching C++ specification */
6849 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6851 TRACE("(%p)\n", this);
6853 if(basic_ios_wchar_rdbuf_get(base) && ios_base_good(&base->base)
6854 && basic_streambuf_wchar_pubsync(basic_ios_wchar_rdbuf_get(base))==-1)
6855 basic_ios_wchar_setstate(base, IOSTATE_badbit);
6856 return this;
6859 /* ?flush@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@AAV21@@Z */
6860 /* ?flush@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@AEAV21@@Z */
6861 /* ?flush@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@1@AAV21@@Z */
6862 /* ?flush@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@1@AEAV21@@Z */
6863 basic_ostream_wchar* __cdecl flush_ostream_wchar(basic_ostream_wchar *ostream)
6865 return basic_ostream_wchar_flush(ostream);
6868 /* ?_Osfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
6869 /* ?_Osfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
6870 /* ?_Osfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEXXZ */
6871 /* ?_Osfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
6872 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar__Osfx, 4)
6873 void __thiscall basic_ostream_wchar__Osfx(basic_ostream_wchar *this)
6875 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6877 TRACE("(%p)\n", this);
6879 if(base->base.fmtfl & FMTFLAG_unitbuf)
6880 basic_ostream_wchar_flush(this);
6883 /* ?osfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
6884 /* ?osfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
6885 /* ?osfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEXXZ */
6886 /* ?osfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
6887 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_osfx, 4)
6888 void __thiscall basic_ostream_wchar_osfx(basic_ostream_wchar *this)
6890 TRACE("(%p)\n", this);
6891 basic_ostream_wchar__Osfx(this);
6894 static BOOL basic_ostream_wchar_sentry_create(basic_ostream_wchar *ostr)
6896 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(ostr);
6898 if(basic_ios_wchar_rdbuf_get(base))
6899 basic_streambuf_wchar__Lock(base->strbuf);
6901 if(ios_base_good(&base->base) && base->stream)
6902 basic_ostream_wchar_flush(base->stream);
6904 return ios_base_good(&base->base);
6907 static void basic_ostream_wchar_sentry_destroy(basic_ostream_wchar *ostr)
6909 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(ostr);
6911 if(ios_base_good(&base->base) && !__uncaught_exception())
6912 basic_ostream_wchar_osfx(ostr);
6914 if(basic_ios_wchar_rdbuf_get(base))
6915 basic_streambuf_wchar__Unlock(base->strbuf);
6918 /* ?opfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAE_NXZ */
6919 /* ?opfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAA_NXZ */
6920 /* ?opfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE_NXZ */
6921 /* ?opfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA_NXZ */
6922 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_opfx, 4)
6923 MSVCP_bool __thiscall basic_ostream_wchar_opfx(basic_ostream_wchar *this)
6925 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6927 TRACE("(%p)\n", this);
6929 if(ios_base_good(&base->base) && base->stream)
6930 basic_ostream_wchar_flush(base->stream);
6931 return ios_base_good(&base->base);
6934 /* ?put@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@_W@Z */
6935 /* ?put@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_W@Z */
6936 /* ?put@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@G@Z */
6937 /* ?put@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@G@Z */
6938 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_put, 8)
6939 basic_ostream_wchar* __thiscall basic_ostream_wchar_put(basic_ostream_wchar *this, wchar_t ch)
6941 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6943 TRACE("(%p %c)\n", this, ch);
6945 if(!basic_ostream_wchar_sentry_create(this)
6946 || basic_streambuf_wchar_sputc(base->strbuf, ch)==WEOF) {
6947 basic_ostream_wchar_sentry_destroy(this);
6948 basic_ios_wchar_setstate(base, IOSTATE_badbit);
6949 return this;
6952 basic_ostream_wchar_sentry_destroy(this);
6953 return this;
6956 /* ?seekp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@JH@Z */
6957 /* ?seekp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_JH@Z */
6958 /* ?seekp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@JH@Z */
6959 /* ?seekp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@_JH@Z */
6960 #if STREAMOFF_BITS == 64
6961 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_seekp, 16)
6962 #else
6963 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_seekp, 12)
6964 #endif
6965 basic_ostream_wchar* __thiscall basic_ostream_wchar_seekp(basic_ostream_wchar *this, streamoff off, int way)
6967 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6969 TRACE("(%p %s %d)\n", this, wine_dbgstr_longlong(off), way);
6971 if(!ios_base_fail(&base->base)) {
6972 fpos_int seek;
6974 basic_streambuf_wchar_pubseekoff(basic_ios_wchar_rdbuf_get(base),
6975 &seek, off, way, OPENMODE_out);
6976 if(seek.off==-1 && seek.pos==0 && seek.state==0)
6977 basic_ios_wchar_setstate(base, IOSTATE_failbit);
6979 return this;
6982 /* ?seekp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
6983 /* ?seekp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
6984 /* ?seekp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
6985 /* ?seekp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
6986 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_seekp_fpos, 28)
6987 basic_ostream_wchar* __thiscall basic_ostream_wchar_seekp_fpos(basic_ostream_wchar *this, fpos_int pos)
6989 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6991 TRACE("(%p %s)\n", this, debugstr_fpos_int(&pos));
6993 if(!ios_base_fail(&base->base)) {
6994 fpos_int seek;
6996 basic_streambuf_wchar_pubseekpos(basic_ios_wchar_rdbuf_get(base),
6997 &seek, pos, OPENMODE_out);
6998 if(seek.off==-1 && seek.pos==0 && seek.state==0)
6999 basic_ios_wchar_setstate(base, IOSTATE_failbit);
7001 return this;
7004 /* ?tellp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@XZ */
7005 /* ?tellp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
7006 /* ?tellp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@XZ */
7007 /* ?tellp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
7008 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_tellp, 8)
7009 fpos_int* __thiscall basic_ostream_wchar_tellp(basic_ostream_wchar *this, fpos_int *ret)
7011 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7013 TRACE("(%p)\n", this);
7015 if(!ios_base_fail(&base->base)) {
7016 basic_streambuf_wchar_pubseekoff(basic_ios_wchar_rdbuf_get(base),
7017 ret, 0, SEEKDIR_cur, OPENMODE_out);
7018 }else {
7019 ret->off = -1;
7020 ret->pos = 0;
7021 ret->state = 0;
7023 return ret;
7026 /* ?write@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PB_WH@Z */
7027 /* ?write@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEB_W_J@Z */
7028 /* ?write@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@PBGH@Z */
7029 /* ?write@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEBG_J@Z */
7030 #if STREAMSIZE_BITS == 64
7031 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_write, 16)
7032 #else
7033 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_write, 12)
7034 #endif
7035 basic_ostream_wchar* __thiscall basic_ostream_wchar_write(basic_ostream_wchar *this, const wchar_t *str, streamsize count)
7037 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7039 TRACE("(%p %s %s)\n", this, debugstr_w(str), wine_dbgstr_longlong(count));
7041 if(!basic_ostream_wchar_sentry_create(this)
7042 || basic_streambuf_wchar_sputn(base->strbuf, str, count)!=count) {
7043 basic_ostream_wchar_sentry_destroy(this);
7044 basic_ios_wchar_setstate(base, IOSTATE_badbit);
7045 return this;
7048 basic_ostream_wchar_sentry_destroy(this);
7049 return this;
7052 static basic_ostream_wchar* basic_ostream_print_short(basic_ostream_wchar *this, short val, const num_put *numput)
7054 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7055 int state = IOSTATE_goodbit;
7057 TRACE("(%p %d)\n", this, val);
7059 if(basic_ostream_wchar_sentry_create(this)) {
7060 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7061 ostreambuf_iterator_wchar dest;
7063 memset(&dest, 0, sizeof(dest));
7064 dest.strbuf = strbuf;
7065 num_put_wchar_put_long(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base),
7066 (ios_base_flags_get(&base->base) & FMTFLAG_basefield & (FMTFLAG_oct | FMTFLAG_hex))
7067 ? (LONG)((unsigned short)val) : (LONG)val);
7069 basic_ostream_wchar_sentry_destroy(this);
7071 basic_ios_wchar_setstate(base, state);
7072 return this;
7075 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@F@Z */
7076 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@F@Z */
7077 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_short, 8)
7078 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_short(basic_ostream_wchar *this, short val)
7080 return basic_ostream_print_short(this, val, num_put_wchar_use_facet(
7081 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
7084 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@F@Z */
7085 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@F@Z */
7086 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_short, 8)
7087 basic_ostream_wchar* __thiscall basic_ostream_short_print_short(basic_ostream_wchar *this, short val)
7089 return basic_ostream_print_short(this, val, num_put_short_use_facet(
7090 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
7093 static basic_ostream_wchar* basic_ostream_print_ushort(basic_ostream_wchar *this, unsigned short val, const num_put *numput)
7095 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7096 int state = IOSTATE_goodbit;
7098 TRACE("(%p %d)\n", this, val);
7100 if(basic_ostream_wchar_sentry_create(this)) {
7101 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7102 ostreambuf_iterator_wchar dest;
7104 memset(&dest, 0, sizeof(dest));
7105 dest.strbuf = strbuf;
7106 num_put_wchar_put_ulong(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
7108 basic_ostream_wchar_sentry_destroy(this);
7110 basic_ios_wchar_setstate(base, state);
7111 return this;
7114 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@G@Z */
7115 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@G@Z */
7116 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_ushort, 8)
7117 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_ushort(basic_ostream_wchar *this, unsigned short val)
7119 return basic_ostream_print_ushort(this, val, num_put_wchar_use_facet(
7120 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
7123 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@G@Z */
7124 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@G@Z */
7125 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_ushort, 8)
7126 basic_ostream_wchar* __thiscall basic_ostream_short_print_ushort(basic_ostream_wchar *this, unsigned short val)
7128 return basic_ostream_print_ushort(this, val, num_put_short_use_facet(
7129 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
7132 static basic_ostream_wchar* basic_ostream_print_int(basic_ostream_wchar *this, int val, const num_put *numput)
7134 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7135 int state = IOSTATE_goodbit;
7137 TRACE("(%p %d)\n", this, val);
7139 if(basic_ostream_wchar_sentry_create(this)) {
7140 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7141 ostreambuf_iterator_wchar dest;
7143 memset(&dest, 0, sizeof(dest));
7144 dest.strbuf = strbuf;
7145 num_put_wchar_put_long(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
7147 basic_ostream_wchar_sentry_destroy(this);
7149 basic_ios_wchar_setstate(base, state);
7150 return this;
7153 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@H@Z */
7154 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@H@Z */
7155 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@J@Z */
7156 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@J@Z */
7157 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_int, 8)
7158 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_int(basic_ostream_wchar *this, int val)
7160 return basic_ostream_print_int(this, val, num_put_wchar_use_facet(
7161 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
7164 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@H@Z */
7165 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@H@Z */
7166 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@J@Z */
7167 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@J@Z */
7168 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_int, 8)
7169 basic_ostream_wchar* __thiscall basic_ostream_short_print_int(basic_ostream_wchar *this, int val)
7171 return basic_ostream_print_int(this, val, num_put_short_use_facet(
7172 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
7175 static basic_ostream_wchar* basic_ostream_print_uint(basic_ostream_wchar *this, unsigned int val, const num_put *numput)
7177 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7178 int state = IOSTATE_goodbit;
7180 TRACE("(%p %u)\n", this, val);
7182 if(basic_ostream_wchar_sentry_create(this)) {
7183 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7184 ostreambuf_iterator_wchar dest;
7186 memset(&dest, 0, sizeof(dest));
7187 dest.strbuf = strbuf;
7188 num_put_wchar_put_ulong(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
7190 basic_ostream_wchar_sentry_destroy(this);
7192 basic_ios_wchar_setstate(base, state);
7193 return this;
7196 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@I@Z */
7197 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@I@Z */
7198 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@K@Z */
7199 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@K@Z */
7200 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_uint, 8)
7201 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_uint(basic_ostream_wchar *this, unsigned int val)
7203 return basic_ostream_print_uint(this, val, num_put_wchar_use_facet(
7204 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
7207 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@I@Z */
7208 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@I@Z */
7209 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@K@Z */
7210 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@K@Z */
7211 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_uint, 8)
7212 basic_ostream_wchar* __thiscall basic_ostream_short_print_uint(basic_ostream_wchar *this, unsigned int val)
7214 return basic_ostream_print_uint(this, val, num_put_short_use_facet(
7215 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
7218 static basic_ostream_wchar* basic_ostream_print_float(basic_ostream_wchar *this, float val, const num_put *numput)
7220 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7221 int state = IOSTATE_goodbit;
7223 TRACE("(%p %f)\n", this, val);
7225 if(basic_ostream_wchar_sentry_create(this)) {
7226 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7227 ostreambuf_iterator_wchar dest;
7229 memset(&dest, 0, sizeof(dest));
7230 dest.strbuf = strbuf;
7231 num_put_wchar_put_double(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
7233 basic_ostream_wchar_sentry_destroy(this);
7235 basic_ios_wchar_setstate(base, state);
7236 return this;
7239 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@M@Z */
7240 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@M@Z */
7241 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_float, 8)
7242 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_float(basic_ostream_wchar *this, float val)
7244 return basic_ostream_print_float(this, val, num_put_wchar_use_facet(
7245 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
7248 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@M@Z */
7249 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@M@Z */
7250 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_float, 8)
7251 basic_ostream_wchar* __thiscall basic_ostream_short_print_float(basic_ostream_wchar *this, float val)
7253 return basic_ostream_print_float(this, val, num_put_short_use_facet(
7254 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
7257 static basic_ostream_wchar* basic_ostream_print_double(basic_ostream_wchar *this, double val, const num_put *numput)
7259 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7260 int state = IOSTATE_goodbit;
7262 TRACE("(%p %lf)\n", this, val);
7264 if(basic_ostream_wchar_sentry_create(this)) {
7265 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7266 ostreambuf_iterator_wchar dest;
7268 memset(&dest, 0, sizeof(dest));
7269 dest.strbuf = strbuf;
7270 num_put_wchar_put_double(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
7272 basic_ostream_wchar_sentry_destroy(this);
7274 basic_ios_wchar_setstate(base, state);
7275 return this;
7278 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@N@Z */
7279 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@N@Z */
7280 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_double, 12)
7281 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_double(basic_ostream_wchar *this, double val)
7283 return basic_ostream_print_double(this, val, num_put_wchar_use_facet(
7284 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
7287 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@N@Z */
7288 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@N@Z */
7289 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_double, 12)
7290 basic_ostream_wchar* __thiscall basic_ostream_short_print_double(basic_ostream_wchar *this, double val)
7292 return basic_ostream_print_double(this, val, num_put_short_use_facet(
7293 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
7296 static basic_ostream_wchar* basic_ostream_print_ldouble(basic_ostream_wchar *this, double val, const num_put *numput)
7298 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7299 int state = IOSTATE_goodbit;
7301 TRACE("(%p %lf)\n", this, val);
7303 if(basic_ostream_wchar_sentry_create(this)) {
7304 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7305 ostreambuf_iterator_wchar dest;
7307 memset(&dest, 0, sizeof(dest));
7308 dest.strbuf = strbuf;
7309 num_put_wchar_put_ldouble(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
7311 basic_ostream_wchar_sentry_destroy(this);
7313 basic_ios_wchar_setstate(base, state);
7314 return this;
7317 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@O@Z */
7318 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@O@Z */
7319 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_ldouble, 12)
7320 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_ldouble(basic_ostream_wchar *this, double val)
7322 return basic_ostream_print_ldouble(this, val, num_put_wchar_use_facet(
7323 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
7326 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@O@Z */
7327 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@O@Z */
7328 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_ldouble, 12)
7329 basic_ostream_wchar* __thiscall basic_ostream_short_print_ldouble(basic_ostream_wchar *this, double val)
7331 return basic_ostream_print_ldouble(this, val, num_put_short_use_facet(
7332 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
7335 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
7336 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
7337 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
7338 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
7339 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_streambuf, 8)
7340 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_streambuf(basic_ostream_wchar *this, basic_streambuf_wchar *val)
7342 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7343 IOSB_iostate state = IOSTATE_badbit;
7344 unsigned short c = '\n';
7346 TRACE("(%p %p)\n", this, val);
7348 if(basic_ostream_wchar_sentry_create(this)) {
7349 for(c = basic_streambuf_wchar_sgetc(val); c!=WEOF;
7350 c = basic_streambuf_wchar_snextc(val)) {
7351 state = IOSTATE_goodbit;
7353 if(basic_streambuf_wchar_sputc(base->strbuf, c) == WEOF) {
7354 state = IOSTATE_badbit;
7355 break;
7358 }else {
7359 state = IOSTATE_badbit;
7361 basic_ostream_wchar_sentry_destroy(this);
7363 ios_base_width_set(&base->base, 0);
7364 basic_ios_wchar_setstate(base, state);
7365 return this;
7368 static basic_ostream_wchar* basic_ostream_print_ptr(basic_ostream_wchar *this, const void *val, const num_put *numput)
7370 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7371 int state = IOSTATE_goodbit;
7373 TRACE("(%p %p)\n", this, val);
7375 if(basic_ostream_wchar_sentry_create(this)) {
7376 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7377 ostreambuf_iterator_wchar dest;
7379 memset(&dest, 0, sizeof(dest));
7380 dest.strbuf = strbuf;
7381 num_put_wchar_put_ptr(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
7383 basic_ostream_wchar_sentry_destroy(this);
7385 basic_ios_wchar_setstate(base, state);
7386 return this;
7389 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@PBX@Z */
7390 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@PEBX@Z */
7391 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_ptr, 8)
7392 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_ptr(basic_ostream_wchar *this, const void *val)
7394 return basic_ostream_print_ptr(this, val, num_put_wchar_use_facet(
7395 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
7398 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@PBX@Z */
7399 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@PEBX@Z */
7400 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_ptr, 8)
7401 basic_ostream_wchar* __thiscall basic_ostream_short_print_ptr(basic_ostream_wchar *this, const void *val)
7403 return basic_ostream_print_ptr(this, val, num_put_short_use_facet(
7404 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
7407 static basic_ostream_wchar* basic_ostream_print_int64(basic_ostream_wchar *this, __int64 val, const num_put *numput)
7409 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7410 int state = IOSTATE_goodbit;
7412 TRACE("(%p)\n", this);
7414 if(basic_ostream_wchar_sentry_create(this)) {
7415 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7416 ostreambuf_iterator_wchar dest;
7418 memset(&dest, 0, sizeof(dest));
7419 dest.strbuf = strbuf;
7420 num_put_wchar_put_int64(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
7422 basic_ostream_wchar_sentry_destroy(this);
7424 basic_ios_wchar_setstate(base, state);
7425 return this;
7428 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@_J@Z */
7429 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@_J@Z */
7430 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_int64, 12)
7431 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_int64(basic_ostream_wchar *this, __int64 val)
7433 return basic_ostream_print_int64(this, val, num_put_wchar_use_facet(
7434 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
7437 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@_J@Z */
7438 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@_J@Z */
7439 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_int64, 12)
7440 basic_ostream_wchar* __thiscall basic_ostream_short_print_int64(basic_ostream_wchar *this, __int64 val)
7442 return basic_ostream_print_int64(this, val, num_put_short_use_facet(
7443 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
7446 static basic_ostream_wchar* basic_ostream_print_uint64(basic_ostream_wchar *this, unsigned __int64 val, const num_put *numput)
7448 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7449 int state = IOSTATE_goodbit;
7451 TRACE("(%p)\n", this);
7453 if(basic_ostream_wchar_sentry_create(this)) {
7454 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7455 ostreambuf_iterator_wchar dest;
7457 memset(&dest, 0, sizeof(dest));
7458 dest.strbuf = strbuf;
7459 num_put_wchar_put_uint64(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
7461 basic_ostream_wchar_sentry_destroy(this);
7463 basic_ios_wchar_setstate(base, state);
7464 return this;
7467 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@_K@Z */
7468 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@_K@Z */
7469 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_uint64, 12)
7470 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_uint64(basic_ostream_wchar *this, unsigned __int64 val)
7472 return basic_ostream_print_uint64(this, val, num_put_wchar_use_facet(
7473 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
7476 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@_K@Z */
7477 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@_K@Z */
7478 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_uint64, 12)
7479 basic_ostream_wchar* __thiscall basic_ostream_short_print_uint64(basic_ostream_wchar *this, unsigned __int64 val)
7481 return basic_ostream_print_uint64(this, val, num_put_short_use_facet(
7482 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
7485 static basic_ostream_wchar* basic_ostream_print_bool(basic_ostream_wchar *this, MSVCP_bool val, const num_put *numput)
7487 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
7488 int state = IOSTATE_goodbit;
7490 TRACE("(%p %x)\n", this, val);
7492 if(basic_ostream_wchar_sentry_create(this)) {
7493 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7494 ostreambuf_iterator_wchar dest;
7496 memset(&dest, 0, sizeof(dest));
7497 dest.strbuf = strbuf;
7498 num_put_wchar_put_bool(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
7500 basic_ostream_wchar_sentry_destroy(this);
7502 basic_ios_wchar_setstate(base, state);
7503 return this;
7506 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@_N@Z */
7507 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@_N@Z */
7508 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_bool, 8)
7509 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_bool(basic_ostream_wchar *this, MSVCP_bool val)
7511 return basic_ostream_print_bool(this, val, num_put_wchar_use_facet(
7512 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
7515 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@_N@Z */
7516 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@_N@Z */
7517 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_bool, 8)
7518 basic_ostream_wchar* __thiscall basic_ostream_short_print_bool(basic_ostream_wchar *this, MSVCP_bool val)
7520 return basic_ostream_print_bool(this, val, num_put_short_use_facet(
7521 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
7524 /* ?ends@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@AAV21@@Z */
7525 /* ?ends@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@AEAV21@@Z */
7526 /* ?ends@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@1@AAV21@@Z */
7527 /* ?ends@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@1@AEAV21@@Z */
7528 basic_ostream_wchar* __cdecl basic_ostream_wchar_ends(basic_ostream_wchar *ostr)
7530 TRACE("(%p)\n", ostr);
7532 basic_ostream_wchar_put(ostr, 0);
7533 return ostr;
7536 /* ?endl@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@AAV21@@Z */
7537 /* ?endl@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@AEAV21@@Z */
7538 /* ?endl@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@1@AAV21@@Z */
7539 /* ?endl@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@1@AEAV21@@Z */
7540 basic_ostream_wchar* __cdecl basic_ostream_wchar_endl(basic_ostream_wchar *ostr)
7542 TRACE("(%p)\n", ostr);
7544 basic_ostream_wchar_put(ostr, '\n');
7545 basic_ostream_wchar_flush(ostr);
7546 return ostr;
7549 /* ??$?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 */
7550 /* ??$?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 */
7551 /* ??$?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 */
7552 /* ??$?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 */
7553 basic_ostream_wchar* __cdecl basic_ostream_wchar_print_bstr(basic_ostream_wchar *ostr, const basic_string_wchar *str)
7555 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(ostr);
7556 IOSB_iostate state = IOSTATE_goodbit;
7558 TRACE("(%p %p)\n", ostr, str);
7560 if(basic_ostream_wchar_sentry_create(ostr)) {
7561 MSVCP_size_t len = MSVCP_basic_string_wchar_length(str);
7562 streamsize pad = (base->base.wide>len ? base->base.wide-len : 0);
7564 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
7565 for(; pad!=0; pad--) {
7566 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
7567 state = IOSTATE_badbit;
7568 break;
7573 if(state == IOSTATE_goodbit) {
7574 if(basic_streambuf_wchar_sputn(base->strbuf, MSVCP_basic_string_wchar_c_str(str), len) != len)
7575 state = IOSTATE_badbit;
7578 if(state == IOSTATE_goodbit) {
7579 for(; pad!=0; pad--) {
7580 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
7581 state = IOSTATE_badbit;
7582 break;
7587 base->base.wide = 0;
7588 }else {
7589 state = IOSTATE_badbit;
7591 basic_ostream_wchar_sentry_destroy(ostr);
7593 basic_ios_wchar_setstate(base, state);
7594 return ostr;
7597 /* ??$?6_WU?$char_traits@_W@std@@@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AAV10@_W@Z */
7598 /* ??$?6_WU?$char_traits@_W@std@@@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AEAV10@_W@Z */
7599 /* ??$?6GU?$char_traits@G@std@@@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@0@AAV10@G@Z */
7600 /* ??$?6GU?$char_traits@G@std@@@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@0@AEAV10@G@Z */
7601 basic_ostream_wchar* __cdecl basic_ostream_wchar_print_ch(basic_ostream_wchar *ostr, wchar_t ch)
7603 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(ostr);
7604 IOSB_iostate state = IOSTATE_goodbit;
7606 TRACE("(%p %d)\n", ostr, ch);
7608 if(basic_ostream_wchar_sentry_create(ostr)) {
7609 streamsize pad = (base->base.wide>1 ? base->base.wide-1 : 0);
7611 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
7612 for(; pad!=0; pad--) {
7613 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
7614 state = IOSTATE_badbit;
7615 break;
7620 if(state == IOSTATE_goodbit) {
7621 if(basic_streambuf_wchar_sputc(base->strbuf, ch) == WEOF)
7622 state = IOSTATE_badbit;
7625 if(state == IOSTATE_goodbit) {
7626 for(; pad!=0; pad--) {
7627 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
7628 state = IOSTATE_badbit;
7629 break;
7634 base->base.wide = 0;
7635 }else {
7636 state = IOSTATE_badbit;
7638 basic_ostream_wchar_sentry_destroy(ostr);
7640 basic_ios_wchar_setstate(base, state);
7641 return ostr;
7644 /* ??$?6_WU?$char_traits@_W@std@@@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AAV10@PB_W@Z */
7645 /* ??$?6_WU?$char_traits@_W@std@@@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AEAV10@PEB_W@Z */
7646 /* ??$?6GU?$char_traits@G@std@@@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@0@AAV10@PBG@Z */
7647 /* ??$?6GU?$char_traits@G@std@@@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@0@AEAV10@PEBG@Z */
7648 basic_ostream_wchar* __cdecl basic_ostream_wchar_print_str(basic_ostream_wchar *ostr, const wchar_t *str)
7650 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(ostr);
7651 IOSB_iostate state = IOSTATE_goodbit;
7653 TRACE("(%p %s)\n", ostr, debugstr_w(str));
7655 if(basic_ostream_wchar_sentry_create(ostr)) {
7656 MSVCP_size_t len = wcslen(str);
7657 streamsize pad = (base->base.wide>len ? base->base.wide-len : 0);
7659 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
7660 for(; pad!=0; pad--) {
7661 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
7662 state = IOSTATE_badbit;
7663 break;
7668 if(state == IOSTATE_goodbit) {
7669 if(basic_streambuf_wchar_sputn(base->strbuf, str, len) != len)
7670 state = IOSTATE_badbit;
7673 if(state == IOSTATE_goodbit) {
7674 for(; pad!=0; pad--) {
7675 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
7676 state = IOSTATE_badbit;
7677 break;
7682 base->base.wide = 0;
7683 }else {
7684 state = IOSTATE_badbit;
7686 basic_ostream_wchar_sentry_destroy(ostr);
7688 basic_ios_wchar_setstate(base, state);
7689 return ostr;
7692 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
7693 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
7694 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
7695 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
7696 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_func, 8)
7697 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_func(basic_ostream_wchar *this,
7698 basic_ostream_wchar* (__cdecl *pfunc)(basic_ostream_wchar*))
7700 TRACE("(%p %p)\n", this, pfunc);
7701 pfunc(this);
7702 return this;
7705 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@_WU?$char_traits@_W@std@@@1@AAV21@@Z@Z */
7706 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@_WU?$char_traits@_W@std@@@1@AEAV21@@Z@Z */
7707 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@GU?$char_traits@G@std@@@1@AAV21@@Z@Z */
7708 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@GU?$char_traits@G@std@@@1@AEAV21@@Z@Z */
7709 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_func_basic_ios, 8)
7710 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_func_basic_ios(basic_ostream_wchar *this,
7711 basic_ios_wchar* (__cdecl *pfunc)(basic_ios_wchar*))
7713 TRACE("(%p %p)\n", this, pfunc);
7714 pfunc(basic_ostream_wchar_get_basic_ios(this));
7715 return this;
7718 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
7719 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
7720 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
7721 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
7722 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_func_ios_base, 8)
7723 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_func_ios_base(
7724 basic_ostream_wchar *this, ios_base* (__cdecl *pfunc)(ios_base*))
7726 TRACE("(%p %p)\n", this, pfunc);
7727 pfunc(&basic_ostream_wchar_get_basic_ios(this)->base);
7728 return this;
7731 /* ?swap@?$basic_ostream@GU?$char_traits@G@std@@@std@@IAEXAAV12@@Z */
7732 /* ?swap@?$basic_ostream@GU?$char_traits@G@std@@@std@@IEAAXAEAV12@@Z */
7733 /* ?swap@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@IAEXAAV12@@Z */
7734 /* ?swap@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@IEAAXAEAV12@@Z */
7735 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_swap, 8)
7736 void __thiscall basic_ostream_wchar_swap(basic_ostream_wchar *this, basic_ostream_wchar *r)
7738 TRACE("(%p %p)\n", this, r);
7740 if(this == r)
7741 return;
7743 basic_ios_wchar_swap(basic_ostream_wchar_get_basic_ios(this),
7744 basic_ostream_wchar_get_basic_ios(r));
7747 /* Caution: basic_istream uses virtual inheritance. */
7748 static inline basic_ios_char* basic_istream_char_get_basic_ios(basic_istream_char *this)
7750 return (basic_ios_char*)((char*)this+this->vbtable[1]);
7753 static inline basic_ios_char* basic_istream_char_to_basic_ios(basic_istream_char *ptr)
7755 return (basic_ios_char*)((char*)ptr+basic_istream_char_vbtable[1]);
7758 static inline basic_istream_char* basic_istream_char_from_basic_ios(basic_ios_char *ptr)
7760 return (basic_istream_char*)((char*)ptr-basic_istream_char_vbtable[1]);
7763 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N1@Z */
7764 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N1@Z */
7765 DEFINE_THISCALL_WRAPPER(basic_istream_char_ctor_init, 20)
7766 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)
7768 basic_ios_char *base;
7770 TRACE("(%p %p %d %d %d)\n", this, strbuf, isstd, noinit, virt_init);
7772 if(virt_init) {
7773 this->vbtable = basic_istream_char_vbtable;
7774 base = basic_istream_char_get_basic_ios(this);
7775 basic_ios_char_ctor(base);
7776 }else {
7777 base = basic_istream_char_get_basic_ios(this);
7780 base->base.vtable = &MSVCP_basic_istream_char_vtable;
7781 this->count = 0;
7782 if(!noinit)
7783 basic_ios_char_init(base, strbuf, isstd);
7784 return this;
7787 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z */
7788 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z */
7789 DEFINE_THISCALL_WRAPPER(basic_istream_char_ctor, 16)
7790 basic_istream_char* __thiscall basic_istream_char_ctor(basic_istream_char *this, basic_streambuf_char *strbuf, MSVCP_bool isstd, MSVCP_bool virt_init)
7792 return basic_istream_char_ctor_init(this, strbuf, isstd, FALSE, virt_init);
7795 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@W4_Uninitialized@1@@Z */
7796 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
7797 DEFINE_THISCALL_WRAPPER(basic_istream_char_ctor_uninitialized, 12)
7798 basic_istream_char* __thiscall basic_istream_char_ctor_uninitialized(basic_istream_char *this, int uninitialized, MSVCP_bool virt_init)
7800 basic_ios_char *base;
7802 TRACE("(%p %d %d)\n", this, uninitialized, virt_init);
7804 if(virt_init) {
7805 this->vbtable = basic_istream_char_vbtable;
7806 base = basic_istream_char_get_basic_ios(this);
7807 basic_ios_char_ctor(base);
7808 }else {
7809 base = basic_istream_char_get_basic_ios(this);
7812 base->base.vtable = &MSVCP_basic_istream_char_vtable;
7813 ios_base_Addstd(&base->base);
7814 return this;
7817 /* ??1?$basic_istream@DU?$char_traits@D@std@@@std@@UAE@XZ */
7818 /* ??1?$basic_istream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
7819 DEFINE_THISCALL_WRAPPER(basic_istream_char_dtor, 4)
7820 void __thiscall basic_istream_char_dtor(basic_ios_char *base)
7822 basic_istream_char *this = basic_istream_char_from_basic_ios(base);
7824 /* don't destroy virtual base here */
7825 TRACE("(%p)\n", this);
7828 /* ??_D?$basic_istream@DU?$char_traits@D@std@@@std@@QAEXXZ */
7829 /* ??_D?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
7830 DEFINE_THISCALL_WRAPPER(basic_istream_char_vbase_dtor, 4)
7831 void __thiscall basic_istream_char_vbase_dtor(basic_istream_char *this)
7833 TRACE("(%p)\n", this);
7834 basic_istream_char_dtor(basic_istream_char_to_basic_ios(this));
7835 basic_ios_char_dtor(basic_istream_char_get_basic_ios(this));
7838 DEFINE_THISCALL_WRAPPER(basic_istream_char_vector_dtor, 8)
7839 basic_istream_char* __thiscall basic_istream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
7841 basic_istream_char *this = basic_istream_char_from_basic_ios(base);
7843 TRACE("(%p %x)\n", this, flags);
7845 if(flags & 2) {
7846 /* we have an array, with the number of elements stored before the first object */
7847 INT_PTR i, *ptr = (INT_PTR *)this-1;
7849 for(i=*ptr-1; i>=0; i--)
7850 basic_istream_char_vbase_dtor(this+i);
7851 MSVCRT_operator_delete(ptr);
7852 } else {
7853 basic_istream_char_vbase_dtor(this);
7854 if(flags & 1)
7855 MSVCRT_operator_delete(this);
7858 return this;
7861 /* ?_Ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE_N_N@Z */
7862 /* ?_Ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_N_N@Z */
7863 DEFINE_THISCALL_WRAPPER(basic_istream_char__Ipfx, 8)
7864 MSVCP_bool __thiscall basic_istream_char__Ipfx(basic_istream_char *this, MSVCP_bool noskip)
7866 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7868 TRACE("(%p %d)\n", this, noskip);
7870 if(ios_base_good(&base->base)) {
7871 if(basic_ios_char_tie_get(base))
7872 basic_ostream_char_flush(basic_ios_char_tie_get(base));
7874 if(!noskip && (ios_base_flags_get(&base->base) & FMTFLAG_skipws)) {
7875 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7876 const ctype_char *ctype = ctype_char_use_facet(base->strbuf->loc);
7877 int ch;
7879 for(ch = basic_streambuf_char_sgetc(strbuf); ;
7880 ch = basic_streambuf_char_snextc(strbuf)) {
7881 if(ch == EOF) {
7882 basic_ios_char_setstate(base, IOSTATE_eofbit);
7883 break;
7886 if(!ctype_char_is_ch(ctype, _SPACE|_BLANK, ch))
7887 break;
7892 if(!ios_base_good(&base->base)) {
7893 basic_ios_char_setstate(base, IOSTATE_failbit);
7894 return FALSE;
7897 return TRUE;
7900 /* ?ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE_N_N@Z */
7901 /* ?ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_N_N@Z */
7902 DEFINE_THISCALL_WRAPPER(basic_istream_char_ipfx, 8)
7903 MSVCP_bool __thiscall basic_istream_char_ipfx(basic_istream_char *this, MSVCP_bool noskip)
7905 return basic_istream_char__Ipfx(this, noskip);
7908 /* ?isfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEXXZ */
7909 /* ?isfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
7910 DEFINE_THISCALL_WRAPPER(basic_istream_char_isfx, 4)
7911 void __thiscall basic_istream_char_isfx(basic_istream_char *this)
7913 TRACE("(%p)\n", this);
7916 static BOOL basic_istream_char_sentry_create(basic_istream_char *istr, MSVCP_bool noskip)
7918 basic_ios_char *base = basic_istream_char_get_basic_ios(istr);
7920 if(basic_ios_char_rdbuf_get(base))
7921 call_basic_streambuf_char__Lock(base->strbuf);
7923 return basic_istream_char_ipfx(istr, noskip);
7926 static void basic_istream_char_sentry_destroy(basic_istream_char *istr)
7928 basic_ios_char *base = basic_istream_char_get_basic_ios(istr);
7930 if(basic_ios_char_rdbuf_get(base))
7931 call_basic_streambuf_char__Unlock(base->strbuf);
7934 /* ?gcount@?$basic_istream@DU?$char_traits@D@std@@@std@@QBEHXZ */
7935 /* ?gcount@?$basic_istream@DU?$char_traits@D@std@@@std@@QEBA_JXZ */
7936 /* ?gcount@?$basic_istream@DU?$char_traits@D@std@@@std@@QBA_JXZ */
7937 /* ?gcount@?$basic_istream@DU?$char_traits@D@std@@@std@@QBE_JXZ */
7938 DEFINE_THISCALL_WRAPPER(basic_istream_char_gcount, 4)
7939 streamsize __thiscall basic_istream_char_gcount(const basic_istream_char *this)
7941 TRACE("(%p)\n", this);
7942 return this->count;
7945 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHXZ */
7946 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAHXZ */
7947 DEFINE_THISCALL_WRAPPER(basic_istream_char_get, 4)
7948 int __thiscall basic_istream_char_get(basic_istream_char *this)
7950 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7951 int ret;
7953 TRACE("(%p)\n", this);
7955 this->count = 0;
7957 if(!basic_istream_char_sentry_create(this, TRUE)) {
7958 basic_istream_char_sentry_destroy(this);
7959 return EOF;
7962 ret = basic_streambuf_char_sbumpc(basic_ios_char_rdbuf_get(base));
7963 basic_istream_char_sentry_destroy(this);
7964 if(ret == EOF)
7965 basic_ios_char_setstate(base, IOSTATE_eofbit|IOSTATE_failbit);
7966 else
7967 this->count++;
7969 return ret;
7972 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@AAD@Z */
7973 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEAD@Z */
7974 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_ch, 8)
7975 basic_istream_char* __thiscall basic_istream_char_get_ch(basic_istream_char *this, char *ch)
7977 int ret;
7979 TRACE("(%p %p)\n", this, ch);
7981 ret = basic_istream_char_get(this);
7982 if(ret != EOF)
7983 *ch = (char)ret;
7984 return this;
7987 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADHD@Z */
7988 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_JD@Z */
7989 #if STREAMSIZE_BITS == 64
7990 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_str_delim, 20)
7991 #else
7992 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_str_delim, 16)
7993 #endif
7994 basic_istream_char* __thiscall basic_istream_char_get_str_delim(basic_istream_char *this, char *str, streamsize count, char delim)
7996 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7997 int ch = delim;
7999 TRACE("(%p %p %s %c)\n", this, str, wine_dbgstr_longlong(count), delim);
8001 this->count = 0;
8003 if(basic_istream_char_sentry_create(this, TRUE)) {
8004 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8006 for(ch = basic_streambuf_char_sgetc(strbuf); count>1;
8007 ch = basic_streambuf_char_snextc(strbuf)) {
8008 if(ch==EOF || ch==delim)
8009 break;
8011 *str++ = ch;
8012 this->count++;
8013 count--;
8016 basic_istream_char_sentry_destroy(this);
8018 basic_ios_char_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) |
8019 (ch==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
8020 if(count > 0)
8021 *str = 0;
8022 return this;
8025 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADH@Z */
8026 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_J@Z */
8027 #if STREAMSIZE_BITS == 64
8028 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_str, 16)
8029 #else
8030 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_str, 12)
8031 #endif
8032 basic_istream_char* __thiscall basic_istream_char_get_str(basic_istream_char *this, char *str, streamsize count)
8034 return basic_istream_char_get_str_delim(this, str, count, '\n');
8037 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@AAV?$basic_streambuf@DU?$char_traits@D@std@@@2@D@Z */
8038 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@D@Z */
8039 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_streambuf_delim, 12)
8040 basic_istream_char* __thiscall basic_istream_char_get_streambuf_delim(basic_istream_char *this, basic_streambuf_char *strbuf, char delim)
8042 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8043 int ch = delim;
8045 TRACE("(%p %p %c)\n", this, strbuf, delim);
8047 this->count = 0;
8049 if(basic_istream_char_sentry_create(this, TRUE)) {
8050 basic_streambuf_char *strbuf_read = basic_ios_char_rdbuf_get(base);
8052 for(ch = basic_streambuf_char_sgetc(strbuf_read); ;
8053 ch = basic_streambuf_char_snextc(strbuf_read)) {
8054 if(ch==EOF || ch==delim)
8055 break;
8057 if(basic_streambuf_char_sputc(strbuf, ch) == EOF)
8058 break;
8059 this->count++;
8062 basic_istream_char_sentry_destroy(this);
8064 basic_ios_char_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) |
8065 (ch==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
8066 return this;
8069 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@AAV?$basic_streambuf@DU?$char_traits@D@std@@@2@@Z */
8070 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@@Z */
8071 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_streambuf, 8)
8072 basic_istream_char* __thiscall basic_istream_char_get_streambuf(basic_istream_char *this, basic_streambuf_char *strbuf)
8074 return basic_istream_char_get_streambuf_delim(this, strbuf, '\n');
8077 /* ?getline@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADHD@Z */
8078 /* ?getline@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_JD@Z */
8079 #if STREAMSIZE_BITS == 64
8080 DEFINE_THISCALL_WRAPPER(basic_istream_char_getline_delim, 20)
8081 #else
8082 DEFINE_THISCALL_WRAPPER(basic_istream_char_getline_delim, 16)
8083 #endif
8084 basic_istream_char* __thiscall basic_istream_char_getline_delim(basic_istream_char *this, char *str, streamsize count, char delim)
8086 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8087 int ch = (unsigned char)delim;
8089 TRACE("(%p %p %s %c)\n", this, str, wine_dbgstr_longlong(count), delim);
8091 this->count = 0;
8093 if(basic_istream_char_sentry_create(this, TRUE) && count>0) {
8094 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8096 while(count > 1) {
8097 ch = basic_streambuf_char_sbumpc(strbuf);
8099 if(ch==EOF || ch==(unsigned char)delim)
8100 break;
8102 *str++ = ch;
8103 this->count++;
8104 count--;
8107 if(ch == (unsigned char)delim)
8108 this->count++;
8109 else if(ch != EOF) {
8110 ch = basic_streambuf_char_sgetc(strbuf);
8112 if(ch == (unsigned char)delim) {
8113 basic_streambuf_char__Gninc(strbuf);
8114 this->count++;
8118 basic_istream_char_sentry_destroy(this);
8120 basic_ios_char_setstate(base, (ch==EOF ? IOSTATE_eofbit : IOSTATE_goodbit) |
8121 (!this->count || (ch!=(unsigned char)delim && ch!=EOF) ? IOSTATE_failbit : IOSTATE_goodbit));
8122 if(count > 0)
8123 *str = 0;
8124 return this;
8127 /* ?getline@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADH@Z */
8128 /* ?getline@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_J@Z */
8129 #if STREAMSIZE_BITS == 64
8130 DEFINE_THISCALL_WRAPPER(basic_istream_char_getline, 16)
8131 #else
8132 DEFINE_THISCALL_WRAPPER(basic_istream_char_getline, 12)
8133 #endif
8134 basic_istream_char* __thiscall basic_istream_char_getline(basic_istream_char *this, char *str, streamsize count)
8136 return basic_istream_char_getline_delim(this, str, count, '\n');
8139 /* ?ignore@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@HH@Z */
8140 /* ?ignore@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@_JH@Z */
8141 #if STREAMSIZE_BITS == 64
8142 DEFINE_THISCALL_WRAPPER(basic_istream_char_ignore, 16)
8143 #else
8144 DEFINE_THISCALL_WRAPPER(basic_istream_char_ignore, 12)
8145 #endif
8146 basic_istream_char* __thiscall basic_istream_char_ignore(basic_istream_char *this, streamsize count, int delim)
8148 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8149 int ch = (unsigned char)delim;
8150 unsigned int state;
8152 TRACE("(%p %s %d)\n", this, wine_dbgstr_longlong(count), delim);
8154 this->count = 0;
8156 if(basic_istream_char_sentry_create(this, TRUE)) {
8157 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8158 state = IOSTATE_goodbit;
8160 while(count > 0) {
8161 ch = basic_streambuf_char_sbumpc(strbuf);
8163 if(ch==EOF) {
8164 state = IOSTATE_eofbit;
8165 break;
8168 if(ch==(unsigned char)delim)
8169 break;
8171 this->count++;
8172 if(count != INT_MAX)
8173 count--;
8175 }else
8176 state = IOSTATE_failbit;
8177 basic_istream_char_sentry_destroy(this);
8179 basic_ios_char_setstate(base, state);
8180 return this;
8183 /* ?ws@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@1@AAV21@@Z */
8184 /* ?ws@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@1@AEAV21@@Z */
8185 basic_istream_char* __cdecl ws_basic_istream_char(basic_istream_char *istream)
8187 basic_ios_char *base = basic_istream_char_get_basic_ios(istream);
8188 int ch = '\n';
8190 TRACE("(%p)\n", istream);
8192 if(basic_istream_char_sentry_create(istream, TRUE)) {
8193 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8194 const ctype_char *ctype = ctype_char_use_facet(strbuf->loc);
8196 for(ch = basic_streambuf_char_sgetc(strbuf); ctype_char_is_ch(ctype, _SPACE, ch);
8197 ch = basic_streambuf_char_snextc(strbuf)) {
8198 if(ch == EOF)
8199 break;
8202 basic_istream_char_sentry_destroy(istream);
8204 if(ch == EOF)
8205 basic_ios_char_setstate(base, IOSTATE_eofbit);
8206 return istream;
8209 /* ?peek@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHXZ */
8210 /* ?peek@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAHXZ */
8211 DEFINE_THISCALL_WRAPPER(basic_istream_char_peek, 4)
8212 int __thiscall basic_istream_char_peek(basic_istream_char *this)
8214 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8215 int ret = EOF;
8217 TRACE("(%p)\n", this);
8219 this->count = 0;
8221 if(basic_istream_char_sentry_create(this, TRUE))
8222 ret = basic_streambuf_char_sgetc(basic_ios_char_rdbuf_get(base));
8223 basic_istream_char_sentry_destroy(this);
8225 if (ret == EOF)
8226 basic_ios_char_setstate(base, IOSTATE_eofbit);
8228 return ret;
8231 /* ?_Read_s@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADIH@Z */
8232 /* ?_Read_s@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_K_J@Z */
8233 #if STREAMSIZE_BITS == 64
8234 DEFINE_THISCALL_WRAPPER(basic_istream_char__Read_s, 20)
8235 #else
8236 DEFINE_THISCALL_WRAPPER(basic_istream_char__Read_s, 16)
8237 #endif
8238 basic_istream_char* __thiscall basic_istream_char__Read_s(basic_istream_char *this, char *str, MSVCP_size_t size, streamsize count)
8240 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8241 IOSB_iostate state = IOSTATE_goodbit;
8243 TRACE("(%p %p %lu %s)\n", this, str, size, wine_dbgstr_longlong(count));
8245 if(basic_istream_char_sentry_create(this, TRUE)) {
8246 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8248 this->count = basic_streambuf_char__Sgetn_s(strbuf, str, size, count);
8249 if(this->count != count)
8250 state |= IOSTATE_failbit | IOSTATE_eofbit;
8251 }else {
8252 this->count = 0;
8254 basic_istream_char_sentry_destroy(this);
8256 basic_ios_char_setstate(base, state);
8257 return this;
8260 /* ?read@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADH@Z */
8261 /* ?read@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_J@Z */
8262 #if STREAMSIZE_BITS == 64
8263 DEFINE_THISCALL_WRAPPER(basic_istream_char_read, 16)
8264 #else
8265 DEFINE_THISCALL_WRAPPER(basic_istream_char_read, 12)
8266 #endif
8267 basic_istream_char* __thiscall basic_istream_char_read(basic_istream_char *this, char *str, streamsize count)
8269 return basic_istream_char__Read_s(this, str, -1, count);
8272 /* ?_Readsome_s@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHPADIH@Z */
8273 /* ?_Readsome_s@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_K_J@Z */
8274 #if STREAMSIZE_BITS == 64
8275 DEFINE_THISCALL_WRAPPER(basic_istream_char__Readsome_s, 20)
8276 #else
8277 DEFINE_THISCALL_WRAPPER(basic_istream_char__Readsome_s, 16)
8278 #endif
8279 streamsize __thiscall basic_istream_char__Readsome_s(basic_istream_char *this, char *str, MSVCP_size_t size, streamsize count)
8281 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8282 IOSB_iostate state = IOSTATE_goodbit;
8284 TRACE("(%p %p %lu %s)\n", this, str, size, wine_dbgstr_longlong(count));
8286 this->count = 0;
8288 if(basic_istream_char_sentry_create(this, TRUE)) {
8289 streamsize avail = basic_streambuf_char_in_avail(basic_ios_char_rdbuf_get(base));
8290 if(avail > count)
8291 avail = count;
8293 if(avail == -1)
8294 state |= IOSTATE_eofbit;
8295 else if(avail > 0)
8296 basic_istream_char__Read_s(this, str, size, avail);
8297 }else {
8298 state |= IOSTATE_failbit;
8300 basic_istream_char_sentry_destroy(this);
8302 basic_ios_char_setstate(base, state);
8303 return this->count;
8306 /* ?readsome@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHPADH@Z */
8307 /* ?readsome@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_J@Z */
8308 #if STREAMSIZE_BITS == 64
8309 DEFINE_THISCALL_WRAPPER(basic_istream_char_readsome, 16)
8310 #else
8311 DEFINE_THISCALL_WRAPPER(basic_istream_char_readsome, 12)
8312 #endif
8313 streamsize __thiscall basic_istream_char_readsome(basic_istream_char *this, char *str, streamsize count)
8315 return basic_istream_char__Readsome_s(this, str, count, count);
8318 /* ?putback@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@D@Z */
8319 /* ?putback@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@D@Z */
8320 DEFINE_THISCALL_WRAPPER(basic_istream_char_putback, 8)
8321 basic_istream_char* __thiscall basic_istream_char_putback(basic_istream_char *this, char ch)
8323 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8324 IOSB_iostate state = IOSTATE_goodbit;
8326 TRACE("(%p %c)\n", this, ch);
8328 this->count = 0;
8330 if(basic_istream_char_sentry_create(this, TRUE)) {
8331 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8333 if(!ios_base_good(&base->base))
8334 state |= IOSTATE_failbit;
8335 else if(!strbuf || basic_streambuf_char_sputbackc(strbuf, ch)==EOF)
8336 state |= IOSTATE_badbit;
8338 basic_istream_char_sentry_destroy(this);
8340 basic_ios_char_setstate(base, state);
8341 return this;
8344 /* ?unget@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@XZ */
8345 /* ?unget@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@XZ */
8346 DEFINE_THISCALL_WRAPPER(basic_istream_char_unget, 4)
8347 basic_istream_char* __thiscall basic_istream_char_unget(basic_istream_char *this)
8349 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8350 IOSB_iostate state = IOSTATE_goodbit;
8352 TRACE("(%p)\n", this);
8354 this->count = 0;
8356 if(basic_istream_char_sentry_create(this, TRUE)) {
8357 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8359 if(!ios_base_good(&base->base))
8360 state |= IOSTATE_failbit;
8361 else if(!strbuf || basic_streambuf_char_sungetc(strbuf)==EOF)
8362 state |= IOSTATE_badbit;
8364 basic_istream_char_sentry_destroy(this);
8366 basic_ios_char_setstate(base, state);
8367 return this;
8370 /* ?sync@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHXZ */
8371 /* ?sync@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAHXZ */
8372 DEFINE_THISCALL_WRAPPER(basic_istream_char_sync, 4)
8373 int __thiscall basic_istream_char_sync(basic_istream_char *this)
8375 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8376 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8378 TRACE("(%p)\n", this);
8380 if(!strbuf)
8381 return -1;
8383 if(basic_istream_char_sentry_create(this, TRUE)) {
8384 if(basic_streambuf_char_pubsync(strbuf) != -1) {
8385 basic_istream_char_sentry_destroy(this);
8386 return 0;
8389 basic_istream_char_sentry_destroy(this);
8391 basic_ios_char_setstate(base, IOSTATE_badbit);
8392 return -1;
8395 /* ?tellg@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@XZ */
8396 /* ?tellg@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
8397 DEFINE_THISCALL_WRAPPER(basic_istream_char_tellg, 8)
8398 fpos_int* __thiscall basic_istream_char_tellg(basic_istream_char *this, fpos_int *ret)
8400 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8402 TRACE("(%p %p)\n", this, ret);
8404 if(ios_base_fail(&base->base)) {
8405 ret->off = -1;
8406 ret->pos = 0;
8407 ret->state = 0;
8408 return ret;
8411 basic_streambuf_char_pubseekoff(basic_ios_char_rdbuf_get(base),
8412 ret, 0, SEEKDIR_cur, OPENMODE_in);
8414 if(ret->off==-1 && ret->pos==0 && ret->state==0)
8415 basic_ios_char_setstate(base, IOSTATE_failbit);
8417 return ret;
8420 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@JH@Z */
8421 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@_JH@Z */
8422 #if STREAMOFF_BITS == 64
8423 DEFINE_THISCALL_WRAPPER(basic_istream_char_seekg, 16)
8424 #else
8425 DEFINE_THISCALL_WRAPPER(basic_istream_char_seekg, 12)
8426 #endif
8427 basic_istream_char* __thiscall basic_istream_char_seekg(basic_istream_char *this, streamoff off, int dir)
8429 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8431 TRACE("(%p %s %d)\n", this, wine_dbgstr_longlong(off), dir);
8433 if(!ios_base_fail(&base->base)) {
8434 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8435 fpos_int ret;
8437 basic_streambuf_char_pubseekoff(strbuf, &ret, off, dir, OPENMODE_in);
8439 if(ret.off==-1 && ret.pos==0 && ret.state==0)
8440 basic_ios_char_setstate(base, IOSTATE_failbit);
8441 else
8442 basic_ios_char_clear(base, IOSTATE_goodbit);
8443 return this;
8444 }else
8445 basic_ios_char_clear(base, IOSTATE_goodbit);
8447 return this;
8450 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
8451 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
8452 DEFINE_THISCALL_WRAPPER(basic_istream_char_seekg_fpos, 28)
8453 basic_istream_char* __thiscall basic_istream_char_seekg_fpos(basic_istream_char *this, fpos_int pos)
8455 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8457 TRACE("(%p %s)\n", this, debugstr_fpos_int(&pos));
8459 if(!ios_base_fail(&base->base)) {
8460 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8461 fpos_int ret;
8463 basic_streambuf_char_pubseekpos(strbuf, &ret, pos, OPENMODE_in);
8465 if(ret.off==-1 && ret.pos==0 && ret.state==0)
8466 basic_ios_char_setstate(base, IOSTATE_failbit);
8467 else
8468 basic_ios_char_clear(base, IOSTATE_goodbit);
8469 return this;
8470 }else
8471 basic_ios_char_clear(base, IOSTATE_goodbit);
8473 return this;
8476 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAF@Z */
8477 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAF@Z */
8478 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_short, 8)
8479 basic_istream_char* __thiscall basic_istream_char_read_short(basic_istream_char *this, short *v)
8481 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8482 int state = IOSTATE_goodbit;
8484 TRACE("(%p %p)\n", this, v);
8486 if(basic_istream_char_sentry_create(this, FALSE)) {
8487 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8488 const num_get *numget = num_get_char_use_facet(strbuf->loc);
8489 istreambuf_iterator_char first={0}, last={0};
8490 LONG tmp;
8492 first.strbuf = strbuf;
8493 num_get_char_get_long(numget, &last, first, last, &base->base, &state, &tmp);
8495 if(!(state&IOSTATE_failbit) && tmp==(LONG)((short)tmp))
8496 *v = tmp;
8497 else
8498 state |= IOSTATE_failbit;
8500 basic_istream_char_sentry_destroy(this);
8502 basic_ios_char_setstate(base, state);
8503 return this;
8506 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAG@Z */
8507 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAG@Z */
8508 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_ushort, 8)
8509 basic_istream_char* __thiscall basic_istream_char_read_ushort(basic_istream_char *this, unsigned short *v)
8511 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8512 int state = IOSTATE_goodbit;
8514 TRACE("(%p %p)\n", this, v);
8516 if(basic_istream_char_sentry_create(this, FALSE)) {
8517 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8518 const num_get *numget = num_get_char_use_facet(strbuf->loc);
8519 istreambuf_iterator_char first={0}, last={0};
8521 first.strbuf = strbuf;
8522 num_get_char_get_ushort(numget, &last, first, last, &base->base, &state, v);
8524 basic_istream_char_sentry_destroy(this);
8526 basic_ios_char_setstate(base, state);
8527 return this;
8530 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAH@Z */
8531 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAH@Z */
8532 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_int, 8)
8533 basic_istream_char* __thiscall basic_istream_char_read_int(basic_istream_char *this, int *v)
8535 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8536 int state = IOSTATE_goodbit;
8538 TRACE("(%p %p)\n", this, v);
8540 if(basic_istream_char_sentry_create(this, FALSE)) {
8541 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8542 const num_get *numget = num_get_char_use_facet(strbuf->loc);
8543 istreambuf_iterator_char first={0}, last={0};
8545 first.strbuf = strbuf;
8546 num_get_char_get_long(numget, &last, first, last, &base->base, &state, v);
8548 basic_istream_char_sentry_destroy(this);
8550 basic_ios_char_setstate(base, state);
8551 return this;
8554 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAI@Z */
8555 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAI@Z */
8556 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_uint, 8)
8557 basic_istream_char* __thiscall basic_istream_char_read_uint(basic_istream_char *this, unsigned int *v)
8559 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8560 int state = IOSTATE_goodbit;
8562 TRACE("(%p %p)\n", this, v);
8564 if(basic_istream_char_sentry_create(this, FALSE)) {
8565 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8566 const num_get *numget = num_get_char_use_facet(strbuf->loc);
8567 istreambuf_iterator_char first={0}, last={0};
8569 first.strbuf = strbuf;
8570 num_get_char_get_uint(numget, &last, first, last, &base->base, &state, v);
8572 basic_istream_char_sentry_destroy(this);
8574 basic_ios_char_setstate(base, state);
8575 return this;
8578 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAJ@Z */
8579 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAJ@Z */
8580 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_long, 8)
8581 basic_istream_char* __thiscall basic_istream_char_read_long(basic_istream_char *this, LONG *v)
8583 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8584 int state = IOSTATE_goodbit;
8586 TRACE("(%p %p)\n", this, v);
8588 if(basic_istream_char_sentry_create(this, FALSE)) {
8589 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8590 const num_get *numget = num_get_char_use_facet(strbuf->loc);
8591 istreambuf_iterator_char first={0}, last={0};
8593 first.strbuf = strbuf;
8594 num_get_char_get_long(numget, &last, first, last, &base->base, &state, v);
8596 basic_istream_char_sentry_destroy(this);
8598 basic_ios_char_setstate(base, state);
8599 return this;
8602 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAK@Z */
8603 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAK@Z */
8604 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_ulong, 8)
8605 basic_istream_char* __thiscall basic_istream_char_read_ulong(basic_istream_char *this, ULONG *v)
8607 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8608 int state = IOSTATE_goodbit;
8610 TRACE("(%p %p)\n", this, v);
8612 if(basic_istream_char_sentry_create(this, FALSE)) {
8613 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8614 const num_get *numget = num_get_char_use_facet(strbuf->loc);
8615 istreambuf_iterator_char first={0}, last={0};
8617 first.strbuf = strbuf;
8618 num_get_char_get_ulong(numget, &last, first, last, &base->base, &state, v);
8620 basic_istream_char_sentry_destroy(this);
8622 basic_ios_char_setstate(base, state);
8623 return this;
8626 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAM@Z */
8627 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAM@Z */
8628 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_float, 8)
8629 basic_istream_char* __thiscall basic_istream_char_read_float(basic_istream_char *this, float *v)
8631 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8632 int state = IOSTATE_goodbit;
8634 TRACE("(%p %p)\n", this, v);
8636 if(basic_istream_char_sentry_create(this, FALSE)) {
8637 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8638 const num_get *numget = num_get_char_use_facet(strbuf->loc);
8639 istreambuf_iterator_char first={0}, last={0};
8641 first.strbuf = strbuf;
8642 num_get_char_get_float(numget, &last, first, last, &base->base, &state, v);
8644 basic_istream_char_sentry_destroy(this);
8646 basic_ios_char_setstate(base, state);
8647 return this;
8650 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAN@Z */
8651 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAN@Z */
8652 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_double, 8)
8653 basic_istream_char* __thiscall basic_istream_char_read_double(basic_istream_char *this, double *v)
8655 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8656 int state = IOSTATE_goodbit;
8658 TRACE("(%p %p)\n", this, v);
8660 if(basic_istream_char_sentry_create(this, FALSE)) {
8661 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8662 const num_get *numget = num_get_char_use_facet(strbuf->loc);
8663 istreambuf_iterator_char first={0}, last={0};
8665 first.strbuf = strbuf;
8666 num_get_char_get_double(numget, &last, first, last, &base->base, &state, v);
8668 basic_istream_char_sentry_destroy(this);
8670 basic_ios_char_setstate(base, state);
8671 return this;
8674 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAO@Z */
8675 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAO@Z */
8676 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_ldouble, 8)
8677 basic_istream_char* __thiscall basic_istream_char_read_ldouble(basic_istream_char *this, double *v)
8679 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8680 int state = IOSTATE_goodbit;
8682 TRACE("(%p %p)\n", this, v);
8684 if(basic_istream_char_sentry_create(this, FALSE)) {
8685 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8686 const num_get *numget = num_get_char_use_facet(strbuf->loc);
8687 istreambuf_iterator_char first={0}, last={0};
8689 first.strbuf = strbuf;
8690 num_get_char_get_ldouble(numget, &last, first, last, &base->base, &state, v);
8692 basic_istream_char_sentry_destroy(this);
8694 basic_ios_char_setstate(base, state);
8695 return this;
8698 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAPAX@Z */
8699 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAPEAX@Z */
8700 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_ptr, 8)
8701 basic_istream_char* __thiscall basic_istream_char_read_ptr(basic_istream_char *this, void **v)
8703 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8704 int state = IOSTATE_goodbit;
8706 TRACE("(%p %p)\n", this, v);
8708 if(basic_istream_char_sentry_create(this, FALSE)) {
8709 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8710 const num_get *numget = num_get_char_use_facet(strbuf->loc);
8711 istreambuf_iterator_char first={0}, last={0};
8713 first.strbuf = strbuf;
8714 num_get_char_get_void(numget, &last, first, last, &base->base, &state, v);
8716 basic_istream_char_sentry_destroy(this);
8718 basic_ios_char_setstate(base, state);
8719 return this;
8722 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AA_J@Z */
8723 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEA_J@Z */
8724 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_int64, 8)
8725 basic_istream_char* __thiscall basic_istream_char_read_int64(basic_istream_char *this, __int64 *v)
8727 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8728 int state = IOSTATE_goodbit;
8730 TRACE("(%p %p)\n", this, v);
8732 if(basic_istream_char_sentry_create(this, FALSE)) {
8733 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8734 const num_get *numget = num_get_char_use_facet(strbuf->loc);
8735 istreambuf_iterator_char first={0}, last={0};
8737 first.strbuf = strbuf;
8738 num_get_char_get_int64(numget, &last, first, last, &base->base, &state, v);
8740 basic_istream_char_sentry_destroy(this);
8742 basic_ios_char_setstate(base, state);
8743 return this;
8746 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AA_K@Z */
8747 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEA_K@Z */
8748 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_uint64, 8)
8749 basic_istream_char* __thiscall basic_istream_char_read_uint64(basic_istream_char *this, unsigned __int64 *v)
8751 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8752 int state = IOSTATE_goodbit;
8754 TRACE("(%p %p)\n", this, v);
8756 if(basic_istream_char_sentry_create(this, FALSE)) {
8757 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8758 const num_get *numget = num_get_char_use_facet(strbuf->loc);
8759 istreambuf_iterator_char first={0}, last={0};
8761 first.strbuf = strbuf;
8762 num_get_char_get_uint64(numget, &last, first, last, &base->base, &state, v);
8764 basic_istream_char_sentry_destroy(this);
8766 basic_ios_char_setstate(base, state);
8767 return this;
8770 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AA_N@Z */
8771 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEA_N@Z */
8772 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_bool, 8)
8773 basic_istream_char* __thiscall basic_istream_char_read_bool(basic_istream_char *this, MSVCP_bool *v)
8775 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8776 int state = IOSTATE_goodbit;
8778 TRACE("(%p %p)\n", this, v);
8780 if(basic_istream_char_sentry_create(this, FALSE)) {
8781 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8782 const num_get *numget = num_get_char_use_facet(strbuf->loc);
8783 istreambuf_iterator_char first={0}, last={0};
8785 first.strbuf = strbuf;
8786 num_get_char_get_bool(numget, &last, first, last, &base->base, &state, v);
8788 basic_istream_char_sentry_destroy(this);
8790 basic_ios_char_setstate(base, state);
8791 return this;
8794 /* ??$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 */
8795 /* ??$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 */
8796 basic_istream_char* __cdecl basic_istream_char_getline_bstr_delim(
8797 basic_istream_char *istream, basic_string_char *str, char delim)
8799 basic_ios_char *base = basic_istream_char_get_basic_ios(istream);
8800 IOSB_iostate state = IOSTATE_goodbit;
8801 int c = (unsigned char)delim;
8803 TRACE("(%p %p %c)\n", istream, str, delim);
8805 if(basic_istream_char_sentry_create(istream, TRUE)) {
8806 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8807 MSVCP_basic_string_char_clear(str);
8809 c = basic_streambuf_char_sgetc(strbuf);
8810 for(; c!=(unsigned char)delim && c!=EOF; c = basic_streambuf_char_snextc(strbuf))
8811 MSVCP_basic_string_char_append_ch(str, c);
8812 if(c==EOF) state |= IOSTATE_eofbit;
8813 else if(c==(unsigned char)delim) basic_streambuf_char_sbumpc(strbuf);
8815 if(!MSVCP_basic_string_char_length(str) && c!=(unsigned char)delim) state |= IOSTATE_failbit;
8817 basic_istream_char_sentry_destroy(istream);
8819 basic_ios_char_setstate(basic_istream_char_get_basic_ios(istream), state);
8820 return istream;
8823 /* ??$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 */
8824 /* ??$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 */
8825 basic_istream_char* __cdecl basic_istream_char_getline_bstr(
8826 basic_istream_char *istream, basic_string_char *str)
8828 return basic_istream_char_getline_bstr_delim(istream, str, '\n');
8831 /* ??$?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 */
8832 /* ??$?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 */
8833 basic_istream_char* __cdecl basic_istream_char_read_bstr(
8834 basic_istream_char *istream, basic_string_char *str)
8836 basic_ios_char *base = basic_istream_char_get_basic_ios(istream);
8837 IOSB_iostate state = IOSTATE_failbit;
8838 int c = '\n';
8840 TRACE("(%p %p)\n", istream, str);
8842 if(basic_istream_char_sentry_create(istream, FALSE)) {
8843 const ctype_char *ctype = ctype_char_use_facet(base->strbuf->loc);
8844 MSVCP_size_t count = ios_base_width_get(&base->base);
8846 if(!count)
8847 count = -1;
8849 MSVCP_basic_string_char_clear(str);
8851 for(c = basic_streambuf_char_sgetc(basic_ios_char_rdbuf_get(base));
8852 c!=EOF && !ctype_char_is_ch(ctype, _SPACE|_BLANK, c) && count>0;
8853 c = basic_streambuf_char_snextc(basic_ios_char_rdbuf_get(base)), count--) {
8854 state = IOSTATE_goodbit;
8855 MSVCP_basic_string_char_append_ch(str, c);
8858 basic_istream_char_sentry_destroy(istream);
8860 ios_base_width_set(&base->base, 0);
8861 basic_ios_char_setstate(base, state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
8862 return istream;
8865 /* ??$?5DU?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@PAD@Z */
8866 /* ??$?5DU?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@PEAD@Z */
8867 /* ??$?5U?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@PAC@Z */
8868 /* ??$?5U?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@PEAC@Z */
8869 /* ??$?5U?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@PAE@Z */
8870 /* ??$?5U?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@PEAE@Z */
8871 basic_istream_char* __cdecl basic_istream_char_read_str(basic_istream_char *istream, char *str)
8873 basic_ios_char *base = basic_istream_char_get_basic_ios(istream);
8874 IOSB_iostate state = IOSTATE_failbit;
8875 int c = '\n';
8877 TRACE("(%p %p)\n", istream, str);
8879 if(basic_istream_char_sentry_create(istream, FALSE)) {
8880 const ctype_char *ctype = ctype_char_use_facet(base->strbuf->loc);
8881 MSVCP_size_t count = ios_base_width_get(&base->base)-1;
8883 for(c = basic_streambuf_char_sgetc(basic_ios_char_rdbuf_get(base));
8884 c!=EOF && !ctype_char_is_ch(ctype, _SPACE|_BLANK, c) && count>0;
8885 c = basic_streambuf_char_snextc(basic_ios_char_rdbuf_get(base)), count--) {
8886 state = IOSTATE_goodbit;
8887 *str++ = c;
8890 basic_istream_char_sentry_destroy(istream);
8892 *str = 0;
8893 ios_base_width_set(&base->base, 0);
8894 basic_ios_char_setstate(base, state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
8895 return istream;
8898 /* ??$?5DU?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAD@Z */
8899 /* ??$?5DU?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAD@Z */
8900 /* ??$?5U?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAC@Z */
8901 /* ??$?5U?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAC@Z */
8902 /* ??$?5U?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAE@Z */
8903 /* ??$?5U?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAE@Z */
8904 basic_istream_char* __cdecl basic_istream_char_read_ch(basic_istream_char *istream, char *ch)
8906 IOSB_iostate state = IOSTATE_failbit;
8907 int c = 0;
8909 TRACE("(%p %p)\n", istream, ch);
8911 if(basic_istream_char_sentry_create(istream, FALSE)) {
8912 c = basic_streambuf_char_sbumpc(basic_ios_char_rdbuf_get(
8913 basic_istream_char_get_basic_ios(istream)));
8914 if(c != EOF) {
8915 state = IOSTATE_goodbit;
8916 *ch = c;
8919 basic_istream_char_sentry_destroy(istream);
8921 basic_ios_char_setstate(basic_istream_char_get_basic_ios(istream),
8922 state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
8923 return istream;
8926 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
8927 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
8928 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_streambuf, 8)
8929 basic_istream_char* __thiscall basic_istream_char_read_streambuf(
8930 basic_istream_char *this, basic_streambuf_char *streambuf)
8932 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8933 IOSB_iostate state = IOSTATE_failbit;
8934 int c = '\n';
8936 TRACE("(%p %p)\n", this, streambuf);
8938 if(basic_istream_char_sentry_create(this, FALSE)) {
8939 for(c = basic_streambuf_char_sgetc(basic_ios_char_rdbuf_get(base)); c!=EOF;
8940 c = basic_streambuf_char_snextc(basic_ios_char_rdbuf_get(base))) {
8941 state = IOSTATE_goodbit;
8942 if(basic_streambuf_char_sputc(streambuf, c) == EOF)
8943 break;
8946 basic_istream_char_sentry_destroy(this);
8948 basic_ios_char_setstate(base, state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
8949 return this;
8952 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
8953 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
8954 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_func, 8)
8955 basic_istream_char* __thiscall basic_istream_char_read_func(basic_istream_char *this,
8956 basic_istream_char* (__cdecl *pfunc)(basic_istream_char*))
8958 TRACE("(%p %p)\n", this, pfunc);
8959 pfunc(this);
8960 return this;
8963 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@DU?$char_traits@D@std@@@1@AAV21@@Z@Z */
8964 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@DU?$char_traits@D@std@@@1@AEAV21@@Z@Z */
8965 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_func_basic_ios, 8)
8966 basic_istream_char* __thiscall basic_istream_char_read_func_basic_ios(basic_istream_char *this,
8967 basic_ios_char* (__cdecl *pfunc)(basic_ios_char*))
8969 TRACE("(%p %p)\n", this, pfunc);
8970 pfunc(basic_istream_char_get_basic_ios(this));
8971 return this;
8974 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
8975 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
8976 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_func_ios_base, 8)
8977 basic_istream_char* __thiscall basic_istream_char_read_func_ios_base(basic_istream_char *this,
8978 ios_base* (__cdecl *pfunc)(ios_base*))
8980 TRACE("(%p %p)\n", this, pfunc);
8981 pfunc(&basic_istream_char_get_basic_ios(this)->base);
8982 return this;
8985 /* ?swap@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEXAAV12@@Z */
8986 /* ?swap@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAXAEAV12@@Z */
8987 DEFINE_THISCALL_WRAPPER(basic_istream_char_swap, 8)
8988 void __thiscall basic_istream_char_swap(basic_istream_char *this, basic_istream_char *r)
8990 TRACE("(%p %p)\n", this, r);
8992 if(this == r)
8993 return;
8995 basic_ios_char_swap(basic_istream_char_get_basic_ios(this),
8996 basic_istream_char_get_basic_ios(r));
8997 this->count ^= r->count;
8998 r->count ^= this->count;
8999 this->count ^= r->count;
9002 /* Caution: basic_istream uses virtual inheritance. */
9003 static inline basic_ios_wchar* basic_istream_wchar_get_basic_ios(basic_istream_wchar *this)
9005 return (basic_ios_wchar*)((char*)this+this->vbtable[1]);
9008 static inline basic_ios_wchar* basic_istream_wchar_to_basic_ios(basic_istream_wchar *ptr)
9010 return (basic_ios_wchar*)((char*)ptr+basic_istream_wchar_vbtable[1]);
9013 static inline basic_istream_wchar* basic_istream_wchar_from_basic_ios(basic_ios_wchar *ptr)
9015 return (basic_istream_wchar*)((char*)ptr-basic_istream_wchar_vbtable[1]);
9018 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N1@Z */
9019 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N1@Z */
9020 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ctor_init, 20)
9021 basic_istream_wchar* __thiscall basic_istream_wchar_ctor_init(basic_istream_wchar *this,
9022 basic_streambuf_wchar *strbuf, MSVCP_bool isstd, MSVCP_bool noinit, MSVCP_bool virt_init)
9024 basic_ios_wchar *base;
9026 TRACE("(%p %p %d %d %d)\n", this, strbuf, isstd, noinit, virt_init);
9028 if(virt_init) {
9029 this->vbtable = basic_istream_wchar_vbtable;
9030 base = basic_istream_wchar_get_basic_ios(this);
9031 basic_ios_wchar_ctor(base);
9032 }else {
9033 base = basic_istream_wchar_get_basic_ios(this);
9036 base->base.vtable = &MSVCP_basic_istream_wchar_vtable;
9037 this->count = 0;
9038 if(!noinit)
9039 basic_ios_wchar_init(base, strbuf, isstd);
9040 return this;
9043 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N1@Z */
9044 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N1@Z */
9045 DEFINE_THISCALL_WRAPPER(basic_istream_short_ctor_init, 20)
9046 basic_istream_wchar* __thiscall basic_istream_short_ctor_init(basic_istream_wchar *this,
9047 basic_streambuf_wchar *strbuf, MSVCP_bool isstd, MSVCP_bool noinit, MSVCP_bool virt_init)
9049 basic_istream_wchar_ctor_init(this, strbuf, isstd, noinit, virt_init);
9050 basic_istream_wchar_get_basic_ios(this)->base.vtable = &MSVCP_basic_istream_short_vtable;
9051 return this;
9054 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z */
9055 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z */
9056 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ctor, 16)
9057 basic_istream_wchar* __thiscall basic_istream_wchar_ctor(basic_istream_wchar *this,
9058 basic_streambuf_wchar *strbuf, MSVCP_bool isstd, MSVCP_bool virt_init)
9060 return basic_istream_wchar_ctor_init(this, strbuf, isstd, FALSE, virt_init);
9063 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N@Z */
9064 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N@Z */
9065 DEFINE_THISCALL_WRAPPER(basic_istream_short_ctor, 16)
9066 basic_istream_wchar* __thiscall basic_istream_short_ctor(basic_istream_wchar *this,
9067 basic_streambuf_wchar *strbuf, MSVCP_bool isstd, MSVCP_bool virt_init)
9069 return basic_istream_short_ctor_init(this, strbuf, isstd, FALSE, virt_init);
9072 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE@W4_Uninitialized@1@@Z */
9073 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
9074 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ctor_uninitialized, 12)
9075 basic_istream_wchar* __thiscall basic_istream_wchar_ctor_uninitialized(
9076 basic_istream_wchar *this, int uninitialized, MSVCP_bool virt_init)
9078 basic_ios_wchar *base;
9080 TRACE("(%p %d %d)\n", this, uninitialized, virt_init);
9082 if(virt_init) {
9083 this->vbtable = basic_istream_wchar_vbtable;
9084 base = basic_istream_wchar_get_basic_ios(this);
9085 basic_ios_wchar_ctor(base);
9086 }else {
9087 base = basic_istream_wchar_get_basic_ios(this);
9090 base->base.vtable = &MSVCP_basic_istream_wchar_vtable;
9091 ios_base_Addstd(&base->base);
9092 return this;
9095 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QAE@W4_Uninitialized@1@@Z */
9096 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
9097 DEFINE_THISCALL_WRAPPER(basic_istream_short_ctor_uninitialized, 12)
9098 basic_istream_wchar* __thiscall basic_istream_short_ctor_uninitialized(
9099 basic_istream_wchar *this, int uninitialized, MSVCP_bool virt_init)
9101 basic_istream_wchar_ctor_uninitialized(this, uninitialized, virt_init);
9102 basic_istream_wchar_get_basic_ios(this)->base.vtable = &MSVCP_basic_istream_short_vtable;
9103 return this;
9106 /* ??1?$basic_istream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
9107 /* ??1?$basic_istream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
9108 /* ??1?$basic_istream@GU?$char_traits@G@std@@@std@@UAE@XZ */
9109 /* ??1?$basic_istream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
9110 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_dtor, 4)
9111 void __thiscall basic_istream_wchar_dtor(basic_ios_wchar *base)
9113 basic_istream_wchar *this = basic_istream_wchar_from_basic_ios(base);
9115 /* don't destroy virtual base here */
9116 TRACE("(%p)\n", this);
9119 /* ??_D?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
9120 /* ??_D?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
9121 /* ??_D?$basic_istream@GU?$char_traits@G@std@@@std@@QAEXXZ */
9122 /* ??_D?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
9123 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_vbase_dtor, 4)
9124 void __thiscall basic_istream_wchar_vbase_dtor(basic_istream_wchar *this)
9126 TRACE("(%p)\n", this);
9127 basic_istream_wchar_dtor(basic_istream_wchar_to_basic_ios(this));
9128 basic_ios_wchar_dtor(basic_istream_wchar_get_basic_ios(this));
9131 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_vector_dtor, 8)
9132 basic_istream_wchar* __thiscall basic_istream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
9134 basic_istream_wchar *this = basic_istream_wchar_from_basic_ios(base);
9136 TRACE("(%p %x)\n", this, flags);
9138 if(flags & 2) {
9139 /* we have an array, with the number of elements stored before the first object */
9140 INT_PTR i, *ptr = (INT_PTR *)this-1;
9142 for(i=*ptr-1; i>=0; i--)
9143 basic_istream_wchar_vbase_dtor(this+i);
9144 MSVCRT_operator_delete(ptr);
9145 } else {
9146 basic_istream_wchar_vbase_dtor(this);
9147 if(flags & 1)
9148 MSVCRT_operator_delete(this);
9151 return this;
9154 /* ?_Ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE_N_N@Z */
9155 /* ?_Ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_N_N@Z */
9156 /* ?_Ipfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QAE_N_N@Z */
9157 /* ?_Ipfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA_N_N@Z */
9158 DEFINE_THISCALL_WRAPPER(basic_istream_wchar__Ipfx, 8)
9159 MSVCP_bool __thiscall basic_istream_wchar__Ipfx(basic_istream_wchar *this, MSVCP_bool noskip)
9161 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9163 TRACE("(%p %d)\n", this, noskip);
9165 if(ios_base_good(&base->base)) {
9166 if(basic_ios_wchar_tie_get(base))
9167 basic_ostream_wchar_flush(basic_ios_wchar_tie_get(base));
9169 if(!noskip && (ios_base_flags_get(&base->base) & FMTFLAG_skipws)) {
9170 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9171 const ctype_wchar *ctype = ctype_wchar_use_facet(base->strbuf->loc);
9172 int ch;
9174 for(ch = basic_streambuf_wchar_sgetc(strbuf); ;
9175 ch = basic_streambuf_wchar_snextc(strbuf)) {
9176 if(ch == WEOF) {
9177 basic_ios_wchar_setstate(base, IOSTATE_eofbit);
9178 break;
9181 if(!ctype_wchar_is_ch(ctype, _SPACE|_BLANK, ch))
9182 break;
9187 if(!ios_base_good(&base->base)) {
9188 basic_ios_wchar_setstate(base, IOSTATE_failbit);
9189 return FALSE;
9191 return TRUE;
9194 /* ?ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE_N_N@Z */
9195 /* ?ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_N_N@Z */
9196 /* ?ipfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QAE_N_N@Z */
9197 /* ?ipfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA_N_N@Z */
9198 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ipfx, 8)
9199 MSVCP_bool __thiscall basic_istream_wchar_ipfx(basic_istream_wchar *this, MSVCP_bool noskip)
9201 return basic_istream_wchar__Ipfx(this, noskip);
9204 /* ?isfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
9205 /* ?isfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
9206 /* ?isfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEXXZ */
9207 /* ?isfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
9208 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_isfx, 4)
9209 void __thiscall basic_istream_wchar_isfx(basic_istream_wchar *this)
9211 TRACE("(%p)\n", this);
9214 static BOOL basic_istream_wchar_sentry_create(basic_istream_wchar *istr, MSVCP_bool noskip)
9216 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istr);
9218 if(basic_ios_wchar_rdbuf_get(base))
9219 basic_streambuf_wchar__Lock(base->strbuf);
9221 return basic_istream_wchar_ipfx(istr, noskip);
9224 static void basic_istream_wchar_sentry_destroy(basic_istream_wchar *istr)
9226 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istr);
9228 if(basic_ios_wchar_rdbuf_get(base))
9229 basic_streambuf_wchar__Unlock(base->strbuf);
9232 /* ?gcount@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QBEHXZ */
9233 /* ?gcount@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEBA_JXZ */
9234 /* ?gcount@?$basic_istream@GU?$char_traits@G@std@@@std@@QBEHXZ */
9235 /* ?gcount@?$basic_istream@GU?$char_traits@G@std@@@std@@QEBA_JXZ */
9236 /* ?gcount@?$basic_istream@GU?$char_traits@G@std@@@std@@QBA_JXZ */
9237 /* ?gcount@?$basic_istream@GU?$char_traits@G@std@@@std@@QBE_JXZ */
9238 /* ?gcount@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QBA_JXZ */
9239 /* ?gcount@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QBE_JXZ */
9240 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_gcount, 4)
9241 streamsize __thiscall basic_istream_wchar_gcount(const basic_istream_wchar *this)
9243 TRACE("(%p)\n", this);
9244 return this->count;
9247 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
9248 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
9249 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEGXZ */
9250 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAGXZ */
9251 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get, 4)
9252 unsigned short __thiscall basic_istream_wchar_get(basic_istream_wchar *this)
9254 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9255 int ret;
9257 TRACE("(%p)\n", this);
9259 this->count = 0;
9261 if(!basic_istream_wchar_sentry_create(this, TRUE)) {
9262 basic_istream_wchar_sentry_destroy(this);
9263 return WEOF;
9266 ret = basic_streambuf_wchar_sbumpc(basic_ios_wchar_rdbuf_get(base));
9267 basic_istream_wchar_sentry_destroy(this);
9268 if(ret == WEOF)
9269 basic_ios_wchar_setstate(base, IOSTATE_eofbit|IOSTATE_failbit);
9270 else
9271 this->count++;
9273 return ret;
9276 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@AA_W@Z */
9277 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEA_W@Z */
9278 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@AAG@Z */
9279 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@AEAG@Z */
9280 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_ch, 8)
9281 basic_istream_wchar* __thiscall basic_istream_wchar_get_ch(basic_istream_wchar *this, wchar_t *ch)
9283 unsigned short ret;
9285 TRACE("(%p %p)\n", this, ch);
9287 ret = basic_istream_wchar_get(this);
9288 if(ret != WEOF)
9289 *ch = (wchar_t)ret;
9290 return this;
9293 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH_W@Z */
9294 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J_W@Z */
9295 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGHG@Z */
9296 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_JG@Z */
9297 #if STREAMSIZE_BITS == 64
9298 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_str_delim, 20)
9299 #else
9300 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_str_delim, 16)
9301 #endif
9302 basic_istream_wchar* __thiscall basic_istream_wchar_get_str_delim(basic_istream_wchar *this, wchar_t *str, streamsize count, wchar_t delim)
9304 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9305 unsigned short ch = delim;
9307 TRACE("(%p %p %s %c)\n", this, str, wine_dbgstr_longlong(count), delim);
9309 this->count = 0;
9311 if(basic_istream_wchar_sentry_create(this, TRUE)) {
9312 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9314 for(ch = basic_streambuf_wchar_sgetc(strbuf); count>1;
9315 ch = basic_streambuf_wchar_snextc(strbuf)) {
9316 if(ch==WEOF || ch==delim)
9317 break;
9319 *str++ = ch;
9320 this->count++;
9321 count--;
9324 basic_istream_wchar_sentry_destroy(this);
9326 basic_ios_wchar_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) |
9327 (ch==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
9328 if(count > 0)
9329 *str = 0;
9330 return this;
9333 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH@Z */
9334 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J@Z */
9335 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGH@Z */
9336 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_J@Z */
9337 #if STREAMSIZE_BITS == 64
9338 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_str, 16)
9339 #else
9340 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_str, 12)
9341 #endif
9342 basic_istream_wchar* __thiscall basic_istream_wchar_get_str(basic_istream_wchar *this, wchar_t *str, streamsize count)
9344 return basic_istream_wchar_get_str_delim(this, str, count, '\n');
9347 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@AAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_W@Z */
9348 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_W@Z */
9349 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@AAV?$basic_streambuf@GU?$char_traits@G@std@@@2@G@Z */
9350 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@G@Z */
9351 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_streambuf_delim, 12)
9352 basic_istream_wchar* __thiscall basic_istream_wchar_get_streambuf_delim(basic_istream_wchar *this, basic_streambuf_wchar *strbuf, wchar_t delim)
9354 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9355 unsigned short ch = delim;
9357 TRACE("(%p %p %c)\n", this, strbuf, delim);
9359 this->count = 0;
9361 if(basic_istream_wchar_sentry_create(this, TRUE)) {
9362 basic_streambuf_wchar *strbuf_read = basic_ios_wchar_rdbuf_get(base);
9364 for(ch = basic_streambuf_wchar_sgetc(strbuf_read); ;
9365 ch = basic_streambuf_wchar_snextc(strbuf_read)) {
9366 if(ch==WEOF || ch==delim)
9367 break;
9369 if(basic_streambuf_wchar_sputc(strbuf, ch) == WEOF)
9370 break;
9371 this->count++;
9374 basic_istream_wchar_sentry_destroy(this);
9376 basic_ios_wchar_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) |
9377 (ch==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
9378 return this;
9381 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@AAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@@Z */
9382 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@@Z */
9383 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@AAV?$basic_streambuf@GU?$char_traits@G@std@@@2@@Z */
9384 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@@Z */
9385 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_streambuf, 8)
9386 basic_istream_wchar* __thiscall basic_istream_wchar_get_streambuf(basic_istream_wchar *this, basic_streambuf_wchar *strbuf)
9388 return basic_istream_wchar_get_streambuf_delim(this, strbuf, '\n');
9391 /* ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH_W@Z */
9392 /* ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J_W@Z */
9393 /* ?getline@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGHG@Z */
9394 /* ?getline@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_JG@Z */
9395 #if STREAMSIZE_BITS == 64
9396 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_getline_delim, 20)
9397 #else
9398 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_getline_delim, 16)
9399 #endif
9400 basic_istream_wchar* __thiscall basic_istream_wchar_getline_delim(basic_istream_wchar *this, wchar_t *str, streamsize count, wchar_t delim)
9402 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9403 unsigned short ch = delim;
9405 TRACE("(%p %p %s %c)\n", this, str, wine_dbgstr_longlong(count), delim);
9407 this->count = 0;
9409 if(basic_istream_wchar_sentry_create(this, TRUE) && count>0) {
9410 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9412 while(count > 1) {
9413 ch = basic_streambuf_wchar_sbumpc(strbuf);
9415 if(ch==WEOF || ch==delim)
9416 break;
9418 *str++ = ch;
9419 this->count++;
9420 count--;
9423 if(ch == delim)
9424 this->count++;
9425 else if(ch != WEOF) {
9426 ch = basic_streambuf_wchar_sgetc(strbuf);
9428 if(ch == delim) {
9429 basic_streambuf_wchar__Gninc(strbuf);
9430 this->count++;
9434 basic_istream_wchar_sentry_destroy(this);
9436 basic_ios_wchar_setstate(base, (ch==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit) |
9437 (!this->count || (ch!=delim && ch!=WEOF) ? IOSTATE_failbit : IOSTATE_goodbit));
9438 if(count > 0)
9439 *str = 0;
9440 return this;
9443 /* ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH@Z */
9444 /* ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J@Z */
9445 /* ?getline@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGH@Z */
9446 /* ?getline@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_J@Z */
9447 #if STREAMSIZE_BITS == 64
9448 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_getline, 16)
9449 #else
9450 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_getline, 12)
9451 #endif
9452 basic_istream_wchar* __thiscall basic_istream_wchar_getline(basic_istream_wchar *this, wchar_t *str, streamsize count)
9454 return basic_istream_wchar_getline_delim(this, str, count, '\n');
9457 /* ?ignore@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@HG@Z */
9458 /* ?ignore@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_JG@Z */
9459 /* ?ignore@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@HG@Z */
9460 /* ?ignore@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@_JG@Z */
9461 #if STREAMSIZE_BITS == 64
9462 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ignore, 16)
9463 #else
9464 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ignore, 12)
9465 #endif
9466 basic_istream_wchar* __thiscall basic_istream_wchar_ignore(basic_istream_wchar *this, streamsize count, unsigned short delim)
9468 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9469 unsigned short ch = delim;
9470 unsigned int state;
9472 TRACE("(%p %s %d)\n", this, wine_dbgstr_longlong(count), delim);
9474 this->count = 0;
9476 if(basic_istream_wchar_sentry_create(this, TRUE)) {
9477 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9478 state = IOSTATE_goodbit;
9480 while(count > 0) {
9481 ch = basic_streambuf_wchar_sbumpc(strbuf);
9483 if(ch==WEOF) {
9484 state = IOSTATE_eofbit;
9485 break;
9488 if(ch==delim)
9489 break;
9491 this->count++;
9492 if(count != INT_MAX)
9493 count--;
9495 }else
9496 state = IOSTATE_failbit;
9497 basic_istream_wchar_sentry_destroy(this);
9499 basic_ios_wchar_setstate(base, state);
9500 return this;
9503 /* ?ws@std@@YAAAV?$basic_istream@_WU?$char_traits@_W@std@@@1@AAV21@@Z */
9504 /* ?ws@std@@YAAEAV?$basic_istream@_WU?$char_traits@_W@std@@@1@AEAV21@@Z */
9505 /* ?ws@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@1@AAV21@@Z */
9506 /* ?ws@std@@YAAEAV?$basic_istream@GU?$char_traits@G@std@@@1@AEAV21@@Z */
9507 basic_istream_wchar* __cdecl ws_basic_istream_wchar(basic_istream_wchar *istream)
9509 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istream);
9510 unsigned short ch = '\n';
9512 TRACE("(%p)\n", istream);
9514 if(basic_istream_wchar_sentry_create(istream, TRUE)) {
9515 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9516 const ctype_wchar *ctype = ctype_wchar_use_facet(strbuf->loc);
9518 for(ch = basic_streambuf_wchar_sgetc(strbuf); ctype_wchar_is_ch(ctype, _SPACE, ch);
9519 ch = basic_streambuf_wchar_snextc(strbuf)) {
9520 if(ch == WEOF)
9521 break;
9524 basic_istream_wchar_sentry_destroy(istream);
9526 if(ch == WEOF)
9527 basic_ios_wchar_setstate(base, IOSTATE_eofbit);
9528 return istream;
9531 /* ?peek@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
9532 /* ?peek@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
9533 /* ?peek@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEGXZ */
9534 /* ?peek@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAGXZ */
9535 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_peek, 4)
9536 unsigned short __thiscall basic_istream_wchar_peek(basic_istream_wchar *this)
9538 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9539 unsigned short ret = WEOF;
9541 TRACE("(%p)\n", this);
9543 this->count = 0;
9545 if(basic_istream_wchar_sentry_create(this, TRUE))
9546 ret = basic_streambuf_wchar_sgetc(basic_ios_wchar_rdbuf_get(base));
9547 basic_istream_wchar_sentry_destroy(this);
9549 if (ret == WEOF)
9550 basic_ios_wchar_setstate(base, IOSTATE_eofbit);
9552 return ret;
9555 /* ?_Read_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WIH@Z */
9556 /* ?_Read_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_K_J@Z */
9557 /* ?_Read_s@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGIH@Z */
9558 /* ?_Read_s@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_K_J@Z */
9559 #if STREAMSIZE_BITS == 64
9560 DEFINE_THISCALL_WRAPPER(basic_istream_wchar__Read_s, 20)
9561 #else
9562 DEFINE_THISCALL_WRAPPER(basic_istream_wchar__Read_s, 16)
9563 #endif
9564 basic_istream_wchar* __thiscall basic_istream_wchar__Read_s(basic_istream_wchar *this, wchar_t *str, MSVCP_size_t size, streamsize count)
9566 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9567 IOSB_iostate state = IOSTATE_goodbit;
9569 TRACE("(%p %p %lu %s)\n", this, str, size, wine_dbgstr_longlong(count));
9571 if(basic_istream_wchar_sentry_create(this, TRUE)) {
9572 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9574 this->count = basic_streambuf_wchar__Sgetn_s(strbuf, str, size, count);
9575 if(this->count != count)
9576 state |= IOSTATE_failbit | IOSTATE_eofbit;
9577 }else {
9578 this->count = 0;
9580 basic_istream_wchar_sentry_destroy(this);
9582 basic_ios_wchar_setstate(base, state);
9583 return this;
9586 /* ?read@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH@Z */
9587 /* ?read@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J@Z */
9588 /* ?read@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGH@Z */
9589 /* ?read@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_J@Z */
9590 #if STREAMSIZE_BITS == 64
9591 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read, 16)
9592 #else
9593 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read, 12)
9594 #endif
9595 basic_istream_wchar* __thiscall basic_istream_wchar_read(basic_istream_wchar *this, wchar_t *str, streamsize count)
9597 return basic_istream_wchar__Read_s(this, str, -1, count);
9600 /* ?_Readsome_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEHPA_WIH@Z */
9601 /* ?_Readsome_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_JPEA_W_K_J@Z */
9602 /* ?_Readsome_s@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEHPAGIH@Z */
9603 /* ?_Readsome_s@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA_JPEAG_K_J@Z */
9604 #if STREAMSIZE_BITS == 64
9605 DEFINE_THISCALL_WRAPPER(basic_istream_wchar__Readsome_s, 20)
9606 #else
9607 DEFINE_THISCALL_WRAPPER(basic_istream_wchar__Readsome_s, 16)
9608 #endif
9609 streamsize __thiscall basic_istream_wchar__Readsome_s(basic_istream_wchar *this, wchar_t *str, MSVCP_size_t size, streamsize count)
9611 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9612 IOSB_iostate state = IOSTATE_goodbit;
9614 TRACE("(%p %p %lu %s)\n", this, str, size, wine_dbgstr_longlong(count));
9616 this->count = 0;
9618 if(basic_istream_wchar_sentry_create(this, TRUE)) {
9619 streamsize avail = basic_streambuf_wchar_in_avail(basic_ios_wchar_rdbuf_get(base));
9620 if(avail > count)
9621 avail = count;
9623 if(avail == -1)
9624 state |= IOSTATE_eofbit;
9625 else if(avail > 0)
9626 basic_istream_wchar__Read_s(this, str, size, avail);
9627 }else {
9628 state |= IOSTATE_failbit;
9630 basic_istream_wchar_sentry_destroy(this);
9632 basic_ios_wchar_setstate(base, state);
9633 return this->count;
9636 /* ?readsome@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEHPA_WH@Z */
9637 /* ?readsome@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_JPEA_W_J@Z */
9638 /* ?readsome@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEHPAGH@Z */
9639 /* ?readsome@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA_JPEAG_J@Z */
9640 #if STREAMSIZE_BITS == 64
9641 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_readsome, 16)
9642 #else
9643 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_readsome, 12)
9644 #endif
9645 streamsize __thiscall basic_istream_wchar_readsome(basic_istream_wchar *this, wchar_t *str, streamsize count)
9647 return basic_istream_wchar__Readsome_s(this, str, count, count);
9650 /* ?putback@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@_W@Z */
9651 /* ?putback@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_W@Z */
9652 /* ?putback@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@G@Z */
9653 /* ?putback@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@G@Z */
9654 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_putback, 8)
9655 basic_istream_wchar* __thiscall basic_istream_wchar_putback(basic_istream_wchar *this, wchar_t ch)
9657 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9658 IOSB_iostate state = IOSTATE_goodbit;
9660 TRACE("(%p %c)\n", this, ch);
9662 this->count = 0;
9664 if(basic_istream_wchar_sentry_create(this, TRUE)) {
9665 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9667 if(!ios_base_good(&base->base))
9668 state |= IOSTATE_failbit;
9669 else if(!strbuf || basic_streambuf_wchar_sputbackc(strbuf, ch)==WEOF)
9670 state |= IOSTATE_badbit;
9672 basic_istream_wchar_sentry_destroy(this);
9674 basic_ios_wchar_setstate(base, state);
9675 return this;
9678 /* ?unget@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@XZ */
9679 /* ?unget@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@XZ */
9680 /* ?unget@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@XZ */
9681 /* ?unget@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@XZ */
9682 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_unget, 4)
9683 basic_istream_wchar* __thiscall basic_istream_wchar_unget(basic_istream_wchar *this)
9685 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9686 IOSB_iostate state = IOSTATE_goodbit;
9688 TRACE("(%p)\n", this);
9690 this->count = 0;
9692 if(basic_istream_wchar_sentry_create(this, TRUE)) {
9693 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9695 if(!ios_base_good(&base->base))
9696 state |= IOSTATE_failbit;
9697 else if(!strbuf || basic_streambuf_wchar_sungetc(strbuf)==WEOF)
9698 state |= IOSTATE_badbit;
9700 basic_istream_wchar_sentry_destroy(this);
9702 basic_ios_wchar_setstate(base, state);
9703 return this;
9706 /* ?sync@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEHXZ */
9707 /* ?sync@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAHXZ */
9708 /* ?sync@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEHXZ */
9709 /* ?sync@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAHXZ */
9710 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_sync, 4)
9711 int __thiscall basic_istream_wchar_sync(basic_istream_wchar *this)
9713 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9714 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9716 TRACE("(%p)\n", this);
9718 if(!strbuf)
9719 return -1;
9721 if(basic_istream_wchar_sentry_create(this, TRUE)) {
9722 if(basic_streambuf_wchar_pubsync(strbuf) != -1) {
9723 basic_istream_wchar_sentry_destroy(this);
9724 return 0;
9727 basic_istream_wchar_sentry_destroy(this);
9729 basic_ios_wchar_setstate(base, IOSTATE_badbit);
9730 return -1;
9733 /* ?tellg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@XZ */
9734 /* ?tellg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
9735 /* ?tellg@?$basic_istream@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@XZ */
9736 /* ?tellg@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
9737 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_tellg, 8)
9738 fpos_int* __thiscall basic_istream_wchar_tellg(basic_istream_wchar *this, fpos_int *ret)
9740 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9742 TRACE("(%p %p)\n", this, ret);
9744 if(ios_base_fail(&base->base)) {
9745 ret->off = -1;
9746 ret->pos = 0;
9747 ret->state = 0;
9748 return ret;
9751 basic_streambuf_wchar_pubseekoff(basic_ios_wchar_rdbuf_get(base),
9752 ret, 0, SEEKDIR_cur, OPENMODE_in);
9753 if(ret->off==-1 && ret->pos==0 && ret->state==0)
9754 basic_ios_wchar_setstate(base, IOSTATE_failbit);
9756 return ret;
9759 /* ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@JH@Z */
9760 /* ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_JH@Z */
9761 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@JH@Z */
9762 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@_JH@Z */
9763 #if STREAMOFF_BITS == 64
9764 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_seekg, 16)
9765 #else
9766 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_seekg, 12)
9767 #endif
9768 basic_istream_wchar* __thiscall basic_istream_wchar_seekg(basic_istream_wchar *this, streamoff off, int dir)
9770 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9772 TRACE("(%p %s %d)\n", this, wine_dbgstr_longlong(off), dir);
9774 if(!ios_base_fail(&base->base)) {
9775 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9776 fpos_int ret;
9778 basic_streambuf_wchar_pubseekoff(strbuf, &ret, off, dir, OPENMODE_in);
9780 if(ret.off==-1 && ret.pos==0 && ret.state==0)
9781 basic_ios_wchar_setstate(base, IOSTATE_failbit);
9782 else
9783 basic_ios_wchar_clear(base, IOSTATE_goodbit);
9784 return this;
9785 }else
9786 basic_ios_wchar_clear(base, IOSTATE_goodbit);
9788 return this;
9791 /* ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
9792 /* ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
9793 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
9794 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
9795 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_seekg_fpos, 28)
9796 basic_istream_wchar* __thiscall basic_istream_wchar_seekg_fpos(basic_istream_wchar *this, fpos_int pos)
9798 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9800 TRACE("(%p %s)\n", this, debugstr_fpos_int(&pos));
9802 if(!ios_base_fail(&base->base)) {
9803 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9804 fpos_int ret;
9806 basic_streambuf_wchar_pubseekpos(strbuf, &ret, pos, OPENMODE_in);
9808 if(ret.off==-1 && ret.pos==0 && ret.state==0)
9809 basic_ios_wchar_setstate(base, IOSTATE_failbit);
9810 else
9811 basic_ios_wchar_clear(base, IOSTATE_goodbit);
9812 return this;
9813 }else
9814 basic_ios_wchar_clear(base, IOSTATE_goodbit);
9816 return this;
9819 static basic_istream_wchar* basic_istream_read_short(basic_istream_wchar *this, short *v, const num_get *numget)
9821 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9822 int state = IOSTATE_goodbit;
9824 TRACE("(%p %p)\n", this, v);
9826 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9827 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9828 istreambuf_iterator_wchar first={0}, last={0};
9829 LONG tmp;
9831 first.strbuf = strbuf;
9832 num_get_wchar_get_long(numget, &last, first, last, &base->base, &state, &tmp);
9834 if(!(state&IOSTATE_failbit) && tmp==(LONG)((short)tmp))
9835 *v = tmp;
9836 else
9837 state |= IOSTATE_failbit;
9839 basic_istream_wchar_sentry_destroy(this);
9841 basic_ios_wchar_setstate(base, state);
9842 return this;
9845 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAF@Z */
9846 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAF@Z */
9847 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_short, 8)
9848 basic_istream_wchar* __thiscall basic_istream_wchar_read_short(basic_istream_wchar *this, short *v)
9850 return basic_istream_read_short(this, v, num_get_wchar_use_facet(
9851 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9854 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAF@Z */
9855 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAF@Z */
9856 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_short, 8)
9857 basic_istream_wchar* __thiscall basic_istream_short_read_short(basic_istream_wchar *this, short *v)
9859 return basic_istream_read_short(this, v, num_get_short_use_facet(
9860 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9863 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAG@Z */
9864 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAG@Z */
9865 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_ushort, 8)
9866 basic_istream_wchar* __thiscall basic_istream_wchar_read_ushort(basic_istream_wchar *this, unsigned short *v)
9868 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9869 int state = IOSTATE_goodbit;
9871 TRACE("(%p %p)\n", this, v);
9873 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9874 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9875 const num_get *numget = num_get_wchar_use_facet(strbuf->loc);
9876 istreambuf_iterator_wchar first={0}, last={0};
9878 first.strbuf = strbuf;
9879 num_get_wchar_get_ushort(numget, &last, first, last, &base->base, &state, v);
9881 basic_istream_wchar_sentry_destroy(this);
9883 basic_ios_wchar_setstate(base, state);
9884 return this;
9887 static basic_istream_wchar* basic_istream_read_int(basic_istream_wchar *this, int *v, const num_get *numget)
9889 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9890 int state = IOSTATE_goodbit;
9892 TRACE("(%p %p)\n", this, v);
9894 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9895 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9896 istreambuf_iterator_wchar first={0}, last={0};
9898 first.strbuf = strbuf;
9899 num_get_wchar_get_long(numget, &last, first, last, &base->base, &state, v);
9901 basic_istream_wchar_sentry_destroy(this);
9903 basic_ios_wchar_setstate(base, state);
9904 return this;
9907 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAH@Z */
9908 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAH@Z */
9909 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_int, 8)
9910 basic_istream_wchar* __thiscall basic_istream_wchar_read_int(basic_istream_wchar *this, int *v)
9912 return basic_istream_read_int(this, v, num_get_wchar_use_facet(
9913 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9916 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAH@Z */
9917 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAH@Z */
9918 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_int, 8)
9919 basic_istream_wchar* __thiscall basic_istream_short_read_int(basic_istream_wchar *this, int *v)
9921 return basic_istream_read_int(this, v, num_get_short_use_facet(
9922 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9925 static basic_istream_wchar* basic_istream_read_uint(basic_istream_wchar *this, unsigned int *v, const num_get *numget)
9927 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9928 int state = IOSTATE_goodbit;
9930 TRACE("(%p %p)\n", this, v);
9932 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9933 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9934 istreambuf_iterator_wchar first={0}, last={0};
9936 first.strbuf = strbuf;
9937 num_get_wchar_get_uint(numget, &last, first, last, &base->base, &state, v);
9939 basic_istream_wchar_sentry_destroy(this);
9941 basic_ios_wchar_setstate(base, state);
9942 return this;
9945 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAI@Z */
9946 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAI@Z */
9947 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_uint, 8)
9948 basic_istream_wchar* __thiscall basic_istream_wchar_read_uint(basic_istream_wchar *this, unsigned int *v)
9950 return basic_istream_read_uint(this, v, num_get_wchar_use_facet(
9951 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9954 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAI@Z */
9955 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAI@Z */
9956 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_uint, 8)
9957 basic_istream_wchar* __thiscall basic_istream_short_read_uint(basic_istream_wchar *this, unsigned int *v)
9959 return basic_istream_read_uint(this, v, num_get_short_use_facet(
9960 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9963 static basic_istream_wchar* basic_istream_read_long(basic_istream_wchar *this, LONG *v, const num_get *numget)
9965 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9966 int state = IOSTATE_goodbit;
9968 TRACE("(%p %p)\n", this, v);
9970 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9971 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9972 istreambuf_iterator_wchar first={0}, last={0};
9974 first.strbuf = strbuf;
9975 num_get_wchar_get_long(numget, &last, first, last, &base->base, &state, v);
9977 basic_istream_wchar_sentry_destroy(this);
9979 basic_ios_wchar_setstate(base, state);
9980 return this;
9983 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAJ@Z */
9984 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAJ@Z */
9985 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_long, 8)
9986 basic_istream_wchar* __thiscall basic_istream_wchar_read_long(basic_istream_wchar *this, LONG *v)
9988 return basic_istream_read_long(this, v, num_get_wchar_use_facet(
9989 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9992 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAJ@Z */
9993 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAJ@Z */
9994 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_long, 8)
9995 basic_istream_wchar* __thiscall basic_istream_short_read_long(basic_istream_wchar *this, LONG *v)
9997 return basic_istream_read_long(this, v, num_get_short_use_facet(
9998 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
10001 static basic_istream_wchar* basic_istream_read_ulong(basic_istream_wchar *this, ULONG *v, const num_get *numget)
10003 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10004 int state = IOSTATE_goodbit;
10006 TRACE("(%p %p)\n", this, v);
10008 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10009 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10010 istreambuf_iterator_wchar first={0}, last={0};
10012 first.strbuf = strbuf;
10013 num_get_wchar_get_ulong(numget, &last, first, last, &base->base, &state, v);
10015 basic_istream_wchar_sentry_destroy(this);
10017 basic_ios_wchar_setstate(base, state);
10018 return this;
10021 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAK@Z */
10022 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAK@Z */
10023 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_ulong, 8)
10024 basic_istream_wchar* __thiscall basic_istream_wchar_read_ulong(basic_istream_wchar *this, ULONG *v)
10026 return basic_istream_read_ulong(this, v, num_get_wchar_use_facet(
10027 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
10030 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAK@Z */
10031 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAK@Z */
10032 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_ulong, 8)
10033 basic_istream_wchar* __thiscall basic_istream_short_read_ulong(basic_istream_wchar *this, ULONG *v)
10035 return basic_istream_read_ulong(this, v, num_get_short_use_facet(
10036 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
10039 static basic_istream_wchar* basic_istream_read_float(basic_istream_wchar *this, float *v, const num_get *numget)
10041 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10042 int state = IOSTATE_goodbit;
10044 TRACE("(%p %p)\n", this, v);
10046 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10047 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10048 istreambuf_iterator_wchar first={0}, last={0};
10050 first.strbuf = strbuf;
10051 num_get_wchar_get_float(numget, &last, first, last, &base->base, &state, v);
10053 basic_istream_wchar_sentry_destroy(this);
10055 basic_ios_wchar_setstate(base, state);
10056 return this;
10059 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAM@Z */
10060 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAM@Z */
10061 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_float, 8)
10062 basic_istream_wchar* __thiscall basic_istream_wchar_read_float(basic_istream_wchar *this, float *v)
10064 return basic_istream_read_float(this, v, num_get_wchar_use_facet(
10065 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
10068 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAM@Z */
10069 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAM@Z */
10070 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_float, 8)
10071 basic_istream_wchar* __thiscall basic_istream_short_read_float(basic_istream_wchar *this, float *v)
10073 return basic_istream_read_float(this, v, num_get_short_use_facet(
10074 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
10077 static basic_istream_wchar* basic_istream_read_double(basic_istream_wchar *this, double *v, const num_get *numget)
10079 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10080 int state = IOSTATE_goodbit;
10082 TRACE("(%p %p)\n", this, v);
10084 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10085 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10086 istreambuf_iterator_wchar first={0}, last={0};
10088 first.strbuf = strbuf;
10089 num_get_wchar_get_double(numget, &last, first, last, &base->base, &state, v);
10091 basic_istream_wchar_sentry_destroy(this);
10093 basic_ios_wchar_setstate(base, state);
10094 return this;
10097 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAN@Z */
10098 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAN@Z */
10099 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_double, 8)
10100 basic_istream_wchar* __thiscall basic_istream_wchar_read_double(basic_istream_wchar *this, double *v)
10102 return basic_istream_read_double(this, v, num_get_wchar_use_facet(
10103 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
10106 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAN@Z */
10107 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAN@Z */
10108 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_double, 8)
10109 basic_istream_wchar* __thiscall basic_istream_short_read_double(basic_istream_wchar *this, double *v)
10111 return basic_istream_read_double(this, v, num_get_short_use_facet(
10112 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
10115 static basic_istream_wchar* basic_istream_read_ldouble(basic_istream_wchar *this, double *v, const num_get *numget)
10117 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10118 int state = IOSTATE_goodbit;
10120 TRACE("(%p %p)\n", this, v);
10122 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10123 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10124 istreambuf_iterator_wchar first={0}, last={0};
10126 first.strbuf = strbuf;
10127 num_get_wchar_get_ldouble(numget, &last, first, last, &base->base, &state, v);
10129 basic_istream_wchar_sentry_destroy(this);
10131 basic_ios_wchar_setstate(base, state);
10132 return this;
10135 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAO@Z */
10136 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAO@Z */
10137 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_ldouble, 8)
10138 basic_istream_wchar* __thiscall basic_istream_wchar_read_ldouble(basic_istream_wchar *this, double *v)
10140 return basic_istream_read_ldouble(this, v, num_get_wchar_use_facet(
10141 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
10144 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAO@Z */
10145 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAO@Z */
10146 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_ldouble, 8)
10147 basic_istream_wchar* __thiscall basic_istream_short_read_ldouble(basic_istream_wchar *this, double *v)
10149 return basic_istream_read_ldouble(this, v, num_get_short_use_facet(
10150 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
10153 static basic_istream_wchar* basic_istream_read_ptr(basic_istream_wchar *this, void **v, const num_get *numget)
10155 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10156 int state = IOSTATE_goodbit;
10158 TRACE("(%p %p)\n", this, v);
10160 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10161 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10162 istreambuf_iterator_wchar first={0}, last={0};
10164 first.strbuf = strbuf;
10165 num_get_wchar_get_void(numget, &last, first, last, &base->base, &state, v);
10167 basic_istream_wchar_sentry_destroy(this);
10169 basic_ios_wchar_setstate(base, state);
10170 return this;
10173 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAPAX@Z */
10174 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAPEAX@Z */
10175 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_ptr, 8)
10176 basic_istream_wchar* __thiscall basic_istream_wchar_read_ptr(basic_istream_wchar *this, void **v)
10178 return basic_istream_read_ptr(this, v, num_get_wchar_use_facet(
10179 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
10182 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAPAX@Z */
10183 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAPEAX@Z */
10184 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_ptr, 8)
10185 basic_istream_wchar* __thiscall basic_istream_short_read_ptr(basic_istream_wchar *this, void **v)
10187 return basic_istream_read_ptr(this, v, num_get_short_use_facet(
10188 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
10191 static basic_istream_wchar* basic_istream_read_int64(basic_istream_wchar *this, __int64 *v, const num_get *numget)
10193 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10194 int state = IOSTATE_goodbit;
10196 TRACE("(%p %p)\n", this, v);
10198 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10199 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10200 istreambuf_iterator_wchar first={0}, last={0};
10202 first.strbuf = strbuf;
10203 num_get_wchar_get_int64(numget, &last, first, last, &base->base, &state, v);
10205 basic_istream_wchar_sentry_destroy(this);
10207 basic_ios_wchar_setstate(base, state);
10208 return this;
10211 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AA_J@Z */
10212 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEA_J@Z */
10213 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_int64, 8)
10214 basic_istream_wchar* __thiscall basic_istream_wchar_read_int64(basic_istream_wchar *this, __int64 *v)
10216 return basic_istream_read_int64(this, v, num_get_wchar_use_facet(
10217 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
10220 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AA_J@Z */
10221 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEA_J@Z */
10222 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_int64, 8)
10223 basic_istream_wchar* __thiscall basic_istream_short_read_int64(basic_istream_wchar *this, __int64 *v)
10225 return basic_istream_read_int64(this, v, num_get_short_use_facet(
10226 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
10229 static basic_istream_wchar* basic_istream_read_uint64(basic_istream_wchar *this, unsigned __int64 *v, const num_get *numget)
10231 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10232 int state = IOSTATE_goodbit;
10234 TRACE("(%p %p)\n", this, v);
10236 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10237 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10238 istreambuf_iterator_wchar first={0}, last={0};
10240 first.strbuf = strbuf;
10241 num_get_wchar_get_uint64(numget, &last, first, last, &base->base, &state, v);
10243 basic_istream_wchar_sentry_destroy(this);
10245 basic_ios_wchar_setstate(base, state);
10246 return this;
10249 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AA_K@Z */
10250 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEA_K@Z */
10251 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_uint64, 8)
10252 basic_istream_wchar* __thiscall basic_istream_wchar_read_uint64(basic_istream_wchar *this, unsigned __int64 *v)
10254 return basic_istream_read_uint64(this, v, num_get_wchar_use_facet(
10255 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
10258 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AA_K@Z */
10259 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEA_K@Z */
10260 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_uint64, 8)
10261 basic_istream_wchar* __thiscall basic_istream_short_read_uint64(basic_istream_wchar *this, unsigned __int64 *v)
10263 return basic_istream_read_uint64(this, v, num_get_short_use_facet(
10264 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
10267 static basic_istream_wchar* basic_istream_read_bool(basic_istream_wchar *this, MSVCP_bool *v, const num_get *numget)
10269 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10270 int state = IOSTATE_goodbit;
10272 TRACE("(%p %p)\n", this, v);
10274 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10275 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10276 istreambuf_iterator_wchar first={0}, last={0};
10278 first.strbuf = strbuf;
10279 num_get_wchar_get_bool(numget, &last, first, last, &base->base, &state, v);
10281 basic_istream_wchar_sentry_destroy(this);
10283 basic_ios_wchar_setstate(base, state);
10284 return this;
10287 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AA_N@Z */
10288 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEA_N@Z */
10289 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_bool, 8)
10290 basic_istream_wchar* __thiscall basic_istream_wchar_read_bool(basic_istream_wchar *this, MSVCP_bool *v)
10292 return basic_istream_read_bool(this, v, num_get_wchar_use_facet(
10293 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
10296 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AA_N@Z */
10297 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEA_N@Z */
10298 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_bool, 8)
10299 basic_istream_wchar* __thiscall basic_istream_short_read_bool(basic_istream_wchar *this, MSVCP_bool *v)
10301 return basic_istream_read_bool(this, v, num_get_short_use_facet(
10302 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
10305 /* ??$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 */
10306 /* ??$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 */
10307 /* ??$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 */
10308 /* ??$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 */
10309 basic_istream_wchar* __cdecl basic_istream_wchar_getline_bstr_delim(
10310 basic_istream_wchar *istream, basic_string_wchar *str, wchar_t delim)
10312 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istream);
10313 IOSB_iostate state = IOSTATE_goodbit;
10314 int c = delim;
10316 TRACE("(%p %p %c)\n", istream, str, delim);
10318 if(basic_istream_wchar_sentry_create(istream, TRUE)) {
10319 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
10320 MSVCP_basic_string_wchar_clear(str);
10322 c = basic_streambuf_wchar_sgetc(strbuf);
10323 for(; c!=delim && c!=WEOF; c = basic_streambuf_wchar_snextc(strbuf))
10324 MSVCP_basic_string_wchar_append_ch(str, c);
10325 if(c==delim) basic_streambuf_wchar_sbumpc(strbuf);
10326 else if(c==WEOF) state |= IOSTATE_eofbit;
10328 if(!MSVCP_basic_string_wchar_length(str) && c!=delim) state |= IOSTATE_failbit;
10330 basic_istream_wchar_sentry_destroy(istream);
10332 basic_ios_wchar_setstate(basic_istream_wchar_get_basic_ios(istream), state);
10333 return istream;
10336 /* ??$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 */
10337 /* ??$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 */
10338 /* ??$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 */
10339 /* ??$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 */
10340 basic_istream_wchar* __cdecl basic_istream_wchar_getline_bstr(
10341 basic_istream_wchar *istream, basic_string_wchar *str)
10343 return basic_istream_wchar_getline_bstr_delim(istream, str, '\n');
10346 static basic_istream_wchar* basic_istream_read_bstr(basic_istream_wchar *istream,
10347 basic_string_wchar *str, const ctype_wchar *ctype)
10349 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istream);
10350 IOSB_iostate state = IOSTATE_failbit;
10351 int c = '\n';
10353 TRACE("(%p %p)\n", istream, str);
10355 if(basic_istream_wchar_sentry_create(istream, FALSE)) {
10356 MSVCP_size_t count = ios_base_width_get(&base->base);
10358 if(!count)
10359 count = -1;
10361 MSVCP_basic_string_wchar_clear(str);
10363 for(c = basic_streambuf_wchar_sgetc(basic_ios_wchar_rdbuf_get(base));
10364 c!=WEOF && !ctype_wchar_is_ch(ctype, _SPACE|_BLANK, c) && count>0;
10365 c = basic_streambuf_wchar_snextc(basic_ios_wchar_rdbuf_get(base)), count--) {
10366 state = IOSTATE_goodbit;
10367 MSVCP_basic_string_wchar_append_ch(str, c);
10370 basic_istream_wchar_sentry_destroy(istream);
10372 ios_base_width_set(&base->base, 0);
10373 basic_ios_wchar_setstate(base, state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
10374 return istream;
10377 /* ??$?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 */
10378 /* ??$?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 */
10379 basic_istream_wchar* __cdecl basic_istream_wchar_read_bstr(
10380 basic_istream_wchar *istream, basic_string_wchar *str)
10382 return basic_istream_read_bstr(istream, str, ctype_wchar_use_facet(
10383 basic_istream_wchar_get_basic_ios(istream)->strbuf->loc));
10386 /* ??$?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 */
10387 /* ??$?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 */
10388 basic_istream_wchar* __cdecl basic_istream_short_read_bstr(
10389 basic_istream_wchar *istream, basic_string_wchar *str)
10391 return basic_istream_read_bstr(istream, str, ctype_short_use_facet(
10392 basic_istream_wchar_get_basic_ios(istream)->strbuf->loc));
10395 static basic_istream_wchar* basic_istream_read_str(basic_istream_wchar *istream, wchar_t *str, const ctype_wchar *ctype)
10397 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istream);
10398 IOSB_iostate state = IOSTATE_failbit;
10399 unsigned short c = '\n';
10401 TRACE("(%p %p)\n", istream, str);
10403 if(basic_istream_wchar_sentry_create(istream, FALSE)) {
10404 MSVCP_size_t count = ios_base_width_get(&base->base)-1;
10406 for(c = basic_streambuf_wchar_sgetc(basic_ios_wchar_rdbuf_get(base));
10407 c!=WEOF && !ctype_wchar_is_ch(ctype, _SPACE|_BLANK, c) && count>0;
10408 c = basic_streambuf_wchar_snextc(basic_ios_wchar_rdbuf_get(base)), count--) {
10409 state = IOSTATE_goodbit;
10410 *str++ = c;
10413 basic_istream_wchar_sentry_destroy(istream);
10415 *str = 0;
10416 ios_base_width_set(&base->base, 0);
10417 basic_ios_wchar_setstate(base, state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
10418 return istream;
10421 /* ??$?5_WU?$char_traits@_W@std@@@std@@YAAAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AAV10@PA_W@Z */
10422 /* ??$?5_WU?$char_traits@_W@std@@@std@@YAAEAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AEAV10@PEA_W@Z */
10423 basic_istream_wchar* __cdecl basic_istream_wchar_read_str(basic_istream_wchar *istream, wchar_t *str)
10425 return basic_istream_read_str(istream, str, ctype_wchar_use_facet(
10426 basic_istream_wchar_get_basic_ios(istream)->strbuf->loc));
10429 /* ??$?5GU?$char_traits@G@std@@@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@0@AAV10@PAG@Z */
10430 /* ??$?5GU?$char_traits@G@std@@@std@@YAAEAV?$basic_istream@GU?$char_traits@G@std@@@0@AEAV10@PEAG@Z */
10431 basic_istream_wchar* __cdecl basic_istream_short_read_str(basic_istream_wchar *istream, wchar_t *str)
10433 return basic_istream_read_str(istream, str, ctype_short_use_facet(
10434 basic_istream_wchar_get_basic_ios(istream)->strbuf->loc));
10437 /* ??$?5_WU?$char_traits@_W@std@@@std@@YAAAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AAV10@AA_W@Z */
10438 /* ??$?5_WU?$char_traits@_W@std@@@std@@YAAEAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AEAV10@AEA_W@Z */
10439 /* ??$?5GU?$char_traits@G@std@@@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@0@AAV10@AAG@Z */
10440 /* ??$?5GU?$char_traits@G@std@@@std@@YAAEAV?$basic_istream@GU?$char_traits@G@std@@@0@AEAV10@AEAG@Z */
10441 basic_istream_wchar* __cdecl basic_istream_wchar_read_ch(basic_istream_wchar *istream, wchar_t *ch)
10443 IOSB_iostate state = IOSTATE_failbit;
10444 unsigned short c = 0;
10446 TRACE("(%p %p)\n", istream, ch);
10448 if(basic_istream_wchar_sentry_create(istream, FALSE)) {
10449 c = basic_streambuf_wchar_sbumpc(basic_ios_wchar_rdbuf_get(
10450 basic_istream_wchar_get_basic_ios(istream)));
10451 if(c != WEOF) {
10452 state = IOSTATE_goodbit;
10453 *ch = c;
10456 basic_istream_wchar_sentry_destroy(istream);
10458 basic_ios_wchar_setstate(basic_istream_wchar_get_basic_ios(istream),
10459 state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
10460 return istream;
10463 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
10464 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
10465 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
10466 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
10467 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_streambuf, 8)
10468 basic_istream_wchar* __thiscall basic_istream_wchar_read_streambuf(
10469 basic_istream_wchar *this, basic_streambuf_wchar *streambuf)
10471 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
10472 IOSB_iostate state = IOSTATE_failbit;
10473 unsigned short c = '\n';
10475 TRACE("(%p %p)\n", this, streambuf);
10477 if(basic_istream_wchar_sentry_create(this, FALSE)) {
10478 for(c = basic_streambuf_wchar_sgetc(basic_ios_wchar_rdbuf_get(base)); c!=WEOF;
10479 c = basic_streambuf_wchar_snextc(basic_ios_wchar_rdbuf_get(base))) {
10480 state = IOSTATE_goodbit;
10481 if(basic_streambuf_wchar_sputc(streambuf, c) == WEOF)
10482 break;
10485 basic_istream_wchar_sentry_destroy(this);
10487 basic_ios_wchar_setstate(base, state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
10488 return this;
10491 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
10492 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
10493 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
10494 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
10495 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_func, 8)
10496 basic_istream_wchar* __thiscall basic_istream_wchar_read_func(basic_istream_wchar *this,
10497 basic_istream_wchar* (__cdecl *pfunc)(basic_istream_wchar*))
10499 TRACE("(%p %p)\n", this, pfunc);
10500 pfunc(this);
10501 return this;
10504 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@_WU?$char_traits@_W@std@@@1@AAV21@@Z@Z */
10505 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@_WU?$char_traits@_W@std@@@1@AEAV21@@Z@Z */
10506 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@GU?$char_traits@G@std@@@1@AAV21@@Z@Z */
10507 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@GU?$char_traits@G@std@@@1@AEAV21@@Z@Z */
10508 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_func_basic_ios, 8)
10509 basic_istream_wchar* __thiscall basic_istream_wchar_read_func_basic_ios(basic_istream_wchar *this,
10510 basic_ios_wchar* (__cdecl *pfunc)(basic_ios_wchar*))
10512 TRACE("(%p %p)\n", this, pfunc);
10513 pfunc(basic_istream_wchar_get_basic_ios(this));
10514 return this;
10517 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
10518 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
10519 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
10520 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
10521 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_func_ios_base, 8)
10522 basic_istream_wchar* __thiscall basic_istream_wchar_read_func_ios_base(
10523 basic_istream_wchar *this, ios_base* (__cdecl *pfunc)(ios_base*))
10525 TRACE("(%p %p)\n", this, pfunc);
10526 pfunc(&basic_istream_wchar_get_basic_ios(this)->base);
10527 return this;
10530 /* ?swap@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEXAAV12@@Z */
10531 /* ?swap@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAXAEAV12@@Z */
10532 /* ?swap@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEXAAV12@@Z */
10533 /* ?swap@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAXAEAV12@@Z */
10534 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_swap, 8)
10535 void __thiscall basic_istream_wchar_swap(basic_istream_wchar *this, basic_istream_wchar *r)
10537 TRACE("(%p %p)\n", this, r);
10539 if(this == r)
10540 return;
10542 basic_ios_wchar_swap(basic_istream_wchar_get_basic_ios(this),
10543 basic_istream_wchar_get_basic_ios(r));
10544 this->count ^= r->count;
10545 r->count ^= this->count;
10546 this->count ^= r->count;
10549 static inline basic_ios_char* basic_iostream_char_to_basic_ios(basic_iostream_char *ptr)
10551 return (basic_ios_char*)((char*)ptr+basic_iostream_char_vbtable1[1]);
10554 static inline basic_iostream_char* basic_iostream_char_from_basic_ios(basic_ios_char *ptr)
10556 return (basic_iostream_char*)((char*)ptr-basic_iostream_char_vbtable1[1]);
10559 /* ??0?$basic_iostream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
10560 /* ??0?$basic_iostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
10561 DEFINE_THISCALL_WRAPPER(basic_iostream_char_ctor, 12)
10562 basic_iostream_char* __thiscall basic_iostream_char_ctor(basic_iostream_char *this, basic_streambuf_char *strbuf, MSVCP_bool virt_init)
10564 basic_ios_char *basic_ios;
10566 TRACE("(%p %p %d)\n", this, strbuf, virt_init);
10568 if(virt_init) {
10569 this->base1.vbtable = basic_iostream_char_vbtable1;
10570 this->base2.vbtable = basic_iostream_char_vbtable2;
10571 basic_ios = basic_istream_char_get_basic_ios(&this->base1);
10572 basic_ios_char_ctor(basic_ios);
10573 }else {
10574 basic_ios = basic_istream_char_get_basic_ios(&this->base1);
10577 basic_ios->base.vtable = &MSVCP_basic_iostream_char_vtable;
10579 basic_istream_char_ctor(&this->base1, strbuf, FALSE, FALSE);
10580 basic_ostream_char_ctor_uninitialized(&this->base2, 0, FALSE, FALSE);
10581 return this;
10584 /* ??1?$basic_iostream@DU?$char_traits@D@std@@@std@@UAE@XZ */
10585 /* ??1?$basic_iostream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
10586 DEFINE_THISCALL_WRAPPER(basic_iostream_char_dtor, 4)
10587 void __thiscall basic_iostream_char_dtor(basic_ios_char *base)
10589 basic_iostream_char *this = basic_iostream_char_from_basic_ios(base);
10591 TRACE("(%p)\n", this);
10592 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(&this->base2));
10593 basic_istream_char_dtor(basic_istream_char_to_basic_ios(&this->base1));
10596 /* ??_D?$basic_iostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
10597 /* ??_D?$basic_iostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
10598 DEFINE_THISCALL_WRAPPER(basic_iostream_char_vbase_dtor, 4)
10599 void __thiscall basic_iostream_char_vbase_dtor(basic_iostream_char *this)
10601 TRACE("(%p)\n", this);
10602 basic_iostream_char_dtor(basic_iostream_char_to_basic_ios(this));
10603 basic_ios_char_dtor(basic_istream_char_get_basic_ios(&this->base1));
10606 DEFINE_THISCALL_WRAPPER(basic_iostream_char_vector_dtor, 8)
10607 basic_iostream_char* __thiscall basic_iostream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
10609 basic_iostream_char *this = basic_iostream_char_from_basic_ios(base);
10611 TRACE("(%p %x)\n", this, flags);
10613 if(flags & 2) {
10614 /* we have an array, with the number of elements stored before the first object */
10615 INT_PTR i, *ptr = (INT_PTR *)this-1;
10617 for(i=*ptr-1; i>=0; i--)
10618 basic_iostream_char_vbase_dtor(this+i);
10619 MSVCRT_operator_delete(ptr);
10620 } else {
10621 basic_iostream_char_vbase_dtor(this);
10622 if(flags & 1)
10623 MSVCRT_operator_delete(this);
10626 return this;
10629 /* ?swap@?$basic_iostream@DU?$char_traits@D@std@@@std@@QAEXAAV12@@Z */
10630 /* ?swap@?$basic_iostream@DU?$char_traits@D@std@@@std@@QEAAXAEAV12@@Z */
10631 DEFINE_THISCALL_WRAPPER(basic_iostream_char_swap, 8)
10632 void __thiscall basic_iostream_char_swap(basic_iostream_char *this, basic_iostream_char *r)
10634 TRACE("(%p %p)\n", this, r);
10636 if(this == r)
10637 return;
10639 basic_ios_char_swap(basic_istream_char_get_basic_ios(&this->base1),
10640 basic_istream_char_get_basic_ios(&r->base1));
10643 static inline basic_ios_wchar* basic_iostream_wchar_to_basic_ios(basic_iostream_wchar *ptr)
10645 return (basic_ios_wchar*)((char*)ptr+basic_iostream_wchar_vbtable1[1]);
10648 static inline basic_iostream_wchar* basic_iostream_wchar_from_basic_ios(basic_ios_wchar *ptr)
10650 return (basic_iostream_wchar*)((char*)ptr-basic_iostream_wchar_vbtable1[1]);
10653 /* ??0?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
10654 /* ??0?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
10655 DEFINE_THISCALL_WRAPPER(basic_iostream_wchar_ctor, 12)
10656 basic_iostream_wchar* __thiscall basic_iostream_wchar_ctor(basic_iostream_wchar *this,
10657 basic_streambuf_wchar *strbuf, MSVCP_bool virt_init)
10659 basic_ios_wchar *basic_ios;
10661 TRACE("(%p %p %d)\n", this, strbuf, virt_init);
10663 if(virt_init) {
10664 this->base1.vbtable = basic_iostream_wchar_vbtable1;
10665 this->base2.vbtable = basic_iostream_wchar_vbtable2;
10666 basic_ios = basic_istream_wchar_get_basic_ios(&this->base1);
10667 basic_ios_wchar_ctor(basic_ios);
10668 }else {
10669 basic_ios = basic_istream_wchar_get_basic_ios(&this->base1);
10672 basic_istream_wchar_ctor(&this->base1, strbuf, FALSE, FALSE);
10673 basic_ostream_wchar_ctor_uninitialized(&this->base2, 0, FALSE, FALSE);
10675 basic_ios->base.vtable = &MSVCP_basic_iostream_wchar_vtable;
10676 return this;
10679 /* ??0?$basic_iostream@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
10680 /* ??0?$basic_iostream@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
10681 DEFINE_THISCALL_WRAPPER(basic_iostream_short_ctor, 12)
10682 basic_iostream_wchar* __thiscall basic_iostream_short_ctor(basic_iostream_wchar *this,
10683 basic_streambuf_wchar *strbuf, MSVCP_bool virt_init)
10685 basic_iostream_wchar_ctor(this, strbuf, virt_init);
10686 basic_istream_wchar_get_basic_ios(&this->base1)->base.vtable = &MSVCP_basic_iostream_short_vtable;
10687 return this;
10690 /* ??1?$basic_iostream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
10691 /* ??1?$basic_iostream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
10692 /* ??1?$basic_iostream@GU?$char_traits@G@std@@@std@@UAE@XZ */
10693 /* ??1?$basic_iostream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
10694 DEFINE_THISCALL_WRAPPER(basic_iostream_wchar_dtor, 4)
10695 void __thiscall basic_iostream_wchar_dtor(basic_ios_wchar *base)
10697 basic_iostream_wchar *this = basic_iostream_wchar_from_basic_ios(base);
10699 TRACE("(%p)\n", this);
10700 basic_ostream_wchar_dtor(basic_ostream_wchar_to_basic_ios(&this->base2));
10701 basic_istream_wchar_dtor(basic_istream_wchar_to_basic_ios(&this->base1));
10704 /* ??_D?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
10705 /* ??_D?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
10706 /* ??_D?$basic_iostream@GU?$char_traits@G@std@@@std@@QAEXXZ */
10707 /* ??_D?$basic_iostream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
10708 DEFINE_THISCALL_WRAPPER(basic_iostream_wchar_vbase_dtor, 4)
10709 void __thiscall basic_iostream_wchar_vbase_dtor(basic_iostream_wchar *this)
10711 TRACE("(%p)\n", this);
10712 basic_iostream_wchar_dtor(basic_iostream_wchar_to_basic_ios(this));
10713 basic_ios_wchar_dtor(basic_istream_wchar_get_basic_ios(&this->base1));
10716 DEFINE_THISCALL_WRAPPER(basic_iostream_wchar_vector_dtor, 8)
10717 basic_iostream_wchar* __thiscall basic_iostream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
10719 basic_iostream_wchar *this = basic_iostream_wchar_from_basic_ios(base);
10721 TRACE("(%p %x)\n", this, flags);
10723 if(flags & 2) {
10724 /* we have an array, with the number of elements stored before the first object */
10725 INT_PTR i, *ptr = (INT_PTR *)this-1;
10727 for(i=*ptr-1; i>=0; i--)
10728 basic_iostream_wchar_vbase_dtor(this+i);
10729 MSVCRT_operator_delete(ptr);
10730 } else {
10731 basic_iostream_wchar_vbase_dtor(this);
10732 if(flags & 1)
10733 MSVCRT_operator_delete(this);
10736 return this;
10739 /* ?swap@?$basic_iostream@GU?$char_traits@G@std@@@std@@QAEXAAV12@@Z */
10740 /* ?swap@?$basic_iostream@GU?$char_traits@G@std@@@std@@QEAAXAEAV12@@Z */
10741 /* ?swap@?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QAEXAAV12@@Z */
10742 /* ?swap@?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QEAAXAEAV12@@Z */
10743 DEFINE_THISCALL_WRAPPER(basic_iostream_wchar_swap, 8)
10744 void __thiscall basic_iostream_wchar_swap(basic_iostream_wchar *this, basic_iostream_wchar *r)
10746 TRACE("(%p %p)\n", this, r);
10748 if(this == r)
10749 return;
10751 basic_ios_wchar_swap(basic_istream_wchar_get_basic_ios(&this->base1),
10752 basic_istream_wchar_get_basic_ios(&r->base1));
10755 static inline basic_ios_char* basic_ofstream_char_to_basic_ios(basic_ofstream_char *ptr)
10757 return (basic_ios_char*)((char*)ptr+basic_ofstream_char_vbtable[1]);
10760 static inline basic_ofstream_char* basic_ofstream_char_from_basic_ios(basic_ios_char *ptr)
10762 return (basic_ofstream_char*)((char*)ptr-basic_ofstream_char_vbtable[1]);
10765 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@XZ */
10766 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@XZ */
10767 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_ctor, 8)
10768 basic_ofstream_char* __thiscall basic_ofstream_char_ctor(basic_ofstream_char *this, MSVCP_bool virt_init)
10770 basic_ios_char *basic_ios;
10772 TRACE("(%p %d)\n", this, virt_init);
10774 if(virt_init) {
10775 this->base.vbtable = basic_ofstream_char_vbtable;
10776 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
10777 basic_ios_char_ctor(basic_ios);
10778 }else {
10779 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
10782 basic_filebuf_char_ctor(&this->filebuf);
10783 basic_ostream_char_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
10784 basic_ios->base.vtable = &MSVCP_basic_ofstream_char_vtable;
10785 return this;
10788 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PAU_iobuf@@@Z */
10789 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@PEAU_iobuf@@@Z */
10790 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_ctor_file, 12)
10791 basic_ofstream_char* __thiscall basic_ofstream_char_ctor_file(
10792 basic_ofstream_char *this, FILE *file, MSVCP_bool virt_init)
10794 basic_ios_char *basic_ios;
10796 TRACE("(%p %p %d)\n", this, file, virt_init);
10798 if(virt_init) {
10799 this->base.vbtable = basic_ofstream_char_vbtable;
10800 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
10801 basic_ios_char_ctor(basic_ios);
10802 }else {
10803 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
10806 basic_filebuf_char_ctor_file(&this->filebuf, file);
10807 basic_ostream_char_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
10808 basic_ios->base.vtable = &MSVCP_basic_ofstream_char_vtable;
10809 return this;
10812 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PBDHH@Z */
10813 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDHH@Z */
10814 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_ctor_name, 20)
10815 basic_ofstream_char* __thiscall basic_ofstream_char_ctor_name(basic_ofstream_char *this,
10816 const char *name, int mode, int prot, MSVCP_bool virt_init)
10818 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
10820 basic_ofstream_char_ctor(this, virt_init);
10822 if(!basic_filebuf_char_open(&this->filebuf, name, mode|OPENMODE_out, prot)) {
10823 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
10824 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
10826 return this;
10829 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PBGHH@Z */
10830 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@PEBGHH@Z */
10831 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PB_WHH@Z */
10832 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@PEB_WHH@Z */
10833 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_ctor_name_wchar, 20)
10834 basic_ofstream_char* __thiscall basic_ofstream_char_ctor_name_wchar(basic_ofstream_char *this,
10835 const wchar_t *name, int mode, int prot, MSVCP_bool virt_init)
10837 TRACE("(%p %s %d %d %d)\n", this, debugstr_w(name), mode, prot, virt_init);
10839 basic_ofstream_char_ctor(this, virt_init);
10841 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode|OPENMODE_out, prot)) {
10842 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
10843 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
10845 return this;
10848 /* ??1?$basic_ofstream@DU?$char_traits@D@std@@@std@@UAE@XZ */
10849 /* ??1?$basic_ofstream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
10850 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_dtor, 4)
10851 void __thiscall basic_ofstream_char_dtor(basic_ios_char *base)
10853 basic_ofstream_char *this = basic_ofstream_char_from_basic_ios(base);
10855 TRACE("(%p)\n", this);
10857 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(&this->base));
10858 basic_filebuf_char_dtor(&this->filebuf);
10861 /* ??_D?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
10862 /* ??_D?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
10863 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_vbase_dtor, 4)
10864 void __thiscall basic_ofstream_char_vbase_dtor(basic_ofstream_char *this)
10866 TRACE("(%p)\n", this);
10868 basic_ofstream_char_dtor(basic_ofstream_char_to_basic_ios(this));
10869 basic_ios_char_dtor(basic_ostream_char_get_basic_ios(&this->base));
10872 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_vector_dtor, 8)
10873 basic_ofstream_char* __thiscall basic_ofstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
10875 basic_ofstream_char *this = basic_ofstream_char_from_basic_ios(base);
10877 TRACE("(%p %x)\n", this, flags);
10879 if(flags & 2) {
10880 /* we have an array, with the number of elements stored before the first object */
10881 INT_PTR i, *ptr = (INT_PTR *)this-1;
10883 for(i=*ptr-1; i>=0; i--)
10884 basic_ofstream_char_vbase_dtor(this+i);
10885 MSVCRT_operator_delete(ptr);
10886 } else {
10887 basic_ofstream_char_vbase_dtor(this);
10888 if(flags & 1)
10889 MSVCRT_operator_delete(this);
10892 return this;
10895 /* ?close@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
10896 /* ?close@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
10897 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_close, 4)
10898 void __thiscall basic_ofstream_char_close(basic_ofstream_char *this)
10900 TRACE("(%p)\n", this);
10902 if(!basic_filebuf_char_close(&this->filebuf)) {
10903 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
10904 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
10908 /* ?is_open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QBE_NXZ */
10909 /* ?is_open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEBA_NXZ */
10910 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_is_open, 4)
10911 MSVCP_bool __thiscall basic_ofstream_char_is_open(const basic_ofstream_char *this)
10913 TRACE("(%p)\n", this);
10914 return basic_filebuf_char_is_open(&this->filebuf);
10917 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPBDHH@Z */
10918 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDHH@Z */
10919 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_open, 16)
10920 void __thiscall basic_ofstream_char_open(basic_ofstream_char *this,
10921 const char *name, int mode, int prot)
10923 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
10925 if(!basic_filebuf_char_open(&this->filebuf, name, mode|OPENMODE_out, prot)) {
10926 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
10927 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
10931 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPBDI@Z */
10932 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDI@Z */
10933 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_open_old, 12)
10934 void __thiscall basic_ofstream_char_open_old(basic_ofstream_char *this,
10935 const char *name, unsigned int mode)
10937 basic_ofstream_char_open(this, name, mode, _SH_DENYNO);
10940 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPBGHH@Z */
10941 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGHH@Z */
10942 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPB_WHH@Z */
10943 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WHH@Z */
10944 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_open_wchar, 16)
10945 void __thiscall basic_ofstream_char_open_wchar(basic_ofstream_char *this,
10946 const wchar_t *name, int mode, int prot)
10948 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
10950 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode|OPENMODE_out, prot)) {
10951 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
10952 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
10956 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPBGI@Z */
10957 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGI@Z */
10958 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPB_WI@Z */
10959 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WI@Z */
10960 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_open_wchar_old, 12)
10961 void __thiscall basic_ofstream_char_open_wchar_old(basic_ofstream_char *this,
10962 const wchar_t *name, unsigned int mode)
10964 basic_ofstream_char_open_wchar(this, name, mode, _SH_DENYNO);
10967 /* ?rdbuf@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
10968 /* ?rdbuf@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
10969 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_rdbuf, 4)
10970 basic_filebuf_char* __thiscall basic_ofstream_char_rdbuf(const basic_ofstream_char *this)
10972 TRACE("(%p)\n", this);
10973 return (basic_filebuf_char*)&this->filebuf;
10976 static inline basic_ios_wchar* basic_ofstream_wchar_to_basic_ios(basic_ofstream_wchar *ptr)
10978 return (basic_ios_wchar*)((char*)ptr+basic_ofstream_wchar_vbtable[1]);
10981 static inline basic_ofstream_wchar* basic_ofstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
10983 return (basic_ofstream_wchar*)((char*)ptr-basic_ofstream_wchar_vbtable[1]);
10986 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAE@XZ */
10987 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAA@XZ */
10988 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_ctor, 8)
10989 basic_ofstream_wchar* __thiscall basic_ofstream_wchar_ctor(basic_ofstream_wchar *this, MSVCP_bool virt_init)
10991 basic_ios_wchar *basic_ios;
10993 TRACE("(%p %d)\n", this, virt_init);
10995 if(virt_init) {
10996 this->base.vbtable = basic_ofstream_wchar_vbtable;
10997 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
10998 basic_ios_wchar_ctor(basic_ios);
10999 }else {
11000 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11003 basic_filebuf_wchar_ctor(&this->filebuf);
11004 basic_ostream_wchar_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
11005 basic_ios->base.vtable = &MSVCP_basic_ofstream_wchar_vtable;
11006 return this;
11009 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@XZ */
11010 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@XZ */
11011 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_ctor, 8)
11012 basic_ofstream_wchar* __thiscall basic_ofstream_short_ctor(basic_ofstream_wchar *this, MSVCP_bool virt_init)
11014 basic_ofstream_wchar_ctor(this, virt_init);
11015 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ofstream_short_vtable;
11016 return this;
11019 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAE@PAU_iobuf@@@Z */
11020 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAU_iobuf@@@Z */
11021 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_ctor_file, 12)
11022 basic_ofstream_wchar* __thiscall basic_ofstream_wchar_ctor_file(
11023 basic_ofstream_wchar *this, FILE *file, MSVCP_bool virt_init)
11025 basic_ios_wchar *basic_ios;
11027 TRACE("(%p %p %d)\n", this, file, virt_init);
11029 if(virt_init) {
11030 this->base.vbtable = basic_ofstream_wchar_vbtable;
11031 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11032 basic_ios_wchar_ctor(basic_ios);
11033 }else {
11034 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11037 basic_filebuf_wchar_ctor_file(&this->filebuf, file);
11038 basic_ostream_wchar_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
11039 basic_ios->base.vtable = &MSVCP_basic_ofstream_wchar_vtable;
11040 return this;
11043 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@PAU_iobuf@@@Z */
11044 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@PEAU_iobuf@@@Z */
11045 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_ctor_file, 12)
11046 basic_ofstream_wchar* __thiscall basic_ofstream_short_ctor_file(
11047 basic_ofstream_wchar *this, FILE *file, MSVCP_bool virt_init)
11049 basic_ofstream_wchar_ctor_file(this, file, virt_init);
11050 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ofstream_short_vtable;
11051 return this;
11054 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAE@PBDHH@Z */
11055 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEBDHH@Z */
11056 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_ctor_name, 20)
11057 basic_ofstream_wchar* __thiscall basic_ofstream_wchar_ctor_name(basic_ofstream_wchar *this,
11058 const char *name, int mode, int prot, MSVCP_bool virt_init)
11060 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
11062 basic_ofstream_wchar_ctor(this, virt_init);
11064 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode|OPENMODE_out, prot)) {
11065 basic_ios_wchar *basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11066 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
11068 return this;
11071 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@PBDHH@Z */
11072 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@PEBDHH@Z */
11073 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_ctor_name, 20)
11074 basic_ofstream_wchar* __thiscall basic_ofstream_short_ctor_name(basic_ofstream_wchar *this,
11075 const char *name, int mode, int prot, MSVCP_bool virt_init)
11077 basic_ofstream_wchar_ctor_name(this, name, mode, prot, virt_init);
11078 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ofstream_short_vtable;
11079 return this;
11082 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAE@PBGHH@Z */
11083 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEBGHH@Z */
11084 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAE@PB_WHH@Z */
11085 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEB_WHH@Z */
11086 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_ctor_name_wchar, 20)
11087 basic_ofstream_wchar* __thiscall basic_ofstream_wchar_ctor_name_wchar(basic_ofstream_wchar *this,
11088 const wchar_t *name, int mode, int prot, MSVCP_bool virt_init)
11090 TRACE("(%p %s %d %d %d)\n", this, debugstr_w(name), mode, prot, virt_init);
11092 basic_ofstream_wchar_ctor(this, virt_init);
11094 if(!basic_filebuf_wchar_open_wchar(&this->filebuf, name, mode|OPENMODE_out, prot)) {
11095 basic_ios_wchar *basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11096 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
11098 return this;
11101 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@PBGHH@Z */
11102 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@PEBGHH@Z */
11103 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@PB_WHH@Z */
11104 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@PEB_WHH@Z */
11105 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_ctor_name_wchar, 20)
11106 basic_ofstream_wchar* __thiscall basic_ofstream_short_ctor_name_wchar(basic_ofstream_wchar *this,
11107 const wchar_t *name, int mode, int prot, MSVCP_bool virt_init)
11109 basic_ofstream_wchar_ctor_name_wchar(this, name, mode, prot, virt_init);
11110 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ofstream_short_vtable;
11111 return this;
11114 /* ??1?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
11115 /* ??1?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
11116 /* ??1?$basic_ofstream@GU?$char_traits@G@std@@@std@@UAE@XZ */
11117 /* ??1?$basic_ofstream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
11118 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_dtor, 4)
11119 void __thiscall basic_ofstream_wchar_dtor(basic_ios_wchar *base)
11121 basic_ofstream_wchar *this = basic_ofstream_wchar_from_basic_ios(base);
11123 TRACE("(%p)\n", this);
11125 basic_ostream_wchar_dtor(basic_ostream_wchar_to_basic_ios(&this->base));
11126 basic_filebuf_wchar_dtor(&this->filebuf);
11129 /* ??_D?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
11130 /* ??_D?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
11131 /* ??_D?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
11132 /* ??_D?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
11133 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_vbase_dtor, 4)
11134 void __thiscall basic_ofstream_wchar_vbase_dtor(basic_ofstream_wchar *this)
11136 TRACE("(%p)\n", this);
11138 basic_ofstream_wchar_dtor(basic_ofstream_wchar_to_basic_ios(this));
11139 basic_ios_wchar_dtor(basic_ostream_wchar_get_basic_ios(&this->base));
11142 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_vector_dtor, 8)
11143 basic_ofstream_wchar* __thiscall basic_ofstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
11145 basic_ofstream_wchar *this = basic_ofstream_wchar_from_basic_ios(base);
11147 TRACE("(%p %x)\n", this, flags);
11149 if(flags & 2) {
11150 /* we have an array, with the number of elements stored before the first object */
11151 INT_PTR i, *ptr = (INT_PTR *)this-1;
11153 for(i=*ptr-1; i>=0; i--)
11154 basic_ofstream_wchar_vbase_dtor(this+i);
11155 MSVCRT_operator_delete(ptr);
11156 } else {
11157 basic_ofstream_wchar_vbase_dtor(this);
11158 if(flags & 1)
11159 MSVCRT_operator_delete(this);
11162 return this;
11165 /* ?close@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
11166 /* ?close@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
11167 /* ?close@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
11168 /* ?close@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
11169 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_close, 4)
11170 void __thiscall basic_ofstream_wchar_close(basic_ofstream_wchar *this)
11172 TRACE("(%p)\n", this);
11174 if(!basic_filebuf_wchar_close(&this->filebuf)) {
11175 basic_ios_wchar *basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11176 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
11180 /* ?is_open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QBE_NXZ */
11181 /* ?is_open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEBA_NXZ */
11182 /* ?is_open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QBE_NXZ */
11183 /* ?is_open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEBA_NXZ */
11184 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_is_open, 4)
11185 MSVCP_bool __thiscall basic_ofstream_wchar_is_open(const basic_ofstream_wchar *this)
11187 TRACE("(%p)\n", this);
11188 return basic_filebuf_wchar_is_open(&this->filebuf);
11191 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDHH@Z */
11192 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDHH@Z */
11193 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPBDHH@Z */
11194 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDHH@Z */
11195 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_open, 16)
11196 void __thiscall basic_ofstream_wchar_open(basic_ofstream_wchar *this,
11197 const char *name, int mode, int prot)
11199 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
11201 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode|OPENMODE_out, prot)) {
11202 basic_ios_wchar *basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11203 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
11207 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDI@Z */
11208 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDI@Z */
11209 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPBDI@Z */
11210 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDI@Z */
11211 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_open_old, 12)
11212 void __thiscall basic_ofstream_wchar_open_old(basic_ofstream_wchar *this,
11213 const char *name, unsigned int mode)
11215 basic_ofstream_wchar_open(this, name, mode, _SH_DENYNO);
11218 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXPBGHH@Z */
11219 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBGHH@Z */
11220 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXPB_WHH@Z */
11221 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEB_WHH@Z */
11222 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPBGHH@Z */
11223 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEBGHH@Z */
11224 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPB_WHH@Z */
11225 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEB_WHH@Z */
11226 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_open_wchar, 16)
11227 void __thiscall basic_ofstream_wchar_open_wchar(basic_ofstream_wchar *this,
11228 const wchar_t *name, int mode, int prot)
11230 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
11232 if(!basic_filebuf_wchar_open_wchar(&this->filebuf, name, mode|OPENMODE_out, prot)) {
11233 basic_ios_wchar *basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11234 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
11238 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXPBGI@Z */
11239 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBGI@Z */
11240 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXPB_WI@Z */
11241 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEB_WI@Z */
11242 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPBGI@Z */
11243 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEBGI@Z */
11244 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPB_WI@Z */
11245 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEB_WI@Z */
11246 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_open_wchar_old, 12)
11247 void __thiscall basic_ofstream_wchar_open_wchar_old(basic_ofstream_wchar *this,
11248 const wchar_t *name, unsigned int mode)
11250 basic_ofstream_wchar_open_wchar(this, name, mode, _SH_DENYNO);
11253 /* ?rdbuf@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
11254 /* ?rdbuf@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
11255 /* ?rdbuf@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
11256 /* ?rdbuf@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
11257 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_rdbuf, 4)
11258 basic_filebuf_wchar* __thiscall basic_ofstream_wchar_rdbuf(const basic_ofstream_wchar *this)
11260 TRACE("(%p)\n", this);
11261 return (basic_filebuf_wchar*)&this->filebuf;
11264 static inline basic_ios_char* basic_ifstream_char_to_basic_ios(basic_ifstream_char *ptr)
11266 return (basic_ios_char*)((char*)ptr+basic_ifstream_char_vbtable[1]);
11269 static inline basic_ifstream_char* basic_ifstream_char_from_basic_ios(basic_ios_char *ptr)
11271 return (basic_ifstream_char*)((char*)ptr-basic_ifstream_char_vbtable[1]);
11274 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@XZ */
11275 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@XZ */
11276 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor, 8)
11277 basic_ifstream_char* __thiscall basic_ifstream_char_ctor(basic_ifstream_char *this, MSVCP_bool virt_init)
11279 basic_ios_char *basic_ios;
11281 TRACE("(%p %d)\n", this, virt_init);
11283 if(virt_init) {
11284 this->base.vbtable = basic_ifstream_char_vbtable;
11285 basic_ios = basic_istream_char_get_basic_ios(&this->base);
11286 basic_ios_char_ctor(basic_ios);
11287 }else {
11288 basic_ios = basic_istream_char_get_basic_ios(&this->base);
11291 basic_filebuf_char_ctor(&this->filebuf);
11292 basic_istream_char_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
11293 basic_ios->base.vtable = &MSVCP_basic_ifstream_char_vtable;
11294 return this;
11297 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@PAU_iobuf@@@Z */
11298 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@PEAU_iobuf@@@Z */
11299 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor_file, 12)
11300 basic_ifstream_char* __thiscall basic_ifstream_char_ctor_file(
11301 basic_ifstream_char *this, FILE *file, MSVCP_bool virt_init)
11303 basic_ios_char *basic_ios;
11305 TRACE("(%p %p %d)\n", this, file, virt_init);
11307 if(virt_init) {
11308 this->base.vbtable = basic_ifstream_char_vbtable;
11309 basic_ios = basic_istream_char_get_basic_ios(&this->base);
11310 basic_ios_char_ctor(basic_ios);
11311 }else {
11312 basic_ios = basic_istream_char_get_basic_ios(&this->base);
11315 basic_filebuf_char_ctor_file(&this->filebuf, file);
11316 basic_istream_char_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
11317 basic_ios->base.vtable = &MSVCP_basic_ifstream_char_vtable;
11318 return this;
11321 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@PBDHH@Z */
11322 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDHH@Z */
11323 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor_name, 20)
11324 basic_ifstream_char* __thiscall basic_ifstream_char_ctor_name(basic_ifstream_char *this,
11325 const char *name, int mode, int prot, MSVCP_bool virt_init)
11327 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
11329 basic_ifstream_char_ctor(this, virt_init);
11331 if(!basic_filebuf_char_open(&this->filebuf, name, mode|OPENMODE_in, prot)) {
11332 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
11333 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
11335 return this;
11338 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@PBDH@Z */
11339 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDH@Z */
11340 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor_name_old, 16)
11341 basic_ifstream_char* __thiscall basic_ifstream_char_ctor_name_old(basic_ifstream_char *this,
11342 const char *name, int mode, MSVCP_bool virt_init)
11344 return basic_ifstream_char_ctor_name(this, name, mode, _SH_DENYNO, virt_init);
11347 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@PBGHH@Z */
11348 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@PEBGHH@Z */
11349 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@PB_WHH@Z */
11350 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@PEB_WHH@Z */
11351 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor_name_wchar, 20)
11352 basic_ifstream_char* __thiscall basic_ifstream_char_ctor_name_wchar(basic_ifstream_char *this,
11353 const wchar_t *name, int mode, int prot, MSVCP_bool virt_init)
11355 TRACE("(%p %s %d %d %d)\n", this, debugstr_w(name), mode, prot, virt_init);
11357 basic_ifstream_char_ctor(this, virt_init);
11359 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode|OPENMODE_in, prot)) {
11360 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
11361 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
11363 return this;
11366 /* ??1?$basic_ifstream@DU?$char_traits@D@std@@@std@@UAE@XZ */
11367 /* ??1?$basic_ifstream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
11368 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_dtor, 4)
11369 void __thiscall basic_ifstream_char_dtor(basic_ios_char *base)
11371 basic_ifstream_char *this = basic_ifstream_char_from_basic_ios(base);
11373 TRACE("(%p)\n", this);
11375 basic_istream_char_dtor(basic_istream_char_to_basic_ios(&this->base));
11376 basic_filebuf_char_dtor(&this->filebuf);
11379 /* ??_D?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
11380 /* ??_D?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
11381 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_vbase_dtor, 4)
11382 void __thiscall basic_ifstream_char_vbase_dtor(basic_ifstream_char *this)
11384 TRACE("(%p)\n", this);
11386 basic_ifstream_char_dtor(basic_ifstream_char_to_basic_ios(this));
11387 basic_ios_char_dtor(basic_istream_char_get_basic_ios(&this->base));
11390 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_vector_dtor, 8)
11391 basic_ifstream_char* __thiscall basic_ifstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
11393 basic_ifstream_char *this = basic_ifstream_char_from_basic_ios(base);
11395 TRACE("(%p %x)\n", this, flags);
11397 if(flags & 2) {
11398 /* we have an array, with the number of elements stored before the first object */
11399 INT_PTR i, *ptr = (INT_PTR *)this-1;
11401 for(i=*ptr-1; i>=0; i--)
11402 basic_ifstream_char_vbase_dtor(this+i);
11403 MSVCRT_operator_delete(ptr);
11404 } else {
11405 basic_ifstream_char_vbase_dtor(this);
11406 if(flags & 1)
11407 MSVCRT_operator_delete(this);
11410 return this;
11413 /* ?close@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
11414 /* ?close@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
11415 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_close, 4)
11416 void __thiscall basic_ifstream_char_close(basic_ifstream_char *this)
11418 TRACE("(%p)\n", this);
11420 if(!basic_filebuf_char_close(&this->filebuf)) {
11421 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
11422 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
11426 /* ?is_open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QBE_NXZ */
11427 /* ?is_open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEBA_NXZ */
11428 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_is_open, 4)
11429 MSVCP_bool __thiscall basic_ifstream_char_is_open(const basic_ifstream_char *this)
11431 TRACE("(%p)\n", this);
11432 return basic_filebuf_char_is_open(&this->filebuf);
11435 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPBDHH@Z */
11436 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDHH@Z */
11437 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_open, 16)
11438 void __thiscall basic_ifstream_char_open(basic_ifstream_char *this,
11439 const char *name, int mode, int prot)
11441 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
11443 if(!basic_filebuf_char_open(&this->filebuf, name, mode|OPENMODE_in, prot)) {
11444 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
11445 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
11449 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPBDI@Z */
11450 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDI@Z */
11451 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_open_old, 12)
11452 void __thiscall basic_ifstream_char_open_old(basic_ifstream_char *this,
11453 const char *name, unsigned int mode)
11455 basic_ifstream_char_open(this, name, mode, _SH_DENYNO);
11458 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPBGHH@Z */
11459 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGHH@Z */
11460 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPB_WHH@Z */
11461 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WHH@Z */
11462 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_open_wchar, 16)
11463 void __thiscall basic_ifstream_char_open_wchar(basic_ifstream_char *this,
11464 const wchar_t *name, int mode, int prot)
11466 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
11468 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode|OPENMODE_in, prot)) {
11469 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
11470 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
11474 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPBGI@Z */
11475 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGI@Z */
11476 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPB_WI@Z */
11477 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WI@Z */
11478 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_open_wchar_old, 12)
11479 void __thiscall basic_ifstream_char_open_wchar_old(basic_ifstream_char *this,
11480 const wchar_t *name, unsigned int mode)
11482 basic_ifstream_char_open_wchar(this, name, mode, _SH_DENYNO);
11485 /* ?rdbuf@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
11486 /* ?rdbuf@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
11487 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_rdbuf, 4)
11488 basic_filebuf_char* __thiscall basic_ifstream_char_rdbuf(const basic_ifstream_char *this)
11490 TRACE("(%p)\n", this);
11491 return (basic_filebuf_char*)&this->filebuf;
11494 static inline basic_ios_wchar* basic_ifstream_wchar_to_basic_ios(basic_ifstream_wchar *ptr)
11496 return (basic_ios_wchar*)((char*)ptr+basic_ifstream_wchar_vbtable[1]);
11499 static inline basic_ifstream_wchar* basic_ifstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
11501 return (basic_ifstream_wchar*)((char*)ptr-basic_ifstream_wchar_vbtable[1]);
11504 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAE@XZ */
11505 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAA@XZ */
11506 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_ctor, 8)
11507 basic_ifstream_wchar* __thiscall basic_ifstream_wchar_ctor(basic_ifstream_wchar *this, MSVCP_bool virt_init)
11509 basic_ios_wchar *basic_ios;
11511 TRACE("(%p %d)\n", this, virt_init);
11513 if(virt_init) {
11514 this->base.vbtable = basic_ifstream_wchar_vbtable;
11515 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
11516 basic_ios_wchar_ctor(basic_ios);
11517 }else {
11518 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
11521 basic_filebuf_wchar_ctor(&this->filebuf);
11522 basic_istream_wchar_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
11523 basic_ios->base.vtable = &MSVCP_basic_ifstream_wchar_vtable;
11524 return this;
11527 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@XZ */
11528 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@XZ */
11529 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_ctor, 8)
11530 basic_ifstream_wchar* __thiscall basic_ifstream_short_ctor(basic_ifstream_wchar *this, MSVCP_bool virt_init)
11532 basic_ifstream_wchar_ctor(this, virt_init);
11533 basic_istream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ifstream_short_vtable;
11534 return this;
11537 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAE@PAU_iobuf@@@Z */
11538 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAU_iobuf@@@Z */
11539 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_ctor_file, 12)
11540 basic_ifstream_wchar* __thiscall basic_ifstream_wchar_ctor_file(
11541 basic_ifstream_wchar *this, FILE *file, MSVCP_bool virt_init)
11543 basic_ios_wchar *basic_ios;
11545 TRACE("(%p %p %d)\n", this, file, virt_init);
11547 if(virt_init) {
11548 this->base.vbtable = basic_ifstream_wchar_vbtable;
11549 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
11550 basic_ios_wchar_ctor(basic_ios);
11551 }else {
11552 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
11555 basic_filebuf_wchar_ctor_file(&this->filebuf, file);
11556 basic_istream_wchar_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
11557 basic_ios->base.vtable = &MSVCP_basic_ifstream_wchar_vtable;
11558 return this;
11561 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@PAU_iobuf@@@Z */
11562 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@PEAU_iobuf@@@Z */
11563 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_ctor_file, 12)
11564 basic_ifstream_wchar* __thiscall basic_ifstream_short_ctor_file(
11565 basic_ifstream_wchar *this, FILE *file, MSVCP_bool virt_init)
11567 basic_ifstream_wchar_ctor_file(this, file, virt_init);
11568 basic_istream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ifstream_short_vtable;
11569 return this;
11572 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAE@PBDHH@Z */
11573 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEBDHH@Z */
11574 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_ctor_name, 20)
11575 basic_ifstream_wchar* __thiscall basic_ifstream_wchar_ctor_name(basic_ifstream_wchar *this,
11576 const char *name, int mode, int prot, MSVCP_bool virt_init)
11578 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
11580 basic_ifstream_wchar_ctor(this, virt_init);
11582 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode|OPENMODE_in, prot)) {
11583 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
11584 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
11586 return this;
11589 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@PBDHH@Z */
11590 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@PEBDHH@Z */
11591 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_ctor_name, 20)
11592 basic_ifstream_wchar* __thiscall basic_ifstream_short_ctor_name(basic_ifstream_wchar *this,
11593 const char *name, int mode, int prot, MSVCP_bool virt_init)
11595 basic_ifstream_wchar_ctor_name(this, name, mode, prot, virt_init);
11596 basic_istream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ifstream_short_vtable;
11597 return this;
11600 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAE@PBDH@Z */
11601 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEBDH@Z */
11602 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_ctor_name_old, 16)
11603 basic_ifstream_wchar* __thiscall basic_ifstream_wchar_ctor_name_old(basic_ifstream_wchar *this,
11604 const char *name, int mode, MSVCP_bool virt_init)
11606 return basic_ifstream_wchar_ctor_name(this, name, mode, _SH_DENYNO, virt_init);
11609 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@PBDH@Z */
11610 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@PEBDH@Z */
11611 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_ctor_name_old, 16)
11612 basic_ifstream_wchar* __thiscall basic_ifstream_short_ctor_name_old(basic_ifstream_wchar *this,
11613 const char *name, int mode, MSVCP_bool virt_init)
11615 return basic_ifstream_short_ctor_name(this, name, mode, _SH_DENYNO, virt_init);
11618 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAE@PBGHH@Z */
11619 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEBGHH@Z */
11620 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAE@PB_WHH@Z */
11621 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEB_WHH@Z */
11622 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_ctor_name_wchar, 20)
11623 basic_ifstream_wchar* __thiscall basic_ifstream_wchar_ctor_name_wchar(basic_ifstream_wchar *this,
11624 const wchar_t *name, int mode, int prot, MSVCP_bool virt_init)
11626 TRACE("(%p %s %d %d %d)\n", this, debugstr_w(name), mode, prot, virt_init);
11628 basic_ifstream_wchar_ctor(this, virt_init);
11630 if(!basic_filebuf_wchar_open_wchar(&this->filebuf, name, mode|OPENMODE_in, prot)) {
11631 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
11632 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
11634 return this;
11637 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@PBGHH@Z */
11638 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@PEBGHH@Z */
11639 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@PB_WHH@Z */
11640 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@PEB_WHH@Z */
11641 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_ctor_name_wchar, 20)
11642 basic_ifstream_wchar* __thiscall basic_ifstream_short_ctor_name_wchar(basic_ifstream_wchar *this,
11643 const wchar_t *name, int mode, int prot, MSVCP_bool virt_init)
11645 basic_ifstream_wchar_ctor_name_wchar(this, name, mode, prot, virt_init);
11646 basic_istream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ifstream_short_vtable;
11647 return this;
11650 /* ??1?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
11651 /* ??1?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
11652 /* ??1?$basic_ifstream@GU?$char_traits@G@std@@@std@@UAE@XZ */
11653 /* ??1?$basic_ifstream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
11654 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_dtor, 4)
11655 void __thiscall basic_ifstream_wchar_dtor(basic_ios_wchar *base)
11657 basic_ifstream_wchar *this = basic_ifstream_wchar_from_basic_ios(base);
11659 TRACE("(%p)\n", this);
11661 basic_istream_wchar_dtor(basic_istream_wchar_to_basic_ios(&this->base));
11662 basic_filebuf_wchar_dtor(&this->filebuf);
11665 /* ??_D?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
11666 /* ??_D?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
11667 /* ??_D?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
11668 /* ??_D?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
11669 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_vbase_dtor, 4)
11670 void __thiscall basic_ifstream_wchar_vbase_dtor(basic_ifstream_wchar *this)
11672 TRACE("(%p)\n", this);
11674 basic_ifstream_wchar_dtor(basic_ifstream_wchar_to_basic_ios(this));
11675 basic_ios_wchar_dtor(basic_istream_wchar_get_basic_ios(&this->base));
11678 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_vector_dtor, 8)
11679 basic_ifstream_wchar* __thiscall basic_ifstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
11681 basic_ifstream_wchar *this = basic_ifstream_wchar_from_basic_ios(base);
11683 TRACE("(%p %x)\n", this, flags);
11685 if(flags & 2) {
11686 /* we have an array, with the number of elements stored before the first object */
11687 INT_PTR i, *ptr = (INT_PTR *)this-1;
11689 for(i=*ptr-1; i>=0; i--)
11690 basic_ifstream_wchar_vbase_dtor(this+i);
11691 MSVCRT_operator_delete(ptr);
11692 } else {
11693 basic_ifstream_wchar_vbase_dtor(this);
11694 if(flags & 1)
11695 MSVCRT_operator_delete(this);
11698 return this;
11701 /* ?close@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
11702 /* ?close@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
11703 /* ?close@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
11704 /* ?close@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
11705 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_close, 4)
11706 void __thiscall basic_ifstream_wchar_close(basic_ifstream_wchar *this)
11708 TRACE("(%p)\n", this);
11710 if(!basic_filebuf_wchar_close(&this->filebuf)) {
11711 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
11712 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
11716 /* ?is_open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QBE_NXZ */
11717 /* ?is_open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEBA_NXZ */
11718 /* ?is_open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QBE_NXZ */
11719 /* ?is_open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEBA_NXZ */
11720 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_is_open, 4)
11721 MSVCP_bool __thiscall basic_ifstream_wchar_is_open(const basic_ifstream_wchar *this)
11723 TRACE("(%p)\n", this);
11724 return basic_filebuf_wchar_is_open(&this->filebuf);
11727 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDHH@Z */
11728 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDHH@Z */
11729 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPBDHH@Z */
11730 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDHH@Z */
11731 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_open, 16)
11732 void __thiscall basic_ifstream_wchar_open(basic_ifstream_wchar *this,
11733 const char *name, int mode, int prot)
11735 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
11737 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode|OPENMODE_in, prot)) {
11738 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
11739 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
11743 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDI@Z */
11744 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDI@Z */
11745 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPBDI@Z */
11746 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDI@Z */
11747 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_open_old, 12)
11748 void __thiscall basic_ifstream_wchar_open_old(basic_ifstream_wchar *this,
11749 const char *name, unsigned int mode)
11751 basic_ifstream_wchar_open(this, name, mode, _SH_DENYNO);
11754 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXPBGHH@Z */
11755 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBGHH@Z */
11756 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXPB_WHH@Z */
11757 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEB_WHH@Z */
11758 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPBGHH@Z */
11759 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEBGHH@Z */
11760 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPB_WHH@Z */
11761 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEB_WHH@Z */
11762 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_open_wchar, 16)
11763 void __thiscall basic_ifstream_wchar_open_wchar(basic_ifstream_wchar *this,
11764 const wchar_t *name, int mode, int prot)
11766 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
11768 if(!basic_filebuf_wchar_open_wchar(&this->filebuf, name, mode|OPENMODE_in, prot)) {
11769 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
11770 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
11774 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXPBGI@Z */
11775 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBGI@Z */
11776 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXPB_WI@Z */
11777 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEB_WI@Z */
11778 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPBGI@Z */
11779 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEBGI@Z */
11780 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPB_WI@Z */
11781 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEB_WI@Z */
11782 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_open_wchar_old, 12)
11783 void __thiscall basic_ifstream_wchar_open_wchar_old(basic_ifstream_wchar *this,
11784 const wchar_t *name, unsigned int mode)
11786 basic_ifstream_wchar_open_wchar(this, name, mode, _SH_DENYNO);
11789 /* ?rdbuf@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
11790 /* ?rdbuf@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
11791 /* ?rdbuf@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
11792 /* ?rdbuf@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
11793 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_rdbuf, 4)
11794 basic_filebuf_wchar* __thiscall basic_ifstream_wchar_rdbuf(const basic_ifstream_wchar *this)
11796 TRACE("(%p)\n", this);
11797 return (basic_filebuf_wchar*)&this->filebuf;
11800 static inline basic_ios_char* basic_fstream_char_to_basic_ios(basic_fstream_char *ptr)
11802 return (basic_ios_char*)((char*)ptr+basic_fstream_char_vbtable1[1]);
11805 static inline basic_fstream_char* basic_fstream_char_from_basic_ios(basic_ios_char *ptr)
11807 return (basic_fstream_char*)((char*)ptr-basic_fstream_char_vbtable1[1]);
11810 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@XZ */
11811 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@XZ */
11812 DEFINE_THISCALL_WRAPPER(basic_fstream_char_ctor, 8)
11813 basic_fstream_char* __thiscall basic_fstream_char_ctor(basic_fstream_char *this, MSVCP_bool virt_init)
11815 basic_ios_char *basic_ios;
11817 TRACE("(%p %d)\n", this, virt_init);
11819 if(virt_init) {
11820 this->base.base1.vbtable = basic_fstream_char_vbtable1;
11821 this->base.base2.vbtable = basic_fstream_char_vbtable2;
11822 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
11823 basic_ios_char_ctor(basic_ios);
11824 }else {
11825 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
11828 basic_filebuf_char_ctor(&this->filebuf);
11829 basic_iostream_char_ctor(&this->base, &this->filebuf.base, FALSE);
11830 basic_ios->base.vtable = &MSVCP_basic_fstream_char_vtable;
11831 return this;
11834 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@PAU_iobuf@@@Z */
11835 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@PEAU_iobuf@@@Z */
11836 DEFINE_THISCALL_WRAPPER(basic_fstream_char_ctor_file, 12)
11837 basic_fstream_char* __thiscall basic_fstream_char_ctor_file(basic_fstream_char *this,
11838 FILE *file, MSVCP_bool virt_init)
11840 basic_ios_char *basic_ios;
11842 TRACE("(%p %p %d)\n", this, file, virt_init);
11844 if(virt_init) {
11845 this->base.base1.vbtable = basic_fstream_char_vbtable1;
11846 this->base.base2.vbtable = basic_fstream_char_vbtable2;
11847 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
11848 basic_ios_char_ctor(basic_ios);
11849 }else {
11850 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
11853 basic_filebuf_char_ctor_file(&this->filebuf, file);
11854 basic_iostream_char_ctor(&this->base, &this->filebuf.base, FALSE);
11855 basic_ios->base.vtable = &MSVCP_basic_fstream_char_vtable;
11856 return this;
11859 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@PBDHH@Z */
11860 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDHH@Z */
11861 DEFINE_THISCALL_WRAPPER(basic_fstream_char_ctor_name, 20)
11862 basic_fstream_char* __thiscall basic_fstream_char_ctor_name(basic_fstream_char *this,
11863 const char *name, int mode, int prot, MSVCP_bool virt_init)
11865 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
11867 basic_fstream_char_ctor(this, virt_init);
11869 if(!basic_filebuf_char_open(&this->filebuf, name, mode, prot)) {
11870 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
11871 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
11873 return this;
11876 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@PBDH@Z */
11877 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDH@Z */
11878 DEFINE_THISCALL_WRAPPER(basic_fstream_char_ctor_name_noprot, 16)
11879 basic_fstream_char* __thiscall basic_fstream_char_ctor_name_noprot(basic_fstream_char *this,
11880 const char *name, int mode, MSVCP_bool virt_init)
11882 return basic_fstream_char_ctor_name(this, name, mode, _SH_DENYNO, virt_init);
11885 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@PBGHH@Z */
11886 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@PEBGHH@Z */
11887 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@PB_WHH@Z */
11888 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@PEB_WHH@Z */
11889 DEFINE_THISCALL_WRAPPER(basic_fstream_char_ctor_name_wchar, 20)
11890 basic_fstream_char* __thiscall basic_fstream_char_ctor_name_wchar(basic_fstream_char *this,
11891 const wchar_t *name, int mode, int prot, MSVCP_bool virt_init)
11893 TRACE("(%p %s %d %d %d)\n", this, debugstr_w(name), mode, prot, virt_init);
11895 basic_fstream_char_ctor(this, virt_init);
11897 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode, prot)) {
11898 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
11899 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
11901 return this;
11904 /* ??1?$basic_fstream@DU?$char_traits@D@std@@@std@@UAE@XZ */
11905 /* ??1?$basic_fstream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
11906 DEFINE_THISCALL_WRAPPER(basic_fstream_char_dtor, 4)
11907 void __thiscall basic_fstream_char_dtor(basic_ios_char *base)
11909 basic_fstream_char *this = basic_fstream_char_from_basic_ios(base);
11911 TRACE("(%p)\n", this);
11913 basic_iostream_char_dtor(basic_iostream_char_to_basic_ios(&this->base));
11914 basic_filebuf_char_dtor(&this->filebuf);
11917 /* ??_D?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
11918 /* ??_D?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
11919 DEFINE_THISCALL_WRAPPER(basic_fstream_char_vbase_dtor, 4)
11920 void __thiscall basic_fstream_char_vbase_dtor(basic_fstream_char *this)
11922 TRACE("(%p)\n", this);
11924 basic_fstream_char_dtor(basic_fstream_char_to_basic_ios(this));
11925 basic_ios_char_dtor(basic_istream_char_get_basic_ios(&this->base.base1));
11928 DEFINE_THISCALL_WRAPPER(basic_fstream_char_vector_dtor, 8)
11929 basic_fstream_char* __thiscall basic_fstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
11931 basic_fstream_char *this = basic_fstream_char_from_basic_ios(base);
11933 TRACE("(%p %x)\n", this, flags);
11935 if(flags & 2) {
11936 /* we have an array, with the number of elements stored before the first object */
11937 INT_PTR i, *ptr = (INT_PTR *)this-1;
11939 for(i=*ptr-1; i>=0; i--)
11940 basic_fstream_char_vbase_dtor(this+i);
11941 MSVCRT_operator_delete(ptr);
11942 } else {
11943 basic_fstream_char_vbase_dtor(this);
11944 if(flags & 1)
11945 MSVCRT_operator_delete(this);
11948 return this;
11951 /* ?close@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
11952 /* ?close@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
11953 DEFINE_THISCALL_WRAPPER(basic_fstream_char_close, 4)
11954 void __thiscall basic_fstream_char_close(basic_fstream_char *this)
11956 TRACE("(%p)\n", this);
11958 if(!basic_filebuf_char_close(&this->filebuf)) {
11959 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
11960 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
11964 /* ?is_open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QBE_NXZ */
11965 /* ?is_open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEBA_NXZ */
11966 DEFINE_THISCALL_WRAPPER(basic_fstream_char_is_open, 4)
11967 MSVCP_bool __thiscall basic_fstream_char_is_open(const basic_fstream_char *this)
11969 TRACE("(%p)\n", this);
11970 return basic_filebuf_char_is_open(&this->filebuf);
11973 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPBDHH@Z */
11974 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDHH@Z */
11975 DEFINE_THISCALL_WRAPPER(basic_fstream_char_open, 16)
11976 void __thiscall basic_fstream_char_open(basic_fstream_char *this,
11977 const char *name, int mode, int prot)
11979 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
11981 if(!basic_filebuf_char_open(&this->filebuf, name, mode, prot)) {
11982 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
11983 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
11987 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPBDI@Z */
11988 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDI@Z */
11989 DEFINE_THISCALL_WRAPPER(basic_fstream_char_open_old, 12)
11990 void __thiscall basic_fstream_char_open_old(basic_fstream_char *this,
11991 const char *name, unsigned int mode)
11993 basic_fstream_char_open(this, name, mode, _SH_DENYNO);
11996 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPBGHH@Z */
11997 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGHH@Z */
11998 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPB_WHH@Z */
11999 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WHH@Z */
12000 DEFINE_THISCALL_WRAPPER(basic_fstream_char_open_wchar, 16)
12001 void __thiscall basic_fstream_char_open_wchar(basic_fstream_char *this,
12002 const wchar_t *name, int mode, int prot)
12004 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
12006 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode, prot)) {
12007 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
12008 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
12012 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPBGI@Z */
12013 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGI@Z */
12014 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPB_WI@Z */
12015 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WI@Z */
12016 DEFINE_THISCALL_WRAPPER(basic_fstream_char_open_wchar_old, 12)
12017 void __thiscall basic_fstream_char_open_wchar_old(basic_fstream_char *this,
12018 const wchar_t *name, unsigned int mode)
12020 basic_fstream_char_open_wchar(this, name, mode, _SH_DENYNO);
12023 /* ?rdbuf@?$basic_fstream@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
12024 /* ?rdbuf@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
12025 DEFINE_THISCALL_WRAPPER(basic_fstream_char_rdbuf, 4)
12026 basic_filebuf_char* __thiscall basic_fstream_char_rdbuf(const basic_fstream_char *this)
12028 TRACE("(%p)\n", this);
12029 return (basic_filebuf_char*)&this->filebuf;
12032 static inline basic_ios_wchar* basic_fstream_wchar_to_basic_ios(basic_fstream_wchar *ptr)
12034 return (basic_ios_wchar*)((char*)ptr+basic_fstream_wchar_vbtable1[1]);
12037 static inline basic_fstream_wchar* basic_fstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
12039 return (basic_fstream_wchar*)((char*)ptr-basic_fstream_wchar_vbtable1[1]);
12042 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAE@XZ */
12043 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAA@XZ */
12044 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_ctor, 8)
12045 basic_fstream_wchar* __thiscall basic_fstream_wchar_ctor(basic_fstream_wchar *this, MSVCP_bool virt_init)
12047 basic_ios_wchar *basic_ios;
12049 TRACE("(%p %d)\n", this, virt_init);
12051 if(virt_init) {
12052 this->base.base1.vbtable = basic_fstream_wchar_vbtable1;
12053 this->base.base2.vbtable = basic_fstream_wchar_vbtable2;
12054 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12055 basic_ios_wchar_ctor(basic_ios);
12056 }else {
12057 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12060 basic_filebuf_wchar_ctor(&this->filebuf);
12061 basic_iostream_wchar_ctor(&this->base, &this->filebuf.base, FALSE);
12062 basic_ios->base.vtable = &MSVCP_basic_fstream_wchar_vtable;
12063 return this;
12066 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@XZ */
12067 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@XZ */
12068 DEFINE_THISCALL_WRAPPER(basic_fstream_short_ctor, 8)
12069 basic_fstream_wchar* __thiscall basic_fstream_short_ctor(basic_fstream_wchar *this, MSVCP_bool virt_init)
12071 basic_fstream_wchar_ctor(this, virt_init);
12072 basic_istream_wchar_get_basic_ios(&this->base.base1)->base.vtable = &MSVCP_basic_fstream_short_vtable;
12073 return this;
12076 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAE@PAU_iobuf@@@Z */
12077 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAU_iobuf@@@Z */
12078 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_ctor_file, 12)
12079 basic_fstream_wchar* __thiscall basic_fstream_wchar_ctor_file(basic_fstream_wchar *this,
12080 FILE *file, MSVCP_bool virt_init)
12082 basic_ios_wchar *basic_ios;
12084 TRACE("(%p %p %d)\n", this, file, virt_init);
12086 if(virt_init) {
12087 this->base.base1.vbtable = basic_fstream_wchar_vbtable1;
12088 this->base.base2.vbtable = basic_fstream_wchar_vbtable2;
12089 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12090 basic_ios_wchar_ctor(basic_ios);
12091 }else {
12092 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12095 basic_filebuf_wchar_ctor_file(&this->filebuf, file);
12096 basic_iostream_wchar_ctor(&this->base, &this->filebuf.base, FALSE);
12097 basic_ios->base.vtable = &MSVCP_basic_fstream_wchar_vtable;
12098 return this;
12101 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@PAU_iobuf@@@Z */
12102 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@PEAU_iobuf@@@Z */
12103 DEFINE_THISCALL_WRAPPER(basic_fstream_short_ctor_file, 12)
12104 basic_fstream_wchar* __thiscall basic_fstream_short_ctor_file(basic_fstream_wchar *this,
12105 FILE *file, MSVCP_bool virt_init)
12107 basic_fstream_wchar_ctor_file(this, file, virt_init);
12108 basic_istream_wchar_get_basic_ios(&this->base.base1)->base.vtable = &MSVCP_basic_fstream_short_vtable;
12109 return this;
12112 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAE@PB_WHH@Z */
12113 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEB_WHH@Z */
12114 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_ctor_name, 20)
12115 basic_fstream_wchar* __thiscall basic_fstream_wchar_ctor_name(basic_fstream_wchar *this,
12116 const char *name, int mode, int prot, MSVCP_bool virt_init)
12118 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
12120 basic_fstream_wchar_ctor(this, virt_init);
12122 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode, prot)) {
12123 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12124 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
12126 return this;
12129 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@PBGHH@Z */
12130 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@PEBGHH@Z */
12131 DEFINE_THISCALL_WRAPPER(basic_fstream_short_ctor_name, 20)
12132 basic_fstream_wchar* __thiscall basic_fstream_short_ctor_name(basic_fstream_wchar *this,
12133 const char *name, int mode, int prot, MSVCP_bool virt_init)
12135 basic_fstream_wchar_ctor_name(this, name, mode, prot, virt_init);
12136 basic_istream_wchar_get_basic_ios(&this->base.base1)->base.vtable = &MSVCP_basic_fstream_short_vtable;
12137 return this;
12140 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAE@PBDH@Z */
12141 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_ctor_name_noprot, 16)
12142 basic_fstream_wchar* __thiscall basic_fstream_wchar_ctor_name_noprot(basic_fstream_wchar *this,
12143 const char *name, int mode, MSVCP_bool virt_init)
12145 return basic_fstream_wchar_ctor_name(this, name, mode, _SH_DENYNO, virt_init);
12148 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@PBDH@Z */
12149 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@PEBDH@Z */
12150 DEFINE_THISCALL_WRAPPER(basic_fstream_short_ctor_name_noprot, 16)
12151 basic_fstream_wchar* __thiscall basic_fstream_short_ctor_name_noprot(basic_fstream_wchar *this,
12152 const char *name, int mode, MSVCP_bool virt_init)
12154 return basic_fstream_short_ctor_name(this, name, mode, _SH_DENYNO, virt_init);
12157 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAE@PBGHH@Z */
12158 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEBGHH@Z */
12159 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAE@PB_WHH@Z */
12160 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEB_WHH@Z */
12161 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_ctor_name_wchar, 20)
12162 basic_fstream_wchar* __thiscall basic_fstream_wchar_ctor_name_wchar(basic_fstream_wchar *this,
12163 const wchar_t *name, int mode, int prot, MSVCP_bool virt_init)
12165 TRACE("(%p %s %d %d %d)\n", this, debugstr_w(name), mode, prot, virt_init);
12167 basic_fstream_wchar_ctor(this, virt_init);
12169 if(!basic_filebuf_wchar_open_wchar(&this->filebuf, name, mode, prot)) {
12170 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12171 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
12173 return this;
12176 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@PBGHH@Z */
12177 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@PEBGHH@Z */
12178 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@PB_WHH@Z */
12179 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@PEB_WHH@Z */
12180 DEFINE_THISCALL_WRAPPER(basic_fstream_short_ctor_name_wchar, 20)
12181 basic_fstream_wchar* __thiscall basic_fstream_short_ctor_name_wchar(basic_fstream_wchar *this,
12182 const wchar_t *name, int mode, int prot, MSVCP_bool virt_init)
12184 basic_fstream_wchar_ctor_name_wchar(this, name, mode, prot, virt_init);
12185 basic_istream_wchar_get_basic_ios(&this->base.base1)->base.vtable = &MSVCP_basic_fstream_short_vtable;
12186 return this;
12189 /* ??1?$basic_fstream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
12190 /* ??1?$basic_fstream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
12191 /* ??1?$basic_fstream@GU?$char_traits@G@std@@@std@@UAE@XZ */
12192 /* ??1?$basic_fstream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
12193 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_dtor, 4)
12194 void __thiscall basic_fstream_wchar_dtor(basic_ios_wchar *base)
12196 basic_fstream_wchar *this = basic_fstream_wchar_from_basic_ios(base);
12198 TRACE("(%p)\n", this);
12200 basic_iostream_wchar_dtor(basic_iostream_wchar_to_basic_ios(&this->base));
12201 basic_filebuf_wchar_dtor(&this->filebuf);
12204 /* ??_D?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
12205 /* ??_D?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
12206 /* ??_D?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
12207 /* ??_D?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
12208 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_vbase_dtor, 4)
12209 void __thiscall basic_fstream_wchar_vbase_dtor(basic_fstream_wchar *this)
12211 TRACE("(%p)\n", this);
12213 basic_fstream_wchar_dtor(basic_fstream_wchar_to_basic_ios(this));
12214 basic_ios_wchar_dtor(basic_istream_wchar_get_basic_ios(&this->base.base1));
12217 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_vector_dtor, 8)
12218 basic_fstream_wchar* __thiscall basic_fstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
12220 basic_fstream_wchar *this = basic_fstream_wchar_from_basic_ios(base);
12222 TRACE("(%p %x)\n", this, flags);
12224 if(flags & 2) {
12225 /* we have an array, with the number of elements stored before the first object */
12226 INT_PTR i, *ptr = (INT_PTR *)this-1;
12228 for(i=*ptr-1; i>=0; i--)
12229 basic_fstream_wchar_vbase_dtor(this+i);
12230 MSVCRT_operator_delete(ptr);
12231 } else {
12232 basic_fstream_wchar_vbase_dtor(this);
12233 if(flags & 1)
12234 MSVCRT_operator_delete(this);
12237 return this;
12240 /* ?close@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
12241 /* ?close@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
12242 /* ?close@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
12243 /* ?close@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
12244 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_close, 4)
12245 void __thiscall basic_fstream_wchar_close(basic_fstream_wchar *this)
12247 TRACE("(%p)\n", this);
12249 if(!basic_filebuf_wchar_close(&this->filebuf)) {
12250 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12251 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
12255 /* ?is_open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QBE_NXZ */
12256 /* ?is_open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEBA_NXZ */
12257 /* ?is_open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QBE_NXZ */
12258 /* ?is_open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEBA_NXZ */
12259 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_is_open, 4)
12260 MSVCP_bool __thiscall basic_fstream_wchar_is_open(const basic_fstream_wchar *this)
12262 TRACE("(%p)\n", this);
12263 return basic_filebuf_wchar_is_open(&this->filebuf);
12266 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDHH@Z */
12267 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDHH@Z */
12268 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXPBDHH@Z */
12269 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDHH@Z */
12270 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_open, 16)
12271 void __thiscall basic_fstream_wchar_open(basic_fstream_wchar *this,
12272 const char *name, int mode, int prot)
12274 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
12276 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode, prot)) {
12277 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12278 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
12282 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDI@Z */
12283 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDI@Z */
12284 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXPBDI@Z */
12285 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDI@Z */
12286 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_open_old, 12)
12287 void __thiscall basic_fstream_wchar_open_old(basic_fstream_wchar *this,
12288 const char *name, unsigned int mode)
12290 basic_fstream_wchar_open(this, name, mode, _SH_DENYNO);
12293 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXPBGHH@Z */
12294 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBGHH@Z */
12295 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXPB_WHH@Z */
12296 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEB_WHH@Z */
12297 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXPBGHH@Z */
12298 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXPEBGHH@Z */
12299 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXPB_WHH@Z */
12300 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXPEB_WHH@Z */
12301 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_open_wchar, 16)
12302 void __thiscall basic_fstream_wchar_open_wchar(basic_fstream_wchar *this,
12303 const wchar_t *name, int mode, int prot)
12305 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
12307 if(!basic_filebuf_wchar_open_wchar(&this->filebuf, name, mode, prot)) {
12308 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12309 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
12313 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXPBGI@Z */
12314 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBGI@Z */
12315 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXPB_WI@Z */
12316 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEB_WI@Z */
12317 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXPBGI@Z */
12318 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXPEBGI@Z */
12319 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXPB_WI@Z */
12320 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXPEB_WI@Z */
12321 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_open_wchar_old, 12)
12322 void __thiscall basic_fstream_wchar_open_wchar_old(basic_fstream_wchar *this,
12323 const wchar_t *name, unsigned int mode)
12325 basic_fstream_wchar_open_wchar(this, name, mode, _SH_DENYNO);
12328 /* ?rdbuf@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
12329 /* ?rdbuf@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
12330 /* ?rdbuf@?$basic_fstream@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
12331 /* ?rdbuf@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
12332 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_rdbuf, 4)
12333 basic_filebuf_wchar* __thiscall basic_fstream_wchar_rdbuf(const basic_fstream_wchar *this)
12335 TRACE("(%p)\n", this);
12336 return (basic_filebuf_wchar*)&this->filebuf;
12339 static inline basic_ios_char* basic_ostringstream_char_to_basic_ios(basic_ostringstream_char *ptr)
12341 return (basic_ios_char*)((char*)ptr+basic_ostringstream_char_vbtable[1]);
12344 static inline basic_ostringstream_char* basic_ostringstream_char_from_basic_ios(basic_ios_char *ptr)
12346 return (basic_ostringstream_char*)((char*)ptr-basic_ostringstream_char_vbtable[1]);
12349 /* ??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 */
12350 /* ??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 */
12351 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_ctor_str, 16)
12352 basic_ostringstream_char* __thiscall basic_ostringstream_char_ctor_str(basic_ostringstream_char *this,
12353 const basic_string_char *str, int mode, MSVCP_bool virt_init)
12355 basic_ios_char *basic_ios;
12357 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
12359 if(virt_init) {
12360 this->base.vbtable = basic_ostringstream_char_vbtable;
12361 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
12362 basic_ios_char_ctor(basic_ios);
12363 }else {
12364 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
12367 basic_stringbuf_char_ctor_str(&this->strbuf, str, mode|OPENMODE_out);
12368 basic_ostream_char_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
12369 basic_ios->base.vtable = &MSVCP_basic_ostringstream_char_vtable;
12370 return this;
12373 /* ??0?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z */
12374 /* ??0?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z */
12375 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_ctor_mode, 12)
12376 basic_ostringstream_char* __thiscall basic_ostringstream_char_ctor_mode(
12377 basic_ostringstream_char *this, int mode, MSVCP_bool virt_init)
12379 basic_ios_char *basic_ios;
12381 TRACE("(%p %d %d)\n", this, mode, virt_init);
12383 if(virt_init) {
12384 this->base.vbtable = basic_ostringstream_char_vbtable;
12385 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
12386 basic_ios_char_ctor(basic_ios);
12387 }else {
12388 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
12391 basic_stringbuf_char_ctor_mode(&this->strbuf, mode|OPENMODE_out);
12392 basic_ostream_char_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
12393 basic_ios->base.vtable = &MSVCP_basic_ostringstream_char_vtable;
12394 return this;
12397 /* ??_F?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
12398 /* ??_F?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
12399 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_ctor, 4)
12400 basic_ostringstream_char* __thiscall basic_ostringstream_char_ctor(
12401 basic_ostringstream_char *this)
12403 return basic_ostringstream_char_ctor_mode(this, 0, TRUE);
12406 /* ??1?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ */
12407 /* ??1?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ */
12408 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_dtor, 4)
12409 void __thiscall basic_ostringstream_char_dtor(basic_ios_char *base)
12411 basic_ostringstream_char *this = basic_ostringstream_char_from_basic_ios(base);
12413 TRACE("(%p)\n", this);
12415 basic_stringbuf_char_dtor(&this->strbuf);
12416 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(&this->base));
12419 /* ??_D?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
12420 /* ??_D?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
12421 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_vbase_dtor, 4)
12422 void __thiscall basic_ostringstream_char_vbase_dtor(basic_ostringstream_char *this)
12424 TRACE("(%p)\n", this);
12426 basic_ostringstream_char_dtor(basic_ostringstream_char_to_basic_ios(this));
12427 basic_ios_char_dtor(basic_ostream_char_get_basic_ios(&this->base));
12430 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_vector_dtor, 8)
12431 basic_ostringstream_char* __thiscall basic_ostringstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
12433 basic_ostringstream_char *this = basic_ostringstream_char_from_basic_ios(base);
12435 TRACE("(%p %x)\n", this, flags);
12437 if(flags & 2) {
12438 /* we have an array, with the number of elements stored before the first object */
12439 INT_PTR i, *ptr = (INT_PTR *)this-1;
12441 for(i=*ptr-1; i>=0; i--)
12442 basic_ostringstream_char_vbase_dtor(this+i);
12443 MSVCRT_operator_delete(ptr);
12444 } else {
12445 basic_ostringstream_char_vbase_dtor(this);
12446 if(flags & 1)
12447 MSVCRT_operator_delete(this);
12450 return this;
12453 /* ?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 */
12454 /* ?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 */
12455 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_rdbuf, 4)
12456 basic_stringbuf_char* __thiscall basic_ostringstream_char_rdbuf(const basic_ostringstream_char *this)
12458 TRACE("(%p)\n", this);
12459 return (basic_stringbuf_char*)&this->strbuf;
12462 /* ?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 */
12463 /* ?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 */
12464 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_str_set, 8)
12465 void __thiscall basic_ostringstream_char_str_set(basic_ostringstream_char *this, const basic_string_char *str)
12467 TRACE("(%p %p)\n", this, str);
12468 basic_stringbuf_char_str_set(&this->strbuf, str);
12471 /* ?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 */
12472 /* ?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 */
12473 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_str_get, 8)
12474 basic_string_char* __thiscall basic_ostringstream_char_str_get(const basic_ostringstream_char *this, basic_string_char *ret)
12476 TRACE("(%p %p)\n", this, ret);
12477 return basic_stringbuf_char_str_get(&this->strbuf, ret);
12480 static inline basic_ios_wchar* basic_ostringstream_wchar_to_basic_ios(basic_ostringstream_wchar *ptr)
12482 return (basic_ios_wchar*)((char*)ptr+basic_ostringstream_wchar_vbtable[1]);
12485 static inline basic_ostringstream_wchar* basic_ostringstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
12487 return (basic_ostringstream_wchar*)((char*)ptr-basic_ostringstream_wchar_vbtable[1]);
12490 /* ??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 */
12491 /* ??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 */
12492 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_ctor_str, 16)
12493 basic_ostringstream_wchar* __thiscall basic_ostringstream_wchar_ctor_str(basic_ostringstream_wchar *this,
12494 const basic_string_wchar *str, int mode, MSVCP_bool virt_init)
12496 basic_ios_wchar *basic_ios;
12498 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
12500 if(virt_init) {
12501 this->base.vbtable = basic_ostringstream_wchar_vbtable;
12502 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
12503 basic_ios_wchar_ctor(basic_ios);
12504 }else {
12505 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
12508 basic_stringbuf_wchar_ctor_str(&this->strbuf, str, mode|OPENMODE_out);
12509 basic_ostream_wchar_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
12510 basic_ios->base.vtable = &MSVCP_basic_ostringstream_wchar_vtable;
12511 return this;
12514 /* ??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 */
12515 /* ??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 */
12516 DEFINE_THISCALL_WRAPPER(basic_ostringstream_short_ctor_str, 16)
12517 basic_ostringstream_wchar* __thiscall basic_ostringstream_short_ctor_str(basic_ostringstream_wchar *this,
12518 const basic_string_wchar *str, int mode, MSVCP_bool virt_init)
12520 basic_ostringstream_wchar_ctor_str(this, str, mode, virt_init);
12521 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ostringstream_short_vtable;
12522 return this;
12525 /* ??0?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@H@Z */
12526 /* ??0?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@H@Z */
12527 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_ctor_mode, 12)
12528 basic_ostringstream_wchar* __thiscall basic_ostringstream_wchar_ctor_mode(
12529 basic_ostringstream_wchar *this, int mode, MSVCP_bool virt_init)
12531 basic_ios_wchar *basic_ios;
12533 TRACE("(%p %d %d)\n", this, mode, virt_init);
12535 if(virt_init) {
12536 this->base.vbtable = basic_ostringstream_wchar_vbtable;
12537 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
12538 basic_ios_wchar_ctor(basic_ios);
12539 }else {
12540 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
12543 basic_stringbuf_wchar_ctor_mode(&this->strbuf, mode|OPENMODE_out);
12544 basic_ostream_wchar_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
12545 basic_ios->base.vtable = &MSVCP_basic_ostringstream_wchar_vtable;
12546 return this;
12549 /* ??0?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@H@Z */
12550 /* ??0?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@H@Z */
12551 DEFINE_THISCALL_WRAPPER(basic_ostringstream_short_ctor_mode, 12)
12552 basic_ostringstream_wchar* __thiscall basic_ostringstream_short_ctor_mode(
12553 basic_ostringstream_wchar *this, int mode, MSVCP_bool virt_init)
12555 basic_ostringstream_wchar_ctor_mode(this, mode, virt_init);
12556 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ostringstream_short_vtable;
12557 return this;
12560 /* ??_F?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
12561 /* ??_F?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
12562 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_ctor, 4)
12563 basic_ostringstream_wchar* __thiscall basic_ostringstream_wchar_ctor(
12564 basic_ostringstream_wchar *this)
12566 return basic_ostringstream_wchar_ctor_mode(this, 0, TRUE);
12569 /* ??_F?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
12570 /* ??_F?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
12571 DEFINE_THISCALL_WRAPPER(basic_ostringstream_short_ctor, 4)
12572 basic_ostringstream_wchar* __thiscall basic_ostringstream_short_ctor(
12573 basic_ostringstream_wchar *this)
12575 return basic_ostringstream_short_ctor_mode(this, 0, TRUE);
12578 /* ??1?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UAE@XZ */
12579 /* ??1?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UEAA@XZ */
12580 /* ??1?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UAE@XZ */
12581 /* ??1?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UEAA@XZ */
12582 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_dtor, 4)
12583 void __thiscall basic_ostringstream_wchar_dtor(basic_ios_wchar *base)
12585 basic_ostringstream_wchar *this = basic_ostringstream_wchar_from_basic_ios(base);
12587 TRACE("(%p)\n", this);
12589 basic_stringbuf_wchar_dtor(&this->strbuf);
12590 basic_ostream_wchar_dtor(basic_ostream_wchar_to_basic_ios(&this->base));
12593 /* ??_D?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
12594 /* ??_D?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
12595 /* ??_D?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
12596 /* ??_D?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
12597 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_vbase_dtor, 4)
12598 void __thiscall basic_ostringstream_wchar_vbase_dtor(basic_ostringstream_wchar *this)
12600 TRACE("(%p)\n", this);
12602 basic_ostringstream_wchar_dtor(basic_ostringstream_wchar_to_basic_ios(this));
12603 basic_ios_wchar_dtor(basic_ostream_wchar_get_basic_ios(&this->base));
12606 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_vector_dtor, 8)
12607 basic_ostringstream_wchar* __thiscall basic_ostringstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
12609 basic_ostringstream_wchar *this = basic_ostringstream_wchar_from_basic_ios(base);
12611 TRACE("(%p %x)\n", this, flags);
12613 if(flags & 2) {
12614 /* we have an array, with the number of elements stored before the first object */
12615 INT_PTR i, *ptr = (INT_PTR *)this-1;
12617 for(i=*ptr-1; i>=0; i--)
12618 basic_ostringstream_wchar_vbase_dtor(this+i);
12619 MSVCRT_operator_delete(ptr);
12620 } else {
12621 basic_ostringstream_wchar_vbase_dtor(this);
12622 if(flags & 1)
12623 MSVCRT_operator_delete(this);
12626 return this;
12629 /* ?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 */
12630 /* ?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 */
12631 /* ?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 */
12632 /* ?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 */
12633 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_rdbuf, 4)
12634 basic_stringbuf_wchar* __thiscall basic_ostringstream_wchar_rdbuf(const basic_ostringstream_wchar *this)
12636 TRACE("(%p)\n", this);
12637 return (basic_stringbuf_wchar*)&this->strbuf;
12640 /* ?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 */
12641 /* ?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 */
12642 /* ?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 */
12643 /* ?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 */
12644 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_str_set, 8)
12645 void __thiscall basic_ostringstream_wchar_str_set(basic_ostringstream_wchar *this, const basic_string_wchar *str)
12647 TRACE("(%p %p)\n", this, str);
12648 basic_stringbuf_wchar_str_set(&this->strbuf, str);
12651 /* ?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 */
12652 /* ?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 */
12653 /* ?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 */
12654 /* ?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 */
12655 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_str_get, 8)
12656 basic_string_wchar* __thiscall basic_ostringstream_wchar_str_get(const basic_ostringstream_wchar *this, basic_string_wchar *ret)
12658 TRACE("(%p %p)\n", this, ret);
12659 return basic_stringbuf_wchar_str_get(&this->strbuf, ret);
12662 static inline basic_ios_char* basic_istringstream_char_to_basic_ios(basic_istringstream_char *ptr)
12664 return (basic_ios_char*)((char*)ptr+basic_istringstream_char_vbtable[1]);
12667 static inline basic_istringstream_char* basic_istringstream_char_from_basic_ios(basic_ios_char *ptr)
12669 return (basic_istringstream_char*)((char*)ptr-basic_istringstream_char_vbtable[1]);
12672 /* ??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 */
12673 /* ??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 */
12674 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_ctor_str, 16)
12675 basic_istringstream_char* __thiscall basic_istringstream_char_ctor_str(basic_istringstream_char *this,
12676 const basic_string_char *str, int mode, MSVCP_bool virt_init)
12678 basic_ios_char *basic_ios;
12680 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
12682 if(virt_init) {
12683 this->base.vbtable = basic_istringstream_char_vbtable;
12684 basic_ios = basic_istream_char_get_basic_ios(&this->base);
12685 basic_ios_char_ctor(basic_ios);
12686 }else {
12687 basic_ios = basic_istream_char_get_basic_ios(&this->base);
12690 basic_stringbuf_char_ctor_str(&this->strbuf, str, mode|OPENMODE_in);
12691 basic_istream_char_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
12692 basic_ios->base.vtable = &MSVCP_basic_istringstream_char_vtable;
12693 return this;
12696 /* ??0?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z */
12697 /* ??0?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z */
12698 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_ctor_mode, 12)
12699 basic_istringstream_char* __thiscall basic_istringstream_char_ctor_mode(
12700 basic_istringstream_char *this, int mode, MSVCP_bool virt_init)
12702 basic_ios_char *basic_ios;
12704 TRACE("(%p %d %d)\n", this, mode, virt_init);
12706 if(virt_init) {
12707 this->base.vbtable = basic_istringstream_char_vbtable;
12708 basic_ios = basic_istream_char_get_basic_ios(&this->base);
12709 basic_ios_char_ctor(basic_ios);
12710 }else {
12711 basic_ios = basic_istream_char_get_basic_ios(&this->base);
12714 basic_stringbuf_char_ctor_mode(&this->strbuf, mode|OPENMODE_in);
12715 basic_istream_char_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
12716 basic_ios->base.vtable = &MSVCP_basic_istringstream_char_vtable;
12717 return this;
12720 /* ??_F?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
12721 /* ??_F?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
12722 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_ctor, 4)
12723 basic_istringstream_char* __thiscall basic_istringstream_char_ctor(
12724 basic_istringstream_char *this)
12726 return basic_istringstream_char_ctor_mode(this, 0, TRUE);
12729 /* ??1?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ */
12730 /* ??1?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ */
12731 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_dtor, 4)
12732 void __thiscall basic_istringstream_char_dtor(basic_ios_char *base)
12734 basic_istringstream_char *this = basic_istringstream_char_from_basic_ios(base);
12736 TRACE("(%p)\n", this);
12738 basic_stringbuf_char_dtor(&this->strbuf);
12739 basic_istream_char_dtor(basic_istream_char_to_basic_ios(&this->base));
12742 /* ??_D?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
12743 /* ??_D?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
12744 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_vbase_dtor, 4)
12745 void __thiscall basic_istringstream_char_vbase_dtor(basic_istringstream_char *this)
12747 TRACE("(%p)\n", this);
12749 basic_istringstream_char_dtor(basic_istringstream_char_to_basic_ios(this));
12750 basic_ios_char_dtor(basic_istream_char_get_basic_ios(&this->base));
12753 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_vector_dtor, 8)
12754 basic_istringstream_char* __thiscall basic_istringstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
12756 basic_istringstream_char *this = basic_istringstream_char_from_basic_ios(base);
12758 TRACE("(%p %x)\n", this, flags);
12760 if(flags & 2) {
12761 /* we have an array, with the number of elements stored before the first object */
12762 INT_PTR i, *ptr = (INT_PTR *)this-1;
12764 for(i=*ptr-1; i>=0; i--)
12765 basic_istringstream_char_vbase_dtor(this+i);
12766 MSVCRT_operator_delete(ptr);
12767 } else {
12768 basic_istringstream_char_vbase_dtor(this);
12769 if(flags & 1)
12770 MSVCRT_operator_delete(this);
12773 return this;
12776 /* ?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 */
12777 /* ?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 */
12778 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_rdbuf, 4)
12779 basic_stringbuf_char* __thiscall basic_istringstream_char_rdbuf(const basic_istringstream_char *this)
12781 TRACE("(%p)\n", this);
12782 return (basic_stringbuf_char*)&this->strbuf;
12785 /* ?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 */
12786 /* ?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 */
12787 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_str_set, 8)
12788 void __thiscall basic_istringstream_char_str_set(basic_istringstream_char *this, const basic_string_char *str)
12790 TRACE("(%p %p)\n", this, str);
12791 basic_stringbuf_char_str_set(&this->strbuf, str);
12794 /* ?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 */
12795 /* ?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 */
12796 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_str_get, 8)
12797 basic_string_char* __thiscall basic_istringstream_char_str_get(const basic_istringstream_char *this, basic_string_char *ret)
12799 TRACE("(%p %p)\n", this, ret);
12800 return basic_stringbuf_char_str_get(&this->strbuf, ret);
12803 static inline basic_ios_wchar* basic_istringstream_wchar_to_basic_ios(basic_istringstream_wchar *ptr)
12805 return (basic_ios_wchar*)((char*)ptr+basic_istringstream_wchar_vbtable[1]);
12808 static inline basic_istringstream_wchar* basic_istringstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
12810 return (basic_istringstream_wchar*)((char*)ptr-basic_istringstream_wchar_vbtable[1]);
12813 /* ??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 */
12814 /* ??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 */
12815 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_ctor_str, 16)
12816 basic_istringstream_wchar* __thiscall basic_istringstream_wchar_ctor_str(basic_istringstream_wchar *this,
12817 const basic_string_wchar *str, int mode, MSVCP_bool virt_init)
12819 basic_ios_wchar *basic_ios;
12821 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
12823 if(virt_init) {
12824 this->base.vbtable = basic_istringstream_wchar_vbtable;
12825 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
12826 basic_ios_wchar_ctor(basic_ios);
12827 }else {
12828 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
12831 basic_stringbuf_wchar_ctor_str(&this->strbuf, str, mode|OPENMODE_in);
12832 basic_istream_wchar_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
12833 basic_ios->base.vtable = &MSVCP_basic_istringstream_wchar_vtable;
12834 return this;
12837 /* ??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 */
12838 /* ??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 */
12839 DEFINE_THISCALL_WRAPPER(basic_istringstream_short_ctor_str, 16)
12840 basic_istringstream_wchar* __thiscall basic_istringstream_short_ctor_str(basic_istringstream_wchar *this,
12841 const basic_string_wchar *str, int mode, MSVCP_bool virt_init)
12843 basic_istringstream_wchar_ctor_str(this, str, mode, virt_init);
12844 basic_istream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_istringstream_short_vtable;
12845 return this;
12848 /* ??0?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@H@Z */
12849 /* ??0?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@H@Z */
12850 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_ctor_mode, 12)
12851 basic_istringstream_wchar* __thiscall basic_istringstream_wchar_ctor_mode(
12852 basic_istringstream_wchar *this, int mode, MSVCP_bool virt_init)
12854 basic_ios_wchar *basic_ios;
12856 TRACE("(%p %d %d)\n", this, mode, virt_init);
12858 if(virt_init) {
12859 this->base.vbtable = basic_istringstream_wchar_vbtable;
12860 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
12861 basic_ios_wchar_ctor(basic_ios);
12862 }else {
12863 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
12866 basic_stringbuf_wchar_ctor_mode(&this->strbuf, mode|OPENMODE_in);
12867 basic_istream_wchar_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
12868 basic_ios->base.vtable = &MSVCP_basic_istringstream_wchar_vtable;
12869 return this;
12872 /* ??0?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@H@Z */
12873 /* ??0?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@H@Z */
12874 DEFINE_THISCALL_WRAPPER(basic_istringstream_short_ctor_mode, 12)
12875 basic_istringstream_wchar* __thiscall basic_istringstream_short_ctor_mode(
12876 basic_istringstream_wchar *this, int mode, MSVCP_bool virt_init)
12878 basic_istringstream_wchar_ctor_mode(this, mode, virt_init);
12879 basic_istream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_istringstream_short_vtable;
12880 return this;
12883 /* ??_F?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
12884 /* ??_F?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
12885 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_ctor, 4)
12886 basic_istringstream_wchar* __thiscall basic_istringstream_wchar_ctor(
12887 basic_istringstream_wchar *this)
12889 return basic_istringstream_wchar_ctor_mode(this, 0, TRUE);
12892 /* ??_F?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
12893 /* ??_F?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
12894 DEFINE_THISCALL_WRAPPER(basic_istringstream_short_ctor, 4)
12895 basic_istringstream_wchar* __thiscall basic_istringstream_short_ctor(
12896 basic_istringstream_wchar *this)
12898 return basic_istringstream_short_ctor_mode(this, 0, TRUE);
12901 /* ??1?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UAE@XZ */
12902 /* ??1?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UEAA@XZ */
12903 /* ??1?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UAE@XZ */
12904 /* ??1?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UEAA@XZ */
12905 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_dtor, 4)
12906 void __thiscall basic_istringstream_wchar_dtor(basic_ios_wchar *base)
12908 basic_istringstream_wchar *this = basic_istringstream_wchar_from_basic_ios(base);
12910 TRACE("(%p)\n", this);
12912 basic_stringbuf_wchar_dtor(&this->strbuf);
12913 basic_istream_wchar_dtor(basic_istream_wchar_to_basic_ios(&this->base));
12916 /* ??_D?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
12917 /* ??_D?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
12918 /* ??_D?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
12919 /* ??_D?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
12920 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_vbase_dtor, 4)
12921 void __thiscall basic_istringstream_wchar_vbase_dtor(basic_istringstream_wchar *this)
12923 TRACE("(%p)\n", this);
12925 basic_istringstream_wchar_dtor(basic_istringstream_wchar_to_basic_ios(this));
12926 basic_ios_wchar_dtor(basic_istream_wchar_get_basic_ios(&this->base));
12929 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_vector_dtor, 8)
12930 basic_istringstream_wchar* __thiscall basic_istringstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
12932 basic_istringstream_wchar *this = basic_istringstream_wchar_from_basic_ios(base);
12934 TRACE("(%p %x)\n", this, flags);
12936 if(flags & 2) {
12937 /* we have an array, with the number of elements stored before the first object */
12938 INT_PTR i, *ptr = (INT_PTR *)this-1;
12940 for(i=*ptr-1; i>=0; i--)
12941 basic_istringstream_wchar_vbase_dtor(this+i);
12942 MSVCRT_operator_delete(ptr);
12943 } else {
12944 basic_istringstream_wchar_vbase_dtor(this);
12945 if(flags & 1)
12946 MSVCRT_operator_delete(this);
12949 return this;
12952 /* ?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 */
12953 /* ?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 */
12954 /* ?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 */
12955 /* ?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 */
12956 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_rdbuf, 4)
12957 basic_stringbuf_wchar* __thiscall basic_istringstream_wchar_rdbuf(const basic_istringstream_wchar *this)
12959 TRACE("(%p)\n", this);
12960 return (basic_stringbuf_wchar*)&this->strbuf;
12963 /* ?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 */
12964 /* ?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 */
12965 /* ?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 */
12966 /* ?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 */
12967 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_str_set, 8)
12968 void __thiscall basic_istringstream_wchar_str_set(basic_istringstream_wchar *this, const basic_string_wchar *str)
12970 TRACE("(%p %p)\n", this, str);
12971 basic_stringbuf_wchar_str_set(&this->strbuf, str);
12974 /* ?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 */
12975 /* ?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 */
12976 /* ?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 */
12977 /* ?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 */
12978 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_str_get, 8)
12979 basic_string_wchar* __thiscall basic_istringstream_wchar_str_get(const basic_istringstream_wchar *this, basic_string_wchar *ret)
12981 TRACE("(%p %p)\n", this, ret);
12982 return basic_stringbuf_wchar_str_get(&this->strbuf, ret);
12985 static inline basic_ios_char* basic_stringstream_char_to_basic_ios(basic_stringstream_char *ptr)
12987 return (basic_ios_char*)((char*)ptr+basic_stringstream_char_vbtable1[1]);
12990 static inline basic_stringstream_char* basic_stringstream_char_from_basic_ios(basic_ios_char *ptr)
12992 return (basic_stringstream_char*)((char*)ptr-basic_stringstream_char_vbtable1[1]);
12995 /* ??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 */
12996 /* ??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 */
12997 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_ctor_str, 16)
12998 basic_stringstream_char* __thiscall basic_stringstream_char_ctor_str(basic_stringstream_char *this,
12999 const basic_string_char *str, int mode, MSVCP_bool virt_init)
13001 basic_ios_char *basic_ios;
13003 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
13005 if(virt_init) {
13006 this->base.base1.vbtable = basic_stringstream_char_vbtable1;
13007 this->base.base2.vbtable = basic_stringstream_char_vbtable2;
13008 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
13009 basic_ios_char_ctor(basic_ios);
13010 }else {
13011 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
13014 basic_stringbuf_char_ctor_str(&this->strbuf, str, mode);
13015 basic_iostream_char_ctor(&this->base, &this->strbuf.base, FALSE);
13016 basic_ios->base.vtable = &MSVCP_basic_stringstream_char_vtable;
13017 return this;
13020 /* ??0?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z */
13021 /* ??0?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z */
13022 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_ctor_mode, 12)
13023 basic_stringstream_char* __thiscall basic_stringstream_char_ctor_mode(
13024 basic_stringstream_char *this, int mode, MSVCP_bool virt_init)
13026 basic_ios_char *basic_ios;
13028 TRACE("(%p %d %d)\n", this, mode, virt_init);
13030 if(virt_init) {
13031 this->base.base1.vbtable = basic_stringstream_char_vbtable1;
13032 this->base.base2.vbtable = basic_stringstream_char_vbtable2;
13033 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
13034 basic_ios_char_ctor(basic_ios);
13035 }else {
13036 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
13039 basic_stringbuf_char_ctor_mode(&this->strbuf, mode);
13040 basic_iostream_char_ctor(&this->base, &this->strbuf.base, FALSE);
13041 basic_ios->base.vtable = &MSVCP_basic_stringstream_char_vtable;
13042 return this;
13045 /* ??_F?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
13046 /* ??_F?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
13047 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_ctor, 4)
13048 basic_stringstream_char* __thiscall basic_stringstream_char_ctor(
13049 basic_stringstream_char *this)
13051 return basic_stringstream_char_ctor_mode(
13052 this, OPENMODE_out|OPENMODE_in, TRUE);
13055 /* ??1?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ */
13056 /* ??1?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ */
13057 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_dtor, 4)
13058 void __thiscall basic_stringstream_char_dtor(basic_ios_char *base)
13060 basic_stringstream_char *this = basic_stringstream_char_from_basic_ios(base);
13062 TRACE("(%p)\n", this);
13064 basic_iostream_char_dtor(basic_iostream_char_to_basic_ios(&this->base));
13065 basic_stringbuf_char_dtor(&this->strbuf);
13068 /* ??_D?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
13069 /* ??_D?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
13070 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_vbase_dtor, 4)
13071 void __thiscall basic_stringstream_char_vbase_dtor(basic_stringstream_char *this)
13073 TRACE("(%p)\n", this);
13075 basic_stringstream_char_dtor(basic_stringstream_char_to_basic_ios(this));
13076 basic_ios_char_dtor(basic_istream_char_get_basic_ios(&this->base.base1));
13079 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_vector_dtor, 8)
13080 basic_stringstream_char* __thiscall basic_stringstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
13082 basic_stringstream_char *this = basic_stringstream_char_from_basic_ios(base);
13084 TRACE("(%p %x)\n", this, flags);
13086 if(flags & 2) {
13087 /* we have an array, with the number of elements stored before the first object */
13088 INT_PTR i, *ptr = (INT_PTR *)this-1;
13090 for(i=*ptr-1; i>=0; i--)
13091 basic_stringstream_char_vbase_dtor(this+i);
13092 MSVCRT_operator_delete(ptr);
13093 } else {
13094 basic_stringstream_char_vbase_dtor(this);
13095 if(flags & 1)
13096 MSVCRT_operator_delete(this);
13099 return this;
13102 /* ?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 */
13103 /* ?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 */
13104 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_rdbuf, 4)
13105 basic_stringbuf_char* __thiscall basic_stringstream_char_rdbuf(const basic_stringstream_char *this)
13107 TRACE("(%p)\n", this);
13108 return (basic_stringbuf_char*)&this->strbuf;
13111 /* ?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 */
13112 /* ?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 */
13113 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_str_set, 8)
13114 void __thiscall basic_stringstream_char_str_set(basic_stringstream_char *this, const basic_string_char *str)
13116 TRACE("(%p %p)\n", this, str);
13117 basic_stringbuf_char_str_set(&this->strbuf, str);
13120 /* ?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 */
13121 /* ?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 */
13122 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_str_get, 8)
13123 basic_string_char* __thiscall basic_stringstream_char_str_get(const basic_stringstream_char *this, basic_string_char *ret)
13125 TRACE("(%p %p)\n", this, ret);
13126 return basic_stringbuf_char_str_get(&this->strbuf, ret);
13129 static inline basic_ios_wchar* basic_stringstream_wchar_to_basic_ios(basic_stringstream_wchar *ptr)
13131 return (basic_ios_wchar*)((char*)ptr+basic_stringstream_wchar_vbtable1[1]);
13134 static inline basic_stringstream_wchar* basic_stringstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
13136 return (basic_stringstream_wchar*)((char*)ptr-basic_stringstream_wchar_vbtable1[1]);
13139 /* ??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 */
13140 /* ??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 */
13141 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_ctor_str, 16)
13142 basic_stringstream_wchar* __thiscall basic_stringstream_wchar_ctor_str(basic_stringstream_wchar *this,
13143 const basic_string_wchar *str, int mode, MSVCP_bool virt_init)
13145 basic_ios_wchar *basic_ios;
13147 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
13149 if(virt_init) {
13150 this->base.base1.vbtable = basic_stringstream_wchar_vbtable1;
13151 this->base.base2.vbtable = basic_stringstream_wchar_vbtable2;
13152 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
13153 basic_ios_wchar_ctor(basic_ios);
13154 }else {
13155 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
13158 basic_stringbuf_wchar_ctor_str(&this->strbuf, str, mode);
13159 basic_iostream_wchar_ctor(&this->base, &this->strbuf.base, FALSE);
13160 basic_ios->base.vtable = &MSVCP_basic_stringstream_wchar_vtable;
13161 return this;
13164 /* ??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 */
13165 /* ??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 */
13166 DEFINE_THISCALL_WRAPPER(basic_stringstream_short_ctor_str, 16)
13167 basic_stringstream_wchar* __thiscall basic_stringstream_short_ctor_str(basic_stringstream_wchar *this,
13168 const basic_string_wchar *str, int mode, MSVCP_bool virt_init)
13170 basic_stringstream_wchar_ctor_str(this, str, mode, virt_init);
13171 basic_istream_wchar_get_basic_ios(&this->base.base1)->base.vtable = &MSVCP_basic_stringstream_short_vtable;
13172 return this;
13175 /* ??0?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@H@Z */
13176 /* ??0?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@H@Z */
13177 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_ctor_mode, 12)
13178 basic_stringstream_wchar* __thiscall basic_stringstream_wchar_ctor_mode(
13179 basic_stringstream_wchar *this, int mode, MSVCP_bool virt_init)
13181 basic_ios_wchar *basic_ios;
13183 TRACE("(%p %d %d)\n", this, mode, virt_init);
13185 if(virt_init) {
13186 this->base.base1.vbtable = basic_stringstream_wchar_vbtable1;
13187 this->base.base2.vbtable = basic_stringstream_wchar_vbtable2;
13188 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
13189 basic_ios_wchar_ctor(basic_ios);
13190 }else {
13191 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
13194 basic_stringbuf_wchar_ctor_mode(&this->strbuf, mode);
13195 basic_iostream_wchar_ctor(&this->base, &this->strbuf.base, FALSE);
13196 basic_ios->base.vtable = &MSVCP_basic_stringstream_wchar_vtable;
13197 return this;
13200 /* ??0?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@H@Z */
13201 /* ??0?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@H@Z */
13202 DEFINE_THISCALL_WRAPPER(basic_stringstream_short_ctor_mode, 12)
13203 basic_stringstream_wchar* __thiscall basic_stringstream_short_ctor_mode(
13204 basic_stringstream_wchar *this, int mode, MSVCP_bool virt_init)
13206 basic_stringstream_wchar_ctor_mode(this, mode, virt_init);
13207 basic_istream_wchar_get_basic_ios(&this->base.base1)->base.vtable = &MSVCP_basic_stringstream_short_vtable;
13208 return this;
13211 /* ??_F?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
13212 /* ??_F?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
13213 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_ctor, 4)
13214 basic_stringstream_wchar* __thiscall basic_stringstream_wchar_ctor(
13215 basic_stringstream_wchar *this)
13217 return basic_stringstream_wchar_ctor_mode(
13218 this, OPENMODE_out|OPENMODE_in, TRUE);
13221 /* ??_F?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
13222 /* ??_F?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
13223 DEFINE_THISCALL_WRAPPER(basic_stringstream_short_ctor, 4)
13224 basic_stringstream_wchar* __thiscall basic_stringstream_short_ctor(
13225 basic_stringstream_wchar *this)
13227 return basic_stringstream_short_ctor_mode(
13228 this, OPENMODE_out|OPENMODE_in, TRUE);
13231 /* ??1?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UAE@XZ */
13232 /* ??1?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UEAA@XZ */
13233 /* ??1?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UAE@XZ */
13234 /* ??1?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UEAA@XZ */
13235 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_dtor, 4)
13236 void __thiscall basic_stringstream_wchar_dtor(basic_ios_wchar *base)
13238 basic_stringstream_wchar *this = basic_stringstream_wchar_from_basic_ios(base);
13240 TRACE("(%p)\n", this);
13242 basic_iostream_wchar_dtor(basic_iostream_wchar_to_basic_ios(&this->base));
13243 basic_stringbuf_wchar_dtor(&this->strbuf);
13246 /* ??_D?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
13247 /* ??_D?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
13248 /* ??_D?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
13249 /* ??_D?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
13250 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_vbase_dtor, 4)
13251 void __thiscall basic_stringstream_wchar_vbase_dtor(basic_stringstream_wchar *this)
13253 TRACE("(%p)\n", this);
13255 basic_stringstream_wchar_dtor(basic_stringstream_wchar_to_basic_ios(this));
13256 basic_ios_wchar_dtor(basic_istream_wchar_get_basic_ios(&this->base.base1));
13259 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_vector_dtor, 8)
13260 basic_stringstream_wchar* __thiscall basic_stringstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
13262 basic_stringstream_wchar *this = basic_stringstream_wchar_from_basic_ios(base);
13264 TRACE("(%p %x)\n", this, flags);
13266 if(flags & 2) {
13267 /* we have an array, with the number of elements stored before the first object */
13268 INT_PTR i, *ptr = (INT_PTR *)this-1;
13270 for(i=*ptr-1; i>=0; i--)
13271 basic_stringstream_wchar_vbase_dtor(this+i);
13272 MSVCRT_operator_delete(ptr);
13273 } else {
13274 basic_stringstream_wchar_vbase_dtor(this);
13275 if(flags & 1)
13276 MSVCRT_operator_delete(this);
13279 return this;
13282 /* ?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 */
13283 /* ?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 */
13284 /* ?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 */
13285 /* ?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 */
13286 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_rdbuf, 4)
13287 basic_stringbuf_wchar* __thiscall basic_stringstream_wchar_rdbuf(const basic_stringstream_wchar *this)
13289 TRACE("(%p)\n", this);
13290 return (basic_stringbuf_wchar*)&this->strbuf;
13293 /* ?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 */
13294 /* ?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 */
13295 /* ?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 */
13296 /* ?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 */
13297 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_str_set, 8)
13298 void __thiscall basic_stringstream_wchar_str_set(basic_stringstream_wchar *this, const basic_string_wchar *str)
13300 TRACE("(%p %p)\n", this, str);
13301 basic_stringbuf_wchar_str_set(&this->strbuf, str);
13304 /* ?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 */
13305 /* ?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 */
13306 /* ?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 */
13307 /* ?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 */
13308 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_str_get, 8)
13309 basic_string_wchar* __thiscall basic_stringstream_wchar_str_get(const basic_stringstream_wchar *this, basic_string_wchar *ret)
13311 TRACE("(%p %p)\n", this, ret);
13312 return basic_stringbuf_wchar_str_get(&this->strbuf, ret);
13315 /* ?_Init@strstreambuf@std@@IAEXHPAD0H@Z */
13316 /* ?_Init@strstreambuf@std@@IEAAX_JPEAD1H@Z */
13317 #if STREAMSIZE_BITS == 64
13318 DEFINE_THISCALL_WRAPPER(strstreambuf__Init, 24)
13319 #else
13320 DEFINE_THISCALL_WRAPPER(strstreambuf__Init, 20)
13321 #endif
13322 void __thiscall strstreambuf__Init(strstreambuf *this, streamsize len, char *g, char *p, int mode)
13324 TRACE("(%p %s %p %p %d)\n", this, wine_dbgstr_longlong(len), g, p, mode);
13326 this->minsize = 32;
13327 this->endsave = NULL;
13328 this->strmode = mode;
13329 this->palloc = NULL;
13330 this->pfree = NULL;
13332 if(!g) {
13333 this->strmode |= STRSTATE_Dynamic;
13334 if(len > this->minsize)
13335 this->minsize = len;
13336 this->seekhigh = NULL;
13337 return;
13340 if(len < 0)
13341 len = INT_MAX;
13342 else if(!len)
13343 len = strlen(g);
13345 this->seekhigh = g+len;
13346 basic_streambuf_char_setg(&this->base, g, g, p ? p : this->seekhigh);
13347 if(p)
13348 basic_streambuf_char_setp(&this->base, p, this->seekhigh);
13351 /* ??0strstreambuf@std@@QAE@PACH0@Z */
13352 /* ??0strstreambuf@std@@QEAA@PEAC_J0@Z */
13353 /* ??0strstreambuf@std@@QAE@PADH0@Z */
13354 /* ??0strstreambuf@std@@QEAA@PEAD_J0@Z */
13355 /* ??0strstreambuf@std@@QAE@PAEH0@Z */
13356 /* ??0strstreambuf@std@@QEAA@PEAE_J0@Z */
13357 #if STREAMSIZE_BITS == 64
13358 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_get_put, 20)
13359 #else
13360 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_get_put, 16)
13361 #endif
13362 strstreambuf* __thiscall strstreambuf_ctor_get_put(strstreambuf *this, char *g, streamsize len, char *p)
13364 TRACE("(%p %p %s %p)\n", this, g, wine_dbgstr_longlong(len), p);
13366 basic_streambuf_char_ctor(&this->base);
13367 this->base.vtable = &MSVCP_strstreambuf_vtable;
13369 strstreambuf__Init(this, len, g, p, 0);
13370 return this;
13373 /* ??0strstreambuf@std@@QAE@H@Z */
13374 /* ??0strstreambuf@std@@QEAA@_J@Z */
13375 #if STREAMSIZE_BITS == 64
13376 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_len, 12)
13377 #else
13378 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_len, 8)
13379 #endif
13380 strstreambuf* __thiscall strstreambuf_ctor_len(strstreambuf *this, streamsize len)
13382 return strstreambuf_ctor_get_put(this, NULL, len, NULL);
13385 /* ??0strstreambuf@std@@QAE@P6APAXI@ZP6AXPAX@Z@Z */
13386 /* ??0strstreambuf@std@@QEAA@P6APEAX_K@ZP6AXPEAX@Z@Z */
13387 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_alloc, 12)
13388 strstreambuf* __thiscall strstreambuf_ctor_alloc(strstreambuf *this, void* (__cdecl *palloc)(MSVCP_size_t), void (__cdecl *pfree)(void*))
13390 TRACE("(%p %p %p)\n", this, palloc, pfree);
13392 strstreambuf_ctor_get_put(this, NULL, 0, NULL);
13393 this->palloc = palloc;
13394 this->pfree = pfree;
13395 return this;
13398 /* ??0strstreambuf@std@@QAE@PBCH@Z */
13399 /* ??0strstreambuf@std@@QEAA@PEBC_J@Z */
13400 /* ??0strstreambuf@std@@QAE@PBDH@Z */
13401 /* ??0strstreambuf@std@@QEAA@PEBD_J@Z */
13402 /* ??0strstreambuf@std@@QAE@PBEH@Z */
13403 /* ??0strstreambuf@std@@QEAA@PEBE_J@Z */
13404 #if STREAMSIZE_BITS == 64
13405 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_get, 16)
13406 #else
13407 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_get, 12)
13408 #endif
13409 strstreambuf* __thiscall strstreambuf_ctor_get(strstreambuf *this, const char *g, streamsize len)
13411 TRACE("(%p %p %s)\n", this, g, wine_dbgstr_longlong(len));
13413 strstreambuf_ctor_get_put(this, (char*)g, len, NULL);
13414 this->strmode |= STRSTATE_Constant;
13415 return this;
13418 /* ??_Fstrstreambuf@std@@QAEXXZ */
13419 /* ??_Fstrstreambuf@std@@QEAAXXZ */
13420 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor, 4)
13421 strstreambuf* __thiscall strstreambuf_ctor(strstreambuf *this)
13423 return strstreambuf_ctor_get_put(this, NULL, 0, NULL);
13426 /* ?_Tidy@strstreambuf@std@@IAEXXZ */
13427 /* ?_Tidy@strstreambuf@std@@IEAAXXZ */
13428 DEFINE_THISCALL_WRAPPER(strstreambuf__Tidy, 4)
13429 void __thiscall strstreambuf__Tidy(strstreambuf *this)
13431 TRACE("(%p)\n", this);
13433 if((this->strmode & STRSTATE_Allocated) && !(this->strmode & STRSTATE_Frozen)) {
13434 if(this->pfree)
13435 this->pfree(basic_streambuf_char_eback(&this->base));
13436 else
13437 MSVCRT_operator_delete(basic_streambuf_char_eback(&this->base));
13440 this->endsave = NULL;
13441 this->seekhigh = NULL;
13442 this->strmode &= ~(STRSTATE_Allocated | STRSTATE_Frozen);
13443 basic_streambuf_char_setg(&this->base, NULL, NULL, NULL);
13444 basic_streambuf_char_setp(&this->base, NULL, NULL);
13447 /* ??1strstreambuf@std@@UAE@XZ */
13448 /* ??1strstreambuf@std@@UEAA@XZ */
13449 DEFINE_THISCALL_WRAPPER(strstreambuf_dtor, 4)
13450 void __thiscall strstreambuf_dtor(strstreambuf *this)
13452 TRACE("(%p)\n", this);
13454 strstreambuf__Tidy(this);
13455 basic_streambuf_char_dtor(&this->base);
13458 DEFINE_THISCALL_WRAPPER(strstreambuf_vector_dtor, 8)
13459 strstreambuf* __thiscall strstreambuf_vector_dtor(strstreambuf *this, unsigned int flags)
13461 TRACE("(%p %x)\n", this, flags);
13462 if(flags & 2) {
13463 /* we have an array, with the number of elements stored before the first object */
13464 INT_PTR i, *ptr = (INT_PTR *)this-1;
13466 for(i=*ptr-1; i>=0; i--)
13467 strstreambuf_dtor(this+i);
13468 MSVCRT_operator_delete(ptr);
13469 } else {
13470 strstreambuf_dtor(this);
13471 if(flags & 1)
13472 MSVCRT_operator_delete(this);
13475 return this;
13478 /* ?freeze@strstreambuf@std@@QAEX_N@Z */
13479 /* ?freeze@strstreambuf@std@@QEAAX_N@Z */
13480 DEFINE_THISCALL_WRAPPER(strstreambuf_freeze, 8)
13481 void __thiscall strstreambuf_freeze(strstreambuf *this, MSVCP_bool freeze)
13483 TRACE("(%p %d)\n", this, freeze);
13485 if(!freeze == !(this->strmode & STRSTATE_Frozen))
13486 return;
13488 if(freeze) {
13489 this->strmode |= STRSTATE_Frozen;
13490 this->endsave = basic_streambuf_char_epptr(&this->base);
13491 basic_streambuf_char_setp_next(&this->base, basic_streambuf_char_pbase(&this->base),
13492 basic_streambuf_char_pptr(&this->base), basic_streambuf_char_eback(&this->base));
13493 }else {
13494 this->strmode &= ~STRSTATE_Frozen;
13495 basic_streambuf_char_setp_next(&this->base, basic_streambuf_char_pbase(&this->base),
13496 basic_streambuf_char_pptr(&this->base), this->endsave);
13500 /* ?str@strstreambuf@std@@QAEPADXZ */
13501 /* ?str@strstreambuf@std@@QEAAPEADXZ */
13502 DEFINE_THISCALL_WRAPPER(strstreambuf_str, 4)
13503 char* __thiscall strstreambuf_str(strstreambuf *this)
13505 TRACE("(%p)\n", this);
13507 strstreambuf_freeze(this, TRUE);
13508 return basic_streambuf_char_gptr(&this->base);
13511 /* ?pcount@strstreambuf@std@@QBEHXZ */
13512 /* ?pcount@strstreambuf@std@@QEBA_JXZ */
13513 DEFINE_THISCALL_WRAPPER(strstreambuf_pcount, 4)
13514 streamsize __thiscall strstreambuf_pcount(const strstreambuf *this)
13516 char *ppos = basic_streambuf_char_pptr(&this->base);
13518 TRACE("(%p)\n", this);
13520 return ppos ? ppos-basic_streambuf_char_pbase(&this->base) : 0;
13523 /* ?overflow@strstreambuf@std@@MAEHH@Z */
13524 /* ?overflow@strstreambuf@std@@MEAAHH@Z */
13525 DEFINE_THISCALL_WRAPPER(strstreambuf_overflow, 8)
13526 int __thiscall strstreambuf_overflow(strstreambuf *this, int c)
13528 MSVCP_size_t old_size, size;
13529 char *ptr, *buf;
13531 TRACE("(%p %d)\n", this, c);
13533 if(c == EOF)
13534 return !EOF;
13536 if(this->strmode & STRSTATE_Frozen)
13537 return EOF;
13539 ptr = basic_streambuf_char_pptr(&this->base);
13540 if(ptr && ptr<basic_streambuf_char_epptr(&this->base))
13541 return (unsigned char)(*basic_streambuf_char__Pninc(&this->base) = c);
13543 if(!(this->strmode & STRSTATE_Dynamic) || (this->strmode & STRSTATE_Constant))
13544 return EOF;
13546 ptr = basic_streambuf_char_eback(&this->base);
13547 old_size = ptr ? basic_streambuf_char_epptr(&this->base) - ptr : 0;
13549 size = old_size + old_size/2;
13550 if(size < this->minsize)
13551 size = this->minsize;
13553 if(this->palloc)
13554 buf = this->palloc(size);
13555 else
13556 buf = MSVCRT_operator_new(size);
13557 if(!buf)
13558 return EOF;
13560 memcpy(buf, ptr, old_size);
13561 if(this->strmode & STRSTATE_Allocated) {
13562 if(this->pfree)
13563 this->pfree(ptr);
13564 else
13565 MSVCRT_operator_delete(ptr);
13568 this->strmode |= STRSTATE_Allocated;
13569 if(!old_size) {
13570 this->seekhigh = buf;
13571 basic_streambuf_char_setp(&this->base, buf, buf+size);
13572 basic_streambuf_char_setg(&this->base, buf, buf, buf);
13573 }else {
13574 this->seekhigh = this->seekhigh-ptr+buf;
13575 basic_streambuf_char_setp_next(&this->base, basic_streambuf_char_pbase(&this->base)-ptr+buf,
13576 basic_streambuf_char_pptr(&this->base)-ptr+buf, buf+size);
13577 basic_streambuf_char_setg(&this->base, buf, basic_streambuf_char_gptr(&this->base)-ptr+buf,
13578 basic_streambuf_char_pptr(&this->base));
13581 return (unsigned char)(*basic_streambuf_char__Pninc(&this->base) = c);
13584 /* ?pbackfail@strstreambuf@std@@MAEHH@Z */
13585 /* ?pbackfail@strstreambuf@std@@MEAAHH@Z */
13586 DEFINE_THISCALL_WRAPPER(strstreambuf_pbackfail, 8)
13587 int __thiscall strstreambuf_pbackfail(strstreambuf *this, int c)
13589 char *ptr = basic_streambuf_char_gptr(&this->base);
13591 TRACE("(%p %d)\n", this, c);
13593 if(ptr<=basic_streambuf_char_eback(&this->base)
13594 || ((this->strmode & STRSTATE_Constant) && c!=ptr[-1]))
13595 return EOF;
13597 basic_streambuf_char_gbump(&this->base, -1);
13598 if(c == EOF)
13599 return !EOF;
13600 if(this->strmode & STRSTATE_Constant)
13601 return (unsigned char)c;
13603 return (unsigned char)(ptr[0] = c);
13606 /* ?seekoff@strstreambuf@std@@MAE?AV?$fpos@H@2@JHH@Z */
13607 /* ?seekoff@strstreambuf@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
13608 #if STREAMOFF_BITS == 64
13609 DEFINE_THISCALL_WRAPPER(strstreambuf_seekoff, 24)
13610 #else
13611 DEFINE_THISCALL_WRAPPER(strstreambuf_seekoff, 20)
13612 #endif
13613 fpos_int* __thiscall strstreambuf_seekoff(strstreambuf *this, fpos_int *ret, streamoff off, int way, int mode)
13615 char *eback = basic_streambuf_char_eback(&this->base);
13616 char *pptr = basic_streambuf_char_pptr(&this->base);
13617 char *gptr = basic_streambuf_char_gptr(&this->base);
13619 TRACE("(%p %p %s %d %d)\n", this, ret, wine_dbgstr_longlong(off), way, mode);
13621 ret->off = 0;
13622 ret->state = 0;
13624 if(pptr > this->seekhigh)
13625 this->seekhigh = pptr;
13627 if((mode & OPENMODE_in) && gptr) {
13628 if(way==SEEKDIR_cur && !(mode & OPENMODE_out))
13629 off += gptr-eback;
13630 else if(way == SEEKDIR_end)
13631 off += this->seekhigh-eback;
13632 else if(way != SEEKDIR_beg)
13633 off = -1;
13635 if(off<0 || off>this->seekhigh-eback) {
13636 off = -1;
13637 }else {
13638 basic_streambuf_char_gbump(&this->base, eback-gptr+off);
13639 if((mode & OPENMODE_out) && pptr) {
13640 basic_streambuf_char_setp_next(&this->base, eback,
13641 gptr, basic_streambuf_char_epptr(&this->base));
13644 }else if((mode & OPENMODE_out) && pptr) {
13645 if(way == SEEKDIR_cur)
13646 off += pptr-eback;
13647 else if(way == SEEKDIR_end)
13648 off += this->seekhigh-eback;
13649 else if(way != SEEKDIR_beg)
13650 off = -1;
13652 if(off<0 || off>this->seekhigh-eback)
13653 off = -1;
13654 else
13655 basic_streambuf_char_pbump(&this->base, eback-pptr+off);
13656 }else {
13657 off = -1;
13660 ret->pos = off;
13661 return ret;
13664 /* ?seekpos@strstreambuf@std@@MAE?AV?$fpos@H@2@V32@H@Z */
13665 /* ?seekpos@strstreambuf@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
13666 DEFINE_THISCALL_WRAPPER(strstreambuf_seekpos, 36)
13667 fpos_int* __thiscall strstreambuf_seekpos(strstreambuf *this, fpos_int *ret, fpos_int pos, int mode)
13669 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_int(&pos), mode);
13671 if(pos.off==-1 && pos.pos==0 && pos.state==0) {
13672 *ret = pos;
13673 return ret;
13676 return strstreambuf_seekoff(this, ret, pos.off, SEEKDIR_beg, mode);
13679 /* ?underflow@strstreambuf@std@@MAEHXZ */
13680 /* ?underflow@strstreambuf@std@@MEAAHXZ */
13681 DEFINE_THISCALL_WRAPPER(strstreambuf_underflow, 4)
13682 int __thiscall strstreambuf_underflow(strstreambuf *this)
13684 char *gptr = basic_streambuf_char_gptr(&this->base);
13685 char *pptr;
13687 TRACE("(%p)\n", this);
13689 if(!gptr)
13690 return EOF;
13692 if(gptr < basic_streambuf_char_egptr(&this->base))
13693 return (unsigned char)(*gptr);
13695 pptr = basic_streambuf_char_gptr(&this->base);
13696 if(pptr > this->seekhigh)
13697 this->seekhigh = pptr;
13699 if(this->seekhigh <= gptr)
13700 return EOF;
13702 basic_streambuf_char_setg(&this->base, basic_streambuf_char_eback(&this->base),
13703 gptr, this->seekhigh);
13704 return (unsigned char)(*gptr);
13707 static inline basic_ios_char* ostrstream_to_basic_ios(ostrstream *ptr)
13709 return (basic_ios_char*)((char*)ptr+ostrstream_vbtable[1]);
13712 static inline ostrstream* ostrstream_from_basic_ios(basic_ios_char *ptr)
13714 return (ostrstream*)((char*)ptr-ostrstream_vbtable[1]);
13717 /* ??0ostrstream@std@@QAE@PADHH@Z */
13718 #if STREAMSIZE_BITS == 64
13719 DEFINE_THISCALL_WRAPPER(ostrstream_ctor, 24)
13720 #else
13721 DEFINE_THISCALL_WRAPPER(ostrstream_ctor, 20)
13722 #endif
13723 ostrstream* __thiscall ostrstream_ctor(ostrstream *this, char *buf, streamsize size, int mode, MSVCP_bool virt_init)
13725 basic_ios_char *basic_ios;
13727 TRACE("(%p %p %s %d %d)\n", this, buf, wine_dbgstr_longlong(size), mode, virt_init);
13729 if(virt_init) {
13730 this->base.vbtable = ostrstream_vbtable;
13731 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
13732 basic_ios_char_ctor(basic_ios);
13733 }else {
13734 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
13737 strstreambuf_ctor_get_put(&this->buf, buf, size,
13738 buf && (mode & OPENMODE_app) ? buf+strlen(buf) : buf);
13739 basic_ostream_char_ctor(&this->base, &this->buf.base, FALSE, FALSE);
13740 basic_ios->base.vtable = &MSVCP_ostrstream_vtable;
13741 return this;
13744 /* ??1ostrstream@std@@UAE@XZ */
13745 /* ??1ostrstream@std@@UEAA@XZ */
13746 DEFINE_THISCALL_WRAPPER(ostrstream_dtor, 4)
13747 void __thiscall ostrstream_dtor(basic_ios_char *base)
13749 ostrstream *this = ostrstream_from_basic_ios(base);
13751 TRACE("(%p)\n", this);
13753 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(&this->base));
13754 strstreambuf_dtor(&this->buf);
13757 static void ostrstream_vbase_dtor(ostrstream *this)
13759 TRACE("(%p)\n", this);
13761 ostrstream_dtor(ostrstream_to_basic_ios(this));
13762 basic_ios_char_dtor(basic_ostream_char_get_basic_ios(&this->base));
13765 DEFINE_THISCALL_WRAPPER(ostrstream_vector_dtor, 8)
13766 ostrstream* __thiscall ostrstream_vector_dtor(basic_ios_char *base, unsigned int flags)
13768 ostrstream *this = ostrstream_from_basic_ios(base);
13770 TRACE("(%p %x)\n", this, flags);
13772 if(flags & 2) {
13773 /* we have an array, with the number of elements stored before the first object */
13774 INT_PTR i, *ptr = (INT_PTR *)this-1;
13776 for(i=*ptr-1; i>=0; i--)
13777 ostrstream_vbase_dtor(this+i);
13778 MSVCRT_operator_delete(ptr);
13779 } else {
13780 ostrstream_vbase_dtor(this);
13781 if(flags & 1)
13782 MSVCRT_operator_delete(this);
13785 return this;
13788 static inline istrstream* istrstream_from_basic_ios(basic_ios_char *ptr)
13790 return (istrstream*)((char*)ptr-istrstream_vbtable[1]);
13793 /* ??1istrstream@std@@UAE@XZ */
13794 /* ??1istrstream@std@@UEAA@XZ */
13795 DEFINE_THISCALL_WRAPPER(istrstream_dtor, 4)
13796 void __thiscall istrstream_dtor(basic_ios_char *base)
13798 istrstream *this = istrstream_from_basic_ios(base);
13800 TRACE("(%p)\n", this);
13802 basic_istream_char_dtor(basic_istream_char_to_basic_ios(&this->base));
13803 strstreambuf_dtor(&this->buf);
13806 static inline basic_ios_char* strstream_to_basic_ios(strstream *ptr)
13808 return (basic_ios_char*)((char*)ptr+strstream_vbtable1[1]);
13811 static inline strstream* strstream_from_basic_ios(basic_ios_char *ptr)
13813 return (strstream*)((char*)ptr-strstream_vbtable1[1]);
13816 /* ??$?6MDU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$complex@M@0@@Z */
13817 /* ??$?6MDU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@M@0@@Z */
13818 basic_ostream_char* __cdecl basic_ostream_char_print_complex_float(basic_ostream_char *ostr, const complex_float *val)
13820 struct {
13821 basic_ostringstream_char obj;
13822 basic_ios_char vbase;
13823 } oss;
13824 ios_base *ostringstream_ios_base, *ostream_ios_base;
13825 locale loc;
13826 basic_string_char str;
13827 basic_ostringstream_char_ctor(&oss.obj);
13828 ostringstream_ios_base = &oss.vbase.base;
13829 ostream_ios_base = &basic_ostream_char_get_basic_ios(ostr)->base;
13830 TRACE("(%p %p)\n", ostr, val);
13832 ios_base_imbue(ostringstream_ios_base, &loc, ostream_ios_base->loc);
13833 locale_dtor(&loc);
13834 ios_base_precision_set(ostringstream_ios_base, ios_base_precision_get(ostream_ios_base));
13835 ios_base_flags_set(ostringstream_ios_base, ios_base_flags_get(ostream_ios_base));
13837 basic_ostream_char_print_ch(&oss.obj.base, '(');
13838 basic_ostream_char_print_float(&oss.obj.base, val->real);
13839 basic_ostream_char_print_ch(&oss.obj.base, ',');
13840 basic_ostream_char_print_float(&oss.obj.base, val->imag);
13841 basic_ostream_char_print_ch(&oss.obj.base, ')');
13843 basic_ostringstream_char_str_get(&oss.obj, &str);
13844 basic_ostringstream_char_dtor(&oss.vbase);
13845 basic_ostream_char_print_bstr(ostr, &str);
13846 MSVCP_basic_string_char_dtor(&str);
13847 return ostr;
13850 /* ??$?6NDU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$complex@N@0@@Z */
13851 /* ??$?6NDU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@N@0@@Z */
13852 basic_ostream_char* __cdecl basic_ostream_char_print_complex_double(basic_ostream_char *ostr, const complex_double *val)
13854 struct {
13855 basic_ostringstream_char obj;
13856 basic_ios_char vbase;
13857 } oss;
13858 ios_base *ostringstream_ios_base, *ostream_ios_base;
13859 locale loc;
13860 basic_string_char str;
13861 basic_ostringstream_char_ctor(&oss.obj);
13862 ostringstream_ios_base = &oss.vbase.base;
13863 ostream_ios_base = &basic_ostream_char_get_basic_ios(ostr)->base;
13864 TRACE("(%p %p)\n", ostr, val);
13866 ios_base_imbue(ostringstream_ios_base, &loc, ostream_ios_base->loc);
13867 locale_dtor(&loc);
13868 ios_base_precision_set(ostringstream_ios_base, ios_base_precision_get(ostream_ios_base));
13869 ios_base_flags_set(ostringstream_ios_base, ios_base_flags_get(ostream_ios_base));
13871 basic_ostream_char_print_ch(&oss.obj.base, '(');
13872 basic_ostream_char_print_double(&oss.obj.base, val->real);
13873 basic_ostream_char_print_ch(&oss.obj.base, ',');
13874 basic_ostream_char_print_double(&oss.obj.base, val->imag);
13875 basic_ostream_char_print_ch(&oss.obj.base, ')');
13877 basic_ostringstream_char_str_get(&oss.obj, &str);
13878 basic_ostringstream_char_dtor(&oss.vbase);
13879 basic_ostream_char_print_bstr(ostr, &str);
13880 MSVCP_basic_string_char_dtor(&str);
13881 return ostr;
13884 /* ??$?6odu?$char_traits@d@std@@@std@@yaaav?$basic_ostream@du?$char_traits@d@std@@@0@aav10@abv?$complex@o@0@@Z */
13885 /* ??$?6ODU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@O@0@@Z */
13886 basic_ostream_char* __cdecl basic_ostream_char_print_complex_ldouble(basic_ostream_char *ostr, const complex_double *val)
13888 struct {
13889 basic_ostringstream_char obj;
13890 basic_ios_char vbase;
13891 } oss;
13892 ios_base *ostringstream_ios_base, *ostream_ios_base;
13893 locale loc;
13894 basic_string_char str;
13895 basic_ostringstream_char_ctor(&oss.obj);
13896 ostringstream_ios_base = &oss.vbase.base;
13897 ostream_ios_base = &basic_ostream_char_get_basic_ios(ostr)->base;
13898 TRACE("(%p %p)\n", ostr, val);
13900 ios_base_imbue(ostringstream_ios_base, &loc, ostream_ios_base->loc);
13901 locale_dtor(&loc);
13902 ios_base_precision_set(ostringstream_ios_base, ios_base_precision_get(ostream_ios_base));
13903 ios_base_flags_set(ostringstream_ios_base, ios_base_flags_get(ostream_ios_base));
13905 basic_ostream_char_print_ch(&oss.obj.base, '(');
13906 basic_ostream_char_print_ldouble(&oss.obj.base, val->real);
13907 basic_ostream_char_print_ch(&oss.obj.base, ',');
13908 basic_ostream_char_print_ldouble(&oss.obj.base, val->imag);
13909 basic_ostream_char_print_ch(&oss.obj.base, ')');
13911 basic_ostringstream_char_str_get(&oss.obj, &str);
13912 basic_ostringstream_char_dtor(&oss.vbase);
13913 basic_ostream_char_print_bstr(ostr, &str);
13914 MSVCP_basic_string_char_dtor(&str);
13915 return ostr;
13918 /* ??0strstream@std@@QAE@PADHH@Z */
13919 /* ??0strstream@std@@QEAA@PEAD_JH@Z */
13920 #if STREAMSIZE_BITS == 64
13921 DEFINE_THISCALL_WRAPPER(strstream_ctor, 24)
13922 #else
13923 DEFINE_THISCALL_WRAPPER(strstream_ctor, 20)
13924 #endif
13925 strstream* __thiscall strstream_ctor(strstream *this, char *buf, streamsize size, int mode, MSVCP_bool virt_init)
13927 basic_ios_char *basic_ios;
13929 TRACE("(%p %p %s %d %d)\n", this, buf, wine_dbgstr_longlong(size), mode, virt_init);
13931 if(virt_init) {
13932 this->base.base1.vbtable = strstream_vbtable1;
13933 this->base.base2.vbtable = strstream_vbtable2;
13934 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
13935 basic_ios_char_ctor(basic_ios);
13936 }else {
13937 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
13940 strstreambuf_ctor_get_put(&this->buf, buf, size,
13941 buf && (mode & OPENMODE_app) ? buf+strlen(buf) : buf);
13942 basic_iostream_char_ctor(&this->base, &this->buf.base, FALSE);
13943 basic_ios->base.vtable = &MSVCP_strstream_vtable;
13944 return this;
13947 /* ??1strstream@std@@UAE@XZ */
13948 /* ??1strstream@std@@UEAA@XZ */
13949 DEFINE_THISCALL_WRAPPER(strstream_dtor, 4)
13950 void __thiscall strstream_dtor(basic_ios_char *base)
13952 strstream *this = strstream_from_basic_ios(base);
13954 TRACE("(%p)\n", this);
13956 basic_iostream_char_dtor(basic_iostream_char_to_basic_ios(&this->base));
13957 strstreambuf_dtor(&this->buf);
13960 static void strstream_vbase_dtor(strstream *this)
13962 TRACE("(%p)\n", this);
13964 strstream_dtor(strstream_to_basic_ios(this));
13965 basic_ios_char_dtor(basic_istream_char_get_basic_ios(&this->base.base1));
13968 DEFINE_THISCALL_WRAPPER(strstream_vector_dtor, 8)
13969 strstream* __thiscall strstream_vector_dtor(basic_ios_char *base, unsigned int flags)
13971 strstream *this = strstream_from_basic_ios(base);
13973 TRACE("(%p %x)\n", this, flags);
13975 if(flags & 2) {
13976 /* we have an array, with the number of elements stored before the first object */
13977 INT_PTR i, *ptr = (INT_PTR *)this-1;
13979 for(i=*ptr-1; i>=0; i--)
13980 strstream_vbase_dtor(this+i);
13981 MSVCRT_operator_delete(ptr);
13982 } else {
13983 strstream_vbase_dtor(this);
13984 if(flags & 1)
13985 MSVCRT_operator_delete(this);
13988 return this;
13991 static void __cdecl setprecision_func(ios_base *base, streamsize prec)
13993 ios_base_precision_set(base, prec);
13996 /* ?setprecision@std@@YA?AU?$_Smanip@H@1@H@Z */
13997 /* ?setprecision@std@@YA?AU?$_Smanip@_J@1@_J@Z */
13998 manip_streamsize* __cdecl setprecision(manip_streamsize *ret, streamsize prec)
14000 TRACE("(%p %s)\n", ret, wine_dbgstr_longlong(prec));
14002 ret->pfunc = setprecision_func;
14003 ret->arg = prec;
14004 return ret;
14007 static void __cdecl setw_func(ios_base *base, streamsize width)
14009 ios_base_width_set(base, width);
14012 /* ?setw@std@@YA?AU?$_Smanip@H@1@H@Z */
14013 /* ?setw@std@@YA?AU?$_Smanip@_J@1@_J@Z */
14014 manip_streamsize* __cdecl setw(manip_streamsize *ret, streamsize width)
14016 TRACE("(%p %s)\n", ret, wine_dbgstr_longlong(width));
14018 ret->pfunc = setw_func;
14019 ret->arg = width;
14020 return ret;
14023 static void __cdecl resetioflags_func(ios_base *base, int mask)
14025 ios_base_setf_mask(base, 0, mask);
14028 /* ?resetiosflags@std@@YA?AU?$_Smanip@H@1@H@Z */
14029 manip_int* __cdecl resetiosflags(manip_int *ret, int mask)
14031 TRACE("(%p %d)\n", ret, mask);
14033 ret->pfunc = resetioflags_func;
14034 ret->arg = mask;
14035 return ret;
14038 static void __cdecl setiosflags_func(ios_base *base, int mask)
14040 ios_base_setf_mask(base, FMTFLAG_mask, mask);
14043 /* ?setiosflags@std@@YA?AU?$_Smanip@H@1@H@Z */
14044 manip_int* __cdecl setiosflags(manip_int *ret, int mask)
14046 TRACE("(%p %d)\n", ret, mask);
14048 ret->pfunc = setiosflags_func;
14049 ret->arg = mask;
14050 return ret;
14053 static void __cdecl setbase_func(ios_base *base, int set_base)
14055 if(set_base == 10)
14056 set_base = FMTFLAG_dec;
14057 else if(set_base == 8)
14058 set_base = FMTFLAG_oct;
14059 else if(set_base == 16)
14060 set_base = FMTFLAG_hex;
14061 else
14062 set_base = 0;
14064 ios_base_setf_mask(base, set_base, FMTFLAG_basefield);
14067 /* ?setbase@std@@YA?AU?$_Smanip@H@1@H@Z */
14068 manip_int* __cdecl setbase(manip_int *ret, int base)
14070 TRACE("(%p %d)\n", ret, base);
14072 ret->pfunc = setbase_func;
14073 ret->arg = base;
14074 return ret;
14077 static basic_filebuf_char filebuf_char_stdin;
14078 /* ?cin@std@@3V?$basic_istream@DU?$char_traits@D@std@@@1@A */
14079 struct {
14080 basic_istream_char obj;
14081 basic_ios_char vbase;
14082 } cin = { { 0 } };
14083 /* ?_Ptr_cin@std@@3PAV?$basic_istream@DU?$char_traits@D@std@@@1@A */
14084 /* ?_Ptr_cin@std@@3PEAV?$basic_istream@DU?$char_traits@D@std@@@1@EA */
14085 basic_istream_char *_Ptr_cin = &cin.obj;
14087 static basic_filebuf_wchar filebuf_short_stdin;
14088 /* ?wcin@std@@3V?$basic_istream@GU?$char_traits@G@std@@@1@A */
14089 struct {
14090 basic_istream_wchar obj;
14091 basic_ios_wchar vbase;
14092 } ucin = { { 0 } };
14093 /* ?_Ptr_wcin@std@@3PAV?$basic_istream@GU?$char_traits@G@std@@@1@A */
14094 /* ?_Ptr_wcin@std@@3PEAV?$basic_istream@GU?$char_traits@G@std@@@1@EA */
14095 basic_istream_wchar *_Ptr_ucin = &ucin.obj;
14097 static basic_filebuf_wchar filebuf_wchar_stdin;
14098 /* ?wcin@std@@3V?$basic_istream@_WU?$char_traits@_W@std@@@1@A */
14099 struct {
14100 basic_istream_wchar obj;
14101 basic_ios_wchar vbase;
14102 } wcin = { { 0 } };
14103 /* ?_Ptr_wcin@std@@3PAV?$basic_istream@_WU?$char_traits@_W@std@@@1@A */
14104 /* ?_Ptr_wcin@std@@3PEAV?$basic_istream@_WU?$char_traits@_W@std@@@1@EA */
14105 basic_istream_wchar *_Ptr_wcin = &wcin.obj;
14107 static basic_filebuf_char filebuf_char_stdout;
14108 /* ?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A */
14109 struct {
14110 basic_ostream_char obj;
14111 basic_ios_char vbase;
14112 } cout = { { 0 } };
14113 /* ?_Ptr_cout@std@@3PAV?$basic_ostream@DU?$char_traits@D@std@@@1@A */
14114 /* ?_Ptr_cout@std@@3PEAV?$basic_ostream@DU?$char_traits@D@std@@@1@EA */
14115 basic_ostream_char *_Ptr_cout = &cout.obj;
14117 static basic_filebuf_wchar filebuf_short_stdout;
14118 /* ?wcout@std@@3V?$basic_ostream@GU?$char_traits@G@std@@@1@A */
14119 struct {
14120 basic_ostream_wchar obj;
14121 basic_ios_wchar vbase;
14122 } ucout = { { 0 } };
14123 /* ?_Ptr_wcout@std@@3PAV?$basic_ostream@GU?$char_traits@G@std@@@1@A */
14124 /* ?_Ptr_wcout@std@@3PEAV?$basic_ostream@GU?$char_traits@G@std@@@1@EA */
14125 basic_ostream_wchar *_Ptr_ucout = &ucout.obj;
14127 static basic_filebuf_wchar filebuf_wchar_stdout;
14128 /* ?wcout@std@@3V?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
14129 struct {
14130 basic_ostream_wchar obj;
14131 basic_ios_wchar vbase;
14132 } wcout = { { 0 } };
14133 /* ?_Ptr_wcout@std@@3PAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
14134 /* ?_Ptr_wcout@std@@3PEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@EA */
14135 basic_ostream_wchar *_Ptr_wcout = &wcout.obj;
14137 static basic_filebuf_char filebuf_char_stderr;
14138 /* ?cerr@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A */
14139 struct {
14140 basic_ostream_char obj;
14141 basic_ios_char vbase;
14142 } cerr = { { 0 } };
14143 /* ?_Ptr_cerr@std@@3PAV?$basic_ostream@DU?$char_traits@D@std@@@1@A */
14144 /* ?_Ptr_cerr@std@@3PEAV?$basic_ostream@DU?$char_traits@D@std@@@1@EA */
14145 basic_ostream_char *_Ptr_cerr = &cerr.obj;
14147 static basic_filebuf_wchar filebuf_short_stderr;
14148 /* ?wcerr@std@@3V?$basic_ostream@GU?$char_traits@G@std@@@1@A */
14149 struct {
14150 basic_ostream_wchar obj;
14151 basic_ios_wchar vbase;
14152 } ucerr = { { 0 } };
14153 /* ?_Ptr_wcerr@std@@3PAV?$basic_ostream@GU?$char_traits@G@std@@@1@A */
14154 /* ?_Ptr_wcerr@std@@3PEAV?$basic_ostream@GU?$char_traits@G@std@@@1@EA */
14155 basic_ostream_wchar *_Ptr_ucerr = &ucerr.obj;
14157 static basic_filebuf_wchar filebuf_wchar_stderr;
14158 /* ?wcerr@std@@3V?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
14159 struct {
14160 basic_ostream_wchar obj;
14161 basic_ios_wchar vbase;
14162 } wcerr = { { 0 } };
14163 /* ?_Ptr_wcerr@std@@3PAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
14164 /* ?_Ptr_wcerr@std@@3PEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@EA */
14165 basic_ostream_wchar *_Ptr_wcerr = &wcerr.obj;
14167 static basic_filebuf_char filebuf_char_log;
14168 /* ?clog@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A */
14169 struct {
14170 basic_ostream_char obj;
14171 basic_ios_char vbase;
14172 } clog = { { 0 } };
14173 /* ?_Ptr_clog@std@@3PAV?$basic_ostream@DU?$char_traits@D@std@@@1@A */
14174 /* ?_Ptr_clog@std@@3PEAV?$basic_ostream@DU?$char_traits@D@std@@@1@EA */
14175 basic_ostream_char *_Ptr_clog = &clog.obj;
14177 static basic_filebuf_wchar filebuf_short_log;
14178 /* ?wclog@std@@3V?$basic_ostream@GU?$char_traits@G@std@@@1@A */
14179 struct {
14180 basic_ostream_wchar obj;
14181 basic_ios_wchar vbase;
14182 } uclog = { { 0 } };
14183 /* ?_Ptr_wclog@std@@3PAV?$basic_ostream@GU?$char_traits@G@std@@@1@A */
14184 /* ?_Ptr_wclog@std@@3PEAV?$basic_ostream@GU?$char_traits@G@std@@@1@EA */
14185 basic_ostream_wchar *_Ptr_uclog = &uclog.obj;
14187 static basic_filebuf_wchar filebuf_wchar_log;
14188 /* ?wclog@std@@3V?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
14189 struct {
14190 basic_ostream_wchar obj;
14191 basic_ios_wchar vbase;
14192 } wclog = { { 0 } };
14193 /* ?_Ptr_wclog@std@@3PAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
14194 /* ?_Ptr_wclog@std@@3PEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@EA */
14195 basic_ostream_wchar *_Ptr_wclog = &wclog.obj;
14197 /* ?_Init_cnt@Init@ios_base@std@@0HA */
14198 int ios_base_Init__Init_cnt = -1;
14200 /* ?_Init_cnt_func@Init@ios_base@std@@CAAAHXZ */
14201 /* ?_Init_cnt_func@Init@ios_base@std@@CAAEAHXZ */
14202 int* __cdecl ios_base_Init__Init_cnt_func(void)
14204 return &ios_base_Init__Init_cnt;
14207 /* ?_Init_ctor@Init@ios_base@std@@CAXPAV123@@Z */
14208 /* ?_Init_ctor@Init@ios_base@std@@CAXPEAV123@@Z */
14209 void __cdecl ios_base_Init__Init_ctor(void *this)
14211 TRACE("(%p)\n", this);
14213 if(ios_base_Init__Init_cnt < 0)
14214 ios_base_Init__Init_cnt = 1;
14215 else
14216 ios_base_Init__Init_cnt++;
14219 /* ??0Init@ios_base@std@@QAE@XZ */
14220 /* ??0Init@ios_base@std@@QEAA@XZ */
14221 DEFINE_THISCALL_WRAPPER(ios_base_Init_ctor, 4)
14222 void* __thiscall ios_base_Init_ctor(void *this)
14224 ios_base_Init__Init_ctor(this);
14225 return this;
14228 /* ?_Init_dtor@Init@ios_base@std@@CAXPAV123@@Z */
14229 /* ?_Init_dtor@Init@ios_base@std@@CAXPEAV123@@Z */
14230 void __cdecl ios_base_Init__Init_dtor(void *this)
14232 TRACE("(%p)\n", this);
14234 ios_base_Init__Init_cnt--;
14235 if(!ios_base_Init__Init_cnt) {
14236 basic_ostream_char_flush(&cout.obj);
14237 basic_ostream_char_flush(&cerr.obj);
14238 basic_ostream_char_flush(&clog.obj);
14242 /* ??1Init@ios_base@std@@QAE@XZ */
14243 /* ??1Init@ios_base@std@@QEAA@XZ */
14244 DEFINE_THISCALL_WRAPPER(ios_base_Init_dtor, 4)
14245 void __thiscall ios_base_Init_dtor(void *this)
14247 ios_base_Init__Init_dtor(this);
14250 /* ??4Init@ios_base@std@@QAEAAV012@ABV012@@Z */
14251 /* ??4Init@ios_base@std@@QEAAAEAV012@AEBV012@@Z */
14252 DEFINE_THISCALL_WRAPPER(ios_base_Init_op_assign, 8)
14253 void* __thiscall ios_base_Init_op_assign(void *this, void *rhs)
14255 TRACE("(%p %p)\n", this, rhs);
14256 return this;
14259 /* ?_Init_cnt@_Winit@std@@0HA */
14260 int _Winit__Init_cnt = -1;
14262 /* ??0_Winit@std@@QAE@XZ */
14263 /* ??0_Winit@std@@QEAA@XZ */
14264 DEFINE_THISCALL_WRAPPER(_Winit_ctor, 4)
14265 void* __thiscall _Winit_ctor(void *this)
14267 TRACE("(%p)\n", this);
14269 if(_Winit__Init_cnt < 0)
14270 _Winit__Init_cnt = 1;
14271 else
14272 _Winit__Init_cnt++;
14274 return this;
14277 /* ??1_Winit@std@@QAE@XZ */
14278 /* ??1_Winit@std@@QAE@XZ */
14279 DEFINE_THISCALL_WRAPPER(_Winit_dtor, 4)
14280 void __thiscall _Winit_dtor(void *this)
14282 TRACE("(%p)\n", this);
14284 _Winit__Init_cnt--;
14285 if(!_Winit__Init_cnt) {
14286 basic_ostream_wchar_flush(&wcout.obj);
14287 basic_ostream_wchar_flush(&wcerr.obj);
14288 basic_ostream_wchar_flush(&wclog.obj);
14292 /* ??4_Winit@std@@QAEAAV01@ABV01@@Z */
14293 /* ??4_Winit@std@@QEAAAEAV01@AEBV01@@Z */
14294 DEFINE_THISCALL_WRAPPER(_Winit_op_assign, 8)
14295 void* __thiscall _Winit_op_assign(void *this, void *rhs)
14297 TRACE("(%p %p)\n", this, rhs);
14298 return this;
14301 void init_io(void *base)
14303 #ifdef __x86_64__
14304 init_iosb_rtti(base);
14305 init_ios_base_rtti(base);
14306 init_basic_ios_char_rtti(base);
14307 init_basic_ios_wchar_rtti(base);
14308 init_basic_ios_short_rtti(base);
14309 init_basic_streambuf_char_rtti(base);
14310 init_basic_streambuf_wchar_rtti(base);
14311 init_basic_streambuf_short_rtti(base);
14312 init_basic_filebuf_char_rtti(base);
14313 init_basic_filebuf_wchar_rtti(base);
14314 init_basic_filebuf_short_rtti(base);
14315 init_basic_stringbuf_char_rtti(base);
14316 init_basic_stringbuf_wchar_rtti(base);
14317 init_basic_stringbuf_short_rtti(base);
14318 init_basic_ostream_char_rtti(base);
14319 init_basic_ostream_wchar_rtti(base);
14320 init_basic_ostream_short_rtti(base);
14321 init_basic_istream_char_rtti(base);
14322 init_basic_istream_wchar_rtti(base);
14323 init_basic_istream_short_rtti(base);
14324 init_basic_iostream_char_rtti(base);
14325 init_basic_iostream_wchar_rtti(base);
14326 init_basic_iostream_short_rtti(base);
14327 init_basic_ofstream_char_rtti(base);
14328 init_basic_ofstream_wchar_rtti(base);
14329 init_basic_ofstream_short_rtti(base);
14330 init_basic_ifstream_char_rtti(base);
14331 init_basic_ifstream_wchar_rtti(base);
14332 init_basic_ifstream_short_rtti(base);
14333 init_basic_fstream_char_rtti(base);
14334 init_basic_fstream_wchar_rtti(base);
14335 init_basic_fstream_short_rtti(base);
14336 init_basic_ostringstream_char_rtti(base);
14337 init_basic_ostringstream_wchar_rtti(base);
14338 init_basic_ostringstream_short_rtti(base);
14339 init_basic_istringstream_char_rtti(base);
14340 init_basic_istringstream_wchar_rtti(base);
14341 init_basic_istringstream_short_rtti(base);
14342 init_basic_stringstream_char_rtti(base);
14343 init_basic_stringstream_wchar_rtti(base);
14344 init_basic_stringstream_short_rtti(base);
14345 init_strstreambuf_rtti(base);
14346 init_strstream_rtti(base);
14347 init_ostrstream_rtti(base);
14348 #endif
14350 basic_filebuf_char_ctor_file(&filebuf_char_stdin, stdin);
14351 basic_istream_char_ctor(&cin.obj, &filebuf_char_stdin.base, FALSE/*FIXME*/, TRUE);
14353 basic_filebuf_short_ctor_file(&filebuf_short_stdin, stdin);
14354 basic_istream_short_ctor(&ucin.obj, &filebuf_short_stdin.base, FALSE/*FIXME*/, TRUE);
14356 basic_filebuf_wchar_ctor_file(&filebuf_wchar_stdin, stdin);
14357 basic_istream_wchar_ctor(&wcin.obj, &filebuf_wchar_stdin.base, FALSE/*FIXME*/, TRUE);
14359 basic_filebuf_char_ctor_file(&filebuf_char_stdout, stdout);
14360 basic_ostream_char_ctor(&cout.obj, &filebuf_char_stdout.base, FALSE/*FIXME*/, TRUE);
14362 basic_filebuf_short_ctor_file(&filebuf_short_stdout, stdout);
14363 basic_ostream_short_ctor(&ucout.obj, &filebuf_short_stdout.base, FALSE/*FIXME*/, TRUE);
14365 basic_filebuf_wchar_ctor_file(&filebuf_wchar_stdout, stdout);
14366 basic_ostream_wchar_ctor(&wcout.obj, &filebuf_wchar_stdout.base, FALSE/*FIXME*/, TRUE);
14368 basic_filebuf_char_ctor_file(&filebuf_char_stderr, stderr);
14369 basic_ostream_char_ctor(&cerr.obj, &filebuf_char_stderr.base, FALSE/*FIXME*/, TRUE);
14371 basic_filebuf_short_ctor_file(&filebuf_short_stderr, stderr);
14372 basic_ostream_short_ctor(&ucerr.obj, &filebuf_short_stderr.base, FALSE/*FIXME*/, TRUE);
14374 basic_filebuf_wchar_ctor_file(&filebuf_wchar_stderr, stderr);
14375 basic_ostream_wchar_ctor(&wcerr.obj, &filebuf_wchar_stderr.base, FALSE/*FIXME*/, TRUE);
14377 basic_filebuf_char_ctor_file(&filebuf_char_log, stderr);
14378 basic_ostream_char_ctor(&clog.obj, &filebuf_char_log.base, FALSE/*FIXME*/, TRUE);
14380 basic_filebuf_short_ctor_file(&filebuf_short_log, stderr);
14381 basic_ostream_short_ctor(&uclog.obj, &filebuf_short_log.base, FALSE/*FIXME*/, TRUE);
14383 basic_filebuf_wchar_ctor_file(&filebuf_wchar_log, stderr);
14384 basic_ostream_wchar_ctor(&wclog.obj, &filebuf_wchar_log.base, FALSE/*FIXME*/, TRUE);
14387 void free_io(void)
14389 basic_istream_char_vbase_dtor(&cin.obj);
14390 basic_filebuf_char_dtor(&filebuf_char_stdin);
14392 basic_istream_wchar_vbase_dtor(&ucin.obj);
14393 basic_filebuf_wchar_dtor(&filebuf_short_stdin);
14395 basic_istream_wchar_vbase_dtor(&wcin.obj);
14396 basic_filebuf_wchar_dtor(&filebuf_wchar_stdin);
14398 basic_ostream_char_vbase_dtor(&cout.obj);
14399 basic_filebuf_char_dtor(&filebuf_char_stdout);
14401 basic_ostream_wchar_vbase_dtor(&ucout.obj);
14402 basic_filebuf_wchar_dtor(&filebuf_short_stdout);
14404 basic_ostream_wchar_vbase_dtor(&wcout.obj);
14405 basic_filebuf_wchar_dtor(&filebuf_wchar_stdout);
14407 basic_ostream_char_vbase_dtor(&cerr.obj);
14408 basic_filebuf_char_dtor(&filebuf_char_stderr);
14410 basic_ostream_wchar_vbase_dtor(&ucerr.obj);
14411 basic_filebuf_wchar_dtor(&filebuf_short_stderr);
14413 basic_ostream_wchar_vbase_dtor(&wcerr.obj);
14414 basic_filebuf_wchar_dtor(&filebuf_wchar_stderr);
14416 basic_ostream_char_vbase_dtor(&clog.obj);
14417 basic_filebuf_char_dtor(&filebuf_char_log);
14419 basic_ostream_wchar_vbase_dtor(&uclog.obj);
14420 basic_filebuf_wchar_dtor(&filebuf_short_log);
14422 basic_ostream_wchar_vbase_dtor(&wclog.obj);
14423 basic_filebuf_wchar_dtor(&filebuf_wchar_log);